RABO#67042 -- Postscript voor opdrachten op verwerkt zetten(verbetering voortkomend uit Mareon-factuurscanningsproject)

svn path=/Customer/; revision=54210
This commit is contained in:
Jos Migo
2021-12-17 16:02:12 +00:00
parent b4d8183592
commit 32886223eb

View File

@@ -0,0 +1,148 @@
--
-- $Id$
--
-- Script om de Opdrachten met terugwerkende kracht op verwerkt te zetten. Tijdens de inkoopinterface-run is dit niet gebeurd aangezien kenmerk laatste factuur nog op NEE stond
DEFINE thisfile = 'RABO#67042_postscript_verwerk_opdracht.SQL'
DEFINE dbuser = 'RABO'
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
v_errormsg VARCHAR (200);
v_errorhint VARCHAR (200);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (150);
currentversion fac_module.fac_module_version%TYPE;
v_aanduiding VARCHAR (100);
v_count NUMBER;
v_aanvrager NUMBER(10);
CURSOR c
IS
SELECT mld_melding_key,
mld_melding_status,
opdr.mld_opdr_key,
opdrachtnr,
mld_opdr_kosten,
mld_statusopdr_omschrijving,
mld_statusopdr_key,
f.fin_factuur_key,
gefactureerd,
datum_ingevoerd,
(SELECT 'mareon'
FROM fac_tracking ft, fac_srtnotificatie sn
WHERE ft.fac_tracking_refkey = f.fin_factuur_key
AND ft.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_xmlnode = 'factuur'
AND sn.fac_srtnotificatie_code = 'FINUPD'
AND ( INSTR (ft.fac_tracking_oms,
'Factuur geimporteerd vanuit Mareon') >
0
OR INSTR (ft.fac_tracking_oms, 'Mareon-factuurimport:') >
0))
mareon_factuur
FROM (SELECT mld_opdr_key,
o.mld_melding_key,
m.mld_melding_status,
sd.ins_srtdiscipline_prefix
|| o.mld_melding_key
|| '/'
|| mld_opdr_bedrijfopdr_volgnr
opdrachtnr,
mld_opdr_kosten,
v.mld_statusopdr_omschrijving,
o.mld_statusopdr_key
FROM mld_opdr o,
mld_statusopdr v,
mld_melding m,
mld_stdmelding sm,
mld_discipline d,
ins_srtdiscipline sd
WHERE o.mld_statusopdr_key = v.mld_statusopdr_key
AND o.mld_statusopdr_key NOT IN (1, 7) -- afgewezen of verwerkt
AND o.mld_melding_key = m.mld_melding_key
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.mld_ins_discipline_key = d.ins_discipline_key
AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
) opdr,
( SELECT mld_opdr_key,
MAX (fin_factuur_key) fin_factuur_key,
SUM (fin_factuur_totaal) gefactureerd
FROM fin_factuur
WHERE fin_factuur_verwijder IS NULL
GROUP BY mld_opdr_key) f,
(SELECT f.fin_factuur_key,
fac.gettrackingdate ('FINNEW', f.fin_factuur_key)
datum_ingevoerd
FROM fin_factuur f, fin_kenmerkfactuur kf
WHERE f.fin_factuur_key = kf.fin_factuur_key
AND kf.fin_kenmerk_key = 2
AND kf.fin_kenmerkfactuur_waarde = 2 -- Op laatste factuur nee
AND f.fin_factuur_statuses_key IN (7) -- factuur is al verwerkt
AND f.fin_factuur_verwijder IS NULL
) n
WHERE f.mld_opdr_key = opdr.mld_opdr_key
AND f.fin_factuur_key = n.fin_factuur_key
AND mld_opdr_kosten <= gefactureerd
;
BEGIN
-- Facilitor user
v_aanvrager := 4;
FOR rec IN c
LOOP
BEGIN
-- overgenomen uit aaxx VERWERK_EXACT
-- indien nog niet afgemeld, dan maar even afmelden.
IF rec.mld_statusopdr_key <> 6 AND rec.mld_statusopdr_key <> 7 AND rec.mld_statusopdr_key <> 9 THEN
mld.setopdrachtstatus (rec.mld_opdr_key, 6, v_aanvrager);
mld.setopdrachtstatus (rec.mld_opdr_key, 9, v_aanvrager);
END IF;
UPDATE mld_opdr o
SET mld_opdr_kosten = rec.gefactureerd
WHERE o.mld_opdr_key = rec.mld_opdr_key
AND rec.mld_melding_status IN (4, 5, 7); -- anders faalt de trigger sowieso (in behandeling, uitgegeven, afgemeld)
-- update meldingstatus
mld.updatemeldingstatusAV (rec.mld_melding_key, 0, v_aanvrager, 0);
-- zet de status naar verwerkt (user is facilitor)
mld.setopdrachtstatus (rec.mld_opdr_key, 7, v_aanvrager);
END;
END LOOP;
END;
/
------ payload end ------
SET DEFINE OFF
BEGIN adm.systrackscriptId ('$Id$', 0); END;
/
COMMIT;
SET ECHO OFF
SPOOL OFF
SET DEFINE ON
PROMPT Logfile of this upgrade is: &fcltlogfile