FCLT#85890 fac.notifytrackingbedrijven kan nu ook met delay (voor Mareon)

svn path=/Database/branches/DB50/; revision=68269
This commit is contained in:
Jos Groot Lipman
2025-03-03 15:45:51 +00:00
parent 49452ff6bc
commit 05388b80a4
7 changed files with 63 additions and 37 deletions

View File

@@ -148,14 +148,15 @@ CREATE OR REPLACE PACKAGE fac
PROCEDURE trackaction_withkey (pcode VARCHAR2, prefkey NUMBER, puserkey NUMBER, pdatum DATE, poms VARCHAR2, psubjectkey NUMBER, new_fac_tracking_key OUT NUMBER);
PROCEDURE backtrackaction (pcode VARCHAR2, prefkey NUMBER, puserkey NUMBER, pdatum DATE);
PROCEDURE notifytracking(psrtnotificatiekey NUMBER, pperslid_key NUMBER, ptracking_oms VARCHAR2, prefkey NUMBER, ptrackingkey NUMBER DEFAULT NULL);
PROCEDURE notifytrackingbedrijven(ptrackingkey NUMBER);
PROCEDURE notifytrackingbedrijven(peventcode IN VARCHAR2, prefkey IN NUMBER);
PROCEDURE notifygeneriekbedrijven(prefkey NUMBER, ptrackingkey NUMBER);
PROCEDURE notifytrackingbedrijven(ptrackingkey NUMBER, pnotidelay NUMBER DEFAULT NULL);
PROCEDURE notifytrackingbedrijven(peventcode IN VARCHAR2, prefkey IN NUMBER, pnotidelay NUMBER DEFAULT NULL);
PROCEDURE notifygeneriekbedrijven(prefkey NUMBER, ptrackingkey NUMBER, pnotidelay NUMBER DEFAULT NULL);
PROCEDURE notifybedrijf(pbedrijf_key NUMBER,
pbedrijfadres_type VARCHAR2,
prefkey NUMBER,
ptrackingkey NUMBER DEFAULT NULL,
psrtnoti_key NUMBER DEFAULT NULL, -- als geen trackingkey
pnotidelay NUMBER DEFAULT NULL,
pxrefkey NUMBER DEFAULT NULL,
preference VARCHAR2 DEFAULT NULL,
psender VARCHAR2 DEFAULT NULL,
@@ -4863,7 +4864,7 @@ CREATE OR REPLACE PACKAGE BODY fac AS
END;
-- Zoek de nieuwste 'peventcode' tracking van prefkey en notificeer daarvan de bedrijven
PROCEDURE notifytrackingbedrijven(peventcode IN VARCHAR2, prefkey IN NUMBER)
PROCEDURE notifytrackingbedrijven(peventcode IN VARCHAR2, prefkey IN NUMBER, pnotidelay NUMBER DEFAULT NULL)
AS
l_trackingkey fac_tracking.fac_tracking_key%TYPE;
BEGIN
@@ -4876,12 +4877,12 @@ CREATE OR REPLACE PACKAGE BODY fac AS
AND fsn.fac_srtnotificatie_code = peventcode;
IF l_trackingkey IS NOT NULL
THEN
fac.notifytrackingbedrijven (l_trackingkey);
fac.notifytrackingbedrijven (l_trackingkey, pnotidelay);
END IF;
END;
-- Notificeren via een technisch adres
PROCEDURE notifytrackingbedrijven (ptrackingkey NUMBER)
PROCEDURE notifytrackingbedrijven (ptrackingkey NUMBER, pnotidelay NUMBER DEFAULT NULL)
AS
lxmlnode fac_srtnotificatie.fac_srtnotificatie_xmlnode%TYPE;
lcode fac_srtnotificatie.fac_srtnotificatie_code%TYPE;
@@ -4902,30 +4903,30 @@ CREATE OR REPLACE PACKAGE BODY fac AS
CASE
WHEN lxmlnode = 'melding'
THEN
mld.notifymeldingbedrijven(l_refkey, ptrackingkey);
mld.notifymeldingbedrijven(l_refkey, ptrackingkey, pnotidelay);
WHEN lxmlnode = 'opdracht'
THEN
mld.notifyopdrbedrijven(l_refkey, ptrackingkey);
mld.notifyopdrbedrijven(l_refkey, ptrackingkey, pnotidelay);
WHEN lxmlnode = 'reservering' OR lxmlnode = 'xreservering'
THEN
res.notifyreserveringbedrijven(l_refkey, ptrackingkey);
res.notifyreserveringbedrijven(l_refkey, ptrackingkey, pnotidelay);
WHEN lxmlnode = 'bestelling'
THEN
bes.notifybestellingbedrijven(l_refkey, ptrackingkey);
bes.notifybestellingbedrijven(l_refkey, ptrackingkey, pnotidelay);
WHEN lxmlnode = 'bestelopdr'
THEN
bes.notifybestelopdrbedrijven(l_refkey, ptrackingkey);
bes.notifybestelopdrbedrijven(l_refkey, ptrackingkey, pnotidelay);
WHEN lxmlnode = 'contract'
THEN
cnt.notifycontractbedrijven(l_refkey, ptrackingkey);
cnt.notifycontractbedrijven(l_refkey, ptrackingkey, pnotidelay);
ELSE
fac.notifygeneriekbedrijven(l_refkey, ptrackingkey);
fac.notifygeneriekbedrijven(l_refkey, ptrackingkey, pnotidelay);
END CASE;
END;
-- Notificeer genrieke bedrijven die luisteren naar onze notificatie
PROCEDURE notifygeneriekbedrijven (prefkey NUMBER, ptrackingkey NUMBER)
PROCEDURE notifygeneriekbedrijven (prefkey NUMBER, ptrackingkey NUMBER, pnotidelay NUMBER DEFAULT NULL)
AS
BEGIN
FOR bedrijfrec
@@ -4944,7 +4945,8 @@ CREATE OR REPLACE PACKAGE BODY fac AS
fac.notifybedrijf (pbedrijf_key => bedrijfrec.prs_bedrijf_key,
pbedrijfadres_type => bedrijfrec.bedrijfadres_type,
prefkey => prefkey,
ptrackingkey => ptrackingkey);
ptrackingkey => ptrackingkey,
pnotidelay => pnotidelay);
END LOOP;
END;
@@ -4954,6 +4956,7 @@ CREATE OR REPLACE PACKAGE BODY fac AS
prefkey NUMBER,
ptrackingkey NUMBER DEFAULT NULL,
psrtnoti_key NUMBER DEFAULT NULL, -- als geen trackingkey, bijvoorbeeld vanuit mld_t_mld_opdr_B_IU als teverzenden op 2 wordt gezet
pnotidelay NUMBER DEFAULT NULL,
pxrefkey NUMBER DEFAULT NULL,
preference VARCHAR2 DEFAULT NULL,
psender VARCHAR2 DEFAULT NULL, -- alleen bij opdrachten alg_locatie_email?
@@ -5111,14 +5114,18 @@ CREATE OR REPLACE PACKAGE BODY fac AS
-- Ok, het technisch adres luistert naar onze notificatie!
-- Geen putnotificationsrtprio. Die is veel te agressief met ontdubbelen
notbefore := SYSDATE;
delaymode := fac.safe_to_number(fac.getsetting('noti_delay_mode'));
IF delaymode = 1 -- default uit, naar technische adres zonder vertraging
IF pnotidelay IS NOT NULL
THEN
notbefore := notbefore + NVL(l_srtnoti_delay/ 60/ 60/ 24, 0);
notbefore := SYSDATE + pnotidelay / 60/ 60/ 24;
ELSIF delaymode = 1
THEN
notbefore := SYSDATE + NVL(l_srtnoti_delay/ 60/ 60/ 24, 0);
ELSIF delaymode > 1 -- fixed delay
THEN
notbefore := notbefore + delaymode / 60/ 60/ 24;
notbefore := SYSDATE + delaymode / 60/ 60/ 24;
ELSE -- delaymode = 0 -- default uit, naar technische adres zonder vertraging
notbefore := SYSDATE;
END IF;
INSERT INTO fac_notificatie (fac_srtnotificatie_key,
fac_notificatie_oms,

View File

@@ -412,6 +412,9 @@ BEGIN
OR :NEW.fac_notificatie_systeemadres IS NOT NULL
THEN
tsk.starttask(p_taskcode => 'PUTORDERS', p_nextrun => :NEW.fac_notificatie_notbefore);
ELSIF :NEW.fac_notificatie_queue = 'EXCHANGE' -- future use
THEN
tsk.starttask(p_taskcode => 'EXCHANGE', p_nextrun => :NEW.fac_notificatie_notbefore);
END IF;
END IF;
END;