983 lines
35 KiB
Plaintext
983 lines
35 KiB
Plaintext
#ifdef PRS
|
|
/* PRS_TRI.SRC
|
|
* $Revision$
|
|
* $Id$
|
|
*/
|
|
|
|
#include "alg\algsql.h"
|
|
|
|
CREATE_TRIGGER(prs_t_prs_srtperslid_B_IU)
|
|
BEFORE INSERT OR UPDATE ON prs_srtperslid
|
|
FOR EACH ROW
|
|
BEGIN
|
|
UPDATE_PRIMARY_KEY(prs_srtperslid_key, prs_s_prs_alluitvoerende_keys);
|
|
UPDATE_UPPER(prs_srtperslid_omschrijving, prs_srtperslid_upper,prs_srtperslid);
|
|
CHECK_NOG_REFERENCES(prs_perslid, prs_srtperslid_verwijder,
|
|
prs_v_aanwezigperslid, prs_srtperslid_key, 'prs_m014');
|
|
UPDATE_AANMAAKDATUM(prs_srtperslid, prs_srtperslid_aanmaak);
|
|
|
|
// Niet verwijderen als nog MLD_OPDRs zijn met status 'Uitgegeven' en
|
|
// uitvoerende deze SRTPERSLID.
|
|
IF :new.prs_srtperslid_verwijder IS NOT NULLDATUM
|
|
THEN
|
|
DECLARE
|
|
dummy CHAR;
|
|
BEGIN
|
|
SELECT 'X'
|
|
INTO dummy
|
|
FROM mld_opdr MLD_O
|
|
WHERE MLD_O.mld_statusopdr_key IN (5, 8)
|
|
AND MLD_O.mld_uitvoerende_keys = :new.prs_srtperslid_key;
|
|
raise_application_error(-20000, 'prs_m084');
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND
|
|
THEN NULL;
|
|
WHEN TOO_MANY_ROWS
|
|
THEN raise_application_error(-20000, 'prs_m084');
|
|
END;
|
|
END IF;
|
|
//</MLD>
|
|
END;
|
|
/
|
|
|
|
CREATE_TRIGGER(prs_t_prs_afdeling_B_IU)
|
|
BEFORE INSERT OR UPDATE ON prs_afdeling
|
|
FOR EACH ROW
|
|
BEGIN
|
|
|
|
UPDATE_PRIMARY_KEY(prs_afdeling_key, prs_s_prs_afdeling_key);
|
|
UPDATE_UPPER(prs_afdeling_naam, prs_afdeling_upper,prs_afdeling);
|
|
CHECK_NOG_REFERENCES(prs_perslid, prs_afdeling_verwijder,
|
|
prs_v_aanwezigperslid, prs_afdeling_key, 'prs_m015');
|
|
UPDATE_AANMAAKDATUM(prs_afdeling, prs_afdeling_aanmaak);
|
|
CHECK_NOG_REFERENCES(prs_perslid, prs_afdeling_verwijder,
|
|
prs_v_aanwezigruimteafdeling, prs_afdeling_key, 'SYSTEM ERROR: In Afdeling, er zijn nog PRS_RUIMTEAFDELING-records');
|
|
IF :new.prs_afdeling_verwijder IS NOT NULL AND :old.prs_afdeling_verwijder IS NULL THEN
|
|
DECLARE
|
|
dummy CHAR;
|
|
BEGIN
|
|
SELECT 'X'
|
|
INTO dummy
|
|
FROM cnt_v_aanwezigcontract
|
|
WHERE (cnt_v_aanwezigcontract.cnt_prs_afdeling_key = :old.prs_afdeling_key
|
|
OR cnt_v_aanwezigcontract.prs_afdeling_key_eig = :old.prs_afdeling_key)
|
|
AND cnt_v_aanwezigcontract.cnt_contract_looptijd_tot > SYSDATE
|
|
AND cnt_v_aanwezigcontract.cnt_contract_status <> 1;
|
|
raise_application_error(-20000, 'cnt_m022');
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND THEN NULL;
|
|
WHEN TOO_MANY_ROWS THEN raise_application_error(-20000, 'cnt_m022');
|
|
END;
|
|
END IF;
|
|
--
|
|
-- Afdeling mag alleen verwijderd worden als deze geen objecten meer in het bezit heeft.
|
|
--
|
|
IF :new.prs_afdeling_verwijder IS NOT NULL AND :old.prs_afdeling_verwijder IS NULL
|
|
THEN
|
|
DECLARE
|
|
dummy VARCHAR2(1);
|
|
BEGIN
|
|
SELECT 'x'
|
|
INTO dummy
|
|
FROM ins_deel
|
|
WHERE ins_deel_verwijder IS NULL
|
|
AND ins_alg_ruimte_type = 'A'
|
|
AND ins_alg_ruimte_key = :old.prs_afdeling_key;
|
|
raise_application_error(-20000, 'prs_m173');
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND THEN NULL;
|
|
WHEN TOO_MANY_ROWS THEN raise_application_error(-20000, 'prs_m173');
|
|
END;
|
|
END IF;
|
|
END;
|
|
/
|
|
|
|
CREATE_TRIGGER(prs_t_prs_afdeling_B_D)
|
|
BEFORE DELETE ON prs_afdeling
|
|
FOR EACH ROW
|
|
BEGIN
|
|
DELETE FROM prs_kenmerklink KL WHERE KL.prs_link_key=:old.prs_afdeling_key AND KL.prs_kenmerklink_niveau='A';
|
|
END;
|
|
/
|
|
|
|
AUDIT_BEGIN(prs_perslid)
|
|
IF NOT DELETING
|
|
THEN
|
|
AUDIT_VALUE(prs_perslid, prs_perslid_verwijder)
|
|
END IF;
|
|
AUDIT_END()
|
|
|
|
CREATE_TRIGGER(prs_t_prs_perslid_B_I)
|
|
BEFORE INSERT ON prs_perslid
|
|
FOR EACH ROW
|
|
BEGIN
|
|
UPDATE_PRIMARY_KEY(prs_perslid_key, prs_s_prs_alluitvoerende_keys);
|
|
END;
|
|
/
|
|
|
|
CREATE_TRIGGER(prs_t_prs_perslid_B_IU)
|
|
BEFORE INSERT OR UPDATE ON prs_perslid
|
|
FOR EACH ROW
|
|
BEGIN
|
|
UPDATE_UPPER(prs_perslid_naam, prs_perslid_upper,prs_perslid);
|
|
IF (BITAND(:old.prs_perslid_flags,32) = 32 OR BITAND(:new.prs_perslid_flags,32) = 32)
|
|
THEN
|
|
IF (:old.prs_perslid_oslogin <> :new.prs_perslid_oslogin)
|
|
THEN
|
|
raise_application_error(-20000, 'PRS_M183');
|
|
END IF;
|
|
ELSE
|
|
:new.prs_perslid_oslogin := UPPER(:new.prs_perslid_oslogin);
|
|
:new.prs_perslid_oslogin2 := UPPER(:new.prs_perslid_oslogin2);
|
|
END IF;
|
|
UPDATE_AANMAAKDATUM(prs_perslid, prs_perslid_aanmaak);
|
|
-- If this perslid belongs to the primary company of an xd-environment
|
|
-- it gets a default apikey to get synced across the domains
|
|
IF (:old.prs_afdeling_key IS NULL OR :old.prs_afdeling_key <> :new.prs_afdeling_key)
|
|
AND fac.getsetting ('xd_primary_bedrijfkey') > 0
|
|
THEN
|
|
DECLARE
|
|
dummy prs_afdeling.prs_bedrijf_key%TYPE;
|
|
BEGIN
|
|
SELECT prs_bedrijf_key
|
|
INTO dummy
|
|
FROM prs_v_afdeling
|
|
WHERE prs_afdeling_key = :new.prs_afdeling_key
|
|
AND prs_v_afdeling.prs_bedrijf_key = fac.getsetting ('xd_primary_bedrijfkey');
|
|
-- 52 lower en uppercase letters*32 is 182 bits equivalent
|
|
SELECT DBMS_RANDOM.string ('a', 32) INTO :new.prs_perslid_apikey FROM DUAL;
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND
|
|
THEN
|
|
NULL; -- persoon hoort niet bij de serviceorganisatie
|
|
END;
|
|
END IF;
|
|
IF (:new.prs_perslid_verwijder IS NOT NULLDATUM AND :old.prs_perslid_verwijder IS NULLDATUM)
|
|
THEN
|
|
IF ( BITAND(:old.prs_perslid_flags,32) = 32
|
|
OR BITAND(:new.prs_perslid_flags,32) = 32
|
|
)
|
|
THEN
|
|
-- Persoon mag niet verwijderd worden omdat flagbit=32 aan staat.
|
|
raise_application_error(-20001, 'Delete not allowed');
|
|
ELSE
|
|
DECLARE
|
|
dummy VARCHAR2(1);
|
|
BEGIN
|
|
-- Niet verwijderen als nog MLD_OPDR's zijn met status 'Uitgegeven' en
|
|
-- uitvoerende deze PERSLID.
|
|
SELECT 'X'
|
|
INTO dummy
|
|
FROM mld_opdr MLD_O
|
|
WHERE MLD_O.mld_statusopdr_key IN (5, 8)
|
|
AND MLD_O.mld_uitvoerende_keys = :new.prs_perslid_key;
|
|
raise_application_error(-20000, 'prs_m085');
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND THEN NULL;
|
|
WHEN TOO_MANY_ROWS THEN raise_application_error(-20000, 'prs_m085');
|
|
END;
|
|
|
|
DECLARE
|
|
dummy VARCHAR2(1);
|
|
BEGIN
|
|
-- Persoon mag alleen verwijderd worden als deze geen objecten meer in het bezit heeft.
|
|
-- Dit geldt alleen voor objecten die 'van de organisatie' zijn, d.i.
|
|
-- ins_discipline_min_level <> 3. Deze mocht de gebruiker zelf bijhouden
|
|
SELECT 'x'
|
|
INTO dummy
|
|
FROM ins_v_aanwezigdeel D, ins_tab_discipline DI
|
|
WHERE ins_alg_ruimte_type = 'P'
|
|
AND ins_alg_ruimte_key = :old.prs_perslid_key
|
|
AND DI.ins_discipline_key = D.ins_discipline_key
|
|
AND DI.ins_discipline_min_level <> 3;
|
|
raise_application_error(-20000, 'prs_m175');
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND THEN NULL;
|
|
WHEN TOO_MANY_ROWS THEN raise_application_error(-20000, 'prs_m175');
|
|
END;
|
|
|
|
-- Hierna kan het verwijderen niet meer falen
|
|
BEGIN
|
|
-- Ja, je zou zeggen dat dit een zaak is van prs_perslidwerkplek, maar
|
|
-- dat is toch niet zo. Bovendien krijg je dan nare mutating trigger errors.
|
|
-- Alleen vaste werkplekken, geen flexplekken
|
|
IF fac.getsetting ('prs_werkplek_implicit') = 1
|
|
THEN
|
|
DELETE FROM prs_werkplek
|
|
WHERE prs_werkplek_key IN (SELECT prs_werkplek_key
|
|
FROM prs_perslidwerkplek
|
|
WHERE prs_perslid_key = :old.prs_perslid_key)
|
|
AND prs_werkplek_type = 0;
|
|
-- Deze delete cascadeert naar de werkplekbezetting door, gooit die dus ook weg
|
|
-- Let wel: de werkplekken blijven helaas wel bestaan
|
|
ELSE
|
|
-- Bij expliciet gooien wij de bezetting weg en blijft de werkplek leeg achter
|
|
DELETE FROM prs_perslidwerkplek
|
|
WHERE prs_perslid_key = :old.prs_perslid_key;
|
|
END IF;
|
|
END;
|
|
-- Verwijder mandateringen
|
|
DELETE FROM prs_perslidkostenplaats
|
|
WHERE prs_perslid_key = :old.prs_perslid_key;
|
|
|
|
-- Verwijder contactpersoon-link
|
|
UPDATE prs_contactpersoon
|
|
SET prs_perslid_key = NULL
|
|
WHERE prs_perslid_key = :old.prs_perslid_key;
|
|
|
|
-- Verwijder vervangingsregistraties heen en terug
|
|
DELETE FROM prs_collega
|
|
WHERE prs_perslid_key = :old.prs_perslid_key OR prs_perslid_key_alt = :old.prs_perslid_key;
|
|
|
|
BEGIN
|
|
-- Pak mijn autorisaties af
|
|
DELETE FROM FAC_GEBRUIKERSGROEP WHERE PRS_PERSLID_KEY = :old.prs_perslid_key;
|
|
-- Ook een stukje veiligheid
|
|
DELETE FROM fac_session WHERE prs_perslid_key = :old.prs_perslid_key;
|
|
DELETE FROM aut_client_perslid WHERE prs_perslid_key = :old.prs_perslid_key;
|
|
END;
|
|
-- Tenslotte: ruim de objecten die ik zelf mocht beheren op
|
|
-- Aandacht: zou nog steeds kunnen dat dit faalt, niet mekkeren, jammer dan
|
|
BEGIN
|
|
DELETE FROM INS_DEEL WHERE ins_deel_key IN
|
|
(SELECT D.ins_deel_key
|
|
FROM ins_deel D, ins_tab_discipline DI
|
|
WHERE ins_alg_ruimte_type = 'P'
|
|
AND ins_alg_ruimte_key = :old.prs_perslid_key
|
|
AND DI.ins_discipline_key = D.ins_discipline_key
|
|
AND DI.ins_discipline_min_level = 3);
|
|
EXCEPTION
|
|
WHEN OTHERS THEN NULL;
|
|
END;
|
|
|
|
FOR c1
|
|
IN (SELECT mld_melding_key
|
|
FROM mld_melding
|
|
WHERE mld_melding_behandelaar_key =
|
|
:old.prs_perslid_key
|
|
AND mld_melding_status NOT IN (5, 6))
|
|
LOOP
|
|
fac.trackaction ('#MLDBEH',
|
|
c1.mld_melding_key,
|
|
NULL,
|
|
NULL,
|
|
LCL.L('lcl_mld_is_mldbeh_none'));
|
|
|
|
UPDATE mld_melding
|
|
SET mld_melding_behandelaar_key = NULL
|
|
WHERE mld_melding_key = c1.mld_melding_key;
|
|
END LOOP;
|
|
|
|
FOR c1
|
|
IN (SELECT mld_melding_key
|
|
FROM mld_melding
|
|
WHERE mld_melding_behandelaar2_key =
|
|
:old.prs_perslid_key
|
|
AND mld_melding_status NOT IN (5, 6))
|
|
LOOP
|
|
fac.trackaction ('#MLDABH',
|
|
c1.mld_melding_key,
|
|
NULL,
|
|
NULL,
|
|
LCL.L('lcl_mld_is_mldabh_none'));
|
|
|
|
UPDATE mld_melding
|
|
SET mld_melding_behandelaar2_key = NULL
|
|
WHERE mld_melding_key = c1.mld_melding_key;
|
|
END LOOP;
|
|
|
|
-- Wis alle authenticatiemogelijkheden
|
|
:new.prs_perslid_oslogin := '';
|
|
:new.prs_perslid_oslogin2 := '';
|
|
:new.prs_perslid_apikey := NULL;
|
|
-- And do what prs.setpassword(:new.prs_perslid_key, NULL) would do:
|
|
:new.prs_perslid_salt := NULL;
|
|
:new.prs_perslid_wachtwoord_hash := NULL;
|
|
:new.prs_perslid_wachtwoord_exp := NULL;
|
|
:new.prs_perslid_otpsecret := NULL;
|
|
-- Wis profiel (dat kan anders nooit opgeruimd worden)
|
|
:new.fac_profiel_key := NULL;
|
|
END IF;
|
|
END IF;
|
|
|
|
IF (NVL(:new.prs_perslid_wachtwoord_hash, 'X') <> NVL(:old.prs_perslid_wachtwoord_hash, 'X'))
|
|
OR ( fac.getsetting ('login_use_email') = 0
|
|
AND ( :new.prs_perslid_oslogin IS NULL AND :old.prs_perslid_oslogin IS NOT NULL
|
|
OR :new.prs_perslid_oslogin2 IS NULL AND :old.prs_perslid_oslogin2 IS NOT NULL
|
|
)
|
|
)
|
|
OR ( fac.getsetting ('login_use_email') = 1
|
|
AND :new.prs_perslid_email IS NULL
|
|
AND :old.prs_perslid_email IS NOT NULL
|
|
)
|
|
OR ( :new.prs_perslid_inactief IS NOT NULL
|
|
AND :old.prs_perslid_inactief IS NULL
|
|
)
|
|
THEN -- Merk op: anno 5.3.2 wordt een persoon die *nu* is ingelogd hier niet
|
|
-- automatisch door uitgelogd
|
|
:new.prs_perslid_credentials_datum := SYSDATE;
|
|
DELETE FROM fac_session
|
|
WHERE prs_perslid_key = :new.prs_perslid_key;
|
|
DELETE FROM aut_client_perslid
|
|
WHERE prs_perslid_key = :old.prs_perslid_key;
|
|
END IF;
|
|
|
|
END;
|
|
/
|
|
CREATE_TRIGGER(prs_t_prs_perslid_A_IU)
|
|
AFTER INSERT OR UPDATE ON prs_perslid
|
|
FOR EACH ROW
|
|
BEGIN
|
|
/*
|
|
* Als echte persoon een login krijgt, dan ook in de default autorisatiegroep als die nog geen rechten had
|
|
*/
|
|
IF :new.prs_perslid_verwijder IS NULLDATUM AND
|
|
:new.prs_perslid_oslogin IS NOT NULL AND :old.prs_perslid_oslogin IS NULL AND
|
|
SUBSTR(:new.prs_perslid_oslogin, 1, 1) <> '_'
|
|
THEN
|
|
BEGIN
|
|
INSERT INTO fac_gebruikersgroep
|
|
(fac_groep_key, prs_perslid_key)
|
|
SELECT fac_groep_key, :NEW.prs_perslid_key
|
|
FROM fac_groep
|
|
WHERE fac_groep_upper = '_DEFAULT'
|
|
AND NOT EXISTS (SELECT 'x'
|
|
FROM fac_gebruikersgroep
|
|
WHERE prs_perslid_key = :NEW.prs_perslid_key);
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
NULL;
|
|
END;
|
|
END IF;
|
|
END;
|
|
/
|
|
|
|
CREATE_TRIGGER(prs_t_prs_perslid_B_D)
|
|
BEFORE DELETE ON prs_perslid
|
|
FOR EACH ROW
|
|
BEGIN
|
|
IF (BITAND(:old.prs_perslid_flags,32) = 32 OR BITAND(:new.prs_perslid_flags,32) = 32)
|
|
THEN
|
|
raise_application_error(-20001, 'Delete not allowed');
|
|
END IF;
|
|
DELETE FROM prs_kenmerklink KL WHERE KL.prs_link_key=:old.prs_perslid_key AND KL.prs_kenmerklink_niveau='P';
|
|
END;
|
|
/
|
|
|
|
CREATE_TRIGGER(prs_t_prs_werkplek_B_IU)
|
|
BEFORE INSERT OR UPDATE ON prs_werkplek
|
|
FOR EACH ROW
|
|
BEGIN
|
|
UPDATE_PRIMARY_KEY(prs_werkplek_key, prs_s_prs_werkplek_key);
|
|
/* werkplek weg = bezetting weg gebeurt via de cascade */
|
|
UPDATE_AANMAAKDATUM(prs_werkplek, prs_werkplek_aanmaak);
|
|
END;
|
|
/
|
|
CREATE_TRIGGER(prs_t_prs_werkplek_B_D)
|
|
BEFORE DELETE ON prs_werkplek
|
|
FOR EACH ROW
|
|
BEGIN
|
|
UPDATE ins_deel
|
|
SET ins_alg_ruimte_type = 'R',
|
|
ins_alg_ruimte_key = :old.prs_alg_ruimte_key
|
|
WHERE ins_deel.ins_alg_ruimte_key = :old.prs_werkplek_key
|
|
AND ins_deel.ins_alg_ruimte_type = 'W';
|
|
UPDATE ins_deel
|
|
SET ins_alg_ruimte_type_org = 'R',
|
|
ins_alg_ruimte_key_org = :old.prs_alg_ruimte_key
|
|
WHERE ins_deel.ins_alg_ruimte_key_org = :old.prs_werkplek_key
|
|
AND ins_deel.ins_alg_ruimte_type_org = 'W';
|
|
END;
|
|
/
|
|
CREATE_TRIGGER(prs_t_prs_ruimteafdeling_B_IU)
|
|
BEFORE INSERT OR UPDATE ON prs_ruimteafdeling
|
|
FOR EACH ROW
|
|
BEGIN
|
|
UPDATE_PRIMARY_KEY(prs_ruimteafdeling_key, prs_s_prs_ruimteafdeling_key);
|
|
END;
|
|
/
|
|
|
|
CREATE_TRIGGER(prs_t_prs_perslidwerkplek_B_IU)
|
|
BEFORE INSERT OR UPDATE ON prs_perslidwerkplek
|
|
FOR EACH ROW
|
|
BEGIN
|
|
UPDATE_PRIMARY_KEY(prs_perslidwerkplek_key, prs_s_prs_perslidwerkplek_key);
|
|
UPDATE_AANMAAKDATUM(prs_perslidwerkplek, prs_perslidwerkplek_aanmaak);
|
|
END;
|
|
/
|
|
|
|
CREATE_TRIGGER(prs_t_prs_bedrijf_B_I)
|
|
BEFORE INSERT ON prs_bedrijf
|
|
FOR EACH ROW
|
|
BEGIN
|
|
UPDATE_PRIMARY_KEY(prs_bedrijf_key,prs_s_prs_alluitvoerende_keys);
|
|
UPDATE_AANMAAKDATUM(prs_bedrijf, prs_bedrijf_aanmaak);
|
|
END;
|
|
/
|
|
|
|
CREATE_TRIGGER(prs_t_prs_bedrijf_B_IU)
|
|
BEFORE INSERT OR UPDATE ON prs_bedrijf
|
|
FOR EACH ROW
|
|
BEGIN
|
|
UPDATE_UPPER(prs_bedrijf_naam,prs_bedrijf_naam_upper,prs_bedrijf);
|
|
SET_VERWIJDER_CHILDREN(prs_srtperslid, prs_bedrijf_key,
|
|
prs_bedrijf_verwijder, prs_srtperslid_verwijder,prs_bedrijf);
|
|
|
|
// Niet verwijderen als nog MLD_OPDRs zijn met status 'Uitgegeven' en
|
|
// uitvoerende dit bedrijf
|
|
IF :new.prs_bedrijf_verwijder IS NOT NULL AND :old.prs_bedrijf_verwijder IS NULL
|
|
THEN
|
|
DECLARE
|
|
dummy CHAR;
|
|
BEGIN
|
|
SELECT 'X'
|
|
INTO dummy
|
|
FROM mld_opdr MLD_O
|
|
WHERE MLD_O.mld_statusopdr_key IN (5, 8)
|
|
AND MLD_O.mld_uitvoerende_keys = :new.prs_bedrijf_key;
|
|
raise_application_error(-20000, 'prs_m086');
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND
|
|
THEN NULL;
|
|
WHEN TOO_MANY_ROWS
|
|
THEN raise_application_error(-20000, 'prs_m086');
|
|
END;
|
|
END IF;
|
|
|
|
IF :new.prs_bedrijf_verwijder IS NOT NULL AND :old.prs_bedrijf_verwijder IS NULL THEN
|
|
DECLARE
|
|
dummy CHAR;
|
|
BEGIN
|
|
SELECT 'x'
|
|
INTO dummy
|
|
FROM cnt_v_aanwezigcontract
|
|
WHERE cnt_v_aanwezigcontract.cnt_prs_bedrijf_key = :old.prs_bedrijf_key
|
|
AND cnt_v_aanwezigcontract.cnt_contract_looptijd_tot > SYSDATE
|
|
AND cnt_v_aanwezigcontract.cnt_contract_status <> 1;
|
|
raise_application_error(-20000, 'cnt_m023');
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND THEN NULL;
|
|
WHEN TOO_MANY_ROWS THEN raise_application_error(-20000, 'cnt_m023');
|
|
END;
|
|
END IF;
|
|
-- Ruim de afhankelijheden op:
|
|
IF :new.prs_bedrijf_verwijder IS NOT NULL AND :old.prs_bedrijf_verwijder IS NULL
|
|
THEN
|
|
UPDATE prs_afdeling
|
|
SET prs_afdeling_verwijder = :new.prs_bedrijf_verwijder
|
|
WHERE prs_afdeling_verwijder IS NULL AND prs_bedrijf_key = :old.prs_bedrijf_key;
|
|
|
|
UPDATE prs_contactpersoon
|
|
SET prs_contactpersoon_verwijder = :new.prs_bedrijf_verwijder
|
|
WHERE prs_contactpersoon_verwijder IS NULL
|
|
AND prs_bedrijf_key = :old.prs_bedrijf_key;
|
|
END IF;
|
|
END;
|
|
/
|
|
|
|
CREATE_TRIGGER(prs_t_prs_bedrijf_B_D)
|
|
BEFORE DELETE ON prs_bedrijf
|
|
FOR EACH ROW
|
|
BEGIN
|
|
DELETE FROM prs_kenmerklink KL WHERE KL.prs_link_key=:old.prs_bedrijf_key AND KL.prs_kenmerklink_niveau='B';
|
|
END;
|
|
/
|
|
|
|
CREATE_TRIGGER(prs_t_prs_bedrijfbedrijf_B_IU)
|
|
BEFORE INSERT OR UPDATE ON prs_bedrijf_bedrijf
|
|
FOR EACH ROW
|
|
BEGIN
|
|
UPDATE_PRIMARY_KEY(prs_bedrijf_bedrijf_key, prs_s_prs_bedrijfbedrijf_key);
|
|
END;
|
|
/
|
|
|
|
CREATE_TRIGGER(prs_t_prs_bedrijfadres_B_I)
|
|
BEFORE INSERT ON prs_bedrijfadres
|
|
FOR EACH ROW
|
|
BEGIN
|
|
UPDATE_PRIMARY_KEY(prs_bedrijfadres_key, prs_s_prs_bedrijfadres_key);
|
|
END;
|
|
/
|
|
|
|
CREATE_TRIGGER(prs_t_prs_bedrijfadres_srtnoti_B_I)
|
|
BEFORE INSERT ON prs_bedrijfadres_srtnoti
|
|
FOR EACH ROW
|
|
BEGIN
|
|
UPDATE_PRIMARY_KEY(prs_bedrijfadres_srtnoti_KEY, prs_s_prs_bedrijfadres_srtnoti_key);
|
|
END;
|
|
/
|
|
|
|
CREATE_TRIGGER(prs_t_prs_prsfaq_B_I)
|
|
BEFORE INSERT ON prs_prsfaq
|
|
FOR EACH ROW
|
|
BEGIN
|
|
UPDATE_PRIMARY_KEY(prs_prsfaq_key, prs_s_prs_prsfaq_key);
|
|
END;
|
|
/
|
|
|
|
CREATE_TRIGGER(prs_t_prs_kenmerk_b_iu)
|
|
BEFORE INSERT OR UPDATE ON prs_kenmerk
|
|
FOR EACH ROW
|
|
BEGIN
|
|
UPDATE_PRIMARY_KEY(prs_kenmerk_key, prs_s_prs_kenmerk_key);
|
|
UPDATE_UPPER(prs_kenmerk_omschrijving, prs_kenmerk_upper,prs_kenmerk);
|
|
UPDATE_UPPER(prs_kenmerk_code, prs_kenmerk_code, prs_kenmerk);
|
|
|
|
IF (:new.prs_kenmerk_verwijder IS NOT NULL AND :old.prs_kenmerk_verwijder IS NULL AND
|
|
:new.prs_kenmerk_systeem = 1)
|
|
THEN
|
|
raise_application_error(-20000, 'ALG_M238');
|
|
END IF;
|
|
|
|
IF :new.prs_kenmerk_kenmerktype IN ('C', 'N') AND :new.prs_kenmerk_lengte IS NULL
|
|
THEN
|
|
raise_application_error(-20000, 'ALG_C_ALG_KENMERK_LENGTE');
|
|
END IF;
|
|
IF :new.prs_kenmerk_kenmerktype = 'N' AND :new.prs_kenmerk_lengte > 20
|
|
THEN
|
|
:new.prs_kenmerk_lengte := 20;
|
|
END IF;
|
|
IF :new.prs_kenmerk_kenmerktype = 'N' AND :old.prs_kenmerk_key IS NOT NULL
|
|
THEN
|
|
-- An existing property of type N
|
|
IF :old.prs_kenmerk_nmin <> :new.prs_kenmerk_nmin OR
|
|
(:old.prs_kenmerk_nmin IS NULL AND :new.prs_kenmerk_nmin IS NOT NULL)
|
|
THEN
|
|
DECLARE
|
|
Dummy CHAR;
|
|
BEGIN
|
|
SELECT 'X'
|
|
INTO Dummy
|
|
FROM prs_kenmerkLink
|
|
WHERE FAC.SAFE_TO_NUMBER(prs_kenmerkLink_waarde) < :new.prs_kenmerk_nmin
|
|
AND prs_kenmerk_key = :old.prs_kenmerk_key;
|
|
IF :new.prs_kenmerk_niveau = 'G' THEN
|
|
raise_application_error(-20000, 'ALG_C_ALG_KENMERK_MIN_G');
|
|
ELSE
|
|
raise_application_error(-20000, 'ALG_C_ALG_KENMERK_MIN_R');
|
|
END IF;
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND
|
|
THEN NULL;
|
|
WHEN TOO_MANY_ROWS THEN
|
|
BEGIN
|
|
IF :new.prs_kenmerk_niveau = 'G' THEN
|
|
raise_application_error(-20000, 'ALG_C_ALG_KENMERK_MIN_G');
|
|
ELSE
|
|
raise_application_error(-20000, 'ALG_C_ALG_KENMERK_MIN_R');
|
|
END IF;
|
|
END;
|
|
END;
|
|
END IF;
|
|
|
|
IF :old.prs_kenmerk_nmax <> :new.prs_kenmerk_nmax OR
|
|
(:old.prs_kenmerk_nmax IS NULL AND :new.prs_kenmerk_nmax IS NOT NULL)
|
|
THEN
|
|
DECLARE
|
|
Dummy CHAR;
|
|
BEGIN
|
|
SELECT 'X'
|
|
INTO Dummy
|
|
FROM prs_kenmerkLink
|
|
WHERE FAC.SAFE_TO_NUMBER(prs_kenmerkLink_waarde) > :new.prs_kenmerk_nmax
|
|
AND prs_kenmerk_key = :old.prs_kenmerk_key;
|
|
IF :new.prs_kenmerk_niveau = 'G' THEN
|
|
raise_application_error(-20000, 'ALG_C_ALG_KENMERK_MAX_G');
|
|
ELSE
|
|
raise_application_error(-20000, 'ALG_C_ALG_KENMERK_MAX_R');
|
|
END IF;
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND
|
|
THEN NULL;
|
|
WHEN TOO_MANY_ROWS THEN
|
|
BEGIN
|
|
IF :new.prs_kenmerk_niveau = 'G' THEN
|
|
raise_application_error(-20000, 'ALG_C_ALG_KENMERK_MAX_G');
|
|
ELSE
|
|
raise_application_error(-20000, 'ALG_C_ALG_KENMERK_MAX_R');
|
|
END IF;
|
|
END;
|
|
END;
|
|
END IF;
|
|
END IF;
|
|
UPDATE_AANMAAKDATUM(prs_kenmerk, prs_kenmerk_aanmaak);
|
|
END;
|
|
/
|
|
|
|
CREATE_TRIGGER(prs_t_prs_kenmerkLink_b_iu)
|
|
BEFORE INSERT OR UPDATE ON prs_kenmerkLink
|
|
FOR EACH ROW
|
|
BEGIN
|
|
UPDATE_AANMAAKDATUM(prs_kenmerklink, prs_kenmerkLink_aanmaak);
|
|
/*
|
|
** Controleer eerst of de ingevulde waarde goed is.
|
|
*/
|
|
IF (:new.prs_kenmerkLink_waarde <> :old.prs_kenmerkLink_waarde
|
|
OR :old.prs_kenmerkLink_waarde IS NULL
|
|
OR :new.prs_kenmerkLink_waarde IS NULL)
|
|
AND :new.prs_link_key IS NOT NULL
|
|
THEN
|
|
DECLARE
|
|
KenmerkOmschr prs_kenmerk.prs_kenmerk_omschrijving%TYPE;
|
|
KenmerkType prs_kenmerk.prs_kenmerk_kenmerktype%TYPE;
|
|
KenmerkLengte prs_kenmerk.prs_kenmerk_lengte%TYPE;
|
|
KenmerkDec prs_kenmerk.prs_kenmerk_dec%TYPE;
|
|
KenmerkNMin prs_kenmerk.prs_kenmerk_nmin%TYPE;
|
|
KenmerkNMax prs_kenmerk.prs_kenmerk_nmax%TYPE;
|
|
NumberWaarde NUMBER(25,5);
|
|
FormatMask VARCHAR2(60);
|
|
KenmerkWaarde prs_kenmerklink.prs_kenmerklink_waarde%TYPE;
|
|
BEGIN
|
|
KenmerkWaarde := :new.prs_kenmerkLink_waarde;
|
|
BEGIN
|
|
DECLARE
|
|
dummy VARCHAR2(1);
|
|
BEGIN
|
|
IF :new.prs_kenmerkLink_niveau = 'P'
|
|
THEN
|
|
SELECT 'X'
|
|
INTO dummy
|
|
FROM prs_perslid
|
|
WHERE prs_perslid_key = :new.prs_link_key;
|
|
ELSIF :new.prs_kenmerkLink_niveau = 'A'
|
|
THEN
|
|
SELECT 'X'
|
|
INTO dummy
|
|
FROM prs_afdeling
|
|
WHERE prs_afdeling_key = :new.prs_link_key;
|
|
ELSIF :new.prs_kenmerkLink_niveau = 'B'
|
|
THEN
|
|
SELECT 'X'
|
|
INTO dummy
|
|
FROM prs_bedrijf
|
|
WHERE prs_bedrijf_key = :new.prs_link_key;
|
|
ELSIF :new.prs_kenmerkLink_niveau = 'C'
|
|
THEN
|
|
SELECT 'X'
|
|
INTO dummy
|
|
FROM prs_contactpersoon
|
|
WHERE prs_contactpersoon_key = :new.prs_link_key;
|
|
END IF;
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND
|
|
THEN raise_application_error(-20000, 'ALG_M015');
|
|
END;
|
|
SELECT prs_kenmerk_omschrijving
|
|
, prs_kenmerk_kenmerktype
|
|
, prs_kenmerk_lengte
|
|
, prs_kenmerk_dec
|
|
, prs_kenmerk_nmin
|
|
, prs_kenmerk_nmax
|
|
INTO KenmerkOmschr
|
|
, KenmerkType
|
|
, KenmerkLengte
|
|
, KenmerkDec
|
|
, KenmerkNMin
|
|
, KenmerkNMax
|
|
FROM prs_kenmerk
|
|
WHERE prs_kenmerk_key = :new.prs_kenmerk_key;
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND
|
|
THEN raise_application_error(-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', '.');
|
|
APPLICATION_ERROR_GOTO(-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.prs_kenmerkLink_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.prs_kenmerkLink_waarde := KenmerkWaarde;
|
|
END IF;
|
|
END;
|
|
UPDATE_PRIMARY_KEY(prs_kenmerkLink_key, prs_s_prs_kenmerkLink_key);
|
|
END IF;
|
|
END;
|
|
/
|
|
|
|
|
|
CREATE_TRIGGER(prs_t_prs_collega_B_IU)
|
|
BEFORE INSERT OR UPDATE ON prs_collega
|
|
FOR EACH ROW
|
|
BEGIN
|
|
UPDATE_PRIMARY_KEY(prs_collega_key,prs_s_prs_collega_key);
|
|
END;
|
|
/
|
|
|
|
CREATE_TRIGGER(prs_t_prs_contactpersoon_B_IU)
|
|
BEFORE INSERT OR UPDATE ON prs_contactpersoon
|
|
FOR EACH ROW
|
|
BEGIN
|
|
UPDATE_PRIMARY_KEY(prs_contactpersoon_key,prs_s_prs_contactpersoon_key);
|
|
END;
|
|
/
|
|
|
|
CREATE_TRIGGER(prs_t_prs_contactpersoon_B_D)
|
|
BEFORE DELETE ON prs_contactpersoon
|
|
FOR EACH ROW
|
|
BEGIN
|
|
DELETE FROM prs_kenmerklink KL WHERE KL.prs_link_key=:old.prs_contactpersoon_key AND KL.prs_kenmerklink_niveau='C';
|
|
END;
|
|
/
|
|
|
|
CREATE_TRIGGER(prs_t_prs_contactpers_loc_b_iu)
|
|
BEFORE INSERT OR UPDATE ON prs_contactpersoon_locatie
|
|
FOR EACH ROW
|
|
BEGIN
|
|
UPDATE_PRIMARY_KEY(prs_contactpersoon_locatie_key,prs_s_prs_contactpers_loc_key);
|
|
END;
|
|
/
|
|
|
|
CREATE_TRIGGER(prs_t_prs_dienst_B_IU)
|
|
BEFORE INSERT OR UPDATE ON prs_dienst
|
|
FOR EACH ROW
|
|
BEGIN
|
|
UPDATE_PRIMARY_KEY(prs_dienst_key,prs_s_prs_dienst_key);
|
|
END;
|
|
/
|
|
|
|
CREATE_TRIGGER(prs_t_prs_bedrijfdnstloc_B_IU)
|
|
BEFORE INSERT OR UPDATE ON prs_bedrijfdienstlocatie
|
|
FOR EACH ROW
|
|
BEGIN
|
|
UPDATE_PRIMARY_KEY(prs_bedrijfdienstlocatie_key,prs_s_prs_bedrijfdienstloc_key);
|
|
END;
|
|
/
|
|
|
|
AUDIT_BEGIN(prs_kostenplaatsgrp)
|
|
AUDIT_VALUE(prs_kostenplaatsgrp, prs_kostenplaatsgrp_oms)
|
|
AUDIT_VALUE(prs_kostenplaatsgrp, prs_kostenplaatsgrp_nr)
|
|
AUDIT_VALUE(prs_kostenplaatsgrp, prs_perslid_key)
|
|
AUDIT_VALUE(prs_kostenplaatsgrp, prs_kostenplaatsgrp_fiat2_key)
|
|
AUDIT_VALUE(prs_kostenplaatsgrp, prs_kostenplaatsgrp_fiat3_key)
|
|
AUDIT_VALUE(prs_kostenplaatsgrp, prs_kostenplaatsgrp_limiet)
|
|
AUDIT_VALUE(prs_kostenplaatsgrp, prs_kostenplaatsgrp_limperiode)
|
|
AUDIT_VALUE(prs_kostenplaatsgrp, prs_kostenplaatsgrp_fin_limit1)
|
|
AUDIT_VALUE(prs_kostenplaatsgrp, prs_kostenplaatsgrp_fin_limit2)
|
|
AUDIT_END()
|
|
|
|
CREATE_TRIGGER(prs_t_prs_kostenplaatsgrp_B_IU)
|
|
BEFORE INSERT OR UPDATE ON prs_kostenplaatsgrp
|
|
FOR EACH ROW
|
|
BEGIN
|
|
UPDATE_PRIMARY_KEY(prs_kostenplaatsgrp_key, prs_s_prs_kostenplaatsgrp_key);
|
|
END;
|
|
/
|
|
|
|
AUDIT_BEGIN(prs_kostenplaats)
|
|
AUDIT_VALUE(prs_kostenplaats, prs_kostenplaats_nr)
|
|
AUDIT_VALUE(prs_kostenplaats, prs_kostenplaats_module)
|
|
AUDIT_VALUE(prs_kostenplaats, prs_kostenplaats_omschrijving)
|
|
AUDIT_VALUE(prs_kostenplaats, prs_perslid_key)
|
|
AUDIT_VALUE(prs_kostenplaats, prs_kostenplaatsgrp_key)
|
|
AUDIT_VALUE(prs_kostenplaats, prs_kostenplaats_extern)
|
|
AUDIT_VALUE(prs_kostenplaats, prs_kostenplaats_fiat)
|
|
AUDIT_VALUE(prs_kostenplaats, prs_kostenplaats_eind)
|
|
AUDIT_VALUE(prs_kostenplaats, prs_kostenplaats_limiet)
|
|
AUDIT_VALUE(prs_kostenplaats, prs_kostenplaats_limietperiode)
|
|
AUDIT_VALUE(prs_kostenplaats, prs_kostenplaats_verwijder)
|
|
AUDIT_END()
|
|
|
|
CREATE_TRIGGER(prs_t_prs_kostenplaats_B_IU)
|
|
BEFORE INSERT OR UPDATE ON prs_kostenplaats
|
|
FOR EACH ROW
|
|
BEGIN
|
|
UPDATE_PRIMARY_KEY(prs_kostenplaats_key, prs_s_prs_kostenplaats_key);
|
|
UPDATE_UPPER(prs_kostenplaats_nr, prs_kostenplaats_upper, prs_kostenplaats);
|
|
IF :new.prs_kostenplaats_verwijder IS NOT NULL and :old.prs_kostenplaats_verwijder IS NULL
|
|
THEN
|
|
DELETE FROM prs_perslidkostenplaats
|
|
WHERE prs_kostenplaats_key = :new.prs_kostenplaats_key;
|
|
END IF;
|
|
END;
|
|
/
|
|
|
|
AUDIT_BEGIN(prs_kostenplaatsdisc)
|
|
AUDIT_VALUE(prs_kostenplaatsdisc, prs_kostenplaats_key)
|
|
AUDIT_VALUE(prs_kostenplaatsdisc, ins_discipline_key)
|
|
AUDIT_VALUE(prs_kostenplaatsdisc, prs_kostenplaatsdisc_limiet)
|
|
AUDIT_END()
|
|
|
|
CREATE_TRIGGER(prs_t_prs_kostenpltsdisc_B_IU)
|
|
BEFORE INSERT OR UPDATE ON prs_kostenplaatsdisc
|
|
FOR EACH ROW
|
|
BEGIN
|
|
UPDATE_PRIMARY_KEY(prs_kostenplaatsdisc_key, prs_s_prs_kostenplaatsdisc_key);
|
|
END;
|
|
/
|
|
|
|
AUDIT_BEGIN(prs_perslidkostenplaats)
|
|
AUDIT_VALUE(prs_perslidkostenplaats, prs_perslid_key)
|
|
AUDIT_VALUE(prs_perslidkostenplaats, prs_kostenplaats_key)
|
|
AUDIT_VALUE(prs_perslidkostenplaats, prs_perslidkostenplaats_boeken)
|
|
AUDIT_VALUE(prs_perslidkostenplaats, prs_perslidkostenplaats_inzage)
|
|
AUDIT_END()
|
|
|
|
CREATE_TRIGGER(prs_t_prs_perslidkp_B_IU)
|
|
BEFORE INSERT OR UPDATE ON prs_perslidkostenplaats
|
|
FOR EACH ROW
|
|
BEGIN
|
|
UPDATE_PRIMARY_KEY(prs_perslidkostenplaats_key, prs_s_prs_perslidkp_key);
|
|
END;
|
|
/
|
|
|
|
CREATE_TRIGGER(prs_t_prs_project_B_IU)
|
|
BEFORE INSERT OR UPDATE ON prs_project
|
|
FOR EACH ROW
|
|
BEGIN
|
|
UPDATE_PRIMARY_KEY(prs_project_key, prs_s_prs_project_key);
|
|
END;
|
|
/
|
|
|
|
CREATE_TRIGGER(prs_t_prs_kostensoortgrp_B_IU)
|
|
BEFORE INSERT OR UPDATE ON prs_kostensoortgrp
|
|
FOR EACH ROW
|
|
BEGIN
|
|
UPDATE_PRIMARY_KEY(prs_kostensoortgrp_key, prs_s_prs_kostensoortgrp_key);
|
|
END;
|
|
/
|
|
|
|
AUDIT_BEGIN(prs_kostensoort)
|
|
AUDIT_VALUE(prs_kostensoort, prs_kostensoort_oms)
|
|
AUDIT_VALUE(prs_kostensoort, prs_kostensoort_refcode)
|
|
AUDIT_VALUE(prs_kostensoort, prs_kostensoort_doorbelasten)
|
|
AUDIT_VALUE(prs_kostensoort, prs_kostensoort_btw)
|
|
AUDIT_VALUE(prs_kostensoort, prs_kostenplaats_key)
|
|
AUDIT_VALUE(prs_kostensoort, prs_kostensoortgrp_key)
|
|
AUDIT_VALUE(prs_kostensoort, prs_kostensoort_altcode)
|
|
AUDIT_END()
|
|
|
|
CREATE_TRIGGER(prs_t_prs_kostensoort_B_IU)
|
|
BEFORE INSERT OR UPDATE ON prs_kostensoort
|
|
FOR EACH ROW
|
|
BEGIN
|
|
UPDATE_PRIMARY_KEY(prs_kostensoort_key, prs_s_prs_kostensoort_key);
|
|
UPDATE_UPPER(prs_kostensoort_oms, prs_kostensoort_upper, prs_kostensoort);
|
|
END;
|
|
/
|
|
|
|
AUDIT_BEGIN(prs_kostencombinatie)
|
|
AUDIT_VALUE(prs_kostencombinatie, prs_kostenplaatsgrp_key)
|
|
AUDIT_VALUE(prs_kostencombinatie, prs_kostensoort_key)
|
|
AUDIT_END()
|
|
|
|
CREATE_TRIGGER(prs_t_prs_kostencomb_B_IU)
|
|
BEFORE INSERT OR UPDATE ON prs_kostencombinatie
|
|
FOR EACH ROW
|
|
BEGIN
|
|
UPDATE_PRIMARY_KEY(prs_kostencombinatie_key, prs_s_prs_kostencombinatie_key);
|
|
END;
|
|
/
|
|
|
|
CREATE_TRIGGER(prs_t_prs_perslid_inzet_B_IU)
|
|
BEFORE INSERT OR UPDATE ON prs_perslid_inzetbaar
|
|
FOR EACH ROW
|
|
BEGIN
|
|
UPDATE_PRIMARY_KEY(prs_perslid_inzetbaar_key, prs_s_prs_perslid_inzet_key);
|
|
END;
|
|
/
|
|
|
|
CREATE_TRIGGER(prs_t_prs_relatietype_B_IU)
|
|
BEFORE INSERT OR UPDATE ON prs_relatietype
|
|
FOR EACH ROW
|
|
BEGIN
|
|
UPDATE_PRIMARY_KEY(prs_relatietype_key, prs_s_prs_relatietype_key);
|
|
CHECK_NOG_REFERENCES(prs_relatietype, prs_relatietype_verwijder, prs_v_aanwezigbedrijf,
|
|
prs_relatietype_key, 'PRS_M182');
|
|
END;
|
|
/
|
|
|
|
CREATE_TRIGGER(prs_t_perslid_tabs_B_I)
|
|
BEFORE INSERT ON prs_perslid_tabs
|
|
FOR EACH ROW
|
|
BEGIN
|
|
UPDATE_PRIMARY_KEY(prs_perslid_tabs_key, prs_s_prs_perslid_tabs_key);
|
|
END;
|
|
/
|
|
|
|
CREATE_TRIGGER(prs_t_perslid_cols_B_I)
|
|
BEFORE INSERT ON prs_perslid_cols
|
|
FOR EACH ROW
|
|
BEGIN
|
|
UPDATE_PRIMARY_KEY(prs_perslid_cols_key, prs_s_prs_perslid_cols_key);
|
|
END;
|
|
/
|
|
REGISTERRUN('$Id$')
|
|
|
|
#endif
|