FCLT#85890 Orderqueue en notificatiequeue savepoint

svn path=/Database/trunk/; revision=67654
This commit is contained in:
Jos Groot Lipman
2025-01-21 08:35:38 +00:00
parent ab18f3f3dc
commit e242bb0b3f
5 changed files with 52 additions and 32 deletions

View File

@@ -159,7 +159,8 @@ CREATE OR REPLACE PACKAGE fac
psender VARCHAR2 DEFAULT NULL,
plocatie_key NUMBER DEFAULT NULL,
pdiscipline_key NUMBER DEFAULT NULL,
ptypeopdr_key NUMBER DEFAULT NULL);
ptypeopdr_key NUMBER DEFAULT NULL,
pdisc_key NUMBER DEFAULT NULL);
FUNCTION gettrackingdate (peventcode IN VARCHAR2, pkey IN number) RETURN date;
FUNCTION gettrackinguserkey (peventcode IN VARCHAR2, pkey IN number) RETURN number;
PROCEDURE initsession (flcode IN VARCHAR2);
@@ -4849,10 +4850,11 @@ CREATE OR REPLACE PACKAGE BODY fac AS
pperslid_key NUMBER DEFAULT NULL,
pxrefkey NUMBER DEFAULT NULL,
preference VARCHAR2 DEFAULT NULL,
psender VARCHAR2 DEFAULT NULL,
psender VARCHAR2 DEFAULT NULL, // alleen bij opdrachten alg_locatie_email?
plocatie_key NUMBER DEFAULT NULL,
pdiscipline_key NUMBER DEFAULT NULL,
ptypeopdr_key NUMBER DEFAULT NULL)
ptypeopdr_key NUMBER DEFAULT NULL,
pdisc_key NUMBER DEFAULT NULL) // future use
AS
l_bdradr_key prs_bedrijfadres.prs_bedrijfadres_key%TYPE;
l_basrt_key prs_bedrijfadres_srtnoti.prs_bedrijfadres_srtnoti_key%TYPE;
@@ -4885,7 +4887,7 @@ CREATE OR REPLACE PACKAGE BODY fac AS
AND (ba.mld_typeopdr_key = ptypeopdr_key OR ba.mld_typeopdr_key IS NULL)
AND (ba.ins_discipline_key = pdiscipline_key OR ba.ins_discipline_key IS NULL)
AND (ba.alg_locatie_key = plocatie_key OR ba.alg_locatie_key IS NULL)
AND (ba.alg_locatie_key = plocatie_key OR ba.alg_locatie_key IS NULL)
AND (ba.ins_discipline_key = pdisc_key OR ba.ins_discipline_key IS NULL)
AND ( ba.alg_district_key = (SELECT d.alg_district_key
FROM alg_locatie d
WHERE d.alg_locatie_key = plocatie_key)

View File

@@ -2457,6 +2457,7 @@ CREATE_TABLE(fac_task, 0)
fac_task_code VARCHAR(32) NOT NULL,
fac_task_nextrun DATE,
fac_task_lastrun DATE,
fac_task_aanmaak DATE DEFAULT SYSDATE NOT NULL,
CONSTRAINT fac_u_fac_task UNIQUE(fac_cust_key, fac_task_code)
);

View File

@@ -561,47 +561,45 @@ BEGIN
END;
/
CREATE_TRIGGER(fac_t_fac_tracking_b_i)
BEFORE INSERT ON fac_tracking
FOR EACH ROW
BEGIN
UPDATE_PRIMARY_KEY(fac_tracking_key, fac_s_fac_tracking_key);
-- dit event moet mogelijk ook actief worden genotificeerd,
-- dat kan expliciet worden onderdrukt door de omschrijving te prefixen met een #
IF SUBSTR(:new.fac_tracking_oms, 1, 1) = '#'
THEN
-- bedoeld om te onderdrukken, maar moeten we wel weer verwijderen
:new.fac_tracking_oms := SUBSTR(:new.fac_tracking_oms, 2);
-- Moet ik nou nog iets doen om NULL te maken als dit alleen de # was?
-- En nu dus niet notificeren
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;
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
CREATE_TRIGGER(fac_t_fac_tracking_b_i)
FOR INSERT
ON fac_tracking
COMPOUND TRIGGER
newkey fac_tracking.fac_tracking_key%TYPE;
AFTER EACH ROW
BEFORE EACH ROW
IS
BEGIN
UPDATE_PRIMARY_KEY(fac_tracking_key, fac_s_fac_tracking_key);
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;
-- dit event moet mogelijk ook actief worden genotificeerd,
-- dat kan expliciet worden onderdrukt door de omschrijving te prefixen met een #
IF SUBSTR(:new.fac_tracking_oms, 1, 1) = '#'
THEN
-- bedoeld om te onderdrukken, maar moeten we wel weer verwijderen
:new.fac_tracking_oms := SUBSTR(:new.fac_tracking_oms, 2);
-- En nu dus niet notificeren
NULL;
ELSE
fac.notifytracking(:new.fac_srtnotificatie_key, :new.prs_perslid_key, :new.fac_tracking_oms, :new.fac_tracking_refkey, :new.fac_tracking_key);
newkey := :new.fac_tracking_key;
END IF;
END BEFORE EACH ROW;
AFTER STATEMENT
IS
BEGIN
fac.notifytrackingbedrijven (newkey);
IF newkey IS NOT NULL
THEN
fac.notifytrackingbedrijven (newkey);
END IF;
END AFTER STATEMENT;
END;
/

