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

109 lines
No EOL
3.9 KiB
Transact-SQL

DROP PROCEDURE IF EXISTS uspFollowUpCsengetesiRendOra
GO
CREATE PROCEDURE uspFollowUpCsengetesiRendOra
@intezmenyId int
,@aktTanevId int
,@kovetkezoTanevId int
,@csengetesiRendOraId int
,@csengetesiRendId int
,@isVisszaMenoleges bit
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
@oraSzam int
,@kovCsengrendOraId int
,@kovCsengRendId int
,@insertColList nvarchar(max)
,@selectColList nvarchar(max)
,@updateColList nvarchar(max)
,@sql nvarchar(max)
CREATE TABLE #columnMapping(
insertColName nvarchar(max) COLLATE DATABASE_DEFAULT
,selectColName nvarchar(max)
,updateColName nvarchar(max)
)
INSERT INTO #columnMapping (
insertColName
,selectColName
,updateColName
) SELECT
insertColName
,selectColName
,updateColName
FROM fnGetFollowUpColumnMapping (NULL,'T_CSENGETESIRENDORA')
SELECT @oraSzam = C_ORASZAM FROM T_CSENGETESIRENDORA_OSSZES WHERE ID = @csengetesiRendOraId
SELECT @kovCsengRendId = ID FROM T_CSENGETESIREND_OSSZES WHERE ELOZOTANEVIREKORDID=@csengetesiRendId
IF EXISTS (SELECT 1 FROM T_CSENGETESIRENDORA_OSSZES WHERE C_TANEVID=@kovetkezoTanevId AND TOROLT='F' AND C_ORASZAM=@oraSzam AND ISNULL(ELOZOTANEVIREKORDID,0)<>@csengetesiRendOraId AND C_CSENGETESIRENDID=@kovCsengRendId)
BEGIN
UPDATE T_CSENGETESIRENDORA_OSSZES SET ELOZOTANEVIREKORDID = NULL WHERE ELOZOTANEVIREKORDID=@csengetesiRendOraId
UPDATE T_CSENGETESIRENDORA_OSSZES SET ELOZOTANEVIREKORDID = @csengetesiRendOraId WHERE C_TANEVID=@kovetkezoTanevId AND TOROLT='F' AND C_ORASZAM=@oraSzam AND ISNULL(ELOZOTANEVIREKORDID,0)<>@csengetesiRendOraId AND C_CSENGETESIRENDID=@kovCsengRendId
END
SELECT @kovCsengrendOraId = ID FROM T_CSENGETESIRENDORA_OSSZES WHERE ELOZOTANEVIREKORDID=@csengetesiRendOraId
IF (SELECT TOROLT FROM T_CSENGETESIRENDORA_OSSZES WHERE ID = @csengetesiRendOraId)='T' OR (SELECT TOROLT FROM T_CSENGETESIRENDORA_OSSZES WHERE ID=@kovCsengrendOraId)='T'
BEGIN
RETURN
END
IF @kovCsengrendOraId IS NULL BEGIN
SELECT @insertColList = ISNULL(@insertColList+','+insertColname,insertColname) FROM #columnMapping
SELECT @selectColList = ISNULL(@selectColList+','+selectColName,selectColName) FROM #columnMapping
SET @sql = N'
INSERT INTO T_CSENGETESIRENDORA_OSSZES (
'+@insertColList+'
) SELECT
'+@selectColList+'
FROM T_CSENGETESIRENDORA_OSSZES s
INNER JOIN T_CSENGETESIREND_OSSZES csr ON csr.ELOZOTANEVIREKORDID=s.C_CSENGETESIRENDID AND csr.TOROLT=''F''
WHERE s.C_TANEVID = @aktTanevId AND s.ID = @csengetesiRendOraId AND s.TOROLT = ''F'''
END
ELSE
BEGIN
SELECT
@updateColList = ISNULL(@updateColList+','+insertColName+' = '+updateColname,insertColName+' = '+updateColname)
FROM #columnMapping
WHERE updateColname IS NOT NULL
SET @sql = N'
UPDATE t SET
'+@updateColList+'
FROM T_CSENGETESIRENDORA_OSSZES t
INNER JOIN T_CSENGETESIRENDORA_OSSZES s ON s.ID = t.ELOZOTANEVIREKORDID AND s.C_TANEVID = @aktTanevId
WHERE t.TOROLT = ''F'' AND t.C_TANEVID = @kovetkezoTanevId AND t.ELOZOTANEVIREKORDID = @csengetesiRendOraId'
END
--PRINT @sql
EXEC sp_executesql
@sql,N'
@aktTanevId int
,@kovetkezoTanevId int
,@csengetesiRendOraId int
,@csengetesiRendId int
,@intezmenyId int'
,@aktTanevId = @aktTanevId
,@kovetkezoTanevId = @kovetkezoTanevId
,@csengetesiRendOraId = @csengetesiRendOraId
,@csengetesiRendId = @csengetesiRendId
,@intezmenyId = @intezmenyId
SELECT @kovCsengrendOraId = ID FROM T_CSENGETESIRENDORA_OSSZES WHERE ELOZOTANEVIREKORDID=@csengetesiRendOraId AND TOROLT='F'
IF @isVisszaMenoleges=1
BEGIN
EXEC sp_UpdateOrarendiOraVisszamenolegesen @kovCsengrendOraId
END
END
GO