CSUN#34064 ontdubbelen van notificaties verbeterd
svn path=/Database/trunk/; revision=27007
This commit is contained in:
@@ -2065,8 +2065,13 @@ CREATE OR REPLACE PACKAGE BODY fac AS
|
||||
soms := SUBSTR(soms, 1, INSTR (soms, CHR(10)) - 1);
|
||||
END IF;
|
||||
|
||||
-- voorkom e-mail/sms van deze *UPD als de *NEW nog niet eens de deur uit is door Putorders
|
||||
-- Gooi bestaande identieke notificaties eerst maar eens uit de queue. Voor het gemak.
|
||||
-- De nieuwe is minstens zo goed en gaat per definitie via dezelfde kanalen
|
||||
fac.clrnotifications(pcode, pref, soms, pto); -- Dubbele notificaties verwijderen indien dezelfde omschrijving en voor dezelfde ontvanger.
|
||||
|
||||
-- Voorkom e-mail/sms van deze zwakkere *UPD als de *NEW nog niet eens de deur uit is door Putorders
|
||||
-- of meer algemeen: elke e-mail/sms die nog niet de deur is.
|
||||
-- Je wilt wel op alle gedefinieerde kanalen precies een bericht houden
|
||||
IF BITAND (smode, 2 + 4) <> 0
|
||||
THEN
|
||||
-- Zoek de lmode van een al/nog aanwezige fac_notificatie die over hetzelfde gaat
|
||||
@@ -2074,7 +2079,7 @@ CREATE OR REPLACE PACKAGE BODY fac AS
|
||||
SELECT fac_srtnotificatie_code, fac_notificatie_status, fac_notificatie_oms
|
||||
INTO oldercode, oldersmode, oldersoms
|
||||
FROM fac_v_notifyqueue ander
|
||||
WHERE (pcode = ander.fac_srtnotificatie_code
|
||||
WHERE (pcode = ander.fac_srtnotificatie_code -- die is meestal al gewist, zou nog kunnen met andere tekst
|
||||
OR pcode = 'BESUPD'
|
||||
AND ander.fac_srtnotificatie_code IN ('BESNEW')
|
||||
OR pcode IN ('RESUPD','RESBEV','RESOPT','RESCLN')
|
||||
@@ -2099,27 +2104,15 @@ CREATE OR REPLACE PACKAGE BODY fac AS
|
||||
NULL;
|
||||
END;
|
||||
|
||||
-- Identieke noti als reeds in de queue staat, dan zijn wij klaar; hoeft niet nog eens
|
||||
-- en direct RETURN zodat bestaande noti niet ook nog eens wordt teruggetrokken (is in
|
||||
-- dit geval, hoewel ouder, dus niet waardeloos)!
|
||||
IF (pcode = oldercode AND smode = oldersmode AND soms = oldersoms)
|
||||
IF (oldercode IS NOT NULL)
|
||||
THEN
|
||||
-- Nothing to do
|
||||
RETURN;
|
||||
END IF;
|
||||
|
||||
IF BITAND (smode, 2) = 2 AND BITAND (oldersmode, 2) = 2
|
||||
THEN
|
||||
lmode := BITAND (lmode, 255 - 2);
|
||||
END IF;
|
||||
|
||||
IF BITAND (smode, 4) = 4 AND BITAND (oldersmode, 4) = 4
|
||||
THEN
|
||||
lmode := BITAND (lmode, 255 - 4);
|
||||
-- Deze is zwakker dan de bestaande, deze hoeft dus niet nog eens via diezelfde kanalen.
|
||||
-- Het kan dus best zijn dat er niets over blijft.
|
||||
lmode := BITAND (lmode, 255 - oldersmode);
|
||||
END IF;
|
||||
|
||||
-- Dan nog omgekeerd: trek eerdere zwakkere notificaties terug als deze pcode sterker is
|
||||
-- als die oudere nog niet de deur uit is. NB: de tracking blijft natuurlijk gewoon
|
||||
-- en die oudere nog niet de deur uit is. NB: de tracking blijft natuurlijk gewoon
|
||||
-- Ook portalberichten worden zo verminderd, en niet alleen die van de laatste 5 minuten
|
||||
-- U zult bezwaar maken, maar mijn motivatie is dat notificatie een attentiewaarde heeft
|
||||
-- en een oude attentie waardeloos is. Herhaalde update werden ook al onderdrukt.
|
||||
@@ -2153,8 +2146,6 @@ CREATE OR REPLACE PACKAGE BODY fac AS
|
||||
ELSE
|
||||
NULL;
|
||||
END CASE;
|
||||
-- Alle dubbele notificaties met dezelfde omschrijving voor dezelfde ontvanger verwijderen.
|
||||
fac.clrnotifications(pcode, pref, soms, pto); -- Dubbele notificaties verwijderen indien dezelfde omschrijving en voor dezelfde ontvanger.
|
||||
|
||||
END IF;
|
||||
END IF;
|
||||
|
||||
Reference in New Issue
Block a user