728 lines
28 KiB
Plaintext
728 lines
28 KiB
Plaintext
#ifdef RES
|
|
/*
|
|
* $Revision$
|
|
* $Id$
|
|
*/
|
|
|
|
AUDIT_BEGIN(res_disc_params)
|
|
AUDIT_VALUE(res_disc_params, res_disc_params_preposttime)
|
|
AUDIT_VALUE(res_disc_params, res_disc_params_notify)
|
|
AUDIT_VALUE(res_disc_params, res_disc_params_kosten)
|
|
AUDIT_VALUE(res_disc_params, res_disc_params_noti_dagen)
|
|
AUDIT_VALUE(res_disc_params, res_disc_params_expire_dagen)
|
|
AUDIT_VALUE(res_disc_params, res_disc_params_expire_tijd)
|
|
AUDIT_VALUE(res_disc_params, res_disc_params_cancel_dagen)
|
|
AUDIT_VALUE(res_disc_params, res_disc_params_maxduur)
|
|
AUDIT_END()
|
|
|
|
AUDIT_BEGIN(res_ruimte)
|
|
AUDIT_VALUE(res_ruimte, res_discipline_key)
|
|
AUDIT_VALUE(res_ruimte, res_ruimte_prijs_vast)
|
|
AUDIT_VALUE(res_ruimte, res_ruimte_prijs)
|
|
AUDIT_VALUE(res_ruimte, res_ruimte_prijs_ochtend)
|
|
AUDIT_VALUE(res_ruimte, res_ruimte_prijs_middag)
|
|
AUDIT_VALUE(res_ruimte, res_ruimte_prijs_avond)
|
|
AUDIT_VALUE(res_ruimte, res_ruimte_prijs_dag)
|
|
AUDIT_VALUE(res_ruimte, res_ruimte_intprijs)
|
|
AUDIT_VALUE(res_ruimte, res_ruimte_intprijs_ochtend)
|
|
AUDIT_VALUE(res_ruimte, res_ruimte_intprijs_middag)
|
|
AUDIT_VALUE(res_ruimte, res_ruimte_intprijs_avond)
|
|
AUDIT_VALUE(res_ruimte, res_ruimte_intprijs_dag)
|
|
AUDIT_VALUE(res_ruimte, res_ruimte_vervaldatum)
|
|
AUDIT_END()
|
|
|
|
|
|
CREATE_TRIGGER(res_t_res_disc_params_b_iu)
|
|
BEFORE INSERT OR UPDATE ON res_disc_params
|
|
FOR EACH ROW
|
|
BEGIN
|
|
UPDATE_PRIMARY_KEY(res_disc_params_key, res_s_res_disc_params_key);
|
|
END;
|
|
/
|
|
|
|
CREATE_TRIGGER(res_t_res_reservering_B_IU)
|
|
BEFORE INSERT OR UPDATE ON res_reservering
|
|
FOR EACH ROW
|
|
BEGIN
|
|
UPDATE_PRIMARY_KEY(res_reservering_key, res_s_res_reservering_key);
|
|
SET_VERWIJDER_CHILDREN(res_rsv_ruimte, res_reservering_key, res_reservering_verwijder,res_rsv_ruimte_verwijder,res_reservering);
|
|
END;
|
|
/
|
|
|
|
CREATE_TRIGGER(res_t_res_ruimte_B_IU)
|
|
BEFORE INSERT OR UPDATE ON res_ruimte
|
|
FOR EACH ROW
|
|
BEGIN
|
|
UPDATE_PRIMARY_KEY(res_ruimte_key, res_s_res_ruimte_key);
|
|
UPDATE_UPPER(res_ruimte_nr, res_ruimte_upper,res_ruimte);
|
|
IF :new.res_ruimte_verwijder IS NOT NULL AND :old.res_ruimte_verwijder IS NULL THEN
|
|
DECLARE dummy CHAR;
|
|
BEGIN
|
|
-- Een res_ruimte mag niet inactief worden als er nog *openstaande geldige* reserveringen zijn...
|
|
SELECT 'x' INTO dummy
|
|
FROM res_v_aanwezigrsv_ruimte rr, res_ruimte_opstelling ro
|
|
WHERE rr.res_ruimte_opstel_key = ro.res_ruimte_opstel_key
|
|
AND rr.res_rsv_ruimte_dirtlevel = 0
|
|
AND ro.res_ruimte_key = :old.res_ruimte_key
|
|
AND res_rsv_ruimte_tot > SYSDATE-14 -- na 14 dagen niet meer klagen
|
|
AND rr.res_status_bo_key IN (2,3,4,7);
|
|
raise_application_error(-20000,'res_m035');
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND THEN NULL;
|
|
WHEN TOO_MANY_ROWS THEN
|
|
raise_application_error(-20000,'res_m035');
|
|
END;
|
|
-- inactivate corresponding reference(s) to alg_ruimte
|
|
BEGIN
|
|
UPDATE res_alg_ruimte
|
|
SET res_alg_ruimte_verwijder = :new.res_ruimte_verwijder
|
|
WHERE res_ruimte_key = :old.res_ruimte_key
|
|
AND res_alg_ruimte_verwijder IS NULL;
|
|
END;
|
|
END IF;
|
|
END;
|
|
/
|
|
|
|
CREATE_TRIGGER(res_t_alg_ruimte_B_IU)
|
|
BEFORE INSERT OR UPDATE ON res_alg_ruimte
|
|
FOR EACH ROW
|
|
BEGIN
|
|
UPDATE_PRIMARY_KEY(res_alg_ruimte_key, res_s_alg_ruimte_key);
|
|
/* Het is niet aan deze tabel om afspraken te controleren */
|
|
IF :NEW.alg_ruimte_key <> :OLD.alg_ruimte_key
|
|
THEN
|
|
UPDATE bez_afspraak ba
|
|
SET alg_onrgoed_keys = :NEW.alg_ruimte_key
|
|
WHERE ba.res_rsv_ruimte_key IN (
|
|
SELECT rrr.res_rsv_ruimte_key
|
|
FROM res_rsv_ruimte rrr, res_ruimte_opstelling rro
|
|
WHERE rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key
|
|
AND rro.res_ruimte_key = :NEW.res_ruimte_key)
|
|
AND ba.alg_onrgoed_keys = :OLD.alg_ruimte_key;
|
|
END IF;
|
|
END;
|
|
/
|
|
|
|
CREATE_TRIGGER(res_t_res_opstelling_B_IU)
|
|
BEFORE INSERT OR UPDATE ON res_opstelling
|
|
FOR EACH ROW
|
|
BEGIN
|
|
UPDATE_PRIMARY_KEY(res_opstelling_key, res_s_res_opstelling_key);
|
|
UPDATE_UPPER(res_opstelling_omschrijving, res_opstelling_upper,res_opstelling);
|
|
CHECK_NOG_REFERENCES(res_opstelling, res_opstelling_verwijder, res_ruimte_opstelling,
|
|
res_opstelling_key, 'res_m038');
|
|
END;
|
|
/
|
|
|
|
|
|
CREATE_TRIGGER(res_t_res_ruimte_opstel_B_IU)
|
|
BEFORE INSERT OR UPDATE ON res_ruimte_opstelling
|
|
FOR EACH ROW
|
|
BEGIN
|
|
UPDATE_PRIMARY_KEY(res_ruimte_opstel_key, res_s_res_ruimte_opstel_key);
|
|
END;
|
|
/
|
|
|
|
CREATE_TRIGGER(res_t_res_deel_B_IU)
|
|
BEFORE INSERT OR UPDATE ON res_deel
|
|
FOR EACH ROW
|
|
BEGIN
|
|
UPDATE_PRIMARY_KEY(res_deel_key, res_s_res_deel_key);
|
|
UPDATE_AANMAAKDATUM(res_deel, res_deel_aanmaak);
|
|
IF :NEW.res_deel_verwijder IS NOT NULL AND :OLD.res_deel_verwijder IS NULL
|
|
THEN
|
|
DECLARE
|
|
dummy NUMBER;
|
|
BEGIN
|
|
-- Een res_deel mag niet inactief worden als er nog *openstaande* reserveringen zijn.
|
|
SELECT ''
|
|
INTO dummy
|
|
FROM res_v_aanwezigrsv_deel rs
|
|
WHERE rs.res_deel_key = :OLD.res_deel_key
|
|
AND rs.res_rsv_deel_dirtlevel = 0
|
|
AND res_rsv_deel_tot > SYSDATE-14 -- na 14 dagen niet meer klagen
|
|
AND rs.res_status_bo_key IN (2, 3, 4, 7);
|
|
|
|
raise_application_error(-20000, 'res_m034');
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND THEN NULL;
|
|
WHEN TOO_MANY_ROWS THEN raise_application_error(-20000,'res_m034');
|
|
END;
|
|
END IF;
|
|
END;
|
|
/
|
|
|
|
CREATE_TRIGGER(res_t_res_artikel_B_IU)
|
|
BEFORE INSERT OR UPDATE ON res_artikel
|
|
FOR EACH ROW
|
|
BEGIN
|
|
UPDATE_AANMAAKDATUM(res_artikel, res_artikel_aanmaak);
|
|
UPDATE_PRIMARY_KEY(res_artikel_key, res_s_res_artikel_key);
|
|
IF :new.res_artikel_verwijder IS NOT NULL AND :old.res_artikel_verwijder IS NULL
|
|
THEN
|
|
DECLARE
|
|
lCount NUMBER;
|
|
BEGIN
|
|
-- Een res_deel mag niet inactief worden als er nog *openstaande* reserveringen zijn...
|
|
SELECT COUNT(*)
|
|
INTO lCount
|
|
FROM res_v_aanwezigrsv_artikel rs
|
|
WHERE rs.res_artikel_key = :old.res_artikel_key
|
|
AND rs.res_rsv_artikel_dirtlevel = 0
|
|
AND res_rsv_artikel_levering > SYSDATE-14 -- na 14 dagen niet meer klagen
|
|
AND rs.res_status_bo_key IN (2,3,4,7);
|
|
IF lCount > 0 THEN
|
|
raise_application_error(-20000,'res_m033');
|
|
END IF;
|
|
END;
|
|
END IF;
|
|
END;
|
|
/
|
|
|
|
CREATE_TRIGGER(res_t_res_arrangement_B_I)
|
|
BEFORE INSERT ON res_arrangement
|
|
FOR EACH ROW
|
|
BEGIN
|
|
UPDATE_PRIMARY_KEY(res_arrangement_key, res_s_res_arrangement_key);
|
|
END;
|
|
/
|
|
|
|
CREATE_TRIGGER(res_t_res_arrangement_art_B_I)
|
|
BEFORE INSERT ON res_arrangement_artikel
|
|
FOR EACH ROW
|
|
BEGIN
|
|
UPDATE_PRIMARY_KEY(res_arrangement_artikel_key, res_s_res_arrangement_art_key);
|
|
END;
|
|
/
|
|
|
|
CREATE_TRIGGER(res_t_res_rsv_artikel_B_I)
|
|
BEFORE INSERT ON res_rsv_artikel
|
|
FOR EACH ROW
|
|
BEGIN
|
|
UPDATE_PRIMARY_KEY(res_rsv_artikel_key, res_s_res_rsv_artikel_key);
|
|
END;
|
|
/
|
|
|
|
CREATE_TRIGGER(res_t_res_rsv_artikel_B_IU)
|
|
BEFORE INSERT OR UPDATE ON res_rsv_artikel
|
|
FOR EACH ROW
|
|
BEGIN
|
|
IF :old.res_status_bo_key=6 THEN raise_application_error(-20001, 'Reserveringsgegevens zijn verwerkt; wijzigen is niet meer toegestaan.'); END IF;
|
|
IF :new.res_status_bo_key = 5 AND :old.res_status_bo_key <> 5
|
|
THEN
|
|
:new.res_rsv_artikel_afgemeld := SYSDATE;
|
|
END IF;
|
|
IF :new.res_status_bo_key = 6 AND :old.res_status_bo_key <> 6
|
|
THEN
|
|
:new.res_rsv_artikel_verwerkt := SYSDATE;
|
|
END IF;
|
|
IF UPDATING ('res_rsv_artikel_aantal')
|
|
THEN
|
|
:new.res_rsv_artikel_mutatie := SYSDATE;
|
|
END IF;
|
|
END;
|
|
/
|
|
|
|
CREATE_TRIGGER(res_t_res_rsv_deel_B_I)
|
|
BEFORE INSERT ON res_rsv_deel
|
|
FOR EACH ROW
|
|
BEGIN
|
|
UPDATE_PRIMARY_KEY(res_rsv_deel_key, res_s_res_rsv_deel_key);
|
|
END;
|
|
/
|
|
|
|
CREATE_TRIGGER(res_t_res_rsv_deel_B_IU)
|
|
BEFORE INSERT OR UPDATE ON res_rsv_deel
|
|
FOR EACH ROW
|
|
BEGIN
|
|
IF :old.res_status_bo_key=6 THEN raise_application_error(-20001, 'Reserveringsgegevens zijn verwerkt; wijzigen is niet meer toegestaan.'); END IF;
|
|
IF :new.res_status_bo_key = 5 AND :old.res_status_bo_key <> 5
|
|
THEN
|
|
:new.res_rsv_deel_afgemeld := SYSDATE;
|
|
END IF;
|
|
IF :new.res_status_bo_key = 6 AND :old.res_status_bo_key <> 6
|
|
THEN
|
|
:new.res_rsv_deel_verwerkt := SYSDATE;
|
|
END IF;
|
|
IF UPDATING ('res_rsv_deel_aantal') OR UPDATING ('res_rsv_deel_van') OR UPDATING ('res_rsv_deel_tot')
|
|
THEN
|
|
:new.res_rsv_deel_mutatie := SYSDATE;
|
|
END IF;
|
|
END;
|
|
/
|
|
CREATE_TRIGGER(res_t_res_cyclus_B_IU)
|
|
BEFORE INSERT OR UPDATE ON res_cyclus
|
|
FOR EACH ROW
|
|
BEGIN
|
|
UPDATE_PRIMARY_KEY(res_cyclus_key, res_s_res_cyclus);
|
|
END;
|
|
/
|
|
|
|
CREATE_TRIGGER(res_t_res_activiteit_B_IU)
|
|
BEFORE INSERT OR UPDATE ON res_activiteit
|
|
FOR EACH ROW
|
|
BEGIN
|
|
UPDATE_PRIMARY_KEY(res_activiteit_key, res_s_res_activiteit_key);
|
|
UPDATE_UPPER(res_activiteit_omschrijving, res_activiteit_upper,res_activiteit);
|
|
-- Mag niet verwijderen als er nog actieve reserveringen zijn
|
|
IF :new.res_activiteit_verwijder IS NOT NULL AND :old.res_activiteit_verwijder IS NULL
|
|
THEN
|
|
DECLARE
|
|
dummy CHAR;
|
|
BEGIN
|
|
SELECT 'x'
|
|
INTO dummy
|
|
FROM res_v_aanwezigrsv_ruimte
|
|
WHERE res_activiteit_key = :new.res_activiteit_key
|
|
AND res_rsv_ruimte_tot > SYSDATE-14 -- na 14 dagen niet meer klagen
|
|
AND res_status_bo_key IN (2, 3, 4, 7);
|
|
raise_application_error(-20001, 'res_m999 Reservations exist');
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND
|
|
THEN
|
|
DELETE_CHILDREN(res_activiteitdiscipline, res_activiteit_key);
|
|
WHEN TOO_MANY_ROWS
|
|
THEN
|
|
raise_application_error(-20001, 'res_m999 Reservations exist');
|
|
END;
|
|
END IF;
|
|
END;
|
|
/
|
|
|
|
CREATE_TRIGGER(res_t_res_srtactiviteit_B_IU)
|
|
BEFORE INSERT OR UPDATE ON res_srtactiviteit
|
|
FOR EACH ROW
|
|
BEGIN
|
|
UPDATE_PRIMARY_KEY(res_srtactiviteit_key, res_s_res_srtactiviteit_key);
|
|
END;
|
|
/
|
|
|
|
CREATE_TRIGGER(res_t_res_srtkenmerk_b_iu)
|
|
BEFORE INSERT OR UPDATE ON res_srtkenmerk
|
|
FOR EACH ROW
|
|
BEGIN
|
|
UPDATE_PRIMARY_KEY(res_srtkenmerk_key, res_s_res_srtkenmerk_key);
|
|
UPDATE_UPPER(res_srtkenmerk_omschrijving, res_srtkenmerk_upper,res_srtkenmerk);
|
|
UPDATE_UPPER(res_srtkenmerk_code, res_srtkenmerk_code, res_srtkenmerk);
|
|
|
|
UPDATE_AANMAAKDATUM(res_srtkenmerk, res_srtkenmerk_aanmaak);
|
|
IF (:new.res_srtkenmerk_verwijder IS NOT NULL AND :old.res_srtkenmerk_verwijder IS NULL AND
|
|
:new.res_srtkenmerk_systeem = 1)
|
|
THEN
|
|
raise_application_error(-20000, 'RES_C_RES_SRTKENMERK_SYSTEEM');
|
|
END IF;
|
|
--
|
|
IF :new.res_srtkenmerk_kenmerktype IN ('C', 'N', 'B') AND :new.res_srtkenmerk_lengte IS NULL
|
|
THEN
|
|
raise_application_error(-20000, 'res_C_res_SRTKENMERK_LENGTE');
|
|
END IF;
|
|
-- Numeriek mag niet te lang zijn (numeric overflow)
|
|
IF :new.res_srtkenmerk_kenmerktype IN ('N', 'B') AND :new.res_srtkenmerk_lengte > 20
|
|
THEN
|
|
:new.res_srtkenmerk_lengte := 20;
|
|
END IF;
|
|
--
|
|
IF :new.res_srtkenmerk_kenmerktype IN ('N', 'B') AND :old.res_srtkenmerk_key IS NOT NULL
|
|
THEN
|
|
IF :old.res_srtkenmerk_nmin <> :new.res_srtkenmerk_nmin
|
|
OR (:old.res_srtkenmerk_nmin IS NULL AND :new.res_srtkenmerk_nmin IS NOT NULL)
|
|
THEN
|
|
DECLARE
|
|
Dummy CHAR;
|
|
BEGIN
|
|
SELECT 'X'
|
|
INTO Dummy
|
|
FROM (SELECT 'X'
|
|
FROM res_kenmerkwaarde
|
|
WHERE FAC.SAFE_TO_NUMBER(res_kenmerkreservering_waarde) < :new.res_srtkenmerk_nmin
|
|
AND res_kenmerk_key IN
|
|
(SELECT res_kenmerk_key
|
|
FROM res_kenmerk
|
|
WHERE res_srtkenmerk_key = :old.res_srtkenmerk_key
|
|
)
|
|
UNION
|
|
SELECT 'X'
|
|
FROM res_kenmerkartikel
|
|
WHERE FAC.SAFE_TO_NUMBER(res_kenmerkartikel_waarde) < :new.res_srtkenmerk_nmin
|
|
AND res_kenmerk_key IN
|
|
(SELECT res_kenmerk_key
|
|
FROM res_kenmerk
|
|
WHERE res_srtkenmerk_key = :old.res_srtkenmerk_key
|
|
));
|
|
raise_application_error(-20000, 'res_C_res_SRTKENMERK_MIN');
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND
|
|
THEN NULL;
|
|
WHEN TOO_MANY_ROWS
|
|
THEN raise_application_error(-20000, 'res_C_res_SRTKENMERK_MIN');
|
|
END;
|
|
END IF;
|
|
--
|
|
IF :old.res_srtkenmerk_nmax <> :new.res_srtkenmerk_nmax
|
|
OR (:old.res_srtkenmerk_nmax IS NULL AND :new.res_srtkenmerk_nmax IS NOT NULL)
|
|
THEN
|
|
DECLARE
|
|
Dummy CHAR;
|
|
BEGIN
|
|
SELECT 'X'
|
|
INTO Dummy
|
|
FROM (SELECT 'X'
|
|
FROM res_kenmerkwaarde
|
|
WHERE FAC.SAFE_TO_NUMBER(res_kenmerkreservering_waarde) > :new.res_srtkenmerk_nmax
|
|
AND res_kenmerk_key IN
|
|
(SELECT res_kenmerk_key
|
|
FROM res_kenmerk
|
|
WHERE res_srtkenmerk_key = :old.res_srtkenmerk_key
|
|
)
|
|
UNION
|
|
SELECT 'X'
|
|
FROM res_kenmerkartikel
|
|
WHERE FAC.SAFE_TO_NUMBER(res_kenmerkartikel_waarde) > :new.res_srtkenmerk_nmax
|
|
AND res_kenmerk_key IN
|
|
(SELECT res_kenmerk_key
|
|
FROM res_kenmerk
|
|
WHERE res_srtkenmerk_key = :old.res_srtkenmerk_key
|
|
));
|
|
raise_application_error(-20000, 'res_C_res_SRTKENMERK_MAX');
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND
|
|
THEN NULL;
|
|
WHEN TOO_MANY_ROWS
|
|
THEN raise_application_error(-20000, 'res_C_res_SRTKENMERK_MAX');
|
|
END;
|
|
END IF;
|
|
END IF;
|
|
END;
|
|
/
|
|
|
|
CREATE_TRIGGER(res_t_res_rsv_ruimte_B_I)
|
|
BEFORE INSERT ON res_rsv_ruimte
|
|
FOR EACH ROW
|
|
BEGIN
|
|
UPDATE_PRIMARY_KEY(res_rsv_ruimte_key, res_s_res_rsv_ruimte_key);
|
|
END;
|
|
/
|
|
|
|
CREATE_TRIGGER(res_t_res_rsv_ruimte_B_IU)
|
|
BEFORE INSERT OR UPDATE ON res_rsv_ruimte
|
|
FOR EACH ROW
|
|
BEGIN
|
|
IF :old.res_status_bo_key=6 THEN raise_application_error(-20001, 'Reserveringsgegevens '||:new.res_rsv_ruimte_key||'/'||:new.res_rsv_ruimte_volgnr||' zijn verwerkt; wijzigen is niet meer toegestaan.'); END IF;
|
|
BEGIN IF :new.res_rsv_ruimte_verwijder IS NOT NULL OR (:new.res_rsv_ruimte_verwijder IS NULL AND :old.res_rsv_ruimte_verwijder IS NOT NULL) THEN UPDATE res_rsv_artikel SET res_rsv_artikel_verwijder = :new.res_rsv_ruimte_verwijder WHERE res_rsv_artikel.res_rsv_ruimte_key = :new.res_rsv_ruimte_key AND res_rsv_artikel.res_rsv_artikel_verwijder IS NULL; END IF; END;
|
|
BEGIN IF :new.res_rsv_ruimte_verwijder IS NOT NULL OR (:new.res_rsv_ruimte_verwijder IS NULL AND :old.res_rsv_ruimte_verwijder IS NOT NULL) THEN UPDATE res_rsv_deel SET res_rsv_deel_verwijder = :new.res_rsv_ruimte_verwijder WHERE res_rsv_deel.res_rsv_ruimte_key = :new.res_rsv_ruimte_key AND res_rsv_deel.res_rsv_deel_verwijder IS NULL; END IF; END;
|
|
BEGIN IF :new.res_rsv_ruimte_verwijder IS NOT NULL THEN DELETE FROM bez_afspraak WHERE bez_afspraak.res_rsv_ruimte_key = :new.res_rsv_ruimte_key; END IF; END;
|
|
BEGIN IF :new.res_rsv_ruimte_host_key <> :old.res_rsv_ruimte_host_key THEN UPDATE bez_afspraak set bez_afspraak_host_key = :new.res_rsv_ruimte_host_key WHERE res_rsv_ruimte_key = :new.res_rsv_ruimte_key AND bez_afspraak_host_key IS NOT NULL; END IF; END;
|
|
BEGIN IF :new.res_rsv_ruimte_contact_key <> :old.res_rsv_ruimte_contact_key THEN UPDATE bez_afspraak set bez_afspraak_contact_key= :new.res_rsv_ruimte_contact_key WHERE res_rsv_ruimte_key =:new.res_rsv_ruimte_key; END IF; END;
|
|
END;
|
|
/
|
|
|
|
CREATE_TRIGGER(res_t_res_kenmerk_b_iu)
|
|
BEFORE INSERT OR UPDATE ON res_kenmerk
|
|
FOR EACH ROW
|
|
BEGIN
|
|
-- FSN#13902: we tolereren het achteraf verplicht maken
|
|
UPDATE_PRIMARY_KEY(res_kenmerk_key, res_s_res_kenmerk_key);
|
|
UPDATE_AANMAAKDATUM(res_kenmerk, res_kenmerk_aanmaak);
|
|
UPDATE_UPPER(res_kenmerk_code, res_kenmerk_code, res_kenmerk);
|
|
END;
|
|
/
|
|
|
|
CREATE_TRIGGER(res_t_res_kenmerkwaarde_b_iu)
|
|
BEFORE INSERT OR UPDATE ON res_kenmerkwaarde
|
|
FOR EACH ROW
|
|
BEGIN
|
|
-- Controleer eerst of de ingevulde waarde goed is.
|
|
--
|
|
IF :new.res_kenmerkreservering_waarde <> :old.res_kenmerkreservering_waarde
|
|
OR:old.res_kenmerkreservering_waarde IS NULL
|
|
OR:new.res_kenmerkreservering_waarde IS NULL
|
|
THEN
|
|
DECLARE
|
|
srtkenmerkomschr res_srtkenmerk.res_srtkenmerk_omschrijving%TYPE;
|
|
srtkenmerktype res_srtkenmerk.res_srtkenmerk_kenmerktype%TYPE;
|
|
srtkenmerklengte res_srtkenmerk.res_srtkenmerk_lengte%TYPE;
|
|
srtkenmerkdec res_srtkenmerk.res_srtkenmerk_dec%TYPE;
|
|
srtkenmerknmin res_srtkenmerk.res_srtkenmerk_nmin%TYPE;
|
|
srtkenmerknmax res_srtkenmerk.res_srtkenmerk_nmax%TYPE;
|
|
kenmerkverplicht res_kenmerk.res_kenmerk_verplicht%TYPE;
|
|
numberwaarde NUMBER (25, 5);
|
|
formatmask VARCHAR2 (60);
|
|
kenmerkreswaarde res_kenmerkwaarde.res_kenmerkreservering_waarde%TYPE;
|
|
BEGIN
|
|
kenmerkreswaarde := :new.res_kenmerkreservering_waarde;
|
|
|
|
--
|
|
SELECT res_sk.res_srtkenmerk_omschrijving,
|
|
res_sk.res_srtkenmerk_kenmerktype,
|
|
res_sk.res_srtkenmerk_lengte,
|
|
res_sk.res_srtkenmerk_dec,
|
|
res_sk.res_srtkenmerk_nmin,
|
|
res_sk.res_srtkenmerk_nmax,
|
|
res_k.res_kenmerk_verplicht
|
|
INTO srtkenmerkomschr,
|
|
srtkenmerktype,
|
|
srtkenmerklengte,
|
|
srtkenmerkdec,
|
|
srtkenmerknmin,
|
|
srtkenmerknmax,
|
|
kenmerkverplicht
|
|
FROM res_srtkenmerk res_sk, res_kenmerk res_k
|
|
WHERE res_sk.res_srtkenmerk_key = res_k.res_srtkenmerk_key
|
|
AND res_k.res_kenmerk_niveau = 'A'
|
|
AND res_k.res_kenmerk_key = :new.res_kenmerk_key;
|
|
|
|
--
|
|
-- Controleer eerst of het verplichte veld ingevuld is.
|
|
--
|
|
IF kenmerkverplicht IS NOT NULL AND kenmerkreswaarde IS NULL
|
|
THEN
|
|
APPLICATION_ERROR_GOTO(-20004, 'res_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 (kenmerkreswaarde) > srtkenmerklengte
|
|
THEN
|
|
APPLICATION_ERROR_GOTO(
|
|
-20004,
|
|
'res_m241,' || srtkenmerkomschr || ',' || TO_CHAR (srtkenmerklengte));
|
|
END IF;
|
|
ELSIF srtkenmerktype IN ('N', 'B')
|
|
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
|
|
numberwaarde := TO_NUMBER (kenmerkreswaarde);
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
formatmask := REPLACE (formatmask, '9', '#');
|
|
formatmask := REPLACE (formatmask, '0', '#');
|
|
formatmask := REPLACE (formatmask, 'D', '.');
|
|
APPLICATION_ERROR_GOTO(
|
|
-20004,
|
|
'res_m242,' || srtkenmerkomschr || ',' || formatmask);
|
|
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,
|
|
'res_m243,'
|
|
|| srtkenmerkomschr
|
|
|| ','
|
|
|| TO_CHAR (srtkenmerknmin)
|
|
|| ','
|
|
|| TO_CHAR (srtkenmerknmax));
|
|
ELSE
|
|
-- Controleer of de waarde aan het formaat voldoet.
|
|
kenmerkreswaarde := LTRIM (TO_CHAR (numberwaarde, formatmask));
|
|
|
|
IF INSTR (kenmerkreswaarde, '#') <> 0
|
|
THEN
|
|
formatmask := REPLACE (formatmask, '9', '#');
|
|
formatmask := REPLACE (formatmask, '0', '#');
|
|
formatmask := REPLACE (formatmask, 'D', '.');
|
|
APPLICATION_ERROR_GOTO(
|
|
-20004,
|
|
'res_m242,' || srtkenmerkomschr || ',' || formatmask);
|
|
END IF;
|
|
END IF;
|
|
|
|
-- Zet de geconverteerde waarde terug.
|
|
:new.res_kenmerkreservering_waarde := kenmerkreswaarde;
|
|
ELSIF srtkenmerktype = 'D'
|
|
THEN
|
|
-- DATUM
|
|
kenmerkreswaarde := TO_CHAR (TO_DATE (kenmerkreswaarde, 'DD-MM-YY'), 'DD-MM-YYYY');
|
|
-- Zet de geconverteerde waarde terug.
|
|
:new.res_kenmerkreservering_waarde := kenmerkreswaarde;
|
|
END IF;
|
|
END;
|
|
|
|
UPDATE_PRIMARY_KEY(res_kenmerkwaarde_key, res_s_res_kenmerkwaarde_key);
|
|
END IF;
|
|
END;
|
|
/
|
|
|
|
CREATE_TRIGGER(res_t_res_kenmerkartikel_b_iu)
|
|
BEFORE INSERT OR UPDATE ON res_kenmerkartikel
|
|
FOR EACH ROW
|
|
BEGIN
|
|
-- Controleer eerst of de ingevulde waarde goed is.
|
|
--
|
|
IF :new.res_kenmerkartikel_waarde <> :old.res_kenmerkartikel_waarde
|
|
OR:old.res_kenmerkartikel_waarde IS NULL
|
|
OR:new.res_kenmerkartikel_waarde IS NULL
|
|
THEN
|
|
DECLARE
|
|
srtkenmerkomschr res_srtkenmerk.res_srtkenmerk_omschrijving%TYPE;
|
|
srtkenmerktype res_srtkenmerk.res_srtkenmerk_kenmerktype%TYPE;
|
|
srtkenmerklengte res_srtkenmerk.res_srtkenmerk_lengte%TYPE;
|
|
srtkenmerkdec res_srtkenmerk.res_srtkenmerk_dec%TYPE;
|
|
srtkenmerknmin res_srtkenmerk.res_srtkenmerk_nmin%TYPE;
|
|
srtkenmerknmax res_srtkenmerk.res_srtkenmerk_nmax%TYPE;
|
|
kenmerkverplicht res_kenmerk.res_kenmerk_verplicht%TYPE;
|
|
numberwaarde NUMBER (25, 5);
|
|
formatmask VARCHAR2 (60);
|
|
kenmerkreswaarde res_kenmerkartikel.res_kenmerkartikel_waarde%TYPE;
|
|
BEGIN
|
|
kenmerkreswaarde := :new.res_kenmerkartikel_waarde;
|
|
|
|
--
|
|
SELECT res_sk.res_srtkenmerk_omschrijving,
|
|
res_sk.res_srtkenmerk_kenmerktype,
|
|
res_sk.res_srtkenmerk_lengte,
|
|
res_sk.res_srtkenmerk_dec,
|
|
res_sk.res_srtkenmerk_nmin,
|
|
res_sk.res_srtkenmerk_nmax,
|
|
res_k.res_kenmerk_verplicht
|
|
INTO srtkenmerkomschr,
|
|
srtkenmerktype,
|
|
srtkenmerklengte,
|
|
srtkenmerkdec,
|
|
srtkenmerknmin,
|
|
srtkenmerknmax,
|
|
kenmerkverplicht
|
|
FROM res_srtkenmerk res_sk, res_kenmerk res_k
|
|
WHERE res_sk.res_srtkenmerk_key = res_k.res_srtkenmerk_key
|
|
--AND res_k.res_kenmerk_niveau = 'D'
|
|
AND res_k.res_kenmerk_key = :new.res_kenmerk_key;
|
|
|
|
--
|
|
-- Controleer eerst of het verplichte veld ingevuld is.
|
|
--
|
|
IF kenmerkverplicht IS NOT NULL AND kenmerkreswaarde IS NULL
|
|
THEN
|
|
APPLICATION_ERROR_GOTO(-20004, 'res_m244,' || 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 (kenmerkreswaarde) > srtkenmerklengte
|
|
THEN
|
|
APPLICATION_ERROR_GOTO(
|
|
-20004,
|
|
'res_m245,' || srtkenmerkomschr || ',' || TO_CHAR (srtkenmerklengte));
|
|
END IF;
|
|
ELSIF srtkenmerktype IN ('N', 'B')
|
|
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
|
|
numberwaarde := TO_NUMBER (kenmerkreswaarde);
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
formatmask := REPLACE (formatmask, '9', '#');
|
|
formatmask := REPLACE (formatmask, '0', '#');
|
|
formatmask := REPLACE (formatmask, 'D', '.');
|
|
APPLICATION_ERROR_GOTO(
|
|
-20004,
|
|
'res_m246,' || srtkenmerkomschr || ',' || formatmask);
|
|
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,
|
|
'res_m247,'
|
|
|| srtkenmerkomschr
|
|
|| ','
|
|
|| TO_CHAR (srtkenmerknmin)
|
|
|| ','
|
|
|| TO_CHAR (srtkenmerknmax));
|
|
ELSE
|
|
-- Controleer of de waarde aan het formaat voldoet.
|
|
kenmerkreswaarde := LTRIM (TO_CHAR (numberwaarde, formatmask));
|
|
|
|
IF INSTR (kenmerkreswaarde, '#') <> 0
|
|
THEN
|
|
formatmask := REPLACE (formatmask, '9', '#');
|
|
formatmask := REPLACE (formatmask, '0', '#');
|
|
formatmask := REPLACE (formatmask, 'D', '.');
|
|
APPLICATION_ERROR_GOTO(
|
|
-20004,
|
|
'res_m246,' || srtkenmerkomschr || ',' || formatmask);
|
|
END IF;
|
|
END IF;
|
|
|
|
-- Zet de geconverteerde waarde terug.
|
|
:new.res_kenmerkartikel_waarde := kenmerkreswaarde;
|
|
ELSIF srtkenmerktype = 'D'
|
|
THEN
|
|
-- DATUM
|
|
kenmerkreswaarde := TO_CHAR (TO_DATE (kenmerkreswaarde, 'DD-MM-YY'), 'DD-MM-YYYY');
|
|
-- Zet de geconverteerde waarde terug.
|
|
:new.res_kenmerkartikel_waarde := kenmerkreswaarde;
|
|
END IF;
|
|
END;
|
|
|
|
UPDATE_PRIMARY_KEY(res_kenmerkartikel_key, res_s_res_kenmerkartikel_key);
|
|
END IF;
|
|
END;
|
|
/
|
|
|
|
CREATE_TRIGGER(res_t_res_srtartikel_og_B_IU)
|
|
BEFORE INSERT OR UPDATE ON res_srtartikel_onrgoed
|
|
FOR EACH ROW
|
|
BEGIN
|
|
UPDATE_PRIMARY_KEY(res_srtartikel_onrgoed_key, res_s_res_srtartikel_og_key);
|
|
END;
|
|
/
|
|
|
|
CREATE_TRIGGER(res_t_notificatie_res_reserv)
|
|
AFTER DELETE
|
|
ON res_reservering
|
|
FOR EACH ROW
|
|
BEGIN
|
|
fac.clrnotifications ('RES%', :OLD.res_reservering_key);
|
|
END;
|
|
/
|
|
|
|
CREATE_TRIGGER(res_t_res_activiteitdisc_B_IU)
|
|
BEFORE INSERT OR UPDATE ON res_activiteitdiscipline
|
|
FOR EACH ROW
|
|
BEGIN
|
|
UPDATE_PRIMARY_KEY(res_activiteitdiscipline_key, res_s_res_activiteitdisc_key);
|
|
END;
|
|
/
|
|
|
|
REGISTERRUN('$Id$')
|
|
|
|
#endif // RES
|