Files
Customer/FMHW/fmhw.sql
Robin Stoker bcfbf286ce FMHN#65340 -- Thema views voor werkplekken per ministerie
svn path=/Customer/trunk/; revision=50090
2021-02-26 16:40:14 +00:00

1668 lines
63 KiB
SQL
Raw Blame History

--
-- $Id$
--
-- Script containing customer specific db-configuration for FMHW.
DEFINE thisfile = 'FMHW.SQL'
DEFINE dbuser = '^FMHW'
SET ECHO ON
SET DEFINE ON
COLUMN fcltlogfile NEW_VALUE fcltlogfile NOPRINT;
WHENEVER SQLERROR EXIT;
SELECT adm.scriptspoolfile('&dbuser', '&thisfile') AS fcltlogfile FROM DUAL;
WHENEVER SQLERROR CONTINUE;
SPOOL &fcltlogfile
SET DEFINE OFF
------ payload begin ------
-- Aangepaste import voor ruimten i.v.m. beperkingen export Stabicad
/*
CREATE OR REPLACE PROCEDURE fmhw_import_ruimten (p_import_key IN NUMBER
)
AS
c_fielddelimitor VARCHAR2 (1) := ';';
v_newline fac_imp_file.fac_imp_file_line%TYPE; -- Input line
v_errormsg VARCHAR2 (1000);
v_errorhint VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
header_is_valid NUMBER;
v_count NUMBER;
v_ongeldig NUMBER (1);
v_mode NUMBER (1);
v_aanduiding VARCHAR2 (200);
v_alg_kenmerk_key1 VARCHAR2 (255);
v_alg_kenmerk_key2 VARCHAR2 (255);
v_alg_kenmerk_key3 VARCHAR2 (255);
v_alg_kenmerk_key4 VARCHAR2 (255);
v_alg_kenmerk_key5 VARCHAR2 (255);
-- De importvelden:
v_locatie_code VARCHAR2 (255); -- 10
v_gebouw_code VARCHAR2 (255); -- 12
v_verdieping_volgnr VARCHAR2 (255); -- 3,0
v_verdieping_volgnr_n NUMBER (3, 0); -- 3,0
v_srtruimte_omschrijving VARCHAR2 (255); -- 30
v_ruimte_nr VARCHAR2 (255); -- 10
v_ruimte_omschrijving VARCHAR2 (255); -- 30
v_ruimte_bruto_vloeropp VARCHAR2 (255); -- 8,2
v_ruimte_bruto_vloeropp_n NUMBER (8, 2); -- 8,2
v_afdeling_naam VARCHAR2 (255); -- 10
v_ruimte_afdeling_bezetting VARCHAR2 (255); -- 8,5
v_ruimte_afdeling_bezetting_n VARCHAR2 (255); -- 8,5
v_reserveerbaar VARCHAR2 (255); -- 1
v_res_discipline_omschrijving VARCHAR2 (255); -- 60
v_res_discipline_expire_dagen VARCHAR2 (255); -- 3
v_res_disc_expire_dagen_n NUMBER (3, 0); -- 3
v_res_ruimte_prijs VARCHAR2 (255); -- 7,2
v_res_ruimte_prijs_n NUMBER (7, 2); -- 7,2
v_res_opstelling_omschrijving VARCHAR2 (255); -- 30
v_res_ruimte_opstel_bezoekers VARCHAR2 (255); -- 5,0
v_res_ruimte_opstel_bez_n NUMBER (5, 0); -- 5,0
v_res_ruimte_nr VARCHAR2 (255); -- 40
v_res_ruimte_omschrijving VARCHAR2 (255); -- 255
v_alg_kenmerkwaarde1 VARCHAR2 (255);
v_alg_kenmerkwaarde2 VARCHAR2 (255);
v_alg_kenmerkwaarde3 VARCHAR2 (255);
v_alg_kenmerkwaarde4 VARCHAR2 (255);
v_alg_kenmerkwaarde5 VARCHAR2 (255);
CURSOR c1
IS
SELECT *
FROM fac_imp_file
WHERE fac_import_key = p_import_key
ORDER BY fac_imp_file_index;
-- Controleer tijdens import-fase op bestaan van kenmerk
FUNCTION bepaal_kenmerk_key (kw IN VARCHAR)
RETURN NUMBER
IS
v_kenmerk_key NUMBER;
BEGIN
IF fac.safe_to_number (kw) IS NULL
THEN -- kenmerkwaarde is alfanumeriek (dus omschrijving)!
SELECT alg_kenmerk_key
INTO v_kenmerk_key
FROM alg_kenmerk
WHERE alg_kenmerk_upper = UPPER (kw)
AND alg_kenmerk_verwijder IS NULL
AND alg_kenmerk_niveau = 'R'
AND alg_kenmerk_kenmerktype IN ('C', 'D', 'N', 'R', 'S', 'X', 'B', 'V');
ELSE -- kenmerkwaarde is numeriek (dus key)!
SELECT alg_kenmerk_key
INTO v_kenmerk_key
FROM alg_kenmerk
WHERE alg_kenmerk_key = fac.safe_to_number (kw)
AND alg_kenmerk_verwijder IS NULL
AND alg_kenmerk_niveau = 'R'
AND alg_kenmerk_kenmerktype IN ('C', 'D', 'N', 'R', 'S', 'X', 'B', 'V');
END IF;
RETURN v_kenmerk_key;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
IF kw IS NULL OR UPPER (kw) LIKE 'KENMERK%'
THEN
RETURN NULL;
ELSE
fac.imp_writelog (p_import_key,
'W',
'Fout bij bepalen kenmerk [' || kw || ']',
'Bestaat niet of type ongeldig');
COMMIT;
RETURN NULL;
END IF;
END;
BEGIN
DELETE FROM fac_imp_onrgoed2;
header_is_valid := 0;
v_count := 0;
FOR rec1 IN c1
LOOP
BEGIN
v_errormsg := 'Fout FETCH te importeren rij';
v_newline := rec1.fac_imp_file_line;
v_errormsg := 'Fout opvragen te importeren rij';
v_aanduiding := '';
v_errorhint := '';
v_ongeldig := 0;
-- Lees alle veldwaarden, aangepast op export uit Stabicad
fac.imp_getfield (v_newline, c_fielddelimitor, v_ruimte_nr);
fac.imp_getfield (v_newline, c_fielddelimitor, v_ruimte_omschrijving);
fac.imp_getfield (v_newline, c_fielddelimitor, v_ruimte_bruto_vloeropp);
fac.imp_getfield (v_newline, c_fielddelimitor, v_srtruimte_omschrijving);
fac.imp_getfield (v_newline, c_fielddelimitor, v_gebouw_code);
fac.imp_getfield (v_newline, c_fielddelimitor, v_verdieping_volgnr);
fac.imp_getfield (v_newline, c_fielddelimitor, v_locatie_code);
fac.imp_getfield (v_newline, c_fielddelimitor, v_afdeling_naam);
fac.imp_getfield (v_newline, c_fielddelimitor, v_ruimte_afdeling_bezetting);
fac.imp_getfield (v_newline, c_fielddelimitor, v_reserveerbaar);
fac.imp_getfield (v_newline, c_fielddelimitor, v_res_discipline_omschrijving);
fac.imp_getfield (v_newline, c_fielddelimitor, v_res_discipline_expire_dagen);
fac.imp_getfield (v_newline, c_fielddelimitor, v_res_ruimte_prijs);
fac.imp_getfield (v_newline, c_fielddelimitor, v_res_opstelling_omschrijving);
fac.imp_getfield (v_newline, c_fielddelimitor, v_res_ruimte_opstel_bezoekers);
fac.imp_getfield (v_newline, c_fielddelimitor, v_res_ruimte_nr);
fac.imp_getfield (v_newline, c_fielddelimitor, v_res_ruimte_omschrijving);
fac.imp_getfield (v_newline, c_fielddelimitor, v_alg_kenmerkwaarde1);
fac.imp_getfield (v_newline, c_fielddelimitor, v_alg_kenmerkwaarde2);
fac.imp_getfield (v_newline, c_fielddelimitor, v_alg_kenmerkwaarde3);
fac.imp_getfield (v_newline, c_fielddelimitor, v_alg_kenmerkwaarde4);
fac.imp_getfield (v_newline, c_fielddelimitor, v_alg_kenmerkwaarde5);
v_aanduiding :=
v_locatie_code || '|' || v_gebouw_code || '|' || v_verdieping_volgnr || '|' || v_ruimte_nr || '| ';
v_alg_kenmerkwaarde1 := 'Volledig Ruimtenummer'; -- Vast kenmerk dat nodig is voor de CAD sync view
IF (header_is_valid = 0)
THEN
IF UPPER (v_locatie_code) = 'LOCATIECODE'
AND UPPER (v_ruimte_nr) = 'RUIMTENUMMER'
AND UPPER (v_res_ruimte_omschrijving) = 'OMSCHRIJVING'
THEN
v_alg_kenmerk_key1 := bepaal_kenmerk_key (v_alg_kenmerkwaarde1);
v_alg_kenmerk_key2 := bepaal_kenmerk_key (v_alg_kenmerkwaarde2);
v_alg_kenmerk_key3 := bepaal_kenmerk_key (v_alg_kenmerkwaarde3);
v_alg_kenmerk_key4 := bepaal_kenmerk_key (v_alg_kenmerkwaarde4);
v_alg_kenmerk_key5 := bepaal_kenmerk_key (v_alg_kenmerkwaarde5);
header_is_valid := 1;
END IF;
ELSE
v_count := v_count + 1;
v_errormsg := 'Fout inlezen locatie [' || v_locatie_code || ']';
v_locatie_code := TRIM(v_locatie_code);
IF LENGTH (v_locatie_code) > 10
THEN
v_locatie_code := SUBSTR (v_locatie_code, 1, 10);
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || 'Locatie-aanduiding is te lang',
'Aanduiding wordt afgebroken tot <' || v_locatie_code || '>'
);
END IF;
--
v_errormsg := 'Fout inlezen gebouw [' || v_gebouw_code || ']';
v_gebouw_code := TRIM(v_gebouw_code);
IF LENGTH (v_gebouw_code) > 12
THEN
v_gebouw_code := SUBSTR (v_gebouw_code, 1, 12);
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || 'Gebouwcode-aanduiding is te lang',
'Aanduiding wordt afgebroken tot <' || v_gebouw_code || '>'
);
END IF;
--
v_errormsg := '1 Fout inlezen verdiepingvolgnr [' || v_verdieping_volgnr || ']';
v_errorhint := 'Geef een geheel getal niet groter dan 3 posities';
IF (NVL (LENGTH (ROUND (fac.safe_to_number (v_verdieping_volgnr))), 10)) > 3
THEN
fac.imp_writelog (p_import_key,
'E',
v_aanduiding || 'xyz Ongeldig verdiepingvolgnummer [' || v_verdieping_volgnr || ']',
v_errorhint
);
v_ongeldig := 1;
ELSE
v_verdieping_volgnr_n := ROUND (fac.safe_to_number (v_verdieping_volgnr));
END IF;
--
v_errormsg := 'Fout inlezen ruimtefunctie [' || v_srtruimte_omschrijving || ']';
v_srtruimte_omschrijving := TRIM(v_srtruimte_omschrijving);
IF LENGTH (v_srtruimte_omschrijving) > 50
THEN
v_srtruimte_omschrijving := SUBSTR (v_srtruimte_omschrijving, 1, 50);
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || 'Ruimtefunctie-aanduiding is te lang',
'Aanduiding wordt afgebroken tot <' || v_srtruimte_omschrijving || '>'
);
END IF;
--
v_errormsg := 'Fout inlezen ruimtenummer [' || v_ruimte_nr || ']';
v_ruimte_nr := TRIM(v_ruimte_nr);
IF LENGTH (v_ruimte_nr) > 10
THEN
v_ruimte_nr := SUBSTR (v_ruimte_nr, 1, 10);
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || 'Ruimtenr-aanduiding is te lang',
'Aanduiding wordt afgebroken tot <' || v_ruimte_nr || '>'
);
END IF;
--
v_errormsg := 'Fout inlezen ruimte [' || v_ruimte_omschrijving || ']';
v_ruimte_omschrijving := TRIM(v_ruimte_omschrijving);
IF LENGTH (v_ruimte_omschrijving) > 30
THEN
v_ruimte_omschrijving := SUBSTR (v_ruimte_omschrijving, 1, 30);
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || 'Ruimte-aanduiding is te lang',
'Aanduiding wordt afgebroken tot <' || v_ruimte_omschrijving || '>'
);
END IF;
--
v_errormsg := 'Fout inlezen ruimte oppervlakte [' || v_ruimte_bruto_vloeropp || ']';
v_errorhint := 'Maximaal grootte getal is 99999.99';
IF TRIM (v_ruimte_bruto_vloeropp) IS NULL
THEN
v_ruimte_bruto_vloeropp_n := TO_NUMBER (NULL);
ELSE
-- nls_numeric_characters wordt verondersteld
v_ruimte_bruto_vloeropp_n := TO_NUMBER (TRIM (REPLACE (v_ruimte_bruto_vloeropp, ',', '.')), '999999D99');
END IF;
--
v_errormsg := 'Fout inlezen afdelingscode [' || v_afdeling_naam || ']';
v_afdeling_naam := TRIM(v_afdeling_naam);
IF LENGTH (v_afdeling_naam) > 15
THEN
v_afdeling_naam := SUBSTR (v_afdeling_naam, 1, 15);
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || 'Afdelingscode is te lang',
'Afdelingscode wordt afgebroken tot <' || v_afdeling_naam || '>'
);
END IF;
--
v_errormsg := 'Fout inlezen ruimtebezetting [' || v_ruimte_afdeling_bezetting || ']';
v_errorhint := 'Maximaal grootte getal is 999.99999';
IF TRIM (v_ruimte_afdeling_bezetting) IS NULL
THEN
v_ruimte_afdeling_bezetting_n := TO_NUMBER (NULL);
ELSE
-- nls_numeric_characters wordt verondersteld
v_ruimte_afdeling_bezetting_n := TO_NUMBER (TRIM (REPLACE (v_ruimte_afdeling_bezetting, ',', '.')), '999D99999');
END IF;
--
v_reserveerbaar := SUBSTR (TRIM (v_reserveerbaar), 1, 1);
--
v_errormsg := 'Fout inlezen catalogus [' || v_res_discipline_omschrijving || ']';
v_res_discipline_omschrijving := TRIM(v_res_discipline_omschrijving);
IF LENGTH (v_res_discipline_omschrijving) > 60
THEN
v_res_discipline_omschrijving := SUBSTR (v_res_discipline_omschrijving, 1, 60);
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || 'Categorie-aanduiding ruimte is te lang',
'Aanduiding wordt afgebroken tot <' || v_res_discipline_omschrijving || '>'
);
END IF;
--
v_errormsg := 'Fout inlezen expire dagen [' || v_res_discipline_expire_dagen || ']';
v_errorhint := 'Geef geheel getal niet groter dan 3 posities';
IF TRIM (v_res_discipline_expire_dagen) IS NULL
THEN
v_res_disc_expire_dagen_n := 0;
ELSE
v_res_disc_expire_dagen_n := TO_NUMBER (v_res_discipline_expire_dagen);
END IF;
--
v_errormsg := 'Fout inlezen prijs reserveerbare ruimte [' || v_res_ruimte_prijs || ']';
v_errorhint := 'Maximaal grootte getal is 99999.99 ';
IF (TRIM (v_res_ruimte_prijs) IS NULL)
THEN
v_res_ruimte_prijs_n := TO_NUMBER (NULL);
ELSE
-- nls_numeric_characters wordt verondersteld
v_res_ruimte_prijs_n := TO_NUMBER (TRIM (REPLACE (v_res_ruimte_prijs, ',', '.')), '999999D99');
END IF;
--
v_errormsg := 'Fout inlezen opstelling [' || v_res_opstelling_omschrijving || ']';
v_res_opstelling_omschrijving := TRIM(v_res_opstelling_omschrijving);
IF LENGTH (v_res_opstelling_omschrijving) > 30
THEN
v_res_opstelling_omschrijving := SUBSTR (v_res_opstelling_omschrijving, 1, 30);
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || 'Ruimteopstelling-aanduiding is te lang',
'Aanduiding wordt afgebroken tot <' || v_res_opstelling_omschrijving || '>'
);
END IF;
--
v_errormsg := 'Fout inlezen aantal bezoekers [' || v_res_ruimte_opstel_bezoekers || ']';
v_errorhint := 'Geef geheel getal niet groter dan 5 posities';
IF TRIM (v_res_ruimte_opstel_bezoekers) IS NULL
THEN
v_res_ruimte_opstel_bez_n := TO_NUMBER (NULL);
ELSE
v_res_ruimte_opstel_bez_n := TO_NUMBER (v_res_ruimte_opstel_bezoekers);
END IF;
--
v_errormsg := 'Fout inlezen ruimte nummer reserveerbare ruimte omschrijving [' || v_res_ruimte_nr || ']';
v_res_ruimte_nr := TRIM(v_res_ruimte_nr);
IF LENGTH (v_res_ruimte_nr) > 40
THEN
v_errormsg := 'Fout inlezen ruimte nummer reserveerbare ruimte omschrijving [' || v_res_ruimte_nr || ']';
v_res_ruimte_nr := SUBSTR (v_res_ruimte_nr, 1, 40);
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || 'Ruimtenr-aanduiding reserveerbare ruimte is te lang',
'Aanduiding wordt afgebroken tot <' || v_res_ruimte_nr || '>'
);
v_errormsg := 'Fout inlezen ruimte nummer reserveerbare ruimte omschrijving [' || v_res_ruimte_nr || ']';
END IF;
v_errormsg := 'Fout inlezen ruimte nummer reserveerbare ruimte omschrijving [' || v_res_ruimte_nr || ']';
--
v_errormsg := 'Fout inlezen reserveerbare ruimte [' || v_res_ruimte_omschrijving || ']';
v_res_ruimte_omschrijving := TRIM(v_res_ruimte_omschrijving);
IF LENGTH (v_res_ruimte_omschrijving) > 255
THEN
v_res_ruimte_omschrijving := SUBSTR (v_res_ruimte_omschrijving, 1, 255);
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || 'Ruimte-aanduiding reserveerbare ruimte is te lang',
'Aanduiding wordt afgebroken tot <' || v_res_ruimte_omschrijving || '>'
);
END IF;
v_alg_kenmerkwaarde1 := TRIM (v_alg_kenmerkwaarde1);
v_alg_kenmerkwaarde2 := TRIM (v_alg_kenmerkwaarde2);
v_alg_kenmerkwaarde3 := TRIM (v_alg_kenmerkwaarde3);
v_alg_kenmerkwaarde4 := TRIM (v_alg_kenmerkwaarde4);
v_alg_kenmerkwaarde5 := TRIM (v_alg_kenmerkwaarde5);
-- Insert geformatteerde import record
IF v_ongeldig = 0
THEN
v_errormsg := 'Fout bij toevoegen te impoteren ruimte [' || v_res_ruimte_omschrijving || ']';
INSERT INTO fac_imp_onrgoed2 (
alg_locatie_code,
alg_gebouw_code,
alg_verdieping_volgnr,
alg_srtruimte_omschrijving,
alg_ruimte_nr,
alg_ruimte_omschrijving,
alg_ruimte_bruto_vloeropp,
prs_afdeling_naam,
prs_ruimteafdeling_bezetting,
reserveerbaar,
res_discipline_omschrijving,
res_discipline_expire_dagen,
res_ruimte_prijs,
res_opstelling_omschrijving,
res_ruimte_opstel_bezoekers,
res_ruimte_nr,
res_ruimte_omschrijving,
alg_kenmerkwaarde1,
alg_kenmerkwaarde2,
alg_kenmerkwaarde3,
alg_kenmerkwaarde4,
alg_kenmerkwaarde5
)
VALUES (
v_locatie_code,
v_gebouw_code,
v_verdieping_volgnr_n,
v_srtruimte_omschrijving,
v_ruimte_nr,
v_ruimte_omschrijving,
v_ruimte_bruto_vloeropp_n,
v_afdeling_naam,
v_ruimte_afdeling_bezetting_n,
v_reserveerbaar,
v_res_discipline_omschrijving,
v_res_disc_expire_dagen_n,
v_res_ruimte_prijs_n,
v_res_opstelling_omschrijving,
v_res_ruimte_opstel_bez_n,
v_res_ruimte_nr,
v_res_ruimte_omschrijving,
DECODE (v_alg_kenmerk_key1,
NULL, v_alg_kenmerkwaarde1,
TO_CHAR (v_alg_kenmerk_key1)
|| '='
|| SUBSTR (v_alg_kenmerkwaarde1, 1, 200)
),
DECODE (v_alg_kenmerk_key2,
NULL, v_alg_kenmerkwaarde2,
TO_CHAR (v_alg_kenmerk_key2)
|| '='
|| SUBSTR (v_alg_kenmerkwaarde2, 1, 200)
),
DECODE (v_alg_kenmerk_key3,
NULL, v_alg_kenmerkwaarde3,
TO_CHAR (v_alg_kenmerk_key3)
|| '='
|| SUBSTR (v_alg_kenmerkwaarde3, 1, 200)
),
DECODE (v_alg_kenmerk_key4,
NULL, v_alg_kenmerkwaarde4,
TO_CHAR (v_alg_kenmerk_key4)
|| '='
|| SUBSTR (v_alg_kenmerkwaarde4, 1, 200)
),
DECODE (v_alg_kenmerk_key5,
NULL, v_alg_kenmerkwaarde5,
TO_CHAR (v_alg_kenmerk_key5)
|| '='
|| SUBSTR (v_alg_kenmerkwaarde5, 1, 200)
)
);
END IF;
END IF;
END;
END LOOP;
IF (header_is_valid = 0)
THEN
fac.imp_writelog (p_import_key,
'E',
v_aanduiding || 'Ongeldig importbestand',
'Geen geldige headerregel aanwezig'
);
ELSE
fac.imp_writelog (p_import_key, 'S', 'Ruimte: aantal ingelezen regels: ' || TO_CHAR (v_count), '');
END IF;
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg := v_errormsg || ' Error ' || oracle_err_num || '/' || oracle_err_mes;
fac.imp_writelog (p_import_key,
'E',
v_errormsg,
'Eventeel resterende regels worden niet meer ingelezen!'
);
END fmhw_import_ruimten;
/
CREATE OR REPLACE PROCEDURE fmhw_update_ruimten (
p_import_key IN NUMBER
) IS
c_fielddelimitor VARCHAR2 (1) := ';';
v_newline fac_imp_file.fac_imp_file_line%TYPE; -- Input line
v_errormsg VARCHAR2 (1000);
v_errorhint VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_aanduiding VARCHAR2 (200);
v_count NUMBER(10);
v_count_update NUMBER(10);
v_count_tot NUMBER(10);
-- De importvelden:
v_regio_omschrijving VARCHAR2(255); -- 30
v_district_omschrijving VARCHAR2(255); -- 30
v_locatie_code VARCHAR2(255); -- 10
v_locatie_omschrijving VARCHAR2(255); -- 60
v_gebouw_code VARCHAR2(255); -- 12
v_gebouw_naam VARCHAR2(255); -- 30
v_srtgebouw_omschrijving VARCHAR2(255); -- 30
v_locatie_verantw VARCHAR2(255); -- 30
v_locatie_verantw_tel VARCHAR2(255); -- 15
v_locatie_adres VARCHAR2(255); -- 50
v_locatie_postcode VARCHAR2(255); -- 12
v_locatie_plaats VARCHAR2(255); -- 30
v_locatie_land VARCHAR2(255); -- 30
v_locatie_post_adres VARCHAR2(255); -- 50
v_locatie_post_postcode VARCHAR2(255); -- 12
v_locatie_post_plaats VARCHAR2(255); -- 30
v_locatie_post_land VARCHAR2(255); -- 30
v_regio_key NUMBER(10);
v_district_key NUMBER(10);
v_locatie_key NUMBER(10);
v_srtgebouw_key NUMBER(10);
v_gebouw_key NUMBER(10);
v_verdieping_key NUMBER(10);
v_verdieping_volgnr NUMBER(3);
v_srtruimte_key NUMBER(10);
v_ruimte_key NUMBER(10);
v_res_ruimte_key NUMBER(10);
v_ruimte_omschrijving res_ruimte.res_ruimte_nr%TYPE; -- 40
v_discipline_key NUMBER(10);
v_opstelling_key NUMBER(10);
v_ruimteafdeling_key NUMBER(10);
CURSOR cVerdieping
IS
SELECT min(alg_locatie_code) alg_locatie_code
,min(alg_gebouw_code) alg_gebouw_code
,alg_verdieping_volgnr alg_verdieping_volgnr
FROM fac_imp_onrgoed2
GROUP BY upper(alg_locatie_code), upper(alg_gebouw_code), alg_verdieping_volgnr;
recVerdieping cVerdieping%ROWTYPE;
CURSOR cSrtRuimte
IS
SELECT min(alg_srtruimte_omschrijving) alg_srtruimte_omschrijving
FROM fac_imp_onrgoed2
GROUP BY alg_srtruimte_omschrijving;
recSrtRuimte cSrtRuimte%ROWTYPE;
CURSOR cRuimte
IS
SELECT alg_locatie_code,
alg_gebouw_code,
alg_verdieping_volgnr,
alg_srtruimte_omschrijving,
alg_ruimte_nr,
alg_ruimte_omschrijving,
alg_ruimte_bruto_vloeropp,
reserveerbaar,
res_discipline_omschrijving,
res_ruimte_prijs,
res_opstelling_omschrijving,
res_ruimte_opstel_bezoekers,
res_ruimte_nr,
res_ruimte_omschrijving,
i.prs_afdeling_naam,
prs_afdeling_key,
prs_ruimteafdeling_bezetting,
fac.safe_to_number (SUBSTR (alg_kenmerkwaarde1, 1, INSTR (alg_kenmerkwaarde1, '=') - 1))
kenmerk_key1,
SUBSTR (alg_kenmerkwaarde1, INSTR (alg_kenmerkwaarde1, '=') + 1) waarde1,
fac.safe_to_number (SUBSTR (alg_kenmerkwaarde2, 1, INSTR (alg_kenmerkwaarde2, '=') - 1))
kenmerk_key2,
SUBSTR (alg_kenmerkwaarde2, INSTR (alg_kenmerkwaarde2, '=') + 1) waarde2,
fac.safe_to_number (SUBSTR (alg_kenmerkwaarde3, 1, INSTR (alg_kenmerkwaarde3, '=') - 1))
kenmerk_key3,
SUBSTR (alg_kenmerkwaarde3, INSTR (alg_kenmerkwaarde3, '=') + 1) waarde3,
fac.safe_to_number (SUBSTR (alg_kenmerkwaarde4, 1, INSTR (alg_kenmerkwaarde4, '=') - 1))
kenmerk_key4,
SUBSTR (alg_kenmerkwaarde4, INSTR (alg_kenmerkwaarde4, '=') + 1) waarde4,
fac.safe_to_number (SUBSTR (alg_kenmerkwaarde5, 1, INSTR (alg_kenmerkwaarde5, '=') - 1))
kenmerk_key5,
SUBSTR (alg_kenmerkwaarde5, INSTR (alg_kenmerkwaarde5, '=') + 1) waarde5
FROM fac_imp_onrgoed2 i,
prs_afdeling a
WHERE a.prs_afdeling_verwijder IS NULL
AND UPPER(i.prs_afdeling_naam) = a.prs_afdeling_upper(+);
recRuimte cRuimte%ROWTYPE;
CURSOR cOpstelling
IS
SELECT min(res_opstelling_omschrijving) res_opstelling_omschrijving
,UPPER(res_opstelling_omschrijving) res_opstelling_upper
FROM FAC_IMP_ONRGOED2
WHERE res_opstelling_omschrijving IS NOT NULL
GROUP BY UPPER(res_opstelling_omschrijving);
recOpstelling cOpstelling%ROWTYPE;
CURSOR cCategorie
IS
SELECT min(res_discipline_omschrijving) res_discipline_omschrijving
,upper(res_discipline_omschrijving) res_discipline_upper
,NVL(res_discipline_expire_dagen,0) res_discipline_expire_dagen
FROM FAC_IMP_ONRGOED2
WHERE reserveerbaar in ('Y','y','J','j')
GROUP BY upper(res_discipline_omschrijving)
, res_discipline_expire_dagen;
recCategorie cCategorie%ROWTYPE;
CURSOR cResRuimte
IS
SELECT *
FROM FAC_IMP_ONRGOED2
WHERE RESERVEERBAAR in ('J','j','Y','y');
recResRuimte cResRuimte%ROWTYPE;
-- SUBPROC
PROCEDURE upsert_algkenmerk (p_ruimte_key IN NUMBER,
p_kenmerk_key IN NUMBER,
p_waarde IN VARCHAR2)
AS
v_kenmerk_type VARCHAR2 (1);
ccount NUMBER;
v_waarde VARCHAR2 (255);
v_objectnaam VARCHAR2 (30);
v_kolomnaam VARCHAR2 (30);
v_kolomtxt VARCHAR2 (30);
sql_stmt VARCHAR2 (1000);
l_cursor_1 INTEGER;
l_rowsprocessed NUMBER DEFAULT 0;
BEGIN
IF (p_kenmerk_key IS NOT NULL AND p_waarde IS NOT NULL)
THEN
v_errormsg := 'Fout bij bepalen kenmerktype';
SELECT alg_kenmerk_kenmerktype
INTO v_kenmerk_type
FROM alg_kenmerk
WHERE alg_kenmerk_verwijder IS NULL
AND alg_kenmerk_key = p_kenmerk_key
AND alg_kenmerk_niveau = 'R';
IF v_kenmerk_type IN ('R', 'S')
THEN
v_errormsg := 'Fout bij bepalen eigen tabel';
SELECT COUNT ( * )
INTO ccount
FROM alg_kenmerk k, fac_kenmerkdomein d
WHERE k.alg_kenmerk_key = p_kenmerk_key
AND k.fac_kenmerkdomein_key = d.fac_kenmerkdomein_key
AND d.fac_usrtab_key IS NOT NULL;
v_errormsg := 'Fout bij bepalen nieuwe waarde [' || p_waarde || ']';
IF ccount = 1
THEN -- Eigen tabel
SELECT TO_CHAR (ud.fac_usrdata_key)
INTO v_waarde
FROM alg_kenmerk k, fac_kenmerkdomein d, fac_v_aanwezigusrdata ud
WHERE k.alg_kenmerk_key = p_kenmerk_key
AND k.fac_kenmerkdomein_key = d.fac_kenmerkdomein_key
AND d.fac_usrtab_key = ud.fac_usrtab_key
AND UPPER (TRIM (ud.fac_usrdata_omschr)) = UPPER (p_waarde);
ELSE -- FACILITOR view/tabel
SELECT d.fac_kenmerkdomein_objectnaam, d.fac_kenmerkdomein_kolomnaam, d.fac_kenmerkdomein_kolomtxt
INTO v_objectnaam, v_kolomnaam, v_kolomtxt
FROM alg_kenmerk k, fac_kenmerkdomein d
WHERE k.alg_kenmerk_key = p_kenmerk_key
AND k.fac_kenmerkdomein_key = d.fac_kenmerkdomein_key
AND d.fac_usrtab_key IS NULL;
sql_stmt := 'SELECT MAX ('
|| v_kolomnaam
|| ') FROM '
|| v_objectnaam
|| ' WHERE UPPER (TRIM ('
|| v_kolomtxt
|| ')) = UPPER (:pwaarde)';
l_cursor_1 := DBMS_SQL.open_cursor;
DBMS_SQL.parse (l_cursor_1, sql_stmt, DBMS_SQL.native);
DBMS_SQL.BIND_VARIABLE(l_cursor_1,':pwaarde', p_waarde);
DBMS_SQL.define_column(l_cursor_1, 1, v_waarde, 255);
l_rowsprocessed := DBMS_SQL.execute_and_fetch (l_cursor_1);
DBMS_SQL.column_value (l_cursor_1, 1, v_waarde);
DBMS_SQL.close_cursor(l_cursor_1);
END IF;
ELSE -- C(Karakter)/D(Datum)/N(Numeriek)/X(Bestandsnaam)
v_waarde := p_waarde;
END IF;
v_errormsg := 'Fout bij toevoegen/bijwerken kenmerk';
alg.upsertkenmerk (p_kenmerk_key,
p_ruimte_key,
v_waarde);
END IF;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg :=
v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || v_errormsg,
'upsert_algkenmerk');
END;
BEGIN
-- ****************
-- ***VERDIEPING***
-- ****************
OPEN cVerdieping;
v_count_update := 0;
v_count_tot := 0;
IF cVerdieping%ISOPEN THEN
LOOP
BEGIN
v_errormsg := '';
v_errorhint := '';
v_aanduiding := '';
FETCH cVerdieping INTO recVerdieping;
EXIT WHEN cVerdieping%NOTFOUND;
v_count_tot := v_count_tot + 1;
v_aanduiding := recVerdieping.ALG_LOCATIE_CODE||'|'||recVerdieping.ALG_GEBOUW_CODE||'|'||recVerdieping.ALG_VERDIEPING_VOLGNR||'| ';
v_errorhint := ' Fout bij bepalen locatie ['||recVerdieping.ALG_LOCATIE_CODE||']';
SELECT ALG_LOCATIE_KEY
INTO v_locatie_key
FROM ALG_LOCATIE
WHERE UPPER(ALG_LOCATIE_CODE) = UPPER(recVerdieping.ALG_LOCATIE_CODE)
AND ALG_LOCATIE_VERWIJDER IS NULL;
v_errorhint := ' Fout bij bepalen gebouw ['||recVerdieping.ALG_GEBOUW_CODE||']';
SELECT ALG_GEBOUW_KEY
INTO v_gebouw_key
FROM ALG_GEBOUW
WHERE UPPER(ALG_GEBOUW_CODE) = UPPER(recVerdieping.ALG_GEBOUW_CODE)
AND ALG_LOCATIE_KEY = v_locatie_key
AND ALG_GEBOUW_VERWIJDER IS NULL;
v_errorhint := 'Fout bij toevoegen verdieping';
SELECT count(*)
INTO v_count
FROM alg_v_aanwezigverdieping
WHERE alg_gebouw_key = v_gebouw_key
AND ALG_VERDIEPING_VOLGNR = recVerdieping.ALG_VERDIEPING_VOLGNR;
IF (v_count = 0) THEN
insert into ALG_VERDIEPING
(ALG_GEBOUW_KEY
,ALG_VERDIEPING_VOLGNR
,ALG_VERDIEPING_CODE
,ALG_VERDIEPING_OMSCHRIJVING
)
values
(v_gebouw_key
,recVerdieping.ALG_VERDIEPING_VOLGNR
,to_char(recVerdieping.ALG_VERDIEPING_VOLGNR)
,'Verdieping '||to_char(recVerdieping.ALG_VERDIEPING_VOLGNR)
);
END IF;
commit;
v_count_update := v_count_update + 1;
EXCEPTION WHEN OTHERS THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR(SQLERRM, 1, 200);
v_errormsg := 'Fout tijdens verwerken verdieping ['||recVerdieping.ALG_LOCATIE_CODE||'-'||recVerdieping.ALG_GEBOUW_CODE||'-'||to_number(recVerdieping.ALG_VERDIEPING_VOLGNR)||']';
v_errorhint := v_errorhint||': ' || oracle_err_mes;
fac.imp_writelog (p_import_key,
'E',
v_aanduiding||v_errormsg,
v_errorhint
);
commit;
END;
END LOOP;
fac.imp_writelog (p_import_key,
'S',
'Verdieping: verwerkte regels zonder foutmelding: '||to_char(v_count_update),
''
);
fac.imp_writelog (p_import_key,
'S',
'Verdieping: verwerkte regels met foutmelding: '||to_char(v_count_tot-v_count_update),
''
);
END IF;
CLOSE cVerdieping;
-- *******************
-- ***RUIMTEFUNCTIE***
-- *******************
OPEN cSrtRuimte;
v_count_update := 0;
v_count_tot := 0;
IF cSrtRuimte%ISOPEN THEN
LOOP
BEGIN
v_errormsg := '';
v_errorhint := '';
v_aanduiding := '';
FETCH cSrtRuimte INTO recSrtRuimte;
EXIT WHEN cSrtRuimte%NOTFOUND;
v_count_tot := v_count_tot + 1;
v_aanduiding := recSrtRuimte.ALG_SRTRUIMTE_OMSCHRIJVING||'| ';
v_errorhint := ' Fout bij toevoegen ruimtefunctie';
SELECT count(*)
INTO v_count
FROM alg_srtruimte
WHERE upper(alg_srtruimte_omschrijving) = upper(recSrtRuimte.ALG_SRTRUIMTE_OMSCHRIJVING)
AND alg_srtruimte_verwijder is null;
IF (v_count = 0) THEN
insert into ALG_SRTRUIMTE
(ALG_SRTRUIMTE_OMSCHRIJVING
)
values
(recSrtRuimte.ALG_SRTRUIMTE_OMSCHRIJVING
);
END IF;
commit;
v_count_update := v_count_update + 1;
EXCEPTION WHEN OTHERS THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR(SQLERRM, 1, 200);
v_errormsg := 'Fout tijdens verwerken ruimtefunctie ['||recSrtRuimte.ALG_SRTRUIMTE_OMSCHRIJVING||']';
v_errorhint := v_errorhint||': ' || oracle_err_mes;
fac.imp_writelog (p_import_key,
'E',
v_aanduiding||v_errormsg,
v_errorhint
);
commit;
END;
END LOOP;
fac.imp_writelog (p_import_key,
'S',
'Ruimtefunctie: verwerkte regels zonder foutmelding: '||to_char(v_count_update),
''
);
fac.imp_writelog (p_import_key,
'S',
'Ruimtefunctie: verwerkte regels met foutmelding: '||to_char(v_count_tot-v_count_update),
''
);
END IF;
CLOSE cSrtRuimte;
-- ************
-- ***RUIMTE***
-- ************
OPEN cRuimte;
v_count_update := 0;
v_count_tot := 0;
IF cRuimte%ISOPEN THEN
LOOP
BEGIN
v_errormsg := '';
v_errorhint := '';
v_aanduiding := '';
v_ruimte_key := NULL;
FETCH cRuimte INTO recRuimte;
EXIT WHEN cRuimte%NOTFOUND;
v_count_tot := v_count_tot + 1;
v_aanduiding := recRuimte.ALG_LOCATIE_CODE||'|'||recRuimte.ALG_GEBOUW_CODE||'|'||recRuimte.ALG_VERDIEPING_VOLGNR||'|'||recRuimte.ALG_RUIMTE_NR||'| ';
v_errorhint := ' Fout bij bepalen locatie';
SELECT ALG_LOCATIE_KEY
INTO v_locatie_key
FROM ALG_LOCATIE
WHERE UPPER(ALG_LOCATIE_CODE) = UPPER(recRuimte.ALG_LOCATIE_CODE)
AND ALG_LOCATIE_verwijder is null;
v_errorhint := ' Fout bij bepalen gebouw';
SELECT ALG_GEBOUW_KEY
INTO v_gebouw_key
FROM ALG_GEBOUW
WHERE UPPER(ALG_GEBOUW_CODE) = UPPER(recRuimte.ALG_GEBOUW_CODE)
AND ALG_LOCATIE_KEY = v_locatie_key
AND ALG_GEBOUW_verwijder is null;
v_errorhint := ' Fout bij bepalen verdieping';
SELECT ALG_VERDIEPING_KEY
INTO v_verdieping_key
FROM ALG_VERDIEPING
WHERE ALG_GEBOUW_KEY = v_gebouw_key
AND ALG_VERDIEPING_VOLGNR = recRuimte.ALG_VERDIEPING_VOLGNR
AND ALG_VERDIEPING_verwijder is null;
v_errorhint := ' Fout bij bepalen ruimtefunctie'||' ['||recRuimte.alg_srtruimte_omschrijving||']';
SELECT ALG_SRTRUIMTE_KEY
INTO v_srtruimte_key
FROM ALG_SRTRUIMTE
WHERE upper(alg_srtruimte_omschrijving) = upper(recRuimte.ALG_SRTRUIMTE_OMSCHRIJVING)
AND ALG_SRTRUIMTE_verwijder is null;
SELECT count(*)
INTO v_count
FROM ALG_RUIMTE
WHERE ALG_VERDIEPING_KEY = v_verdieping_key
AND UPPER(ALG_RUIMTE_NR) = UPPER(recRuimte.ALG_RUIMTE_NR)
-- als ruimteomschrijving in sheet afwijkt geeft dit een onduidelijke error, dan liever
-- de omschrijving negeren en gewoon niet bijwerken
-- AND UPPER(ALG_RUIMTE_OMSCHRIJVING) = UPPER(recRuimte.ALG_RUIMTE_OMSCHRIJVING)
AND alg_ruimte_verwijder is null;
v_errorhint := ' Fout bij toevoegen ruimte';
IF v_count = 0 THEN
insert into ALG_RUIMTE
(ALG_VERDIEPING_KEY
,ALG_SRTRUIMTE_KEY
,ALG_RUIMTE_NR
,ALG_RUIMTE_OMSCHRIJVING
,ALG_RUIMTE_OPMERKING
,ALG_RUIMTE_BRUTO_VLOEROPP
)
values
(v_verdieping_key
,v_srtruimte_key
,recRuimte.ALG_RUIMTE_NR
,recRuimte.ALG_RUIMTE_OMSCHRIJVING
,''
,TO_NUMBER(recRuimte.ALG_RUIMTE_BRUTO_VLOEROPP)
)
RETURNING ALG_RUIMTE_KEY
INTO v_ruimte_key;
END IF;
commit;
v_count_update := v_count_update + 1;
-- Als de ruimte al bestaat, dan nog de key ophalen, zodat we 'm hieronder kunnen gebruiken.
IF (v_ruimte_key IS NULL)
THEN
v_errorhint := ' Fout bij bepalen ruimte';
SELECT ALG_RUIMTE_KEY
INTO v_ruimte_key
FROM ALG_RUIMTE
WHERE ALG_VERDIEPING_KEY = v_verdieping_key
AND UPPER(ALG_RUIMTE_NR) = UPPER(recRuimte.ALG_RUIMTE_NR)
AND alg_ruimte_verwijder is null;
END IF;
-- ********************
-- ***RUIMTEAFDELING***
-- ********************
-- AAES#25942: koppel afdeling(en) aan ruimte; <20><>n afdeling per regel, ruimte kan meerdere keren voorkomen.
IF (recRuimte.prs_afdeling_naam IS NOT NULL)
THEN
IF (recRuimte.prs_afdeling_key IS NULL)
THEN
fac.imp_writelog (p_import_key,
'W',
v_aanduiding||' afdeling ['||recRuimte.prs_afdeling_naam||']',
'Afdeling niet gevonden'
);
ELSE
IF (recRuimte.prs_ruimteafdeling_bezetting IS NULL)
THEN
fac.imp_writelog (p_import_key,
'W',
v_aanduiding||' afdeling ['||recRuimte.prs_afdeling_naam||']',
'Fout: afdeling gevuld, bezetting leeg!'
);
ELSIF (recRuimte.prs_ruimteafdeling_bezetting > 100 OR recRuimte.prs_ruimteafdeling_bezetting < 0)
THEN
fac.imp_writelog (p_import_key,
'W',
v_aanduiding||' afdeling ['||recRuimte.prs_afdeling_naam||']',
'Ongeldige ruimtebezetting ['||TO_CHAR(recRuimte.prs_ruimteafdeling_bezetting)||'] verwacht 0 <= bezetting <= 100'
);
ELSE
BEGIN
SELECT COUNT(*), MAX(prs_ruimteafdeling_key)
INTO v_count, v_ruimteafdeling_key
FROM prs_ruimteafdeling
WHERE prs_ruimteafdeling_verwijder IS NULL
AND prs_afdeling_key = recRuimte.prs_afdeling_key
AND alg_ruimte_key = v_ruimte_key;
IF (v_count = 0)
THEN
v_errorhint := ' Fout bij toevoegen ruimtebezetting';
INSERT INTO prs_ruimteafdeling
(prs_afdeling_key
,alg_ruimte_key
,prs_ruimteafdeling_bezetting)
VALUES
(recRuimte.prs_afdeling_key
,v_ruimte_key
,recRuimte.prs_ruimteafdeling_bezetting
);
END IF;
IF (v_count = 1)
THEN
v_errorhint := ' Fout bij aanpassen ruimtebezetting';
UPDATE prs_ruimteafdeling
SET prs_ruimteafdeling_bezetting = recRuimte.prs_ruimteafdeling_bezetting
WHERE prs_ruimteafdeling_key = v_ruimteafdeling_key;
END IF;
EXCEPTION WHEN OTHERS THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR(SQLERRM, 1, 200);
v_errormsg := 'Fout tijdens verwerken ruimteafdeling ['||
recRuimte.ALG_LOCATIE_CODE||'-'||recRuimte.ALG_GEBOUW_CODE||'-'||recRuimte.ALG_VERDIEPING_VOLGNR||'-'||recRuimte.ALG_RUIMTE_NR
||'] / ['||recRuimte.PRS_AFDELING_NAAM||']';
v_errorhint := v_errorhint||': ' || oracle_err_mes;
fac.imp_writelog (p_import_key,
'E',
v_aanduiding||v_errormsg,
v_errorhint
);
commit;
END;
END IF;
END IF;
END IF;
-- *******************
-- ***FLEXKENMERKEN***
-- *******************
v_errorhint := ' Fout bij toevoegen/bijwerken flexkenmerken';
upsert_algkenmerk (v_ruimte_key, recRuimte.kenmerk_key1, recRuimte.waarde1);
upsert_algkenmerk (v_ruimte_key, recRuimte.kenmerk_key2, recRuimte.waarde2);
upsert_algkenmerk (v_ruimte_key, recRuimte.kenmerk_key3, recRuimte.waarde3);
upsert_algkenmerk (v_ruimte_key, recRuimte.kenmerk_key4, recRuimte.waarde4);
upsert_algkenmerk (v_ruimte_key, recRuimte.kenmerk_key5, recRuimte.waarde5);
EXCEPTION WHEN OTHERS THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR(SQLERRM, 1, 200);
v_errormsg := 'Fout tijdens verwerken ruimte ['||recRuimte.ALG_LOCATIE_CODE||'-'||recRuimte.ALG_GEBOUW_CODE||'-'||recRuimte.ALG_VERDIEPING_VOLGNR||'-'||recRuimte.ALG_RUIMTE_NR||']';
v_errorhint := v_errorhint||': ' || oracle_err_mes;
fac.imp_writelog (p_import_key,
'E',
v_aanduiding||v_errormsg,
v_errorhint
);
commit;
END;
END LOOP;
fac.imp_writelog (p_import_key,
'S',
'Ruimte: verwerkte regels zonder foutmelding: '||to_char(v_count_update),
''
);
fac.imp_writelog (p_import_key,
'S',
'Ruimte: verwerkte regels met foutmelding: '||to_char(v_count_tot-v_count_update),
''
);
END IF;
CLOSE cRuimte;
-- ****************
-- ***OPSTELLING***
-- ****************
OPEN cOpstelling;
v_count_update := 0;
v_count_tot := 0;
IF cOpstelling%ISOPEN THEN
LOOP
BEGIN
v_errormsg := '';
v_errorhint := '';
v_aanduiding := '';
FETCH cOpstelling INTO recOpstelling;
EXIT WHEN cOpstelling%NOTFOUND;
v_count_tot := v_count_tot + 1;
v_aanduiding := recOpstelling.RES_OPSTELLING_OMSCHRIJVING||'| ';
v_errorhint := ' Fout bij toevoegen opstelling';
select count(*)
into v_count
from RES_OPSTELLING
where RES_OPSTELLING_verwijder is null
and trim(RES_OPSTELLING_upper) = upper(trim(recOpstelling.RES_OPSTELLING_OMSCHRIJVING));
IF (v_count = 0) THEN
insert into RES_OPSTELLING
(RES_OPSTELLING_OMSCHRIJVING
)
values
(trim(recOpstelling.RES_OPSTELLING_OMSCHRIJVING)
);
END IF;
commit;
v_count_update := v_count_update + 1;
EXCEPTION WHEN OTHERS THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR(SQLERRM, 1, 200);
v_errormsg := 'Fout tijdens verwerken opstelling ['||recOpstelling.RES_OPSTELLING_OMSCHRIJVING||']';
v_errorhint := v_errorhint||': ' || oracle_err_mes;
fac.imp_writelog (p_import_key,
'E',
v_aanduiding||v_errormsg,
v_errorhint
);
commit;
END;
END LOOP;
fac.imp_writelog (p_import_key,
'S',
'Opstelling: verwerkte regels zonder foutmelding: '||to_char(v_count_update),
''
);
fac.imp_writelog (p_import_key,
'S',
'Opstelling: verwerkte regels met foutmelding: '||to_char(v_count_tot-v_count_update),
''
);
END IF;
CLOSE cOpstelling;
-- ***************
-- ***CATEGORIE***
-- ***************
OPEN cCategorie;
v_count_update := 0;
v_count_tot := 0;
IF cCategorie%ISOPEN THEN
LOOP
BEGIN
v_errormsg := '';
v_errorhint := '';
v_aanduiding := '';
FETCH cCategorie INTO recCategorie;
EXIT WHEN cCategorie%NOTFOUND;
v_count_tot := v_count_tot + 1;
v_aanduiding := recCategorie.res_discipline_omschrijving||'| ';
v_errorhint := ' Fout bij toevoegen categorie';
select count(*)
into v_count
from ins_tab_discipline
where ins_discipline_verwijder is null
and ins_discipline_module='RES'
and upper(trim(ins_discipline_omschrijving)) = upper(trim(recCategorie.res_discipline_omschrijving));
IF (v_count = 0) THEN
INSERT INTO ins_tab_discipline
(ins_discipline_module
,ins_discipline_omschrijving
,ins_discipline_verwijder
,ins_discipline_min_level)
VALUES
('RES'
,trim(recCategorie.res_discipline_omschrijving)
,to_date(null)
,3)
RETURNING ins_discipline_key
INTO v_discipline_key;
INSERT INTO res_disc_params
(res_ins_discipline_key
,res_disc_params_expire_dagen)
VALUES
(v_discipline_key
,recCategorie.res_discipline_expire_dagen
);
END IF;
commit;
v_count_update := v_count_update + 1;
EXCEPTION WHEN OTHERS THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR(SQLERRM, 1, 200);
v_errormsg := 'Fout tijdens verwerken catalogus ['||recCategorie.res_discipline_omschrijving||']';
v_errorhint := v_errorhint||': ' || oracle_err_mes;
fac.imp_writelog (p_import_key,
'E',
v_aanduiding||v_errormsg,
v_errorhint
);
commit;
END;
END LOOP;
fac.imp_writelog (p_import_key,
'S',
'Categorie: verwerkte regels zonder foutmelding: '||to_char(v_count_update),
''
);
fac.imp_writelog (p_import_key,
'S',
'Categorie: verwerkte regels met foutmelding: '||to_char(v_count_tot-v_count_update),
''
);
END IF;
CLOSE cCategorie;
-- ***************
-- ***RESRUIMTE***
-- ***************
OPEN cResRuimte;
v_count_update := 0;
v_count_tot := 0;
IF cResRuimte%ISOPEN THEN
LOOP
BEGIN
v_errormsg := '';
v_errorhint := '';
v_aanduiding := '';
FETCH cResRuimte INTO recResRuimte;
EXIT WHEN cResRuimte%NOTFOUND;
v_count_tot := v_count_tot + 1;
v_aanduiding := recResRuimte.ALG_LOCATIE_CODE||'|'||recResRuimte.ALG_GEBOUW_CODE||'|'||recResRuimte.ALG_VERDIEPING_VOLGNR||'|'||recResRuimte.ALG_RUIMTE_NR||'| ';
v_errorhint := ' Fout bij bepalen locatie';
SELECT ALG_LOCATIE_KEY
INTO v_locatie_key
FROM ALG_LOCATIE
WHERE UPPER(ALG_LOCATIE_CODE) = UPPER(recResRuimte.ALG_LOCATIE_CODE)
AND alg_locatie_verwijder is null;
v_errorhint := ' Fout bij bepalen gebouw';
SELECT ALG_GEBOUW_KEY
INTO v_gebouw_key
FROM ALG_GEBOUW
WHERE UPPER(ALG_GEBOUW_CODE) = UPPER(recResRuimte.ALG_GEBOUW_CODE)
AND ALG_LOCATIE_KEY = v_locatie_key
AND alg_gebouw_verwijder is null;
v_errorhint := ' Fout bij bepalen verdieping';
SELECT ALG_VERDIEPING_KEY, ALG_VERDIEPING_VOLGNR
INTO v_verdieping_key, v_verdieping_volgnr
FROM ALG_VERDIEPING
WHERE ALG_GEBOUW_KEY = v_gebouw_key
AND ALG_VERDIEPING_VOLGNR = recResRuimte.ALG_VERDIEPING_VOLGNR;
v_errorhint := ' Fout bij bepalen ruimte';
SELECT ALG_RUIMTE_KEY
INTO v_ruimte_key
FROM ALG_V_AANWEZIGRUIMTE
WHERE ALG_VERDIEPING_KEY = v_verdieping_key
AND ALG_RUIMTE_UPPER_NR = UPPER(recResRuimte.ALG_RUIMTE_NR);
v_errorhint := ' Fout bij bepalen catalogus ['||recResRuimte.res_discipline_omschrijving||']';
SELECT ins_discipline_key
INTO v_discipline_key
FROM RES_V_RES_CATALOGUS
WHERE ins_discipline_verwijder IS NULL
AND ins_discipline_min_level = 3
AND upper(trim(ins_discipline_omschrijving)) = upper(trim(recResRuimte.res_discipline_omschrijving));
v_errorhint := ' Fout bij bepalen opstelling ['||recResRuimte.RES_OPSTELLING_OMSCHRIJVING||']';
SELECT RES_OPSTELLING_KEY
INTO v_opstelling_key
FROM RES_OPSTELLING
WHERE UPPER(trim(RES_OPSTELLING_OMSCHRIJVING)) = UPPER(trim(recResRuimte.RES_OPSTELLING_OMSCHRIJVING))
AND RES_OPSTELLING_verwijder is null;
v_errorhint := ' Fout bij samenstellen ruimte-omschrijving';
IF (recResRuimte.RES_RUIMTE_NR IS NULL) THEN
v_ruimte_omschrijving := SUBSTR( recResRuimte.ALG_LOCATIE_CODE || '-' || recResRuimte.ALG_GEBOUW_CODE || '-' || TO_CHAR(recResRuimte.ALG_VERDIEPING_VOLGNR) || '-' || recResRuimte.ALG_RUIMTE_NR,1,40);
ELSE
v_ruimte_omschrijving := recResRuimte.RES_RUIMTE_NR;
END IF;
v_errorhint := 'Fout bij bepalen reserveerbare ruimte';
SELECT count(*)
INTO v_count
FROM RES_RUIMTE
WHERE RES_RUIMTE_UPPER = upper(v_ruimte_omschrijving)
AND res_ruimte_verwijder is null;
IF v_count = 0 THEN
v_errorhint := 'Fout bij toevoegen reserveerbare ruimte';
INSERT INTO RES_RUIMTE
(RES_RUIMTE_NR
,RES_RUIMTE_UPPER
,RES_RUIMTE_PRIJS
,RES_RUIMTE_OMSCHRIJVING
,RES_DISCIPLINE_KEY
)
VALUES
(v_ruimte_omschrijving
,upper(v_ruimte_omschrijving)
,recResRuimte.RES_RUIMTE_PRIJS
,recResRuimte.RES_RUIMTE_OMSCHRIJVING
,v_discipline_key
)
RETURNING RES_RUIMTE_KEY
INTO v_res_ruimte_key;
v_errorhint := 'Fout bij koppelen ruimte en reserveerbare ruimte';
insert into RES_ALG_RUIMTE
(RES_RUIMTE_KEY
,ALG_RUIMTE_KEY
)
values
(v_res_ruimte_key
,v_ruimte_key
);
ELSE
SELECT RES_RUIMTE_KEY
INTO v_res_ruimte_key
FROM RES_RUIMTE
WHERE RES_RUIMTE_UPPER = upper(v_ruimte_omschrijving)
AND res_ruimte_verwijder IS NULL;
END IF;
v_errorhint := 'Fout bij koppelen opstelling en reserveerbare ruimte';
insert into RES_RUIMTE_OPSTELLING
(RES_RUIMTE_KEY
,RES_OPSTELLING_KEY
,RES_RUIMTE_OPSTEL_BEZOEKERS
)
values
(v_res_ruimte_key
,v_opstelling_key
,NVL(recResRuimte.RES_RUIMTE_OPSTEL_BEZOEKERS, 0)
);
commit;
v_count_update := v_count_update + 1;
EXCEPTION WHEN OTHERS THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR(SQLERRM, 1, 200);
v_errormsg := 'Reserveerbare ruimte ['||recResRuimte.RES_RUIMTE_OMSCHRIJVING||']';
v_errorhint := v_errorhint||': ' || oracle_err_mes;
fac.imp_writelog (p_import_key,
'E',
v_aanduiding||v_errormsg,
v_errorhint
);
commit;
END;
END LOOP;
fac.imp_writelog (p_import_key,
'S',
'Res. ruimte: verwerkte regels zonder foutmelding: '||to_char(v_count_update),
''
);
fac.imp_writelog (p_import_key,
'S',
'Res. ruimte: verwerkte regels met foutmelding: '||to_char(v_count_tot-v_count_update),
''
);
END IF;
CLOSE cResRuimte;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_mes := SUBSTR (SQLERRM, 1, 150);
v_errormsg := '(ORACLE error ' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key,
'E',
'Fout tijdens importeren van onroerend goed (verdieping en ruimte) ',
''
);
END fmhw_update_ruimten;
/
*/
-- CAD sync-view, de orginele ruimtenummers landen in een kenmerk bij de ruimte.
CREATE OR REPLACE VIEW fmhw_v_sync_alg_ruimte
(
alg_ruimte_key,
alg_verdieping_key,
cadlabel
)
AS
SELECT r.alg_ruimte_key,
r.alg_verdieping_key,
COALESCE (k.alg_onrgoedkenmerk_waarde, r.alg_ruimte_nr) cadlabel
FROM alg_ruimte r, alg_onrgoedkenmerk k
WHERE r.alg_ruimte_key = k.alg_onrgoed_key AND k.alg_kenmerk_key = 1000;
-- En dan volgen nu de werkplekthema`s per ministerie (res_discipline).
CREATE OR REPLACE VIEW FMHW_V_THEMA_DEEL_RES_BUZA
(
FCLT_F_DATUM,
INS_DEEL_KEY,
MIN_VAN,
MAX_TOT,
WAARDE1,
WAARDE,
WAARDE3
)
AS
SELECT c.fclt_f_datum,
c.ins_deel_key,
c.min_van,
c.max_tot,
c.waarde1,
c.waarde,
c.waarde3
FROM cad_v_thema_deel_res_datum c, res_v_aanwezigdeel r
WHERE c.ins_deel_key = r.res_ins_deel_key
AND r.res_discipline_key = 22;
CREATE OR REPLACE VIEW FMHW_V_THEMA_DEEL_RES_BZK
(
FCLT_F_DATUM,
INS_DEEL_KEY,
MIN_VAN,
MAX_TOT,
WAARDE1,
WAARDE,
WAARDE3
)
AS
SELECT c.fclt_f_datum,
c.ins_deel_key,
c.min_van,
c.max_tot,
c.waarde1,
c.waarde,
c.waarde3
FROM cad_v_thema_deel_res_datum c, res_v_aanwezigdeel r
WHERE c.ins_deel_key = r.res_ins_deel_key
AND r.res_discipline_key = 21;
CREATE OR REPLACE VIEW FMHW_V_THEMA_DEEL_RES_FIN
(
FCLT_F_DATUM,
INS_DEEL_KEY,
MIN_VAN,
MAX_TOT,
WAARDE1,
WAARDE,
WAARDE3
)
AS
SELECT c.fclt_f_datum,
c.ins_deel_key,
c.min_van,
c.max_tot,
c.waarde1,
c.waarde,
c.waarde3
FROM cad_v_thema_deel_res_datum c, res_v_aanwezigdeel r
WHERE c.ins_deel_key = r.res_ins_deel_key
AND r.res_discipline_key = 23;
CREATE OR REPLACE VIEW FMHW_V_THEMA_DEEL_RES_IENW
(
FCLT_F_DATUM,
INS_DEEL_KEY,
MIN_VAN,
MAX_TOT,
WAARDE1,
WAARDE,
WAARDE3
)
AS
SELECT c.fclt_f_datum,
c.ins_deel_key,
c.min_van,
c.max_tot,
c.waarde1,
c.waarde,
c.waarde3
FROM cad_v_thema_deel_res_datum c, res_v_aanwezigdeel r
WHERE c.ins_deel_key = r.res_ins_deel_key
AND r.res_discipline_key = 24;
CREATE OR REPLACE VIEW FMHW_V_THEMA_DEEL_RES_JENV
(
FCLT_F_DATUM,
INS_DEEL_KEY,
MIN_VAN,
MAX_TOT,
WAARDE1,
WAARDE,
WAARDE3
)
AS
SELECT c.fclt_f_datum,
c.ins_deel_key,
c.min_van,
c.max_tot,
c.waarde1,
c.waarde,
c.waarde3
FROM cad_v_thema_deel_res_datum c, res_v_aanwezigdeel r
WHERE c.ins_deel_key = r.res_ins_deel_key
AND r.res_discipline_key = 25;
CREATE OR REPLACE VIEW FMHW_V_THEMA_DEEL_RES_SZW
(
FCLT_F_DATUM,
INS_DEEL_KEY,
MIN_VAN,
MAX_TOT,
WAARDE1,
WAARDE,
WAARDE3
)
AS
SELECT c.fclt_f_datum,
c.ins_deel_key,
c.min_van,
c.max_tot,
c.waarde1,
c.waarde,
c.waarde3
FROM cad_v_thema_deel_res_datum c, res_v_aanwezigdeel r
WHERE c.ins_deel_key = r.res_ins_deel_key
AND r.res_discipline_key = 26;
CREATE OR REPLACE VIEW FMHW_V_THEMA_DEEL_RES_VWS
(
FCLT_F_DATUM,
INS_DEEL_KEY,
MIN_VAN,
MAX_TOT,
WAARDE1,
WAARDE,
WAARDE3
)
AS
SELECT c.fclt_f_datum,
c.ins_deel_key,
c.min_van,
c.max_tot,
c.waarde1,
c.waarde,
c.waarde3
FROM cad_v_thema_deel_res_datum c, res_v_aanwezigdeel r
WHERE c.ins_deel_key = r.res_ins_deel_key
AND r.res_discipline_key = 27;
------ payload end ------
SET DEFINE OFF
BEGIN adm.systrackscriptId ('$Id$', 0); END;
/
COMMIT;
SET ECHO OFF
SPOOL OFF
SET DEFINE ON
PROMPT Logfile of this upgrade is: &fcltlogfile