From 785e1e3f495a28274301fb66316cfe38e55e1a7c Mon Sep 17 00:00:00 2001 From: Jos Groot Lipman Date: Wed, 27 Nov 2024 15:20:50 +0000 Subject: [PATCH] FCLT#85890 Orderqueue en notificatiequeue savepoint svn path=/Database/trunk/; revision=67219 --- BES/BES_PAC.SRC | 2 +- FAC/FAC_PAC.SRC | 11 +++++++---- FAC/FAC_TAB.SRC | 4 +++- FAC/FAC_TRI.SRC | 27 ++++++++++++++++++++++++++- PRS/PRS_TAB.SRC | 2 ++ _UP/DB49to50.src | 5 +++++ 6 files changed, 44 insertions(+), 7 deletions(-) diff --git a/BES/BES_PAC.SRC b/BES/BES_PAC.SRC index 873308e0..fd236070 100644 --- a/BES/BES_PAC.SRC +++ b/BES/BES_PAC.SRC @@ -2235,7 +2235,7 @@ AS AS BEGIN 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, o.bes_bestelopdr_id FROM prs_bedrijf b, diff --git a/FAC/FAC_PAC.SRC b/FAC/FAC_PAC.SRC index 28e8781c..69be5886 100644 --- a/FAC/FAC_PAC.SRC +++ b/FAC/FAC_PAC.SRC @@ -4783,7 +4783,8 @@ CREATE OR REPLACE PACKAGE BODY fac AS lcode, l_refkey 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 -- die bijvoorbeeld locatie_key, opdrachttype en afzender kan bepalen -- 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) THEN 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 = 'R' AND l_srtnoti_code = 'RESNEW') + OR (pbedrijfadres_type = 'R' AND l_srtnoti_code = 'RESNEW') -- TODO: Doorgaans veel te vroeg? THEN NULL; -- backwards compatible: als geen enkel prs_bedrijfadres_srtnoti is dan is er default een xxxNEW ELSE @@ -4917,14 +4918,16 @@ CREATE OR REPLACE PACKAGE BODY fac AS fac_notificatie_oms, fac_notificatie_refkey, fac_notificatie_extrakey, + fac_notificatie_naam, 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, fac_notificatie_notbefore) VALUES (l_srtnoti_key, ptracking_oms, prefkey, pxrefkey, + preference, psender, 0, l_bdradr_key, diff --git a/FAC/FAC_TAB.SRC b/FAC/FAC_TAB.SRC index 03bd8f23..e5296d25 100644 --- a/FAC/FAC_TAB.SRC +++ b/FAC/FAC_TAB.SRC @@ -672,7 +672,9 @@ CREATE_TABLE(fac_notificatie, 0) DEFAULT SYSDATE NOT NULL, fac_notificatie_failcount 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 * Vermelding hierin veroorzaakt periodieke notificaties diff --git a/FAC/FAC_TRI.SRC b/FAC/FAC_TRI.SRC index b07e0461..bf7758c5 100644 --- a/FAC/FAC_TRI.SRC +++ b/FAC/FAC_TRI.SRC @@ -570,7 +570,32 @@ BEGIN ELSE fac.notifytracking(:new.fac_srtnotificatie_key, :new.prs_perslid_key, :new.fac_tracking_oms, :new.fac_tracking_refkey, :new.fac_tracking_key); 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; / diff --git a/PRS/PRS_TAB.SRC b/PRS/PRS_TAB.SRC index ee84bf6a..206bc4d3 100644 --- a/PRS/PRS_TAB.SRC +++ b/PRS/PRS_TAB.SRC @@ -337,6 +337,8 @@ CREATE_TABLE(prs_bedrijfadres_srtnoti, 0) fac_srtnotificatie_key NUMBER(10) REFERENCES fac_srtnotificatie(fac_srtnotificatie_key) ON DELETE CASCADE, + prs_bedrijfadres_method -- optionele overrule method + VARCHAR2(16), prs_bedrijfadres_url -- optionele overrule endpoint VARCHAR2(512), prs_bedrijfadres_srtnoti_aanmaak diff --git a/_UP/DB49to50.src b/_UP/DB49to50.src index 0b099612..25f93bd0 100644 --- a/_UP/DB49to50.src +++ b/_UP/DB49to50.src @@ -36,6 +36,8 @@ CREATE TABLE prs_bedrijfadres_srtnoti fac_srtnotificatie_key NUMBER(10) 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 VARCHAR2(512), prs_bedrijfadres_srtnoti_aanmaak @@ -48,6 +50,9 @@ CREATE SEQUENCE prs_s_prs_bedrijfadres_srtnoti_key MINVALUE 1; ALTER TABLE fac_notificatie 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 ADD ins_discipline_key NUMBER(10) REFERENCES ins_tab_discipline(ins_discipline_key) ON DELETE CASCADE; // Scherpere bedrijfadres bepaling, vooral reserveringen?