204 lines
		
	
	
		
			7.7 KiB
		
	
	
	
		
			Transact-SQL
		
	
	
	
	
	
			
		
		
	
	
			204 lines
		
	
	
		
			7.7 KiB
		
	
	
	
		
			Transact-SQL
		
	
	
	
	
	
DROP PROCEDURE IF EXISTS sp_GetOraSorszamByOsztaly
 | 
						|
GO
 | 
						|
 | 
						|
CREATE PROCEDURE sp_GetOraSorszamByOsztaly
 | 
						|
   @osztalyCsoportId int
 | 
						|
  ,@datum date
 | 
						|
  ,@intezmenyId int
 | 
						|
  ,@tanevId int
 | 
						|
AS
 | 
						|
BEGIN
 | 
						|
  
 | 
						|
  SET NOCOUNT ON;
 | 
						|
  DECLARE 
 | 
						|
     @tanarSzamit bit
 | 
						|
    ,@osztalybontasEgybe bit
 | 
						|
    ,@osztalybontasCsoport bit
 | 
						|
    ,@osszerendelesId int 
 | 
						|
    ,@kezdoErtek int
 | 
						|
 | 
						|
  SET @tanarSzamit = dbo.fnGetRendszerbeallitasEnumBool(3075, @intezmenyId, @tanevId)  
 | 
						|
  SET @osztalybontasEgybe = dbo.fnGetRendszerbeallitasEnumBool(3078, @intezmenyId, @tanevId)
 | 
						|
  SET @osztalybontasCsoport = 0
 | 
						|
  
 | 
						|
  IF EXISTS (SELECT 1 FROM T_CSOPORT_OSSZES WHERE TOROLT='F' AND ((ID = @osztalyCsoportId AND C_OSZTALYBONTASID IS NOT NULL) OR C_OSZTALYBONTASID = @osztalyCsoportId)) 
 | 
						|
  BEGIN
 | 
						|
    SET @osztalybontasCsoport = 1
 | 
						|
  END
 | 
						|
  
 | 
						|
  IF (@osztalybontasEgybe = 1 AND @osztalybontasCsoport = 1)
 | 
						|
  BEGIN
 | 
						|
    CREATE TABLE #kapcsolodoOsztalyCsoportok (OsztalyCsoportId int)
 | 
						|
    INSERT INTO #kapcsolodoOsztalyCsoportok (OsztalyCsoportId)
 | 
						|
    SELECT cs.ID
 | 
						|
    FROM T_CSOPORT_OSSZES cs
 | 
						|
    WHERE cs.C_OSZTALYBONTASID = (SELECT scs.C_OSZTALYBONTASID FROM T_CSOPORT scs WHERE scs.ID = @osztalyCsoportId) AND cs.TOROLT='F'
 | 
						|
    UNION  
 | 
						|
    SELECT cs.C_OSZTALYBONTASID 
 | 
						|
    FROM T_CSOPORT_OSSZES cs
 | 
						|
    WHERE cs.ID = @osztalyCsoportId AND cs.TOROLT='F'
 | 
						|
    UNION
 | 
						|
    SELECT cs.ID
 | 
						|
    FROM T_CSOPORT_OSSZES cs
 | 
						|
    WHERE cs.C_OSZTALYBONTASID = @osztalyCsoportId AND cs.TOROLT='F'
 | 
						|
    UNION
 | 
						|
    SELECT @osztalyCsoportId
 | 
						|
  END
 | 
						|
 | 
						|
  SELECT 
 | 
						|
    @osszerendelesId = h.ID 
 | 
						|
  FROM T_ORASORSZAMOZASHALMAZ_OSSZES h
 | 
						|
    INNER JOIN T_ORASORSZAMOZASHALMAZOSSZEREN_OSSZES oh ON h.ID = oh.C_ORASORSZAMOZASHALMAZID
 | 
						|
      AND oh.C_OSZTALYCSOPORTID = @osztalycsoportId
 | 
						|
      AND oh.TOROLT='F'
 | 
						|
  WHERE h.TOROLT='F'
 | 
						|
  --Van összerendelés
 | 
						|
  IF @osszerendelesId IS NOT NULL BEGIN
 | 
						|
    SELECT 
 | 
						|
       @tanarSzamit = IIF(C_KOZOSORASORSZAMOZASELTEROTAN = 'T',1,0)
 | 
						|
      ,@kezdoErtek = ISNULL(C_KEZDOERTEK-1,0)
 | 
						|
    FROM T_ORASORSZAMOZASHALMAZ_OSSZES 
 | 
						|
    WHERE ID = @osszerendelesId AND TOROLT='F'
 | 
						|
    
 | 
						|
      IF @tanarSzamit = 1 BEGIN
 | 
						|
          SELECT 
 | 
						|
             ID
 | 
						|
            ,ROW_NUMBER() OVER(PARTITION BY C_TANARID,C_TANTARGYID ORDER BY C_ORAKEZDETE,C_NEV)+IIF(C_TANTARGYID = -1, @kezdoErtek, 0) OraSorszam
 | 
						|
          FROM(
 | 
						|
            SELECT
 | 
						|
               tao.ID
 | 
						|
              ,tao.C_ORAKEZDETE
 | 
						|
              ,tao.C_TANTARGYID
 | 
						|
              ,ocs.C_NEV
 | 
						|
              ,tao.C_TANARID
 | 
						|
            FROM T_TANITASIORA_OSSZES tao
 | 
						|
              INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.ID = tao.C_OSZTALYCSOPORTID AND ocs.TOROLT='F'
 | 
						|
            WHERE tao.C_OSZTALYCSOPORTID = @osztalyCsoportId
 | 
						|
              AND tao.C_DATUM <= @datum
 | 
						|
              AND tao.C_SORSZAMOZANDO = 'T'
 | 
						|
              AND tao.TOROLT='F'
 | 
						|
              AND tao.C_MEGTARTOTT = 'T'
 | 
						|
              AND NOT EXISTS (
 | 
						|
                SELECT 1 
 | 
						|
                FROM T_ORASORSZAMOZASHALMAZOSSZEREN_OSSZES
 | 
						|
                WHERE C_ORASORSZAMOZASHALMAZID = @osszerendelesId
 | 
						|
                  AND C_TANTARGYID = tao.C_TANTARGYID 
 | 
						|
                  AND C_OSZTALYCSOPORTID = tao.C_OSZTALYCSOPORTID
 | 
						|
                  AND TOROLT='F'
 | 
						|
                )
 | 
						|
            UNION ALL
 | 
						|
            SELECT
 | 
						|
               tao.ID
 | 
						|
              ,tao.C_ORAKEZDETE
 | 
						|
              ,-1 as C_TANTARGYID
 | 
						|
              ,ocs.C_NEV
 | 
						|
              ,tao.C_TANARID
 | 
						|
            FROM T_ORASORSZAMOZASHALMAZOSSZEREN_OSSZES oh
 | 
						|
              INNER JOIN T_TANITASIORA_OSSZES tao ON tao.C_TANTARGYID = oh.C_TANTARGYID AND tao.C_OSZTALYCSOPORTID = oh.C_OSZTALYCSOPORTID
 | 
						|
                AND tao.C_SORSZAMOZANDO = 'T' AND tao.C_MEGTARTOTT ='T' AND tao.TOROLT='F' AND tao.C_DATUM <= @datum
 | 
						|
              INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.TOROLT='F' AND ocs.ID = tao.C_OSZTALYCSOPORTID AND ocs.TOROLT='F'
 | 
						|
            WHERE oh.C_ORASORSZAMOZASHALMAZID = @osszerendelesId
 | 
						|
              AND oh.TOROLT='F'
 | 
						|
          ) MindenOra
 | 
						|
      END
 | 
						|
      ELSE BEGIN
 | 
						|
          SELECT 
 | 
						|
             ID
 | 
						|
            ,ROW_NUMBER() OVER(PARTITION BY C_TANTARGYID ORDER BY C_ORAKEZDETE,C_NEV)+IIF(C_TANTARGYID = -1, @kezdoErtek, 0) OraSorszam
 | 
						|
          FROM(
 | 
						|
            SELECT
 | 
						|
               tao.ID
 | 
						|
              ,tao.C_ORAKEZDETE
 | 
						|
              ,tao.C_TANTARGYID
 | 
						|
              ,ocs.C_NEV
 | 
						|
            FROM T_TANITASIORA_OSSZES tao
 | 
						|
              INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.ID = tao.C_OSZTALYCSOPORTID AND ocs.TOROLT='F'
 | 
						|
            WHERE tao.C_OSZTALYCSOPORTID = @osztalycsoportId 
 | 
						|
              AND tao.C_DATUM <= @datum
 | 
						|
              AND tao.C_SORSZAMOZANDO = 'T'
 | 
						|
              AND tao.C_MEGTARTOTT = 'T'
 | 
						|
              AND tao.TOROLT='F'
 | 
						|
              AND NOT EXISTS (
 | 
						|
                SELECT 1 
 | 
						|
                FROM T_ORASORSZAMOZASHALMAZOSSZEREN_OSSZES
 | 
						|
                WHERE C_ORASORSZAMOZASHALMAZID = @osszerendelesId
 | 
						|
                  AND C_TANTARGYID = tao.C_TANTARGYID 
 | 
						|
                  AND C_OSZTALYCSOPORTID = tao.C_OSZTALYCSOPORTID
 | 
						|
                  AND TOROLT='F'
 | 
						|
                )
 | 
						|
            UNION ALL
 | 
						|
            SELECT
 | 
						|
               tao.ID
 | 
						|
              ,tao.C_ORAKEZDETE
 | 
						|
              ,-1 as C_TANTARGYID
 | 
						|
              ,ocs.C_NEV
 | 
						|
            FROM T_ORASORSZAMOZASHALMAZOSSZEREN_OSSZES oh
 | 
						|
              INNER JOIN T_TANITASIORA_OSSZES tao ON tao.C_TANTARGYID = oh.C_TANTARGYID AND tao.C_OSZTALYCSOPORTID = oh.C_OSZTALYCSOPORTID
 | 
						|
                AND tao.C_SORSZAMOZANDO = 'T' AND tao.C_MEGTARTOTT ='T'  AND tao.TOROLT='F' AND tao.C_DATUM <= @datum
 | 
						|
              INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.TOROLT='F' AND ocs.ID = tao.C_OSZTALYCSOPORTID AND ocs.TOROLT='F'
 | 
						|
            WHERE oh.C_ORASORSZAMOZASHALMAZID = @osszerendelesId AND oh.TOROLT='F'
 | 
						|
          ) MindenOra
 | 
						|
    END
 | 
						|
  END
 | 
						|
  ELSE 
 | 
						|
  BEGIN
 | 
						|
    IF @osztalybontasEgybe = 0 OR @osztalybontasCsoport = 0 BEGIN
 | 
						|
      IF @tanarSzamit = 1 BEGIN
 | 
						|
	      SELECT
 | 
						|
           t.ID AS TanitasiOraId
 | 
						|
          ,ROW_NUMBER() OVER (PARTITION BY t.C_TANARID, t.C_TANTARGYID ORDER BY t.C_ORAKEZDETE, C_BEJEGYZESIDEJE) AS OraSorszam
 | 
						|
        FROM T_TANITASIORA_OSSZES t
 | 
						|
        WHERE t.C_MEGTARTOTT = 'T'
 | 
						|
          AND t.C_SORSZAMOZANDO = 'T'
 | 
						|
          AND t.C_DATUM <= @datum
 | 
						|
	      AND t.TOROLT = 'F'
 | 
						|
          AND t.C_INTEZMENYID = @intezmenyid
 | 
						|
          AND t.C_TANEVID = @tanevId
 | 
						|
          AND t.C_OSZTALYCSOPORTID = @osztalyCsoportId
 | 
						|
      END 
 | 
						|
      ELSE BEGIN
 | 
						|
        SELECT 
 | 
						|
           t.ID AS TanitasiOraId
 | 
						|
          ,ROW_NUMBER() OVER (PARTITION BY t.C_TANTARGYID ORDER BY C_ORAKEZDETE, C_BEJEGYZESIDEJE) AS OraSorszam
 | 
						|
        FROM T_TANITASIORA_OSSZES t
 | 
						|
        WHERE t.C_MEGTARTOTT = 'T' 
 | 
						|
          AND t.C_SORSZAMOZANDO = 'T'
 | 
						|
          AND t.C_OSZTALYCSOPORTID = @osztalyCsoportId
 | 
						|
          AND t.C_DATUM <= @datum    
 | 
						|
          AND t.TOROLT = 'F'
 | 
						|
          AND t.C_INTEZMENYID = @intezmenyid
 | 
						|
          AND t.C_TANEVID = @tanevId
 | 
						|
      END
 | 
						|
    END 
 | 
						|
    ELSE BEGIN
 | 
						|
      IF @tanarSzamit = 1 BEGIN
 | 
						|
        SELECT 
 | 
						|
           t.ID AS TanitasiOraId
 | 
						|
          ,ROW_NUMBER() OVER (PARTITION BY t.C_TANTARGYID,t.C_TANARID ORDER BY C_ORAKEZDETE, C_BEJEGYZESIDEJE) AS OraSorszam
 | 
						|
        FROM T_TANITASIORA_OSSZES t
 | 
						|
        WHERE t.C_OSZTALYCSOPORTID IN (SELECT ID FROM #kapcsolodoOsztalyCsoportok)
 | 
						|
          AND t.C_DATUM <= @datum
 | 
						|
          AND t.C_SORSZAMOZANDO = 'T'
 | 
						|
          AND t.C_MEGTARTOTT = 'T'
 | 
						|
	        AND t.TOROLT = 'F'
 | 
						|
          AND t.C_INTEZMENYID = @intezmenyid
 | 
						|
          AND t.C_TANEVID = @tanevId
 | 
						|
      END
 | 
						|
      ELSE BEGIN
 | 
						|
        SELECT 
 | 
						|
           t.ID AS TanitasiOraId
 | 
						|
          ,ROW_NUMBER() OVER (PARTITION BY t.C_TANTARGYID ORDER BY C_ORAKEZDETE, C_BEJEGYZESIDEJE) AS OraSorszam
 | 
						|
        FROM T_TANITASIORA_OSSZES t
 | 
						|
        WHERE t.C_OSZTALYCSOPORTID IN (SELECT ID FROM #kapcsolodoOsztalyCsoportok)
 | 
						|
          AND t.C_DATUM <= @datum
 | 
						|
          AND t.C_SORSZAMOZANDO = 'T'
 | 
						|
          AND t.C_MEGTARTOTT = 'T'
 | 
						|
	        AND t.TOROLT = 'F'
 | 
						|
          AND t.C_INTEZMENYID = @intezmenyid
 | 
						|
          AND t.C_TANEVID = @tanevId
 | 
						|
      END
 | 
						|
    END
 | 
						|
  END
 | 
						|
END
 | 
						|
GO
 |