Files
Customer/onces/UWVA/UWVA#59571.sql
2020-12-18 05:22:48 +00:00

224 lines
9.9 KiB
SQL

--
-- $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