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

85 lines
2.7 KiB
Transact-SQL

DROP PROCEDURE IF EXISTS uspFollowupRendszerBeallitas
GO
CREATE PROCEDURE uspFollowupRendszerBeallitas
@intezmenyId int
,@aktTanevId int
,@kovetkezoTanevId int
,@beallitasId 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
@updateColList nvarchar(max)
,@sql nvarchar(max)
SELECT
@updateColList = ISNULL(@updateColList+','+insertColName+' = '+updateColname,insertColName+' = '+updateColname)
FROM fnGetFollowUpColumnMapping ('','T_RENDSZERBEALLITAS')
WHERE updateColname IS NOT NULL
SET @sql = N'
UPDATE t SET
'+@updateColList+'
FROM T_RENDSZERBEALLITAS_OSSZES t
INNER JOIN T_RENDSZERBEALLITAS_OSSZES s ON s.ID = @beallitasId AND s.ID = t.ELOZOTANEVIREKORDID'
PRINT @sql
EXEC sp_executesql
@sql,N'
@intezmenyId int
,@aktTanevId int
,@kovetkezoTanevId int
,@beallitasId int'
,@intezmenyId = @intezmenyId
,@aktTanevId = @aktTanevId
,@kovetkezoTanevId = @kovetkezoTanevId
,@beallitasId = @beallitasId
-- Dátum típusú rendszerbeállításoknál az alapértelmezett beállításnál a dátumokat a tanév első és utolsó napja közé módosítjuk
IF EXISTS (
SELECT 1
FROM T_RENDSZERBEALLITAS_OSSZES rbk
INNER JOIN T_RENDSZERBEALLITAS_OSSZES rba ON rba.ID = @beallitasId
AND rba.ID = rbk.ELOZOTANEVIREKORDID
AND rba.C_ERTEKTIPUS = 1696
AND rba.C_BEALLITASTIPUS <> 3082
AND rba.TOROLT = 'F'
WHERE rbk.TOROLT = 'F'
)
BEGIN
DECLARE @rbDatum datetime
,@rbID int
SELECT @rbID = rbk.ID, @rbDatum = CAST(JSON_VALUE(rbk.C_ERTEK, '$.Date') AS datetime)
FROM T_RENDSZERBEALLITAS_OSSZES rbk
INNER JOIN T_RENDSZERBEALLITAS_OSSZES rba ON rba.ID = @beallitasId
AND rba.ID = rbk.ELOZOTANEVIREKORDID
AND rba.C_ERTEKTIPUS = 1696
AND rba.TOROLT = 'F'
WHERE rbk.TOROLT = 'F'
UPDATE rbk SET
rbk.C_ERTEK = JSON_MODIFY(rbk.C_ERTEK, '$.Date', CONVERT(nvarchar, nn.C_NAPDATUMA, 126))
,rbk.SERIAL = rbk.SERIAL + 1
,rbk.MODIFIER = rba.MODIFIER
,rbk.LASTCHANGED = rba.LASTCHANGED
FROM T_RENDSZERBEALLITAS_OSSZES rbk
INNER JOIN T_RENDSZERBEALLITAS_OSSZES rba ON rba.ID = @beallitasId
AND rba.ID = rbk.ELOZOTANEVIREKORDID
AND rba.TOROLT = 'F'
INNER JOIN T_NAPTARINAP_OSSZES nn ON nn.C_TANEVID = rbk.C_TANEVID AND nn.TOROLT = 'F'
AND DATEPART(month, nn.C_NAPDATUMA) = DATEPART(month, @rbDatum)
AND DATEPART(day, nn.C_NAPDATUMA) = DATEPART(day, @rbDatum)
WHERE rbk.ID = @rbID
AND rbk.TOROLT = 'F'
AND @rbDatum <> nn.C_NAPDATUMA
END
END
GO