﻿DROP PROCEDURE IF EXISTS dbo.sp_AktivTanevValtasa
GO

CREATE PROCEDURE dbo.sp_AktivTanevValtasa
   @pIntezmenyId int
  ,@pAktTanevId int
  ,@pKovTanevId  int
  ,@pFelhasznaloId int
WITH EXECUTE AS 'kreta_tech_user'
AS
BEGIN
  SET NOCOUNT ON;
  DECLARE 
     @aktTanevVege datetime 
    ,@tanevElsoNapja datetime
    ,@ValtasDatuma datetime
    ,@TanevNev nvarchar(20)
    ,@ElsoTanitasiNap nvarchar(4)
    ,@UtolsoTanitasiNap nvarchar(4)
    ,@TanevNeveNew nvarchar(20)
  
  SET @ValtasDatuma = GETDATE()

  SELECT
     @tanevElsoNapja = C_KEZDONAP
    ,@TanevNev = C_NEV
    ,@tanevNeveNew = CONCAT(YEAR(C_UTOLSOTANITASINAP), '/', YEAR(C_UTOLSOTANITASINAP) + 1)
    ,@elsoTanitasiNap = FORMAT(C_ELSOTANITASINAP, 'MMdd')
    ,@utolsoTanitasiNap = FORMAT(C_UTOLSOTANITASINAP, 'MMdd')
  FROM T_TANEV_OSSZES
  WHERE ID = @pKovTanevId

  UPDATE T_TANEV_OSSZES 
  SET 
     C_AKTIVALVA = @ValtasDatuma 
    ,MODIFIER = @pFelhasznaloId
  WHERE ID = @pKovTanevId

  IF @@ROWCOUNT = 0 THROW 50001, N'A megadott következő tanév ID nem létezik', 0;
    
  INSERT INTO T_FELHASZNALOBELEPES_OSSZES (
     C_KOTELEZOVALTOZTATNI
    ,C_MEGHIUSULTBELEPESEK
    ,C_UTOLSOBELEPES
    ,C_JELSZO
    ,C_JELSZOVALTOZTATASIDEJE
    ,C_SO
    ,C_BEJELENTKEZESINEV
    ,C_NEPTUNNAPLOJELSZO
    ,C_FELHASZNALOID
    ,C_GONDVISELOID
    ,C_INTEZMENYID
    ,C_TANEVID
    ,TOROLT
    ,SERIAL
    ,LASTCHANGED
    ,CREATED
    ,MODIFIER
    ,CREATOR
  ) SELECT 
     'T' AS C_KOTELEZOVALTOZTATNI  
    ,0 AS C_MEGHIUSULTBELEPESEK  
    ,NULL AS C_UTOLSOBELEPES  
    ,C_JELSZO AS C_JELSZO      
    ,NULL AS C_JELSZOVALTOZTATASIDEJE 
    ,C_SO AS C_SO  
    ,C_BEJELENTKEZESINEV AS C_BEJELENTKEZESINEV    
    ,C_NEPTUNNAPLOJELSZO AS C_NEPTUNNAPLOJELSZO  
    ,tmp.NewUserId  AS C_FELHASZNALOID      
    ,NULL AS C_GONDVISELOID       
    ,@pIntezmenyId AS C_INTEZMENYID         
    ,@pKovTanevId AS C_TANEVID  
    ,TOROLT AS TOROLT             
    ,0 AS SERIAL  
    ,GETDATE() AS LASTCHANGED     
    ,GETDATE() AS CREATED         
    ,@pFelhasznaloId AS MODIFIER             
    ,@pFelhasznaloId AS CREATOR                              
  FROM T_FELHASZNALOBELEPES_OSSZES f
  INNER JOIN (
    SELECT 
       a.ID AS OldUserId
      ,b.ID AS NewUserId
    FROM T_FELHASZNALO_OSSZES a
    INNER JOIN T_FELHASZNALO_OSSZES b ON b.ELOZOTANEVIREKORDID = a.ID
    INNER JOIN T_ALKALMAZOTT_OSSZES alk ON alk.ID = a.ID AND alk.C_ALTANEVID = a.C_TANEVID and alk.TOROLT = 'F'
    INNER JOIN T_ALKALMAZOTT_OSSZES alk0 ON alk0.ID = b.ID AND alk0.C_ALTANEVID = b.C_TANEVID and alk0.TOROLT = 'F'
    WHERE a.C_TANEVID = @pAktTanevId
      AND b.C_TANEVID = @pKovTanevId
      AND a.TOROLT = 'F'
      AND b.TOROLT = 'F'
      AND NOT EXISTS (SELECT 1 FROM T_FELHASZNALOBELEPES_OSSZES f2 WHERE f2.C_FELHASZNALOID = b.ID AND f2.TOROLT = 'F')
  ) tmp ON tmp.OldUserId = f.C_FELHASZNALOID AND f.TOROLT = 'F'

  INSERT INTO T_FELHASZNALO_SZEREPKOR (C_FELHASZNALOID, C_SZEREPKORID)
  SELECT DISTINCT
     newF.ID
    ,newSz.ID
  FROM T_FELHASZNALO_OSSZES newF
    INNER JOIN T_ALKALMAZOTT_OSSZES newA ON newA.ID = newF.ID AND newA.TOROLT = 'F'
    INNER JOIN (
      SELECT
         f.ID
        ,sz.C_SZEREPKORTIPUS
      FROM T_FELHASZNALO_OSSZES f
        INNER JOIN T_ALKALMAZOTT_OSSZES a ON a.ID = f.ID AND a.TOROLT = 'F'
        INNER JOIN T_FELHASZNALO_SZEREPKOR fsz ON fsz.C_FELHASZNALOID = f.ID
        INNER JOIN T_SZEREPKOR_OSSZES sz ON sz.ID = fsz.C_SZEREPKORID AND sz.TOROLT = 'F'
      WHERE f.C_UTONEV NOT IN ('Adminisztrátor', 'Fenntartó')
        AND f.C_TANEVID = @pAktTanevId
        AND f.C_INTEZMENYID = @pIntezmenyId
        AND f.TOROLT = 'F'
    ) oldF ON oldF.ID  = newF.ELOZOTANEVIREKORDID
    INNER JOIN T_SZEREPKOR_OSSZES newSz ON newSz.C_SZEREPKORTIPUS = oldF.C_SZEREPKORTIPUS
      AND newSz.C_TANEVID = @pKovTanevId
      AND newSz.C_INTEZMENYID = @pIntezmenyId
      AND newSz.TOROLT = 'F'
  WHERE newF.C_INTEZMENYID = @pIntezmenyId
    AND newF.C_TANEVID = @pKovTanevId
    AND newF.TOROLT = 'F'
    AND NOT EXISTS (SELECT 1 FROM T_FELHASZNALO_SZEREPKOR WHERE C_FELHASZNALOID = newF.ID AND C_SZEREPKORID = newSz.ID)

  INSERT INTO T_JOGOSULTSAG_FELHASZNALO (C_JOGOSULTSAGID, C_FELHASZNALOID)
  SELECT DISTINCT
     newF.ID
    ,newSz.ID
  FROM T_FELHASZNALO_OSSZES newF
    INNER JOIN T_ALKALMAZOTT_OSSZES newA ON newA.ID = newF.ID AND newA.TOROLT = 'F'
    INNER JOIN (
      SELECT
         f.ID
        ,j.C_SZEREPKORTIPUS
      FROM T_FELHASZNALO_OSSZES f
        INNER JOIN T_ALKALMAZOTT_OSSZES a ON a.ID = f.ID AND a.TOROLT = 'F'
        INNER JOIN T_JOGOSULTSAG_FELHASZNALO jfh ON jfh.C_FELHASZNALOID = f.ID
        INNER JOIN T_JOGOSULTSAG_OSSZES j ON j.ID = jfh.C_JOGOSULTSAGID AND j.TOROLT = 'F'
      WHERE f.C_UTONEV NOT IN ('Adminisztrátor', 'Fenntartó')
        AND f.C_TANEVID = @pAktTanevId
        AND f.C_INTEZMENYID = @pIntezmenyId
        AND f.TOROLT = 'F'
    ) oldF ON oldF.ID = newF.ELOZOTANEVIREKORDID
    INNER JOIN T_JOGOSULTSAG_OSSZES newSz ON newSz.C_SZEREPKORTIPUS = oldF.C_SZEREPKORTIPUS
      AND newSz.C_TANEVID = @pKovTanevId
      AND newSz.C_INTEZMENYID = @pIntezmenyId
      AND newSz.TOROLT = 'F'
  WHERE newF.C_INTEZMENYID = @pIntezmenyId
    AND newF.C_TANEVID = @pKovTanevId
    AND newF.TOROLT = 'F'
    AND NOT EXISTS (SELECT 1 FROM T_JOGOSULTSAG_FELHASZNALO jf WHERE jf.C_FELHASZNALOID = newF.ID AND jf.C_JOGOSULTSAGID = newSz.ID)

  --SPEC START
  CREATE TABLE #tmpIds (id int)

  INSERT INTO #tmpIds (id)
  SELECT fh.ID FROM T_FELHASZNALO_OSSZES fh WHERE fh.C_TANEVID = @pAktTanevId AND fh.TOROLT = 'F' 
    AND NOT EXISTS(SELECT TOP 1 1 FROM T_ALKALMAZOTT_OSSZES a WHERE a.ID = fh.ID AND a.C_ALTANEVID = fh.C_TANEVID AND a.TOROLT = 'F')
    AND NOT EXISTS(SELECT TOP 1 1 FROM T_TANULO_OSSZES t WHERE t.ID = fh.ID AND t.C_ALTANEVID = fh.C_TANEVID AND t.TOROLT = 'F')
    AND NOT EXISTS(SELECT 1 FROM T_FELHASZNALO_OSSZES fh2 WHERE fh2.C_TANEVID = @pKovTanevId AND fh2.C_NYOMTATASINEV = fh.C_NYOMTATASINEV AND fh2.TOROLT = 'F')
  
  INSERT INTO T_FELHASZNALO (
     C_NEME
    ,C_SZULETESIDATUM
    ,C_SZULETESINEV
    ,C_ANYJANEVE
    ,C_SZULETESIHELY
    ,C_TAJSZAM
    ,C_ALLAMPOLGARSAGA
    ,C_KERESESINEV
    ,C_SZULETESIORSZAG
    ,C_SZULETESINEVSORREND
    ,C_ANYJANEVESORREND
    ,C_ALAPERTELMEZETTLCID
    ,C_LATASSERULTWEBHASZNALATA
    ,C_SMSSZAM
    ,C_SMSSZINKRONIZALT
    ,C_KELLADSZINKRONIZALAS
    ,C_DMSTARTTIME
    ,C_NYOMTATASINEV
    ,C_UTONEV
    ,C_VEZETEKNEV
    ,C_ADOAZONOSITOJEL
    ,C_ELOTAG
    ,C_ANYANYELVE
    ,C_IGAZOLVANYSZAM
    ,C_IGAZOLVANYTIPUSA
    ,C_NEVSORREND
    ,C_NYILVANTARTASISZAM
    ,C_NYILVANTARTASKEZDETE
    ,C_OKTATASIAZONOSITO
    ,C_OMKOD
    ,C_ALAIRAS
    ,C_PROFILKEP
    ,C_KIRAZONOSITO
    ,C_ALLAMPOLGARSAGA2
    ,C_FENNTARTOAZONOSITO
    ,C_IMPORTALT
    ,C_INTEZMENYID
    ,C_TANEVID
    ,TOROLT
    ,SERIAL
    ,LASTCHANGED
    ,CREATED
    ,MODIFIER
    ,CREATOR
    ,ELOZOTANEVIREKORDID
    ,C_BELUGYALTALAZONOSITOTT
    ,C_UTOLSOADATFRISSITESIDOPONTJA
    ,C_EGYEDIAZONOSITO
    ,C_IDPEGYEDIAZONOSITO
    ,C_MEGJEGYZES
  ) SELECT
     C_NEME
    ,C_SZULETESIDATUM
    ,C_SZULETESINEV
    ,C_ANYJANEVE
    ,C_SZULETESIHELY
    ,C_TAJSZAM
    ,C_ALLAMPOLGARSAGA
    ,C_KERESESINEV
    ,C_SZULETESIORSZAG
    ,C_SZULETESINEVSORREND
    ,C_ANYJANEVESORREND
    ,C_ALAPERTELMEZETTLCID
    ,C_LATASSERULTWEBHASZNALATA
    ,C_SMSSZAM
    ,C_SMSSZINKRONIZALT
    ,C_KELLADSZINKRONIZALAS
    ,C_DMSTARTTIME
    ,C_NYOMTATASINEV
    ,C_UTONEV
    ,C_VEZETEKNEV
    ,C_ADOAZONOSITOJEL
    ,C_ELOTAG
    ,C_ANYANYELVE
    ,C_IGAZOLVANYSZAM
    ,C_IGAZOLVANYTIPUSA
    ,C_NEVSORREND
    ,C_NYILVANTARTASISZAM
    ,C_NYILVANTARTASKEZDETE
    ,C_OKTATASIAZONOSITO
    ,C_OMKOD
    ,C_ALAIRAS
    ,C_PROFILKEP
    ,C_KIRAZONOSITO
    ,C_ALLAMPOLGARSAGA2
    ,C_FENNTARTOAZONOSITO
    ,C_IMPORTALT
    ,C_INTEZMENYID
    ,@pKovTanevId
    ,'F'
    ,0
    ,GETDATE()
    ,GETDATE()
    ,@pFelhasznaloId
    ,@pFelhasznaloId
    ,fh.ID
    ,C_BELUGYALTALAZONOSITOTT
    ,C_UTOLSOADATFRISSITESIDOPONTJA
    ,C_EGYEDIAZONOSITO
    ,C_IDPEGYEDIAZONOSITO
    ,C_MEGJEGYZES
  FROM T_FELHASZNALO_OSSZES fh
  WHERE ID IN (SELECT ID FROM #tmpIds)
  
  INSERT INTO T_FELHASZNALOBELEPES(
     C_KOTELEZOVALTOZTATNI
    ,C_MEGHIUSULTBELEPESEK
    ,C_UTOLSOBELEPES
    ,C_JELSZO
    ,C_JELSZOVALTOZTATASIDEJE
    ,C_SO
    ,C_BEJELENTKEZESINEV
    ,C_NEPTUNNAPLOJELSZO
    ,C_ELFOGADOTTGDPRNYILATKOZAT
    ,C_GDPRELFOGADASDATUMA
    ,C_IMPORTALT
    ,C_FELHASZNALOID
    ,C_GONDVISELOID
    ,C_INTEZMENYID
    ,C_TANEVID
    ,TOROLT
    ,SERIAL
    ,LASTCHANGED
    ,CREATED
    ,MODIFIER
    ,CREATOR
    ,ELOZOTANEVIREKORDID
  ) SELECT
     C_KOTELEZOVALTOZTATNI
    ,C_MEGHIUSULTBELEPESEK
    ,C_UTOLSOBELEPES
    ,C_JELSZO
    ,C_JELSZOVALTOZTATASIDEJE
    ,C_SO
    ,C_BEJELENTKEZESINEV
    ,C_NEPTUNNAPLOJELSZO
    ,C_ELFOGADOTTGDPRNYILATKOZAT
    ,C_GDPRELFOGADASDATUMA
    ,fhb.C_IMPORTALT
    ,fh.ID
    ,NULL
    ,fhb.C_INTEZMENYID
    ,@pKovTanevId
    ,'F'
    ,0
    ,GETDATE()
    ,GETDATE()
    ,@pFelhasznaloId
    ,@pFelhasznaloId
    ,fhb.ID
  FROM T_FELHASZNALOBELEPES_OSSZES fhb
    INNER JOIN T_FELHASZNALO_OSSZES fh ON fh.ELOZOTANEVIREKORDID = fhb.C_FELHASZNALOID AND fh.TOROLT = 'F'
  WHERE fhb.C_FELHASZNALOID IN (SELECT ID FROM #tmpIds) AND fhb.TOROLT = 'F'
    AND fhb.C_TANEVID = @pAktTanevId
    AND fh.C_TANEVID = @pKovTanevId
  
  INSERT INTO T_FELHASZNALO_SZEREPKOR (
     C_FELHASZNALOID
    ,C_SZEREPKORID
  ) SELECT 
     fh.ID
    ,szUj.ID
  FROM T_FELHASZNALO_SZEREPKOR fhsz
    INNER JOIN T_FELHASZNALO_OSSZES fh ON fh.ELOZOTANEVIREKORDID=fhsz.C_FELHASZNALOID AND fh.TOROLT = 'F'
    INNER JOIN T_SZEREPKOR_OSSZES szUj ON szUj.ELOZOTANEVIREKORDID=fhsz.C_SZEREPKORID
  WHERE fhsz.C_FELHASZNALOID IN (SELECT ID FROM #tmpIds)
    AND fh.C_TANEVID = @pKovTanevId
    AND szUj.C_TANEVID = @pKovTanevId

  INSERT INTO T_JOGOSULTSAG_FELHASZNALO (
     C_FELHASZNALOID
    ,C_JOGOSULTSAGID
  ) SELECT 
     fh.ID
    ,jUj.ID
  FROM T_JOGOSULTSAG_FELHASZNALO jfh
    INNER JOIN T_FELHASZNALO_OSSZES fh ON fh.ELOZOTANEVIREKORDID = jfh.C_FELHASZNALOID AND fh.TOROLT = 'F'
    INNER JOIN T_JOGOSULTSAG_OSSZES jUj ON jUj.ELOZOTANEVIREKORDID = jfh.C_JOGOSULTSAGID
  WHERE jfh.C_FELHASZNALOID IN (SELECT ID FROM #tmpIds)
    AND fh.C_TANEVID = @pKovTanevId
    AND jUj.C_TANEVID = @pKovTanevId
  --SPEC END

  UPDATE a SET
     a.C_JELSZO = b.C_JELSZO
    ,a.C_SO = b.C_SO
  FROM T_FELHASZNALOBELEPES_OSSZES a
    INNER JOIN T_FELHASZNALOBELEPES_OSSZES b ON b.C_BEJELENTKEZESINEV = a.C_BEJELENTKEZESINEV
  WHERE a.C_BEJELENTKEZESINEV = 'admin'
    AND a.C_TANEVID = @pKovTanevId
    AND b.C_TANEVID = @pAktTanevId

  UPDATE T_TANEV_OSSZES SET 
     C_AKTIV = 'F'
    ,MODIFIER = @pFelhasznaloId
    ,LASTCHANGED = GETDATE()
    ,SERIAL += 1
  WHERE ID = @pAktTanevId
    AND C_INTEZMENYID = @pIntezmenyId
    AND TOROLT = 'F'

  UPDATE T_TANEV_OSSZES SET
     C_AKTIV = 'T'
    ,C_KOVETKEZO = 'F'
    ,MODIFIER = @pFelhasznaloId
    ,LASTCHANGED = GETDATE()
    ,SERIAL += 1
  WHERE ID = @pKovTanevId
    AND C_INTEZMENYID = @pIntezmenyId
    AND TOROLT = 'F';

  SELECT @aktTanevVege = C_UTOLSONAP FROM T_TANEV WHERE ID = @pAktTanevId

  UPDATE tgyKov
  SET ELOZOTANEVIREKORDID = tgyAkt.ID
  FROM T_TANTARGY_OSSZES tgyAkt
    INNER JOIN T_TANTARGY_OSSZES tgyKov ON tgyKov.TOROLT = 'F' AND tgyKov.C_TANEVID = @pKovTanevId
  WHERE tgyAkt.C_TANEVID = @pAktTanevId
    AND tgyAkt.TOROLT = 'F'
    AND tgyAkt.C_NEV = tgyKov.C_NEV
    AND tgyKov.ELOZOTANEVIREKORDID IS NULL;
  
  -- Mondatbank átvitele
  INSERT INTO T_ERTEKELESMONDATBANK (
     C_ERTEKELESTIPUSA
    ,C_EVFOLYAMTIPUSA
    ,C_ROVIDNEV
    ,C_SZOVEG
    ,C_TIPUSID
    ,C_IMPORTALT
    ,C_TANTARGYID
    ,C_INTEZMENYID
    ,C_TANEVID
    ,TOROLT
    ,SERIAL
    ,LASTCHANGED
    ,CREATED
    ,MODIFIER
    ,CREATOR
    ,ELOZOTANEVIREKORDID
  ) SELECT
     ertip.ID AS C_ERTEKELESTIPUSA -- int
    ,evtip.ID AS C_EVFOLYAMTIPUSA -- int
    ,mb.C_ROVIDNEV AS C_ROVIDNEV -- nvarchar(3)
    ,mb.C_SZOVEG AS C_SZOVEG -- * nvarchar(max)
    ,emb.ID AS C_TIPUSID -- * int
    ,'F' AS C_IMPORTALT -- * char(1)
    ,tgy.ID AS C_TANTARGYID -- int
    ,mb.C_INTEZMENYID AS C_INTEZMENYID -- * int
    ,@pKovTanevId AS C_TANEVID -- * int
    ,'F' AS TOROLT -- * char(1)
    ,0 AS SERIAL -- * int
    ,GETDATE() AS LASTCHANGED -- * datetime
    ,GETDATE() AS CREATED -- * datetime
    ,@pFelhasznaloId AS MODIFIER -- int
    ,@pFelhasznaloId AS CREATOR -- int
    ,mb.ID AS ELOZOTANEVIREKORDID -- int
  FROM T_ERTEKELESMONDATBANK_OSSZES mb
    LEFT JOIN T_TANTARGY_OSSZES tgy ON tgy.ELOZOTANEVIREKORDID = mb.C_TANTARGYID AND tgy.TOROLT = 'F' AND tgy.C_TANEVID = @pKovTanevId
    LEFT JOIN T_ERTEKELESTIPUS_OSSZES ertip ON ertip.ELOZOTANEVIREKORDID = mb.C_ERTEKELESTIPUSA AND ertip.C_ALTANEVID = @pKovTanevId AND ertip.TOROLT = 'F'
    LEFT JOIN T_EVFOLYAMTIPUS_OSSZES evtip ON evtip.ELOZOTANEVIREKORDID = mb.C_EVFOLYAMTIPUSA AND evtip.C_ALTANEVID = @pKovTanevId AND evtip.TOROLT = 'F'
    LEFT JOIN T_ERTMONDATBANKTIPUS_OSSZES emb ON emb.ELOZOTANEVIREKORDID = mb.C_TIPUSID AND emb.C_ALTANEVID = @pKovTanevId AND emb.TOROLT = 'F'
  WHERE mb.C_TANEVID = @pAktTanevId
    AND mb.TOROLT = 'F'
    AND NOT EXISTS(
      SELECT 1
      FROM T_ERTEKELESMONDATBANK embNew
      WHERE embNew.TOROLT = 'F' AND embNew.C_TANEVID = @pKovTanevId 
        AND emb.ELOZOTANEVIREKORDID = mb.ID
    )
  ORDER BY mb.ID

  -- Felmentések átvitele
  INSERT INTO T_TANULOMENTESSEG (
     C_ERTEKELESMENTESITES
    ,C_KEZDETE
    ,C_MENTESSEGOKA
    ,C_ORAMENTESITES
    ,C_VEGE
    ,C_SZOVEGESENERTEKELHETO
    ,C_TANTARGYID
    ,C_TANULOID
    ,C_INTEZMENYID
    ,C_TANEVID
    ,TOROLT
    ,SERIAL
    ,LASTCHANGED
    ,CREATED
    ,MODIFIER
    ,CREATOR
    ,ELOZOTANEVIREKORDID
    ,C_FELMENTESROGZITOTANARID
    ,C_FELMENTESROGZITESIDOPONTJA
    ,C_UTOLSOMODOSITOTANARID
    ,C_UTOLSOMODOSITASIDOPONTJA
  ) SELECT
     tm.C_ERTEKELESMENTESITES AS C_ERTEKELESMENTESITES -- char(1)
    ,tm.C_KEZDETE AS C_KEZDETE -- datetime
    ,tm.C_MENTESSEGOKA AS C_MENTESSEGOKA -- nvarchar(max)
    ,tm.C_ORAMENTESITES AS C_ORAMENTESITES -- char(1)
    ,tm.C_VEGE AS C_VEGE -- datetime
    ,tm.C_SZOVEGESENERTEKELHETO AS C_SZOVEGESENERTEKELHETO -- char(1)
    ,tgy.ID AS C_TANTARGYID -- * int
    ,fh.ID AS C_TANULOID -- * int
    ,tm.C_INTEZMENYID AS C_INTEZMENYID -- * int
    ,@pKovTanevId AS C_TANEVID -- * int
    ,'F' AS TOROLT -- * char(1)
    ,0 AS SERIAL -- * int
    ,GETDATE() AS LASTCHANGED -- * datetime
    ,GETDATE() AS CREATED -- * datetime
    ,@pFelhasznaloId AS MODIFIER -- int
    ,@pFelhasznaloId AS CREATOR -- int
    ,tm.ID AS ELOZOTANEVIREKORDID -- int
    ,tm.C_FELMENTESROGZITOTANARID
    ,tm.C_FELMENTESROGZITESIDOPONTJA
    ,tm.C_UTOLSOMODOSITOTANARID
    ,tm.C_UTOLSOMODOSITASIDOPONTJA
  FROM T_TANULOMENTESSEG_OSSZES tm
    INNER JOIN T_TANTARGY_OSSZES tgy ON tgy.ELOZOTANEVIREKORDID = tm.C_TANTARGYID AND tgy.TOROLT = 'F'
    INNER JOIN T_FELHASZNALO_OSSZES fh ON fh.ELOZOTANEVIREKORDID = tm.C_TANULOID AND fh.TOROLT = 'F'
  WHERE tm.C_TANEVID = @pAktTanevId
    AND tm.TOROLT = 'F'
    AND (tm.C_VEGE IS NULL OR tm.C_VEGE > @aktTanevVege)
    AND tgy.C_TANEVID = @pKovTanevId
    AND fh.C_TANEVID = @pKovTanevId
    AND NOT EXISTS (
      SELECT 1 
      FROM T_TANULOMENTESSEG_OSSZES tmNew 
      WHERE tmNew.TOROLT = 'F' AND tmNew.C_TANEVID = @pKovTanevId AND tmNew.C_TANULOID = fh.ID AND tmNew.C_TANTARGYID = tgy.ID
    )
  
  -- TODO szikoraz ERTEKELES REFAKT2 ERTEKELESMOD: Ha töröljük a T_TANARIATLAGSULY táblát, akkor törölni kell a T_TANARIATLAGSULY-os DELETE-et és az INSERT INTO-t!
  -- köztes időszakban a módosítások nem mennek át, de a rekordok ott vannak, ezért váltás után egy régi állapot lenne a súlyokból
  DELETE FROM T_TANARIATLAGSULY_OSSZES WHERE C_TANEVID = @pKovTanevId
  -- SULYok átvitele
  INSERT INTO T_TANARIATLAGSULY (
     C_SULY
    ,C_ERTEKELESMODID
    ,C_INTEZMENYID
    ,C_TANEVID
    ,TOROLT
    ,SERIAL
    ,LASTCHANGED
    ,CREATED
    ,MODIFIER
    ,CREATOR
    ,ELOZOTANEVIREKORDID
  ) SELECT
     tas.C_SULY AS C_SULY -- * int
    ,em.ID AS C_ERTEKELESMODID -- * int
    ,C_INTEZMENYID AS C_INTEZMENYID -- * int
    ,@pKovTanevId AS C_TANEVID -- * int
    ,'F' AS TOROLT -- * char(1)
    ,0 AS SERIAL -- * int
    ,GETDATE() AS LASTCHANGED -- * datetime
    ,GETDATE() AS CREATED -- * datetime
    ,@pFelhasznaloId AS MODIFIER -- int
    ,@pFelhasznaloId AS CREATOR -- int
    ,tas.ID AS ELOZOTANEVIREKORDID -- int
  FROM T_TANARIATLAGSULY_OSSZES tas
    INNER JOIN T_ERTEKELESMOD_OSSZES em ON em.ELOZOTANEVIREKORDID = tas.C_ERTEKELESMODID AND em.TOROLT = 'F'
  WHERE tas.C_TANEVID = @pAktTanevId
    AND tas.TOROLT = 'F'
    AND em.C_ALTANEVID = @pKovTanevId
    AND NOT EXISTS (
      SELECT 1 
      FROM T_TANARIATLAGSULY_OSSZES tasNew
      WHERE tasNew.TOROLT = 'F' AND tasNew.C_TANEVID = @pKovTanevId AND tasNew.C_ERTEKELESMODID = em.ID
    )

  -- A nem kötött munkaidőnél a tulajdonos átírása az következő tanéves ID-ra
  UPDATE nkm SET
     nkm.C_TULAJDONOSID = fh.ID
  FROM T_NEMKOTOTTMUNKAIDO_OSSZES nkm
    INNER JOIN T_FELHASZNALO_OSSZES fh ON fh.ELOZOTANEVIREKORDID = nkm.C_TULAJDONOSID AND fh.TOROLT = 'F'
  WHERE nkm.C_TANEVID = @pKovTanevId
    AND nkm.TOROLT = 'F'
    AND fh.C_TANEVID = @pKovTanevId
  
  INSERT INTO T_ELEARNING_OSSZES (
     C_BEFEJEZETT
    ,C_ELEARNINGAZONOSITO
    ,C_ELEARNINGFELHASZNALONEV
    ,C_SIKERES
    ,C_SZERZODESES
    ,C_TANANYAGKOD
    ,C_FELHASZNALOID
    ,C_INTEZMENYID
    ,C_TANEVID
    ,TOROLT
    ,SERIAL
    ,LASTCHANGED
    ,CREATED
    ,MODIFIER
    ,CREATOR
    ,ELOZOTANEVIREKORDID
  ) SELECT
     C_BEFEJEZETT
    ,C_ELEARNINGAZONOSITO
    ,C_ELEARNINGFELHASZNALONEV
    ,C_SIKERES
    ,C_SZERZODESES
    ,C_TANANYAGKOD
    ,fh.ID
    ,el.C_INTEZMENYID
    ,@pKovTanevId
    ,'F'
    ,0
    ,GETDATE()
    ,GETDATE()
    ,@pFelhasznaloId
    ,@pFelhasznaloId
    ,el.ID
  FROM T_ELEARNING_OSSZES el 
    INNER JOIN T_FELHASZNALO_OSSZES fh ON fh.ELOZOTANEVIREKORDID = el.C_FELHASZNALOID AND fh.C_TANEVID = @pKovTanevId AND fh.TOROLT = 'F'
  WHERE el.C_TANEVID = @pAktTanevId AND el.TOROLT = 'F' 
    AND NOT EXISTS (SELECT 1 FROM T_ELEARNING_OSSZES WHERE ELOZOTANEVIREKORDID=el.ID AND C_TANEVID = @pKovTanevId)

  INSERT INTO T_ELEARNINGELERHETOSEG_OSSZES(
     C_ELEARNINGAZONOSITO
    ,C_KEZDODATUM
    ,C_SZEREPKORTIPUSID
    ,C_VEGDATUM
    ,C_INTEZMENYID
    ,C_TANEVID
    ,TOROLT
    ,SERIAL
    ,LASTCHANGED
    ,CREATED
    ,MODIFIER
    ,CREATOR
    ,ELOZOTANEVIREKORDID
    ,C_ISGONDVISELONELMEGJELENIK
    ,C_ISTANULONALMEGJELENIK
    ,C_ROLEPACKAGE
  ) SELECT
     ele.C_ELEARNINGAZONOSITO
    ,ele.C_KEZDODATUM
    ,ele.C_SZEREPKORTIPUSID
    ,ele.C_VEGDATUM
    ,ele.C_INTEZMENYID
    ,@pKovTanevId
    ,ele.TOROLT
    ,0
    ,GETDATE()
    ,GETDATE()
    ,@pFelhasznaloId
    ,@pFelhasznaloId
    ,ele.ID
    ,ele.C_ISGONDVISELONELMEGJELENIK
    ,ele.C_ISTANULONALMEGJELENIK
    ,ele.C_ROLEPACKAGE
  FROM T_ELEARNINGELERHETOSEG_OSSZES ele
  WHERE ele.C_TANEVID=@pAktTanevId AND ele.TOROLT = 'F' 
    AND NOT EXISTS(SELECT 1 FROM T_ELEARNINGELERHETOSEG_OSSZES WHERE ELOZOTANEVIREKORDID=ele.ID AND C_TANEVID=@pKovTanevId)
    AND C_VEGDATUM > @tanevElsoNapja

  INSERT INTO T_ELEARNINGFELHASZNALO_OSSZES(
     C_GONDVISELOID
    ,C_ELEARNINGELERHETOSEGID
    ,C_FELHASZNALOID
    ,C_INTEZMENYID
    ,C_TANEVID
    ,TOROLT
    ,SERIAL
    ,LASTCHANGED
    ,CREATED
    ,MODIFIER
    ,CREATOR
    ,ELOZOTANEVIREKORDID
    )
  SELECT 
     gv.ID
    ,ele.ID
    ,fh.ID
    ,elfh.C_INTEZMENYID
    ,@pKovTanevId
    ,'F'
    ,0
    ,GETDATE()
    ,GETDATE()
    ,@pFelhasznaloId
    ,@pFelhasznaloId
    ,elfh.ID
  FROM T_ELEARNINGFELHASZNALO_OSSZES elfh
    INNER JOIN T_ELEARNINGELERHETOSEG_OSSZES ele ON ele.ELOZOTANEVIREKORDID = elfh.C_ELEARNINGELERHETOSEGID AND ele.TOROLT = 'F'
    LEFT JOIN T_GONDVISELO_OSSZES gv ON gv.ELOZOTANEVIREKORDID = elfh.C_GONDVISELOID AND gv.TOROLT = 'F'
    INNER JOIN T_FELHASZNALO_OSSZES fh ON fh.ELOZOTANEVIREKORDID = elfh.C_FELHASZNALOID AND fh.TOROLT = 'F'
  WHERE elfh.C_TANEVID = @pAktTanevId AND elfh.TOROLT = 'F'
    AND ele.C_TANEVID = @pKovTanevId
    AND gv.C_TANEVID = @pKovTanevId
    AND fh.C_TANEVID = @pKovTanevId
    AND NOT EXISTS(SELECT 1 FROM T_ELEARNINGFELHASZNALO_OSSZES WHERE TOROLT = 'F' AND ELOZOTANEVIREKORDID = elfh.ID AND C_TANEVID = @pKovTanevId)

  INSERT INTO T_FELHASZNALOBELEPES (
     C_KOTELEZOVALTOZTATNI
    ,C_MEGHIUSULTBELEPESEK
    ,C_UTOLSOBELEPES
    ,C_JELSZO
    ,C_JELSZOVALTOZTATASIDEJE
    ,C_SO
    ,C_BEJELENTKEZESINEV
    ,C_NEPTUNNAPLOJELSZO
    ,C_ELFOGADOTTGDPRNYILATKOZAT
    ,C_GDPRELFOGADASDATUMA
    ,C_IMPORTALT
    ,C_FELHASZNALOID
    ,C_GONDVISELOID
    ,C_INTEZMENYID
    ,C_TANEVID
    ,TOROLT
    ,SERIAL
    ,LASTCHANGED
    ,CREATED
    ,MODIFIER
    ,CREATOR
    ,ELOZOTANEVIREKORDID
  ) SELECT
     fb.C_KOTELEZOVALTOZTATNI AS C_KOTELEZOVALTOZTATNI -- char(1)
    ,fb.C_MEGHIUSULTBELEPESEK AS C_MEGHIUSULTBELEPESEK -- int
    ,fb.C_UTOLSOBELEPES AS C_UTOLSOBELEPES -- datetime
    ,fb.C_JELSZO AS C_JELSZO -- nvarchar(64)
    ,fb.C_JELSZOVALTOZTATASIDEJE AS C_JELSZOVALTOZTATASIDEJE -- datetime
    ,fb.C_SO AS C_SO -- nvarchar(64)
    ,fb.C_BEJELENTKEZESINEV AS C_BEJELENTKEZESINEV -- * nvarchar(255)
    ,fb.C_NEPTUNNAPLOJELSZO AS C_NEPTUNNAPLOJELSZO -- nvarchar(64)
    ,fb.C_ELFOGADOTTGDPRNYILATKOZAT AS C_ELFOGADOTTGDPRNYILATKOZAT -- * char(1)
    ,fb.C_GDPRELFOGADASDATUMA AS C_GDPRELFOGADASDATUMA -- datetime
    ,'F' AS C_IMPORTALT -- * char(1)
    ,fhUj.ID AS C_FELHASZNALOID -- * int
    ,fb.C_GONDVISELOID AS C_GONDVISELOID -- int
    ,@pIntezmenyId AS C_INTEZMENYID -- * int
    ,@pKovTanevId AS C_TANEVID -- * int
    ,'F' AS TOROLT -- * char(1)
    ,0 AS SERIAL -- * int
    ,GETDATE() AS LASTCHANGED -- * datetime
    ,GETDATE() AS CREATED -- * datetime
    ,NULL AS MODIFIER -- int
    ,NULL AS CREATOR -- int
    ,fb.ID AS ELOZOTANEVIREKORDID -- int
  FROM T_FELHASZNALOBELEPES_OSSZES fb
    INNER JOIN T_FELHASZNALO_OSSZES fh ON fh.ID = fb.C_FELHASZNALOID AND fh.TOROLT = 'F'
    INNER JOIN T_TANULO_OSSZES t ON t.ID = fh.ID
    INNER JOIN T_FELHASZNALO_OSSZES fhUj ON fhuj.ELOZOTANEVIREKORDID = fh.ID AND fhuj.TOROLT = 'F'
  WHERE fb.C_TANEVID = @pAktTanevId
    AND fhuj.C_TANEVID = @pKovTanevId
    AND fb.C_GONDVISELOID IS NULL
    AND fh.C_TANEVID = @pAktTanevId
    AND t.C_ALTANEVID = @pAktTanevId
    AND NOT EXISTS (SELECT 1 FROM T_FELHASZNALOBELEPES_OSSZES x WHERE x.C_FELHASZNALOID = fhUj.ID AND x.C_GONDVISELOID IS NULL AND x.TOROLT = 'F')
    AND NOT EXISTS (SELECT 1 FROM T_FELHASZNALOBELEPES_OSSZES x WHERE x.C_BEJELENTKEZESINEV = fb.C_BEJELENTKEZESINEV AND x.C_TANEVID = @pKovTanevId AND x.TOROLT = 'F')
    AND fb.TOROLT = 'F'

  INSERT INTO T_FELHASZNALOBELEPES_OSSZES (
     C_KOTELEZOVALTOZTATNI
    ,C_MEGHIUSULTBELEPESEK
    ,C_UTOLSOBELEPES
    ,C_JELSZO
    ,C_JELSZOVALTOZTATASIDEJE
    ,C_SO
    ,C_BEJELENTKEZESINEV
    ,C_NEPTUNNAPLOJELSZO
    ,C_ELFOGADOTTGDPRNYILATKOZAT
    ,C_GDPRELFOGADASDATUMA
    ,C_IMPORTALT
    ,C_FELHASZNALOID
    ,C_GONDVISELOID
    ,C_INTEZMENYID
    ,C_TANEVID
    ,TOROLT
    ,SERIAL
    ,LASTCHANGED
    ,CREATED
    ,MODIFIER
    ,CREATOR
    ,ELOZOTANEVIREKORDID
  ) SELECT
      C_KOTELEZOVALTOZTATNI AS C_KOTELEZOVALTOZTATNI -- char(1)
    ,fb.C_MEGHIUSULTBELEPESEK AS C_MEGHIUSULTBELEPESEK -- int
    ,fb.C_UTOLSOBELEPES AS C_UTOLSOBELEPES -- datetime
    ,fb.C_JELSZO AS C_JELSZO -- nvarchar(64)
    ,fb.C_JELSZOVALTOZTATASIDEJE AS C_JELSZOVALTOZTATASIDEJE -- datetime
    ,fb.C_SO AS C_SO -- nvarchar(64)
    ,fb.C_BEJELENTKEZESINEV AS C_BEJELENTKEZESINEV -- * nvarchar(255)
    ,fb.C_NEPTUNNAPLOJELSZO AS C_NEPTUNNAPLOJELSZO -- nvarchar(64)
    ,fb.C_ELFOGADOTTGDPRNYILATKOZAT AS C_ELFOGADOTTGDPRNYILATKOZAT -- * char(1)
    ,fb.C_GDPRELFOGADASDATUMA AS C_GDPRELFOGADASDATUMA -- datetime
    ,'F' AS C_IMPORTALT -- * char(1)
    ,gUj.C_TANULOID AS C_FELHASZNALOID -- * int
    ,gUj.ID AS C_GONDVISELOID -- int
    ,@pIntezmenyId AS C_INTEZMENYID -- * int
    ,@pKovTanevId AS C_TANEVID -- * int
    ,'F' AS TOROLT -- * char(1)
    ,0 AS SERIAL -- * int
    ,GETDATE() AS LASTCHANGED -- * datetime
    ,GETDATE() AS CREATED -- * datetime
    ,NULL AS MODIFIER -- int
    ,NULL AS CREATOR -- int
    ,fb.ID AS ELOZOTANEVIREKORDID -- int
  FROM T_FELHASZNALOBELEPES_OSSZES fb
    INNER JOIN T_GONDVISELO_OSSZES g ON g.ID = fb.C_GONDVISELOID AND g.TOROLT = 'F'
    INNER JOIN T_GONDVISELO_OSSZES gUj ON gUj.ELOZOTANEVIREKORDID = g.ID AND gUj.TOROLT = 'F'
  WHERE fb.C_TANEVID = @pAktTanevId
    AND g.C_TANEVID = @pAktTanevId
    AND gUj.C_TANEVID = @pKovTanevId
    AND fb.C_GONDVISELOID IS NOT NULL
    AND NOT EXISTS (SELECT 1 FROM T_FELHASZNALOBELEPES_OSSZES x WHERE x.C_GONDVISELOID = gUj.ID AND x.C_GONDVISELOID IS NOT NULL AND x.TOROLT = 'F')
    AND NOT EXISTS (SELECT 1 FROM T_FELHASZNALOBELEPES_OSSZES x WHERE x.C_BEJELENTKEZESINEV = fb.C_BEJELENTKEZESINEV AND x.C_TANEVID = @pKovTanevId AND x.TOROLT = 'F')
    AND fb.TOROLT = 'F'

  UPDATE T_FELHASZNALOBELEPES_OSSZES SET 
     TOROLT = 'T' 
    ,LASTCHANGED = @valtasDatuma
    ,MODIFIER = @pFelhasznaloId
  WHERE TOROLT = 'F'
    AND C_TANEVID = @pAktTanevId

  INSERT INTO T_USERPROFILE_OSSZES (
     C_PROFILE
    ,C_FELHASZNALOID
    ,C_INTEZMENYID
    ,C_TANEVID
    ,TOROLT
    ,SERIAL
    ,LASTCHANGED
    ,CREATED
    ,MODIFIER
    ,CREATOR
    ,ELOZOTANEVIREKORDID
    ,C_ISPOPUPMEGJELENITES
    ,C_OSSZFELTOLTHETOFAJLKB
  ) SELECT 
     up.C_PROFILE AS C_PROFILE
    ,fh.ID 
    ,fh.C_INTEZMENYID 
    ,fh.C_TANEVID
    ,'F' AS TOROLT
    ,0 AS SERIAL
    ,GETDATE() AS LASTCHANGED
    ,GETDATE() AS CREATED
    ,@pFelhasznaloId AS MODIFIER
    ,@pFelhasznaloId AS CREATOR
    ,up.ID AS ELOZOTANEVIREKORDID
    ,up.C_ISPOPUPMEGJELENITES AS C_ISPOPUPMEGJELENITES
    ,up.C_OSSZFELTOLTHETOFAJLKB AS C_OSSZFELTOLTHETOFAJLKB
  FROM T_USERPROFILE_OSSZES up
  INNER JOIN T_FELHASZNALO_OSSZES fh ON up.C_FELHASZNALOID = fh.ELOZOTANEVIREKORDID 
    AND up.TOROLT = 'F'
  WHERE fh.TOROLT = 'F' 
    AND fh.C_TANEVID = @pKovTanevId
    AND up.C_TANEVID = @pAktTanevId
    AND NOT EXISTS (SELECT 1 FROM T_USERPROFILE_OSSZES u WHERE u.C_TANEVID = @pKovTanevId AND u.C_FELHASZNALOID = fh.ID AND u.TOROLT = 'F')

INSERT INTO T_UJSZKTRESZSZAKMAOSSZERENDELE (
	 C_AGAZATRESZSZAKMATIPUSID
	,C_OKTATASINEVELESIFELADATID
	,C_RESZSZAKMATIPUSID
	,C_SZAKMARESZSZAKMATIPUSID
	,C_INTEZMENYID
	,C_TANEVID
	,TOROLT
	,SERIAL
	,LASTCHANGED
	,CREATED
	,MODIFIER
	,CREATOR
  ,ELOZOTANEVIREKORDID
) SELECT
	 szkt.C_AGAZATRESZSZAKMATIPUSID
	,szkt.C_OKTATASINEVELESIFELADATID
	,szkt.C_RESZSZAKMATIPUSID
	,szkt.C_SZAKMARESZSZAKMATIPUSID
	,szkt.C_INTEZMENYID
	,@pKovTanevId
	,'F' AS TOROLT
  ,0 AS SERIAL
  ,GETDATE() AS LASTCHANGED
  ,GETDATE() AS CREATED
  ,@pFelhasznaloId AS MODIFIER
  ,@pFelhasznaloId AS CREATOR
  ,szkt.ID AS ELOZOTANEVIREKORDID
  FROM T_UJSZKTRESZSZAKMAOSSZERENDELE szkt
  WHERE szkt.TOROLT = 'F' 
    AND szkt.C_TANEVID = @pAktTanevId
    AND NOT EXISTS (SELECT 1 FROM T_UJSZKTRESZSZAKMAOSSZERENDELE_OSSZES u WHERE szkt.ID = u.ELOZOTANEVIREKORDID AND u.C_TANEVID = @pKovTanevId AND u.TOROLT = 'F')

INSERT INTO T_UJSZKTSZAKMAJEGYZEKOSSZEREND(
	 C_AGAZATUJSZKTTIPUSID
	,C_OKTATASINEVELESIFELADATID
	,C_SZAKMAIRANYTIPUSID
	,C_SZAKMATIPUSID
	,C_EGYEBESZKOZALLOMANYINFORMACI
	,C_ESZKOZALLOMANYAVULTSAGA
	,C_ESZKOZOKDARABSZAMA
	,C_KEPZESREFOGADHATOTANULOKSZAM
	,C_TANMUHELYEKSZAMA
	,C_FILEID
	,C_INTEZMENYID
	,C_TANEVID
	,TOROLT
	,SERIAL
	,LASTCHANGED
	,CREATED
	,MODIFIER
	,CREATOR
	,ELOZOTANEVIREKORDID
) SELECT
	 szktsz.C_AGAZATUJSZKTTIPUSID
	,szktsz.C_OKTATASINEVELESIFELADATID
	,szktsz.C_SZAKMAIRANYTIPUSID
	,szktsz.C_SZAKMATIPUSID
	,szktsz.C_EGYEBESZKOZALLOMANYINFORMACI
	,szktsz.C_ESZKOZALLOMANYAVULTSAGA
	,szktsz.C_ESZKOZOKDARABSZAMA
	,szktsz.C_KEPZESREFOGADHATOTANULOKSZAM
	,szktsz.C_TANMUHELYEKSZAMA
	,szktsz.C_FILEID
	,szktsz.C_INTEZMENYID
	,@pKovTanevId
	,'F' AS TOROLT
  ,0 AS SERIAL
  ,GETDATE() AS LASTCHANGED
  ,GETDATE() AS CREATED
  ,@pFelhasznaloId AS MODIFIER
  ,@pFelhasznaloId AS CREATOR
  ,szktsz.ID AS ELOZOTANEVIREKORDID
  FROM T_UJSZKTSZAKMAJEGYZEKOSSZEREND szktsz
  WHERE szktsz.TOROLT = 'F' 
    AND szktsz.C_TANEVID = @pAktTanevId
    AND NOT EXISTS (SELECT 1 FROM T_UJSZKTSZAKMAJEGYZEKOSSZEREND_OSSZES u WHERE u.ELOZOTANEVIREKORDID = szktsz.ID and u.C_TANEVID = @pKovTanevId AND u.TOROLT = 'F')
    
INSERT INTO T_NKTOSSZERENDELES(
	 C_OKTATASINEVELESIFELADATID
	,C_SZAKIRANYNKTTIPUSID
	,C_SZAKKEPESITESNKTTIPUSID
	,C_TANULMANYITERULETNKTTIPUSID
	,C_INTEZMENYID
	,C_TANEVID
	,TOROLT
	,SERIAL
	,LASTCHANGED
	,CREATED
	,MODIFIER
	,CREATOR
	,ELOZOTANEVIREKORDID
) SELECT
	 nkt.C_OKTATASINEVELESIFELADATID
	,nkt.C_SZAKIRANYNKTTIPUSID
	,nkt.C_SZAKKEPESITESNKTTIPUSID
	,nkt.C_TANULMANYITERULETNKTTIPUSID
	,nkt.C_INTEZMENYID
	,@pKovTanevId
	,'F' AS TOROLT
  ,0 AS SERIAL
  ,GETDATE() AS LASTCHANGED
  ,GETDATE() AS CREATED
  ,@pFelhasznaloId AS MODIFIER
  ,@pFelhasznaloId AS CREATOR
  ,nkt.ID AS ELOZOTANEVIREKORDID
  FROM T_NKTOSSZERENDELES nkt
  WHERE nkt.TOROLT = 'F' 
    AND nkt.C_TANEVID = @pAktTanevId
    AND NOT EXISTS (SELECT 1 FROM T_NKTOSSZERENDELES_OSSZES u WHERE u.ELOZOTANEVIREKORDID = nkt.ID and u.C_TANEVID = @pKovTanevId AND u.TOROLT = 'F')

INSERT INTO T_REGISZKTOSSZERENDELES(
	 C_AGAZATTIPUSID
	,C_OKTATASINEVELESIFELADATID
	,C_SZAKKEPESITESTIPUSID
	,C_SZAKMACSOPORTTIPUSID
	,C_INTEZMENYID
  ,C_TANEVID
	,TOROLT
	,SERIAL
	,LASTCHANGED
	,CREATED
	,MODIFIER
	,CREATOR
	,ELOZOTANEVIREKORDID
) SELECT
	 rszkt.C_AGAZATTIPUSID
	,rszkt.C_OKTATASINEVELESIFELADATID
	,rszkt.C_SZAKKEPESITESTIPUSID
	,rszkt.C_SZAKMACSOPORTTIPUSID
	,rszkt.C_INTEZMENYID
  ,@pKovTanevId
	,'F' AS TOROLT
  ,0 AS SERIAL
  ,GETDATE() AS LASTCHANGED
  ,GETDATE() AS CREATED
  ,@pFelhasznaloId AS MODIFIER
  ,@pFelhasznaloId AS CREATOR
  ,rszkt.ID AS ELOZOTANEVIREKORDID
  FROM T_REGISZKTOSSZERENDELES rszkt
  WHERE rszkt.TOROLT = 'F' 
    AND rszkt.C_TANEVID = @pAktTanevId
    AND NOT EXISTS (SELECT 1 FROM T_REGISZKTOSSZERENDELES_OSSZES u WHERE u.ELOZOTANEVIREKORDID = rszkt.ID and u.C_TANEVID = @pKovTanevId AND u.TOROLT = 'F')

INSERT INTO T_ESZKOZIGENYLES(
	 C_ASZFELFOGADASIDEJE
	,C_ISELFOGADOTTASZF
	,C_ISESZKOZKIOSZTVA
	,C_ESZKOZIGENYLESSTATUSZID
	,C_GONDVISELOID
	,C_TANULOID
	,C_ALKALMAZOTTID
	,C_FELADATELLATASIHELYID
	,C_INTEZMENYID
	,C_TANEVID
	,TOROLT
	,SERIAL
	,LASTCHANGED
	,CREATED
	,MODIFIER
	,CREATOR
	,ELOZOTANEVIREKORDID
) SELECT
	 ei.C_ASZFELFOGADASIDEJE
	,ei.C_ISELFOGADOTTASZF
	,ei.C_ISESZKOZKIOSZTVA
	,ei.C_ESZKOZIGENYLESSTATUSZID
	,gv.ID AS C_GONDVISELOID
	,fh.ID AS C_TANULOID
	,fh2.ID AS C_ALKALMAZOTTID
	,fe.ID AS C_FELADATELLATASIHELYID
	,ei.C_INTEZMENYID
	,@pKovTanevId
	,ei.TOROLT
  ,0 AS SERIAL
  ,GETDATE() AS LASTCHANGED
  ,GETDATE() AS CREATED
  ,@pFelhasznaloId AS MODIFIER
  ,@pFelhasznaloId AS CREATOR
  ,ei.ID AS ELOZOTANEVIREKORDID
  FROM T_ESZKOZIGENYLES ei
  LEFT JOIN T_GONDVISELO_OSSZES gv ON gv.ELOZOTANEVIREKORDID = ei.C_GONDVISELOID AND gv.TOROLT = 'F'
  LEFT JOIN T_FELHASZNALO_OSSZES fh ON fh.ELOZOTANEVIREKORDID = ei.C_TANULOID AND fh.TOROLT = 'F'
  LEFT JOIN T_FELHASZNALO_OSSZES fh2 ON fh2.ELOZOTANEVIREKORDID = ei.C_ALKALMAZOTTID AND fh2.TOROLT = 'F'
  LEFT JOIN T_FELADATELLATASIHELY fe ON fe.ELOZOTANEVIREKORDID = ei.C_FELADATELLATASIHELYID AND fe.TOROLT = 'F'
  WHERE ei.C_TANEVID = @pAktTanevId
    AND NOT EXISTS (SELECT 1 FROM T_ESZKOZIGENYLES_OSSZES u WHERE u.C_TANEVID = @pKovTanevId AND u.ELOZOTANEVIREKORDID = ei.ID)

INSERT INTO T_TANULASIEGYSEG(
   C_SZAKMATIPUSID
  ,C_SZAKMAIRANYTIPUSID
  ,C_SORSZAM
  ,C_SZOVEG
  ,C_INTEZMENYID
  ,C_TANEVID
	,TOROLT
	,SERIAL
	,LASTCHANGED
	,CREATED
	,MODIFIER
	,CREATOR
	,ELOZOTANEVIREKORDID
) SELECT
	 te.C_SZAKMATIPUSID
	,te.C_SZAKMAIRANYTIPUSID
	,te.C_SORSZAM
	,te.C_SZOVEG
  ,te.C_INTEZMENYID
  ,@pKovTanevId
	,'F' AS TOROLT
  ,0 AS SERIAL
  ,GETDATE() AS LASTCHANGED
  ,GETDATE() AS CREATED
  ,@pFelhasznaloId AS MODIFIER
  ,@pFelhasznaloId AS CREATOR
  ,te.ID AS ELOZOTANEVIREKORDID
  FROM T_TANULASIEGYSEG te
  WHERE te.TOROLT = 'F' 
    AND te.C_TANEVID = @pAktTanevId
    AND NOT EXISTS (SELECT 1 FROM T_TANULASIEGYSEG_OSSZES u WHERE u.C_TANEVID = @pKovTanevId AND u.TOROLT = 'F' AND u.ELOZOTANEVIREKORDID = te.ID)

  ---------- T_DKT_ALKALMAZOTTBEALLITAS ----------
  DECLARE 
     @colInsert nvarchar(max)
    ,@colSelect nvarchar(max)
    ,@sql nvarchar(max)

  SELECT @colInsert = ISNULL(@colInsert + ', ', '') + c.name
  FROM sys.columns c
  INNER JOIN sys.tables t ON t.object_id = c.object_id
  WHERE t.name = 'T_DKT_ALKALMAZOTTBEALLITAS'
    AND c.is_identity = 0
  ORDER BY c.column_id

  SELECT @colSelect = ISNULL(@colSelect + ', ', '') +  
    CASE c.name
      WHEN 'C_TANEVID' THEN '@pKovTanevId'
      WHEN 'SERIAL' THEN '0'
      WHEN 'CREATOR' THEN '0'
      WHEN 'CREATED' THEN 'GETDATE()'
      WHEN 'LASTCHANGED' THEN 'GETDATE()'
      WHEN 'MODIFIER' THEN 'NULL'
      WHEN 'C_ALKALMAZOTTID' THEN 'x.ID'
      ELSE 'b.' + c.name
    END
  FROM sys.columns c
  INNER JOIN sys.tables t ON t.object_id = c.object_id
  WHERE t.name = 'T_DKT_ALKALMAZOTTBEALLITAS'
    AND c.is_identity = 0
  ORDER BY c.column_id
    
  SET @sql = N'
    INSERT INTO T_DKT_ALKALMAZOTTBEALLITAS (' + @colInsert + ')
    SELECT ' + @colSelect + '
    FROM T_DKT_ALKALMAZOTTBEALLITAS b
      INNER JOIN T_ALKALMAZOTT x ON x.ELOZOTANEVIREKORDID = b.C_ALKALMAZOTTID
    WHERE b.C_TANEVID = @pAktTanevId
      AND b.TOROLT = ''F''
      AND x.C_ALTANEVID = @pKovTanevId
      AND NOT EXISTS (SELECT 1 FROM T_DKT_ALKALMAZOTTBEALLITAS u WHERE u.C_TANEVID = @pKovTanevId AND u.C_ALKALMAZOTTID = x.ID AND u.TOROLT = ''F'')
  '
  EXEC sp_executesql @sql, N'@pAktTanevId int ,@pKovTanevId int', @pAktTanevId, @pKovTanevId

  ---------- T_DKT_TANULOBEALLITAS ----------
  SET @colInsert = NULL
  SET @colSelect = NULL
  SET @sql = NULL

  SELECT @colInsert = ISNULL(@colInsert + ', ', '') + c.name
  FROM sys.columns c
  INNER JOIN sys.tables t ON t.object_id = c.object_id
  WHERE t.name = 'T_DKT_TANULOBEALLITAS'
    AND c.is_identity = 0
  ORDER BY c.column_id

  SELECT @colSelect = ISNULL(@colSelect + ', ', '') +  
    CASE c.name
      WHEN 'C_TANEVID' THEN '@pKovTanevId'
      WHEN 'SERIAL' THEN '0'
      WHEN 'CREATOR' THEN '0'
      WHEN 'CREATED' THEN 'GETDATE()'
      WHEN 'LASTCHANGED' THEN 'GETDATE()'
      WHEN 'MODIFIER' THEN 'NULL'
      WHEN 'C_TANULOID' THEN 'x.ID'
      ELSE 'b.' + c.name
    END
  FROM sys.columns c
  INNER JOIN sys.tables t ON t.object_id = c.object_id
  WHERE t.name = 'T_DKT_TANULOBEALLITAS'
    AND c.is_identity = 0
  ORDER BY c.column_id
    
  SET @sql = N'
    INSERT INTO T_DKT_TANULOBEALLITAS (' + @colInsert + ')
    SELECT ' + @colSelect + '
    FROM T_DKT_TANULOBEALLITAS b
      INNER JOIN T_TANULO x ON x.ELOZOTANEVIREKORDID = b.C_TANULOID
    WHERE b.C_TANEVID = @pAktTanevId
      AND b.TOROLT = ''F''
      AND x.C_ALTANEVID = @pKovTanevId
      AND NOT EXISTS (SELECT 1 FROM T_DKT_TANULOBEALLITAS u WHERE u.C_TANEVID = @pKovTanevId AND u.C_TANULOID = x.ID AND u.TOROLT = ''F'')
  '
  EXEC sp_executesql @sql, N'@pAktTanevId int ,@pKovTanevId int', @pAktTanevId, @pKovTanevId

  IF @ValtasDatuma BETWEEN CAST(RIGHT(@TanevNev, 4) + '-04-01' AS DATE) AND CAST(RIGHT(@TanevNev, 4) + '-06-01' AS DATE)
    EXEC dev.uspGenerateNemKivalaszthatoTanev
      @tanevNev = @TanevNeveNew,
      @intezmenyId = @pIntezmenyId,
      @elsoTanitasiNap = @elsoTanitasiNap,
      @utolsoTanitasiNap = @utolsoTanitasiNap

  IF @ValtasDatuma > CAST(RIGHT(@TanevNev, 4) + '-06-01' AS DATE)
    EXEC dev.uspGenerateTanevAdatokFromExistingTanev
      @intezmenyId = @pIntezmenyId,
      @tanevNeveNew = @TanevNeveNew,
      @tanevNeveSource = @TanevNev,
      @kovetkezoTanev = 1

END
GO

