FCLT#59394: Bij verwijderen afspraak *alle* open notificaties terugtrekken.

svn path=/Database/trunk/; revision=44470
This commit is contained in:
Maykel Geerdink
2019-10-08 09:45:30 +00:00
parent d2fd3bbfba
commit 356cecc5b2
2 changed files with 36 additions and 11 deletions

View File

@@ -58,7 +58,7 @@ CREATE_TRIGGER(bez_t_bez_afspraak_d)
ON bez_afspraak
FOR EACH ROW
BEGIN
DELETE FROM bez_bezoekers WHERE bez_afspraak_key=:OLD.bez_afspraak_key;
DELETE FROM bez_bezoekers WHERE bez_afspraak_key = :OLD.bez_afspraak_key;
END;
/
@@ -83,26 +83,25 @@ CREATE_TRIGGER(bez_t_notificatie_afspraak_d)
ON bez_afspraak
FOR EACH ROW
BEGIN
fac.clrnotifications('BEZMUT', :OLD.bez_afspraak_key);
fac.clrnotifications('BEZUPD', :OLD.bez_afspraak_key);
fac.clrnotifications('BEZMAI', :OLD.bez_afspraak_key);
-- Alle notificaties verwijderen van de "afspraak" xmlnode die behoren bij de verwijderde afspraak.
fac.clrnotifications_xmlnode('afspraak', :OLD.bez_afspraak_key);
-- Tracking verwijderen die niet weg gaat als de afspraak wordt verwijderd.
fac.clrtracking_xmlnode('afspraak', :OLD.bez_afspraak_key);
END;
/
CREATE_TRIGGER(bez_t_notificatie_bezoekers_d)
AFTER DELETE
ON bez_bezoekers
FOR EACH ROW
BEGIN
fac.clrnotifications('BEZDO%', :OLD.bez_bezoekers_key);
fac.clrnotifications('BEZOU%', :OLD.bez_bezoekers_key);
fac.clrnotifications('BEZBAD', :OLD.bez_bezoekers_key);
-- Alle notificaties verwijderen van de "bezoeker" xmlnode die behoren bij de verwijderde bezoeker.
fac.clrnotifications_xmlnode('bezoeker', :OLD.bez_bezoekers_key);
-- Tracking verwijderen die niet weg gaat als de bezoeker wordt verwijderd.
fac.clrtracking_xmlnode('bezoeker', :OLD.bez_bezoekers_key);
END;
/
CREATE_TRIGGER(bez_t_bez_kenmerk_b_iu)
BEFORE INSERT OR UPDATE ON bez_kenmerk
FOR EACH ROW

View File

@@ -112,6 +112,8 @@ CREATE OR REPLACE PACKAGE fac
pprio NUMBER, psender VARCHAR2, pattach VARCHAR2 DEFAULT NULL);
PROCEDURE clrnotifications (pcode VARCHAR2, pref NUMBER, puitz VARCHAR2 DEFAULT NULL, puitz2 VARCHAR2 DEFAULT NULL);
PROCEDURE clrnotifications (pcode VARCHAR2, pref NUMBER, psubject VARCHAR2, preceiver NUMBER, pextrakey NUMBER);
PROCEDURE clrnotifications_xmlnode (pxmlnode VARCHAR2, prefkey NUMBER);
PROCEDURE clrtracking_xmlnode (pxmlnode VARCHAR2, prefkey NUMBER);
PROCEDURE putnotificationjobs (pcust VARCHAR2);
PROCEDURE putjobnotifications (pviewname VARCHAR2, pmode NUMBER, pflags NUMBER);
FUNCTION getMobile ( pkey IN NUMBER ) RETURN VARCHAR2;
@@ -2072,6 +2074,30 @@ CREATE OR REPLACE PACKAGE BODY fac AS
-- portalberichten: fac_notificatie verwijderd de dubbelen wel in zijn insert trigger (nieuwste notificatie wordt hierna geinsert).
END;
PROCEDURE clrnotifications_xmlnode (pxmlnode VARCHAR2, prefkey NUMBER)
AS
BEGIN
-- Notificaties die niet vanzelf weg gaan als de xmlnode wordt verwijderd alsnog verwijderen.
DELETE FROM fac_notificatie
WHERE fac_srtnotificatie_key IN (SELECT sn.fac_srtnotificatie_key
FROM fac_srtnotificatie sn
WHERE sn.fac_srtnotificatie_xmlnode = pxmlnode)
AND fac_notificatie_refkey = prefkey;
END;
PROCEDURE clrtracking_xmlnode (pxmlnode VARCHAR2, prefkey NUMBER)
AS
BEGIN
-- Tracking verwijderen die niet weg gaat als de xmlnode wordt verwijderd.
DELETE FROM fac_tracking
WHERE fac_tracking_key IN (SELECT fac_tracking_key
FROM fac_tracking ft,
fac_srtnotificatie fs
WHERE ft.fac_srtnotificatie_key = fs.fac_srtnotificatie_key
AND fs.fac_srtnotificatie_xmlnode = pxmlnode
AND ft.fac_tracking_refkey = prefkey);
END;
-- Kijk welke jobs gescheduled zijn en nu uitgevoerd moeten worden.
PROCEDURE putnotificationjobs (pcust VARCHAR2)
AS