From cb512c9445a2f01445039cdd31886a4d67b06048 Mon Sep 17 00:00:00 2001 From: Erik Groener Date: Tue, 12 Aug 2014 13:23:08 +0000 Subject: [PATCH] PNBR#29314 bestellingen; notificatie voor backoffice svn path=/Database/trunk/; revision=22305 --- BES/BES_PAC.SRC | 53 +++++++++++++++++++++++++++---------------------- FAC/FAC_PAC.SRC | 25 +++-------------------- 2 files changed, 32 insertions(+), 46 deletions(-) diff --git a/BES/BES_PAC.SRC b/BES/BES_PAC.SRC index 0e4e08a8..f2e2a8a6 100644 --- a/BES/BES_PAC.SRC +++ b/BES/BES_PAC.SRC @@ -66,7 +66,7 @@ AS PROCEDURE acceptopdracht (pbestelopdr_key IN NUMBER, user_key IN NUMBER, presulttext IN VARCHAR2); PROCEDURE rejectopdracht (pbestelopdr_key IN NUMBER, user_key IN NUMBER, presulttext IN VARCHAR2); FUNCTION bestelopdr_tooltip (besopdrkey IN NUMBER) RETURN VARCHAR2; - FUNCTION bessprintf (ps IN varchar2, pbes_bestelling_key IN number) + FUNCTION bessprintf (ps IN varchar2, pbes_bestelling_key IN number, pbes_discipline IN VARCHAR2) RETURN varchar2; FUNCTION opdrsprintf (ps IN varchar2, pbes_bestelopdr_key IN number) RETURN varchar2; @@ -1377,28 +1377,32 @@ AS lloc_key mld_adres.alg_locatie_key%TYPE; lafd_key prs_perslid.prs_afdeling_key%TYPE; ldisc_key bes_srtgroep.ins_discipline_key%TYPE; + ldisc_oms bes_discipline.ins_discipline_omschrijving%TYPE; loms fac_srtnotificatie.fac_srtnotificatie_oms%TYPE; bericht fac_srtnotificatie.fac_srtnotificatie_oms%TYPE; BEGIN BEGIN SELECT COALESCE(ma.alg_locatie_key, -1), p.prs_afdeling_key, - bsg.ins_discipline_key + bsg.ins_discipline_key, + bd.ins_discipline_omschrijving INTO lloc_key, lafd_key, - ldisc_key + ldisc_key, + ldisc_oms FROM bes_bestelling b, bes_bestelling_item bi, bes_srtdeel bsd, bes_srtgroep bsg, + bes_discipline bd, prs_perslid p, mld_adres ma WHERE b.bes_bestelling_key = bi.bes_bestelling_key AND bi.bes_srtdeel_key = bsd.bes_srtdeel_key AND bsd.bes_srtgroep_key = bsg.bes_srtgroep_key + AND bsg.ins_discipline_key = bd.ins_discipline_key AND b.prs_perslid_key = p.prs_perslid_key AND b.mld_adres_key_lev = ma.mld_adres_key - AND b.bes_bestelling_status = 2 AND b.bes_bestelling_key = pbeskey; -- op dit moment nog alleen voor NIEUWE bestellingen -- Als die er niet is sprongen we al naar de exception @@ -1408,7 +1412,7 @@ AS FROM fac_srtnotificatie WHERE fac_srtnotificatie_code = 'BES2BO'; - bericht := bes.bessprintf (loms, pbeskey); -- de variabelen invullen + bericht := bes.bessprintf (loms, pbeskey, ldisc_oms); -- de variabelen invullen FOR boer IN (SELECT g.prs_perslid_key @@ -1471,6 +1475,7 @@ AS lbestellimiet3 bes_disc_params.bes_disc_params_bestellimiet3%TYPE; lbestellimiet4 bes_disc_params.bes_disc_params_bestellimiet4%TYPE; lbestellimiet5 bes_disc_params.bes_disc_params_bestellimiet5%TYPE; + lbonotify bes_disc_params.bes_disc_params_bonotify%TYPE; 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 @@ -1485,7 +1490,8 @@ AS COALESCE (bdp.bes_disc_params_bestellimiet2, 0), COALESCE (bdp.bes_disc_params_bestellimiet3, 0), COALESCE (bdp.bes_disc_params_bestellimiet4, 0), - COALESCE (bdp.bes_disc_params_bestellimiet5, 0) + COALESCE (bdp.bes_disc_params_bestellimiet5, 0), + bdp.bes_disc_params_bonotify INTO lloc_key, lafd_key, ldisc_key, @@ -1495,7 +1501,8 @@ AS lbestellimiet2, lbestellimiet3, lbestellimiet4, - lbestellimiet5 + lbestellimiet5, + lbonotify FROM bes_bestelling b, bes_bestelling_item bi, bes_srtdeel bsd, @@ -1520,10 +1527,15 @@ AS bdp.bes_disc_params_bestellimiet2, bdp.bes_disc_params_bestellimiet3, bdp.bes_disc_params_bestellimiet4, - bdp.bes_disc_params_bestellimiet5; + bdp.bes_disc_params_bestellimiet5, + bdp.bes_disc_params_bonotify; IF lbes_kosten <= lbestellimiet -- Dit eerst testen i.v.m. Acceptering. Verder moet sowieso geaccepteerd worden. THEN + IF lbonotify = 1 + THEN -- Er hoeft niet gefiatteerd te worden, + bes.notifybackoffice(pbeskey); -- dus stuur de backoffice een bericht dat er een nieuwe bestelling is. + END IF; RETURN; -- Het bedrag is lager als de eerste limiet. De bestelling hoeft niet goed gekeurd te worden, dus een lege fiatteurs array teruggeven. ELSIF (((fac.getsetting ('bes_approval_all') = 0 AND lbes_kosten >= lbestellimiet) OR (fac.getsetting ('bes_approval_all') = 1 AND lbes_kosten <= lbestellimiet2)) AND @@ -1547,7 +1559,11 @@ AS THEN lfunctiecode := 'WEB_BESGO5'; ELSE - RETURN; -- Het goedgekeurde bedrag zit al boven de vijfde limiet. Geen approval meer nodig. + IF lbonotify = 1 + THEN -- De laatste fiatteur heeft de bestelling goedgekeurd, + bes.notifybackoffice(pbeskey); -- dus nu mag de backoffice het bericht krijgen dat er een nieuwe bestelling is. + END IF; + RETURN; -- Het goedgekeurde bedrag zit al boven de limiet. Geen approval meer nodig. END IF; -- These notifications are now sent on behalf of the system, what might be the local FM organisation @@ -1575,7 +1591,7 @@ AS FROM fac_srtnotificatie WHERE fac_srtnotificatie_code = 'BESAP1'; - bericht := bes.bessprintf (loms, pbeskey); -- de variabelen invullen + bericht := bes.bessprintf (loms, pbeskey, ''); -- de variabelen invullen FOR boer IN (SELECT g.prs_perslid_key @@ -1918,12 +1934,11 @@ AS RETURN lret; END; - FUNCTION bessprintf (ps IN varchar2, pbes_bestelling_key IN number) + FUNCTION bessprintf (ps IN varchar2, pbes_bestelling_key IN number, pbes_discipline IN VARCHAR2) RETURN varchar2 IS s varchar2 (2048 CHAR); lbes_bestelling_datum bes_bestelling.bes_bestelling_datum%TYPE; - lbes_discipline bes_discipline.ins_discipline_omschrijving%TYPE; BEGIN s := ps; -- We support substitution of placeholders in the messages @@ -1933,23 +1948,13 @@ AS IF INSTR2 (s, '#') > 0 THEN SELECT b.bes_bestelling_datum - , bd.ins_discipline_omschrijving INTO lbes_bestelling_datum - , lbes_discipline FROM bes_bestelling b - , bes_bestelling_item bi - , bes_srtdeel sd - , bes_srtgroep sg - , bes_discipline bd - WHERE b.bes_bestelling_key = bi.bes_bestelling_key - AND bi.bes_srtdeel_key = sd.bes_srtdeel_key - AND sd.bes_srtgroep_key = sg.bes_srtgroep_key - AND sg.ins_discipline_key = bd.ins_discipline_key - AND b.bes_bestelling_key = pbes_bestelling_key; + WHERE b.bes_bestelling_key = pbes_bestelling_key; s := REPLACE( REPLACE( REPLACE( s , '##KEY##', NUMBER_TO_CHAR (pbes_bestelling_key) ) , '##DATUM##', DATE_TO_CHAR (lbes_bestelling_datum, 'DD-MM-YY HH24:MI') ) - , '##DISC##', lbes_discipline + , '##DISC##', pbes_discipline ); END IF; diff --git a/FAC/FAC_PAC.SRC b/FAC/FAC_PAC.SRC index ec8c7685..2292d7c9 100644 --- a/FAC/FAC_PAC.SRC +++ b/FAC/FAC_PAC.SRC @@ -2854,7 +2854,6 @@ CREATE OR REPLACE PACKAGE BODY fac AS lnotify mld_disc_params.mld_disc_params_notify%TYPE; lmnotify mld_stdmelding.mld_stdmelding_notify%TYPE; lbonotify mld_disc_params.mld_disc_params_bonotify%TYPE; - lbonotify_bes bes_disc_params.bes_disc_params_bonotify%TYPE; lworkflowstep_key mld_melding.mld_workflowstep_key%TYPE; lstart_key mld_melding.mld_melding_start_key%TYPE; luitvtype mld_v_uitvoerende.TYPE%TYPE; @@ -3229,7 +3228,7 @@ CREATE OR REPLACE PACKAGE BODY fac AS THEN IF ptracking_oms IS NULL THEN - bericht := bes.bessprintf (loms, prefkey); + bericht := bes.bessprintf (loms, prefkey, ''); END IF; -- SELECT CASE WHEN fac.getsetting ('progress_notification_for') = 'true' @@ -3237,22 +3236,10 @@ CREATE OR REPLACE PACKAGE BODY fac AS ELSE prs_perslid_key END receiver , mld_adres_key_lev - , bes_disc_params_bonotify INTO lreceiver , lmld_adres_key - , lbonotify_bes - FROM bes_disc_params dp - , bes_discipline d - , bes_srtgroep sg - , bes_srtdeel sd - , bes_bestelling_item bi - , bes_bestelling bb - WHERE d.ins_discipline_key = dp.bes_ins_discipline_key - AND d.ins_discipline_key = sg.ins_discipline_key - AND sg.bes_srtgroep_key = sd.bes_srtgroep_key - AND sd.bes_srtdeel_key = bi.bes_srtdeel_key - AND bi.bes_bestelling_key = bb.bes_bestelling_key - AND bb.bes_bestelling_key = prefkey; + FROM bes_bestelling bb + WHERE bb.bes_bestelling_key = prefkey; -- -- Bij BESACP willen we *ook* de goedkeurders inlichten IF lcode = 'BESACP' @@ -3260,12 +3247,6 @@ CREATE OR REPLACE PACKAGE BODY fac AS bes.notifybesgoedkeurders (prefkey); END IF; -- - -- Laat de backoffice weten dat er een nieuwe bestelling is - IF lcode = 'BESNEW' AND lbonotify_bes = 1 - THEN - bes.notifybackoffice (prefkey); - END IF; - -- -- Bepaal de afzender -- die komt van de (strikt: een) catalogus van de artikelen uit deze bestelling -- of anders bepaald door de locatie van het afleveradres