diff --git a/HPJI/hpji.sql b/HPJI/hpji.sql index cb68ca1ab..bffc59735 100644 --- a/HPJI/hpji.sql +++ b/HPJI/hpji.sql @@ -3119,7 +3119,103 @@ AS AND asd.ins_deel_key = y.ins_deel_key(+) AND asd.ins_deel_key = z.ins_deel_key(+); -BEGIN fac.registercustversion('HPJI', 9); END; + +-- HPJI#28971 Geleverde bestellingen bloemen automatisch afmelden +CREATE OR REPLACE PROCEDURE hpji_export_bes_afmeld (p_applname IN VARCHAR2, + p_applrun IN VARCHAR2, + p_filedir IN VARCHAR2, + p_filename IN VARCHAR2) +AS + -- De bestelopdrachten die ik als compleet geleverd veronderstel, + -- die zouden in principe meer werkdagen geleden geleverd zijn dan + -- de 'notidagen' van de catalogus aangeeft. + -- bes_discipline 201 Bloemen Groningen + -- bes_discipline 202 Bloemen Veenhuizen + CURSOR cbopi + IS + SELECT boi.bes_bestelopdr_item_key, bo.bes_bestelopdr_key, b.bes_bestelling_key + FROM bes_bestelopdr bo, + bes_bestelopdr_item boi, + bes_bestelling_item bi, + bes_bestelling b, + bes_srtdeel sd, + bes_srtgroep sg, + bes_disc_params bdp + WHERE bo.bes_bestelopdr_status = 4 -- In bestelling + AND bo.bes_bestelopdr_key = boi.bes_bestelopdr_key + AND boi.bes_bestelopdr_item_key = bi.bes_bestelopdr_item_key + AND bi.bes_bestelling_key = b.bes_bestelling_key + AND bi.bes_srtdeel_key = sd.bes_srtdeel_key + AND sd.bes_srtgroep_key = sg.bes_srtgroep_key + AND sg.ins_discipline_key = bdp.bes_ins_discipline_key + AND sg.ins_discipline_key IN (201, 202) + AND bdp.bes_disc_params_noti_dagen IS NOT NULL + AND ( b.bes_bestelling_leverdatum IS NULL + OR fac.datumtijdplusuitvoertijd (b.bes_bestelling_leverdatum, + bdp.bes_disc_params_noti_dagen, + 'DAGEN') + < SYSDATE ); + + -- Alle bestelaanvragen die (nu) geheel geleverd zijn sluiten we af. + CURSOR cbesi + IS + SELECT bi.bes_bestelling_item_key, b.bes_bestelling_key + FROM bes_bestelling b, + bes_bestelling_item bi, + bes_bestelopdr_item boi, + bes_srtdeel sd, + bes_srtgroep sg + WHERE b.bes_bestelling_status = 5 -- Besteld + AND b.bes_bestelling_key = bi.bes_bestelling_key + AND bi.bes_bestelopdr_item_key = boi.bes_bestelopdr_item_key + AND boi.bes_bestelopdr_item_aantal = boi.bes_bestelopdr_item_aantalontv + AND bi.bes_srtdeel_key = sd.bes_srtdeel_key + AND sd.bes_srtgroep_key = sg.bes_srtgroep_key + AND sg.ins_discipline_key IN (201, 202); + + v_errorhint VARCHAR2 (1000); + v_errormsg VARCHAR2 (1000); + oracle_err_num NUMBER; + oracle_err_mes VARCHAR2 (200); +BEGIN + FOR r IN cbopi + LOOP + -- Zeg dat alles geleverd is wat besteld is. + UPDATE bes_bestelopdr_item + SET bes_bestelopdr_item_aantalontv = bes_bestelopdr_item_aantal + WHERE bes_bestelopdr_item_key = r.bes_bestelopdr_item_key; + + bes.updatebestelopdrstatus (r.bes_bestelopdr_key, NULL); + END LOOP; + + FOR r IN cbesi + LOOP + -- Sluit alle aanvraagregels af die nu geheel geleverd zijn. + UPDATE bes_bestelling_item + SET bes_bestelling_item_aantalontv = bes_bestelling_item_aantal + WHERE bes_bestelling_item_key = r.bes_bestelling_item_key; + + bes.updatebestellingstatus (r.bes_bestelling_key, NULL); + END LOOP; + + COMMIT; + +EXCEPTION + WHEN OTHERS + THEN + oracle_err_num := SQLCODE; + oracle_err_mes := SUBSTR (SQLERRM, 1, 200); + ROLLBACK; + v_errormsg := 'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')'; + fac.writelog (p_applname, + 'E', + 'Proces afmelden bestellingen afgebroken!', + v_errormsg); + COMMIT; +END; +/ + +BEGIN fac.registercustversion('HPJI', 10); END; / BEGIN adm.systrackscriptId('$Id$', 0); END; /