1740 lines
66 KiB
Plaintext
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
|