960 lines
32 KiB
Transact-SQL
960 lines
32 KiB
Transact-SQL
IF OBJECT_ID('sp_ImportASC') IS NOT NULL BEGIN
|
|
DROP PROCEDURE sp_ImportASC
|
|
END
|
|
GO
|
|
|
|
CREATE PROCEDURE sp_ImportASC
|
|
@importXml xml,
|
|
@regiTorlese bit,
|
|
-- @ttf bit,
|
|
@ervenyessegMegadva bit,
|
|
@feladatellatasiHelyId int,
|
|
@tanevId int,
|
|
@intezmenyId int,
|
|
@userId int
|
|
AS
|
|
BEGIN
|
|
SET NOCOUNT ON
|
|
SET XACT_ABORT ON
|
|
|
|
DECLARE @mukodsesiHely int
|
|
|
|
DECLARE @osztalyCsoport table (
|
|
osztalyCsoportID nvarchar(32),
|
|
nev nvarchar(100),
|
|
osztalyCsoport varchar(2),
|
|
id int
|
|
)
|
|
|
|
INSERT INTO @osztalyCsoport (osztalyCsoportID, nev, osztalyCsoport)
|
|
SELECT
|
|
sor.value('(OsztalyId)[1]', 'nvarchar(32)') AS osztalcsoportId,
|
|
sor.value('(Nev)[1]', 'varchar(100)') AS nev,
|
|
'O'
|
|
FROM @importXml.nodes('/AscImport/OsztalyLista/Osztaly') as sorok(sor)
|
|
|
|
INSERT INTO @osztalyCsoport (osztalyCsoportID, nev, osztalyCsoport)
|
|
SELECT
|
|
sor.value('(Id)[1]', 'nvarchar(32)') AS osztalcsoportId,
|
|
sor.value('(Nev)[1]', 'varchar(100)') AS nev,
|
|
'CS'
|
|
FROM @importXml.nodes('/AscImport/CsoportLista/Csoport') as sorok(sor)
|
|
|
|
UPDATE x
|
|
SET x.id = ocs.ID
|
|
FROM @osztalyCsoport x
|
|
INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON x.nev = ocs.C_NEV AND ocs.C_TANEVID = @tanevId
|
|
WHERE ocs.TOROLT = 'F'
|
|
|
|
DECLARE @tantargy table (
|
|
tantargyId nvarchar(32),
|
|
nev nvarchar(100),
|
|
osztalyCsoport varchar(2),
|
|
id int
|
|
)
|
|
|
|
INSERT INTO @tantargy (tantargyId, nev)
|
|
SELECT
|
|
sor.value('(TantargyId)[1]', 'nvarchar(32)') AS tantargyId,
|
|
sor.value('(Nev)[1]', 'varchar(100)') AS nev
|
|
FROM @importXml.nodes('/AscImport/TantargyLista/Tantargy') as sorok(sor)
|
|
|
|
UPDATE x
|
|
SET x.id = t.ID
|
|
FROM @tantargy x
|
|
INNER JOIN T_TANTARGY_OSSZES t ON x.nev = t.C_NEV AND t.C_TANEVID = @tanevId
|
|
WHERE t.TOROLT = 'F'
|
|
|
|
/* TEREM temp TÁBLÁBA */
|
|
DECLARE @terem TABLE (
|
|
teremId nvarchar(32),
|
|
nev nvarchar(255),
|
|
kapacitas int,
|
|
id int
|
|
)
|
|
|
|
INSERT INTO @terem (teremId, nev, kapacitas)
|
|
SELECT
|
|
sor.value('(TeremId)[1]', 'nvarchar(32)') AS teremId,
|
|
sor.value('(Nev)[1]', 'nvarchar(255)') AS nev,
|
|
sor.value('(Kapacitas)[1]', 'int') AS kapacitas
|
|
FROM @importXml.nodes('/AscImport/TeremLista/Terem') as sorok(sor)
|
|
|
|
|
|
UPDATE x
|
|
SET x.id = t.ID
|
|
FROM @terem x
|
|
INNER JOIN T_TEREM_OSSZES t ON x.nev = t.C_NEV AND t.C_TANEVID = @tanevId
|
|
WHERE t.TOROLT = 'F'
|
|
|
|
/* HETIREND temp TÁBLÁBA */
|
|
DECLARE @hetirend TABLE (
|
|
hetirendId nvarchar(32),
|
|
nev nvarchar(255),
|
|
id int
|
|
)
|
|
|
|
INSERT INTO @hetirend (hetirendId, nev)
|
|
SELECT
|
|
sor.value('(HetirendId)[1]', 'nvarchar(32)') AS hetirendId,
|
|
sor.value('(Nev)[1]', 'nvarchar(255)') AS nev
|
|
FROM @importXml.nodes('/AscImport/HetirendLista/Hetirend') as sorok(sor)
|
|
|
|
|
|
UPDATE x
|
|
SET x.id = d.ID
|
|
FROM @hetirend x
|
|
INNER JOIN T_DICTIONARYITEMBASE_OSSZES d ON x.nev = d.C_NAME AND d.C_TANEVID = @tanevId AND C_TYPE = 'HetiRendTipus'
|
|
|
|
/* CSENGETÉSIREND temp TÁBLÁBA */
|
|
DECLARE @csengetesiRendOra TABLE (
|
|
csengetesiRendOraId nvarchar(32),
|
|
starttime time,
|
|
endtime time,
|
|
sorszam int,
|
|
id int
|
|
)
|
|
|
|
INSERT INTO @csengetesiRendOra (csengetesiRendOraId, starttime, endtime, sorszam)
|
|
SELECT
|
|
sor.value('(CsengetesiRendOraId)[1]', 'nvarchar(32)') AS csengetesiRendOraId,
|
|
sor.value('(Starttime)[1]', 'time') AS starttime,
|
|
sor.value('(Endtime)[1]', 'time') AS endtime,
|
|
sor.value('(Sorszam)[1]', 'int') AS sorszam
|
|
FROM @importXml.nodes('/AscImport/CsengetesiRendOraLista/CsengetesiRendOra') as sorok(sor)
|
|
|
|
UPDATE x
|
|
SET x.id = cs.ID
|
|
FROM @csengetesiRendOra x
|
|
INNER JOIN T_CSENGETESIRENDORA_OSSZES cs ON x.sorszam = cs.C_ORASZAM AND cs.C_TANEVID = @tanevId
|
|
WHERE cs.C_CSENGETESIRENDID = (SELECT MIN(ID) FROM T_CSENGETESIREND_OSSZES csr WHERE /*csr.C_IMPORTALT = 'T' AND*/ csr.C_TANEVID = @tanevId)
|
|
|
|
|
|
DECLARE @tanar TABLE (
|
|
tanarId nvarchar(32),
|
|
nev nvarchar(100),
|
|
id int
|
|
)
|
|
|
|
INSERT INTO @tanar (tanarId, nev)
|
|
SELECT
|
|
sor.value('(Id)[1]', 'nvarchar(32)') AS tanarId,
|
|
sor.value('(Nev)[1]', 'varchar(100)') AS tanarNev
|
|
FROM @importXml.nodes('/AscImport/TanarLista/Tanar') as sorok(sor)
|
|
|
|
UPDATE x
|
|
SET x.id = f.ID
|
|
FROM @tanar x
|
|
INNER JOIN T_FELHASZNALO_OSSZES f ON f.C_NYOMTATASINEV = x.nev
|
|
WHERE EXISTS (SELECT 1 FROM T_ALKALMAZOTT_OSSZES a WHERE a.ID = f.ID AND a.C_ALINTEZMENYID = f.C_INTEZMENYID AND a.C_ALTANEVID = f.C_TANEVID)
|
|
AND C_TANEVID = @tanevId
|
|
AND C_INTEZMENYID = @intezmenyId
|
|
|
|
|
|
/* ÓRARENDIÓRA temp TÁBLÁBA */
|
|
DECLARE @orarendiOra TABLE (
|
|
teremID nvarchar(32),
|
|
tanarID nvarchar(32),
|
|
hetNapja nvarchar(10),
|
|
hetirendID nvarchar(32),
|
|
osztalyID nvarchar(32),
|
|
csoportID nvarchar(32),
|
|
tantargyID nvarchar(32),
|
|
hetiOraszam float,
|
|
sorszam int,
|
|
ervenyessegKezdete datetime,
|
|
ervenyessegVege datetime
|
|
)
|
|
|
|
INSERT INTO @orarendiOra (
|
|
teremID,
|
|
tanarID,
|
|
hetNapja,
|
|
hetirendID,
|
|
osztalyID,
|
|
csoportID,
|
|
tantargyID,
|
|
hetiOraszam,
|
|
sorszam,
|
|
ervenyessegKezdete,
|
|
ervenyessegVege
|
|
)
|
|
SELECT
|
|
sor.value('(TeremId)[1]', 'nvarchar(32)') AS teremID,
|
|
sor.value('(TanarId)[1]', 'nvarchar(32)') AS tanarID,
|
|
sor.value('(HetNapja)[1]', 'nvarchar(10)') AS hetNapja,
|
|
sor.value('(HetirendId)[1]', 'nvarchar(32)') AS hetirendID,
|
|
NULLIF(sor.value('(OsztalyId)[1]', 'nvarchar(32)'), '') AS osztalyID,
|
|
NULLIF(sor.value('(CsoportId)[1]', 'nvarchar(32)'), '') AS csoportID,
|
|
sor.value('(TantargyId)[1]', 'nvarchar(32)') AS tantargyID,
|
|
sor.value('(HetiOraszam)[1]', 'float') AS hetiOraszam,
|
|
sor.value('(Sorszam)[1]', 'int') AS sorszam,
|
|
sor.value('(ErvenyessegKezdete)[1]', 'datetime') AS ervenyessegKezdete,
|
|
IIF(sor.value('(ErvenyessegVege)[1]', 'datetime') = '19000101', NULL, sor.value('(ErvenyessegVege)[1]', 'datetime')) AS ervenyessegVege
|
|
FROM @importXml.nodes('/AscImport/OrarendiOraLista/OrarendiOra') as sorok(sor)
|
|
|
|
|
|
DECLARE
|
|
@utolsoTannap datetime
|
|
,@utolsoTannapVegzos datetime
|
|
|
|
-- Utolsó tanitási nap
|
|
SELECT @utolsoTannap = C_DATUM + 1
|
|
FROM T_TANEVRENDJE_OSSZES
|
|
WHERE C_NAPTIPUSA = 1395
|
|
AND C_INTEZMENYID = @intezmenyId
|
|
AND C_TANEVID = @tanevId
|
|
|
|
-- Utolsó tanitási nap végzősöknek
|
|
SELECT @utolsoTannapVegzos = C_DATUM + 1
|
|
FROM T_TANEVRENDJE_OSSZES
|
|
WHERE C_NAPTIPUSA = 1402
|
|
AND C_TANEVID = @tanevId
|
|
AND C_INTEZMENYID = @intezmenyId
|
|
|
|
|
|
UPDATE o
|
|
SET ervenyessegVege = CASE WHEN ocsk.C_VEGZOSEVFOLYAM = 'F' THEN @utolsoTannap ELSE @utolsoTannapVegzos END
|
|
FROM @orarendiOra o
|
|
INNER JOIN @osztalyCsoport ocs ON o.osztalyID = ocs.osztalyCsoportID
|
|
INNER JOIN T_OSZTALYCSOPORT_OSSZES ocsk ON ocs.id = ocsk.ID
|
|
WHERE ocs.osztalyCsoport = 'O'
|
|
AND ervenyessegVege IS NULL
|
|
AND ocsk.C_TANEVID = @tanevId
|
|
|
|
UPDATE @orarendiOra
|
|
SET ervenyessegVege = @utolsoTannap
|
|
WHERE ervenyessegVege IS NULL
|
|
|
|
DECLARE @linkTable TABLE (
|
|
insertedID int, tempId nvarchar(32), act nvarchar(20)
|
|
)
|
|
|
|
BEGIN TRY
|
|
BEGIN TRANSACTION
|
|
|
|
SELECT @mukodsesiHely = MIN(ID) FROM T_MUKODESIHELY_OSSZES WHERE C_TANEVID = @tanevId
|
|
|
|
MERGE T_TEREM_OSSZES trg
|
|
USING (
|
|
SELECT * FROM @terem WHERE nev <> '-') src ON src.ID = trg.ID AND trg.C_TANEVID = @tanevId
|
|
WHEN MATCHED THEN
|
|
UPDATE SET
|
|
trg.C_KAPACITAS = src.kapacitas
|
|
,trg.SERIAL = trg.SERIAL + 1
|
|
,trg.LASTCHANGED = GETDATE()
|
|
,trg.MODIFIER = @userId
|
|
WHEN NOT MATCHED THEN
|
|
INSERT (
|
|
C_JELLEG
|
|
,C_NEV
|
|
,C_MUKODESIHELYID
|
|
,C_INTEZMENYID
|
|
,C_TANEVID
|
|
,TOROLT
|
|
,SERIAL
|
|
,LASTCHANGED
|
|
,CREATED
|
|
,MODIFIER
|
|
,CREATOR
|
|
) VALUES (
|
|
181 -- osztályterem
|
|
,src.nev
|
|
,@mukodsesiHely
|
|
,@intezmenyId
|
|
,@tanevId
|
|
,'F'
|
|
,0
|
|
,NULL
|
|
,GETDATE()
|
|
,@userId
|
|
,@userId
|
|
)
|
|
OUTPUT INSERTED.ID, src.teremId, $action
|
|
INTO @linkTable(insertedID, tempId, act);
|
|
|
|
UPDATE x
|
|
SET x.id = y.insertedID
|
|
FROM @terem x
|
|
INNER JOIN @linkTable y ON x.teremId = y.tempId
|
|
WHERE x.ID IS NULL
|
|
|
|
DELETE FROM @linktable
|
|
|
|
|
|
SET @feladatellatasiHelyId = ISNULL(@feladatellatasiHelyId,
|
|
(SELECT MIN(ID)
|
|
FROM T_FELADATELLATASIHELY_OSSZES
|
|
WHERE C_INTEZMENYID = @intezmenyID
|
|
AND C_TANEVID = @tanevID)
|
|
)
|
|
|
|
MERGE T_OSZTALYCSOPORT_OSSZES trg
|
|
USING (SELECT * FROM @osztalyCsoport WHERE ID IS NULL) src ON 1 = 2
|
|
WHEN NOT MATCHED THEN
|
|
INSERT (
|
|
C_MEGJEGYZES
|
|
,C_NEV
|
|
,C_VEGZOSEVFOLYAM
|
|
,C_EVFOLYAMTIPUSA
|
|
,C_IMPORTALT
|
|
,C_TERVEZETTLETSZAM
|
|
,C_TEREMID
|
|
,C_FELADATELLATASIHELYID
|
|
,C_INTEZMENYID
|
|
,C_TANEVID
|
|
,TOROLT
|
|
,SERIAL
|
|
,LASTCHANGED
|
|
,CREATED
|
|
,MODIFIER
|
|
,CREATOR
|
|
) VALUES (
|
|
NULL -- C_MEGJEGYZES - nvarchar(255)
|
|
,src.nev -- C_NEV - nvarchar(255)
|
|
,'F' -- C_VEGZOSEVFOLYAM - char(1)
|
|
,NULL -- C_EVFOLYAMTIPUSA - int
|
|
,'T' -- C_IMPORTALT - char(1)
|
|
,NULL -- C_TERVEZETTLETSZAM - int
|
|
,NULL -- C_TEREMID - int
|
|
,@feladatellatasiHelyId -- C_FELADATELLATASIHELYID - int
|
|
,@intezmenyId -- C_INTEZMENYID - int
|
|
,@tanevId -- C_TANEVID - int
|
|
,'F' -- TOROLT - char(1)
|
|
,0 -- SERIAL - int
|
|
,GETDATE() -- LASTCHANGED - datetime
|
|
,GETDATE() -- CREATED - datetime
|
|
,@userId -- MODIFIER - int
|
|
,@userId -- CREATOR - int
|
|
)
|
|
OUTPUT INSERTED.ID, src.osztalycsoportId, $action
|
|
INTO @linkTable(insertedID, tempId, act);
|
|
|
|
UPDATE x
|
|
SET x.id = y.insertedID
|
|
FROM @osztalyCsoport x
|
|
INNER JOIN @linkTable y ON x.osztalycsoportId = y.tempId
|
|
WHERE x.ID IS NULL
|
|
|
|
|
|
INSERT INTO T_OSZTALY_OSSZES (
|
|
ID
|
|
,C_KEPZESIFORMA
|
|
,C_OSZTALYNAPLOLEIRASA
|
|
,C_OSZTALYNAPLOMEGNYITASA
|
|
,C_OSZTALYNAPLOZARASA
|
|
,C_OSZTALYFONOKID
|
|
,C_OFOHELYETTESID
|
|
,C_TANTERVID
|
|
,C_ALINTEZMENYID
|
|
,C_ALTANEVID
|
|
,TOROLT
|
|
,SERIAL
|
|
,LASTCHANGED
|
|
,CREATED
|
|
,MODIFIER
|
|
,CREATOR
|
|
) SELECT
|
|
x.id AS ID -- ID - int
|
|
,1096 AS C_KEPZESIFORMA -- C_KEPZESIFORMA - int
|
|
,NULL AS C_OSZTALYNAPLOLEIRASA -- C_OSZTALYNAPLOLEIRASA - nvarchar(MAX)
|
|
,NULL AS C_OSZTALYNAPLOMEGNYITASA -- C_OSZTALYNAPLOMEGNYITASA - datetime
|
|
,NULL AS C_OSZTALYNAPLOZARASA -- C_OSZTALYNAPLOZARASA - datetime
|
|
,NULL AS C_OSZTALYFONOKID -- C_OSZTALYFONOKID - int
|
|
,NULL AS C_OFOHELYETTESID -- C_OFOHELYETTESID - int
|
|
,NULL AS C_TANTERVID -- C_TANTERVID - int
|
|
,@intezmenyId AS C_ALINTEZMENYID -- C_ALINTEZMENYID - int
|
|
,@tanevId AS C_ALTANEVID -- C_ALTANEVID - int
|
|
,'F' AS TOROLT -- TOROLT - char(1)
|
|
,0 AS SERIAL -- SERIAL - int
|
|
,GETDATE() AS LASTCHANGED -- LASTCHANGED - datetime
|
|
,GETDATE() AS CREATED -- CREATED - datetime
|
|
,@userId AS MODIFIER -- MODIFIER - int
|
|
,@userId AS CREATOR -- CREATOR - int
|
|
FROM @osztalyCsoport x
|
|
INNER JOIN @linktable y ON x.id = y.insertedID
|
|
WHERE osztalyCsoport = 'O'
|
|
|
|
|
|
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
|
|
x.id AS ID -- ID - int
|
|
,1031 AS C_TIPUSA -- 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
|
|
,NULL AS C_OSZTALYBONTASID -- C_OSZTALYBONTASID - int
|
|
,@intezmenyId AS C_ALINTEZMENYID -- C_ALINTEZMENYID - int
|
|
,@tanevId AS C_ALTANEVID -- C_ALTANEVID - int
|
|
,'F' AS TOROLT -- TOROLT - char(1)
|
|
,0 AS SERIAL -- SERIAL - int
|
|
,GETDATE() AS LASTCHANGED -- LASTCHANGED - datetime
|
|
,GETDATE() AS CREATED -- CREATED - datetime
|
|
,@userId AS MODIFIER -- MODIFIER - int
|
|
,@userId AS CREATOR -- CREATOR - int
|
|
FROM @osztalyCsoport x
|
|
INNER JOIN @linktable y ON x.id = y.insertedID
|
|
WHERE osztalyCsoport = 'CS'
|
|
|
|
DELETE FROM @linktable
|
|
|
|
|
|
MERGE T_TANTARGY_OSSZES trg
|
|
USING (SELECT * FROM @tantargy WHERE ID IS NULL) src ON 1 = 2
|
|
WHEN NOT MATCHED THEN
|
|
INSERT (
|
|
C_GYAKORLATI
|
|
,C_NEV
|
|
,C_ROVIDNEV
|
|
,C_TARGYKATEGORIA
|
|
,C_ALTANTARGYKENTNYOMTATVANYBAN
|
|
,C_NEVNYOMTATVANYBAN
|
|
,C_TANORANKIVULI
|
|
,C_IMPORTALT
|
|
,C_FOTARGYE
|
|
,C_FOTARGYID
|
|
,C_INTEZMENYID
|
|
,C_TANEVID
|
|
,TOROLT
|
|
,SERIAL
|
|
,LASTCHANGED
|
|
,CREATED
|
|
,MODIFIER
|
|
,CREATOR
|
|
) VALUES (
|
|
'F' -- C_GYAKORLATI - char(1)
|
|
,nev -- C_NEV - nvarchar(255)
|
|
,LEFT(nev, 20) -- C_ROVIDNEV - nvarchar(20)
|
|
,1197 -- C_TARGYKATEGORIA - int
|
|
,NULL -- C_ALTANTARGYKENTNYOMTATVANYBAN - char(1)
|
|
,NULL -- C_NEVNYOMTATVANYBAN - nvarchar(255)
|
|
,'F' -- C_TANORANKIVULI - char(1)
|
|
,'T' -- C_IMPORTALT - char(1)
|
|
,'F' -- C_FOTARGYE - char(1)
|
|
,NULL -- C_FOTARGYID - int
|
|
,@intezmenyId -- C_INTEZMENYID - int
|
|
,@tanevId -- C_TANEVID - int
|
|
,'F' -- TOROLT - char(1)
|
|
,0 -- SERIAL - int
|
|
,GETDATE() -- LASTCHANGED - datetime
|
|
,GETDATE() -- CREATED - datetime
|
|
,@userId -- MODIFIER - int
|
|
,@userId -- CREATOR - int
|
|
)
|
|
OUTPUT INSERTED.ID, src.tantargyId, $action
|
|
INTO @linkTable(insertedID, tempId, act);
|
|
|
|
UPDATE x
|
|
SET x.id = y.insertedID
|
|
FROM @tantargy x
|
|
INNER JOIN @linkTable y ON x.tantargyId = y.tempId
|
|
WHERE x.ID IS NULL
|
|
|
|
|
|
DELETE FROM @linktable
|
|
|
|
DECLARE @foglalkozas TABLE (
|
|
foglalozasId int IDENTITY(1, 1)
|
|
,tantargyId int
|
|
,tanarId int
|
|
,osztalyCsoportId int
|
|
,hetiOraszam float
|
|
,nev nvarchar(255)
|
|
,id int
|
|
)
|
|
|
|
INSERT INTO @foglalkozas (
|
|
tantargyId
|
|
,tanarId
|
|
,osztalyCsoportId
|
|
,hetiOraszam
|
|
,nev
|
|
,id
|
|
) SELECT
|
|
tt.ID
|
|
,fh.ID
|
|
,ISNULL(cs.ID, o.ID)
|
|
,oraszam
|
|
,tt.nev + ' - ' + ISNULL(cs.nev, o.nev) + ' - ' + x.tanar AS nev
|
|
,x.existItemId AS id
|
|
FROM (
|
|
SELECT
|
|
NULLIF(sor.value('(osztaly)[1]', 'nvarchar(32)'), '') AS osztaly
|
|
,NULLIF(sor.value('(csoport)[1]', 'nvarchar(32)'), '') AS csoport
|
|
,sor.value('(tantargy)[1]', 'nvarchar(32)') AS tantargy
|
|
,sor.value('(oraszam)[1]', 'float') AS oraszam
|
|
,sor.value('(tanar)[1]', 'nvarchar(32)') AS tanar
|
|
,NULLIF(sor.value('(existItemId)[1]', 'nvarchar(32)'), 0) AS existItemId
|
|
FROM @importXml.nodes('/AscImport/TantargyfelosztasLista/Tantargyfelosztas') as sorok(sor)
|
|
) x
|
|
LEFT JOIN @osztalyCsoport cs ON cs.nev = x.csoport
|
|
LEFT JOIN @osztalyCsoport o ON o.nev = x.osztaly
|
|
INNER JOIN @tantargy tt ON tt.nev = x.tantargy
|
|
INNER JOIN T_FELHASZNALO_OSSZES fh ON fh.C_NYOMTATASINEV = x.tanar AND fh.C_TANEVID = @tanevId
|
|
WHERE EXISTS (SELECT 1 FROM T_ALKALMAZOTT_OSSZES a WHERE a.ID = fh.ID AND a.C_ALTANEVID = fh.C_TANEVID)
|
|
|
|
|
|
/* Az importtal bekerült foglalkozások beszúrása */
|
|
MERGE T_FOGLALKOZAS_OSSZES trg
|
|
USING (select * FROM @foglalkozas WHERE ID IS NULL) src ON 1 = 2
|
|
WHEN NOT MATCHED THEN
|
|
INSERT (
|
|
C_FOGLALKOZASTIPUSA
|
|
,C_ORASZAM
|
|
,C_NEV
|
|
,C_ERTEKELESKELL
|
|
,C_MULASZTASKELL
|
|
,C_TANARFELVEHETI
|
|
,C_IMPORTALT
|
|
,C_TANTARGYID
|
|
,C_OSZTALYCSOPORTID
|
|
,C_INTEZMENYID
|
|
,C_TANEVID
|
|
,TOROLT
|
|
,SERIAL
|
|
,LASTCHANGED
|
|
,CREATED
|
|
,MODIFIER
|
|
,CREATOR
|
|
) VALUES (
|
|
1338 -- C_FOGLALKOZASTIPUSA - int
|
|
,hetiOraszam -- C_ORASZAM - numeric(10, 2)
|
|
,nev -- C_NEV - nvarchar(255)
|
|
,'T' -- C_ERTEKELESKELL - char(1)
|
|
,'T' -- C_MULASZTASKELL - char(1)
|
|
,'T' -- C_TANARFELVEHETI - char(1)
|
|
,'T' -- C_IMPORTALT - char(1)
|
|
,tantargyId -- C_TANTARGYID - int
|
|
,osztalyCsoportId -- C_OSZTALYCSOPORTID - int
|
|
,@intezmenyId -- C_INTEZMENYID - int
|
|
,@tanevId -- C_TANEVID - int
|
|
,'F' -- TOROLT - char(1)
|
|
,0 -- SERIAL - int
|
|
,GETDATE() -- LASTCHANGED - datetime
|
|
,GETDATE() -- CREATED - datetime
|
|
,@userId -- MODIFIER - int
|
|
,@userId -- CREATOR - int
|
|
)
|
|
OUTPUT INSERTED.ID, src.foglalozasId, $action
|
|
INTO @linkTable(insertedID, tempId, act);
|
|
|
|
UPDATE x
|
|
SET x.id = y.insertedID
|
|
FROM @foglalkozas x
|
|
INNER JOIN @linkTable y ON x.foglalozasId = y.tempId
|
|
WHERE x.ID IS NULL
|
|
|
|
DELETE FROM @linktable
|
|
|
|
INSERT INTO T_FOGLALKOZASOK_TANAROK (
|
|
C_FOGLALKOZASOKID
|
|
,C_TANAROKID
|
|
) SELECT
|
|
id AS C_FOGLALKOZASOKID -- C_FOGLALKOZASOKID - int
|
|
,tanarId AS C_TANAROKID -- C_TANAROKID - int
|
|
FROM @foglalkozas f
|
|
WHERE id IS NOT NULL
|
|
AND NOT EXISTS (SELECT 1 FROM T_FOGLALKOZASOK_TANAROK ft WHERE f.ID = ft.C_FOGLALKOZASOKID)
|
|
|
|
|
|
/* Az importtal bekerült foglalkozások beszúrása */
|
|
INSERT INTO @foglalkozas (
|
|
tantargyId
|
|
,tanarId
|
|
,osztalyCsoportId
|
|
,hetiOraszam
|
|
,nev
|
|
,id
|
|
) SELECT
|
|
tt.id AS tantargyId
|
|
,a.id AS tanarId
|
|
,ocs.id AS osztalyCsoportId
|
|
,COUNT(1) AS hetiOraszam
|
|
,MIN(tt.nev) + ' - ' + MIN(ocs.nev) + ' - ' + MIN(a.nev) AS nev
|
|
,MIN(ff.ID) AS id
|
|
FROM @orarendiOra o
|
|
INNER JOIN @tanar a ON a.tanarID = o.tanarID
|
|
INNER JOIN @tantargy tt ON tt.tantargyID = o.tantargyID
|
|
INNER JOIN @osztalyCsoport ocs ON (ocs.osztalyCsoportID = o.CsoportId AND ocs.osztalyCsoport = 'CS') --OR (ocs.osztalyCsoportID = o.OsztalyId AND ocs.osztalyCsoport = 'O')
|
|
LEFT JOIN (
|
|
SELECT f.ID, f.C_TANTARGYID, f.C_OSZTALYCSOPORTID, ft.C_TANAROKID
|
|
FROM T_FOGLALKOZAS_OSSZES f
|
|
INNER JOIN T_FOGLALKOZASOK_TANAROK ft ON ft.C_FOGLALKOZASOKID = f.ID
|
|
WHERE f.TOROLT = 'F'
|
|
AND f.C_TANEVID = @tanevId
|
|
) ff
|
|
ON ff.C_TANTARGYID = tt.ID
|
|
AND ff.C_TANAROKID = a.ID
|
|
AND ff.C_OSZTALYCSOPORTID = ocs.ID
|
|
GROUP BY tt.id, a.id, ocs.id
|
|
|
|
INSERT INTO @foglalkozas (
|
|
tantargyId
|
|
,tanarId
|
|
,osztalyCsoportId
|
|
,hetiOraszam
|
|
,nev
|
|
,id
|
|
) SELECT
|
|
tt.id AS tantargyId
|
|
,a.id AS tanarId
|
|
,ocs.id AS osztalyCsoportId
|
|
,COUNT(1) AS hetiOraszam
|
|
,MIN(tt.nev) + ' - ' + MIN(ocs.nev) + ' - ' + MIN(a.nev) AS nev
|
|
,MIN(ff.ID) AS id
|
|
FROM @orarendiOra o
|
|
INNER JOIN @tanar a ON a.tanarID = o.tanarID
|
|
INNER JOIN @tantargy tt ON tt.tantargyID = o.tantargyID
|
|
INNER JOIN @osztalyCsoport ocs ON (ocs.osztalyCsoportID = o.OsztalyId AND ocs.osztalyCsoport = 'O') AND o.csoportId IS NULL --OR (ocs.osztalyCsoportID = o.OsztalyId AND ocs.osztalyCsoport = 'O')
|
|
LEFT JOIN (
|
|
SELECT f.ID, f.C_TANTARGYID, f.C_OSZTALYCSOPORTID, ft.C_TANAROKID
|
|
FROM T_FOGLALKOZAS_OSSZES f
|
|
INNER JOIN T_FOGLALKOZASOK_TANAROK ft ON ft.C_FOGLALKOZASOKID = f.ID
|
|
WHERE f.TOROLT = 'F' AND f.C_TANEVID = @tanevId
|
|
) ff ON ff.C_TANTARGYID = tt.ID
|
|
AND ff.C_TANAROKID = a.ID
|
|
AND ff.C_OSZTALYCSOPORTID = ocs.ID
|
|
GROUP BY tt.id, a.id, ocs.id
|
|
|
|
/* Az órarendi órából keletkező foglalkozások beszúrása */
|
|
MERGE T_FOGLALKOZAS_OSSZES trg
|
|
USING (SELECT * FROM @foglalkozas WHERE ID IS NULL) src ON 1 = 2
|
|
WHEN NOT MATCHED THEN
|
|
INSERT (
|
|
C_FOGLALKOZASTIPUSA
|
|
,C_ORASZAM
|
|
,C_NEV
|
|
,C_ERTEKELESKELL
|
|
,C_MULASZTASKELL
|
|
,C_TANARFELVEHETI
|
|
,C_IMPORTALT
|
|
,C_TANTARGYID
|
|
,C_OSZTALYCSOPORTID
|
|
,C_INTEZMENYID
|
|
,C_TANEVID
|
|
,TOROLT
|
|
,SERIAL
|
|
,LASTCHANGED
|
|
,CREATED
|
|
,MODIFIER
|
|
,CREATOR
|
|
) VALUES (
|
|
1338 -- C_FOGLALKOZASTIPUSA - int
|
|
,hetiOraszam -- C_ORASZAM - numeric(10, 2)
|
|
,nev -- C_NEV - nvarchar(255)
|
|
,'T' -- C_ERTEKELESKELL - char(1)
|
|
,'T' -- C_MULASZTASKELL - char(1)
|
|
,'T' -- C_TANARFELVEHETI - char(1)
|
|
,'T' -- C_IMPORTALT - char(1)
|
|
,tantargyId -- C_TANTARGYID - int
|
|
,osztalyCsoportId -- C_OSZTALYCSOPORTID - int
|
|
,@intezmenyId -- C_INTEZMENYID - int
|
|
,@tanevId -- C_TANEVID - int
|
|
,'F' -- TOROLT - char(1)
|
|
,0 -- SERIAL - int
|
|
,GETDATE() -- LASTCHANGED - datetime
|
|
,GETDATE() -- CREATED - datetime
|
|
,@userId -- MODIFIER - int
|
|
,@userId -- CREATOR - int
|
|
)
|
|
OUTPUT INSERTED.ID, src.foglalozasId, $action
|
|
INTO @linkTable(insertedID, tempId, act);
|
|
|
|
UPDATE x
|
|
SET x.id = y.insertedID
|
|
FROM @foglalkozas x
|
|
INNER JOIN @linkTable y ON x.foglalozasId = y.tempId
|
|
WHERE x.ID IS NULL
|
|
|
|
|
|
DELETE FROM @linktable
|
|
|
|
INSERT INTO T_FOGLALKOZASOK_TANAROK (
|
|
C_FOGLALKOZASOKID
|
|
,C_TANAROKID
|
|
) SELECT
|
|
id AS C_FOGLALKOZASOKID -- C_FOGLALKOZASOKID - int
|
|
,tanarId AS C_TANAROKID -- C_TANAROKID - int
|
|
FROM @foglalkozas f
|
|
WHERE id IS NOT NULL
|
|
AND NOT EXISTS (SELECT 1 FROM T_FOGLALKOZASOK_TANAROK ft WHERE f.ID = ft.C_FOGLALKOZASOKID)
|
|
|
|
/* T_HETIRENDTIPUS INSERT */
|
|
SELECT @mukodsesiHely = MIN(ID) FROM T_MUKODESIHELY_OSSZES WHERE C_TANEVID = @tanevId
|
|
MERGE T_DICTIONARYITEMBASE_OSSZES trg
|
|
USING @hetirend src ON src.ID = trg.ID AND trg.C_INTEZMENYID = @intezmenyid AND trg.C_TANEVID = @tanevId
|
|
WHEN NOT MATCHED THEN
|
|
INSERT (
|
|
C_VALUE
|
|
,C_NAME
|
|
,C_VISIBLE
|
|
,C_TYPE
|
|
,C_INTEZMENYID
|
|
,C_TANEVID
|
|
,TOROLT
|
|
,SERIAL
|
|
,LASTCHANGED
|
|
,CREATED
|
|
,MODIFIER
|
|
,CREATOR
|
|
) VALUES (
|
|
0
|
|
,src.nev + ' (importálva: ' + CONVERT(varchar(20), GETDATE(), 120) + ')'
|
|
,'T'
|
|
,'HetirendTipus'
|
|
,@intezmenyID
|
|
,@tanevID
|
|
,'F'
|
|
,0
|
|
,NULL
|
|
,GETDATE()
|
|
,NULL
|
|
,@userId
|
|
)
|
|
OUTPUT INSERTED.ID, src.hetirendID, $action
|
|
INTO @linkTable(insertedID, tempId, act);
|
|
|
|
UPDATE x
|
|
SET x.id = y.insertedID
|
|
FROM @hetirend x
|
|
INNER JOIN @linkTable y ON x.hetirendId = y.tempId
|
|
WHERE x.ID IS NULL;
|
|
|
|
INSERT INTO T_HETIRENDTIPUS_OSSZES (
|
|
ID
|
|
,C_ALINTEZMENYID
|
|
,C_ALTANEVID
|
|
,TOROLT
|
|
,SERIAL
|
|
,LASTCHANGED
|
|
,CREATED
|
|
,MODIFIER
|
|
,CREATOR
|
|
) SELECT
|
|
x.ID AS ID -- ID - int
|
|
,@intezmenyId AS C_ALINTEZMENYID -- C_ALINTEZMENYID - int
|
|
,@tanevId AS C_ALTANEVID -- C_ALTANEVID - int
|
|
,'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 @hetirend x
|
|
WHERE NOT EXISTS (SELECT 1 FROM T_HETIRENDTIPUS_OSSZES ht WHERE ht.ID = x.ID AND C_ALTANEVID = @tanevId)
|
|
|
|
DECLARE @ids TABLE (
|
|
id int
|
|
)
|
|
|
|
DECLARE @ervenyessegKezdete datetime
|
|
|
|
/* T_ORARENDIORA INSERT */
|
|
IF @regiTorlese = 1 BEGIN
|
|
SELECT TOP(1) @ervenyessegKezdete = ervenyessegKezdete
|
|
FROM @orarendiOra
|
|
|
|
IF @ervenyessegMegadva = 1 BEGIN
|
|
UPDATE T_ORARENDIORA_OSSZES
|
|
SET
|
|
C_ORAERVENYESSEGVEGE = @ervenyessegKezdete
|
|
,SERIAL += 1
|
|
,LASTCHANGED = GETDATE()
|
|
,MODIFIER = @userId
|
|
WHERE C_ORAERVENYESSEGVEGE > @ervenyessegKezdete
|
|
AND C_TANEVID = @tanevId
|
|
AND C_ORAERVENYESSEGVEGE <> C_ORAERVENYESSEGKEZDETE
|
|
AND TOROLT = 'F'
|
|
AND C_ORAERVENYESSEGKEZDETE < @ervenyessegKezdete
|
|
END
|
|
ELSE BEGIN
|
|
UPDATE T_ORARENDIORA_OSSZES
|
|
SET TOROLT = 'T'
|
|
,SERIAL += 1
|
|
,LASTCHANGED = GETDATE()
|
|
,MODIFIER = @userId
|
|
WHERE TOROLT = 'F'
|
|
AND C_TANEVID = @tanevId
|
|
AND C_ORAERVENYESSEGVEGE <> C_ORAERVENYESSEGKEZDETE
|
|
END
|
|
END
|
|
|
|
DECLARE @csengetesiRendId int
|
|
SELECT @csengetesiRendId = ID FROM T_CSENGETESIREND_OSSZES WHERE C_AKTIV = 'T' AND C_TANEVID = @tanevId
|
|
|
|
INSERT INTO T_ORARENDIORA_OSSZES (
|
|
C_HETIREND
|
|
,C_HETNAPJA
|
|
,C_ORASZAM
|
|
,C_ORAERVENYESSEGKEZDETE
|
|
,C_INTEZMENYID
|
|
,C_TANEVID
|
|
,C_BONTOTT
|
|
,C_ORAERVENYESSEGVEGE
|
|
,C_ORAKEZDETE
|
|
,C_ORAVEGE
|
|
,C_TEREMID
|
|
,C_FOGLALKOZASID
|
|
,C_CSENGETESIRENDORAID
|
|
,C_TANTARGYID
|
|
,C_OSZTALYCSOPORTID
|
|
,C_TANARID
|
|
,C_ORATULAJDONOSID
|
|
,TOROLT
|
|
,SERIAL
|
|
,LASTCHANGED
|
|
,CREATED
|
|
,MODIFIER
|
|
,CREATOR
|
|
,C_IMPORTALT
|
|
) SELECT --'T_ORARENDIORA',
|
|
h.id AS C_HETIREND
|
|
,CASE o.hetNapja
|
|
WHEN 'Hétfő' THEN 1408
|
|
WHEN 'Kedd' THEN 1409
|
|
WHEN 'Szerda' THEN 1410
|
|
WHEN 'Csütörtök' THEN 1411
|
|
WHEN 'Péntek' THEN 1412
|
|
WHEN 'Szombat' THEN 1413
|
|
WHEN 'Vasárnap' THEN 1414
|
|
ELSE 1407
|
|
END AS C_HETNAPJA -- ?
|
|
,csro.C_ORASZAM AS C_ORASZAM
|
|
,o.ervenyessegKezdete AS C_ORAERVENYESSEGKEZDETE
|
|
,@intezmenyID AS C_INTEZMENYID
|
|
,@tanevId AS C_TANEVID
|
|
,'F' AS C_BONTOTT
|
|
,o.ervenyessegVege AS C_ORAERVENYESSEGVEGE
|
|
,NULL AS C_ORAKEZDETE
|
|
,NULL AS C_ORAVEGE
|
|
,t.id AS C_TEREMID
|
|
,ff.ID AS C_FOGLALKOZASID -- ?
|
|
,csro.ID AS C_CSENGETESIRENDORAID
|
|
,tt.ID AS C_TANTARGYID -- ?
|
|
,oszt.ID AS C_OSZTALYCSOPORTID -- ?
|
|
,a.ID AS C_TANARID -- ?
|
|
,@userId AS C_ORATULAJDONOSID -- ?
|
|
,'F' AS TOROLT
|
|
,0 AS SERIAL
|
|
,NULL AS LASTCHANGED
|
|
,GETDATE() AS CREATED
|
|
,NULL AS MODIFIER
|
|
,@userId AS CREATOR
|
|
,'T' AS C_IMPORTALT
|
|
FROM @orarendiOra o
|
|
INNER JOIN @terem t ON t.teremID = o.teremID
|
|
INNER JOIN @tanar a ON a.tanarID = o.tanarID
|
|
INNER JOIN @tantargy tt ON tt.tantargyID = o.tantargyID
|
|
INNER JOIN @osztalyCsoport oszt ON oszt.osztalyCsoportID = o.OsztalyId AND oszt.osztalyCsoport = 'O' AND o.csoportId IS NULL
|
|
INNER JOIN (
|
|
SELECT f.ID, f.C_TANTARGYID, f.C_OSZTALYCSOPORTID, ft.C_TANAROKID
|
|
FROM T_FOGLALKOZAS_OSSZES f
|
|
INNER JOIN T_FOGLALKOZASOK_TANAROK ft ON ft.C_FOGLALKOZASOKID = f.ID
|
|
WHERE f.TOROLT = 'F' AND f.C_TANEVID = @tanevId
|
|
) ff ON ff.C_TANTARGYID = tt.ID AND ff.C_TANAROKID = a.ID AND ff.C_OSZTALYCSOPORTID = oszt.ID--ISNULL(cs.ID, oszt.ID)
|
|
INNER JOIN @hetirend h ON o.hetirendID = h.hetirendId
|
|
INNER JOIN T_CSENGETESIRENDORA_OSSZES csro ON csro.C_ORASZAM = o.sorszam AND csro.C_CSENGETESIRENDID = @csengetesiRendId;
|
|
|
|
INSERT INTO T_ORARENDIORA_OSSZES (
|
|
C_HETIREND
|
|
,C_HETNAPJA
|
|
,C_ORASZAM
|
|
,C_ORAERVENYESSEGKEZDETE
|
|
,C_INTEZMENYID
|
|
,C_TANEVID
|
|
,C_BONTOTT
|
|
,C_ORAERVENYESSEGVEGE
|
|
,C_ORAKEZDETE
|
|
,C_ORAVEGE
|
|
,C_TEREMID
|
|
,C_FOGLALKOZASID
|
|
,C_CSENGETESIRENDORAID
|
|
,C_TANTARGYID
|
|
,C_OSZTALYCSOPORTID
|
|
,C_TANARID
|
|
,C_ORATULAJDONOSID
|
|
,TOROLT
|
|
,SERIAL
|
|
,LASTCHANGED
|
|
,CREATED
|
|
,MODIFIER
|
|
,CREATOR
|
|
,C_IMPORTALT
|
|
) SELECT --'T_ORARENDIORA',
|
|
h.id AS C_HETIREND
|
|
,CASE o.hetNapja
|
|
WHEN 'Hétfő' THEN 1408
|
|
WHEN 'Kedd' THEN 1409
|
|
WHEN 'Szerda' THEN 1410
|
|
WHEN 'Csütörtök' THEN 1411
|
|
WHEN 'Péntek' THEN 1412
|
|
WHEN 'Szombat' THEN 1413
|
|
WHEN 'Vasárnap' THEN 1414
|
|
ELSE 1407
|
|
END AS C_HETNAPJA -- ?
|
|
,csro.C_ORASZAM AS C_ORASZAM
|
|
,o.ervenyessegKezdete AS C_ORAERVENYESSEGKEZDETE
|
|
,@intezmenyID AS C_INTEZMENYID
|
|
,@tanevId AS C_TANEVID
|
|
,'F' AS C_BONTOTT
|
|
,o.ervenyessegVege AS C_ORAERVENYESSEGVEGE
|
|
,NULL AS C_ORAKEZDETE
|
|
,NULL AS C_ORAVEGE
|
|
,t.id AS C_TEREMID
|
|
,ff.ID AS C_FOGLALKOZASID -- ?
|
|
,csro.ID AS C_CSENGETESIRENDORAID
|
|
,tt.ID AS C_TANTARGYID -- ?
|
|
,cs.ID AS C_OSZTALYCSOPORTID -- ?
|
|
,a.ID AS C_TANARID -- ?
|
|
,@userId AS C_ORATULAJDONOSID -- ?
|
|
,'F' AS TOROLT
|
|
,0 AS SERIAL
|
|
,NULL AS LASTCHANGED
|
|
,GETDATE() AS CREATED
|
|
,NULL AS MODIFIER
|
|
,@userId AS CREATOR
|
|
,'T' AS C_IMPORTALT
|
|
FROM @orarendiOra o
|
|
INNER JOIN @terem t ON t.teremID = o.teremID
|
|
INNER JOIN @tanar a ON a.tanarID = o.tanarID
|
|
INNER JOIN @tantargy tt ON tt.tantargyID = o.tantargyID
|
|
INNER JOIN @osztalyCsoport cs ON cs.osztalyCsoportID = o.CsoportId AND cs.osztalyCsoport = 'CS'
|
|
INNER JOIN (
|
|
SELECT f.ID, f.C_TANTARGYID, f.C_OSZTALYCSOPORTID, ft.C_TANAROKID
|
|
FROM T_FOGLALKOZAS_OSSZES f
|
|
INNER JOIN T_FOGLALKOZASOK_TANAROK ft ON ft.C_FOGLALKOZASOKID = f.ID
|
|
WHERE f.TOROLT = 'F' AND f.C_TANEVID = @tanevId
|
|
) ff ON ff.C_TANTARGYID = tt.ID AND ff.C_TANAROKID = a.ID AND ff.C_OSZTALYCSOPORTID = cs.ID
|
|
INNER JOIN @hetirend h ON o.hetirendID = h.hetirendId
|
|
INNER JOIN T_CSENGETESIRENDORA_OSSZES csro ON csro.C_ORASZAM = o.sorszam AND csro.C_CSENGETESIRENDID = @csengetesiRendId;
|
|
|
|
COMMIT TRANSACTION
|
|
-- ROLLBACK TRANSACTION
|
|
END TRY
|
|
BEGIN CATCH
|
|
IF @@TRANCOUNT > 0 AND XACT_STATE() <> 0
|
|
ROLLBACK TRANSACTION;
|
|
THROW
|
|
END CATCH
|
|
END
|
|
GO
|
|
|
|
|