130 lines
4.8 KiB
SQL
130 lines
4.8 KiB
SQL
--
|
|
-- $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
|