FMHN#79962 Verwijderen van bijlagen bij reserveringen en meldingen

svn path=/Database/trunk/; revision=63322
This commit is contained in:
Erik Groener
2024-01-24 13:46:55 +00:00
parent b15a204354
commit da49c6317b
4 changed files with 248 additions and 1 deletions

View File

@@ -2098,6 +2098,7 @@ DEF_FAC_SRTNOT('RESKTO', 3, 'lcl_noti_RESKTO', 'mld/mld_melding.asp?kto=1&res_ke
DEF_FAC_SRTNOT('RESCLN', 0, 'lcl_noti_RESCLN', 'res/res_reservering.asp?rsv_ruimte_key=', '0', 'reservering', 10);
DEF_FAC_SRTNOT('RESROK', 0, 'lcl_noti_RESROK', 'res/res_reservering.asp?rsv_ruimte_key=', '0', 'reservering', 10);
DEF_FAC_SRTNOT('RES2BO', 0, 'lcl_noti_RES2BO', 'res/res_reservering.asp?rsv_ruimte_key=', '0', 'reservering', 10); //GOUD#37603
DEF_FAC_SRTNOT('RESANO', 0, 'lcl_noti_RESANO', 'res/res_reservering.asp?rsv_ruimte_key=', '0', 'reservering', 10);
DEF_FAC_SRTNOT('INSNEW', 0, 'lcl_noti_INSNEW', 'ins/ins_deel.asp?ins_key=', '0', 'deel', 10);
DEF_FAC_SRTNOT('INSUPD', 0, 'lcl_noti_INSUPD', 'ins/ins_deel.asp?ins_key=', '0', 'deel', 60);

View File

@@ -11,6 +11,7 @@ CREATE OR REPLACE PACKAGE ano AS
PROCEDURE anonymizebez (p_startdatum IN DATE, p_einddatum IN DATE);
PROCEDURE anonymizemld (p_startdatum IN DATE, p_einddatum IN DATE);
PROCEDURE anonymizeprs (p_startdatum IN DATE, p_einddatum IN DATE);
PROCEDURE anonymizeres (p_startdatum IN DATE, p_einddatum IN DATE);
PROCEDURE anonymizefull(p_flags NUMBER DEFAULT 65535);
PROCEDURE anonymize (p_startdatum IN DATE, p_einddatum IN DATE);
PROCEDURE table_column(p_tabel IN VARCHAR2, p_kolom IN VARCHAR2, p_functie IN VARCHAR2);
@@ -58,6 +59,19 @@ CREATE OR REPLACE PACKAGE BODY ano AS
WHERE fac_srtnotificatie_code = 'BESANO'))
ORDER BY b.bes_bestelling_key;
-- BES heeft nog geen anonimiseerbare kenmerken
--CURSOR c_bijlagen(p_refkey IN NUMBER)
--IS
-- SELECT b.fac_bijlagen_key
-- FROM fac_bijlagen b
-- , bes_kenmerk k
-- , bes_srtkenmerk s
-- WHERE k.bes_srtkenmerk_key = s.bes_srtkenmerk_key
-- AND k.bes_kenmerk_key = b.fac_bijlagen_kenmerk_key
-- AND BITAND(s.bes_srtkenmerk_systeem, 8) = 8
-- AND b.fac_bijlagen_module = 'BES'
-- AND b.fac_bijlagen_refkey = p_refkey;
BEGIN
IF p_einddatum > SYSDATE - anonymize_period + 1
THEN
@@ -104,6 +118,15 @@ CREATE OR REPLACE PACKAGE BODY ano AS
WHERE bk.bes_srtkenmerk_key = bsk.bes_srtkenmerk_key
AND bk.bes_kenmerk_key = bkbl.bes_kenmerk_key
AND BITAND(bsk.bes_srtkenmerk_systeem, 8) = 8);
-- Zet het verwijder-veld van alle bijlagen van bestellingen waarvan het &8 (BITAND) bit (anonimiseren)
-- van het bes_srtkenmerk.bes_srtkenmerk_systeem veld is gezet.
-- De scheduled functie utils/gen_schedular/gen_cleanup.js verwijderd dan binnenkort de bijlage echt
-- en ruimt dan ook het record in fac_bijlagen op.
-- BES heeft nog geen anonimiseerbare kenmerken
--FOR rec_fb in c_bijlagen(rec_b.bes_bestelling_key)
--LOOP
-- flx.deleteflexbijlage(rec_fb.fac_bijlagen_key);
--END LOOP;
END IF;
--IF (BITAND(anonymize_mode, 8) = 8) -- vaste omschrijvingen
@@ -154,6 +177,11 @@ CREATE OR REPLACE PACKAGE BODY ano AS
WHERE bk.bes_srtkenmerk_key = bsk.bes_srtkenmerk_key
AND bk.bes_kenmerk_key = bkbi.bes_kenmerk_key
AND BITAND(bsk.bes_srtkenmerk_systeem, 8) = 8);
-- BES heeft nog geen anonimiseerbare kenmerken
--FOR rec_fb IN c_bijlagen(rec_bo.bes_bestelopdr_key)
--LOOP
-- flx.deleteflexbijlage(rec_fb.fac_bijlagen_key);
--END LOOP;
END IF;
--IF (BITAND(anonymize_mode, 8) = 8) -- vaste omschrijvingen
@@ -197,6 +225,19 @@ CREATE OR REPLACE PACKAGE BODY ano AS
FROM fac_srtnotificatie
WHERE fac_srtnotificatie_code = 'BEZANO'))
ORDER BY bez_afspraak_key;
CURSOR c_bijlagen(p_refkey IN NUMBER)
IS
SELECT b.fac_bijlagen_key
FROM fac_bijlagen b
, bez_kenmerk k
, bez_bezoekers v
WHERE k.bez_kenmerk_key = b.fac_bijlagen_kenmerk_key
AND b.fac_bijlagen_refkey = v.bez_bezoekers_key
AND BITAND(k.bez_kenmerk_systeem, 8) = 8
AND b.fac_bijlagen_module = 'BEZ'
AND v.bez_afspraak_key = p_refkey;
BEGIN
IF p_einddatum > SYSDATE - anonymize_period + 1
THEN
@@ -243,6 +284,14 @@ CREATE OR REPLACE PACKAGE BODY ano AS
FROM bez_kenmerk bk
WHERE bk.bez_kenmerk_key = bkw.bez_kenmerk_key
AND BITAND(bk.bez_kenmerk_systeem, 8) = 8);
-- Zet het verwijder-veld van alle bijlagen van bezoekers waarvan het &8 (BITAND) bit (anonimiseren)
-- van het bez_kenmerk.bez_kenmerk_systeem veld is gezet.
-- De scheduled functie utils/gen_schedular/gen_cleanup.js verwijderd dan binnenkort de bijlage echt
-- en ruimt dan ook het record in fac_bijlagen op.
FOR rec_fb in c_bijlagen(rec_a.bez_afspraak_key)
LOOP
flx.deleteflexbijlage(rec_fb.fac_bijlagen_key);
END LOOP;
END IF;
IF (BITAND(anonymize_mode, 8) = 8) -- vaste omschrijvingen
@@ -347,6 +396,32 @@ CREATE OR REPLACE PACKAGE BODY ano AS
WHERE fac_srtnotificatie_code = 'MLDANO'))
ORDER BY m.mld_melding_key;
CURSOR c_bijlagen_melding(p_refkey IN NUMBER)
IS
SELECT b.fac_bijlagen_key
FROM fac_bijlagen b
, mld_kenmerk k
, mld_srtkenmerk s
WHERE k.mld_kenmerk_key = b.fac_bijlagen_kenmerk_key
AND k.mld_srtkenmerk_key = s.mld_srtkenmerk_key
AND b.fac_bijlagen_refkey = p_refkey
AND BITAND(s.mld_srtkenmerk_systeem, 8) = 8
AND k.mld_kenmerk_niveau IN ('S','D','T')
AND b.fac_bijlagen_module = 'MLD';
CURSOR c_bijlagen_opdracht(p_refkey IN NUMBER)
IS
SELECT b.fac_bijlagen_key
FROM fac_bijlagen b
, mld_kenmerk k
, mld_srtkenmerk s
WHERE k.mld_kenmerk_key = b.fac_bijlagen_kenmerk_key
AND k.mld_srtkenmerk_key = s.mld_srtkenmerk_key
AND b.fac_bijlagen_refkey = p_refkey
AND BITAND(s.mld_srtkenmerk_systeem, 8) = 8
AND k.mld_kenmerk_niveau IN ('P','O')
AND b.fac_bijlagen_module = 'MLD';
BEGIN
IF p_einddatum > SYSDATE - anonymize_period + 1
THEN
@@ -396,6 +471,14 @@ CREATE OR REPLACE PACKAGE BODY ano AS
WHERE mk.mld_srtkenmerk_key = msk.mld_srtkenmerk_key
AND mk.mld_kenmerk_key = mkm.mld_kenmerk_key
AND BITAND(msk.mld_srtkenmerk_systeem, 8) = 8);
-- Zet het verwijder-veld van alle bijlagen van de melding waarvan het &8 (BITAND) bit (anonimiseren)
-- van het mld_srtkenmerk.mld_srtkenmerk_systeem veld is gezet.
-- De scheduled functie utils/gen_schedular/gen_cleanup.js verwijderd dan binnenkort de bijlage echt
-- en ruimt dan ook het record in fac_bijlagen op.
FOR rec_fb IN c_bijlagen_melding(rec_m.mld_melding_key)
LOOP
flx.deleteflexbijlage(rec_fb.fac_bijlagen_key);
END LOOP;
END IF;
IF (BITAND(anonymize_mode, 8) = 8) -- vaste omschrijvingen
@@ -460,6 +543,15 @@ CREATE OR REPLACE PACKAGE BODY ano AS
WHERE mk.mld_srtkenmerk_key = msk.mld_srtkenmerk_key
AND mk.mld_kenmerk_key = mko.mld_kenmerk_key
AND BITAND(msk.mld_srtkenmerk_systeem, 8) = 8);
-- Zet het verwijder-veld van alle bijlagen van de melding-opdracht waarvan het &8 (BITAND) bit (anonimiseren)
-- van het mld_srtkenmerk.mld_srtkenmerk_systeem veld is gezet.
-- De scheduled functie utils/gen_schedular/gen_cleanup.js verwijderd dan binnenkort de bijlage echt
-- en ruimt dan ook het record in fac_bijlagen op.
FOR rec_fb IN c_bijlagen_opdracht(rec_o.mld_opdr_key)
LOOP
flx.deleteflexbijlage(rec_fb.fac_bijlagen_key);
END LOOP;
END IF;
IF (BITAND(anonymize_mode, 8) = 8) -- vaste omschrijvingen
@@ -524,6 +616,17 @@ CREATE OR REPLACE PACKAGE BODY ano AS
FROM fac_srtnotificatie
WHERE fac_srtnotificatie_code = 'PRSANO'))
ORDER BY 2;
CURSOR c_bijlagen(p_refkey IN NUMBER)
IS
SELECT b.fac_bijlagen_key
FROM fac_bijlagen b
, prs_kenmerk k
WHERE k.prs_kenmerk_key = b.fac_bijlagen_kenmerk_key
AND BITAND(k.prs_kenmerk_systeem, 8) = 8
AND b.fac_bijlagen_module = 'PRS'
AND b.fac_bijlagen_refkey = p_refkey;
BEGIN
IF p_einddatum > SYSDATE - anonymize_period + 1
THEN
@@ -576,6 +679,14 @@ CREATE OR REPLACE PACKAGE BODY ano AS
FROM prs_kenmerk pk
WHERE pk.prs_kenmerk_key = pkl.prs_kenmerk_key
AND BITAND(pk.prs_kenmerk_systeem, 8) = 8);
-- Zet het verwijder-veld van alle bijlagen van personen waarvan het &8 (BITAND) bit (anonimiseren)
-- van het prs_kenmerk.prs_kenmerk_systeem veld is gezet.
-- De scheduled functie utils/gen_schedular/gen_cleanup.js verwijderd dan binnenkort de bijlage echt
-- en ruimt dan ook het record in fac_bijlagen op.
FOR rec_fb in c_bijlagen(rec_p.prs_perslid_key)
LOOP
flx.deleteflexbijlage(rec_fb.fac_bijlagen_key);
END LOOP;
END IF;
IF (BITAND(anonymize_mode, 8) = 8) -- vaste omschrijvingen
@@ -622,6 +733,137 @@ CREATE OR REPLACE PACKAGE BODY ano AS
END IF;
END;
PROCEDURE anonymizeres (p_startdatum IN DATE,
p_einddatum IN DATE)
AS
anonymize_period NUMBER := fac.safe_to_number (fac.getsetting ('anonymize_period'));
bez_generic_visitor VARCHAR2 (2001) := lcl.l('lcl_bez_generic_visitor');
prs_old_employee VARCHAR2 (100) := lcl.l('lcl_prs_old_employee');
v_count NUMBER;
anonymize_mode NUMBER;
-- Alle personen die tussen de startdatum en de einddatum verwijderd zijn.
CURSOR c_reservering
IS
SELECT r.res_rsv_ruimte_key
FROM res_rsv_ruimte r
WHERE (SELECT MAX(ft.fac_tracking_datum)
FROM fac_tracking ft
WHERE ft.fac_tracking_refkey = r.res_rsv_ruimte_key
AND ft.fac_srtnotificatie_key IN (SELECT nk.fac_srtnotificatie_key
FROM fac_srtnotificatie nk
WHERE nk.fac_srtnotificatie_xmlnode = 'reservering'
AND nk.fac_srtnotificatie_key != (SELECT nc.fac_srtnotificatie_key
FROM fac_srtnotificatie nc
WHERE nc.fac_srtnotificatie_code = 'RESANO'
)
)
) BETWEEN to_date('01-01-2023','dd-mm-yyyy') AND to_date('01-07-2023','dd-mm-yyyy')
AND ( r.res_status_bo_key IN (5,6)
OR r.res_rsv_ruimte_verwijder IS NOT NULL
)
AND NOT EXISTS
(SELECT ft.fac_tracking_key
FROM fac_tracking ft
WHERE ft.fac_tracking_refkey = r.res_rsv_ruimte_key
AND ft.fac_srtnotificatie_key = (SELECT nc.fac_srtnotificatie_key
FROM fac_srtnotificatie nc
WHERE nc.fac_srtnotificatie_code = 'RESANO'
)
)
ORDER BY r.res_rsv_ruimte_key;
CURSOR c_bijlagen(p_refkey IN NUMBER)
IS
SELECT b.fac_bijlagen_key
FROM fac_bijlagen b
, res_kenmerk k
, res_srtkenmerk s
WHERE k.res_kenmerk_key = b.fac_bijlagen_kenmerk_key
AND k.res_srtkenmerk_key = s.res_srtkenmerk_key
AND BITAND(s.res_srtkenmerk_systeem, 8) = 8
AND b.fac_bijlagen_module = 'RES'
AND b.fac_bijlagen_refkey = p_refkey;
BEGIN
IF p_einddatum > SYSDATE - anonymize_period + 1
THEN
raise_application_error(-20001, 'ano_m001 Einddatum is te groot');
END IF;
SELECT fac.getSetting('anonymize_mode')
INTO anonymize_mode
FROM DUAL;
IF anonymize_mode > 0
THEN
v_count := 0;
FOR rec_r IN c_reservering
LOOP
-- *
-- Anonimiseren reservering
IF (BITAND(anonymize_mode, 1) = 1) -- tracking
THEN
-- Alle RES tracking anonimiseren m.b.t. de reservering.
UPDATE fac_tracking
SET fac_tracking_oms = NULL
WHERE fac_srtnotificatie_key IN (SELECT fac_srtnotificatie_key
FROM fac_srtnotificatie
WHERE fac_srtnotificatie_xmlnode = 'reservering'
AND fac_srtnotificatie_code != 'RESANO')
AND fac_tracking_refkey = rec_r.res_rsv_ruimte_key
AND fac_tracking_oms IS NOT NULL;
END IF;
--IF (BITAND(anonymize_mode, 2) = 2) -- notes
--THEN
--END IF;
IF (BITAND(anonymize_mode, 4) = 4) -- kenmerken
THEN
-- Verwijder alle kenmerkwaarden van de reservering waarvan het &8 (BITAND) bit (anonimiseren)
-- van het res_srtkenmerk.res_srtkenmerk_systeem veld is gezet.
DELETE FROM res_kenmerkwaarde rkw
WHERE rkw.res_rsv_ruimte_key = rec_r.res_rsv_ruimte_key
AND rkw.res_kenmerk_key IN (SELECT rk.res_kenmerk_key
FROM res_kenmerk rk
, res_srtkenmerk rsk
WHERE rk.res_srtkenmerk_key = rsk.res_srtkenmerk_key
AND rk.res_kenmerk_key = rkw.res_kenmerk_key
AND BITAND(rsk.res_srtkenmerk_systeem, 8) = 8);
-- Zet het verwijder-veld van alle bijlagen van reservering waarvan het &8 (BITAND) bit (anonimiseren)
-- van het res_srtkenmerk.res_srtkenmerk_systeem veld is gezet.
-- De scheduled functie utils/gen_schedular/gen_cleanup.js verwijderd dan binnenkort de bijlage echt
-- en ruimt dan ook het record in fac_bijlagen op.
FOR rec_fb in c_bijlagen(rec_r.res_rsv_ruimte_key)
LOOP
flx.deleteflexbijlage(rec_fb.fac_bijlagen_key);
END LOOP;
END IF;
IF (BITAND(anonymize_mode, 8) = 8) -- vaste omschrijvingen
THEN
UPDATE res_rsv_ruimte
SET res_rsv_ruimte_omschrijving = CASE WHEN res_rsv_ruimte_omschrijving IS NOT NULL THEN lcl.l('lcl_fac_anonymized') END
, res_rsv_ruimte_opmerking = CASE WHEN res_rsv_ruimte_opmerking IS NOT NULL THEN lcl.l('lcl_fac_anonymized') END
, res_rsv_ruimte_telefoon = CASE WHEN res_rsv_ruimte_telefoon IS NOT NULL THEN lcl.l('lcl_fac_anonymized') END
WHERE res_rsv_ruimte_key = rec_r.res_rsv_ruimte_key;
END IF;
-- Anonimiseren van de reservering tracken.
fac.trackaction('RESANO', rec_r.res_rsv_ruimte_key, NULL, NULL, NULL);
IF v_count >= 1000
THEN
COMMIT;
v_count := 0;
ELSE
v_count := v_count + 1;
END IF;
END LOOP;
END IF;
END;
PROCEDURE anonymizefull(p_flags NUMBER DEFAULT 65535)
AS
BEGIN
@@ -827,6 +1069,7 @@ CREATE OR REPLACE PACKAGE BODY ano AS
anonymizebez(p_startdatum, p_einddatum);
anonymizemld(p_startdatum, p_einddatum);
anonymizeprs(p_startdatum, p_einddatum);
anonymizeres(p_startdatum, p_einddatum);
END;
PROCEDURE table_column(p_tabel IN VARCHAR2,

View File

@@ -307,7 +307,7 @@ BEGIN
UPDATE_AANMAAKDATUM(res_srtkenmerk, res_srtkenmerk_aanmaak);
IF (:new.res_srtkenmerk_verwijder IS NOT NULL AND :old.res_srtkenmerk_verwijder IS NULL AND
:new.res_srtkenmerk_systeem = 1)
BITAND(:new.res_srtkenmerk_systeem, 1) = 1)
THEN
raise_application_error(-20000, 'RES_C_RES_SRTKENMERK_SYSTEEM');
END IF;

View File

@@ -320,6 +320,9 @@ ALTER TABLE ins_srtcontrole ADD ins_srtcontrole_opmerking_text NUMBER(1) DEFAULT
ALTER TABLE alg_verdieping
ADD alg_verdieping_dwgz NUMBER (16, 3);
/////////////////////////////////////////////////////////////////////////////////////////// FMHN#79962
DEF_FAC_SRTNOT('RESANO', 0, 'lcl_noti_RESANO', 'res/res_reservering.asp?rsv_ruimte_key=', '0', 'reservering', 10);
/////////////////////////////////////////////////////////////////////////////////////////// FCLT#00000