UWVA#12769

svn path=/Database/trunk/; revision=9543
This commit is contained in:
Peter Feij
2007-06-13 15:25:38 +00:00
parent 7aabd2e55b
commit ea38393954
3 changed files with 67 additions and 38 deletions

View File

@@ -1,7 +1,7 @@
#ifdef BEZ // 03-11-2000 PF
/* $Revision: 22 $
* $Modtime: 11-04-07 11:56 $
/* $Revision: 23 $
* $Modtime: 13-06-07 17:23 $
*/
#include "comsql.h"
@@ -171,68 +171,91 @@ CREATE_TRIGGER(bez_t_notificatie_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;
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;
lsender prs_perslid.prs_perslid_key%TYPE;
ldatum DATE;
BEGIN
SELECT COALESCE(bez_afspraak_host_key, bez_afspraak_contact_key), bez_afspraak_datum, prs_perslid_key
INTO lreceiver, ldatum, lsender
SELECT bez_afspraak_host_key, bez_afspraak_contact_key, bez_afspraak_datum, prs_perslid_key
INTO lreceiver, lreceiver2, ldatum, lsender
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
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
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
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;
WHERE sn.fac_srtnotificatie_code = scode AND sn.fac_srtnotificatie_mode > 0;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
-- Nothing to do
RETURN;
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 INSTR2(soms, '#') > 0
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##',
NUMBER_TO_CHAR (:NEW.bez_afspraak_key)
),
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;
fac.putnotificationsrt (lsender, lreceiver, scode, :NEW.bez_afspraak_key, soms, NULL, NULL, NULL, NULL);
IF soms IS NOT NULL
THEN
fac.putnotificationsrt (lsender, lreceiver, scode, :NEW.bez_afspraak_key, soms, NULL, NULL, NULL, NULL);
END IF;
IF soms2 IS NOT NULL
THEN
fac.putnotificationsrt (lsender, lreceiver2, scode2, :NEW.bez_afspraak_key, soms2, NULL, NULL, NULL, NULL);
END IF;
END IF;
END;
END;