DROP PROCEDURE IF EXISTS dbo.sp_GetMulasztasokNaploNezetData GO CREATE PROCEDURE dbo.sp_GetMulasztasokNaploNezetData @pTanevId int ,@pIntezmenyId int ,@pOsztalyCsoportId int ,@pDatum date ,@pCsoportTipusTanoraiCeluId int ,@pIsCsoportVez int = 0 ,@pSzervezetTipusId INT = NULL AS BEGIN SET NOCOUNT ON; CREATE TABLE #TempTable( TanitasiOraId INT NOT NULL, OsztalyCsoportId INT NOT NULL, OsztalyCsoportNev NVARCHAR(255) NOT NULL, OsztalyNev NVARCHAR(255) NOT NULL, IsOsztalyOraja BIT NOT NULL, IsTanoraiCelu BIT NOT NULL, IsTanoraiCelunakJelolt BIT NOT NULL, TantargyId INT NOT NULL, TantargyNev NVARCHAR(255) NOT NULL, TanarId INT NOT NULL, TanarNev NVARCHAR(255) NOT NULL, OraSorszam INT NULL, OraKezdete DATETIME NULL ); DECLARE @sql nvarchar(max) = '' SET @sql += N' SELECT tn.ID AS TanitasiOraId ,ocs.ID AS OsztalyCsoportId ,ocs.C_NEV AS OsztalyCsoportNev ,o.C_NEV AS OsztalyNev ,IIF(ocs.ID = @pOsztalyCsoportId, 1, 0) AS IsOsztalyOraja ,IIF(cst.ID = @pCsoportTipusTanoraiCeluId, 1, 0) AS IsTanoraiCelu ,IIF(cst.C_ISTANORAICELU = ''T'', 1, 0) AS IsTanoraiCelunakJelolt ,tt.ID AS TantargyId ,tt.C_NEV AS TantargyNev ,fa.ID AS TanarId ,fa.C_NYOMTATASINEV AS TanarNev ,IIF(tn.C_CSENGETESIRENDORAID IS NOT NULL, tn.C_ORASZAM, NULL) AS OraSorszam ,IIF(tn.C_CSENGETESIRENDORAID IS NULL, tn.C_ORAKEZDETE, NULL) AS OraKezdete FROM T_TANITASIORA_OSSZES tn ' + IIF(@pIsCsoportVez = 0, N' INNER JOIN dbo.fnGetKapcsolodoOsztalycsoportokByDate(@pOsztalyCsoportId, @pDatum, @pDatum) kocs ON kocs.ID = tn.C_OSZTALYCSOPORTID ', '') SET @sql += N' INNER JOIN T_TANTARGY_OSSZES tt ON tt.ID = tn.C_TANTARGYID AND tt.TOROLT = ''F'' AND tt.C_TANEVID = @pTanevId AND tt.C_INTEZMENYID = @pIntezmenyId INNER JOIN T_FELHASZNALO_OSSZES fa ON fa.ID = tn.C_ORATULAJDONOSID AND fa.TOROLT = ''F'' AND fa.C_TANEVID = @pTanevId AND fa.C_INTEZMENYID = @pIntezmenyId INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.ID = tn.C_OSZTALYCSOPORTID AND ocs.TOROLT = ''F'' AND ocs.C_TANEVID = @pTanevId AND ocs.C_INTEZMENYID = @pIntezmenyId LEFT JOIN T_CSOPORT_OSSZES cs ON cs.ID = tn.C_OSZTALYCSOPORTID AND cs.TOROLT = ''F'' AND cs.C_ALTANEVID = @pTanevId AND cs.C_ALINTEZMENYID = @pIntezmenyId LEFT JOIN T_CSOPORTTIPUS_OSSZES cst ON cst.ID = cs.C_TIPUSA AND cst.TOROLT = ''F'' AND cst.C_ALTANEVID = @pTanevId AND cst.C_ALINTEZMENYID = @pIntezmenyId INNER JOIN T_OSZTALYCSOPORT_OSSZES o ON o.ID = @pOsztalyCsoportId AND o.TOROLT = ''F'' AND ocs.C_TANEVID = @pTanevId AND ocs.C_INTEZMENYID = @pIntezmenyId INNER JOIN (SELECT ID FROM fnGetKapcsolodoOsztalycsoportokByDate(@pOsztalyCsoportId, @pDatum, @pDatum)) f on f.ID = tn.C_OSZTALYCSOPORTID WHERE tn.C_DATUM = @pDatum AND tn.C_MEGTARTOTT = ''T'' AND tn.TOROLT = ''F'' AND tn.C_TANEVID = @pTanevId AND tn.C_INTEZMENYID = @pIntezmenyId ' + IIF(@pIsCsoportVez = 1, N' AND tn.C_OSZTALYCSOPORTID = @pOsztalyCsoportId ','') INSERT INTO #TempTable EXEC sp_executesql @sql, N' @pTanevId INT ,@pIntezmenyId INT ,@pOsztalyCsoportId INT ,@pDatum DATE ,@pCsoportTipusTanoraiCeluId INT ,@pIsCsoportVez INT' ,@pTanevId = @pTanevId ,@pIntezmenyId = @pIntezmenyId ,@pOsztalyCsoportId = @pOsztalyCsoportId ,@pDatum = @pDatum ,@pCsoportTipusTanoraiCeluId = @pCsoportTipusTanoraiCeluId ,@pIsCsoportVez = @pIsCsoportVez SET @sql = N'' SET @sql += N' SELECT tcs.C_TANULOID AS TanuloId ,ft.C_NYOMTATASINEV AS TanuloNev ,ft.C_ANYJANEVE AS AnyjaNeve ,ft.C_SZULETESIDATUM AS SzuletesiIdo ,tbl.OsztalyCsoportId ,tbl.OsztalyCsoportNev ,tbl.OsztalyNev ,tbl.IsOsztalyOraja ,tbl.IsTanoraiCelu ,tbl.IsTanoraiCelunakJelolt ,tbl.TantargyId ,tbl.TantargyNev ,tbl.TanarId ,tbl.TanarNev ,tbl.OraSorszam ,tbl.OraKezdete ,tbl.TanitasiOraId ,tm.ID AS MulasztasId ,tm.C_TIPUS AS MulasztasTipus ,tm.C_IGAZOLT AS IsIgazolt ,tm.C_IGAZOLASTIPUSA AS IgazolasTipus ,tm.C_MEGJEGYZES AS Megjegyzes ,tm.C_KESESPERCBEN AS KesesPercben FROM ( SELECT C_TANULOID ,C_OSZTALYCSOPORTID FROM T_TANULOCSOPORT_OSSZES tcs ' + IIF(@pSzervezetTipusId IS NULL, 'INNER JOIN T_TANULOTANUGYIADATOK_OSSZES tta ON tta.C_TANULOCSOPORTID = tcs.ID AND tta.TOROLT = ''F'' AND tta.C_TANEVID = @pTanevId AND tta.C_INTEZMENYID = @pIntezmenyId AND tta.C_JOGVISZONYATSZUNETELTETO = ''F''','')+' WHERE C_OSZTALYCSOPORTID = @pOsztalyCsoportId AND C_BELEPESDATUM <= @pDatum AND (C_KILEPESDATUM > @pDatum OR C_KILEPESDATUM IS NULL) AND tcs.TOROLT = ''F'' AND tcs.C_TANEVID = @pTanevId AND tcs.C_INTEZMENYID = @pIntezmenyId AND C_TANULOID IN ( SELECT C_TANULOID FROM T_TANULOCSOPORT_OSSZES tcs2 WHERE tcs2.C_OSZTALYCSOPORTID IN (SELECT OsztalyCsoportId FROM #TempTable) AND tcs2.C_TANEVID = @pTanevId AND tcs2.C_INTEZMENYID = @pIntezmenyId AND tcs2.TOROLT = ''F'' AND tcs2.C_BELEPESDATUM <= @pDatum AND (tcs2.C_KILEPESDATUM > @pDatum OR tcs2.C_KILEPESDATUM IS NULL) ) ) tcs CROSS JOIN #TempTable tbl INNER JOIN T_FELHASZNALO_OSSZES ft ON tcs.C_TANULOID = ft.ID AND ft.TOROLT = ''F'' AND ft.C_TANEVID = @pTanevId AND ft.C_INTEZMENYID = @pIntezmenyId LEFT JOIN T_TANULOMULASZTAS_OSSZES tm ON tcs.C_TANULOID = tm.C_ORATANULOIID AND tm.C_TANITASIORAKID = tbl.TanitasiOraId AND tm.TOROLT = ''F'' AND tm.C_TANEVID = @pTanevId AND tm.C_INTEZMENYID = @pIntezmenyId LEFT JOIN T_TANULOMENTESSEG_OSSZES mentesseg ON mentesseg.C_TANULOID = tcs.C_TANULOID AND mentesseg.C_TANTARGYID = tbl.TantargyId AND mentesseg.C_ORAMENTESITES = ''T'' AND mentesseg.TOROLT = ''F'' AND mentesseg.C_TANEVID = @pTanevId AND mentesseg.C_INTEZMENYID = @pIntezmenyId WHERE tcs.C_TANULOID IN ( SELECT C_TANULOID FROM T_TANULOCSOPORT_OSSZES tcs2 WHERE tbl.OsztalyCsoportId = tcs2.C_OSZTALYCSOPORTID AND tcs2.C_TANEVID = @pTanevId AND tcs2.C_INTEZMENYID = @pIntezmenyId AND tcs2.TOROLT = ''F'' AND tcs2.C_BELEPESDATUM <= @pDatum AND (tcs2.C_KILEPESDATUM > @pDatum OR tcs2.C_KILEPESDATUM IS NULL) ) AND (tm.C_TIPUS <> 1817 OR tm.C_TIPUS IS NULL) AND (mentesseg.ID IS NULL OR (mentesseg.C_KEZDETE > @pDatum OR mentesseg.C_VEGE < @pDatum)) ORDER BY ft.C_NYOMTATASINEV ' EXEC sp_executesql @sql, N' @pTanevId INT ,@pIntezmenyId INT ,@pOsztalyCsoportId INT ,@pDatum DATE ,@pCsoportTipusTanoraiCeluId INT ,@pIsCsoportVez INT' ,@pTanevId = @pTanevId ,@pIntezmenyId = @pIntezmenyId ,@pOsztalyCsoportId = @pOsztalyCsoportId ,@pDatum = @pDatum ,@pCsoportTipusTanoraiCeluId = @pCsoportTipusTanoraiCeluId ,@pIsCsoportVez = @pIsCsoportVez END GO