560 lines
		
	
	
		
			22 KiB
		
	
	
	
		
			Transact-SQL
		
	
	
	
	
	
			
		
		
	
	
			560 lines
		
	
	
		
			22 KiB
		
	
	
	
		
			Transact-SQL
		
	
	
	
	
	
-- =============================================
 | 
						|
-- Author:      Telek Ákos
 | 
						|
-- Create date: 2018.01.15.
 | 
						|
-- Description: Órarend lekérdezése
 | 
						|
-- =============================================
 | 
						|
DROP PROCEDURE IF EXISTS [dbo].[sp_GetOrarend]
 | 
						|
GO
 | 
						|
 | 
						|
CREATE PROCEDURE [dbo].[sp_GetOrarend]
 | 
						|
   @pIntezmenyId int
 | 
						|
  ,@pTanevId int
 | 
						|
  ,@pIdoszakKezdete datetime
 | 
						|
  ,@pIdoszakVege datetime
 | 
						|
  ,@pTanarId int = NULL
 | 
						|
  ,@pIsHelyettesitesNelkul bit = 0
 | 
						|
  ,@pOsztalyCsoportId int = NULL
 | 
						|
  ,@pTanuloId int = NULL
 | 
						|
  ,@pTantargyId int = NULL
 | 
						|
  ,@pTeremId int = NULL
 | 
						|
  ,@pCsakOrarendiOrak bit
 | 
						|
  ,@pIsNapirend bit = 0 /*0 csak orarendi ora, 1 csak napirend, NULL mindkettő*/
 | 
						|
AS
 | 
						|
