267 lines
		
	
	
		
			14 KiB
		
	
	
	
		
			Transact-SQL
		
	
	
	
	
	
			
		
		
	
	
			267 lines
		
	
	
		
			14 KiB
		
	
	
	
		
			Transact-SQL
		
	
	
	
	
	
-- =============================================
 | 
						|
-- Author:		Sólyom Péter
 | 
						|
-- Create date: 2016.02.16.
 | 
						|
-- Description:	Órarend lekérdezése.
 | 
						|
-- =============================================
 | 
						|
IF OBJECT_ID('dbo.sp_GetOrarend') IS NOT NULL BEGIN
 | 
						|
  DROP PROCEDURE dbo.sp_GetOrarend
 | 
						|
END
 | 
						|
GO
 | 
						|
 | 
						|
CREATE PROCEDURE [dbo].[sp_GetOrarend]
 | 
						|
	@IntezmenyId int,
 | 
						|
	@TanevId int,
 | 
						|
	@IdoszakKezdete datetime,
 | 
						|
	@IdoszakVege datetime,
 | 
						|
	@TanarId int,
 | 
						|
	@OsztalyCsoportId int,
 | 
						|
	@TanuloId int,
 | 
						|
	@CsakOrarendiOrak bit
 | 
						|
AS
 | 
						|
