kreta/Kreta.DataAccess.Migrations/Scripts/Archive/20190921113454_KRETA2_1210/fnGetDokumentumMulasztasokOsztalyonkentReszletes.sql
2024-03-13 00:33:46 +01:00

102 lines
4.7 KiB
Transact-SQL

DROP FUNCTION IF EXISTS fnGetDokumentumMulasztasokOsztalyonkentReszletes
GO
CREATE FUNCTION fnGetDokumentumMulasztasokOsztalyonkentReszletes (
@tanevId INT
,@osztalyCsoportId int
,@iskolaErdekuSzamit bit
,@csakKivlasztottOsztalyCsoport bit = 0
,@atsoroltTanuloMulasztas bit = 1
,@idoszakEleje date = NULL
,@idoszakVege date = NULL
,@csakTanoraiCelu int = 1
)
RETURNS @result TABLE (
TanuloId int
,TanuloCsoportId int
,OsztalyCsoportId int
,OsztalyCsoportNev nvarchar (255)
,Tipusa int
,Igazolt char (1)
,IgazolasTipusa int
,KesesPercben int null
,Datum datetime
,Oraszam nvarchar (255)
,OraszamWithOrakezdeteVege nvarchar (255)
,TantargyId int
,TantargyNev nvarchar (255)
,HetSorszama int
,Gyakorlati char(1)
,Tanorai char(1)
,RENDEZ1 INT
,RENDEZ2 NVARCHAR(510)
,RENDEZ3 INT
,RENDEZ4 INT
,RENDEZ5 NVARCHAR(510)
)
AS BEGIN
DECLARE @kategoriaId int = (SELECT C_FELADATKATEGORIAID FROM T_OSZTALYCSOPORT_OSSZES WHERE ID = @osztalyCsoportId)
INSERT INTO @result
SELECT
C_ORATANULOIID AS TanuloId
,TanuloCsoport.ID AS TanuloCsoportId
,TanitasiOra.C_OSZTALYCSOPORTID AS OsztalyCsoportId
,OsztalyCsoport.C_NEV AS OsztalyCsoportNev
,C_TIPUS AS Tipusa
,C_IGAZOLT AS Igazolt
,C_IGAZOLASTIPUSA AS IgazolasTipusa
,C_KESESPERCBEN AS KesesPercben
,C_DATUM AS Datum
,IIF(C_CSENGETESIRENDORAID IS NULL, dbo.fnGetDokumentumOrakezdetToOraszam(CONVERT(VARCHAR(5), C_ORAKEZDETE, 108), @tanevId), TanitasiOra.C_ORASZAM) AS Oraszam
,IIF(C_CSENGETESIRENDORAID IS NULL, CONCAT(CONVERT(NVARCHAR(5), TanitasiOra.C_ORAKEZDETE, 108), '-',
CONVERT(NVARCHAR(5), TanitasiOra.C_ORAVEGE, 108)), CAST(TanitasiOra.C_ORASZAM AS NVARCHAR)) AS OraszamWithOrakezdeteVege
,C_TANTARGYID AS TantargyId
,ISNULL(t.C_NEVNYOMTATVANYBAN, t.C_NEV) AS TantargyNev
,C_HETSORSZAMA AS HetSorszama
,t.C_GYAKORLATI AS Gyakorlati
,IIF(o.ID IS NOT NULL OR tanorai.tanoraiId IS NOT NULL, 'T', 'F') AS Tanorai
,CASE WHEN t.C_FOTARGYID IS NULL THEN ISNULL(TargyKategoriaDictionary.C_ORDER, 10000) ELSE ISNULL(FotargyKategoriaDictionary.C_ORDER, 10000) END as RENDEZ1
,COALESCE(FotargyTable.C_NEVNYOMTATVANYBAN, FotargyTable.C_NEV, t.C_NEV) as RENDEZ2
,ISNULL(t.C_FOTARGYID, t.ID) as RENDEZ3
,t.C_FOTARGYID as RENDEZ4
,ISNULL(t.C_NEVNYOMTATVANYBAN, t.C_NEV) as RENDEZ5
FROM T_TANULOMULASZTAS_OSSZES TanuloMulasztas
INNER JOIN T_TANITASIORA_OSSZES TanitasiOra ON TanitasiOra.ID = TanuloMulasztas.C_TANITASIORAKID
AND TanitasiOra.TOROLT='F'
INNER JOIN T_TANULOCSOPORT_OSSZES TanuloCsoport ON TanuloCsoport.C_TANULOID = TanuloMulasztas.C_ORATANULOIID
AND TanuloCsoport.TOROLT = 'F'
AND TanitasiOra.C_DATUM >= TanuloCsoport.C_BELEPESDATUM
AND TanitasiOra.C_DATUM < ISNULL(TanuloCsoport.C_KILEPESDATUM, GETDATE())
AND TanuloCsoport.C_OSZTALYCSOPORTID=@osztalyCsoportId
INNER JOIN T_OSZTALYCSOPORT_OSSZES OsztalyCsoport ON OsztalyCsoport.ID = TanitasiOra.C_OSZTALYCSOPORTID
AND OsztalyCsoport.C_FELADATKATEGORIAID = @kategoriaId
INNER JOIN T_TANTARGY_OSSZES t ON t.ID = TanitasiOra.C_TANTARGYID
LEFT JOIN T_DICTIONARYITEMBASE_OSSZES TargyKategoriaDictionary ON TargyKategoriaDictionary.Id = t.C_TARGYKATEGORIA
AND TargyKategoriaDictionary.TOROLT = 'F'
AND TargyKategoriaDictionary.C_TANEVID = @tanevId
LEFT JOIN T_TANTARGY_OSSZES FotargyTable ON t.C_FOTARGYID = FotargyTable.ID
LEFT JOIN T_DICTIONARYITEMBASE_OSSZES FotargyKategoriaDictionary ON FotargyKategoriaDictionary.ID = FotargyTable.C_TARGYKATEGORIA
AND FotargyKategoriaDictionary.TOROLT = 'F'
AND FotargyKategoriaDictionary.C_TANEVID = FotargyTable.C_TANEVID
LEFT JOIN (
SELECT
tanorai.ID AS tanoraiId
,cs.ID AS CsoportId
FROM T_CSOPORT_OSSZES cs
INNER JOIN fnGetTanoraiCeluCsoportTipusok(@tanevId) tanorai ON tanorai.ID = cs.C_TIPUSA
) tanorai ON tanorai.CsoportId = OsztalyCsoport.ID
LEFT JOIN T_OSZTALY_OSSZES o ON o.ID=TanitasiOra.C_OSZTALYCSOPORTID
WHERE TanuloMulasztas.C_TIPUS IN (1499, 1500) AND TanuloMulasztas.C_INTEZMENYID=TanitasiOra.C_INTEZMENYID
AND (@csakTanoraiCelu = 0 OR (o.ID IS NOT NULL OR tanorai.tanoraiId IS NOT NULL))
AND (@iskolaErdekuSzamit = 1 OR (C_IGAZOLASTIPUSA IS NULL OR C_IGAZOLASTIPUSA <> 1533))
AND TanuloMulasztas.TOROLT = 'F'
AND (@atsoroltTanuloMulasztas = 1 OR (TanitasiOra.C_OSZTALYCSOPORTID IN (SELECT ID FROM fnGetDokumentumKapcsolodoOsztalycsoportok(@osztalyCsoportId, @tanevId, @csakTanoraiCelu))))
AND (@csakKivlasztottOsztalyCsoport = 0 OR TanitasiOra.C_OSZTALYCSOPORTID = @osztalyCsoportId)
AND (@idoszakEleje IS NULL OR C_DATUM >= @idoszakEleje)
AND (@idoszakVege IS NULL OR C_DATUM <= @idoszakVege)
RETURN
END
GO