From 6efe1178cd678d07d94837b8c5045bce2da14660 Mon Sep 17 00:00:00 2001 From: Arthur Egberink Date: Mon, 13 Dec 2021 19:08:05 +0000 Subject: [PATCH] YFTH#66306 -- Oplevering asset management svn path=/Customer/trunk/; revision=54141 --- YFTH/yfth.sql | 1209 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 1209 insertions(+) diff --git a/YFTH/yfth.sql b/YFTH/yfth.sql index 179df78c9..2033cad96 100644 --- a/YFTH/yfth.sql +++ b/YFTH/yfth.sql @@ -568,6 +568,71 @@ AS 'FatClient B'), 'Normaal')) waarde FROM ins_deel d; + +CREATE OR REPLACE VIEW yfth_v_thema_wpafd +( + ins_deel_key, + waarde, + waarde_key +) +AS + SELECT x.ins_deel_key, + DECODE (y.aantal, + NULL, '[Leegstand]', + 1, SUBSTR (y.fac_usrdata_omschr, 1, 60)), + DECODE (y.aantal, NULL, -1, 1, y.fac_usrdata_key, NULL) + FROM (SELECT d.ins_deel_key + FROM ins_deel d + WHERE d.ins_srtdeel_key = 61 -- Werkplekken + ) x + LEFT JOIN + ( SELECT kd.ins_deel_key, + MIN (ud.fac_usrdata_omschr) fac_usrdata_omschr, + MIN (ud.fac_usrdata_key) fac_usrdata_key, + COUNT (ud.fac_usrdata_key) aantal + FROM ins_kenmerkdeel kd, + ins_kenmerk k, + ins_srtkenmerk sk, + fac_usrdata ud + WHERE kd.ins_kenmerk_key = k.ins_kenmerk_key + AND k.ins_srtkenmerk_key = sk.ins_srtkenmerk_key + AND sk.ins_srtkenmerk_omschrijving = 'Werkplekafdeling' + AND ud.fac_usrdata_key = + FAC.safe_to_number (kd.ins_kenmerkdeel_waarde) + GROUP BY kd.ins_deel_key) y + ON x.ins_deel_key = y.ins_deel_key + UNION ALL + SELECT NULL, SUBSTR (ud.fac_usrdata_omschr, 1, 60), ud.fac_usrdata_key + FROM fac_usrdata ud, fac_usrtab ut + WHERE ud.fac_usrtab_key = ut.fac_usrtab_key + AND ut.fac_usrtab_omschrijving = 'Werkplekafdeling' + AND NOT EXISTS + (SELECT 1 + FROM ins_kenmerkdeel kd, + ins_kenmerk k, + ins_srtkenmerk sk + WHERE kd.ins_kenmerk_key = k.ins_kenmerk_key + AND k.ins_srtkenmerk_key = sk.ins_srtkenmerk_key + AND sk.ins_srtkenmerk_omschrijving = + 'Werkplekafdeling' + AND ud.fac_usrdata_key = + FAC.safe_to_number (kd.ins_kenmerkdeel_waarde)); + +-- Rapportage met werkplek informatie +CREATE OR REPLACE VIEW yfth_v_werkplekafdeling +AS + SELECT alg_gebouw_omschrijving, + alg_verdieping_omschrijving, + alg_ruimte_nr, + ins_deel_omschrijving, + waarde, + DECODE (flx.getflex('INS' , 1, dg.ins_deel_key), 1, 'Fat client' , + DECODE (flx.getflex('INS' , 121, dg.ins_deel_key), 1, 'Thin client', + DECODE (flx.getflex('INS' , 122, dg.ins_deel_key), 1, 'Docking', NULL))) ict_wp, + DECODE (flx.getflex('INS' , 22, dg.ins_deel_key), 1, 'Zit/Sta', 'Normaal') fac_wp + FROM yfth_v_thema_wpafd t, ins_v_deel_gegevens dg + WHERE t.ins_deel_key = dg.ins_deel_key + -- -- Reverse billing zoals bij Schiphol -- @@ -2747,6 +2812,1150 @@ AS AND UPPER (r.fac_usrrap_view_name) = 'YFTH_V_FROZEN_FACT' AND sn.fac_srtnotificatie_code = 'CUST02'; + +-- Asset beheer en in de toekomst MJOB +CREATE OR REPLACE PROCEDURE yfth_import_assets (p_import_key IN NUMBER, p_type IN VARCHAR2) +AS + c_fielddelimitor VARCHAR2 (1) := ';'; + v_newline VARCHAR2 (4000); -- Input line + v_errormsg VARCHAR2 (1000); + v_errorhint VARCHAR2 (1000); + oracle_err_num NUMBER; + oracle_err_mes VARCHAR2 (200); + header_is_valid NUMBER; + v_index NUMBER; + v_count NUMBER; + v_counter NUMBER; + v_odd NUMBER; + + + v_ongeldig NUMBER (1); + v_mode NUMBER (1); + v_aanduiding VARCHAR2 (200); + v_all_null BOOLEAN; + v_count_error NUMBER (10); + v_count_tot NUMBER (10); + v_count_import NUMBER (10); + + -- De importvelden: + v_alg_ruimte_txt VARCHAR2(100); + v_alg_ruimte_nr VARCHAR2(100); + v_alg_ruimte_key NUMBER; + v_alg_gebouw_txt VARCHAR2(100); + v_ins_deel_aanmaak_txt VARCHAR2(100); + v_ins_deel_aantal_txt VARCHAR2(100); + v_ins_deel_eenheid VARCHAR2(100); + v_ins_deel_omschrijving VARCHAR2(100); + v_ins_deel_opmerking VARCHAR2(1000); + v_ins_srtcontrole_periode_txt VARCHAR2(100); + v_ins_srtcontrole_prijs_txt VARCHAR2(100); + v_ins_srtdeel_code VARCHAR2(100); + v_ins_srtdeel_omschrijving VARCHAR2(100); + v_ins_deel_percentage NUMBER; + v_ins_srtcontrole_periode NUMBER; + v_kenmerk1 VARCHAR2(1000); + v_kenmerk2 VARCHAR2(1000); + v_kenmerk3 VARCHAR2(1000); + v_kenmerk4 VARCHAR2(1000); + v_kenmerk5 VARCHAR2(1000); + v_kenmerk6 VARCHAR2(1000); + v_kenmerk7 VARCHAR2(1000); + v_kenmerk8 VARCHAR2(1000); + v_kenmerk9 VARCHAR2(1000); + v_kenmerk10 VARCHAR2(1000); + v_kenmerk11 VARCHAR2(1000); + v_dumm NUMBER (10,2); + v_ins_deel_aanmaak DATE; + v_ins_deel_startjaar DATE; + v_ins_deel_aantal NUMBER; + v_ins_srtcontrole_prijs NUMBER(10,2); + v_alg_locatie_code VARCHAR2(20); + v_alg_gebouw_code VARCHAR2(20); + v_alg_verdieping_volgnr NUMBER; + + v_srtk_component_key NUMBER; + v_srtk_fabrikant_key NUMBER; + v_srtk_type_key NUMBER; + v_srtk_kenmerken_key NUMBER; + v_srtk_levensduur_key NUMBER; + v_srtk_opmerkingen_key NUMBER; + v_srtk_conditie_key NUMBER; + v_srtk_huidige_c_key NUMBER; + v_srtk_gewenste_c_key NUMBER; + v_srtk_a_opm_key NUMBER; + v_srtk_ramingsbedrag_key NUMBER; + v_srtk_toelichting_key NUMBER; + + v_srtk_code_rvb_key NUMBER; + v_srtk_opm_key NUMBER; + v_srtk_merk_key NUMBER; + v_discipline_key NUMBER; + v_srtgroep_key NUMBER; + v_ins_discipline_omschrijving VARCHAR2(100); + v_ins_srtgroep_omschrijving VARCHAR2(100); + + CURSOR c + IS + SELECT * + FROM fac_imp_file + WHERE fac_import_key = p_import_key + ORDER BY fac_imp_file_index; + + CURSOR c_dis IS + SELECT '1 - onderbouw' disc FROM DUAL + UNION + SELECT '5 - installaties werktuigbouwkunde' disc FROM DUAL + UNION + SELECT '2 - ruwbouw' FROM DUAL + UNION + SELECT '7 - vaste voorzieningen' FROM DUAL + UNION + SELECT '6 - installaties elektrotechniek' FROM DUAL + UNION + SELECT '4 - afwerkingen' FROM DUAL + UNION + SELECT '3 - afbouw' FROM DUAL + UNION + SELECT '9 - terrein' FROM DUAL + UNION + SELECT '8 - losse inventaris' FROM DUAL; + + CURSOR c_grp IS + SELECT '11 - bodemvoorzieningen' groep FROM DUAL + UNION + SELECT '13 - vloeren op grondslag' groep FROM DUAL + UNION + SELECT '16 - funderingsconstructie' groep FROM DUAL + UNION + SELECT '17 - paalfundering' groep FROM DUAL + UNION + SELECT '19 - onderhoud algemeen' groep FROM DUAL + UNION + SELECT '21 - buitenwanden' groep FROM DUAL + UNION + SELECT '22 - binnenwanden' FROM DUAL + UNION + SELECT '23 - vloeren, galerijen' FROM DUAL + UNION + SELECT '24 - trappen en hellingen' FROM DUAL + UNION + SELECT '25 - binnenzijde gevelconstructie' FROM DUAL + UNION + SELECT '26 - vloerconstructie' FROM DUAL + UNION + SELECT '27 - daken' FROM DUAL + UNION + SELECT '28 - hoofddraagkonstrukties' FROM DUAL + UNION + SELECT '29 - draagconstructie' FROM DUAL + UNION + SELECT '31 - buitenwandopeningen' FROM DUAL + UNION + SELECT '32 - binnenwandopeningen' FROM DUAL + UNION + SELECT '33 - vloeropeningen' FROM DUAL + UNION + SELECT '34 - balustrades en leuningen' FROM DUAL + UNION + SELECT '35 - plafonds' FROM DUAL + UNION + SELECT '37 - dakopeningen' FROM DUAL + UNION + SELECT '38 - inbouwpakketten' FROM DUAL + UNION + SELECT '39 - afbouw' FROM DUAL + UNION + SELECT '41 - buitenwandafwerkingen' FROM DUAL + UNION + SELECT '42 - binnenwandafwerkingen' FROM DUAL + UNION + SELECT '43 - vloerafwerkingen' FROM DUAL + UNION + SELECT '44 - trap- en hellingafwerkingen' FROM DUAL + UNION + SELECT '45 - plafondafwerkingen' FROM DUAL + UNION + SELECT '46 - beschermlagen' FROM DUAL + UNION + SELECT '47 - dakafwerkingen' FROM DUAL + UNION + SELECT '48 - afwerkingspakketten' FROM DUAL + UNION + SELECT '49 - afwerking algemeen' FROM DUAL + UNION + SELECT '51 - warmte-opwekking' FROM DUAL + UNION + SELECT '52 - afvoeren' FROM DUAL + UNION + SELECT '53 - water' FROM DUAL + UNION + SELECT '54 - gas' FROM DUAL + UNION + SELECT '55 - koude-opwekking' FROM DUAL + UNION + SELECT '56 - warmtedistributie' FROM DUAL + UNION + SELECT '57 - luchtbehandeling' FROM DUAL + UNION + SELECT '58 - regeling klimaat en sanitair' FROM DUAL + UNION + SELECT '59 - mechanische installaties' FROM DUAL + UNION + SELECT '61 - centrale elektrotechnische voorzieningen' FROM DUAL + UNION + SELECT '62 - kracht' FROM DUAL + UNION + SELECT '63 - verlichting' FROM DUAL + UNION + SELECT '64 - communicatie' FROM DUAL + UNION + SELECT '65 - beveiliging' FROM DUAL + UNION + SELECT '66 - transport' FROM DUAL + UNION + SELECT '67 - gebouwbeheersysteem' FROM DUAL + UNION + SELECT '69 - electrische installaties algemeen' FROM DUAL + UNION + SELECT '71 - vaste verkeersvoorzieningen' FROM DUAL + UNION + SELECT '72 - vaste gebruikersvoorzieningen' FROM DUAL + UNION + SELECT '73 - vaste keukenvoorzieningen' FROM DUAL + UNION + SELECT '74 - vaste sanitaire voorzieningen' FROM DUAL + UNION + SELECT '75 - vaste onderhoudsvoorzieningen' FROM DUAL + UNION + SELECT '76 - vaste opslagvoorzieningen' FROM DUAL + UNION + SELECT '79 - vaste inrichtingen' FROM DUAL + UNION + SELECT '80 - losse inrichting' FROM DUAL + UNION + SELECT '81 - losse inventaris voor verkeersruimten' FROM DUAL + UNION + SELECT '82 - losse inventaris voor gebruiksruimten' FROM DUAL + UNION + SELECT '83 - losse keukeninventaris' FROM DUAL + UNION + SELECT '84 - losse sanitaire inventaris' FROM DUAL + UNION + SELECT '85 - losse schoonmaakinventaris' FROM DUAL + UNION + SELECT '86 - losse opberginventaris' FROM DUAL + UNION + SELECT '89 - losse inventaris' FROM DUAL + UNION + SELECT '90 - terrein' FROM DUAL + UNION + SELECT '91 - grondvoorzieningen' FROM DUAL + UNION + SELECT '92 - opstallen' FROM DUAL + UNION + SELECT '93 - omeheiningen' FROM DUAL + UNION + SELECT '94 - terreinafwerking' FROM DUAL + UNION + SELECT '95 - terreininstallaties, werktuigkundig' FROM DUAL + UNION + SELECT '96 - terreininstallaties, elektrotechnisch' FROM DUAL + UNION + SELECT '97 - terreininrichting standaard' FROM DUAL + UNION + SELECT '98 - terreininrichting bijzonder' FROM DUAL + UNION + SELECT '99 - terrein algemeen' FROM DUAL; + + rec c%ROWTYPE; + +BEGIN + v_count_error := 0; + header_is_valid := 0; + v_count_tot := 0; + v_count_import := 0; + + DELETE fac_imp_ins; + + -- Zijn de kenmerksoorten er al? + BEGIN + v_errormsg := 'Fout bij aanmaken kenmerksoort: ' || 'Component'; + SELECT ins_srtkenmerk_key + INTO v_srtk_component_key + FROM ins_srtkenmerk + WHERE ins_srtkenmerk_upper = 'COMPONENT'; + + EXCEPTION WHEN NO_DATA_FOUND + THEN + INSERT INTO ins_srtkenmerk (ins_srtkenmerk_kenmerktype, + ins_srtkenmerk_omschrijving) + VALUES ('l', 'Component') RETURNING ins_srtkenmerk_key INTO v_srtk_component_key; + END; + + BEGIN + v_errormsg := 'Fout bij aanmaken kenmerksoort: ' || 'Fabrikant'; + SELECT ins_srtkenmerk_key + INTO v_srtk_fabrikant_key + FROM ins_srtkenmerk + WHERE ins_srtkenmerk_upper = 'FABRIKANT'; + + EXCEPTION WHEN NO_DATA_FOUND + THEN + INSERT INTO ins_srtkenmerk (ins_srtkenmerk_kenmerktype, + ins_srtkenmerk_omschrijving, + ins_srtkenmerk_lengte) + VALUES ('C', 'Fabrikant', 49) RETURNING ins_srtkenmerk_key INTO v_srtk_fabrikant_key; + END; + + BEGIN + v_errormsg := 'Fout bij aanmaken kenmerksoort: ' || 'Type'; + SELECT ins_srtkenmerk_key + INTO v_srtk_type_key + FROM ins_srtkenmerk + WHERE ins_srtkenmerk_upper = 'TYPE'; + + EXCEPTION WHEN NO_DATA_FOUND + THEN + INSERT INTO ins_srtkenmerk (ins_srtkenmerk_kenmerktype, + ins_srtkenmerk_omschrijving, + ins_srtkenmerk_lengte) + VALUES ('C', 'Type', 49) RETURNING ins_srtkenmerk_key INTO v_srtk_type_key; + END; + + BEGIN + v_errormsg := 'Fout bij aanmaken kenmerksoort: ' || 'Kenmerken'; + SELECT ins_srtkenmerk_key + INTO v_srtk_merk_key + FROM ins_srtkenmerk + WHERE ins_srtkenmerk_upper = 'KENMERKEN'; + + EXCEPTION WHEN NO_DATA_FOUND + THEN + INSERT INTO ins_srtkenmerk (ins_srtkenmerk_kenmerktype, + ins_srtkenmerk_omschrijving, + ins_srtkenmerk_lengte) + VALUES ('C', 'Kenmerken', 2000) RETURNING ins_srtkenmerk_key INTO v_srtk_kenmerken_key; + END; + + BEGIN + v_errormsg := 'Fout bij aanmaken kenmerksoort: ' || 'Theoretische levensduur'; + SELECT ins_srtkenmerk_key + INTO v_srtk_merk_key + FROM ins_srtkenmerk + WHERE ins_srtkenmerk_upper = 'THEORETISCHE LEVENSDUUR'; + + EXCEPTION WHEN NO_DATA_FOUND + THEN + INSERT INTO ins_srtkenmerk (ins_srtkenmerk_kenmerktype, + ins_srtkenmerk_omschrijving, + ins_srtkenmerk_lengte) + VALUES ('N', 'Theoretische levensduur', 2) RETURNING ins_srtkenmerk_key INTO v_srtk_levensduur_key; + END; + + BEGIN + v_errormsg := 'Fout bij aanmaken kenmerksoort: ' || 'Opmerkingen'; + SELECT ins_srtkenmerk_key + INTO v_srtk_merk_key + FROM ins_srtkenmerk + WHERE ins_srtkenmerk_upper = 'OPMERKINGEN'; + + EXCEPTION WHEN NO_DATA_FOUND + THEN + INSERT INTO ins_srtkenmerk (ins_srtkenmerk_kenmerktype, + ins_srtkenmerk_omschrijving, + ins_srtkenmerk_lengte) + VALUES ('C', 'Opmerkingen', 2000) RETURNING ins_srtkenmerk_key INTO v_srtk_opmerkingen_key; + END; + + BEGIN + v_errormsg := 'Fout bij aanmaken kenmerksoort: ' || 'Conditie'; + SELECT ins_srtkenmerk_key + INTO v_srtk_component_key + FROM ins_srtkenmerk + WHERE ins_srtkenmerk_upper = 'CONDITIE'; + + EXCEPTION WHEN NO_DATA_FOUND + THEN + INSERT INTO ins_srtkenmerk (ins_srtkenmerk_kenmerktype, + ins_srtkenmerk_omschrijving) + VALUES ('l', 'Conditie') RETURNING ins_srtkenmerk_key INTO v_srtk_conditie_key; + END; + + BEGIN + v_errormsg := 'Fout bij aanmaken kenmerksoort: ' || 'Huidige conditie'; + SELECT ins_srtkenmerk_key + INTO v_srtk_merk_key + FROM ins_srtkenmerk + WHERE ins_srtkenmerk_upper = 'HUIDIGE CONDITIE'; + + EXCEPTION WHEN NO_DATA_FOUND + THEN + INSERT INTO ins_srtkenmerk (ins_srtkenmerk_kenmerktype, + ins_srtkenmerk_omschrijving, + ins_srtkenmerk_lengte) + VALUES ('N', 'Huidige conditie', 2) RETURNING ins_srtkenmerk_key INTO v_srtk_huidige_c_key; + END; + + BEGIN + v_errormsg := 'Fout bij aanmaken kenmerksoort: ' || 'Gewenste conditie'; + SELECT ins_srtkenmerk_key + INTO v_srtk_merk_key + FROM ins_srtkenmerk + WHERE ins_srtkenmerk_upper = 'GEWENSTE CONDITIE'; + + EXCEPTION WHEN NO_DATA_FOUND + THEN + INSERT INTO ins_srtkenmerk (ins_srtkenmerk_kenmerktype, + ins_srtkenmerk_omschrijving, + ins_srtkenmerk_lengte) + VALUES ('N', 'Gewenste conditie', 2) RETURNING ins_srtkenmerk_key INTO v_srtk_gewenste_c_key; + END; + + BEGIN + v_errormsg := 'Fout bij aanmaken kenmerksoort: ' || 'Algemene opmerkingen'; + SELECT ins_srtkenmerk_key + INTO v_srtk_merk_key + FROM ins_srtkenmerk + WHERE ins_srtkenmerk_upper = 'ALGEMENE OPMERKINGEN'; + + EXCEPTION WHEN NO_DATA_FOUND + THEN + INSERT INTO ins_srtkenmerk (ins_srtkenmerk_kenmerktype, + ins_srtkenmerk_omschrijving, + ins_srtkenmerk_lengte) + VALUES ('C', 'Algemene opmerkingen', 2000) RETURNING ins_srtkenmerk_key INTO v_srtk_a_opm_key; + END; + + BEGIN + v_errormsg := 'Fout bij aanmaken kenmerksoort: ' || 'Ramingsbedrag'; + SELECT ins_srtkenmerk_key + INTO v_srtk_merk_key + FROM ins_srtkenmerk + WHERE ins_srtkenmerk_upper = 'RAMINGSBEDRAG'; + + EXCEPTION WHEN NO_DATA_FOUND + THEN + INSERT INTO ins_srtkenmerk (ins_srtkenmerk_kenmerktype, + ins_srtkenmerk_omschrijving, + ins_srtkenmerk_lengte) + VALUES ('C', 'Ramingsbedrag', 20) RETURNING ins_srtkenmerk_key INTO v_srtk_ramingsbedrag_key; + END; + + BEGIN + v_errormsg := 'Fout bij aanmaken kenmerksoort: ' || 'Toelichting'; + SELECT ins_srtkenmerk_key + INTO v_srtk_merk_key + FROM ins_srtkenmerk + WHERE ins_srtkenmerk_upper = 'TOELICHTING'; + + EXCEPTION WHEN NO_DATA_FOUND + THEN + INSERT INTO ins_srtkenmerk (ins_srtkenmerk_kenmerktype, + ins_srtkenmerk_omschrijving, + ins_srtkenmerk_lengte) + VALUES ('C', 'Toelichting', 2000) RETURNING ins_srtkenmerk_key INTO v_srtk_toelichting_key; + END; + + -- Controleer of de MJOB disciplines al bestaan + SELECT count(*) + INTO v_count + FROM ins_discipline + WHERE ins_discipline_omschrijving = '5 - installaties werktuigbouwkunde'; + + IF v_count = 0 + THEN + + FOR rec IN c_dis + LOOP + BEGIN + SELECT ins_discipline_key + INTO v_discipline_key + FROM ins_tab_discipline + WHERE UPPER (ins_discipline_omschrijving) = UPPER (rec.disc); + EXCEPTION + WHEN NO_DATA_FOUND + THEN + v_errormsg := 'Fout bij aanmaken discipline: ' || rec.disc; + INSERT INTO ins_tab_discipline (ins_discipline_omschrijving, + ins_discipline_min_level) + VALUES (rec.disc, 1) + RETURNING ins_discipline_key + INTO v_discipline_key; + + INSERT INTO ins_disc_params (ins_discipline_key, + ins_disc_params_autonum) + VALUES (v_discipline_key, 2); + + v_errormsg := 'Fout bij aanmaken kenmerk: ' || 'Component'; + INSERT INTO ins_kenmerk (ins_srtkenmerk_key, ins_srtinstallatie_key, ins_kenmerk_niveau, ins_kenmerk_bewerkniveau, ins_kenmerk_volgnummer, ins_kenmerk_default) + VALUES (v_srtk_component_key, v_discipline_key, 'D', 'D', 110, 'fa-cogs'); + + v_errormsg := 'Fout bij aanmaken kenmerk: ' || 'Fabrikant'; + INSERT INTO ins_kenmerk (ins_srtkenmerk_key, ins_srtinstallatie_key, ins_kenmerk_niveau, ins_kenmerk_bewerkniveau, ins_kenmerk_volgnummer) + VALUES (v_srtk_fabrikant_key, v_discipline_key, 'D', 'D', 120); + + v_errormsg := 'Fout bij aanmaken kenmerk: ' || 'Type'; + INSERT INTO ins_kenmerk (ins_srtkenmerk_key, ins_srtinstallatie_key, ins_kenmerk_niveau, ins_kenmerk_bewerkniveau, ins_kenmerk_volgnummer) + VALUES (v_srtk_type_key, v_discipline_key, 'D', 'D', 130); + + v_errormsg := 'Fout bij aanmaken kenmerk: ' || 'Kenmerken'; + INSERT INTO ins_kenmerk (ins_srtkenmerk_key, ins_srtinstallatie_key, ins_kenmerk_niveau, ins_kenmerk_bewerkniveau, ins_kenmerk_volgnummer) + VALUES (v_srtk_kenmerken_key, v_discipline_key, 'D', 'D', 140); + + v_errormsg := 'Fout bij aanmaken kenmerk: ' || 'Theoretische levensduur'; + INSERT INTO ins_kenmerk (ins_srtkenmerk_key, ins_srtinstallatie_key, ins_kenmerk_niveau, ins_kenmerk_bewerkniveau, ins_kenmerk_volgnummer) + VALUES (v_srtk_levensduur_key, v_discipline_key, 'D', 'D', 150); + + v_errormsg := 'Fout bij aanmaken kenmerk: ' || 'Opmerkingen'; + INSERT INTO ins_kenmerk (ins_srtkenmerk_key, ins_srtinstallatie_key, ins_kenmerk_niveau, ins_kenmerk_bewerkniveau, ins_kenmerk_volgnummer) + VALUES (v_srtk_opmerkingen_key, v_discipline_key, 'D', 'D', 160); + + v_errormsg := 'Fout bij aanmaken kenmerk: ' || 'Conditie'; + INSERT INTO ins_kenmerk (ins_srtkenmerk_key, ins_srtinstallatie_key, ins_kenmerk_niveau, ins_kenmerk_bewerkniveau, ins_kenmerk_volgnummer, ins_kenmerk_default) + VALUES (v_srtk_conditie_key, v_discipline_key, 'D', 'D', 170, 'fa-thermometer-half'); + + v_errormsg := 'Fout bij aanmaken kenmerk: ' || 'Huidige conditie'; + INSERT INTO ins_kenmerk (ins_srtkenmerk_key, ins_srtinstallatie_key, ins_kenmerk_niveau, ins_kenmerk_bewerkniveau, ins_kenmerk_volgnummer) + VALUES (v_srtk_huidige_c_key, v_discipline_key, 'D', 'D', 180); + + v_errormsg := 'Fout bij aanmaken kenmerk: ' || 'Gewenste conditie'; + INSERT INTO ins_kenmerk (ins_srtkenmerk_key, ins_srtinstallatie_key, ins_kenmerk_niveau, ins_kenmerk_bewerkniveau, ins_kenmerk_volgnummer) + VALUES (v_srtk_gewenste_c_key, v_discipline_key, 'D', 'D', 190); + + v_errormsg := 'Fout bij aanmaken kenmerk: ' || 'Algemene opmerking'; + INSERT INTO ins_kenmerk (ins_srtkenmerk_key, ins_srtinstallatie_key, ins_kenmerk_niveau, ins_kenmerk_bewerkniveau, ins_kenmerk_volgnummer) + VALUES (v_srtk_a_opm_key, v_discipline_key, 'D', 'D', 200); + + v_errormsg := 'Fout bij aanmaken kenmerk: ' || 'Ramingsbedrag'; + INSERT INTO ins_kenmerk (ins_srtkenmerk_key, ins_srtinstallatie_key, ins_kenmerk_niveau, ins_kenmerk_bewerkniveau, ins_kenmerk_volgnummer) + VALUES (v_srtk_ramingsbedrag_key, v_discipline_key, 'D', 'D', 210); + + v_errormsg := 'Fout bij aanmaken kenmerk: ' || 'Toelichting'; + INSERT INTO ins_kenmerk (ins_srtkenmerk_key, ins_srtinstallatie_key, ins_kenmerk_niveau, ins_kenmerk_bewerkniveau, ins_kenmerk_volgnummer) + VALUES (v_srtk_toelichting_key, v_discipline_key, 'D', 'D', 220); + END; + END LOOP; + END IF; + + FOR rec_grp IN c_grp + LOOP + SELECT ins_discipline_key + INTO v_discipline_key + FROM ins_tab_discipline + WHERE SUBSTR (ins_discipline_omschrijving, 1, 3) = + SUBSTR (rec_grp.groep, 1, 1) || ' -'; + + BEGIN + SELECT ins_srtgroep_key + INTO v_srtgroep_key + FROM ins_srtgroep + WHERE UPPER (ins_srtgroep_omschrijving) = UPPER (rec_grp.groep) + AND ins_discipline_key = v_discipline_key; + EXCEPTION + WHEN NO_DATA_FOUND + THEN + INSERT INTO ins_srtgroep (ins_discipline_key, + ins_srtgroep_omschrijving) + VALUES (v_discipline_key, rec_grp.groep) + RETURNING ins_discipline_key + INTO v_discipline_key; + END; + END LOOP; + + -- Het importbestand bevat 0D, 0A combinaties. Hier kan de importfunctie niet tegen. + -- Daarom worden ze hier samengevoegd. We controleren of het aantal dubbele quotes even is. + OPEN c; + IF c%ISOPEN + THEN + LOOP + BEGIN + v_errormsg := 'Fout FETCH te importeren rij'; + v_newline := NULL; + v_counter := 0; + v_odd := 1; + + WHILE v_odd = 1 AND v_counter < 10 + LOOP + FETCH c INTO rec; + EXIT WHEN c%NOTFOUND; + + IF v_newline IS NULL + THEN + v_newline := rec.fac_imp_file_line; + ELSE + v_newline := v_newline || CHR (10) || rec.fac_imp_file_line; + END IF; + + v_odd := MOD (LENGTH (v_newline) - LENGTH (REPLACE (v_newline, '"')), 2); + v_counter := v_counter + 1; + END LOOP; + + IF c%NOTFOUND THEN + EXIT; + END IF; + v_errormsg := 'Fout opvragen te importeren rij'; + v_aanduiding := ''; + + -- Lees alle veldwaarden + fac.imp_getfield_nr (v_newline, c_fielddelimitor, 3, v_alg_ruimte_nr); + fac.imp_getfield_nr (v_newline, c_fielddelimitor, 2, v_alg_gebouw_txt); + fac.imp_getfield_nr (v_newline, c_fielddelimitor, 15, v_ins_deel_aanmaak_txt); + fac.imp_getfield_nr (v_newline, c_fielddelimitor, 10, v_ins_deel_aantal_txt); + fac.imp_getfield_nr (v_newline, c_fielddelimitor, 11, v_ins_deel_eenheid); + fac.imp_getfield_nr (v_newline, c_fielddelimitor, 1, v_ins_deel_omschrijving); + fac.imp_getfield_nr (v_newline, c_fielddelimitor, 8, v_ins_deel_opmerking); + -- fac.imp_getfield_nr (v_newline, c_fielddelimitor, 29, v_ins_srtcontrole_periode_txt); + -- fac.imp_getfield_nr (v_newline, c_fielddelimitor, 24, v_ins_srtcontrole_prijs_txt); + fac.imp_getfield_nr (v_newline, c_fielddelimitor, 4, v_ins_srtdeel_code); + fac.imp_getfield_nr (v_newline, c_fielddelimitor, 7, v_ins_srtdeel_omschrijving); + fac.imp_getfield_nr (v_newline, c_fielddelimitor, 12, v_kenmerk1); -- Fabrikant + fac.imp_getfield_nr (v_newline, c_fielddelimitor, 13, v_kenmerk2); -- Type + fac.imp_getfield_nr (v_newline, c_fielddelimitor, 14, v_kenmerk3); -- Kenmerken + fac.imp_getfield_nr (v_newline, c_fielddelimitor, 16, v_kenmerk4); -- Theoretische levensduur + fac.imp_getfield_nr (v_newline, c_fielddelimitor, 17, v_kenmerk6); -- Opmerkingen + fac.imp_getfield_nr (v_newline, c_fielddelimitor, 18, v_kenmerk7); -- Huidige conditie + fac.imp_getfield_nr (v_newline, c_fielddelimitor, 19, v_kenmerk8); -- Gewenste conditie + fac.imp_getfield_nr (v_newline, c_fielddelimitor, 20, v_kenmerk9); -- Opmerking + fac.imp_getfield_nr (v_newline, c_fielddelimitor, 21, v_kenmerk10); -- Ramingsbedrag + fac.imp_getfield_nr (v_newline, c_fielddelimitor, 22, v_kenmerk11); -- Toelichting + + IF rec.fac_imp_file_index = 1 + THEN + IF v_kenmerk8 <> 'Component Gewenste Conditie' + THEN + fac.imp_writelog (p_import_key, + 'E', + 'Geen geldige header aangetroffen', + ''); + RETURN; + END IF; + ELSIF FAC.safe_to_number(v_ins_deel_omschrijving) IS NULL + THEN + fac.imp_writelog (p_import_key, + 'I', + 'Geen geldige regel, id is geen nummer', + SUBSTR(v_newline, 1, 200)); + + ELSE + + v_aanduiding := v_ins_deel_omschrijving || '|' || v_kenmerk4; + + v_count_tot := v_count_tot + 1; + + v_errormsg := 'Fout bij toevoegen te impoteren v_ins_discipline_omschrijving: ' || v_ins_srtdeel_code; + SELECT d.ins_discipline_omschrijving + INTO v_ins_discipline_omschrijving + FROM ins_discipline d + WHERE SUBSTR (d.ins_discipline_omschrijving, 1, 1) = SUBSTR (v_ins_srtdeel_code, 1, 1); + + v_errormsg := 'Fout bij toevoegen te impoteren v_ins_srtgroep_omschrijving: ' || v_ins_srtdeel_code; + SELECT sg.ins_srtgroep_omschrijving + INTO v_ins_srtgroep_omschrijving + FROM ins_srtgroep sg + WHERE SUBSTR (sg.ins_srtgroep_omschrijving, 1, 2) = SUBSTR (v_ins_srtdeel_code, 1, 2); + + IF UPPER(v_ins_srtdeel_omschrijving) = 'ALGEMEEN' + THEN + v_ins_srtdeel_omschrijving := v_ins_srtdeel_omschrijving || ' (' || v_ins_srtdeel_code || ')'; + END IF; + + -- BEGIN + v_errormsg := 'Fout bij toevoegen te impoteren v_alg_gebouw_code: ' || v_alg_gebouw_txt; + v_index := instr(v_alg_gebouw_txt, '-'); + IF v_index <> 0 + THEN + v_alg_gebouw_txt := SUBSTR(v_alg_gebouw_txt, 1, instr(v_alg_gebouw_txt, '-')-1); + END IF; + SELECT alg_locatie_code, alg_gebouw_upper + INTO v_alg_locatie_code, v_alg_gebouw_code + FROM alg_v_gebouw_gegevens gg + WHERE 'GEBOUW ' || gg.alg_gebouw_upper = UPPER(v_alg_gebouw_txt); + -- EXCEPTION WHEN NO_DATA_FOUND THEN + + + + -- END; + + BEGIN + v_errormsg := 'Fout bij toevoegen te impoteren v_alg_ruimte_nr: ' || v_alg_ruimte_nr; + SELECT alg_verdieping_volgnr, alg_ruimte_nr + INTO v_alg_verdieping_volgnr, v_alg_ruimte_nr + FROM alg_v_ruimte_gegevens rg + WHERE rg.alg_ruimte_nr = v_alg_ruimte_txt + AND rg.alg_gebouw_upper = v_alg_gebouw_code; + EXCEPTION WHEN NO_DATA_FOUND + THEN + + SELECT MIN(alg_ruimte_key) + INTO v_alg_ruimte_key + FROM alg_v_ruimte_gegevens rg + WHERE alg_gebouw_upper = v_alg_gebouw_code; + + SELECT alg_verdieping_volgnr, alg_ruimte_nr + INTO v_alg_verdieping_volgnr, v_alg_ruimte_nr + FROM alg_v_ruimte_gegevens rg + WHERE rg.alg_ruimte_key = v_alg_ruimte_key; + + END; + + v_errormsg := 'Fout bij toevoegen te impoteren v_ins_deel_aanmaak_txt: ' || v_ins_deel_aanmaak_txt; + v_ins_deel_aanmaak := NULL; + IF v_ins_deel_aanmaak_txt IS NOT NULL + THEN + v_ins_deel_aanmaak := to_date('0101' || v_ins_deel_aanmaak_txt, 'ddmmyyyy'); + ELSE + v_ins_deel_aanmaak := SYSDATE; + END IF; + + v_errormsg := 'Fout bij toevoegen te impoteren v_ins_deel_aantal_txt: ' || v_ins_deel_aantal_txt; + IF v_ins_deel_aantal_txt IS NOT NULL + THEN + v_ins_deel_aantal := to_number(v_ins_deel_aantal_txt); + ELSE + v_ins_deel-aantal := NULL; + END IF; + + INSERT INTO fac_imp_ins (ins_discipline_omschrijving, + ins_srtgroep_omschrijving, + ins_srtdeel_code, + ins_srtdeel_omschrijving, + ins_deel_omschrijving, + ins_deel_opmerking, + alg_locatie_code, + alg_gebouw_code, + alg_verdieping_volgnr, + alg_ruimte_nr, + ins_kenmerkwaarde1, + ins_kenmerkwaarde2, + ins_kenmerkwaarde3, + ins_kenmerkwaarde4, + ins_kenmerkwaarde6, + ins_kenmerkwaarde7, + ins_kenmerkwaarde8, + ins_kenmerkwaarde9, + ins_kenmerkwaarde10, + ins_kenmerkwaarde11, + ins_deel_aanmaak, + ins_deel_aantal) + VALUES (SUBSTR(v_ins_discipline_omschrijving, 1,60), + SUBSTR(v_ins_srtgroep_omschrijving, 1, 60), + SUBSTR(v_ins_srtdeel_code,1,10), + SUBSTR(v_ins_srtdeel_omschrijving, 1, 100), + SUBSTR(p_type || v_ins_deel_omschrijving, 1, 60), + SUBSTR(v_ins_deel_opmerking, 1, 320), + SUBSTR(v_alg_locatie_code, 1, 10), + SUBSTR(v_alg_gebouw_code, 1, 12), + v_alg_verdieping_volgnr, + SUBSTR(v_alg_ruimte_nr,1,20), + DECODE(v_kenmerk1, NULL, NULL, 'Fabrikant|0=' || v_kenmerk1), + DECODE(v_kenmerk2, NULL, NULL, 'Type|0=' || v_kenmerk2), + DECODE(v_kenmerk3, NULL, NULL, 'Kenmerken|0=' || v_kenmerk3), + DECODE(v_kenmerk4, NULL, NULL, 'Theoretische levensduur|0=' || v_kenmerk4), + DECODE(v_kenmerk6, NULL, NULL, 'Opmerkingen|0=' || v_kenmerk6), + DECODE(v_kenmerk7, NULL, NULL, 'Huidige conditie|0=' || v_kenmerk7), + DECODE(v_kenmerk8, NULL, NULL, 'Gewenste conditie|0=' || v_kenmerk8), + DECODE(v_kenmerk9, NULL, NULL, 'Algemene opmerkingen|0=' || v_kenmerk9), + DECODE(v_kenmerk10, NULL, NULL, 'Ramingsbedrag|0=' || v_kenmerk10), + DECODE(v_kenmerk11, NULL, NULL, 'Toelichting|0=' || v_kenmerk11), + v_ins_deel_aanmaak, + to_number(v_ins_deel_aantal)); + END IF; + + EXCEPTION + WHEN OTHERS + THEN + v_errorhint := v_errormsg || ' - ' || v_aanduiding; + oracle_err_num := SQLCODE; + oracle_err_mes := SUBSTR (SQLERRM, 1, 100); + v_errormsg := 'error ' || oracle_err_num || '/' || oracle_err_mes; + fac.imp_writelog (p_import_key, + 'E', + v_errormsg, + v_errorhint); + + END; + END LOOP; + END IF; + + COMMIT; +EXCEPTION + WHEN OTHERS + THEN + v_errorhint := v_errormsg || ' - ' || v_aanduiding; + oracle_err_num := SQLCODE; + oracle_err_mes := SUBSTR (SQLERRM, 1, 100); + v_errormsg := 'error ' || oracle_err_num || '/' || oracle_err_mes; + fac.imp_writelog (p_import_key, + 'E', + v_errormsg, + v_errorhint); +END yfth_import_assets; +/ + +CREATE OR REPLACE PROCEDURE yfth_import_w_assets (p_import_key IN NUMBER) +AS +BEGIN + yfth_import_assets(p_import_key, 'W'); +END; +/ + +CREATE OR REPLACE PROCEDURE yfth_import_e_assets (p_import_key IN NUMBER) +AS +BEGIN + yfth_import_assets(p_import_key, 'E'); +END; +/ + +CREATE OR REPLACE PROCEDURE yfth_import_b_assets (p_import_key IN NUMBER) +AS +BEGIN + yfth_import_assets(p_import_key, 'B'); +END; +/ + +CREATE OR REPLACE PROCEDURE yfth_update_w_assets (p_import_key IN NUMBER) +AS +BEGIN + fac_update_ins(p_import_key); +END; +/ + +CREATE OR REPLACE PROCEDURE yfth_update_e_assets (p_import_key IN NUMBER) +AS +BEGIN + fac_update_ins(p_import_key); +END; +/ + +CREATE OR REPLACE PROCEDURE yfth_update_b_assets (p_import_key IN NUMBER) +AS +BEGIN + fac_update_ins(p_import_key); +END; +/ + + +CREATE OR REPLACE PROCEDURE yfth_import_taken (p_import_key IN NUMBER) +AS + c_fielddelimitor VARCHAR2 (1) := ';'; + v_newline VARCHAR2 (4000); -- 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_all_null BOOLEAN; + v_count_error NUMBER (10); + v_count_tot NUMBER (10); + v_count_import NUMBER (10); + + -- De importvelden: + v_ins_deel_omschrijving VARCHAR2(100); + v_ins_srtcontrole_omschrijving VARCHAR2(100); + v_vantoepassing VARCHAR2(100); + v_rapportaanwezig VARCHAR2(100); + v_laatstekeuring VARCHAR2(100); + v_volgendekeuring VARCHAR2(100); + v_goedgekeurd VARCHAR2(100); + v_actie VARCHAR2(100); + v_type VARCHAR2(100); + v_type_txt VARCHAR2(100); + + CURSOR c + IS + SELECT * + FROM fac_imp_file + WHERE fac_import_key = p_import_key + ORDER BY fac_imp_file_index; + +BEGIN + + DELETE fac_imp_ins; + + FOR rec IN c + LOOP + BEGIN + v_errormsg := 'Fout FETCH te importeren rij'; + + v_newline := rec.fac_imp_file_line; + v_errormsg := 'Fout opvragen te importeren rij'; + v_aanduiding := ''; + + -- Lees alle veldwaarden + fac.imp_getfield_nr (v_newline, c_fielddelimitor, 7, v_ins_deel_omschrijving); + fac.imp_getfield_nr (v_newline, c_fielddelimitor, 4, v_type_txt); + fac.imp_getfield_nr (v_newline, c_fielddelimitor, 9, v_ins_srtcontrole_omschrijving); + fac.imp_getfield_nr (v_newline, c_fielddelimitor, 10, v_vantoepassing); + fac.imp_getfield_nr (v_newline, c_fielddelimitor, 11, v_rapportaanwezig); + fac.imp_getfield_nr (v_newline, c_fielddelimitor, 12, v_laatstekeuring); + fac.imp_getfield_nr (v_newline, c_fielddelimitor, 13, v_volgendekeuring); + fac.imp_getfield_nr (v_newline, c_fielddelimitor, 14, v_goedgekeurd); + fac.imp_getfield_nr (v_newline, c_fielddelimitor, 15, v_actie); + + + IF rec.fac_imp_file_index = 2 AND v_goedgekeurd <> 'Goedgekeurd' + THEN + fac.imp_writelog (p_import_key, + 'E', + 'Geen geldige header aangetroffen', + ''); + RETURN; + END IF; + + v_type := ''; + IF v_type_txt = 'SLA 4' THEN v_type := 'B'; + ELSIF v_type_txt = 'SLA 5 E' THEN v_type := 'E'; + ELSIF v_type_txt = 'SLA 5 W' THEN v_type := 'W'; + END IF; + + v_aanduiding := v_ins_deel_omschrijving || '|' || v_type; + + v_count_tot := v_count_tot + 1; + + IF v_ins_deel_omschrijving IS NOT NULL + THEN + INSERT INTO fac_imp_ins (ins_deel_omschrijving, + ins_kenmerkwaarde1, + ins_kenmerkwaarde2, + ins_kenmerkwaarde3, + ins_kenmerkwaarde4, + ins_kenmerkwaarde5, + ins_kenmerkwaarde6, + ins_kenmerkwaarde7) + VALUES (SUBSTR(v_type || v_ins_deel_omschrijving, 1, 60), + v_ins_srtcontrole_omschrijving, + v_vantoepassing, + v_rapportaanwezig, + v_laatstekeuring, + v_volgendekeuring, + v_goedgekeurd, + v_actie); + END IF; + EXCEPTION + WHEN OTHERS + THEN + v_errorhint := v_errormsg || ' - ' || v_aanduiding; + oracle_err_num := SQLCODE; + oracle_err_mes := SUBSTR (SQLERRM, 1, 100); + v_errormsg := 'error ' || oracle_err_num || '/' || oracle_err_mes; + fac.imp_writelog (p_import_key, + 'E', + v_errormsg, + v_errorhint); + + END; + END LOOP; + + -- Een deel van de objecten wordt uitgesplitst in een .1 .2 ed. Deze worden samengenomen tot één object + -- Hetzelfde geldt voor samengenomen objecten 213-214. Hier worden de taken op het eerst object geplaatst. + UPDATE fac_imp_ins + SET ins_deel_omschrijving = + SUBSTR (ins_deel_omschrijving, + 1, + INSTR (ins_deel_omschrijving, '-') - 1) + WHERE ins_deel_omschrijving LIKE '%-%'; + + UPDATE fac_imp_ins + SET ins_deel_omschrijving = + SUBSTR (ins_deel_omschrijving, + 1, + INSTR (ins_deel_omschrijving, '.') - 1) + WHERE ins_deel_omschrijving LIKE '%.%'; + + COMMIT; +EXCEPTION + WHEN OTHERS + THEN + v_errorhint := v_errormsg || ' - ' || v_aanduiding; + oracle_err_num := SQLCODE; + oracle_err_mes := SUBSTR (SQLERRM, 1, 100); + v_errormsg := 'error ' || oracle_err_num || '/' || oracle_err_mes; + fac.imp_writelog (p_import_key, + 'E', + v_errormsg, + v_errorhint); +END yfth_import_taken; +/ + +CREATE OR REPLACE PROCEDURE yfth_update_taken (p_import_key IN NUMBER) +AS + v_aanduiding VARCHAR2 (100); + v_errormsg VARCHAR2 (1000); + v_errorhint VARCHAR2 (1000); + oracle_err_num NUMBER; + oracle_err_mes VARCHAR2 (200); + + v_deel_key NUMBER; + v_discipline_key NUMBER; + v_discipline_prefix VARCHAR2 (3); + v_srtcontrole_key NUMBER; + v_controlemode_key NUMBER; + v_srtcontroledl_xcp_key NUMBER; + + CURSOR c IS + SELECT ins_deel_omschrijving, + ins_kenmerkwaarde1 taak, + MAX (ins_kenmerkwaarde2) vantoepassing, + MAX (ins_kenmerkwaarde3) rapportaanwezig, + MAX (ins_kenmerkwaarde4) laatstekeuring, + MAX (ins_kenmerkwaarde5) volgendekeuring, + MAX (ins_kenmerkwaarde6) goedgekeurd, + COUNT (*) aantal + FROM fac_imp_ins + -- WHERE ins_deel_omschrijving LIKE 'W%' + GROUP BY ins_deel_omschrijving, ins_kenmerkwaarde1; +BEGIN + FOR rec IN c + LOOP + BEGIN + -- we gaan op zoek naar het object + v_errormsg := + 'Fout bij bepalen deel: ' || rec.ins_deel_omschrijving; + + SELECT ins_deel_key, + ins_discipline_key, + SUBSTR (ins_discipline_omschrijving, 1, 3) + INTO v_deel_key, v_discipline_key, v_discipline_prefix + FROM ins_v_deel_gegevens + WHERE ins_deel_omschrijving = rec.ins_deel_omschrijving; + + BEGIN + -- controleer of de taak al bestaat + + + SELECT ins_srtcontrole_key + INTO v_srtcontrole_key + FROM ins_srtcontrole + WHERE ins_srtinstallatie_key = v_discipline_key + AND ctr_discipline_key = 5 + AND UPPER (ins_srtcontrole_omschrijving) = + v_discipline_prefix || UPPER (rec.taak); + EXCEPTION + WHEN NO_DATA_FOUND + THEN + INSERT INTO ins_srtcontrole ( + ins_srtinstallatie_key, + ins_srtcontrole_omschrijving, + ins_srtcontrole_niveau, + ctr_discipline_key, + ins_srtcontrole_periode, + ins_srtcontrole_eenheid, + ins_srtcontrole_mode, + ins_srtcontrole_level, + ins_srtcontrole_options) + VALUES (v_discipline_key, + v_discipline_prefix || rec.taak, + 'D', + 5, + 0, + 3, + 1, + 10, + 15) + RETURNING ins_srtcontrole_key INTO v_srtcontrole_key; + END; + + BEGIN + SELECT ins_srtcontroledl_xcp_key + INTO v_srtcontroledl_xcp_key + FROM ins_srtcontroledl_xcp + WHERE ins_deel_key = v_deel_key + AND ins_srtcontrole_key = v_srtcontrole_key; + EXCEPTION + WHEN NO_DATA_FOUND + THEN + INSERT INTO ins_srtcontroledl_xcp ( + ins_deel_key, + ins_srtcontrole_key, + ins_srtcontroledl_xcp_periode, + ins_srtcontroledl_xcp_eenheid) + VALUES (v_deel_key, + v_srtcontrole_key, + 12, + 3); + + END; + + + IF rec.laatstekeuring IS NOT NULL + THEN + v_controlemode_key := 11; + IF UPPER(rec.goedgekeurd) = 'JA' THEN v_controlemode_key := 10; END IF; + + -- TODO: Controleer of de controle al bestaat met dezelfde datum. + INSERT INTO ins_deelsrtcontrole (ins_deel_key, ins_srtcontrole_key, ins_deelsrtcontrole_datum, ins_deelsrtcontrole_datum_org, ins_controlemode_key, ins_deelsrtcontrole_status, ins_scenario_key, prs_perslid_key) + VALUES (v_deel_key, v_srtcontrole_key, to_date(rec.laatstekeuring, 'dd-mm-yyyy'), to_date(rec.laatstekeuring, 'dd-mm-yyyy'), v_controlemode_key, 6, 1, 3); + END IF; + + IF rec.volgendekeuring IS NOT NULL + THEN + INSERT INTO ins_deelsrtcontrole (ins_deel_key, ins_srtcontrole_key, ins_deelsrtcontrole_plandatum, ins_deelsrtcontrole_status, ins_scenario_key, prs_perslid_key) + VALUES (v_deel_key, v_srtcontrole_key, to_date(rec.volgendekeuring, 'dd-mm-yyyy'), 0, 1, 3); + END IF; + + + EXCEPTION + WHEN OTHERS + THEN + v_errorhint := v_errormsg || ' - ' || v_aanduiding; + oracle_err_num := SQLCODE; + oracle_err_mes := SUBSTR (SQLERRM, 1, 100); + v_errormsg := + 'error ' || oracle_err_num || '/' || oracle_err_mes; + fac.imp_writelog (p_import_key, + 'E', + v_errormsg, + v_errorhint); + END; + END LOOP; + + COMMIT; +EXCEPTION + WHEN OTHERS + THEN + v_errorhint := v_errormsg || ' - ' || v_aanduiding; + oracle_err_num := SQLCODE; + oracle_err_mes := SUBSTR (SQLERRM, 1, 100); + v_errormsg := 'error ' || oracle_err_num || '/' || oracle_err_mes; + fac.imp_writelog (p_import_key, + 'E', + v_errormsg, + v_errorhint); +END; +/ + +CREATE OR REPLACE VIEW yfth_v_wet_oh_dashboard +AS +SELECT COALESCE (ins_deelsrtcontrole_plandatum, ins_deelsrtcontrole_datum) + datum, + SUBSTR (ins_deel_omschrijving, 1, 1) + prefix, + ins_deel_omschrijving, + ins_srtdeel_omschrijving, + ins_discipline_omschrijving, + l.alg_locatie_omschrijving, + g.alg_gebouw_omschrijving, + DECODE ( + ins_deelsrtcontrole_plandatum, + NULL, DECODE (ins_controlemode_key, + 10, 'Goedgekeurd', + 'Afgekeurd'), + 'Gepland') + Status + FROM ins_v_deel_gegevens dg, + ins_deelsrtcontrole dsc, + alg_gebouw g, + alg_locatie l + WHERE dg.ins_deel_key = dsc.ins_deel_key + AND dg.alg_gebouw_key = g.alg_gebouw_key + AND dg.alg_locatie_key = l.alg_locatie_key; + + + CREATE OR REPLACE PROCEDURE yfth_daily AS BEGIN