-- -- $Id$ -- -- Script containing customer specific sql statements for the FACILITOR database DEFINE thisfile = 'kmmo.sql' DEFINE dbuser = 'KMMO' SET ECHO ON SET DEFINE ON COLUMN fcltlogfile NEW_VALUE fcltlogfile NOPRINT; COLUMN fcltcusttxt NEW_VALUE fcltcusttxt NOPRINT; WHENEVER SQLERROR CONTINUE; SELECT adm.getscriptspoolfile('&thisfile') AS fcltlogfile FROM DUAL; SPOOL &fcltlogfile WHENEVER SQLERROR EXIT; SELECT adm.checkscriptcust('&dbuser') AS fcltcusttxt FROM DUAL; WHENEVER SQLERROR CONTINUE; --------------------------------------- PROMPT &fcltcusttxt --------------------------------------- SET DEFINE OFF ------ payload begin ------ -- Dagelijkse taak CREATE OR REPLACE PROCEDURE kmmo_daily AS BEGIN IF user = 'KMMO_TEST' THEN -- pas de kleuren voor de testomgeving aan (blauw naar rood) UPDATE fac_setting SET fac_setting_pvalue = REPLACE(fac_setting_pvalue, '#0085c4', '#e20035') WHERE fac_setting_name = 'csstemplate'; UPDATE fac_setting SET fac_setting_pvalue = REPLACE(fac_setting_pvalue, '#0085c4', '#e20035') WHERE fac_setting_name = 'csscust'; UPDATE fac_setting SET fac_setting_pvalue = REPLACE(fac_setting_pvalue, 'banner.png', 'banner_rood.png') WHERE fac_setting_name = 'csstemplate'; END IF; END; / -- view om QR codes voor een deel te genereren. CREATE OR REPLACE VIEW kmmo_v_rap_qr_deel AS SELECT fac_bookmark_naam, fac_bookmark_id, ins_discipline_omschrijving, ins_srtgroep_omschrijving, ins_srtdeel_omschrijving, ins_deel_omschrijving, alg_locatie_key, alg_gebouw_omschrijving, ins_deel_aanmaak, ins_deel_key FROM fac_bookmark b, ins_v_deel_gegevens d WHERE fac_bookmark_expire IS NULL AND fac_bookmark_id = 'eYD435Vl666lZdkU'; -- view om QR codes voor een ruimte te genereren. -- Ieder srtruimte krijgt een eigen bookmark -- Om een link tussen bookmark en srtuimte te maken -- wordt de omschrijving van de bookmark als volgt gevuld: -- QR bij verkeersruimte key:30 -- De key is dan de key van de srtruimte. CREATE OR REPLACE VIEW kmmo_v_rap_qr_ruimte AS SELECT b.fac_bookmark_naam, b.fac_bookmark_id, sr.alg_srtruimte_omschrijving, rg.alg_ruimte_omschrijving, rg.alg_ruimte_nr, rg.alg_ruimte_key, alg_locatie_omschrijving, alg_gebouw_omschrijving, alg_verdieping_omschrijving FROM fac_bookmark b, alg_srtruimte sr, alg_v_ruimte_gegevens rg WHERE b.fac_bookmark_expire IS NULL AND COALESCE(FAC.safe_to_number(TRIM(SUBSTR(b.fac_bookmark_naam, INSTR(b.fac_bookmark_naam, ':')+1))),-1) = sr.alg_srtruimte_key AND sr.alg_srtruimte_key = rg.alg_srtruimte_key; CREATE OR REPLACE FORCE VIEW kmmo_v_thema_bouwdeel ( ALG_RUIMTE_KEY, WAARDE ) AS SELECT alg_onrgoed_key, SUBSTR (alg_onrgoedkenmerk_waarde, 1, 1) waarde FROM alg_onrgoedkenmerk WHERE alg_kenmerk_key = 1003 AND alg_onrgoedkenmerk_verwijder IS NULL; CREATE OR REPLACE FORCE VIEW kmmo_v_thema_openstelling ( ALG_RUIMTE_KEY, WAARDE ) AS SELECT alg_onrgoed_key, alg_onrgoedkenmerk_waarde waarde FROM alg_onrgoedkenmerk WHERE alg_kenmerk_key = 1004 AND alg_onrgoedkenmerk_verwijder IS NULL; -- View om de resultaten van de inspecties te tonen CREATE OR REPLACE VIEW kmmo_v_rap_keuring_resultaat AS SELECT dsc.ins_deelsrtcontrole_datum, dsc.ins_deelsrtcontrole_datum_org, dsc.ins_deelsrtcontrole_status, pf.prs_perslid_naam_full, sc.ins_srtcontrole_omschrijving, dg.ins_discipline_omschrijving, dg.ins_srtgroep_omschrijving, dg.ins_srtdeel_omschrijving, dg.ins_deel_omschrijving, dg.alg_gebouw_omschrijving, dg.alg_verdieping_code, dg.alg_ruimte_nr, cm.ins_controlemode_oms, (SELECT LISTAGG ( COALESCE (k.ins_kenmerk_omschrijving, sk.ins_srtkenmerk_omschrijving), CHR (13)) WITHIN GROUP (ORDER BY COALESCE (k.ins_kenmerk_omschrijving, sk.ins_srtkenmerk_omschrijving)) AS bevindingen FROM ins_kmdeelsrtcontr kdsc, ins_kenmerk k, ins_srtkenmerk sk WHERE kdsc.ins_kenmerk_key = k.ins_kenmerk_key AND k.ins_srtkenmerk_key = sk.ins_srtkenmerk_key AND kdsc.ins_deelsrtcontrole_key = dsc.ins_deelsrtcontrole_key) bevindingen FROM ins_deelsrtcontrole dsc, ins_srtcontrole sc, ins_v_deel_gegevens dg, ins_controlemode cm, prs_v_perslid_fullnames pf WHERE dsc.ins_srtcontrole_key = sc.ins_srtcontrole_key AND dsc.ins_deel_key = dg.ins_deel_key AND dsc.ins_controlemode_key = cm.ins_controlemode_key AND dsc.prs_perslid_key = pf.prs_perslid_key; -- Importfunctie om Asset en MJOB informatie te importeren. CREATE OR REPLACE PROCEDURE kmmo_import_assets (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_alg_ruimte_nr 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_kenmerk7 VARCHAR2(1000); v_kenmerk9 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_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 '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; 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 SELECT ins_srtkenmerk_key INTO v_srtk_code_rvb_key FROM ins_srtkenmerk WHERE ins_srtkenmerk_upper = 'CODE RVB'; EXCEPTION WHEN NO_DATA_FOUND THEN INSERT INTO ins_srtkenmerk (ins_srtkenmerk_kenmerktype, ins_srtkenmerk_omschrijving, ins_srtkenmerk_lengte) VALUES ('C', 'Code RVB', 20) RETURNING ins_srtkenmerk_key INTO v_srtk_code_rvb_key; END; BEGIN SELECT ins_srtkenmerk_key INTO v_srtk_opm_key FROM ins_srtkenmerk WHERE ins_srtkenmerk_upper = 'OPMERKING'; EXCEPTION WHEN NO_DATA_FOUND THEN INSERT INTO ins_srtkenmerk (ins_srtkenmerk_kenmerktype, ins_srtkenmerk_omschrijving, ins_srtkenmerk_lengte) VALUES ('C', 'Opmerking', 2000) RETURNING ins_srtkenmerk_key INTO v_srtk_opm_key; END; BEGIN SELECT ins_srtkenmerk_key INTO v_srtk_merk_key FROM ins_srtkenmerk WHERE ins_srtkenmerk_upper = 'MERK'; EXCEPTION WHEN NO_DATA_FOUND THEN INSERT INTO ins_srtkenmerk (ins_srtkenmerk_kenmerktype, ins_srtkenmerk_omschrijving, ins_srtkenmerk_lengte) VALUES ('C', 'Merk', 49) RETURNING ins_srtkenmerk_key INTO v_srtk_merk_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 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); INSERT INTO ins_kenmerk (ins_srtkenmerk_key, ins_srtinstallatie_key, ins_kenmerk_niveau, ins_kenmerk_bewerkniveau, ins_kenmerk_volgnummer) VALUES (v_srtk_code_rvb_key, v_discipline_key, 'D', 'D', 110); INSERT INTO ins_kenmerk (ins_srtkenmerk_key, ins_srtinstallatie_key, ins_kenmerk_niveau, ins_kenmerk_bewerkniveau, ins_kenmerk_volgnummer) VALUES (v_srtk_opm_key, v_discipline_key, 'D', 'D', 120); INSERT INTO ins_kenmerk (ins_srtkenmerk_key, ins_srtinstallatie_key, ins_kenmerk_niveau, ins_kenmerk_bewerkniveau, ins_kenmerk_volgnummer) VALUES (v_srtk_merk_key, v_discipline_key, 'D', 'D', 130); END; END LOOP; 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); END; END LOOP; END IF; 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, 12, v_alg_ruimte_nr); fac.imp_getfield_nr (v_newline, c_fielddelimitor, 13, v_ins_deel_aanmaak_txt); fac.imp_getfield_nr (v_newline, c_fielddelimitor, 14, v_ins_deel_aantal_txt); fac.imp_getfield_nr (v_newline, c_fielddelimitor, 15, v_ins_deel_eenheid); fac.imp_getfield_nr (v_newline, c_fielddelimitor, 3, v_ins_deel_omschrijving); fac.imp_getfield_nr (v_newline, c_fielddelimitor, 7, 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, 1, v_ins_srtdeel_code); fac.imp_getfield_nr (v_newline, c_fielddelimitor, 6, v_ins_srtdeel_omschrijving); fac.imp_getfield_nr (v_newline, c_fielddelimitor, 4, v_kenmerk1); -- code RVB fac.imp_getfield_nr (v_newline, c_fielddelimitor, 8, v_kenmerk2); -- opmerking fac.imp_getfield_nr (v_newline, c_fielddelimitor, 9, v_kenmerk3); -- taak fac.imp_getfield_nr (v_newline, c_fielddelimitor, 16, v_kenmerk5); -- fabrikant / merk fac.imp_getfield_nr (v_newline, c_fielddelimitor, 28, v_kenmerk7); -- percentage fac.imp_getfield_nr (v_newline, c_fielddelimitor, 30, v_kenmerk9); -- startjaar 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); v_errormsg := 'Fout bij toevoegen te impoteren v_alg_ruimte_nr: ' || v_alg_ruimte_nr; SELECT alg_locatie_code, alg_gebouw_upper, alg_verdieping_volgnr INTO v_alg_locatie_code, v_alg_gebouw_code, v_alg_verdieping_volgnr FROM alg_v_ruimte_gegevens rg WHERE UPPER(rg.alg_ruimte_nr) = UPPER(v_alg_ruimte_nr); 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_kenmerk9: ' || v_kenmerk9; IF v_kenmerk9 IS NOT NULL THEN v_ins_deel_startjaar := to_date('0101' || v_kenmerk9, 'ddmmyyyy'); ELSE v_ins_deel_startjaar := NULL; 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 := 1; END IF; v_errormsg := 'Fout bij toevoegen te impoteren v_ins_srtcontrole_periode_txt: ' || v_ins_srtcontrole_periode_txt; IF v_ins_srtcontrole_periode_txt IS NOT NULL THEN v_ins_srtcontrole_periode := to_number(v_ins_srtcontrole_periode_txt); ELSE v_ins_srtcontrole_periode := NULL; END IF; v_errormsg := 'Fout bij toevoegen te impoteren v_ins_srtcontrole_prijs_txt: ' || v_ins_srtcontrole_prijs_txt; IF v_ins_srtcontrole_prijs_txt IS NOT NULL THEN v_ins_srtcontrole_prijs := to_number(REPLACE(REPLACE(v_ins_srtcontrole_prijs_txt, '.'), ',', '.')); ELSE v_ins_srtcontrole_prijs := NULL; END IF; v_errormsg := 'Fout bij toevoegen te impoteren v_kenmerk7: ' || v_kenmerk7; IF v_kenmerk7 IS NOT NULL THEN IF INSTR(v_kenmerk7, '%') = 0 THEN v_ins_deel_percentage := to_number(v_kenmerk7)*100; ELSE v_ins_deel_percentage := to_number(REPLACE(v_kenmerk7, '%')); END IF; ELSE v_ins_deel_percentage := 100; 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_kenmerkwaarde5, ins_kenmerkwaarde6, ins_kenmerkwaarde7, ins_kenmerkwaarde8, ins_kenmerkwaarde9, ins_kenmerkwaarde10, 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 || ' - ' || v_ins_srtdeel_code, 1, 100), SUBSTR(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, 'Code RVB|0=' || v_kenmerk1), DECODE(v_kenmerk2, NULL, NULL, 'Opmerking|0=' || v_kenmerk2), v_kenmerk3, '', DECODE(v_kenmerk5, NULL, NULL, 'Merk|0=' || v_kenmerk5), v_ins_srtcontrole_prijs, v_ins_deel_percentage, v_ins_srtcontrole_periode, to_char(v_ins_deel_startjaar, 'ddmmyyyy'), to_char(v_ins_deel_aanmaak, 'ddmmyyyy'), v_ins_deel_aanmaak, to_number(v_ins_deel_aantal)); 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 kmmo_import_assets; / CREATE OR REPLACE PROCEDURE kmmo_update_assets (p_import_key IN NUMBER) AS CURSOR c IS SELECT * FROM fac_imp_ins; oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); v_errormsg VARCHAR2 (200); v_errorhint VARCHAR2 (200); v_aanduiding VARCHAR2 (100); v_deel_key NUMBER; v_srtdeel_key NUMBER; v_srtcontrole_key NUMBER; v_srtcontroledl_xcp_key NUMBER; v_taakcat_key NUMBER; v_srtcontrole_periode INS_SRTCONTROLE.INS_SRTCONTROLE_PERIODE%TYPE; v_srtcontrole_materiaal INS_SRTCONTROLE.INS_SRTCONTROLE_MATERIAAL%TYPE; v_srtcontrole_percentage INS_SRTCONTROLE.INS_SRTCONTROLE_PERCENTAGE%TYPE; v_srtcontrole_level INS_SRTCONTROLE.INS_SRTCONTROLE_LEVEL%TYPE; v_percentage NUMBER; v_materiaal INS_SRTCONTROLEDL_XCP.INS_SRTCONTROLEDL_XCP_MATERIA%TYPE; BEGIN fac_update_ins(p_import_key); FOR rec IN c LOOP BEGIN v_aanduiding := rec.ins_deel_omschrijving; -- zoek het object v_errorhint := 'Zoek het object'; SELECT ins_deel_key, ins_srtdeel_key INTO v_deel_key, v_srtdeel_key FROM ins_deel WHERE ins_deel_omschrijving = rec.ins_deel_omschrijving; -- zoek de taakcategorie v_errorhint := 'Zoek de taakcategorie'; SELECT ins_discipline_key INTO v_taakcat_key FROM ctr_discipline WHERE UPPER (ins_discipline_omschrijving) = UPPER (rec.ins_kenmerkwaarde3); BEGIN v_errorhint := 'Bepaal percentage'; v_percentage := NULL; -- IF rec.ins_kenmerkwaarde7 <> 1 -- AND rec.ins_kenmerkwaarde7 IS NOT NULL -- THEN -- v_percentage := rec.ins_kenmerkwaarde7 * 100; -- END IF; v_percentage := rec.ins_kenmerkwaarde7; v_errorhint := 'Bepaal materiaalkosten'; v_materiaal := FAC.safe_to_number ( REPLACE (rec.ins_kenmerkwaarde6, ',', '.')); -- zoek de taak v_errorhint := 'Zoek de taak'; SELECT ins_srtcontrole_key, ins_srtcontrole_periode, ins_srtcontrole_materiaal, ins_srtcontrole_percentage INTO v_srtcontrole_key, v_srtcontrole_periode, v_srtcontrole_materiaal, v_srtcontrole_percentage FROM ins_srtcontrole WHERE ins_srtinstallatie_key = v_srtdeel_key AND ins_srtcontrole_niveau = 'S' AND ctr_discipline_key = v_taakcat_key; IF v_srtcontrole_periode <> COALESCE (rec.ins_kenmerkwaarde8, 0) OR v_srtcontrole_materiaal <> v_materiaal OR v_srtcontrole_percentage <> v_percentage OR ( rec.ins_kenmerkwaarde9 IS NOT NULL AND rec.ins_kenmerkwaarde9 <> COALESCE (rec.ins_kenmerkwaarde10, '01010000')) THEN -- dan moeten we een dl_xcp record aanmaken v_errorhint := 'Aanmaken xcp'; INSERT INTO ins_srtcontroledl_xcp (ins_srtcontrole_key, ins_deel_key) VALUES (v_srtcontrole_key, v_deel_key) RETURNING ins_srtcontroledl_xcp_key INTO v_srtcontroledl_xcp_key; v_errorhint := 'Aanpassen periode'; IF v_srtcontrole_periode <> COALESCE (rec.ins_kenmerkwaarde8, 0) THEN UPDATE ins_srtcontroledl_xcp SET ins_srtcontroledl_xcp_periode = COALESCE ( TO_NUMBER (rec.ins_kenmerkwaarde8), 0) WHERE ins_srtcontroledl_xcp_key = v_srtcontroledl_xcp_key; END IF; v_errorhint := 'Aanpassen materiaal: ' || rec.ins_kenmerkwaarde6 || ' - ' || v_materiaal; IF v_srtcontrole_materiaal <> v_materiaal THEN UPDATE ins_srtcontroledl_xcp SET ins_srtcontroledl_xcp_materia = v_materiaal WHERE ins_srtcontroledl_xcp_key = v_srtcontroledl_xcp_key; END IF; v_errorhint := 'Aanpassen percentage'; IF v_srtcontrole_percentage <> v_percentage THEN UPDATE ins_srtcontroledl_xcp SET ins_srtcontroledl_xcp_perc = v_percentage WHERE ins_srtcontroledl_xcp_key = v_srtcontroledl_xcp_key; END IF; v_errorhint := 'Aanpassen startdatum: ' || rec.ins_kenmerkwaarde9; IF rec.ins_kenmerkwaarde9 IS NOT NULL AND rec.ins_kenmerkwaarde9 <> COALESCE (rec.ins_kenmerkwaarde10, '01010000') THEN UPDATE ins_srtcontroledl_xcp SET ins_srtcontroledl_xcp_startdat = TRUNC ( TO_DATE (rec.ins_kenmerkwaarde9, 'DDMMYYYY'), 'YYYY') WHERE ins_srtcontroledl_xcp_key = v_srtcontroledl_xcp_key; END IF; END IF; EXCEPTION WHEN NO_DATA_FOUND THEN v_errorhint := 'Bepalen level'; v_srtcontrole_level := 10; IF rec.ins_kenmerkwaarde3 <> 'Vervanging' THEN v_srtcontrole_level := 100; END IF; v_errorhint := 'Aanmaken srtcontrole'; -- We vullen de controle altijd met een bedrag van 0 euro. De overrule heeft dan het juiste -- bedrag. Hiermee voorkomen we een controle met een bepaald bedrag waarbij er voor een bepaald object -- die taak niet voorkomt. INSERT INTO ins_srtcontrole ( ins_srtinstallatie_key, ins_srtcontrole_niveau, ins_srtcontrole_omschrijving, ctr_discipline_key, ins_Srtcontrole_periode, ins_srtcontrole_eenheid, ins_srtcontrole_level, ins_srtcontrole_materiaal, ins_srtcontrole_percentage) VALUES ( v_srtdeel_key, 'S', rec.ins_kenmerkwaarde3 || ' - ' || rec.ins_srtdeel_code, v_taakcat_key, COALESCE ( TO_NUMBER (rec.ins_kenmerkwaarde8), 0), 4, v_srtcontrole_level, 0, v_srtcontrole_percentage) RETURNING ins_srtcontrole_key INTO v_srtcontrole_key; INSERT INTO ins_srtcontroledl_xcp (ins_srtcontrole_key, ins_srtcontroledl_xcp_materia, ins_deel_key) VALUES (v_srtcontrole_key, v_materiaal, v_deel_key) RETURNING ins_srtcontroledl_xcp_key INTO v_srtcontroledl_xcp_key; END; EXCEPTION WHEN OTHERS THEN oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 100); v_errormsg := 'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')'; fac.writelog ('KMMO.import MJOB', 'E', v_aanduiding || ': ' || v_errormsg, v_errorhint); END; END LOOP; EXCEPTION WHEN OTHERS THEN oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 100); v_errormsg := 'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')'; fac.writelog ('KMMO.import MJOB', 'E', v_aanduiding || ': ' || v_errormsg, v_errorhint); END; / ------ 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