diff --git a/BLST/BLST.sql b/BLST/BLST.sql index 62db846ae..260bec216 100644 --- a/BLST/BLST.sql +++ b/BLST/BLST.sql @@ -835,12 +835,11 @@ AS rar.res_rsv_artikel_levering, art.res_discipline_key, art.res_artikel_groep , - kst.prs_kostensoort_oms - FROM res_rsv_artikel rar, res_artikel art,ins_tab_discipline cat, prs_kostensoort kst + COALESCE(cat.ins_discipline_externnr,'NB') catalogusID + FROM res_rsv_artikel rar, res_artikel art,ins_tab_discipline cat WHERE rar.res_rsv_ruimte_key = in_res_key AND art.res_artikel_key=rar.res_artikel_key - AND cat.ins_discipline_key = art.res_discipline_key - AND kst.prs_kostensoort_key =cat.prs_kostensoort_key; + AND cat.ins_discipline_key = art.res_discipline_key; v_bestand VARCHAR2(50); v_base VARCHAR2(10); @@ -898,12 +897,17 @@ BEGIN blst.add_xml_element (v_bestand, 'Omschrijving', SUBSTR(rec.oms,0,40)); blst.add_xml_element (v_bestand, 'Wensen', rec.wensen); - SELECT lev.PRS_LEVERANCIER_NR INTO v_LevNr - FROM res_rsv_artikel rar,res_artikel art, res_disc_params dsp, prs_bedrijf lev - WHERE rar.res_rsv_ruimte_key = rec.res_key - AND art.res_artikel_key = rar.res_artikel_key - AND dsp.RES_INS_DISCIPLINE_KEY = art.RES_DISCIPLINE_KEY - AND lev.prs_bedrijf_key = dsp.prs_bedrijf_key FETCH FIRST 1 ROW ONLY; + BEGIN + SELECT lev.PRS_LEVERANCIER_NR INTO v_LevNr + FROM res_rsv_artikel rar,res_artikel art, res_disc_params dsp, prs_bedrijf lev + WHERE rar.res_rsv_ruimte_key = rec.res_key + AND art.res_artikel_key = rar.res_artikel_key + AND dsp.RES_INS_DISCIPLINE_KEY = art.RES_DISCIPLINE_KEY + AND lev.prs_bedrijf_key = dsp.prs_bedrijf_key FETCH FIRST 1 ROW ONLY; + EXCEPTION WHEN NO_DATA_FOUND + THEN + v_levNr :='NB'; + END; blst.add_xml_element (v_bestand, 'LeverancierNr', v_LevNr); blst.add_xml_element (v_bestand, 'LeverancierType', 'LEV'); @@ -936,7 +940,7 @@ BEGIN blst.add_xml_element (v_bestand, 'TechnischeKey', 'Technisch materiaal'); blst.add_xml_element (v_bestand, 'Leverancier', v_LevNr); blst.add_xml_element (v_bestand, 'Artikelsoort', '01'); - blst.add_xml_element (v_bestand, 'CatalogusID', rec_art.prs_kostensoort_oms); + blst.add_xml_element (v_bestand, 'CatalogusID', rec_art.catalogusID); blst.add_xml_element (v_bestand, 'Groep', rec_art.res_artikel_groep); blst.add_xml_element (v_bestand, 'StartDatum', rec_art.res_rsv_artikel_levering); blst.add_xml_element (v_bestand, 'EindDatum', rec.datum_tot); @@ -1016,6 +1020,7 @@ AS V_today DATE; v_dummy VARCHAR2(10); v_count NUMBER; + v_actionCode VARCHAR2(6); BEGIN v_SAPID:=''; v_counter :=1; @@ -1106,17 +1111,24 @@ BEGIN blst.add_xml_element (v_bestand, 'Regelnummer', v_artCounter); v_action := 'INS'; blst.add2exportTable(rec.res_key,v_SAPID, v_artCounter,rec_art.artikel_key,rec_art.artikel_nr,rec_art.art_aantal,'INKOOP', v_action); + v_actionCode := '01'; ELSE blst.add_xml_element (v_bestand, 'Regelnummer', rec_art.exp_regel_nr); v_action := 'UPD'; blst.add2exportTable(rec.res_key,v_SAPID, rec_art.exp_regel_nr, rec_art.exp_artikel_key,rec_art.artikel_nr,rec_art.art_aantal,'INKOOP', v_action); + IF rec_art.art_aantal=0 + THEN + v_actionCode:='03'; + ELSE + v_actionCode:='02'; + END IF; END IF; blst.add_xml_element (v_bestand, 'Aantal',rec_art.art_aantal); - blst.add_xml_element (v_bestand, 'Actie', '02'); + blst.add_xml_element (v_bestand, 'Actie', v_actionCode); blst.add_xml_element (v_bestand, 'ArtikelNr', rec_art.artikel_nr); blst.add_xml_element (v_bestand, 'Conditiesoort' ,'ZPRM'); @@ -1474,13 +1486,13 @@ AS v_reskey NUMBER; v_sapnr_str VARCHAR2(50); v_res_key NUMBER; - v_regelnr_str VARCHAR2(10); + v_regelnr_str VARCHAR2(50); v_regelnr NUMBER; - v_actioncode_str VARCHAR2(10); - v_artikelnr_str VARCHAR2(20); - v_aantal_str VARCHAR2(10); + v_actioncode_str VARCHAR2(50); + v_artikelnr_str VARCHAR2(50); + v_aantal_str VARCHAR2(50); v_aantal NUMBER; - v_prijs_str VARCHAR2(20); + v_prijs_str VARCHAR2(50); v_prijs NUMBER; v_leverdatum_str VARCHAR2(50); v_leverdatum DATE; @@ -1494,14 +1506,15 @@ AS BEGIN header_is_valid :=0; DELETE FROM blst_imp_sap; - + v_aanduiding:='Start inlees process'; COMMIT; FOR rec in c1 LOOP BEGIN + v_aanduiding:='Lees regel'; v_newline := rec.fac_imp_file_line; - v_aanduiding := ''; - + + v_aanduiding := 'Lees velden in'; fac.imp_getfield (v_newline, c_delim, v_sapnr_str); fac.imp_getfield (v_newline, c_delim, v_regelnr_str); fac.imp_getfield (v_newline, c_delim, v_actioncode_str); @@ -1510,6 +1523,7 @@ BEGIN fac.imp_getfield (v_newline, c_delim, v_prijs_str); fac.imp_getfield (v_newline, c_delim, v_leverdatum_str); + v_aanduiding := 'Valideer Headers'; IF (header_is_valid = 0) THEN IF UPPER (TRIM (v_sapnr_str)) = 'SAPNR' @@ -1523,7 +1537,9 @@ BEGIN header_is_valid := 1; END IF; ELSE - v_aanduiding := v_sapnr_str; + + + v_aanduiding := 'Converteer res_key voor '||v_sapnr_str; v_res_key := fac.safe_to_number(SUBSTR(v_sapnr_str,4, LENGTH(v_sapnr_str))); IF v_res_key > 0 THEN @@ -1533,23 +1549,28 @@ BEGIN v_ongeldig :=1; v_errormsg:='Fout bij converteren SAPNr ['||v_aanduiding||']'; END IF; + v_aanduiding := 'Converteer regelnr voor '||v_sapnr_str; v_regelnr := fac.safe_to_number(v_regelnr_str); IF v_regelnr <0 THEN v_ongeldig :=1; v_errormsg:='Fout bij converteren regelnr ['||v_aanduiding||']'; END IF; + v_aanduiding := 'Converteer aantal voor '||v_sapnr_str; v_aantal := fac.safe_to_number(v_aantal_str); IF v_aantal <0 THEN v_ongeldig :=1; v_errormsg:='Fout bij converteren aantal ['||v_aanduiding||']'; END IF; + v_aanduiding := 'Converteer prijs voor '||v_sapnr_str; v_prijs := fac.safe_to_number(v_prijs_str); + v_aanduiding := 'Converteer leverdatum voor '||v_sapnr_str; v_leverdatum := fac.safe_to_date(v_leverdatum_str, 'DD-MM-YYYY hh:mm:ss'); IF v_ongeldig=0 THEN BEGIN + v_aanduiding := 'Insert '||v_sapnr_str; v_ongeldig :=0; -- WEGGOOIEN INSERT INTO blst_IMP_SAP(res_key, regel_nr, @@ -1581,7 +1602,7 @@ BEGIN p_import_key, 'E', v_aanduiding || v_errormsg, - 'Fout bij toevoegen regel aan importtabel ykpn_imp_opdr_status_strukton.'); + 'Fout bij toevoegen regel aan importtabel SAP_IMPORT.'); END; ELSE IF (v_ongeldig = 2) @@ -1641,10 +1662,12 @@ AS imp.prijs prijs, imp.leverdatum leverdatum, COALESCE((SELECT res_rsv_artikel_key FROM blst_exp_sap WHERE res_key=imp.res_key AND artikel_nr=imp.artikel_nr), 0) art_key, - COALESCE((select aantal exp_aantal from blst_exp_sap where res_key=imp.res_key and artikel_Nr(+)=imp.artikel_nr),0) exp_aantal + COALESCE((select aantal exp_aantal from blst_exp_sap where res_key=imp.res_key and artikel_Nr(+)=imp.artikel_nr),0) exp_aantal, + res.res_status_fo_key, + res.res_status_bo_key FROM blst_imp_sap imp, res_rsv_ruimte res WHERE res.res_rsv_ruimte_key = imp.res_key - AND res.res_status_bo_key NOT IN (5,6) + AND (res.res_status_fo_key=2 AND (COALESCE(res.res_status_bo_key,0) = 0 OR res.res_status_bo_key=2)) ORDER BY imp.res_key, imp.regel_nr; v_errormsg VARCHAR (200);