DJIN#88086 Once/Bulkschoning open bestellingen (voor 1-1-2024)
svn path=/Customer/; revision=68665
This commit is contained in:
129
onces/DVON/DVON#88086.sql
Normal file
129
onces/DVON/DVON#88086.sql
Normal file
@@ -0,0 +1,129 @@
|
|||||||
|
--
|
||||||
|
-- $Id$
|
||||||
|
--
|
||||||
|
-- Customer specific once-script DJIN#88086.sql.
|
||||||
|
DEFINE thisfile = 'DJIN#88086.sql'
|
||||||
|
DEFINE dbuser = '^FMD'
|
||||||
|
|
||||||
|
SET ECHO ON
|
||||||
|
SET DEFINE ON
|
||||||
|
COLUMN fcltlogfile NEW_VALUE fcltlogfile NOPRINT;
|
||||||
|
COLUMN fcltcusterr NEW_VALUE fcltcusterr NOPRINT;
|
||||||
|
WHENEVER SQLERROR CONTINUE;
|
||||||
|
SELECT adm.getscriptspoolfile('&thisfile') AS fcltlogfile FROM DUAL;
|
||||||
|
SPOOL &fcltlogfile
|
||||||
|
WHENEVER SQLERROR EXIT;
|
||||||
|
SELECT adm.checkscriptcust('&dbuser') AS fcltcusterr FROM DUAL;
|
||||||
|
WHENEVER SQLERROR CONTINUE;
|
||||||
|
PROMPT &fcltcusterr
|
||||||
|
SET DEFINE OFF
|
||||||
|
|
||||||
|
------ payload begin ------
|
||||||
|
|
||||||
|
SET SERVEROUTPUT ON size 1000000;
|
||||||
|
|
||||||
|
DECLARE
|
||||||
|
v_errormsg VARCHAR2 (1000);
|
||||||
|
oracle_err_num NUMBER;
|
||||||
|
oracle_err_mes VARCHAR2 (200);
|
||||||
|
v_count NUMBER;
|
||||||
|
BEGIN
|
||||||
|
v_count := 0;
|
||||||
|
|
||||||
|
-- Cursor over alle open bestelopdracht-items aangemaakt voor 01-01-2024
|
||||||
|
-- en gemarkeerd als 'Wachten op leverancier'; deze worden op 0 gesteld (of
|
||||||
|
-- naar zover deelgeleverd) en op geleverd gezet!
|
||||||
|
FOR rc
|
||||||
|
IN (SELECT DISTINCT bo.bes_bestelopdr_key
|
||||||
|
FROM bes_bestelopdr bo,
|
||||||
|
bes_bestelopdr_item boi,
|
||||||
|
bes_bestelling_item bi,
|
||||||
|
bes_bestelling b
|
||||||
|
WHERE bo.bes_bestelopdr_status = 4 -- In bestelling
|
||||||
|
AND bo.bes_bestelopdr_flag = 3 -- Wachten op leverancier
|
||||||
|
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 b.bes_bestelling_datum < TO_DATE ('01-01-2024', 'dd-mm-yyyy'))
|
||||||
|
LOOP
|
||||||
|
BEGIN
|
||||||
|
v_errormsg := 'Leveren bestelopdr ' || TO_CHAR (rc.bes_bestelopdr_key);
|
||||||
|
|
||||||
|
-- Verlaag wat besteld is naar wat deelgeleverd is (als er niets is
|
||||||
|
-- deelgeleverd, dan wordt de bestelopdracht dus op 0 gesteld).
|
||||||
|
UPDATE bes_bestelopdr_item
|
||||||
|
SET bes_bestelopdr_item_aantal = COALESCE (bes_bestelopdr_item_aantalontv, 0)
|
||||||
|
WHERE bes_bestelopdr_key = rc.bes_bestelopdr_key;
|
||||||
|
|
||||||
|
bes.updatebestelopdrstatus (rc.bes_bestelopdr_key, NULL);
|
||||||
|
v_count := v_count + 1;
|
||||||
|
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 || ')';
|
||||||
|
DBMS_OUTPUT.PUT_LINE ('W: ' || v_errormsg);
|
||||||
|
COMMIT;
|
||||||
|
END;
|
||||||
|
END LOOP;
|
||||||
|
|
||||||
|
DBMS_OUTPUT.PUT_LINE ('S: ' || TO_CHAR (v_count) || ' bestelopdrachten geleverd (besteld=ontvangen)');
|
||||||
|
COMMIT;
|
||||||
|
|
||||||
|
v_count := 0;
|
||||||
|
|
||||||
|
-- Cursor loopt over alle bestelling-items met status 'Besteld' waarvan
|
||||||
|
-- de bijbehorende bestelopdracht-items zijn geleverd; deze worden dan ook
|
||||||
|
-- gesloten!
|
||||||
|
FOR rc
|
||||||
|
IN (SELECT DISTINCT b.bes_bestelling_key
|
||||||
|
FROM bes_bestelling b
|
||||||
|
WHERE b.bes_bestelling_status = 5 -- Besteld
|
||||||
|
AND NOT EXISTS -- Geen onderliggende bestelopdracht(en) niet op Geleverd, dus alles Geleverd (aantalontv = aantal)!
|
||||||
|
(SELECT 1
|
||||||
|
FROM bes_bestelling_item bi,
|
||||||
|
bes_bestelopdr_item boi,
|
||||||
|
bes_bestelopdr bo
|
||||||
|
WHERE bi.bes_bestelopdr_item_key = boi.bes_bestelopdr_item_key
|
||||||
|
AND boi.bes_bestelopdr_key = bo.bes_bestelopdr_key
|
||||||
|
AND bo.bes_bestelopdr_status != 6 -- Geleverd
|
||||||
|
AND bi.bes_bestelling_key = b.bes_bestelling_key))
|
||||||
|
LOOP
|
||||||
|
BEGIN
|
||||||
|
v_errormsg := 'Leveren bestelling ' || TO_CHAR (rc.bes_bestelling_key);
|
||||||
|
|
||||||
|
-- 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 = rc.bes_bestelling_key;
|
||||||
|
|
||||||
|
bes.updatebestellingstatus (rc.bes_bestelling_key, NULL);
|
||||||
|
v_count := v_count + 1;
|
||||||
|
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 || ')';
|
||||||
|
DBMS_OUTPUT.PUT_LINE ('W: ' || v_errormsg);
|
||||||
|
COMMIT;
|
||||||
|
END;
|
||||||
|
END LOOP;
|
||||||
|
|
||||||
|
DBMS_OUTPUT.PUT_LINE ('S: ' || TO_CHAR (v_count) || ' bestellingen geleverd (aantallen ongewijzigd)');
|
||||||
|
COMMIT;
|
||||||
|
END;
|
||||||
|
/
|
||||||
|
|
||||||
|
------ payload end ------
|
||||||
|
|
||||||
|
SET DEFINE OFF
|
||||||
|
BEGIN adm.systrackscriptId ('$Id$', 1); END;
|
||||||
|
/
|
||||||
|
|
||||||
|
COMMIT;
|
||||||
|
SET ECHO OFF
|
||||||
|
SPOOL OFF
|
||||||
|
SET DEFINE ON
|
||||||
|
PROMPT Logfile of this upgrade is: &fcltlogfile
|
||||||
Reference in New Issue
Block a user