-- -- $Id$ -- -- Script containing customer specific configuration sql statements for aaah: Alliance Health Care DEFINE thisfile = 'AAAH.SQL' DEFINE dbuser = '^AAAH' SET ECHO ON SET DEFINE ON COLUMN fcltlogfile NEW_VALUE fcltlogfile NOPRINT; COLUMN fcltcusttxt NEW_VALUE fcltcusttxt NOPRINT; WHENEVER SQLERROR CONTINUE; SELECT adm.getscriptspoolfile('&thisfile') AS fcltlogfile FROM DUAL; SPOOL &fcltlogfile WHENEVER SQLERROR EXIT; SELECT adm.checkscriptcust('&dbuser') AS fcltcusttxt FROM DUAL; WHENEVER SQLERROR CONTINUE; --------------------------------------- PROMPT &fcltcusttxt --------------------------------------- SET DEFINE OFF ------ payload begin ------ -- exact verkoop CREATE OR REPLACE VIEW aaah_v_export_exact_verkoop (RESULT, result_order) AS SELECT RESULT, result_order FROM aaxx_v_export_exact_verkoop; CREATE OR REPLACE PROCEDURE aaah_select_exact_verkoop ( p_applname IN VARCHAR2, p_applrun IN VARCHAR2 ) AS BEGIN aaxx_select_exact_verkoop(p_applname, p_applrun, to_char(sysdate, 'yyyy'), 'CORE'); END; / CREATE OR REPLACE PROCEDURE aaah_export_exact_verkoop ( p_applname IN VARCHAR2, p_applrun IN VARCHAR2, p_filedir IN VARCHAR2, p_filename IN VARCHAR2 ) AS BEGIN aaxx_export_exact_verkoop(p_applname, p_applrun, p_filedir, p_filename, to_char(sysdate, 'yyyy'), 'CORE'); END; / -- exact verkoop over het vorige jaar CREATE OR REPLACE VIEW aaah_v_export_exact_verkoop_vj (RESULT, result_order) AS SELECT RESULT, result_order FROM aaxx_v_export_exact_verkoop; CREATE OR REPLACE PROCEDURE aaah_select_exact_verkoop_vj ( p_applname IN VARCHAR2, p_applrun IN VARCHAR2 ) AS BEGIN aaxx_select_exact_verkoop(p_applname, p_applrun, to_char(to_number(to_char(sysdate, 'yyyy'))-1), 'CORE'); END; / CREATE OR REPLACE PROCEDURE aaah_export_exact_verkoop_vj ( p_applname IN VARCHAR2, p_applrun IN VARCHAR2, p_filedir IN VARCHAR2, p_filename IN VARCHAR2 ) AS BEGIN aaxx_export_exact_verkoop(p_applname, p_applrun, p_filedir, p_filename, to_char(to_number(to_char(sysdate, 'yyyy'))-1), 'CORE'); END; / -- exact projecturen (XML) CREATE OR REPLACE VIEW aaah_v_export_exact_uren (result, result_order) AS SELECT result, result_order FROM aaxx_v_export_exact_uren_xml; CREATE OR REPLACE PROCEDURE aaah_select_exact_uren ( p_applname IN VARCHAR2, p_applrun IN VARCHAR2 ) AS BEGIN aaxx_select_exact_uren_xml(p_applname, p_applrun, ''); END; / -- verwerk exact projecturen (XML) CREATE OR REPLACE PROCEDURE aaah_export_verwerk_exact_uren ( p_applname IN VARCHAR2, p_applrun IN VARCHAR2, p_filedir IN VARCHAR2, p_filename IN VARCHAR2 ) AS BEGIN aaxx_export_verwerk_exact_uren(p_applname, p_applrun, p_filedir, p_filename, ''); END; / -- bundel catering CREATE OR REPLACE VIEW aaah_v_export_bundel_catering (RESULT, result_order) AS SELECT RESULT, result_order FROM aaxx_v_export_bundel_catering; CREATE OR REPLACE PROCEDURE aaah_export_bundel_catering ( p_applname IN VARCHAR2, p_applrun IN VARCHAR2, p_filedir IN VARCHAR2, p_filename IN VARCHAR2 ) AS BEGIN aaxx_export_bundel_catering(p_applname, p_applrun, p_filedir, p_filename); END; / CREATE OR REPLACE PROCEDURE aaah_import_perslid (p_import_key IN NUMBER) AS v_seq_of_columns VARCHAR (255); BEGIN -- AAAH gebruikt de pipe '|' als scheidingsteken. Deze gaan we even omzetten naar onze ';' UPDATE fac_imp_file SET fac_imp_file_line = REPLACE (fac_imp_file_line, '|', ';') WHERE fac_import_key = p_import_key; UPDATE fac_imp_file SET fac_imp_file_line = REPLACE (fac_imp_file_line, ',', ';') WHERE fac_import_key = p_import_key AND fac_imp_file_line LIKE '%givenName%'; -- Tijdelijke aanpassing om backwards compatable te zijn AAAH#`52771 UPDATE fac_imp_file SET fac_imp_file_line = REPLACE (fac_imp_file_line, 'CostCenter', 'Departmentnumber') WHERE fac_import_key = p_import_key AND fac_imp_file_line LIKE '%givenName%'; v_seq_of_columns := '0;0;0;0;0;0;9;2;0;1;0;0;0;0;0;6;7;8;0;3;4;5;0;0;0;0;0;28;29;30;31;32;33;34;35;36;37;38;39;40;41;42;43;44;45;46'; prs.import_perslid ( p_import_key, v_seq_of_columns, '"givenName";"sn";"EmployeeID";"Title";"sAMAccountName";"TelephoneNumber";"Mobile";"mail";"Departmentnumber"%'); END aaah_import_perslid; / CREATE OR REPLACE PROCEDURE aaah_update_perslid ( p_import_key IN NUMBER ) IS CURSOR c_del IS SELECT p.prs_perslid_key, p.prs_perslid_nr, pf.prs_perslid_naam_full FROM fac_imp_perslid i, prs_perslid p, prs_v_perslid_fullnames_all pf WHERE p.prs_perslid_nr = i.prs_perslid_nr(+) AND pf.prs_perslid_key = p.prs_perslid_key AND p.prs_perslid_nr IS NOT NULL AND i.prs_perslid_nr IS NULL AND p.prs_perslid_verwijder IS NULL ORDER BY 2; v_perslid_key NUMBER; v_perslid_nr VARCHAR2(100); v_kostenplaats_nr VARCHAR2(100); v_count NUMBER; BEGIN -- generic update prs.update_perslid (p_import_key, 'NR', 'A'); FOR rec IN c_del LOOP BEGIN prs.delete_perslid (p_import_key, rec.prs_perslid_key); END; END LOOP; UPDATE prs_perslid SET fac_profiel_key = 23 WHERE fac_profiel_key IS NULL AND prs_perslid_verwijder IS NULL AND prs_perslid_flags = 0 AND prs_perslid_nr IS NULL; END aaah_update_perslid; / ------------------------------------------------------------------------------- -- KOPPELINGEN MET LEVERANCIER ABSOLUTA ------------------------------------------------------------------------------- CREATE OR REPLACE PROCEDURE aaah_import_upd_absoluta ( p_import_key IN NUMBER) AS c_delim VARCHAR2 (1) := ';'; v_newline VARCHAR2 (1000); -- Input line v_errormsg VARCHAR2 (4000); oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); v_aanduiding VARCHAR2 (1200); header_is_valid NUMBER := 0; v_ongeldig NUMBER (1) := 0; -- De importvelden v_bestelopdr_id VARCHAR2(1000); -- VARCHAR2(30) v_datum_tijd VARCHAR2(1000); -- DATE v_line_number VARCHAR2(1000); -- NUMBER v_srtdeel_nummer VARCHAR2(1000); -- VARCHAR2(32) v_srtdeel_omschrijving VARCHAR2(1000); -- VARCHAR2(100) v_srtdeel_opmerking VARCHAR2(2000); v_bestelling_item_aantal VARCHAR2(1000); -- NUMBER(5) v_srtdeel_prijs_prijs VARCHAR2(1000); -- NUMBER(8,2) v_srtdeel_btw VARCHAR2(1000); -- NUMBER(3) v_bestelling_leverdatum VARCHAR2(1000); -- DATE v_supplier_ref VARCHAR2(1000); -- VARCHAR2(30) v_aflever_postcode VARCHAR2(1000); -- VARCHAR2(15) v_aflever_adres VARCHAR2(1000); -- VARCHAR2(50) v_kostenplaats_nr VARCHAR2(1000); -- VARCHAR2(30) v_catalogus VARCHAR2(1000); -- VARCHAR2(50) -- Overige velden: CURSOR c1 IS SELECT * FROM fac_imp_file WHERE fac_import_key = p_import_key ORDER BY fac_imp_file_index; BEGIN -- Eerst opruiming DELETE FROM aaah_imp_upd_absoluta; COMMIT; FOR rec1 IN c1 LOOP BEGIN v_newline := rec1.fac_imp_file_line; v_errormsg := 'Fout opvragen te importeren rij'; v_aanduiding := ''; v_ongeldig := 0; fac.imp_getfield (v_newline, c_delim, v_bestelopdr_id); fac.imp_getfield (v_newline, c_delim, v_datum_tijd); fac.imp_getfield (v_newline, c_delim, v_line_number); fac.imp_getfield (v_newline, c_delim, v_srtdeel_nummer); fac.imp_getfield (v_newline, c_delim, v_srtdeel_omschrijving); fac.imp_getfield (v_newline, c_delim, v_srtdeel_opmerking); fac.imp_getfield (v_newline, c_delim, v_bestelling_item_aantal); fac.imp_getfield (v_newline, c_delim, v_srtdeel_prijs_prijs); fac.imp_getfield (v_newline, c_delim, v_srtdeel_btw); fac.imp_getfield (v_newline, c_delim, v_bestelling_leverdatum); fac.imp_getfield (v_newline, c_delim, v_supplier_ref); fac.imp_getfield (v_newline, c_delim, v_aflever_postcode); fac.imp_getfield (v_newline, c_delim, v_aflever_adres); fac.imp_getfield (v_newline, c_delim, v_catalogus); fac.imp_getfield (v_newline, c_delim, v_kostenplaats_nr); v_aanduiding := '[' || v_bestelopdr_id || '|' || v_srtdeel_nummer || '] '; -- 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 rec1.fac_imp_file_line = 'referenceID;dateTime;lineNumber;itemId;description;quantity;itemPrice;itemTax;deliveryDate;supplierRef;postcode;adres;catalogus;kostenplaats' THEN header_is_valid := 1; END IF; ELSE -- Controleer alle veldwaarden v_errormsg := 'Fout inlezen [' || v_bestelopdr_id || ']'; INSERT INTO aaah_imp_upd_absoluta (bes_bestelopdr_id, datum_tijd, line_number, bes_srtdeel_nummer, bes_srtdeel_omschrijving, bes_srtdeel_opmerking, bes_bestelling_item_aantal, bes_srtdeel_prijs_prijs, bes_srtdeel_btw, bes_bestelling_leverdatum, supplier_ref, aflever_postcode, aflever_adres, catalogus, prs_kostenplaats_nr) VALUES (SUBSTR(v_bestelopdr_id,1,30), TO_DATE(v_datum_tijd, 'yyyy-mm-dd hh24:mi:ss'), TO_NUMBER(v_line_number), SUBSTR(v_srtdeel_nummer,1,32), SUBSTR(v_srtdeel_omschrijving,1,100), v_srtdeel_opmerking, TO_NUMBER(v_bestelling_item_aantal), TO_NUMBER(v_srtdeel_prijs_prijs), TO_NUMBER(v_srtdeel_btw), TO_DATE(v_bestelling_leverdatum, 'yyyy-mm-dd hh24:mi:ss'), SUBSTR(v_supplier_ref,1,30), SUBSTR(v_aflever_postcode,1,15), SUBSTR(v_aflever_adres,1,50), SUBSTR(v_catalogus,1,50), SUBSTR(v_kostenplaats_nr,1,30)); 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, 'E', v_aanduiding || v_errormsg, 'Fout bij toevoegen regel aan importtabel aaah_imp_upd_absoluta.'); 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!'); END IF; COMMIT; EXCEPTION WHEN OTHERS THEN oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 200); v_errormsg := SUBSTR( v_errormsg || 'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')', 1, 490); fac.imp_writelog (p_import_key, 'E', SUBSTR(v_aanduiding, 1, 500) || ' - ' || v_errormsg, 'Inleesproces update Absoluta afgebroken!'); END; / CREATE OR REPLACE PROCEDURE aaah_update_upd_absoluta (p_import_key IN NUMBER) AS -- Cursor loopt - in volgorde! - over alle ingelezen opdrachtstatusberichten. CURSOR c IS SELECT * FROM aaah_imp_upd_absoluta ORDER BY line_number; CURSOR c_del (c_bestelling_key NUMBER) IS SELECT boi.bes_bestelopdr_item_key, bes_bestelling_item_key, bes_srtdeel_omschrijving, bes_bestelling_item_aantal FROM bes_bestelling b, bes_bestelling_item bi, bes_bestelopdr_item boi, bes_bestelopdr bo, bes_srtdeel sd WHERE b.bes_bestelling_key = bi.bes_bestelling_key AND bi.bes_bestelopdr_item_key = boi.bes_bestelopdr_item_key(+) AND boi.bes_bestelopdr_key = bo.bes_bestelopdr_key(+) AND bi.bes_srtdeel_key = sd.bes_srtdeel_key AND b.bes_bestelling_key = c_bestelling_key AND bi.bes_bestelling_item_aantal <> 0 AND NOT EXISTS (SELECT 1 FROM aaah_imp_upd_absoluta i WHERE sd.bes_srtdeel_nr = i.bes_srtdeel_nummer || '/' || i.supplier_ref); v_errormsg VARCHAR2 (1000); oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); v_aanduiding VARCHAR2 (200); v_count NUMBER; v_bestelling_item_aantal BES_BESTELLING_ITEM.BES_BESTELLING_ITEM_AANTAL%TYPE; v_bestelopdr_item_posnr BES_BESTELOPDR_ITEM.BES_BESTELOPDR_ITEM_POSNR%TYPE; v_bestelling_item_key BES_BESTELLING_ITEM.BES_BESTELLING_ITEM_KEY%TYPE; v_srtdeel_key BES_SRTDEEL.BES_SRTDEEL_KEY%TYPE; v_bestelopdr_item_key BES_BESTELOPDR_ITEM.BES_BESTELOPDR_ITEM_KEY%TYPE; v_bestelling_key BES_BESTELLING.BES_BESTELLING_KEY%TYPE; v_bestelling_status BES_BESTELLING.BES_BESTELLING_STATUS%TYPE; v_bestelopdr_key BES_BESTELOPDR.BES_BESTELOPDR_KEY%TYPE; v_bestelopdr_status BES_BESTELOPDR.BES_BESTELOPDR_STATUS%TYPE; v_adres_key_lev MLD_ADRES.MLD_ADRES_KEY%TYPE; v_adres_key_lev2 MLD_ADRES.MLD_ADRES_KEY%TYPE; v_srtgroep_key BES_SRTGROEP.BES_SRTGROEP_KEY%TYPE; -- Groep waar producten van Absoluta onder vallen. v_kostenplaats_key PRS_KOSTENPLAATS.PRS_KOSTENPLAATS_KEY%TYPE; c_adres_key_lev MLD_ADRES.MLD_ADRES_KEY%TYPE := 40; -- Hoofdkantoor c_perslid_key PRS_PERSLID.PRS_PERSLID_KEY%TYPE := 62; -- Absoluta API user c_kostenplaats_key PRS_KOSTENPLAATS.PRS_KOSTENPLAATS_KEY%TYPE := 32; -- General management c_bedrijf_key PRS_BEDRIJF.PRS_BEDRIJF_KEY%TYPE := 941; -- Absoluta c_srtgroep_key BES_SRTGROEP.BES_SRTGROEP_KEY%TYPE := 41; -- Groep waar producten van Absoluta onder vallen. BEGIN -- Loop door alle geimporteerde bestelregels en verwerk deze. FOR rec IN c LOOP BEGIN v_aanduiding := '[' || rec.bes_bestelopdr_id || '|' || rec.bes_srtdeel_nummer || '] '; -- Kijken of het afleveradres bestaat BEGIN SELECT MAX(mld_adres_key), COUNT(*) INTO v_adres_key_lev, v_count FROM mld_adres WHERE UPPER(REPLACE(mld_adres_bezoek_postcode, ' ')) = UPPER(REPLACE(rec.aflever_postcode, ' ')); -- Test of er meer afleveradressen zijn met dezelfde postcode IF v_count > 1 THEN BEGIN SELECT MAX(mld_adres_key), COUNT(*) INTO v_adres_key_lev2, v_count FROM mld_adres WHERE UPPER(REPLACE(mld_adres_bezoek_postcode, ' ')) = UPPER(REPLACE(rec.aflever_postcode, ' ')) AND UPPER(REPLACE(mld_adres_bezoek_adres, ' ')) = UPPER(REPLACE(rec.aflever_adres, ' ')); IF v_count = 1 THEN v_adres_key_lev := v_adres_key_lev2; END IF; EXCEPTION WHEN OTHERS THEN fac.imp_writelog (p_import_key, 'W', v_aanduiding || ' Afleveradres kan niet uniek gevonden worden', 'Fout bij verwerken update Absoluta.'); END; END IF; IF v_adres_key_lev IS NULL THEN v_adres_key_lev := c_adres_key_lev; END IF; EXCEPTION WHEN OTHERS THEN -- terugvallen op de standaard. v_adres_key_lev := c_adres_key_lev; fac.imp_writelog (p_import_key, 'W', v_aanduiding || ' Afleveradres kan niet gevonden worden', 'Fout bij verwerken update Absoluta.'); END; IF v_bestelling_key IS NULL THEN IF rec.bes_bestelopdr_id IS NULL THEN -- probeer de bestelling te achterhalen a.d.h.v. het artikelnummer. Het artikelnummer in FACILITOR is -- namelijk opgebouwd uit het referentienummer van de leverancier en het artikelnummer: -- bes_srtdeel_nr = bes_srtdeel_nummer || '/' || supplier_ref BEGIN SELECT DISTINCT b.bes_bestelling_key, b.bes_bestelling_status, bo.bes_bestelopdr_key, bo.bes_bestelopdr_status INTO v_bestelling_key, v_bestelling_status, v_bestelopdr_key, v_bestelopdr_status FROM bes_bestelling b, bes_bestelling_item bi, bes_srtdeel sd, bes_bestelopdr_item boi, bes_bestelopdr bo WHERE b.bes_bestelling_key = bi.bes_bestelling_key AND bi.bes_srtdeel_key = sd.bes_srtdeel_key AND bi.bes_bestelopdr_item_key = boi.bes_bestelopdr_item_key AND boi.bes_bestelopdr_key = bo.bes_bestelopdr_key AND sd.bes_srtdeel_nr LIKE '%/' || rec.supplier_ref; EXCEPTION WHEN NO_DATA_FOUND THEN v_bestelling_key := NULL; WHEN OTHERS THEN v_bestelling_key := NULL; fac.imp_writelog (p_import_key, 'E', v_aanduiding || 'Hoewel artikel voorkomt kan bestelling niet uniek gevonden worden.', 'Fout bij verwerken update Absoluta.'); END; -- We gaan een nieuwe bestelling aanmaken die vanuit Absoluta geiniteerd is. -- We hebben dan geen kostenplaats, dus zoeken we deze op in FACILITOR. BEGIN SELECT prs_kostenplaats_key INTO v_kostenplaats_key FROM prs_kostenplaats WHERE prs_kostenplaats_verwijder IS NULL AND prs_kostenplaats_nr = rec.prs_kostenplaats_nr; EXCEPTION WHEN NO_DATA_FOUND THEN v_kostenplaats_key := c_kostenplaats_key; END; IF v_bestelling_key IS NULL THEN -- maak nieuwe bestelling aan INSERT INTO bes_bestelling (bes_bestelling_status, bes_bestelling_module, bes_bestelling_leverdatum, prs_perslid_key, prs_kostenplaats_key, mld_adres_key_lev, bes_bestelling_levkosten, bes_bestelling_korting, prs_perslid_key_voor) VALUES ( 2, 'BES', rec.bes_bestelling_leverdatum, c_perslid_key, v_kostenplaats_key, v_adres_key_lev, 0, 0, c_perslid_key) RETURNING bes_bestelling_key INTO v_bestelling_key; v_bestelling_status := 2; -- nieuw -- maak nieuwe opdracht aan INSERT INTO bes_bestelopdr (bes_bestelopdr_id, bes_bestelopdr_status, prs_bedrijf_key, mld_adres_key_lev, mld_adres_key_fac, bes_bestelopdr_levkosten, bes_bestelopdr_korting, prs_perslid_key) VALUES (v_bestelling_key || '/1', 2, c_bedrijf_key, v_adres_key_lev, NULL, -- factuur adres 0, 0, c_perslid_key) RETURNING bes_bestelopdr_key INTO v_bestelopdr_key; v_bestelopdr_status := 2; END IF; ELSE -- Verzamel bestelopdracht gegevens. v_errormsg := 'Zoek bestelopdr'; SELECT bes_bestelopdr_key, bes_bestelopdr_status INTO v_bestelopdr_key, v_bestelopdr_status FROM bes_bestelopdr bo WHERE bo.bes_bestelopdr_id = rec.bes_bestelopdr_id; -- Verzamel bestelgegevens. v_errormsg := 'Zoek bestelling'; SELECT bes_bestelling_key, bes_bestelling_status INTO v_bestelling_key, v_bestelling_status FROM bes_bestelling b WHERE b.bes_bestelling_key = SUBSTR(rec.bes_bestelopdr_id, 1, INSTR(rec.bes_bestelopdr_id, '/')-1); END IF; END IF; -- Nu gaan we de catalogus achterhalen. Er zijn namelijk drie verschillende catalogi die door Aliance gebruikt worden. -- Allereerst zoeken we bij bestaande artikelen onder welke catalogus deze vallen. SELECT MAX(bes_srtgroep_key) INTO v_srtgroep_key FROM bes_bestelling_item bi, bes_srtdeel sd WHERE bi.bes_bestelling_key = v_bestelling_key AND bi.bes_srtdeel_key = sd.bes_srtdeel_key; -- Als dit niet lukt (bijvoorbeeld bij een nieuwe bestelling), dan gebruiken we de catalogus tag (accounthash) uit de xml. IF v_srtgroep_key IS NULL THEN SELECT MAX(bes_srtgroep_key) INTO v_srtgroep_key FROM bes_disc_params bdp, bes_srtgroep sg WHERE bdp.bes_disc_params_punchouturl LIKE '%' || rec.catalogus || '%' AND bdp.bes_ins_discipline_key = sg.ins_discipline_key AND sg.bes_srtgroep_verwijder IS NULL; END IF; -- kunnen we helemaal niets vinden dan vallen we terug op de default. IF v_srtgroep_key IS NULL THEN v_srtgroep_key := c_srtgroep_key; END IF; -- En nu op zoek naar het bestelling_item (als die gevonden kan worden) BEGIN v_errormsg := 'Zoek bestelingitem'; SELECT bes_bestelling_item_key, sd.bes_srtdeel_key, bes_bestelopdr_item_key, bes_bestelling_item_aantal INTO v_bestelling_item_key, v_srtdeel_key, v_bestelopdr_item_key, v_bestelling_item_aantal FROM bes_bestelling_item bi, bes_srtdeel sd WHERE bi.bes_bestelling_key = v_bestelling_key AND bi.bes_srtdeel_key = sd.bes_srtdeel_key AND sd.bes_srtdeel_nr = rec.bes_srtdeel_nummer || '/' || rec.supplier_ref; -- Aanpassen huidige bestelling v_errormsg := 'Aanpassen srtdeel'; UPDATE bes_srtdeel SET bes_srtdeel_omschrijving = rec.bes_srtdeel_omschrijving, bes_srtdeel_opmerking = rec.bes_srtdeel_opmerking, bes_srtdeel_btw = rec.bes_srtdeel_btw, bes_srtdeel_notitie = REPLACE(rec.bes_bestelling_leverdatum, ' ', 'T') WHERE bes_srtdeel_key = v_srtdeel_key; v_errormsg := 'Aanpassen srtdeel prijs'; UPDATE bes_srtdeel_prijs SET bes_srtdeel_prijs_prijs = rec.bes_srtdeel_prijs_prijs WHERE bes_srtdeel_key = v_srtdeel_key; v_errormsg := 'Aanpassen bestelopdr item'; UPDATE bes_bestelopdr_item SET bes_bestelopdr_item_aantal = rec.bes_bestelling_item_aantal, bes_bestelopdr_item_omschrijv = rec.bes_srtdeel_omschrijving, bes_bestelopdr_item_prijs = rec.bes_srtdeel_prijs_prijs, bes_bestelopdr_item_brutoprijs = rec.bes_srtdeel_prijs_prijs WHERE bes_bestelopdr_item_key = v_bestelopdr_item_key; v_errormsg := 'Aanpassen bestelling item'; UPDATE bes_bestelling_item SET bes_bestelling_item_aantal = rec.bes_bestelling_item_aantal, bes_bestelling_item_brutoprijs = rec.bes_srtdeel_prijs_prijs, bes_bestelling_item_prijs = rec.bes_srtdeel_prijs_prijs WHERE bes_bestelling_item_key = v_bestelling_item_key; -- tracking toevoegen IF v_bestelling_item_aantal <> rec.bes_bestelling_item_aantal THEN FAC.trackaction ('#BESUPD', v_bestelling_key, c_perslid_key, NULL, 'Aantal artikel: ' || rec.bes_srtdeel_omschrijving || ' ' || v_bestelling_item_aantal || ' -> ' || rec.bes_bestelling_item_aantal); END IF; EXCEPTION WHEN NO_DATA_FOUND THEN v_errormsg := 'Toevoegen srtdeel'; INSERT INTO bes_srtdeel (bes_srtgroep_key, bes_srtdeel_omschrijving, bes_srtdeel_opmerking, bes_srtdeel_aanmaak, bes_srtdeel_verwijder, bes_srtdeel_btw, bes_srtdeel_eenheid, bes_srtdeel_nr, prs_bedrijf_key, bes_srtdeel_veelvoud, bes_srtdeel_notitie) VALUES (v_srtgroep_key, rec.bes_srtdeel_omschrijving, rec.bes_srtdeel_opmerking, sysdate, sysdate, rec.bes_srtdeel_btw, 'EA', rec.bes_srtdeel_nummer || '/' || rec.supplier_ref, c_bedrijf_key, 1, REPLACE(rec.bes_bestelling_leverdatum, ' ', 'T')) RETURNING bes_srtdeel_key INTO v_srtdeel_key; v_errormsg := 'Toevoegen srtdeel prijs'; INSERT INTO bes_srtdeel_prijs (bes_srtdeel_key, bes_srtdeel_prijs_prijs) VALUES (v_srtdeel_key, rec.bes_srtdeel_prijs_prijs); v_errormsg := 'Toevoegen bestelopdr item'; SELECT COALESCE(MAX(bes_bestelopdr_item_posnr),0)+1 INTO v_bestelopdr_item_posnr FROM bes_bestelopdr_item WHERE bes_bestelopdr_key = v_bestelopdr_key; INSERT INTO bes_bestelopdr_item ( bes_bestelopdr_key, bes_bestelopdr_item_posnr, bes_bestelopdr_item_aantal, bes_bestelopdr_item_omschrijv, bes_bestelopdr_item_prijs, bes_bestelopdr_item_brutoprijs, bes_bestelopdr_item_status) VALUES (v_bestelopdr_key, v_bestelopdr_item_posnr, rec.bes_bestelling_item_aantal, rec.bes_srtdeel_omschrijving, rec.bes_srtdeel_prijs_prijs, rec.bes_srtdeel_prijs_prijs, v_bestelopdr_status) RETURNING bes_bestelopdr_item_key INTO v_bestelopdr_item_key; v_errormsg := 'Toevoegen bestelling item'; INSERT INTO bes_bestelling_item (bes_bestelling_key, bes_bestelling_item_aantal, bes_bestelling_item_brutoprijs, bes_bestelling_item_prijs, bes_bestelopdr_item_key, bes_bestelling_item_status, bes_srtdeel_key) VALUES (v_bestelling_key, rec.bes_bestelling_item_aantal, rec.bes_srtdeel_prijs_prijs, rec.bes_srtdeel_prijs_prijs, v_bestelopdr_item_key, v_bestelling_status, v_srtdeel_key); -- tracking toevoegen v_errormsg := 'Toevoegen tracking bij nieuw artikel'; FAC.trackaction ('#BESUPD', v_bestelling_key, c_perslid_key, NULL, 'Aantal artikel: ' || rec.bes_srtdeel_omschrijving || ' 0 -> ' || rec.bes_bestelling_item_aantal); END; END; END LOOP; FOR rec1 IN c_del(v_bestelling_key) LOOP BEGIN -- verwijder bes_bestelling_item UPDATE bes_bestelling_item SET bes_bestelling_item_aantal = 0 WHERE bes_bestelling_item_key = rec1.bes_bestelling_item_key; -- verwijder bes_bestelopdr_item UPDATE bes_bestelopdr_item SET bes_bestelopdr_item_aantal = 0 WHERE bes_bestelopdr_item_key = rec1.bes_bestelopdr_item_key; NULL; FAC.trackaction ('#BESUPD', v_bestelling_key, c_perslid_key, NULL, 'Aantal artikel: ' || rec1.bes_srtdeel_omschrijving || ' ' || rec1.bes_bestelling_item_aantal || ' -> 0'); END; END LOOP; IF v_bestelling_status = 2 THEN v_errormsg := 'Aanpassen status nieuwe bestelling'; UPDATE bes_bestelling_item SET bes_bestelling_item_status = 5 WHERE bes_bestelling_key = v_bestelling_key; UPDATE bes_bestelopdr_item SET bes_bestelopdr_item_status = 4 WHERE bes_bestelopdr_key = v_bestelopdr_key; BES.setbestellingstatus (v_bestelling_key, 5, 4); END IF; -- zet de status van de bestelopdracht op 'In behandeling' om ervoor te zorgen dat de bestelling -- alsnog naar absoluta gaat. BES.setbestelopdrstatus (v_bestelopdr_key, 3, 4); COMMIT; EXCEPTION WHEN OTHERS THEN oracle_err_num := SQLCODE; oracle_err_mes := SUBSTR (SQLERRM, 1, 100); v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')'; fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errormsg, 'Fout bij verwerken update Absoluta.'); END; / ------ payload end ------ SET DEFINE OFF BEGIN adm.systrackscriptId ('$Id$', 0); END; / COMMIT; SET ECHO OFF SPOOL OFF SET DEFINE ON PROMPT Logfile of this upgrade is: &fcltlogfile