Files
Customer/onces/FMHN/FMHN#73172.sql
2022-06-30 13:56:14 +00:00

120 lines
4.2 KiB
SQL

--
-- $Id$
--
-- Customer specific once-script FMHN#73172.sql.
DEFINE thisfile = 'FMHN#73172.sql'
DEFINE dbuser = '^FMHN'
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 ------
DECLARE
CURSOR c1 -- meldingen
IS
SELECT sub.*
FROM (SELECT m.mld_melding_key,
m.mld_meldbron_nr,
m.mld_melding_datum,
m.mld_melding_status,
(SELECT MAX (t.fac_tracking_datum)
FROM fac_tracking t
WHERE t.fac_tracking_refkey = m.mld_melding_key
AND t.fac_srtnotificatie_key = 46)
MLDAFR,
(SELECT MAX (t.fac_tracking_datum)
FROM fac_tracking t
WHERE t.fac_tracking_refkey = m.mld_melding_key
AND t.fac_srtnotificatie_key = 45)
MLDAFM
FROM mld_melding m) sub
WHERE MLDAFM IS NULL
AND MLDAFR IS NOT NULL
AND mld_melding_status NOT IN (1, 5, 6, 99);
CURSOR c2 -- opdrachten, er kunnen meerdere opdr onder een mld vallen dus vandaar in een eigen cursor
IS
SELECT sub.*
FROM (SELECT m.mld_melding_key,
o.mld_opdr_key,
m.mld_meldbron_nr,
m.mld_melding_datum,
m.mld_melding_status,
(SELECT MAX (t.fac_tracking_datum)
FROM fac_tracking t
WHERE t.fac_tracking_refkey = m.mld_melding_key
AND t.fac_srtnotificatie_key = 46)
MLDAFR,
(SELECT MAX (t.fac_tracking_datum)
FROM fac_tracking t
WHERE t.fac_tracking_refkey = m.mld_melding_key
AND t.fac_srtnotificatie_key = 45)
MLDAFM,
(SELECT MAX (t.fac_tracking_datum)
FROM fac_tracking t
WHERE t.fac_tracking_refkey = o.mld_opdr_key
AND t.fac_srtnotificatie_key = 74)
ORDAFM
FROM mld_melding m, mld_opdr o
WHERE m.mld_melding_key = o.mld_melding_key) sub
WHERE MLDAFM IS NULL
AND ORDAFM IS NULL -- Als de opdracht toevallig al is afgemeld slaan we die over
AND MLDAFR IS NOT NULL
AND mld_opdr_key IS NOT NULL
AND mld_melding_status NOT IN (1, 5, 6, 99);
BEGIN
FOR rec IN c2 -- We doen eerst de opdrachten, anders geeft die cursor straks geen resultaat meer omdat de meldingen zijn afgemeld
LOOP
BEGIN
UPDATE mld_opdr
SET mld_statusopdr_key = 6 -- Afgemeld
WHERE mld_opdr_key = rec.mld_opdr_key;
fac.trackaction ('#ORDAFM',
rec.mld_opdr_key,
3,
rec.mldafr,
'Afgemeld door systeem');
END;
END LOOP;
FOR rec IN c1
LOOP
BEGIN
UPDATE mld_melding
SET mld_melding_status = 5 -- Afgemeld
WHERE mld_melding_key = rec.mld_melding_key;
fac.trackaction ('#MLDAFM',
rec.mld_melding_key,
3,
rec.mldafr,
'Afgemeld door systeem');
END;
END LOOP;
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