Files
Database/_UP/129TO130.SRC
1998-09-23 08:56:36 +00:00

1740 lines
66 KiB
Plaintext

SPOOL 129to130
--
-- [Z:\PROJECT\SM44\SRC\SQL\_UPDATE\129TO130.SQL]
--
-- Update script van Facilitor 2.0 versie 1.29 naar 1.30
--
/*
* 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.
*
* Revisie:
*
* 14-07-97 AH PRS_P_PRS_BepaalWerkplekOpp heeft extra argument ArgEditMode toegevoegd, PRS_V_WERKPLEK_GEGEVENS
* ook aangepast.
* 13-07-97 KTH - '#ifdef 0' om revisielijst gevoegd: niet tonen in 129to130.SQL
* - #1367: typefouten uit MESSAGE gehaald en #ifdef PRR verwijderd
* - LOG#1367 aangepast voor diverse CUSTs
* - intro aan script toegevoegd tbv verifieren vorige versienr
* 11-07-97 AH #1392, SCH_V_PROGRAMMA aangepast.Als er ruimtes zijn zonder srtvloer, srtruimte
* oid. dan moeten deze toch in het programma-overzicht (SCH213) komen te staan.
* 11-07-97 AH #1390, IN _SCH_V_NIVO_GEGEVENS hoeft de UNION met Gebouw niet te worden
* gedaan.
* 11-07-97 AH #1381, PRS_M108 toegevoegd,PRS_PERSLIDWERKPLEK_OPP, PRS_PERSLIDWERKPLEK_BEZETTING,
* PRS_PERSLIDWERKPLEK_NORM toegevoegd
* 11-07-97 AH #1379, View PRS_V_WERKPLEK_BEZETTING toegevoegd en PRS_V_PERSLIDWERKPLEK_GEGEVENS
* aangepast, gebruik makend van de nieuwe view.
* 10-07-97 AH #1377, Stored Proc PRS_P_PRS_BepaalWerkplekOpp toegevoegd in
* PRS_V_WERKPLEK_GEGEVENS
* 11-07-97 AH #1377, Nieuwe Stored-function PRS_P_PRS_BepaalWerkplekOpp toegevoegd
* 10-07-97 AH #1376, CHECK op PRS_PERSLID_UURLOON toegevoegd, deze mag niet negatief zijn.
* 10-07-97 AH #1377, PRS_M016 aangepast alleen voor PRR
* 10-07-97 AH #1367, ALG_M211 - ALG_M214 toegevoegd voor meldingen Restricted verwijderen
* van Regio, District en Locatie
* 10-07-97 AH #1367, Aanwezig-views van ALG_GEBOUW, ALG_TERREINSECTOR, ALG_VERDIEPING en ALG_RUIMTE
* veranderd, deze hoeven niet meer te controleren of de locatie aanwezig is.
* 10-07-97 AH #1367, Restricted verwijderen op Regio/District en Locatie. In triggers
* ALG_T_ALG_REGIO_B_IU, ALG_T_ALG_DISTRICT_B_IU en ALG_T_ALG_LOCATIE_B_IU
* 7/1/97 AH Extra functionaliteit voor SCH/IBG
* 6/25/97 AH Bugfixes voor RHY0117p3 doorgevoerd
* --- 01.29 ---
*/
#include "..\modules.h"
#include "..\comsql.h"
set heading off
clear screen
/*
* 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
*/
PROMPT ***********************************************************************
PROMPT
PROMPT UPGRADE SCRIPT van Facilitor 2.0 versie 01.29 naar 01.30
PROMPT
SELECT 'De huidige versie van Facilitor zou moeten zijn 01.29 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 heading on
INSERT INTO FAC_MESSAGE VALUES('SCH_M027','Verwijderden niet toegestaan, er zijn nog ruimtes met deze vloersoort.');
INSERT INTO FAC_MESSAGE VALUES('SCH_M028','Verwijderen niet toegestaan, er zijn nog werkzaamheden bij deze ruimtesoort.');
INSERT INTO FAC_MESSAGE VALUES('SCH_M029','Verwijderen niet toegestaan, er zijn nog werkzaamheden bij deze vloersoort.');
INSERT INTO FAC_MESSAGE VALUES('SCH_M030','Code van de frequentie is niet ingevuld.');
INSERT INTO FAC_MESSAGE VALUES('SCH_M031','Omschrijving van de frequentie is niet ingevuld.');
INSERT INTO FAC_MESSAGE VALUES('SCH_M032','Omschrijving van de vloersoort is niet ingevuld.');
INSERT INTO FAC_MESSAGE VALUES('SCH_M033','Verwijderen frequentie ');
INSERT INTO FAC_MESSAGE VALUES('SCH_M034','Verwijderen vloersoort ');
INSERT INTO FAC_MESSAGE VALUES('SCH_M035','De geselecteerde schoonmaaknivo''s verwijderen?');
INSERT INTO FAC_MESSAGE VALUES('SCH_M036','Er zijn geen schoonmaaknivo''s geselecteerd');
INSERT INTO FAC_MESSAGE VALUES('SCH_M037','De geselecteerde erkzaamheden verwijderen?');
INSERT INTO FAC_MESSAGE VALUES('SCH_M038','Er zijn geen werkzaamheden geselecteerd');
INSERT INTO FAC_MESSAGE VALUES('SCH_M039','Ruimtesoort of vloersoort is niet ingevuld.');
INSERT INTO FAC_MESSAGE VALUES('SCH_M040','Frequentie is niet ingevuld.');
INSERT INTO FAC_MESSAGE VALUES('SCH_M041','Activiteit is niet ingevuld.');
INSERT INTO FAC_ENTITY_NAME VALUES('SCH_FREQUENTIE','Frequentie','Frequenties','de');
INSERT INTO FAC_ENTITY_NAME VALUES('SCH_FREQUENTIE_CODE','Code','Codes','de');
INSERT INTO FAC_ENTITY_NAME VALUES('SCH_FREQUENTIE_OMSCHRIJVING','Omschrijving','Omschrijvingen','de');
INSERT INTO FAC_ENTITY_NAME VALUES('SCH_SRTVLOER','Vloersoort','Vloersoorten','de');
INSERT INTO FAC_ENTITY_NAME VALUES('SCH_SRTVLOER_OMSCHRIJVING','Omschrijving','Omschrijvingen','de');
INSERT INTO FAC_ENTITY_NAME VALUES('SCH_ACTIVITEIT_CODE','Code','Codes','de');
INSERT INTO FAC_ENTITY_NAME VALUES('SCH_ACTIVITEIT_OMSCHRIJVING','Omschrijving','Omschrijvingen','de');
INSERT INTO FAC_ENTITY_NAME VALUES('SCH_ACTIVITEIT_VOLGNR','Volgnummer','Volgnummers','het');
INSERT INTO FAC_ENTITY_NAME VALUES('SCH_NIVO_SHORT','Niveau','Niveaus','het');
INSERT INTO FAC_FORM VALUES('SCH015', NULL, NULL ,'260150','SCH_SCH015','Overzichtscherm Frequentie');
INSERT INTO FAC_FORM VALUES('SCH016', NULL, NULL ,'260160','SCH_SCH016','Overzichtscherm Vloersoort');
INSERT INTO FAC_FORM VALUES('SCH115', NULL, NULL ,'261150','SCH_SCH115','Mutatiescherm Frequentie');
INSERT INTO FAC_FORM VALUES('SCH116', NULL, NULL ,'261160','SCH_SCH116','Mutatiescherm Vloersoort');
DELETE FROM fac_form WHERE fac_form_name = 'SCH212';
INSERT INTO FAC_FORM VALUES('SCH213', NULL, NULL ,'262130','SCH_SCH213','Rapport Schoonmaakprogramma IBG');
INSERT INTO FAC_ENTITY_NAME VALUES('PRS_RAPPORT_TYPE', 'Type', 'Types', 'het');
INSERT INTO FAC_ENTITY_NAME VALUES('PRS_RAPPORT_RUIMTE_OPP', 'Bruto Opp.', NULL, 'de');
INSERT INTO FAC_ENTITY_NAME VALUES('PRS_RAPPORT_WERKPLEK_OPP', 'Werkplek Opp.', NULL, 'de');
INSERT INTO FAC_ENTITY_NAME VALUES('PRS_RAPPORT_BENUT_OPP', 'Benut Opp.', NULL, 'de');
INSERT INTO FAC_ENTITY_NAME VALUES('PRS_RAPPORT_PERCENTAGE_OPP', 'Percentage', NULL, 'het');
INSERT INTO FAC_MESSAGE VALUES('PRS_M107', 'Ongebruikte werkplekken overige ruimtes');
#ifdef SCH
/* LOG#1326 */
DROP TABLE sch_werkzaamheden;
DROP TABLE sch_nivo_og;
DROP TABLE sch_nivo;
DROP TABLE sch_activiteit;
DROP TABLE sch_frequentie;
DROP TABLE sch_srtvloer;
/* Nivo van schoonmaken, bv Minimaal, Maximaal, uitgebreid, beperkt. */
CREATE_TABLE(sch_nivo,NORMAAL_PRIVILEGE)
(
sch_nivo_key
NUMBER(10)
PRIMARY KEY,
sch_nivo_omschrijving
VARCHAR2(30)
NOT NULL,
sch_nivo_upper
VARCHAR2(30)
NOT NULL
CONSTRAINT sch_c_sch_nivo_unique UNIQUE
);
CREATE_TABLE(sch_activiteit,NORMAAL_PRIVILEGE)
(
sch_activiteit_key
NUMBER(10)
PRIMARY KEY,
sch_activiteit_prijsprofiel /* 1 = prijsbepaling gaat per vierkante meter */
NUMBER(1) /* 2 = prijsbepaling gaat per stuk */
CONSTRAINT sch_c_sch_activiteit_check CHECK(sch_activiteit_prijsprofiel = 1 OR
sch_activiteit_prijsprofiel = 2),
sch_activiteit_code
VARCHAR2(10)
NOT NULL
CONSTRAINT sch_c_sch_activiteit_unique UNIQUE,
sch_activiteit_omschrijving
VARCHAR2(512)
NOT NULL,
sch_activiteit_volgnr /* Volgorde waarin de activiteit getoond wordt.*/
NUMBER(3) /* Hoeft niet ingevuld te zijn.*/
);
CREATE_TABLE(sch_nivo_og,NORMAAL_PRIVILEGE)
(
sch_alg_og_key
NUMBER(10)
NOT NULL
CONSTRAINT sch_c_sch_nivo_og_unique UNIQUE,
sch_nivo_key
NUMBER(10)
REFERENCES sch_nivo
NOT NULL,
sch_nivo_og_correctiefactor
NUMBER(4,1)
DEFAULT 100,
CONSTRAINT sch_c_sch_nivo_og_check CHECK (sch_nivo_og_correctiefactor >=0 )
);
/* frequentie voor de werkzaamheden, bv. 4W 4 maal per week.*/
CREATE_TABLE(sch_frequentie,NORMAAL_PRIVILEGE)
(
sch_frequentie_key
NUMBER(10)
PRIMARY KEY,
sch_frequentie_code
VARCHAR2(4)
NOT NULL
CONSTRAINT sch_c_sch_frequentie_unique UNIQUE,
sch_frequentie_omschrijving
VARCHAR2(30)
NOT NULL
);
/* Vloerafwerking, bn. Steen of Tapijt.*/
CREATE_TABLE(sch_srtvloer,NORMAAL_PRIVILEGE)
(
sch_srtvloer_key
NUMBER(10)
PRIMARY KEY,
sch_srtvloer_omschrijving
VARCHAR2(30)
NOT NULL,
sch_srtvloer_upper
VARCHAR2(30)
NOT NULL,
sch_srtvloer_aanmaak
DATE
DEFAULT SYSDATE,
sch_srtvloer_verwijder
DATE
DEFAULT NULL,
CONSTRAINT sch_c_sch_srtvloer_unique UNIQUE(sch_srtvloer_upper, sch_srtvloer_verwijder)
);
/* werkzaamheden (bv. stofzuigen), voor een ruimtesoort, nivo en activiteit */
CREATE_TABLE(sch_werkzaamheden,NORMAAL_PRIVILEGE)
(
sch_werkzaamheden_key
NUMBER(10)
PRIMARY KEY,
sch_nivo_key
NUMBER(10)
REFERENCES sch_nivo
NOT NULL,
sch_alg_srtruimte_key
NUMBER(10)
REFERENCES alg_srtruimte,
sch_activiteit_key
NUMBER(10)
REFERENCES sch_activiteit
NOT NULL,
sch_werkzaamheden_kosten
NUMBER(8,2),
// Deze velden zijn overbodig, komen uit SCH_ACTIVITEIT
// sch_werkzaamheden_prijsprofiel /* 1 = prijsbepaling gaat per vierkante meter */
// NUMBER(1), /* 2 = prijsbepaling gaat per stuk */
// sch_werkzaamheden_omschrijving
// VARCHAR2(30)
// NOT NULL,
// sch_werkzaamheden_upper
// VARCHAR2(30)
// NOT NULL,
sch_frequentie_key
NUMBER(10)
REFERENCES sch_frequentie(sch_frequentie_key)
NOT NULL,
sch_srtvloer_key /* mag null zijn. */
NUMBER(10)
REFERENCES sch_srtvloer(sch_srtvloer_key),
CONSTRAINT sch_c_sch_werkzaamheden_unique
UNIQUE(sch_nivo_key, sch_alg_srtruimte_key, sch_srtvloer_key, sch_activiteit_key)
);
ALTER TABLE alg_ruimte
ADD
(
sch_srtvloer_key
NUMBER(10)
REFERENCES sch_srtvloer(sch_srtvloer_key)
);
/* view opnieuw aanmaken vanwege de nieuw toegevoegde column */
CREATE OR REPLACE VIEW alg_v_aanwezigruimte AS SELECT * FROM alg_ruimte WHERE alg_ruimte.alg_ruimte_verwijder IS NULL AND
alg_verdieping_key IN (SELECT alg_verdieping_key
FROM alg_v_aanwezigverdieping);
CREATE INDEX sch_i_sch_nivo_og_1 ON sch_nivo_og(sch_nivo_key);
CREATE INDEX sch_i_sch_nivo_og_2 ON sch_nivo_og(sch_alg_og_key);
CREATE INDEX sch_i_sch_werkzaamheden_1 ON sch_werkzaamheden(sch_nivo_key);
CREATE INDEX sch_i_sch_werkzaamheden_2 ON sch_werkzaamheden(sch_alg_srtruimte_key);
CREATE INDEX sch_i_sch_werkzaamheden_3 ON sch_werkzaamheden(sch_activiteit_key);
CREATE INDEX sch_i_sch_werkzaamheden_4 ON sch_werkzaamheden(sch_srtvloer_key);
CREATE INDEX sch_i_sch_werkzaamheden_5 ON sch_werkzaamheden(sch_frequentie_key);
CREATE INDEX sch_i_alg_ruimte_1 ON alg_ruimte(sch_srtvloer_key);
CREATE SEQUENCE sch_s_sch_frequentie_key MINVALUE 1;
CREATE SEQUENCE sch_s_sch_srtvloer_key MINVALUE 1;
CREATE OR REPLACE FUNCTION SCH_P_SCH_BepaalFrequentieCode( SrtRuimteKey IN NUMBER, SrtVloerKey IN NUMBER,
ActiviteitKey IN NUMBER, NivoKey IN NUMBER) RETURN VARCHAR2 IS
FrequentieCode sch_frequentie.sch_frequentie_code%TYPE;
BEGIN
FrequentieCode := NULL;
IF FrequentieCode IS NULL
THEN
BEGIN
SELECT SCH_F.sch_frequentie_code
INTO FrequentieCode
FROM sch_frequentie SCH_F, sch_werkzaamheden SCH_W
WHERE SCH_F.sch_frequentie_key = SCH_W.sch_frequentie_key
AND SCH_W.sch_alg_srtruimte_key = SrtRuimteKey
AND SCH_W.sch_srtvloer_key = SrtVloerKey
AND SCH_W.sch_activiteit_key = ActiviteitKey
AND SCH_W.sch_nivo_key = NivoKey;
EXCEPTION
WHEN NO_DATA_FOUND
THEN FrequentieCode := NULL;
WHEN TOO_MANY_ROWS
THEN FrequentieCode := NULL;
END;
END IF;
IF FrequentieCode IS NULL
THEN
BEGIN
SELECT SCH_F.sch_frequentie_code
INTO FrequentieCode
FROM sch_frequentie SCH_F, sch_werkzaamheden SCH_W
WHERE SCH_F.sch_frequentie_key = SCH_W.sch_frequentie_key
AND SCH_W.sch_alg_srtruimte_key = SrtRuimteKey
AND SCH_W.sch_srtvloer_key IS NULL
AND SCH_W.sch_activiteit_key = ActiviteitKey
AND SCH_W.sch_nivo_key = NivoKey;
EXCEPTION
WHEN NO_DATA_FOUND
THEN FrequentieCode := NULL;
WHEN TOO_MANY_ROWS
THEN FrequentieCode := NULL;
END;
END IF;
IF FrequentieCode IS NULL
THEN
BEGIN
SELECT SCH_F.sch_frequentie_code
INTO FrequentieCode
FROM sch_frequentie SCH_F, sch_werkzaamheden SCH_W
WHERE SCH_F.sch_frequentie_key = SCH_W.sch_frequentie_key
AND SCH_W.sch_alg_srtruimte_key IS NULL
AND SCH_W.sch_srtvloer_key = SrtVloerKey
AND SCH_W.sch_activiteit_key = ActiviteitKey
AND SCH_W.sch_nivo_key = NivoKey;
EXCEPTION
WHEN NO_DATA_FOUND
THEN FrequentieCode := NULL;
WHEN TOO_MANY_ROWS
THEN FrequentieCode := NULL;
END;
END IF;
IF FrequentieCode IS NULL
THEN
FrequentieCode := '-';
END IF;
RETURN FrequentieCode;
END;
/
DEFINIEER_VIEW_AANWEZIG(sch_srtvloer, sch_srtvloer_verwijder,
sch_v_aanwezigsrtvloer,NORMAAL_PRIVILEGE);
/* De karakteristieke gegevens over de activiteit van werkzaamheden */
CREATE_VIEW(sch_v_werkzaamheden_gegevens, NORMAAL_PRIVILEGE)
(sch_werkzaamheden_key,
sch_werkzaamheden_kosten,
sch_activiteit_code,
sch_activiteit_prijsprofiel,
sch_nivo_key,
sch_nivo_omschrijving,
alg_srtruimte_key,
alg_srtruimte_omschrijving,
alg_srtruimte_upper,
sch_srtvloer_key,
sch_srtvloer_omschrijving,
sch_srtvloer_upper,
sch_frequentie_key,
sch_frequentie_code) AS
SELECT SCH_W.sch_werkzaamheden_key,
SCH_W.sch_werkzaamheden_kosten,
SCH_A.sch_activiteit_code,
SCH_A.sch_activiteit_prijsprofiel,
SCH_N.sch_nivo_key,
SCH_N.sch_nivo_omschrijving,
SCH_W.sch_alg_srtruimte_key,
ALG_SR.alg_srtruimte_omschrijving,
ALG_SR.alg_srtruimte_upper,
SCH_W.sch_srtvloer_key,
SCH_SV.sch_srtvloer_omschrijving,
SCH_SV.sch_srtvloer_upper,
SCH_W.sch_frequentie_key,
SCH_F.sch_frequentie_code
FROM sch_werkzaamheden SCH_W, sch_activiteit SCH_A, sch_nivo SCH_N,
sch_v_aanwezigsrtvloer SCH_SV, alg_v_aanwezigsrtruimte ALG_SR,
sch_frequentie SCH_F
WHERE SCH_W.sch_activiteit_key = SCH_A.sch_activiteit_key
AND SCH_W.sch_nivo_key = SCH_N.sch_nivo_key
AND SCH_W.sch_frequentie_key = SCH_F.sch_frequentie_key
AND SCH_W.sch_srtvloer_key = SCH_SV.sch_srtvloer_key (+)
AND SCH_W.sch_alg_srtruimte_key = ALG_SR.alg_srtruimte_key (+);
CREATE_VIEW(sch_v_og, NORMAAL_PRIVILEGE)
(alg_og_key,
alg_locatie_key,
alg_gebouw_key,
alg_gebouw_omschrijving,
alg_gebouw_upper,
alg_verdieping_key,
alg_verdieping_omschrijving,
alg_verdieping_volgnr,
alg_ruimte_key,
alg_ruimte_nr,
alg_ruimte_upper_nr) AS
SELECT G.alg_gebouw_key,
G.alg_locatie_key,
G.alg_gebouw_key,
G.alg_gebouw_omschrijving,
G.alg_gebouw_upper,
to_number(NULL),
NULL,
0,
to_number(NULL),
NULL,
' '
FROM alg_v_aanweziggebouw G
UNION
SELECT V.alg_verdieping_key,
G.alg_locatie_key,
G.alg_gebouw_key,
G.alg_gebouw_omschrijving,
G.alg_gebouw_upper,
V.alg_verdieping_key,
V.alg_verdieping_omschrijving,
V.alg_verdieping_volgnr,
to_number(NULL),
NULL,
' '
FROM alg_v_aanwezigverdieping V, alg_v_aanweziggebouw G
WHERE V.alg_gebouw_key = G.alg_gebouw_key
UNION
SELECT R.alg_ruimte_key,
G.alg_locatie_key,
G.alg_gebouw_key,
G.alg_gebouw_omschrijving,
G.alg_gebouw_upper,
V.alg_verdieping_key,
V.alg_verdieping_omschrijving,
V.alg_verdieping_volgnr,
R.alg_ruimte_key,
R.alg_ruimte_nr,
R.alg_ruimte_upper_nr
FROM alg_v_aanwezigruimte R, alg_v_aanwezigverdieping V, alg_v_aanweziggebouw G
WHERE R.alg_verdieping_key = V.alg_verdieping_key
AND V.alg_gebouw_key = G.alg_gebouw_key;
CREATE_VIEW(sch_v_nivo_gegevens, NORMAAL_PRIVILEGE)
(alg_locatie_key,
alg_gebouw_key,
alg_gebouw_omschrijving,
alg_gebouw_upper,
alg_verdieping_key,
alg_verdieping_omschrijving,
alg_verdieping_volgnr,
alg_ruimte_key,
alg_ruimte_nr,
alg_ruimte_upper_nr,
sch_nivo_key,
sch_nivo_omschrijving,
sch_alg_og_key) AS
SELECT C.alg_locatie_key,
C.alg_gebouw_key,
C.alg_gebouw_omschrijving,
C.alg_gebouw_upper,
C.alg_verdieping_key,
C.alg_verdieping_omschrijving,
C.alg_verdieping_volgnr,
C.alg_ruimte_key,
C.alg_ruimte_nr,
C.alg_ruimte_upper_nr,
A.sch_nivo_key,
A.sch_nivo_omschrijving,
B.sch_alg_og_key
FROM sch_nivo A, sch_nivo_og B, sch_v_og C
WHERE A.sch_nivo_key = B.sch_nivo_key
AND B.sch_alg_og_key = C.alg_og_key
UNION
SELECT alg_locatie_key,
alg_gebouw_key,
alg_gebouw_omschrijving,
alg_gebouw_upper,
to_number(NULL),
NULL,
to_number(NULL),
to_number(NULL),
NULL,
NULL,
to_number(NULL),
NULL,
to_number(NULL)
FROM alg_v_aanweziggebouw
WHERE alg_gebouw_key NOT IN (SELECT sch_alg_og_key
FROM sch_nivo_og);
CREATE_VIEW(sch_v_nivo_ruimte, NORMAAL_PRIVILEGE)
(sch_alg_og_key,
alg_gebouw_key,
alg_verdieping_key,
alg_ruimte_key,
sch_nivo_key,
sch_nivo_og_correctiefactor) AS
SELECT SCH_NO.sch_alg_og_key,
ALG_V.alg_gebouw_key,
ALG_V.alg_verdieping_key,
ALG_R.alg_ruimte_key,
SCH_NO.sch_nivo_key,
SCH_NO.sch_nivo_og_correctiefactor
FROM sch_nivo_og SCH_NO, alg_verdieping ALG_V,
alg_v_aanwezigruimte ALG_R
WHERE ALG_V.alg_verdieping_key = ALG_R.alg_verdieping_key
AND SCH_NO.sch_alg_og_key = ALG_R.alg_ruimte_key
UNION
SELECT SCH_NO.sch_alg_og_key,
ALG_V.alg_gebouw_key,
ALG_V.alg_verdieping_key,
ALG_R.alg_ruimte_key,
SCH_NO.sch_nivo_key,
SCH_NO.sch_nivo_og_correctiefactor
FROM sch_nivo_og SCH_NO, alg_verdieping ALG_V,
alg_v_aanwezigruimte ALG_R
WHERE ALG_V.alg_verdieping_key = ALG_R.alg_verdieping_key
AND SCH_NO.sch_alg_og_key = ALG_V.alg_verdieping_key
AND NOT EXISTS (SELECT sch_alg_og_key
FROM sch_nivo_og
WHERE sch_alg_og_key = ALG_R.alg_ruimte_key)
UNION
SELECT SCH_NO.sch_alg_og_key,
ALG_V.alg_gebouw_key,
ALG_V.alg_verdieping_key,
ALG_R.alg_ruimte_key,
SCH_NO.sch_nivo_key,
SCH_NO.sch_nivo_og_correctiefactor
FROM sch_nivo_og SCH_NO, alg_verdieping ALG_V,
alg_v_aanwezigruimte ALG_R
WHERE ALG_V.alg_verdieping_key = ALG_R.alg_verdieping_key
AND SCH_NO.sch_alg_og_key = ALG_V.alg_gebouw_key
AND NOT EXISTS (SELECT sch_alg_og_key
FROM sch_nivo_og
WHERE sch_alg_og_key = ALG_V.alg_verdieping_key
OR sch_alg_og_key = ALG_R.alg_ruimte_key);
CREATE_VIEW(sch_v_programma, NORMAAL_PRIVILEGE)
(alg_locatie_key,
alg_locatie_code,
alg_locatie_omschrijving,
alg_locatie_adres,
alg_locatie_postcode,
alg_locatie_plaats,
alg_gebouw_key,
alg_gebouw_omschrijving,
alg_gebouw_upper,
alg_verdieping_key,
alg_verdieping_omschrijving,
alg_verdieping_volgnr,
alg_ruimte_key,
alg_ruimte_nr,
alg_ruimte_upper_nr,
alg_ruimte_omschrijving,
alg_ruimte_bruto_vloeropp,
alg_srtruimte_key,
sch_srtvloer_key,
sch_srtvloer_omschrijving,
sch_activiteit_key,
sch_activiteit_code,
sch_activiteit_volgnr,
sch_nivo_key,
sch_nivo_correctiefactor,
sch_frequentie_code) AS
SELECT ALG_L.alg_locatie_key,
ALG_L.alg_locatie_code,
ALG_L.alg_locatie_omschrijving,
ALG_L.alg_locatie_adres,
ALG_L.alg_locatie_postcode,
ALG_L.alg_locatie_plaats,
ALG_G.alg_gebouw_key,
ALG_G.alg_gebouw_omschrijving,
ALG_G.alg_gebouw_upper,
ALG_V.alg_verdieping_key,
ALG_V.alg_verdieping_omschrijving,
ALG_V.alg_verdieping_volgnr,
ALG_R.alg_ruimte_key,
ALG_R.alg_ruimte_nr,
ALG_R.alg_ruimte_upper_nr,
ALG_R.alg_ruimte_omschrijving,
ALG_R.alg_ruimte_bruto_vloeropp,
ALG_R.alg_srtruimte_key,
ALG_R.sch_srtvloer_key,
SCH_SV.sch_srtvloer_omschrijving,
SCH_A.sch_activiteit_key,
SCH_A.sch_activiteit_code,
SCH_A.sch_activiteit_volgnr,
SCH_NR.sch_nivo_key,
SCH_NR.sch_nivo_og_correctiefactor,
SCH_P_SCH_BepaalFrequentieCode(
ALG_R.alg_srtruimte_key,
ALG_R.sch_srtvloer_key,
SCH_A.sch_activiteit_key,
SCH_NR.sch_nivo_key)
FROM alg_locatie ALG_L, alg_gebouw ALG_G,
alg_verdieping ALG_V, alg_v_aanwezigruimte ALG_R,
sch_srtvloer SCH_SV, sch_activiteit SCH_A,
sch_v_nivo_ruimte SCH_NR
WHERE ALG_L.alg_locatie_key = ALG_G.alg_locatie_key
AND ALG_G.alg_gebouw_key = ALG_V.alg_gebouw_key
AND ALG_V.alg_verdieping_key = ALG_R.alg_verdieping_key
AND ALG_R.sch_srtvloer_key = SCH_SV.sch_srtvloer_key
AND ALG_R.alg_ruimte_key = SCH_NR.alg_ruimte_key;
#endif // SCH
#ifdef ALG
CREATE OR REPLACE TRIGGER alg_t_alg_gebouw_B_IU
BEFORE INSERT OR UPDATE ON alg_gebouw
FOR EACH ROW
BEGIN
UPDATE_PRIMARY_KEY(alg_gebouw_key, alg_s_alg_onroerendgoed_keys);
UPDATE_UPPER(alg_gebouw_code, alg_gebouw_upper);
:new.alg_gebouw_omschrijving := SUBSTRB(:new.alg_gebouw_code ||' - '|| :new.alg_gebouw_naam,1,30);
CHECK_NOG_REFERENCES(alg_gebouw, alg_gebouw_verwijder, alg_v_aanwezigbouwdeel,
alg_gebouw_key, 'alg_m184');
LAAT_VERDIEPING_VERVALLEN_VOOR_GEBOUW('alg_m54');
#ifdef MRA
IF :new.alg_gebouw_verwijder IS NOT NULL
THEN
DELETE FROM mra_onrgoedvoorschr
WHERE mra_onroerendgoed_keys = :old.alg_gebouw_key;
DELETE FROM mra_onrgoedbestemming
WHERE mra_onroerendgoed_keys = :old.alg_gebouw_key;
END IF;
#if 0 // Verwijderen van MRA_ONRGOEDVOORSCHR-records gebeurt niet meer in trigger.
IF :new.alg_srtgebouw_key <> :old.alg_srtgebouw_key
THEN
DELETE FROM mra_onrgoedvoorschr
WHERE mra_onroerendgoed_keys = :old.alg_gebouw_key AND
mra_voorschrift_key IN (SELECT mra_voorschrift_key
FROM mra_srtgebouwvoorschr
WHERE mra_srtgebouw_key = :old.alg_srtgebouw_key)
AND mra_onrgoedvoorschr_type = 'G';
END IF;
#endif
#endif // MRA
#ifdef INS
SET_VERWIJDER_CHILDREN_DEEL(ins_deel, alg_gebouw_key,
alg_gebouw_verwijder, ins_deel_verwijder, ins_alg_ruimte_key);
#endif // INS
#ifdef SCH
IF :new.alg_gebouw_verwijder IS NOT NULL
THEN
BEGIN
DELETE FROM sch_nivo_og
WHERE sch_alg_og_key = :new.alg_gebouw_key;
END;
END IF;
#endif // SCH
END;
/
CREATE OR REPLACE TRIGGER alg_t_alg_verdieping_B_IU
BEFORE INSERT OR UPDATE ON alg_verdieping
FOR EACH ROW
BEGIN
UPDATE_PRIMARY_KEY(alg_verdieping_key, alg_s_alg_onroerendgoed_keys);
UPDATE_UPPER(alg_verdieping_omschrijving, alg_verdieping_upper);
LAAT_RUIMTE_VERVALLEN_VOOR_VERDIEPING('alg_m55');
#ifdef INS
SET_VERWIJDER_CHILDREN_DEEL(ins_deel, alg_verdieping_key,
alg_verdieping_verwijder, ins_deel_verwijder, ins_alg_ruimte_key);
#endif // INS
/* Voor BEB: ALG_VERDIEPING_Volgnr = ALG_SRTVERDIEPING_VOLGNR */
IF NOT :new.alg_srtverdieping_key IS NULL
THEN
SELECT alg_srtverdieping_volgnr
INTO :new.alg_verdieping_volgnr
FROM alg_srtverdieping
WHERE alg_srtverdieping_key = :new.alg_srtverdieping_key;
END IF;
#ifdef SCH
IF :new.alg_verdieping_verwijder IS NOT NULL
THEN
BEGIN
DELETE FROM sch_nivo_og
WHERE sch_alg_og_key = :new.alg_verdieping_key;
END;
END IF;
#endif // SCH
END;
/
CREATE OR REPLACE TRIGGER alg_t_alg_srtruimte_B_IU
BEFORE INSERT OR UPDATE ON alg_srtruimte
FOR EACH ROW
BEGIN
UPDATE_PRIMARY_KEY(alg_srtruimte_key, alg_s_alg_srtruimte_key);
UPDATE_UPPER(alg_srtruimte_omschrijving, alg_srtruimte_upper);
CHECK_NOG_REFERENCES(alg_srtruimte, alg_srtruimte_verwijder,
alg_v_aanwezigruimte, alg_srtruimte_key, 'alg_m041');
#ifdef PRS
IF :old.alg_srtruimte_key IS NOT NULL
AND :old.prs_bevat_werkplek = 1 AND :new.prs_bevat_werkplek IS NULL
THEN
DECLARE
dummy NUMBER;
BEGIN
SELECT COUNT(PRS_W.prs_werkplek_key)
INTO dummy
FROM alg_v_aanwezigruimte ALG_R, prs_v_aanwezigwerkplek PRS_W
WHERE ALG_R.alg_srtruimte_key = :old.alg_srtruimte_key
AND PRS_W.prs_alg_ruimte_key = ALG_R.alg_ruimte_key;
IF dummy > 0
THEN
APPLICATION_ERROR(-20000, 'prs_m035');
END IF;
EXCEPTION
WHEN NO_DATA_FOUND
THEN NULL;
END;
END IF;
#endif
#ifdef SCH
DECLARE
dummy CHAR;
BEGIN
IF :new.alg_srtruimte_verwijder IS NOT NULLDATUM
THEN
SELECT 'x' INTO dummy
FROM sch_werkzaamheden
WHERE sch_werkzaamheden.sch_alg_srtruimte_key = :old.alg_srtruimte_key;
APPLICATION_ERROR(-20000,'sch_m028');
END IF;
EXCEPTION
WHEN NO_DATA_FOUND THEN
NULL;
WHEN TOO_MANY_ROWS THEN
APPLICATION_ERROR(-20000,'sch_m028');
END;
#endif // SCH
END;
/
CREATE OR REPLACE TRIGGER alg_t_alg_ruimte_B_IU
BEFORE INSERT OR UPDATE ON alg_ruimte
FOR EACH ROW
BEGIN
UPDATE_PRIMARY_KEY(alg_ruimte_key, alg_s_alg_onroerendgoed_keys);
UPDATE_UPPER(alg_ruimte_nr, alg_ruimte_upper_nr);
#ifdef MRA
/* Delete CASCADE op MRA_ONRGOEDVOORSCHR en MRA_ONRGOEDBESTEMMING
*/
IF :new.alg_ruimte_verwijder IS NOT NULL
THEN
DELETE FROM mra_onrgoedvoorschr
WHERE mra_onroerendgoed_keys = :old.alg_ruimte_key;
DELETE FROM mra_onrgoedbestemming
WHERE mra_onroerendgoed_keys = :old.alg_ruimte_key;
END IF;
#if 0 // MRA_ONRGOEDVOORSCHR-records worden niet meer verwijderd in de trigger.
IF :new.alg_srtruimte_key <> :old.alg_srtruimte_key
THEN
DELETE FROM mra_onrgoedvoorschr
WHERE mra_onroerendgoed_keys = :old.alg_ruimte_key AND
mra_voorschrift_key IN (SELECT mra_voorschrift_key
FROM mra_srtruimtevoorschr
WHERE mra_srtruimte_key = :old.alg_srtruimte_key)
AND mra_onrgoedvoorschr_type = 'R';
END IF;
#endif
#endif // MRA
#ifdef PRS
/* Als de soort ruimte veranderd wordt en er zijn werkplekken in de ruimte
* dan moet het veld PRS_BEVAT_WERKPLEKKEN de waarde 1 bevatten in de
* nieuwe soort ruimte.
*/
IF :old.alg_ruimte_key IS NOT NULL
AND :new.alg_ruimte_verwijder IS NULL
AND :old.alg_srtruimte_key <> :new.alg_srtruimte_key
THEN
DECLARE
dummy CHAR;
BEGIN
SELECT 'x'
INTO dummy
FROM alg_srtruimte ALG_SR_1,
alg_srtruimte ALG_SR_2,
all_v_aanwezigwerkplek PRS_W
WHERE ALG_SR_1.alg_srtruimte_key = :old.alg_srtruimte_key
AND ALG_SR_1.prs_bevat_werkplek = 1
AND ALG_SR_2.alg_srtruimte_key = :new.alg_srtruimte_key
AND ALG_SR_2.prs_bevat_werkplek IS NULL
AND PRS_W.prs_alg_ruimte_key = :new.alg_ruimte_key;
APPLICATION_ERROR(-20000, 'prs_m034');
EXCEPTION
WHEN NO_DATA_FOUND
THEN NULL;
WHEN TOO_MANY_ROWS
THEN APPLICATION_ERROR(-20000, 'prs_m034');
END;
END IF;
#endif
#ifdef INV
/* Als er een INV-deel bestaat in de te verwijderen ruimte
* dan mag de ruimte niet verwijderd worden.
*/
IF :new.alg_ruimte_verwijder IS NOT NULL
THEN
DECLARE
dummy CHAR;
BEGIN
SELECT 'x'
INTO dummy
FROM inv_v_aanwezigdeel
WHERE ins_alg_ruimte_key = :new.alg_ruimte_key
AND ins_alg_ruimte_type = 'R';
APPLICATION_ERROR(-20000, 'prs_m055');
EXCEPTION
WHEN NO_DATA_FOUND
THEN NULL;
WHEN TOO_MANY_ROWS
THEN APPLICATION_ERROR(-20000, 'prs_m055');
END;
END IF;
#endif
#ifdef PRS
/* Als de ruimte verwijderd wordt, dan moeten ook de bijbehorende
* werkplekken/slaapplaatsen verwijderd worden.
*/
IF :new.alg_ruimte_verwijder IS NOT NULL
THEN
UPDATE prs_werkplek
SET prs_werkplek_verwijder = SYSDATE
WHERE prs_alg_ruimte_key = :new.alg_ruimte_key
AND prs_werkplek_verwijder IS NULL;
END IF;
#endif
#ifdef INS
SET_VERWIJDER_CHILDREN_DEEL(ins_deel, alg_ruimte_key,
alg_ruimte_verwijder, ins_deel_verwijder, ins_alg_ruimte_key);
#endif // INS
#ifdef SCH
IF :new.alg_ruimte_verwijder IS NOT NULL
THEN
BEGIN
DELETE FROM sch_nivo_og
WHERE sch_alg_og_key = :new.alg_ruimte_key;
END;
END IF;
#endif // SCH
END;
/
/* LOG#1367 */
DEFINIEER_VIEW_AANWEZIG(alg_gebouw, alg_gebouw_verwijder,
alg_v_aanweziggebouw,NORMAAL_PRIVILEGE);
DEFINIEER_VIEW_AANWEZIG(alg_verdieping, alg_verdieping_verwijder,
alg_v_aanwezigverdieping,NORMAAL_PRIVILEGE);
DEFINIEER_VIEW_AANWEZIG(alg_srtruimte, alg_srtruimte_verwijder,
alg_v_aanwezigsrtruimte,BIBLIOTHEEK_PRIVILEGE);
DEFINIEER_VIEW_AANWEZIG(alg_ruimte, alg_ruimte_verwijder,
alg_v_aanwezigruimte,NORMAAL_PRIVILEGE);
DEFINIEER_VIEW_AANWEZIG(alg_terreinsector, alg_terreinsector_verwijder,
alg_v_aanwezigterreinsector,NORMAAL_PRIVILEGE);
/* LOG#1367 */
CREATE OR REPLACE TRIGGER alg_t_alg_regio_B_IU
BEFORE INSERT OR UPDATE ON alg_regio
FOR EACH ROW
BEGIN
UPDATE_PRIMARY_KEY(alg_regio_key, alg_s_alg_regio_key);
UPDATE_UPPER(alg_regio_omschrijving, alg_regio_upper);
// 10-07-97 AH #1367, Restricted verwijderen op district
//SET_VERWIJDER_CHILDREN(alg_district, alg_regio_key, alg_regio_verwijder, alg_district_verwijder);
CHECK_NOG_REFERENCES(alg_regio, alg_regio_verwijder, alg_v_aanwezigdistrict,
alg_regio_key, 'alg_m211');
END;
/
CREATE OR REPLACE TRIGGER alg_t_alg_district_B_IU
BEFORE INSERT OR UPDATE ON alg_district
FOR EACH ROW
BEGIN
UPDATE_PRIMARY_KEY(alg_district_key, alg_s_alg_district_key);
UPDATE_UPPER(alg_district_code, alg_district_code);
UPDATE_UPPER(alg_district_omschrijving, alg_district_upper);
// 10-07-97 AH #1367, Restricted verwijderen op locatie
//SET_VERWIJDER_CHILDREN(alg_locatie, alg_district_key, alg_district_verwijder, alg_locatie_verwijder);
CHECK_NOG_REFERENCES(alg_district, alg_district_verwijder, alg_v_aanweziglocatie,
alg_district_key, 'alg_m212');
END;
/
CREATE OR REPLACE TRIGGER alg_t_alg_locatie_B_IU
BEFORE INSERT OR UPDATE ON alg_locatie
FOR EACH ROW
BEGIN
UPDATE_PRIMARY_KEY(alg_locatie_key, alg_s_alg_locatie_key);
UPDATE_UPPER(alg_locatie_code, alg_locatie_code);
UPDATE_UPPER(alg_locatie_omschrijving, alg_locatie_upper);
// 10-07-97 AH #1367, Restricted verwijderen op Gebouw en Terreinsector
CHECK_NOG_REFERENCES(alg_locatie, alg_locatie_verwijder, alg_v_aanweziggebouw,
alg_locatie_key, 'alg_m213');
CHECK_NOG_REFERENCES(alg_locatie, alg_locatie_verwijder, alg_v_aanwezigterreinsector,
alg_locatie_key, 'alg_m214');
CHECK_NOG_REFERENCES(alg_locatie, alg_locatie_verwijder, alg_v_aanwezigobjectdeel,
alg_locatie_key, 'alg_m185');
END;
/
#endif // ALG
/* LOG#1367 */
#if defined(BCO)||defined(BEB)
DEF_FAC_MESSAGE ('ALG_M211', 'Er zijn nog dienstkringen gekoppeld aan de directie.');
#elif defined(LEV)||defined(MRA)
DEF_FAC_MESSAGE ('ALG_M211', 'Er zijn nog garnizoenen gekoppeld aan het RMC.');
#else
DEF_FAC_MESSAGE ('ALG_M211', 'Er zijn nog districten gekoppeld aan de regio.');
#endif
#if defined(BCO)||defined(BEB)
DEF_FAC_MESSAGE ('ALG_M212', 'Er zijn nog objecten gekoppeld aan de dienstkring.');
#elif defined(LEV)||defined(MRA)
DEF_FAC_MESSAGE ('ALG_M212', 'Er zijn nog objecten gekoppeld aan het garnizoen.');
#else
DEF_FAC_MESSAGE ('ALG_M212', 'Er zijn nog locaties gekoppeld aan het district.');
#endif
#if defined(BCO)||defined(BEB)||defined(LEV)||defined(MRA)
DEF_FAC_MESSAGE ('ALG_M213', 'Er zijn nog gebouwen gekoppeld aan het object.');
#else
DEF_FAC_MESSAGE ('ALG_M213', 'Er zijn nog gebouwen gekoppeld aan de locatie.');
#endif
#if defined(MRA)
DEF_FAC_MESSAGE ('ALG_M214', 'Er zijn nog systeemclusters gekoppeld aan het object.');
#elif defined(BEB)
DEF_FAC_MESSAGE ('ALG_M214', 'Er zijn nog terreinen/werken gekoppeld aan het object.');
#else
DEF_FAC_MESSAGE ('ALG_M214', 'Er zijn nog terreinsectoren gekoppeld aan de locatie.');
#endif
/* LOG#1377 */
DELETE FROM fac_message
WHERE fac_message_code = 'PRS_M016';
DEF_FAC_MESSAGE ('PRS_M016', 'De werkplek is nog in gebruik door afdelingen en/of personen.');
#ifdef PRS
/* PRS_TAB.SRC */
ALTER TABLE prs_werkplek
DROP UNIQUE(prs_werkplek_module, prs_werkplek_volgnr, prs_alg_ruimte_key, prs_werkplek_verwijder);
ALTER TABLE prs_werkplek
ADD UNIQUE(prs_alg_ruimte_key, prs_werkplek_volgnr, prs_werkplek_module, prs_werkplek_verwijder);
/* PRS_VIE.SRC */
CREATE_VIEW(prs_v_aanwezigperslidwerkplek, NORMAAL_PRIVILEGE) AS
SELECT * FROM prs_perslidwerkplek WHERE prs_werkplek_key IN
(SELECT prs_werkplek_key
FROM prs_v_aanwezigwerkplek);
/* PRS_TRI.SRC */
CREATE OR REPLACE 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');
/* 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, 'SYSTEM ERROR: In Afdeling, er zijn nog PRS_PERSLIDWERKPLEK-records');
#ifdef INV
/* Ontkoppel de artikelen van de te verwijderen afdeling.
* De artikelen kunnen gekoppeld zijn aan een ruimte, werkplek of
* slaapplaats:
* - Als dit zo is, dan kan er een ander artikel al op die
* plek staan. Het artikel moet dan gemerged worden.
* - Als er geen ander artikel is dan kan gewoon PRS_BEZIT_KEY leeg gemaakt
* worden.
*/
IF :new.prs_afdeling_verwijder IS NOT NULL
THEN
DECLARE
CURSOR Cur1(afdeling_key IN NUMBER) IS (SELECT ins_deel_key,
ins_srtdeel_key,
ins_deel_omschrijving,
ins_alg_ruimte_key,
ins_alg_ruimte_type,
ins_prs_bezit_key,
ins_deel_aantal
FROM inv_v_aanwezigdeel
WHERE ins_prs_bezit_key = afdeling_key
AND ins_prs_bezit_type = 'A');
Cur_rec Cur1%ROWTYPE;
deel_key NUMBER(10);
deel_omschrijving VARCHAR2(50);
ruimte_key NUMBER(10);
ruimte_type VARCHAR2(1);
BEGIN
/* Doorloop alle inventaris van de verwijderde afdeling */
FOR Cur_rec IN Cur1(:old.prs_afdeling_key)
LOOP
BEGIN
/* Als er een koppeling met ruimte, werkplek of slaapplaats is
* dan mergen (aantal van INS_DEEL ophogen).
*/
SELECT ins_deel_key,
ins_alg_ruimte_key,
ins_alg_ruimte_type
INTO deel_key,
ruimte_key,
ruimte_type
FROM inv_v_aanwezigdeel
WHERE ins_srtdeel_key = Cur_rec.ins_srtdeel_key
AND NVL(ins_deel_omschrijving, ' ') = NVL(Cur_rec.ins_deel_omschrijving, ' ')
AND NVL(ins_alg_ruimte_key, -1) = NVL(Cur_rec.ins_alg_ruimte_key, -1)
AND NVL(ins_alg_ruimte_type, ' ') = NVL(Cur_rec.ins_alg_ruimte_type, ' ')
AND ins_prs_bezit_key IS NULL
AND ins_prs_bezit_type IS NULL;
UPDATE ins_deel
SET ins_deel_aantal = ins_deel_aantal + Cur_rec.ins_deel_aantal
WHERE ins_deel_key = deel_key;
UPDATE ins_deel
SET ins_deel_verwijder = SYSDATE
WHERE ins_deel_key = Cur_rec.ins_deel_key;
EXCEPTION
/* Ander kan gewoon PRS_BEZIT_KEY leeg gemaakt worden. */
WHEN NO_DATA_FOUND
THEN UPDATE ins_deel
SET ins_prs_bezit_key = NULL,
ins_prs_bezit_type = NULL
WHERE ins_deel_key = Cur_rec.ins_deel_key;
END;
END LOOP;
END;
END IF;
#endif
END;
/
CREATE OR REPLACE 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);
#if 1
/* 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, 'SYSTEM ERROR: In Perslid, er zijn nog PRS_PERSLIDWERKPLEK-records');
#else
SET_VERWIJDER_CHILDREN(prs_perslidwerkplek, prs_perslid_key,
prs_perslid_verwijder, prs_perslidwerkplek_verwijder);
#endif // 1
#ifdef INV
/* Ontkoppel de artikelen van de te verwijderen persoon.
* De artikelen kunnen gekoppeld zijn aan een ruimte, werkplek of
* slaapplaats:
* - Als dit zo is, dan kan er een ander artikel al op die
* plek staan. Het artikel moet dan gemerged worden.
* - Als er geen ander artikel is dan kan gewoon PRS_BEZIT_KEY leeg gemaakt
* worden.
*/
IF :new.prs_perslid_verwijder IS NOT NULL
THEN
DECLARE
CURSOR Cur1(perslid_key IN NUMBER) IS (SELECT ins_deel_key,
ins_srtdeel_key,
ins_deel_omschrijving,
ins_alg_ruimte_key,
ins_alg_ruimte_type,
ins_prs_bezit_key,
ins_deel_aantal
FROM inv_v_aanwezigdeel
WHERE ins_prs_bezit_key = perslid_key
AND ins_prs_bezit_type = 'P');
Cur_rec Cur1%ROWTYPE;
deel_key NUMBER(10);
deel_omschrijving VARCHAR2(50);
ruimte_key NUMBER(10);
ruimte_type VARCHAR2(1);
BEGIN
/* Doorloop alle inventaris van de verwijderde persoon */
FOR Cur_rec IN Cur1(:old.prs_perslid_key)
LOOP
BEGIN
/* Als er een koppeling met ruimte, werkplek of slaapplaats is
* dan mergen (aantal van INS_DEEL ophogen).
*/
SELECT ins_deel_key,
ins_alg_ruimte_key,
ins_alg_ruimte_type
INTO deel_key,
ruimte_key,
ruimte_type
FROM inv_v_aanwezigdeel
WHERE ins_srtdeel_key = Cur_rec.ins_srtdeel_key
AND NVL(ins_deel_omschrijving, ' ') = NVL(Cur_rec.ins_deel_omschrijving, ' ')
AND NVL(ins_alg_ruimte_key, -1) = NVL(Cur_rec.ins_alg_ruimte_key, -1)
AND NVL(ins_alg_ruimte_type, ' ') = NVL(Cur_rec.ins_alg_ruimte_type, ' ')
AND ins_prs_bezit_key IS NULL
AND ins_prs_bezit_type IS NULL;
UPDATE ins_deel
SET ins_deel_aantal = ins_deel_aantal + Cur_rec.ins_deel_aantal
WHERE ins_deel_key = deel_key;
UPDATE ins_deel
SET ins_deel_verwijder = SYSDATE
WHERE ins_deel_key = Cur_rec.ins_deel_key;
EXCEPTION
/* Ander kan gewoon PRS_BEZIT_KEY leeg gemaakt worden. */
WHEN NO_DATA_FOUND
THEN UPDATE ins_deel
SET ins_prs_bezit_key = NULL,
ins_prs_bezit_type = NULL
WHERE ins_deel_key = Cur_rec.ins_deel_key;
END;
END LOOP;
END;
END IF;
#endif // INV
#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 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_omschrijving = '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
#ifdef BCP
// Niet verwijderen als nog BCP_PREVOPDR's zijn met status 'Uitgegeven' en
// uitvoerende deze PERSLID.
IF :new.prs_perslid_verwijder IS NOT NULLDATUM
THEN
DECLARE
dummy CHAR;
BEGIN
SELECT 'X'
INTO dummy
FROM bcp_prevopdr BCP_P, mld_statusopdr MLD_S
WHERE BCP_P.bcp_mld_statusopdr_key = MLD_S.mld_statusopdr_key
AND MLD_S.mld_statusopdr_omschrijving = 'Uitgegeven'
AND BCP_P.bcp_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 // BCP
// 28-10-96/AH #910
#if 0 //def BCO
// Verwijder ook de BCO_NIETBESCHIK van deze PERSLID
IF :new.prs_perslid_verwijder IS NOT NULLDATUM
THEN
DELETE FROM bco_nietbeschik
WHERE bco_prs_perslid_key = :new.prs_perslid_key;
END IF;
#endif // BCO
END;
/
CREATE OR REPLACE 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);
/* 5/26/97 AH #1255, VERWIJDER-veld mag niet meer gebruikt worden ivm. MUTATING TABLE
* bij CASCADE van PRS_PERSLID, enz. Dus hier een comntrole toegevoegd
*/
IF :new.prs_perslidwerkplek_verwijder IS NOT NULL
THEN
APPLICATION_ERROR(-20000, 'SYSTEM ERROR: In PRS_PERSLIDWERKPLEK: VERWIJDER niet gebruiken.');
END IF;
END;
/
#ifdef HUI
/* 13-07-97/KTH #1365: PRS_PERSLIDWERKPLEK_VERWIJDER-velden weggehaald */
CREATE_VIEW(hui_v_aanwezigperslidwerkplek, NORMAAL_PRIVILEGE) AS
SELECT * FROM prs_perslidwerkplek WHERE prs_werkplek_key IN
(SELECT prs_werkplek_key
FROM hui_v_aanwezigwerkplek);
#endif // HUI
/* LOG#1376 */
ALTER TABLE prs_perslid
ADD CONSTRAINT prs_c_prs_perslid_uurloon CHECK(NVL(prs_perslid_uurloon, 0) >= 0);
/* LOG#1377 */
/* 14-07-97 AH Extra argument ArgEditMode toegevoegd */
CREATE OR REPLACE FUNCTION PRS_P_PRS_BepaalWerkplekOpp( ArgWerkplekKey IN NUMBER,
ArgRuimteKey IN NUMBER,
ArgRuimteBrutoVloerOpp IN NUMBER,
ArgWerkplekVastOpp IN NUMBER,
ArgWerkplekOpp IN NUMBER,
ArgEditMode IN CHAR ) RETURN NUMBER IS
NewWerkplekOpp NUMBER(12,4);
WerkplekTotVastOpp NUMBER(12,4);
AantalVariabel NUMBER(3);
RuimteKey NUMBER(10);
RuimteBrutoVloerOpp alg_ruimte.alg_ruimte_bruto_vloeropp%TYPE;
WerkplekVastOpp prs_werkplek.prs_werkplek_vastopp%TYPE;
WerkplekOpp prs_werkplek.prs_werkplek_opp%TYPE;
ChangeWerkplekVastOpp prs_werkplek.prs_werkplek_vastopp%TYPE;
ChangeWerkplekOpp prs_werkplek.prs_werkplek_opp%TYPE;
BEGIN
/* Bij toevoegen moet alleen de bruto vloeropp van de ruimte bepaald worden */
IF (NVL(ArgEditMode, 'LEEG/NULL') = 'ADD')
THEN
BEGIN
WerkplekVastOpp := ArgWerkplekVastOpp;
WerkplekOpp := NULL;
SELECT ALG_R.alg_ruimte_key,
ALG_R.alg_ruimte_bruto_vloeropp
INTO RuimteKey,
RuimteBrutoVloerOpp
FROM alg_ruimte ALG_R
WHERE ALG_R.alg_ruimte_key = ArgRuimteKey;
EXCEPTION
WHEN NO_DATA_FOUND
THEN RETURN NULL;
END;
/* Bij wijzigen moeten de gegevens van de werkplek even bewaard worden en de bruto vloeropp van de
* ruimte moet bepaald worden.
*/
ELSIF (NVL(ArgEditMode, 'LEEG/NULL') = 'CHANGE')
THEN
WerkplekVastOpp := ArgWerkplekVastOpp;
WerkplekOpp := ArgWerkplekOpp;
BEGIN
SELECT PRS_W.prs_alg_ruimte_key,
ALG_R.alg_ruimte_bruto_vloeropp,
PRS_W.prs_werkplek_vastopp,
PRS_W.prs_werkplek_opp
INTO RuimteKey,
RuimteBrutoVloerOpp,
ChangeWerkplekVastOpp,
ChangeWerkplekOpp
FROM prs_werkplek PRS_W, alg_ruimte ALG_R
WHERE PRS_W.prs_alg_ruimte_key = ALG_R.alg_ruimte_key
AND PRS_W.prs_werkplek_key = ArgWerkplekKey;
EXCEPTION
WHEN NO_DATA_FOUND
THEN RETURN NULL;
END;
ELSIF NVL(ArgRuimteKey, -1) = -1
OR NVL(ArgRuimteBrutoVloerOpp, -1) = -1
OR ArgWerkplekVastOpp = -1
OR NVL(ArgWerkplekOpp, -1) = -1
THEN
IF NVL(ArgWerkplekKey, 0) > 0
THEN
BEGIN
SELECT PRS_W.prs_alg_ruimte_key,
ALG_R.alg_ruimte_bruto_vloeropp,
PRS_W.prs_werkplek_vastopp,
PRS_W.prs_werkplek_opp
INTO RuimteKey,
RuimteBrutoVloerOpp,
WerkplekVastOpp,
WerkplekOpp
FROM prs_werkplek PRS_W, alg_ruimte ALG_R
WHERE PRS_W.prs_alg_ruimte_key = ALG_R.alg_ruimte_key
AND PRS_W.prs_werkplek_key = ArgWerkplekKey;
EXCEPTION
WHEN NO_DATA_FOUND
THEN RETURN NULL;
END;
ELSIF NVL(ArgRuimteKey, -1) > 0
THEN
BEGIN
WerkplekVastOpp := NULL;
WerkplekOpp := NULL;
SELECT ALG_R.alg_ruimte_key,
ALG_R.alg_ruimte_bruto_vloeropp
INTO RuimteKey,
RuimteBrutoVloerOpp
FROM alg_ruimte ALG_R
WHERE ALG_R.alg_ruimte_key = ArgRuimteKey;
EXCEPTION
WHEN NO_DATA_FOUND
THEN RETURN NULL;
END;
ELSE
RETURN NULL;
END IF;
ELSE
RuimteKey := ArgRuimteKey;
RuimteBrutoVloerOpp := ArgRuimteBrutoVloerOpp;
WerkplekVastOpp := ArgWerkplekVastOpp;
WerkplekOpp := ArgWerkplekOpp;
END IF;
// Retourneer de vaste oppervlakte van de te wijzigen werkplek.
IF NVL(ArgEditMode, 'LEEG/NULL') = 'CHANGE'
AND WerkplekVastOpp IS NOT NULL
THEN
NewWerkplekOpp := ChangeWerkplekOpp;
// Retourneer de pas bepaalde vaste oppervlakte van de werkplek.
ELSIF WerkplekVastOpp IS NOT NULL
THEN
NewWerkplekOpp := WerkplekOpp;
ELSE
// Neem de vaste werkplekoppervlakte van de te wijzigen werkplek niet mee.
IF NVL(ArgEditMode, 'LEEG/NULL') = 'CHANGE'
THEN
BEGIN
SELECT NVL(SUM(NVL(PRS_W.prs_werkplek_opp, 0)), 0)
INTO WerkplekTotVastOpp
FROM prs_v_aanwezigwerkplek PRS_W
WHERE PRS_W.prs_werkplek_vastopp IS NOT NULL
AND PRS_W.prs_werkplek_key <> ArgWerkplekKey
AND PRS_W.prs_alg_ruimte_key = RuimteKey;
EXCEPTION
WHEN NO_DATA_FOUND
THEN WerkplekTotVastOpp := 0;
END;
ELSE
BEGIN
SELECT NVL(SUM(NVL(PRS_W.prs_werkplek_opp, 0)), 0)
INTO WerkplekTotVastOpp
FROM prs_v_aanwezigwerkplek PRS_W
WHERE PRS_W.prs_werkplek_vastopp IS NOT NULL
AND PRS_W.prs_alg_ruimte_key = RuimteKey;
EXCEPTION
WHEN NO_DATA_FOUND
THEN WerkplekTotVastOpp := 0;
END;
END IF;
// Neem de te wijzigen werkplek niet mee in het aantal variabele werkplekken.
IF NVL(ArgEditMode, 'LEEG/NULL') = 'CHANGE'
THEN
BEGIN
SELECT COUNT(*)
INTO AantalVariabel
FROM prs_v_aanwezigwerkplek PRS_W
WHERE PRS_W.prs_werkplek_vastopp IS NULL
AND PRS_W.prs_werkplek_key <> ArgWerkplekKey
AND PRS_W.prs_alg_ruimte_key = RuimteKey;
EXCEPTION
WHEN NO_DATA_FOUND
THEN AantalVariabel := 0;
END;
ELSE
BEGIN
SELECT COUNT(*)
INTO AantalVariabel
FROM prs_v_aanwezigwerkplek PRS_W
WHERE PRS_W.prs_werkplek_vastopp IS NULL
AND PRS_W.prs_alg_ruimte_key = RuimteKey;
EXCEPTION
WHEN NO_DATA_FOUND
THEN AantalVariabel := 0;
END;
END IF;
// Bepaal de variabele oppervlakte van de werkplekken inclusief deze nieuwe variabele werkplek.
IF NVL(ArgEditMode, 'LEEG/NULL') = 'ADD'
OR NVL(ArgEditMode, 'LEEG/NULL') = 'CHANGE'
THEN
AantalVariabel := NVL(AantalVariabel, 0) + 1;
END IF;
IF AantalVariabel > 0
THEN
NewWerkplekOpp := (RuimteBrutoVloerOpp - WerkplekTotVastOpp) / AantalVariabel;
ELSE
NewWerkplekOpp := (RuimteBrutoVloerOpp - WerkplekTotVastOpp);
END IF;
IF NVL(NewWerkplekOpp, 0) < 0
THEN
NewWerkplekOpp := 0;
END IF;
END IF;
RETURN NewWerkplekOpp;
END;
/
CREATE_VIEW(prs_v_werkplek_gegevens,NORMAAL_PRIVILEGE)
(prs_werkplek_key,
prs_werkplek_volgnr,
prs_werkplek_omschrijving,
prs_werkplek_opp,
prs_werkplek_module,
alg_ruimte_key,
alg_ruimte_nr,
alg_ruimte_upper_nr,
alg_ruimte_bruto_vloeropp,
alg_verdieping_key,
alg_verdieping_volgnr,
alg_verdieping_omschrijving,
alg_gebouw_key,
alg_gebouw_code,
alg_gebouw_omschrijving,
alg_gebouw_upper,
alg_locatie_key) AS
SELECT PRS_W.prs_werkplek_key,
PRS_W.prs_werkplek_volgnr,
PRS_W.prs_werkplek_omschrijving,
// Voor HUI-module heeft de oppervlakte geen zin.
#ifdef HUI
NULL,
#else
PRS_P_PRS_BepaalWerkplekOpp(PRS_W.prs_werkplek_key, ALG_R.alg_ruimte_key,
ALG_R.alg_ruimte_bruto_vloeropp,
PRS_W.prs_werkplek_vastopp, PRS_W.prs_werkplek_opp, NULL),
#endif
PRS_W.prs_werkplek_module,
ALG_R.alg_ruimte_key,
ALG_R.alg_ruimte_nr,
ALG_R.alg_ruimte_upper_nr,
ALG_R.alg_ruimte_bruto_vloeropp,
ALG_V.alg_verdieping_key,
ALG_V.alg_verdieping_volgnr,
ALG_V.alg_verdieping_omschrijving,
ALG_G.alg_gebouw_key,
ALG_G.alg_gebouw_code,
ALG_G.alg_gebouw_omschrijving,
ALG_G.alg_gebouw_upper,
ALG_G.alg_locatie_key
FROM all_v_aanwezigwerkplek PRS_W, alg_ruimte ALG_R,
alg_verdieping ALG_V, alg_gebouw ALG_G
WHERE ALG_R.alg_verdieping_key = ALG_V.alg_verdieping_key
AND ALG_V.alg_gebouw_key = ALG_G.alg_gebouw_key
AND PRS_W.prs_alg_ruimte_key = ALG_R.alg_ruimte_key;
/* View om te bepalen wat het totale bezettingspercentage van een werkplek is */
CREATE_VIEW(prs_v_werkplek_bezetting, NORMAAL_PRIVILEGE)
(prs_werkplek_key,
prs_werkplek_bezetting) AS
SELECT PRS_W.prs_werkplek_key,
NVL(SUM(PRS_PW.prs_perslidwerkplek_bezetting), 0)
FROM prs_werkplek PRS_W, prs_perslidwerkplek PRS_PW
WHERE PRS_W.prs_werkplek_key = PRS_PW.prs_werkplek_key (+)
GROUP BY PRS_W.prs_werkplek_key;
/* LOG#1379 */
/* View om alle werkplekken te koppelen aan persleden, met autojoin. */
CREATE_VIEW(prs_v_perslidwerkplek_gegevens,NORMAAL_PRIVILEGE)
(prs_werkplek_key,
prs_werkplek_volgnr,
prs_werkplek_omschrijving,
prs_werkplek_opp,
alg_ruimte_key,
alg_ruimte_nr,
alg_ruimte_upper_nr,
alg_verdieping_key,
alg_verdieping_volgnr,
alg_verdieping_omschrijving,
alg_gebouw_key,
alg_gebouw_code,
alg_gebouw_omschrijving,
alg_gebouw_upper,
alg_locatie_key,
prs_perslidwerkplek_key,
prs_afdeling_key,
prs_perslid_key,
prs_afd_perslid_naam,
prs_afd_perslid_upper,
prs_perslidwerkplek_bezetting) AS
SELECT PRS_W.prs_werkplek_key,
PRS_W.prs_werkplek_volgnr,
PRS_W.prs_werkplek_omschrijving,
PRS_W.prs_werkplek_opp,
PRS_W.alg_ruimte_key,
PRS_W.alg_ruimte_nr,
PRS_W.alg_ruimte_upper_nr,
PRS_W.alg_verdieping_key,
PRS_W.alg_verdieping_volgnr,
PRS_W.alg_verdieping_omschrijving,
PRS_W.alg_gebouw_key,
PRS_W.alg_gebouw_code,
PRS_W.alg_gebouw_omschrijving,
PRS_W.alg_gebouw_upper,
PRS_W.alg_locatie_key,
PRS_PW.prs_perslidwerkplek_key,
PRS_PW.prs_afdeling_key,
TO_NUMBER(NULL),
'['||PRS_A.prs_afdeling_naam||']',
PRS_A.prs_afdeling_upper,
PRS_PW.prs_perslidwerkplek_bezetting
FROM prs_v_werkplek_gegevens PRS_W, prs_v_aanwezigperslidwerkplek PRS_PW,
prs_afdeling PRS_A
WHERE PRS_W.prs_werkplek_key = PRS_PW.prs_werkplek_key
AND PRS_PW.prs_afdeling_key IS NOT NULL
AND PRS_PW.prs_afdeling_key = PRS_A.prs_afdeling_key
UNION
SELECT PRS_W.prs_werkplek_key,
PRS_W.prs_werkplek_volgnr,
PRS_W.prs_werkplek_omschrijving,
PRS_W.prs_werkplek_opp,
PRS_W.alg_ruimte_key,
PRS_W.alg_ruimte_nr,
PRS_W.alg_ruimte_upper_nr,
PRS_W.alg_verdieping_key,
PRS_W.alg_verdieping_volgnr,
PRS_W.alg_verdieping_omschrijving,
PRS_W.alg_gebouw_key,
PRS_W.alg_gebouw_code,
PRS_W.alg_gebouw_omschrijving,
PRS_W.alg_gebouw_upper,
PRS_W.alg_locatie_key,
PRS_PW.prs_perslidwerkplek_key,
TO_NUMBER(NULL),
PRS_PW.prs_perslid_key,
PRS_P.prs_perslid_naam||', '||PRS_P.prs_perslid_voorletters,
PRS_P.prs_perslid_upper,
PRS_PW.prs_perslidwerkplek_bezetting
FROM prs_v_werkplek_gegevens PRS_W, prs_v_aanwezigperslidwerkplek PRS_PW,
prs_perslid PRS_P
WHERE PRS_W.prs_werkplek_key = PRS_PW.prs_werkplek_key
AND PRS_PW.prs_perslid_key IS NOT NULL
AND PRS_PW.prs_perslid_key = PRS_P.prs_perslid_key
UNION
SELECT PRS_W.prs_werkplek_key,
PRS_W.prs_werkplek_volgnr,
PRS_W.prs_werkplek_omschrijving,
PRS_W.prs_werkplek_opp,
PRS_W.alg_ruimte_key,
PRS_W.alg_ruimte_nr,
PRS_W.alg_ruimte_upper_nr,
PRS_W.alg_verdieping_key,
PRS_W.alg_verdieping_volgnr,
PRS_W.alg_verdieping_omschrijving,
PRS_W.alg_gebouw_key,
PRS_W.alg_gebouw_code,
PRS_W.alg_gebouw_omschrijving,
PRS_W.alg_gebouw_upper,
PRS_W.alg_locatie_key,
TO_NUMBER(NULL),
TO_NUMBER(NULL),
TO_NUMBER(NULL),
'[Beschikbaar]',
'[BESCHIKBAAR]',
100 - PRS_WB.prs_werkplek_bezetting
FROM prs_v_werkplek_gegevens PRS_W, prs_v_werkplek_bezetting PRS_WB
WHERE PRS_W.prs_werkplek_key = PRS_WB.prs_werkplek_key
AND PRS_WB.prs_werkplek_bezetting < 100;
#endif // PRS
/* LOG#1381 */
DEF_FAC_MESSAGE ('PRS_M108', 'Bezetting moet positief zijn.');
DEF_FAC_ENTITY ('PRS_PERSLIDWERKPLEK_OPP', 'Opp.(m2)', NULL, 'de');
DEF_FAC_ENTITY ('PRS_PERSLIDWERKPLEK_BEZETTING', 'Bez.(%)', NULL, 'de');
DEF_FAC_ENTITY ('PRS_PERSLIDWERKPLEK_NORM', 'Norm(%)', 'Normen', 'de');
#ifdef SCH
CREATE OR REPLACE TRIGGER sch_t_sch_nivo_b_iu
BEFORE INSERT OR UPDATE ON sch_nivo
FOR EACH ROW
BEGIN
UPDATE_PRIMARY_KEY(sch_nivo_key, sch_s_sch_nivo_key);
UPDATE_UPPER(sch_nivo_omschrijving, sch_nivo_upper);
END;
/
CREATE OR REPLACE TRIGGER sch_t_sch_activiteit_b_iu
BEFORE INSERT OR UPDATE ON sch_activiteit
FOR EACH ROW
BEGIN
UPDATE_PRIMARY_KEY(sch_activiteit_key, sch_s_sch_activiteit_key);
UPDATE_UPPER(sch_activiteit_code, sch_activiteit_code);
END;
/
CREATE OR REPLACE TRIGGER sch_t_sch_werkzaamheden_b_iu
BEFORE INSERT OR UPDATE ON sch_werkzaamheden
FOR EACH ROW
BEGIN
UPDATE_PRIMARY_KEY(sch_werkzaamheden_key, sch_s_sch_werkzaamheden_key);
END;
/
CREATE OR REPLACE TRIGGER sch_t_sch_frequentie_b_iu
BEFORE INSERT OR UPDATE ON sch_frequentie
FOR EACH ROW
BEGIN
UPDATE_PRIMARY_KEY(sch_frequentie_key, sch_s_sch_frequentie_key);
UPDATE_UPPER(sch_frequentie_code, sch_frequentie_code);
END;
/
CREATE OR REPLACE TRIGGER sch_t_sch_srtvloer_b_iu
BEFORE INSERT OR UPDATE ON sch_srtvloer
FOR EACH ROW
BEGIN
UPDATE_PRIMARY_KEY(sch_srtvloer_key, sch_s_sch_srtvloer_key);
UPDATE_UPPER(sch_srtvloer_omschrijving, sch_srtvloer_upper);
CHECK_NOG_REFERENCES(sch_srtvloer, sch_srtvloer_verwijder, alg_v_aanwezigruimte,
sch_srtvloer_key, 'sch_m027');
CHECK_NOG_REFERENCES(sch_srtvloer, sch_srtvloer_verwijder, sch_werkzaamheden,
sch_srtvloer_key, 'sch_m029');
END;
/
/* LOG#1390 */
CREATE_VIEW(sch_v_nivo_gegevens, NORMAAL_PRIVILEGE)
(alg_locatie_key,
alg_gebouw_key,
alg_gebouw_omschrijving,
alg_gebouw_upper,
alg_verdieping_key,
alg_verdieping_omschrijving,
alg_verdieping_volgnr,
alg_ruimte_key,
alg_ruimte_nr,
alg_ruimte_upper_nr,
sch_nivo_key,
sch_nivo_omschrijving,
sch_alg_og_key) AS
SELECT C.alg_locatie_key,
C.alg_gebouw_key,
C.alg_gebouw_omschrijving,
C.alg_gebouw_upper,
C.alg_verdieping_key,
C.alg_verdieping_omschrijving,
C.alg_verdieping_volgnr,
C.alg_ruimte_key,
C.alg_ruimte_nr,
C.alg_ruimte_upper_nr,
A.sch_nivo_key,
A.sch_nivo_omschrijving,
B.sch_alg_og_key
FROM sch_nivo A, sch_nivo_og B, sch_v_og C
WHERE A.sch_nivo_key = B.sch_nivo_key
AND B.sch_alg_og_key = C.alg_og_key;
/* LOG#1392 */
CREATE_VIEW(sch_v_programma, NORMAAL_PRIVILEGE)
(alg_locatie_key,
alg_locatie_code,
alg_locatie_omschrijving,
alg_locatie_adres,
alg_locatie_postcode,
alg_locatie_plaats,
alg_gebouw_key,
alg_gebouw_omschrijving,
alg_gebouw_upper,
alg_verdieping_key,
alg_verdieping_omschrijving,
alg_verdieping_volgnr,
alg_ruimte_key,
alg_ruimte_nr,
alg_ruimte_upper_nr,
alg_ruimte_omschrijving,
alg_ruimte_bruto_vloeropp,
alg_srtruimte_key,
sch_srtvloer_key,
sch_srtvloer_omschrijving,
sch_activiteit_key,
sch_activiteit_code,
sch_activiteit_volgnr,
sch_nivo_key,
sch_nivo_correctiefactor,
sch_frequentie_code) AS
SELECT ALG_L.alg_locatie_key,
ALG_L.alg_locatie_code,
ALG_L.alg_locatie_omschrijving,
ALG_L.alg_locatie_adres,
ALG_L.alg_locatie_postcode,
ALG_L.alg_locatie_plaats,
ALG_G.alg_gebouw_key,
ALG_G.alg_gebouw_omschrijving,
ALG_G.alg_gebouw_upper,
ALG_V.alg_verdieping_key,
ALG_V.alg_verdieping_omschrijving,
ALG_V.alg_verdieping_volgnr,
ALG_R.alg_ruimte_key,
ALG_R.alg_ruimte_nr,
ALG_R.alg_ruimte_upper_nr,
ALG_R.alg_ruimte_omschrijving,
ALG_R.alg_ruimte_bruto_vloeropp,
ALG_R.alg_srtruimte_key,
ALG_R.sch_srtvloer_key,
SCH_SV.sch_srtvloer_omschrijving,
SCH_A.sch_activiteit_key,
SCH_A.sch_activiteit_code,
SCH_A.sch_activiteit_volgnr,
SCH_NR.sch_nivo_key,
SCH_NR.sch_nivo_og_correctiefactor,
SCH_P_SCH_BepaalFrequentieCode(
ALG_R.alg_srtruimte_key,
ALG_R.sch_srtvloer_key,
SCH_A.sch_activiteit_key,
SCH_NR.sch_nivo_key)
FROM alg_locatie ALG_L, alg_gebouw ALG_G,
alg_verdieping ALG_V, alg_v_aanwezigruimte ALG_R,
sch_srtvloer SCH_SV, sch_activiteit SCH_A,
sch_v_nivo_ruimte SCH_NR
WHERE ALG_L.alg_locatie_key = ALG_G.alg_locatie_key
AND ALG_G.alg_gebouw_key = ALG_V.alg_gebouw_key
AND ALG_V.alg_verdieping_key = ALG_R.alg_verdieping_key
AND ALG_R.sch_srtvloer_key = SCH_SV.sch_srtvloer_key (+)
AND ALG_R.alg_ruimte_key = SCH_NR.alg_ruimte_key;
#endif // SCH
/* LOG#... */
/* werk vervolgens het versienummer en de datum bij (van alle interne modules) */
UPDATE fac_module
SET fac_module_version='01.30',
fac_module_date=TO_CHAR(SYSDATE,'YYYYMMDD');
COMMIT;
prompt
prompt Eventuele 'ORA-00001'-fouten mbt 'INSERT INTO fac_privilege' kunnen
prompt worden genegeerd.
prompt
SPOOL OFF