DLLG#82309 Rekening houden met meerdere opeenvolgende vrije dagen

svn path=/Database/trunk/; revision=68441
This commit is contained in:
2025-03-18 13:47:31 +00:00
parent 55ff80d435
commit 061df2a8b2

View File

@@ -674,28 +674,29 @@ CREATE OR REPLACE PACKAGE BODY fac AS
AND pEindWerkUur BETWEEN 0 AND 24
AND pEindWerkUur > pBeginWerkUur
THEN
-- Verschuif begindatum als deze valt [a] buiten de meegegeven uren of [b] op
-- een vrije dag. Dit geldt Kantoortijden- of Openingstijden-regime!
SELECT COUNT ( * )
INTO vrijedag
FROM mld_vrije_dagen
WHERE mld_vrije_dagen_datum = TRUNC (begindatum)
AND mld_vrije_dagen_id = pCalendarId;
datumbegin := begindatum;
WHILE vrijedag IS NULL OR vrijedag = 1
LOOP
-- Verschuif datumbegin als deze valt [a] buiten de meegegeven uren of [b] op
-- een vrije dag. Dit geldt Kantoortijden- of Openingstijden-regime!
SELECT COUNT ( * )
INTO vrijedag
FROM mld_vrije_dagen
WHERE mld_vrije_dagen_datum = TRUNC (datumbegin)
AND mld_vrije_dagen_id = pCalendarId;
IF (begindatum > TRUNC (begindatum) + (pEindWerkUur / 24) OR vrijedag = 1)
THEN
-- Als begintijd na 'pEindWerkUur', dan naar 'pBeginWerkUur' volgende dag;
-- hetzelfde als begindag is een vrije dag.
-- En als deze volgende dag is een vrije dag, dan volgt vanzelf compensatie!
datumbegin := TRUNC (begindatum + 1) + (pBeginWerkUur / 24);
ELSIF (begindatum < TRUNC (begindatum) + (pBeginWerkUur / 24))
THEN
-- Als begintijd voor 'pBeginWerkUur', dan naar 'pBeginWerkUur' huidige dag.
datumbegin := TRUNC (begindatum) + (pBeginWerkUur / 24);
ELSE
-- Anders 1-op-1 overnemen.
datumbegin := begindatum;
END IF;
IF (datumbegin > TRUNC (datumbegin) + (pEindWerkUur / 24) OR vrijedag = 1)
THEN
-- Als begintijd na 'pEindWerkUur', dan naar 'pBeginWerkUur' volgende dag;
-- hetzelfde als begindag is een vrije dag.
-- En als deze volgende dag is een vrije dag, dan volgt vanzelf compensatie!
datumbegin := TRUNC (datumbegin + 1) + (pBeginWerkUur / 24);
ELSIF (datumbegin < TRUNC (datumbegin) + (pBeginWerkUur / 24))
THEN
-- Als begintijd voor 'pBeginWerkUur', dan naar 'pBeginWerkUur' huidige dag.
datumbegin := TRUNC (datumbegin) + (pBeginWerkUur / 24);
END IF;
END LOOP;
IF pMode = 0
THEN