BEGIN /*TODO:Tobb Osztaly*//*OM-1575*/
 | 
						|
  SET NOCOUNT ON;
 | 
						|
  DECLARE
 | 
						|
     @sql nvarchar(max) = ''
 | 
						|
    ,@sqlOrarendiora nvarchar(max) = ''
 | 
						|
 | 
						|
  CREATE TABLE #OsztalyCsoportok (
 | 
						|
     Id int
 | 
						|
    ,Nev nvarchar(255)
 | 
						|
    ,Oka nvarchar(50)
 | 
						|
    ,IsVegzos char(1)
 | 
						|
    ,IdoszakKezdete datetime
 | 
						|
    ,IdoszakVege datetime
 | 
						|
    ,IsAlapkepzeses char(1)
 | 
						|
    ,INDEX IX1 CLUSTERED(Id, IdoszakKezdete, IdoszakVege)
 | 
						|
  );
 | 
						|
 | 
						|
  CREATE TABLE #NaptariNapok (
 | 
						|
     Datum datetime
 | 
						|
    ,HetirendId int
 | 
						|
    ,HetNapjaId int
 | 
						|
    ,OrarendiNap char(1)
 | 
						|
    ,OsztalyCsoportId int
 | 
						|
    ,HetSorszam int
 | 
						|
    ,CsengetesiRendId int
 | 
						|
    ,Nev nvarchar(255)
 | 
						|
    ,Oka nvarchar(50)
 | 
						|
    ,IsVegzos char(1)
 | 
						|
    ,IdoszakKezdete datetime
 | 
						|
    ,IdoszakVege datetime
 | 
						|
    ,IsEgyediNap char(1) COLLATE DATABASE_DEFAULT
 | 
						|
    ,PRIMARY KEY CLUSTERED (OsztalyCsoportId, Datum, HetNapjaId, HetirendId)
 | 
						|
  );
 | 
						|
 | 
						|
  CREATE TABLE #OrarendTable (
 | 
						|
     Id int
 | 
						|
    ,ORARENDIID int
 | 
						|
    ,Datum datetime
 | 
						|
    ,Bontott char(1)
 | 
						|
    ,Hetirend int
 | 
						|
    ,HetNapja int
 | 
						|
    ,HetSorszam int
 | 
						|
    ,ErvenyessegKezdete datetime
 | 
						|
    ,ErvenyessegVege datetime
 | 
						|
    ,OraKezdete datetime
 | 
						|
    ,OraVege datetime
 | 
						|
    ,Oraszam int
 | 
						|
    ,TargyNev nvarchar(300)
 | 
						|
    ,TargyNevForMobile nvarchar(300)
 | 
						|
    ,TargykategoriaID int
 | 
						|
    ,Megtartott char(1)
 | 
						|
    ,CsengetesiRendOraID int
 | 
						|
    ,CsengetesiRendID int
 | 
						|
    ,MaxNapiOraszam int
 | 
						|
    ,OsztalyNev nvarchar(255)
 | 
						|
    ,TanevRendOsztalyCsoportId int
 | 
						|
    ,MegjelenesOka nvarchar(300)
 | 
						|
    ,TanarNev nvarchar(255)
 | 
						|
    ,TeremNev nvarchar(255)
 | 
						|
    ,TeremId int
 | 
						|
    ,OraTipus nvarchar(200)
 | 
						|
    ,Hianyzas char(1)
 | 
						|
    ,Keses char(1)
 | 
						|
    ,Ures char(1)
 | 
						|
    ,HelyettesitoTanarID int
 | 
						|
    ,HelyettesitoTanarNev nvarchar(255)
 | 
						|
    ,HelyettesitesId int
 | 
						|
    ,TanarID int
 | 
						|
    ,AdminAltalKiirt  char(1)
 | 
						|
    ,GroupId int
 | 
						|
    ,Tema nvarchar(max)
 | 
						|
    ,TantargyId int
 | 
						|
    ,OsztCsopId int
 | 
						|
    ,INDEX IX1 CLUSTERED(Datum, HetNapja, Oraszam, TanevRendOsztalyCsoportId, TantargyId, TanarID)
 | 
						|
  );
 | 
						|
 | 
						|
  /* Változók deklarálása */
 | 
						|
  SET @sql += N'
 | 
						|
  DECLARE
 | 
						|
     @KezdoHet int = DATEPART( ISO_WEEK, @pIdoszakKezdete)
 | 
						|
    ,@ZaroHet int = DATEPART( ISO_WEEK, @pIdoszakVege);
 | 
						|
  DECLARE @VegzosUtolsoTanitasiNap datetime;
 | 
						|
 | 
						|
  SELECT @VegzosUtolsoTanitasiNap = MIN(C_DATUM)
 | 
						|
  FROM T_TANEVRENDJE_OSSZES
 | 
						|
  WHERE TOROLT = ''F''
 | 
						|
    AND C_TANEVID = @pTanevId
 | 
						|
    AND C_NAPTIPUSA IN (1402, 7600, 7601, 7602, 7603, 1395) --
 | 
						|
    AND C_OSSZESCSOPORTRAVONATKOZIK = ''T''
 | 
						|
 | 
						|
  DECLARE @IsVegzosEvfolyam char(1)
 | 
						|
  '
 | 
						|
 | 
						|
  /* A kapcsolódó osztálycsoportok összegyűjtése */
 | 
						|
  SET @sql += N'
 | 
						|
  IF @pOsztalyCsoportId IS NOT NULL BEGIN
 | 
						|
    SELECT @IsVegzosEvfolyam = C_VEGZOSEVFOLYAM
 | 
						|
    FROM T_OSZTALYCSOPORT_OSSZES
 | 
						|
    WHERE ID = @pOsztalyCsoportId
 | 
						|
 | 
						|
    INSERT INTO #OsztalyCsoportok (Id, Nev, Oka, IsVegzos, IdoszakKezdete, IdoszakVege, IsAlapkepzeses)
 | 
						|
    SELECT
 | 
						|
       kocs.ID
 | 
						|
      ,ocs.C_NEV
 | 
						|
      ,kocs.OKA 
 | 
						|
      ,ocs.C_VEGZOSEVFOLYAM 
 | 
						|
      ,kocs.Kezdete
 | 
						|
      ,CASE
 | 
						|
        WHEN ocs.C_VEGZOSEVFOLYAM = ''T'' AND @VegzosUtolsoTanitasiNap IS NOT NULL AND kocs.Vege > @VegzosUtolsoTanitasiNap THEN  @VegzosUtolsoTanitasiNap + 1
 | 
						|
        WHEN kocs.Vege <  @pIdoszakVege THEN kocs.Vege
 | 
						|
        ELSE @pIdoszakVege
 | 
						|
       END
 | 
						|
      ,IIF(C_FELADATKATEGORIAID = 7553, ''T'', ''F'')
 | 
						|
    FROM dbo.fnGetKopcsolodoOsztalyCsoportokByDateRange(@pOsztalyCsoportId, @pIdoszakKezdete, @pIdoszakVege, @pIntezmenyId, @pTanevId) kocs
 | 
						|
      INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.ID = kocs.ID AND ocs.TOROLT = ''F''
 | 
						|
  END
 | 
						|
  ELSE BEGIN
 | 
						|
    IF @pTanuloId IS NOT NULL BEGIN
 | 
						|
 | 
						|
      SELECT @IsVegzosEvfolyam = ocs.C_VEGZOSEVFOLYAM
 | 
						|
      FROM T_TANULOCSOPORT_OSSZES tcs
 | 
						|
        INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.ID = tcs.C_OSZTALYCSOPORTID
 | 
						|
      WHERE EXISTS (SELECT 1 FROM T_OSZTALY_OSSZES o WHERE o.ID = ocs.ID)
 | 
						|
        AND tcs.C_TANULOID = @pTanuloId AND tcs.TOROLT = ''F''
 | 
						|
        AND tcs.C_BELEPESDATUM <= @pIdoszakVege
 | 
						|
        AND (tcs.C_KILEPESDATUM > @pIdoszakKezdete OR tcs.C_KILEPESDATUM IS NULL)
 | 
						|
 | 
						|
      INSERT INTO #OsztalyCsoportok (Id, Nev, Oka, IsVegzos, IdoszakKezdete, IdoszakVege, IsAlapkepzeses)
 | 
						|
      SELECT
 | 
						|
         tcs.C_OSZTALYCSOPORTID
 | 
						|
        ,ocs.C_NEV
 | 
						|
        ,'''' AS Oka
 | 
						|
        ,@IsVegzosEvfolyam
 | 
						|
        ,IIF(tcs.C_BELEPESDATUM < @pIdoszakKezdete, @pIdoszakKezdete, tcs.C_BELEPESDATUM)
 | 
						|
        ,CASE
 | 
						|
          WHEN @pIdoszakVege <= @VegzosUtolsoTanitasiNap AND @pIdoszakVege <= ISNULL(tcs.C_KILEPESDATUM, @pIdoszakVege)
 | 
						|
          THEN @pIdoszakVege
 | 
						|
          WHEN @IsVegzosEvfolyam = ''T'' AND @VegzosUtolsoTanitasiNap <= @pIdoszakVege AND @VegzosUtolsoTanitasiNap <= ISNULL(tcs.C_KILEPESDATUM, @pIdoszakVege)
 | 
						|
          THEN @VegzosUtolsoTanitasiNap+1
 | 
						|
          ELSE ISNULL(tcs.C_KILEPESDATUM, @pIdoszakVege)
 | 
						|
         END
 | 
						|
        ,IIF(C_FELADATKATEGORIAID = 7553, ''T'', ''F'')
 | 
						|
      FROM T_TANULOCSOPORT_OSSZES tcs
 | 
						|
        INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON tcs.C_OSZTALYCSOPORTID = ocs.ID AND ocs.TOROLT = ''F''
 | 
						|
      WHERE tcs.C_TANULOID = @pTanuloId AND tcs.TOROLT = ''F''
 | 
						|
        AND tcs.C_BELEPESDATUM <= @pIdoszakVege
 | 
						|
        AND (tcs.C_KILEPESDATUM > @pIdoszakKezdete OR tcs.C_KILEPESDATUM IS NULL)
 | 
						|
 | 
						|
    END
 | 
						|
    --Performancia noveles miatt
 | 
						|
    ELSE IF @pTanarId IS NOT NULL BEGIN
 | 
						|
      INSERT INTO #OsztalyCsoportok (Id, Nev, Oka, IsVegzos, IdoszakKezdete, IdoszakVege, IsAlapkepzeses)
 | 
						|
    	SELECT
 | 
						|
         ID
 | 
						|
    	  ,ocs.C_NEV
 | 
						|
        ,''''
 | 
						|
        ,ocs.C_VEGZOSEVFOLYAM
 | 
						|
        ,@pIdoszakKezdete
 | 
						|
        ,IIF(ocs.C_VEGZOSEVFOLYAM = ''T'' AND @VegzosUtolsoTanitasiNap IS NOT NULL AND @pIdoszakVege > @VegzosUtolsoTanitasiNap, @VegzosUtolsoTanitasiNap + 1, @pIdoszakVege)
 | 
						|
        ,IIF(C_FELADATKATEGORIAID = 7553, ''T'', ''F'')
 | 
						|
    	FROM (
 | 
						|
    		SELECT
 | 
						|
          oo.C_OSZTALYCSOPORTID
 | 
						|
        FROM T_ORARENDIORA_OSSZES oo
 | 
						|
        WHERE oo.C_TANARID = @pTanarId
 | 
						|
--          AND oo.C_ORAERVENYESSEGKEZDETE <= @pIdoszakVege
 | 
						|
--          AND oo.C_ORAERVENYESSEGVEGE >= @pIdoszakKezdete
 | 
						|
          AND oo.TOROLT = ''F''
 | 
						|
 | 
						|
        UNION
 | 
						|
 | 
						|
        SELECT
 | 
						|
          oo.C_OSZTALYCSOPORTID
 | 
						|
        FROM T_HELYETTESITESIIDOSZAK_OSSZES hi
 | 
						|
          INNER JOIN T_ORARENDIORA_OSSZES oo ON oo.ID = hi.C_HELYETTESITETTORARENDID AND oo.TOROLT = ''F''
 | 
						|
        WHERE hi.C_HELYETTESTANAROKID = @pTanarId
 | 
						|
          AND hi.C_HELYETTESITESNAPJA >= @pIdoszakKezdete
 | 
						|
          AND hi.C_HELYETTESITESNAPJA < @pIdoszakVege
 | 
						|
          AND hi.TOROLT = ''F''
 | 
						|
 | 
						|
  		  UNION
 | 
						|
 | 
						|
        SELECT
 | 
						|
          tno.C_OSZTALYCSOPORTID
 | 
						|
        FROM T_TANITASIORA_OSSZES tno
 | 
						|
        WHERE tno.C_HELYETTESITOTANARID = @pTanarId
 | 
						|
          AND tno.C_DATUM < @pIdoszakVege
 | 
						|
          AND tno.C_DATUM >= @pIdoszakKezdete
 | 
						|
          AND tno.TOROLT = ''F''
 | 
						|
 | 
						|
  		  UNION
 | 
						|
 | 
						|
        SELECT
 | 
						|
          tno.C_OSZTALYCSOPORTID
 | 
						|
        FROM T_TANITASIORA_OSSZES tno
 | 
						|
        WHERE tno.C_TANARID = @pTanarId
 | 
						|
          AND tno.C_DATUM < @pIdoszakVege
 | 
						|
          AND tno.C_DATUM >= @pIdoszakKezdete
 | 
						|
          AND tno.TOROLT = ''F''
 | 
						|
  		) x
 | 
						|
      INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.ID = x.C_OSZTALYCSOPORTID
 | 
						|
    END
 | 
						|
 | 
						|
  --Performancia noveles miatt
 | 
						|
    ELSE BEGIN
 | 
						|
      INSERT INTO #OsztalyCsoportok (Id, Nev, Oka, IsVegzos, IdoszakKezdete, IdoszakVege, IsAlapkepzeses)
 | 
						|
      SELECT ID, C_NEV, '''' AS Oka, C_VEGZOSEVFOLYAM, @pIdoszakKezdete 
 | 
						|
        ,IIF(C_VEGZOSEVFOLYAM = ''T'' AND @VegzosUtolsoTanitasiNap IS NOT NULL AND @pIdoszakVege > @VegzosUtolsoTanitasiNap, @VegzosUtolsoTanitasiNap + 1, @pIdoszakVege)
 | 
						|
        ,IIF(C_FELADATKATEGORIAID = 7553, ''T'', ''F'')
 | 
						|
      FROM T_OSZTALYCSOPORT_OSSZES
 | 
						|
      WHERE C_TANEVID = @pTanevId AND TOROLT = ''F''
 | 
						|
    END
 | 
						|
  END'
 | 
						|
 | 
						|
  SET @sql += N'
 | 
						|
    UPDATE ocs SET
 | 
						|
      ocs.IdoszakVege = NewVegeDatum
 | 
						|
    FROM #OsztalyCsoportok ocs
 | 
						|
      INNER JOIN (
 | 
						|
        SELECT MIN(tr.C_DATUM) + 1 AS NewVegeDatum, ocstr.C_OSZTALYCSOPORTID
 | 
						|
        FROM T_TANEVRENDJE_OSSZES tr
 | 
						|
          INNER JOIN T_OSZTALYCSOPORT_TANEVRENDJE ocstr ON  ocstr.C_TANEVRENDJEID = tr.ID
 | 
						|
        WHERE tr.C_OSSZESCSOPORTRAVONATKOZIK = ''F''
 | 
						|
          AND tr.TOROLT = ''F''
 | 
						|
          AND tr.C_NAPTIPUSA IN (1402, 7600, 7601, 7602, 7603)
 | 
						|
          AND tr.C_TANEVID = @pTanevId
 | 
						|
        GROUP BY ocstr.C_OSZTALYCSOPORTID
 | 
						|
      ) x ON x.C_OSZTALYCSOPORTID = ocs.Id
 | 
						|
    WHERE ocs.IsVegzos = ''T''
 | 
						|
  '
 | 
						|
  /* A naptári napok összegyűjtése tanév rendje alapján */
 | 
						|
  SET @sql += N'
 | 
						|
  INSERT INTO #NaptariNapok (
 | 
						|
     Datum
 | 
						|
    ,HetirendId
 | 
						|
    ,HetNapjaId
 | 
						|
    ,OrarendiNap
 | 
						|
    ,OsztalyCsoportId
 | 
						|
    ,HetSorszam
 | 
						|
    ,CsengetesiRendId
 | 
						|
    ,Nev
 | 
						|
    ,Oka
 | 
						|
    ,IsVegzos
 | 
						|
    ,IdoszakKezdete
 | 
						|
    ,IdoszakVege
 | 
						|
    ,IsEgyediNap
 | 
						|
  ) SELECT
 | 
						|
       nn.Datum
 | 
						|
      ,ISNULL(tr.HetirendId, nn.HetirendId) AS HetirendId
 | 
						|
      ,ISNULL(tr.HetNapjaId, nn.HetNapjaId) AS HetNapjaId
 | 
						|
      ,ISNULL(tr.OrarendiNap, nn.OrarendiNap) AS OrarendiNap
 | 
						|
      ,nn.OsztalyCsoportId
 | 
						|
      ,ISNULL(tr.HetSorszam, nn.HetSorszam) AS HetSorszam
 | 
						|
      ,ISNULL(tr.CsengetesiRendId, nn.CsengetesiRendId) AS CsengetesiRendId
 | 
						|
      ,ISNULL(tr.Nev, nn.Nev)
 | 
						|
      ,ISNULL(tr.Oka, nn.Oka)
 | 
						|
      ,ISNULL(tr.IsVegzos, nn.IsVegzos)
 | 
						|
      ,ISNULL(tr.IdoszakKezdete, nn.IdoszakKezdete)
 | 
						|
      ,ISNULL(tr.IdoszakVege, nn.IdoszakVege)
 | 
						|
      ,COALESCE(tr.IsEgyediNap, nn.IsEgyediNap, ''F'')
 | 
						|
    FROM (
 | 
						|
      SELECT
 | 
						|
         nn.C_NAPDATUMA AS Datum
 | 
						|
        ,nn.C_HETIREND AS HetirendId
 | 
						|
        ,nn.C_HETNAPJA AS HetNapjaId
 | 
						|
        ,nn.C_ORARENDINAP AS OrarendiNap
 | 
						|
        ,ocs.ID AS OsztalyCsoportId
 | 
						|
        ,nn.C_HETSORSZAMA AS HetSorszam
 | 
						|
        ,tr.C_CSENGETESIRENDID AS CsengetesiRendId
 | 
						|
        ,ocs.Nev
 | 
						|
        ,ocs.Oka
 | 
						|
        ,ocs.IsVegzos
 | 
						|
        ,ocs.IdoszakKezdete
 | 
						|
        ,ocs.IdoszakVege
 | 
						|
        ,tr.C_EGYEDINAP AS IsEgyediNap
 | 
						|
        ,ocs.IsAlapkepzeses
 | 
						|
      FROM T_NAPTARINAP_OSSZES nn
 | 
						|
        INNER JOIN #OsztalyCsoportok ocs ON ocs.IdoszakKezdete <= nn.C_NAPDATUMA AND ocs.IdoszakVege > nn.C_NAPDATUMA
 | 
						|
        LEFT JOIN T_TANEVRENDJE_OSSZES tr ON tr.C_DATUM = nn.C_NAPDATUMA AND nn.C_INTEZMENYID = tr.C_INTEZMENYID AND nn.C_TANEVID = tr.C_TANEVID AND tr.TOROLT = ''F'' AND tr.C_OSSZESCSOPORTRAVONATKOZIK = ''T''
 | 
						|
      WHERE nn.TOROLT = ''F''
 | 
						|
        AND nn.C_INTEZMENYID = @pIntezmenyId AND nn.C_TANEVID = @pTanevId
 | 
						|
    ) nn
 | 
						|
    LEFT JOIN (
 | 
						|
      SELECT
 | 
						|
         nn.C_NAPDATUMA AS Datum
 | 
						|
        ,tr.C_HETIREND AS HetirendId
 | 
						|
        ,tr.C_HETNAPJA AS HetNapjaId
 | 
						|
        ,tr.C_ORARENDINAP AS OrarendiNap
 | 
						|
        ,ocstr.C_OSZTALYCSOPORTID AS OsztalyCsoportId
 | 
						|
        ,nn.C_HETSORSZAMA AS HetSorszam
 | 
						|
        ,tr.C_CSENGETESIRENDID AS CsengetesiRendId
 | 
						|
        ,ocs.Nev
 | 
						|
        ,ocs.Oka
 | 
						|
        ,ocs.IsVegzos
 | 
						|
        ,ocs.IdoszakKezdete
 | 
						|
        ,ocs.IdoszakVege
 | 
						|
        ,tr.C_EGYEDINAP AS IsEgyediNap
 | 
						|
        ,ocs.IsAlapkepzeses
 | 
						|
      FROM T_NAPTARINAP_OSSZES nn
 | 
						|
        INNER JOIN T_TANEVRENDJE_OSSZES tr ON tr.C_DATUM = nn.C_NAPDATUMA AND nn.C_INTEZMENYID = tr.C_INTEZMENYID AND nn.C_TANEVID = tr.C_TANEVID AND tr.TOROLT = ''F'' AND tr.C_OSSZESCSOPORTRAVONATKOZIK = ''F''
 | 
						|
        INNER JOIN T_OSZTALYCSOPORT_TANEVRENDJE ocstr ON tr.ID = ocstr.C_TANEVRENDJEID
 | 
						|
        INNER JOIN #OsztalyCsoportok ocs ON ocs.Id = ocstr.C_OSZTALYCSOPORTID AND ocs.IdoszakKezdete <= nn.C_NAPDATUMA AND ocs.IdoszakVege > nn.C_NAPDATUMA
 | 
						|
      WHERE nn.TOROLT = ''F''
 | 
						|
        AND nn.C_INTEZMENYID = @pIntezmenyId AND nn.C_TANEVID = @pTanevId
 | 
						|
        AND nn.C_NAPDATUMA >= @pIdoszakKezdete AND nn.C_NAPDATUMA < ocs.IdoszakVege
 | 
						|
    ) tr ON nn.Datum = tr.datum AND nn.OsztalyCsoportId = tr.OsztalyCsoportId
 | 
						|
    WHERE (ISNULL(tr.OrarendiNap, nn.OrarendiNap) = ''T'' OR ISNULL(tr.IsAlapkepzeses, nn.IsAlapkepzeses) = ''F'')
 | 
						|
  '
 | 
						|
 | 
						|
  /* Órarend lekérdezés */
 | 
						|
  IF @pCsakOrarendiOrak = 0 BEGIN
 | 
						|
    SET @sql += N'
 | 
						|
    INSERT INTO #OrarendTable
 | 
						|
    '
 | 
						|
 | 
						|
  END
 | 
						|
 | 
						|
  SET @sqlOrarendiora += N'
 | 
						|
    SELECT  DISTINCT
 | 
						|
       oo.ID AS Id
 | 
						|
      ,oo.ID AS ORARENDIID
 | 
						|
      ,nn.Datum AS Datum
 | 
						|
      ,oo.C_BONTOTT AS Bontott
 | 
						|
      ,oo.C_HETIREND AS Hetirend
 | 
						|
      ,oo.C_HETNAPJA AS HetNapja
 | 
						|
      ,nn.HetSorszam AS HetSorszam
 | 
						|
      ,oo.C_ORAERVENYESSEGKEZDETE AS ErvenyessegKezdete
 | 
						|
      ,oo.C_ORAERVENYESSEGVEGE AS ErvenyessegVege
 | 
						|
      ,nn.Datum + oo.C_ORAKEZDETE AS OraKezdete
 | 
						|
      ,nn.Datum + oo.C_ORAVEGE AS OraVege
 | 
						|
      ,oo.C_ORASZAM AS Oraszam
 | 
						|
      ,ISNULL(tt.C_ROVIDNEV, tt.C_NEV) AS TargyNev
 | 
						|
      ,COALESCE(tt.C_ROVIDNEV, tt.C_NEV) AS TargyNevForMobile
 | 
						|
      ,tt.C_TARGYKATEGORIA AS TargykategoriaID
 | 
						|
      ,''F'' AS Megtartott
 | 
						|
      ,csro.ID AS CsengetesiRendOraID
 | 
						|
      ,csro.C_CSENGETESIRENDID AS CsengetesiRendID
 | 
						|
      ,MAX(oo.C_ORASZAM) OVER() AS MaxNapiOraszam
 | 
						|
      ,nn.Nev AS OsztalyNev
 | 
						|
      ,nn.OsztalyCsoportId AS TanevRendOsztalyCsoportId
 | 
						|
      ,nn.OKA AS MegjelenesOka
 | 
						|
      ,tanar.C_NYOMTATASINEV AS TanarNev
 | 
						|
      ,terem.C_NEV AS TeremNev
 | 
						|
      ,terem.ID AS TeremId
 | 
						|
      ,''OrarendiOra'' AS OraTipus
 | 
						|
      ,''F'' AS Hianyzas
 | 
						|
      ,''F'' AS Keses
 | 
						|
      ,''F'' AS Ures
 | 
						|
      ,hisz.C_HELYETTESTANAROKID AS HelyettesitoTanarID
 | 
						|
      ,helyettes.C_NYOMTATASINEV AS HelyettesitoTanarNev
 | 
						|
      ,hisz.Id AS HelyettesitesId
 | 
						|
      ,tanar.ID AS TanarID
 | 
						|
      ,NULL AS AdminAltalKiirt
 | 
						|
      ,oo.C_ORARENDIORAGROUPID AS GroupId
 | 
						|
      ,NULL AS Tema
 | 
						|
      ,oo.C_TANTARGYID AS TantargyId
 | 
						|
      ,oo.C_OSZTALYCSOPORTID AS OsztCsopId
 | 
						|
    FROM T_ORARENDIORA_OSSZES oo
 | 
						|
      INNER JOIN #OsztalyCsoportok ocs ON ocs.ID = oo.C_OSZTALYCSOPORTID
 | 
						|
      INNER JOIN #NaptariNapok nn ON  nn.HetnapjaId = oo.C_HETNAPJA
 | 
						|
        AND ocs.ID = nn.OsztalyCsoportId
 | 
						|
        AND nn.Datum >= oo.C_ORAERVENYESSEGKEZDETE
 | 
						|
        AND ((nn.Datum < oo.C_ORAERVENYESSEGVEGE) OR (oo.C_ORAERVENYESSEGKEZDETE = oo.C_ORAERVENYESSEGVEGE AND nn.Datum = oo.C_ORAERVENYESSEGKEZDETE))
 | 
						|
        AND (oo.C_HETIREND = 1554 OR nn.HetirendId = oo.C_HETIREND)
 | 
						|
        AND C_TANEVID = @pTanevId
 | 
						|
        AND oo.C_EGYEDINAP = nn.IsEgyediNap
 | 
						|
      INNER JOIN T_TANTARGY_OSSZES tt ON tt.ID = oo.C_TANTARGYID AND tt.TOROLT = ''F''
 | 
						|
      INNER JOIN T_FELHASZNALO_OSSZES tanar ON tanar.ID = oo.C_TANARID AND tanar.TOROLT = ''F''
 | 
						|
      LEFT  JOIN T_TEREM_OSSZES terem ON terem.id = oo.C_TEREMID AND terem.TOROLT = ''F''
 | 
						|
      LEFT  JOIN T_HELYETTESITESIIDOSZAK_OSSZES hisz ON oo.ID = hisz.C_HELYETTESITETTORARENDID AND hisz.C_HELYETTESITESNAPJA = nn.Datum AND hisz.TOROLT = ''F''
 | 
						|
      LEFT  JOIN T_FELHASZNALO_OSSZES helyettes ON hisz.C_HELYETTESTANAROKID = helyettes.ID AND helyettes.TOROLT = ''F''
 | 
						|
      ' + IIF(@pIsNapirend = 0, 'INNER', 'LEFT') + ' JOIN T_CSENGETESIRENDORA_OSSZES csro ON csro.C_CSENGETESIRENDID = ISNULL(nn.CsengetesiRendId, oo.C_CSENGETESIRENDID) AND csro.C_ORASZAM = oo.C_ORASZAM AND csro.TOROLT = ''F''
 | 
						|
    WHERE oo.TOROLT = ''F''
 | 
						|
      ' + CASE WHEN @pIsNapirend = 1 THEN N'AND oo.C_CSENGETESIRENDID IS NULL ' WHEN @pIsNapirend IS NULL THEN N'AND ((oo.C_CSENGETESIRENDID IS NOT NULL AND csro.C_CSENGETESIRENDID IS NOT NULL) OR (oo.C_CSENGETESIRENDID IS NULL AND csro.C_CSENGETESIRENDID IS NULL))' ELSE '' END + '
 | 
						|
      AND oo.C_TANEVID = @pTanevId
 | 
						|
      ' + IIF(@pTantargyId IS NULL, N'', N'AND oo.C_TANTARGYID = @pTantargyId') + N'
 | 
						|
      ' + IIF(@pTeremId IS NULL, N'', 'AND oo.C_TEREMID = @pTeremId')
 | 
						|
 | 
						|
 | 
						|
  SET @sql += @sqlOrarendiOra + N'
 | 
						|
    ' + IIF(@pTanarId IS NULL, N'', 'AND oo.C_TANARID = @pTanarId')
 | 
						|
 | 
						|
  IF @pTanarId IS NOT NULL AND @pIsHelyettesitesNelkul = 0 BEGIN
 | 
						|
    SET @sql += N'
 | 
						|
    UNION ALL
 | 
						|
    ' + @sqlOrarendiOra + '
 | 
						|
      AND hisz.C_HELYETTESTANAROKID = @pTanarId
 | 
						|
      AND hisz.C_HELYETTESITESNAPJA >= @pIdoszakKezdete AND hisz.C_HELYETTESITESNAPJA < ocs.IdoszakVege
 | 
						|
    '
 | 
						|
  END
 | 
						|
 | 
						|
 | 
						|
  IF @pCsakOrarendiOrak = 0 BEGIN
 | 
						|
 | 
						|
    /* TanításiÓra lekérdezés */
 | 
						|
    SET @sql += N'
 | 
						|
    SELECT
 | 
						|
       ISNULL(tn.Id, oo.Id) AS Id
 | 
						|
      ,ISNULL(tn.ORARENDIID, oo.ORARENDIID) AS ORARENDIID
 | 
						|
      ,ISNULL(tn.Datum, oo.Datum) AS Datum
 | 
						|
      ,ISNULL(tn.Bontott, oo.Bontott) AS Bontott
 | 
						|
      ,ISNULL(tn.Hetirend, oo.Hetirend) AS Hetirend
 | 
						|
      ,ISNULL(tn.HetNapja, oo.HetNapja) AS HetNapja
 | 
						|
      ,ISNULL(tn.HetSorszam, oo.HetSorszam) AS HetSorszam
 | 
						|
      ,IIF(tn.Id IS NOT NULL, NULL, oo.ErvenyessegKezdete) AS ErvenyessegKezdete
 | 
						|
      ,IIF(tn.Id IS NOT NULL, NULL, oo.ErvenyessegVege) AS ErvenyessegVege
 | 
						|
      ,ISNULL(tn.OraKezdete, oo.OraKezdete) AS OraKezdete
 | 
						|
      ,ISNULL(tn.OraVege, oo.OraVege) AS OraVege
 | 
						|
      ,ISNULL(tn.Oraszam, oo.Oraszam) AS Oraszam
 | 
						|
      ,ISNULL(tn.TargyNev, oo.TargyNev) AS TargyNev
 | 
						|
      ,ISNULL(tn.TargyNevForMobile, oo.TargyNevForMobile) AS TargyNevForMobile
 | 
						|
      ,ISNULL(tn.TargykategoriaID, oo.TargykategoriaID) AS TargykategoriaID
 | 
						|
      ,ISNULL(tn.Megtartott, oo.Megtartott) AS Megtartott
 | 
						|
      ,ISNULL(tn.CsengetesiRendOraID, oo.CsengetesiRendOraID) AS CsengetesiRendOraID
 | 
						|
      ,ISNULL(tn.CsengetesiRendID, oo.CsengetesiRendID) AS CsengetesiRendID
 | 
						|
      ,ISNULL(tn.MaxNapiOraszam, oo.MaxNapiOraszam) AS MaxNapiOraszam
 | 
						|
      ,ISNULL(tn.OsztalyNev, oo.OsztalyNev) AS OsztalyNev
 | 
						|
      ,ISNULL(tn.TanevRendOsztalyCsoportId, oo.TanevRendOsztalyCsoportId) AS TanevRendOsztalyCsoportId
 | 
						|
      ,ISNULL(tn.MegjelenesOka, oo.MegjelenesOka) AS MegjelenesOka
 | 
						|
      ,ISNULL(tn.TanarNev, oo.TanarNev) AS TanarNev
 | 
						|
      ,ISNULL(tn.TeremNev, oo.TeremNev) AS TeremNev
 | 
						|
      ,ISNULL(tn.TeremId, oo.TeremId) AS TeremId
 | 
						|
      ,ISNULL(tn.OraTipus, oo.OraTipus) AS OraTipus
 | 
						|
      ,ISNULL(tn.Hianyzas, oo.Hianyzas) AS Hianyzas
 | 
						|
      ,ISNULL(tn.Keses, oo.Keses) AS Keses
 | 
						|
      ,ISNULL(tn.Ures, oo.Ures) AS Ures
 | 
						|
      ,ISNULL(tn.HelyettesitoTanarID, oo.HelyettesitoTanarID) AS HelyettesitoTanarID
 | 
						|
      ,ISNULL(tn.HelyettesitoTanarNev, oo.HelyettesitoTanarNev) AS HelyettesitoTanarNev
 | 
						|
      ,oo.HelyettesitesId AS HelyettesitesId
 | 
						|
      ,ISNULL(tn.TanarID, oo.TanarID) AS TanarID
 | 
						|
      ,ISNULL(tn.AdminAltalKiirt, oo.AdminAltalKiirt) AS AdminAltalKiirt
 | 
						|
      ,ISNULL(tn.GroupId, oo.GroupId) AS GroupId
 | 
						|
      ,tn.Tema AS Tema
 | 
						|
      ,ISNULL(tn.TantargyId, oo.TantargyId) AS TantargyId
 | 
						|
      ,ISNULL(tn.OsztCsopId, oo.OsztCsopId) AS OsztCsopId
 | 
						|
    FROM #OrarendTable oo
 | 
						|
    '
 | 
						|
 | 
						|
    SET @sql += N'
 | 
						|
    FULL JOIN (
 | 
						|
      SELECT
 | 
						|
         tao.ID AS Id
 | 
						|
        ,NULL AS ORARENDIID
 | 
						|
        ,tao.C_DATUM AS Datum
 | 
						|
        ,tao.C_BONTOTT AS Bontott
 | 
						|
        ,1554 AS Hetirend
 | 
						|
        ,tao.C_HETNAPJA AS HetNapja
 | 
						|
        ,tao.C_HETSORSZAMA AS HetSorszam
 | 
						|
        ,tao.C_ORAKEZDETE AS OraKezdete
 | 
						|
        ,tao.C_ORAVEGE AS OraVege
 | 
						|
        ,tao.C_ORASZAM AS Oraszam
 | 
						|
        ,ISNULL(tt.C_ROVIDNEV, tt.C_NEV) AS TargyNev
 | 
						|
        ,COALESCE(tt.C_ROVIDNEV, tt.C_NEV) AS TargyNevForMobile
 | 
						|
        ,tt.C_TARGYKATEGORIA AS TargykategoriaID
 | 
						|
        ,tao.C_MEGTARTOTT AS Megtartott
 | 
						|
        ,tao.C_CSENGETESIRENDORAID AS CsengetesiRendOraID
 | 
						|
        ,tao.C_CSENGETESIRENDID AS CsengetesiRendID
 | 
						|
        ,MAX(tao.C_ORASZAM) OVER() AS MaxNapiOraszam
 | 
						|
        ,oo.Nev AS OsztalyNev
 | 
						|
        ,tao.C_OSZTALYCSOPORTID AS TanevRendOsztalyCsoportId
 | 
						|
        ,'''' AS MegjelenesOka
 | 
						|
        ,tanar.C_NYOMTATASINEV AS TanarNev
 | 
						|
        ,terem.C_NEV AS TeremNev
 | 
						|
        ,terem.ID as TeremId
 | 
						|
        ,''TanitasiOra'' AS OraTipus
 | 
						|
        ,' + IIF(@pTanuloId IS NULL, N'''F''', N'IIF(mh.ID IS NULL, ''F'', ''T'')') + N' AS Hianyzas
 | 
						|
        ,' + IIF(@pTanuloId IS NULL, N'''F''', N'IIF(mk.ID IS NULL, ''F'', ''T'')') + N' AS Keses
 | 
						|
        ,' + IIF(@pTanuloId IS NULL, N'''F''', N'IIF(mu.ID IS NULL, ''F'', ''T'')') + N' AS Ures
 | 
						|
        ,helyettes.ID HelyettesitoTanarID
 | 
						|
        ,helyettes.C_NYOMTATASINEV HelyettesitoTanarNev
 | 
						|
        ,tanar.ID AS TanarID
 | 
						|
        ,tao.C_ADMINALTALKIIRT AS AdminAltalKiirt
 | 
						|
        ,tao.C_ORARENDIORAGROUPID AS GroupId
 | 
						|
        ,tao.C_TEMA AS Tema
 | 
						|
        ,tao.C_TANTARGYID AS TantargyId
 | 
						|
        ,tao.C_OSZTALYCSOPORTID AS OsztCsopId
 | 
						|
      FROM T_TANITASIORA_OSSZES tao
 | 
						|
        INNER JOIN #OsztalyCsoportok oo ON tao.C_OSZTALYCSOPORTID = oo.Id AND tao.C_DATUM >= oo.IdoszakKezdete AND tao.C_DATUM < oo.IdoszakVege
 | 
						|
        INNER JOIN T_TANTARGY_OSSZES tt ON tao.C_TANTARGYID = tt.ID
 | 
						|
        INNER JOIN T_FELHASZNALO_OSSZES tanar ON tao.C_TANARID = tanar.ID
 | 
						|
        LEFT  JOIN T_FELHASZNALO_OSSZES helyettes ON helyettes.ID = tao.C_HELYETTESITOTANARID
 | 
						|
        INNER JOIN T_TEREM_OSSZES terem ON terem.ID = tao.C_TEREMID
 | 
						|
      '
 | 
						|
      IF @pTanuloId IS NOT NULL BEGIN
 | 
						|
      SET @sql += N'
 | 
						|
        LEFT JOIN T_TANULOMULASZTAS_OSSZES mh ON mh.C_TANITASIORAKID = tao.ID AND mh.C_ORATANULOIID = @pTanuloId AND mh.C_TIPUS = 1500 AND mh.TOROLT = ''F''
 | 
						|
        LEFT JOIN T_TANULOMULASZTAS_OSSZES mk ON mk.C_TANITASIORAKID = tao.ID AND mk.C_ORATANULOIID = @pTanuloId AND mk.C_TIPUS = 1499 AND mk.TOROLT = ''F''
 | 
						|
        LEFT JOIN T_TANULOMULASZTAS_OSSZES mu ON mu.C_TANITASIORAKID = tao.ID AND mu.C_ORATANULOIID = @pTanuloId AND mu.C_TIPUS = 1817 AND mu.TOROLT = ''F''
 | 
						|
      '
 | 
						|
      END
 | 
						|
      SET @sql += N'
 | 
						|
      WHERE tao.TOROLT = ''F'' AND tao.C_TANEVID = @pTanevId
 | 
						|
        --AND tao.C_DATUM >= @pIdoszakKezdete AND tao.C_DATUM < @pIdoszakVege
 | 
						|
 | 
						|
        ' + CASE @pIsNapirend WHEN 1 THEN N'AND tao.C_CSENGETESIRENDID IS NULL ' WHEN 0 THEN 'AND tao.C_CSENGETESIRENDID IS NOT NULL ' ELSE '' END + '
 | 
						|
        ' + IIF(@pTanarId IS NULL, N'', IIF(@pIsHelyettesitesNelkul = 0, 'AND (tao.C_TANARID = @pTanarId OR tao.C_HELYETTESITOTANARID = @pTanarId)', 'AND tao.C_TANARID = @pTanarId')) + '
 | 
						|
        ' + IIF(@pTantargyId IS NULL, N'', 'AND tao.C_TANTARGYID = @pTantargyId') + '
 | 
						|
        ' + IIF(@pTeremId IS NULL, N'', 'AND tao.C_TEREMID = @pTeremId') + '
 | 
						|
 | 
						|
    ) tn ON tn.Datum = oo.Datum
 | 
						|
        AND tn.HetNapja = oo.HetNapja
 | 
						|
        ' + CASE @pIsNapirend WHEN 1 THEN N'AND tn.OraKezdete = oo.OraKezdete AND tn.OraVege = oo.OraVege ' WHEN 0 THEN N'AND tn.Oraszam = oo.Oraszam  ' ELSE N'AND ((tn.CsengetesiRendID IS NULL AND tn.OraKezdete = oo.OraKezdete AND tn.OraVege = oo.OraVege) OR (tn.CsengetesiRendID IS NOT NULL AND tn.Oraszam = oo.Oraszam)) ' END + '
 | 
						|
        AND tn.TanevRendOsztalyCsoportId = oo.TanevRendOsztalyCsoportId
 | 
						|
        AND tn.TantargyId = oo.TantargyId
 | 
						|
        AND tn.TanarID = oo.TanarID
 | 
						|
    '
 | 
						|
  END
 | 
						|
 | 
						|
  --SELECT @sql
 | 
						|
 | 
						|
  EXEC sp_executesql @sql, N'
 | 
						|
     @pIntezmenyId int
 | 
						|
    ,@pTanevId int
 | 
						|
    ,@pIdoszakKezdete datetime
 | 
						|
    ,@pIdoszakVege datetime
 | 
						|
    ,@pTanarId int
 | 
						|
    ,@pIsHelyettesitesNelkul bit
 | 
						|
    ,@pOsztalyCsoportId int
 | 
						|
    ,@pTanuloId int
 | 
						|
    ,@pTantargyId int
 | 
						|
    ,@pTeremId int
 | 
						|
    ,@pCsakOrarendiOrak bit
 | 
						|
    ,@pIsNapirend bit'
 | 
						|
    ,@pIntezmenyId = @pIntezmenyId
 | 
						|
    ,@pTanevId = @pTanevId
 | 
						|
    ,@pIdoszakKezdete = @pIdoszakKezdete
 | 
						|
    ,@pIdoszakVege = @pIdoszakVege
 | 
						|
    ,@pTanarId =   @pTanarId
 | 
						|
    ,@pIsHelyettesitesNelkul  = @pIsHelyettesitesNelkul
 | 
						|
    ,@pOsztalyCsoportId  =  @pOsztalyCsoportId
 | 
						|
    ,@pTanuloId  = @pTanuloId
 | 
						|
    ,@pTantargyId  = @pTantargyId
 | 
						|
    ,@pTeremId  = @pTeremId
 | 
						|
    ,@pCsakOrarendiOrak  = @pCsakOrarendiOrak
 | 
						|
    ,@pIsNapirend  = @pIsNapirend
 | 
						|
END
 | 
						|
GO
 |