50 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Transact-SQL
		
	
	
	
	
	
			
		
		
	
	
			50 lines
		
	
	
		
			3.1 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 TABLE
 | 
						|
RETURN (
 | 
						|
  SELECT
 | 
						|
	   C_ORATANULOIID			TanuloId
 | 
						|
	  ,TanuloCsoportId
 | 
						|
	  ,TanitasiOra.C_OSZTALYCSOPORTID		OsztalyCsoportId
 | 
						|
	  ,OsztalyCsoport.C_NEV	OsztalyCsoportNev
 | 
						|
	  ,C_TIPUS				Tipusa
 | 
						|
	  ,C_IGAZOLT				Igazolt
 | 
						|
	  ,C_IGAZOLASTIPUSA		IgazolasTipusa
 | 
						|
	  ,C_KESESPERCBEN			KesesPercben
 | 
						|
	  ,C_DATUM				Datum
 | 
						|
	  ,IIF(C_CSENGETESIRENDORAID IS NULL, dbo.fnGetDokumentumOrakezdetToOraszam(CONVERT(VARCHAR(5), C_ORAKEZDETE, 108), @tanevId), TanitasiOra.C_ORASZAM)	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))	OraszamWithOrakezdeteVege
 | 
						|
	  ,C_TANTARGYID			TantargyId
 | 
						|
	  ,ISNULL(t.C_NEVNYOMTATVANYBAN, t.C_NEV)	TantargyNev
 | 
						|
	  ,C_HETSORSZAMA				HetSorszama
 | 
						|
	  ,C_GYAKORLATI			Gyakorlati
 | 
						|
  	  ,IIF(cs.ID IS NULL, 'T', 'F') AS Tanorai
 | 
						|
  FROM T_TANULOMULASZTAS_OSSZES TanuloMulasztas
 | 
						|
	  INNER JOIN fnGetDokumentumOsztalyokCsoportokTanuloi(@tanevId, @osztalyCsoportId, 'T') AS TANULO ON TANULO.TanuloId = TanuloMulasztas.C_ORATANULOIID
 | 
						|
	  INNER JOIN T_TANITASIORA_OSSZES TanitasiOra ON TanitasiOra.ID = TanuloMulasztas.C_TANITASIORAKID
 | 
						|
	  INNER JOIN T_TANULOCSOPORT_OSSZES TanuloCsoport ON TanuloCsoport.C_TANULOID = TanuloMulasztas.C_ORATANULOIID 
 | 
						|
			AND TanuloCsoport.C_OSZTALYCSOPORTID = TanitasiOra.C_OSZTALYCSOPORTID 
 | 
						|
			AND TanuloCsoport.TOROLT = 'F'
 | 
						|
			AND TanitasiOra.C_DATUM BETWEEN TanuloCsoport.C_BELEPESDATUM AND ISNULL(TanuloCsoport.C_KILEPESDATUM, GETDATE())
 | 
						|
	  INNER JOIN T_OSZTALYCSOPORT_OSSZES OsztalyCsoport ON OsztalyCsoport.ID = TanitasiOra.C_OSZTALYCSOPORTID
 | 
						|
		  AND OsztalyCsoport.C_FELADATKATEGORIAID = 7553 /*OktNevelesiKategoriaEnum.Alapkepzes*/
 | 
						|
	  INNER JOIN T_TANTARGY_OSSZES t on t.ID = TanitasiOra.C_TANTARGYID
 | 
						|
	  LEFT JOIN T_CSOPORT_OSSZES cs ON OsztalyCsoport.ID = cs.ID AND cs.C_TIPUSA NOT IN (SELECT ID FROM fnGetTanoraiCeluCsoportTipusok(@tanevId))
 | 
						|
  WHERE TanuloMulasztas.C_TIPUS IN (1499, 1500)
 | 
						|
	  AND TANULO.BelepesDatum <= TanitasiOra.C_DATUM
 | 
						|
	  AND (TANULO.KilepesDatum IS NULL OR TANULO.KilepesDatum >= TanitasiOra.C_DATUM)
 | 
						|
	  AND (@csakTanoraiCelu = 0 OR TanitasiOra.C_OSZTALYCSOPORTID IN (SELECT Id FROM fnGetDokumentumOsztalyVagyTanoraiCsoport(@tanevId)))
 | 
						|
	  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)
 | 
						|
)
 | 
						|
GO
 | 
						|
 |