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
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,

View File

@@ -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,

View File

@@ -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

View File

@@ -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;
/

View File

@@ -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

View File

@@ -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?