IF OBJECT_ID('sp_GetNemMegtartottOrakSzamaPerHet') IS NOT NULL 
BEGIN
	DROP PROCEDURE sp_GetNemMegtartottOrakSzamaPerHet 
END

GO 
CREATE PROCEDURE [sp_GetNemMegtartottOrakSzamaPerHet] 
	@osztalyId			int, 
	@intezmenyId		int, 
	@tanevId			int 
AS
BEGIN
	DECLARE @vegzosUtolsoNapDatuma DATE = (SELECT C_DATUM FROM T_TANEVRENDJE_OSSZES WHERE C_TANEVID = @tanevId AND TOROLT = 'F' AND C_NAPTIPUSA = 1402)
	
	DECLARE @vegzosOsztalyokCsoportok TABLE (osztalyId INT)
	INSERT INTO @vegzosOsztalyokCsoportok 
	SELECT ID FROM T_OSZTALYCSOPORT_OSSZES WHERE C_VEGZOSEVFOLYAM = 'T' AND C_TANEVID = @tanevID AND TOROLT = 'F'

	DECLARE @OsszesNap TABLE (Datum DATE, Hetirend INT, OrarendiNap NVARCHAR(1), OsztalyCsoportId INT)
	INSERT INTO @OsszesNap
	SELECT DISTINCT 
		C_NAPDATUMA
		,C_HETIREND
		,C_ORARENDINAP 
		,kapcsolodo.Id
	FROM T_NAPTARINAP_OSSZES 
		CROSS JOIN fnGetKapcsolodoOsztalycsoportok(@osztalyId) kapcsolodo
	WHERE 
		C_TANEVID = @tanevId 
		AND TOROLT = 'F'

	DECLARE @TanevRendje TABLE (Datum DATE, Hetirend INT, OsztalyCsoportId INT, OrarendiNap NVARCHAR(1))
	INSERT INTO @TanevRendje
	SELECT 
		C_DATUM
		,C_HETIREND
		,kapcsolodo.Id
		,C_ORARENDINAP 
	FROM T_TANEVRENDJE_OSSZES 
		CROSS JOIN fnGetKapcsolodoOsztalycsoportok(@osztalyId) kapcsolodo
	WHERE 
		C_TANEVID = @tanevId 
		AND TOROLT = 'F' 
		AND C_OSSZESCSOPORTRAVONATKOZIK = 'T'

	DECLARE @TanevRendjeOsztalyCsoportonkent TABLE (Datum DATE, Hetirend INT, OsztalyCsoportId INT, OrarendiNap NVARCHAR(1))
	INSERT INTO @TanevRendjeOsztalyCsoportonkent
	SELECT 
		C_DATUM
		,C_HETIREND
		,C_OSZTALYCSOPORTID
		,C_ORARENDINAP 
	FROM T_OSZTALYCSOPORT_TANEVRENDJE ocstr
		INNER JOIN T_TANEVRENDJE_OSSZES tr ON tr.ID = ocstr.C_TANEVRENDJEID
		INNER JOIN fnGetKapcsolodoOsztalycsoportok(@osztalyId) kapcsolodo ON kapcsolodo.Id = C_OSZTALYCSOPORTID
	WHERE 
		TOROLT = 'F'
	
	DECLARE @OrarendiNapok TABLE (Datum DATE, OsztalyCsoportId INT, Hetirend INT)
	INSERT INTO @OrarendiNapok
	SELECT 
		Datum
		,OsztalyCsoportId
		,Hetirend
	FROM 
			(SELECT 
				OsszesNap.Datum
				,OsszesNap.OsztalyCsoportId
				,COALESCE(trocs.OrarendiNap, tr.OrarendiNap, OsszesNap.OrarendiNap) OrarendiNap
				,COALESCE(trocs.Hetirend, tr.Hetirend, OsszesNap.Hetirend) Hetirend
			FROM @OsszesNap OsszesNap
				LEFT JOIN @TanevRendje tr ON tr.Datum = OsszesNap.Datum AND tr.OsztalyCsoportId = OsszesNap.OsztalyCsoportId
				LEFT JOIN @TanevRendjeOsztalyCsoportonkent trocs ON trocs.Datum = OsszesNap.Datum AND trocs.OsztalyCsoportId = OsszesNap.OsztalyCsoportId
			WHERE
				OsszesNap.OrarendiNap = 'T' OR tr.OrarendiNap = 'T' OR trocs.OrarendiNap = 'T'
			) a
	WHERE OrarendiNap ='T'

	SELECT 
		HetSorszam					HetSorszama
		,count(ID)					NemNaplozottOrakSzama
		,@osztalyId					OsztalyID
	FROM 
	(
		SELECT 
		Id 
		,HetSorszam
		FROM 
		(
		SELECT DISTINCT 
			naptar.C_HETSORSZAMA	HetSorszam
			,oo.Id					Id
		FROM T_ORARENDIORA_OSSZES oo
			INNER JOIN T_NAPTARINAP_OSSZES naptar ON 		
								((naptar.C_NAPDATUMA >=oo.C_ORAERVENYESSEGKEZDETE AND naptar.C_NAPDATUMA < oo.C_ORAERVENYESSEGVEGE) 
								OR
								(naptar.C_NAPDATUMA = oo.C_ORAERVENYESSEGKEZDETE AND naptar.C_NAPDATUMA = oo.C_ORAERVENYESSEGVEGE))									
								AND oo.C_HETNAPJA=naptar.C_HETNAPJA
								AND (naptar.C_NAPTIPUSA NOT IN (1386,1387,1389,1391,1392,1396,1397,1398,1399,1401))
			INNER JOIN @OrarendiNapok OrarendiNapok ON OrarendiNapok.OsztalyCsoportId = oo.C_OSZTALYCSOPORTID AND OrarendiNapok.Datum = naptar.C_NAPDATUMA 	AND (OrarendiNapok.Hetirend = oo.C_HETIREND OR oo.C_HETIREND = 1554)
			LEFT JOIN T_TANITASIORA_OSSZES tao ON 
								naptar.C_NAPDATUMA = tao.C_DATUM
								AND oo.C_OSZTALYCSOPORTID = tao.C_OSZTALYCSOPORTID
								AND oo.C_TANTARGYID = tao.C_TANTARGYID
								AND oo.C_ORASZAM = tao.C_ORASZAM
								AND tao.TOROLT='F'
			LEFT JOIN T_HELYETTESITESIIDOSZAK_OSSZES hely ON hely.C_HELYETTESITETTORARENDID=oo.ID AND CAST(hely.C_HELYETTESITESNAPJA AS DATE) = naptar.C_NAPDATUMA
		WHERE 
			oo.TOROLT='F'
			AND oo.C_OSZTALYCSOPORTID IN (SELECT ID FROM fnGetKapcsolodoOsztalycsoportok(@osztalyId)) 
			AND naptar.C_NAPDATUMA <= IIF(@osztalyId IN (SELECT osztalyId FROM @vegzosOsztalyokCsoportok) AND GETDATE() >= @vegzosUtolsoNapDatuma, @vegzosUtolsoNapDatuma, GETDATE())
			AND tao.ID IS NULL
			AND hely.ID IS NULL
			AND (oo.C_TANORANKIVULIFOGLALKOZAS = 'F' OR oo.C_TANORANKIVULIFOGLALKOZAS IS NULL)
			AND oo.C_CSENGETESIRENDORAID IS NOT NULL
			AND naptar.C_TANEVID = @tanevId

			UNION

			SELECT 
				naptar.C_HETSORSZAMA	HetSorszam
				,hi.ID					Id
			FROM T_HELYETTESITESIIDOSZAK_OSSZES hi
					INNER JOIN T_ORARENDIORA_OSSZES oo on oo.Id=hi.C_HELYETTESITETTORARENDID
					INNER JOIN T_NAPTARINAP_OSSZES naptar on naptar.C_NAPDATUMA = CAST(hi.C_HELYETTESITESNAPJA AS DATE) AND naptar.C_TANEVID=hi.C_TANEVID AND naptar.C_INTEZMENYID=hi.C_INTEZMENYID
			WHERE 
			oo.C_OSZTALYCSOPORTID IN (SELECT ID FROM fnGetKapcsolodoOsztalycsoportok(@osztalyId)) 
			AND (oo.C_OSZTALYCSOPORTID IN (SELECT ID FROM T_CSOPORT_OSSZES WHERE C_TIPUSA=1034) OR oo.C_OSZTALYCSOPORTID IN (SELECT ID FROM T_OSZTALY_OSSZES))
			AND hi.TOROLT='F'
			AND (oo.C_TANORANKIVULIFOGLALKOZAS = 'F' OR oo.C_TANORANKIVULIFOGLALKOZAS IS NULL)
			AND oo.C_CSENGETESIRENDORAID IS NOT NULL
			AND oo.TOROLT='F'
			AND hi.C_HELYETTESITESNAPJA <= IIF(oo.C_OSZTALYCSOPORTID IN (SELECT osztalyId FROM @vegzosOsztalyokCsoportok) AND GETDATE() >= @vegzosUtolsoNapDatuma, @vegzosUtolsoNapDatuma, GETDATE())
			AND NOT EXISTS (SELECT 1 FROM T_TANITASIORA_OSSZES tao WHERE tao.C_DATUM =  CAST(hi.C_HELYETTESITESNAPJA AS DATE) AND tao.C_ORARENDIORAID=hi.C_HELYETTESITETTORARENDID AND tao.TOROLT='F')
		)a
	)a
	GROUP BY HetSorszam
	ORDER BY HetSorszam

END

GO