FSN#1433
svn path=/Database/trunk/; revision=9334
This commit is contained in:
156
BEZ/BEZ_TRI.SRC
156
BEZ/BEZ_TRI.SRC
@@ -1,8 +1,7 @@
|
||||
#ifdef BEZ // 03-11-2000 PF
|
||||
|
||||
/* REVISIONS:
|
||||
*
|
||||
* 03-11-20000 PF CREATION.
|
||||
/* $Revision: 9 $
|
||||
* $Modtime: 14-11-06 18:26 $
|
||||
*/
|
||||
|
||||
#include "comsql.h"
|
||||
@@ -74,5 +73,156 @@ BEGIN
|
||||
END;
|
||||
/
|
||||
|
||||
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;
|
||||
BEGIN
|
||||
-- Alleen registratie van globale mutaties; per bezoeker wordt ook genotificeerd
|
||||
IF :OLD.bez_afspraak_datum <> :NEW.bez_afspraak_datum
|
||||
OR :OLD.res_rsv_ruimte_key <> :NEW.res_rsv_ruimte_key
|
||||
OR :OLD.alg_onrgoed_keys <> :NEW.alg_onrgoed_keys
|
||||
THEN
|
||||
scode := 'BEZMUT';
|
||||
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## = ins_srtdiscipline_prefix+key+/+volgnr
|
||||
-- ##NAAM## = volledige naam van de afmelder
|
||||
IF INSTR2 (soms, '#') > 0
|
||||
THEN
|
||||
SELECT bez_afspraak_naam
|
||||
|| DECODE ((SELECT COUNT (*)
|
||||
FROM bez_bezoekers
|
||||
WHERE bez_afspraak_key = :NEW.bez_afspraak_key),
|
||||
1, '',
|
||||
'...'
|
||||
)
|
||||
INTO lbezoek
|
||||
FROM bez_bezoekers
|
||||
WHERE bez_afspraak_key = :NEW.bez_afspraak_key;
|
||||
|
||||
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 HH:MI')
|
||||
);
|
||||
END IF;
|
||||
|
||||
fac.putnotificationsrt (:NEW.prs_perslid_key, lreceiver, soms, scode, :NEW.bez_afspraak_key);
|
||||
END IF;
|
||||
END;
|
||||
END;
|
||||
/
|
||||
|
||||
CREATE_TRIGGER(bez_t_notificatie_afspraak_d)
|
||||
AFTER DELETE
|
||||
ON bez_afspraak
|
||||
FOR EACH ROW
|
||||
BEGIN
|
||||
fac.clrnotifications('BEZ%', :NEW.bez_afspraak_key);
|
||||
END;
|
||||
/
|
||||
|
||||
CREATE_TRIGGER(bez_t_notificatie_bezoekers)
|
||||
AFTER INSERT OR UPDATE
|
||||
ON bez_bezoekers
|
||||
FOR EACH ROW
|
||||
BEGIN
|
||||
DECLARE
|
||||
soms fac_srtnotificatie.fac_srtnotificatie_oms%TYPE;
|
||||
scode fac_srtnotificatie.fac_srtnotificatie_code%TYPE;
|
||||
lbezoek bez_bezoekers.bez_afspraak_naam%TYPE;
|
||||
lreceiver prs_perslid.prs_perslid_key%TYPE;
|
||||
lsender prs_perslid.prs_perslid_key%TYPE;
|
||||
ldatum DATE;
|
||||
BEGIN
|
||||
SELECT bez_afspraak_contact_key, bez_afspraak_datum, prs_perslid_key
|
||||
INTO lreceiver, ldatum, lsender
|
||||
FROM bez_afspraak
|
||||
WHERE bez_afspraak_key = :NEW.bez_afspraak_key;
|
||||
|
||||
IF :OLD.bez_bezoekers_key IS NULL
|
||||
THEN
|
||||
scode := 'BEZNEW';
|
||||
ELSIF :OLD.bez_bezoekers_done IS NULL
|
||||
AND :NEW.bez_bezoekers_done IS NOT NULL
|
||||
THEN
|
||||
scode := 'BEZDON';
|
||||
ELSIF :OLD.bez_bezoekers_out IS NULL
|
||||
AND :NEW.bez_bezoekers_out IS NOT NULL
|
||||
THEN
|
||||
scode := 'BEZOT';
|
||||
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
|
||||
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## = ins_srtdiscipline_prefix+key+/+volgnr
|
||||
-- ##NAAM## = volledige naam van de afmelder
|
||||
IF INSTR2 (soms, '#') > 0
|
||||
THEN
|
||||
lbezoek := :NEW.bez_afspraak_naam;
|
||||
soms :=
|
||||
REPLACE (REPLACE (REPLACE (soms, '##NAAM##', lbezoek),
|
||||
'##KEY##',
|
||||
NUMBER_TO_CHAR (:NEW.bez_afspraak_key)
|
||||
),
|
||||
'##DATUM##',
|
||||
DATE_TO_CHAR (ldatum, 'DD-MM-YY HH:MI')
|
||||
);
|
||||
END IF;
|
||||
|
||||
-- Note: de clear wist alle bezoekers bij deze afspraak, zodat er maar 1 regel overblijft.
|
||||
-- Indien hierin de naam van de bezoeker staat, is er de verdenking dat er iets niet goed is gegaan
|
||||
-- Alternatief is om de BEZNEW niet te notificeren, want reservering of afspraak doen dat al.
|
||||
-- We kunnen hier (diep in de trigger) niet kijken of er nog meer bezoekers zijn bij deze afspraak.
|
||||
fac.clrnotifications(scode, :NEW.bez_afspraak_key);
|
||||
fac.putnotificationsrt (lsender, lreceiver, soms, scode, :NEW.bez_afspraak_key);
|
||||
END IF;
|
||||
END;
|
||||
END;
|
||||
/
|
||||
|
||||
#endif // BEZ
|
||||
|
||||
Reference in New Issue
Block a user