DIAN#65248 NACHTWERK-export/Auto registreren levering (14 dagen na afleverdatum)

svn path=/Customer/trunk/; revision=49368
This commit is contained in:
Maarten van der Heide
2021-01-08 16:08:28 +00:00
parent 3be02215fb
commit 4aedad3f0a

View File

@@ -924,6 +924,90 @@ EXCEPTION
END dian_update_exact;
/
-- DIAN#65248: Dummy export NACHTWERK tbv. het automatisch op Geleverd zetten
-- van bestellingen 2 weken na Afleverdatum.
CREATE OR REPLACE PROCEDURE dian_select_nachtwerk (p_applname IN VARCHAR2,
p_applrun IN VARCHAR2)
AS
-- Cursor loopt over alle bestelopdracht-items met status 'In bestelling';
-- deze worden verondersteld te zijn geleverd na 'leverdagen'+'notidagen'!
CURSOR cboi
IS
SELECT DISTINCT bo.bes_bestelopdr_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 = -1
--AND sg.ins_discipline_key = bdp.bes_ins_discipline_key
--AND bdp.bes_disc_params_noti_dagen IS NOT NULL
--AND (b.bes_bestelling_datum IS NULL OR fac.datumtijdplusuitvoertijd (b.bes_bestelling_leverdatum, bdp.bes_disc_params_noti_dagen, 'DAGEN') < SYSDATE)
AND (b.bes_bestelling_datum IS NULL OR b.bes_bestelling_leverdatum + 14 < SYSDATE) -- Hard 2 weken na afleverdatum!
ORDER BY 1;
-- Cursor loopt over alle bestelling-items met status 'Besteld' waarvan
-- de bijbehorende bestelopdracht-items zijn geleverd; deze worden dan ook
-- gesloten!
CURSOR cbi
IS
SELECT DISTINCT b.bes_bestelling_key
FROM bes_bestelling b,
bes_bestelling_item bi,
bes_bestelopdr_item boi
WHERE b.bes_bestelling_status = 5 -- Besteld
AND b.bes_bestelling_key = bi.bes_bestelling_key
--AND bi.bes_bestelling_item_aantal != COALESCE (bi.bes_bestelling_item_aantalontv, 0)
AND bi.bes_bestelopdr_item_key = boi.bes_bestelopdr_item_key
AND boi.bes_bestelopdr_item_aantal = boi.bes_bestelopdr_item_aantalontv
ORDER BY 1;
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
BEGIN
v_errormsg := 'Fout leveren bestelopdracht';
FOR rec IN cboi
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_key = rec.bes_bestelopdr_key;
bes.updatebestelopdrstatus (rec.bes_bestelopdr_key, NULL);
END LOOP;
v_errormsg := 'Fout sluiten bestelaanvraag';
FOR rec IN cbi
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_key = rec.bes_bestelling_key;
bes.updatebestellingstatus (rec.bes_bestelling_key, NULL);
END LOOP;
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.writelog (p_applname, 'E', 'Proces NACHTWERK afgebroken!', v_errormsg);
END dian_select_nachtwerk;
/
/*
DELETE FROM bes_srtdeel;
DELETE FROM bes_srtgroep;