From 5c6378414c616833b318e63e83910c5c64083944 Mon Sep 17 00:00:00 2001 From: Peter Feij Date: Thu, 10 Dec 2009 12:19:26 +0000 Subject: [PATCH] svn path=/Database/trunk/; revision=10176 --- BES/BES_PAC.SRC | 34 ++++++- BES/BES_TRI.SRC | 205 +---------------------------------------- BEZ/BEZ_PAC.SRC | 45 ++++++++- BEZ/BEZ_TRI.SRC | 237 +----------------------------------------------- FAC/FAC_INI.SRC | 40 ++++---- FAC/FAC_PAC.SRC | 201 +++++++++++++++++++++++++--------------- 6 files changed, 227 insertions(+), 535 deletions(-) diff --git a/BES/BES_PAC.SRC b/BES/BES_PAC.SRC index 78a97d2c..fba7de1a 100644 --- a/BES/BES_PAC.SRC +++ b/BES/BES_PAC.SRC @@ -1,7 +1,7 @@ #ifdef BES // 03-11-2000 PF -/* $Revision: 67 $ - * $Modtime: 25-08-09 15:40 $ +/* $Revision: 68 $ + * $Modtime: 24-11-09 18:15 $ */ @@ -29,6 +29,11 @@ AS FUNCTION calcbesopdrachtkosten (pbes_bestelopdr_key IN NUMBER, pautoupdate IN NUMBER) RETURN NUMBER; + + FUNCTION bessprintf (ps IN varchar2, pbes_bestelling_key IN number) + RETURN varchar2; + FUNCTION opdrsprintf (ps IN varchar2, pbes_bestelopdr_key IN number) + RETURN varchar2; END bes; / @@ -365,6 +370,31 @@ AS THEN RETURN 0; END; + + FUNCTION bessprintf (ps IN varchar2, pbes_bestelling_key IN number) + RETURN varchar2 + IS + s varchar2 (2048 CHAR); + BEGIN + s := ps; + -- We support substitution of placeholders in the messages + -- ##KEY## = bes_bestelling_key + -- ##DATUM## = bes_bestelling_datum + RETURN 'TODO '||s; + END; + FUNCTION opdrsprintf (ps IN varchar2, pbes_bestelopdr_key IN number) + RETURN varchar2 + IS + s varchar2 (2048 CHAR); + BEGIN + s := ps; + + -- We support substitution of placeholders in the messages + -- ##KEY## = bes_bestelling_key + -- ##NAAM## = bes_bestelling_datum + RETURN 'TODO '||s; + END; + END bes; / diff --git a/BES/BES_TRI.SRC b/BES/BES_TRI.SRC index 8f20ff98..5f206e90 100644 --- a/BES/BES_TRI.SRC +++ b/BES/BES_TRI.SRC @@ -1,8 +1,8 @@ #ifdef BES // 03-11-2000 PF /* - * $Revision: 48 $ - * $Modtime: 23-09-09 14:53 $ + * $Revision: 49 $ + * $Modtime: 30-11-09 15:33 $ */ #include "comsql.h" @@ -113,207 +113,6 @@ BEGIN END; / -CREATE_TRIGGER(bes_t_notificatie_bestelling) - AFTER INSERT OR UPDATE - ON bes_bestelling - FOR EACH ROW -BEGIN - DECLARE - soms fac_srtnotificatie.fac_srtnotificatie_oms%TYPE; - scode fac_srtnotificatie.fac_srtnotificatie_code%TYPE; - lreceiver prs_perslid.prs_perslid_key%TYPE; - lsender fac_notificatie.fac_notificatie_sender_email%TYPE; - BEGIN - IF :NEW.bes_bestelling_status = 5 AND :OLD.bes_bestelling_status <> 5 - THEN - scode := 'BESBES'; - ELSIF :NEW.bes_bestelling_status = 6 AND :OLD.bes_bestelling_status <> 6 - THEN - scode := 'BESOTV'; - ELSIF :NEW.bes_bestelling_status = 1 AND :OLD.bes_bestelling_status <> 1 - THEN - scode := 'BESREJ'; - ELSIF :NEW.bes_bestelling_status = 3 AND :OLD.bes_bestelling_status <> 3 - THEN - scode := 'BESFIT'; - ELSIF :NEW.bes_bestelling_status = 4 AND :OLD.bes_bestelling_status <> 4 - THEN - scode := 'BESACP'; - END IF; - - IF scode IS NOT NULL - THEN - BEGIN - SELECT sn.fac_srtnotificatie_oms - INTO soms - FROM fac_srtnotificatie sn - WHERE sn.fac_srtnotificatie_code = scode - AND sn.fac_srtnotificatie_mode > 0; - EXCEPTION - WHEN NO_DATA_FOUND - THEN - -- Nothing to do - RETURN; - END; - - -- We support substitution of placeholders in the messages - -- ##KEY## = bes_bestelling_key - -- ##DATUM## = bes_bestelling_datum - IF INSTR2 (soms, '#') > 0 - THEN - soms := - REPLACE (REPLACE (soms, - '##KEY##', - NUMBER_TO_CHAR (:NEW.bes_bestelling_key) - ), - '##DATUM##', - DATE_TO_CHAR (:NEW.bes_bestelling_datum, 'DD-MM-YY HH24:MI') - ); - 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 - BEGIN - -- Merk op dat tijdens insert nog niet bekend is welke items nog gaan worden toegevoegd - -- en dan is het dus niet mogelijk hier de catalogus te bepalen en te gebruiken - -- Tijdens update zou dat wel kunnen, maar de update wordt soms veroorzaakt door - -- een andere update, in het bijzonder makeorders(). Dat levert dan weer een - -- table is mutating error op. Dat betekent dus dat de notificatie eigenlijk dieper - -- moet worden gegenereerd, op bestelling-item. Dit valt nu buiten de scope van RWSN#14861 --- SELECT MAX (ins_discipline_email) --- INTO lsender --- FROM ins_tab_discipline d, bes_bestelling_item bi, ins_srtdeel sd, ins_srtgroep sg --- WHERE bi.ins_srtdeel_key = sd.ins_srtdeel_key --- AND sd.ins_srtgroep_key = sg.ins_srtgroep_key --- AND sg.ins_discipline_key = d.ins_discipline_key --- AND bi.bes_bestelling_key = :NEW.bes_bestelling_key; - - IF lsender IS NULL - THEN - SELECT l.alg_locatie_email - INTO lsender - FROM mld_adres ma, alg_locatie l - WHERE :NEW.mld_adres_key_lev = ma.mld_adres_key(+) AND ma.alg_locatie_key = l.alg_locatie_key(+); - END IF; - EXCEPTION - WHEN NO_DATA_FOUND - THEN - lsender := NULL; - END; - - -- Stuur notificatie naar de aanvrager - fac.putnotificationsrtprio (:NEW.prs_perslid_key, :NEW.prs_perslid_key, scode, :NEW.bes_bestelling_key, soms, NULL, NULL, NULL, NULL, 2, lsender); - -- Stuur notificatie naar de behandelaar indien afwijkend - IF :NEW.prs_perslid_key <> :NEW.bes_bestelling_owner_key - THEN - fac.putnotificationsrtprio (:NEW.prs_perslid_key, :NEW.prs_perslid_key, scode, :NEW.bes_bestelling_key, soms, NULL, NULL, NULL, NULL, 2, lsender); - END IF; - - END IF; - END; -#ifdef MS_SQL -lerror: -#endif -END; -/ - -CREATE_TRIGGER(bes_t_notificatie_bestelopdr) - AFTER INSERT OR UPDATE - ON bes_bestelopdr - FOR EACH ROW -DECLARE - soms fac_srtnotificatie.fac_srtnotificatie_oms%TYPE; - scode fac_srtnotificatie.fac_srtnotificatie_code%TYPE; - rfokey bes_bestelling.bes_bestelling_key%TYPE; - lreceiver prs_perslid.prs_perslid_key%TYPE; - lemail prs_bedrijf.prs_bedrijf_email%TYPE; - lphone prs_bedrijf.prs_bedrijf_telefoon2%TYPE; - lbedrijfnaam prs_bedrijf.prs_bedrijf_naam%TYPE; - lsender fac_notificatie.fac_notificatie_sender_email%TYPE; -BEGIN - -- Nu sturen we naar de leverancier, vooralsnog - IF :NEW.bes_bestelopdr_status = 4 AND :OLD.bes_bestelopdr_status <> 4 - THEN - scode := 'BES2BE'; - ELSIF :NEW.bes_bestelopdr_status = 1 AND :OLD.bes_bestelopdr_status <> 1 - THEN - scode := 'BES2RE'; - ELSIF :NEW.bes_bestelopdr_status = 6 AND :OLD.bes_bestelopdr_status <> 6 - THEN - scode := 'BES2AF'; - ELSIF :NEW.bes_bestelopdr_status = 2 AND :OLD.bes_bestelopdr_status <> 2 - THEN - scode := 'BES2NE'; - ELSIF :NEW.bes_bestelopdr_status = 7 AND :OLD.bes_bestelopdr_status <> 7 - THEN - scode := 'BES2VE'; - END IF; - - IF scode IS NOT NULL - THEN - BEGIN - SELECT sn.fac_srtnotificatie_oms - INTO soms - FROM fac_srtnotificatie sn - WHERE sn.fac_srtnotificatie_code = scode AND sn.fac_srtnotificatie_mode > 0; - EXCEPTION - WHEN NO_DATA_FOUND - THEN - -- Nothing to do - RETURN; - END; - - BEGIN - SELECT prs_bedrijf_email, prs_bedrijf_telefoon2, prs_bedrijf_naam - INTO lemail, lphone, lbedrijfnaam - FROM prs_bedrijf - WHERE prs_bedrijf_key=:NEW.prs_bedrijf_key; - EXCEPTION - WHEN NO_DATA_FOUND - THEN - RETURN; - END; - - - IF instr2 (soms, '#') > 0 - THEN - soms := - REPLACE (REPLACE (soms, '##KEY##', :NEW.bes_bestelopdr_id), - '##NAAM##', lbedrijfnaam - ); - END IF; - - BEGIN - -- Dit leidt al snel tot table is mutating error. - -- Dat betekent dus dat de notificatie eigenlijk dieper moet worden gegenereerd - -- Dit valt nu buiten de scope van RWSN#14861 --- SELECT MAX (ins_discipline_email) --- INTO lsender --- FROM ins_tab_discipline d, bes_bestelling_item bi, ins_srtdeel sd, ins_srtgroep sg, bes_bestelopdr_item boi --- WHERE bi.ins_srtdeel_key = sd.ins_srtdeel_key --- AND sd.ins_srtgroep_key = sg.ins_srtgroep_key --- AND sg.ins_discipline_key = d.ins_discipline_key --- AND boi.bes_bestelopdr_item_key = bi.bes_bestelopdr_item_key --- AND boi.bes_bestelopdr_key = :NEW.bes_bestelopdr_key; - - IF lsender IS NULL - THEN - SELECT l.alg_locatie_email - INTO lsender - FROM mld_adres ma, alg_locatie l - WHERE :NEW.mld_adres_key_lev = ma.mld_adres_key(+) AND ma.alg_locatie_key = l.alg_locatie_key(+); - END IF; - EXCEPTION - WHEN NO_DATA_FOUND - THEN - lsender := NULL; - END; - - fac.putnotificationsrtprio(NULL, NULL, scode, :NEW.bes_bestelopdr_key, soms, NULL, lemail, lphone, NULL, 2, lsender); - END IF; -END; -/ CREATE_TRIGGER(bes_t_bes_bestelopdr_item_B_IU) BEFORE INSERT OR UPDATE ON BES_BESTELOPDR_ITEM FOR EACH ROW diff --git a/BEZ/BEZ_PAC.SRC b/BEZ/BEZ_PAC.SRC index be5c3c7a..2866f4fe 100644 --- a/BEZ/BEZ_PAC.SRC +++ b/BEZ/BEZ_PAC.SRC @@ -1,9 +1,48 @@ #ifdef BEZ // 03-11-2000 PF - -/* REVISIONS: +/* + * $Revision: 2 $ + * $Modtime: 30-11-09 22:38 $ * - * 03-11-20000 PF CREATION (concept). */ +CREATE OR REPLACE PACKAGE bez AS + FUNCTION sprintf (ps IN VARCHAR2, p_afspraak_key IN NUMBER) RETURN VARCHAR2; +END bez; +/ +CREATE OR REPLACE PACKAGE BODY bez AS + + FUNCTION sprintf (ps IN VARCHAR2, p_afspraak_key IN NUMBER) RETURN VARCHAR2 IS + lafspraak_datum bez_afspraak.bez_afspraak_datum%TYPE; + lbezoek VARCHAR2 (200); + s varchar2 (2048 CHAR); + BEGIN + s := ps; + -- We support substitution of placeholders in the messages + -- ##KEY## afspraaknummer + -- ##NAAM## volledige naam van de bezoeker + IF INSTR (s, '#') > 0 + THEN + SELECT bez_afspraak_datum + INTO lafspraak_datum + FROM bez_afspraak + WHERE bez_afspraak_key = p_afspraak_key; + + SELECT MIN(bez_afspraak_naam) || DECODE (COUNT (*), 1, '', '...') + INTO lbezoek + FROM bez_bezoekers + WHERE bez_afspraak_key = p_afspraak_key + GROUP BY bez_afspraak_key; + + s := + REPLACE (REPLACE (REPLACE (s, '##NAAM##', lbezoek), '##KEY##', NUMBER_TO_CHAR (p_afspraak_key)), + '##DATUM##', + DATE_TO_CHAR (lafspraak_datum, 'DD-MM-YY HH24:MI') + ); + END IF; + RETURN s; + + END; +END bez; +/ #endif // BEZ diff --git a/BEZ/BEZ_TRI.SRC b/BEZ/BEZ_TRI.SRC index 84e7ac28..879aa366 100644 --- a/BEZ/BEZ_TRI.SRC +++ b/BEZ/BEZ_TRI.SRC @@ -1,7 +1,7 @@ #ifdef BEZ // 03-11-2000 PF -/* $Revision: 28 $ - * $Modtime: 27-02-08 14:33 $ +/* $Revision: 29 $ + * $Modtime: 30-11-09 15:35 $ */ #include "comsql.h" @@ -16,39 +16,18 @@ BEGIN dummy := :new.bez_afspraak_key; IF :new.bez_afspraak_contact_key IS NULL AND :new.prs_perslid_key IS NOT NULL THEN -#ifdef MS_SQL - update bez_afspraak set bez_afspraak_contact_key = prs_perslid_key - where bez_afspraak_key = @new__bez_afspraak_key; -#else :new.bez_afspraak_contact_key := :new.prs_perslid_key; -#endif END IF; IF :new.bez_afspraak_host_key IS NULL AND :new.bez_afspraak_gastheer IS NULL THEN -#ifdef MS_SQL - update bez_afspraak set bez_afspraak_host_key = bez_afspraak_contact_key - where bez_afspraak_key = @new__bez_afspraak_key; -#else :new.bez_afspraak_host_key := :new.bez_afspraak_contact_key; -#endif END IF; IF :new.bez_afspraak_host_key IS NOT NULL THEN -#ifdef MS_SQL - update bez_afspraak set bez_afspraak_gastheer = - (select SUBSTRING(prs_perslid_naam_full,1,50) FROM prs_v_perslid_fullnames_all WHERE prs_perslid_key=:new.bez_afspraak_host_key) - where bez_afspraak_key = @new__bez_afspraak_key; -#else SELECT SUBSTR(prs_perslid_naam_full,1,50) INTO :new.bez_afspraak_gastheer FROM prs_v_perslid_fullnames_all WHERE prs_perslid_key=:new.bez_afspraak_host_key; -#endif END IF; IF :new.alg_onrgoed_keys IS NOT NULL THEN -#ifdef MS_SQL - update bez_afspraak set bez_afspraak_ruimte = - (select SUBSTRING(alg_plaatsaanduiding,1,30) FROM alg_v_plaatsaanduiding_all WHERE alg_onroerendgoed_keys=:new.alg_onrgoed_keys) - where bez_afspraak_key = @new__bez_afspraak_key; -#else BEGIN SELECT SUBSTR (alg_plaatsaanduiding, 1, 30) INTO :NEW.bez_afspraak_ruimte @@ -59,7 +38,6 @@ BEGIN THEN :NEW.bez_afspraak_ruimte := SUBSTR ('*' || :NEW.bez_afspraak_ruimte, 1, 30); END; -#endif END IF; END; / @@ -89,103 +67,6 @@ BEGIN END; / -// Uitgangspunt: we notificeren op Afspraak, niet op bezoeker als het gaat om aanmelding etc -// We notificeren alleen op bezoeker als het gaat om binnenkomen en weggaan. -// Er is slechts 1 zo een notificatie per afspraak, bij nieuw weet je nog niets van de bezoekers -CREATE_TRIGGER(bez_t_notificatie_afspraak) - AFTER INSERT OR UPDATE - ON bez_afspraak - FOR EACH ROW -BEGIN - DECLARE - soms fac_srtnotificatie.fac_srtnotificatie_oms%TYPE; - scode fac_srtnotificatie.fac_srtnotificatie_code%TYPE; - lbezoek VARCHAR2 (50); - lreceiver prs_perslid.prs_perslid_key%TYPE; - lsender fac_notificatie.fac_notificatie_sender_email%TYPE; - BEGIN - -- Alleen registratie van globale mutaties; per bezoeker wordt ook genotificeerd - -- Er is niet noodzakelijk iets gewijzigd, maar we notificeren wel - -- (er is immers een update), zodat de namen van de bezoekers - -- kunnen worden getoond. - -- De noticaties gaat naar de contactpersoon - - -- Voor bezoekrersafspraken bij een reservering notificeren we NIET - IF :NEW.res_rsv_ruimte_key IS NOT NULL - THEN - RETURN; - END IF; - - scode := 'BEZMUT'; - - IF scode IS NOT NULL - THEN - BEGIN - SELECT sn.fac_srtnotificatie_oms - INTO soms - FROM fac_srtnotificatie sn - WHERE sn.fac_srtnotificatie_code = scode - AND sn.fac_srtnotificatie_mode > 0; - EXCEPTION - WHEN NO_DATA_FOUND - THEN - -- Nothing to do - RETURN; - END; - - BEGIN - SELECT MIN(bez_afspraak_naam || DECODE ((SELECT COUNT (*) - FROM bez_bezoekers - WHERE bez_afspraak_key = :NEW.bez_afspraak_key), 1, '', ' c.s.')) - INTO lbezoek - FROM bez_bezoekers - WHERE bez_afspraak_key = :NEW.bez_afspraak_key; - - -- We support substitution of placeholders in the messages - -- ##KEY## = afspraaknummer - -- ##NAAM## = volledige naam van de bezoeker - IF INSTR2(soms, '#') > 0 - THEN - soms := - REPLACE (REPLACE (REPLACE (soms, '##NAAM##', lbezoek), '##KEY##', NUMBER_TO_CHAR (:NEW.bez_afspraak_key)), - '##DATUM##', - DATE_TO_CHAR (:NEW.bez_afspraak_datum, 'DD-MM-YY HH24:MI') - ); - END IF; - BEGIN - SELECT l.alg_locatie_email - INTO lsender - FROM alg_locatie l - WHERE l.alg_locatie_key = :new.alg_locatie_key; - EXCEPTION - WHEN NO_DATA_FOUND - THEN - lsender := NULL; - END; - - fac.clrnotifications(scode, :NEW.bez_afspraak_key); - fac.putnotificationsrtprio (:NEW.prs_perslid_key, - :NEW.bez_afspraak_contact_key, - scode, - :NEW.bez_afspraak_key, - soms, - NULL, - NULL, - NULL, - NULL, - 2, - lsender - ); - EXCEPTION - WHEN NO_DATA_FOUND - THEN - fac.clrnotifications (scode, :NEW.bez_afspraak_key); - END; - END IF; - END; -END; -/ - CREATE_TRIGGER(bez_t_notificatie_afspraak_d) AFTER DELETE ON bez_afspraak @@ -195,118 +76,4 @@ BEGIN END; / -// Geen notificaties bij inserten van een bezoeker,het gaat immers alleen om binnen/buitenmelding -// Zou je het wel bij inserten doen, dan levert dit ongewenste spooknotificaties op bij uitbreiding van -// deels al binnen/buitengemeld bezoek (UWVA#13607)! -CREATE_TRIGGER(bez_t_notificatie_bezoekers) - AFTER UPDATE - ON bez_bezoekers - FOR EACH ROW -BEGIN - DECLARE - soms fac_srtnotificatie.fac_srtnotificatie_oms%TYPE; - soms2 fac_srtnotificatie.fac_srtnotificatie_oms%TYPE; - scode fac_srtnotificatie.fac_srtnotificatie_code%TYPE; - scode2 fac_srtnotificatie.fac_srtnotificatie_code%TYPE; - lbezoek bez_bezoekers.bez_afspraak_naam%TYPE; - lreceiver prs_perslid.prs_perslid_key%TYPE; - lreceiver2 prs_perslid.prs_perslid_key%TYPE; - lalglocatiekey bez_afspraak.alg_locatie_key%TYPE; - lsender fac_notificatie.fac_notificatie_sender_email%TYPE; - ldatum DATE; - BEGIN - SELECT bez_afspraak_host_key, bez_afspraak_contact_key, bez_afspraak_datum, alg_locatie_key - INTO lreceiver, lreceiver2, ldatum, lalglocatiekey - FROM bez_afspraak - WHERE bez_afspraak_key = :NEW.bez_afspraak_key; - - -- Geen notificatie van wijzigingen als afspraak onder een reservering hangt; - -- Die reservering notificeert dan (meestal) wel - IF :OLD.bez_bezoekers_done IS NULL AND :NEW.bez_bezoekers_done IS NOT NULL - THEN - scode := 'BEZDON'; - scode2 := 'BEZDO2'; - ldatum := :NEW.bez_bezoekers_done; - ELSIF :OLD.bez_bezoekers_out IS NULL AND :NEW.bez_bezoekers_out IS NOT NULL - THEN - scode := 'BEZOUT'; - scode2 := 'BEZOU2'; - ldatum := :NEW.bez_bezoekers_out; - ELSE - -- update komt eigenlijk niet voor (vanuit de GUI), want er wordt altijd delete+insert uitgevoerd - scode := 'BEZUPD'; - END IF; - - IF scode IS NOT NULL OR scode2 IS NOT NULL - THEN - BEGIN - SELECT sn.fac_srtnotificatie_oms - INTO soms - FROM fac_srtnotificatie sn - WHERE sn.fac_srtnotificatie_code = scode AND sn.fac_srtnotificatie_mode > 0; - EXCEPTION - WHEN NO_DATA_FOUND - THEN - -- Nothing to do - NULL; - END; - - BEGIN - SELECT sn.fac_srtnotificatie_oms - INTO soms2 - FROM fac_srtnotificatie sn - WHERE sn.fac_srtnotificatie_code = scode2 AND sn.fac_srtnotificatie_mode > 0; - EXCEPTION - WHEN NO_DATA_FOUND - THEN - -- Nothing to do - NULL; - END; - - -- We support substitution of placeholders in the messages - -- ##KEY## = ins_srtdiscipline_prefix+key+/+volgnr - -- ##NAAM## = volledige naam van de afmelder - IF (soms IS NOT NULL OR soms2 IS NOT NULL) AND (INSTR2(soms, '#') > 0 OR INSTR2(soms2, '#') > 0) - THEN - lbezoek := :NEW.bez_afspraak_naam; - soms := - REPLACE (REPLACE (REPLACE (soms, '##NAAM##', lbezoek), '##KEY##', TO_CHAR (:NEW.bez_afspraak_key)), - '##DATUM##', - DATE_TO_CHAR (ldatum, 'DD-MM-YY HH24:MI') - ); - soms2 := - REPLACE (REPLACE (REPLACE (soms2, '##NAAM##', lbezoek), '##KEY##', TO_CHAR (:NEW.bez_afspraak_key)), - '##DATUM##', - DATE_TO_CHAR (ldatum, 'DD-MM-YY HH24:MI') - ); - END IF; - - BEGIN - SELECT l.alg_locatie_email - INTO lsender - FROM alg_locatie l - WHERE l.alg_locatie_key = lalglocatiekey; - EXCEPTION - WHEN NO_DATA_FOUND - THEN - lsender := NULL; - END; - - -- We would like to prevent notifications if we are the one that causes this - -- But we do not know what user we are, so we do not prevent it. - IF soms IS NOT NULL - THEN - fac.putnotificationsrtprio (NULL, lreceiver, scode, :NEW.bez_afspraak_key, soms, NULL, NULL, NULL, NULL, 2, lsender); - END IF; - - IF soms2 IS NOT NULL - THEN - fac.putnotificationsrtprio (NULL, lreceiver2, scode2, :NEW.bez_afspraak_key, soms2, NULL, NULL, NULL, NULL, 2, lsender); - END IF; - END IF; - END; -END; -/ - - #endif // BEZ diff --git a/FAC/FAC_INI.SRC b/FAC/FAC_INI.SRC index 215f1a9a..d7ab1e2b 100644 --- a/FAC/FAC_INI.SRC +++ b/FAC/FAC_INI.SRC @@ -1,7 +1,7 @@ #ifdef FAC // 13-03-96 AH -/* $Revision: 417 $ - * $Modtime: 7-12-09 13:07 $ +/* $Revision: 418 $ + * $Modtime: 9-12-09 18:23 $ */ #include "comsql.h" @@ -1903,10 +1903,11 @@ DEF_FAC_SRTNOT('MLDBWD', 0, 'Uw melding ##KEY## (##DISC##/##STDMLD##) is terugge DEF_FAC_SRTNOT('MLDBEH', 0, 'Uw melding ##KEY## (##DISC##/##STDMLD##) heeft andere behandelaar', 'mld/mld_melding.asp?mld_key=', '0', 'melding'); -- noot: ##KEY## = meldingkey/volgnr -DEF_FAC_SRTNOT('ORDAFM', 1, 'Uw opdracht ##KEY## is gereed gemeld door ##NAAM##', 'mld/mld_opdr.asp?opdr_key=', '0', 'opdracht'); +-- bericht aan uitvoerende DEF_FAC_SRTNOT('ORDMLI', 4, '##PLAATS##: ##SPOED##Opdracht ##KEY## (##STDMLD##) is aan u toegewezen', 'mld/mld_opdr.asp?opdr_key=', '0', 'opdracht'); -DEF_FAC_SRTNOT('ORDMLE', 2, '##SPOED##Opdracht ##KEY## (##DISC##/##STDMLD##) is aan u toegewezen', '', '0', 'opdracht'); - +DEF_FAC_SRTNOT('ORDMLE', 2, '##SPOED##Opdracht ##KEY## (##DISC##/##STDMLD##) is aan u toegewezen', '', '0', 'opdracht'); +-- bericht naar interne contactpersoon +DEF_FAC_SRTNOT('ORDAFM', 1, 'Opdracht ##KEY## is gereed gemeld door ##NAAM##', 'mld/mld_opdr.asp?opdr_key=', '0', 'opdracht'); DEF_FAC_SRTNOT('ORDNEW', 0, 'Opdracht ##KEY## is aangemaakt', 'mld/mld_opdr.asp?opdr_key=', '0', 'opdracht'); DEF_FAC_SRTNOT('ORDFIA', 0, 'Opdracht ##KEY## is ter fiattering aangeboden aan ##FIATTEUR##', 'mld/mld_opdr.asp?opdr_key=', '0', 'opdracht'); DEF_FAC_SRTNOT('ORDFOK', 0, 'Opdracht ##KEY## is gefiatteerd', 'mld/mld_opdr.asp?opdr_key=', '0', 'opdracht'); @@ -1921,11 +1922,10 @@ DEF_FAC_SRTNOT('PRSINF', 2, '*beschikbaar tbv persoonsafhankelijke notificatiejo DEF_FAC_SRTNOT('RESNEW', 1, 'Uw reservering ##KEY## (##DESC##) is geregistreerd', 'res/res_reservering.asp?rsv_ruimte_key=', '0', 'reservering'); DEF_FAC_SRTNOT('RESUPD', 1, 'Uw reservering ##KEY## (##DESC##) is aangepast', 'res/res_reservering.asp?rsv_ruimte_key=', '0', 'reservering'); -//DEF_FAC_SRTNOT('RESUP2', 1, 'Voorzieningen van uw reservering ##KEY## (##DESC##) zijn aangepast', 'res/res_reservering.asp?rsv_ruimte_key=', '0', 'reservering'); DEF_FAC_SRTNOT('RESAFM', 0, 'Uw reservering ##KEY## (##DESC##) is afgemeld', 'res/res_reservering.asp?rsv_ruimte_key=', '0', 'reservering'); DEF_FAC_SRTNOT('RESBEV', 1, 'Uw reservering ##KEY## (##DESC##) is nu definitief', 'res/res_reservering.asp?rsv_ruimte_key=', '0', 'reservering'); DEF_FAC_SRTNOT('RESDEL', 9, 'Uw reservering ##KEY## (##DESC##) is vervallen', '', '0', 'reservering'); -DEF_FAC_SRTNOT('RESOPT', 1, 'Uw reservering ##KEY## (##DESC##) is in optie gezet', 'res/res_reservering.asp?rsv_ruimte_key=', '0', 'reservering'); +DEF_FAC_SRTNOT('RESOPT', 0, 'Uw reservering ##KEY## (##DESC##) is in optie gezet', 'res/res_reservering.asp?rsv_ruimte_key=', '0', 'reservering'); DEF_FAC_SRTNOT('RESVER', 0, 'Uw reservering ##KEY## (##DESC##) is geheel verwerkt', 'res/res_reservering.asp?rsv_ruimte_key=', '0', 'reservering'); DEF_FAC_SRTNOT('RESINF', 3, 'Uw reservering op ##KEY## (##DESC##) moet bevestigd worden', 'res/res_reservering.asp?rsv_ruimte_key=', '0', 'reservering'); @@ -2233,8 +2233,8 @@ DEF_MENUKOP(0, 'lcl_menu_fe_other'); DEF_MENUITEM(0, 'lcl_menu_faq_kennisbank_fe' , '', 'FAC', 'appl/fac/fac_faq_search.asp?urole=fe', 0, 0, 'WEB_MLDUSE', 'R', '0'); DEF_MENUITEM(0, 'lcl_menu_prs_phonebook' , '', 'PRS', 'appl/prs/prs_phonebook.asp', 0, 0, 'WEB_PHONEB', 'R', '1'); DEF_MENUITEM(0, 'lcl_menu_obj_fe_haltewerkzaam' , '', 'MLD', 'appl/mld/splace_activities.asp', 0, 0, 'WEB_INSUSE', 'W', '0'); -//DEF_MENUITEM(0, 'lcl_menu_prs_bezittingen' , '', 'PRS', 'appl/PersObjects/PersSearch.asp', 0, 0, 'WEB_PRSOBJ', 'R', '1'); DEF_MENUITEM(0, 'lcl_menu_fac_fiattering' , '', 'FAC', 'appl/fac/fac_fiattering_list.asp', 0, 0, 'WEB_MLDUSE', 'R', '1'); /* autorisatie?*/ +DEF_MENUITEM(0, 'lcl_menu_fe_myinfo' , '', 'FAC', 'appl/fac/fac_user_info.asp', 0, 0, 'WEB_PROFIL', 'R', '1'); // ==================================== PROFESSIONAL OPTIES ======================================= @@ -2253,21 +2253,23 @@ DEF_MENUITEM(1, 'lcl_menu_ins_fo' , '', 'INS', 'appl/ins/ins_searc DEF_MENUITEM(1, 'lcl_menu_bes_fo_overzicht' , '', 'BES', 'appl/bes/bes_search.asp?urole=fo', 0, 0, 'WEB_BESFOF', 'R', '1'); DEF_MENUITEM(1, 'lcl_menu_bes_fo_1' , '', 'BES', 'appl/bes/bes_bestelling.asp?urole=fo', 0, 1, 'WEB_BESFOF', 'W', '1'); DEF_MENUITEM(1, 'lcl_menu_bes_fo_2' , '', 'BES', 'appl/bes/bes_bestelling.asp?urole=fo', 0, 0, 'WEB_BESFOF', 'W', '0'); -DEF_MENUITEM(1, 'lcl_menu_sle_sleutels' , '', 'SLE', 'appl/sle/sleutel_search.asp?fronto=1', 0, 0, 'WEB_SLEFOF', 'W', '1'); -DEF_MENUITEM(1, 'lcl_menu_sle_cilinders' , '', 'SLE', 'appl/sle/cilinder_search.asp?fronto=1', 0, 0, 'WEB_SLEFOF', 'W', '0'); -DEF_MENUITEM(1, 'lcl_menu_sle_toegangwie' , '', 'SLE', 'appl/sle/toegang_wie.asp?fronto=1', 0, 0, 'WEB_SLEFOF', 'R', '0'); -DEF_MENUITEM(1, 'lcl_menu_sle_toegangwaar' , '', 'SLE', 'appl/sle/toegang_waar.asp?fronto=1', 0, 0, 'WEB_SLEFOF', 'R', '0'); +DEF_MENUITEM(1, 'lcl_menu_sle_sleutels' , '', 'SLE', 'appl/sle/sleutel_search.asp?urole=fo', 0, 0, 'WEB_SLEFOF', 'W', '1'); +DEF_MENUITEM(1, 'lcl_menu_sle_cilinders' , '', 'SLE', 'appl/sle/cilinder_search.asp?urole=fo', 0, 0, 'WEB_SLEFOF', 'W', '0'); +DEF_MENUITEM(1, 'lcl_menu_sle_toegangwie' , '', 'SLE', 'appl/sle/toegang_wie.asp?urole=fo', 0, 0, 'WEB_SLEFOF', 'R', '0'); +DEF_MENUITEM(1, 'lcl_menu_sle_toegangwaar' , '', 'SLE', 'appl/sle/toegang_waar.asp?urole=fo', 0, 0, 'WEB_SLEFOF', 'R', '0'); DEF_MENUKOP(1, 'lcl_bo'); DEF_MENUITEM(1, 'lcl_menu_mld_bo_call_center' , '', 'MLD', 'appl/mld/mld_search.asp?urole=bo', 0, 0, 'WEB_MLDBOF', 'R', '1'); DEF_MENUITEM(1, 'lcl_menu_mld_bo_close ' , '', 'MLD', 'appl/mld/mld_search.asp?close=1', 0, 0, 'WEB_MLDBO2', 'R', '1'); DEF_MENUITEM(1, 'lcl_menu_mld_bo_accept' , '', 'MLD', 'appl/mld/mld_search.asp?accept=1', 0, 0, 'WEB_MLDBO3', 'R', '1'); // WEB_MLDORD is autorisatie voor interne uitvoerders om eigen opdrachten te mogen afmelden -DEF_MENUITEM(1, 'lcl_menu_mld_bo_mijnopdrachte' , '', 'MLD', 'appl/mld/opdr_search.asp?urole=fe', 0, 0, 'WEB_MLDORD', 'W', '1'); // WEB_ORDBO2 is BO-recht om opdrachten binnen de scope af te mogen melden -DEF_MENUITEM(1, 'lcl_menu_mld_bo_afmeldenopdra' , '', 'MLD', 'appl/mld/opdr_search.asp?urole=bo', 0, 0, 'WEB_ORDBO2', 'W', '1'); +// WEB_ORDBOF is alles moet opdrachten te kunnen doen +DEF_MENUITEM(1, 'lcl_menu_mld_bo_mijnopdrachte' , '', 'MLD', 'appl/mld/opdr_search.asp?urole=fe', 0, 0, 'WEB_MLDORD', 'W', '1'); +DEF_MENUITEM(1, 'lcl_menu_mld_bo_afmeldenopdra' , '', 'MLD', 'appl/mld/opdr_search.asp?urole=b2', 0, 0, 'WEB_ORDBO2', 'W', '1'); +DEF_MENUITEM(1, 'lcl_menu_mld_bo_opdracht' , '', 'MLD', 'appl/mld/opdr_search.asp?urole=bo', 0, 0, 'WEB_ORDBOF', 'R', '1'); DEF_MENUITEM(1, 'lcl_menu_mld_notes' , '', 'MLD', 'appl/mld/mld_show_note.asp?urole=bo', 0, 0, 'WEB_MLDBOF', 'R', '1'); -DEF_MENUITEM(1, 'lcl_menu_mld_bo_close_orders' , '', 'MLD', 'appl/mld/ord_search.asp?close_only=1', 0, 0, 'WEB_ORDFOF', 'R', '1'); + DEF_MENUITEM(1, 'lcl_menu_res_bo' , '', 'RES', 'appl/res/res_search.asp?urole=bo', 0, 0, 'WEB_RESBOF', 'R', '1'); DEF_MENUITEM(1, 'lcl_menu_bez_bo' , '', 'BEZ', 'appl/bez/bez_search.asp?urole=bo', 0, 0, 'WEB_BEZBOF', 'R', '1'); DEF_MENUITEM(1, 'lcl_menu_bes_bo_aanvraag_overz', '', 'BES', 'appl/bes/bes_search.asp?urole=bo', 0, 0, 'WEB_BESBOF', 'R', '1'); @@ -2307,10 +2309,10 @@ DEF_MENUITEM(1, 'lcl_menu_ins_bo_use' , '', 'INS', 'appl/ins/ins_searc DEF_MENUITEM(1, 'lcl_menu_prs_bedrijf' , '', 'PRS', 'appl/prs/prs_bedrijf_search.asp', 0, 0, 'WEB_RELMAN', 'R', '1'); DEF_MENUITEM(1, 'lcl_menu_cnt_bo' , '', 'CNT', 'appl/cnt/cnt_search.asp?urole=bo', 0, 0, 'WEB_CNTMAN', 'R', '1'); DEF_MENUITEM(1, 'lcl_menu_fac_reports' , '', 'FAC', 'appl/fac/fac_usrrap.asp', 0, 0, 'WEB_USRRAP', 'W', '1'); -DEF_MENUITEM(1, 'lcl_menu_sle_sleutels' , '', 'SLE', 'appl/sle/sleutel_search.asp?backo=1', 0, 0, 'WEB_SLEBOF', 'W', '1'); -DEF_MENUITEM(1, 'lcl_menu_sle_cilinders' , '', 'SLE', 'appl/sle/cilinder_search.asp?backo=1', 0, 0, 'WEB_SLEBOF', 'W', '1'); -DEF_MENUITEM(1, 'lcl_menu_sle_toegangwie' , '', 'SLE', 'appl/sle/toegang_wie.asp?backo=1', 0, 0, 'WEB_SLEBOF', 'R', '0'); -DEF_MENUITEM(1, 'lcl_menu_sle_toegangwaar' , '', 'SLE', 'appl/sle/toegang_waar.asp?backo=1', 0, 0, 'WEB_SLEBOF', 'R', '0'); +DEF_MENUITEM(1, 'lcl_menu_sle_sleutels' , '', 'SLE', 'appl/sle/sleutel_search.asp?urole=bo', 0, 0, 'WEB_SLEBOF', 'W', '1'); +DEF_MENUITEM(1, 'lcl_menu_sle_cilinders' , '', 'SLE', 'appl/sle/cilinder_search.asp?urole=bo', 0, 0, 'WEB_SLEBOF', 'W', '1'); +DEF_MENUITEM(1, 'lcl_menu_sle_toegangwie' , '', 'SLE', 'appl/sle/toegang_wie.asp?urole=bo', 0, 0, 'WEB_SLEBOF', 'R', '0'); +DEF_MENUITEM(1, 'lcl_menu_sle_toegangwaar' , '', 'SLE', 'appl/sle/toegang_waar.asp?urole=bo', 0, 0, 'WEB_SLEBOF', 'R', '0'); DEF_MENUITEM(1, 'lcl_menu_ins_verbruik' , '', 'INS', 'appl/ins/consum_reg.asp', 0, 0, 'WEB_INSUSE', 'W', '1'); DEF_MENUITEM(1, 'lcl_menu_cnt_huurregister' , '', 'CNT', 'appl/cnt/cnt_huurmut_search.asp', 0, 0, 'WEB_CNTMAN', 'W', '1'); /*R?*/ // Te bereiken via bedrijf DEF_MENUITEM(1, 'lcl_menu_prs_diensten' , '', 'PRS', 'appl/prs/dienst_search.asp', 0, 0, 'WEB_RELMAN', 'W', '1'); diff --git a/FAC/FAC_PAC.SRC b/FAC/FAC_PAC.SRC index ad8af772..519f8ac4 100644 --- a/FAC/FAC_PAC.SRC +++ b/FAC/FAC_PAC.SRC @@ -1,6 +1,6 @@ #ifdef FAC -/* $Revision: 170 $ - * $Modtime: 4-12-09 10:08 $ +/* $Revision: 171 $ + * $Modtime: 8-12-09 15:00 $ */ /* @@ -2438,6 +2438,7 @@ CREATE OR REPLACE PACKAGE BODY fac AS AS lxmlnode fac_srtnotificatie.fac_srtnotificatie_xmlnode%TYPE; lcode fac_srtnotificatie.fac_srtnotificatie_code%TYPE; + lcode2 fac_srtnotificatie.fac_srtnotificatie_code%TYPE; loms fac_srtnotificatie.fac_srtnotificatie_oms%TYPE; bericht fac_srtnotificatie.fac_srtnotificatie_oms%TYPE; lreceiver fac_notificatie.prs_perslid_key_receiver%TYPE; @@ -2478,6 +2479,7 @@ CREATE OR REPLACE PACKAGE BODY fac AS lrefkey := prefkey; -- dan kunnen we bij reservering nog wijzigen bericht := ptracking_oms; -- als die leeg is zoeken we zelf + -- welk type? SELECT fac_srtnotificatie_xmlnode, fac_srtnotificatie_code, fac_srtnotificatie_oms INTO lxmlnode, lcode, loms @@ -2488,27 +2490,38 @@ CREATE OR REPLACE PACKAGE BODY fac AS CASE lxmlnode WHEN 'melding' THEN - IF ptracking_oms IS NULL + IF ptracking_oms IS NULL THEN - bericht := mld.mldsprintf(loms, prefkey); + bericht := mld.mldsprintf (loms, prefkey); END IF; + -- basisgegevens, de ontvanger enzo - SELECT m.prs_perslid_key, m.mld_stdmelding_key, m.mld_adres_key, m.mld_alg_locatie_key, - mld_disc_params_notify, stdm.mld_stdmelding_notify, d.ins_discipline_email - INTO lreceiver, lmld_stdmelding_key, lmld_adres_key, lalglocatiekey, - lnotify, lmnotify, lsender - FROM mld_melding m, mld_stdmelding stdm, ins_tab_discipline d, mld_disc_params mp - WHERE stdm.mld_stdmelding_key = m.mld_stdmelding_key - AND d.ins_discipline_key = stdm.mld_ins_discipline_key - AND mp.mld_ins_discipline_key = d.ins_discipline_key - AND m.mld_melding_key = prefkey; - - -- Deze notificatie gaat over een melding. Meldingen worden eventueel niet genotificeerd als + SELECT m.prs_perslid_key, + m.mld_stdmelding_key, + m.mld_adres_key, + m.mld_alg_locatie_key, + mld_disc_params_notify, + stdm.mld_stdmelding_notify, + d.ins_discipline_email + INTO lreceiver, + lmld_stdmelding_key, + lmld_adres_key, + lalglocatiekey, + lnotify, + lmnotify, + lsender + FROM mld_melding m, mld_stdmelding stdm, ins_tab_discipline d, mld_disc_params mp + WHERE stdm.mld_stdmelding_key = m.mld_stdmelding_key + AND d.ins_discipline_key = stdm.mld_ins_discipline_key + AND mp.mld_ins_discipline_key = d.ins_discipline_key + AND m.mld_melding_key = prefkey; + + -- Deze notificatie gaat over een melding. Meldingen worden eventueel niet genotificeerd als -- settings daartoe aanleiding geven. We weten genoeg om te checken of dat zo is IF (lnotify = 0 OR (lnotify = 2 AND lmnotify = 0)) - THEN - -- Nothing to do: disc says no OR disc says: see stdmelding and stdmelding says no - RETURN; + THEN + -- Nothing to do: disc says no OR disc says: see stdmelding and stdmelding says no + RETURN; END IF; IF lsender IS NULL @@ -2516,58 +2529,73 @@ CREATE OR REPLACE PACKAGE BODY fac AS -- (kennelijk) is de verantwoordelijke voor van het afleveradres iets sterker of zo IF lmld_adres_key IS NOT NULL THEN - SELECT l1.alg_locatie_email - INTO lsender - FROM mld_adres ma, alg_locatie l1 - WHERE ma.mld_adres_key = lmld_adres_key - AND ma.alg_locatie_key = l1.alg_locatie_key(+); - END IF; - - IF lsender IS NULL AND lalglocatiekey IS NOT NULL -- nog steeds onbekend - THEN - SELECT l2.alg_locatie_email - INTO lsender - FROM alg_locatie l2 - WHERE l2.alg_locatie_key = lalglocatiekey; - END IF; + SELECT l1.alg_locatie_email + INTO lsender + FROM mld_adres ma, alg_locatie l1 + WHERE ma.mld_adres_key = lmld_adres_key AND ma.alg_locatie_key = l1.alg_locatie_key(+); + END IF; + + IF lsender IS NULL AND lalglocatiekey IS NOT NULL -- nog steeds onbekend + THEN + SELECT l2.alg_locatie_email + INTO lsender + FROM alg_locatie l2 + WHERE l2.alg_locatie_key = lalglocatiekey; + END IF; END IF; WHEN 'opdracht' THEN - IF ptracking_oms IS NULL + IF ptracking_oms IS NULL THEN - bericht := mld.opdrsprintf(loms, prefkey); + bericht := mld.opdrsprintf (loms, prefkey); END IF; - -- In 4i notificeerden we alleen de uitvoerder + + -- In 4i notificeerden we alleen toekenning aan de uitvoerder -- In 5i tracken we veel meer, en is er dus ook de mogelijkheid -- tot notificeren van tracking - -- Echter: wie houden we hiervan nou actief op de hoogte? TODO - SELECT mld_uitvoerende_keys - INTO lreceiver - FROM mld_opdr - WHERE mld_opdr_key = prefkey; - - SELECT u.TYPE - INTO luitvtype - FROM mld_v_uitvoerende u - WHERE u.mld_uitvoerende_key = lreceiver; - - IF luitvtype = 'B' + -- Echter: wie houden we hiervan nou actief op de hoogte? + -- Dat wordt de interne contacpersoon van de opdracht + -- behalve ORDMLE/ORDMLI, die naar de uitvoerder + IF lcode IN ('ORDMLI', 'ORDMLE') THEN - -- Het gaat om een externe receiver - BEGIN - SELECT prs_bedrijf_email, prs_bedrijf_telefoon2 - INTO lemail, lphone - FROM prs_bedrijf - WHERE prs_bedrijf_key = lreceiver; - -- Hoe komen we derop: nooit op een portal voor externen - -- want dan zou iedereen die notificatie zien ivm lege receiver - -- dit overrulet dus iedere setting! - -- TODO smode := BITAND (smode, 255 - 1); - EXCEPTION - WHEN NO_DATA_FOUND - THEN - RETURN; - END; + SELECT mld_uitvoerende_keys + INTO lreceiver + FROM mld_opdr + WHERE mld_opdr_key = prefkey; + + SELECT u.TYPE + INTO luitvtype + FROM mld_v_uitvoerende u + WHERE u.mld_uitvoerende_key = lreceiver; + + IF luitvtype = 'B' + THEN + -- Het gaat om een externe receiver + BEGIN + SELECT prs_bedrijf_email, prs_bedrijf_telefoon2 + INTO lemail, lphone + FROM prs_bedrijf + WHERE prs_bedrijf_key = lreceiver; + + -- Nooit op een portal voor externen + -- want dan zou iedereen die notificatie zien ivm lege receiver + -- dit overrulet dus iedere setting! + -- TODO smode := BITAND (smode, 255 - 1); + -- voorkom dat er een bericht wordt gestuurd + -- aan een perslid_key als deze bedrijf_key + lreceiver := NULL; + EXCEPTION + WHEN NO_DATA_FOUND + THEN + RETURN; + END; + END IF; + ELSE + -- ons contactpersoon krijgt het bericht + SELECT prs_perslid_key + INTO lreceiver + FROM mld_opdr + WHERE mld_opdr_key = prefkey; END IF; -- de afzender @@ -2596,9 +2624,9 @@ CREATE OR REPLACE PACKAGE BODY fac AS END; WHEN 'reservering' THEN - IF ptracking_oms IS NULL + IF ptracking_oms IS NULL THEN - bericht := res.sprintf(loms, prefkey); + bericht := res.sprintf (loms, prefkey); END IF; SELECT res_rsv_ruimte_contact_key, res_ruimte_opstel_key, alg_ruimte_key, res_reservering_key @@ -2651,10 +2679,11 @@ CREATE OR REPLACE PACKAGE BODY fac AS lrefkey := lreskey; -- de hoofdreservering WHEN 'bestelling' THEN - IF ptracking_oms IS NULL + IF ptracking_oms IS NULL THEN - bericht := bes.bessprintf(loms, prefkey); + bericht := bes.bessprintf (loms, prefkey); END IF; + SELECT prs_perslid_key, mld_adres_key_lev INTO lreceiver, lmld_adres_key FROM bes_bestelling @@ -2693,10 +2722,11 @@ CREATE OR REPLACE PACKAGE BODY fac AS END; WHEN 'bestelopdr' THEN - IF ptracking_oms IS NULL + IF ptracking_oms IS NULL THEN - bericht := bes.opdrsprintf(loms, prefkey); + bericht := bes.opdrsprintf (loms, prefkey); END IF; + lreceiver := NULL; -- TODO aanvrager opsnorren SELECT prs_bedrijf_key @@ -2747,18 +2777,27 @@ CREATE OR REPLACE PACKAGE BODY fac AS END; WHEN 'afspraak' THEN - IF ptracking_oms IS NULL + IF ptracking_oms IS NULL THEN - bericht := bez.sprintf(loms, prefkey); + bericht := bez.sprintf (loms, prefkey); END IF; - -- TODO: we sturen soms TWEE notificaties, naar contact en host - -- Moeten dus kijken of psrtnotificatiekey naar BEZDON of BEZOUT wijst - -- Dan moeten we ook BEZDO2 of BEZOU2 versturen. + SELECT bez_afspraak_host_key, bez_afspraak_contact_key, alg_locatie_key INTO lreceiver, lreceiver2, lalglocatiekey FROM bez_afspraak WHERE bez_afspraak_key = prefkey; + -- We sturen soms TWEE notificaties, naar contact en host + -- Moeten dus kijken of psrtnotificatiekey naar BEZDON of BEZOUT wijst + -- Dan moeten we ook BEZDO2 of BEZOU2 versturen. + IF lcode = 'BEZDON' + THEN + lcode2 := 'BEZDO2'; + ELSIF lcode = 'BEZOUT' + THEN + lcode2 := 'BEZOU2'; + END IF; + -- afzender BEGIN SELECT l.alg_locatie_email @@ -2789,6 +2828,22 @@ CREATE OR REPLACE PACKAGE BODY fac AS 2, lsender ); + + IF lcode2 IS NOT NULL AND lreceiver2 IS NOT NULL + THEN + fac.putnotificationsrtprio (pperslid_key, + lreceiver2, + lcode2, + lrefkey, + bericht, + NULL, + NULL, + NULL, + lxrefkey, + 2, + lsender + ); + END IF; EXCEPTION WHEN NO_DATA_FOUND THEN