svn path=/Database/trunk/; revision=10176
This commit is contained in:
237
BEZ/BEZ_TRI.SRC
237
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
|
||||
|
||||
Reference in New Issue
Block a user