Files
Customer/onces/ARAI/arai16.sql
Marcel Bourseau 28e4720b0f ARAI#31599: -
svn path=/Customer/; revision=25714
2015-07-24 12:16:27 +00:00

543 lines
24 KiB
SQL

-- Customer specific once-script ARAI.
--
-- (c) 2013 SG|facilitor bv
-- $Revision$
-- $Id$
--
-- Support: +31 53 4800700
SET ECHO ON
SPOOL arai16.lst
SET DEFINE OFF
------------------------------------------------------------------------------------------------------------------------------------------
-- Nieuwe discipline voor gebouwinspecties: gebouwobjecten
INSERT INTO ins_tab_discipline (ins_discipline_module, ins_discipline_omschrijving)
SELECT 'INS','Gebouwobjecten' FROM DUAL;
INSERT INTO ins_disc_params (ins_discipline_key, ins_disc_params_type)
SELECT MAX(ins_discipline_key),0 FROM ins_tab_discipline;
-- Dummy view om domein alvast te kunnen inserten...
CREATE OR REPLACE FORCE VIEW arai_v_bedrijveninfo
(
prs_bedrijf_key,
prs_bedrijf_naam,
prs_bedrijf_telefoon,
prs_bedrijf_info,
prs_bedrijf_verwijder
)
AS SELECT 1,'X','0','INFO', NULL FROM DUAL;
-- Kenmerk Leverancier (via domein)
INSERT INTO fac_kenmerkdomein (fac_kenmerkdomein_module, fac_kenmerkdomein_omschrijving, fac_kenmerkdomein_objectnaam, fac_kenmerkdomein_kolomnaam, fac_kenmerkdomein_kolomtxt, fac_kenmerkdomein_xmlnode, fac_kenmerkdomein_verval)
SELECT 'INS', 'Leverancier', 'ARAI_V_BEDRIJVENINFO', 'PRS_BEDRIJF_KEY', 'PRS_BEDRIJF_INFO', 'bedrijf', 'PRS_BEDRIJF_VERWIJDER' FROM DUAL;
INSERT INTO ins_srtkenmerk (ins_srtkenmerk_omschrijving, ins_srtkenmerk_kenmerktype, fac_kenmerkdomein_key)
SELECT 'Leverancier', 'S', MAX(fac_kenmerkdomein_key) from fac_kenmerkdomein;
INSERT INTO ins_kenmerk (ins_srtkenmerk_key, ins_srtinstallatie_key, ins_kenmerk_niveau, ins_kenmerk_volgnummer, ins_kenmerk_bewerkniveau, ins_kenmerk_groep)
SELECT MAX(sk.ins_srtkenmerk_key), MAX(d.ins_discipline_key), 'D', 100, 'D', 0 FROM ins_srtkenmerk sk, ins_tab_discipline d;
-- Kenmerk Onderhoudspartij (via domein)
--INSERT INTO fac_kenmerkdomein (fac_kenmerkdomein_module, fac_kenmerkdomein_omschrijving, fac_kenmerkdomein_objectnaam, fac_kenmerkdomein_kolomnaam, fac_kenmerkdomein_kolomtxt, fac_kenmerkdomein_xmlnode, fac_kenmerkdomein_verval)
--SELECT 'INS', 'Onderhoudspartij', 'ARAI_V_BEDRIJVENINFO', 'PRS_BEDRIJF_KEY', 'PRS_BEDRIJF_INFO', 'bedrijf', 'PRS_BEDRIJF_VERWIJDER' FROM DUAL;
INSERT INTO ins_srtkenmerk (ins_srtkenmerk_omschrijving, ins_srtkenmerk_kenmerktype, fac_kenmerkdomein_key)
SELECT 'Onderhoudspartij', 'S', MAX(fac_kenmerkdomein_key) from fac_kenmerkdomein;
INSERT INTO ins_kenmerk (ins_srtkenmerk_key, ins_srtinstallatie_key, ins_kenmerk_niveau, ins_kenmerk_volgnummer, ins_kenmerk_bewerkniveau, ins_kenmerk_groep)
SELECT MAX(sk.ins_srtkenmerk_key), MAX(d.ins_discipline_key), 'D', 100, 'D', 0 FROM ins_srtkenmerk sk, ins_tab_discipline d;
-- Kenmerk Merk
INSERT INTO ins_srtkenmerk (ins_srtkenmerk_omschrijving, ins_srtkenmerk_kenmerktype, ins_srtkenmerk_lengte)
SELECT 'Merk', 'C', 40 from dual;
INSERT INTO ins_kenmerk (ins_srtkenmerk_key, ins_srtinstallatie_key, ins_kenmerk_niveau, ins_kenmerk_volgnummer, ins_kenmerk_bewerkniveau, ins_kenmerk_groep)
SELECT MAX(sk.ins_srtkenmerk_key), MAX(d.ins_discipline_key), 'D', 120, 'D', 0 FROM ins_srtkenmerk sk, ins_tab_discipline d;
-- Kenmerk Bouwjaar
INSERT INTO ins_srtkenmerk (ins_srtkenmerk_omschrijving, ins_srtkenmerk_kenmerktype, ins_srtkenmerk_lengte)
SELECT 'Bouwjaar', 'C', 10 from dual;
INSERT INTO ins_kenmerk (ins_srtkenmerk_key, ins_srtinstallatie_key, ins_kenmerk_niveau, ins_kenmerk_volgnummer, ins_kenmerk_bewerkniveau, ins_kenmerk_groep)
SELECT MAX(sk.ins_srtkenmerk_key), MAX(d.ins_discipline_key), 'D', 125, 'D', 0 FROM ins_srtkenmerk sk, ins_tab_discipline d;
-- Kenmerk Serienummer
INSERT INTO ins_srtkenmerk (ins_srtkenmerk_omschrijving, ins_srtkenmerk_kenmerktype, ins_srtkenmerk_lengte)
SELECT 'Serienummer', 'C', 25 from dual;
INSERT INTO ins_kenmerk (ins_srtkenmerk_key, ins_srtinstallatie_key, ins_kenmerk_niveau, ins_kenmerk_volgnummer, ins_kenmerk_bewerkniveau, ins_kenmerk_groep)
SELECT MAX(sk.ins_srtkenmerk_key), MAX(d.ins_discipline_key), 'D', 130, 'D', 0 FROM ins_srtkenmerk sk, ins_tab_discipline d;
-- Kenmerk Unit
INSERT INTO ins_srtkenmerk (ins_srtkenmerk_omschrijving, ins_srtkenmerk_kenmerktype, ins_srtkenmerk_lengte)
SELECT 'Unit', 'C', 25 from dual;
INSERT INTO ins_kenmerk (ins_srtkenmerk_key, ins_srtinstallatie_key, ins_kenmerk_niveau, ins_kenmerk_volgnummer, ins_kenmerk_bewerkniveau, ins_kenmerk_groep)
SELECT MAX(sk.ins_srtkenmerk_key), MAX(d.ins_discipline_key), 'D', 135, 'D', 0 FROM ins_srtkenmerk sk, ins_tab_discipline d;
-- Kenmerk Type
INSERT INTO ins_srtkenmerk (ins_srtkenmerk_omschrijving, ins_srtkenmerk_kenmerktype, ins_srtkenmerk_lengte)
SELECT 'Type', 'C', 40 from dual;
INSERT INTO ins_kenmerk (ins_srtkenmerk_key, ins_srtinstallatie_key, ins_kenmerk_niveau, ins_kenmerk_volgnummer, ins_kenmerk_bewerkniveau, ins_kenmerk_groep)
SELECT MAX(sk.ins_srtkenmerk_key), MAX(d.ins_discipline_key), 'D', 140, 'D', 0 FROM ins_srtkenmerk sk, ins_tab_discipline d;
----
-- Als Facilitor 2015.1 nog niet is ge-released, dan onderstaande UPGRADE alvast doen, zodat de import FIP inspectie werkt...
ALTER TABLE fac_imp_inspectie MODIFY ins_srtcontrole_periode VARCHAR2(7);
ALTER TABLE fac_imp_inspectie ADD ins_srtcontrole_mode VARCHAR2(1);
ALTER TABLE fac_imp_inspectie ADD ins_srtcontrole_eenheid VARCHAR2(1);
ALTER TABLE fac_imp_inspectie ADD ins_srtcontrole_bits VARCHAR2(4);
------------- INSPECTIEDEFINITIES -------------------
CREATE OR REPLACE PROCEDURE fac_import_inspectie (p_import_key IN NUMBER)
IS
c_delim VARCHAR2 (1) := ';';
v_newline VARCHAR2 (1000); -- 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_tot NUMBER (10);
v_count_import NUMBER (10);
v_ongeldig NUMBER (1);
v_aanduiding VARCHAR2 (200);
-- De importvelden
v_ins_discipline_omschrijving VARCHAR2 (255); -- C30
v_ins_srtgroep_omschrijving VARCHAR2 (255); -- C60
v_ins_srtdeel_code VARCHAR2 (255); -- C10
v_ins_srtcontrole_omschrijving VARCHAR2 (255); -- C60
v_ins_srtcontrole_info VARCHAR2 (1000); -- C320
v_ins_srtcontrole_periode VARCHAR2 (255); -- N6,2
v_ins_srtcontrole_mode VARCHAR2 (255); -- N1: 0=moment-modus of 1=interval-modus
v_ins_srtcontrole_eenheid VARCHAR2 (255); -- N1: 0=uurlijks, 1=dagelijks, 2=wekelijk, 3=maandelijk, 4=jaarlijks, null=niet
v_ins_srtcontrole_bits VARCHAR2 (255); -- N4: details, afhankelijk van de mode (mag best null zijn)
-- Overige velden:
CURSOR c1
IS
SELECT *
FROM fac_imp_file
WHERE fac_import_key = p_import_key
ORDER BY fac_imp_file_index;
BEGIN
-- Eerst opruiming
DELETE FROM fac_imp_inspectie;
v_count_tot := 0;
v_count_import := 0;
header_is_valid := 0;
COMMIT;
FOR rec1 IN c1
LOOP
BEGIN
v_newline := rec1.fac_imp_file_line;
v_errormsg := 'Fout opvragen te importeren rij';
v_aanduiding := '';
v_ongeldig := 0;
-- Lees alle veldwaarden
fac.imp_getfield (v_newline, c_delim, v_ins_discipline_omschrijving);
fac.imp_getfield (v_newline, c_delim, v_ins_srtgroep_omschrijving);
fac.imp_getfield (v_newline, c_delim, v_ins_srtdeel_code);
fac.imp_getfield (v_newline, c_delim, v_ins_srtcontrole_omschrijving);
fac.imp_getfield (v_newline, c_delim, v_ins_srtcontrole_info);
fac.imp_getfield (v_newline, c_delim, v_ins_srtcontrole_periode);
fac.imp_getfield (v_newline, c_delim, v_ins_srtcontrole_eenheid);
fac.imp_getfield (v_newline, c_delim, v_ins_srtcontrole_mode);
fac.imp_getfield (v_newline, c_delim, v_ins_srtcontrole_bits);
v_aanduiding :=
'|'
|| v_ins_discipline_omschrijving
|| '|'
|| v_ins_srtgroep_omschrijving
|| '|'
|| v_ins_srtdeel_code
|| '|'
|| v_ins_srtcontrole_omschrijving
|| '| ';
-- Ik controleer of ik een geldige header heb, dat is: in de juiste kolommen
-- de juiste kolomkop. Ik controleer daarbij ALLE kolommen!
-- Ik negeer alles totdat ik een geldige header ben gepasseerd.
IF (header_is_valid = 0)
THEN
IF UPPER (v_ins_discipline_omschrijving) = 'DISCIPLINEOMSCHRIJVING'
AND UPPER (v_ins_srtgroep_omschrijving) = 'GROEPSOORTOMSCHRIJVING'
AND UPPER (v_ins_srtdeel_code) = 'OBJECTSOORTCODE'
AND UPPER (v_ins_srtcontrole_omschrijving) = 'CONTROLE OMSCHRIJVING'
AND UPPER (v_ins_srtcontrole_info) = 'CONTROLE INFORMATIE'
AND UPPER (v_ins_srtcontrole_periode) = 'CONTROLE PERIODE'
AND UPPER (v_ins_srtcontrole_eenheid) = 'EENHEID'
AND UPPER (v_ins_srtcontrole_mode) = 'MODE'
THEN
header_is_valid := 1;
END IF;
ELSE
v_count_tot := v_count_tot + 1;
-- Controleer alle veldwaarden
v_ins_discipline_omschrijving := TRIM (v_ins_discipline_omschrijving);
IF LENGTH (v_ins_discipline_omschrijving) > 30
THEN
v_ins_discipline_omschrijving :=
SUBSTR (TRIM (v_ins_discipline_omschrijving), 1, 30);
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding,
'Disciplineomschrijving wordt afgebroken tot ['
|| v_ins_discipline_omschrijving
|| ']');
END IF;
--
v_ins_srtgroep_omschrijving := TRIM (v_ins_srtgroep_omschrijving);
IF LENGTH (v_ins_srtgroep_omschrijving) > 60
THEN
v_ins_srtgroep_omschrijving :=
SUBSTR (TRIM (v_ins_srtgroep_omschrijving), 1, 60);
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding,
'Groepsoortomschrijving wordt afgebroken tot ['
|| v_ins_srtgroep_omschrijving
|| ']');
END IF;
--
v_ins_srtdeel_code := TRIM (v_ins_srtdeel_code);
IF LENGTH (v_ins_srtdeel_code) > 10
THEN
v_ins_srtdeel_code := SUBSTR (TRIM (v_ins_srtdeel_code), 1, 10);
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding,
'Objectsoortcode wordt afgebroken tot [' || v_ins_srtdeel_code || ']');
END IF;
--
v_ins_srtcontrole_omschrijving := TRIM (v_ins_srtcontrole_omschrijving);
IF LENGTH (v_ins_srtcontrole_omschrijving) > 60
THEN
v_ins_srtcontrole_omschrijving :=
SUBSTR (TRIM (v_ins_srtcontrole_omschrijving), 1, 60);
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding,
'Controle omschrijving wordt afgebroken tot ['
|| v_ins_srtcontrole_omschrijving
|| ']');
END IF;
--
v_ins_srtcontrole_info := TRIM (v_ins_srtcontrole_info);
IF LENGTH (v_ins_srtcontrole_info) > 320
THEN
v_ins_srtcontrole_info := SUBSTR (TRIM (v_ins_srtcontrole_info), 1, 320);
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding,
'Controle informatie wordt afgebroken tot ['
|| v_ins_srtcontrole_info
|| ']');
END IF;
--
v_ins_srtcontrole_periode := TRIM (v_ins_srtcontrole_periode);
IF LENGTH (v_ins_srtcontrole_periode) > 7
THEN
v_ins_srtcontrole_periode := SUBSTR (TRIM (v_ins_srtcontrole_periode), 1, 7);
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding,
'Controle periode wordt afgebroken tot ['
|| v_ins_srtcontrole_periode
|| ']');
END IF;
--
v_ins_srtcontrole_eenheid := TRIM (v_ins_srtcontrole_eenheid);
IF LENGTH (v_ins_srtcontrole_eenheid) > 1
THEN
v_ins_srtcontrole_eenheid := SUBSTR (TRIM (v_ins_srtcontrole_eenheid), 1, 1);
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding,
'Controle eenheid wordt afgebroken tot ['
|| v_ins_srtcontrole_eenheid
|| ']');
END IF;
--
v_ins_srtcontrole_mode := TRIM (v_ins_srtcontrole_mode);
IF LENGTH (v_ins_srtcontrole_mode) > 1
THEN
v_ins_srtcontrole_mode := SUBSTR (TRIM (v_ins_srtcontrole_mode), 1, 1);
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding,
'Controle Mode wordt afgebroken tot ['
|| v_ins_srtcontrole_mode
|| ']');
END IF;
--
v_ins_srtcontrole_bits := TRIM (v_ins_srtcontrole_bits);
IF LENGTH (v_ins_srtcontrole_bits) > 4
THEN
v_ins_srtcontrole_bits := SUBSTR (TRIM (v_ins_srtcontrole_bits), 1, 4);
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding,
'Controle Bits wordt afgebroken tot ['
|| v_ins_srtcontrole_bits
|| ']');
END IF;
-- Insert geformatteerde import record
IF v_ongeldig = 0
THEN
BEGIN
INSERT INTO fac_imp_inspectie (ins_discipline_omschrijving,
ins_srtgroep_omschrijving,
ins_srtdeel_code,
ins_srtcontrole_omschrijving,
ins_srtcontrole_info,
ins_srtcontrole_periode,
ins_srtcontrole_eenheid,
ins_srtcontrole_mode,
ins_srtcontrole_bits)
VALUES (v_ins_discipline_omschrijving,
v_ins_srtgroep_omschrijving,
v_ins_srtdeel_code,
v_ins_srtcontrole_omschrijving,
v_ins_srtcontrole_info,
v_ins_srtcontrole_periode,
v_ins_srtcontrole_eenheid,
v_ins_srtcontrole_mode,
v_ins_srtcontrole_bits
);
v_count_import := v_count_import + 1;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (
p_import_key,
'E',
v_aanduiding || v_errormsg,
'Fout bij toevoegen regel aan importtabel FAC_IMP_INSPECTIE.');
END;
END IF;
END IF;
END;
END LOOP;
IF (header_is_valid = 0)
THEN
fac.imp_writelog (p_import_key,
'E',
'Ongeldig importbestand',
'Geen header of header niet volgens specificatie!');
ELSE
fac.imp_writelog (
p_import_key,
'S',
'Inspectie controles: aantal ingelezen importregels: ' || TO_CHAR (v_count_tot),
'');
fac.imp_writelog (
p_import_key,
'S',
'Inspectie controles: aantal ongeldige niet ingelezen importregels: '
|| TO_CHAR (v_count_tot - v_count_import),
'');
END IF;
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg := 'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key,
'E',
v_errormsg,
'Inleesproces inspecties afgebroken!');
END fac_import_inspectie;
/
CREATE OR REPLACE PROCEDURE fac_update_inspectie (p_import_key IN NUMBER)
AS
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
header_is_valid NUMBER;
v_count_error NUMBER (10);
v_count NUMBER (10);
v_count_tot NUMBER (10);
v_count_import NUMBER (10);
v_ongeldig NUMBER (1);
v_aanduiding VARCHAR2 (200);
v_errorhint VARCHAR2 (1000);
v_ins_srtinstallatie_key NUMBER (10);
v_ins_srtcontrole_niveau VARCHAR (1);
CURSOR c_inspecties
IS
SELECT * FROM fac_imp_inspectie;
-- MAIN
BEGIN
FOR rec_ins IN c_inspecties
LOOP
BEGIN
v_count_tot := v_count_tot + 1;
v_aanduiding :=
rec_ins.ins_discipline_omschrijving
|| ' - '
|| rec_ins.ins_srtgroep_omschrijving
|| '-'
|| rec_ins.ins_srtdeel_code;
v_errorhint := 'Fout bij bepalen discipline';
IF rec_ins.ins_discipline_omschrijving IS NULL
THEN
fac.imp_writelog (
p_import_key,
'E',
v_aanduiding,
'Discipline mag niet leeg zijn: inspectie wordt niet toegevoegd.');
ELSE
SELECT ins_discipline_key, 'D'
INTO v_ins_srtinstallatie_key, v_ins_srtcontrole_niveau
FROM ins_tab_discipline
WHERE UPPER (ins_discipline_omschrijving) =
UPPER (rec_ins.ins_discipline_omschrijving)
AND ins_discipline_module = 'INS'
AND ins_discipline_verwijder IS NULL;
IF rec_ins.ins_srtgroep_omschrijving IS NOT NULL
THEN
SELECT ins_srtgroep_key, 'G'
INTO v_ins_srtinstallatie_key, v_ins_srtcontrole_niveau
FROM ins_srtgroep
WHERE UPPER (ins_srtgroep_omschrijving) =
UPPER (rec_ins.ins_srtgroep_omschrijving)
AND ins_srtgroep_module = 'INS'
AND ins_srtgroep_verwijder IS NULL
AND ins_discipline_key = v_ins_srtinstallatie_key;
IF rec_ins.ins_srtdeel_code IS NOT NULL
THEN
SELECT ins_srtdeel_key, 'S'
INTO v_ins_srtinstallatie_key, v_ins_srtcontrole_niveau
FROM ins_srtdeel
WHERE UPPER (ins_srtdeel_code) = UPPER (rec_ins.ins_srtdeel_code)
AND ins_srtdeel_module = 'INS'
AND ins_srtdeel_verwijder IS NULL
AND ins_srtgroep_key = v_ins_srtinstallatie_key;
END IF;
END IF;
IF rec_ins.ins_srtcontrole_omschrijving IS NOT NULL
AND rec_ins.ins_srtcontrole_periode IS NOT NULL
AND rec_ins.ins_srtcontrole_eenheid IS NOT NULL
AND rec_ins.ins_srtcontrole_mode IS NOT NULL
THEN
INSERT INTO ins_srtcontrole (ins_srtinstallatie_key,
ins_srtcontrole_niveau,
ins_srtcontrole_omschrijving,
ins_srtcontrole_info,
ins_srtcontrole_periode,
ins_srtcontrole_eenheid,
ins_srtcontrole_mode
)
VALUES (v_ins_srtinstallatie_key,
v_ins_srtcontrole_niveau,
rec_ins.ins_srtcontrole_omschrijving,
rec_ins.ins_srtcontrole_info,
rec_ins.ins_srtcontrole_periode,
rec_ins.ins_srtcontrole_eenheid,
rec_ins.ins_srtcontrole_mode
);
ELSE
fac.imp_writelog (
p_import_key,
'E',
v_aanduiding,
'Controle omschrijving en/of Controle Periode mag niet leeg zijn: inspectie wordt niet toegevoegd.');
END IF;
END IF;
EXCEPTION
WHEN OTHERS
THEN
v_count_error := v_count_error + 1;
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := 'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key,
'E',
v_aanduiding || v_errormsg,
v_errorhint);
COMMIT;
END;
END LOOP;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 150);
v_errormsg :=
v_errormsg || 'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key,
'E',
'Importproces inspecties afgebroken!',
v_errormsg);
END fac_update_inspectie;
/
------------------------------------------------------------------------------------------------------------------------------------------
BEGIN adm.systrackscriptId('$Id$'); END;
/
commit;
SPOOL OFF
@arai.sql