FSN#35107 tracken van 2bo-achtige notificaties

svn path=/Database/trunk/; revision=27829
This commit is contained in:
Peter Feij
2016-01-20 15:26:17 +00:00
parent 2c0d1e3433
commit 4c662c52f9
2 changed files with 116 additions and 6 deletions

View File

@@ -1381,6 +1381,10 @@ AS
ldisc_oms bes_discipline.ins_discipline_omschrijving%TYPE;
loms fac_srtnotificatie.fac_srtnotificatie_oms%TYPE;
bericht fac_srtnotificatie.fac_srtnotificatie_oms%TYPE;
lnrreceivers NUMBER;
lreceivers fac_srtnotificatie.fac_srtnotificatie_oms%TYPE;
lreceivers1 fac_srtnotificatie.fac_srtnotificatie_oms%TYPE;
ltracking VARCHAR2(4000); -- moet tijdelijk groter dan fac_srtnotificatie.fac_srtnotificatie_oms%TYPE kunnen zijn
BEGIN
BEGIN
SELECT DISTINCT
@@ -1416,6 +1420,8 @@ AS
bericht := bes.bessprintf (loms, pbeskey, ldisc_oms); -- de variabelen invullen
lnrreceivers := 0;
lreceivers := '';
FOR boer
IN (SELECT g.prs_perslid_key
FROM fac_v_webgebruiker g, fac_functie f, prs_perslid p, prs_v_afdeling d
@@ -1459,7 +1465,29 @@ AS
2,
NULL
);
IF lnrreceivers = 0 THEN
SELECT prs_perslid_naam_friendly
INTO lreceivers
FROM prs_v_perslid_fullnames
WHERE prs_perslid_key = boer.prs_perslid_key;
ELSE
SELECT prs_perslid_naam_friendly
INTO lreceivers1
FROM prs_v_perslid_fullnames
WHERE prs_perslid_key = boer.prs_perslid_key;
lreceivers := lreceivers||', '||lreceivers1;
END IF;
lnrreceivers := lnrreceivers+1;
END LOOP;
IF lnrreceivers > 0 THEN
DBMS_OUTPUT.PUT_LINE(lnrreceivers);
ltracking := lcl.l ('lcl_bes_notification_sent_to');
--ltracking := 'Notitificatie ''{0}'' verstuurd aan {1}';
ltracking := REPLACE (ltracking, '{0}', bericht);
ltracking := REPLACE (ltracking, '{1}', lreceivers);
DBMS_OUTPUT.PUT_LINE(ltracking);
fac.trackaction ('#BESMAI', pbeskey, NULL, NULL, SUBSTR(ltracking,1,2048)); -- maxlengte van fac_srtnotificatie_oms
END IF;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
@@ -1486,6 +1514,10 @@ AS
lfunctiecode fac_functie.fac_functie_code%TYPE;
lsender mld_discipline.ins_discipline_email%TYPE;
bericht fac_srtnotificatie.fac_srtnotificatie_oms%TYPE; -- kan te kort zijn na substitutie
lnrreceivers NUMBER;
lreceivers fac_srtnotificatie.fac_srtnotificatie_oms%TYPE;
lreceivers1 fac_srtnotificatie.fac_srtnotificatie_oms%TYPE;
ltracking VARCHAR2(4000); -- moet tijdelijk groter dan fac_srtnotificatie.fac_srtnotificatie_oms%TYPE kunnen zijn
BEGIN
BEGIN
SELECT COALESCE(ma.alg_locatie_key, -1),
@@ -1600,6 +1632,8 @@ AS
bericht := bes.bessprintf (loms, pbeskey, ''); -- de variabelen invullen
lnrreceivers := 0;
lreceivers := '';
FOR boer
IN (SELECT g.prs_perslid_key
FROM fac_v_webgebruiker g, fac_functie f, prs_perslid p
@@ -1638,7 +1672,30 @@ AS
2,
lsender
);
IF lnrreceivers = 0 THEN
SELECT prs_perslid_naam_friendly
INTO lreceivers
FROM prs_v_perslid_fullnames
WHERE prs_perslid_key = boer.prs_perslid_key;
ELSE
SELECT prs_perslid_naam_friendly
INTO lreceivers1
FROM prs_v_perslid_fullnames
WHERE prs_perslid_key = boer.prs_perslid_key;
lreceivers := lreceivers||', '||lreceivers1;
END IF;
lnrreceivers := lnrreceivers+1;
END LOOP;
IF lnrreceivers > 0 THEN
DBMS_OUTPUT.PUT_LINE(lnrreceivers);
ltracking := lcl.l ('lcl_ord_notification_sent_to');
--ltracking := 'Notitificatie ''{0}'' verstuurd aan {1}';
DBMS_OUTPUT.PUT_LINE(ltracking);
ltracking := REPLACE (ltracking, '{0}', bericht);
ltracking := REPLACE (ltracking, '{1}', lreceivers);
DBMS_OUTPUT.PUT_LINE(ltracking);
fac.trackaction ('#BES2MA', pbeskey, NULL, NULL, SUBSTR(ltracking,1,2048)); -- maxlengte van fac_srtnotificatie_oms
END IF;
EXCEPTION
WHEN NO_DATA_FOUND
THEN

