diff --git a/CONN/conn.sql b/CONN/conn.sql index 9766741ae..a7adf7e66 100644 --- a/CONN/conn.sql +++ b/CONN/conn.sql @@ -1,7 +1,7 @@ -- Script containing customer specific configuration sql statements for CONN: Connexxion -- (c) 2005-2010 SG|facilitor bv --- $Revision: 163 $ --- $Modtime: 5-05-11 13:36 $ +-- $Revision: 164 $ +-- $Modtime: 7-06-11 13:48 $ -- -- Support: +31 53 4800710 @@ -994,12 +994,12 @@ order by 1,5; CREATE OR REPLACE VIEW CONN_V_PERSLID_Z_LOGWWMAIL (NAAM,NUMMER,LOGIN,WACHTWOORD,EMAIL) AS SELECT pf.prs_perslid_naam_full, p.prs_perslid_nr, p.prs_perslid_oslogin, - RPAD (' ', LENGTH (p.prs_perslid_wachtwoord) + 1, '*'), + '*****', p.prs_perslid_email FROM prs_perslid p, prs_v_perslid_fullnames pf WHERE pf.prs_perslid_key = p.prs_perslid_key AND ( p.prs_perslid_oslogin IS NULL - OR p.prs_perslid_wachtwoord IS NULL + OR p.prs_perslid_wachtwoord_hash IS NULL OR p.prs_perslid_email IS NULL ); @@ -1025,6 +1025,7 @@ select alg_locatie_omschrijving fclt_f_locatie from mld_opdr o ,MLD_V_AANWEZIGKENMERKOPDR ko ,mld_melding m + ,mld_stdmelding std ,alg_locatie l ,mld_discipline md ,ins_srtdiscipline sd @@ -1034,7 +1035,8 @@ and ko.MLD_KENMERK_KEY = 75 and o.MLD_TYPEOPDR_KEY = 5 and m.mld_melding_key = o.mld_melding_key and m.mld_alg_locatie_key = l.alg_locatie_key -AND md.ins_discipline_key = m.mld_ins_discipline_key +AND m.mld_stdmelding_key = std.mld_stdmelding_key +AND md.ins_discipline_key = std.mld_ins_discipline_key AND sd.ins_srtdiscipline_key = md.ins_srtdiscipline_key and b.prs_bedrijf_key(+) = o.MLD_UITVOERENDE_KEYS order by 1; @@ -1849,8 +1851,9 @@ where p.prs_afdeling_key = a.prs_afdeling_key CREATE OR REPLACE VIEW CONN_V_OPDR AS select m.MLD_INS_DISCIPLINE_KEY ,o.* -from mld_opdr o, mld_melding m -where o.mld_melding_key = m.mld_melding_key; +from mld_opdr o, mld_melding m, mld_stdmelding std +where m.mld_stdmelding_key = std.mld_stdmelding_key + and o.mld_melding_key = m.mld_melding_key; / CREATE OR REPLACE VIEW CONN_V_OPDR_IB AS @@ -1869,8 +1872,9 @@ where o.MLD_INS_DISCIPLINE_KEY <> 562; CREATE OR REPLACE VIEW CONN_V_MLD_VERPLICHTING_OFF (OPDRACHT, LOCATIE, BEDRIJF, DATUM, OFFERTE_STATUS, BEDRAG, EIGENAAR) AS -select (select ins_srtdiscipline_prefix from ins_srtdiscipline sd, ins_tab_discipline d, mld_melding m where - m.MLD_INS_DISCIPLINE_KEY = d.ins_discipline_key +select (select ins_srtdiscipline_prefix from ins_srtdiscipline sd, ins_tab_discipline d, mld_stdmelding std, mld_melding m where + m.mld_stdmelding_key = std.mld_stdmelding_key + and std.mld_ins_discipline_key = d.ins_discipline_key and d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key and m.mld_melding_key = o.mld_melding_key) || o.mld_melding_key ||'/' || o.MLD_OPDR_BEDRIJFOPDR_VOLGNR , (select alg_locatie_code @@ -1906,8 +1910,10 @@ SELECT TO_CHAR (mld_opdr_datumbegin, 'DD-MM-YYYY') datum, (SELECT ins_srtdiscipline_prefix FROM ins_srtdiscipline sd, ins_tab_discipline d, + mld_stdmelding std, mld_melding m - WHERE m.mld_ins_discipline_key = d.ins_discipline_key + WHERE m.mld_stdmelding_key = std.mld_stdmelding_key + AND std.mld_ins_discipline_key = d.ins_discipline_key AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key AND o.mld_melding_key = m.mld_melding_key) soort, opdracht, @@ -1943,8 +1949,9 @@ SELECT TO_CHAR (mld_opdr_datumbegin, 'DD-MM-YYYY') datum, CREATE OR REPLACE VIEW CONN_V_MLD_VERPLICHTING_FIAT (OPDRACHT, LOCATIE, FIATTEUR, DATUM, OFFERTE_STATUS, BEDRAG, EIGENAAR) AS -select (select ins_srtdiscipline_prefix from ins_srtdiscipline sd, ins_tab_discipline d, mld_melding m where - m.MLD_INS_DISCIPLINE_KEY = d.ins_discipline_key +select (select ins_srtdiscipline_prefix from ins_srtdiscipline sd, ins_tab_discipline d, mld_stdmelding std, mld_melding m where + m.mld_stdmelding_key = std.mld_stdmelding_key + and std.mld_ins_discipline_key = d.ins_discipline_key and d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key and m.mld_melding_key = o.mld_melding_key) || o.mld_melding_key ||'/' || o.MLD_OPDR_BEDRIJFOPDR_VOLGNR , (select alg_locatie_code @@ -2807,8 +2814,10 @@ AS NVL (fac.gettrackingdate ('ORDAFM', o.mld_opdr_key), TO_DATE ('29991231', 'yyyymmdd')), TRUNC (NVL (fac.gettrackingdate ('ORDAFM', o.mld_opdr_key), TO_DATE ('29991231', 'yyyymmdd'))) - TRUNC (fac.gettrackingdate ('ORDNEW', o.mld_opdr_key)) - FROM mld_opdr o, mld_melding m - WHERE o.mld_melding_key = m.mld_melding_key AND m.mld_ins_discipline_key = 163; + FROM mld_opdr o, mld_melding m, mld_stdmelding std + WHERE o.mld_melding_key = m.mld_melding_key + AND m.mld_stdmelding_key = std.mld_stdmelding_key + AND std.mld_ins_discipline_key = 163; -- FSN#1251 CREATE OR REPLACE VIEW conn_v_thema_ruimtefunctie (alg_ruimte_key, waarde) @@ -5772,9 +5781,10 @@ AS || ' af te melden in Facilitor.', o.mld_opdr_key, NULL - FROM mld_opdr o, mld_melding m, mld_disc_params md + FROM mld_opdr o, mld_melding m, mld_stdmelding std, mld_disc_params md WHERE o.mld_melding_key = m.mld_melding_key - AND m.mld_ins_discipline_key = md.mld_ins_discipline_key + AND m.mld_stdmelding_key = std.mld_stdmelding_key + AND std.mld_ins_discipline_key = md.mld_ins_discipline_key AND (o.mld_statusopdr_key = 5 OR o.mld_statusopdr_key = 8) AND mld_disc_params_noti_dagen IS NOT NULL AND TRUNC (o.mld_opdr_einddatum + md.mld_disc_params_noti_dagen) = @@ -5984,9 +5994,10 @@ AS CURSOR c_opdr IS SELECT mld_opdr_key, mld_opdr_bedrijfopdr_volgnr, o.mld_melding_key - FROM mld_opdr o, mld_melding m, mld_disc_params dp + FROM mld_opdr o, mld_melding m, mld_stdmelding std, mld_disc_params dp WHERE mld_statusopdr_key = 5 -- uitgegeven - AND m.mld_ins_discipline_key = dp.mld_ins_discipline_key + AND m.mld_stdmelding_key = std.mld_stdmelding_key + AND std.mld_ins_discipline_key = dp.mld_ins_discipline_key AND o.mld_melding_key = m.mld_melding_key AND o.mld_opdr_datumbegin < SYSDATE - dp.mld_disc_params_noti_dagen - 14; @@ -6680,13 +6691,15 @@ AS || TO_CHAR (m.mld_melding_key) item, td.ins_discipline_omschrijving soort, '-' bedr, '-' omvang FROM mld_melding m, + mld_stdmelding std, alg_v_allonroerendgoed og, ins_srtdiscipline sd, ins_tab_discipline td WHERE m.mld_melding_status IN (2, 3, 4, 7) -- open AND m.mld_alg_onroerendgoed_keys = og.alg_onroerendgoed_keys --AND og.alg_gebouw_key IS NOT NULL -- geen terreinen - AND m.mld_ins_discipline_key = td.ins_discipline_key + AND m.mld_stdmelding_key = std.mld_stdmelding_key + AND std.mld_ins_discipline_key = td.ins_discipline_key AND td.ins_srtdiscipline_key = sd.ins_srtdiscipline_key AND sd.ins_srtdiscipline_key IN (1, 3) -- alleen st- en b-meldingen @@ -6832,7 +6845,7 @@ AS FROM mld_melding m, mld_discipline md, alg_locatie l, mld_stdmelding st WHERE m.mld_alg_locatie_key = l.alg_locatie_key AND m.mld_stdmelding_key = st.mld_stdmelding_key - AND m.mld_ins_discipline_key = md.ins_discipline_key + AND st.mld_ins_discipline_key = md.ins_discipline_key AND md.ins_srtdiscipline_key = 1) GROUP BY c20, c21, c30, c31, c32 ORDER BY 1, 2, 3 DESC; @@ -7761,18 +7774,12 @@ BEGIN fac.imp_writelog (p_applname, p_applrun, 'I', 'Inhuurcontract gevonden', 'locatie: ' || rec.locatie_code || ' contract_omschrijving: ' || v_cnt_contract_omschrijving); v_errorhint := 'Inhuurcontract opzoeken rappeltermijn bij locatie: ' || rec.locatie_code || ' termijn:' || rec.opzegtermijn; - SELECT cnt_termijn_key + SELECT MAX(cnt_termijn_key) INTO v_cnt_termijn_key FROM ( SELECT cnt_termijn_key FROM cnt_termijn WHERE cnt_termijn_type = 'M' - AND cnt_termijn_aantal = rec.opzegtermijn - UNION ALL - SELECT cnt_termijn_key - FROM cnt_termijn - WHERE cnt_termijn_type = 'Y' - AND cnt_termijn_aantal = 1 - AND rec.opzegtermijn = 12); + AND cnt_termijn_aantal = COALESCE(rec.opzegtermijn, 0)); UPDATE cnt_contract SET cnt_contract_looptijd_van = rec.ingangsdatum, @@ -7909,17 +7916,17 @@ AS GROUP BY locatie, huurder ORDER BY 1; ---CONN#20077 +--CONN#20077 CREATE OR REPLACE VIEW conn_v_pgb_uitnutting ( fclt_f_Catalogus, - fclt_f_Besteller, + fclt_f_Besteller, Bestellimiet, Besteld_tav_pgb ) AS SELECT bd.ins_discipline_omschrijving Catalogus, - pf.prs_perslid_naam_full Besteller, + pf.prs_perslid_naam_full Besteller, fp.fac_profiel_limiet Limiet, SUM ( (bb.bes_bestelling_item_aantal * bb.bes_bestelling_item_prijs) @@ -7949,14 +7956,2326 @@ AS -- Gefiateerd, Besteld, Geleverd, Verwerkt AND pf.prs_perslid_key = p.prs_perslid_key GROUP BY bd.ins_discipline_omschrijving, pf.prs_perslid_naam_full, fp.fac_profiel_limiet -ORDER BY 1, 2; +ORDER BY 1, 2; +/* Formatted on 1-6-2011 21:22:23 (QP5 v5.115.810.9015) */ +CREATE OR REPLACE VIEW conn_v_rap_inspectieobj_expimp +( + fclt_f_locatiecode, + ruimte, + fclt_f_discipline, + fclt_f_groep, + fclt_f_objectsoortcode, + fclt_f_objectsoort, + object_id, + fclt_f_merk, + fclt_f_type, + fclt_f_hoogte_cm, + fclt_f_belasting_kg, + fclt_f_bereik_nm_bar, + fclt_f_voltage, + fclt_f_apkplicht, + fclt_f_leverancier, + fclt_f_soortcontrole, + periode, + controle_gepland, + controle_laatste, + controledatum, + controleopmerking, + fclt_f_afgekeurd +) +AS + SELECT x.alg_locatie_code, + COALESCE (z1.alg_ruimte_nr, z2.alg_ruimte_nr), + x.ins_discipline_omschrijving, + x.ins_srtgroep_omschrijving, + x.ins_srtdeel_code, + x.ins_srtdeel_omschrijving, + x.ins_deel_omschrijving, + k1.merk, + k2.TYPE, + k3.hoogte, + k4.belasting, + k5.bereik, + k6.voltage, + k7.apkplicht, + COALESCE (lev_onderhd.naam, lev_onderst.naam) leverancier, + csd.ins_srtcontrole_omschrijving, + TO_CHAR (csd.ins_srtcontrole_periode), + DECODE ( + y.ins_deelsrtcontrole_datum, + NULL, + x.ins_deel_aanmaak + csd.ins_srtcontrole_periode, + y.ins_deelsrtcontrole_datum + csd.ins_srtcontrole_periode + ), + DECODE (y.ins_deelsrtcontrole_datum, + NULL, x.ins_deel_aanmaak, + y.ins_deelsrtcontrole_datum), + NULL controledatum, + NULL controlopmerking, + k8.afgekeurd + FROM (SELECT scs.ins_srtinstallatie_key + ins_srtdeel_key, + scs.ins_srtcontrole_key, + scs.ins_srtcontrole_omschrijving, + scs.ins_srtcontrole_periode + FROM ins_srtcontrole scs + WHERE scs.ins_srtcontrole_niveau = + 'S' + UNION ALL + SELECT sd.ins_srtdeel_key, + scg.ins_srtcontrole_key, + scg.ins_srtcontrole_omschrijving, + scg.ins_srtcontrole_periode + FROM ins_srtcontrole scg, + ins_srtdeel sd + WHERE scg.ins_srtcontrole_niveau = + 'G' + AND scg.ins_srtinstallatie_key = + sd.ins_srtgroep_key + UNION ALL + SELECT sd.ins_srtdeel_key, + scd.ins_srtcontrole_key, + scd.ins_srtcontrole_omschrijving, + scd.ins_srtcontrole_periode + FROM ins_srtcontrole scd, + ins_srtgroep sg, + ins_srtdeel sd + WHERE scd.ins_srtcontrole_niveau = + 'D' + AND scd.ins_srtinstallatie_key = + sg.ins_discipline_key + AND sg.ins_srtgroep_key = + sd.ins_srtgroep_key) + csd + LEFT JOIN + (SELECT d.ins_deel_key, + d.ins_deel_aanmaak, + d.ins_deel_omschrijving, + d.ins_alg_ruimte_key, + d.ins_alg_ruimte_type, + sd.ins_srtdeel_key, + sd.ins_srtdeel_code, + sd.ins_srtdeel_omschrijving, + sg.ins_srtgroep_omschrijving, + td.ins_discipline_omschrijving, + l.alg_locatie_code + FROM ins_v_aanwezigdeel d, + ins_srtdeel sd, + ins_srtgroep sg, + ins_tab_discipline td, + alg_locatie l + WHERE d.ins_srtdeel_key = + sd.ins_srtdeel_key + AND sd.ins_srtgroep_key = + sg.ins_srtgroep_key + AND sg.ins_discipline_key = + td.ins_discipline_key + AND d.ins_alg_locatie_key = + l.alg_locatie_key(+)) + x + ON csd.ins_srtdeel_key = + x.ins_srtdeel_key + LEFT JOIN + (SELECT DISTINCT + co.cnt_ins_deel_key, + b.prs_bedrijf_naam + naam + FROM cnt_contract_object co, + cnt_contract c, + ins_tab_discipline cd, + prs_bedrijf b + WHERE co.cnt_contract_object_verwijder IS NULL + AND co.cnt_ins_deel_key IS NOT NULL + AND co.cnt_contract_key = + c.cnt_contract_key + AND c.cnt_contract_looptijd_tot >= + TRUNC ( + ADD_MONTHS ( + SYSDATE, + -12 + ), + 'YYYY' + ) + AND c.ins_discipline_key = + cd.ins_discipline_key + AND cd.ins_discipline_verwijder IS NULL + AND c.cnt_prs_bedrijf_key = + b.prs_bedrijf_key) + lev_onderhd + ON x.ins_deel_key = + lev_onderhd.cnt_ins_deel_key + LEFT JOIN + (SELECT DISTINCT + co.cnt_ins_srtdeel_key, + b.prs_bedrijf_naam + naam + FROM cnt_contract_object co, + cnt_contract c, + ins_tab_discipline cd, + prs_bedrijf b + WHERE co.cnt_contract_object_verwijder IS NULL + AND co.cnt_ins_srtdeel_key IS NOT NULL + AND co.cnt_contract_key = + c.cnt_contract_key + AND c.cnt_contract_looptijd_tot >= + TRUNC ( + ADD_MONTHS ( + SYSDATE, + -12 + ), + 'YYYY' + ) + AND c.ins_discipline_key = + cd.ins_discipline_key + AND cd.ins_discipline_verwijder IS NULL + AND c.cnt_prs_bedrijf_key = + b.prs_bedrijf_key) + lev_onderst + ON x.ins_srtdeel_key = + lev_onderst.cnt_ins_srtdeel_key + LEFT JOIN + (SELECT ins_deel_key, + ins_kenmerkdeel_waarde + merk + FROM ins_v_aanwezigkenmerkdeel kd, + ins_kenmerk k + WHERE kd.ins_kenmerk_key = + k.ins_kenmerk_key + AND k.ins_srtkenmerk_key = + 42) k1 + ON x.ins_deel_key = k1.ins_deel_key + LEFT JOIN + (SELECT ins_deel_key, + ins_kenmerkdeel_waarde + TYPE + FROM ins_v_aanwezigkenmerkdeel kd, + ins_kenmerk k + WHERE kd.ins_kenmerk_key = + k.ins_kenmerk_key + AND k.ins_srtkenmerk_key = + 41) k2 + ON x.ins_deel_key = k2.ins_deel_key + LEFT JOIN + (SELECT ins_deel_key, + ins_kenmerkdeel_waarde + hoogte + FROM ins_v_aanwezigkenmerkdeel kd, + ins_kenmerk k + WHERE kd.ins_kenmerk_key = + k.ins_kenmerk_key + AND k.ins_srtkenmerk_key = + 1461) k3 + ON x.ins_deel_key = k3.ins_deel_key + LEFT JOIN + (SELECT ins_deel_key, + ins_kenmerkdeel_waarde + belasting + FROM ins_v_aanwezigkenmerkdeel kd, + ins_kenmerk k + WHERE kd.ins_kenmerk_key = + k.ins_kenmerk_key + AND k.ins_srtkenmerk_key = 1462) + k4 + ON x.ins_deel_key = k4.ins_deel_key + LEFT JOIN + (SELECT ins_deel_key, + ins_kenmerkdeel_waarde bereik + FROM ins_v_aanwezigkenmerkdeel kd, + ins_kenmerk k + WHERE kd.ins_kenmerk_key = + k.ins_kenmerk_key + AND k.ins_srtkenmerk_key = 1463) + k5 + ON x.ins_deel_key = k5.ins_deel_key + LEFT JOIN + (SELECT ins_deel_key, + ins_kenmerkdeel_waarde voltage + FROM ins_v_aanwezigkenmerkdeel kd, + ins_kenmerk k + WHERE kd.ins_kenmerk_key = + k.ins_kenmerk_key + AND k.ins_srtkenmerk_key = 1464) k6 + ON x.ins_deel_key = k6.ins_deel_key + LEFT JOIN + (SELECT ins_deel_key, + ins_kenmerkdeel_waarde apkplicht -- TODO: Eigen tabel??? + FROM ins_v_aanwezigkenmerkdeel kd, + ins_kenmerk k + WHERE kd.ins_kenmerk_key = k.ins_kenmerk_key + AND k.ins_srtkenmerk_key = 1465) k7 + ON x.ins_deel_key = k7.ins_deel_key + LEFT JOIN + (SELECT ins_deel_key, + ins_kenmerkdeel_waarde afgekeurd -- TODO: Eigen tabel??? + FROM ins_v_aanwezigkenmerkdeel kd, ins_kenmerk k + WHERE kd.ins_kenmerk_key = k.ins_kenmerk_key + AND k.ins_srtkenmerk_key = 1466) k8 + ON x.ins_deel_key = k8.ins_deel_key + LEFT JOIN + (SELECT dsc.ins_deel_key, + dsc.ins_srtcontrole_key, + dsc.ins_deelsrtcontrole_datum, + dsc.ins_deelsrtcontrole_opmerking + FROM ins_deelsrtcontrole dsc + WHERE dsc.ins_deelsrtcontrole_datum = + (SELECT MAX (ins_deelsrtcontrole_datum) + FROM ins_deelsrtcontrole + WHERE ins_deel_key = dsc.ins_deel_key + AND ins_srtcontrole_key = + dsc.ins_srtcontrole_key)) y + ON x.ins_deel_key = y.ins_deel_key + AND csd.ins_srtcontrole_key = y.ins_srtcontrole_key + LEFT JOIN + (SELECT r.alg_ruimte_key, + 'R' alg_ruimte_type, + r.alg_ruimte_nr + FROM alg_ruimte r + WHERE r.alg_ruimte_key = r.alg_ruimte_key) z1 + ON x.ins_alg_ruimte_key = z1.alg_ruimte_key + AND x.ins_alg_ruimte_type = z1.alg_ruimte_type + LEFT JOIN + (SELECT wp.prs_werkplek_key, + 'W' alg_ruimte_type, + r.alg_ruimte_nr + FROM prs_werkplek wp, alg_ruimte r + WHERE wp.prs_alg_ruimte_key = r.alg_ruimte_key) z2 + ON x.ins_alg_ruimte_key = z2.prs_werkplek_key + AND x.ins_alg_ruimte_type = z2.alg_ruimte_type; -BEGIN fac.registercustversion('CONN', 43); END; +/* Formatted on 20-5-2011 17:58:58 (QP5 v5.115.810.9015) */ +CREATE OR REPLACE PROCEDURE conn_import_inspectieobj ( + p_applname IN VARCHAR2, + p_applrun IN VARCHAR2, + p_filedir IN VARCHAR2, + p_filename IN VARCHAR2 +) +IS + c_delim VARCHAR2 (1) := ';'; + v_newline VARCHAR2 (1000); -- Input line + v_errormsg 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 VARCHAR (200); + -- De importvelden: + v_alg_locatie_code VARCHAR2 (255); -- C10 + v_alg_ruimte_nr VARCHAR2 (255); -- C10 + v_ins_discipline_omschrijving VARCHAR2 (255); -- C30 + v_ins_srtgroep_omschrijving VARCHAR2 (255); -- C60 + v_ins_srtdeel_code VARCHAR2 (255); -- C10 + v_ins_srtdeel_omschrijving VARCHAR2 (255); -- C100 + v_ins_deel_omschrijving VARCHAR2 (255); -- C60 + v_merk VARCHAR2 (255); -- C60 + v_type VARCHAR2 (255); -- C60 + v_hoogte VARCHAR2 (255); -- C60 + v_belasting VARCHAR2 (255); -- C60 + v_bereik VARCHAR2 (255); -- C60 + v_voltage VARCHAR2 (255); -- C60 + v_apkplicht VARCHAR2 (255); -- C60 + v_prs_bedrijf_naam VARCHAR2 (255); -- C60 + v_ins_srtcontrole_oms VARCHAR2 (255); -- C60 + x_periode VARCHAR2 (255); -- N4 + x_controle_gepland VARCHAR2 (255); -- DATE + x_controle_laatste VARCHAR2 (255); -- DATE + v_ins_controle_datum VARCHAR2 (255); -- DATE + v_ins_controle_opm VARCHAR2 (1024); -- C500 + v_afgekeurd VARCHAR2 (255); -- C60 + -- Overig: + v_ins_controle_datum_d DATE; -- DATE + + CURSOR c1 + IS + SELECT * + FROM fac_imp_file + WHERE fac_imp_file_applicatie = p_applname + ORDER BY fac_imp_file_index; +BEGIN + -- Eerst opruiming + DELETE FROM imp_log + WHERE imp_log_applicatie = p_applname; + + DELETE FROM fac_imp_ins; + + COMMIT; + + v_count_tot := 0; + v_count_import := 0; + header_is_valid := 0; + + FOR rec1 IN c1 + LOOP + BEGIN + v_newline := rec1.fac_imp_file_line; + v_errormsg := 'Fout bij opvragen importregel'; + v_aanduiding := ''; + v_ongeldig := 0; + -- Lees alle veldwaarden + fac.imp_getfield (v_newline, c_delim, v_alg_locatie_code); + fac.imp_getfield (v_newline, c_delim, v_alg_ruimte_nr); + 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_srtdeel_omschrijving); + fac.imp_getfield (v_newline, c_delim, v_ins_deel_omschrijving); + fac.imp_getfield (v_newline, c_delim, v_merk); + fac.imp_getfield (v_newline, c_delim, v_type); + fac.imp_getfield (v_newline, c_delim, v_hoogte); + fac.imp_getfield (v_newline, c_delim, v_belasting); + fac.imp_getfield (v_newline, c_delim, v_bereik); + fac.imp_getfield (v_newline, c_delim, v_voltage); + fac.imp_getfield (v_newline, c_delim, v_apkplicht); + fac.imp_getfield (v_newline, c_delim, v_prs_bedrijf_naam); + fac.imp_getfield (v_newline, c_delim, v_ins_srtcontrole_oms); + fac.imp_getfield (v_newline, c_delim, x_periode); + fac.imp_getfield (v_newline, c_delim, x_controle_gepland); + fac.imp_getfield (v_newline, c_delim, x_controle_laatste); + fac.imp_getfield (v_newline, c_delim, v_ins_controle_datum); + fac.imp_getfield (v_newline, c_delim, v_ins_controle_opm); + fac.imp_getfield (v_newline, c_delim, v_afgekeurd); + + v_aanduiding := + '[' + || v_ins_discipline_omschrijving + || '|' + || v_ins_srtgroep_omschrijving + || '|' + || v_ins_srtdeel_code + || '|' + || v_ins_srtdeel_omschrijving + || '|' + || v_ins_deel_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_alg_locatie_code) = 'LOCATIECODE' + AND UPPER (v_alg_ruimte_nr) = 'RUIMTE' + AND UPPER (v_ins_discipline_omschrijving) = 'DISCIPLINE' + AND UPPER (v_ins_srtgroep_omschrijving) = 'GROEP' + AND UPPER (v_ins_srtdeel_code) = 'OBJECTSOORTCODE' + AND UPPER (v_ins_srtdeel_omschrijving) = 'OBJECTSOORT' + AND UPPER (v_ins_deel_omschrijving) = 'OBJECT_ID' + AND UPPER (v_merk) = 'MERK' + AND UPPER (v_type) = 'TYPE' + AND UPPER (v_hoogte) = 'HOOGTE_CM' + AND UPPER (v_belasting) = 'BELASTING_KG' + AND UPPER (v_bereik) = 'BEREIK_NM_BAR' + AND UPPER (v_voltage) = 'VOLTAGE' + AND UPPER (v_apkplicht) = 'APKPLICHT' + AND UPPER (v_prs_bedrijf_naam) = 'LEVERANCIER' + AND UPPER (v_ins_srtcontrole_oms) = 'SOORTCONTROLE' + AND UPPER (x_periode) = 'PERIODE' + AND UPPER (x_controle_gepland) = 'CONTROLE_GEPLAND' + AND UPPER (x_controle_laatste) = 'CONTROLE_LAATSTE' + AND UPPER (v_ins_controle_datum) = 'CONTROLEDATUM' + AND UPPER (v_ins_controle_opm) = 'CONTROLEOPMERKING' + AND UPPER (v_afgekeurd) = 'AFGEKEURD' + THEN + header_is_valid := 1; + END IF; + ELSE + v_count_tot := v_count_tot + 1; + -- Controleer alle veldwaarden + v_errormsg := 'Locatiecode ongeldig'; + v_alg_locatie_code := TRIM (v_alg_locatie_code); + + IF LENGTH (v_alg_locatie_code) > 10 + THEN + v_alg_locatie_code := SUBSTR (v_alg_locatie_code, 1, 10); + fac.imp_writelog ( + p_applname, + p_applrun, + 'W', + v_aanduiding || v_errormsg, + 'Locatiecode wordt afgebroken tot [' + || v_alg_locatie_code + || ']' + ); + END IF; + + -- + v_errormsg := 'Ruimte ongeldig'; + v_alg_ruimte_nr := TRIM (v_alg_ruimte_nr); + + IF LENGTH (v_alg_ruimte_nr) > 10 + THEN + v_alg_ruimte_nr := SUBSTR (v_alg_ruimte_nr, 1, 10); + fac.imp_writelog ( + p_applname, + p_applrun, + 'W', + v_aanduiding || v_errormsg, + 'Ruimte wordt afgebroken tot [' || v_alg_ruimte_nr || ']' + ); + END IF; + + -- + v_errormsg := 'Disciplineomschrijving ongeldig'; + 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_applname, + p_applrun, + 'W', + v_aanduiding || v_errormsg, + 'Disciplineomschrijving wordt afgebroken tot [' + || v_ins_discipline_omschrijving + || ']' + ); + END IF; + + -- + v_errormsg := 'Groepsoortomschrijving ongeldig'; + 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_applname, + p_applrun, + 'W', + v_aanduiding || v_errormsg, + 'Groepsoortomschrijving wordt afgebroken tot [' + || v_ins_srtgroep_omschrijving + || ']' + ); + END IF; + + -- + v_errormsg := 'Objectsoortcode ongeldig'; + 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_applname, + p_applrun, + 'W', + v_aanduiding || v_errormsg, + 'Objectsoortcode wordt afgebroken tot [' + || v_ins_srtdeel_code + || ']' + ); + END IF; + + -- + v_errormsg := 'Objectsoortomschrijving ongeldig'; + v_ins_srtdeel_omschrijving := TRIM (v_ins_srtdeel_omschrijving); + + IF LENGTH (v_ins_srtdeel_omschrijving) > 100 + THEN + v_ins_srtdeel_omschrijving := + SUBSTR (TRIM (v_ins_srtdeel_omschrijving), 1, 100); + fac.imp_writelog ( + p_applname, + p_applrun, + 'W', + v_aanduiding || v_errormsg, + 'Objectsoortomschrijving wordt afgebroken tot [' + || v_ins_srtdeel_omschrijving + || ']' + ); + END IF; + + -- + v_errormsg := 'Objectomschrijving ongeldig'; + v_ins_deel_omschrijving := TRIM (v_ins_deel_omschrijving); + + IF LENGTH (v_ins_deel_omschrijving) > 60 + THEN + v_ins_deel_omschrijving := + SUBSTR (TRIM (v_ins_deel_omschrijving), 1, 60); + fac.imp_writelog ( + p_applname, + p_applrun, + 'W', + v_aanduiding || v_errormsg, + 'Objectomschrijving wordt afgebroken tot [' + || v_ins_deel_omschrijving + || ']' + ); + END IF; + + -- + v_errormsg := 'Merk ongeldig'; + v_merk := TRIM (v_merk); + + IF LENGTH (v_merk) > 60 + THEN + v_merk := SUBSTR (v_merk, 1, 60); + fac.imp_writelog ( + p_applname, + p_applrun, + 'W', + v_aanduiding || v_errormsg, + 'Merk wordt afgebroken tot [' || v_merk || ']' + ); + END IF; + + -- + v_errormsg := 'Type ongeldig'; + v_type := TRIM (v_type); + + IF LENGTH (v_type) > 60 + THEN + v_type := SUBSTR (v_type, 1, 60); + fac.imp_writelog ( + p_applname, + p_applrun, + 'W', + v_aanduiding || v_errormsg, + 'Type wordt afgebroken tot [' || v_type || ']' + ); + END IF; + + -- + v_errormsg := 'Hoogte ongeldig'; + v_hoogte := TRIM (v_hoogte); + + IF LENGTH (v_hoogte) > 60 + THEN + v_hoogte := SUBSTR (v_hoogte, 1, 60); + fac.imp_writelog ( + p_applname, + p_applrun, + 'W', + v_aanduiding || v_errormsg, + 'Hoogte wordt afgebroken tot [' || v_hoogte || ']' + ); + END IF; + + -- + v_errormsg := 'Belasting ongeldig'; + v_belasting := TRIM (v_belasting); + + IF LENGTH (v_belasting) > 60 + THEN + v_belasting := SUBSTR (v_belasting, 1, 60); + fac.imp_writelog ( + p_applname, + p_applrun, + 'W', + v_aanduiding || v_errormsg, + 'Belasting wordt afgebroken tot [' || v_belasting || ']' + ); + END IF; + + -- + v_errormsg := 'Bereik ongeldig'; + v_bereik := TRIM (v_bereik); + + IF LENGTH (v_bereik) > 60 + THEN + v_bereik := SUBSTR (v_bereik, 1, 60); + fac.imp_writelog ( + p_applname, + p_applrun, + 'W', + v_aanduiding || v_errormsg, + 'Bereik wordt afgebroken tot [' || v_bereik || ']' + ); + END IF; + + -- + v_errormsg := 'Voltage ongeldig'; + v_voltage := TRIM (v_voltage); + + IF LENGTH (v_voltage) > 60 + THEN + v_voltage := SUBSTR (v_voltage, 1, 60); + fac.imp_writelog ( + p_applname, + p_applrun, + 'W', + v_aanduiding || v_errormsg, + 'Voltage wordt afgebroken tot [' || v_voltage || ']' + ); + END IF; + + -- + v_errormsg := 'APK-plicht ongeldig'; + v_apkplicht := TRIM (v_apkplicht); + + IF LENGTH (v_apkplicht) > 60 + THEN + v_apkplicht := SUBSTR (v_apkplicht, 1, 60); + fac.imp_writelog ( + p_applname, + p_applrun, + 'W', + v_aanduiding || v_errormsg, + 'APK-plicht wordt afgebroken tot [' || v_apkplicht || ']' + ); + END IF; + + -- + v_errormsg := 'Leverancier ongeldig'; + v_prs_bedrijf_naam := TRIM (v_prs_bedrijf_naam); + + IF LENGTH (v_prs_bedrijf_naam) > 60 + THEN + v_prs_bedrijf_naam := SUBSTR (v_prs_bedrijf_naam, 1, 60); + fac.imp_writelog ( + p_applname, + p_applrun, + 'W', + v_aanduiding || v_errormsg, + 'Leverancier wordt afgebroken tot [' + || v_prs_bedrijf_naam + || ']' + ); + END IF; + + -- + v_errormsg := 'Soort controle ongeldig'; + v_ins_srtcontrole_oms := TRIM (v_ins_srtcontrole_oms); + + IF LENGTH (v_ins_srtcontrole_oms) > 60 + THEN + v_ins_srtcontrole_oms := SUBSTR (v_ins_srtcontrole_oms, 1, 60); + fac.imp_writelog ( + p_applname, + p_applrun, + 'W', + v_aanduiding || v_errormsg, + 'Soort controle wordt afgebroken tot [' + || v_ins_srtcontrole_oms + || ']' + ); + END IF; + + -- Skip 'Periode' + -- Skip 'Controle gepland' + -- Skip 'Controle laatste' + + -- + v_errormsg := 'Controledatum ongeldig'; + v_ins_controle_datum := TRIM (v_ins_controle_datum); + v_ins_controle_datum_d := NULL; + + IF (v_ins_controle_datum IS NOT NULL) + THEN + IF (fac.safe_to_date (v_ins_controle_datum, 'dd-mm-yyyy') IS NULL) + THEN + fac.imp_writelog (p_applname, + p_applrun, + 'W', + v_aanduiding || v_errormsg, + 'Controledatum wordt genegeerd'); + ELSE + v_ins_controle_datum_d := + fac.safe_to_date (v_ins_controle_datum, 'dd-mm-yyyy'); + END IF; + END IF; + + -- + v_errormsg := 'Controleopmerking ongeldig'; + v_ins_controle_opm := TRIM (v_ins_controle_opm); + + IF LENGTH (v_ins_controle_opm) > 500 + THEN + v_ins_controle_opm := SUBSTR (v_ins_controle_opm, 1, 500); + fac.imp_writelog ( + p_applname, + p_applrun, + 'W', + v_aanduiding || v_errormsg, + 'Controleopmerking wordt afgekapt op 500 posities' + ); + END IF; + + -- + v_errormsg := 'Afgekeurd ongeldig'; + v_afgekeurd := TRIM (v_afgekeurd); + + IF LENGTH (v_afgekeurd) > 60 + THEN + v_afgekeurd := SUBSTR (v_afgekeurd, 1, 60); + fac.imp_writelog ( + p_applname, + p_applrun, + 'W', + v_aanduiding || v_errormsg, + 'Afgekeurd wordt afgebroken tot [' || v_afgekeurd || ']' + ); + END IF; + + -- Insert geformatteerde import record + IF v_ongeldig = 0 + THEN + BEGIN + v_errormsg := 'Fout bij wegschrijven importregel'; + + INSERT INTO conn_imp_inspectieobj ( + alg_locatie_code, + alg_ruimte_nr, + ins_discipline_omschrijving, + ins_srtgroep_omschrijving, + ins_srtdeel_code, + ins_srtdeel_omschrijving, + ins_deel_omschrijving, + merk, + TYPE, + hoogte, + belasting, + bereik, + voltage, + apkplicht, + prs_bedrijf_naam, + ins_srtcontrole_omschrijving, + ins_deelsrtcontrole_datum, + ins_deelsrtcontrole_opmerking, + afgekeurd + ) + VALUES (v_alg_locatie_code, + v_alg_ruimte_nr, + v_ins_discipline_omschrijving, + v_ins_srtgroep_omschrijving, + v_ins_srtdeel_code, + v_ins_srtdeel_omschrijving, + v_ins_deel_omschrijving, + v_merk, + v_type, + v_hoogte, + v_belasting, + v_bereik, + v_voltage, + v_apkplicht, + v_prs_bedrijf_naam, + v_ins_srtcontrole_oms, + v_ins_controle_datum, + v_ins_controle_opm, + v_afgekeurd); + + COMMIT; + v_count_import := v_count_import + 1; + EXCEPTION + WHEN OTHERS + THEN + oracle_err_num := SQLCODE; + oracle_err_mes := SUBSTR (SQLERRM, 1, 200); + v_errormsg := + v_errormsg + || ' ORACLE (error ' + || oracle_err_num + || '/' + || oracle_err_mes + || ')'; + fac.imp_writelog (p_applname, + p_applrun, + 'W', + v_aanduiding || v_errormsg, + ''); + + COMMIT; + END; + END IF; + END IF; + END; + END LOOP; + + IF (header_is_valid = 0) + THEN + fac.imp_writelog (p_applname, + p_applrun, + 'E', + 'Ongeldig importbestand', + 'Geen header of header niet volgens specificatie!'); + ELSE + fac.imp_writelog ( + p_applname, + p_applrun, + 'S', + 'Inspectieobjecten/aantal ingelezen importregels: ' + || TO_CHAR (v_count_tot), + '' + ); + fac.imp_writelog ( + p_applname, + p_applrun, + 'S', + 'Inspectieobjecten/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, 200); + v_errormsg := + v_errormsg + || ' ORACLE (error ' + || oracle_err_num + || '/' + || oracle_err_mes + || ')'; + fac.imp_writelog (p_applname, + p_applrun, + 'E', + v_aanduiding || v_errormsg, + 'Inleesproces inspectieobjecten afgebroken!'); +END conn_import_inspectieobj; / -BEGIN adm.systrackscript('$Workfile: conn.sql $', '$Revision: 163 $', 0); END; +/* Formatted on 7-6-2011 11:50:50 (QP5 v5.115.810.9015) */ +CREATE OR REPLACE PROCEDURE conn_update_inspectieobj ( + p_applname IN VARCHAR2, + p_applrun IN VARCHAR2 +) +AS + v_errormsg VARCHAR2 (1000); + oracle_err_num NUMBER; + oracle_err_mes VARCHAR2 (200); + + -- SUBPROC + PROCEDURE add_insdiscipline (p_applname IN VARCHAR2, + p_applrun IN VARCHAR2) + AS + CURSOR c1 + IS + SELECT UPPER (ins_discipline_omschrijving) ins_discipline_upper, + MAX (ins_discipline_omschrijving) + ins_discipline_omschrijving + FROM conn_imp_inspectieobj + GROUP BY UPPER (ins_discipline_omschrijving); + + v_errormsg VARCHAR2 (1024); + v_discipline_key NUMBER (10); + ccount NUMBER (10); + oracle_err_num NUMBER; + oracle_err_mes VARCHAR2 (200); + v_count_tot NUMBER (10); + v_count_update NUMBER (10); + BEGIN + v_count_tot := 0; + v_count_update := 0; + + FOR rec IN c1 + LOOP + BEGIN + v_count_tot := v_count_tot + 1; + v_errormsg := + 'Fout bij toevoegen INS-discipline [' + || rec.ins_discipline_omschrijving + || '] '; + + SELECT COUNT ( * ) + INTO ccount + FROM ins_tab_discipline + WHERE ins_discipline_verwijder IS NULL + AND ins_discipline_module = 'INS' + AND UPPER (TRIM (ins_discipline_omschrijving)) = + UPPER (TRIM (rec.ins_discipline_omschrijving)); + + IF ccount = 0 + THEN + INSERT INTO ins_tab_discipline (ins_discipline_module, + ins_discipline_omschrijving, + ins_discipline_min_level, + ins_discipline_kpnverplicht) + VALUES ('INS', + SUBSTR (rec.ins_discipline_omschrijving, 1, 30), + 1, + 0) + RETURNING ins_discipline_key INTO v_discipline_key; + + INSERT INTO ins_disc_params ( + ins_discipline_key, + ins_disc_params_type + ) + VALUES (v_discipline_key, 0); + + COMMIT; + v_count_update := v_count_update + 1; + END IF; + EXCEPTION + WHEN OTHERS + THEN + oracle_err_num := SQLCODE; + oracle_err_mes := SUBSTR (SQLERRM, 1, 200); + v_errormsg := + v_errormsg + || 'ORACLE (error ' + || oracle_err_num + || '/' + || oracle_err_mes + || ')'; + fac.imp_writelog (p_applname, + p_applrun, + 'W', + v_errormsg, + ''); + COMMIT; + END; + END LOOP; + + fac.imp_writelog ( + p_applname, + p_applrun, + 'S', + 'INS-Disciplines/aantal ingelezen: ' || TO_CHAR (v_count_tot), + '' + ); + fac.imp_writelog ( + p_applname, + p_applrun, + 'S', + 'INS-Disciplines/aantal toegevoegd: ' || TO_CHAR (v_count_update), + '' + ); + COMMIT; + END; + + -- SUBPROC + PROCEDURE add_srtgroep (p_applname IN VARCHAR2, p_applrun IN VARCHAR2) + AS + CURSOR c1 + IS + SELECT UPPER (ins_discipline_omschrijving) ins_discipline_upper, + UPPER (ins_srtgroep_omschrijving) ins_srtgroep_upper, + MAX (ins_discipline_omschrijving) + ins_discipline_omschrijving, + MAX (ins_srtgroep_omschrijving) ins_srtgroep_omschrijving + FROM conn_imp_inspectieobj + GROUP BY UPPER (ins_discipline_omschrijving), + UPPER (ins_srtgroep_omschrijving); + + v_errormsg VARCHAR2 (1024); + v_discipline_key NUMBER (10); + ccount NUMBER (10); + oracle_err_num NUMBER; + oracle_err_mes VARCHAR2 (200); + v_count_tot NUMBER (10); + v_count_update NUMBER (10); + BEGIN + v_count_tot := 0; + v_count_update := 0; + + FOR rec IN c1 + LOOP + BEGIN + v_count_tot := v_count_tot + 1; + v_errormsg := + 'Fout bij bepalen INS-discipline [' + || rec.ins_discipline_omschrijving + || ']'; + + SELECT ins_discipline_key + INTO v_discipline_key + FROM ins_tab_discipline + WHERE ins_discipline_verwijder IS NULL + AND ins_discipline_module = 'INS' + AND UPPER (TRIM (ins_discipline_omschrijving)) = + UPPER (TRIM (rec.ins_discipline_omschrijving)); + + v_errormsg := + 'Fout bij toevoegen INS-groepsoort [' + || rec.ins_srtgroep_omschrijving + || '] '; + + SELECT COUNT ( * ) + INTO ccount + FROM ins_srtgroep + WHERE ins_srtgroep_verwijder IS NULL + AND ins_discipline_key = v_discipline_key + AND UPPER (TRIM (ins_srtgroep_omschrijving)) = + UPPER (TRIM (rec.ins_srtgroep_omschrijving)); + + IF ccount = 0 + THEN + INSERT INTO ins_srtgroep ( + ins_discipline_key, + ins_srtgroep_module, + ins_srtgroep_omschrijving + ) + VALUES ( + v_discipline_key, + 'INS', + SUBSTR (TRIM (rec.ins_srtgroep_omschrijving), + 1, + 30) + ); + + COMMIT; + v_count_update := v_count_update + 1; + END IF; + EXCEPTION + WHEN OTHERS + THEN + oracle_err_num := SQLCODE; + oracle_err_mes := SUBSTR (SQLERRM, 1, 200); + v_errormsg := + v_errormsg + || 'ORACLE (error ' + || oracle_err_num + || '/' + || oracle_err_mes + || ')'; + fac.imp_writelog (p_applname, + p_applrun, + 'W', + v_errormsg, + ''); + COMMIT; + END; + END LOOP; + + fac.imp_writelog ( + p_applname, + p_applrun, + 'S', + 'INS-Groepsoorten/aantal ingelezen: ' || TO_CHAR (v_count_tot), + '' + ); + fac.imp_writelog ( + p_applname, + p_applrun, + 'S', + 'INS-Groepsoorten/aantal toegevoegd: ' || TO_CHAR (v_count_update), + '' + ); + COMMIT; + END; + + -- SUBPROC + PROCEDURE add_srtdeel (p_applname IN VARCHAR2, p_applrun IN VARCHAR2) + AS + CURSOR c1 + IS + SELECT UPPER (ins_discipline_omschrijving) ins_discipline_upper, + UPPER (ins_srtgroep_omschrijving) ins_srtgroep_upper, + UPPER (ins_srtdeel_code) ins_srtdeel_code_upper, + UPPER (ins_srtdeel_omschrijving) ins_srtdeel_upper, + MAX (ins_discipline_omschrijving) + ins_discipline_omschrijving, + MAX (ins_srtgroep_omschrijving) ins_srtgroep_omschrijving, + MAX (ins_srtdeel_code) ins_srtdeel_code, + MAX (ins_srtdeel_omschrijving) ins_srtdeel_omschrijving + FROM conn_imp_inspectieobj + GROUP BY UPPER (ins_discipline_omschrijving), + UPPER (ins_srtgroep_omschrijving), + UPPER (ins_srtdeel_code), + UPPER (ins_srtdeel_omschrijving); + + v_errormsg VARCHAR2 (1024); + v_discipline_key NUMBER (10); + v_srtgroep_key NUMBER (10); + ccount NUMBER (10); + oracle_err_num NUMBER; + oracle_err_mes VARCHAR2 (200); + v_count_tot NUMBER (10); + v_count_update NUMBER (10); + BEGIN + v_count_tot := 0; + v_count_update := 0; + + FOR rec IN c1 + LOOP + BEGIN + v_count_tot := v_count_tot + 1; + v_errormsg := + 'Fout bij bepalen INS-discipline [' + || rec.ins_discipline_omschrijving + || ']'; + + SELECT ins_discipline_key + INTO v_discipline_key + FROM ins_tab_discipline + WHERE ins_discipline_verwijder IS NULL + AND ins_discipline_module = 'INS' + AND UPPER (TRIM (ins_discipline_omschrijving)) = + UPPER (TRIM (rec.ins_discipline_omschrijving)); + + v_errormsg := + 'Fout bij bepalen INS-groepsoort [' + || rec.ins_srtgroep_omschrijving + || ']'; + + SELECT ins_srtgroep_key + INTO v_srtgroep_key + FROM ins_srtgroep + WHERE ins_srtgroep_verwijder IS NULL + AND ins_srtgroep_module = 'INS' + AND ins_discipline_key = v_discipline_key + AND UPPER (TRIM (ins_srtgroep_omschrijving)) = + UPPER (TRIM (rec.ins_srtgroep_omschrijving)); + + v_errormsg := + 'Fout bij toevoegen INS-objectsoort [' + || rec.ins_srtdeel_omschrijving + || '] '; + + SELECT COUNT ( * ) + INTO ccount + FROM ins_srtdeel + WHERE ins_srtdeel_verwijder IS NULL + AND ins_srtdeel_module = 'INS' + AND ins_srtgroep_key = v_srtgroep_key + AND UPPER (TRIM (ins_srtdeel_omschrijving)) = + UPPER (TRIM (rec.ins_srtdeel_omschrijving)); + + IF ccount = 0 + THEN + -- Binding 17 betekent ruimtegebonden of persoonsgebonden??? + INSERT INTO ins_srtdeel (ins_srtgroep_key, + ins_srtdeel_module, + ins_srtdeel_code, + ins_srtdeel_omschrijving, + ins_srtdeel_binding) + VALUES (v_srtgroep_key, + 'INS', + rec.ins_srtdeel_code, + rec.ins_srtdeel_omschrijving, + 17); + + COMMIT; + v_count_update := v_count_update + 1; + END IF; + EXCEPTION + WHEN OTHERS + THEN + oracle_err_num := SQLCODE; + oracle_err_mes := SUBSTR (SQLERRM, 1, 200); + v_errormsg := + v_errormsg + || 'ORACLE (error ' + || oracle_err_num + || '/' + || oracle_err_mes + || ')'; + fac.imp_writelog (p_applname, + p_applrun, + 'W', + v_errormsg, + ''); + COMMIT; + END; + END LOOP; + + fac.imp_writelog ( + p_applname, + p_applrun, + 'S', + 'INS-Objectsoorten/aantal ingelezen: ' || TO_CHAR (v_count_tot), + '' + ); + fac.imp_writelog ( + p_applname, + p_applrun, + 'S', + 'INS-Objectsoorten/aantal toegevoegd: ' || TO_CHAR (v_count_update), + '' + ); + COMMIT; + END; + + -- SUBPROC + PROCEDURE add_deelinspectie (p_applname IN VARCHAR2, + p_applrun IN VARCHAR2) + AS + CURSOR c1 + IS + SELECT ins_discipline_omschrijving, + ins_srtgroep_omschrijving, + ins_srtdeel_code, + ins_srtdeel_omschrijving, + ins_deel_omschrijving, + merk, + TYPE, + hoogte, + belasting, + bereik, + voltage, + DECODE (UPPER (apkplicht), + 'JA', 129, + 'NEE', 130, + apkplicht) + apkplicht, + alg_locatie_code, + alg_ruimte_nr, -- Wordt nog niets mee gedaan! + prs_bedrijf_naam, -- Wordt nog niets mee gedaan! + ins_srtcontrole_omschrijving, + ins_deelsrtcontrole_datum, + ins_deelsrtcontrole_opmerking, + DECODE (UPPER (afgekeurd), + 'JA', 129, + 'NEE', 130, + afgekeurd) + afgekeurd + FROM conn_imp_inspectieobj; + + v_errormsg VARCHAR2 (1024); + c_ruimte_nr VARCHAR2 (10) := 'WERKPLAATS'; + c_srtruimte_key NUMBER (10) := 1; + c_merk_srtkey NUMBER (10) := 42; + c_type_srtkey NUMBER (10) := 41; + c_hoogte_srtkey NUMBER (10) := 1461; + c_belasting_srtkey NUMBER (10) := 1462; + c_bereik_srtkey NUMBER (10) := 1463; + c_voltage_srtkey NUMBER (10) := 1464; + c_apkplicht_srtkey NUMBER (10) := 1465; + c_afgekeurd_srtkey NUMBER (10) := 1466; + c_controle_periode NUMBER (10) := 365; + v_discipline_key NUMBER (10); + v_srtgroep_key NUMBER (10); + v_srtdeel_key NUMBER (10); + v_deel_key NUMBER (10); + v_deel_oms VARCHAR2 (60); + v_locatie_key NUMBER (10); + v_gebouw_key NUMBER (10); + v_verdieping_key NUMBER (10); + v_ruimte_key NUMBER (10); + v_kenmerk_key NUMBER (10); + v_kenmerkdeel_key NUMBER (10); + v_srtcontrole_id VARCHAR2 (20); + v_controlemode_key NUMBER (10); + ccount NUMBER (10); + oracle_err_num NUMBER; + oracle_err_mes VARCHAR2 (200); + v_count_tot NUMBER (10); + v_count_oupdate NUMBER (10); + v_count_cupdate NUMBER (10); + v_aanduiding VARCHAR (200); + BEGIN + v_count_tot := 0; + v_count_oupdate := 0; + v_count_cupdate := 0; + v_aanduiding := ''; + + FOR rec IN c1 + LOOP + BEGIN + v_count_tot := v_count_tot + 1; + v_aanduiding := + '[' + || rec.ins_discipline_omschrijving + || '|' + || rec.ins_srtgroep_omschrijving + || '|' + || rec.ins_srtdeel_code + || '|' + || rec.ins_srtdeel_omschrijving + || '|' + || rec.ins_deel_omschrijving + || '] '; + v_errormsg := 'Fout bij bepalen INS-discipline'; + + SELECT ins_discipline_key + INTO v_discipline_key + FROM ins_discipline + WHERE ins_discipline_verwijder IS NULL + AND ins_discipline_module = 'INS' + AND UPPER (TRIM (ins_discipline_omschrijving)) = + UPPER (TRIM (rec.ins_discipline_omschrijving)); + + v_errormsg := 'Fout bij bepalen INS-groepsoort'; + + SELECT ins_srtgroep_key + INTO v_srtgroep_key + FROM ins_srtgroep + WHERE ins_srtgroep_verwijder IS NULL + AND ins_srtgroep_module = 'INS' + AND ins_discipline_key = v_discipline_key + AND UPPER (TRIM (ins_srtgroep_omschrijving)) = + UPPER (TRIM (rec.ins_srtgroep_omschrijving)); + + v_errormsg := 'Fout bij bepalen INS-objectsoort'; + + SELECT ins_srtdeel_key + INTO v_srtdeel_key + FROM ins_srtdeel + WHERE ins_srtdeel_verwijder IS NULL + AND ins_srtdeel_module = 'INS' + AND ins_srtgroep_key = v_srtgroep_key + AND UPPER (TRIM (ins_srtdeel_omschrijving)) = + UPPER (TRIM (rec.ins_srtdeel_omschrijving)); + + v_errormsg := + 'Fout bij bepalen locatie [' || rec.alg_locatie_code || ']'; + + SELECT alg_locatie_key + INTO v_locatie_key + FROM alg_locatie + WHERE alg_locatie_verwijder IS NULL + AND UPPER (TRIM (alg_locatie_code)) = + UPPER (TRIM (rec.alg_locatie_code)); + + -- Ruimtegebonden objecten hebben een unieke ID binnen de locatie + v_errormsg := 'Fout bij bepalen INS-object'; + + SELECT COUNT ( * ) + INTO ccount + FROM ins_deel d + WHERE ins_deel_verwijder IS NULL + AND ins_deel_module = 'INS' + AND ins_srtdeel_key = v_srtdeel_key + AND ins_alg_locatie_key = v_locatie_key + AND ins_deel_upper = UPPER (rec.ins_deel_omschrijving); + + IF ccount > 0 -- Object bestaat reeds op locatie! + THEN + SELECT MAX (d.ins_deel_key) + INTO v_deel_key + FROM ins_deel d + WHERE ins_deel_verwijder IS NULL + AND ins_deel_module = 'INS' + AND ins_srtdeel_key = v_srtdeel_key + AND ins_alg_locatie_key = v_locatie_key + AND ins_deel_upper = + UPPER (rec.ins_deel_omschrijving); + ELSE -- Object bestaat nog niet op locatie, dus toevoegen! + v_errormsg := 'Fout bij bepalen default ID'; + + SELECT FAC_F_FAC_GET_DESCRIPTION ( + 'LPN_INS_DEEL', + NULL, + UPPER (rec.ins_srtdeel_code), + v_srtdeel_key + ) + INTO v_deel_oms + FROM ins_srtdeel + WHERE ins_srtdeel_key = v_srtdeel_key; + + v_errormsg := 'Fout bij bepalen default ruimte'; + + SELECT COUNT ( * ) + INTO ccount + FROM alg_v_aanwezigruimte r, + alg_verdieping v, + alg_gebouw g + WHERE r.alg_ruimte_upper_nr = c_ruimte_nr + AND r.alg_verdieping_key = v.alg_verdieping_key + AND v.alg_gebouw_key = g.alg_gebouw_key + AND g.alg_locatie_key = v_locatie_key; + + + IF ccount > 0 -- c_ruimte_nr bestaat reeds op locatie! + THEN + SELECT MAX (r.alg_ruimte_key) + INTO v_ruimte_key + FROM alg_v_aanwezigruimte r, + alg_verdieping v, + alg_gebouw g + WHERE r.alg_ruimte_upper_nr = c_ruimte_nr + AND r.alg_verdieping_key = v.alg_verdieping_key + AND v.alg_gebouw_key = g.alg_gebouw_key + AND g.alg_locatie_key = v_locatie_key; + ELSE -- c_ruimte_nr bestaat nog niet op locatie, dus toevoegen! + v_errormsg := 'Fout bij bepalen default gebouw'; + + SELECT MIN (g.alg_gebouw_key) + INTO v_gebouw_key + FROM alg_v_aanweziggebouw g + WHERE g.alg_locatie_key = v_locatie_key; + + v_errormsg := 'Fout bij bepalen default verdieping'; + + SELECT v.alg_verdieping_key + INTO v_verdieping_key + FROM alg_v_aanwezigverdieping v + WHERE v.alg_gebouw_key = v_gebouw_key + AND alg_verdieping_volgnr = + (SELECT MIN (alg_verdieping_volgnr) + FROM alg_v_aanwezigverdieping + WHERE alg_gebouw_key = v.alg_gebouw_key); + + v_errormsg := 'Fout bij toevoegen default ruimte'; + + INSERT INTO alg_ruimte ( + alg_verdieping_key, + alg_srtruimte_key, + alg_ruimte_nr + ) + VALUES (v_verdieping_key, c_srtruimte_key, c_ruimte_nr) + RETURNING alg_ruimte_key INTO v_ruimte_key; + END IF; + + v_errormsg := 'Fout bij toevoegen INS-object'; + + INSERT INTO ins_deel (ins_discipline_key, + ins_srtdeel_key, + ins_deel_module, + ins_deel_omschrijving, + ins_alg_ruimte_key, + ins_alg_ruimte_type, + ins_alg_locatie_key) + VALUES (v_discipline_key, + v_srtdeel_key, + 'INS', + COALESCE (rec.ins_deel_omschrijving, v_deel_oms), + v_ruimte_key, + 'R', + v_locatie_key) + RETURNING ins_deel_key INTO v_deel_key; + + COMMIT; + + v_count_oupdate := v_count_oupdate + 1; + END IF; + + -- MERK toevoegen; huidige merk NOOIT gewijzigd via import! + IF rec.merk IS NOT NULL AND UPPER (rec.merk) != 'NVT' + THEN + v_errormsg := 'Fout bij bepalen merk-kenmerk'; + + SELECT COUNT ( * ) + INTO ccount + FROM ins_v_aanwezigkenmerk k + WHERE k.ins_srtkenmerk_key = c_merk_srtkey + AND ( (k.ins_srtinstallatie_key = v_srtdeel_key + AND k.ins_kenmerk_niveau = 'S') + OR (k.ins_srtinstallatie_key = v_srtgroep_key + AND k.ins_kenmerk_niveau = 'G') + OR (k.ins_srtinstallatie_key = v_discipline_key + AND k.ins_kenmerk_niveau = 'D')); + + IF ccount = 0 -- Kenmerk bestaat niet; dan aanmaken! + THEN + v_errormsg := 'Fout bij toevoegen merk-kenmerk'; + + INSERT INTO ins_kenmerk (ins_srtkenmerk_key, + ins_srtinstallatie_key, + ins_kenmerk_niveau, + ins_kenmerk_volgnummer) + VALUES (c_merk_srtkey, + v_srtdeel_key, + 'S', + 100) + RETURNING ins_kenmerk_key INTO v_kenmerk_key; + + fac.imp_writelog ( + p_applname, + p_applrun, + 'I', + 'INS-Objecten/Merk-kenmerk toegevoegd voor: ' + || rec.ins_srtdeel_omschrijving, + '' + ); + COMMIT; + ELSE + SELECT k.ins_kenmerk_key + INTO v_kenmerk_key + FROM ins_v_aanwezigkenmerk k + WHERE k.ins_srtkenmerk_key = c_merk_srtkey + AND ( (k.ins_srtinstallatie_key = v_srtdeel_key + AND k.ins_kenmerk_niveau = 'S') + OR (k.ins_srtinstallatie_key = v_srtgroep_key + AND k.ins_kenmerk_niveau = 'G') + OR (k.ins_srtinstallatie_key = + v_discipline_key + AND k.ins_kenmerk_niveau = 'D')); + END IF; + + v_errormsg := 'Fout bij bepalen huidige merk'; + + SELECT COUNT ( * ), MAX (ins_kenmerkdeel_key) + INTO ccount, v_kenmerkdeel_key + FROM ins_v_aanwezigkenmerkdeel + WHERE ins_deel_key = v_deel_key + AND ins_kenmerk_key = v_kenmerk_key; + + IF ccount = 0 + THEN + v_errormsg := 'Fout bij toevoegen merk'; + + INSERT INTO ins_kenmerkdeel ( + ins_deel_key, + ins_kenmerk_key, + ins_kenmerkdeel_waarde + ) + VALUES (v_deel_key, v_kenmerk_key, rec.merk); + + COMMIT; + --ELSE + -- v_errormsg := 'Fout bij wijzigen merk'; + + -- UPDATE ins_kenmerkdeel + -- SET ins_kenmerkdeel_waarde = rec.merk + -- WHERE ins_kenmerkdeel_key = v_kenmerkdeel_key; + + -- COMMIT; + END IF; + END IF; + + -- TYPE toevoegen; huidige waarde NOOIT gewijzigd via import! + IF rec.TYPE IS NOT NULL AND UPPER (rec.TYPE) != 'NVT' + THEN + v_errormsg := 'Fout bij bepalen type-kenmerk'; + + SELECT COUNT ( * ) + INTO ccount + FROM ins_v_aanwezigkenmerk k + WHERE k.ins_srtkenmerk_key = c_type_srtkey + AND ( (k.ins_srtinstallatie_key = v_srtdeel_key + AND k.ins_kenmerk_niveau = 'S') + OR (k.ins_srtinstallatie_key = v_srtgroep_key + AND k.ins_kenmerk_niveau = 'G') + OR (k.ins_srtinstallatie_key = v_discipline_key + AND k.ins_kenmerk_niveau = 'D')); + + IF ccount = 0 -- Kenmerk bestaat niet; dan aanmaken! + THEN + v_errormsg := 'Fout bij toevoegen type-kenmerk'; + + INSERT INTO ins_kenmerk (ins_srtkenmerk_key, + ins_srtinstallatie_key, + ins_kenmerk_niveau, + ins_kenmerk_volgnummer) + VALUES (c_type_srtkey, + v_srtdeel_key, + 'S', + 105) + RETURNING ins_kenmerk_key INTO v_kenmerk_key; + + fac.imp_writelog ( + p_applname, + p_applrun, + 'I', + 'INS-Objecten/Type-kenmerk toegevoegd voor: ' + || rec.ins_srtdeel_omschrijving, + '' + ); + COMMIT; + ELSE + SELECT k.ins_kenmerk_key + INTO v_kenmerk_key + FROM ins_v_aanwezigkenmerk k + WHERE k.ins_srtkenmerk_key = c_type_srtkey + AND ( (k.ins_srtinstallatie_key = v_srtdeel_key + AND k.ins_kenmerk_niveau = 'S') + OR (k.ins_srtinstallatie_key = v_srtgroep_key + AND k.ins_kenmerk_niveau = 'G') + OR (k.ins_srtinstallatie_key = + v_discipline_key + AND k.ins_kenmerk_niveau = 'D')); + END IF; + + v_errormsg := 'Fout bij bepalen huidige type'; + + SELECT COUNT ( * ), MAX (ins_kenmerkdeel_key) + INTO ccount, v_kenmerkdeel_key + FROM ins_v_aanwezigkenmerkdeel + WHERE ins_deel_key = v_deel_key + AND ins_kenmerk_key = v_kenmerk_key; + + IF ccount = 0 + THEN + v_errormsg := 'Fout bij toevoegen type'; + + INSERT INTO ins_kenmerkdeel ( + ins_deel_key, + ins_kenmerk_key, + ins_kenmerkdeel_waarde + ) + VALUES (v_deel_key, v_kenmerk_key, rec.TYPE); + + COMMIT; + --ELSE + -- v_errormsg := 'Fout bij wijzigen type'; + + -- UPDATE ins_kenmerkdeel + -- SET ins_kenmerkdeel_waarde = rec.type + -- WHERE ins_kenmerkdeel_key = v_kenmerkdeel_key; + + -- COMMIT; + END IF; + END IF; + + -- HOOGTE toevoegen; huidige waarde NOOIT gewijzigd via import! + IF rec.hoogte IS NOT NULL AND UPPER (rec.hoogte) != 'NVT' + THEN + v_errormsg := 'Fout bij bepalen hoogte-kenmerk'; + + SELECT COUNT ( * ) + INTO ccount + FROM ins_v_aanwezigkenmerk k + WHERE k.ins_srtkenmerk_key = c_hoogte_srtkey + AND ( (k.ins_srtinstallatie_key = v_srtdeel_key + AND k.ins_kenmerk_niveau = 'S') + OR (k.ins_srtinstallatie_key = v_srtgroep_key + AND k.ins_kenmerk_niveau = 'G') + OR (k.ins_srtinstallatie_key = v_discipline_key + AND k.ins_kenmerk_niveau = 'D')); + + IF ccount = 0 -- Kenmerk bestaat niet; dan aanmaken! + THEN + v_errormsg := 'Fout bij toevoegen hoogte-kenmerk'; + + INSERT INTO ins_kenmerk (ins_srtkenmerk_key, + ins_srtinstallatie_key, + ins_kenmerk_niveau, + ins_kenmerk_volgnummer) + VALUES (c_hoogte_srtkey, + v_srtdeel_key, + 'S', + 110) + RETURNING ins_kenmerk_key INTO v_kenmerk_key; + + fac.imp_writelog ( + p_applname, + p_applrun, + 'I', + 'INS-Objecten/Hoogte-kenmerk toegevoegd voor: ' + || rec.ins_srtdeel_omschrijving, + '' + ); + COMMIT; + ELSE + SELECT k.ins_kenmerk_key + INTO v_kenmerk_key + FROM ins_v_aanwezigkenmerk k + WHERE k.ins_srtkenmerk_key = c_hoogte_srtkey + AND ( (k.ins_srtinstallatie_key = v_srtdeel_key + AND k.ins_kenmerk_niveau = 'S') + OR (k.ins_srtinstallatie_key = v_srtgroep_key + AND k.ins_kenmerk_niveau = 'G') + OR (k.ins_srtinstallatie_key = + v_discipline_key + AND k.ins_kenmerk_niveau = 'D')); + END IF; + + v_errormsg := 'Fout bij bepalen huidige hoogte'; + + SELECT COUNT ( * ), MAX (ins_kenmerkdeel_key) + INTO ccount, v_kenmerkdeel_key + FROM ins_v_aanwezigkenmerkdeel + WHERE ins_deel_key = v_deel_key + AND ins_kenmerk_key = v_kenmerk_key; + + IF ccount = 0 + THEN + v_errormsg := 'Fout bij toevoegen hoogte'; + + INSERT INTO ins_kenmerkdeel ( + ins_deel_key, + ins_kenmerk_key, + ins_kenmerkdeel_waarde + ) + VALUES (v_deel_key, v_kenmerk_key, rec.hoogte); + + COMMIT; + --ELSE + -- v_errormsg := 'Fout bij wijzigen hoogte'; + + -- UPDATE ins_kenmerkdeel + -- SET ins_kenmerkdeel_waarde = rec.hoogte + -- WHERE ins_kenmerkdeel_key = v_kenmerkdeel_key; + + -- COMMIT; + END IF; + END IF; + + -- BELASTING toevoegen; huidige waarde NOOIT gewijzigd via import! + IF rec.belasting IS NOT NULL AND UPPER (rec.belasting) != 'NVT' + THEN + v_errormsg := 'Fout bij bepalen belasting-kenmerk'; + + SELECT COUNT ( * ) + INTO ccount + FROM ins_v_aanwezigkenmerk k + WHERE k.ins_srtkenmerk_key = c_belasting_srtkey + AND ( (k.ins_srtinstallatie_key = v_srtdeel_key + AND k.ins_kenmerk_niveau = 'S') + OR (k.ins_srtinstallatie_key = v_srtgroep_key + AND k.ins_kenmerk_niveau = 'G') + OR (k.ins_srtinstallatie_key = v_discipline_key + AND k.ins_kenmerk_niveau = 'D')); + + IF ccount = 0 -- Kenmerk bestaat niet; dan aanmaken! + THEN + v_errormsg := 'Fout bij toevoegen belasting-kenmerk'; + + INSERT INTO ins_kenmerk (ins_srtkenmerk_key, + ins_srtinstallatie_key, + ins_kenmerk_niveau, + ins_kenmerk_volgnummer) + VALUES (c_belasting_srtkey, + v_srtdeel_key, + 'S', + 112) + RETURNING ins_kenmerk_key INTO v_kenmerk_key; + + fac.imp_writelog ( + p_applname, + p_applrun, + 'I', + 'INS-Objecten/Belasting-kenmerk toegevoegd voor: ' + || rec.ins_srtdeel_omschrijving, + '' + ); + COMMIT; + ELSE + SELECT k.ins_kenmerk_key + INTO v_kenmerk_key + FROM ins_v_aanwezigkenmerk k + WHERE k.ins_srtkenmerk_key = c_belasting_srtkey + AND ( (k.ins_srtinstallatie_key = v_srtdeel_key + AND k.ins_kenmerk_niveau = 'S') + OR (k.ins_srtinstallatie_key = v_srtgroep_key + AND k.ins_kenmerk_niveau = 'G') + OR (k.ins_srtinstallatie_key = + v_discipline_key + AND k.ins_kenmerk_niveau = 'D')); + END IF; + + v_errormsg := 'Fout bij bepalen huidige belasting'; + + SELECT COUNT ( * ), MAX (ins_kenmerkdeel_key) + INTO ccount, v_kenmerkdeel_key + FROM ins_v_aanwezigkenmerkdeel + WHERE ins_deel_key = v_deel_key + AND ins_kenmerk_key = v_kenmerk_key; + + IF ccount = 0 + THEN + v_errormsg := 'Fout bij toevoegen belasting'; + + INSERT INTO ins_kenmerkdeel ( + ins_deel_key, + ins_kenmerk_key, + ins_kenmerkdeel_waarde + ) + VALUES (v_deel_key, v_kenmerk_key, rec.belasting); + + COMMIT; + --ELSE + -- v_errormsg := 'Fout bij wijzigen belasting'; + + -- UPDATE ins_kenmerkdeel + -- SET ins_kenmerkdeel_waarde = rec.belasting + -- WHERE ins_kenmerkdeel_key = v_kenmerkdeel_key; + + -- COMMIT; + END IF; + END IF; + + -- BEREIK toevoegen; huidige waarde NOOIT gewijzigd via import! + IF rec.bereik IS NOT NULL AND UPPER (rec.bereik) != 'NVT' + THEN + v_errormsg := 'Fout bij bepalen bereik-kenmerk'; + + SELECT COUNT ( * ) + INTO ccount + FROM ins_v_aanwezigkenmerk k + WHERE k.ins_srtkenmerk_key = c_bereik_srtkey + AND ( (k.ins_srtinstallatie_key = v_srtdeel_key + AND k.ins_kenmerk_niveau = 'S') + OR (k.ins_srtinstallatie_key = v_srtgroep_key + AND k.ins_kenmerk_niveau = 'G') + OR (k.ins_srtinstallatie_key = v_discipline_key + AND k.ins_kenmerk_niveau = 'D')); + + IF ccount = 0 -- Kenmerk bestaat niet; dan aanmaken! + THEN + v_errormsg := 'Fout bij toevoegen bereik-kenmerk'; + + INSERT INTO ins_kenmerk (ins_srtkenmerk_key, + ins_srtinstallatie_key, + ins_kenmerk_niveau, + ins_kenmerk_volgnummer) + VALUES (c_bereik_srtkey, + v_srtdeel_key, + 'S', + 114) + RETURNING ins_kenmerk_key INTO v_kenmerk_key; + + fac.imp_writelog ( + p_applname, + p_applrun, + 'I', + 'INS-Objecten/Bereik-kenmerk toegevoegd voor: ' + || rec.ins_srtdeel_omschrijving, + '' + ); + COMMIT; + ELSE + SELECT k.ins_kenmerk_key + INTO v_kenmerk_key + FROM ins_v_aanwezigkenmerk k + WHERE k.ins_srtkenmerk_key = c_bereik_srtkey + AND ( (k.ins_srtinstallatie_key = v_srtdeel_key + AND k.ins_kenmerk_niveau = 'S') + OR (k.ins_srtinstallatie_key = v_srtgroep_key + AND k.ins_kenmerk_niveau = 'G') + OR (k.ins_srtinstallatie_key = + v_discipline_key + AND k.ins_kenmerk_niveau = 'D')); + END IF; + + v_errormsg := 'Fout bij bepalen huidige bereik'; + + SELECT COUNT ( * ), MAX (ins_kenmerkdeel_key) + INTO ccount, v_kenmerkdeel_key + FROM ins_v_aanwezigkenmerkdeel + WHERE ins_deel_key = v_deel_key + AND ins_kenmerk_key = v_kenmerk_key; + + IF ccount = 0 + THEN + v_errormsg := 'Fout bij toevoegen bereik'; + + INSERT INTO ins_kenmerkdeel ( + ins_deel_key, + ins_kenmerk_key, + ins_kenmerkdeel_waarde + ) + VALUES (v_deel_key, v_kenmerk_key, rec.bereik); + + COMMIT; + --ELSE + -- v_errormsg := 'Fout bij wijzigen bereik'; + + -- UPDATE ins_kenmerkdeel + -- SET ins_kenmerkdeel_waarde = rec.bereik + -- WHERE ins_kenmerkdeel_key = v_kenmerkdeel_key; + + -- COMMIT; + END IF; + END IF; + + -- VOLTAGE toevoegen; huidige waarde NOOIT gewijzigd via import! + IF rec.voltage IS NOT NULL AND UPPER (rec.voltage) != 'NVT' + THEN + v_errormsg := 'Fout bij bepalen voltage-kenmerk'; + + SELECT COUNT ( * ) + INTO ccount + FROM ins_v_aanwezigkenmerk k + WHERE k.ins_srtkenmerk_key = c_voltage_srtkey + AND ( (k.ins_srtinstallatie_key = v_srtdeel_key + AND k.ins_kenmerk_niveau = 'S') + OR (k.ins_srtinstallatie_key = v_srtgroep_key + AND k.ins_kenmerk_niveau = 'G') + OR (k.ins_srtinstallatie_key = v_discipline_key + AND k.ins_kenmerk_niveau = 'D')); + + IF ccount = 0 -- Kenmerk bestaat niet; dan aanmaken! + THEN + v_errormsg := 'Fout bij toevoegen voltage-kenmerk'; + + INSERT INTO ins_kenmerk (ins_srtkenmerk_key, + ins_srtinstallatie_key, + ins_kenmerk_niveau, + ins_kenmerk_volgnummer) + VALUES (c_voltage_srtkey, + v_srtdeel_key, + 'S', + 116) + RETURNING ins_kenmerk_key INTO v_kenmerk_key; + + fac.imp_writelog ( + p_applname, + p_applrun, + 'I', + 'INS-Objecten/Voltage-kenmerk toegevoegd voor: ' + || rec.ins_srtdeel_omschrijving, + '' + ); + COMMIT; + ELSE + SELECT k.ins_kenmerk_key + INTO v_kenmerk_key + FROM ins_v_aanwezigkenmerk k + WHERE k.ins_srtkenmerk_key = c_voltage_srtkey + AND ( (k.ins_srtinstallatie_key = v_srtdeel_key + AND k.ins_kenmerk_niveau = 'S') + OR (k.ins_srtinstallatie_key = v_srtgroep_key + AND k.ins_kenmerk_niveau = 'G') + OR (k.ins_srtinstallatie_key = + v_discipline_key + AND k.ins_kenmerk_niveau = 'D')); + END IF; + + v_errormsg := 'Fout bij bepalen huidige voltage'; + + SELECT COUNT ( * ), MAX (ins_kenmerkdeel_key) + INTO ccount, v_kenmerkdeel_key + FROM ins_v_aanwezigkenmerkdeel + WHERE ins_deel_key = v_deel_key + AND ins_kenmerk_key = v_kenmerk_key; + + IF ccount = 0 + THEN + v_errormsg := 'Fout bij toevoegen voltage'; + + INSERT INTO ins_kenmerkdeel ( + ins_deel_key, + ins_kenmerk_key, + ins_kenmerkdeel_waarde + ) + VALUES (v_deel_key, v_kenmerk_key, rec.voltage); + + COMMIT; + --ELSE + -- v_errormsg := 'Fout bij wijzigen voltage'; + + -- UPDATE ins_kenmerkdeel + -- SET ins_kenmerkdeel_waarde = rec.voltage + -- WHERE ins_kenmerkdeel_key = v_kenmerkdeel_key; + + -- COMMIT; + END IF; + END IF; + + -- APK toevoegen; huidige waarde NOOIT gewijzigd via import! + IF rec.apkplicht IS NOT NULL AND UPPER (rec.apkplicht) != 'NVT' + THEN + v_errormsg := 'Fout bij bepalen APK-kenmerk'; + + SELECT COUNT ( * ) + INTO ccount + FROM ins_v_aanwezigkenmerk k + WHERE k.ins_srtkenmerk_key = c_apkplicht_srtkey + AND ( (k.ins_srtinstallatie_key = v_srtdeel_key + AND k.ins_kenmerk_niveau = 'S') + OR (k.ins_srtinstallatie_key = v_srtgroep_key + AND k.ins_kenmerk_niveau = 'G') + OR (k.ins_srtinstallatie_key = v_discipline_key + AND k.ins_kenmerk_niveau = 'D')); + + IF ccount = 0 -- Kenmerk bestaat niet; dan aanmaken! + THEN + v_errormsg := 'Fout bij toevoegen APK-kenmerk'; + + INSERT INTO ins_kenmerk (ins_srtkenmerk_key, + ins_srtinstallatie_key, + ins_kenmerk_niveau, + ins_kenmerk_volgnummer) + VALUES (c_apkplicht_srtkey, + v_srtdeel_key, + 'S', + 118) + RETURNING ins_kenmerk_key INTO v_kenmerk_key; + + fac.imp_writelog ( + p_applname, + p_applrun, + 'I', + 'INS-Objecten/APK-kenmerk toegevoegd voor: ' + || rec.ins_srtdeel_omschrijving, + '' + ); + COMMIT; + ELSE + SELECT k.ins_kenmerk_key + INTO v_kenmerk_key + FROM ins_v_aanwezigkenmerk k + WHERE k.ins_srtkenmerk_key = c_apkplicht_srtkey + AND ( (k.ins_srtinstallatie_key = v_srtdeel_key + AND k.ins_kenmerk_niveau = 'S') + OR (k.ins_srtinstallatie_key = v_srtgroep_key + AND k.ins_kenmerk_niveau = 'G') + OR (k.ins_srtinstallatie_key = + v_discipline_key + AND k.ins_kenmerk_niveau = 'D')); + END IF; + + v_errormsg := 'Fout bij bepalen huidige APK'; + + SELECT COUNT ( * ), MAX (ins_kenmerkdeel_key) + INTO ccount, v_kenmerkdeel_key + FROM ins_v_aanwezigkenmerkdeel + WHERE ins_deel_key = v_deel_key + AND ins_kenmerk_key = v_kenmerk_key; + + IF ccount = 0 + THEN + v_errormsg := 'Fout bij toevoegen APK'; + + INSERT INTO ins_kenmerkdeel ( + ins_deel_key, + ins_kenmerk_key, + ins_kenmerkdeel_waarde + ) + VALUES (v_deel_key, v_kenmerk_key, rec.apkplicht); + + COMMIT; + --ELSE + -- v_errormsg := 'Fout bij wijzigen APK'; + + -- UPDATE ins_kenmerkdeel + -- SET ins_kenmerkdeel_waarde = rec.apkplicht + -- WHERE ins_kenmerkdeel_key = v_kenmerkdeel_key; + + -- COMMIT; + END IF; + END IF; + + -- AFGEKEURD toevoegen; huidige waarde NOOIT gewijzigd via import! + IF rec.afgekeurd IS NOT NULL AND UPPER (rec.afgekeurd) != 'NVT' + THEN + v_errormsg := 'Fout bij bepalen afgekeurd-kenmerk'; + + SELECT COUNT ( * ) + INTO ccount + FROM ins_v_aanwezigkenmerk k + WHERE k.ins_srtkenmerk_key = c_afgekeurd_srtkey + AND ( (k.ins_srtinstallatie_key = v_srtdeel_key + AND k.ins_kenmerk_niveau = 'S') + OR (k.ins_srtinstallatie_key = v_srtgroep_key + AND k.ins_kenmerk_niveau = 'G') + OR (k.ins_srtinstallatie_key = v_discipline_key + AND k.ins_kenmerk_niveau = 'D')); + + IF ccount = 0 -- Kenmerk bestaat niet; dan aanmaken! + THEN + v_errormsg := 'Fout bij toevoegen afgekeurd-kenmerk'; + + INSERT INTO ins_kenmerk (ins_srtkenmerk_key, + ins_srtinstallatie_key, + ins_kenmerk_niveau, + ins_kenmerk_volgnummer) + VALUES (c_afgekeurd_srtkey, + v_srtdeel_key, + 'S', + 120) + RETURNING ins_kenmerk_key INTO v_kenmerk_key; + + fac.imp_writelog ( + p_applname, + p_applrun, + 'I', + 'INS-Objecten/afgekeurd-kenmerk toegevoegd voor: ' + || rec.ins_srtdeel_omschrijving, + '' + ); + COMMIT; + ELSE + SELECT k.ins_kenmerk_key + INTO v_kenmerk_key + FROM ins_v_aanwezigkenmerk k + WHERE k.ins_srtkenmerk_key = c_afgekeurd_srtkey + AND ( (k.ins_srtinstallatie_key = v_srtdeel_key + AND k.ins_kenmerk_niveau = 'S') + OR (k.ins_srtinstallatie_key = v_srtgroep_key + AND k.ins_kenmerk_niveau = 'G') + OR (k.ins_srtinstallatie_key = + v_discipline_key + AND k.ins_kenmerk_niveau = 'D')); + END IF; + + v_errormsg := 'Fout bij bepalen huidige afgekeurd'; + + SELECT COUNT ( * ), MAX (ins_kenmerkdeel_key) + INTO ccount, v_kenmerkdeel_key + FROM ins_v_aanwezigkenmerkdeel + WHERE ins_deel_key = v_deel_key + AND ins_kenmerk_key = v_kenmerk_key; + + IF ccount = 0 + THEN + v_errormsg := 'Fout bij toevoegen afgekeurd'; + + INSERT INTO ins_kenmerkdeel ( + ins_deel_key, + ins_kenmerk_key, + ins_kenmerkdeel_waarde + ) + VALUES (v_deel_key, v_kenmerk_key, rec.afgekeurd); + + COMMIT; + --ELSE + -- v_errormsg := 'Fout bij wijzigen afgekeurd'; + + -- UPDATE ins_kenmerkdeel + -- SET ins_kenmerkdeel_waarde = rec.afgekeurd + -- WHERE ins_kenmerkdeel_key = v_kenmerkdeel_key; + + -- COMMIT; + END IF; + END IF; + + -- Toevoegen controle; gebruik [a] de meest specifieke soort en + -- [b] de minst recente mode! + v_errormsg := 'Fout bij bepalen soort controle'; + + SELECT COUNT ( * ) + INTO ccount + FROM ins_srtcontrole sc + WHERE UPPER (TRIM (sc.ins_srtcontrole_omschrijving)) = + UPPER (TRIM (rec.ins_srtcontrole_omschrijving)) + AND ( (sc.ins_srtinstallatie_key = v_srtdeel_key + AND sc.ins_srtcontrole_niveau = 'S') + OR (sc.ins_srtinstallatie_key = v_srtgroep_key + AND sc.ins_srtcontrole_niveau = 'G') + OR (sc.ins_srtinstallatie_key = v_discipline_key + AND sc.ins_srtcontrole_niveau = 'D')); + + IF ccount = 0 + THEN + v_errormsg := 'Fout bij toevoegen soort controle'; + + INSERT INTO ins_srtcontrole ( + ins_srtinstallatie_key, + ins_srtcontrole_niveau, + ins_srtcontrole_omschrijving, + ins_srtcontrole_periode + ) + VALUES ( + v_srtdeel_key, + 'S', + SUBSTR ( + rec.ins_srtcontrole_omschrijving, + 1, + 60 + ), + c_controle_periode + ) -- Default een jaar! + RETURNING ins_srtcontrole_key INTO v_srtcontrole_id; + + v_srtcontrole_id := 'S' || v_srtcontrole_id; + + fac.imp_writelog ( + p_applname, + p_applrun, + 'I', + 'INS-Objecten/soort controle toegevoegd: ' + || SUBSTR ( + rec.ins_srtcontrole_omschrijving, + 1, + 60 + ) + || ' voor ' + || rec.ins_srtdeel_omschrijving, + '' + ); + COMMIT; + ELSE + SELECT MAX(sc.ins_srtcontrole_niveau + || TO_CHAR (sc.ins_srtcontrole_key)) + INTO v_srtcontrole_id + FROM ins_srtcontrole sc + WHERE UPPER (TRIM (sc.ins_srtcontrole_omschrijving)) = + UPPER (TRIM (rec.ins_srtcontrole_omschrijving)) + AND ( (sc.ins_srtinstallatie_key = v_srtdeel_key + AND sc.ins_srtcontrole_niveau = 'S') + OR (sc.ins_srtinstallatie_key = v_srtgroep_key + AND sc.ins_srtcontrole_niveau = 'G') + OR (sc.ins_srtinstallatie_key = v_discipline_key + AND sc.ins_srtcontrole_niveau = 'D')); + END IF; + + IF rec.ins_deelsrtcontrole_datum IS NOT NULL + THEN + v_errormsg := 'Fout bij bepalen controle mode'; + + SELECT MIN (ins_controlemode_key) + INTO v_controlemode_key + FROM ins_controlemode; + + v_errormsg := 'Fout bij toevoegen controle'; + + INSERT INTO ins_deelsrtcontrole ( + ins_deel_key, + ins_srtcontrole_key, + ins_deelsrtcontrole_datum, + ins_controlemode_key, + ins_deelsrtcontrole_opmerking + ) + VALUES (v_deel_key, + fac.safe_to_number (SUBSTR (v_srtcontrole_id, 2)), + rec.ins_deelsrtcontrole_datum, + v_controlemode_key, + rec.ins_deelsrtcontrole_opmerking); + + COMMIT; + + v_count_cupdate := v_count_cupdate + 1; + END IF; + EXCEPTION + WHEN OTHERS + THEN + oracle_err_num := SQLCODE; + oracle_err_mes := SUBSTR (SQLERRM, 1, 200); + v_errormsg := + v_errormsg + || ' ORACLE (error ' + || oracle_err_num + || '/' + || oracle_err_mes + || ')'; + fac.imp_writelog (p_applname, + p_applrun, + 'W', + v_aanduiding || v_errormsg, + ''); + COMMIT; + END; + END LOOP; + + fac.imp_writelog ( + p_applname, + p_applrun, + 'S', + 'INS-Objecten/aantal ingelezen: ' || TO_CHAR (v_count_tot), + '' + ); + fac.imp_writelog ( + p_applname, + p_applrun, + 'S', + 'INS-Objecten/aantal toegevoegd: ' || TO_CHAR (v_count_oupdate), + '' + ); + fac.imp_writelog ( + p_applname, + p_applrun, + 'S', + 'INS-Controles/aantal toegevoegd: ' || TO_CHAR (v_count_cupdate), + '' + ); + COMMIT; + END; +-- MAIN +BEGIN + add_insdiscipline (p_applname, p_applrun); + add_srtgroep (p_applname, p_applrun); + add_srtdeel (p_applname, p_applrun); + add_deelinspectie (p_applname, p_applrun); +EXCEPTION + WHEN OTHERS + THEN + oracle_err_num := SQLCODE; + oracle_err_mes := SUBSTR (SQLERRM, 1, 200); + v_errormsg := + v_errormsg + || ' ORACLE (error ' + || oracle_err_num + || '/' + || oracle_err_mes + || ')'; + fac.imp_writelog (p_applname, + p_applrun, + 'E', + v_errormsg, + 'Importproces inspectieobjecten afgebroken!'); +END conn_update_inspectieobj; +/ + +BEGIN fac.registercustversion('CONN', 44); END; +/ + +BEGIN adm.systrackscript('$Workfile: conn.sql $', '$Revision: 164 $', 0); END; / COMMIT;