DLLG#75083 -- Anonymization of visitors
svn path=/Customer/trunk/; revision=57837
This commit is contained in:
101
DLLG/DLLG.sql
101
DLLG/DLLG.sql
@@ -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') || ' - ' ||
|
||||
|
||||
Reference in New Issue
Block a user