970 lines
35 KiB
Plaintext
970 lines
35 KiB
Plaintext
#ifdef MLD // 13-03-96 AH
|
|
/*
|
|
* $Revision: 51 $
|
|
* $Modtime: 15-01-07 14:51 $
|
|
*/
|
|
#include "comsql.h"
|
|
|
|
CREATE_TRIGGER(mld_t_mld_disc_params_b_iu)
|
|
BEFORE INSERT OR UPDATE ON mld_disc_params
|
|
FOR EACH ROW
|
|
BEGIN
|
|
UPDATE_PRIMARY_KEY(mld_disc_params_key, mld_s_mld_disc_params_key);
|
|
END;
|
|
/
|
|
|
|
CREATE_TRIGGER(mld_t_mld_oorzaak_B_IU)
|
|
BEFORE INSERT OR UPDATE ON mld_oorzaak
|
|
FOR EACH ROW
|
|
BEGIN
|
|
UPDATE_PRIMARY_KEY(mld_oorzaak_key,mld_s_mld_oorzaak_key);
|
|
UPDATE_UPPER(mld_oorzaak_omschrijving,mld_oorzaak_upper,mld_oorzaak);
|
|
END;
|
|
/
|
|
|
|
CREATE_TRIGGER(mld_t_mld_meldbron_B_IU)
|
|
BEFORE INSERT OR UPDATE ON mld_meldbron
|
|
FOR EACH ROW
|
|
BEGIN
|
|
UPDATE_PRIMARY_KEY(mld_meldbron_key,mld_s_mld_meldbron_key);
|
|
UPDATE_UPPER(mld_meldbron_omschrijving,mld_meldbron_upper,mld_meldbron);
|
|
END;
|
|
/
|
|
|
|
CREATE_TRIGGER(mld_t_mld_standaardopdr_B_IU)
|
|
BEFORE INSERT OR UPDATE ON mld_standaardopdr
|
|
FOR EACH ROW
|
|
BEGIN
|
|
UPDATE_PRIMARY_KEY(mld_standaardopdr_key,mld_s_mld_standaardopdr_key);
|
|
UPDATE_UPPER(mld_standaardopdr_afk,mld_standaardopdr_afk_upper,mld_standaardopdr);
|
|
END;
|
|
/
|
|
|
|
CREATE_TRIGGER(mld_t_mld_stdmelding_B_IU)
|
|
BEFORE INSERT OR UPDATE ON mld_stdmelding
|
|
FOR EACH ROW
|
|
BEGIN
|
|
UPDATE_PRIMARY_KEY(mld_stdmelding_key,mld_s_mld_stdmelding_key);
|
|
UPDATE_UPPER(mld_stdmelding_omschrijving,mld_stdmelding_upper,mld_stdmelding);
|
|
END;
|
|
/
|
|
|
|
CREATE_TRIGGER(mld_t_mld_typeopdr_B_IU)
|
|
BEFORE INSERT OR UPDATE ON mld_typeopdr
|
|
FOR EACH ROW
|
|
BEGIN
|
|
UPDATE_PRIMARY_KEY(mld_typeopdr_key,mld_s_mld_stdmelding_key);
|
|
UPDATE_UPPER(mld_typeopdr_omschrijving,mld_typeopdr_upper,mld_typeopdr);
|
|
END;
|
|
/
|
|
|
|
CREATE_TRIGGER(mld_t_mld_typeopdr_srtdi_B_IU)
|
|
BEFORE INSERT OR UPDATE ON mld_typeopdr_srtdiscipline
|
|
FOR EACH ROW
|
|
BEGIN
|
|
UPDATE_PRIMARY_KEY(mld_typeopdr_srtdiscipline_key,mld_s_mld_typeopdr_srtdisc);
|
|
END;
|
|
/
|
|
|
|
CREATE_TRIGGER(mld_t_mld_melding_B_IU)
|
|
BEFORE INSERT OR UPDATE ON mld_melding
|
|
FOR EACH ROW
|
|
BEGIN
|
|
UPDATE_PRIMARY_KEY(mld_melding_key, mld_s_mld_melding_key);
|
|
|
|
/* Vul het veld MLD_ALG_LOCATIE_KEY als de onroerendgoed_key wijzigd */
|
|
IF :new.mld_alg_onroerendgoed_keys <> 0 AND (:old.mld_alg_onroerendgoed_keys IS NULL
|
|
OR :old.mld_alg_onroerendgoed_keys <> :new.mld_alg_onroerendgoed_keys)
|
|
THEN
|
|
CHECK_REFERENCE_ONROERENDGOED(mld_alg_onroerendgoed_keys, 'alg_m090');
|
|
SELECT alg_locatie_key
|
|
INTO :NEW.mld_alg_locatie_key
|
|
FROM mld_v_onroerendgoed_locatie
|
|
WHERE alg_onroerendgoed_keys = :NEW.mld_alg_onroerendgoed_keys;
|
|
#ifdef MS_SQL
|
|
else
|
|
if :new.mld_alg_locatie_key is null then
|
|
APPLICATION_ERROR_GOTO(-20000,'mld_r_alg_locatie_key1')
|
|
end if
|
|
#endif
|
|
END IF;
|
|
IF :new.prs_perslid_key IS NULL
|
|
THEN
|
|
APPLICATION_ERROR_GOTO(-20000, 'mld_m233');
|
|
END IF;
|
|
IF :new.mld_melding_afgewezen IS NOT NULL
|
|
AND :new.mld_melding_geaccepteerd IS NOT NULL
|
|
THEN
|
|
APPLICATION_ERROR_GOTO(-20000, 'mld_m175');
|
|
END IF;
|
|
IF :new.mld_melding_verwerkt IS NOT NULL AND :old.mld_melding_verwerkt IS NULL THEN
|
|
-- De melding wordt nu verwerkt
|
|
IF :old.mld_melding_geaccepteerd IS NULL AND :old.mld_melding_afgemeld IS NULL THEN
|
|
APPLICATION_ERROR_GOTO(-20000, 'mld_m203');
|
|
ELSE
|
|
DECLARE
|
|
Dummy VARCHAR2(1);
|
|
BEGIN
|
|
SELECT 'X'
|
|
INTO dummy
|
|
FROM mld_opdr mld_o, mld_statusopdr mld_so
|
|
WHERE mld_o.mld_statusopdr_key = mld_so.mld_statusopdr_key
|
|
AND (mld_so.mld_statusopdr_upper = 'MLD_UITGEGEVEN' OR mld_so.mld_statusopdr_upper = 'MLD_AFGEMELD')
|
|
AND mld_o.mld_melding_key = :NEW.mld_melding_key;
|
|
APPLICATION_ERROR_GOTO(-20000, 'mld_m192');
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND
|
|
THEN NULL;
|
|
WHEN TOO_MANY_ROWS
|
|
THEN APPLICATION_ERROR_GOTO(-20000, 'mld_m192');
|
|
END;
|
|
END IF;
|
|
ELSIF :NEW.mld_melding_afgemeld IS NOT NULL AND :OLD.mld_melding_afgemeld IS NULL
|
|
THEN
|
|
-- De melding wordt nu afgemeld
|
|
IF :old.mld_melding_geaccepteerd IS NULL THEN
|
|
APPLICATION_ERROR_GOTO(-20000, 'mld_m202');
|
|
ELSIF :old.mld_melding_verwerkt IS NOT NULL THEN
|
|
APPLICATION_ERROR_GOTO(-20000, 'mld_m195');
|
|
END IF;
|
|
END IF;
|
|
|
|
IF :new.mld_melding_uitvoertijd2 IS NULL
|
|
THEN
|
|
:new.mld_melding_uitvoertijd2 := :new.mld_melding_uitvoertijd;
|
|
END IF;
|
|
-- Update melding status
|
|
IF :NEW.mld_melding_afgewezen IS NOT NULL
|
|
THEN
|
|
:NEW.mld_melding_status := 1;
|
|
ELSIF :NEW.mld_melding_verwerkt IS NOT NULL
|
|
THEN
|
|
:NEW.mld_melding_status := 6;
|
|
ELSIF :NEW.mld_melding_afgemeld IS NOT NULL
|
|
THEN
|
|
:NEW.mld_melding_status := 5;
|
|
ELSIF :NEW.mld_melding_geaccepteerd IS NOT NULL
|
|
THEN
|
|
DECLARE
|
|
ord_num NUMBER;
|
|
BEGIN
|
|
SELECT NVL (MIN (o.mld_statusopdr_key), 0)
|
|
INTO ord_num
|
|
FROM mld_opdr o
|
|
WHERE o.mld_melding_key = :NEW.mld_melding_key;
|
|
|
|
IF ord_num = 0
|
|
THEN
|
|
-- No orders: status = Accepted
|
|
:NEW.mld_melding_status := 4;
|
|
ELSIF ord_num = 5
|
|
THEN
|
|
-- Open orders: status = in progress
|
|
:NEW.mld_melding_status := 7;
|
|
ELSE
|
|
-- Only closed orders: status = Accepted again
|
|
:NEW.mld_melding_status := 4;
|
|
END IF;
|
|
END;
|
|
ELSIF :NEW.mld_melding_ingezien IS NOT NULL
|
|
THEN
|
|
:NEW.mld_melding_status := 3;
|
|
ELSE
|
|
:NEW.mld_melding_status := 2;
|
|
END IF;
|
|
|
|
END;
|
|
/
|
|
|
|
CREATE_TRIGGER(mld_t_mld_opdr_B_IU)
|
|
BEFORE INSERT OR UPDATE ON mld_opdr
|
|
FOR EACH ROW
|
|
BEGIN
|
|
UPDATE_PRIMARY_KEY(mld_opdr_key, mld_s_mld_opdr_key);
|
|
/* Controleer of de opdracht bij een melding hoort die de goede status heeft,
|
|
* namelijk: GEACCEPTEERD of AFGEMELD (minimaal GEACCEPTEERD),
|
|
* Zo niet, dan mag het alleen als de contract_key is ingevuld
|
|
*/
|
|
IF :NEW.mld_melding_key IS NOT NULL
|
|
THEN
|
|
DECLARE
|
|
dummy CHAR;
|
|
BEGIN
|
|
SELECT 'X'
|
|
INTO dummy
|
|
FROM mld_melding
|
|
WHERE mld_melding_key = :NEW.mld_melding_key
|
|
AND mld_melding_geaccepteerd IS NOT NULL
|
|
AND mld_melding_verwerkt IS NULL;
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND
|
|
THEN
|
|
IF :NEW.cnt_contract_key IS NULL
|
|
THEN
|
|
raise_application_error (-20000, 'mld_m201');
|
|
END IF;
|
|
END;
|
|
END IF;
|
|
CHECK_REFERENCE_UITVOERENDE(mld_uitvoerende_keys, 'mld_m37');
|
|
IF :NEW.mld_statusopdr_key = 7 AND :OLD.mld_statusopdr_key <> 7 AND :NEW.mld_opdr_verwerkt IS NULL
|
|
THEN
|
|
:NEW.mld_opdr_verwerkt := SYSDATE;
|
|
END IF;
|
|
END;
|
|
/
|
|
|
|
CREATE_TRIGGER(mld_t_mld_adres_B_IU)
|
|
BEFORE INSERT OR UPDATE ON mld_adres
|
|
FOR EACH ROW
|
|
BEGIN
|
|
UPDATE_PRIMARY_KEY(mld_adres_key, mld_s_mld_adres_key);
|
|
UPDATE_UPPER(mld_adres_naam, mld_adres_upper,mld_adres);
|
|
END;
|
|
/
|
|
|
|
CREATE_TRIGGER(mld_t_mld_vrije_dagen_b_iu)
|
|
BEFORE INSERT OR UPDATE ON mld_vrije_dagen
|
|
FOR EACH ROW
|
|
BEGIN
|
|
UPDATE_PRIMARY_KEY(mld_vrije_dagen_key, mld_s_mld_vrije_dagen_key);
|
|
/* Haal het tijdgedeelte van de ingevoerde datum af. */
|
|
:new.mld_vrije_dagen_datum := TRUNC_DATE(:new.mld_vrije_dagen_datum);
|
|
END;
|
|
/
|
|
|
|
CREATE_TRIGGER(mld_t_mld_mld_object_B_IU)
|
|
BEFORE INSERT OR UPDATE ON mld_melding_object
|
|
FOR EACH ROW
|
|
BEGIN
|
|
UPDATE_PRIMARY_KEY(mld_melding_object_key, mld_s_mld_object_key);
|
|
END;
|
|
/
|
|
|
|
CREATE_TRIGGER(mld_t_mld_refsrtkenmerk_b_iu)
|
|
BEFORE INSERT OR UPDATE ON mld_refsrtkenmerk
|
|
FOR EACH ROW
|
|
DECLARE
|
|
ObjectType USER_OBJECTS.OBJECT_TYPE%TYPE;
|
|
BEGIN
|
|
UPDATE_PRIMARY_KEY(mld_refsrtkenmerk_key, mld_s_mld_refsrtkenmerk_key);
|
|
UPDATE_UPPER(mld_refsrtkenmerk_omschrijving, mld_refsrtkenmerk_upper,mld_refsrtkenmerk);
|
|
UPDATE_AANMAAKDATUM(mld_refsrtkenmerk, mld_refsrtkenmerk_aanmaak);
|
|
--
|
|
-- Controleer of de ingevulde tablenaam, kolomnaam en kolomtxt
|
|
-- wel bestaan. Controle moet ook gebeuren als de omschrijving
|
|
-- is gewijzigd; de objectnaam is dan hetzelfde.
|
|
--
|
|
BEGIN
|
|
SELECT object_type
|
|
INTO ObjectType
|
|
FROM USER_OBJECTS
|
|
WHERE object_name = :new.mld_refsrtkenmerk_objectnaam;
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND THEN ObjectType := NULL;
|
|
END;
|
|
--
|
|
IF ObjectType IS NULL
|
|
THEN
|
|
raise_application_error(-20000, 'mld_m244');
|
|
ELSIF ObjectType = 'TABLE'
|
|
OR ObjectType = 'VIEW'
|
|
THEN
|
|
-- Bij een TABLE of VIEW staan de kolommen in USER_TAB_COLUMNS
|
|
-- Controleer of deze KOLOMNAAM en KOLOMTXT bestaan.
|
|
--
|
|
DECLARE
|
|
Dummy VARCHAR2(30);
|
|
BEGIN
|
|
SELECT column_name
|
|
INTO Dummy
|
|
FROM USER_TAB_COLUMNS
|
|
WHERE table_name = :new.mld_refsrtkenmerk_objectnaam
|
|
AND column_name = :new.mld_refsrtkenmerk_kolomnaam
|
|
AND data_type = 'NUMBER';
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND THEN raise_application_error(-20000, 'mld_m245');
|
|
END;
|
|
--
|
|
DECLARE
|
|
Dummy VARCHAR2(30);
|
|
BEGIN
|
|
SELECT column_name
|
|
INTO Dummy
|
|
FROM USER_TAB_COLUMNS
|
|
WHERE table_name = :new.mld_refsrtkenmerk_objectnaam
|
|
AND column_name = :new.mld_refsrtkenmerk_kolomtxt
|
|
AND data_type LIKE '%CHAR%';
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND THEN raise_application_error(-20000, 'mld_m246');
|
|
END;
|
|
ELSIF ObjectType <> 'SYNONYM'
|
|
THEN
|
|
-- Bij een SYNONYM kan er niet gecontroleerd worden
|
|
-- of de ingevulde kolommen bestaan.
|
|
--
|
|
/* NULL;
|
|
ELSE */
|
|
raise_application_error(-20000, 'mld_m244');
|
|
END IF;
|
|
END;
|
|
/
|
|
|
|
CREATE_TRIGGER(mld_t_mld_srtkenmerk_b_iu)
|
|
BEFORE INSERT OR UPDATE ON mld_srtkenmerk
|
|
FOR EACH ROW
|
|
BEGIN
|
|
UPDATE_PRIMARY_KEY(mld_srtkenmerk_key, mld_s_mld_srtkenmerk_key);
|
|
UPDATE_UPPER(mld_srtkenmerk_omschrijving, mld_srtkenmerk_upper,mld_srtkenmerk);
|
|
UPDATE_AANMAAKDATUM(mld_srtkenmerk, mld_srtkenmerk_aanmaak);
|
|
--
|
|
IF (:new.mld_srtkenmerk_kenmerktype = 'C'
|
|
OR :new.mld_srtkenmerk_kenmerktype = 'N')
|
|
AND :new.mld_srtkenmerk_lengte IS NULL
|
|
THEN
|
|
raise_application_error(-20000, 'MLD_C_MLD_SRTKENMERK_LENGTE');
|
|
END IF;
|
|
--
|
|
IF :new.mld_srtkenmerk_kenmerktype = 'N'
|
|
AND :old.mld_srtkenmerk_key IS NOT NULL
|
|
THEN
|
|
IF :old.mld_srtkenmerk_nmin <> :new.mld_srtkenmerk_nmin
|
|
OR (:old.mld_srtkenmerk_nmin IS NULL AND :new.mld_srtkenmerk_nmin IS NOT NULL)
|
|
THEN
|
|
DECLARE
|
|
Dummy CHAR;
|
|
BEGIN
|
|
SELECT 'X'
|
|
INTO Dummy
|
|
FROM mld_kenmerkmelding
|
|
WHERE FAC.SAFE_TO_NUMBER(mld_kenmerkmelding_waarde) < :new.mld_srtkenmerk_nmin
|
|
AND mld_kenmerk_key IN
|
|
(SELECT mld_kenmerk_key
|
|
FROM mld_kenmerk
|
|
WHERE mld_srtkenmerk_key = :old.mld_srtkenmerk_key
|
|
);
|
|
raise_application_error(-20000, 'MLD_C_MLD_SRTKENMERK_MIN');
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND
|
|
THEN NULL;
|
|
WHEN TOO_MANY_ROWS
|
|
THEN raise_application_error(-20000, 'MLD_C_MLD_SRTKENMERK_MIN');
|
|
END;
|
|
END IF;
|
|
--
|
|
IF :old.mld_srtkenmerk_nmax <> :new.mld_srtkenmerk_nmax
|
|
OR (:old.mld_srtkenmerk_nmax IS NULL AND :new.mld_srtkenmerk_nmax IS NOT NULL)
|
|
THEN
|
|
DECLARE
|
|
Dummy CHAR;
|
|
BEGIN
|
|
SELECT 'X'
|
|
INTO Dummy
|
|
FROM mld_kenmerkmelding
|
|
WHERE FAC.SAFE_TO_NUMBER(mld_kenmerkmelding_waarde) > :new.mld_srtkenmerk_nmax
|
|
AND mld_kenmerk_key IN
|
|
(SELECT mld_kenmerk_key
|
|
FROM mld_kenmerk
|
|
WHERE mld_srtkenmerk_key = :old.mld_srtkenmerk_key
|
|
);
|
|
raise_application_error(-20000, 'MLD_C_MLD_SRTKENMERK_MAX');
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND
|
|
THEN NULL;
|
|
WHEN TOO_MANY_ROWS
|
|
THEN raise_application_error(-20000, 'MLD_C_MLD_SRTKENMERK_MAX');
|
|
END;
|
|
END IF;
|
|
END IF;
|
|
END;
|
|
/
|
|
|
|
CREATE_TRIGGER(mld_t_mld_srtkenmerk_b_d)
|
|
BEFORE DELETE ON mld_srtkenmerk
|
|
FOR EACH ROW
|
|
BEGIN
|
|
IF :old.mld_srtkenmerk_systeem = 1
|
|
THEN
|
|
raise_application_error(-20003, 'MLD_C_MLD_SRTKENMERK_SYSTEEM');
|
|
END IF;
|
|
END;
|
|
/
|
|
|
|
CREATE_TRIGGER(mld_t_mld_kenmerk_b_iu)
|
|
BEFORE INSERT OR UPDATE ON mld_kenmerk
|
|
FOR EACH ROW
|
|
BEGIN
|
|
-- Een kenmerk mag niet verplicht worden gemaakt als er al
|
|
-- waarden ingevuld zijn en hij daarvoor niet verplicht was.
|
|
-- Dit is alleen bij wijzigen te controleren, doordat
|
|
-- de PrimaryKey niet NULL is.
|
|
--
|
|
IF :new.mld_kenmerk_key IS NOT NULL
|
|
AND :new.mld_kenmerk_verplicht IS NOT NULL
|
|
AND :old.mld_kenmerk_verplicht IS NULL
|
|
THEN
|
|
DECLARE
|
|
Dummy CHAR;
|
|
BEGIN
|
|
SELECT 'X'
|
|
INTO Dummy
|
|
FROM mld_kenmerkmelding
|
|
WHERE mld_kenmerk_key = :new.mld_kenmerk_key;
|
|
raise_application_error(-20004, 'MLD_C_MLD_KENMERK_VERPLICHT0');
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND
|
|
THEN NULL;
|
|
WHEN TOO_MANY_ROWS
|
|
THEN raise_application_error(-20004, 'MLD_C_MLD_KENMERK_VERPLICHT0');
|
|
END;
|
|
END IF;
|
|
--
|
|
UPDATE_PRIMARY_KEY(mld_kenmerk_key, mld_s_mld_kenmerk_key);
|
|
UPDATE_AANMAAKDATUM(mld_kenmerk, mld_kenmerk_aanmaak);
|
|
END;
|
|
/
|
|
|
|
CREATE_TRIGGER(mld_t_mld_kenmerkmelding_b_iu)
|
|
BEFORE INSERT OR UPDATE ON mld_kenmerkmelding
|
|
FOR EACH ROW
|
|
BEGIN
|
|
UPDATE_PRIMARY_KEY(mld_kenmerkmelding_key, mld_s_mld_kenmerkmelding_key);
|
|
-- Controleer eerst of de ingevulde waarde goed is.
|
|
--
|
|
IF :new.mld_kenmerkmelding_waarde <> :old.mld_kenmerkmelding_waarde
|
|
OR :old.mld_kenmerkmelding_waarde IS NULL
|
|
OR :new.mld_kenmerkmelding_waarde IS NULL
|
|
THEN
|
|
DECLARE
|
|
SrtKenmerkOmschr mld_srtkenmerk.mld_srtkenmerk_omschrijving%TYPE;
|
|
SrtKenmerkType mld_srtkenmerk.mld_srtkenmerk_kenmerktype%TYPE;
|
|
SrtKenmerkLengte mld_srtkenmerk.mld_srtkenmerk_lengte%TYPE;
|
|
SrtKenmerkDec mld_srtkenmerk.mld_srtkenmerk_dec%TYPE;
|
|
SrtKenmerkNMin mld_srtkenmerk.mld_srtkenmerk_nmin%TYPE;
|
|
SrtKenmerkNMax mld_srtkenmerk.mld_srtkenmerk_nmax%TYPE;
|
|
KenmerkVerplicht mld_kenmerk.mld_kenmerk_verplicht%TYPE;
|
|
RefSrtKenmerkKey NUMBER(10);
|
|
NumberWaarde NUMBER(15,5);
|
|
FormatMask VARCHAR2(60);
|
|
KenmerkMeldingWaarde mld_kenmerkmelding.mld_kenmerkmelding_waarde%TYPE;
|
|
BEGIN
|
|
KenmerkMeldingWaarde := :new.mld_kenmerkmelding_waarde;
|
|
--
|
|
SELECT MLD_SK.mld_srtkenmerk_omschrijving
|
|
, MLD_SK.mld_srtkenmerk_kenmerktype
|
|
, MLD_SK.mld_srtkenmerk_lengte
|
|
, MLD_SK.mld_srtkenmerk_dec
|
|
, MLD_SK.mld_srtkenmerk_nmin
|
|
, MLD_SK.mld_srtkenmerk_nmax
|
|
, MLD_SK.mld_refsrtkenmerk_key
|
|
, MLD_K.mld_kenmerk_verplicht
|
|
INTO SrtKenmerkOmschr
|
|
, SrtKenmerkType
|
|
, SrtKenmerkLengte
|
|
, SrtKenmerkDec
|
|
, SrtKenmerkNMin
|
|
, SrtKenmerkNMax
|
|
, RefSrtKenmerkKey
|
|
, KenmerkVerplicht
|
|
FROM mld_srtkenmerk MLD_SK
|
|
, mld_kenmerk MLD_K
|
|
WHERE MLD_SK.mld_srtkenmerk_key = MLD_K.mld_srtkenmerk_key
|
|
AND MLD_K.mld_kenmerk_key = :new.mld_kenmerk_key;
|
|
--
|
|
-- Controleer eerst of het verplichte veld ingevuld is.
|
|
--
|
|
IF KenmerkVerplicht IS NOT NULL AND KenmerkMeldingWaarde IS NULL
|
|
THEN
|
|
APPLICATION_ERROR_GOTO(-20004, 'mld_m240,'||SrtKenmerkOmschr);
|
|
--
|
|
-- Kijk welk KenmerkType gebruikt wordt.
|
|
-- Aan de hand daarvan moet een controle uitgevoerd worden.
|
|
--
|
|
ELSIF SrtKenmerkType = 'C'
|
|
THEN
|
|
-- CHAR
|
|
-- Controleer of de lengte te groot of goed is.
|
|
IF LENGTH(KenmerkMeldingWaarde) > SrtKenmerkLengte
|
|
THEN
|
|
APPLICATION_ERROR_GOTO(-20004, 'mld_m241,'||SrtKenmerkOmschr||','||TO_CHAR(SrtKenmerkLengte));
|
|
END IF;
|
|
ELSIF SrtKenmerkType = 'N'
|
|
THEN
|
|
-- NUMBER
|
|
-- Controleer of er een numerieke waarde ingevuld is.
|
|
IF SrtKenmerkDec IS NULL OR SrtKenmerkDec = 0
|
|
THEN
|
|
FormatMask := RPAD('9', SrtKenmerkLengte, '9');
|
|
ELSE
|
|
FormatMask := RPAD('9', SrtKenmerkLengte - SrtKenmerkDec, '9')||
|
|
'D'||RPAD('9', SrtKenmerkDec, '9');
|
|
END IF;
|
|
--
|
|
BEGIN
|
|
#ifdef MS_SQL
|
|
DECLARE isnum smallint;
|
|
isnum := WEB.IsNumberString(@KenmerkMeldingWaarde)
|
|
if isnum = -1 GOTO lcontinue
|
|
if isnum = 0 BEGIN
|
|
FormatMask := REPLACE(FormatMask, '9', '#');
|
|
FormatMask := REPLACE(FormatMask, '0', '#');
|
|
FormatMask := REPLACE(FormatMask, 'D', '.');
|
|
APPLICATION_ERROR_GOTO(-20004,'mld_m242,'||SrtKenmerkOmschr||','||FormatMask);
|
|
END;
|
|
#endif
|
|
NumberWaarde := TO_NUMBER(KenmerkMeldingWaarde);
|
|
#ifndef MS_SQL
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN FormatMask := REPLACE(FormatMask, '9', '#');
|
|
FormatMask := REPLACE(FormatMask, '0', '#');
|
|
FormatMask := REPLACE(FormatMask, 'D', '.');
|
|
raise_application_error(-20004,'mld_m242,'||SrtKenmerkOmschr||','||FormatMask);
|
|
#endif
|
|
END;
|
|
-- Controleer of de waarde binnen NMin en NMax ligt.
|
|
IF (SrtKenmerkNMin IS NOT NULL AND NumberWaarde < SrtKenmerkNMin)
|
|
OR (SrtKenmerkNMax IS NOT NULL AND NumberWaarde > SrtKenmerkNMax)
|
|
THEN
|
|
APPLICATION_ERROR_GOTO(-20004, 'mld_m243,'||SrtKenmerkOmschr||','||
|
|
TO_CHAR(SrtKenmerkNMin)||','||
|
|
TO_CHAR(SrtKenmerkNMax));
|
|
ELSE
|
|
-- Controleer of de waarde aan het formaat voldoet.
|
|
KenmerkMeldingWaarde := LTRIM(NUMBER_TO_CHAR(NumberWaarde, FormatMask));
|
|
IF INSTR2(KenmerkMeldingWaarde, '#') <> 0
|
|
THEN
|
|
FormatMask := REPLACE(FormatMask, '9', '#');
|
|
FormatMask := REPLACE(FormatMask, '0', '#');
|
|
FormatMask := REPLACE(FormatMask, 'D', '.');
|
|
APPLICATION_ERROR_GOTO(-20004,'mld_m242,'||SrtKenmerkOmschr||','||FormatMask);
|
|
END IF;
|
|
END IF;
|
|
-- Zet de geconverteerde waarde terug.
|
|
:new.mld_kenmerkmelding_waarde := KenmerkMeldingWaarde;
|
|
ELSIF SrtKenmerkType = 'D'
|
|
THEN
|
|
-- DATUM
|
|
#ifdef MS_SQL
|
|
DECLARE isdat smallint;
|
|
isdat := WEB.IsDateString(@KenmerkMeldingWaarde,'DD-MM-YYYY')
|
|
if isdat = -1 GOTO lcontinue
|
|
if isdat = 0 BEGIN
|
|
FormatMask := 'DD-MM-YYYY';
|
|
APPLICATION_ERROR_GOTO(-20004,'mld_m242,'||SrtKenmerkOmschr||','||FormatMask);
|
|
END;
|
|
#endif
|
|
KenmerkMeldingWaarde := DATE_TO_CHAR(_TO_DATE2(KenmerkMeldingWaarde,'DD-MM-YY'),'DD-MM-YYYY');
|
|
-- Zet de geconverteerde waarde terug.
|
|
:new.mld_kenmerkmelding_waarde := KenmerkMeldingWaarde;
|
|
END IF;
|
|
END;
|
|
#ifdef MS_SQL
|
|
lcontinue:
|
|
#endif
|
|
END IF;
|
|
END;
|
|
/
|
|
|
|
CREATE_TRIGGER(mld_t_mld_kenmerkopdr_b_iu)
|
|
BEFORE INSERT OR UPDATE ON mld_kenmerkopdr
|
|
FOR EACH ROW
|
|
BEGIN
|
|
UPDATE_PRIMARY_KEY(mld_kenmerkopdr_key, mld_s_mld_kenmerkopdr_key);
|
|
-- Controleer eerst of de ingevulde waarde goed is.
|
|
--
|
|
IF :new.mld_kenmerkopdr_waarde <> :old.mld_kenmerkopdr_waarde
|
|
OR :old.mld_kenmerkopdr_waarde IS NULL
|
|
OR :new.mld_kenmerkopdr_waarde IS NULL
|
|
THEN
|
|
DECLARE
|
|
SrtKenmerkOmschr mld_srtkenmerk.mld_srtkenmerk_omschrijving%TYPE;
|
|
SrtKenmerkType mld_srtkenmerk.mld_srtkenmerk_kenmerktype%TYPE;
|
|
SrtKenmerkLengte mld_srtkenmerk.mld_srtkenmerk_lengte%TYPE;
|
|
SrtKenmerkDec mld_srtkenmerk.mld_srtkenmerk_dec%TYPE;
|
|
SrtKenmerkNMin mld_srtkenmerk.mld_srtkenmerk_nmin%TYPE;
|
|
SrtKenmerkNMax mld_srtkenmerk.mld_srtkenmerk_nmax%TYPE;
|
|
KenmerkVerplicht mld_kenmerk.mld_kenmerk_verplicht%TYPE;
|
|
RefSrtKenmerkKey NUMBER(10);
|
|
NumberWaarde NUMBER(15,5);
|
|
FormatMask VARCHAR2(60);
|
|
KenmerkOpdrWaarde mld_kenmerkopdr.mld_kenmerkopdr_waarde%TYPE;
|
|
BEGIN
|
|
KenmerkOpdrWaarde := :new.mld_kenmerkopdr_waarde;
|
|
--
|
|
SELECT MLD_SK.mld_srtkenmerk_omschrijving
|
|
, MLD_SK.mld_srtkenmerk_kenmerktype
|
|
, MLD_SK.mld_srtkenmerk_lengte
|
|
, MLD_SK.mld_srtkenmerk_dec
|
|
, MLD_SK.mld_srtkenmerk_nmin
|
|
, MLD_SK.mld_srtkenmerk_nmax
|
|
, MLD_SK.mld_refsrtkenmerk_key
|
|
, MLD_K.mld_kenmerk_verplicht
|
|
INTO SrtKenmerkOmschr
|
|
, SrtKenmerkType
|
|
, SrtKenmerkLengte
|
|
, SrtKenmerkDec
|
|
, SrtKenmerkNMin
|
|
, SrtKenmerkNMax
|
|
, RefSrtKenmerkKey
|
|
, KenmerkVerplicht
|
|
FROM mld_srtkenmerk MLD_SK
|
|
, mld_kenmerk MLD_K
|
|
WHERE MLD_SK.mld_srtkenmerk_key = MLD_K.mld_srtkenmerk_key
|
|
AND MLD_K.mld_kenmerk_key = :new.mld_kenmerk_key;
|
|
--
|
|
-- Controleer eerst of het verplichte veld ingevuld is.
|
|
--
|
|
IF KenmerkVerplicht IS NOT NULL AND KenmerkOpdrWaarde IS NULL
|
|
THEN
|
|
APPLICATION_ERROR_GOTO(-20004, 'mld_m240,'||SrtKenmerkOmschr);
|
|
--
|
|
-- Kijk welk KenmerkType gebruikt wordt.
|
|
-- Aan de hand daarvan moet een controle uitgevoerd worden.
|
|
--
|
|
ELSIF SrtKenmerkType = 'C'
|
|
THEN
|
|
-- CHAR
|
|
-- Controleer of de lengte te groot of goed is.
|
|
IF LENGTH(KenmerkOpdrWaarde) > SrtKenmerkLengte
|
|
THEN
|
|
APPLICATION_ERROR_GOTO(-20004, 'mld_m241,'||SrtKenmerkOmschr||','||TO_CHAR(SrtKenmerkLengte));
|
|
END IF;
|
|
ELSIF SrtKenmerkType = 'N'
|
|
THEN
|
|
-- NUMBER
|
|
-- Controleer of er een numerieke waarde ingevuld is.
|
|
IF SrtKenmerkDec IS NULL OR SrtKenmerkDec = 0
|
|
THEN
|
|
FormatMask := RPAD('9', SrtKenmerkLengte, '9');
|
|
ELSE
|
|
FormatMask := RPAD('9', SrtKenmerkLengte - SrtKenmerkDec, '9')||
|
|
'D'||RPAD('9', SrtKenmerkDec, '9');
|
|
END IF;
|
|
--
|
|
BEGIN
|
|
#ifdef MS_SQL
|
|
DECLARE isnum smallint;
|
|
isnum := WEB.IsNumberString(@KenmerkOpdrWaarde)
|
|
if isnum = -1 GOTO lcontinue
|
|
if isnum = 0 BEGIN
|
|
FormatMask := REPLACE(FormatMask, '9', '#');
|
|
FormatMask := REPLACE(FormatMask, '0', '#');
|
|
FormatMask := REPLACE(FormatMask, 'D', '.');
|
|
APPLICATION_ERROR_GOTO(-20004,'mld_m242,'||SrtKenmerkOmschr||','||FormatMask);
|
|
END;
|
|
#endif
|
|
NumberWaarde := TO_NUMBER(KenmerkOpdrWaarde);
|
|
#ifndef MS_SQL
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN FormatMask := REPLACE(FormatMask, '9', '#');
|
|
FormatMask := REPLACE(FormatMask, '0', '#');
|
|
FormatMask := REPLACE(FormatMask, 'D', '.');
|
|
raise_application_error(-20004,'mld_m242,'||SrtKenmerkOmschr||','||FormatMask);
|
|
#endif
|
|
END;
|
|
-- Controleer of de waarde binnen NMin en NMax ligt.
|
|
IF (SrtKenmerkNMin IS NOT NULL AND NumberWaarde < SrtKenmerkNMin)
|
|
OR (SrtKenmerkNMax IS NOT NULL AND NumberWaarde > SrtKenmerkNMax)
|
|
THEN
|
|
APPLICATION_ERROR_GOTO(-20004, 'mld_m243,'||SrtKenmerkOmschr||','||
|
|
TO_CHAR(SrtKenmerkNMin)||','||
|
|
TO_CHAR(SrtKenmerkNMax));
|
|
ELSE
|
|
-- Controleer of de waarde aan het formaat voldoet.
|
|
KenmerkOpdrWaarde := LTRIM(NUMBER_TO_CHAR(NumberWaarde, FormatMask));
|
|
IF INSTR2(KenmerkOpdrWaarde, '#') <> 0
|
|
THEN
|
|
FormatMask := REPLACE(FormatMask, '9', '#');
|
|
FormatMask := REPLACE(FormatMask, '0', '#');
|
|
FormatMask := REPLACE(FormatMask, 'D', '.');
|
|
APPLICATION_ERROR_GOTO(-20004,'mld_m242,'||SrtKenmerkOmschr||','||FormatMask);
|
|
END IF;
|
|
END IF;
|
|
-- Zet de geconverteerde waarde terug.
|
|
:new.mld_kenmerkopdr_waarde := KenmerkOpdrWaarde;
|
|
ELSIF SrtKenmerkType = 'D'
|
|
THEN
|
|
-- DATUM
|
|
#ifdef MS_SQL
|
|
DECLARE isdat smallint;
|
|
isdat := WEB.IsDateString(@KenmerkOpdrWaarde,'DD-MM-YYYY')
|
|
if isdat = -1 GOTO lcontinue
|
|
if isdat = 0 BEGIN
|
|
FormatMask := 'DD-MM-YYYY';
|
|
APPLICATION_ERROR_GOTO(-20004,'mld_m242,'||SrtKenmerkOmschr||','||FormatMask);
|
|
END;
|
|
#endif
|
|
KenmerkOpdrWaarde := DATE_TO_CHAR(_TO_DATE2(KenmerkOpdrWaarde,'DD-MM-YY'),'DD-MM-YYYY');
|
|
-- Zet de geconverteerde waarde terug.
|
|
:new.mld_kenmerkopdr_waarde := KenmerkOpdrWaarde;
|
|
END IF;
|
|
END;
|
|
#ifdef MS_SQL
|
|
lcontinue:
|
|
#endif
|
|
END IF;
|
|
END;
|
|
/
|
|
|
|
/* Workflow triggers */
|
|
CREATE_TRIGGER(mld_t_mld_workflowstep_B_IU)
|
|
BEFORE INSERT OR UPDATE ON mld_workflowstep
|
|
FOR EACH ROW
|
|
BEGIN
|
|
UPDATE_PRIMARY_KEY(mld_workflowstep_key,mld_s_mld_workflowstep_key);
|
|
END;
|
|
/
|
|
|
|
CREATE_TRIGGER(mld_t_mld_workflowrule_B_IU)
|
|
BEFORE INSERT OR UPDATE ON mld_workflowrule
|
|
FOR EACH ROW
|
|
BEGIN
|
|
UPDATE_PRIMARY_KEY(mld_workflowrule_key,mld_s_mld_workflowrule_key);
|
|
END;
|
|
/
|
|
|
|
|
|
/* checks type of complain status change
|
|
* and generates correspondent notification if active
|
|
*/
|
|
|
|
CREATE_TRIGGER(mld_t_notificatie_melding)
|
|
AFTER INSERT OR UPDATE
|
|
ON mld_melding
|
|
FOR EACH ROW
|
|
BEGIN
|
|
DECLARE
|
|
soms fac_srtnotificatie.fac_srtnotificatie_oms%TYPE;
|
|
scode fac_srtnotificatie.fac_srtnotificatie_code%TYPE;
|
|
varstdmld mld_stdmelding.mld_stdmelding_omschrijving%TYPE;
|
|
vardisc ins_tab_discipline.ins_discipline_omschrijving%TYPE;
|
|
varsrtdisc ins_srtdiscipline.ins_srtdiscipline_prefix%TYPE;
|
|
lreceiver prs_perslid.prs_perslid_key%TYPE;
|
|
varplaats alg_v_plaatsaanduiding_all.alg_plaatsaanduiding%TYPE;
|
|
BEGIN
|
|
-- Ontvanger is voor alle events gelijk, de aanvrager.
|
|
lreceiver := :NEW.prs_perslid_key;
|
|
|
|
IF :OLD.mld_melding_datum IS NULL AND :NEW.mld_melding_datum IS NOT NULL
|
|
THEN
|
|
scode := 'MLDNEW';
|
|
ELSIF :OLD.mld_melding_afgewezen IS NULL AND :NEW.mld_melding_afgewezen IS NOT NULL
|
|
THEN
|
|
scode := 'MLDREJ';
|
|
ELSIF :OLD.mld_melding_ingezien IS NULL AND :NEW.mld_melding_ingezien IS NOT NULL
|
|
THEN
|
|
scode := 'MLDING';
|
|
ELSIF :OLD.mld_melding_geaccepteerd IS NULL AND :NEW.mld_melding_geaccepteerd IS NOT NULL
|
|
THEN
|
|
scode := 'MLDACP';
|
|
ELSIF :OLD.mld_melding_verwerkt IS NULL AND :NEW.mld_melding_verwerkt IS NOT NULL
|
|
THEN
|
|
scode := 'MLDVER';
|
|
ELSIF :OLD.mld_melding_afgemeld IS NULL AND :NEW.mld_melding_afgemeld IS NOT NULL
|
|
THEN
|
|
scode := 'MLDAFM';
|
|
ELSIF :OLD.mld_alg_onroerendgoed_keys <> :NEW.mld_alg_onroerendgoed_keys
|
|
OR :OLD.mld_melding_omschrijving <> :NEW.mld_melding_omschrijving
|
|
OR :OLD.mld_melding_opmerking <> :NEW.mld_melding_opmerking
|
|
OR (:OLD.mld_melding_opmerking IS NULL AND :NEW.mld_melding_opmerking IS NOT NULL)
|
|
OR :OLD.mld_melding_uitvoertijd <> :NEW.mld_melding_uitvoertijd
|
|
OR :OLD.mld_melding_ordernr <> :NEW.mld_melding_ordernr
|
|
OR :OLD.prs_kostenplaats_key <> :NEW.prs_kostenplaats_key
|
|
OR :OLD.mld_adres_key <> :NEW.mld_adres_key
|
|
THEN
|
|
-- alleen bovenstaande wijzigingen worden hiervoor relevant geacht
|
|
-- wordt dus niet gesignaleerd als oud of nieuw leeg was(!), behoudens opmerking
|
|
scode := 'MLDUPD';
|
|
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
|
|
-- ##DISC## = ins_discipline_omschrijving
|
|
-- ##STDMLD## = mld_stdmelding_omschrijving
|
|
-- ##KEY## = ins_srtdiscipline_prefix+key
|
|
-- ##PLAATS## = praatsaanduidig van plaats service
|
|
IF INSTR2(soms, '#') > 0
|
|
THEN
|
|
SELECT stdm.mld_stdmelding_omschrijving, d.ins_discipline_omschrijving, sd.ins_srtdiscipline_prefix
|
|
INTO varstdmld, vardisc, varsrtdisc
|
|
FROM mld_stdmelding stdm, ins_tab_discipline d, ins_srtdiscipline sd
|
|
WHERE d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
|
|
AND stdm.mld_ins_discipline_key = d.ins_discipline_key
|
|
AND stdm.mld_stdmelding_key = :NEW.mld_stdmelding_key;
|
|
|
|
soms :=
|
|
REPLACE (REPLACE (REPLACE (soms, '##DISC##', vardisc), '##STDMLD##', varstdmld),
|
|
'##KEY##',
|
|
varsrtdisc || TO_CHAR (:NEW.mld_melding_key)
|
|
);
|
|
IF INSTR2(soms, '#') > 0
|
|
THEN
|
|
SELECT NVL(alg_plaatsaanduiding, '')
|
|
INTO varplaats
|
|
FROM alg_v_plaatsaanduiding_all p
|
|
WHERE p.alg_onroerendgoed_keys = :new.mld_alg_onroerendgoed_keys;
|
|
soms := REPLACE(soms, '##PLAATS##', varplaats);
|
|
END IF;
|
|
END IF;
|
|
|
|
-- Stuur notificatie naar de aanvrager
|
|
fac.putnotificationsrt (:NEW.mld_melding_user_key, lreceiver, scode, :NEW.mld_melding_key, soms, NULL, NULL, NULL, NULL);
|
|
END IF;
|
|
END;
|
|
END;
|
|
/
|
|
|
|
/* Formatted on 2006/11/21 14:04 (Formatter Plus v4.8.5) */
|
|
CREATE_TRIGGER(mld_t_notificatie_opdr)
|
|
AFTER INSERT OR UPDATE
|
|
ON mld_opdr
|
|
FOR EACH ROW
|
|
BEGIN
|
|
DECLARE
|
|
soms fac_srtnotificatie.fac_srtnotificatie_oms%TYPE;
|
|
scode fac_srtnotificatie.fac_srtnotificatie_code%TYPE;
|
|
varstdmld mld_stdmelding.mld_stdmelding_omschrijving%TYPE;
|
|
vardisc ins_tab_discipline.ins_discipline_omschrijving%TYPE;
|
|
lafmelder prs_v_perslid_fullnames_all.prs_perslid_naam_full%TYPE;
|
|
varsrtdisc ins_srtdiscipline.ins_srtdiscipline_prefix%TYPE;
|
|
varspoed mld_melding.mld_melding_spoed%TYPE;
|
|
lreceiver prs_perslid.prs_perslid_key%TYPE;
|
|
luitvtype mld_v_uitvoerende.TYPE%TYPE;
|
|
lemail prs_bedrijf.prs_bedrijf_email%TYPE;
|
|
lphone prs_bedrijf.prs_bedrijf_telefoon2%TYPE;
|
|
BEGIN
|
|
lreceiver := :NEW.mld_uitvoerende_keys;
|
|
lemail := NULL;
|
|
lphone := NULL;
|
|
-- Opdracht wordt afgemeld
|
|
SELECT u.TYPE
|
|
INTO luitvtype
|
|
FROM mld_v_uitvoerende u
|
|
WHERE u.mld_uitvoerende_key = :NEW.mld_uitvoerende_keys;
|
|
|
|
IF :NEW.mld_statusopdr_key = 6 AND :OLD.mld_statusopdr_key <> 6
|
|
THEN
|
|
IF luitvtype = 'P' AND :NEW.mld_opdr_afgemeld_user <> :NEW.mld_uitvoerende_keys
|
|
THEN
|
|
-- afgemeld, maar niet door mezelf (ik hoef geen notificatie zei ooit iemand)
|
|
-- voor externe uitvoerenden (B) notificeren we niet
|
|
scode := 'ORDAFM';
|
|
END IF;
|
|
ELSIF :NEW.mld_statusopdr_key = 5 AND :OLD.mld_statusopdr_key <> 5
|
|
THEN
|
|
-- toegekend/uitgegeven
|
|
IF luitvtype = 'P' THEN
|
|
scode := 'ORDMLI';
|
|
ELSE
|
|
scode := 'ORDMLE';
|
|
lreceiver := NULL; -- maar een extern bedrijf
|
|
END IF;
|
|
ELSIF :NEW.mld_statusopdr_key = 4 AND :OLD.mld_statusopdr_key <> 4
|
|
THEN
|
|
-- gefiatteerd
|
|
scode := 'ORDACP';
|
|
ELSIF :NEW.mld_statusopdr_key = 1 AND :OLD.mld_statusopdr_key <> 1
|
|
THEN
|
|
-- afgewezen
|
|
scode := 'ORDREJ';
|
|
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
|
|
-- ##DISC## = ins_discipline_omschrijving
|
|
-- ##STDMLD## = mld_stdmelding_omschrijving
|
|
-- ##DESC## = mld_opdr_omschrijving (tbv SMS)
|
|
-- ##SPOED## = 'SPOED' indien spoed, anders ''
|
|
IF INSTR2(soms, '#') > 0
|
|
THEN
|
|
SELECT prs_perslid_naam_full
|
|
INTO lafmelder
|
|
FROM prs_v_perslid_fullnames_all
|
|
WHERE prs_perslid_key = lreceiver;
|
|
|
|
SELECT stdm.mld_stdmelding_omschrijving, d.ins_discipline_omschrijving, sd.ins_srtdiscipline_prefix, m.mld_melding_spoed
|
|
INTO varstdmld, vardisc, varsrtdisc, varspoed
|
|
FROM mld_melding m, mld_stdmelding stdm, ins_tab_discipline d, ins_srtdiscipline sd
|
|
WHERE d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
|
|
AND stdm.mld_ins_discipline_key = d.ins_discipline_key
|
|
AND stdm.mld_stdmelding_key = m.mld_stdmelding_key
|
|
AND m.mld_melding_key = :NEW.mld_melding_key;
|
|
|
|
soms :=
|
|
REPLACE (REPLACE (REPLACE (REPLACE (REPLACE (soms, '##NAAM##', lafmelder),
|
|
'##KEY##',
|
|
varsrtdisc
|
|
|| TO_CHAR (:NEW.mld_melding_key)
|
|
|| '/'
|
|
|| TO_CHAR (:NEW.mld_opdr_bedrijfopdr_volgnr)
|
|
),
|
|
'##DISC##',
|
|
vardisc
|
|
),
|
|
'##STDMLD##',
|
|
varstdmld
|
|
),
|
|
'##DESC##',
|
|
:NEW.mld_opdr_omschrijving
|
|
);
|
|
|
|
IF varspoed = 1
|
|
THEN
|
|
soms := REPLACE (soms, '##SPOED##', '(SPOED)');
|
|
ELSE
|
|
soms := REPLACE (soms, '##SPOED##', '');
|
|
END IF;
|
|
END IF;
|
|
|
|
IF lreceiver IS NULL 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=:new.mld_uitvoerende_keys;
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND
|
|
THEN
|
|
RETURN;
|
|
END;
|
|
END IF;
|
|
-- Stuur notificatie naar de uitvoerende (vooralsnog intern)
|
|
fac.putnotificationsrt (:NEW.mld_opdr_afgemeld_user, lreceiver, scode, :NEW.mld_opdr_key, soms, NULL, lemail, lphone, NULL);
|
|
END IF;
|
|
END;
|
|
END;
|
|
/
|
|
|
|
|
|
#endif // MLD
|