166 lines
		
	
	
		
			6.8 KiB
		
	
	
	
		
			Transact-SQL
		
	
	
	
	
	
			
		
		
	
	
			166 lines
		
	
	
		
			6.8 KiB
		
	
	
	
		
			Transact-SQL
		
	
	
	
	
	
IF OBJECT_ID('sp_GetNemMegtartottOrakSzamaByHet') IS NOT NULL BEGIN
 | 
						|
  DROP PROCEDURE sp_GetNemMegtartottOrakSzamaByHet
 | 
						|
END
 | 
						|
GO
 | 
						|
 | 
						|
CREATE PROCEDURE sp_GetNemMegtartottOrakSzamaByHet
 | 
						|
	@osztalyId			INT
 | 
						|
	,@intezmenyId		INT
 | 
						|
	,@tanevId			INT
 | 
						|
	,@hetSorszam		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 @aktualisHetHetirendje INT = (SELECT C_HETIREND FROM T_NAPTARIHET_OSSZES WHERE C_HETSORSZAMA=@hetSorszam AND TOROLT='F' AND C_TANEVID=@tanevId)
 | 
						|
 | 
						|
	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 
 | 
						|
			Id					AS Id
 | 
						|
			,@hetSorszam		AS HetSzama
 | 
						|
			,C_NAPDATUMA		AS Datum
 | 
						|
			,C_HETNAPJA			AS Hetnapja
 | 
						|
			,C_ORASZAM			AS Oraszam
 | 
						|
			,C_NEV				AS OsztalyNev
 | 
						|
			,tant				AS TargyNev
 | 
						|
			,Nev				AS TanarNev
 | 
						|
	FROM 
 | 
						|
	(
 | 
						|
		SELECT DISTINCT 
 | 
						|
			oo.id
 | 
						|
			,naptar.C_NAPDATUMA
 | 
						|
			,naptar.C_HETNAPJA
 | 
						|
			,oo.C_ORASZAM
 | 
						|
			,ocs.C_NEV
 | 
						|
			,t.C_NEV tant
 | 
						|
			,ISNULL(fh.C_NYOMTATASINEV, f.C_NYOMTATASINEV) Nev
 | 
						|
		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
 | 
						|
			LEFT JOIN T_FELHASZNALO_OSSZES f ON oo.C_TANARID = f.ID
 | 
						|
			LEFT JOIN T_FELHASZNALO_OSSZES fh ON hely.C_HELYETTESTANAROKID = f.ID
 | 
						|
			INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.ID=oo.C_OSZTALYCSOPORTID
 | 
						|
			INNER JOIN T_TANTARGY_OSSZES t ON t.ID=oo.C_TANTARGYID
 | 
						|
			INNER JOIN T_DICTIONARYITEMBASE_OSSZES d ON d.ID=oo.C_HETIREND AND d.C_TANEVID=oo.C_TANEVID AND d.C_INTEZMENYID=oo.C_INTEZMENYID
 | 
						|
		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
 | 
						|
			AND naptar.C_HETSORSZAMA = @hetSorszam 
 | 
						|
 | 
						|
		UNION
 | 
						|
 | 
						|
		SELECT 
 | 
						|
			oo.id
 | 
						|
			,naptar.C_NAPDATUMA
 | 
						|
			,naptar.C_HETNAPJA
 | 
						|
			,oo.C_ORASZAM
 | 
						|
			,ocs.C_NEV
 | 
						|
			,t.C_NEV 
 | 
						|
			,f.C_NYOMTATASINEV +' (' + fh.C_NYOMTATASINEV +')'
 | 
						|
		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
 | 
						|
				LEFT JOIN T_FELHASZNALO_OSSZES f ON oo.C_TANARID = f.ID
 | 
						|
				LEFT JOIN T_FELHASZNALO_OSSZES fh ON hi.C_HELYETTESTANAROKID = fH.ID
 | 
						|
				LEFT JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.ID=oo.C_OSZTALYCSOPORTID
 | 
						|
				LEFT JOIN T_TANTARGY_OSSZES t ON t.ID=oo.C_TANTARGYID
 | 
						|
				LEFT JOIN T_TEREM_OSSZES ter ON ter.ID=oo.C_TEREMID
 | 
						|
				LEFT JOIN T_DICTIONARYITEMBASE_OSSZES d on d.id=oo.C_HETIREND AND d.C_TANEVID=oo.C_TANEVID AND d.C_INTEZMENYID=oo.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 naptar.C_HETSORSZAMA = @hetSorszam
 | 
						|
		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
 | 
						|
	ORDER BY Datum, Oraszam
 | 
						|
 | 
						|
END
 | 
						|
 | 
						|
GO |