-- -- $Id$ -- -- Het anonimiseerscript voor de bezoekers en afspraken wordt aangepast. Dat wordt wat eenduidiger en er wordt wat meer anoniem gemaakt dan voorheen. -- Dat anonimiseerscript is een geschedulede taak, die enkel kijkt naar de periode van afgelopen jaar (tot 31 dgn geleden). -- -- Met dit once script wordt hetzelfde gedaan als het anonimiseerscript ook doet, maar dan voor de periode langer geleden (de hele oude historie dus). -- -- Voor dbuser invullen: - indien script voor 1 klant is: 'AADS' (de klantcode, zoals vermeld in fac_version_cust) -- - script is voor meerdere klanten: 'AAXX' (de groepcode, zoals vermeld in fac_version_group) -- - script is voor meerdere klanten met naam volgens een bepaald patroon: '^AA|^ASMS|^GULU|^NMMS|^RABO|^ZKHM' -- DEFINE thisfile = 'UWVA#59571.sql' DEFINE dbuser = 'UWVA' SET ECHO ON SET DEFINE ON COLUMN fcltlogfile NEW_VALUE fcltlogfile NOPRINT; COLUMN fcltcusterr NEW_VALUE fcltcusterr NOPRINT; WHENEVER SQLERROR CONTINUE; SELECT adm.getscriptspoolfile('&thisfile') AS fcltlogfile FROM DUAL; SPOOL &fcltlogfile WHENEVER SQLERROR EXIT; SELECT adm.checkscriptcust('&dbuser') AS fcltcusterr FROM DUAL; WHENEVER SQLERROR CONTINUE; PROMPT &fcltcusterr SET DEFINE OFF ------ payload begin ------ DECLARE CURSOR c_afspraak IS SELECT DISTINCT (a.bez_afspraak_key) FROM bez_afspraak a, bez_bezoekers b WHERE a.bez_afspraak_key = b.bez_afspraak_key AND a.bez_afspraak_datum < SYSDATE - 31; BEGIN -- Eerst de tracking van de bezoekers verwijderen DELETE FROM fac_tracking WHERE fac_tracking_key IN (SELECT t.fac_tracking_key FROM fac_srtnotificatie sn, fac_tracking t, bez_bezoekers b, bez_afspraak a WHERE t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key AND sn.fac_srtnotificatie_xmlnode = 'bezoeker' AND t.fac_tracking_refkey = b.bez_bezoekers_key AND b.bez_afspraak_key = a.bez_afspraak_key AND a.bez_afspraak_datum < SYSDATE - 31); COMMIT; -- De tracking van de afspraken moet in een paar delen om een ora-30036 te voorkomen. DELETE FROM fac_tracking WHERE fac_tracking_key IN (SELECT t.fac_tracking_key FROM fac_srtnotificatie sn, fac_tracking t, bez_afspraak a WHERE t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key AND sn.fac_srtnotificatie_xmlnode = 'afspraak' AND t.fac_tracking_refkey = a.bez_afspraak_key AND a.bez_afspraak_datum < SYSDATE - 2000); COMMIT; DELETE FROM fac_tracking WHERE fac_tracking_key IN (SELECT t.fac_tracking_key FROM fac_srtnotificatie sn, fac_tracking t, bez_afspraak a WHERE t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key AND sn.fac_srtnotificatie_xmlnode = 'afspraak' AND t.fac_tracking_refkey = a.bez_afspraak_key AND a.bez_afspraak_datum < SYSDATE - 1000); COMMIT; DELETE FROM fac_tracking WHERE fac_tracking_key IN (SELECT t.fac_tracking_key FROM fac_srtnotificatie sn, fac_tracking t, bez_afspraak a WHERE t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key AND sn.fac_srtnotificatie_xmlnode = 'afspraak' AND t.fac_tracking_refkey = a.bez_afspraak_key AND a.bez_afspraak_datum < SYSDATE - 31); COMMIT; -- Anonimiseer gegevens per bezoeker van afspraken >31 dagen oud (bij bezoeker of reservering) -- Met UWVA#59571 moeten bepaalde bezoekersregistraties (KZ) naar 'Anoniem', anderen naar 'Bezoeker' FOR rc IN c_afspraak LOOP BEGIN DELETE FROM bez_kenmerkwaarde kw WHERE EXISTS (SELECT 1 FROM bez_bezoekers WHERE bez_bezoekers_key = kw.bez_bezoekers_key AND bez_afspraak_key = rc.bez_afspraak_key); UPDATE bez_bezoekers SET bez_afspraak_naam = 'Anoniem', bez_afspraak_bedrijf = NULL WHERE bez_afspraak_key = rc.bez_afspraak_key AND bez_afspraak_key IN (SELECT a2.bez_afspraak_key FROM fac_usrdata ud, bez_afspraak a2, res_rsv_ruimte r WHERE r.res_activiteit_key = fac.safe_to_number (ud.fac_usrdata_code) AND a2.res_rsv_ruimte_key = r.res_rsv_ruimte_key AND ud.fac_usrdata_verwijder IS NULL AND ud.fac_usrtab_key = 1663); -- Eigen tabel Klantzone UPDATE bez_bezoekers SET bez_afspraak_naam = 'Bezoeker', bez_afspraak_bedrijf = NULL WHERE bez_afspraak_key = rc.bez_afspraak_key AND bez_afspraak_key NOT IN (SELECT a2.bez_afspraak_key FROM fac_usrdata ud, bez_afspraak a2, res_rsv_ruimte r WHERE r.res_activiteit_key = fac.safe_to_number (ud.fac_usrdata_code) AND a2.res_rsv_ruimte_key = r.res_rsv_ruimte_key AND ud.fac_usrdata_verwijder IS NULL AND ud.fac_usrtab_key = 1663); -- Eigen tabel Klantzone -- Verwijder opmerking van afspraken >31 dagen oud (bij bezoeker of reservering) UPDATE bez_afspraak SET bez_afspraak_opmerking = NULL WHERE bez_afspraak_key = rc.bez_afspraak_key; -- Met UWVA#59571 moeten de reserveringsopmerkingen ook leeg worden gemaakt voor de kz-reserveringen. UPDATE res_rsv_ruimte SET res_rsv_ruimte_opmerking = NULL WHERE res_status_bo_key <> 6 --Reserveringen met status Verwerkt mogen niet aangepast worden. Het betreft maar 2 reserveringen met die status AND res_rsv_ruimte_key IN (SELECT r.res_rsv_ruimte_key FROM fac_usrdata ud, bez_afspraak a2, res_rsv_ruimte r WHERE r.res_activiteit_key = fac.safe_to_number (ud.fac_usrdata_code) AND a2.res_rsv_ruimte_key = r.res_rsv_ruimte_key AND a2.bez_afspraak_key = rc.bez_afspraak_key AND ud.fac_usrdata_verwijder IS NULL AND ud.fac_usrtab_key = 1663); ----In het anoniseerscript word thier de tracking verwijderd, maar dat is in deze once al eerder gedaan. -- DELETE FROM fac_tracking -- WHERE fac_tracking_key IN -- (SELECT t.fac_tracking_key -- FROM fac_srtnotificatie sn, -- fac_tracking t, -- bez_bezoekers b, -- bez_afspraak a -- WHERE t.fac_srtnotificatie_key = -- sn.fac_srtnotificatie_key -- AND UPPER (sn.fac_srtnotificatie_xmlnode) = -- 'BEZOEKER' -- AND t.fac_tracking_refkey = b.bez_bezoekers_key -- AND b.bez_afspraak_key = a.bez_afspraak_key -- AND t.fac_tracking_refkey = rc.bez_afspraak_key); -- -- DELETE FROM fac_tracking -- WHERE fac_tracking_key IN -- (SELECT t.fac_tracking_key -- FROM fac_srtnotificatie sn, -- fac_tracking t, -- bez_afspraak a -- WHERE t.fac_srtnotificatie_key = -- sn.fac_srtnotificatie_key -- AND UPPER (sn.fac_srtnotificatie_xmlnode) = -- 'AFSPRAAK' -- AND t.fac_tracking_refkey = a.bez_afspraak_key -- AND t.fac_tracking_refkey = rc.bez_afspraak_key); COMMIT; END; END LOOP; COMMIT; END; / ------ payload end ------ SET DEFINE OFF BEGIN adm.systrackscriptId ('$Id$', 1); END; / COMMIT; SET ECHO OFF SPOOL OFF SET DEFINE ON PROMPT Logfile of this upgrade is: &fcltlogfile