VNOG#78645 -- GMO proces en notificatie, verhuisprocedure gerelateerde objecten

svn path=/Customer/trunk/; revision=65608
This commit is contained in:
Robin Stoker
2024-07-17 12:47:08 +00:00
parent 23120a24b8
commit ed333650ec

View File

@@ -924,10 +924,47 @@ AS
AND GREATEST (kmgi.mld_kenmerkmelding_aanmaak, kmgf.mld_kenmerkmelding_aanmaak, kmgh.mld_kenmerkmelding_aanmaak) > COALESCE (nj.fac_notificatie_job_lastrun, TRUNC (SYSDATE))
;
-- Notificatie bij het aanmaken van een GMO melding
CREATE OR REPLACE VIEW VNOG_V_NOTI_GMO
(
CODE,
SENDER,
RECEIVER,
TEXT,
KEY,
XKEY,
XSENDER,
XEMAIL,
XMOBILE,
ATTACHMENTS
)
AS
SELECT sn.fac_srtnotificatie_code,
NULL,
m.prs_perslid_key,
REPLACE (sn.fac_srtnotificatie_oms,
'##KEY##',
TO_CHAR (m.mld_melding_key)),
m.mld_melding_key,
NULL,
NULL,
NULL,
NULL xmobile,
NULL attachments
FROM mld_melding m,
fac_srtnotificatie sn,
fac_notificatie_job nj
WHERE m.mld_stdmelding_key = 951 -- GMO
AND m.mld_melding_datum > nj.fac_notificatie_job_lastrun
AND sn.fac_srtnotificatie_code = 'CUST06'
AND nj.fac_notificatie_job_view = 'VNOG_V_NOTI_GMO';
CREATE OR REPLACE PACKAGE VNOG
AS
PROCEDURE afmelden_mld;
PROCEDURE afmelden_ord;
PROCEDURE verhuis_inv;
PROCEDURE verstuur_gmo;
END;
/
@@ -1051,6 +1088,217 @@ AS
v_errormsg := 'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.writelog (c_applname, 'E', v_aanduiding || v_errormsg, 'Taak afgebroken!');
END;
PROCEDURE verhuis_inv
AS
c_applname VARCHAR2 (50) := 'VERHUIS_INV';
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_aanduiding VARCHAR2 (200);
v_count_tot NUMBER (10);
v_deel_key NUMBER (10);
v_perslid_key NUMBER (5) := 3;
CURSOR c1 IS
SELECT i2.ins_deel_omschrijving vrt,
i.ins_deel_omschrijving inv,
i.ins_deel_opmerking nummer,
i.ins_deel_key inventaris,
i2.ins_deel_key voertuig,
i.ins_alg_ruimte_key ruimte_oud,
i2.ins_alg_ruimte_key ruimte_nieuw,
SUBSTR (i2.ins_deel_omschrijving,
1,
INSTR (i2.ins_deel_omschrijving, '/') - 1) waarde
FROM ins_deel i, ins_deel i2, ins_deelkoppeling k
WHERE i.ins_deel_key = k.ins_deelkoppeling_naar_key
AND i2.ins_deel_key = k.ins_deelkoppeling_van_key
AND i.ins_alg_ruimte_key <> i2.ins_alg_ruimte_key
AND i.ins_alg_ruimte_type = 'R'
AND i2.ins_alg_ruimte_type = 'R'
AND i.ins_deel_verwijder IS NULL
AND i2.ins_deel_verwijder IS NULL;
CURSOR c2 IS
SELECT x.inventaris,
x.nummer,
x.waarde
FROM (SELECT i2.ins_deel_omschrijving vrt,
i.ins_deel_omschrijving inv,
i.ins_deel_opmerking nummer,
i.ins_deel_key inventaris,
i2.ins_deel_key voertuig,
i.ins_alg_ruimte_key ruimte_oud,
i2.ins_alg_ruimte_key ruimte_nieuw,
SUBSTR (i2.ins_deel_omschrijving,
1,
INSTR (i2.ins_deel_omschrijving, '/') - 1) waarde
FROM ins_deel i, ins_deel i2, ins_deelkoppeling k
WHERE i.ins_deel_key = k.ins_deelkoppeling_naar_key
AND i2.ins_deel_key = k.ins_deelkoppeling_van_key
AND i.ins_alg_ruimte_type = 'R'
AND i2.ins_alg_ruimte_type = 'R'
AND i.ins_deel_verwijder IS NULL
AND i2.ins_deel_verwijder IS NULL) x
WHERE x.nummer != x.waarde;
BEGIN
v_count_tot := 0;
FOR rec IN c1
LOOP
v_errormsg := 'Fout verhuizen inventarisitem';
v_aanduiding := '[deelkey: ' || TO_CHAR (rec.inventaris) || ']';
BEGIN
UPDATE ins_deel
SET ins_alg_ruimte_key = rec.ruimte_nieuw,
ins_deel_opmerking = rec.waarde
WHERE ins_deel_key = rec.inventaris
RETURNING ins_deel_key
INTO v_deel_key;
fac.trackaction ('INSUPD', v_deel_key, v_perslid_key, NULL, '#Inventarisitem verhuisd met voertuig');
END;
v_count_tot := v_count_tot + 1;
END LOOP;
fac.writelog (c_applname, 'S', '#Inventarisitems verplaatst: ' || TO_CHAR (v_count_tot), '');
COMMIT;
v_count_tot := 0;
FOR rec IN c2
LOOP
v_errormsg := 'Fout toekennen nieuw 06-nummer';
v_aanduiding := '[deelkey: ' || TO_CHAR (rec.inventaris) || ']';
BEGIN
UPDATE ins_deel
SET ins_deel_opmerking = rec.waarde
WHERE ins_deel_key = rec.inventaris
RETURNING ins_deel_key
INTO v_deel_key;
fac.trackaction ('INSUPD', v_deel_key, v_perslid_key, NULL, '#Nieuw 06-nummer toegekend aan inventarisitem');
END;
v_count_tot := v_count_tot + 1;
END LOOP;
fac.writelog (c_applname, 'S', '#Inventarisitems aangepast: ' || 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;
-- Maak elke jaar op 1 augustus voor iedereen met objecten een GMO melding aan.
-- Objecten in bezit worden hieraan gekoppeld.
-- Wanneer een GMO melding voorzien is van een handtekening wordt deze de volgende dag afgemeld.
-- Bijbehorende notificatie is CUST06
PROCEDURE verstuur_gmo
AS
c_applname VARCHAR2 (50) := 'VERSTUUR_GMO';
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_aanduiding VARCHAR2 (200);
CURSOR mld IS
SELECT MAX (i.ins_deel_key), p.prs_perslid_key
FROM ins_deel i, prs_v_aanwezigperslid p
WHERE ins_alg_ruimte_type = 'P'
AND ins_alg_ruimte_key = p.prs_perslid_key
AND ins_deel_verwijder IS NULL
AND NOT EXISTS (SELECT 'x' FROM mld_melding m WHERE m.mld_stdmelding_key = 951 AND m.prs_perslid_key = p.prs_perslid_key AND mld_melding_status IN (0, 2, 3, 4, 7))
GROUP BY p.prs_perslid_key;
CURSOR obj IS
SELECT i.ins_deel_key, p.prs_perslid_key, m.mld_melding_key
FROM ins_deel i, prs_v_aanwezigperslid p, mld_melding m
WHERE ins_alg_ruimte_type = 'P'
AND ins_alg_ruimte_key = p.prs_perslid_key
AND ins_deel_verwijder IS NULL
AND m.prs_perslid_key = p.prs_perslid_key
AND m.mld_stdmelding_key = 951 -- GMO
AND m.mld_melding_status = 2
AND NOT EXISTS (SELECT 'x' FROM mld_melding_object o WHERE o.mld_melding_key = m.mld_melding_key AND o.ins_deel_key = i.ins_deel_key);
CURSOR tek
IS
SELECT m.mld_melding_key
FROM mld_kenmerkmelding mk, mld_melding m
WHERE m.mld_melding_key = mk.mld_melding_key
AND m.mld_stdmelding_key = 951 -- GMO melding
AND mk.mld_kenmerk_key = 1361 -- Handtekening
AND m.mld_melding_status NOT IN (5, 6) -- Nog niet afgemeld of archief
;
BEGIN
IF TO_CHAR (sysdate, 'DD-MM') = '01-08'
THEN
FOR rec IN mld
LOOP
v_errormsg := 'Fout aanmaken GMO melding';
v_aanduiding := '[perslid_key: ' || TO_CHAR (rec.prs_perslid_key) || ']';
BEGIN
INSERT INTO mld_melding (mld_melding_module,
mld_meldbron_key,
mld_melding_datum,
mld_stdmelding_key,
prs_perslid_key,
prs_perslid_key_voor,
mld_melding_status,
mld_melding_spoed,
mld_ins_discipline_key)
VALUES ('MLD',
5,
SYSDATE,
951, -- GMO
rec.prs_perslid_key,
rec.prs_perslid_key,
2, -- Status nieuw
3, -- Prio normaal
1121) -- Behandelteam GMO
;
END;
END LOOP;
FOR rec IN obj
LOOP
v_errormsg := 'Fout toevoegen object aan GMO melding';
v_aanduiding := '[deel_key: ' || TO_CHAR (rec.ins_deel_key) || ']';
BEGIN
INSERT INTO mld_melding_object (mld_melding_key, ins_deel_key)
VALUES (rec.mld_melding_key, rec.ins_deel_key);
END;
END LOOP;
COMMIT;
ELSE
FOR rec IN tek
LOOP
v_errormsg := 'Fout afmelden GMO melding';
v_aanduiding :=
'[melding_key: ' || TO_CHAR (rec.mld_melding_key) || ']';
BEGIN
UPDATE mld_melding
SET mld_melding_status = 5 -- Afgemeld
WHERE mld_melding_key = rec.mld_melding_key;
END;
END LOOP;
COMMIT;
END IF;
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;
/
@@ -1062,6 +1310,8 @@ AS
BEGIN
vnog.afmelden_mld;
vnog.afmelden_ord;
vnog.verhuis_inv;
vnog.verstuur_gmo;
EXCEPTION
WHEN OTHERS
THEN