FMHN#84318 instellen bedrijfskalender

svn path=/Database/trunk/; revision=65492
This commit is contained in:
Erik Groener
2024-07-09 11:35:54 +00:00
parent 31d92c6c3f
commit e24cbb07bb
2 changed files with 103 additions and 73 deletions

View File

@@ -64,16 +64,16 @@ CREATE OR REPLACE PACKAGE fac
FUNCTION getweekdaynum (d IN DATE) RETURN NUMBER;
FUNCTION getdomeinwaarde (dkey IN NUMBER, waarde IN VARCHAR2, ignorewhenxmlnode IN NUMBER DEFAULT 0) RETURN VARCHAR2;
FUNCTION getscopeleveltext (plevel IN NUMBER, ptype IN VARCHAR) RETURN VARCHAR;
FUNCTION count_Work_Days ( pdate1 IN DATE , pdate2 IN DATE ) RETURN NUMBER;
FUNCTION count_Work_Days_InclTime ( pdate1 IN DATE , pdate2 IN DATE ) RETURN NUMBER;
FUNCTION iswerkdag (begindatum IN DATE, kalender IN VARCHAR2 DEFAULT 'Default') RETURN NUMBER;
FUNCTION count_Work_Days ( pdate1 IN DATE , pdate2 IN DATE, pCalendarId IN VARCHAR2 DEFAULT 'Default' ) RETURN NUMBER;
FUNCTION count_Work_Days_InclTime ( pdate1 IN DATE , pdate2 IN DATE, pCalendarId IN VARCHAR2 DEFAULT 'Default' ) RETURN NUMBER;
FUNCTION iswerkdag (begindatum IN DATE, pCalendarId IN VARCHAR2 DEFAULT 'Default') RETURN NUMBER;
FUNCTION iswerktijd RETURN NUMBER;
FUNCTION datumtijdplusuitvoertijd (begindatum IN DATE, uitvoertijd IN NUMBER, uitvoertijdtype IN VARCHAR2) RETURN DATE;
FUNCTION datumtijdplusuitvoertijd (begindatum IN DATE, uitvoertijd IN NUMBER, uitvoertijdtype IN VARCHAR2, pCalendarId IN VARCHAR2 DEFAULT 'Default') RETURN DATE;
FUNCTION datumtijdplusuitvoertijd (begindatum IN DATE, uitvoertijd IN NUMBER, uitvoertijdtype IN VARCHAR2,
pBeginWerkUur IN NUMBER, pEindWerkUur IN NUMBER, pMode IN NUMBER) RETURN DATE;
FUNCTION datumtijdnaaruitvoertijd (begindatum IN DATE, einddatum IN DATE, uitvoertijdtype IN VARCHAR2) RETURN MLD_T_UITVOERTIJD;
pBeginWerkUur IN NUMBER, pEindWerkUur IN NUMBER, pMode IN NUMBER, pCalendarId IN VARCHAR2 DEFAULT 'Default') RETURN DATE;
FUNCTION datumtijdnaaruitvoertijd (begindatum IN DATE, einddatum IN DATE, uitvoertijdtype IN VARCHAR2, pCalendarId IN VARCHAR2 DEFAULT 'Default') RETURN MLD_T_UITVOERTIJD;
FUNCTION datumtijdnaaruitvoertijd (begindatum IN DATE, einddatum IN DATE, uitvoertijdtype IN VARCHAR2,
pBeginWerkUur IN NUMBER, pEindWerkUur IN NUMBER, pMode IN NUMBER) RETURN MLD_T_UITVOERTIJD;
pBeginWerkUur IN NUMBER, pEindWerkUur IN NUMBER, pMode IN NUMBER, pCalendarId IN VARCHAR2 DEFAULT 'Default') RETURN MLD_T_UITVOERTIJD;
FUNCTION getdatemillisec (i_date IN DATE) RETURN NUMBER;
FUNCTION usrrap_query (p_tabelnaam IN VARCHAR2) RETURN VARCHAR2;
FUNCTION usrrap_orderby (p_tabelnaam IN VARCHAR2) RETURN VARCHAR2;
@@ -133,12 +133,12 @@ CREATE OR REPLACE PACKAGE fac
PROCEDURE putjobnotifications (pviewname VARCHAR2, pmode NUMBER, pflags NUMBER, pqueue VARCHAR2 DEFAULT 'DEFAULT');
FUNCTION getEmail ( pkey IN NUMBER ) RETURN VARCHAR2;
FUNCTION getMobile ( pkey IN NUMBER ) RETURN VARCHAR2;
PROCEDURE fac_nightly;
PROCEDURE fac_nightly (pCalendarId IN VARCHAR2 DEFAULT 'Default');
PROCEDURE fac_daily;
PROCEDURE fac_weekly;
PROCEDURE fac_monthly;
PROCEDURE fac_pre_putorders;
PROCEDURE executeschedules;
PROCEDURE executeschedules(pCalendarId IN VARCHAR2 DEFAULT 'Default');
PROCEDURE markorderassent(pxmlnode VARCHAR2, pkey NUMBER, presult NUMBER, presulttext VARCHAR2, pperslid_key NUMBER DEFAULT NULL);
PROCEDURE marknotiassent(pnotikey NUMBER, presult NUMBER, presulttext VARCHAR2, pperslid_key NUMBER DEFAULT NULL);
FUNCTION getSetting (pname IN VARCHAR2 ) RETURN VARCHAR2;
@@ -155,14 +155,14 @@ CREATE OR REPLACE PACKAGE fac
FUNCTION getdbversion RETURN VARCHAR2;
FUNCTION getDefaultBehandelteam(p_stdm IN NUMBER) RETURN NUMBER;
PROCEDURE processemail (pfrom IN VARCHAR2, pto IN VARCHAR2, psubject IN VARCHAR2, pbody IN VARCHAR2, psessionid IN VARCHAR2);
FUNCTION isdatefeestdag(p_date IN DATE) RETURN BOOLEAN;
FUNCTION calcnextcyclusdate (p_date IN DATE, p_mode IN NUMBER, p_eenheid IN NUMBER, p_periode IN NUMBER, p_bits IN NUMBER) RETURN DATE;
FUNCTION nextcyclusdate (p_date IN DATE, p_mode IN NUMBER, p_eenheid IN NUMBER, p_periode IN NUMBER, p_bits IN NUMBER, p_steps IN NUMBER DEFAULT 0, p_ismjob IN NUMBER DEFAULT 0) RETURN DATE;
FUNCTION nextcyclusdatedeel (p_insdeel IN NUMBER, p_srtcontrole IN NUMBER, p_steps IN NUMBER DEFAULT 0) RETURN DATE;
FUNCTION nextcyclusdatesteps (p_date IN DATE, p_mode IN NUMBER, p_eenheid IN NUMBER, p_periode IN NUMBER, p_bits IN NUMBER, p_steps IN NUMBER DEFAULT 1, p_enddate IN DATE DEFAULT SYSDATE) RETURN NUMBER;
FUNCTION isdatefeestdag(p_date IN DATE, pCalendarId IN VARCHAR2 DEFAULT 'Default') RETURN BOOLEAN;
FUNCTION calcnextcyclusdate (p_date IN DATE, p_mode IN NUMBER, p_eenheid IN NUMBER, p_periode IN NUMBER, p_bits IN NUMBER, pCalendarId IN VARCHAR2 DEFAULT 'Default') RETURN DATE;
FUNCTION nextcyclusdate (p_date IN DATE, p_mode IN NUMBER, p_eenheid IN NUMBER, p_periode IN NUMBER, p_bits IN NUMBER, p_steps IN NUMBER DEFAULT 0, p_ismjob IN NUMBER DEFAULT 0, pCalendarId IN VARCHAR2 DEFAULT 'Default') RETURN DATE;
FUNCTION nextcyclusdatedeel (p_insdeel IN NUMBER, p_srtcontrole IN NUMBER, p_steps IN NUMBER DEFAULT 0, pCalendarId IN VARCHAR2 DEFAULT 'Default') RETURN DATE;
FUNCTION nextcyclusdatesteps (p_date IN DATE, p_mode IN NUMBER, p_eenheid IN NUMBER, p_periode IN NUMBER, p_bits IN NUMBER, p_steps IN NUMBER DEFAULT 1, p_enddate IN DATE DEFAULT SYSDATE, pCalendarId IN VARCHAR2 DEFAULT 'Default') RETURN NUMBER;
FUNCTION makehash (p_in VARCHAR2, method IN VARCHAR2 DEFAULT 'MD5') RETURN VARCHAR2;
FUNCTION testhash (p_hash VARCHAR2, p_in VARCHAR2) RETURN NUMBER;
PROCEDURE createlikebookmark (pxmlnode VARCHAR2, prefkey NUMBER);
PROCEDURE createlikebookmark (pxmlnode VARCHAR2, prefkey NUMBER, pCalendarId IN VARCHAR2 DEFAULT 'Default');
PROCEDURE sequence_nextval(p_seqname IN VARCHAR2, p_initval IN NUMBER DEFAULT 1, p_initexpire IN DATE DEFAULT NULL);
PROCEDURE remove_tracking(p_xmlnode IN VARCHAR2, p_refkey IN NUMBER);
FUNCTION exceeds_profiel (p_bestelbedrag IN NUMBER, p_prs_key IN NUMBER, p_disc_key IN NUMBER) RETURN BOOLEAN;
@@ -429,7 +429,7 @@ CREATE OR REPLACE PACKAGE BODY fac AS
END;
-- Sluit weekend en vrije dagen uit
FUNCTION iswerkdag (begindatum IN DATE, kalender IN VARCHAR2 DEFAULT 'Default')
FUNCTION iswerkdag (begindatum IN DATE, pCalendarId IN VARCHAR2 DEFAULT 'Default')
RETURN NUMBER
AS
dagvdweek NUMBER;
@@ -447,7 +447,7 @@ CREATE OR REPLACE PACKAGE BODY fac AS
INTO vrijedagen
FROM mld_vrije_dagen
WHERE mld_vrije_dagen_datum = TRUNC (begindatum)
AND mld_vrije_dagen_id = kalender;
AND mld_vrije_dagen_id = pCalendarId;
IF vrijedagen = 1
THEN
@@ -475,7 +475,7 @@ CREATE OR REPLACE PACKAGE BODY fac AS
END;
-- Return number of workdays between two dates, not including the startdate, weekends and holidays
FUNCTION count_Work_Days0( pdate1 IN DATE , pdate2 IN DATE, pInclTime IN BOOLEAN ) RETURN NUMBER IS
FUNCTION count_Work_Days0( pdate1 IN DATE , pdate2 IN DATE, pInclTime IN BOOLEAN, pCalendarId IN VARCHAR2 DEFAULT 'Default' ) RETURN NUMBER IS
eikdag NUMBER;
v_date_from DATE;
v_date_to DATE;
@@ -539,7 +539,9 @@ CREATE OR REPLACE PACKAGE BODY fac AS
AND NOT EXISTS
(SELECT 1
FROM MLD_VRIJE_DAGEN
WHERE TRUNC (MLD_VRIJE_DAGEN_DATUM) = v_date_to);
WHERE TRUNC (MLD_VRIJE_DAGEN_DATUM) = v_date_to
AND mld_vrije_dagen_id = pCalendarId
);
END IF;
-- Determine the registered holidays between FROM+1 (excluding startdate!) and TO
@@ -547,6 +549,7 @@ CREATE OR REPLACE PACKAGE BODY fac AS
INTO v_holidays
FROM MLD_VRIJE_DAGEN
WHERE MLD_VRIJE_DAGEN_DATUM BETWEEN v_date_from+1 AND v_date_to
AND mld_vrije_dagen_id = pCalendarId
AND getweekdaynum(MLD_VRIJE_DAGEN_DATUM) NOT IN (1, 7); -- Weekenden worden al niet meegeteld
IF lbackwards THEN
@@ -556,14 +559,14 @@ CREATE OR REPLACE PACKAGE BODY fac AS
END IF;
END;
FUNCTION count_Work_Days_InclTime( pdate1 IN DATE , pdate2 IN DATE ) RETURN NUMBER IS
FUNCTION count_Work_Days_InclTime( pdate1 IN DATE , pdate2 IN DATE, pCalendarId IN VARCHAR2 DEFAULT 'Default' ) RETURN NUMBER IS
BEGIN
RETURN count_Work_Days0(pdate1,pdate2, TRUE);
RETURN count_Work_Days0(pdate1,pdate2, TRUE, pCalendarId);
END;
FUNCTION count_Work_Days( pdate1 IN DATE , pdate2 IN DATE ) RETURN NUMBER IS
FUNCTION count_Work_Days( pdate1 IN DATE , pdate2 IN DATE, pCalendarId IN VARCHAR2 DEFAULT 'Default' ) RETURN NUMBER IS
BEGIN
RETURN count_Work_Days0(pdate1,pdate2, FALSE);
RETURN count_Work_Days0(pdate1,pdate2, FALSE, pCalendarId);
END;
/*
@@ -573,7 +576,7 @@ CREATE OR REPLACE PACKAGE BODY fac AS
** Weekenddagen (Zondag = 1, Zaterdag = 7) en Vrije dagen (MLD_VRIJE_DAGEN).
** Testscript beschikbaar: /SRC/SQL/_UTIL/test_datumtijd.sql.
*/
FUNCTION datumtijdplusuitvoertijd (begindatum IN DATE, uitvoertijd IN NUMBER, uitvoertijdtype IN VARCHAR2) RETURN DATE
FUNCTION datumtijdplusuitvoertijd (begindatum IN DATE, uitvoertijd IN NUMBER, uitvoertijdtype IN VARCHAR2, pCalendarId IN VARCHAR2 DEFAULT 'Default') RETURN DATE
IS
BEGIN
IF BeginWerkUur IS NULL OR EindWerkUur IS NULL
@@ -583,7 +586,7 @@ CREATE OR REPLACE PACKAGE BODY fac AS
DBMS_OUTPUT.put_line ('Recaching Werkuren ' || BeginWerkUur||'..'||EindWerkUur);
END IF;
RETURN datumtijdplusuitvoertijd (begindatum, uitvoertijd, uitvoertijdtype,
BeginWerkUur, EindWerkUur, 1); -- 1=alleen werkdagen excl. vrije dagen
BeginWerkUur, EindWerkUur, 1, pCalendarId); -- 1=alleen werkdagen excl. vrije dagen
END;
-- Bereken de einddatum gegeven de begindatum en uitvoertijd. De mode bepaalt
@@ -596,7 +599,8 @@ CREATE OR REPLACE PACKAGE BODY fac AS
uitvoertijdtype IN VARCHAR2,
pBeginWerkUur IN NUMBER,
pEindWerkUur IN NUMBER,
pMode IN NUMBER)
pMode IN NUMBER,
pCalendarId IN VARCHAR2 DEFAULT 'Default')
RETURN DATE
IS
returnval DATE;
@@ -644,7 +648,8 @@ CREATE OR REPLACE PACKAGE BODY fac AS
SELECT COUNT ( * )
INTO vrijedag
FROM mld_vrije_dagen
WHERE mld_vrije_dagen_datum = TRUNC (begindatum);
WHERE mld_vrije_dagen_datum = TRUNC (begindatum)
AND mld_vrije_dagen_id = pCalendarId;
IF (begindatum > TRUNC (begindatum) + (pEindWerkUur / 24) OR vrijedag = 1)
THEN
@@ -727,10 +732,12 @@ CREATE OR REPLACE PACKAGE BODY fac AS
-- Bepaal nieuwe delta.
SELECT COUNT ( * )
INTO delta
FROM (SELECT * FROM mld_vrije_dagen
FROM (SELECT * FROM mld_vrije_dagen WHERE mld_vrije_dagen_id = pCalendarId
MINUS -- Igv. pMode=1 za+zo niet meetellen; deze worden sowieso geskipt!
SELECT * FROM mld_vrije_dagen
WHERE pMode = 1 AND fac.getweekdaynum (mld_vrije_dagen_datum) IN (1,7))
WHERE pMode = 1 AND fac.getweekdaynum (mld_vrije_dagen_datum) IN (1,7)
AND mld_vrije_dagen_id = pCalendarId
)
WHERE mld_vrije_dagen_datum BETWEEN LEAST(TRUNC (olddatumgereed + 1), TRUNC (newdatumgereed)) AND TRUNC (newdatumgereed);
EXIT WHEN delta = 0;
@@ -753,7 +760,7 @@ CREATE OR REPLACE PACKAGE BODY fac AS
aantalwerkdagen := aantalwerkdagen + 1; -- inclusief extra dag
END IF;
newdatumgereed := datumtijdplusuitvoertijd (datumbegin, aantalwerkdagen, 'DAGEN', pBeginWerkUur, pEindWerkUur, pMode);
newdatumgereed := datumtijdplusuitvoertijd (datumbegin, aantalwerkdagen, 'DAGEN', pBeginWerkUur, pEindWerkUur, pMode, pCalendarId);
--Belangrijk: nu nog de eerder bepaalde gereedtijd zetten!
returnval := TRUNC (newdatumgereed) + (gereeduur / 24);
@@ -768,7 +775,7 @@ CREATE OR REPLACE PACKAGE BODY fac AS
-- datumtijdplusuitvoertijd(begin, datumtijdnaaruitvoertijd(begin, eind, type), type) == eind
-- datumtijdnaaruitvoertijd(begin, datumtijdplusuitvoertijd(begin, uitvoertijd, type), type) == uitvoertijd
-- Is de luxe versie van count_Work_Days
FUNCTION datumtijdnaaruitvoertijd (begindatum IN DATE, einddatum IN DATE, uitvoertijdtype IN VARCHAR2) RETURN MLD_T_UITVOERTIJD
FUNCTION datumtijdnaaruitvoertijd (begindatum IN DATE, einddatum IN DATE, uitvoertijdtype IN VARCHAR2, pCalendarId IN VARCHAR2 DEFAULT 'Default') RETURN MLD_T_UITVOERTIJD
AS
BEGIN
IF BeginWerkUur IS NULL OR EindWerkUur IS NULL
@@ -778,7 +785,7 @@ CREATE OR REPLACE PACKAGE BODY fac AS
DBMS_OUTPUT.put_line ('Recaching Werkuren ' || BeginWerkUur||'..'||EindWerkUur);
END IF;
RETURN datumtijdnaaruitvoertijd (begindatum, einddatum, uitvoertijdtype,
BeginWerkUur, EindWerkUur, 1); -- 1=alleen werkdagen excl. vrije dagen
BeginWerkUur, EindWerkUur, 1, pCalendarId); -- 1=alleen werkdagen excl. vrije dagen
END datumtijdnaaruitvoertijd;
FUNCTION datumtijdnaaruitvoertijd (begindatum IN DATE,
@@ -786,7 +793,8 @@ CREATE OR REPLACE PACKAGE BODY fac AS
uitvoertijdtype IN VARCHAR2,
pBeginWerkUur IN NUMBER,
pEindWerkUur IN NUMBER,
pMode IN NUMBER)
pMode IN NUMBER,
pCalendarId IN VARCHAR2 DEFAULT 'Default')
RETURN MLD_T_UITVOERTIJD
AS
uitvoertijd mld_stdmelding.mld_stdmelding_t_uitvoertijd%TYPE := MLD_T_UITVOERTIJD(NULL, NULL); -- constructor initialisatie
@@ -833,7 +841,8 @@ CREATE OR REPLACE PACKAGE BODY fac AS
SELECT COUNT ( * )
INTO vrijedagen
FROM mld_vrije_dagen
WHERE mld_vrije_dagen_datum = TRUNC (begindatum);
WHERE mld_vrije_dagen_datum = TRUNC (begindatum)
AND mld_vrije_dagen_id = pCalendarId;
IF vrijedagen = 1
THEN
@@ -843,7 +852,8 @@ CREATE OR REPLACE PACKAGE BODY fac AS
SELECT COUNT ( * )
INTO vrijedagen
FROM mld_vrije_dagen
WHERE mld_vrije_dagen_datum = TRUNC (einddatum);
WHERE mld_vrije_dagen_datum = TRUNC (einddatum)
AND mld_vrije_dagen_id = pCalendarId;
IF vrijedagen = 1
THEN
@@ -866,7 +876,8 @@ CREATE OR REPLACE PACKAGE BODY fac AS
SELECT COUNT ( * )
INTO vrijedagen
FROM mld_vrije_dagen
WHERE mld_vrije_dagen_datum BETWEEN TRUNC (begindatum + 1) AND einddatum - 1;
WHERE mld_vrije_dagen_datum BETWEEN TRUNC (begindatum + 1) AND einddatum - 1
AND mld_vrije_dagen_id = pCalendarId;
IF TRUNC (begindatum+1) = TRUNC (einddatum)
THEN
@@ -886,9 +897,9 @@ CREATE OR REPLACE PACKAGE BODY fac AS
IF iswerkdag (einddatum) = 0
THEN
laatstedag := 0;
heledagen := fac.count_Work_Days (TRUNC (begindatum), TRUNC (einddatum));
heledagen := fac.count_Work_Days (TRUNC (begindatum), TRUNC (einddatum), pCalendarId);
ELSE
heledagen := fac.count_Work_Days (TRUNC (begindatum), TRUNC (einddatum)) - 1;
heledagen := fac.count_Work_Days (TRUNC (begindatum), TRUNC (einddatum), pCalendarId) - 1;
END IF;
END IF;
@@ -3273,7 +3284,7 @@ CREATE OR REPLACE PACKAGE BODY fac AS
END IF;
END;
PROCEDURE fac_nightly
PROCEDURE fac_nightly (pCalendarId IN VARCHAR2 DEFAULT 'Default')
AS
cust_daily VARCHAR2(20);
has_cust_daily NUMBER(1);
@@ -3349,7 +3360,7 @@ CREATE OR REPLACE PACKAGE BODY fac AS
fac_custprocedure('PRE_PUTORDERS');
END;
PROCEDURE executeschedules
PROCEDURE executeschedules(pCalendarId IN VARCHAR2 DEFAULT 'Default')
AS
newaantal NUMBER;
@@ -3376,14 +3387,18 @@ CREATE OR REPLACE PACKAGE BODY fac AS
0, -- mode: moment-modus
COALESCE(fac_activiteit_eenheid, 1),
fac_activiteit_periode,
fac_activiteit_bits)
fac_activiteit_bits,
pCalendarId
)
AND fac_activiteit_einddatum)
OR (fac_activiteit_volgende IS NULL AND fac_activiteit_einddatum IS NULL
AND SYSDATE > fac.calcnextcyclusdate(TRUNC(fac_activiteit_eerste, 'DD') - 1,
0, -- mode: moment-modus
COALESCE(fac_activiteit_eenheid, 1),
fac_activiteit_periode,
fac_activiteit_bits)
fac_activiteit_bits,
pCalendarId
)
)
)
AND fac_activiteit_status_key IN (2, 3)
@@ -3411,7 +3426,9 @@ CREATE OR REPLACE PACKAGE BODY fac AS
0, -- mode: moment-modus
COALESCE(fac_activiteit_eenheid, 1),
COALESCE(fac_activiteit_periode, 1),
fac_activiteit_bits),
fac_activiteit_bits,
pCalendarId
),
fac_activiteit_laatste = SYSDATE,
fac_activiteit_aantal = newaantal
WHERE fac_activiteit_key = rec1.fac_activiteit_key;
@@ -3423,7 +3440,9 @@ CREATE OR REPLACE PACKAGE BODY fac AS
0, -- mode: moment-modus
COALESCE(fac_activiteit_eenheid, 1),
COALESCE(fac_activiteit_periode, 1),
fac_activiteit_bits),
fac_activiteit_bits,
pCalendarId
),
fac_activiteit_status_key = 2,
fac_activiteit_aantal = newaantal
WHERE fac_activiteit_key = rec1.fac_activiteit_key;
@@ -5034,7 +5053,7 @@ CREATE OR REPLACE PACKAGE BODY fac AS
END;
-- Is de meegegeven datum een feestdag
FUNCTION isdatefeestdag(p_date IN DATE)
FUNCTION isdatefeestdag(p_date IN DATE, pCalendarId IN VARCHAR2 DEFAULT 'Default')
RETURN BOOLEAN
IS
inspdate DATE;
@@ -5042,7 +5061,8 @@ CREATE OR REPLACE PACKAGE BODY fac AS
SELECT mvd.mld_vrije_dagen_datum
INTO inspdate
FROM mld_vrije_dagen mvd
WHERE mvd.mld_vrije_dagen_datum = TRUNC(p_date, 'DD');
WHERE mvd.mld_vrije_dagen_datum = TRUNC(p_date, 'DD')
AND mvd.mld_vrije_dagen_id = pCalendarId;
RETURN TRUE;
EXCEPTION
WHEN NO_DATA_FOUND
@@ -5057,7 +5077,8 @@ CREATE OR REPLACE PACKAGE BODY fac AS
p_mode IN NUMBER,
p_eenheid IN NUMBER,
p_periode IN NUMBER,
p_bits IN NUMBER)
p_bits IN NUMBER,
pCalendarId IN VARCHAR2 DEFAULT 'Default')
RETURN DATE
IS
fromdate DATE;
@@ -5095,10 +5116,10 @@ CREATE OR REPLACE PACKAGE BODY fac AS
BEGIN
-- uurlijks
inspdate := fromdate + p_periode / 24;
IF (BITAND(p_bits, 128) = 128) AND isdatefeestdag(inspdate)
IF (BITAND(p_bits, 128) = 128) AND isdatefeestdag(inspdate, pCalendarId)
THEN
-- Checkbox "Niet op feestdagen" is aangevinkt en de datum is een feestdag. De datum overslaan en bepaal de volgende inspectiedatum.
inspdate := calcnextcyclusdate (inspdate, p_mode, p_eenheid, p_periode, p_bits);
inspdate := calcnextcyclusdate (inspdate, p_mode, p_eenheid, p_periode, p_bits, pCalendarId);
END IF;
-- werking van cyclus_bits tbd
END;
@@ -5107,10 +5128,10 @@ CREATE OR REPLACE PACKAGE BODY fac AS
BEGIN
-- dagelijks, elke cperiode dagen
inspdate := fromdate + p_periode;
IF (BITAND(p_bits, 128) = 128) AND isdatefeestdag(inspdate)
IF (BITAND(p_bits, 128) = 128) AND isdatefeestdag(inspdate, pCalendarId)
THEN
-- Checkbox "Niet op feestdagen" is aangevinkt en de datum is een feestdag. De datum overslaan en bepaal de volgende inspectiedatum.
inspdate := calcnextcyclusdate (inspdate, p_mode, p_eenheid, p_periode, p_bits);
inspdate := calcnextcyclusdate (inspdate, p_mode, p_eenheid, p_periode, p_bits, pCalendarId);
END IF;
-- cyclus_bits heeft geen effect
END;
@@ -5171,10 +5192,10 @@ CREATE OR REPLACE PACKAGE BODY fac AS
inspdate := inspdate + nextday;
END IF;
END IF;
IF (BITAND(p_bits, 128) = 128) AND isdatefeestdag(inspdate)
IF (BITAND(p_bits, 128) = 128) AND isdatefeestdag(inspdate, pCalendarId)
THEN
-- Checkbox "Niet op feestdagen" is aangevinkt en de datum is een feestdag. De datum overslaan en bepaal de volgende inspectiedatum.
inspdate := calcnextcyclusdate (inspdate, p_mode, p_eenheid, p_periode, p_bits);
inspdate := calcnextcyclusdate (inspdate, p_mode, p_eenheid, p_periode, p_bits, pCalendarId);
END IF;
END;
WHEN 3
@@ -5273,7 +5294,7 @@ CREATE OR REPLACE PACKAGE BODY fac AS
-- Maar dan mag de datum niet een feestdag zijn als de checkbox "Niet op feestdagen" is aangevinkt.
month1 := TO_NUMBER(TO_CHAR (fromdate, 'MM'));
month2 := TO_NUMBER(TO_CHAR (inspdate, 'MM'));
IF (inspdate > fromdate AND month1 = month2) AND NOT ((BITAND(p_bits, 128) = 128) AND isdatefeestdag(inspdate))
IF (inspdate > fromdate AND month1 = month2) AND NOT ((BITAND(p_bits, 128) = 128) AND isdatefeestdag(inspdate, pCalendarId))
THEN
gevonden := TRUE;
END IF;
@@ -5293,17 +5314,17 @@ CREATE OR REPLACE PACKAGE BODY fac AS
IF (month1 <> month2)
THEN
-- Er is geen vijfde dag in de maand. De volgende bepalen.
inspdate := calcnextcyclusdate (fromdateplusperiode, p_mode, p_eenheid, p_periode, p_bits);
ELSIF (BITAND(p_bits, 128) = 128) AND isdatefeestdag(inspdate)
inspdate := calcnextcyclusdate (fromdateplusperiode, p_mode, p_eenheid, p_periode, p_bits, pCalendarId);
ELSIF (BITAND(p_bits, 128) = 128) AND isdatefeestdag(inspdate, pCalendarId)
THEN
-- De datum is een feestdag en de checkbox "Niet op feestdagen" is aangevinkt. De datum overslaan en bepaal de volgende inspectiedatum.
inspdate := calcnextcyclusdate (inspdate, p_mode, p_eenheid, p_periode, p_bits);
inspdate := calcnextcyclusdate (inspdate, p_mode, p_eenheid, p_periode, p_bits, pCalendarId);
END IF;
ELSE
IF (BITAND(p_bits, 128) = 128) AND isdatefeestdag(inspdate)
IF (BITAND(p_bits, 128) = 128) AND isdatefeestdag(inspdate, pCalendarId)
THEN
-- De datum is een feestdag en de checkbox "Niet op feestdagen" is aangevinkt. De datum overslaan en bepaal de volgende inspectiedatum.
inspdate := calcnextcyclusdate (inspdate, p_mode, p_eenheid, p_periode, p_bits);
inspdate := calcnextcyclusdate (inspdate, p_mode, p_eenheid, p_periode, p_bits, pCalendarId);
END IF;
END IF;
END IF;
@@ -5431,7 +5452,8 @@ CREATE OR REPLACE PACKAGE BODY fac AS
p_periode IN NUMBER,
p_bits IN NUMBER,
p_steps IN NUMBER DEFAULT 0,
p_ismjob IN NUMBER DEFAULT 0)
p_ismjob IN NUMBER DEFAULT 0,
pCalendarId IN VARCHAR2 DEFAULT 'Default')
RETURN DATE
IS
inspdate DATE;
@@ -5463,7 +5485,7 @@ CREATE OR REPLACE PACKAGE BODY fac AS
IF NOT (p_steps = 0 AND toekomst) -- p_steps != 0 || !toekomst
THEN
-- Calculate next cyclus date m.b.v. volledige datum met tijd.
inspdate := calcnextcyclusdate (inspdate, p_mode, p_eenheid, p_periode, p_bits);
inspdate := calcnextcyclusdate (inspdate, p_mode, p_eenheid, p_periode, p_bits, pCalendarId);
END IF;
-- Nu insdate_trunc van de next cyclus date weer bepalen
@@ -5488,7 +5510,7 @@ CREATE OR REPLACE PACKAGE BODY fac AS
THEN
RETURN inspdate;
ELSE
RETURN nextcyclusdate (inspdate, p_mode, p_eenheid, p_periode, p_bits, 0); -- volledige datum met tijd gebruiken
RETURN nextcyclusdate (inspdate, p_mode, p_eenheid, p_periode, p_bits, 0, pCalendarId); -- volledige datum met tijd gebruiken
END IF;
ELSIF p_steps > 1 AND nuoftoekomst
THEN
@@ -5497,7 +5519,7 @@ CREATE OR REPLACE PACKAGE BODY fac AS
THEN
RETURN inspdate;
ELSE
RETURN nextcyclusdate (inspdate, p_mode, p_eenheid, p_periode, p_bits, p_steps - 1); -- volledige datum met tijd gebruiken
RETURN nextcyclusdate (inspdate, p_mode, p_eenheid, p_periode, p_bits, p_steps - 1, pCalendarId); -- volledige datum met tijd gebruiken
END IF;
END;
@@ -5509,7 +5531,8 @@ CREATE OR REPLACE PACKAGE BODY fac AS
-- De einddatum van het object (xcp.ins_srtcontroledl_xcp_eind) wordt niet meegenomen. De volgende inspectiedatum wordt gewoon teruggeven.
FUNCTION nextcyclusdatedeel (p_insdeel IN NUMBER,
p_srtcontrole IN NUMBER,
p_steps IN NUMBER DEFAULT 0) -- Pas op: diverse klant-sql gebruiken deze functie
p_steps IN NUMBER DEFAULT 0,
pCalendarId IN VARCHAR2 DEFAULT 'Default') -- Pas op: diverse klant-sql gebruiken deze functie
RETURN DATE
IS
inspdate DATE;
@@ -5557,7 +5580,8 @@ CREATE OR REPLACE PACKAGE BODY fac AS
xcp.ins_srtcontrole_periode,
xcp.ins_srtcontrole_bits,
p_steps,
xcp.ctr_ismjob
xcp.ctr_ismjob,
pCalendarId
) inspectie_next
INTO inspdate
FROM ins_v_defined_inspect_xcp xcp
@@ -5575,7 +5599,8 @@ CREATE OR REPLACE PACKAGE BODY fac AS
p_periode IN NUMBER,
p_bits IN NUMBER,
p_steps IN NUMBER DEFAULT 1, -- Standaard beginnen te tellen bij 1.
p_enddate IN DATE DEFAULT SYSDATE)
p_enddate IN DATE DEFAULT SYSDATE,
pCalendarId IN VARCHAR2 DEFAULT 'Default')
RETURN NUMBER
IS
fromdate DATE;
@@ -5589,13 +5614,13 @@ CREATE OR REPLACE PACKAGE BODY fac AS
RETURN NULL;
END IF;
-- Calculate next cyclus date
inspdate := calcnextcyclusdate (p_date, p_mode, p_eenheid, p_periode, p_bits);
inspdate := calcnextcyclusdate (p_date, p_mode, p_eenheid, p_periode, p_bits, pCalendarId);
IF ((p_eenheid = 0 AND TRUNC(inspdate, 'HH24') >= TRUNC(p_enddate, 'HH24')) OR
(p_eenheid > 0 AND TRUNC(inspdate, 'DDD') >= TRUNC(p_enddate, 'DDD')))
THEN
RETURN p_steps;
ELSE
RETURN nextcyclusdatesteps (inspdate, p_mode, p_eenheid, p_periode, p_bits, p_steps + 1, p_enddate);
RETURN nextcyclusdatesteps (inspdate, p_mode, p_eenheid, p_periode, p_bits, p_steps + 1, p_enddate, pCalendarId);
END IF;
END;
@@ -5622,8 +5647,9 @@ CREATE OR REPLACE PACKAGE BODY fac AS
END IF;
END;
PROCEDURE createlikebookmark (pxmlnode VARCHAR2,
prefkey NUMBER)
PROCEDURE createlikebookmark (pxmlnode IN VARCHAR2,
prefkey IN NUMBER,
pCalendarId IN VARCHAR2 DEFAULT 'Default')
IS
expiredays NUMBER (10);
likerkey NUMBER(10);

View File

@@ -22727,6 +22727,7 @@ IS
CURSOR c1
IS
SELECT fac_imp_csv_col01 datum
, fac_imp_csv_col02 calendarid
FROM fac_imp_csv
WHERE fac_import_key = p_import_key;
@@ -22735,6 +22736,7 @@ IS
oracle_err_mes VARCHAR2 (200);
v_count_new NUMBER := 0;
v_datum DATE;
v_calendar_id VARCHAR2 (50);
BEGIN
FOR vrije_dag in c1
@@ -22742,15 +22744,17 @@ BEGIN
BEGIN
v_datum := TO_DATE(vrije_dag.datum, 'dd-mm-yyyy');
INSERT INTO mld_vrije_dagen
( mld_vrije_dagen_datum )
VALUES (v_datum);
( mld_vrije_dagen_datum
, mld_vrije_dagen_id
)
VALUES (v_datum, vrije_dag.calendarid);
v_count_new := v_count_new + 1;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := vrije_dag.datum || '/' || oracle_err_mes;
v_errormsg := vrije_dag.calendarid ||' - '|| vrije_dag.datum || '/' || oracle_err_mes;
fac.imp_writelog (p_import_key, 'E', v_errormsg, '');
END;
END LOOP;