From b69aa54f590ce6b3a2ad8af01bbc44e41ea5078a Mon Sep 17 00:00:00 2001 From: Maarten van der Heide Date: Tue, 20 Mar 2012 12:25:50 +0000 Subject: [PATCH] CONN#22690+CONN#22771 svn path=/Customer/trunk/; revision=15188 --- CONN/conn.sql | 952 +++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 940 insertions(+), 12 deletions(-) diff --git a/CONN/conn.sql b/CONN/conn.sql index af4c12606..74af2d119 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: 181 $ --- $Modtime: 21-02-12 9:56 $ +-- $Revision: 182 $ +-- $Modtime: 19-03-12 13:08 $ -- -- Support: +31 53 4800710 @@ -4423,7 +4423,7 @@ BEGIN FROM DUAL; fac.imp_writelog (p_import_key, 'S', - 'Cxx factuurimport $Revision: 181 $', ''); + 'Cxx factuurimport $Revision: 182 $', ''); OPEN cfactuur; IF cfactuur%ISOPEN THEN @@ -8305,8 +8305,8 @@ AS x.ins_srtgroep_omschrijving, x.ins_srtdeel_omschrijving, x.ins_deel_omschrijving, - k1.merk, - k2.TYPE, + REPLACE (k1.merk, CHR (13) || CHR (10), ' '), + REPLACE (k2.TYPE, CHR (13) || CHR (10), ' '), k3.hoogte, k4.belasting, k5.bereik, @@ -9586,8 +9586,7 @@ AS LEFT JOIN (SELECT c.cnt_contract_nummer_intern, b.prs_bedrijf_naam, - c.cnt_contract_key, - b.prs_bedrijf_key + c.cnt_contract_key FROM cnt_contract c, ins_tab_discipline td, cnt_disc_params dp, @@ -9620,9 +9619,9 @@ AS v_discipline_key NUMBER (10); v_srtgroep_key NUMBER (10); v_srtdeel_key NUMBER (10); + v_locatie_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); @@ -9740,7 +9739,7 @@ AS FROM alg_v_aanwezigruimte r, alg_verdieping v, alg_gebouw g - WHERE r.alg_ruimte_upper_nr = rec.alg_ruimte_nr + WHERE r.alg_ruimte_upper_nr = UPPER (rec.alg_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; @@ -10671,6 +10670,45 @@ AS v_count_cupdate := v_count_cupdate + 1; END IF; + -- Uitbreiden contract-plaats-scope als contractnummer voorkomt in + -- importbestand (ie. cnt_contract_key kon worden bepaald) en deze + -- relatie nog niet bestaat! + IF (rec.cnt_contract_key IS NOT NULL) + THEN + v_errormsg := 'Fout bij bepalen contract-plaats-relatie'; + + SELECT COUNT ( * ) + INTO ccount + FROM cnt_contract_plaats + WHERE cnt_contract_plaats_verwijder IS NULL + AND cnt_contract_key = rec.cnt_contract_key + AND cnt_alg_plaats_key = v_locatie_key + AND cnt_alg_plaats_code = 'L'; + + IF ccount = 0 + THEN + v_errormsg := 'Fout bij toevoegen contract-plaats-scope'; + + INSERT INTO cnt_contract_plaats ( + cnt_contract_key, + cnt_alg_plaats_key, + cnt_alg_plaats_code + ) + VALUES (rec.cnt_contract_key, v_locatie_key, 'L'); + + fac.imp_writelog ( + p_import_key, + 'I', + 'INS-Objecten/plaats-contractscope uitgebreid: ' + || rec.cnt_contract_nummer_intern + || ' plus ' + || rec.ins_srtdeel_omschrijving, + '' + ); + COMMIT; + END IF; + END IF; + -- Uitbreiden contract-object-scope als contractnummer voorkomt in -- importbestand (ie. cnt_contract_key kon worden bepaald) en deze -- relatie nog niet bestaat! @@ -10698,7 +10736,7 @@ AS fac.imp_writelog ( p_import_key, 'I', - 'INS-Objecten/contractscope uitgebreid: ' + 'INS-Objecten/object-contractscope uitgebreid: ' || rec.cnt_contract_nummer_intern || ' plus ' || rec.ins_srtdeel_omschrijving, @@ -10772,10 +10810,900 @@ EXCEPTION END conn_update_inspectieobj; / -BEGIN fac.registercustversion('CONN', 49); END; +/* Formatted on 9-3-2012 17:37:17 (QP5 v5.115.810.9015) */ +CREATE OR REPLACE VIEW conn_v_rap_keurobjecten_expimp +( + fclt_f_locatiecode, + ruimte, + fclt_f_discipline, + fclt_f_objectsoort, + object_id, + fclt_f_merk, + fclt_f_keuring_categorie, + fclt_f_contract_nr, + 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_srtdeel_omschrijving, + x.ins_deel_omschrijving, + REPLACE (k1.merk, CHR (13) || CHR (10), ' '), + k2.categorie, + COALESCE (lev_onderhd.cnt_contract_nummer_intern, + lev_onderst.cnt_contract_nummer_intern) + contract_nr, + COALESCE (lev_onderhd.prs_bedrijf_naam, + lev_onderst.prs_bedrijf_naam) + leverancier, + csd.ins_srtcontrole_omschrijving, + --TO_CHAR (csd.ins_srtcontrole_periode), + --DECODE ( + -- y.ins_deelsrtcontrole_datum, + -- NULL, + -- TO_CHAR (x.ins_deel_aanmaak + csd.ins_srtcontrole_periode, + -- 'dd-mm-yyyy'), + -- TO_CHAR ( + -- y.ins_deelsrtcontrole_datum + csd.ins_srtcontrole_periode, + -- 'dd-mm-yyyy' + -- ) + --), + --DECODE (y.ins_deelsrtcontrole_datum, + -- NULL, TO_CHAR (x.ins_deel_aanmaak, 'dd-mm-yyyy'), + -- TO_CHAR (y.ins_deelsrtcontrole_datum, 'dd-mm-yyyy')), + NULL controledatum, + NULL controlopmerking, + k3.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_key, + 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, + c.cnt_contract_nummer_intern, + b.prs_bedrijf_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, + g.alg_locatie_key, + c.cnt_contract_nummer_intern, + b.prs_bedrijf_naam + FROM cnt_contract_object co, + cnt_contract c, + ins_tab_discipline cd, + cnt_contract_plaats cp, + alg_gebouw g, + 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_contract_key = + cp.cnt_contract_key + AND ( (cp.cnt_alg_plaats_code = + 'G' + AND cp.cnt_alg_plaats_key = + g.alg_gebouw_key) + OR (cp.cnt_alg_plaats_code = + 'L' + AND cp.cnt_alg_plaats_key = + g.alg_locatie_key)) + AND c.cnt_prs_bedrijf_key = + b.prs_bedrijf_key) + lev_onderst + ON x.ins_srtdeel_key = + lev_onderst.cnt_ins_srtdeel_key + AND x.alg_locatie_key = + lev_onderst.alg_locatie_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 categorie + FROM ins_v_aanwezigkenmerkdeel kd, + ins_kenmerk k + WHERE kd.ins_kenmerk_key = k.ins_kenmerk_key + AND k.ins_srtkenmerk_key = 1467) k2 + ON x.ins_deel_key = k2.ins_deel_key + LEFT JOIN + (SELECT ins_deel_key, + DECODE (ins_kenmerkdeel_waarde, + '129', 'JA', + 'NEE') + afgekeurd + FROM ins_v_aanwezigkenmerkdeel kd, ins_kenmerk k + WHERE kd.ins_kenmerk_key = k.ins_kenmerk_key + AND k.ins_srtkenmerk_key = 1466) k3 + ON x.ins_deel_key = k3.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; + +/* Formatted on 1-2-2012 14:45:54 (QP5 v5.115.810.9015) */ +CREATE OR REPLACE PROCEDURE conn_import_keurobjecten ( + p_import_key IN NUMBER +) +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 + x_alg_ruimte_nr VARCHAR2 (255); -- C10 + x_ins_discipline_omschrijving VARCHAR2 (255); -- C30 + x_ins_srtdeel_omschrijving VARCHAR2 (255); -- C100 + v_ins_deel_omschrijving VARCHAR2 (255); -- C60 + x_merk VARCHAR2 (255); -- C60 + x_categorie VARCHAR2 (255); -- C60 + v_cnt_contract_nummer_intern VARCHAR2 (255); -- C30 + v_prs_bedrijf_naam VARCHAR2 (255); -- C60 + v_ins_srtcontrole_oms VARCHAR2 (255); -- C60 + 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_import_key = p_import_key + ORDER BY fac_imp_file_index; +BEGIN + DELETE FROM conn_imp_keurobjecten; + + 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, x_alg_ruimte_nr); + fac.imp_getfield (v_newline, c_delim, x_ins_discipline_omschrijving); + fac.imp_getfield (v_newline, c_delim, x_ins_srtdeel_omschrijving); + fac.imp_getfield (v_newline, c_delim, v_ins_deel_omschrijving); + fac.imp_getfield (v_newline, c_delim, x_merk); + fac.imp_getfield (v_newline, c_delim, x_categorie); + fac.imp_getfield (v_newline, c_delim, v_cnt_contract_nummer_intern); + 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, 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 := + '[' + || x_ins_discipline_omschrijving + || '|' + || x_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 (x_alg_ruimte_nr) = 'RUIMTE' + AND UPPER (x_ins_discipline_omschrijving) = 'DISCIPLINE' + AND UPPER (x_ins_srtdeel_omschrijving) = 'OBJECTSOORT' + AND UPPER (v_ins_deel_omschrijving) = 'OBJECT_ID' + AND UPPER (x_merk) = 'MERK' + AND UPPER (x_categorie) = 'KEURING_CATEGORIE' + AND UPPER (v_prs_bedrijf_naam) = 'LEVERANCIER' + AND UPPER (v_cnt_contract_nummer_intern) = 'CONTRACT_NR' -- Per CONN#22359! + AND UPPER (v_ins_srtcontrole_oms) = 'SOORTCONTROLE' + 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_import_key, + 'W', + v_aanduiding || v_errormsg, + 'Locatiecode wordt afgebroken tot [' + || v_alg_locatie_code + || ']' + ); + END IF; + + -- Skip 'Ruimte' + -- Skip 'Discipline' + -- Skip 'Objectsoort' + + -- + 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_import_key, + 'W', + v_aanduiding || v_errormsg, + 'Objectomschrijving wordt afgebroken tot [' + || v_ins_deel_omschrijving + || ']' + ); + END IF; + + -- Skip 'Merk' + -- Skip 'Categorie' + + -- + v_errormsg := 'Contractnummer ongeldig'; + v_cnt_contract_nummer_intern := + TRIM (v_cnt_contract_nummer_intern); + + IF LENGTH (v_cnt_contract_nummer_intern) > 30 + THEN + v_cnt_contract_nummer_intern := + SUBSTR (v_cnt_contract_nummer_intern, 1, 30); + fac.imp_writelog ( + p_import_key, + 'W', + v_aanduiding || v_errormsg, + 'Contractnummer wordt afgebroken tot [' + || v_cnt_contract_nummer_intern + || ']' + ); + 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_import_key, + '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_import_key, + 'W', + v_aanduiding || v_errormsg, + 'Soort controle wordt afgebroken tot [' + || v_ins_srtcontrole_oms + || ']' + ); + END IF; + + -- + 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_import_key, + '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_import_key, + '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_import_key, + '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_keurobjecten ( + alg_locatie_code, + ins_deel_omschrijving, + cnt_contract_nummer_intern, + prs_bedrijf_naam, + ins_srtcontrole_omschrijving, + ins_deelsrtcontrole_datum, + ins_deelsrtcontrole_opmerking, + afgekeurd + ) + VALUES (v_alg_locatie_code, + v_ins_deel_omschrijving, + v_cnt_contract_nummer_intern, + v_prs_bedrijf_naam, + v_ins_srtcontrole_oms, + v_ins_controle_datum_d, + 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_import_key, + 'W', + v_aanduiding || v_errormsg, + ''); + + COMMIT; + END; + END IF; + END IF; + END; + END LOOP; + + IF (header_is_valid = 0) + THEN + fac.imp_writelog (p_import_key, + 'E', + 'Ongeldig importbestand', + 'Geen header of header niet volgens specificatie!'); + ELSE + fac.imp_writelog ( + p_import_key, + 'S', + 'keurobjecten/aantal ingelezen importregels: ' + || TO_CHAR (v_count_tot), + '' + ); + fac.imp_writelog ( + p_import_key, + 'S', + 'keurobjecten/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_import_key, + 'E', + v_aanduiding || v_errormsg, + 'Inleesproces keurobjecten afgebroken!'); +END conn_import_keurobjecten; / -BEGIN adm.systrackscript('$Workfile: conn.sql $', '$Revision: 181 $', 0); END; +/* Formatted on 14-3-2012 17:24:48 (QP5 v5.115.810.9015) */ +CREATE OR REPLACE PROCEDURE conn_update_keurobjecten (p_import_key IN NUMBER) +AS + v_errormsg VARCHAR2 (1000); + oracle_err_num NUMBER; + oracle_err_mes VARCHAR2 (200); + + -- SUBPROC + PROCEDURE add_deelinspectie (p_import_key IN NUMBER) + AS + CURSOR c1 + IS + SELECT obj.ins_deel_omschrijving, + obj.alg_locatie_code, + obj.cnt_contract_nummer_intern, + obj.ins_srtcontrole_omschrijving, + obj.ins_deelsrtcontrole_datum, + DECODE ( + COALESCE (cb.prs_bedrijf_naam, obj.prs_bedrijf_naam), + NULL, + obj.ins_deelsrtcontrole_opmerking, + COALESCE (cb.prs_bedrijf_naam, obj.prs_bedrijf_naam) + || ':' + || CHR (13) + || CHR (10) + || COALESCE (obj.ins_deelsrtcontrole_opmerking, '-') + ) + ins_deelsrtcontrole_opmerking, + DECODE (UPPER (obj.afgekeurd), 'JA', 129, 'NEE', 130, -1) + afgekeurd + FROM (SELECT ins_deel_omschrijving, + alg_locatie_code, + cnt_contract_nummer_intern, -- Per CONN#22359! + prs_bedrijf_naam, + ins_srtcontrole_omschrijving, + ins_deelsrtcontrole_datum, + ins_deelsrtcontrole_opmerking, + afgekeurd + FROM conn_imp_keurobjecten) obj + LEFT JOIN + (SELECT c.cnt_contract_nummer_intern, + b.prs_bedrijf_naam, + c.cnt_contract_key + FROM cnt_contract c, + ins_tab_discipline td, + cnt_disc_params dp, + prs_bedrijf b + WHERE c.cnt_contract_verwijder IS NULL + AND c.ins_discipline_key = + td.ins_discipline_key + AND td.ins_discipline_verwijder IS NULL + AND td.ins_discipline_key = + dp.cnt_ins_discipline_key + AND dp.cnt_srtcontract_type = 3 -- Ondersteuning/Support + AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key) + cb + ON obj.cnt_contract_nummer_intern = + cb.cnt_contract_nummer_intern; + + v_errormsg VARCHAR2 (1024); + c_afgekeurd_srtkey NUMBER (10) := 1466; + v_locatie_key NUMBER (10); + v_deel_key NUMBER (10); + v_srtdeel_key NUMBER (10); + v_srtdeel_oms VARCHAR2 (100); + v_srtgroep_key NUMBER (10); + v_discipline_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_cupdate NUMBER (10); + v_aanduiding VARCHAR (200); + BEGIN + v_count_tot := 0; + v_count_cupdate := 0; + v_aanduiding := ''; + + FOR rec IN c1 + LOOP + BEGIN + v_count_tot := v_count_tot + 1; + v_aanduiding := + '[' + || rec.alg_locatie_code + || '|' + || rec.ins_deel_omschrijving + || '|' + || rec.cnt_contract_nummer_intern + || '|' + || rec.ins_srtcontrole_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 d.ins_deel_key, + sd.ins_srtdeel_key, + sd.ins_srtdeel_omschrijving, + sg.ins_srtgroep_key, + sg.ins_discipline_key + INTO v_deel_key, + v_srtdeel_key, + v_srtdeel_oms, + v_srtgroep_key, + v_discipline_key + FROM ins_deel d, ins_srtdeel sd, ins_srtgroep sg + WHERE d.ins_deel_verwijder IS NULL + AND d.ins_deel_module = 'INS' + AND d.ins_deel_upper = UPPER (rec.ins_deel_omschrijving) + AND d.ins_alg_locatie_key = v_locatie_key + AND d.ins_srtdeel_key = sd.ins_srtdeel_key + AND sd.ins_srtgroep_key = sg.ins_srtgroep_key; + + -- AFGEKEURD toevoegen of wijzigen! + IF rec.afgekeurd IS NOT NULL AND UPPER (rec.afgekeurd) != -1 + 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', + 122) + RETURNING ins_kenmerk_key INTO v_kenmerk_key; + + fac.imp_writelog ( + p_import_key, + 'I', + 'INS-Objecten/afgekeurd-kenmerk toegevoegd voor: ' + || v_srtdeel_oms, + '' + ); + 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 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')); + + 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_import_key, + 'W', + v_aanduiding || v_errormsg, + ''); + COMMIT; + END; + END LOOP; + + fac.imp_writelog ( + p_import_key, + 'S', + 'INS-Objecten/aantal ingelezen: ' || TO_CHAR (v_count_tot), + '' + ); + fac.imp_writelog ( + p_import_key, + 'S', + 'INS-Controles/aantal toegevoegd: ' || TO_CHAR (v_count_cupdate), + '' + ); + COMMIT; + END; +-- MAIN +BEGIN + add_deelinspectie (p_import_key); +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_import_key, + 'E', + v_errormsg, + 'Importproces keurobjecten afgebroken!'); +END conn_update_keurobjecten; +/ + +BEGIN fac.registercustversion('CONN', 51); END; +/ + +BEGIN adm.systrackscript('$Workfile: conn.sql $', '$Revision: 182 $', 0); END; / COMMIT;