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