FCLT#85890 Orderqueue en notificatiequeue savepoint

svn path=/Database/trunk/; revision=67219
This commit is contained in:
Jos Groot Lipman
2024-11-27 15:20:50 +00:00
parent ab123c43c5
commit 785e1e3f49
6 changed files with 44 additions and 7 deletions

View File

@@ -2235,7 +2235,7 @@ AS
AS AS
BEGIN BEGIN
FOR bedrijfrec IN (SELECT b.prs_bedrijf_key, FOR bedrijfrec IN (SELECT b.prs_bedrijf_key,
CASE WHEN b.prs_bedrijf_key = o.prs_bedrijf_key THEN 'BO' ELSE 'BOG' END bedrijfadres_type, CASE WHEN b.prs_bedrijf_key = o.prs_bedrijf_key THEN 'B' ELSE 'BOG' END bedrijfadres_type,
l.alg_locatie_key, l.alg_locatie_key,
o.bes_bestelopdr_id o.bes_bestelopdr_id
FROM prs_bedrijf b, FROM prs_bedrijf b,

View File

@@ -4783,7 +4783,8 @@ CREATE OR REPLACE PACKAGE BODY fac AS
lcode, lcode,
l_refkey l_refkey
FROM fac_tracking ft, fac_srtnotificatie fsn FROM fac_tracking ft, fac_srtnotificatie fsn
WHERE ft.fac_srtnotificatie_key = fsn.fac_srtnotificatie_key; WHERE ft.fac_srtnotificatie_key = fsn.fac_srtnotificatie_key
AND ft.fac_tracking_key = ptrackingkey;
-- we maken een uitstapje naar een module specifieke mld.notifymeldingbedrijven -- we maken een uitstapje naar een module specifieke mld.notifymeldingbedrijven
-- die bijvoorbeeld locatie_key, opdrachttype en afzender kan bepalen -- die bijvoorbeeld locatie_key, opdrachttype en afzender kan bepalen
-- Daarmee worden we vervolgens weer doorgeleid naar PROCEDURE notifybedrijf (iets verderop) -- Daarmee worden we vervolgens weer doorgeleid naar PROCEDURE notifybedrijf (iets verderop)
@@ -4900,9 +4901,9 @@ CREATE OR REPLACE PACKAGE BODY fac AS
IF (l_basrt_key IS NULL) IF (l_basrt_key IS NULL)
THEN THEN
IF (pbedrijfadres_type = 'O' AND l_srtnoti_code = 'ORDNEW') IF (pbedrijfadres_type = 'O' AND l_srtnoti_code = 'ORDNEW')
OR (pbedrijfadres_type = 'B' AND l_srtnoti_code = 'BESNEW') OR (pbedrijfadres_type = 'B' AND l_srtnoti_code = 'BES2NE') -- bestelopdracht aangemaakt
OR (pbedrijfadres_type = 'C' AND l_srtnoti_code = 'CNTNEW') OR (pbedrijfadres_type = 'C' AND l_srtnoti_code = 'CNTNEW')
OR (pbedrijfadres_type = 'R' AND l_srtnoti_code = 'RESNEW') OR (pbedrijfadres_type = 'R' AND l_srtnoti_code = 'RESNEW') -- TODO: Doorgaans veel te vroeg?
THEN THEN
NULL; -- backwards compatible: als geen enkel prs_bedrijfadres_srtnoti is dan is er default een xxxNEW NULL; -- backwards compatible: als geen enkel prs_bedrijfadres_srtnoti is dan is er default een xxxNEW
ELSE ELSE
@@ -4917,14 +4918,16 @@ CREATE OR REPLACE PACKAGE BODY fac AS
fac_notificatie_oms, fac_notificatie_oms,
fac_notificatie_refkey, fac_notificatie_refkey,
fac_notificatie_extrakey, fac_notificatie_extrakey,
fac_notificatie_naam,
fac_notificatie_sender_email, fac_notificatie_sender_email,
fac_notificatie_status, -- don't care by prs_bedrijfadres_key fac_notificatie_status, -- don't care when by prs_bedrijfadres_key
prs_bedrijfadres_key, prs_bedrijfadres_key,
fac_notificatie_notbefore) fac_notificatie_notbefore)
VALUES (l_srtnoti_key, VALUES (l_srtnoti_key,
ptracking_oms, ptracking_oms,
prefkey, prefkey,
pxrefkey, pxrefkey,
preference,
psender, psender,
0, 0,
l_bdradr_key, l_bdradr_key,

View File

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

View File

@@ -570,7 +570,32 @@ BEGIN
ELSE ELSE
fac.notifytracking(:new.fac_srtnotificatie_key, :new.prs_perslid_key, :new.fac_tracking_oms, :new.fac_tracking_refkey, :new.fac_tracking_key); fac.notifytracking(:new.fac_srtnotificatie_key, :new.prs_perslid_key, :new.fac_tracking_oms, :new.fac_tracking_refkey, :new.fac_tracking_key);
END IF; END IF;
fac.notifytrackingbedrijven(:new.fac_tracking_key); -- deze doen we altijd onvoorwaardelijk END;
/
-- Door de COMPOUND TRIGGER kunnen we notifytrackingbedrijven doen in de AFTER STATEMENT
-- met alleen de newkey als parameter. Dat kan omdat bij mijn weten er eigenlijk
-- nooit een insert into meerdere FAC_TRACKING records is in een enkel statement
CREATE OR REPLACE TRIGGER fac_t_fac_tracking_a_i
FOR INSERT
ON fac_tracking
COMPOUND TRIGGER
newkey fac_tracking.fac_tracking_key%TYPE;
AFTER EACH ROW
IS
BEGIN
IF newkey IS NOT NULL THEN
raise_application_error(-20001, 'Unexpected multi-insert of fac_tracking'); -- for safety
END IF;
newkey := :new.fac_tracking_key;
END AFTER EACH ROW;
AFTER STATEMENT
IS
BEGIN
fac.notifytrackingbedrijven (newkey);
END AFTER STATEMENT;
END; END;
/ /

View File

@@ -337,6 +337,8 @@ CREATE_TABLE(prs_bedrijfadres_srtnoti, 0)
fac_srtnotificatie_key fac_srtnotificatie_key
NUMBER(10) NUMBER(10)
REFERENCES fac_srtnotificatie(fac_srtnotificatie_key) ON DELETE CASCADE, REFERENCES fac_srtnotificatie(fac_srtnotificatie_key) ON DELETE CASCADE,
prs_bedrijfadres_method -- optionele overrule method
VARCHAR2(16),
prs_bedrijfadres_url -- optionele overrule endpoint prs_bedrijfadres_url -- optionele overrule endpoint
VARCHAR2(512), VARCHAR2(512),
prs_bedrijfadres_srtnoti_aanmaak prs_bedrijfadres_srtnoti_aanmaak

View File

@@ -36,6 +36,8 @@ CREATE TABLE prs_bedrijfadres_srtnoti
fac_srtnotificatie_key fac_srtnotificatie_key
NUMBER(10) NUMBER(10)
REFERENCES fac_srtnotificatie(fac_srtnotificatie_key) ON DELETE CASCADE, REFERENCES fac_srtnotificatie(fac_srtnotificatie_key) ON DELETE CASCADE,
prs_bedrijfadres_method -- optionele overrule method (anders GET/POST afhankelijk van of er een body is)
VARCHAR2(16),
prs_bedrijfadres_url -- optionele overrule endpoint prs_bedrijfadres_url -- optionele overrule endpoint
VARCHAR2(512), VARCHAR2(512),
prs_bedrijfadres_srtnoti_aanmaak prs_bedrijfadres_srtnoti_aanmaak
@@ -48,6 +50,9 @@ CREATE SEQUENCE prs_s_prs_bedrijfadres_srtnoti_key MINVALUE 1;
ALTER TABLE fac_notificatie ALTER TABLE fac_notificatie
ADD fac_notificatie_naam VARCHAR(80); // puur informatief voor logging/support, bijvoorbeeld opdrachtnummer ADD fac_notificatie_naam VARCHAR(80); // puur informatief voor logging/support, bijvoorbeeld opdrachtnummer
ALTER TABLE fac_notificatie
ADD fac_notificatie_failmessage VARCHAR(4000); // de laatste
ALTER TABLE prs_bedrijfadres ALTER TABLE prs_bedrijfadres
ADD ins_discipline_key NUMBER(10) ADD ins_discipline_key NUMBER(10)
REFERENCES ins_tab_discipline(ins_discipline_key) ON DELETE CASCADE; // Scherpere bedrijfadres bepaling, vooral reserveringen? REFERENCES ins_tab_discipline(ins_discipline_key) ON DELETE CASCADE; // Scherpere bedrijfadres bepaling, vooral reserveringen?