kreta/Kreta.DataAccess.Migrations/DBScripts/Database/dbo/Stored procedures/uspFollowUpAlkalmazottVegzettsegKK.sql
2024-03-13 00:33:46 +01:00

179 lines
No EOL
6 KiB
Transact-SQL

DROP PROCEDURE IF EXISTS uspFollowUpAlkalmazottVegzettsegKK
GO
CREATE PROCEDURE uspFollowUpAlkalmazottVegzettsegKK
@intezmenyId int
,@aktTanevId int
,@kovetkezoTanevId int
,@alkalmazottId int
AS
BEGIN
SET NOCOUNT ON;
IF NOT EXISTS (SELECT 1 from T_TANEV where ID = @kovetkezoTanevId and C_KOVETKEZO = 'T' and C_AKTIVALVA is null and C_ISKIVALASZTHATO = 'T')
BEGIN
RETURN;
END
DECLARE
@kovAlkalmazottId int
,@partialSql nvarchar(max) = N''
,@finalSql nvarchar(max)
,@tableMapperSql nvarchar(max)
,@colListSql nvarchar(max) = N''
CREATE TABLE #ColumnMappingKKVegzettseg(
insertColName nvarchar(max)
,selectColName nvarchar(max)
,updateColName nvarchar(max)
,tableName nvarchar(128)
)
SELECT @kovAlkalmazottId = ID
FROM T_FELHASZNALO_OSSZES fh
WHERE fh.ELOZOTANEVIREKORDID = @alkalmazottId AND TOROLT='F'
IF @kovAlkalmazottId IS NULL BEGIN
RETURN
END
CREATE TABLE #tables (tableName nvarchar(128))
CREATE TABLE #colLists (selectColList nvarchar(max),updateColList nvarchar(max),insertColList nvarchar(max),tableName nvarchar(128))
INSERT INTO #tables VALUES
('T_KKTANITOVEZGETTSEG')
,('T_KKGYOGYPEDVEGZETTSEG')
,('T_KKTANARVEGZETTSEG')
,('T_KKTANTARGYKATEGORIA')
,('T_KKAMIVEGZETTSEG')
,('T_KKELEKTROAKUZENE')
,('T_KKKLASSZIKUSZENE')
,('T_KKNEPZENE')
,('T_KKJAZZZENE')
,('T_KKTERULET')
SELECT @tableMapperSql = ISNULL(
@tableMapperSql+N'
UNION ALL
SELECT
insertColName
,selectColName
,updateColName
,'''+tableName+'''
FROM fnGetFollowUpColumnMapping (NULL,'''+tableName+''')',
'SELECT
insertColName
,selectColName
,updateColName
,'''+tableName+'''
FROM fnGetFollowUpColumnMapping (NULL,'''+tableName+''')')
FROM #tables
INSERT INTO #ColumnMappingKKVegzettseg(
insertColName
,selectColName
,updateColName
,tableName
)
EXEC sp_executesql @tableMapperSql
SELECT @colListSql += N'
DECLARE @insert'+tableName+'colList nvarchar(max)
DECLARE @select'+tableName+'colList nvarchar(max)
DECLARE @update'+tableName+'colList nvarchar(max)
SELECT @insert'+tableName+'colList = ISNULL(@insert'+tableName+'colList+'',''+insertColname,insertColname) FROM #ColumnMappingKKVegzettseg WHERE tableName = '''+tableName+'''
SELECT @select'+tableName+'colList = ISNULL(@select'+tableName+'colList+'',''+selectColname,selectColname) FROM #ColumnMappingKKVegzettseg WHERE tableName = '''+tableName+'''
INSERT INTO #ColumnMappingKKVegzettseg (insertColName,updateColName,tableName) VALUES
(''TOROLT'',''s.TOROLT'','''+tableName+''')
SELECT @update'+tableName+'ColList = ISNULL(@update'+tableName+'ColList+'',''+insertColName+'' = ''+updateColName,insertColName+'' = ''+updateColName)
FROM #ColumnMappingKKVegzettseg
WHERE updateColName IS NOT NULL AND tableName = '''+tableName+'''
SELECT @select'+tableName+'colList,@update'+tableName+'colList,@insert'+tableName+'colList,'''+tableName+''''
FROM #tables
INSERT INTO #colLists
exec sp_executesql @colListSql
SELECT @partialSql += N'
INSERT INTO '+tableName+'_OSSZES (
'+insertColList+'
) SELECT
'+selectColList+'
FROM '+tableName+'_OSSZES s
WHERE C_ALKALMAZOTTID = @alkalmazottId
AND TOROLT=''F''
AND NOT EXISTS (SELECT 1 FROM '+tableName+'_OSSZES t WHERE t.ELOZOTANEVIREKORDID = s.ID)
UPDATE t SET
'+updateColList+'
FROM '+tableName+'_OSSZES s
INNER JOIN '+tableName+'_OSSZES t ON t.ELOZOTANEVIREKORDID = s.ID
WHERE s.C_ALKALMAZOTTID=@alkalmazottId'
FROM #colLists
WHERE tableName IN('T_KKTANITOVEZGETTSEG','T_KKGYOGYPEDVEGZETTSEG','T_KKTANARVEGZETTSEG','T_KKAMIVEGZETTSEG')
--PRINT @partialSql
SET @finalSql = @partialSql
SET @partialSql = N''
SELECT @partialSql += N'
INSERT INTO '+tableName+'_OSSZES (
'+insertColList+'
) SELECT
'+selectColList+'
FROM '+tableName+'_OSSZES s
INNER JOIN T_KKAMIVEGZETTSEG_OSSZES tvx ON s.C_KKAMIVEGZETTSEGID = tvx.ID AND tvx.C_ALKALMAZOTTID = @alkalmazottId AND tvx.TOROLT = ''F''
INNER JOIN T_KKAMIVEGZETTSEG_OSSZES av ON av.ELOZOTANEVIREKORDID = tvx.ID AND av.C_ALKALMAZOTTID = @kovAlkalmazottId AND av.TOROLT = ''F''
WHERE s.TOROLT=''F''
AND NOT EXISTS (SELECT 1 FROM '+tableName+'_OSSZES t WHERE t.ELOZOTANEVIREKORDID = s.ID)
UPDATE t SET
'+updateColList+'
FROM '+tableName+'_OSSZES s
INNER JOIN '+tableName+'_OSSZES t ON t.ELOZOTANEVIREKORDID = s.ID
INNER JOIN T_KKAMIVEGZETTSEG_OSSZES v ON v.ID=s.C_KKAMIVEGZETTSEGID AND v.C_ALKALMAZOTTID=@alkalmazottId'
FROM #colLists
WHERE tableName IN('T_KKELEKTROAKUZENE','T_KKKLASSZIKUSZENE','T_KKJAZZZENE','T_KKNEPZENE','T_KKTERULET')
SET @finalSql += @partialSql
--PRINT @partialSql
SET @partialSql = N''
SELECT @partialSql = N'
INSERT INTO T_KKTANTARGYKATEGORIA_OSSZES (
'+insertColList+'
) SELECT
'+selectColList+'
FROM T_KKTANTARGYKATEGORIA_OSSZES s
INNER JOIN T_KKTANARVEGZETTSEG_OSSZES tvx ON s.C_KKTANARVEGZETTSEGID = tvx.ID AND tvx.C_ALKALMAZOTTID = @alkalmazottId AND tvx.TOROLT = ''F''
INNER JOIN T_KKTANARVEGZETTSEG_OSSZES av ON av.ELOZOTANEVIREKORDID = tvx.ID AND av.C_ALKALMAZOTTID = @kovAlkalmazottId AND av.TOROLT = ''F''
WHERE s.TOROLT = ''F''
AND NOT EXISTS (SELECT 1 FROM T_KKTANTARGYKATEGORIA_OSSZES WHERE ELOZOTANEVIREKORDID = s.ID)
UPDATE t SET
'+updateColList+'
FROM T_KKTANARVEGZETTSEG_OSSZES x
INNER JOIN T_KKTANTARGYKATEGORIA_OSSZES s ON s.C_KKTANARVEGZETTSEGID = x.ID
INNER JOIN T_KKTANTARGYKATEGORIA_OSSZES t ON t.ELOZOTANEVIREKORDID = s.ID
WHERE x.C_ALKALMAZOTTID = @alkalmazottId'
FROM #colLists
WHERE tableName = 'T_KKTANTARGYKATEGORIA'
SET @finalSql += @partialSql
--PRINT @partialSql
exec sp_executesql
@finalSql,N'
@intezmenyId int
,@aktTanevId int
,@kovetkezoTanevId int
,@alkalmazottId int
,@kovAlkalmazottId int'
,@intezmenyId = @intezmenyId
,@aktTanevId = @aktTanevId
,@kovetkezoTanevId = @kovetkezoTanevId
,@alkalmazottId = @alkalmazottId
,@kovAlkalmazottId = @kovAlkalmazottId
END
GO