diff --git a/onces/ARAI/arai16.sql b/onces/ARAI/arai16.sql new file mode 100644 index 000000000..f268153e3 --- /dev/null +++ b/onces/ARAI/arai16.sql @@ -0,0 +1,542 @@ +-- 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