443 lines
		
	
	
		
			16 KiB
		
	
	
	
		
			Transact-SQL
		
	
	
	
	
	
			
		
		
	
	
			443 lines
		
	
	
		
			16 KiB
		
	
	
	
		
			Transact-SQL
		
	
	
	
	
	
IF OBJECT_ID('sp_ImportTantargyFelosztas', 'P') IS NOT NULL BEGIN
 | 
						|
  DROP PROCEDURE sp_ImportTantargyFelosztas
 | 
						|
END
 | 
						|
GO
 | 
						|
 | 
						|
CREATE PROCEDURE sp_ImportTantargyFelosztas
 | 
						|
   @importXml xml,
 | 
						|
   @tanevId int,
 | 
						|
   @feladatellatasiHelyId int,
 | 
						|
   @intezmenyId int,
 | 
						|
   @userId int
 | 
						|
AS
 | 
						|
BEGIN
 | 
						|
  
 | 
						|
  SET NOCOUNT ON;
 | 
						|
	SET XACT_ABORT ON;
 | 
						|
  
 | 
						|
  DECLARE
 | 
						|
    @root int
 | 
						|
  
 | 
						|
  DECLARE @tbl TABLE (
 | 
						|
    osztalyID int,
 | 
						|
    osztalyNev nvarchar(255),
 | 
						|
    csoportID int,
 | 
						|
    csoportNev nvarchar(255),
 | 
						|
    tantargyID int,
 | 
						|
    tantargyNev nvarchar(255),
 | 
						|
    oraszam float,
 | 
						|
    tanarID int,
 | 
						|
    tanarNev nvarchar(255),
 | 
						|
    szulDatum datetime,
 | 
						|
    foglalkozasID int,
 | 
						|
	  existItemId int
 | 
						|
  ) 
 | 
						|
  
 | 
						|
  SET @root = @importXml.exist('/TantargyfelosztasImport')
 | 
						|
  
 | 
						|
  --SELECT @importXml;
 | 
						|
  
 | 
						|
  IF @root = 1 BEGIN
 | 
						|
    INSERT INTO @tbl
 | 
						|
    SELECT 
 | 
						|
      NULL AS osztalyID,
 | 
						|
      sor.value('(osztaly)[1]', 'nvarchar(255)') AS osztalyNev,
 | 
						|
      NULL AS csoportID,
 | 
						|
      sor.value('(csoport)[1]', 'nvarchar(255)') AS csoportNev,
 | 
						|
      NULL AS tantargyID,
 | 
						|
      sor.value('(tantargy)[1]', 'nvarchar(255)') AS tantargyNev,
 | 
						|
      sor.value('(oraszam)[1]', 'float') AS oraszam,
 | 
						|
      NULL AS tanarID,
 | 
						|
      sor.value('(tanar)[1]', 'nvarchar(255)') AS tanarNev,
 | 
						|
      sor.value('(szuldatum)[1]', 'varchar(10)')AS szulDatum,
 | 
						|
      NULL AS foglalkozasID,
 | 
						|
	  sor.value('(existItemId)[1]', 'int') AS existItemId
 | 
						|
  	FROM @importXml.nodes('/TantargyfelosztasImport/TantargyfelosztasLista/Tantargyfelosztas') as sorok(sor)
 | 
						|
  END
 | 
						|
  ELSE BEGIN
 | 
						|
    INSERT INTO @tbl
 | 
						|
    SELECT 
 | 
						|
      NULL AS osztalyID,
 | 
						|
      sor.value('(osztaly)[1]', 'nvarchar(255)') AS osztalyNev,
 | 
						|
      NULL AS csoportID,
 | 
						|
      sor.value('(csoport)[1]', 'nvarchar(255)') AS csoportNev,
 | 
						|
      NULL AS tantargyID,
 | 
						|
      sor.value('(tantargy)[1]', 'nvarchar(255)') AS tantargyNev,
 | 
						|
      sor.value('(oraszam)[1]', 'float') AS oraszam,
 | 
						|
      NULL AS tanarID,
 | 
						|
      sor.value('(tanar)[1]', 'nvarchar(255)') AS tanarNev,
 | 
						|
      sor.value('(szuldatum)[1]', 'varchar(10)')AS szulDatum,
 | 
						|
      NULL AS foglalkozasID,
 | 
						|
	  sor.value('(existItemId)[1]', 'int') AS existItemId
 | 
						|
  	FROM @importXml.nodes('/TantargyfelosztasLista/Tantargyfelosztas') as sorok(sor)    
 | 
						|
  END
 | 
						|
  
 | 
						|
  BEGIN TRY 
 | 
						|
    BEGIN TRAN
 | 
						|
	
 | 
						|
 | 
						|
    UPDATE t
 | 
						|
    SET t.C_IMPORTALT = 'T' 
 | 
						|
    FROM T_TANTARGY_OSSZES AS t
 | 
						|
      INNER JOIN T_FOGLALKOZAS_OSSZES  fo ON t.ID = fo.C_TANTARGYID AND fo.C_TANEVID = t.C_TANEVID
 | 
						|
    WHERE fo.ID IN (SELECT existItemId FROM @tbl WHERE existItemId <> 0)
 | 
						|
      AND t.C_TANEVID = @tanevId
 | 
						|
 | 
						|
 | 
						|
    UPDATE  ocs
 | 
						|
    SET ocs.C_IMPORTALT = 'T' 
 | 
						|
    FROM T_OSZTALYCSOPORT_OSSZES AS ocs
 | 
						|
      INNER JOIN T_FOGLALKOZAS_OSSZES  fo ON ocs.ID = fo.C_OSZTALYCSOPORTID AND ocs.C_TANEVID = fo.C_TANEVID
 | 
						|
      INNER JOIN T_TANTARGY_OSSZES t ON  t.ID = fo.C_TANTARGYID AND t.C_TANEVID = fo.C_TANEVID
 | 
						|
    WHERE fo.ID IN (SELECT existItemId FROM @tbl WHERE existItemId <> 0)
 | 
						|
      AND ocs.C_TANEVID = @tanevId
 | 
						|
 | 
						|
    UPDATE fo
 | 
						|
    SET fo.C_IMPORTALT = 'T' 
 | 
						|
    FROM T_FOGLALKOZAS_OSSZES AS fo
 | 
						|
    where fo.ID IN (SELECT existItemId FROM @tbl WHERE existItemId <> 0)
 | 
						|
      AND fo.C_TANEVID = @tanevId
 | 
						|
 | 
						|
 | 
						|
    /*TÖRÖLJÜK AZ IMPORTÁLTakat*/
 | 
						|
    EXEC sp_DeleteAllTTF @feladatellatasiHelyId = @feladatellatasiHelyId, @tanevId = @tanevId
 | 
						|
      
 | 
						|
    UPDATE f 
 | 
						|
    SET  
 | 
						|
       f.C_ORASZAM = temp.oraszam
 | 
						|
		  ,f.C_IMPORTALT = 'T'
 | 
						|
		  ,f.SERIAL += 1
 | 
						|
		  ,f.LASTCHANGED = GETDATE()
 | 
						|
		  ,f.MODIFIER = @userId
 | 
						|
    FROM T_FOGLALKOZAS_OSSZES f
 | 
						|
		  INNER JOIN @tbl temp ON f.C_NEV = temp.tantargyNev + ' - ' + ISNULL(temp.csoportNev, temp.osztalyNev) + ' - ' + temp.tanarNev
 | 
						|
    WHERE f.C_INTEZMENYID = @intezmenyId
 | 
						|
		  AND f.C_TANEVID = @tanevId
 | 
						|
		  AND f.TOROLT = 'F'
 | 
						|
 | 
						|
 | 
						|
    UPDATE o
 | 
						|
    SET o.tanarID = fh.ID
 | 
						|
    FROM @tbl o
 | 
						|
      INNER JOIN T_FELHASZNALO_OSSZES fh ON fh.C_NYOMTATASINEV = o.tanarNev AND fh.C_SZULETESIDATUM = ISNULL(o.szulDatum, fh.C_SZULETESIDATUM)
 | 
						|
      INNER JOIN T_ALKALMAZOTT_OSSZES a ON fh.ID = a.ID
 | 
						|
    WHERE fh.C_TANEVID = @tanevId
 | 
						|
 | 
						|
 | 
						|
      
 | 
						|
      /*töltjük a tantárgyakat*/
 | 
						|
      INSERT INTO T_TANTARGY_OSSZES (
 | 
						|
         C_GYAKORLATI
 | 
						|
        ,C_NEV
 | 
						|
        ,C_ROVIDNEV
 | 
						|
        ,C_TARGYKATEGORIA
 | 
						|
        ,C_ALTANTARGYKENTNYOMTATVANYBAN
 | 
						|
        ,C_NEVNYOMTATVANYBAN
 | 
						|
        ,C_TANORANKIVULI
 | 
						|
        ,C_FOTARGYID
 | 
						|
  	    ,C_INTEZMENYID
 | 
						|
        ,C_TANEVID
 | 
						|
        ,TOROLT
 | 
						|
        ,SERIAL
 | 
						|
        ,LASTCHANGED
 | 
						|
        ,CREATED
 | 
						|
        ,MODIFIER
 | 
						|
        ,CREATOR
 | 
						|
        ,C_IMPORTALT
 | 
						|
      ) SELECT DISTINCT 
 | 
						|
         'F' AS C_GYAKORLATI           -- C_GYAKORLATI - char(1)
 | 
						|
        ,o.tantargyNev AS C_NEV                   -- C_NEV - nvarchar(255)
 | 
						|
        ,LEFT(o.tantargyNev, 20) AS C_ROVIDNEV              -- C_ROVIDNEV - nvarchar(20)
 | 
						|
        ,1197   AS C_TARGYKATEGORIA /*Na*/       -- C_TARGYKATEGORIA - int 
 | 
						|
        ,NULL AS C_ALTANTARGYKENTNYOMTATVANYBAN -- C_ALTANTARGYKENTNYOMTATVANYBAN - char(1)
 | 
						|
        ,NULL AS C_NEVNYOMTATVANYBAN    -- C_NEVNYOMTATVANYBAN - nvarchar(255)
 | 
						|
        ,'F' AS C_TANORANKIVULI        -- C_TANORANKIVULI - char(1)
 | 
						|
        ,NULL AS C_FOTARGYID            -- C_FOTARGYID - int
 | 
						|
  	    ,@intezmenyId AS C_INTEZMENYID
 | 
						|
  	    ,@tanevId AS C_TANEVID
 | 
						|
        ,'F' AS TOROLT                 -- TOROLT - char(1)
 | 
						|
        ,0 AS SERIAL                 -- SERIAL - int
 | 
						|
        ,NULL AS LASTCHANGED            -- LASTCHANGED - datetime
 | 
						|
        ,GETDATE() AS CREATED                -- CREATED - datetime
 | 
						|
        ,NULL AS MODIFIER               -- MODIFIER - int
 | 
						|
        ,@userId AS CREATOR                -- CREATOR - int
 | 
						|
        ,'T' AS C_IMPORTALT    -- C_IMPORTALT char(1)
 | 
						|
      FROM @tbl o
 | 
						|
        WHERE NOT EXISTS (SELECT 1 FROM T_TANTARGY_OSSZES WHERE C_NEV = o.tantargyNev AND C_TANEVID = @tanevId AND TOROLT = 'F')
 | 
						|
        
 | 
						|
      UPDATE o
 | 
						|
      SET o.tantargyID = t.ID
 | 
						|
      FROM @tbl o
 | 
						|
        INNER JOIN T_TANTARGY_OSSZES t ON t.C_NEV = o.tantargyNev AND t.C_TANEVID = @tanevId AND t.TOROLT = 'F'
 | 
						|
 | 
						|
       
 | 
						|
      
 | 
						|
      /* OSZTÁLY */
 | 
						|
      INSERT INTO T_OSZTALYCSOPORT_OSSZES (
 | 
						|
         C_MEGJEGYZES
 | 
						|
        ,C_NEV
 | 
						|
        ,C_VEGZOSEVFOLYAM
 | 
						|
        ,C_EVFOLYAMTIPUSA
 | 
						|
        ,C_TANEVID
 | 
						|
        ,C_TEREMID
 | 
						|
        ,C_FELADATELLATASIHELYID
 | 
						|
  	    ,C_INTEZMENYID
 | 
						|
        ,TOROLT
 | 
						|
        ,SERIAL
 | 
						|
        ,LASTCHANGED
 | 
						|
        ,CREATED
 | 
						|
        ,MODIFIER
 | 
						|
        ,CREATOR
 | 
						|
        ,C_IMPORTALT
 | 
						|
      ) SELECT DISTINCT
 | 
						|
         NULL AS C_MEGJEGYZES           -- C_MEGJEGYZES - nvarchar(255)
 | 
						|
        ,o.osztalyNev AS C_NEV                   -- C_NEV - nvarchar(255)
 | 
						|
        ,'F' AS C_VEGZOSEVFOLYAM       -- C_VEGZOSEVFOLYAM - char(1)
 | 
						|
        ,1296 AS C_EVFOLYAMTIPUSA       -- C_EVFOLYAMTIPUSA - int
 | 
						|
        ,@tanevId   AS C_TANEVID               -- C_TANEVID - int
 | 
						|
        ,NULL AS C_TEREMID              -- C_TEREMID - int
 | 
						|
        ,@feladatellatasiHelyId   AS C_FELADATELLATASIHELYID -- C_FELADATELLATASIHELYID - int
 | 
						|
        ,@intezmenyId AS C_INTEZMENYID
 | 
						|
        ,'F' AS TOROLT                 -- TOROLT - char(1)
 | 
						|
        ,0 AS SERIAL                 -- SERIAL - int
 | 
						|
        ,NULL AS LASTCHANGED            -- LASTCHANGED - datetime
 | 
						|
        ,GETDATE() AS CREATED                -- CREATED - datetime
 | 
						|
        ,NULL AS MODIFIER               -- MODIFIER - int
 | 
						|
        ,@userId AS CREATOR                -- CREATOR - int
 | 
						|
        ,'T' AS C_IMPORTALT    -- C_IMPORTALT char(1)
 | 
						|
      FROM @tbl o
 | 
						|
      WHERE NOT EXISTS (SELECT 1 FROM T_OSZTALYCSOPORT_OSSZES WHERE C_NEV = o.osztalyNev AND C_TANEVID = @tanevId AND TOROLT = 'F')
 | 
						|
        AND o.OsztalyNev IS NOT NULL AND o.OsztalyNev <> ''
 | 
						|
      
 | 
						|
      UPDATE o
 | 
						|
      SET o.osztalyID = t.ID
 | 
						|
      FROM @tbl o
 | 
						|
        INNER JOIN T_OSZTALYCSOPORT_OSSZES t ON t.C_NEV = o.osztalyNev AND C_TANEVID = @tanevId AND TOROLT = 'F'
 | 
						|
      
 | 
						|
      INSERT INTO T_OSZTALY_OSSZES (
 | 
						|
         ID
 | 
						|
        ,C_KEPZESIFORMA
 | 
						|
        ,C_OSZTALYFONOKID
 | 
						|
        ,C_OFOHELYETTESID
 | 
						|
        ,C_TANTERVID
 | 
						|
  	    ,C_ALINTEZMENYID
 | 
						|
  	    ,C_ALTANEVID
 | 
						|
        ,TOROLT
 | 
						|
        ,SERIAL
 | 
						|
        ,LASTCHANGED
 | 
						|
        ,CREATED
 | 
						|
        ,MODIFIER
 | 
						|
        ,CREATOR
 | 
						|
      ) SELECT DISTINCT
 | 
						|
         o.osztalyID   AS ID                      -- ID - int
 | 
						|
        ,1096   AS C_KEPZESIFORMA  /*Nappali rendszerű iskolai oktatás*/         -- C_KEPZESIFORMA - int
 | 
						|
        ,NULL AS C_OSZTALYFONOKID       -- C_OSZTALYFONOKID - int
 | 
						|
        ,NULL AS C_OFOHELYETTESID       -- C_OFOHELYETTESID - int
 | 
						|
        ,NULL AS C_TANTERVID            -- C_TANTERVID - int
 | 
						|
  	    ,@intezmenyId 
 | 
						|
  	    ,@tanevId
 | 
						|
        ,'F' AS TOROLT                 -- TOROLT - char(1)
 | 
						|
        ,0 AS SERIAL                 -- SERIAL - int
 | 
						|
        ,NULL AS LASTCHANGED            -- LASTCHANGED - datetime
 | 
						|
        ,GETDATE() AS CREATED                -- CREATED - datetime
 | 
						|
        ,NULL AS MODIFIER               -- MODIFIER - int
 | 
						|
        ,@userId AS CREATOR                -- CREATOR - int
 | 
						|
      FROM @tbl o
 | 
						|
      WHERE NOT EXISTS (SELECT 1 FROM T_OSZTALY_OSSZES WHERE ID = o.osztalyID AND C_ALTANEVID = @tanevId)
 | 
						|
        AND o.osztalyID IS NOT NULL
 | 
						|
      
 | 
						|
      INSERT INTO T_OSZTALYCSOPORT_OSSZES (
 | 
						|
         C_MEGJEGYZES
 | 
						|
        ,C_NEV
 | 
						|
        ,C_VEGZOSEVFOLYAM
 | 
						|
        ,C_EVFOLYAMTIPUSA
 | 
						|
        ,C_TANEVID
 | 
						|
        ,C_TEREMID
 | 
						|
        ,C_FELADATELLATASIHELYID
 | 
						|
  	    ,C_INTEZMENYID
 | 
						|
        ,TOROLT
 | 
						|
        ,SERIAL
 | 
						|
        ,LASTCHANGED
 | 
						|
        ,CREATED
 | 
						|
        ,MODIFIER
 | 
						|
        ,CREATOR
 | 
						|
        ,C_IMPORTALT
 | 
						|
      ) SELECT DISTINCT
 | 
						|
         NULL AS C_MEGJEGYZES           -- C_MEGJEGYZES - nvarchar(255)
 | 
						|
        ,IIF(o.csoportNev IS NULL, o.osztalyNev, o.csoportNev) AS C_NEV                   -- C_NEV - nvarchar(255)
 | 
						|
        ,'F' AS C_VEGZOSEVFOLYAM       -- C_VEGZOSEVFOLYAM - char(1)
 | 
						|
        ,1296 AS C_EVFOLYAMTIPUSA       -- C_EVFOLYAMTIPUSA - int Default(NA)
 | 
						|
        ,@tanevId   AS C_TANEVID               -- C_TANEVID - int
 | 
						|
        ,NULL AS C_TEREMID              -- C_TEREMID - int
 | 
						|
        ,@feladatellatasiHelyId   AS C_FELADATELLATASIHELYID -- C_FELADATELLATASIHELYID - int
 | 
						|
  	    ,@intezmenyId AS C_INTEZMENYID
 | 
						|
        ,'F' AS TOROLT                 -- TOROLT - char(1)
 | 
						|
        ,0 AS SERIAL                 -- SERIAL - int
 | 
						|
        ,NULL AS LASTCHANGED            -- LASTCHANGED - datetime
 | 
						|
        ,GETDATE() AS CREATED                -- CREATED - datetime
 | 
						|
        ,NULL AS MODIFIER               -- MODIFIER - int
 | 
						|
        ,@userId AS CREATOR                -- CREATOR - int
 | 
						|
        ,'T' AS C_IMPORTALT    -- C_IMPORTALT char(1)
 | 
						|
      FROM @tbl o
 | 
						|
        WHERE NOT EXISTS (SELECT 1 FROM T_OSZTALYCSOPORT_OSSZES WHERE C_NEV = o.csoportNev AND C_TANEVID = @tanevId AND TOROLT = 'F')
 | 
						|
        AND o.csoportNev IS NOT NULL AND o.csoportNev <> ''
 | 
						|
              
 | 
						|
      UPDATE o
 | 
						|
      SET o.csoportID = t.ID
 | 
						|
      FROM @tbl o
 | 
						|
        INNER JOIN T_OSZTALYCSOPORT_OSSZES t ON t.C_NEV = o.csoportNev AND C_TANEVID = @tanevId AND TOROLT = 'F' 
 | 
						|
      
 | 
						|
      INSERT INTO T_CSOPORT_OSSZES (
 | 
						|
         ID
 | 
						|
        ,C_TIPUSA
 | 
						|
        ,C_CSOPORTNAPLOLEIRAS
 | 
						|
        ,C_CSOPORTNAPLOMEGNYITASA
 | 
						|
        ,C_CSOPORTNAPLOZARASA
 | 
						|
        ,C_CSOPORTVEZETOID
 | 
						|
        ,C_KIZAROCSOPORTID
 | 
						|
        ,C_OSZTALYBONTASID
 | 
						|
  	    ,C_ALINTEZMENYID
 | 
						|
  	    ,C_ALTANEVID
 | 
						|
        ,TOROLT
 | 
						|
        ,SERIAL
 | 
						|
        ,LASTCHANGED
 | 
						|
        ,CREATED
 | 
						|
        ,MODIFIER
 | 
						|
        ,CREATOR
 | 
						|
      ) SELECT DISTINCT
 | 
						|
         o.csoportID   AS ID                      -- ID - int
 | 
						|
        ,1031 AS C_TIPUSA  /*Na*/             -- C_TIPUSA - int
 | 
						|
        ,NULL AS C_CSOPORTNAPLOLEIRAS             -- C_CSOPORTNAPLOLEIRAS - nvarchar(MAX)
 | 
						|
        ,NULL AS C_CSOPORTNAPLOMEGNYITASA         -- C_CSOPORTNAPLOMEGNYITASA - datetime
 | 
						|
        ,NULL AS C_CSOPORTNAPLOZARASA             -- C_CSOPORTNAPLOZARASA - datetime
 | 
						|
        ,NULL AS C_CSOPORTVEZETOID                -- C_CSOPORTVEZETOID - int
 | 
						|
        ,NULL AS C_KIZAROCSOPORTID                -- C_KIZAROCSOPORTID - int
 | 
						|
        ,IIF(o.osztalyNev IS NULL, NULL, o.osztalyId)  AS C_OSZTALYBONTASID         -- C_OSZTALYBONTASID - int
 | 
						|
  	    ,@intezmenyId 
 | 
						|
  	    ,@tanevId
 | 
						|
        ,'F' AS TOROLT                 -- TOROLT - char(1)
 | 
						|
        ,0 AS SERIAL                 -- SERIAL - int
 | 
						|
        ,NULL AS LASTCHANGED            -- LASTCHANGED - datetime
 | 
						|
        ,GETDATE() AS CREATED                -- CREATED - datetime
 | 
						|
        ,NULL AS MODIFIER               -- MODIFIER - int
 | 
						|
        ,@userId AS CREATOR                -- CREATOR - int
 | 
						|
      FROM @tbl o
 | 
						|
      WHERE NOT EXISTS (SELECT 1 FROM T_CSOPORT_OSSZES WHERE ID = o.csoportID AND C_ALTANEVID = @tanevId)
 | 
						|
        AND o.csoportID IS NOT NULL
 | 
						|
 | 
						|
      DECLARE @linkTable TABLE (
 | 
						|
        id int, 
 | 
						|
        osztalyCsoportId int, 
 | 
						|
        tantargyID int, 
 | 
						|
        tanarID int
 | 
						|
      );
 | 
						|
      
 | 
						|
      MERGE T_FOGLALKOZAS_OSSZES trg
 | 
						|
        USING (SELECT ISNULL(o.csoportID, o.osztalyID) osztalyCsoportId, o.tantargyID, o.tanarID, SUM(o.oraszam) oraszam,
 | 
						|
          MAX(o.tantargyNev) + ' - ' + MAX(ISNULL(o.csoportNev, o.osztalyNev)) + ' - ' + MAX(o.tanarNev) as foglalkozasNev
 | 
						|
          FROM @tbl o
 | 
						|
          WHERE NOT EXISTS (
 | 
						|
            SELECT 1 FROM T_FOGLALKOZAS_OSSZES f 
 | 
						|
              INNER JOIN T_FOGLALKOZASOK_TANAROK ft ON f.ID = ft.C_FOGLALKOZASOKID
 | 
						|
            WHERE f.C_TANTARGYID = o.tantargyID 
 | 
						|
              AND f.C_OSZTALYCSOPORTID = o.csoportID
 | 
						|
              AND ft.C_TANAROKID = o.tanarID 
 | 
						|
              AND f.C_TANEVID = @tanevId
 | 
						|
          )
 | 
						|
          GROUP BY ISNULL(o.csoportID, o.osztalyID), o.tantargyID, o.tanarID
 | 
						|
        ) src ON 1 = 0
 | 
						|
        WHEN NOT MATCHED THEN
 | 
						|
          INSERT (
 | 
						|
             C_FOGLALKOZASTIPUSA
 | 
						|
            ,C_ORASZAM
 | 
						|
            ,C_NEV
 | 
						|
            ,C_ERTEKELESKELL
 | 
						|
            ,C_MULASZTASKELL
 | 
						|
            ,C_TANARFELVEHETI
 | 
						|
            ,C_TANTARGYID
 | 
						|
            ,C_OSZTALYCSOPORTID
 | 
						|
      	    ,C_INTEZMENYID
 | 
						|
            ,C_TANEVID
 | 
						|
            ,TOROLT
 | 
						|
            ,SERIAL
 | 
						|
            ,LASTCHANGED
 | 
						|
            ,CREATED
 | 
						|
            ,MODIFIER
 | 
						|
            ,CREATOR
 | 
						|
            ,C_IMPORTALT
 | 
						|
          ) VALUES(
 | 
						|
             --IIF (src.osztalyCsoportId IS NOT NULL, 1368 /*Tanóra (osztálybontásos)*/, 1339/*Tanóra*/)  /*Na*/    -- C_FOGLALKOZASTIPUSA - int
 | 
						|
			       IIF  (EXISTS(select 1 from T_CSOPORT cs where cs.ID = src.osztalyCsoportId), 1368 /*Tanóra (osztálybontásos)*/, 1339/*Tanóra*/)  /*Na*/    -- C_FOGLALKOZASTIPUSA - int
 | 
						|
            ,src.oraszam                  -- C_ORASZAM - int
 | 
						|
            ,src.foglalkozasNev                    -- C_NEV - nvarchar(255)
 | 
						|
            ,'T'         -- C_ERTEKELESKELL - char(1)
 | 
						|
            ,'T'         -- C_MULASZTASKELL - char(1)
 | 
						|
            ,'T'        -- C_TANARFELVEHETI - char(1)
 | 
						|
            ,src.tantargyID            -- C_TANTARGYID - int
 | 
						|
            ,src.osztalyCsoportId      -- C_OSZTALYCSOPORTID - int
 | 
						|
      	    ,@intezmenyId   
 | 
						|
            ,@tanevId                  -- C_TANEVID - int
 | 
						|
            ,'F'                  -- TOROLT - char(1)
 | 
						|
            ,0                   -- SERIAL - int
 | 
						|
            ,NULL              -- LASTCHANGED - datetime
 | 
						|
            ,GETDATE()                  -- CREATED - datetime
 | 
						|
            ,NULL                 -- MODIFIER - int
 | 
						|
            ,@userId                 -- CREATOR - int
 | 
						|
            ,'T'     -- C_IMPORTALT char(1)
 | 
						|
          )
 | 
						|
        OUTPUT INSERTED.ID, src.osztalyCsoportId, src.tantargyID, src.tanarID
 | 
						|
          INTO @linkTable(id, osztalyCsoportId, tantargyID, tanarID);
 | 
						|
      
 | 
						|
      /*csoport - osztaly*/
 | 
						|
      UPDATE o
 | 
						|
        SET o.foglalkozasID = f.id
 | 
						|
      FROM @tbl o
 | 
						|
      INNER JOIN @linkTable f ON f.osztalyCsoportId = ISNULL(o.csoportID, o.osztalyID) AND f.tantargyID = o.tantargyID AND f.tanarID = o.tanarID
 | 
						|
      WHERE o.foglalkozasID IS NULL
 | 
						|
      
 | 
						|
      /*osztaly*/
 | 
						|
      UPDATE o
 | 
						|
        SET o.foglalkozasID = f.id
 | 
						|
      FROM @tbl o
 | 
						|
        INNER JOIN @linkTable f ON f.osztalyCsoportId = o.osztalyID AND f.tantargyID = o.tantargyID AND f.tanarID = o.tanarID
 | 
						|
      WHERE o.foglalkozasID IS NULL
 | 
						|
        
 | 
						|
      /*csoport - osztaly*/
 | 
						|
      UPDATE o
 | 
						|
        SET o.foglalkozasID = f.id
 | 
						|
      FROM @tbl o
 | 
						|
        INNER JOIN T_FOGLALKOZAS_OSSZES f ON f.C_TANTARGYID = o.tantargyID AND f.C_OSZTALYCSOPORTID = ISNULL(o.csoportID, o.osztalyID)
 | 
						|
      WHERE o.foglalkozasID IS NULL
 | 
						|
        AND NOT EXISTS (SELECT 1 FROM T_FOGLALKOZASOK_TANAROK ft WHERE ft.C_FOGLALKOZASOKID = o.foglalkozasID) 
 | 
						|
        AND f.C_TANEVID = @tanevId
 | 
						|
      
 | 
						|
      /*osztaly*/
 | 
						|
      UPDATE o
 | 
						|
        SET o.foglalkozasID = f.id
 | 
						|
      FROM @tbl o
 | 
						|
        INNER JOIN T_FOGLALKOZAS_OSSZES f ON f.C_TANTARGYID = o.tantargyID AND f.C_OSZTALYCSOPORTID = o.osztalyID
 | 
						|
      WHERE o.foglalkozasID IS NULL
 | 
						|
        AND NOT EXISTS (SELECT 1 FROM T_FOGLALKOZASOK_TANAROK ft WHERE ft.C_FOGLALKOZASOKID = o.foglalkozasID) 
 | 
						|
        AND f.C_TANEVID = @tanevId
 | 
						|
                
 | 
						|
      INSERT INTO T_FOGLALKOZASOK_TANAROK (
 | 
						|
         C_FOGLALKOZASOKID
 | 
						|
        ,C_TANAROKID
 | 
						|
      ) SELECT DISTINCT 
 | 
						|
         o.foglalkozasID AS C_FOGLALKOZASOKID       -- C_FOGLALKOZASOKID - int
 | 
						|
        ,o.tanarID   AS C_TANAROKID             -- C_TANAROKID - int
 | 
						|
      FROM @tbl o
 | 
						|
      WHERE NOT EXISTS (SELECT 1 FROM T_FOGLALKOZASOK_TANAROK WHERE C_FOGLALKOZASOKID = o.foglalkozasID AND C_TANAROKID = o.tanarID)
 | 
						|
        
 | 
						|
 | 
						|
    COMMIT TRANSACTION
 | 
						|
  END TRY
 | 
						|
  BEGIN CATCH
 | 
						|
    IF @@TRANCOUNT > 0 
 | 
						|
      ROLLBACK TRAN;
 | 
						|
    THROW
 | 
						|
  END CATCH
 | 
						|
 | 
						|
END
 | 
						|
 |