1400 lines
52 KiB
Plaintext
1400 lines
52 KiB
Plaintext
SET TERMOUT ON
|
|
SET FEEDBACK OFF
|
|
SET ECHO OFF
|
|
--
|
|
-- Update script van Facilitor versie 4.23 naar 4.24.6
|
|
--
|
|
/*
|
|
* Dit script wordt geprecompileerd dus is het mogelijk (verplicht)
|
|
* om #ifdef's te gebruiken voor de diverse modules.
|
|
*
|
|
* Gebruik daar waar in de *.SQL-variant geen commentaar-tekst moet komen de
|
|
* C-style van uitcommentarieren. Daar waar WEL tekst in de uitvoer moet komen
|
|
* moet -- gebruikt worden.
|
|
*/
|
|
#include "modules.h"
|
|
#include "comsql.h"
|
|
#include "INS\inssql.h"
|
|
/*
|
|
* Test eerst of de vorige versie van module FAC zoals genoemd in tabel
|
|
* fac_module wel het te verwachten versienummer heeft
|
|
* als dat niet zo is dient de gebruiker het script ZELF af te breken middels
|
|
* control-c.
|
|
* Als dat wel zo is vervolgt het script en zal aan het einde van het script
|
|
* het interne versienummer en de datum worden bijgewerkt.
|
|
*/
|
|
/* !!BELANGRIJK!!
|
|
* Als er bij de upgrade een NIEUWE tabel of view wordt gecreeerd, moeten ook
|
|
* de daarvoor benodigde GRANTS en SYNONYMS worden geregeld!!!
|
|
* Dit doen we in de $..after.sql, die ook hier wordt gegenereerd.
|
|
*/
|
|
#ifdef MASTER
|
|
SPOOL OFF
|
|
SET HEADING OFF
|
|
CLEAR SCREEN
|
|
|
|
PROMPT ***********************************************************************
|
|
PROMPT
|
|
PROMPT UPGRADE SCRIPT van Facilitor versie 04.23 naar 4.24.6
|
|
PROMPT
|
|
SELECT 'De huidige versie van Facilitor zou moeten zijn 04.23/04.24 en is: '
|
|
|| fac_module_version
|
|
FROM fac_module
|
|
WHERE fac_module_name='FAC';
|
|
PROMPT
|
|
PROMPT Indien de huidige versie NIET de verwachte versie is mag dit script
|
|
PROMPT niet worden gerund! In dit geval dient het script nu middels
|
|
PROMPT CONTROL-C te worden afgebroken.
|
|
PROMPT
|
|
PROMPT Indien de versies overeenkomen dient nu ENTER te worden gedrukt...
|
|
PROMPT
|
|
PROMPT ***********************************************************************
|
|
ACCEPT nix PROMPT ''
|
|
PROMPT
|
|
PROMPT De upgrade wordt vervolgd. Even geduld a.u.b...
|
|
PROMPT
|
|
|
|
SET TERMOUT OFF
|
|
SET HEADING OFF
|
|
SET FEEDBACK OFF
|
|
SET ECHO OFF
|
|
SET VERIFY OFF
|
|
SET LINESIZE 1000
|
|
SET SERVEROUTPUT ON;
|
|
|
|
SPOOL $423to424.SQL
|
|
PROMPT SET ECHO ON
|
|
PROMPT SPOOL $423to424.LST;
|
|
|
|
UPDMOD(FAC,423to424)
|
|
UPDMOD(ALG,423to424)
|
|
UPDMOD(PRS,423to424)
|
|
UPDMOD(INS,423to424)
|
|
UPDMOD(MLD,423to424)
|
|
UPDMOD(CAD,423to424)
|
|
UPDMOD(AKZ,423to424)
|
|
UPDMOD(PRJ,423to424)
|
|
UPDMOD(RES,423to424)
|
|
UPDMOD(BES,423to424)
|
|
UPDMOD(BEZ,423to424)
|
|
UPDMOD(SCH,423to424)
|
|
UPDMOD(SLE,423to424)
|
|
UPDMOD(CNT,423to424)
|
|
UPDMOD(WEB,423to424)
|
|
UPDMOD(PRA,423to424)
|
|
|
|
UPDATE_VERSION('04.24');
|
|
COMMIT;
|
|
|
|
PROMPT SPOOL OFF;
|
|
PROMPT START $423to424after.SQL
|
|
SPOOL OFF
|
|
|
|
SPOOL $423to424after.sql
|
|
PROMPT SET ECHO ON
|
|
PROMPT SPOOL $423to424after.lst
|
|
-- Geef execute rechten aan de laagste role voor alle stored packages, procedures etc.
|
|
-- Bedoeld voor de nieuwe, maar is niet erg voor de oude.
|
|
SELECT DISTINCT 'GRANT execute ON ' || US.name ||' TO '||USER||'_ALG_SMALL_ROLE;'
|
|
FROM user_source US;
|
|
|
|
-- Geef alle rechten aan de laagste role voor alle sequences
|
|
-- Bedoeld voor de nieuwe, maar is niet erg voor de oude.
|
|
SELECT 'GRANT all ON ' || USEQ.sequence_name ||' TO '||USER||'_ALG_SMALL_ROLE;'
|
|
FROM user_sequences USEQ;
|
|
|
|
/* ADD SYNONYMS ROUTINE HERE FOR ALL SECONDARY USERS */
|
|
PROMPT SPOOL OFF
|
|
SPOOL OFF
|
|
START $423to424.SQL
|
|
SET ECHO OFF
|
|
PROMPT De upgrade is gereed.. Controleer de LST-files.
|
|
#endif // MASTER
|
|
|
|
/****************************** PLAATS HIERONDER DE UPDATES ******************************/
|
|
|
|
#ifdef ALG
|
|
|
|
#endif //ALG
|
|
|
|
|
|
#ifdef INS
|
|
|
|
CREATE OR REPLACE PACKAGE Ins AS
|
|
PROCEDURE Ins_Update_Kenmerkdeel(deel_key IN NUMBER
|
|
,kenmerk_key IN NUMBER
|
|
,waarde IN VARCHAR2
|
|
,historymode IN VARCHAR2
|
|
,mselect IN VARCHAR2);
|
|
PROCEDURE Kmd_Insert(deel_key IN NUMBER
|
|
,kenmerk_key IN NUMBER
|
|
,waarde IN VARCHAR2
|
|
,historymode IN VARCHAR2);
|
|
PROCEDURE Kmd_Delete(kenmerkdeel_key IN NUMBER
|
|
,historymode IN VARCHAR2);
|
|
PROCEDURE Kmd_Update(kenmerkdeel_key IN NUMBER
|
|
,deel_key IN NUMBER
|
|
,kenmerk_key IN NUMBER
|
|
,waarde IN VARCHAR2
|
|
,historymode IN VARCHAR2
|
|
,mselect IN VARCHAR2);
|
|
END Ins;
|
|
/
|
|
|
|
CREATE OR REPLACE PACKAGE BODY Ins AS
|
|
PROCEDURE Ins_Update_Kenmerkdeel(deel_key IN NUMBER
|
|
,kenmerk_key IN NUMBER
|
|
,waarde IN VARCHAR2
|
|
,historymode IN VARCHAR2
|
|
,mselect IN VARCHAR2) IS
|
|
v_kenmerkdeel_key NUMBER := 0;
|
|
BEGIN
|
|
-- Het is eigenlijk voldoende om hier alleen Kmd_Update()
|
|
-- aan te roepen omdat daar alle situaties worden
|
|
-- gecontroleerd en de bijbehorende actie wordt uitgevoerd.
|
|
-- De onderstaande Select zorgt er dus alleen voor dat
|
|
-- indien er geen actueel record bestaat, of een die
|
|
-- vandaag is gesloten er een nieuw record wordt gemaakt,
|
|
-- hetgeen in Kmd_Update() ook wordt gedaan zodat de tweede
|
|
-- insert een foutmelding geeft.
|
|
-- Daarom alleen Kmd_Update() aanroepen met een dummy waarde
|
|
-- voor ins_kenmerkdeel_key.
|
|
--
|
|
--SELECT MAX(ins_kenmerkdeel_key)
|
|
--INTO v_kenmerkdeel_key
|
|
--FROM ins_kenmerkdeel
|
|
--WHERE ins_deel_key = deel_key
|
|
--AND ins_kenmerk_key = kenmerk_key
|
|
--AND ( ins_kenmerkdeel_verwijder IS NULL
|
|
-- OR ins_kenmerkdeel_verwijder BETWEEN trunc(sysdate) AND trunc(sysdate + 1)
|
|
-- );
|
|
Ins.Kmd_Update(v_kenmerkdeel_key
|
|
,deel_key
|
|
,kenmerk_key
|
|
,waarde
|
|
,historymode
|
|
,mselect);
|
|
--IF (v_kenmerkdeel_key IS NULL)
|
|
--THEN
|
|
-- Ins.Kmd_Insert(deel_key
|
|
-- ,kenmerk_key
|
|
-- ,waarde
|
|
-- ,historymode);
|
|
--END IF;
|
|
END Ins_Update_Kenmerkdeel;
|
|
|
|
PROCEDURE Kmd_Insert(deel_key IN NUMBER
|
|
,kenmerk_key IN NUMBER
|
|
,waarde IN VARCHAR2
|
|
,historymode IN VARCHAR2) IS
|
|
BEGIN
|
|
IF waarde IS NOT NULL
|
|
THEN
|
|
INSERT INTO ins_kenmerkdeel
|
|
( ins_kenmerk_key
|
|
, ins_deel_Key
|
|
, ins_kenmerkdeel_waarde)
|
|
VALUES(kenmerk_key
|
|
, deel_key
|
|
, waarde);
|
|
END IF;
|
|
END Kmd_Insert;
|
|
|
|
PROCEDURE Kmd_Delete(kenmerkdeel_key IN NUMBER
|
|
,historymode IN VARCHAR2) IS
|
|
BEGIN
|
|
IF Historymode = '0'
|
|
THEN
|
|
--NON HISTORY MODE
|
|
DELETE
|
|
FROM ins_kenmerkdeel
|
|
WHERE ins_kenmerkdeel_key = kenmerkdeel_key;
|
|
ELSE
|
|
--HISTORY MODE
|
|
UPDATE ins_kenmerkdeel
|
|
SET ins_kenmerkdeel_verwijder = SYSDATE
|
|
WHERE ins_kenmerkdeel_key = kenmerkdeel_key;
|
|
END IF;
|
|
END Kmd_Delete;
|
|
|
|
PROCEDURE Kmd_Update(kenmerkdeel_key IN NUMBER
|
|
,deel_key IN NUMBER
|
|
,kenmerk_key IN NUMBER
|
|
,waarde IN VARCHAR2
|
|
,historymode IN VARCHAR2
|
|
,mselect IN VARCHAR2) IS
|
|
v_kenmerkdeel NUMBER;
|
|
BEGIN
|
|
IF Historymode = '0'
|
|
THEN
|
|
IF waarde IS NOT NULL
|
|
THEN
|
|
UPDATE ins_kenmerkdeel
|
|
SET ins_kenmerkdeel_waarde = waarde
|
|
WHERE ins_kenmerkdeel_key = kenmerkdeel_key;
|
|
END IF;
|
|
ELSIF Historymode = '1'
|
|
THEN
|
|
DECLARE
|
|
-- Zoek alle records voor een gegeven object en kenmerk
|
|
-- en zet de meest recente bovenaan.
|
|
--
|
|
CURSOR c_kenmerkdeel(p_kenmerk_key IN NUMBER
|
|
,p_deel_key IN NUMBER) IS
|
|
SELECT ins_kenmerkdeel_key
|
|
, trunc(ins_kenmerkdeel_aanmaak) ins_kenmerkdeel_aanmaak
|
|
, trunc(ins_kenmerkdeel_verwijder) ins_kenmerkdeel_verwijder
|
|
FROM ins_kenmerkdeel
|
|
WHERE ins_kenmerk_key = p_kenmerk_key
|
|
AND ins_deel_key = p_deel_key
|
|
ORDER BY ins_kenmerkdeel_key DESC
|
|
;
|
|
r_kenmerkdeel c_kenmerkdeel%ROWTYPE;
|
|
BEGIN
|
|
OPEN c_kenmerkdeel(kenmerk_key,deel_key);
|
|
FETCH c_kenmerkdeel INTO r_kenmerkdeel;
|
|
IF c_kenmerkdeel%NOTFOUND
|
|
THEN
|
|
-- Voor dit object en kenmerk bestaat nog geen record
|
|
-- dus toevoegen. Behalve als de toe te voegen waarde
|
|
-- null is, dan wil je niets toevoegen dus dan ook
|
|
-- geen actie.
|
|
IF waarde IS NOT NULL
|
|
THEN
|
|
Ins.Kmd_Insert(deel_key
|
|
,kenmerk_key
|
|
,waarde
|
|
,Historymode);
|
|
END IF;
|
|
ELSE
|
|
-- Er bestaat een record voor het object en kenmerk.
|
|
--
|
|
IF waarde IS NOT NULL
|
|
THEN
|
|
-- Er is een nieuwe waarde voor een bepaald object en kenmerk.
|
|
--
|
|
IF r_kenmerkdeel.ins_kenmerkdeel_aanmaak <= trunc(sysdate)
|
|
AND r_kenmerkdeel.ins_kenmerkdeel_verwijder IS NULL
|
|
THEN
|
|
-- Het record is nog actueel, dus moet eerst gesloten worden
|
|
-- door het als verwijderd te markeren.
|
|
--
|
|
Ins.Kmd_Delete(r_kenmerkdeel.ins_kenmerkdeel_key
|
|
,Historymode);
|
|
END IF;
|
|
--
|
|
-- Er bestaat nu tijdelijk geen actueel record meer voor
|
|
-- het object en kenmerk !!
|
|
--
|
|
IF r_kenmerkdeel.ins_kenmerkdeel_aanmaak < trunc(sysdate)
|
|
AND ( r_kenmerkdeel.ins_kenmerkdeel_verwijder <= trunc(sysdate)
|
|
OR r_kenmerkdeel.ins_kenmerkdeel_verwijder IS NULL)
|
|
THEN
|
|
-- Het laatste record voor kenmerk bij een object heeft langer
|
|
-- dan een dag bestaan. Voeg daarom een nieuwe toe.
|
|
--
|
|
Ins.Kmd_Insert(deel_key
|
|
,kenmerk_key
|
|
,waarde
|
|
,Historymode);
|
|
ELSIF r_kenmerkdeel.ins_kenmerkdeel_aanmaak = trunc(sysdate)
|
|
THEN
|
|
-- Het record voor kenmerk bij een object is vandaag
|
|
-- aangemaakt dus wordt er geen nieuwe toegevoegd maar
|
|
-- de huidige aangepast.
|
|
--
|
|
UPDATE ins_kenmerkdeel
|
|
SET ins_kenmerkdeel_waarde = waarde
|
|
, ins_kenmerkdeel_verwijder = null
|
|
WHERE ins_kenmerkdeel_key = r_kenmerkdeel.ins_kenmerkdeel_key;
|
|
END IF;
|
|
ELSE
|
|
-- De nieuwe waarde voor het object en kenmerk is leeg, dus
|
|
-- moet het als verwijderd gemarkeerd worden.
|
|
-- Behalve als er in MSelect-mode gewijzigd wordt.
|
|
--
|
|
IF mselect = '0'
|
|
THEN
|
|
Ins.Kmd_Delete(r_kenmerkdeel.ins_kenmerkdeel_key
|
|
,Historymode);
|
|
END IF;
|
|
END IF;
|
|
END IF;
|
|
CLOSE c_kenmerkdeel;
|
|
END;
|
|
END IF;
|
|
END Kmd_Update;
|
|
END Ins;
|
|
/
|
|
|
|
CREATE OR REPLACE FUNCTION ALG_F_GetRefWaarde (sk_key IN NUMBER, waarde IN VARCHAR2) RETURN VARCHAR2 IS
|
|
sResult VARCHAR2(255);
|
|
kolomnaam VARCHAR2(50);
|
|
kolomtxt VARCHAR2(50);
|
|
objectnaam VARCHAR2(50);
|
|
tab_key NUMBER(10);
|
|
ttype VARCHAR2(1);
|
|
BEGIN
|
|
-- Doel is het resultaat van:
|
|
-- select [kolomtxt] from [objectnaam] where [kolomnaam]= waarde
|
|
-- of
|
|
-- select [kolomtxt] from [objectnaam] where [kolomnaam]= waarde and fac_usrtab_key=tab_key
|
|
SELECT RSK.alg_refkenmerk_kolomnaam,
|
|
RSK.alg_refkenmerk_kolomtxt,
|
|
RSK.alg_refkenmerk_objectnaam,
|
|
RSK.fac_usrtab_key,
|
|
UT.fac_usrtab_view
|
|
INTO kolomnaam, kolomtxt,objectnaam, tab_key, ttype
|
|
FROM alg_REFKENMERK RSK, alg_KENMERK SK, fac_usrtab UT
|
|
WHERE SK.alg_kenmerk_key=sk_key
|
|
AND RSK.fac_usrtab_key=UT.fac_usrtab_key(+)
|
|
AND SK.alg_refkenmerk_key=RSK.alg_refkenmerk_key;
|
|
IF tab_key IS NULL OR ttype = 'V' THEN
|
|
-- select [kolomtxt] into sResult from [objectnaam] where [kolomnaam]=waarde
|
|
-- maak een cursor/recordgroup oid voor deze query. Precies 1 rowresultaat
|
|
sResult:='Select '||kolomtxt||' from '||objectnaam||' where '||kolomnaam||'='||waarde;
|
|
ELSE
|
|
-- select [kolomtxt] from [objectnaam] where [kolomnaam]= waarde and fac_usrtab_key=tab_key
|
|
sResult:='Select '||kolomtxt||' from '||objectnaam||' where '||kolomnaam||'='||waarde||' and fac_usrtab_key = '||TO_CHAR(tab_key);
|
|
END IF;
|
|
RETURN sResult;
|
|
END;
|
|
/
|
|
|
|
|
|
CREATE OR REPLACE FUNCTION INS_F_GetRefWaarde (sk_key IN NUMBER, waarde IN VARCHAR2) RETURN VARCHAR2 IS
|
|
sResult VARCHAR2(255);
|
|
kolomnaam VARCHAR2(50);
|
|
kolomtxt VARCHAR2(50);
|
|
objectnaam VARCHAR2(50);
|
|
tab_key NUMBER(10);
|
|
ttype VARCHAR2(1); --Pseudo(T)able or (V)iew
|
|
BEGIN
|
|
-- Doel is het resultaat van:
|
|
-- select [kolomtxt] from [objectnaam] where [kolomnaam]= waarde
|
|
-- of
|
|
-- select [kolomtxt] from [objectnaam] where [kolomnaam]= waarde and fac_usrtab_key=tab_key
|
|
SELECT RSK.ins_refsrtkenmerk_kolomnaam,
|
|
RSK.ins_refsrtkenmerk_kolomtxt,
|
|
RSK.ins_refsrtkenmerk_objectnaam,
|
|
RSK.fac_usrtab_key,
|
|
UT.fac_usrtab_view
|
|
INTO kolomnaam, kolomtxt,objectnaam, tab_key, ttype
|
|
FROM INS_REFSRTKENMERK RSK , INS_SRTKENMERK SK, FAC_USRTAB UT
|
|
WHERE SK.ins_srtkenmerk_key=sk_key
|
|
AND UT.fac_usrtab_key=RSK.fac_usrtab_key(+)
|
|
AND SK.ins_refsrtkenmerk_key=RSK.ins_refsrtkenmerk_key;
|
|
IF tab_key IS NULL OR ttype = 'V' THEN
|
|
-- select [kolomtxt] into sResult from [objectnaam] where [kolomnaam]= waarde
|
|
-- maak een cursor/recordgroup oid voor deze query. Precies 1 row resultaat
|
|
sResult:='Select '||kolomtxt||' from '||objectnaam||' where '||kolomnaam||'='||waarde;
|
|
ELSE
|
|
-- select [kolomtxt] from [objectnaam] where [kolomnaam]= waarde and fac_usrtab_key=tab_key
|
|
sResult:='Select '||kolomtxt||' from '||objectnaam||' where '||kolomnaam||'='||waarde||' AND fac_usrtab_key = '||TO_CHAR(tab_key);
|
|
END IF;
|
|
RETURN sResult;
|
|
END;
|
|
/
|
|
|
|
#endif // INS
|
|
|
|
|
|
#ifdef PRS
|
|
|
|
ALTER TABLE prs_perslidwerkplek
|
|
ADD CONSTRAINT prs_c_prs_perslidwp_key CHECK (prs_werkplek_key IS NOT NULL);
|
|
|
|
DEFINIEER_VIEW_AANWEZIG(prs_eenheid, prs_eenheid_verwijder,
|
|
prs_v_aanwezigeenheid,PRS_BIBLIOTHEEK_PRIVILEGE);
|
|
|
|
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);
|
|
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_aanwezigperslidwerkplek, prs_afdeling_key, 'SYSTEM ERROR: In Afdeling, er zijn nog PRS_PERSLIDWERKPLEK-records');
|
|
DECLARE
|
|
dummy CHAR;
|
|
BEGIN
|
|
IF :new.prs_afdeling_verwijder IS NOT NULL
|
|
THEN
|
|
SELECT 'x'
|
|
INTO dummy
|
|
FROM cnt_v_aanwezigcontract
|
|
WHERE cnt_v_aanwezigcontract.cnt_prs_afdeling_key = :old.prs_afdeling_key;
|
|
raise_application_error(-20000,'cnt_m022');
|
|
END IF;
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND THEN NULL;
|
|
WHEN TOO_MANY_ROWS THEN raise_application_error(-20000,'cnt_m022');
|
|
END;
|
|
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;
|
|
--
|
|
BEGIN
|
|
IF :new.prs_afdeling_verwijder IS NOT NULL
|
|
OR (:new.prs_afdeling_verwijder IS NULL AND :old.prs_afdeling_verwijder IS NOT NULL)
|
|
THEN
|
|
UPDATE res_artikel
|
|
SET res_artikel_verwijder = :new.prs_afdeling_verwijder
|
|
WHERE res_artikel.prs_afdeling_key = :new.prs_afdeling_key
|
|
AND res_artikel_verwijder IS NULL;
|
|
END IF;
|
|
END;
|
|
IF:new.prs_afdeling_verwijder IS NULL
|
|
THEN
|
|
IF :new.prs_eenheid_key IS NOT NULL
|
|
AND :old.prs_eenheid_key <> :new.prs_eenheid_key
|
|
THEN
|
|
DECLARE
|
|
Eenheid prs_afdeling.prs_afdeling_eenheid%TYPE;
|
|
BEGIN
|
|
SELECT prs_eenheid_code INTO Eenheid
|
|
FROM prs_eenheid
|
|
WHERE prs_eenheid_key = :new.prs_eenheid_key;
|
|
--
|
|
:new.prs_afdeling_eenheid := Eenheid;
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND THEN NULL;
|
|
WHEN TOO_MANY_ROWS THEN NULL;
|
|
END;
|
|
ELSE
|
|
IF :new.prs_eenheid_key IS NULL THEN
|
|
:new.prs_afdeling_eenheid := NULL;
|
|
END IF;
|
|
END IF;
|
|
END IF;
|
|
END;
|
|
/
|
|
|
|
|
|
DEF_FAC_ENTITY ('PRS_PERSLID_WACHTWOORD', 'Wachtwoord', NULL, 'het','Password');
|
|
|
|
ALTER TABLE prs_afdeling DROP CONSTRAINT prs_u_prs_afdeling_upper;
|
|
ALTER TABLE prs_afdeling ADD CONSTRAINT prs_u_prs_afdeling_upper UNIQUE(prs_afdeling_upper, prs_eenheid_key, prs_afdeling_verwijder);
|
|
|
|
|
|
CREATE_TABLE(prs_perslideenheid, PRS_BIBLIOTHEEK_PRIVILEGE)
|
|
(
|
|
prs_perslideenheid_key
|
|
NUMBER(10)
|
|
PRIMARY KEY,
|
|
prs_perslid_key
|
|
NUMBER(10)
|
|
NOT_NULL(prs_perslid_key, prs_c_prs_perslid_key1)
|
|
CONSTRAINT prs_r_prs_perslid_key7 REFERENCES prs_perslid(prs_perslid_key),
|
|
prs_eenheid_key
|
|
NUMBER(10)
|
|
NOT_NULL(prs_eenheid_key, prs_c_prs_eenheid_key1)
|
|
CONSTRAINT prs_r_prs_eenheid_key2 REFERENCES prs_eenheid(prs_eenheid_key),
|
|
CONSTRAINT prs_u_prs_perslideenheid_key UNIQUE (prs_perslid_key, prs_eenheid_key)
|
|
);
|
|
|
|
CREATE_TABLE(prs_perslidafdeling, PRS_BIBLIOTHEEK_PRIVILEGE)
|
|
(
|
|
prs_perslidafdeling_key
|
|
NUMBER(10)
|
|
PRIMARY KEY,
|
|
prs_perslid_key
|
|
NUMBER(10)
|
|
NOT_NULL(prs_perslid_key, prs_c_prs_perslid_key2)
|
|
CONSTRAINT prs_r_prs_perslid_key6 REFERENCES prs_perslid(prs_perslid_key),
|
|
prs_afdeling_key
|
|
NUMBER(10)
|
|
NOT_NULL(prs_afdeling_key, prs_c_prs_afdeling_key)
|
|
CONSTRAINT prs_r_prs_afdeling_key2 REFERENCES prs_afdeling(prs_afdeling_key),
|
|
CONSTRAINT prs_u_prs_perslidafdeling_key UNIQUE (prs_perslid_key, prs_afdeling_key)
|
|
);
|
|
|
|
|
|
CREATE SEQUENCE prs_s_prs_perslideenheid_key MINVALUE 1;
|
|
CREATE SEQUENCE prs_s_prs_perslidafdeling_key MINVALUE 1;
|
|
|
|
CREATE_TRIGGER(prs_t_prs_perslideenheid_B_IU)
|
|
BEFORE INSERT OR UPDATE ON prs_perslideenheid
|
|
FOR EACH ROW
|
|
BEGIN
|
|
UPDATE_PRIMARY_KEY(prs_perslideenheid_key,prs_s_prs_perslideenheid_key);
|
|
END;
|
|
/
|
|
|
|
CREATE_TRIGGER(prs_t_prs_perslidafdeling_B_IU)
|
|
BEFORE INSERT OR UPDATE ON prs_perslidafdeling
|
|
FOR EACH ROW
|
|
BEGIN
|
|
UPDATE_PRIMARY_KEY(prs_perslidafdeling_key,prs_s_prs_perslidafdeling_key);
|
|
END;
|
|
/
|
|
|
|
CREATE_VIEW(prs_v_aanwezigperslideenheid,PRS_BIBLIOTHEEK_PRIVILEGE) AS
|
|
SELECT pe.PRS_PERSLIDEENHEID_KEY,
|
|
p.PRS_PERSLID_KEY,
|
|
p.PRS_PERSLID_NAAM,
|
|
p.PRS_PERSLID_AANMAAK,
|
|
p.PRS_PERSLID_INIT_UPPER,
|
|
p.PRS_PERSLID_INITIALEN,
|
|
p.PRS_PERSLID_MODULE,
|
|
p.PRS_PERSLID_NR,
|
|
p.PRS_PERSLID_OPP,
|
|
p.PRS_PERSLID_OSLOGIN,
|
|
p.PRS_PERSLID_TELEFOONNR,
|
|
p.PRS_PERSLID_TITEL,
|
|
p.PRS_PERSLID_UPPER,
|
|
p.PRS_PERSLID_UURLOON,
|
|
p.PRS_PERSLID_VOORLETTERS,
|
|
p.PRS_PERSLID_VOORNAAM,
|
|
p.PRS_PERSLID_VERWIJDER,
|
|
p.PRS_PERSLID_WACHTWOORD,
|
|
p.PRS_SRTPERSLID_KEY,
|
|
e.PRS_EENHEID_KEY,
|
|
e.PRS_EENHEID_OMSCHRIJVING
|
|
FROM prs_perslid p, prs_perslideenheid pe, prs_eenheid e
|
|
WHERE p.Prs_perslid_key = pe.Prs_perslid_key
|
|
AND pe.Prs_eenheid_key = e.Prs_eenheid_key
|
|
AND e.prs_eenheid_verwijder IS NULL
|
|
AND p.prs_perslid_verwijder IS NULL;
|
|
|
|
|
|
CREATE_VIEW(prs_v_aanwezigperslidafdeling, PRS_BIBLIOTHEEK_PRIVILEGE) AS
|
|
SELECT pa.PRS_PERSLIDAFDELING_KEY,
|
|
p.PRS_PERSLID_KEY,
|
|
p.PRS_PERSLID_NAAM,
|
|
p.PRS_PERSLID_AANMAAK,
|
|
p.PRS_PERSLID_INIT_UPPER,
|
|
p.PRS_PERSLID_INITIALEN,
|
|
p.PRS_PERSLID_MODULE,
|
|
p.PRS_PERSLID_NR,
|
|
p.PRS_PERSLID_OPP,
|
|
p.PRS_PERSLID_OSLOGIN,
|
|
p.PRS_PERSLID_TELEFOONNR,
|
|
p.PRS_PERSLID_TITEL,
|
|
p.PRS_PERSLID_UPPER,
|
|
p.PRS_PERSLID_UURLOON,
|
|
p.PRS_PERSLID_VOORLETTERS,
|
|
p.PRS_PERSLID_VOORNAAM,
|
|
p.PRS_PERSLID_VERWIJDER,
|
|
p.PRS_PERSLID_WACHTWOORD,
|
|
p.PRS_SRTPERSLID_KEY,
|
|
a.PRS_AFDELING_KEY,
|
|
a.PRS_AFDELING_NAAM,
|
|
a.PRS_AFDELING_KOSTENPLAATS,
|
|
a.PRS_AFDELING_OMSCHRIJVING,
|
|
a.PRS_AFDELING_PARENTKEY,
|
|
a.PRS_EENHEID_KEY,
|
|
a.PRS_AFDELING_UPPER,
|
|
a.PRS_AFDELING_VERWIJDER,
|
|
a.PRS_BEDRIJF_KEY
|
|
FROM prs_perslid p, prs_perslidafdeling pa, prs_afdeling a
|
|
WHERE p.Prs_perslid_key = pa.Prs_perslid_key
|
|
AND pa.Prs_afdeling_key = a.Prs_afdeling_key
|
|
AND prs_perslid_verwijder IS NULL
|
|
AND prs_afdeling_verwijder IS NULL;
|
|
|
|
#endif // PRS
|
|
|
|
#ifdef MLD
|
|
|
|
-- Deze status mist nog...
|
|
|
|
INSERT INTO mld_statuses VALUES ( 7, 'Uitgegeven' );
|
|
|
|
|
|
CREATE_VIEW(mld_v_melding_status_gegevens,MLD_NORMAAL_PRIVILEGE) AS
|
|
SELECT M.mld_melding_key,
|
|
M.mld_melding_status,
|
|
S.mld_statuses_omschrijving,
|
|
DECODE(mld_melding_status,
|
|
1,mld_melding_afgewezen,
|
|
2,mld_melding_datum,
|
|
3,mld_melding_ingezien,
|
|
4,mld_melding_geaccepteerd,
|
|
5,mld_melding_afgemeld,
|
|
6,mld_melding_verwerkt,
|
|
7,mld_melding_geaccepteerd,
|
|
NULL) mld_melding_lastdate,
|
|
M.mld_melding_datum,
|
|
'['||MD.ins_discipline_omschrijving||'/'||SM.mld_stdmelding_omschrijving||'] '||m.mld_melding_omschrijving mld_melding_omschrijving,
|
|
AF.prs_afdeling_key,AF.prs_afdeling_omschrijving,
|
|
P.prs_perslid_key,P.prs_perslid_naam,
|
|
M.mld_alg_onroerendgoed_keys,
|
|
L.alg_locatie_code||
|
|
DECODE(G.alg_gebouw_code,NULL,'','-'||G.alg_gebouw_code)||
|
|
DECODE(G.alg_verdieping_volgnr,NULL,'','-'||G.alg_verdieping_volgnr)||
|
|
DECODE(G.alg_ruimte_nr,NULL,'','-'||G.alg_ruimte_nr)||
|
|
DECODE(G.alg_terreinsector_code,NULL,'','-'||G.alg_terreinsector_code) alg_plaats_omschrijving,
|
|
M.mld_stdmelding_key,
|
|
AF.prs_afdeling_eenheid,
|
|
AF.prs_eenheid_key,
|
|
M.mld_alg_locatie_key,
|
|
M.mld_melding_melder_naam,
|
|
AF.prs_afdeling_kostenplaats,
|
|
M.mld_ins_discipline_key,
|
|
P.prs_perslid_upper,
|
|
AF.prs_afdeling_upper,
|
|
M.mld_melding_username,
|
|
G.alg_gebouw_key,
|
|
G.alg_verdieping_key,
|
|
G.alg_ruimte_key,
|
|
P.prs_perslid_voorletters,
|
|
P.prs_perslid_voornaam
|
|
FROM mld_melding M,
|
|
mld_statuses S,
|
|
mld_discipline MD,
|
|
mld_stdmelding SM,
|
|
prs_afdeling AF,
|
|
prs_perslid P,
|
|
alg_v_allonrgoed_gegevens G,
|
|
alg_locatie L
|
|
WHERE M.mld_melding_status=S.mld_statuses_key
|
|
AND M.mld_ins_discipline_key=MD.ins_discipline_key
|
|
AND M.mld_stdmelding_key=SM.mld_stdmelding_key
|
|
AND M.prs_afdeling_key=AF.prs_afdeling_key (+)
|
|
AND M.prs_perslid_key=P.prs_perslid_key (+)
|
|
AND M.mld_alg_locatie_key=L.alg_locatie_key (+)
|
|
AND M.mld_alg_onroerendgoed_keys=G.alg_onroerendgoed_keys (+)
|
|
/
|
|
|
|
|
|
CREATE OR REPLACE FUNCTION MLD_F_BepaalOpdrContractVolgnr(cntKey IN NUMBER) RETURN NUMBER IS
|
|
ReturnVal NUMBER;
|
|
BEGIN
|
|
SELECT nvl(max(mld_opdr_bedrijfopdr_volgnr),0) + 1
|
|
INTO ReturnVal
|
|
FROM mld_opdr
|
|
WHERE cnt_contract_key = cntKey;
|
|
RETURN ReturnVal;
|
|
END;
|
|
/
|
|
|
|
CREATE_TRIGGER(mld_t_mld_opdr_B_IU)
|
|
BEFORE INSERT OR UPDATE ON mld_opdr
|
|
FOR EACH ROW
|
|
BEGIN
|
|
UPDATE_PRIMARY_KEY(mld_opdr_key, mld_s_mld_opdr_key);
|
|
IF :new.mld_melding_key IS NOT NULL THEN
|
|
DECLARE
|
|
Dummy CHAR;
|
|
BEGIN
|
|
SELECT 'X'
|
|
INTO Dummy
|
|
FROM mld_melding
|
|
WHERE mld_melding_key = :new.mld_melding_key
|
|
AND mld_melding_geaccepteerd IS NOT NULL
|
|
AND mld_melding_verwerkt IS NULL;
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND
|
|
THEN IF :new.cnt_contract_key IS NULL THEN raise_application_error(-20000, 'mld_m201'); END IF;
|
|
END;
|
|
END IF;
|
|
CHECK_REFERENCE_UITVOERENDE(mld_uitvoerende_keys, 'mld_m37');
|
|
DECLARE
|
|
Dummy BOOLEAN;
|
|
BEGIN
|
|
Dummy := fac_p_fac_save_restore.SavePrimaryKey('MLD_MELDING', :new.mld_melding_key);
|
|
END;
|
|
END;
|
|
/
|
|
|
|
ALTER TABLE mld_opdr DROP CONSTRAINT MLD_R_MLD_MELDING_KEY1;
|
|
ALTER TABLE mld_opdr ADD CONSTRAINT MLD_R_MLD_MELDING_KEY3 CHECK(mld_melding_key IS NOT NULL OR cnt_contract_key IS NOT NULL);
|
|
#endif // MLD
|
|
|
|
|
|
#ifdef RES
|
|
// AKZH#24
|
|
ALTER TABLE res_reservering ADD
|
|
res_reservering_plaats VARCHAR2(320);
|
|
|
|
DEFINIEER_VIEW_AANWEZIG(res_reservering, res_reservering_verwijder,
|
|
res_v_aanwezigreservering,RES_NORMAAL_PRIVILEGE);
|
|
|
|
|
|
CREATE_TRIGGER(ins_t_ins_deel_B_IU)
|
|
BEFORE INSERT OR UPDATE ON ins_deel
|
|
FOR EACH ROW
|
|
BEGIN
|
|
-- LET OP : Deze trigger is ook gedefinieerd in INS en CNT !!
|
|
UPDATE_PRIMARY_KEY(ins_deel_key,ins_s_ins_inst_keys);
|
|
UPDATE_UPPER(ins_deel_omschrijving,ins_deel_upper);
|
|
-- Indien verplaatsing of verwijdering of reincarnatie dan alleen vanuit de
|
|
-- CAD-omgeving, d.i. als tegelijk ins_deel_getekend een nieuwe waarde krijgt.
|
|
-- Dus een foutmelding als dit niet zo is.
|
|
CHECK_CADMUTATIE2(ins_deel_verwijder, ins_deel_getekend, ins_alg_ruimte_key, 'ins_m187');
|
|
CHECK_NOG_REFERENCES(ins_deel, ins_deel_verwijder, res_v_aanwezigins_deel,
|
|
ins_deel_key, 'res_m037');
|
|
DECLARE
|
|
dummy CHAR;
|
|
BEGIN
|
|
IF :new.ins_deel_verwijder IS NOT NULL
|
|
THEN
|
|
SELECT 'x'
|
|
INTO dummy
|
|
FROM cnt_v_aanwezigcontract_object
|
|
WHERE cnt_v_aanwezigcontract_object.cnt_ins_deel_key = :old.ins_deel_key;
|
|
raise_application_error(-20000,'cnt_m030');
|
|
END IF;
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND THEN NULL;
|
|
WHEN TOO_MANY_ROWS THEN raise_application_error(-20000,'cnt_m030');
|
|
END;
|
|
IF :new.ins_deel_parent_key IS NULL
|
|
THEN
|
|
DECLARE
|
|
Dummy BOOLEAN;
|
|
BEGIN
|
|
Dummy := fac_p_fac_save_restore.SavePrimaryKeyAndDate('INS_DEEL_VERWIJDER', :new.ins_deel_key, :old.ins_deel_verwijder);
|
|
END;
|
|
END IF;
|
|
|
|
IF :new.ins_deel_verwijder IS NOT NULL
|
|
THEN
|
|
DECLARE
|
|
Dummy BOOLEAN;
|
|
Dummy2 CHAR;
|
|
BEGIN
|
|
BEGIN
|
|
-- Een deel mag niet verwijderd worden als er nog openstaande meldingen zijn...
|
|
SELECT 'x'
|
|
INTO dummy2
|
|
FROM mld_v_aanwezigmelding_object O, mld_melding M
|
|
WHERE O.ins_deel_key = :old.ins_deel_key
|
|
AND O.mld_melding_key = M.mld_melding_key
|
|
AND EXISTS
|
|
(SELECT '' FROM mld_melding
|
|
WHERE mld_melding_afgemeld IS NULL
|
|
AND mld_melding_verwerkt IS NULL
|
|
AND mld_melding_key = M.mld_melding_key
|
|
MINUS
|
|
SELECT '' FROM mld_melding
|
|
WHERE mld_melding_afgewezen IS NOT NULL
|
|
AND mld_melding_key = M.mld_melding_key);
|
|
--
|
|
raise_application_error(-20000,'ins_m202');
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND THEN
|
|
Dummy := fac_p_fac_save_restore.SavePrimaryKey('INS_DEEL_ONTKOPPEL', :new.ins_deel_key);
|
|
WHEN TOO_MANY_ROWS THEN raise_application_error(-20000,'ins_m202');
|
|
END;
|
|
END;
|
|
END IF;
|
|
|
|
-- Vul het veld INS_DISCIPLINE van het huidige deel.
|
|
IF :old.ins_srtdeel_key IS NULL
|
|
OR :old.ins_srtdeel_key <> :new.ins_srtdeel_key
|
|
OR :old.ins_discipline_key IS NULL
|
|
THEN
|
|
BEGIN
|
|
SELECT INS_D.ins_discipline_key
|
|
INTO :new.ins_discipline_key
|
|
FROM ins_srtdeel INS_SD
|
|
, ins_srtgroep INS_SG
|
|
, ins_tab_discipline INS_D
|
|
WHERE INS_SD.ins_srtdeel_key = :new.ins_srtdeel_key
|
|
AND INS_SD.ins_srtgroep_key = INS_SG.ins_srtgroep_key
|
|
AND INS_SG.ins_discipline_key = INS_D.ins_discipline_key;
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND
|
|
THEN :new.ins_discipline_key := NULL;
|
|
END;
|
|
END IF;
|
|
-- Zoek de (redundante) alg_locatie_key erbij indien verplaatst.
|
|
-- Echter NIET voor persoonsgebonden objecten !!!
|
|
IF :old.ins_alg_ruimte_key IS NULL
|
|
OR :old.ins_alg_ruimte_key <> :new.ins_alg_ruimte_key
|
|
OR :new.ins_alg_locatie_key IS NULL
|
|
THEN
|
|
IF :new.ins_alg_ruimte_type IN ('A','P')
|
|
THEN
|
|
NULL;
|
|
ELSE
|
|
BEGIN
|
|
SELECT alg_locatie_key
|
|
INTO :new.ins_alg_locatie_key
|
|
FROM ins_v_alg_overzicht
|
|
WHERE alg_onroerendgoed_keys = :new.ins_alg_ruimte_key
|
|
AND alg_onroerendgoed_type = :new.ins_alg_ruimte_type;
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND
|
|
THEN :new.ins_alg_locatie_key := NULL;
|
|
END;
|
|
END IF;
|
|
END IF;
|
|
IF :new.ins_deel_module = 'INS'
|
|
AND (:old.ins_alg_ruimte_key <> :new.ins_alg_ruimte_key
|
|
OR :old.ins_alg_ruimte_key IS NULL)
|
|
THEN
|
|
IF :old.ins_alg_ruimte_type IN ('W','R','T')
|
|
AND :old.ins_deel_getekend IS NOT NULL
|
|
AND :new.ins_alg_ruimte_type IN ('A','P')
|
|
THEN
|
|
APPLICATION_ERROR(-20000, 'ins_m196');
|
|
END IF;
|
|
IF :new.ins_alg_ruimte_type = 'W' /* 990218/BIV - #2251 - Deel kan ook op werkplek worden geplaatst */
|
|
THEN
|
|
CHECK_KEY_REFERENCE(prs_v_aanwezigwerkplek , prs_werkplek_key , :new.ins_alg_ruimte_key, 'ins_m174');
|
|
ELSIF :new.ins_alg_ruimte_type = 'R'
|
|
THEN
|
|
CHECK_KEY_REFERENCE(alg_v_aanwezigruimte , alg_ruimte_key , :new.ins_alg_ruimte_key, 'ins_m092');
|
|
ELSIF :new.ins_alg_ruimte_type = 'T'
|
|
THEN
|
|
CHECK_KEY_REFERENCE(alg_v_aanwezigterreinsector, alg_terreinsector_key, :new.ins_alg_ruimte_key, 'ins_m095');
|
|
ELSIF :new.ins_alg_ruimte_type = 'A'
|
|
THEN
|
|
CHECK_KEY_REFERENCE(prs_v_aanwezigafdeling , prs_afdeling_key , :new.ins_alg_ruimte_key, 'ins_m194');
|
|
ELSIF :new.ins_alg_ruimte_type = 'P'
|
|
THEN
|
|
CHECK_KEY_REFERENCE(prs_v_aanwezigperslid , prs_perslid_key , :new.ins_alg_ruimte_key, 'ins_m195');
|
|
ELSE
|
|
APPLICATION_ERROR(-20000, 'ins_m84');
|
|
END IF;
|
|
DECLARE
|
|
Dummy BOOLEAN;
|
|
BEGIN
|
|
-- Alleen bestaande delen hebben mogelijk te verplaatsen onderdelen.
|
|
IF :old.ins_deel_aanmaak IS NOT NULL
|
|
AND :new.ins_deel_parent_key IS NULL
|
|
THEN
|
|
Dummy := fac_p_fac_save_restore.SavePrimaryKey('INS_DEEL_CASCADE', :new.ins_deel_key);
|
|
END IF;
|
|
END;
|
|
END IF;
|
|
UPDATE_AANMAAKDATUM(ins_deel, ins_deel_aanmaak);
|
|
END;
|
|
/
|
|
|
|
#endif // RES
|
|
|
|
#ifdef BES
|
|
|
|
DEF_FAC_ENTITY ('BES_DISCIPLINE' , 'Categorie', NULL, NULL, 'Category');
|
|
DEF_FAC_ENTITY ('BES_SRTGROEP' , 'Productgroepen', NULL, NULL,'Productgroups');
|
|
DEF_FAC_ENTITY ('BES_SRTDEEL' , 'Product', NULL, NULL,'Products');
|
|
|
|
DEF_FAC_ENTITY ('BES_PRODUCTNR' , 'Productnr.', NULL, NULL, 'Product');
|
|
DEF_FAC_ENTITY ('BES_VERVALDATUM' , 'Vervaldatum', NULL, NULL, 'Due date');
|
|
DEF_FAC_ENTITY ('BES_AFBEELDING' , 'Afbeelding' , NULL, NULL, 'Picture');
|
|
DEF_FAC_ENTITY ('BES_DISCIPLINE_OMSCHRIJVING', 'Omschrijving', NULL, NULL, 'Description');
|
|
DEF_FAC_ENTITY ('BES_SRTGROEP_OMSCHRIJVING', 'Omschrijving', NULL, NULL, 'Description');
|
|
|
|
#endif // BES
|
|
|
|
#ifdef BEZ
|
|
|
|
#endif // BEZ
|
|
|
|
#ifdef CNT
|
|
ALTER TABLE CNT_CONTRACT MODIFY(CNT_CONTRACT_NUMMER VARCHAR2(30));
|
|
|
|
ALTER TABLE CNT_CONTRACT MODIFY(CNT_CONTRACT_NUMMER_INTERN VARCHAR2(30));
|
|
|
|
ALTER TABLE CNT_CONTRACT
|
|
ADD (cnt_contract_nummer_intern VARCHAR2(15));
|
|
|
|
ALTER TABLE CNT_CONTRACT
|
|
ADD (cnt_contract_rappeldatum DATE);
|
|
|
|
ALTER TABLE CNT_CONTRACT
|
|
ADD (cnt_contract_opzegdatum DATE);
|
|
|
|
ALTER TABLE CNT_CONTRACT
|
|
ADD (cnt_contract_korting NUMBER(4,2)
|
|
CONSTRAINT cnt_c_cnt_contract_korting
|
|
CHECK(0 <= cnt_contract_korting AND cnt_contract_korting <= 100));
|
|
|
|
ALTER TABLE CNT_CONTRACT
|
|
ADD (cnt_contract_contact_persoon VARCHAR2(30));
|
|
|
|
ALTER TABLE CNT_CONTRACT
|
|
ADD (ins_discipline_key NUMBER(10)
|
|
CONSTRAINT cnt_r_ins_discipline_key
|
|
REFERENCES ins_tab_discipline (ins_discipline_key));
|
|
|
|
ALTER TABLE CNT_CONTRACT
|
|
ADD (cnt_contract_document VARCHAR2(512));
|
|
|
|
ALTER TABLE CNT_CONTRACT
|
|
ADD (prs_perslid_key_eig NUMBER(10)
|
|
CONSTRAINT cnt_r_cnt_perslid_key_eig
|
|
REFERENCES prs_perslid (prs_perslid_key));
|
|
|
|
ALTER TABLE CNT_CONTRACT
|
|
ADD (prs_perslid_key_beh NUMBER(10)
|
|
CONSTRAINT cnt_r_cnt_perslid_key_beh
|
|
REFERENCES prs_perslid (prs_perslid_key));
|
|
|
|
ALTER TABLE CNT_CONTRACT
|
|
ADD (cnt_contract_status NUMBER(1));
|
|
|
|
ALTER TABLE CNT_CONTRACT
|
|
ADD CONSTRAINT cnt_c_cnt_contract_rappel
|
|
CHECK(cnt_contract_looptijd_van <= cnt_contract_rappeldatum
|
|
AND cnt_contract_rappeldatum <= cnt_contract_opzegdatum);
|
|
ALTER TABLE CNT_CONTRACT
|
|
ADD CONSTRAINT cnt_c_cnt_contract_opzeg
|
|
CHECK(cnt_contract_rappeldatum <= cnt_contract_opzegdatum
|
|
AND cnt_contract_opzegdatum <= cnt_contract_looptijd_tot);
|
|
|
|
DEFINIEER_VIEW_AANWEZIG(cnt_contract, cnt_contract_verwijder, cnt_v_aanwezigcontract,CNT_NORMAAL_PRIVILEGE);
|
|
|
|
CREATE_TABLE (CNT_CONTRACT_DIENST,CNT_NORMAAL_PRIVILEGE)
|
|
( cnt_contract_dienst_key
|
|
NUMBER(10)
|
|
PRIMARY KEY,
|
|
cnt_contract_key
|
|
NUMBER(10)
|
|
CONSTRAINT cnt_r_cnt_contract_dienst REFERENCES cnt_contract(cnt_contract_key),
|
|
mld_stdmelding_key
|
|
NUMBER(10)
|
|
CONSTRAINT cnt_r_cnt_contract_stdmld REFERENCES mld_stdmelding(mld_stdmelding_key),
|
|
prs_bedrijf_key
|
|
NUMBER(10)
|
|
CONSTRAINT cnt_r_cnt_contract_bedrijf REFERENCES prs_bedrijf(prs_bedrijf_key),
|
|
cnt_contract_dienst_contactint
|
|
NUMBER(10)
|
|
CONSTRAINT cnt_r_cnt_contractint REFERENCES prs_perslid(prs_perslid_key),
|
|
cnt_contract_dienst_contactext VARCHAR2(30),
|
|
cnt_contract_dienst_uitvoertd NUMBER(3),
|
|
cnt_contract_dienst_uren NUMBER(6,2),
|
|
cnt_contract_dienst_materiaal NUMBER(6,2),
|
|
cnt_contract_dienst_uurloon NUMBER(6,2)
|
|
);
|
|
|
|
CREATE SEQUENCE cnt_s_cnt_contr_dienst_key MINVALUE 1;
|
|
|
|
|
|
CREATE OR REPLACE PACKAGE Cnt AS
|
|
FUNCTION cnt_contract_status (van IN DATE, rappel IN DATE, opzeg IN DATE, tot IN DATE) RETURN NUMBER;
|
|
FUNCTION cnt_contract_items (cntKey IN NUMBER) RETURN VARCHAR2;
|
|
|
|
PRAGMA RESTRICT_REFERENCES (cnt_contract_items, WNDS, WNPS);
|
|
PRAGMA RESTRICT_REFERENCES (cnt_contract_status, WNDS, WNPS);
|
|
END Cnt;
|
|
/
|
|
|
|
CREATE OR REPLACE PACKAGE BODY Cnt AS
|
|
|
|
FUNCTION cnt_contract_status (van IN DATE, rappel IN DATE, opzeg IN DATE, tot IN DATE) RETURN NUMBER AS
|
|
BEGIN
|
|
IF SYSDATE < van THEN
|
|
RETURN 0;
|
|
ELSIF SYSDATE <= rappel THEN
|
|
RETURN 1;
|
|
ELSIF SYSDATE <= opzeg THEN
|
|
RETURN 2;
|
|
ELSIF SYSDATE <= tot THEN
|
|
RETURN 3;
|
|
ELSE
|
|
RETURN 4;
|
|
END IF;
|
|
END;
|
|
|
|
|
|
FUNCTION cnt_contract_items (cntKey IN NUMBER) RETURN VARCHAR2 AS
|
|
ret VARCHAR2(512);
|
|
ckey number;
|
|
CURSOR query(cntKey NUMBER) IS
|
|
SELECT 1 ckey, S.INS_SRTDEEL_CODE || ' ' ||S.INS_SRTDEEL_OMSCHRIJVING cntText
|
|
from CNT_CONTRACT_OBJECT O, INS_V_AANWEZIGSRTDEEL S
|
|
WHERE O.CNT_CONTRACT_KEY = cntKey
|
|
AND S.ins_srtdeel_key = O.cnt_ins_srtdeel_key
|
|
UNION ALL
|
|
SELECT 2 ckey, D.INS_DEEL_OMSCHRIJVING cntText
|
|
from CNT_CONTRACT_OBJECT O, INS_V_AANWEZIGDEEL D
|
|
WHERE O.CNT_CONTRACT_KEY = cntKey
|
|
AND D.ins_DEEL_key = O.cnt_ins_DEEL_key
|
|
UNION ALL
|
|
SELECT 3 ckey, g.alg_locatie_omschrijving cntText
|
|
FROM alg_v_aanweziglocatie g, CNT_v_aanwezigCONTRACT_PLAATS P
|
|
WHERE p.CNT_CONTRACT_KEY = cntKey
|
|
AND p.cnt_alg_plaats_key = g.alg_locatie_key
|
|
AND p.CNT_ALG_PLAATS_CODE = 'L'
|
|
UNION ALL
|
|
SELECT 4 ckey, g.alg_gebouw_omschrijving cntText
|
|
FROM alg_v_aanweziggebouw g, CNT_v_aanwezigCONTRACT_PLAATS P
|
|
WHERE p.CNT_CONTRACT_KEY = cntKey
|
|
AND p.cnt_alg_plaats_key = g.alg_gebouw_key
|
|
AND p.CNT_ALG_PLAATS_CODE = 'G'
|
|
UNION ALL
|
|
SELECT 5 ckey, alg_terreinsector_naam cntText
|
|
FROM alg_v_aanwezigterreinsector T, CNT_v_aanwezigCONTRACT_PLAATS P
|
|
WHERE p.CNT_CONTRACT_KEY = cntKey
|
|
AND p.cnt_alg_plaats_key = T.alg_terreinsector_key
|
|
AND p.CNT_ALG_PLAATS_CODE = 'T'
|
|
ORDER BY 1,2;
|
|
|
|
BEGIN
|
|
ret := null;
|
|
ckey := -1;
|
|
FOR cntitem_rec IN query(cntKey) LOOP
|
|
IF ckey = -1 THEN
|
|
ret := cntitem_rec.cntText;
|
|
ELSE
|
|
IF ckey <> cntitem_rec.ckey THEN
|
|
ret := ret || CHR(10) || '------------------------------';
|
|
END IF;
|
|
IF LENGTH(ret)+LENGTH(cntitem_rec.cntText)<(512-3) THEN
|
|
ret := ret || CHR(10) || cntitem_rec.cntText;
|
|
ELSE
|
|
ret := ret || CHR(10) || '...';
|
|
RETURN ret;
|
|
END IF;
|
|
END IF;
|
|
ckey := cntitem_rec.ckey;
|
|
END LOOP;
|
|
RETURN ret;
|
|
END;
|
|
|
|
END Cnt;
|
|
/
|
|
|
|
|
|
CREATE OR REPLACE TRIGGER cnt_t_cnt_contract_dienst_B_IU
|
|
BEFORE INSERT OR UPDATE ON cnt_contract_dienst
|
|
FOR EACH ROW
|
|
BEGIN
|
|
IF :new.cnt_contract_dienst_key IS NULL THEN SELECT cnt_s_cnt_contr_dienst_key.nextval INTO :new.cnt_contract_dienst_key FROM DUAL; END IF;
|
|
IF :new.PRS_BEDRIJF_KEY IS NULL THEN
|
|
SELECT cnt_prs_bedrijf_key, cnt_contract_contact_persoon
|
|
INTO :new.prs_bedrijf_key, :new.CNT_CONTRACT_DIENST_CONTACTEXT
|
|
FROM cnt_contract C
|
|
WHERE C.cnt_contract_key=:new.cnt_contract_key;
|
|
--:new.CNT_CONTRACT_DIENST_CONTACTEXT := NULL;
|
|
END IF;
|
|
IF :new.CNT_CONTRACT_DIENST_CONTACTINT IS NULL THEN
|
|
SELECT PRS_PERSLID_KEY_EIG
|
|
INTO :new.CNT_CONTRACT_DIENST_CONTACTINT
|
|
FROM cnt_contract C
|
|
WHERE C.cnt_contract_key=:new.cnt_contract_key;
|
|
END IF;
|
|
DECLARE
|
|
dummy VARCHAR2(1);
|
|
BEGIN
|
|
SELECT 'x'
|
|
INTO dummy
|
|
from mld_stdmelding S, cnt_contract C
|
|
where mld_stdmelding_key=:new.mld_stdmelding_key
|
|
and c.ins_discipline_key=s.mld_ins_discipline_key
|
|
and c.CNT_CONTRACT_KEY=:new.cnt_contract_key;
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND
|
|
THEN raise_application_error(-20000, 'cnt_m031');
|
|
END;
|
|
|
|
END;
|
|
/
|
|
|
|
DEF_FAC_MESSAGE ('CNT_M031','De aangegeven dienst valt niet binnen de categorie van het contract','The service must belong to the discipline of the contract.');
|
|
|
|
DEF_FAC_MESSAGE ('cnt_c_cnt_contract_korting' ,'Het kortingspercentage moet tussen 0 en 100 liggen.' ,'Percentage must be between 0 and 100.');
|
|
DEF_FAC_MESSAGE ('cnt_r_ins_discipline_key' ,'De aangegeven vakgroep bestaat niet.' ,'Discipline does not exist.');
|
|
DEF_FAC_MESSAGE ('cnt_r_cnt_perslid_key_eig' ,'De aangegeven eigenaar bestaat niet.' ,'Owner does not exist.');
|
|
DEF_FAC_MESSAGE ('cnt_r_cnt_perslid_key_beh' ,'De aangegeven beheerder bestaat niet.' ,'Contratmanager does not exist.');
|
|
DEF_FAC_MESSAGE ('cnt_c_cnt_contract_rappel' ,'De rappeldatum moet tussen de begindatum en de opzegdatum liggen.' ,'Rappel date must be between start and stop date.');
|
|
DEF_FAC_MESSAGE ('cnt_c_cnt_contract_opzeg' ,'De opzegdatum moet tussen de rappeldatum en de einddatum liggen.' ,'Stop date must be between rappel and end date.');
|
|
DEF_FAC_MESSAGE ('cnt_r_cnt_contract_dienst' ,'Het aangegeven contract bestaat niet.' ,'That contract does not exist.');
|
|
DEF_FAC_MESSAGE ('cnt_r_cnt_contract_stdmld' ,'De aangegeven dienst bestaat niet.' ,'That service does not exist.');
|
|
DEF_FAC_MESSAGE ('cnt_r_cnt_contract_bedrijf' ,'Het aangegeven bedrijf bestaat niet.' ,'That company does not exist.');
|
|
DEF_FAC_MESSAGE ('cnt_r_cnt_contractint' ,'De aangegeven interne contactpersoon bestaat niet.' ,'That internal contact person does not exist');
|
|
|
|
|
|
#endif // CNT
|
|
|
|
|
|
|
|
#ifdef WEB
|
|
DEF_FAC_FUNCTIE('WEB_CNTBUS', 'Business:Contracten', 'WEB', 2);
|
|
|
|
UPDATE web_user_mess_actions SET web_user_mess_action_dsc='complains/complains.asp?reado=1'||chr(38)||'mld_key=' WHERE web_user_mess_actions_key=1;
|
|
#endif // WEB
|
|
|
|
|
|
#ifdef SCH
|
|
|
|
#endif // SCH
|
|
|
|
|
|
#ifdef FAC
|
|
|
|
UPDATE FAC_MESSAGE
|
|
SET FAC_MESSAGE_TEXT = 'Facilitor 4.24.6'
|
|
WHERE FAC_MESSAGE_CODE = 'FAC_M002';
|
|
|
|
UPDATE FAC_MESSAGE
|
|
SET FAC_MESSAGE_TEXT = 'Welkom bij Facilitor 4.24.6'
|
|
WHERE FAC_MESSAGE_CODE = 'FAC_M035';
|
|
|
|
|
|
#endif // FAC
|
|
|
|
#ifdef PRA
|
|
|
|
CREATE_TRIGGER(PRS_T_PRS_AANMELD_B_IU)
|
|
BEFORE INSERT OR UPDATE ON prs_aanmeld
|
|
FOR EACH ROW
|
|
BEGIN
|
|
DECLARE mes VARCHAR2(255);
|
|
actkey NUMBER;
|
|
code VARCHAR2(6);
|
|
keepmes NUMBER;
|
|
pkey NUMBER;
|
|
titel_key NUMBER;
|
|
email_key NUMBER;
|
|
mphone_key NUMBER;
|
|
badgen_key NUMBER;
|
|
badges_key NUMBER;
|
|
naam VARCHAR2(30);
|
|
aanmeldActKey NUMBER;
|
|
BEGIN
|
|
-- constants
|
|
titel_key := 62; -- person titel
|
|
email_key := 5; -- email kenmerk key
|
|
mphone_key := 1020; -- mobile phone kenmerk key
|
|
badgen_key := 1000; -- badge number kenmerk key
|
|
badges_key := 1001; -- badge sort kenmerk key
|
|
aanmeldactkey:= 21; -- Action : announcement of new personnel
|
|
|
|
IF :new.prs_aanmeld_key IS NULL THEN SELECT prs_s_prs_aanmeld_key.nextval INTO :new.prs_aanmeld_key FROM DUAL; END IF;
|
|
|
|
IF :old.Prs_aanmeld_aanmaak IS NULL THEN
|
|
BEGIN
|
|
-- initial new employee data input
|
|
:new.Prs_aanmeld_aanmaak := SYSDATE;
|
|
naam := :new.prs_aanmeld_naam;
|
|
code := 'COMPPZ';
|
|
BEGIN
|
|
SELECT WEB_USER_MESS_TEXT_DSC, WEB_USER_MESS_ACTIONS_KEY into mes, actkey
|
|
FROM WEB_USER_MESS_TEXT where WEB_USER_MESS_TEXT_CODE = code;
|
|
EXCEPTION WHEN NO_DATA_FOUND THEN null;
|
|
END;
|
|
-- inform security department
|
|
IF actkey is not null THEN
|
|
INSERT INTO WEB_USER_MESSAGES
|
|
SELECT NULL, NULL, PRS_PERSLID_KEY, actkey, REPLACE(mes,'##NAAM##', naam), NULL, 1, :new.prs_aanmeld_key, SYSDATE
|
|
FROM PRS_V_AANWEZIGSECURITY;
|
|
END IF;
|
|
END;
|
|
ELSE
|
|
naam := :old.prs_aanmeld_naam;
|
|
END IF;
|
|
IF :old.PRS_AANMELD_SECU_OK is null and :new.PRS_AANMELD_SECU_OK is not null and
|
|
:new.PRS_AANMELD_SECU_end is null THEN
|
|
BEGIN
|
|
:new.PRS_AANMELD_SECU_end := SYSDATE;
|
|
END;
|
|
END IF;
|
|
IF :old.PRS_AANMELD_SECU_end is null and :new.PRS_AANMELD_SECU_end is not null THEN
|
|
-- initial security input is completed
|
|
BEGIN
|
|
code := 'COMPSC';
|
|
BEGIN
|
|
select WEB_USER_MESS_TEXT_DSC, WEB_USER_MESS_ACTIONS_KEY into mes, actkey
|
|
from WEB_USER_MESS_TEXT where WEB_USER_MESS_TEXT_CODE = code;
|
|
EXCEPTION WHEN NO_DATA_FOUND THEN null;
|
|
END;
|
|
IF actkey is not null THEN
|
|
-- inform security department staff manager and contact person if it's not one person
|
|
IF :new.prs_aanmeld_pz_key is not null THEN
|
|
insert into WEB_USER_MESSAGES
|
|
select NULL, NULL, :new.prs_aanmeld_pz_key, actkey, REPLACE(mes, '##NAAM##', naam), NULL, 1, :new.prs_aanmeld_key, SYSDATE
|
|
FROM dual;
|
|
IF :new.prs_aanmeld_pz_key <> :new.prs_aanmeld_contact_key THEN
|
|
insert into WEB_USER_MESSAGES
|
|
select NULL, NULL, :new.prs_aanmeld_contact_key, actkey, REPLACE(mes,'##NAAM##', naam), NULL, 1, :new.prs_aanmeld_key, SYSDATE
|
|
FROM dual;
|
|
END IF;
|
|
ELSE
|
|
insert into WEB_USER_MESSAGES
|
|
select NULL, NULL, :new.prs_aanmeld_contact_key, actkey, REPLACE(mes,'##NAAM##', naam), NULL, 1, :new.prs_aanmeld_key, SYSDATE
|
|
FROM dual;
|
|
END IF;
|
|
END IF;
|
|
END;
|
|
END IF;
|
|
IF (:old.PRS_AANMELD_SECU_OK is null and :new.PRS_AANMELD_SECU_OK is not null and :new.PRS_AANMELD_WERKPLEK_OPLOC = 1)
|
|
or (:old.PRS_AANMELD_WERKPLEK_OPLOC = 0 and :new.PRS_AANMELD_WERKPLEK_OPLOC = 1
|
|
and :new.PRS_AANMELD_SECU_OK is not null )
|
|
THEN
|
|
-- all security input is complete, copy new person data into prs_perslid ans add reference to it
|
|
BEGIN
|
|
SELECT prs_s_prs_alluitvoerende_keys.nextval, nvl(FAC_USRDATA_OMSCHR,'')
|
|
INTO :new.PRS_PERSLID_KEY, mes FROM fac_usrdata where fac_usrtab_key (+)= titel_key
|
|
and :new.Prs_aanmeld_titel_key = FAC_USRDATA_KEY(+);
|
|
INSERT INTO PRS_PERSLID
|
|
(PRS_PERSLID_KEY, PRS_PERSLID_MODULE, PRS_SRTPERSLID_KEY, PRS_AFDELING_KEY,
|
|
PRS_PERSLID_NAAM, PRS_PERSLID_TITEL, PRS_PERSLID_NR, PRS_PERSLID_INGANGSDATUM,
|
|
PRS_PERSLID_EINDDATUM, PRS_PERSLID_TELEFOONNR, PRS_PERSLID_AANMAAK) values
|
|
(:new.PRS_PERSLID_KEY, 'PRS', 1, :new.Prs_afdeling_key, :new.Prs_aanmeld_naam, mes,
|
|
:new.Prs_aanmeld_persnr, :new.prs_aanmeld_datumbadgestart, :new.prs_aanmeld_datumbadgeend,
|
|
:new.prs_aanmeld_telintern, :new.Prs_aanmeld_aanmaak);
|
|
END;
|
|
END IF;
|
|
IF :old.PRS_AANMELD_CP_OK is null and :new.PRS_AANMELD_CP_OK is not null THEN
|
|
-- contact person's input is completed
|
|
BEGIN
|
|
code := 'COMPCP';
|
|
BEGIN
|
|
select WEB_USER_MESS_TEXT_DSC, WEB_USER_MESS_ACTIONS_KEY into mes, actkey
|
|
from WEB_USER_MESS_TEXT where WEB_USER_MESS_TEXT_CODE = code;
|
|
EXCEPTION WHEN NO_DATA_FOUND THEN null;
|
|
END;
|
|
-- inform facility manager
|
|
IF actkey is not null THEN
|
|
insert into WEB_USER_MESSAGES
|
|
select NULL, NULL, PRS_PERSLID_KEY, actkey, REPLACE(mes, '##NAAM##', naam), NULL, 1, :new.prs_aanmeld_key, SYSDATE
|
|
FROM PRS_V_AANWEZIGFACILITY;
|
|
END IF;
|
|
END;
|
|
END IF;
|
|
IF :old.PRS_AANMELD_FACI_OK is null and :new.PRS_AANMELD_FACI_OK is not null THEN
|
|
-- facilities input is completed
|
|
BEGIN
|
|
code := 'COMPFC';
|
|
BEGIN
|
|
select WEB_USER_MESS_TEXT_DSC, WEB_USER_MESS_ACTIONS_KEY into mes, actkey
|
|
from WEB_USER_MESS_TEXT where WEB_USER_MESS_TEXT_CODE = code;
|
|
EXCEPTION WHEN NO_DATA_FOUND THEN null;
|
|
END;
|
|
IF actkey is not null THEN
|
|
insert into WEB_USER_MESSAGES
|
|
select NULL, NULL, u.PRS_PERSLID_KEY, actkey, REPLACE(mes,'##NAAM##',naam), NULL, 1, :new.prs_aanmeld_key, SYSDATE
|
|
FROM FAC_V_WEBGEBRUIKER w,FAC_V_WEBUSER u,FAC_V_WEBFUNCTIE f
|
|
WHERE u.PRS_PERSLID_INITIALEN=w.FAC_GEBRUIKER_USERNAME AND
|
|
f.FAC_FUNCTIE_KEY=w.FAC_FUNCTIE_KEY AND
|
|
f.FAC_FUNCTIE_CODE = 'WEB_PRSSYS';
|
|
END IF;
|
|
END;
|
|
END IF;
|
|
IF :old.PRS_AANMELD_SYS_OK is null and :new.PRS_AANMELD_SYS_OK is not null THEN
|
|
-- new employee processing is completed
|
|
BEGIN
|
|
-- refresh prs_perslid table
|
|
IF :new.Prs_aanmeld_titel_key IS NOT NULL THEN
|
|
SELECT nvl(FAC_USRDATA_OMSCHR,'')INTO mes FROM fac_usrdata
|
|
where fac_usrtab_key (+)= titel_key
|
|
and :new.Prs_aanmeld_titel_key = FAC_USRDATA_KEY(+);
|
|
ELSE
|
|
mes := '';
|
|
END IF;
|
|
update prs_perslid
|
|
set PRS_AFDELING_KEY =:new.Prs_afdeling_key,
|
|
PRS_PERSLID_NAAM = :new.Prs_aanmeld_naam,
|
|
PRS_PERSLID_TITEL = mes,
|
|
PRS_PERSLID_NR = :new.Prs_aanmeld_persnr,
|
|
PRS_PERSLID_INGANGSDATUM = :new.prs_aanmeld_datumbadgestart,
|
|
PRS_PERSLID_EINDDATUM = :new.prs_aanmeld_datumbadgeend,
|
|
PRS_PERSLID_TELEFOONNR = :new.prs_aanmeld_telintern,
|
|
PRS_PERSLID_AANMAAK = :new.Prs_aanmeld_aanmaak
|
|
where prs_perslid_key = :new.prs_perslid_key;
|
|
-- copy the rest of data into prs_kenmerk
|
|
-- copy email address
|
|
mes := null;
|
|
IF :new.PRS_AANMELD_EMAIL is not null THEN
|
|
BEGIN
|
|
select PRS_KENMERKLINK_WAARDE into mes from PRS_KENMERKLINK
|
|
where PRS_LINK_KEY = :new.prs_perslid_key and PRS_KENMERK_KEY = email_key;
|
|
EXCEPTION WHEN NO_DATA_FOUND THEN null;
|
|
END;
|
|
IF mes is null THEN
|
|
insert into PRS_KENMERKLINK (PRS_KENMERKLINK_KEY,
|
|
PRS_LINK_KEY, PRS_KENMERK_KEY, PRS_KENMERKLINK_WAARDE, PRS_KENMERKLINK_NIVEAU )
|
|
values( prs_s_prs_kenmerkLink_key.NextVal, :new.prs_perslid_key,
|
|
email_key, :new.PRS_AANMELD_EMAIL ,'P');
|
|
ELSE
|
|
update PRS_KENMERKLINK set PRS_KENMERKLINK_WAARDE = :new.PRS_AANMELD_EMAIL
|
|
where PRS_LINK_KEY = :new.prs_perslid_key and PRS_KENMERK_KEY = email_key;
|
|
END IF;
|
|
END IF;
|
|
-- copy mobile phone
|
|
mes := null;
|
|
IF :new.PRS_AANMELD_MOBIEL is not null THEN
|
|
BEGIN
|
|
select PRS_KENMERKLINK_WAARDE into mes from PRS_KENMERKLINK
|
|
where PRS_LINK_KEY = :new.prs_perslid_key and PRS_KENMERK_KEY = mphone_key;
|
|
EXCEPTION WHEN NO_DATA_FOUND THEN null;
|
|
END;
|
|
IF mes is null THEN
|
|
insert into PRS_KENMERKLINK (PRS_KENMERKLINK_KEY,
|
|
PRS_LINK_KEY, PRS_KENMERK_KEY, PRS_KENMERKLINK_WAARDE, PRS_KENMERKLINK_NIVEAU )
|
|
values( prs_s_prs_kenmerkLink_key.NextVal, :new.prs_perslid_key,
|
|
mphone_key, :new.PRS_AANMELD_MOBIEL ,'P');
|
|
ELSE
|
|
update PRS_KENMERKLINK set PRS_KENMERKLINK_WAARDE = :new.PRS_AANMELD_MOBIEL
|
|
where PRS_LINK_KEY = :new.prs_perslid_key and PRS_KENMERK_KEY = mphone_key;
|
|
END IF;
|
|
END IF;
|
|
-- copy badge number
|
|
mes := null;
|
|
IF :new.PRS_AANMELD_DEFBADGENR is not null THEN
|
|
BEGIN
|
|
select PRS_KENMERKLINK_WAARDE into mes from PRS_KENMERKLINK
|
|
where PRS_LINK_KEY = :new.prs_perslid_key and PRS_KENMERK_KEY = badgen_key;
|
|
EXCEPTION WHEN NO_DATA_FOUND THEN null;
|
|
END;
|
|
IF mes is null THEN
|
|
insert into PRS_KENMERKLINK (PRS_KENMERKLINK_KEY,
|
|
PRS_LINK_KEY, PRS_KENMERK_KEY, PRS_KENMERKLINK_WAARDE, PRS_KENMERKLINK_NIVEAU )
|
|
values( prs_s_prs_kenmerkLink_key.NextVal, :new.prs_perslid_key,
|
|
badgen_key, :new.PRS_AANMELD_DEFBADGENR ,'P');
|
|
ELSE
|
|
update PRS_KENMERKLINK set PRS_KENMERKLINK_WAARDE = :new.PRS_AANMELD_DEFBADGENR
|
|
where PRS_LINK_KEY = :new.prs_perslid_key and PRS_KENMERK_KEY = badgen_key;
|
|
END IF;
|
|
END IF;
|
|
-- copy badge sort
|
|
mes := null;
|
|
IF :new.PRS_AANMELD_BADGESOORT is not null THEN
|
|
BEGIN
|
|
select PRS_KENMERKLINK_WAARDE into mes from PRS_KENMERKLINK
|
|
where PRS_LINK_KEY = :new.prs_perslid_key and PRS_KENMERK_KEY = badges_key;
|
|
EXCEPTION WHEN NO_DATA_FOUND THEN null;
|
|
END;
|
|
IF mes is null THEN
|
|
insert into PRS_KENMERKLINK (PRS_KENMERKLINK_KEY,
|
|
PRS_LINK_KEY, PRS_KENMERK_KEY, PRS_KENMERKLINK_WAARDE, PRS_KENMERKLINK_NIVEAU )
|
|
values( prs_s_prs_kenmerkLink_key.NextVal, :new.prs_perslid_key,
|
|
badges_key, :new.PRS_AANMELD_BADGESOORT ,'P');
|
|
ELSE
|
|
update PRS_KENMERKLINK set PRS_KENMERKLINK_WAARDE = :new.PRS_AANMELD_BADGESOORT
|
|
where PRS_LINK_KEY = :new.prs_perslid_key and PRS_KENMERK_KEY = badges_key;
|
|
END IF;
|
|
END IF;
|
|
END;
|
|
DELETE FROM WEB_USER_MESSAGES
|
|
WHERE web_user_mess_actions_key = AanmeldActKey
|
|
AND web_user_mess_action_params = :new.prs_aanmeld_key;
|
|
END IF;
|
|
IF :old.PRS_AANMELD_WERKPLEK_OPLOC = 1 and :new.PRS_AANMELD_WERKPLEK_OPLOC = 0 THEN
|
|
-- delete new employee information from the database
|
|
delete from prs_kenmerklink where PRS_LINK_KEY = :new.PRS_PERSLID_KEY;
|
|
delete from prs_perslidwerkplek where prs_perslid_key = :new.PRS_PERSLID_KEY;
|
|
delete from prs_perslid where prs_perslid_key = :new.PRS_PERSLID_KEY;
|
|
:new.PRS_PERSLID_KEY := null;
|
|
END IF;
|
|
keepmes := 7;
|
|
delete from WEB_USER_MESSAGES where WEB_USER_MESS_ACTION_DATUM < (SYSDATE - keepmes);
|
|
END;
|
|
END;
|
|
/
|
|
|
|
#endif // PRA
|