View File

@@ -15,7 +15,11 @@ CREATE OR REPLACE PACKAGE mld AS
FUNCTION getmeldinguser (pmeldingkey IN number) RETURN NUMBER;
PROCEDURE setmeldingstatus (pmeldingkey IN NUMBER, pstatus IN NUMBER, puserkey IN NUMBER, pnotificeren IN NUMBER DEFAULT 1);
FUNCTION getopdrachtstatusdate (popdrkey IN number, pstatus IN number) RETURN date;
PROCEDURE setopdrachtstatus (popdrachtkey IN NUMBER, pstatus IN NUMBER, puserkey IN NUMBER, popdr_note_key IN NUMBER DEFAULT NULL);
PROCEDURE setopdrachtstatus (popdrachtkey IN NUMBER,
pstatus IN NUMBER,
puserkey IN NUMBER,
popdr_note_key IN NUMBER DEFAULT NULL,
pnotificeren IN NUMBER DEFAULT 1);
PROCEDURE notifybackoffice (pmeldingkey IN NUMBER, pcode IN VARCHAR2, pdisc_level IN NUMBER DEFAULT 1);
PROCEDURE notifybehandelaar (pto IN NUMBER, pcode IN VARCHAR2, pmeldingkey IN NUMBER);
PROCEDURE notifyprio (pmeldingkey IN NUMBER, prio IN NUMBER, pperslid_key IN NUMBER, pdisc_level IN NUMBER DEFAULT 1);
@@ -448,7 +452,11 @@ CREATE OR REPLACE PACKAGE BODY mld AS
-- gezet, waarbij zonodig (indien verandering) een trackrecord wordt gemaakt
-- Als de status niet wijzigt, wordt ook geen trackrecord gemaakt
-- ZIE schema StateDiagramOpdrachten.vsd
PROCEDURE setopdrachtstatus (popdrachtkey IN NUMBER, pstatus IN NUMBER, puserkey IN NUMBER, popdr_note_key IN NUMBER DEFAULT NULL)
PROCEDURE setopdrachtstatus (popdrachtkey IN NUMBER,
pstatus IN NUMBER,
puserkey IN NUMBER,
popdr_note_key IN NUMBER DEFAULT NULL,
pnotificeren IN NUMBER DEFAULT 1)
AS
currentstatus mld_opdr.mld_statusopdr_key%TYPE;
newstatus mld_opdr.mld_statusopdr_key%TYPE;
@@ -582,6 +590,10 @@ CREATE OR REPLACE PACKAGE BODY mld AS
IF statusopdr_key_refiat IS NULL OR
newstatus = 3 OR newstatus = 4 OR newstatus = 10
THEN
IF pnotificeren = 0 AND eventcode IS NOT NULL
THEN
eventcode := '#' || eventcode;
END IF;
fac.trackaction (eventcode, popdrachtkey, puserkey, NULL, NULL, new_fac_tracking_key);
IF popdr_note_key IS NOT NULL
THEN
@@ -1398,6 +1410,7 @@ CREATE OR REPLACE PACKAGE BODY mld AS
BEGIN
FOR bedrijfrec
IN (SELECT o.mld_typeopdr_key,
o.mld_opdr_discipline_key,
b.prs_bedrijf_key,
CASE WHEN b.prs_bedrijf_key = o.mld_uitvoerende_keys THEN 'O' ELSE 'OG' END bedrijfadres_type,
COALESCE (l1.alg_locatie_key, l2.alg_locatie_key) alg_locatie_key,
@@ -1433,7 +1446,9 @@ CREATE OR REPLACE PACKAGE BODY mld AS
ptrackingkey => ptrackingkey,
preference => bedrijfrec.reference,
ptypeopdr_key => bedrijfrec.mld_typeopdr_key,
plocatie_key => bedrijfrec.alg_locatie_key);
plocatie_key => bedrijfrec.alg_locatie_key,
pdisc_key => bedrijfrec.mld_opdr_discipline_key,
psender => bedrijfrec.alg_locatie_email);
END LOOP;
END;
@@ -1447,6 +1462,7 @@ 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,
m.mld_melding_key reference,
m.mld_ins_discipline_key,
d.prs_bedrijf_key persoon_bedrijf_key -- van de melder, niet de uitvoerende
FROM mld_melding m,
mld_adres ma,
@@ -1473,7 +1489,9 @@ CREATE OR REPLACE PACKAGE BODY mld AS
prefkey => pmldkey,
ptrackingkey => ptrackingkey,
preference => bedrijfrec.reference,
plocatie_key => bedrijfrec.alg_locatie_key);
plocatie_key => bedrijfrec.alg_locatie_key,
pdisc_key => bedrijfrec.mld_ins_discipline_key,
psender => bedrijfrec.alg_locatie_email);
END LOOP;
END;

View File

@@ -85,6 +85,7 @@ CREATE_TABLE(fac_task, 0)
fac_task_code VARCHAR(32) NOT NULL,
fac_task_nextrun DATE,
fac_task_lastrun DATE,
fac_task_aanmaak DATE DEFAULT SYSDATE NOT NULL,
CONSTRAINT fac_u_fac_task UNIQUE(fac_cust_key, fac_task_code)
);