View File

@@ -517,6 +517,10 @@ CREATE OR REPLACE PACKAGE BODY mld AS
lsrtnoticode fac_srtnotificatie.fac_srtnotificatie_code%TYPE;
lstatus mld_melding.mld_melding_status%TYPE;
bericht fac_srtnotificatie.fac_srtnotificatie_oms%TYPE; -- kan te kort zijn na substitutie
lnrreceivers NUMBER;
lreceivers fac_srtnotificatie.fac_srtnotificatie_oms%TYPE;
lreceivers1 fac_srtnotificatie.fac_srtnotificatie_oms%TYPE;
ltracking VARCHAR2(4000); -- moet tijdelijk groter dan fac_srtnotificatie.fac_srtnotificatie_oms%TYPE kunnen zijn
BEGIN
BEGIN
-- De vakgroep (discipline) setting MLD_DISC_PARAMS_BONOTIFY geeft aan of de notificatie moeten worden verstuurd.
@@ -605,6 +609,8 @@ CREATE OR REPLACE PACKAGE BODY mld AS
RETURN;
END IF;
lnrreceivers := 0;
lreceivers := '';
FOR boer
IN (SELECT g.prs_perslid_key
FROM fac_v_webgebruiker g, fac_functie f, prs_perslid p, prs_v_afdeling d
@@ -648,14 +654,37 @@ CREATE OR REPLACE PACKAGE BODY mld AS
lspoed, -- 1,2,3,4
NULL
);
IF lnrreceivers = 0 THEN
SELECT prs_perslid_naam_friendly
INTO lreceivers
FROM prs_v_perslid_fullnames
WHERE prs_perslid_key = boer.prs_perslid_key;
ELSE
SELECT prs_perslid_naam_friendly
INTO lreceivers1
FROM prs_v_perslid_fullnames
WHERE prs_perslid_key = boer.prs_perslid_key;
lreceivers := lreceivers||', '||lreceivers1;
END IF;
lnrreceivers := lnrreceivers+1;
END LOOP;
IF lnrreceivers > 0 THEN
DBMS_OUTPUT.PUT_LINE(lnrreceivers);
ltracking := lcl.l ('lcl_mld_notification_sent_to');
--ltracking := 'Notitificatie ''{0}'' verstuurd aan {1}';
DBMS_OUTPUT.PUT_LINE(ltracking);
ltracking := REPLACE (ltracking, '{0}', bericht);
ltracking := REPLACE (ltracking, '{1}', lreceivers);
DBMS_OUTPUT.PUT_LINE(ltracking);
fac.trackaction ('#MLDMAI', pmeldingkey, NULL, NULL, SUBSTR(ltracking,1,2048)); -- maxlengte van fac_srtnotificatie_oms
END IF;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
RETURN;
END;
END;
-- Stuur alle mogelijke opdracht goedkeurders een bericht als de opdracht status 10 heeft.
-- Naar wie, wordt reversed opgezocht op basis van toegekende autorisaties.
-- Lijkt heel erg sterk op bovenstaande notifybackoffice
@@ -677,6 +706,10 @@ CREATE OR REPLACE PACKAGE BODY mld AS
lfunctiecode fac_functie.fac_functie_code%TYPE;
lsender mld_discipline.ins_discipline_email%TYPE;
bericht fac_srtnotificatie.fac_srtnotificatie_oms%TYPE; -- kan te kort zijn na substitutie
lnrreceivers NUMBER;
lreceivers fac_srtnotificatie.fac_srtnotificatie_oms%TYPE;
lreceivers1 fac_srtnotificatie.fac_srtnotificatie_oms%TYPE;
ltracking VARCHAR2(4000); -- moet tijdelijk groter dan fac_srtnotificatie.fac_srtnotificatie_oms%TYPE kunnen zijn
BEGIN
BEGIN
SELECT m.mld_alg_locatie_key, p.prs_afdeling_key, stdm.mld_ins_discipline_key, m.mld_melding_spoed,
@@ -698,7 +731,6 @@ CREATE OR REPLACE PACKAGE BODY mld AS
AND o.mld_statusopdr_key = 10
AND m.mld_melding_key = o.mld_melding_key
AND o.mld_opdr_key = popdrkey;
IF lopdr_kosten <= lbestellimiet -- Dit eerst testen i.v.m. Ter goedkeuring. Verder moet sowieso goedgekeurd worden.
THEN
RETURN; -- Het bedrag is lager als de eerste limiet. De opdracht hoeft niet goed gekeurd te worden, dus een lege fiatteurs array teruggeven.
@@ -727,7 +759,6 @@ CREATE OR REPLACE PACKAGE BODY mld AS
ELSE
RETURN; -- Het goedgekeurde bedrag zit al boven de vijfde limiet. Geen approval meer nodig.
END IF;
-- These notifications are now sent on behalf of the system, what might be the local FM organisation
SELECT MAX (COALESCE(cd.ins_discipline_email, l.alg_locatie_email)) email
INTO lsender
@@ -741,7 +772,6 @@ CREATE OR REPLACE PACKAGE BODY mld AS
AND sm.mld_ins_discipline_key = cd.ins_discipline_key
AND m.mld_alg_locatie_key = l.alg_locatie_key
AND o.mld_opdr_key = popdrkey;
-- Als die er niet is sprongen we al naar de exception
-- Als die er wel is, gaan we verder
SELECT lcl.x('fac_srtnotificatie_oms', fac_srtnotificatie_key, fac_srtnotificatie_oms)
@@ -752,7 +782,6 @@ CREATE OR REPLACE PACKAGE BODY mld AS
-- Die laatste conditie is optimalisatie. Met code 0 is de notificatie feitelijk uitgeschakeld en
-- hoef ik dus ook niet duur te bepalen naar wie een notificatie niet gestuurd hoeft
-- Als deze niets oplevert gaan we dus ook weer naar de exception
-- Vertaal melding-spoed (1-4) naar email-spoed (1-3), 3=normaal
IF lspoed < 3
THEN
@@ -763,9 +792,10 @@ CREATE OR REPLACE PACKAGE BODY mld AS
ELSE
lspoed := 2;
END IF;
bericht := mld.opdrsprintf (loms, popdrkey); -- de variabelen invullen
lnrreceivers := 0;
lreceivers := '';
FOR boer
IN (SELECT g.prs_perslid_key
FROM fac_v_webgebruiker g, fac_functie f, prs_perslid p, prs_v_afdeling d
@@ -808,7 +838,30 @@ CREATE OR REPLACE PACKAGE BODY mld AS
lspoed, -- 1,2,3,4
lsender
);
IF lnrreceivers = 0 THEN
SELECT prs_perslid_naam_friendly
INTO lreceivers
FROM prs_v_perslid_fullnames
WHERE prs_perslid_key = boer.prs_perslid_key;
ELSE
SELECT prs_perslid_naam_friendly
INTO lreceivers1
FROM prs_v_perslid_fullnames
WHERE prs_perslid_key = boer.prs_perslid_key;
lreceivers := lreceivers||', '||lreceivers1;
END IF;
lnrreceivers := lnrreceivers+1;
END LOOP;
IF lnrreceivers > 0 THEN
DBMS_OUTPUT.PUT_LINE(lnrreceivers);
ltracking := lcl.l ('lcl_ord_notification_sent_to');
--ltracking := 'Notitificatie ''{0}'' verstuurd aan {1}';
DBMS_OUTPUT.PUT_LINE(ltracking);
ltracking := REPLACE (ltracking, '{0}', bericht);
ltracking := REPLACE (ltracking, '{1}', lreceivers);
DBMS_OUTPUT.PUT_LINE(ltracking);
fac.trackaction ('#ORDMAI', popdrkey, NULL, NULL, SUBSTR(ltracking,1,2048)); -- maxlengte van fac_srtnotificatie_oms
END IF;
EXCEPTION
WHEN NO_DATA_FOUND
THEN