FCLT#85890 Orderqueue en notificatiequeue savepoint

svn path=/Database/trunk/; revision=67444
This commit is contained in:
Jos Groot Lipman
2024-12-19 11:34:48 +00:00
parent 2fbc120baa
commit 46fd7c1a6e
7 changed files with 85 additions and 25 deletions

View File

@@ -2087,6 +2087,7 @@ DEF_FAC_SRTNOT('PRSUPT', 0, 'lcl_noti_PRSUPT', 'prs/prs_bedrijfadres.asp?badr_ke
DEF_FAC_SRTNOT('PRSANO', 0, 'lcl_noti_PRSANO', 'prs/prs_perslid.asp?prs_key=' , '0', 'perslid', 10);
DEF_FAC_SRTNOT('RESNEW', 1, 'lcl_noti_RESNEW', 'res/res_reservering.asp?rsv_ruimte_key=', '0', 'reservering', 60);
DEF_FAC_SRTNOT('RESSND', 1, 'lcl_noti_RESSND', 'res/res_reservering.asp?rsv_ruimte_key=', '0', 'reservering', 60);
DEF_FAC_SRTNOT('RESUPD', 1, 'lcl_noti_RESUPD', 'res/res_reservering.asp?rsv_ruimte_key=', '0', 'reservering', 60);
DEF_FAC_SRTNOT('RESAFM', 0, 'lcl_noti_RESAFM', 'res/res_reservering.asp?rsv_ruimte_key=', '0', 'reservering', 10);
DEF_FAC_SRTNOT('RESBEV', 1, 'lcl_noti_RESBEV', 'res/res_reservering.asp?rsv_ruimte_key=', '0', 'reservering', 60);

View File

@@ -2290,6 +2290,7 @@ CREATE OR REPLACE PACKAGE BODY fac AS
susermode fac_srtnotificatie.fac_srtnotificatie_usermode%TYPE;
lmode fac_srtnotificatie.fac_srtnotificatie_mode%TYPE;
skey fac_srtnotificatie.fac_srtnotificatie_key%TYPE;
l_srtnoti_delay fac_srtnotificatie.fac_srtnotificatie_delay%TYPE;
lemail fac_notificatie.fac_notificatie_receiver_email%TYPE;
lphone fac_notificatie.fac_notificatie_receiver_phone%TYPE;
llang prs_perslid.prs_perslid_lang%TYPE;
@@ -2306,11 +2307,13 @@ CREATE OR REPLACE PACKAGE BODY fac AS
SELECT lcl.x('fac_srtnotificatie_oms', sn.fac_srtnotificatie_key, sn.fac_srtnotificatie_oms),
sn.fac_srtnotificatie_mode,
sn.fac_srtnotificatie_key,
fac_srtnotificatie_usermode
fac_srtnotificatie_usermode,
fac_srtnotificatie_delay
INTO soms,
smode,
skey,
susermode
susermode,
l_srtnoti_delay
FROM fac_srtnotificatie sn
WHERE sn.fac_srtnotificatie_code = pcode;
@@ -2345,8 +2348,8 @@ CREATE OR REPLACE PACKAGE BODY fac AS
END IF;
SELECT lcl.x('fac_srtnotificatie_oms', sn.fac_srtnotificatie_key, sn.fac_srtnotificatie_oms),
sn.fac_srtnotificatie_key
INTO soms, skey
sn.fac_srtnotificatie_key, sn.fac_srtnotificatie_delay
INTO soms, skey, l_srtnoti_delay
FROM fac_srtnotificatie sn
WHERE sn.fac_srtnotificatie_code = pcode;
END IF;
@@ -2552,7 +2555,8 @@ CREATE OR REPLACE PACKAGE BODY fac AS
fac_notificatie_attachments,
prs_bedrijfadres_key,
fac_notificatie_queue,
fac_notificatie_geturl)
fac_notificatie_geturl,
fac_notificatie_notbefore)
VALUES (skey,
lmode,
pfrom,
@@ -2569,7 +2573,8 @@ CREATE OR REPLACE PACKAGE BODY fac AS
pattach,
pbedrijfadreskey,
pqueue,
pgeturl);
pgeturl,
SYSDATE + NVL(l_srtnoti_delay/ 60/ 60/ 24, 0));
END IF;
END;
@@ -3815,6 +3820,9 @@ CREATE OR REPLACE PACKAGE BODY fac AS
-- (nl. notificeren van een trackrecord van een bekende entiteit)
-- Een stap verder niet meer, dan is het gewoon een bericht met
-- een zender en ontvanger.
-- Dit is de 'gewone' notificatie naar mensen (en systeemadressen).
-- Notificatie naar technische adressen gaat via notifytrackingbedrijven
PROCEDURE notifytracking (psrtnotificatiekey NUMBER,
pperslid_key NUMBER,
ptracking_oms VARCHAR2,
@@ -4846,12 +4854,16 @@ CREATE OR REPLACE PACKAGE BODY fac AS
pdiscipline_key NUMBER DEFAULT NULL,
ptypeopdr_key NUMBER DEFAULT NULL)
AS
l_bdradr_key prs_bedrijfadres.prs_bedrijfadres_key%TYPE;
l_basrt_key prs_bedrijfadres_srtnoti.prs_bedrijfadres_srtnoti_key%TYPE;
l_srtnoti_code fac_srtnotificatie.fac_srtnotificatie_code%TYPE;
l_srtnoti_key fac_srtnotificatie.fac_srtnotificatie_key%TYPE;
l_srtnoti_delay fac_srtnotificatie.fac_srtnotificatie_delay%TYPE;
nn_noti NUMBER (10);
l_bdradr_key prs_bedrijfadres.prs_bedrijfadres_key%TYPE;
l_basrt_key prs_bedrijfadres_srtnoti.prs_bedrijfadres_srtnoti_key%TYPE;
l_srtnoti_code fac_srtnotificatie.fac_srtnotificatie_code%TYPE;
l_srtnoti_chkcode fac_srtnotificatie.fac_srtnotificatie_code%TYPE;
l_srtnoti_key fac_srtnotificatie.fac_srtnotificatie_key%TYPE;
l_srtnoti_xmlnode fac_srtnotificatie.fac_srtnotificatie_xmlnode%TYPE;
l_srtnoti_delay fac_srtnotificatie.fac_srtnotificatie_delay%TYPE;
nn_noti NUMBER (10);
dummy VARCHAR2 (1);
BEGIN
-- Merk op: per bedrijf notificeren we hooguit <20><>n enkel technisch adres
-- Dat adres wordt eerst bepaald op basis van locatie/district/opdrachttype/discipline/bedrijfadres_type
@@ -4894,15 +4906,17 @@ CREATE OR REPLACE PACKAGE BODY fac AS
DBMS_OUTPUT.Put_line ('Gevonden technisch adres key ' || l_bdradr_key);
-- Nu de srtnotifictie zoeken
-- Nu de srtnotificatie zoeken
SELECT basrt.prs_bedrijfadres_srtnoti_key,
srtnoti.fac_srtnotificatie_code,
srtnoti.fac_srtnotificatie_delay,
srtnoti.fac_srtnotificatie_key
srtnoti.fac_srtnotificatie_key,
srtnoti.fac_srtnotificatie_xmlnode
INTO l_basrt_key,
l_srtnoti_code,
l_srtnoti_delay,
l_srtnoti_key
l_srtnoti_key,
l_srtnoti_xmlnode
FROM prs_bedrijfadres_srtnoti basrt, fac_srtnotificatie srtnoti, fac_tracking ft
WHERE basrt.prs_bedrijfadres_key(+) = l_bdradr_key
AND basrt.fac_srtnotificatie_key(+) = srtnoti.fac_srtnotificatie_key
@@ -4914,7 +4928,7 @@ CREATE OR REPLACE PACKAGE BODY fac AS
IF (pbedrijfadres_type = 'O' AND l_srtnoti_code = 'ORDNEW')
OR (pbedrijfadres_type = 'B' AND l_srtnoti_code = 'BES2NE') -- bestelopdracht aangemaakt
OR (pbedrijfadres_type = 'C' AND l_srtnoti_code = 'CNTNEW')
OR (pbedrijfadres_type = 'R' AND l_srtnoti_code = 'RESNEW') -- TODO: Doorgaans veel te vroeg?
-- RESNEW nooit automatisch OR (pbedrijfadres_type = 'R' AND l_srtnoti_code = 'RESNEW')
THEN
NULL; -- backwards compatible: als geen enkel prs_bedrijfadres_srtnoti is dan is er default een xxxNEW
ELSE
@@ -4923,6 +4937,30 @@ CREATE OR REPLACE PACKAGE BODY fac AS
END IF;
END IF;
-- ORDUPD of wat dan ook sturen we niet als er nog geen ORDNEW tracking (en naar we aannamen notificatie) is geweest
-- (DECODE mag alleen binnen een SELECT, domme Oracle)
SELECT DECODE(l_srtnoti_xmlnode, 'opdracht', 'ORDNEW',
'bestelopdr', 'BES2NE',
'contract', 'CNTNEW',
'reservering', 'RESSND') -- RESNEW gaat niet vaak naar externen
INTO l_srtnoti_chkcode
FROM DUAL;
IF (l_srtnoti_chkcode IS NOT NULL)
THEN
BEGIN
SELECT MIN(NULL) INTO dummy -- Dubbele is nooit logisch maar is h<><68>l sporadisch wel aanwezig. Dan geen ORA- error nodig dus de MIN
FROM fac_tracking ft, fac_srtnotificatie fsn
WHERE ft.fac_srtnotificatie_key = fsn.fac_srtnotificatie_key
AND ft.fac_tracking_refkey = prefkey
AND fac_srtnotificatie_code = l_srtnoti_chkcode;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
DBMS_OUTPUT.Put_line ('Nog geen tracking van ' || l_srtnoti_chkcode || ' dus stuur ik ' || l_srtnoti_code || ' nog maar niet');
RETURN;
END;
END IF;
-- Ok, het technisch adres luistert naar onze notificatie!
-- Geen putnotificationsrtprio. Die is veel te agressief met ontdubbelen
INSERT INTO fac_notificatie (fac_srtnotificatie_key,

View File

@@ -873,7 +873,7 @@ DEFINE_SETTING('PUO', 0001, 'WEB_FACTAB', 'puo_failextralogging' , 'number
DEFINE_SETTING('PUO', 0001, 'WEB_FACTAB', 'puo_faillimit' , 'number' , '336' , 'After this time (hours) stop trying failed orders')
DEFINE_SETTING('PUO', 0001, 'WEB_FACTAB', 'puo_fclt_web_apikey' , 'string' , '' , 'Putorders APIKEY to the Facilitor software')
DEFINE_SETTING('PUO', 0001, 'WEB_FACTAB', 'puo_fclt_web_url' , 'string' , '' , 'Url to the Facilitor software (webserver internal address)')
DEFINE_SETTING('PUO', 0001, 'WEB_FACTAB', 'puo_flags' , 'number' , '255' , '+1=send notifications, +2=send orders, +4=all orders Immediate')
DEFINE_SETTING('PUO', 0001, 'WEB_FACTAB', 'puo_flags' , 'number' , '255' , '+1=send notifications to people, +2=send orders to technical addresses')
DEFINE_SETTING('PUO', 0001, 'WEB_FACTAB', 'puo_forceapppushtoken' , 'string' , '' , 'Force this pushtoken for test purposes')
DEFINE_SETTING('PUO', 0001, 'WEB_FACTAB', 'puo_forcefromaddress' , 'string' , '' , 'Force the from and reply address for test purposes eg john@example.com')
DEFINE_SETTING('PUO', 0001, 'WEB_FACTAB', 'puo_forcemailaddress' , 'string' , '' , 'Force this email address for test purposes eg john@example.com')

View File

@@ -674,7 +674,9 @@ CREATE_TABLE(fac_notificatie, 0)
NUMBER(10)
DEFAULT 0 NOT NULL,
fac_notificatie_failmessage /* de laatste failmessage, rest zoek je maar in Putorders logging */
VARCHAR(4000)
VARCHAR(4000),
fac_notificatie_faildatum
DATE // de laatste
);
/* Welke notificatiejobs bestaan er
* Vermelding hierin veroorzaakt periodieke notificaties

View File

@@ -1403,7 +1403,6 @@ CREATE OR REPLACE PACKAGE BODY mld AS
COALESCE (l1.alg_locatie_key, l2.alg_locatie_key) alg_locatie_key,
COALESCE (l1.alg_locatie_email, l2.alg_locatie_email) alg_locatie_email,
o.mld_melding_key || '/' || o.mld_opdr_bedrijfopdr_volgnr reference,
o.mld_opdr_teverzenden_datum,
d.prs_bedrijf_key persoon_bedrijf_key -- van de melder, niet de uitvoerende
FROM mld_opdr o,
mld_melding m,
@@ -1418,7 +1417,9 @@ CREATE OR REPLACE PACKAGE BODY mld AS
OR EXISTS
(SELECT 1
FROM prs_bedrijfadres ba
WHERE ba.prs_bedrijf_key = b.prs_bedrijf_key AND ba.prs_bedrijfadres_type = 'OG'))
WHERE ba.prs_bedrijf_key = b.prs_bedrijf_key
AND ba.prs_bedrijfadres_startdatum <= SYSDATE
AND ba.prs_bedrijfadres_type = 'OG'))
AND o.mld_melding_key = m.mld_melding_key
AND m.mld_adres_key = ma.mld_adres_key(+)
AND ma.alg_locatie_key = l1.alg_locatie_key(+)
@@ -1432,8 +1433,7 @@ CREATE OR REPLACE PACKAGE BODY mld AS
ptrackingkey => ptrackingkey,
preference => bedrijfrec.reference,
ptypeopdr_key => bedrijfrec.mld_typeopdr_key,
plocatie_key => bedrijfrec.alg_locatie_key,
teverzenden_datum => bedrijfrec.mld_opdr_teverzenden_datum);
plocatie_key => bedrijfrec.alg_locatie_key);
END LOOP;
END;
@@ -1459,7 +1459,9 @@ CREATE OR REPLACE PACKAGE BODY mld AS
AND EXISTS
(SELECT 1
FROM prs_bedrijfadres ba
WHERE ba.prs_bedrijf_key = b.prs_bedrijf_key AND ba.prs_bedrijfadres_type = 'MG')
WHERE ba.prs_bedrijf_key = b.prs_bedrijf_key
AND ba.prs_bedrijfadres_startdatum <= SYSDATE
AND ba.prs_bedrijfadres_type = 'MG')
AND m.mld_adres_key = ma.mld_adres_key(+)
AND ma.alg_locatie_key = l1.alg_locatie_key(+)
AND m.mld_alg_locatie_key = l2.alg_locatie_key(+)

View File

@@ -2575,7 +2575,8 @@ AS
(SELECT res_rsv_ruimte_key, MAX (rrd.prs_bedrijf_key) prs_bedrijf_key -- artikelen van verschillende leveranciers is unsupported
FROM res_disc_params rrd, res_artikel ra, res_rsv_artikel rra
WHERE rrd.res_ins_discipline_key = ra.res_discipline_key
AND rra.res_artikel_key = ra.res_artikel_key) resbedrijf
AND rra.res_artikel_key = ra.res_artikel_key
GROUP BY res_rsv_ruimte_key) resbedrijf
WHERE rrr.res_rsv_ruimte_key = prsvkey
AND resbedrijf.res_rsv_ruimte_key = prsvkey
AND rrr.res_ruimte_opstel_key = opstelalg.res_ruimte_opstel_key(+)
@@ -2585,7 +2586,9 @@ AS
OR EXISTS
(SELECT 1
FROM prs_bedrijfadres ba
WHERE ba.prs_bedrijf_key = b.prs_bedrijf_key AND ba.prs_bedrijfadres_type = 'RG')))
WHERE ba.prs_bedrijf_key = b.prs_bedrijf_key
AND ba.prs_bedrijfadres_startdatum <= SYSDATE
AND ba.prs_bedrijfadres_type = 'RG')))
LOOP
fac.notifybedrijf (pbedrijf_key => bedrijfrec.prs_bedrijf_key,
pbedrijfadres_type => bedrijfrec.bedrijfadres_type,

View File

@@ -91,6 +91,8 @@ CREATE_TABLE(fac_task, 0)
CREATE SEQUENCE fac_s_fac_cust_key MINVALUE 1;
CREATE SEQUENCE fac_s_fac_task_key MINVALUE 1;
DEF_FAC_SRTNOT('RESSND', 1, 'lcl_noti_RESSND', 'res/res_reservering.asp?rsv_ruimte_key=', '0', 'reservering', 60);
/////////////////////////////////////////////////////////////////////////////////////////// FCLT#80469
@@ -192,6 +194,18 @@ ALTER TABLE mld_typeopdr
ADD mld_typeopdr_code VARCHAR2(60)
CONSTRAINT mld_u_mld_typeopdr_code UNIQUE;
/////////////////////////////////////////////////////////////////////////////////////////// FCLT#86003
ALTER TABLE fac_imp_cnt
ADD ( mantel_nr_versie VARCHAR2(10)
, soortcontact VARCHAR2(1)
, kostensoort VARCHAR2(60)
, scope VARCHAR2(1)
);
ALTER TABLE fac_imp_cnt
MODIFY ( bedrijf_naam VARCHAR2(200)
, contact_naam VARCHAR2(200)
);
/////////////////////////////////////////////////////////////////////////////////////////// FCLT#00000
REGISTERONCE('$Id$')