SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO IF OBJECT_ID('dbo.sp_KIRImportTanulok') IS NOT NULL BEGIN DROP PROCEDURE [dbo].[sp_KIRImportTanulok] END GO CREATE PROCEDURE [dbo].[sp_KIRImportTanulok] -- Add the parameters for the stored procedure here @TanulokXML as XML, @intezmenyID int, @tanevID int, @userId int AS BEGIN SET NOCOUNT ON; DECLARE @TantervID int, @userNameGenerateMode int DECLARE @linkTable TABLE ( tempId int, insertedId int, act varchar(10) ) -- XML paraméter értelmezése SELECT ID = Tanulo.value('(ID)[1]', 'int'), OktatasiAzonosito = Tanulo.value('(OktatasiAzonosito)[1]', 'varchar(15)'), KretaKod = Tanulo.value('(KretaKod)[1]', 'varchar(6)'), VezetekNev = Tanulo.value('(ViseltNevVezetekNev)[1]', 'nvarchar(50)'), UtoNev = Tanulo.value('(ViseltNevKeresztNev)[1]', 'nvarchar(50)'), Elotag = Tanulo.value('(ViseltNevElotag)[1]', 'nvarchar(10)'), NevSorrend = Tanulo.value('(ViseltNevNevSorrend)[1]', 'char(1)'), AnyjaNeveElotag = Tanulo.value('(AnyjaNeveElotag)[1]', 'nvarchar(10)'), AnyjaNeveVezetekNev = Tanulo.value('(AnyjaNeveVezetekNev)[1]', 'nvarchar(50)'), AnyjaNeveKeresztNev = Tanulo.value('(AnyjaNeveKeresztNev)[1]', 'nvarchar(50)'), AnyjaNeveNevSorrend = Tanulo.value('(AnyjaNeveNevSorrend)[1]', 'nvarchar(50)'), SzuletesiDatum = Tanulo.value('(SzuletesiDatum)[1]', 'date'), SzuletesiHely = Tanulo.value('(SzuletesiHely)[1]', 'nvarchar(255)'), SzuletesiOrszag = Tanulo.value('(SzuletesiOrszag)[1]', 'int'), Allampolgarsag = Tanulo.value('(Allampolgarsag)[1]', 'int'), Nem = Tanulo.value('(Nem)[1]', 'int'), TAJSzam = Tanulo.value('(TAJSzam)[1]', 'nvarchar(15)'), AllandoLakcimIranyitoSzam = Tanulo.value('(AllandoLakcimIranyitoSzam)[1]', 'nvarchar(10)'), AllandoLakcimTelepules = Tanulo.value('(AllandoLakcimTelepules)[1]', 'nvarchar(255)'), AllandoLakcimKozteruletNev = Tanulo.value('(AllandoLakcimKozteruletNev)[1]', 'nvarchar(255)'), AllandoLakcimKozteruletJelleg = Tanulo.value('number((AllandoLakcimKozteruletJelleg)[1])', 'int'), AllandoLakcimHazszam = Tanulo.value('(AllandoLakcimHazszam)[1]', 'nvarchar(20)'), TartozkodasiCimTelepules = Tanulo.value('(TartozkodasiCimTelepules)[1]', 'nvarchar(255)'), TartozkodasiCimKozteruletNev = Tanulo.value('(TartozkodasiCimKozteruletNev)[1]', 'nvarchar(255)'), TartozkodasiCimKozteruletJelleg = Tanulo.value('number((TartozkodasiCimKozteruletJelleg)[1])', 'int'), TartozkodasiCimHazszam = Tanulo.value('(TartozkodasiCimHazszam)[1]', 'nvarchar(20)'), TartozkodasiCimIranyitoszam = Tanulo.value('(TartozkodasiCimIranyitoSzam)[1]', 'nvarchar(20)'), TankotelezettsegVege = Tanulo.value('(TankotelezettsegVege)[1]', 'date'), TankotelezettsegetTeljesito = Tanulo.value('(TankotelezettsegetTeljesito)[1]', 'char'), SajatosNevelesIgenyu = Tanulo.value('(SajatosNevelesIgenyu)[1]', 'char'), BeilleszkedesselKuzd = Tanulo.value('(BeilleszkedesselKuzd)[1]', 'char'), OMAzonosito = Tanulo.value('(OMAzonosito)[1]', 'nvarchar(20)'), JogviszonyStatusza = Tanulo.value('(JogviszonyStatusza)[1]', 'nvarchar(50)'), JogviszonyKezdete = Tanulo.value('(JogviszonyKezdete)[1]', 'date'), JogviszonyVarBefejezese = Tanulo.value('(JogviszonyVarBefejezese)[1]', 'date'), JogviszonyJellege = Tanulo.value('(JogviszonyJellege)[1]', 'nvarchar(50)'), Vendegtanulo = Tanulo.value('(Vendegtanulo)[1]', 'char'), Magantanulo = Tanulo.value('(Magantanulo)[1]', 'char'), Osztaly = Tanulo.value('(Osztaly)[1]', 'nvarchar(255)'), KeresesiNev = Tanulo.value('(KeresesiNev)[1]', 'nvarchar(255)'), NyomtatasiNev = ltrim(Tanulo.value('(NyomtatasiNev)[1]', 'nvarchar(255)')), Telefonszam = Tanulo.value('(Telefonszam)[1]', 'nvarchar(45)'), AnyjaNeve = Tanulo.value('(AnyjaNeve)[1]', 'nvarchar(255)'), 0 AS isTanulo, 0 TanuloID INTO #tempTanulok FROM @TanulokXML.nodes('/KIRTanulok/ImportaltTanulok/Tanulo') as Tanulok(Tanulo) -- A létező felhasználók ID-ját kitöltjük, és az isTanulot is update-eljük UPDATE t SET t.TanuloID = fh.ID, t.isTanulo = IIF(tn.ID IS NULL, 0, 1) FROM #tempTanulok t INNER JOIN T_FELHASZNALO_OSSZES fh ON t.NyomtatasiNev = fh.C_NYOMTATASINEV AND t.SzuletesiDatum = fh.C_SZULETESIDATUM AND t.SzuletesiHely = fh.C_SZULETESIHELY AND t.AnyjaNeve = fh.C_ANYJANEVE LEFT JOIN T_TANULO_OSSZES tn ON tn.ID = fh.ID WHERE fh.TOROLT = 'F' AND fh.C_TANEVID = @tanevID AND fh.C_INTEZMENYID = @intezmenyID BEGIN TRY BEGIN TRANSACTION DECLARE @CREATED DateTime SET @CREATED = (SELECT GETDATE()) -- FELHASZNÁLÓK INSERTJE VAGY UPDATE-JE AKA MERGE MERGE T_FELHASZNALO_OSSZES trg USING #tempTanulok src ON src.TanuloID = trg.ID AND trg.C_TANEVID = @tanevID WHEN MATCHED AND src.isTanulo = 1 THEN UPDATE SET trg.C_NEME = src.Nem, trg.C_SZULETESIDATUM = src.SzuletesiDatum, trg.C_SZULETESINEV = src.VezetekNev + ' ' + src.UtoNev, trg.C_ANYJANEVE = src.AnyjaNeveVezetekNev + ' ' + src.AnyjaNeveKeresztNev, trg.C_SZULETESIHELY = src.SzuletesiHely, trg.C_ALLAMPOLGARSAGA = src.Allampolgarsag, trg.C_KERESESINEV = src.KeresesiNev, trg.C_SZULETESIORSZAG = src.SzuletesiOrszag, trg.C_SZULETESINEVSORREND = src.NevSorrend, trg.C_ANYJANEVESORREND = src.AnyjaNeveNevSorrend, trg.C_ALAPERTELMEZETTLCID = 1038, trg.C_SZULETESINEVELVALASZTO = len(src.VezetekNev), trg.C_ANYJANEVEELVALASZTO = len(src.AnyjaNeveVezetekNev), trg.C_NYOMTATASINEV = src.NyomtatasiNev, trg.C_UTONEV = src.UtoNev, trg.C_VEZETEKNEV = src.VezetekNev, trg.C_ELOTAG = src.Elotag, trg.C_NEVSORREND = src.NevSorrend, trg.C_NYILVANTARTASKEZDETE = getdate(), trg.C_OMKOD = src.OMAzonosito, trg.C_KRETAKOD = src.KretaKod, trg.TOROLT = 'F', trg.SERIAL = trg.SERIAL + 1, trg.LASTCHANGED = GETDATE(), trg.MODIFIER = @userId, trg.C_OKTATASIAZONOSITO = src.OktatasiAzonosito WHEN NOT MATCHED THEN INSERT ( C_NEME ,C_SZULETESIDATUM ,C_SZULETESINEV ,C_ANYJANEVE ,C_SZULETESIHELY ,C_TAJSZAM ,C_ALLAMPOLGARSAGA ,C_LEIRAS ,C_KERESESINEV ,C_SZULETESIORSZAG ,C_SZULETESINEVSORREND ,C_ANYJANEVESORREND ,C_ALAPERTELMEZETTLCID ,C_SZULETESINEVELVALASZTO ,C_ANYJANEVEELVALASZTO ,C_NYOMTATASINEV ,C_UTONEV ,C_VEZETEKNEV ,C_ELOTAG ,C_NEVSORREND ,C_NYILVANTARTASKEZDETE ,C_OKTATASIAZONOSITO ,C_OMKOD ,C_KRETAKOD ,C_INTEZMENYID ,C_TANEVID ,TOROLT ,SERIAL ,LASTCHANGED ,CREATED ,MODIFIER ,CREATOR) VALUES ( src.Nem ,src.SzuletesiDatum ,src.VezetekNev + ' ' + src.UtoNev ,src.AnyjaNeveVezetekNev + ' ' + src.AnyjaNeveKeresztNev ,src.SzuletesiHely ,src.TAJSzam ,src.Allampolgarsag ,src.JogviszonyJellege ,src.KeresesiNev ,src.SzuletesiOrszag ,src.NevSorrend ,src.AnyjaNeveNevSorrend ,1038 ,len(src.VezetekNev) ,len(src.AnyjaNeveVezetekNev) ,src.NyomtatasiNev ,src.UtoNev ,src.VezetekNev ,src.Elotag ,src.NevSorrend ,src.JogviszonyKezdete ,src.OktatasiAzonosito ,src.OMAzonosito ,src.KretaKod ,@intezmenyID ,@tanevID ,'F' ,1 ,NULL ,@CREATED ,NULL ,@userId ) OUTPUT INSERTED.ID, src.ID, $action INTO @linkTable(insertedID, tempId, act); SET @TantervID = (SELECT MAX(ID) FROM T_TANTERV_OSSZES WHERE C_TANEVID = @tanevID AND TOROLT = 'F') MERGE T_TANULO_OSSZES trg USING ( SELECT t.*, l.insertedId AS insertedID FROM #tempTanulok t INNER JOIN @linkTable l ON t.ID = l.tempID ) src ON src.TanuloID = trg.ID AND trg.C_ALTANEVID = @tanevID AND src.isTanulo = 1 WHEN MATCHED THEN UPDATE SET trg.C_TANKOTELEZETTSEGVEGE = src.TankotelezettsegVege, trg.C_TANKOTELEZETT = src.TankotelezettsegetTeljesito, trg.C_SAJATOSNEVELESU = src.SajatosNevelesIgenyu, trg.C_BTMPROBLEMAS = src.BeilleszkedesselKuzd, trg.C_JOGVISZONYVARHATOBEFEJEZESE = src.JogviszonyVarBefejezese, trg.C_VENDEG = src.Vendegtanulo, trg.C_MAGANTANULO = src.Magantanulo, trg.C_JOGVISZONYATSZUNETELTETO = src.JogviszonyStatusza, trg.C_FELVETELTANEVEID = @tanevID, trg.C_TANTERVID = @TantervId, trg.TOROLT = 'F', trg.SERIAL = trg.SERIAL + 1, trg.LASTCHANGED = GETDATE(), trg.MODIFIER = @userId WHEN NOT MATCHED THEN INSERT ( ID ,C_TANKOTELEZETTSEGVEGE ,C_TANKOTELEZETT ,C_SAJATOSNEVELESU ,C_BTMPROBLEMAS ,C_JOGVISZONYVARHATOBEFEJEZESE ,C_VENDEG ,C_MAGANTANULO ,C_JOGVISZONYATSZUNETELTETO ,C_FELVETELTANEVEID ,C_TANTERVID ,C_ALINTEZMENYID ,C_ALTANEVID ,TOROLT ,SERIAL ,LASTCHANGED ,CREATED ,MODIFIER ,CREATOR ) VALUES ( src.insertedID ,src.TankotelezettsegVege ,src.TankotelezettsegetTeljesito ,src.SajatosNevelesIgenyu ,src.BeilleszkedesselKuzd ,src.JogviszonyVarBefejezese ,src.Vendegtanulo ,src.Magantanulo ,src.JogviszonyStatusza ,@tanevID ,@TantervId ,@intezmenyID ,@tanevID ,'F' ,1 ,NULL ,@CREATED ,NULL ,@userId ); --TODO: GENERATE SALT -------FELHASZNALO BELEPES-------- /*SET @userNameGenerateMode = dbo.fnGetRendszerbeallitasEnumBool(2885, @intezmenyID, @tanevID) IF @userNameGenerateMode <> 3 BEGIN INSERT INTO [T_FELHASZNALOBELEPES_OSSZES] ( [C_JELSZO], [C_BEJELENTKEZESINEV], [C_FELHASZNALOID], [C_INTEZMENYID], [C_TANEVID], [TOROLT], [SERIAL], [LASTCHANGED], [CREATED], [MODIFIER], [CREATOR], [C_GUID] ) SELECT CONVERT(nvarchar(8), fh.C_SZULETESIDATUM,112), CASE @userNameGenerateMode WHEN 1 THEN fh.C_OKTATASIAZONOSITO WHEN 2 THEN fh.C_KRETAKOD ELSE NULL END, fh.ID, @intezmenyID, @tanevID, 'F', 1, NULL, @CREATED, NULL, @userId, (select NEWID()) FROM #tempTanulok t INNER JOIN @linkTable l ON t.ID = l.tempID INNER JOIN T_FELHASZNALO_OSSZES fh ON fh.ID = l.insertedId WHERE C_TANEVID = @tanevID AND NOT EXISTS (SELECT 1 FROM T_FELHASZNALOBELEPES_OSSZES belepes WHERE belepes.C_FELHASZNALOID = fh.ID AND belepes.C_GONDVISELOID IS NULL) END*/ --------FELHASZNALO SZEREPKÖR----------- DELETE FROM T_FELHASZNALO_SZEREPKOR WHERE T_FELHASZNALO_SZEREPKOR.[C_FELHASZNALOID] IN (SELECT TanuloID FROM #tempTanulok WHERE TanuloID > 0) INSERT INTO T_FELHASZNALO_SZEREPKOR (C_FELHASZNALOID, C_SZEREPKORID) SELECT l.insertedId, (SELECT ID FROM T_SZEREPKOR_OSSZES WHERE C_SZEREPKORTIPUS = '1761' AND C_TANEVID = @tanevID) FROM #tempTanulok t INNER JOIN @linkTable l ON t.ID = l.tempID INNER JOIN T_FELHASZNALO_OSSZES fh ON fh.ID = l.insertedId WHERE C_TANEVID = @tanevID ----- Telefonszám ----- MERGE T_TELEFON_OSSZES trg USING ( SELECT t.*, l.insertedId AS insertedID FROM #tempTanulok t INNER JOIN @linkTable l ON t.ID = l.tempID --AND C_ALAPERTELMEZETT = 'T' WHERE t.Telefonszam IS NOT NULL AND t.Telefonszam <> '' ) src ON src.TanuloID = trg.C_FELHASZNALOID AND trg.C_TANEVID = @tanevID AND src.isTanulo = 1 AND trg.C_ALAPERTELMEZETT = 'T' WHEN MATCHED THEN UPDATE SET trg.C_TELEFONSZAM = src.Telefonszam, trg.TOROLT = 'F', trg.SERIAL = trg.SERIAL + 1, trg.LASTCHANGED = GETDATE(), trg.MODIFIER = @userId WHEN NOT MATCHED THEN INSERT ( C_TELEFONTIPUSA ,C_TELEFONSZAM ,C_LEIRAS ,C_ALAPERTELMEZETT ,C_GONDVISELOID ,C_FELHASZNALOID ,C_INTEZMENYID ,C_TANEVID ,TOROLT ,SERIAL ,LASTCHANGED ,CREATED ,MODIFIER ,CREATOR ) VALUES ( 1019 -- C_TELEFONTIPUSA - int ,src.Telefonszam -- C_TELEFONSZAM - nvarchar(100) ,N'' -- C_LEIRAS - nvarchar(50) ,'T' -- C_ALAPERTELMEZETT - char(1) ,NULL -- C_GONDVISELOID - int ,src.insertedID -- C_FELHASZNALOID - int ,@intezmenyID -- C_INTEZMENYID - int ,@tanevID -- C_TANEVID - int ,'F' -- TOROLT - char(1) ,1 -- SERIAL - int ,NULL -- LASTCHANGED - datetime ,@CREATED -- CREATED - datetime ,NULL -- MODIFIER - int ,@userId -- CREATOR - int ); ----- TARTÓZKODÁSI HELY ----- MERGE T_CIM_OSSZES trg USING ( SELECT t.*, l.insertedId AS insertedID FROM #tempTanulok t INNER JOIN @linkTable l ON t.ID = l.tempID WHERE t.TartozkodasiCimIranyitoszam IS NOT NULL AND t.TartozkodasiCimIranyitoszam <> '' ) src ON src.TanuloID = trg.C_FELHASZNALOID AND trg.C_TANEVID = @tanevID AND src.isTanulo = 1 AND trg.C_CIMTIPUSA = 908 WHEN MATCHED THEN UPDATE SET trg.C_CIMTIPUSA = 908, trg.C_ORSZAG = 765, trg.C_IRANYITOSZAM = src.TartozkodasiCimIranyitoszam, trg.C_VAROS = src.TartozkodasiCimTelepules, trg.C_KOZTERULET = src.TartozkodasiCimKozteruletNev, trg.C_KOZTERULETJELLEGE = src.TartozkodasiCimKozteruletJelleg, trg.C_HAZSZAM = src.TartozkodasiCimHazszam, trg.C_FELHASZNALOID = src.insertedId, trg.TOROLT = 'F', trg.SERIAL = trg.SERIAL + 1, trg.LASTCHANGED = GETDATE(), trg.MODIFIER = @userId WHEN NOT MATCHED THEN INSERT ( C_CIMTIPUSA ,C_ORSZAG ,C_IRANYITOSZAM ,C_VAROS ,C_KOZTERULET ,C_KOZTERULETJELLEGE ,C_HAZSZAM ,C_FELHASZNALOID ,C_INTEZMENYID ,C_TANEVID ,TOROLT ,SERIAL ,LASTCHANGED ,CREATED ,MODIFIER ,CREATOR ) VALUES ( 908 ,765 ,src.TartozkodasiCimIranyitoszam ,src.TartozkodasiCimTelepules ,src.TartozkodasiCimKozteruletNev ,src.TartozkodasiCimKozteruletJelleg ,src.TartozkodasiCimHazszam ,src.insertedID ,@intezmenyID ,@tanevID ,'F' ,1 ,NULL ,@CREATED ,NULL ,@userId ); ----- TARTÓZKODÁSI HELY ----- MERGE T_CIM_OSSZES trg USING ( SELECT t.*, l.insertedId AS insertedID FROM #tempTanulok t INNER JOIN @linkTable l ON t.ID = l.tempID ) src ON src.TanuloID = trg.C_FELHASZNALOID AND trg.C_TANEVID = @tanevID AND src.isTanulo = 1 AND trg.C_CIMTIPUSA = 907 WHEN MATCHED THEN UPDATE SET trg.C_CIMTIPUSA = 907, trg.C_ORSZAG = 765, trg.C_IRANYITOSZAM = src.AllandoLakcimIranyitoSzam, trg.C_VAROS = src.AllandoLakcimTelepules, trg.C_KOZTERULET = src.AllandoLakcimKozteruletNev, trg.C_KOZTERULETJELLEGE = src.AllandoLakcimKozteruletJelleg, trg.C_HAZSZAM = src.AllandoLakcimHazszam, trg.C_FELHASZNALOID = src.insertedId, trg.TOROLT = 'F', trg.SERIAL = trg.SERIAL + 1, trg.LASTCHANGED = GETDATE(), trg.MODIFIER = @userId WHEN NOT MATCHED THEN INSERT ( C_CIMTIPUSA ,C_ORSZAG ,C_IRANYITOSZAM ,C_VAROS ,C_KOZTERULET ,C_KOZTERULETJELLEGE ,C_HAZSZAM ,C_FELHASZNALOID ,C_INTEZMENYID ,C_TANEVID ,TOROLT ,SERIAL ,LASTCHANGED ,CREATED ,MODIFIER ,CREATOR ) VALUES ( 907 ,765 ,src.AllandoLakcimIranyitoSzam ,src.AllandoLakcimTelepules ,src.AllandoLakcimKozteruletNev ,src.AllandoLakcimKozteruletJelleg ,src.AllandoLakcimHazszam ,src.insertedID ,@intezmenyID ,@tanevID ,'F' ,1 ,NULL ,@CREATED ,NULL ,@userId ); ----- E-mail cím ----- MERGE T_EMAIL_OSSZES USING ( SELECT #tempTanulok.*, linkTable.insertedId AS insertedID FROM #tempTanulok INNER JOIN @linkTable linkTable ON #tempTanulok.ID = linkTable.tempID --AND C_ALAPERTELMEZETT = 'T' WHERE #tempTanulok.EmailCim IS NOT NULL AND #tempTanulok.EmailCim <> '' ) src ON T_EMAIL_OSSZES.C_FELHASZNALOID = src.TanuloID AND T_EMAIL_OSSZES.C_TANEVID = @tanevID AND src.isTanulo = 1 AND T_EMAIL_OSSZES.C_ALAPERTELMEZETT = 'T' WHEN MATCHED THEN UPDATE SET T_EMAIL_OSSZES.C_EMAILCIM = src.EmailCim, T_EMAIL_OSSZES.TOROLT = 'F', T_EMAIL_OSSZES.SERIAL = T_EMAIL_OSSZES.SERIAL + 1, T_EMAIL_OSSZES.LASTCHANGED = GETDATE(), T_EMAIL_OSSZES.MODIFIER = @userId WHEN NOT MATCHED THEN INSERT ( C_EMAILTIPUSA ,C_EMAILCIM ,C_ALAPERTELMEZETT ,C_GONDVISELOID ,C_FELHASZNALOID ,C_INTEZMENYID ,C_TANEVID ,TOROLT ,SERIAL ,LASTCHANGED ,CREATED ,MODIFIER ,CREATOR ) VALUES ( 1024 -- C_EMAILTIPUSA - int NA ,src.EmailCim -- C_EMAILCIM - nvarchar(100) ,'T' -- C_ALAPERTELMEZETT - char(1) ,NULL -- C_GONDVISELOID - int ,src.insertedID -- C_FELHASZNALOID - int ,@intezmenyID -- C_INTEZMENYID - int ,@tanevID -- C_TANEVID - int ,'F' -- TOROLT - char(1) ,1 -- SERIAL - int ,NULL -- LASTCHANGED - datetime ,@CREATED -- CREATED - datetime ,NULL -- MODIFIER - int ,@userId -- CREATOR - int ); COMMIT TRANSACTION END TRY BEGIN CATCH IF @@TRANCOUNT > 0 AND XACT_STATE() <> 0 ROLLBACK TRANSACTION; THROW END CATCH END