DLLG#75083 -- Anonymization of visitors

svn path=/Customer/trunk/; revision=57837
This commit is contained in:
Arthur Egberink
2022-11-02 09:36:10 +00:00
parent f9657c8d5e
commit 9018dbd2aa

View File

@@ -44,6 +44,9 @@ AS
PROCEDURE set_bezoeker_syncdate (p_bezkey IN NUMBER,
p_user_id IN NUMBER,
p_credential_id IN NUMBER);
-- tijdelijke overrule ivm DLLG#75083 Anonymization of visitors
PROCEDURE anonymizebez (p_startdatum IN DATE, p_einddatum IN DATE);
END;
/
@@ -521,6 +524,102 @@ AS
TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS'));
END;
PROCEDURE anonymizebez (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');
v_count NUMBER;
-- Alle afspraken die tussen de startdatum en de einddatum liggen.
CURSOR c_afspraak
IS
SELECT bez_afspraak_key
FROM bez_afspraak
WHERE bez_afspraak_eind BETWEEN p_startdatum AND p_einddatum
AND NOT EXISTS
(SELECT ft.fac_tracking_key
FROM fac_tracking ft
WHERE ft.fac_tracking_refkey = bez_afspraak_key
AND ft.fac_srtnotificatie_key = (SELECT fac_srtnotificatie_key
FROM fac_srtnotificatie
WHERE fac_srtnotificatie_code = 'BEZANO'))
ORDER BY bez_afspraak_key;
BEGIN
IF p_einddatum > SYSDATE - anonymize_period + 1
THEN
raise_application_error(-20001, 'ano_m001 Einddatum is te groot');
END IF;
v_count := 0;
FOR rec IN c_afspraak
LOOP
-- Verwijder alle kenmerkwaarden van bezoekers van de afspraak waarvan het &8 (BITAND) bit van het bez_kenmerk.bez_kenmerk_systeem veld is gezet.
DELETE FROM bez_kenmerkwaarde bkw
WHERE bkw.bez_bezoekers_key IN (SELECT b.bez_bezoekers_key
FROM bez_bezoekers b
WHERE b.bez_afspraak_key = rec.bez_afspraak_key)
AND bkw.bez_kenmerk_key IN (SELECT bk.bez_kenmerk_key
FROM bez_kenmerk bk
WHERE bk.bez_kenmerk_key = bkw.bez_kenmerk_key
AND BITAND(bk.bez_kenmerk_systeem, 8) = 8);
-- Anonimiseer alle bezoekers.
UPDATE bez_bezoekers
SET bez_afspraak_naam = bez_generic_visitor,
bez_afspraak_bedrijf = NULL,
bez_afspraak_opmerking = NULL,
bez_bezoekers_telefoon = NULL,
bez_bezoekers_email = NULL,
bez_bezoekers_kenteken = NULL
WHERE bez_afspraak_key = rec.bez_afspraak_key;
-- Anonimiseer alle afspraken.
-- Door de trigger in de update wordt automatische de naam van de host in de gastheer geplakt.
-- Daardoor wordt de lcl "Ganonimiseerd" in vele gevallen niet blijvend in de gasheer gezet.
-- De persoon (prs record) moet daarom eerst aangepast worden.
-- Tijdens het anonimiseren van de persoon wordt daarom de bez_afspraak_gastheer ook geanonimiseerd.
-- In de gevallen dat er geen host wordt gebruikt en alleen tekst voor de persoon (gastheer) wordt ingevuld wordt het veld wel blijvend gezet.
UPDATE bez_afspraak
SET bez_afspraak_gastheer = bez_generic_visitor,
bez_afspraak_telefoonnr = NULL,
bez_afspraak_opmerking = NULL
WHERE bez_afspraak_key = rec.bez_afspraak_key;
-- Alle BEZ tracking anonimiseren m.b.t. de afspraak.
UPDATE fac_tracking
SET fac_tracking_oms = NULL
WHERE fac_srtnotificatie_key IN (SELECT fac_srtnotificatie_key
FROM fac_srtnotificatie
WHERE fac_srtnotificatie_xmlnode = 'afspraak'
AND fac_srtnotificatie_code != 'BEZANO')
AND fac_tracking_refkey = rec.bez_afspraak_key
AND fac_tracking_oms IS NOT NULL;
-- Alle BEZ tracking anonimiseren m.b.t. de bezoekers van de afspraak.
UPDATE fac_tracking
SET fac_tracking_oms = NULL
WHERE fac_srtnotificatie_key IN (SELECT fac_srtnotificatie_key
FROM fac_srtnotificatie
WHERE fac_srtnotificatie_xmlnode = 'bezoeker')
AND fac_tracking_refkey IN (SELECT bb.bez_bezoekers_key FROM bez_bezoekers bb WHERE bb.bez_afspraak_key = rec.bez_afspraak_key)
AND fac_tracking_oms IS NOT NULL;
-- Anonimiseren van de afspraak tracken.
fac.trackaction('BEZANO', rec.bez_afspraak_key, NULL, NULL, NULL);
IF v_count >= 1000
THEN
COMMIT;
v_count := 0;
ELSE
v_count := v_count + 1;
END IF;
END LOOP;
END;
END;
/
@@ -1923,7 +2022,7 @@ BEGIN
IF TO_CHAR (SYSDATE, 'DD') = '01'
THEN
BEGIN
ANO.anonymizebez (add_months(trunc(SYSDATE), -7), add_months(trunc(SYSDATE), -6));
DLLG.anonymizebez (add_months(trunc(SYSDATE), -7), add_months(trunc(SYSDATE), -6));
INSERT INTO fac_rapport (fac_rapport_node, fac_rapport_volgnr, fac_rapport_regel)
VALUES('Anonymize', v_volgnr, 'Bezoekers geanonymizeerd ' ||
to_char(add_months(TRUNC(SYSDATE), -7), 'dd-mm-yyyy hh24:mi:ss') || ' - ' ||