diff --git a/HMOD/hmod.sql b/HMOD/hmod.sql index 9e137065b..455f9591e 100644 --- a/HMOD/hmod.sql +++ b/HMOD/hmod.sql @@ -181,7 +181,277 @@ EXCEPTION END hmod_update_perslid; / +CREATE OR REPLACE PROCEDURE hmod_import_koffer (p_import_key IN NUMBER) +AS + c_fielddelimitor 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 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_versiedatum VARCHAR2 (15); + v_omschrijving VARCHAR2 (250); + v_code VARCHAR2 (30); + v_token VARCHAR2 (20); + v_mob VARCHAR2 (20); + v_hit VARCHAR2 (20); + v_lap_en_sim VARCHAR2 (20); + v_lapt VARCHAR2 (20); + v_tnc VARCHAR2 (20); + v_tnc_omschrijving VARCHAR2 (100); + v_facilitor VARCHAR2 (20); + v_adp VARCHAR2 (20); + v_absentiemanager VARCHAR2 (20); + v_regas VARCHAR2 (20); + v_checks VARCHAR2 (20); + v_accountview VARCHAR2 (20); + v_elvy VARCHAR2 (20); + v_hodnet VARCHAR2 (20); + v_proactive VARCHAR2 (20); + CURSOR c + IS + SELECT * + FROM fac_imp_file + WHERE fac_import_key = p_import_key + ORDER BY fac_imp_file_index; +BEGIN + -- Vorige inlees eerst verwijderen + ---- Voor hmod_koffersysteem geldt dat je inlezen op dezelfde dag mag/kunt overschrijven. Voorgaande versiedatums blijven staan. + DELETE FROM hmod_imp_koffersysteem + WHERE versiedatum = TO_CHAR(TRUNC (SYSDATE),'DD-MM-YYYY'); + + COMMIT; + + header_is_valid := 0; + v_ongeldig := 0; + v_count_error := 0; + header_is_valid := 0; + v_count_tot := 0; + v_count_import := 0; + + FOR rec IN c + LOOP + BEGIN + v_newline := rec.fac_imp_file_line; + v_errormsg := 'Fout opvragen te importeren rij'; + v_aanduiding := ''; + + -- Lees alle veldwaarden: versiedatum;omschrijving;code;token;mob;hit;lap_en_sim;lapt;tnc;tnc omschrijving;facilitor;adp;absentiemanager;regas;checks;accountview;elvy;hodnet;proactive + v_errormsg := 'Fout opvragen te importeren kolom/rij 1'; + fac.imp_getfield (v_newline, c_fielddelimitor, v_versiedatum); + v_errormsg := 'Fout opvragen te importeren kolom/rij 2'; + fac.imp_getfield (v_newline, c_fielddelimitor, v_omschrijving); + v_errormsg := 'Fout opvragen te importeren kolom/rij 3'; + fac.imp_getfield (v_newline, c_fielddelimitor, v_code); + fac.imp_getfield (v_newline, c_fielddelimitor, v_token); + fac.imp_getfield (v_newline, c_fielddelimitor, v_mob); + fac.imp_getfield (v_newline, c_fielddelimitor, v_hit); + fac.imp_getfield (v_newline, c_fielddelimitor, v_lap_en_sim); + fac.imp_getfield (v_newline, c_fielddelimitor, v_lapt); + fac.imp_getfield (v_newline, c_fielddelimitor, v_tnc); + fac.imp_getfield (v_newline, + c_fielddelimitor, + v_tnc_omschrijving); + fac.imp_getfield (v_newline, c_fielddelimitor, v_facilitor); + fac.imp_getfield (v_newline, c_fielddelimitor, v_adp); + fac.imp_getfield (v_newline, c_fielddelimitor, v_absentiemanager); + fac.imp_getfield (v_newline, c_fielddelimitor, v_regas); + fac.imp_getfield (v_newline, c_fielddelimitor, v_checks); + fac.imp_getfield (v_newline, c_fielddelimitor, v_accountview); + fac.imp_getfield (v_newline, c_fielddelimitor, v_elvy); + fac.imp_getfield (v_newline, c_fielddelimitor, v_hodnet); + fac.imp_getfield (v_newline, c_fielddelimitor, v_proactive); + + v_aanduiding := + v_versiedatum || '|' || v_omschrijving || '|' || v_code; + v_count_tot := v_count_tot + 1; + + -- Skip until the header is found + IF header_is_valid = 0 + THEN + IF v_versiedatum = 'versiedatum' + AND v_omschrijving = 'omschrijving' + AND v_code = 'code' + AND v_token = 'token' + AND v_mob = 'mob' + AND v_hit = 'hit' + AND v_lap_en_sim = 'lap_en_sim' + AND v_lapt = 'lapt' + AND v_tnc = 'tnc' + AND v_tnc_omschrijving = 'tnc omschrijving' + AND v_facilitor = 'facilitor' + AND v_adp = 'adp' + AND v_absentiemanager = 'absentiemanager' + AND v_regas = 'regas' + AND v_checks = 'checks' + AND v_accountview = 'accountview' + AND v_elvy = 'elvy' + AND v_hodnet = 'hodnet' + AND v_proactive = 'proactive' + THEN + header_is_valid := 1; + END IF; + ELSE -- Header OK. Vanaf hier in de LOOP eventueel variabele vullen. + BEGIN + v_errormsg := 'Versiedatum wordt sysdatum '; + + SELECT TO_CHAR (TRUNC (SYSDATE), 'DD-MM-YYYY') + INTO v_versiedatum + FROM DUAL; + END; + + INSERT INTO hmod_imp_koffersysteem (versiedatum, + omschrijving, + code, + token, + mob, + hit, + lap_en_sim, + lapt, + tnc, + tnc_omschrijving, + facilitor, + adp, + absentiemanager, + regas, + checks, + accountview, + elvy, + hodnet, + proactive) + VALUES (v_versiedatum, + v_omschrijving, + v_code, + v_token, + v_mob, + v_hit, + v_lap_en_sim, + v_lapt, + v_tnc, + v_tnc_omschrijving, + v_facilitor, + v_adp, + v_absentiemanager, + v_regas, + v_checks, + v_accountview, + v_elvy, + v_hodnet, + v_proactive); + 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 + -- Afsluiting: Rollback/Delete tabel als er fouten in csv zitten. Initieel voor import koffersysteem nog zonder foutcheck opgezet, dus ook geen v_ongeldig aan het vullen... + IF v_ongeldig > 0 + THEN + ROLLBACK; + -- Met rollback haalt hij ook al mijn errors en warnings weg!?? Daarom een DELETE + -- delete from hmod_imp_contractscope where