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) ,RENDEZ0 int ,RENDEZ1 int ,RENDEZ2 nvarchar(255) ,RENDEZ3 int ,RENDEZ4 int ,RENDEZ5 nvarchar(255) ) AS BEGIN DECLARE @kategoriaId int = (SELECT C_FELADATKATEGORIAID FROM T_OSZTALYCSOPORT_OSSZES WHERE ID = @osztalyCsoportId) DECLARE @defaultCsengetesiRendId int DECLARE @tanoraiCsoportok TABLE( OsztalyCsoportId int ) SELECT @defaultCsengetesiRendId = ID FROM T_CSENGETESIREND_OSSZES csr WHERE csr.TOROLT='F' AND csr.C_AKTIV = 'T' AND csr.C_TANEVID = @tanevId IF @kategoriaId <> 7555 -- NEM AMI-s osztályoknál BEGIN INSERT INTO @tanoraiCsoportok(OsztalyCsoportId) SELECT ID FROM fnGetDokumentumOsztalyVagyTanoraiCsoport(@tanevId) END ELSE BEGIN -- AMI törzslapoknál ezekhez az osztálycsoportokhoz szedjük össze a mulasztásokat INSERT INTO @tanoraiCsoportok(OsztalyCsoportId) SELECT ID FROM fnGetDokumentumKapcsolodoOsztalycsoportok(@osztalyCsoportId, @tanevId, 0, DEFAULT) END INSERT INTO @result SELECT tm.C_ORATANULOIID AS TanuloId ,tcs2.ID AS TanuloCsoportId ,tao.C_OSZTALYCSOPORTID AS OsztalyCsoportId ,ocs.C_NEV AS OsztalyCsoportNev ,tm.C_TIPUS AS Tipusa ,tm.C_IGAZOLT AS Igazolt ,tm.C_IGAZOLASTIPUSA AS IgazolasTipusa ,tm.C_KESESPERCBEN AS KesesPercben ,tao.C_DATUM AS Datum ,IIF(tao.C_CSENGETESIRENDORAID IS NULL, (SELECT ISNULL(MAX(csro.C_ORASZAM), 0) FROM T_CSENGETESIRENDORA_OSSZES csro WHERE csro.TOROLT = 'F' AND csro.C_CSENGETESIRENDID = @defaultCsengetesiRendId AND CONVERT(nvarchar(5), C_KEZDETE, 108) <= CONVERT(nvarchar(5), C_ORAKEZDETE, 108) ),tao.C_ORASZAM) as Oraszam ,IIF(tao.C_CSENGETESIRENDORAID IS NULL, CONCAT(CONVERT(nvarchar(5), tao.C_ORAKEZDETE, 108), '-', CONVERT(nvarchar(5), tao.C_ORAVEGE, 108)), CAST(tao.C_ORASZAM AS nvarchar(5))) AS OraszamWithOrakezdeteVege ,tao.C_TANTARGYID AS TantargyId ,ISNULL(tgy.C_NEVNYOMTATVANYBAN, tgy.C_NEV) AS TantargyNev ,tao.C_HETSORSZAMA AS HetSorszama ,tgy.C_GYAKORLATI AS Gyakorlati ,IIF(tanorai.OsztalyCsoportId IS NULL, 'F', 'T') AS Tanorai ,tgy.C_SORSZAM AS RENDEZ0 ,IIF(tgy.C_FOTARGYID IS NULL,ISNULL(dibtgykat.C_ORDER, 10000),ISNULL(dibftgykat.C_ORDER, 10000)) AS RENDEZ1 ,COALESCE(ftgy.C_NEVNYOMTATVANYBAN, ftgy.C_NEV, tgy.C_NEV) AS RENDEZ2 ,ISNULL(tgy.C_FOTARGYID, tgy.ID) AS RENDEZ3 ,tgy.C_FOTARGYID AS RENDEZ4 ,ISNULL(tgy.C_NEVNYOMTATVANYBAN, tgy.C_NEV) AS RENDEZ5 FROM T_TANULOMULASZTAS_OSSZES tm INNER JOIN T_TANITASIORA_OSSZES tao ON tao.ID = tm.C_TANITASIORAKID AND tao.TOROLT='F' INNER JOIN T_TANULOCSOPORT_OSSZES tcs ON tcs.C_TANULOID = tm.C_ORATANULOIID AND tcs.TOROLT = 'F' AND tao.C_DATUM >= tcs.C_BELEPESDATUM AND tao.C_DATUM <= ISNULL(tcs.C_KILEPESDATUM, GETDATE()) AND tcs.C_OSZTALYCSOPORTID= tao.C_OSZTALYCSOPORTID INNER JOIN T_TANULOCSOPORT_OSSZES tcs2 ON tcs2.C_TANULOID = tm.C_ORATANULOIID AND tcs2.TOROLT = 'F' AND tao.C_DATUM >= tcs2.C_BELEPESDATUM AND tao.C_DATUM < ISNULL(tcs2.C_KILEPESDATUM, GETDATE()) AND tcs2.C_OSZTALYCSOPORTID= @osztalyCsoportId INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.ID = tao.C_OSZTALYCSOPORTID AND ocs.C_FELADATKATEGORIAID = @kategoriaId INNER JOIN T_TANTARGY_OSSZES tgy ON tgy.ID = tao.C_TANTARGYID LEFT JOIN T_DICTIONARYITEMBASE_OSSZES dibtgykat ON dibtgykat.Id = tgy.C_TARGYKATEGORIA AND dibtgykat.TOROLT = 'F' AND dibtgykat.C_TANEVID = @tanevId LEFT JOIN T_TANTARGY_OSSZES ftgy ON tgy.C_FOTARGYID = ftgy.ID LEFT JOIN T_DICTIONARYITEMBASE_OSSZES dibftgykat ON dibftgykat.ID = ftgy.C_TARGYKATEGORIA AND dibftgykat.TOROLT = 'F' AND dibftgykat.C_TANEVID = ftgy.C_TANEVID LEFT JOIN @tanoraiCsoportok tanorai ON tanorai.OsztalyCsoportId = ocs.ID WHERE tm.C_TIPUS BETWEEN 1499 AND 1500 AND tm.TOROLT = 'F' AND (@csakTanoraiCelu = 0 OR tanorai.OsztalyCsoportId IS NOT NULL) AND (@iskolaErdekuSzamit = 1 OR (tm.C_IGAZOLASTIPUSA IS NULL OR tm.C_IGAZOLASTIPUSA <> 1533)) AND (@atsoroltTanuloMulasztas = 1 OR (tao.C_OSZTALYCSOPORTID IN (SELECT ID FROM fnGetDokumentumKapcsolodoOsztalycsoportok(@osztalyCsoportId, @tanevId, @csakTanoraiCelu, DEFAULT)))) AND (@csakKivlasztottOsztalyCsoport = 0 OR tao.C_OSZTALYCSOPORTID = @osztalyCsoportId) AND (@idoszakEleje IS NULL OR tao.C_DATUM >= @idoszakEleje) AND (@idoszakVege IS NULL OR tao.C_DATUM <= @idoszakVege) RETURN END GO