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

272 lines
10 KiB
Plaintext

set echo on
SPOOL 130to131
--
-- [Z:\PROJECT\SM44\SRC\SQL\_UPDATE\130TO131.SQL]
--
-- Update script van Facilitor 2.0 versie 1.30 naar 1.31
--
/*
* 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:
*
* dd-mm-yy xxx LOG#yyyy:
*
* 31-07-97 AH Initiele waardes voor SCH_SRTVLOER toegevoegd
* 29-07-97 AH LOG#1400, ALG_IMPORT_RUIMTENR nu 10 ipv 6
* 28-07-97 AH IMPORT_SRTVLOER: In ALG_IMPORT-table moet ALG_IMPORT_VLOER-kolom toegevoegd
* worden
* 24-07-97 AH #1422, MLD_MELDING krijgt redundant veld MLD_ALG_LOCATIE_KEY
* 23-07-97 AH #1415: In MLD_T_MLD_OPDR_B_IU mag ALG_KOSTENPOST niet gewijzigd worden, MUTATING-table
* enz... Dus is het gedeelte maar verplaatst naar MLD117/Verwerken.
* 23-07-97 AH #1411, sch_m027 aangepast
* 23-07-97 AH #1407, SCH_M035, M036, M037 aangepast
* 23-07-97 AH #1405: SCH_ACTIVITEIT_PPM, .._SHORT en SCH_ACTIVITEIT_PPR, .._SHORT toegevoegd
* SCH_V_WERKZAAMHEDEN_GEGEVENS aangepast, sch_activiteit_volgnr toegevoegd
* 22-07-97 AH #1401: Grootte SCH_FREQUENTIE_CODE aangepast
* --- 01.30 ---
*/
#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.30 naar 01.31
PROMPT
SELECT 'De huidige versie van Facilitor zou moeten zijn 01.30 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
/* LOG#1401 , Doe de update via een tussentabel */
CREATE TABLE tmp_frequentie AS
SELECT * from sch_frequentie;
ALTER TABLE sch_frequentie
MODIFY
(
sch_frequentie_code
NULL
);
ALTER TABLE sch_frequentie
DROP CONSTRAINT sch_c_sch_frequentie_unique;
UPDATE sch_frequentie
SET sch_frequentie_code = NULL;
ALTER TABLE sch_frequentie
MODIFY
(
sch_frequentie_code
VARCHAR2(3)
);
UPDATE sch_frequentie SCH_F
SET SCH_F.sch_frequentie_code = (SELECT substr(TMP_F.sch_frequentie_code, 1, 3)
FROM tmp_frequentie TMP_F
WHERE TMP_F.sch_frequentie_key = SCH_F.sch_frequentie_key);
ALTER TABLE sch_frequentie
MODIFY
(
sch_frequentie_code
NOT NULL
);
ALTER TABLE sch_frequentie
ADD CONSTRAINT sch_c_sch_frequentie_unique UNIQUE(sch_frequentie_code);
DROP TABLE tmp_frequentie;
COMMIT;
/* LOG#1405 */
INSERT INTO FAC_ENTITY_NAME VALUES('SCH_ACTIVITEIT_PPM_SHORT','m2',NULL,NULL);
INSERT INTO FAC_ENTITY_NAME VALUES('SCH_ACTIVITEIT_PPR_SHORT','ruimte',NULL,NULL);
INSERT INTO FAC_ENTITY_NAME VALUES('SCH_ACTIVITEIT_PPM','per m2',NULL,NULL);
INSERT INTO FAC_ENTITY_NAME VALUES('SCH_ACTIVITEIT_PPR','per ruimte',NULL,NULL);
DELETE FROM FAC_MESSAGE
WHERE FAC_MESSAGE_CODE = 'SCH_PPM';
INSERT INTO FAC_MESSAGE VALUES('SCH_PPM','Prijs per m2');
CREATE OR REPLACE VIEW sch_v_werkzaamheden_gegevens
(sch_werkzaamheden_key,
sch_werkzaamheden_kosten,
sch_activiteit_code,
sch_activiteit_prijsprofiel,
sch_activiteit_volgnr,
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_A.sch_activiteit_volgnr,
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 (+);
/* LOG#1407 */
DELETE FROM FAC_MESSAGE
WHERE FAC_MESSAGE_CODE IN ('SCH_M035','SCH_M036','SCH_M037');
INSERT INTO FAC_MESSAGE VALUES('SCH_M035','De geselecteerde schoonmaakniveau''s verwijderen?');
INSERT INTO FAC_MESSAGE VALUES('SCH_M036','Er zijn geen schoonmaakniveau''s geselecteerd');
INSERT INTO FAC_MESSAGE VALUES('SCH_M037','De geselecteerde werkzaamheden verwijderen?');
/* LOG#1411 */
DELETE FROM FAC_MESSAGE
WHERE FAC_MESSAGE_CODE IN ('SCH_M027');
INSERT INTO FAC_MESSAGE VALUES('SCH_M027','Verwijderen niet toegestaan, er zijn nog ruimtes met deze vloersoort.');
/* LOG#1415 */
CREATE OR REPLACE TRIGGER mld_t_mld_opdr_B_IU
BEFORE INSERT OR UPDATE ON mld_opdr
FOR EACH ROW
BEGIN
IF :new.mld_opdr_key IS NULL THEN SELECT mld_s_mld_opdr_key.nextval INTO :new.mld_opdr_key FROM DUAL; END IF;
DECLARE dummy CHAR; BEGIN IF :new.mld_uitvoerende_keys IS NOT NULL THEN SELECT 'X' INTO dummy FROM mld_v_uitvoerende WHERE key = :new.mld_uitvoerende_keys; END IF; EXCEPTION WHEN NO_DATA_FOUND THEN raise_application_error(-20000, 'ins_m22'); END;
END;
/
/* LOG#1422 voeg nieuwe column toe aan tabel mld_melding
* (deze wordt verderop nog NOT NULL)
*/
ALTER TABLE mld_melding
ADD
(
mld_alg_locatie_key
NUMBER(10)
REFERENCES alg_locatie(alg_locatie_key)
);
/* vul de nieuwe column voor alle reeds bestaande meldingen mbt
* gebouwen, verdiepingen en ruimtes
*/
UPDATE mld_melding
SET mld_alg_locatie_key = (SELECT alg_locatie_key
FROM mld_v_onroerendgoed_locatie
WHERE alg_onroerendgoed_keys = mld_alg_onroerendgoed_keys);
/* zet tenslotte de NOT NULL constraint op de column */
ALTER TABLE mld_melding
MODIFY
(
mld_alg_locatie_key
NOT NULL
);
CREATE OR REPLACE TRIGGER mld_t_mld_melding_B_IU
BEFORE INSERT OR UPDATE ON mld_melding
FOR EACH ROW
BEGIN
IF :new.mld_melding_key IS NULL THEN SELECT mld_s_mld_melding_key.nextval INTO :new.mld_melding_key FROM DUAL; END IF;
DECLARE dummy CHAR; BEGIN SELECT 'X' INTO dummy FROM alg_v_aanweziggebouw WHERE alg_gebouw_key = :new.mld_alg_onroerendgoed_keys; EXCEPTION WHEN NO_DATA_FOUND THEN BEGIN SELECT 'X' INTO dummy FROM alg_v_aanwezigverdieping WHERE alg_verdieping_key = :new.mld_alg_onroerendgoed_keys; EXCEPTION WHEN NO_DATA_FOUND THEN BEGIN SELECT 'X' INTO dummy FROM alg_v_aanwezigruimte WHERE alg_ruimte_key = :new.mld_alg_onroerendgoed_keys; EXCEPTION WHEN NO_DATA_FOUND THEN BEGIN SELECT 'X' INTO dummy FROM alg_v_aanwezigterreinsector WHERE alg_terreinsector_key = :new.mld_alg_onroerendgoed_keys; EXCEPTION WHEN NO_DATA_FOUND THEN raise_application_error(-20000,'alg_m090'); END; END; END; END;
IF :old.mld_alg_onroerendgoed_keys IS NULL
OR :old.mld_alg_onroerendgoed_keys <> :new.mld_alg_onroerendgoed_keys
THEN
SELECT alg_locatie_key
INTO :new.mld_alg_locatie_key
FROM mld_v_onroerendgoed_locatie
WHERE alg_onroerendgoed_keys = :new.mld_alg_onroerendgoed_keys;
END IF;
END;
/
/* IMPORT_SRTVLOER */
ALTER TABLE alg_import
ADD
(
alg_import_vloer
VARCHAR2(30)
);
/* LOG#1400 */
alter table alg_import
modify (alg_import_ruimtenr varchar2(10));
/* Initiele waardes voor SCH_SRTVLOER */
#ifdef SCH
#ifdef DATA
INSERT INTO sch_srtvloer (sch_srtvloer_omschrijving) VALUES ('Beton');
INSERT INTO sch_srtvloer (sch_srtvloer_omschrijving) VALUES ('Natuursteen');
INSERT INTO sch_srtvloer (sch_srtvloer_omschrijving) VALUES ('Vloertegels,glad');
INSERT INTO sch_srtvloer (sch_srtvloer_omschrijving) VALUES ('Vloertegels,ruw');
INSERT INTO sch_srtvloer (sch_srtvloer_omschrijving) VALUES ('Parket');
INSERT INTO sch_srtvloer (sch_srtvloer_omschrijving) VALUES ('Linoleum');
INSERT INTO sch_srtvloer (sch_srtvloer_omschrijving) VALUES ('Siergrind');
INSERT INTO sch_srtvloer (sch_srtvloer_omschrijving) VALUES ('Tapijt');
#endif // DATA
#endif // SCH
/* LOG#... */
/* werk vervolgens het versienummer en de datum bij (van alle interne modules) */
UPDATE fac_module
SET fac_module_version='01.31',
fac_module_date=TO_CHAR(SYSDATE,'YYYYMMDD');
COMMIT;
SPOOL OFF