kreta/Kreta.DataAccess.Migrations/Scripts/Archive/20190604142959_OM_2727/sp_FollowUpDictionaryItemBase.sql
2024-03-13 00:33:46 +01:00

218 lines
No EOL
8.2 KiB
Transact-SQL

-- ===================================================================
-- Author: Telek Ákos
-- Created: 2018.06.21.
-- Description:
-- Dictionary elemek FollowUp-ja
-- ===================================================================
DROP PROCEDURE IF EXISTS sp_FollowUpDictionaryItemBase
GO
CREATE PROCEDURE sp_FollowUpDictionaryItemBase
@pItemId int
,@pCurrentTanevId int
,@pNextTanevId int
,@pIntezmenyId int
AS
BEGIN
DECLARE
@typeName nvarchar(64)
,@sql nvarchar(max)
,@kovItemId int
,@isItemTorolt char(1)
,@isKovItemTorolt char(1)
,@columnList nvarchar(max)
,@columnListInsert nvarchar(max)
,@itemName nvarchar(500)
SELECT
@typeName = d.C_TYPE
,@isItemTorolt = d.TOROLT
FROM T_DICTIONARYITEMBASE_OSSZES d
WHERE d.ID = @pItemId
AND d.C_INTEZMENYID = @pIntezmenyId
AND d.C_TANEVID = @pCurrentTanevId
SELECT
@kovItemId = d.ID
,@isKovItemTorolt = d.TOROLT
FROM T_DICTIONARYITEMBASE_OSSZES d
WHERE d.C_INTEZMENYID = @pIntezmenyId
AND d.C_TANEVID = @pNextTanevId
AND d.ELOZOTANEVIREKORDID = @pItemId
SELECT @itemName = C_NAME FROM T_DICTIONARYITEMBASE_OSSZES WHERE ID = @pItemId AND C_TANEVID=@pCurrentTanevId
IF EXISTS(SELECT 1 FROM T_DICTIONARYITEMBASE_OSSZES WHERE C_TYPE=@typeName AND C_NAME=@itemName AND C_TANEVID=@pNextTanevId AND ISNULL(ELOZOTANEVIREKORDID,0)<>@pItemId AND TOROLT='F') BEGIN
UPDATE T_DICTIONARYITEMBASE_OSSZES SET ELOZOTANEVIREKORDID = NULL WHERE ELOZOTANEVIREKORDID = @pItemId AND C_TANEVID=@pNextTanevId AND TOROLT='F'
UPDATE T_DICTIONARYITEMBASE_OSSZES SET ELOZOTANEVIREKORDID = @pItemId WHERE C_NAME=@itemName AND C_TANEVID = @pNextTanevId AND TOROLT='F' AND C_TYPE=@typeName
SELECT
@kovItemId = d.ID
,@isKovItemTorolt = d.TOROLT
FROM T_DICTIONARYITEMBASE_OSSZES d
WHERE d.C_INTEZMENYID = @pIntezmenyId AND d.C_TANEVID = @pNextTanevId AND d.ELOZOTANEVIREKORDID = @pItemId
SET @sql=N'
UPDATE T_'+@typeName+'_OSSZES SET ELOZOTANEVIREKORDID = NULL WHERE ELOZOTANEVIREKORDID = @pItemId AND C_ALTANEVID=@pNextTanevId AND TOROLT=''F''
UPDATE T_'+@typeName+'_OSSZES SET ELOZOTANEVIREKORDID = @pItemId, ELOZOTANEVIREKORDIDA = @pItemId WHERE ID = @kovItemId AND C_ALTANEVID=@pNextTanevId AND TOROLT=''F'''
EXEC sp_Executesql @sql,N'@pItemId int,@kovItemId int,@pNextTanevId int',@pNextTanevId = @pNextTanevId,@pItemId = @pItemId,@kovItemId = @kovItemId
END
IF @isItemTorolt = 'T' OR @isKovItemTorolt = 'T' BEGIN
RETURN
END
IF @kovItemId IS NULL BEGIN
INSERT INTO T_DICTIONARYITEMBASE (
C_VALUE
,C_NAME
,C_NAME_1
,C_NAME_2
,C_NAME_3
,C_NAME_4
,C_VISIBLE
,C_CODE
,C_TYPE
,C_PROTECTED
,C_COLOR
,C_ORDER
,C_BGCOLOR
,C_DESCRIPTION
,C_ISACTIVE
,C_SHORTNAME
,C_DICTIONARYTYPEID
,C_INTEZMENYID
,C_TANEVID
,TOROLT
,SERIAL
,LASTCHANGED
,CREATED
,MODIFIER
,CREATOR
,ELOZOTANEVIREKORDID
,NNID
) SELECT
C_VALUE AS C_VALUE -- C_VALUE - int
,C_NAME AS C_NAME -- C_NAME - nvarchar(250)
,C_NAME_1 AS C_NAME_1 -- C_NAME_1 - nvarchar(250)
,C_NAME_2 AS C_NAME_2 -- C_NAME_2 - nvarchar(250)
,C_NAME_3 AS C_NAME_3 -- C_NAME_3 - nvarchar(250)
,C_NAME_4 AS C_NAME_4 -- C_NAME_4 - nvarchar(250)
,C_VISIBLE AS C_VISIBLE -- C_VISIBLE - char(1)
,C_CODE AS C_CODE -- C_CODE - nvarchar(20)
,C_TYPE AS C_TYPE -- C_TYPE - nvarchar(32)
,C_PROTECTED AS C_PROTECTED -- C_PROTECTED - char(1)
,C_COLOR AS C_COLOR -- C_COLOR - nvarchar(6)
,C_ORDER AS C_ORDER -- C_ORDER - int
,C_BGCOLOR AS C_BGCOLOR -- C_BGCOLOR - nvarchar(6)
,C_DESCRIPTION AS C_DESCRIPTION -- C_DESCRIPTION - nvarchar(255)
,C_ISACTIVE AS C_ISACTIVE -- C_ISACTIVE - char(1)
,C_SHORTNAME AS C_SHORTNAME -- C_SHORTNAME - nvarchar(30)
,C_DICTIONARYTYPEID AS C_DICTIONARYTYPEID -- C_DICTIONARYTYPEID - int
,C_INTEZMENYID AS C_INTEZMENYID -- C_INTEZMENYID - int
,@pNextTanevId AS C_TANEVID -- C_TANEVID - int
,TOROLT AS TOROLT -- TOROLT - char(1)
,0 AS SERIAL -- SERIAL - int
,GETDATE() AS LASTCHANGED -- LASTCHANGED - datetime
,GETDATE() AS CREATED -- CREATED - datetime
,MODIFIER AS MODIFIER -- MODIFIER - int
,MODIFIER AS CREATOR -- CREATOR - int
,ID AS ELOZOTANEVIREKORDID -- ELOZOTANEVIREKORDID - int
,NULL AS NNID -- NNID - int
FROM T_DICTIONARYITEMBASE_OSSZES d
WHERE d.ID = @pItemId
AND d.C_INTEZMENYID = @pIntezmenyId
AND d.C_TANEVID = @pCurrentTanevId
SET @kovItemId = SCOPE_IDENTITY()
SELECT @columnList = ISNULL(@columnList + ', ', '') + COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'T_' + @typeName
AND TABLE_SCHEMA = 'dbo'
ORDER BY ORDINAL_POSITION
SET @columnListInsert = REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(STUFF(@columnList, 1, 2, '@kovItemId'), 'CREATOR', 'MODIFIER'), 'C_ALTANEVID', '@pNextTanevId'), 'ELOZOTANEVIREKORDIDA', 'ID'), 'ELOZOTANEVIREKORDID', 'ID'), 'LASTCHANGED', 'GETDATE()')
SET @sql = N'
INSERT INTO T_' + @typeName + ' (' + @columnList + ')
SELECT ' + @columnListInsert + '
FROM T_' + @typeName + '_OSSZES
WHERE ID = @pItemId
AND C_ALTANEVID = @pCurrentTanevId
AND C_ALINTEZMENYID = @pIntezmenyId
'
EXEC sys.sp_executesql @sql, N'
@kovItemId int
,@pItemId int
,@pCurrentTanevId int
,@pNextTanevId int
,@pIntezmenyId int'
,@kovItemId = @kovItemId
,@pItemId = @pItemId
,@pCurrentTanevId = @pCurrentTanevId
,@pNextTanevId = @pNextTanevId
,@pIntezmenyId = @pIntezmenyId
END
ELSE BEGIN
UPDATE kov SET
kov.C_VALUE = akt.c_VALUE
,kov.C_NAME = akt.C_NAME
,kov.C_NAME_1 = akt.C_NAME_1
,kov.C_NAME_2 = akt.C_NAME_2
,kov.C_NAME_3 = akt.C_NAME_3
,kov.C_NAME_4 = akt.C_NAME_4
,kov.C_VISIBLE = akt.C_VISIBLE
,kov.C_CODE = akt.C_CODE
,kov.C_PROTECTED = akt.C_PROTECTED
,kov.C_COLOR = akt.C_COLOR
,kov.C_ORDER = akt.C_ORDER
,kov.C_BGCOLOR = akt.C_BGCOLOR
,kov.C_DESCRIPTION = akt.C_DESCRIPTION
,kov.C_ISACTIVE = akt.C_ISACTIVE
,kov.C_SHORTNAME = akt.C_SHORTNAME
FROM T_DICTIONARYITEMBASE_OSSZES kov
INNER JOIN T_DICTIONARYITEMBASE_OSSZES akt ON akt.ID = kov.ELOZOTANEVIREKORDID
WHERE akt.ID = @pItemId
AND kov.ID = @kovItemId
AND akt.C_TANEVID = @pCurrentTanevId
AND kov.C_TANEVID = @pNextTanevId
AND akt.C_INTEZMENYID = @pIntezmenyId
AND kov.C_INTEZMENYID = @pIntezmenyId
SET @columnList = ''
SELECT @columnList += 'kov.' + COLUMN_NAME + ' = akt.' + COLUMN_NAME + ', '
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'T_' + @typeName
AND TABLE_SCHEMA = 'dbo'
AND COLUMN_NAME NOT IN ('ID', 'C_ALINTEZMENYID', 'C_ALTANEVID', 'TOROLT', 'ELOZOTANEVIREKORDID', 'ELOZOTANEVIREKORDIDA', 'NNID', 'LASTCHANGED', 'CREATOR', 'CREATED')
ORDER BY ORDINAL_POSITION
SET @columnList += 'kov.LASTCHANGED = GETDATE()'
SET @sql = N'
UPDATE kov SET
' + @columnList + '
FROM T_' + @typeName + '_OSSZES kov
INNER JOIN T_' + @typeName + '_OSSZES akt ON akt.ID = kov.ELOZOTANEVIREKORDID
WHERE akt.ID = @pItemId
AND kov.ID = @kovItemId
AND akt.C_ALTANEVID = @pCurrentTanevId
AND kov.C_ALTANEVID = @pNextTanevId
AND akt.C_ALINTEZMENYID = @pIntezmenyId
AND kov.C_ALINTEZMENYID = @pIntezmenyId
'
EXEC sys.sp_executesql @sql, N'
@kovItemId int
,@pItemId int
,@pCurrentTanevId int
,@pNextTanevId int
,@pIntezmenyId int'
,@kovItemId = @kovItemId
,@pItemId = @pItemId
,@pCurrentTanevId = @pCurrentTanevId
,@pNextTanevId = @pNextTanevId
,@pIntezmenyId = @pIntezmenyId
END
END
GO