928 lines
35 KiB
Plaintext
928 lines
35 KiB
Plaintext
#ifdef PRS // 13-03-96 AH
|
|
|
|
/* CREA_TRI.SRC maakt de triggers aan voor PRS */
|
|
|
|
|
|
/*
|
|
* Revisie:
|
|
* 03-11-1999 BIV UPDATE_AANMAAKDATUM(..) toegevoegd bij tabellen die gebruikt worden in Facilitor.
|
|
* 20-10-1999 RD Tbv configureerbare kenmerken personen, nieuwe triggers: prs_t_prs_refkenmerk_b_iu,
|
|
prs_t_prs_kenmerk_b_iu, prs_t_prs_kenmerk_b_d, prs_t_prs_kenmerkLink_b_iu.
|
|
* 02-09-1999 BIV Triggers prs_t_prs_perslid aangepast i.v.m. UPPER op prs_perslid_initialen
|
|
* 25-05-1999 PF SET_VERWIJDER_CHILDREN(prs_perslidwerkplek..) toegevoegd ipv CHECK_NOG_REFERENCES
|
|
* 28-04-1999 PF #2376 CHECK_CADMUTATIE2 bij prs_werkplek toegevoegd; BCO/BCP restanten verwijderd.
|
|
* --- 01.44 ---
|
|
* 20-04-1999 BIV Trigger prs_t_prs_werkplek aangepast. Verwijderdatum van de delen worden nu niet meer gelijk aan SYSDATE,
|
|
* maar aan :new.prs_werkplek_verwijder i.v.m. mogelijke Undo vanuit AutoCAD.
|
|
* --- 01.43 ---
|
|
* --- 01.42 ---
|
|
* --- 01.41 ---
|
|
* --- 01.40 ---
|
|
* --- 01.39 ---
|
|
* --- 01.38 ---
|
|
* --- 01.37 ---
|
|
* --- 01.36 ---
|
|
* --- 01.35 ---
|
|
* --- 01.34 ---
|
|
* 19/02/1998 AH Nieuwe #define AKZ gebruikt
|
|
* 10/02/1998 AH Trigger voor AKZ_PRSIMPORT toegevoegd
|
|
* 13/11/1997 AH #1473, CREATE TRIGGER vervangen door CREATE_TRIGGER()
|
|
* --- 01.33 ---
|
|
* --- 01.32 ---
|
|
* --- 01.31 ---
|
|
* --- 01.30 ---
|
|
* 10-7-97 AH #1365, PRS_PERSLIDWERKPLEK_VERWIJDER-velden weggehaald.
|
|
* 6/20/97 AH #1312: PRS_T_PRS_AFDELING_B_IU aangepast. De CASCADE-verwijderen van PRS_PERSLIDWERKPLEK
|
|
* verplaatst naar PRS011/Verwijderen. In de trigger een RESTRICTED toegevoegd om
|
|
* evt. fouten te kunnen voorkomen.
|
|
* 5/26/97 AH #1255: Het VERWIJDER-veld in PRS_PERSLIDWERKPLEK is overbodig en mag niet meer
|
|
* meer gebruikt worden. Hiervoor is een controle toegevoegd in
|
|
* PRS_T_PRS_PERSLIDWERKPLEK_B_IU.
|
|
* PRS_T_PRS_PERSLID_B_IU aangepast. De CASCADE-verwijderen van PRS_PERSLIDWERKPLEK
|
|
* verplaatst naar PRS013/Verwijderen. In de trigger een RESTRICTED toegevoegd om
|
|
* evt. fouten te kunnen voorkomen.
|
|
* --- 01.29 ---
|
|
* --- 01.28 ---
|
|
* --- 01.27 ---
|
|
* --- 01.26 ---
|
|
* --- 01.25 ---
|
|
* 10-12-96 AH PRS_BEDRIJF en PRS_LOCBESTEK-triggers gebruiken ten onrechte
|
|
* BCO_DEFAULTUITV_KEYS zonder BCO
|
|
* --- 01.24 ---
|
|
* 04-12-96 AH PRS_BEDRIJF: Checkbox 'Leverancier' mag niet uitgezet worden
|
|
* als er nog bestelopdrachten bij horen.
|
|
* Checkbox 'Uitvoerende' mag niet worden uitgezet als het bedrijf
|
|
* of een functie bij bedrijf nog als default uitvoerende bij een
|
|
* INS_SRTDEEL of als het bedrijf of functie bij bedrijf als
|
|
* Uitvoerende/Default uitvoerende bij een niet verwerkte opdracht
|
|
* voorkomt.
|
|
* --- 01.23 ---
|
|
* 15-11-96 AH De DELETE-code van locatiebestek is nu een FUNCTION geworden
|
|
* en wordt aangeroepen en in PRS021 en PRS023 bij Verwijderen
|
|
* De trigger PRS_T_PRS_LOCATIEBESTEK_B_D is verwijderd.
|
|
* 14-11-96 AH LOG#1035: PRS_T_PRS_LOCATIEBESTEK_B_IU en _B_D aangepast.
|
|
* 13-11-96 AH LOG#1035: PRS_T_PRS_DISCBESTEK_B_D aangepast, Als discipline-
|
|
* bestek als default uitvoerende is aangegeven bij mld_opdr
|
|
* of bij prevopdr dan mag deze ook niet verwijderd worden.
|
|
* Zelfde extra conditie geldt bij verwijderen LocatieBestek
|
|
* --- 01.22 ---
|
|
* --- 01.21 ---
|
|
* 28-10-96 AH LOG#914: PRS_T_PRS_LOCATIEBESTEK_B_D toegevoegd. Controle op
|
|
* uitgegeven opdrachten voor de locatie bij bestek.
|
|
* 28-10-96 AH LOG#910: In PRS_T_PRS_PERSLID_B_IU werd BCO_NIETBESCHIK verwijderd
|
|
* Deze codeis verplaatst naar Verwijderen in PRS013.FMB
|
|
* 25-10-96 AH LOG#906: PRS_T_PRS_SRTPERSLID_B_IU aangepast.
|
|
* 01-10-96 KTH prs_v_aanwezigperslidwerkplek wordt prs_perslidwerkplek ivm.
|
|
* mutating table prs_werkplek bij verwijderen van werkplekken
|
|
* --- 01.20 ---
|
|
* 16-09-96 AH PRS_T_PRS_BEDRIJF_B_IU aangepast: de bijbehorende functies
|
|
* worden mee verwijderd. Lopende bestekken Resticted,
|
|
* Uitgegeven opdrachten Restricten.
|
|
* PRS_T_PRS_SRTPERSLID_B_IU aangepast: Verwijderen met Uitgegeven
|
|
* opdrachten Restricted.
|
|
* PRS_T_PRS_PERSLID_B_IU aangepast: Verwijderen met Uitgegeven
|
|
* opdrachten Restricted. Verwijderen BCO_NIETBESCHIK cascade.
|
|
* PRS_T_PRS_DISCBESTEK_B_D aangepast: Verwijderen met opdrachten
|
|
* Restricted.
|
|
* --- 01.19 ---
|
|
* 20-08-96 AH In trigger voor SRTPERSLID #ifdef BCO toegevoegd
|
|
* 12-08-96 AH PRS_T_PRS_BESTEK_B_IU aangepast: Bestek_key komt uit
|
|
* PRS_S_PRS_BESTEK_KEY. Bestek is zelf geen uitvoerende.
|
|
* 01-08-96 RW Disciplinebestek is nu uitvoerende, sequence aangepast.
|
|
* 01-08-96 AH Logmelding 687 ifdef HUI in PRS_T_PRS_WERKPLEK_B_IU toegevoegd.
|
|
* 31-07-96 AH PRS_T_PRS_DISCBESTEK_B_IU toegevoegd. De koppeling tussen
|
|
* DISCIPLINE en BESTEK mag niet verwijderd worden als het
|
|
* bestek als default uitvoerende is aangegeven bij INS_SRTDEEL.
|
|
* 31-07-96 AH PRS_T_PRS_BESTEK_B_IU aangepast, PRS_BESTEK_UPPER_NR-update
|
|
* 30-07-96 KTH - THEN en END IF miste in prs_t_prs_srtperslid_B_IU
|
|
* - prs_t_prs_disciplinebestek_B_IU verkort naar
|
|
* prs_t_prs_discbestek_B_IU
|
|
* 29-07-96 KTH _B_IU-triggers voor PRS_BESTEK, PRS_DISCIPLINEBESTEK en
|
|
* PRS_LOCATIEBESTEK toegevoegd (vooralsnog #ifdef INS)
|
|
* 25-07-96 AH PRS_T_PRS_WERKPLEK_B_IU aangepast: ORA-4091 ...mutating....
|
|
* opgelost.
|
|
* 25-07-96 AH PRS_T_PRS_PERSLID_B_IU en PRS_T_PRS_AFDELING_B_IU aangepast:
|
|
* Als een persoon/afdeling verwijderd
|
|
* wordt EN de persoon/afdeling heeft nog inventaris, dan wordt de inventaris
|
|
* ontkoppeld en evt. gemerged met inventaris die nog in die
|
|
* ruimte of werkplek of slaapplaats staat.
|
|
* 27-06-96 AH PRS_T_PRS_WERKPLEK_B_IU aangepast voor verwijderen
|
|
* werkplek/slaapplaats. Als er INS_DELEN geplaatst
|
|
* zijn, dan mag de werkplek/slaapplaats niet verwijderd worden.
|
|
* De PRS_DWGUPTODATE van de verdieping-tekening wordt NIET
|
|
* bijgewerkt, want er verdieping moet dan opgezocht worden
|
|
* en dat mag niet bij CASCADE-delete via ruimte of hoger in de
|
|
* OR-boom (ter voorkoming van ORA_4091 'Mutating-table').
|
|
* --- 01.18 ---
|
|
* --- 01.17 ---
|
|
* --- 01.16 ---
|
|
* --- 01.15 ---
|
|
* 22-05-96 AH PRS_BEDRIJF toegevoegd.
|
|
* --- 01.14 ---
|
|
* --- 01.13 ---
|
|
* --- 01.12 ---
|
|
* 03-04-96 AH PRS_PERSLID verwijderen -> INV_DELEN ontkoppelen.
|
|
* 03-04-96 AH PRS_AFDELING verwijderen -> INV_DELEN ontkoppelen.
|
|
* 03-04-96 AH PRS_WERKPLEK verwijderen -> INV_DELEN ontkoppelen.
|
|
* 19-03-96 AH Trigger PRS_T_PRS_WERKPLEK_B_IU aangepast voor PRS_DWGUPTODATE
|
|
* in ALG_VERDIEPING.
|
|
* 13-03-96 AH NIEUWE OPZET SRC-files.
|
|
*
|
|
* 05-03-96 AH PRS_T_PRS_PERSLID_B_IU aangepast voor "verwijderen"
|
|
* PRS_PERSLIDWERKPLEK.
|
|
* 20-02-96 PF Extra update-upper in prs_t_prs_afdeling_B_IU toegevoegd
|
|
* 16-02-96 PF UNIQUE-triggers verwijderd, nu via constraint:
|
|
* prs_t_prs_srtperslid_A_IU
|
|
* prs_t_prs_afdeling_A_IU
|
|
* 05-02-96 AH Trigger PRS_T_PRS_SRTPERSLID_B_IU aangepast, check verwijzing
|
|
* naar prs_perslid bij verwijderen.
|
|
* 02-02-96 AH Trigger PRS_T_PRS_AFDELING_A_IU aangepast, upper moet gechecked
|
|
* worden op aanwezig
|
|
* 31-01-96 AH De trigger van prs_t_srtperslid foutief gedefinieerd,
|
|
* CHECK_UNIQUE moet over de aanwezig-view.
|
|
* 20-12-95 KTH verwijzigen naar 'prs_m...' geintroduceerd
|
|
*/
|
|
|
|
#include "comsql.h"
|
|
#include "ALG\algsql.h"
|
|
|
|
#ifdef HOORTNIETBIJFACILITOR
|
|
CREATE OR REPLACE FUNCTION prs_t_prs_locatiebestek_B_D( bestek_key IN NUMBER, locatie_key IN NUMBER,
|
|
key_soort IN CHAR )
|
|
RETURN VARCHAR2 AS
|
|
error_msg fac_message.fac_message_code%TYPE;
|
|
BEGIN
|
|
error_msg := NULL;
|
|
#ifdef MLD
|
|
/* Een LocatieBestek mag NIET verwijderd worden als:
|
|
* - Het (discipline)bestek als (default) uitvoerende is aangegeven bij
|
|
* een of meer opdrachten die betrekking hebben op de te verwijderen
|
|
* LocatieBestek.
|
|
*/
|
|
|
|
DECLARE
|
|
dummy CHAR;
|
|
BEGIN
|
|
SELECT 'X'
|
|
INTO dummy
|
|
FROM prs_disciplinebestek PRS_DB, mld_opdr MLD_O,
|
|
mld_melding MLD_M, mld_v_onroerendgoed_locatie MLD_OL,
|
|
prs_locatiebestek PRS_LB
|
|
WHERE MLD_M.mld_alg_onroerendgoed_keys = MLD_OL.alg_onroerendgoed_keys
|
|
AND ((MLD_OL.alg_locatie_key = PRS_LB.alg_locatie_key
|
|
AND key_soort = 'B')
|
|
OR (MLD_OL.alg_locatie_key = locatie_key
|
|
AND key_soort = 'L'))
|
|
AND MLD_O.mld_melding_key = MLD_M.mld_melding_key
|
|
AND (PRS_DB.prs_disciplinebestek_key = MLD_O.mld_uitvoerende_keys
|
|
)
|
|
AND PRS_DB.prs_bestek_key = PRS_LB.prs_bestek_key
|
|
AND PRS_DB.prs_bestek_key = bestek_key;
|
|
error_msg := 'prs_m092';
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND
|
|
THEN NULL;
|
|
WHEN TOO_MANY_ROWS
|
|
THEN error_msg := 'prs_m092';
|
|
END;
|
|
#endif
|
|
RETURN error_msg;
|
|
END;
|
|
/
|
|
#endif //HOORTNIETBIJFACILITOR
|
|
|
|
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);
|
|
CHECK_NOG_REFERENCES(prs_perslid, prs_srtperslid_verwijder,
|
|
prs_v_aanwezigperslid, prs_srtperslid_key, 'prs_m014');
|
|
UPDATE_AANMAAKDATUM(prs_srtperslid, prs_srtperslid_aanmaak);
|
|
|
|
#ifdef MLD
|
|
// Niet verwijderen als nog MLD_OPDR's 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, mld_statusopdr MLD_S
|
|
WHERE MLD_O.mld_statusopdr_key = MLD_S.mld_statusopdr_key
|
|
AND MLD_S.mld_statusopdr_upper = 'MLD_UITGEGEVEN'
|
|
AND MLD_O.mld_uitvoerende_keys = :new.prs_srtperslid_key;
|
|
APPLICATION_ERROR(-20000, 'prs_m084');
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND
|
|
THEN NULL;
|
|
WHEN TOO_MANY_ROWS
|
|
THEN APPLICATION_ERROR(-20000, 'prs_m084');
|
|
END;
|
|
END IF;
|
|
#endif // MLD
|
|
END;
|
|
/
|
|
|
|
CREATE_TRIGGER(prs_t_prs_afdeling_B_IU)
|
|
BEFORE INSERT OR UPDATE ON prs_afdeling
|
|
FOR EACH ROW
|
|
BEGIN
|
|
-- LET OP : Deze trigger is ook gedefinieerd in RES !!
|
|
UPDATE_PRIMARY_KEY(prs_afdeling_key, prs_s_prs_afdeling_key);
|
|
UPDATE_UPPER(prs_afdeling_naam, prs_afdeling_upper);
|
|
CHECK_NOG_REFERENCES(prs_perslid, prs_afdeling_verwijder
|
|
,prs_v_aanwezigperslid, prs_afdeling_key, 'prs_m015');
|
|
UPDATE_AANMAAKDATUM(prs_afdeling, prs_afdeling_aanmaak);
|
|
--
|
|
-- 6/20/97/AH #1312, De CASCADE-verwijderen van
|
|
-- PRS_PERSLIDWERKPLEK verplaatst naar PRS011/Verwijderen. In de trigger een
|
|
-- RESTRICTED toegevoegd om evt. fouten te kunnen voorkomen.
|
|
--
|
|
CHECK_NOG_REFERENCES(prs_perslid, prs_afdeling_verwijder
|
|
,prs_v_aanwezigperslidwerkplek, prs_afdeling_key, 'prs_m172');
|
|
--
|
|
-- Afdeling mag alleen verwijderd worden als deze geen objecten meer in het bezit heeft.
|
|
--
|
|
DECLARE
|
|
dummy VARCHAR2(1);
|
|
BEGIN
|
|
IF :new.prs_afdeling_verwijder IS NOT NULL
|
|
THEN
|
|
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;
|
|
APPLICATION_ERROR(-20000,'prs_m173');
|
|
END IF;
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND THEN NULL;
|
|
WHEN TOO_MANY_ROWS THEN APPLICATION_ERROR(-20000,'prs_m173');
|
|
END;
|
|
END;
|
|
/
|
|
|
|
CREATE_TRIGGER(prs_t_prs_perslid_B_IU)
|
|
BEFORE INSERT OR UPDATE ON prs_perslid
|
|
FOR EACH ROW
|
|
BEGIN
|
|
UPDATE_PRIMARY_KEY(prs_perslid_key, prs_s_prs_alluitvoerende_keys);
|
|
UPDATE_UPPER(prs_perslid_naam, prs_perslid_upper);
|
|
UPDATE_UPPER(prs_perslid_initialen, prs_perslid_init_upper);
|
|
UPDATE_UPPER(prs_perslid_oslogin, prs_perslid_oslogin);
|
|
UPDATE_AANMAAKDATUM(prs_perslid, prs_perslid_aanmaak);
|
|
--
|
|
-- 10-7-97 AH #1365, PRS_PERSLIDWERKPLEK_VERWIJDER-velden weggehaald.
|
|
--
|
|
-- 5/26/97/AH #1255, PRS_T_PRS_PERSLID_B_IU aangepast. De CASCADE-verwijderen van
|
|
-- PRS_PERSLIDWERKPLEK verplaatst naar PRS013/Verwijderen. In de trigger een
|
|
-- RESTRICTED toegevoegd om evt. fouten te kunnen voorkomen.
|
|
--
|
|
CHECK_NOG_REFERENCES(prs_perslid, prs_perslid_verwijder
|
|
,prs_v_aanwezigperslidwerkplek, prs_perslid_key, 'prs_m174');
|
|
#ifdef MLD
|
|
-- Niet verwijderen als nog MLD_OPDR's zijn met status 'Uitgegeven' en
|
|
-- uitvoerende deze PERSLID.
|
|
IF :new.prs_perslid_verwijder IS NOT NULLDATUM
|
|
THEN
|
|
DECLARE
|
|
dummy VARCHAR2(1);
|
|
BEGIN
|
|
SELECT 'X'
|
|
INTO dummy
|
|
FROM mld_opdr MLD_O
|
|
, mld_statusopdr MLD_S
|
|
WHERE MLD_O.mld_statusopdr_key = MLD_S.mld_statusopdr_key
|
|
AND MLD_S.mld_statusopdr_upper = 'MLD_UITGEGEVEN'
|
|
AND MLD_O.mld_uitvoerende_keys = :new.prs_perslid_key;
|
|
APPLICATION_ERROR(-20000, 'prs_m085');
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND THEN NULL;
|
|
WHEN TOO_MANY_ROWS THEN APPLICATION_ERROR(-20000, 'prs_m085');
|
|
END;
|
|
END IF;
|
|
#endif // MLD
|
|
-- 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
|
|
DECLARE
|
|
dummy VARCHAR2(1);
|
|
BEGIN
|
|
IF :new.prs_perslid_verwijder IS NOT NULL
|
|
THEN
|
|
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;
|
|
APPLICATION_ERROR(-20000,'prs_m175');
|
|
END IF;
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND THEN NULL;
|
|
WHEN TOO_MANY_ROWS THEN APPLICATION_ERROR(-20000,'prs_m175');
|
|
END;
|
|
-- Tenslotte: ruim de objecten op, d.i. de objecten die ik zelf mocht beheren, en
|
|
-- de objecten die reeds vervallen waren.
|
|
BEGIN
|
|
IF :new.prs_perslid_verwijder IS NOT NULL
|
|
THEN
|
|
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 OR ins_deel_verwijder IS NOT NULL));
|
|
END IF;
|
|
END;
|
|
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);
|
|
/* Een werkplek mag niet verwijderd worden als er nog personen
|
|
* aan gekoppeld zijn.
|
|
*/
|
|
CHECK_CADMUTATIE2(prs_werkplek_verwijder, prs_werkplek_getekend, prs_alg_ruimte_key, 'prs_m161');
|
|
SET_VERWIJDER_CHILDREN(prs_perslidwerkplek, prs_werkplek_key, prs_werkplek_verwijder, prs_perslidwerkplek_verwijder);
|
|
UPDATE_AANMAAKDATUM(prs_werkplek, prs_werkplek_aanmaak);
|
|
|
|
/* IF :new.prs_werkplek_module = 'PRR'
|
|
THEN
|
|
CHECK_NOG_REFERENCES(prs_werkplek, prs_werkplek_verwijder,
|
|
prs_perslidwerkplek, prs_werkplek_key, 'prs_m016');
|
|
END IF;
|
|
*/
|
|
#ifdef INS
|
|
/* Oude code vervangen door macro...
|
|
IF :new.prs_werkplek_verwijder <> :old.prs_werkplek_verwijder
|
|
THEN
|
|
UPDATE ins_deel
|
|
SET ins_deel_verwijder = :new.prs_werkplek_verwijder
|
|
WHERE ins_alg_ruimte_key = :old.prs_werkplek_key
|
|
AND ins_alg_ruimte_type = 'W';
|
|
END IF;
|
|
*/
|
|
SET_VERWIJDER_CHILDREN_DEELWP(ins_deel, prs_werkplek_key, prs_werkplek_verwijder, prs_werkplek_getekend,
|
|
ins_deel_verwijder, ins_alg_ruimte_key, ins_deel_getekend);
|
|
#endif //INS
|
|
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);
|
|
|
|
/*
|
|
* 10-7-97 AH #1365, PRS_PERSLIDWERKPLEK_VERWIJDER-velden weggehaald.
|
|
*
|
|
* 5/26/97 AH #1255, VERWIJDER-veld mag niet meer gebruikt worden ivm. MUTATING TABLE
|
|
* bij CASCADE van PRS_PERSLID, enz. Dus hier een controle toegevoegd
|
|
*/
|
|
END;
|
|
/
|
|
|
|
CREATE_TRIGGER(prs_t_prs_bedrijf_B_IU)
|
|
BEFORE INSERT OR UPDATE ON prs_bedrijf
|
|
FOR EACH ROW
|
|
BEGIN
|
|
-- LET OP : Deze trigger is ook gedefinieerd in RES !!
|
|
UPDATE_PRIMARY_KEY(prs_bedrijf_key,prs_s_prs_alluitvoerende_keys);
|
|
UPDATE_UPPER(prs_bedrijf_naam,prs_bedrijf_naam_upper);
|
|
SET_VERWIJDER_CHILDREN(prs_srtperslid, prs_bedrijf_key,
|
|
prs_bedrijf_verwijder, prs_srtperslid_verwijder);
|
|
UPDATE_AANMAAKDATUM(prs_bedrijf, prs_bedrijf_aanmaak);
|
|
|
|
#ifdef HOORTNIETBIJFACILITOR
|
|
// Bedrijf mag niet verwijderd worden als er nog
|
|
// bestekken zijn van dit bedrijf.
|
|
IF :new.prs_bedrijf_verwijder IS NOT NULLDATUM
|
|
THEN
|
|
DECLARE
|
|
dummy CHAR;
|
|
BEGIN
|
|
SELECT 'X'
|
|
INTO dummy
|
|
FROM prs_bestek
|
|
WHERE prs_bedrijf_key = :new.prs_bedrijf_key;
|
|
APPLICATION_ERROR(-20000, 'prs_m083');
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND
|
|
THEN NULL;
|
|
WHEN TOO_MANY_ROWS
|
|
THEN APPLICATION_ERROR(-20000, 'prs_m083');
|
|
END;
|
|
END IF;
|
|
#endif //HOORTNIETBIJFACILITOR
|
|
#ifdef MLD
|
|
// Niet verwijderen als nog MLD_OPDR's zijn met status 'Uitgegeven' en
|
|
// uitvoerende dit bedrijf
|
|
IF :new.prs_bedrijf_verwijder IS NOT NULLDATUM
|
|
THEN
|
|
DECLARE
|
|
dummy CHAR;
|
|
BEGIN
|
|
SELECT 'X'
|
|
INTO dummy
|
|
FROM mld_opdr MLD_O, mld_statusopdr MLD_S
|
|
WHERE MLD_O.mld_statusopdr_key = MLD_S.mld_statusopdr_key
|
|
AND MLD_S.mld_statusopdr_upper = 'MLD_UITGEGEVEN'
|
|
AND MLD_O.mld_uitvoerende_keys = :new.prs_bedrijf_key;
|
|
APPLICATION_ERROR(-20000, 'prs_m086');
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND
|
|
THEN NULL;
|
|
WHEN TOO_MANY_ROWS
|
|
THEN APPLICATION_ERROR(-20000, 'prs_m086');
|
|
END;
|
|
END IF;
|
|
#endif // MLD
|
|
#ifdef MLD
|
|
IF :old.prs_bedrijf_leverancier IS NOT NULL
|
|
AND :new.prs_bedrijf_leverancier IS NULL
|
|
THEN
|
|
DECLARE
|
|
dummy CHAR;
|
|
BEGIN
|
|
SELECT 'X'
|
|
INTO dummy
|
|
FROM mld_bestelopdr
|
|
WHERE mld_prs_bedrijf_key = :new.prs_bedrijf_key;
|
|
APPLICATION_ERROR(-20000, 'PRS_M101');
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND
|
|
THEN NULL;
|
|
WHEN TOO_MANY_ROWS
|
|
THEN APPLICATION_ERROR(-20000, 'PRS_M101');
|
|
END;
|
|
END IF;
|
|
#endif // MLD
|
|
END;
|
|
/
|
|
|
|
#ifdef HOORTNIETBIJFACILITOR
|
|
/* 29-07-96/KTH Vooralsnog zijn de bestektriggers alleen #ifdef INS */
|
|
#ifdef INS
|
|
CREATE_TRIGGER(prs_t_prs_bestek_B_IU)
|
|
BEFORE INSERT OR UPDATE ON prs_bestek
|
|
FOR EACH ROW
|
|
BEGIN
|
|
UPDATE_PRIMARY_KEY(prs_bestek_key,prs_s_prs_bestek_key);
|
|
UPDATE_UPPER(prs_bestek_nr, prs_bestek_upper_nr);
|
|
END;
|
|
/
|
|
|
|
CREATE_TRIGGER(prs_t_prs_discbestek_B_IU)
|
|
BEFORE INSERT OR UPDATE ON prs_disciplinebestek
|
|
FOR EACH ROW
|
|
BEGIN
|
|
/* AH Disciplinebestek is een uitvoerende, bestek niet meer. */
|
|
UPDATE_PRIMARY_KEY(prs_disciplinebestek_key,prs_s_prs_alluitvoerende_keys);
|
|
END;
|
|
/
|
|
|
|
|
|
CREATE_TRIGGER(prs_t_prs_locatiebestek_B_IU)
|
|
BEFORE INSERT OR UPDATE ON prs_locatiebestek
|
|
FOR EACH ROW
|
|
BEGIN
|
|
UPDATE_PRIMARY_KEY(prs_locatiebestek_key,prs_s_prs_locatiebestek_key);
|
|
#if defined(MLD)
|
|
/* Een LocatieBestek mag NIET toegevoegd worden als:
|
|
* - Het (discipline)bestek als (default) uitvoerende is aangegeven bij
|
|
* een of meer opdrachten en als er nog geen LocatieBestek-records zijn
|
|
* voor het bestek.
|
|
* Uitzondering: Als er opdrachten zijn EN deze allemaal betrekking hebben
|
|
* op de toe te voegen locatie.
|
|
* Een LocatieBestek mag NIET worden gewijzigd als:
|
|
* - Het (discipline)bestek als (default) uitvoerende is aangegeven bij
|
|
* een of meer opdrachten die betrekking hebben op de te wijzigen
|
|
* LocatieBestek.
|
|
*/
|
|
|
|
// Toevoegen
|
|
IF :old.alg_locatie_key IS NULL
|
|
AND :new.alg_locatie_key IS NOT NULL
|
|
THEN
|
|
#ifdef MLD
|
|
DECLARE
|
|
dummy CHAR;
|
|
BEGIN
|
|
SELECT 'X'
|
|
INTO dummy
|
|
FROM mld_opdr MLD_O,
|
|
prs_disciplinebestek PRS_DB,
|
|
mld_melding MLD_M,
|
|
mld_v_onroerendgoed_locatie MLD_OL
|
|
WHERE MLD_M.mld_alg_onroerendgoed_keys = MLD_OL.alg_onroerendgoed_keys
|
|
AND MLD_OL.alg_locatie_key <> :new.alg_locatie_key
|
|
AND MLD_O.mld_melding_key = MLD_M.mld_melding_key
|
|
AND (PRS_DB.prs_disciplinebestek_key = MLD_O.mld_uitvoerende_keys
|
|
)
|
|
AND PRS_DB.prs_bestek_key = :new.prs_bestek_key
|
|
AND NOT EXISTS (SELECT 'X'
|
|
FROM prs_locatiebestek PRS_LB
|
|
WHERE PRS_LB.prs_bestek_key = :new.prs_bestek_key
|
|
AND MLD_OL.alg_locatie_key = PRS_LB.alg_locatie_key
|
|
AND PRS_LB.alg_locatie_key <> :new.alg_locatie_key);
|
|
APPLICATION_ERROR(-20000, 'prs_m098');
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND
|
|
THEN NULL;
|
|
WHEN TOO_MANY_ROWS
|
|
THEN APPLICATION_ERROR(-20000, 'prs_m098');
|
|
END;
|
|
#endif // MLD
|
|
// Wijzigen
|
|
ELSIF :old.alg_locatie_key IS NOT NULL
|
|
AND :new.alg_locatie_key IS NOT NULL
|
|
THEN
|
|
#ifdef MLD
|
|
DECLARE
|
|
dummy CHAR;
|
|
BEGIN
|
|
SELECT 'X'
|
|
INTO dummy
|
|
FROM prs_disciplinebestek PRS_DB, mld_opdr MLD_O,
|
|
mld_melding MLD_M, mld_v_onroerendgoed_locatie MLD_OL
|
|
WHERE MLD_M.mld_alg_onroerendgoed_keys = MLD_OL.alg_onroerendgoed_keys
|
|
AND MLD_OL.alg_locatie_key = :old.alg_locatie_key
|
|
AND MLD_O.mld_melding_key = MLD_M.mld_melding_key
|
|
AND (PRS_DB.prs_disciplinebestek_key = MLD_O.mld_uitvoerende_keys
|
|
)
|
|
AND PRS_DB.prs_bestek_key = :old.prs_bestek_key;
|
|
APPLICATION_ERROR(-20000, 'prs_m097');
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND
|
|
THEN NULL;
|
|
WHEN TOO_MANY_ROWS
|
|
THEN APPLICATION_ERROR(-20000, 'prs_m097');
|
|
END;
|
|
#endif // MLD
|
|
END IF;
|
|
#endif // MLD
|
|
END;
|
|
/
|
|
|
|
#endif // INS
|
|
#endif //HOORTNIETBIJFACILITOR
|
|
/* De trigger ALG_T_ALG_RUIMTE_B_IU moet aangepast worden. PRS_WERKPLEK moet
|
|
* ook verwijderd worden.
|
|
*/
|
|
#ifdef AKZ
|
|
CREATE_TRIGGER(akz_t_akz_prsimport_b_iu)
|
|
BEFORE INSERT OR UPDATE ON akz_prsimport
|
|
FOR EACH ROW
|
|
BEGIN
|
|
UPDATE_PRIMARY_KEY(akz_prsimport_key, akz_s_akz_prsimport_key);
|
|
END;
|
|
/
|
|
#endif // AKZ
|
|
|
|
CREATE_TRIGGER(prs_t_prs_refkenmerk_b_iu)
|
|
BEFORE INSERT OR UPDATE ON prs_refkenmerk
|
|
FOR EACH ROW
|
|
DECLARE
|
|
ObjectType USER_OBJECTS.OBJECT_TYPE%TYPE;
|
|
BEGIN
|
|
UPDATE_PRIMARY_KEY(prs_refkenmerk_key,prs_s_prs_refkenmerk_key);
|
|
UPDATE_UPPER(prs_refkenmerk_omschrijving,prs_refkenmerk_upper);
|
|
UPDATE_AANMAAKDATUM(prs_refkenmerk, prs_refkenmerk_aanmaak);
|
|
|
|
/* Controleer of de ingevulde tablenaam, kolomnaam en kolomtxt
|
|
** wel bestaan.
|
|
*/
|
|
/* Trigger moet ook afgaan als de omschrijving gewijzigd wordt ...
|
|
|
|
IF :new.prs_refkenmerk_objectnaam <> :old.prs_refkenmerk_objectnaam
|
|
OR :old.prs_refkenmerk_objectnaam IS NULL
|
|
THEN
|
|
*/
|
|
BEGIN
|
|
SELECT OBJECT_TYPE
|
|
INTO ObjectType
|
|
FROM USER_OBJECTS
|
|
WHERE OBJECT_NAME = :new.prs_refkenmerk_objectnaam;
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND
|
|
THEN ObjectType := NULL;
|
|
END;
|
|
/* END IF; */
|
|
IF ObjectType IS NULL
|
|
THEN
|
|
APPLICATION_ERROR(-20000, 'ALG_M235');
|
|
ELSIF ObjectType IN ('TABLE','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.prs_refkenmerk_objectnaam
|
|
AND COLUMN_NAME = :new.prs_refkenmerk_kolomnaam
|
|
AND DATA_TYPE = 'NUMBER';
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND
|
|
THEN APPLICATION_ERROR(-20000, 'ALG_M236');
|
|
END;
|
|
DECLARE
|
|
Dummy VARCHAR2(30);
|
|
BEGIN
|
|
SELECT COLUMN_NAME
|
|
INTO Dummy
|
|
FROM USER_TAB_COLUMNS
|
|
WHERE TABLE_NAME = :new.prs_refkenmerk_objectnaam
|
|
AND COLUMN_NAME = :new.prs_refkenmerk_kolomtxt
|
|
AND DATA_TYPE LIKE '%CHAR%';
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND
|
|
THEN APPLICATION_ERROR(-20000, 'ALG_M237');
|
|
END;
|
|
ELSIF ObjectType = 'SYNONYM'
|
|
THEN
|
|
/* Bij een SYNONYM kan er niet gecontroleerd worden
|
|
* of de ingevulde kolommen bestaan.
|
|
*/
|
|
NULL;
|
|
ELSE
|
|
APPLICATION_ERROR(-20000, 'ALG_M235');
|
|
END IF;
|
|
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);
|
|
|
|
IF (:new.prs_kenmerk_kenmerktype IN ('C','N'))
|
|
AND :new.prs_kenmerk_lengte IS NULL
|
|
THEN
|
|
APPLICATION_ERROR(-20000, 'ALG_C_ALG_KENMERK_LENGTE');
|
|
END IF;
|
|
|
|
IF :new.prs_kenmerk_kenmerktype = 'N' AND :old.prs_kenmerk_key IS NOT NULL
|
|
THEN
|
|
IF :old.prs_kenmerk_nmin <> :new.prs_kenmerk_nmin OR
|
|
:old.prs_kenmerk_nmin IS NULL
|
|
THEN
|
|
DECLARE
|
|
Dummy CHAR;
|
|
BEGIN
|
|
SELECT 'X'
|
|
INTO Dummy
|
|
FROM prs_kenmerkLink
|
|
WHERE 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
|
|
THEN
|
|
DECLARE
|
|
Dummy CHAR;
|
|
BEGIN
|
|
SELECT 'X'
|
|
INTO Dummy
|
|
FROM prs_kenmerkLink
|
|
WHERE 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_kenmerk_b_d)
|
|
BEFORE DELETE ON prs_kenmerk
|
|
FOR EACH ROW
|
|
BEGIN
|
|
IF :old.prs_kenmerk_systeem IS NOT NULL
|
|
THEN
|
|
APPLICATION_ERROR(-20003, 'ALG_M238');
|
|
ELSE
|
|
DELETE
|
|
FROM prs_kenmerkLink
|
|
WHERE prs_kenmerk_key = :old.prs_kenmerk_key;
|
|
END IF;
|
|
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
|
|
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;
|
|
RefKenmerkKey NUMBER(10);
|
|
NumberWaarde NUMBER(15,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;
|
|
END IF;
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND
|
|
THEN 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
|
|
, prs_refkenmerk_key
|
|
INTO KenmerkOmschr
|
|
, KenmerkType
|
|
, KenmerkLengte
|
|
, KenmerkDec
|
|
, KenmerkNMin
|
|
, KenmerkNMax
|
|
, RefKenmerkKey
|
|
FROM prs_kenmerk
|
|
WHERE prs_kenmerk_key = :new.prs_kenmerk_key;
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND
|
|
THEN 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(-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(-20004, 'ALG_M234,'|| KenmerkOmschr ||','
|
|
|| TO_CHAR(KenmerkNMin)||','
|
|
|| TO_CHAR(KenmerkNMax));
|
|
ELSE
|
|
/*
|
|
** Controleer of de waarde aan het formaat voldoet
|
|
*/
|
|
KenmerkWaarde := LTRIM(to_char(NumberWaarde, FormatMask));
|
|
IF INSTR(KenmerkWaarde, '#') <> 0
|
|
THEN
|
|
FormatMask := REPLACE(FormatMask, '9', '#');
|
|
FormatMask := REPLACE(FormatMask, '0', '#');
|
|
FormatMask := REPLACE(FormatMask, 'D', '.');
|
|
APPLICATION_ERROR(-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 := TO_CHAR(TO_DATE(KenmerkWaarde,'DD-MM-YYYY'),'DD-MM-YYYY');
|
|
/*
|
|
** Zet de geconverteerde waarde terug
|
|
*/
|
|
:new.prs_kenmerkLink_waarde := KenmerkWaarde;
|
|
END IF;
|
|
END;
|
|
/*
|
|
** Ken nu een key aan dit record toe.
|
|
*/
|
|
IF :new.prs_kenmerkLink_key IS NULL
|
|
THEN
|
|
SELECT prs_s_prs_kenmerkLink_key.nextval
|
|
INTO :new.prs_kenmerkLink_key
|
|
FROM DUAL;
|
|
END IF;
|
|
END IF;
|
|
END;
|
|
/
|
|
|
|
#endif // PRS
|