VNOG#78645 -- Procedure rondom proces periodieke taken

svn path=/Customer/trunk/; revision=64512
This commit is contained in:
Robin Stoker
2024-05-03 12:45:16 +00:00
parent 4ea69dcfbe
commit 27596f764c

View File

@@ -928,6 +928,7 @@ CREATE OR REPLACE PACKAGE VNOG
AS
PROCEDURE afmelden_mld;
PROCEDURE afmelden_ord;
PROCEDURE taak_mld;
END;
/
@@ -1050,6 +1051,169 @@ AS
v_errormsg := 'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.writelog (c_applname, 'E', v_aanduiding || v_errormsg, 'Taak afgebroken!');
END;
-- Procedure die allereerst een taak melding aanmaakt bij periodieke taken die een plandatum hebben van vandaag.
-- Wanneer een dergelijke melding wordt afgemeld wordt de bijbehorende taak gereed gemeld.
-- Daarna wordt de volgende taak alvast ingepland met een plandatum van precies een jaar verder dan de vorige plandatum.
-- Deze procedure is van toepassing op alle periodieke taken waar een bepaalde melding aan gekoppeld is.
PROCEDURE taak_mld
AS
c_applname VARCHAR2 (50) := 'TAAK_MLD';
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_aanduiding VARCHAR2 (200);
v_count_tot NUMBER (10);
v_melding_key NUMBER (10);
CURSOR c1 IS
SELECT ic.ins_deel_key,
ic.ins_deelsrtcontrole_key,
std.mld_stdmelding_key melding,
std.mld_stdmelding_default_disc behandelteam,
icl.ins_srtcontrole_omschrijving onderwerp,
r.alg_ruimte_key ruimte,
v.alg_verdieping_key verdieping,
g.alg_gebouw_key gebouw,
g.alg_locatie_key locatie,
ic.prs_perslid_key melder_key
FROM ins_deelsrtcontrole ic,
ins_srtcontrole icl,
ins_deel i,
mld_stdmelding std,
alg_ruimte r,
alg_verdieping v,
alg_gebouw g
WHERE ic.ins_srtcontrole_key = icl.ins_srtcontrole_key
AND ic.ins_deel_key = i.ins_deel_key
AND i.ins_alg_ruimte_key = r.alg_ruimte_key
AND r.alg_verdieping_key = v.alg_verdieping_key
AND v.alg_gebouw_key = g.alg_gebouw_key
AND icl.mld_stdmelding_key = std.mld_stdmelding_key
AND TRUNC (ic.ins_deelsrtcontrole_plandatum) = TRUNC (SYSDATE)
AND ic.ins_deelsrtcontrole_status <> 6 -- Taak is nog niet gereed
AND NOT EXISTS (SELECT 'x' FROM mld_melding_object where ins_deelsrtcontrole_key = ic.ins_deelsrtcontrole_key);
CURSOR c2 IS
SELECT m.mld_melding_key,
ic.ins_deelsrtcontrole_key,
ic.ins_deel_key,
ic.ins_deelsrtcontrole_plandatum gepland,
ADD_MONTHS (ic.ins_deelsrtcontrole_plandatum, 12) volgende,
ic.prs_perslid_key,
ic.ins_srtcontrole_key,
f.fac_tracking_datum afmelddatum
FROM mld_melding_object mo,
mld_melding m,
ins_deelsrtcontrole ic,
fac_tracking f
WHERE m.mld_melding_key = mo.mld_melding_key
AND ic.ins_deelsrtcontrole_key = mo.ins_deelsrtcontrole_key
AND m.mld_melding_status = 5 -- Afgemeld
AND ic.ins_deelsrtcontrole_status <> 6 -- Nog niet gereed
AND f.fac_tracking_refkey = m.mld_melding_key
AND f.fac_srtnotificatie_key = 47 -- MLDAFM
AND TRUNC (f.fac_tracking_datum) = TRUNC (SYSDATE);
BEGIN
v_count_tot := 0;
FOR rec IN c1
LOOP
v_errormsg := 'Fout aanmaken melding bij taak';
v_aanduiding := '[DEEL:' || TO_CHAR (rec.ins_deel_key) || '/TAAK:' || TO_CHAR (rec.ins_deelsrtcontrole_key) || ']';
BEGIN
INSERT INTO mld_melding (mld_melding_module,
mld_meldbron_key,
mld_alg_locatie_key,
mld_alg_onroerendgoed_keys,
mld_melding_datum,
mld_melding_onderwerp,
mld_ins_discipline_key,
mld_stdmelding_key,
prs_perslid_key,
prs_perslid_key_voor,
mld_melding_status,
mld_adres_key,
mld_melding_spoed)
VALUES ('MLD',
10, -- Inspectie
rec.locatie,
rec.ruimte,
SYSDATE,
rec.onderwerp,
rec.behandelteam,
rec.melding,
rec.melder_key,
rec.melder_key,
2, -- Nieuw
1, -- NVT
3) -- Normaal
RETURNING mld_melding_key
INTO v_melding_key;
INSERT INTO mld_melding_object (mld_melding_key,
ins_deel_key,
ins_deelsrtcontrole_key)
VALUES (v_melding_key,
rec.ins_deel_key,
rec.ins_deelsrtcontrole_key);
fac.trackaction ('MLDNEW',
v_melding_key,
NULL,
SYSDATE,
'Melding aangemaakt vanuit taak');
END;
v_count_tot := v_count_tot + 1;
IF MOD (v_count_tot, 100) = 0 THEN COMMIT; END IF;
END LOOP;
fac.writelog (c_applname, 'S', '#Meldingen aangemaakt bij taken: ' || TO_CHAR (v_count_tot), '');
COMMIT;
v_count_tot := 0;
FOR rec IN c2
LOOP
v_errormsg := 'Fout bij gereedmelden taak';
v_aanduiding := '[DEEL:' || TO_CHAR (rec.ins_deel_key) || '/TAAK:' || TO_CHAR (rec.ins_deelsrtcontrole_key) || ']';
BEGIN
UPDATE ins_deelsrtcontrole
SET ins_deelsrtcontrole_datum = rec.afmelddatum,
ins_deelsrtcontrole_datum_org = rec.afmelddatum,
ins_deelsrtcontrole_opmerking = 'Melding is afgemeld'
WHERE ins_deelsrtcontrole_key = rec.ins_deelsrtcontrole_key;
ins.setinspectstatus (rec.ins_deelsrtcontrole_key, 6, 3); -- status 6 gereed
INSERT INTO ins_deelsrtcontrole (ins_deel_key,
ins_srtcontrole_key,
ins_deelsrtcontrole_plandatum,
ins_deelsrtcontrole_status,
ins_scenario_key,
prs_perslid_key)
VALUES (rec.ins_deel_key,
rec.ins_srtcontrole_key,
rec.volgende,
0, -- Ingepland
1, -- Is altijd scenario 1
rec.prs_perslid_key);
END;
v_count_tot := v_count_tot + 1;
IF MOD (v_count_tot, 100) = 0 THEN COMMIT; END IF;
END LOOP;
fac.writelog (c_applname, 'S', '#Taken gereed gemeld: ' || TO_CHAR (v_count_tot), '');
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := 'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.writelog (c_applname, 'E', v_aanduiding || v_errormsg, 'Taak afgebroken!');
END;
END;
/
@@ -1061,6 +1225,7 @@ AS
BEGIN
vnog.afmelden_mld;
vnog.afmelden_ord;
vnog.taak_mld;
EXCEPTION
WHEN OTHERS
THEN