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

124 lines
3.9 KiB
Transact-SQL

DROP PROCEDURE IF EXISTS [dbo].[sp_CsengetesiRendOrakTorles]
GO
CREATE PROCEDURE [dbo].[sp_CsengetesiRendOrakTorles]
@TanevId int,
@xml xml
AS
BEGIN
SET NOCOUNT ON;
DECLARE @torlendoCsengetesiRendek TABLE (id int);
INSERT INTO @torlendoCsengetesiRendek
SELECT
sor.value('.', 'int') AS id
FROM @xml.nodes('/CsengetesiRendOraTorles/IdLista/Id') as sorok(sor)
SELECT
ID oraId,
csengrendOraId,
newCsengrendOraId,
newOraKezdete,
newOraVege,
ISNULL(newOraszam, 0) newOraszam,
newCsengrendId,
IsTanora,
UpdateVegeDate,
UpdateKezdeteDate,
UpdateType
INTO #TEMPmodositandoOrak
from (
select kapcsolodoOrak.ID,
kapcsolodoOrak.C_CSENGETESIRENDID,
kapcsolodoOrak.C_CSENGETESIRENDORAID csengrendOraId,
kapcsolodoOrak.C_ORASZAM,
alapcsora.C_KEZDETE,
alapcsora.C_VEGE,
kapcsolodoOrak.C_ORAKEZDETE,
kapcsolodoOrak.C_ORAVEGE,
kapcsolodoOrak.Tanora IsTanora,
csengrend.ID newCsengrendOraId,
csengrend.C_CSENGETESIRENDID newCsengrendId,
csengrend.C_KEZDETE newOraKezdete,
csengrend.C_VEGE newOraVege,
csengrend.C_ORASZAM newOraszam
,IIF(kapcsolodoOrak.Tanora = 0 and cast(alapcsora.C_VEGE as time) = cast(kapcsolodoOrak.C_ORAVEGE as time) and csengrend.C_VEGE is not null, 1, 0) UpdateVegeDate
,IIF(kapcsolodoOrak.Tanora = 0 and cast(alapcsora.C_KEZDETE as time) = cast(kapcsolodoOrak.C_ORAKEZDETE as time) and csengrend.C_KEZDETE is not null, 1, 0) UpdateKezdeteDate
,IIF(csengrend.ID is null, 1, 0) UpdateType
from (
select
x.ID,
C_CSENGETESIRENDID,
C_CSENGETESIRENDORAID,
C_ORASZAM,
C_ORAKEZDETE,
C_ORAVEGE,
Tanora
from(
select ID,
C_CSENGETESIRENDID,
C_CSENGETESIRENDORAID,
C_ORASZAM,
C_ORAKEZDETE,
C_ORAVEGE,
0 Tanora
from T_ORARENDIORA_OSSZES
union
select ID,
C_CSENGETESIRENDID,
C_CSENGETESIRENDORAID,
C_ORASZAM,
C_ORAKEZDETE,
C_ORAVEGE,
1 Tanora
from T_TANITASIORA_OSSZES
) x
inner join @torlendoCsengetesiRendek torlendoIdk on torlendoIdk.id = x.C_CSENGETESIRENDORAID
) kapcsolodoOrak
left join (
select
ID,
C_KEZDETE,
C_VEGE
from T_CSENGETESIRENDORA_OSSZES) alapcsora on alapcsora.ID = kapcsolodoOrak.C_CSENGETESIRENDORAID
left join (select csora.ID,
csora.C_CSENGETESIRENDID,
csora.C_KEZDETE,
csora.C_VEGE,
csora.C_ORASZAM
from T_CSENGETESIRENDORA_OSSZES csora
inner join T_CSENGETESIREND_OSSZES on csora.C_CSENGETESIRENDID = T_CSENGETESIREND_OSSZES.ID And T_CSENGETESIREND_OSSZES.C_AKTIV = 'T'
where csora.C_TANEVID = @TanevId)csengrend on csengrend.C_ORASZAM = kapcsolodoOrak.C_ORASZAM and csengrend.ID != kapcsolodoOrak.C_CSENGETESIRENDORAID
)t
UPDATE o
SET
o.C_ORAVEGE = IIF(temp.UpdateVegeDate = 1,
DATEADD(HOUR, datepart(hour, temp.newOraVege),DATEADD(MINUTE,datepart(minute, temp.newOraVege),CAST(CAST(o.C_ORAVEGE AS DATE) as datetime))),
o.C_ORAVEGE),
o.C_ORAKEZDETE = IIF(temp.UpdateKezdeteDate = 1,
DATEADD(HOUR, datepart(hour, temp.newOraVege),DATEADD(MINUTE,datepart(minute, temp.newOraVege),CAST(CAST(o.C_ORAKEZDETE AS DATE) as datetime))),
o.C_ORAKEZDETE),
o.C_CSENGETESIRENDID = temp.newCsengrendId,
o.C_CSENGETESIRENDORAID = temp.newCsengrendOraId,
o.C_ORASZAM = temp.newOraszam
from T_ORARENDIORA_OSSZES o
inner join #TEMPmodositandoOrak temp on temp.csengrendOraId = o.C_CSENGETESIRENDORAID and temp.IsTanora = 0
UPDATE t
SET
t.C_CSENGETESIRENDID = temp.newCsengrendId,
t.C_CSENGETESIRENDORAID = temp.newCsengrendOraId,
t.C_ORASZAM = temp.newOraszam
from T_TANITASIORA_OSSZES t
inner join #TEMPmodositandoOrak temp on temp.csengrendOraId = t.C_CSENGETESIRENDORAID and temp.IsTanora = 1
DELETE csro
FROM T_CSENGETESIRENDORA_OSSZES csro
inner join @torlendoCsengetesiRendek torlendoIdk on torlendoIdk.id = csro.ID
DROP TABLE #TEMPmodositandoOrak
END
GO