218 lines
No EOL
8.2 KiB
Transact-SQL
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 |