BEGIN
 | 
						|
	-- SET NOCOUNT ON added to prevent extra result sets from
 | 
						|
	-- interfering with SELECT statements.
 | 
						|
	SET NOCOUNT ON;
 | 
						|
  
 | 
						|
	DECLARE 
 | 
						|
    @KezdoHet int = DATEPART( ISO_WEEK, @IdoszakKezdete),
 | 
						|
	  @ZaroHet int = DATEPART( ISO_WEEK, @IdoszakVege);
 | 
						|
 | 
						|
	-- Orarendi nap: "Ha nem OrarendiNap, akkor arra a napra ne jelenítse meg az órarendet." Ha C_ORARENDINAP = 'F', akkor OrarendiOra-t nem jelenít meg aznapra...
 | 
						|
	/*
 | 
						|
		- Jelenleg a T_NAPTARINAP és a T_TANEVRENDJE táblák közül a T_TANEVRENDJE tartalmazza a valid információkat.
 | 
						|
		- Kiemelt típusok esetén ne jelenjenek meg az órarendi órák. Ilyen kiemelt naptípusok (jelenleg):
 | 
						|
			1386 == Munkaszüneti nap
 | 
						|
			1387 == Tanítás nélküli munkanap
 | 
						|
			1389 == Egész napos kirándulás
 | 
						|
			1391 == Szabadnap (igazgatói hatáskörben)
 | 
						|
			1392 == Tanítási szünet
 | 
						|
			1396 == Ünnepnap
 | 
						|
			1397 == Téli szünet
 | 
						|
			1398 == Tavaszi szünet
 | 
						|
			1399 == Őszi szünet
 | 
						|
			1401 == Vizsganap
 | 
						|
	*/
 | 
						|
	SELECT 
 | 
						|
  	Datum,
 | 
						|
	  ISNULL(TanevHetirend, NapHetirend) Hetirend,
 | 
						|
	  ISNULL(TanevHetNapja, NapHetNapja) HetNapja,
 | 
						|
	  CsengetesiRendId
 | 
						|
	INTO #TEMPORARENDINAPOK
 | 
						|
	FROM (
 | 
						|
	  SELECT
 | 
						|
  		NAPTARINAP.Datum Datum,
 | 
						|
  		napHetirend.C_HETIREND NapHetirend,
 | 
						|
  		napHetirend.C_HETNAPJA NapHetNapja,
 | 
						|
  		tanevRendHetirend.C_HETIREND TanevHetirend,
 | 
						|
  		tanevRendHetirend.C_HETNAPJA TanevHetNapja,
 | 
						|
		tanevRendHetirend.C_CSENGETESIRENDID CsengetesiRendId	
 | 
						|
	  FROM /*ÁTÍRANDÓÓÓ*/(
 | 
						|
			/*Minden naptári nap, ami az időintervallumba beleesik.*/
 | 
						|
			(SELECT C_NAPDATUMA Datum FROM T_NAPTARINAP_OSSZES NAPTARINAP WHERE (TOROLT = 'F' AND C_NAPDATUMA >= @IdoszakKezdete AND C_NAPDATUMA < @IdoszakVege AND C_INTEZMENYID = @IntezmenyId AND C_TANEVID=@TanevId))
 | 
						|
			EXCEPT /*Kivéve, ha van aznap kiemelt típusú tanévrendje esemény, vagy olyan esemény, aminél C_ORARENDINAP = 'F'.*/
 | 
						|
			(SELECT C_DATUM Datum FROM T_TANEVRENDJE_OSSZES TANEVRENDJE WHERE (TOROLT = 'F' AND (C_NAPTIPUSA IN (1386,1387,1389,1391,1392,1396,1397,1398,1399,1401) OR C_ORARENDINAP = 'F')  AND C_INTEZMENYID = @IntezmenyId AND C_TANEVID=@TanevId))
 | 
						|
			UNION /*Azokat a dátumokat vegyük hozzá, amely napokon van C_ORARENDINAP = 'T' és C_ORARENDINAP = 'F' esemény is felvéve.*/
 | 
						|
			SELECT Datum
 | 
						|
			FROM (
 | 
						|
        SELECT
 | 
						|
					C_DATUM Datum,
 | 
						|
					COUNT (C_DATUM) DatumCounter
 | 
						|
				FROM (
 | 
						|
          SELECT C_DATUM, C_ORARENDINAP 
 | 
						|
          FROM T_TANEVRENDJE_OSSZES TANEVRENDJE 
 | 
						|
          WHERE (TOROLT = 'F') AND C_INTEZMENYID = @IntezmenyId AND C_TANEVID=@TanevId) TANEVRENDJE1
 | 
						|
					GROUP BY C_ORARENDINAP, C_DATUM
 | 
						|
				) TANEVRENDJE2
 | 
						|
				GROUP BY Datum
 | 
						|
				HAVING COUNT(Datum) = 2
 | 
						|
			
 | 
						|
		) NAPTARINAP
 | 
						|
  		LEFT JOIN (SELECT C_NAPDATUMA, C_HETIREND, IIF(C_HETNAPJA = 1407, dbo.fnGetHetNapja(C_NAPDATUMA), C_HETNAPJA) AS C_HETNAPJA from T_NAPTARINAP_OSSZES  WHERE TOROLT = 'F') napHetirend on  napHetirend.C_NAPDATUMA = NAPTARINAP.Datum
 | 
						|
  		LEFT JOIN (SELECT C_DATUM, C_HETIREND,C_CSENGETESIRENDID, IIF(C_HETNAPJA = 1407, dbo.fnGetHetNapja(C_DATUM), C_HETNAPJA) AS C_HETNAPJA from T_TANEVRENDJE_OSSZES  WHERE TOROLT = 'F') tanevRendHetirend on  tanevRendHetirend.C_DATUM = NAPTARINAP.Datum
 | 
						|
  ) NapokHetirenddel
 | 
						|
 | 
						|
	-- Vegzosok utolso tanitasi napja
 | 
						|
	DECLARE @VegzosUtolsoTanitasiNap_spGetOrarend DATETIME;
 | 
						|
	SELECT @VegzosUtolsoTanitasiNap_spGetOrarend = C_DATUM
 | 
						|
	FROM T_TANEVRENDJE_OSSZES
 | 
						|
	WHERE TOROLT = 'F'
 | 
						|
		AND C_TANEVID = (SELECT ID FROM T_TANEV_OSSZES WHERE TOROLT = 'F' AND C_AKTIV = 'T' AND C_INTEZMENYID = @IntezmenyId)
 | 
						|
		AND C_NAPTIPUSA = 1402  AND C_INTEZMENYID = @IntezmenyId AND C_TANEVID=@TanevId
 | 
						|
  
 | 
						|
  
 | 
						|
  DECLARE @tempCsoportok TABLE (CsoportID int PRIMARY KEY, Oka nvarchar(20))
 | 
						|
	-- Kapcsolódó csoportok
 | 
						|
  IF @OsztalyCsoportId IS NOT NULL BEGIN
 | 
						|
    INSERT INTO @tempCsoportok (CsoportID, Oka)
 | 
						|
    SELECT ID as CsoportID, OKA AS Oka
 | 
						|
	FROM dbo.fnGetKapcsolodoOsztalycsoportokByDate(@OsztalyCsoportId,@IdoszakKezdete,@IdoszakVege)
 | 
						|
    --FROM dbo.fnGetKapcsolodoOsztalycsoportok(@OsztalyCsoportId)
 | 
						|
  END
 | 
						|
  ELSE BEGIN
 | 
						|
    INSERT INTO @tempCsoportok (CsoportID, Oka)
 | 
						|
    SELECT ID as CsoportID, '' AS Oka
 | 
						|
    FROM T_OSZTALYCSOPORT WHERE C_TANEVID = @TanevId
 | 
						|
  END
 | 
						|
 | 
						|
	-- Tanítási órák
 | 
						|
	SELECT
 | 
						|
    TANITASIORA.ID Id,
 | 
						|
		TANITASIORA.C_ORARENDIORAID ORARENDIID,	
 | 
						|
    TANITASIORA.C_BONTOTT Bontott,
 | 
						|
    (
 | 
						|
      SELECT T_NAPTARINAP_OSSZES.C_HETIREND
 | 
						|
      FROM T_NAPTARINAP_OSSZES 
 | 
						|
      WHERE T_NAPTARINAP_OSSZES.ID = TANITASIORA.C_NAPTARINAPID
 | 
						|
    ) Hetirend,
 | 
						|
    TANITASIORA.C_HETNAPJA HetNapja,
 | 
						|
    CAST(null AS datetime) ErvenyessegKezdete,
 | 
						|
    CAST(null AS datetime) ErvenyessegVege,                  
 | 
						|
    TANITASIORA.C_ORAKEZDETE OraKezdete,
 | 
						|
    TANITASIORA.C_ORAVEGE OraVege, 
 | 
						|
    TANITASIORA.C_ORASZAM Oraszam,                     
 | 
						|
    TARGY.C_ROVIDNEV TargyNev,
 | 
						|
    TANITASIORA.C_MEGTARTOTT Megtartott,
 | 
						|
    TANITASIORA.C_CSENGETESIRENDORAID CsengetesiRendOraID,
 | 
						|
    OSZTALY.C_NEV OsztalyNev,
 | 
						|
    tcs.OKA AS MegjelenesOka,
 | 
						|
    TANAR.C_NYOMTATASINEV TanarNev,
 | 
						|
    TEREM.C_NEV TeremNev,
 | 
						|
    'TanitasiOra' OraTipus,
 | 
						|
    CASE WHEN (@TanuloId IS NOT NULL AND
 | 
						|
			(SELECT COUNT(1) 
 | 
						|
			 FROM T_TANULOMULASZTAS_OSSZES MULASZTAS 
 | 
						|
				WHERE MULASZTAS.C_ORATANULOIID = @TanuloId
 | 
						|
				  AND MULASZTAS.C_TANITASIORAKID = TANITASIORA.ID  AND C_INTEZMENYID = @IntezmenyId AND C_TANEVID=@TanevId
 | 
						|
					AND MULASZTAS.C_TIPUS = 1500) > 0)   --Kreta.Enums.MulasztasTipusEnum.hianyzas
 | 
						|
			THEN 'T'
 | 
						|
			ELSE 'F'
 | 
						|
		END AS Hianyzas,
 | 
						|
		CASE WHEN (@TanuloId IS NOT NULL AND
 | 
						|
			(SELECT COUNT(1) 
 | 
						|
			 FROM T_TANULOMULASZTAS_OSSZES MULASZTAS 
 | 
						|
			 WHERE MULASZTAS.C_ORATANULOIID = @TanuloId
 | 
						|
				AND MULASZTAS.C_TANITASIORAKID = TANITASIORA.ID  AND C_INTEZMENYID = @IntezmenyId AND C_TANEVID=@TanevId
 | 
						|
				AND MULASZTAS.C_TIPUS = 1499) > 0)   --Kreta.Enums.MulasztasTipusEnum.keses
 | 
						|
			THEN 'T'
 | 
						|
			ELSE 'F'
 | 
						|
		END AS Keses,
 | 
						|
		TANITASIORA.C_HELYETTESITOTANARID HelyettesitoTanarID,
 | 
						|
		TANAR.ID TanarID,
 | 
						|
		TANITASIORA.C_ADMINALTALKIIRT AdminAltalKiirt
 | 
						|
		INTO #TEMPORAK
 | 
						|
    FROM T_TANITASIORA_OSSZES TANITASIORA
 | 
						|
      INNER JOIN @tempCsoportok tcs ON tcs.CsoportID = TANITASIORA.C_OSZTALYCSOPORTID
 | 
						|
      LEFT JOIN T_TANTARGY_OSSZES TARGY ON (TARGY.ID = TANITASIORA.C_TANTARGYID  AND TARGY.C_INTEZMENYID = @IntezmenyId AND TARGY.C_TANEVID=@TanevId)
 | 
						|
      LEFT JOIN T_ORAK_TANAROK ON TANITASIORA.ID = T_ORAK_TANAROK.C_ORAKID 
 | 
						|
      LEFT JOIN T_FELHASZNALO_OSSZES TANAR on T_ORAK_TANAROK.C_TANAROKID = TANAR.ID
 | 
						|
      LEFT JOIN T_OSZTALYCSOPORT_OSSZES OSZTALY on (TANITASIORA.C_OSZTALYCSOPORTID = OSZTALY.ID  AND OSZTALY.C_INTEZMENYID = @IntezmenyId AND OSZTALY.C_TANEVID=@TanevId)
 | 
						|
      LEFT JOIN T_TEREM_OSSZES TEREM on (TEREM.id = TANITASIORA.C_TEREMID  AND TEREM.C_INTEZMENYID = @IntezmenyId AND TEREM.C_TANEVID=@TanevId)
 | 
						|
    WHERE @CsakOrarendiOrak = 0	-- TANÓRA IS
 | 
						|
      AND TANITASIORA.TOROLT='F'  AND TANITASIORA.C_INTEZMENYID = @IntezmenyId AND TANITASIORA.C_TANEVID=@TanevId
 | 
						|
      AND TANITASIORA.C_CSENGETESIRENDORAID IS NOT NULL
 | 
						|
      AND (TANITASIORA.C_ORAKEZDETE >= @IdoszakKezdete 
 | 
						|
			AND TANITASIORA.C_ORAVEGE <= (CASE WHEN OSZTALY.C_VEGZOSEVFOLYAM = 'T' AND @VegzosUtolsoTanitasiNap_spGetOrarend IS NOT NULL AND @IdoszakVege > @VegzosUtolsoTanitasiNap_spGetOrarend THEN @VegzosUtolsoTanitasiNap_spGetOrarend ELSE @IdoszakVege END))
 | 
						|
	    AND (@TanarId IS NULL OR ( TANITASIORA.C_HELYETTESITOTANARID = @TanarId OR TANITASIORA.C_ORATULAJDONOSID = @TanarId OR T_ORAK_TANAROK.C_TANAROKID = @TanarId ))
 | 
						|
      AND ( @TanuloId IS NULL
 | 
						|
			OR EXISTS (
 | 
						|
        SELECT 1 
 | 
						|
				FROM T_TANULOCSOPORT_OSSZES TANCSOP 
 | 
						|
				WHERE TANCSOP.C_OSZTALYCSOPORTID = TANITASIORA.C_OSZTALYCSOPORTID
 | 
						|
					AND TANCSOP.TOROLT = 'F'  AND TANCSOP.C_INTEZMENYID = @IntezmenyId AND TANCSOP.C_TANEVID=@TanevId
 | 
						|
					AND TANCSOP.C_BELEPESDATUM < GETDATE()
 | 
						|
					AND (TANCSOP.C_KILEPESDATUM IS NULL OR TANCSOP.C_KILEPESDATUM >= GETDATE())		-- TÖRÖLT
 | 
						|
					AND TANCSOP.C_TANULOID = @TanuloId )
 | 
						|
      )
 | 
						|
 | 
						|
	-- Órarendi órák
 | 
						|
    INSERT INTO #TEMPORAK
 | 
						|
    Select OrarendiOrak.Id, ORARENDIID, Bontott, Hetirend, HetNapja, ErvenyessegKezdete, ErvenyessegVege, OraKezdete, OraVege,
 | 
						|
     Oraszam, TargyNev, Megtartott, CsengetesiRendOraID, OsztalyNev, MegjelenesOka, TanarNev, TeremNev, OraTipus, Hianyzas, Keses,
 | 
						|
    T_HELYETTESITESIIDOSZAK_OSSZES.C_HELYETTESTANAROKID HelyettesitoTanarID, TanarID,AdminAltalKiirt
 | 
						|
    FROM (
 | 
						|
      SELECT
 | 
						|
        T_ORARENDIORA_OSSZES.ID Id,
 | 
						|
		    T_ORARENDIORA_OSSZES.ID ORARENDIID,
 | 
						|
        T_ORARENDIORA_OSSZES.C_BONTOTT Bontott,
 | 
						|
        T_ORARENDIORA_OSSZES.C_HETIREND Hetirend,
 | 
						|
        T_ORARENDIORA_OSSZES.C_HETNAPJA HetNapja,
 | 
						|
        T_ORARENDIORA_OSSZES.C_ORAERVENYESSEGKEZDETE ErvenyessegKezdete,
 | 
						|
        T_ORARENDIORA_OSSZES.C_ORAERVENYESSEGVEGE ErvenyessegVege,
 | 
						|
		    CASE 
 | 
						|
			    WHEN T_ORARENDIORA_OSSZES.C_ORAKEZDETE is null THEN DATEADD(HOUR, DATEPART(HOUR, T_CSENGETESIRENDORA_OSSZES.C_KEZDETE), DATEADD(MINUTE, DATEPART(MINUTE,T_CSENGETESIRENDORA_OSSZES.C_KEZDETE), ORARENDINAPOK.DATUM)) 
 | 
						|
			    ELSE T_ORARENDIORA_OSSZES.C_ORAKEZDETE 
 | 
						|
		    END OraKezdete,
 | 
						|
		    CASE 
 | 
						|
			    WHEN T_ORARENDIORA_OSSZES.C_ORAVEGE is null THEN DATEADD(HOUR, DATEPART(HOUR, T_CSENGETESIRENDORA_OSSZES.C_VEGE), DATEADD(MINUTE, DATEPART(MINUTE,T_CSENGETESIRENDORA_OSSZES.C_VEGE),  ORARENDINAPOK.DATUM))
 | 
						|
			    ELSE T_ORARENDIORA_OSSZES.C_ORAVEGE 
 | 
						|
		    END OraVege,
 | 
						|
        T_CSENGETESIRENDORA_OSSZES.C_ORASZAM Oraszam,
 | 
						|
        TARGY.C_ROVIDNEV TargyNev,
 | 
						|
        'F' Megtartott,
 | 
						|
        T_CSENGETESIRENDORA_OSSZES.ID CsengetesiRendOraID,
 | 
						|
        OSZTALY.C_NEV AS OsztalyNev,
 | 
						|
        tcs.OKA AS MegjelenesOka,
 | 
						|
        TANAR.C_NYOMTATASINEV TanarNev,
 | 
						|
        TEREM.C_NEV TeremNev,
 | 
						|
        'OrarendiOra'  OraTipus,
 | 
						|
        'F' Hianyzas,
 | 
						|
  	    'F' Keses,
 | 
						|
		    TANAR.ID TanarID,
 | 
						|
			'F' AdminAltalKiirt
 | 
						|
      FROM T_ORARENDIORA_OSSZES
 | 
						|
        INNER JOIN @tempCsoportok tcs ON tcs.CsoportID = T_ORARENDIORA_OSSZES.C_OSZTALYCSOPORTID
 | 
						|
        INNER JOIN T_CSENGETESIRENDORA_OSSZES on (T_CSENGETESIRENDORA_OSSZES.ID=T_ORARENDIORA_OSSZES.C_CSENGETESIRENDORAID  AND T_CSENGETESIRENDORA_OSSZES.C_INTEZMENYID = @IntezmenyId AND T_CSENGETESIRENDORA_OSSZES.C_TANEVID=@TanevId)        		
 | 
						|
        INNER JOIN #TEMPORARENDINAPOK ORARENDINAPOK ON (( T_ORARENDIORA_OSSZES.C_HETIREND = 1554 OR ORARENDINAPOK.HETIREND = T_ORARENDIORA_OSSZES.C_HETIREND ) AND ORARENDINAPOK.HETNAPJA = T_ORARENDIORA_OSSZES.C_HETNAPJA )
 | 
						|
        INNER JOIN (select Id,C_TANEVID,C_INTEZMENYID from T_CSENGETESIREND_OSSZES where C_AKTIV = 'T') AktivCsengetesiRend on ( AktivCsengetesiRend.C_TANEVID = @TanevId and AktivCsengetesiRend.C_INTEZMENYID = @IntezmenyId)
 | 
						|
        LEFT JOIN T_TANTARGY_OSSZES TARGY ON TARGY.ID = T_ORARENDIORA_OSSZES.C_TANTARGYID
 | 
						|
        LEFT JOIN T_FELHASZNALO_OSSZES TANAR ON TANAR.ID = T_ORARENDIORA_OSSZES.C_TANARID
 | 
						|
        LEFT JOIN T_OSZTALYCSOPORT_OSSZES OSZTALY ON T_ORARENDIORA_OSSZES.C_OSZTALYCSOPORTID = OSZTALY.ID
 | 
						|
        LEFT JOIN T_TEREM_OSSZES TEREM on (TEREM.id = T_ORARENDIORA_OSSZES.C_TEREMID AND TEREM.C_INTEZMENYID = @IntezmenyId AND TEREM.C_TANEVID=@TanevId)
 | 
						|
      WHERE T_ORARENDIORA_OSSZES.TOROLT='F' 
 | 
						|
        AND T_ORARENDIORA_OSSZES.C_CSENGETESIRENDORAID IS NOT NULL
 | 
						|
        AND T_ORARENDIORA_OSSZES.C_INTEZMENYID = @IntezmenyId 
 | 
						|
        AND T_ORARENDIORA_OSSZES.C_TANEVID = @TanevId
 | 
						|
        AND T_ORARENDIORA_OSSZES.C_ORAERVENYESSEGVEGE >= @IdoszakKezdete 
 | 
						|
        AND T_ORARENDIORA_OSSZES.C_ORAERVENYESSEGKEZDETE <= (CASE WHEN OSZTALY.C_VEGZOSEVFOLYAM = 'T' AND @VegzosUtolsoTanitasiNap_spGetOrarend IS NOT NULL AND @IdoszakVege > @VegzosUtolsoTanitasiNap_spGetOrarend THEN @VegzosUtolsoTanitasiNap_spGetOrarend ELSE @IdoszakVege END) 
 | 
						|
        AND ORARENDINAPOK.DATUM BETWEEN @IdoszakKezdete AND (CASE WHEN OSZTALY.C_VEGZOSEVFOLYAM = 'T' AND @VegzosUtolsoTanitasiNap_spGetOrarend IS NOT NULL AND @IdoszakVege > @VegzosUtolsoTanitasiNap_spGetOrarend THEN @VegzosUtolsoTanitasiNap_spGetOrarend ELSE @IdoszakVege END)
 | 
						|
		--AND ORARENDINAPOK.DATUM >= T_ORARENDIORA_OSSZES.C_ORAERVENYESSEGKEZDETE AND ORARENDINAPOK.DATUM < T_ORARENDIORA_OSSZES.C_ORAERVENYESSEGVEGE
 | 
						|
		AND (
 | 
						|
			(ORARENDINAPOK.DATUM >= T_ORARENDIORA_OSSZES.C_ORAERVENYESSEGKEZDETE AND ORARENDINAPOK.DATUM < T_ORARENDIORA_OSSZES.C_ORAERVENYESSEGVEGE) 
 | 
						|
			OR
 | 
						|
			(ORARENDINAPOK.DATUM = T_ORARENDIORA_OSSZES.C_ORAERVENYESSEGKEZDETE AND ORARENDINAPOK.DATUM = T_ORARENDIORA_OSSZES.C_ORAERVENYESSEGVEGE)
 | 
						|
		)
 | 
						|
		And ((ORARENDINAPOK.CsengetesiRendId is Null and C_CSENGETESIRENDID = AktivCsengetesiRend.ID) or (ORARENDINAPOK.CsengetesiRendId is not Null and ORARENDINAPOK.CsengetesiRendId = C_CSENGETESIRENDID))
 | 
						|
 | 
						|
        AND ( @TanuloId IS NULL
 | 
						|
	  		  OR EXISTS (
 | 
						|
            SELECT 1 
 | 
						|
  		  	  FROM T_TANULOCSOPORT_OSSZES TANCSOP 
 | 
						|
  			  	WHERE TANCSOP.C_OSZTALYCSOPORTID = T_ORARENDIORA_OSSZES.C_OSZTALYCSOPORTID
 | 
						|
    					AND TANCSOP.TOROLT = 'F' AND TANCSOP.C_INTEZMENYID = @IntezmenyId AND TANCSOP.C_TANEVID=@TanevId
 | 
						|
    					AND TANCSOP.C_BELEPESDATUM < GETDATE()
 | 
						|
    					AND (TANCSOP.C_KILEPESDATUM IS NULL OR TANCSOP.C_KILEPESDATUM >= GETDATE())		-- TÖRÖLT
 | 
						|
    					AND TANCSOP.C_TANULOID = @TanuloId )
 | 
						|
  		  )
 | 
						|
		    
 | 
						|
    ) OrarendiOrak
 | 
						|
      LEFT JOIN T_HELYETTESITESIIDOSZAK_OSSZES on (OrarendiOrak.ID = T_HELYETTESITESIIDOSZAK_OSSZES.C_HELYETTESITETTORARENDID 
 | 
						|
        And T_HELYETTESITESIIDOSZAK_OSSZES.C_HETSORSZAMA >= @KezdoHet
 | 
						|
        And (T_HELYETTESITESIIDOSZAK_OSSZES.C_HETSORSZAMA <= @ZaroHet) And T_HELYETTESITESIIDOSZAK_OSSZES.TOROLT = 'F'
 | 
						|
    ) WHERE (@TanarId IS NULL OR OrarendiOrak.TanarID = @TanarId Or T_HELYETTESITESIIDOSZAK_OSSZES.C_HELYETTESTANAROKID = @TanarId)
 | 
						|
			AND NOT EXISTS ( 
 | 
						|
				SELECT 1 
 | 
						|
				FROM #TEMPORAK TANORAK 
 | 
						|
  				WHERE TANORAK.ORARENDIID = OrarendiOrak.ID
 | 
						|
  					AND TANORAK.OraKezdete = OrarendiOrak.[OraKezdete]
 | 
						|
  					AND TANORAK.OraVege = OrarendiOrak.[OraVege]
 | 
						|
        )		-- HA MÁR VAN TANÍTÁSI ÓRA, AMELYIK VALAMELYIK ÓRARENDI ÓRÁBÓL JÖN, AKKOR NEM KELL AHHOZ AZ ÓRARENDI ÓRA IS
 | 
						|
	
 | 
						|
	SELECT * FROM #TEMPORAK order by orakezdete
 | 
						|
 | 
						|
	DROP TABLE #TEMPORAK
 | 
						|
	DROP TABLE #TEMPORARENDINAPOK
 | 
						|
END
 | 
						|
GO
 | 
						|
 |