284 lines
9.4 KiB
Plaintext
284 lines
9.4 KiB
Plaintext
#ifdef BEZ // 03-11-2000 PF
|
|
/* $Revision: 35 $
|
|
* $Modtime: 26-03-12 11:35 $
|
|
*/
|
|
|
|
CREATE_TRIGGER(bez_t_bez_afspraak_B_IU)
|
|
BEFORE INSERT OR UPDATE ON bez_afspraak
|
|
FOR EACH ROW
|
|
DECLARE dummy NUMBER;
|
|
BEGIN
|
|
UPDATE_PRIMARY_KEY(bez_afspraak_key,bez_s_bez_afspraak_key);
|
|
|
|
dummy := :new.bez_afspraak_key;
|
|
|
|
IF :new.bez_afspraak_contact_key IS NULL AND :new.prs_perslid_key IS NOT NULL THEN
|
|
:new.bez_afspraak_contact_key := :new.prs_perslid_key;
|
|
END IF;
|
|
|
|
IF :new.bez_afspraak_host_key IS NULL AND :new.bez_afspraak_gastheer IS NULL THEN
|
|
:new.bez_afspraak_host_key := :new.bez_afspraak_contact_key;
|
|
END IF;
|
|
IF :new.bez_afspraak_host_key IS NOT NULL THEN
|
|
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;
|
|
END IF;
|
|
IF :new.alg_onrgoed_keys IS NOT NULL THEN
|
|
BEGIN
|
|
SELECT SUBSTR (alg_plaatsaanduiding, 1, 30)
|
|
INTO :NEW.bez_afspraak_ruimte
|
|
FROM alg_v_plaatsaanduiding_all
|
|
WHERE alg_onroerendgoed_keys = :NEW.alg_onrgoed_keys AND alg_onroerendgoed_type <> 'L';
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
:NEW.bez_afspraak_ruimte := SUBSTR ('*' || :NEW.bez_afspraak_ruimte, 1, 30);
|
|
END;
|
|
END IF;
|
|
END;
|
|
/
|
|
|
|
CREATE_TRIGGER(bez_t_bez_afspraak_d)
|
|
AFTER DELETE
|
|
ON bez_afspraak
|
|
FOR EACH ROW
|
|
BEGIN
|
|
DELETE FROM bez_bezoekers WHERE bez_afspraak_key=:OLD.bez_afspraak_key;
|
|
END;
|
|
/
|
|
|
|
CREATE_TRIGGER(bez_t_bez_bezoekers_B_IU)
|
|
BEFORE INSERT OR UPDATE ON bez_bezoekers
|
|
FOR EACH ROW
|
|
BEGIN
|
|
UPDATE_PRIMARY_KEY(bez_bezoekers_key,bez_s_bez_bezoekers_key);
|
|
END;
|
|
/
|
|
|
|
CREATE_TRIGGER(bez_t_bez_actie_B_IU)
|
|
BEFORE INSERT OR UPDATE ON bez_actie
|
|
FOR EACH ROW
|
|
BEGIN
|
|
UPDATE_PRIMARY_KEY(bez_actie_key,bez_s_bez_actie_key);
|
|
END;
|
|
/
|
|
|
|
CREATE_TRIGGER(bez_t_notificatie_afspraak_d)
|
|
AFTER DELETE
|
|
ON bez_afspraak
|
|
FOR EACH ROW
|
|
BEGIN
|
|
fac.clrnotifications('BEZ%', :OLD.bez_afspraak_key);
|
|
END;
|
|
/
|
|
|
|
|
|
|
|
|
|
|
|
CREATE_TRIGGER(bez_t_bez_kenmerk_b_iu)
|
|
BEFORE INSERT OR UPDATE ON bez_kenmerk
|
|
FOR EACH ROW
|
|
BEGIN
|
|
UPDATE_PRIMARY_KEY(bez_kenmerk_key, bez_s_bez_kenmerk_key);
|
|
UPDATE_UPPER(bez_kenmerk_omschrijving, bez_kenmerk_upper,bez_kenmerk);
|
|
IF (:new.bez_kenmerk_verwijder IS NOT NULL AND :old.bez_kenmerk_verwijder IS NULL AND
|
|
:new.bez_kenmerk_systeem = 1)
|
|
THEN
|
|
APPLICATION_ERROR(-20003, 'ALG_M238');
|
|
END IF;
|
|
|
|
IF (:new.bez_kenmerk_kenmerktype IN ('C','N'))
|
|
AND :new.bez_kenmerk_lengte IS NULL
|
|
THEN
|
|
APPLICATION_ERROR(-20000, 'ALG_C_ALG_KENMERK_LENGTE');
|
|
END IF;
|
|
|
|
IF :new.bez_kenmerk_kenmerktype = 'N' AND :old.bez_kenmerk_key IS NOT NULL
|
|
THEN
|
|
-- An existing property of type N
|
|
IF :old.bez_kenmerk_nmin <> :new.bez_kenmerk_nmin OR
|
|
(:old.bez_kenmerk_nmin IS NULL AND :new.bez_kenmerk_nmin IS NOT NULL)
|
|
THEN
|
|
DECLARE
|
|
Dummy CHAR;
|
|
BEGIN
|
|
SELECT 'X'
|
|
INTO Dummy
|
|
FROM bez_kenmerkwaarde
|
|
WHERE FAC.SAFE_TO_NUMBER(bez_kenmerkwaarde_waarde) < :new.bez_kenmerk_nmin
|
|
AND bez_kenmerk_key = :old.bez_kenmerk_key;
|
|
raise_application_error(-20000, 'BEZ_C_BEZ_KENMERK_MIN');
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND
|
|
THEN NULL;
|
|
WHEN TOO_MANY_ROWS THEN
|
|
BEGIN
|
|
raise_application_error(-20000, 'BEZ_C_BEZ_KENMERK_MIN');
|
|
END;
|
|
END;
|
|
END IF;
|
|
|
|
IF :old.bez_kenmerk_nmax <> :new.bez_kenmerk_nmax OR
|
|
(:old.bez_kenmerk_nmax IS NULL AND :new.bez_kenmerk_nmax IS NOT NULL)
|
|
THEN
|
|
DECLARE
|
|
Dummy CHAR;
|
|
BEGIN
|
|
SELECT 'X'
|
|
INTO Dummy
|
|
FROM bez_kenmerkwaarde
|
|
WHERE FAC.SAFE_TO_NUMBER(bez_kenmerkwaarde_waarde) > :new.bez_kenmerk_nmax
|
|
AND bez_kenmerk_key = :old.bez_kenmerk_key;
|
|
raise_application_error(-20000, 'BEZ_C_BEZ_KENMERK_MAX');
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND
|
|
THEN NULL;
|
|
WHEN TOO_MANY_ROWS THEN
|
|
BEGIN
|
|
raise_application_error(-20000, 'BEZ_C_BEZ_KENMERK_MIN');
|
|
END;
|
|
END;
|
|
END IF;
|
|
END IF;
|
|
UPDATE_AANMAAKDATUM(bez_kenmerk, bez_kenmerk_aanmaak);
|
|
END;
|
|
/
|
|
|
|
CREATE_TRIGGER(bez_t_bez_kenmerkwaarde_b_iu)
|
|
BEFORE INSERT OR UPDATE ON bez_kenmerkwaarde
|
|
FOR EACH ROW
|
|
BEGIN
|
|
UPDATE_AANMAAKDATUM(bez_kenmerkwaarde, bez_kenmerkwaarde_aanmaak);
|
|
/*
|
|
** Controleer eerst of de ingevulde waarde goed is.
|
|
*/
|
|
IF (:new.bez_kenmerkwaarde_waarde <> :old.bez_kenmerkwaarde_waarde
|
|
OR :old.bez_kenmerkwaarde_waarde IS NULL
|
|
OR :new.bez_kenmerkwaarde_waarde IS NULL)
|
|
AND :new.bez_bezoekers_key IS NOT NULL
|
|
THEN
|
|
DECLARE
|
|
KenmerkOmschr bez_kenmerk.bez_kenmerk_omschrijving%TYPE;
|
|
KenmerkType bez_kenmerk.bez_kenmerk_kenmerktype%TYPE;
|
|
KenmerkLengte bez_kenmerk.bez_kenmerk_lengte%TYPE;
|
|
KenmerkDec bez_kenmerk.bez_kenmerk_dec%TYPE;
|
|
KenmerkNMin bez_kenmerk.bez_kenmerk_nmin%TYPE;
|
|
KenmerkNMax bez_kenmerk.bez_kenmerk_nmax%TYPE;
|
|
NumberWaarde NUMBER(15,5);
|
|
FormatMask VARCHAR2(60);
|
|
KenmerkWaarde bez_kenmerkwaarde.bez_kenmerkwaarde_waarde%TYPE;
|
|
BEGIN
|
|
KenmerkWaarde := :new.bez_kenmerkwaarde_waarde;
|
|
BEGIN
|
|
SELECT bez_kenmerk_omschrijving
|
|
, bez_kenmerk_kenmerktype
|
|
, bez_kenmerk_lengte
|
|
, bez_kenmerk_dec
|
|
, bez_kenmerk_nmin
|
|
, bez_kenmerk_nmax
|
|
INTO KenmerkOmschr
|
|
, KenmerkType
|
|
, KenmerkLengte
|
|
, KenmerkDec
|
|
, KenmerkNMin
|
|
, KenmerkNMax
|
|
FROM bez_kenmerk
|
|
WHERE bez_kenmerk_key = :new.bez_kenmerk_key;
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND
|
|
THEN APPLICATION_ERROR_GOTO(-20000,'INS_R_INS_KENMERK_KEY1');
|
|
END;
|
|
|
|
/* Kijk welk KenmerkType gebruikt wordt.
|
|
** Aan de hand daarvan moet een controle uitgevoerd worden.
|
|
**/
|
|
IF KenmerkType = 'C'
|
|
/*
|
|
** Char
|
|
*/
|
|
THEN
|
|
/*
|
|
** Controleer of de lengte te groot of goed is
|
|
*/
|
|
IF LENGTH(KenmerkWaarde) > KenmerkLengte
|
|
THEN
|
|
APPLICATION_ERROR_GOTO(-20004, 'ALG_M232,'|| KenmerkOmschr ||','
|
|
|| TO_CHAR(KenmerkLengte));
|
|
END IF;
|
|
ELSIF KenmerkType = 'N'
|
|
/*
|
|
** Number
|
|
*/
|
|
THEN
|
|
/*
|
|
** Controleer of er een numerieke waarde ingevuld is
|
|
*/
|
|
IF KenmerkDec IS NULL OR KenmerkDec = 0
|
|
THEN
|
|
FormatMask := RPAD('9', KenmerkLengte, '9');
|
|
ELSE
|
|
FormatMask := RPAD('9', KenmerkLengte - KenmerkDec, '9')
|
|
||'D'||RPAD('9', KenmerkDec, '9');
|
|
END IF;
|
|
/*
|
|
** Controleer of er een numerieke waarde ingevuld is
|
|
*/
|
|
BEGIN
|
|
NumberWaarde := TO_NUMBER(KenmerkWaarde);
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN FormatMask := REPLACE(FormatMask, '9', '#');
|
|
FormatMask := REPLACE(FormatMask, '0', '#');
|
|
FormatMask := REPLACE(FormatMask, 'D', '.');
|
|
RAISE_APPLICATION_ERROR(-20004,'ALG_M233,'|| KenmerkOmschr ||','
|
|
|| FormatMask);
|
|
END;
|
|
/*
|
|
** Controleer of de waarde binnen NMin en NMax ligt
|
|
*/
|
|
IF ( (KenmerkNMin IS NOT NULL AND NumberWaarde < KenmerkNMin)
|
|
OR (KenmerkNMax IS NOT NULL AND NumberWaarde > KenmerkNMax))
|
|
THEN
|
|
APPLICATION_ERROR_GOTO(-20004, 'ALG_M234,'|| KenmerkOmschr ||','
|
|
|| TO_CHAR(KenmerkNMin)||','
|
|
|| TO_CHAR(KenmerkNMax));
|
|
ELSE
|
|
/*
|
|
** Controleer of de waarde aan het formaat voldoet
|
|
*/
|
|
KenmerkWaarde := LTRIM(NUMBER_TO_CHAR(NumberWaarde, FormatMask));
|
|
IF INSTR2(KenmerkWaarde, '#') <> 0
|
|
THEN
|
|
FormatMask := REPLACE(FormatMask, '9', '#');
|
|
FormatMask := REPLACE(FormatMask, '0', '#');
|
|
FormatMask := REPLACE(FormatMask, 'D', '.');
|
|
APPLICATION_ERROR_GOTO(-20004,'ALG_M233,'|| KenmerkOmschr ||','
|
|
|| FormatMask);
|
|
END IF;
|
|
END IF;
|
|
/*
|
|
** Zet de geconverteerde waarde terug
|
|
*/
|
|
:new.bez_kenmerkwaarde_waarde := KenmerkWaarde;
|
|
ELSIF KenmerkType = 'D'
|
|
/*
|
|
** Datum
|
|
*/
|
|
THEN
|
|
KenmerkWaarde := DATE_TO_CHAR(_TO_DATE2(KenmerkWaarde,'DD-MM-YY'),'DD-MM-YYYY');
|
|
/*
|
|
** Zet de geconverteerde waarde terug
|
|
*/
|
|
:new.bez_kenmerkwaarde_waarde := KenmerkWaarde;
|
|
END IF;
|
|
END;
|
|
END IF;
|
|
END;
|
|
/
|
|
|
|
REGISTERRUN('$Workfile: BEZ_TRI.SRC $','$Revision: 35 $')
|
|
|
|
#endif // BEZ
|