--
-- $Id$
--
-- Post-importscript voor UWVA Accept, Beta én Opleiding, dus ter
-- uitvoering van de vereiste stappen gelijk voor alle omgevingen!
-- Een aantal specifieke zaken zijn aangevraagd in UWVA#27059.

DEFINE thisfile = 'POST-IMP_UWVA.SQL'
DEFINE dbuser   = '^UWVA'

SET ECHO ON
SET DEFINE ON
COLUMN fcltlogfile NEW_VALUE fcltlogfile NOPRINT;
WHENEVER SQLERROR EXIT;
SELECT adm.scriptspoolfile('&dbuser', '&thisfile') AS fcltlogfile FROM DUAL;
WHENEVER SQLERROR CONTINUE;
SPOOL &fcltlogfile
SET DEFINE OFF

------ payload begin ------

CREATE OR REPLACE PROCEDURE uwva_aftersales_anonimiseer (
   p_applname   IN VARCHAR2,
   p_applrun    IN VARCHAR2,
   p_filedir    IN VARCHAR2,
   p_filename   IN VARCHAR2)
AS
   -- Delete 'BSN' voor spobilo-meldingen >31 dagen oud! (UWVA#19129)
   CURSOR c_spobilo
   IS
        SELECT m.mld_melding_key, km.mld_kenmerkmelding_key
          FROM mld_melding m, mld_stdmelding sm, mld_discipline md, ins_srtdiscipline sd,
               mld_kenmerkmelding km, mld_kenmerk k, mld_srtkenmerk sk
         WHERE m.mld_melding_datum < SYSDATE -- 31
               AND m.mld_melding_datum > SYSDATE - 365 --MB toegevoegd tbv performance
               AND m.mld_stdmelding_key = sm.mld_stdmelding_key
               AND sm.mld_ins_discipline_key = md.ins_discipline_key
               AND md.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
               AND sd.ins_srtdiscipline_key = 5                     -- Spobilo
               AND km.mld_kenmerkmelding_verwijder IS NULL
               AND m.mld_melding_key = km.mld_melding_key
               AND k.mld_kenmerk_verwijder IS NULL
               AND km.mld_kenmerk_key = k.mld_kenmerk_key
               AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
               AND sk.mld_srtkenmerk_key = 105                           --BSN
      ORDER BY m.mld_melding_key;

   CURSOR c_vertaal
   IS
        SELECT m.mld_melding_key, km.mld_kenmerkmelding_key, km.mld_kenmerk_key
          FROM mld_kenmerkmelding km, mld_melding m--, fac_tracking tr
         WHERE (km.mld_kenmerk_key IN (702, 703)           -- Gevalsnummer+BSN
                OR (km.mld_kenmerk_key = 701 AND km.mld_kenmerkmelding_waarde != 'Anoniem')) -- Naam en niet Anoniem
               AND km.mld_melding_key = m.mld_melding_key
               AND m.mld_stdmelding_key = 1301                  -- Vertaalwerk
               --AND m.mld_melding_key = tr.fac_tracking_refkey
               --AND tr.fac_srtnotificatie_key IN (18, 22)      -- MLDAFM/MLDREJ
               --AND tr.fac_tracking_datum < SYSDATE - 60
      ORDER BY m.mld_melding_key;

   CURSOR c_archief_dossier_hulshoff
   IS
        SELECT m.mld_melding_key, m.mld_melding_omschrijving, km.mld_kenmerk_key
          FROM mld_melding m, mld_kenmerkmelding km--, fac_tracking tr
         WHERE m.mld_stdmelding_key IN (2, 146, 2961) -- Vraag over archief+Overdracht naar Hulshoff+Verwijderen dossiers
               AND m.mld_melding_key = km.mld_melding_key(+)
               AND km.mld_kenmerk_key(+) = 2385     -- Te verwijderen dossiers
               --AND m.mld_melding_key = tr.fac_tracking_refkey
               --AND tr.fac_srtnotificatie_key IN (18, 22)      -- MLDAFM/MLDREJ
               --AND tr.fac_tracking_datum < SYSDATE - 31
               --AND tr.fac_tracking_datum > SYSDATE - 365 --MB toegevoegd tbv performance
      ORDER BY m.mld_melding_key;

   CURSOR c_tolk
   IS
      SELECT m.mld_melding_key, km.mld_kenmerkmelding_key
        FROM mld_melding m, mld_kenmerkmelding km, mld_kenmerk k--, fac_tracking tr
       WHERE m.mld_stdmelding_key IN (2801, 2802, 2821, 3421, 3422, 3423) -- Tolkdiensten (op UWV locatie+telefonisch+extern)
             AND m.mld_melding_key = km.mld_melding_key
             AND km.mld_kenmerk_key = k.mld_kenmerk_key
             AND k.mld_srtkenmerk_key = 1500                     -- Naam klant
             --AND m.mld_melding_key = tr.fac_tracking_refkey
             --AND tr.fac_srtnotificatie_key IN (18, 22)        -- MLDAFM/MLDREJ
             --AND tr.fac_tracking_datum < SYSDATE - 31
             --AND tr.fac_tracking_datum > SYSDATE - 365 --MvH toegevoegd tbv performance
      UNION ALL
      SELECT m.mld_melding_key, km.mld_kenmerkmelding_key
        FROM mld_melding m, mld_kenmerkmelding km, mld_kenmerk k--, fac_tracking tr
       WHERE m.mld_stdmelding_key = 1721       -- Tolk Nederlandse gebarentaal
             AND m.mld_melding_key = km.mld_melding_key
             AND km.mld_kenmerk_key = k.mld_kenmerk_key
             AND k.mld_srtkenmerk_key = 701        -- Naam gesprekspartner UWV
             --AND m.mld_melding_key = tr.fac_tracking_refkey
             --AND tr.fac_srtnotificatie_key IN (18, 22)        -- MLDAFM/MLDREJ
             --AND tr.fac_tracking_datum < SYSDATE - 31
             --AND tr.fac_tracking_datum > SYSDATE - 365 --MvH toegevoegd tbv performance
      ORDER BY 1;

   -- UWVA#55161: Uitbreiding anonimisering met onderstaande MLD/BES-kenmerksoorten!
   CURSOR c_mld_kenmerksoorten
   IS
      SELECT DISTINCT m.mld_melding_key
        FROM mld_melding m, mld_kenmerkmelding km, mld_kenmerk k--, fac_tracking tr
       WHERE m.mld_melding_key = km.mld_melding_key
             AND km.mld_kenmerk_key = k.mld_kenmerk_key
             AND k.mld_srtkenmerk_key IN (1267, 1665, 1722, 1765) -- Adres/Telefoonnummer/IBAN/Exacte tenaamsteling
             --AND m.mld_melding_key = tr.fac_tracking_refkey
             --AND tr.fac_srtnotificatie_key IN (18, 22)        -- MLDAFM/MLDREJ
             --AND tr.fac_tracking_datum < SYSDATE - 31
             --AND tr.fac_tracking_datum > SYSDATE - 365 --MvH toegevoegd tbv performance
      ORDER BY 1;

   CURSOR c_bes_kenmerksoorten
   IS
      SELECT DISTINCT b.bes_bestelling_key
        FROM bes_bestelling b, bes_kenmerkbestell kb, bes_kenmerk k--, fac_tracking tr
       WHERE b.bes_bestelling_key = kb.bes_bestelling_key
             AND kb.bes_kenmerk_key = k.bes_kenmerk_key
             AND k.bes_srtkenmerk_key IN (4, 5, 8) -- Afgeven bij/Straat huisnummer/Telefoon
             --AND b.bes_bestelling_key = tr.fac_tracking_refkey
             --AND tr.fac_srtnotificatie_key IN (6, 7)        -- BESOTV/BESREJ
             --AND tr.fac_tracking_datum < SYSDATE - 31
             --AND tr.fac_tracking_datum > SYSDATE - 365 --MvH toegevoegd tbv performance
      ORDER BY 1;

   -- Delete 'BSN' van alle bezoekers bij afspraken >31 dagen oud! (UWVA#28511)
   CURSOR c_afspraak
   IS                   -- Afspraken met een bezoeker met een gevuld BSN-veld!
      SELECT DISTINCT a.bez_afspraak_key
        FROM bez_afspraak a, bez_bezoekers b, bez_kenmerkwaarde bk
       WHERE a.bez_afspraak_key = b.bez_afspraak_key
             AND b.bez_bezoekers_key = bk.bez_bezoekers_key
             AND bk.bez_kenmerk_key = 1                                  --BSN
             --AND a.bez_afspraak_datum < SYSDATE - 31 ***Ook toekomstig!***
             AND a.bez_afspraak_datum > SYSDATE - 365 --MvH toegevoegd tbv performance
      UNION
      SELECT DISTINCT a.bez_afspraak_key
        FROM bez_afspraak a, bez_bezoekers b
       WHERE a.bez_afspraak_key = b.bez_afspraak_key
             AND (LENGTH (REPLACE (bez_afspraak_bedrijf || 'x', ' ', '')) - LENGTH (REPLACE (TRANSLATE (bez_afspraak_bedrijf || 'x', '1234567890', ' '), ' ', '')) > 5
                  OR LENGTH (REPLACE (bez_afspraak_naam || 'x', ' ', '')) - LENGTH (REPLACE (TRANSLATE (bez_afspraak_naam || 'x', '1234567890', ' '), ' ', '')) > 5)
             --AND a.bez_afspraak_datum < SYSDATE - 31 ***Ook toekomstig!***
             AND a.bez_afspraak_datum > SYSDATE - 365 --MvH toegevoegd tbv performance
      UNION -- Afspraken bij een reservering met een gevuld BSN-veld (voordat die in c_res wordt verwijderd)!
      SELECT a.bez_afspraak_key
        FROM bez_afspraak a, res_rsv_ruimte r, res_kenmerkwaarde kw,  res_kenmerk k
       WHERE a.res_rsv_ruimte_key = r.res_rsv_ruimte_key
             AND r.res_rsv_ruimte_key = kw.res_rsv_ruimte_key
             AND kw.res_kenmerk_key = k.res_kenmerk_key
             AND k.res_srtkenmerk_key = 3                                --BSN
             --AND a.bez_afspraak_datum < SYSDATE - 31 ***Ook toekomstig!***
             AND a.bez_afspraak_datum > SYSDATE - 365 --MvH toegevoegd tbv performance
      ORDER BY bez_afspraak_key;

   -- Reserveringen met een gevuld BSN-veld (deze hebben hier geen bezoekers meer met een gevuld BSN-veld)!
   CURSOR c_res
   IS
        SELECT r.res_rsv_ruimte_key, kw.res_kenmerkwaarde_key
          FROM res_rsv_ruimte r, res_kenmerkwaarde kw, res_kenmerk k
         WHERE r.res_rsv_ruimte_key = kw.res_rsv_ruimte_key
               AND kw.res_kenmerk_key = k.res_kenmerk_key
               AND k.res_srtkenmerk_key = 3                              --BSN
               --AND r.res_rsv_ruimte_tot < SYSDATE - 31 ***Ook toekomstig!***
               AND r.res_rsv_ruimte_tot > SYSDATE - 365 --MB toegevoegd tbv performance
      ORDER BY res_rsv_ruimte_key;

   v_errorhint         VARCHAR2 (1000);
   v_errormsg          VARCHAR2 (1000);
   oracle_err_num      NUMBER;
   oracle_err_mes      VARCHAR2 (200);

   h_mld_melding_key   NUMBER (10);                           --hulp-variabele

   v_nu                DATE;
   v_txt_anoniem       VARCHAR2 (200);
BEGIN
   v_nu := SYSDATE;
   v_txt_anoniem := 'Geanonimiseerd';

   ----------------------------------------------------------------------------------------------------------------------------------------------------------------------
   FOR rc IN c_spobilo
   LOOP
      DELETE FROM mld_kenmerkmelding
            WHERE mld_kenmerkmelding_key = rc.mld_kenmerkmelding_key;

      DELETE FROM fac_tracking
            WHERE fac_srtnotificatie_key = 23                        -- MLDUPD
                  AND fac_tracking_refkey = rc.mld_melding_key;

      fac.trackaction ('#MLDUPD', rc.mld_melding_key, NULL, v_nu, v_txt_anoniem);
   END LOOP;

   COMMIT;

   ----------------------------------------------------------------------------------------------------------------------------------------------------------------------
   h_mld_melding_key := 0;

   FOR rc IN c_vertaal
   LOOP
      IF h_mld_melding_key <> rc.mld_melding_key
      THEN
         -- Per vertaalwerk-melding eenmalig tracking toevoegen (en verwijderen), om meervoudige tracking te voorkomen!
         DELETE FROM fac_tracking
               WHERE fac_srtnotificatie_key = 23                     -- MLDUPD
                     AND (UPPER (fac_tracking_oms) LIKE '%BSN%' OR UPPER (fac_tracking_oms) LIKE '%NAAM%')
                     AND fac_tracking_refkey = rc.mld_melding_key;

         fac.trackaction ('#MLDUPD', rc.mld_melding_key, NULL, v_nu, v_txt_anoniem);
      END IF;

      IF rc.mld_kenmerk_key = 701                                      -- Naam
      THEN
         UPDATE mld_kenmerkmelding
            SET mld_kenmerkmelding_waarde = 'Anoniem'
          WHERE mld_kenmerkmelding_key = rc.mld_kenmerkmelding_key;
      END IF;

      IF (rc.mld_kenmerk_key = 702 OR rc.mld_kenmerk_key = 703) -- Gevalsnummer of BSN
      THEN
         DELETE FROM mld_kenmerkmelding
               WHERE mld_kenmerkmelding_key = rc.mld_kenmerkmelding_key;
      END IF;

      h_mld_melding_key := rc.mld_melding_key;
   END LOOP;

   COMMIT;

   ----------------------------------------------------------------------------------------------------------------------------------------------------------------------
   -- Delete/anonimiseer bovenstaande kenmerken ook uit Omschrijving van opdracht! (UWVA#28316)
   EXECUTE IMMEDIATE 'ALTER TRIGGER MLD_T_MLD_OPDR_B_IU DISABLE';

   UPDATE mld_opdr
      SET mld_opdr_omschrijving = '[Geanonimiseerd; zie bovenliggende melding voor nog aanwezige gegevens.]'
    WHERE COALESCE (mld_opdr_omschrijving, '-') NOT LIKE '[Geanonimiseerd%'
          AND mld_melding_key IN
                   (SELECT mld_melding_key
                      FROM mld_melding m--, fac_tracking tr
                     WHERE m.mld_stdmelding_key = 1301          -- Vertaalwerk
                           --AND m.mld_melding_key = tr.fac_tracking_refkey
                           --AND tr.fac_srtnotificatie_key IN (18, 22) -- MLDAFM/MLDREJ
                           --AND tr.fac_tracking_datum < SYSDATE
                           AND 1=1);

   EXECUTE IMMEDIATE 'ALTER TRIGGER MLD_T_MLD_OPDR_B_IU ENABLE';

   COMMIT;

   ----------------------------------------------------------------------------------------------------------------------------------------------------------------------
   FOR rc IN c_archief_dossier_hulshoff
   LOOP
      IF COALESCE (rc.mld_melding_omschrijving, '-') NOT LIKE '[Geanonimiseerd%' OR rc.mld_kenmerk_key = 2385
      THEN
         DELETE FROM fac_tracking
               WHERE fac_srtnotificatie_key = 23                     -- MLDUPD
                     AND (UPPER (fac_tracking_oms) LIKE '%BSN%' OR UPPER (fac_tracking_oms) LIKE '%NAAM%')
                     AND fac_tracking_refkey = rc.mld_melding_key;

         fac.trackaction ('#MLDUPD', rc.mld_melding_key, NULL, v_nu, v_txt_anoniem);
      END IF;

      -- Delete/anonimiseer Omschrijving van 2-, 146 en 2961-meldingen die >31 dagen geleden zijn afgemeld! (UWVA#29178)
      UPDATE mld_melding
         SET mld_melding_omschrijving = '[Geanonimiseerd.]',
             mld_melding_onderwerp = '[Geanonimiseerd.]'
       WHERE COALESCE (mld_melding_omschrijving, mld_melding_onderwerp) NOT LIKE '[Geanonimiseerd%'
             AND mld_melding_key = rc.mld_melding_key;

      DELETE FROM mld_kenmerkmelding km
            WHERE km.mld_kenmerk_key = 2385         -- Te verwijderen dossiers
                  AND km.mld_melding_key = rc.mld_melding_key;
   END LOOP;

   COMMIT;

   ----------------------------------------------------------------------------------------------------------------------------------------------------------------------
   -- Delete/anonimiseer Omschrijving van 2-, 146 en 2961-opdrachten die >31 dagen geleden zijn afgemeld! (UWVA#29178)
   EXECUTE IMMEDIATE 'ALTER TRIGGER MLD_T_MLD_OPDR_B_IU DISABLE';

   UPDATE mld_opdr
      SET mld_opdr_omschrijving = '[Geanonimiseerd.]'
    WHERE COALESCE (mld_opdr_omschrijving, '-') NOT LIKE '[Geanonimiseerd%'
          AND mld_melding_key IN
                   (SELECT mld_melding_key
                      FROM mld_melding m--, fac_tracking tr
                     WHERE m.mld_stdmelding_key IN (2, 146, 2961) -- Vraag over archief+Overdracht naar Hulshoff+Verwijderen dossiers
                           --AND m.mld_melding_key = tr.fac_tracking_refkey
                           --AND tr.fac_srtnotificatie_key IN (18, 22) -- MLDAFM/MLDREJ
                           --AND tr.fac_tracking_datum < SYSDATE
                           AND 1=1);

   EXECUTE IMMEDIATE 'ALTER TRIGGER MLD_T_MLD_OPDR_B_IU ENABLE';

   COMMIT;

   ----------------------------------------------------------------------------------------------------------------------------------------------------------------------
   FOR rc IN c_tolk
   LOOP
      DELETE FROM fac_tracking
            WHERE fac_srtnotificatie_key = 23                        -- MLDUPD
                  AND UPPER (fac_tracking_oms) LIKE '%NAAM%'
                  AND fac_tracking_refkey = rc.mld_melding_key;

      fac.trackaction ('#MLDUPD', rc.mld_melding_key, NULL, v_nu, v_txt_anoniem);

      -- Delete/anonimiseer Omschrijving én Onderwerp van 3421-, 3422-, 3423-, 1721-meldingen die >31 dagen geleden zijn afgemeld! (UWVA#41825)
      -- NIET NODIG VOOR 2801-, 2802-, 2821-MELDINGEN, WANT DIE MELDINGEN HEBBEN GEEN OMSCHRIJVING/ONDERWERP!
      UPDATE mld_melding
         SET mld_melding_omschrijving = '[Geanonimiseerd.]',
             mld_melding_onderwerp = '[Geanonimiseerd.]'
       WHERE mld_stdmelding_key IN (3421, 3422, 3423, 1721)
             AND COALESCE (mld_melding_omschrijving, mld_melding_onderwerp) NOT LIKE '[Geanonimiseerd%'
             AND mld_melding_key = rc.mld_melding_key;

      -- Delete 'Naam klant' (kenmerksoort met key=1500) of 'Naam gesprekspartner UWV' (kenmerksoort met key=701).
      DELETE FROM mld_kenmerkmelding
            WHERE mld_kenmerkmelding_key = rc.mld_kenmerkmelding_key;
   END LOOP;

   COMMIT;

   ----------------------------------------------------------------------------------------------------------------------------------------------------------------------
   -- Delete/anonimiseer Omschrijving van 2801-, 2802-, 2821-opdrachten die >31 dagen geleden zijn afgemeld! (UWVA#33073)
   -- En ook van 3421-, 3422-, 3423-, 1721-opdrachten! (UWVA#41825)
   EXECUTE IMMEDIATE 'ALTER TRIGGER MLD_T_MLD_OPDR_B_IU DISABLE';

   UPDATE mld_opdr
      SET mld_opdr_omschrijving = '[Geanonimiseerd.]'
    WHERE COALESCE (mld_opdr_omschrijving, '-') NOT LIKE '[Geanonimiseerd%'
          AND mld_melding_key IN
                   (SELECT mld_melding_key
                      FROM mld_melding m--, fac_tracking tr
                     WHERE m.mld_stdmelding_key IN (2801, 2802, 2821, 3421, 3422, 3423, 1721) -- Tolkdiensten (op UWV locatie+telefonisch+extern)
                           --AND m.mld_melding_key = tr.fac_tracking_refkey
                           --AND tr.fac_srtnotificatie_key IN (18, 22) -- MLDAFM/MLDREJ
                           --AND tr.fac_tracking_datum < SYSDATE - 31
                           --AND tr.fac_tracking_datum > TO_DATE ('26062015', 'ddmmyyyy') -- Per introductie 'Naam klant'!
                           AND 1=1);

   EXECUTE IMMEDIATE 'ALTER TRIGGER MLD_T_MLD_OPDR_B_IU ENABLE';

   COMMIT;

   -- UWVA#55161: Uitbreiding anonimisering met onderstaande MLD/BES-kenmerksoorten!
   ----------------------------------------------------------------------------------------------------------------------------------------------------------------------
   FOR rc IN c_mld_kenmerksoorten
   LOOP
      fac.trackaction ('#MLDUPD', rc.mld_melding_key, NULL, v_nu, v_txt_anoniem);

      DELETE FROM mld_kenmerkmelding km -- Inclusief eventueel verwijderde waarden!
            WHERE km.mld_melding_key = rc.mld_melding_key
                  AND EXISTS (SELECT 1
                                FROM mld_kenmerk
                               WHERE mld_srtkenmerk_key IN (1267, 1665, 1722, 1765) -- Adres/Telefoonnummer/IBAN/Exacte tenaamsteling
                                     AND mld_kenmerk_key = km.mld_kenmerk_key);
   END LOOP;

   COMMIT;

   ----------------------------------------------------------------------------------------------------------------------------------------------------------------------
   FOR rc IN c_bes_kenmerksoorten
   LOOP
      fac.trackaction ('#BESUPD', rc.bes_bestelling_key, NULL, v_nu, v_txt_anoniem);

      DELETE FROM bes_kenmerkbestell kb -- Inclusief eventueel verwijderde waarden!
            WHERE kb.bes_bestelling_key = rc.bes_bestelling_key
                  AND EXISTS (SELECT 1
                                FROM bes_kenmerk
                               WHERE bes_srtkenmerk_key IN (4, 5, 8) -- Afgeven bij/Straat huisnummer/Telefoon
                                     AND bes_kenmerk_key = kb.bes_kenmerk_key);
   END LOOP;

   COMMIT;

   ----------------------------------------------------------------------------------------------------------------------------------------------------------------------
   FOR rc IN c_afspraak
   LOOP
      -- Delete 'BSN' van alle bezoekers bij afspraken >31 dagen oud (UWVA#28511)
      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);

      -- UWVA#30245: Anonimiseren bez_bezoekers.bez_bezoekers_opmerking hoeft
      --             niet, want bevat geen vertrouwelijke info!

      -- Anonimiseer gegevens per bezoeker van afspraken >31 dagen oud met BSN (bij bezoeker of reservering)
      UPDATE bez_bezoekers
         SET bez_afspraak_naam = 'Anoniem', bez_afspraak_bedrijf = NULL
       WHERE bez_afspraak_key = rc.bez_afspraak_key;

      -- Verwijder opmerking van afspraken >31 dagen oud met BSN (bij bezoeker of reservering)
      UPDATE bez_afspraak
         SET bez_afspraak_opmerking = NULL
       WHERE bez_afspraak_key = rc.bez_afspraak_key;

      DELETE FROM fac_tracking
            WHERE fac_srtnotificatie_key = 334                       -- BEZUPD
                  AND fac_tracking_refkey = rc.bez_afspraak_key;

      DELETE FROM fac_tracking t1
            WHERE t1.fac_srtnotificatie_key IN (14, 15, 61, 62, 154) -- BEZDON/BEZOUT/BEZDO2/BEZOU2/BEZBAD
                  AND t1.fac_tracking_oms IS NOT NULL       -- Niet van belang
                  AND EXISTS
                        (SELECT 1
                           FROM bez_bezoekers b
                          WHERE b.bez_afspraak_key = rc.bez_afspraak_key
                                AND b.bez_bezoekers_key = t1.fac_tracking_refkey);

      fac.trackaction ('#BEZUPD', rc.bez_afspraak_key, NULL, v_nu, v_txt_anoniem);
   END LOOP;

   COMMIT;

   ----------------------------------------------------------------------------------------------------------------------------------------------------------------------
   FOR rc IN c_res
   LOOP
      -- Cursor bevat reserveringen met BSN die moeten worden geanonimiseerd.

      -- Delete 'BSN' voor alle reserveringen >31 dagen oud (dus met BSN)
      -- Per UWVA#29469 ongeacht activiteitkey!
      DELETE FROM res_kenmerkwaarde
            WHERE res_kenmerkwaarde_key = rc.res_kenmerkwaarde_key;

      -- Verwijder opmerking van alle reserveringen >31 dagen oud met BSN
      -- Per UWVA#29469 ongeacht activiteitkey!
      UPDATE res_rsv_ruimte
         SET res_rsv_ruimte_opmerking = NULL
       WHERE res_rsv_ruimte_key = rc.res_rsv_ruimte_key;

      DELETE FROM fac_tracking
            WHERE fac_srtnotificatie_key = 31                        -- RESUPD
                  AND UPPER (fac_tracking_oms) LIKE '%BSN%'
                  AND fac_tracking_refkey = rc.res_rsv_ruimte_key;

      fac.trackaction ('#RESUPD', rc.res_rsv_ruimte_key, NULL, v_nu, v_txt_anoniem);
   /* Hoeft niet meer; gebeurt in c_afspraak-loop!
         -- BEZ-afspraken bij reservering ook anonimiseren; is er gerelateerde afspraak?
         IF rc.bez_afspraak_key IS NOT NULL
         THEN
            -- Ja dus, er is een afspraak bij reservering!

            -- Verwijder opmerking van afspraken bij reserveringen >31 dagen oud met BSN
            -- Per UWVA#29469 ongeacht activiteitkey!
            UPDATE bez_afspraak
               SET bez_afspraak_opmerking = NULL
             WHERE bez_afspraak_key = rc.bez_afspraak_key;

            -- Anonimiseer gegevens per bezoeker bij reserveringen >31 dagen oud met BSN
            -- Per UWVA#29469 ongeacht activiteitkey!
            UPDATE bez_bezoekers
               SET bez_afspraak_naam = 'Anoniem',
                   bez_afspraak_bedrijf = 'Anoniem'
             WHERE bez_afspraak_key = rc.bez_afspraak_key;

            fac.trackaction ('#BEZUPD', rc.bez_afspraak_key, NULL, v_nu, v_txt_anoniem);
         END IF;
   */
   END LOOP;

   COMMIT;
EXCEPTION
   WHEN OTHERS
   THEN
      -- Op verzoek van JGL voor de zekerheid toegevoegd!
      EXECUTE IMMEDIATE 'ALTER TRIGGER MLD_T_MLD_OPDR_B_IU ENABLE';

      oracle_err_num := SQLCODE;
      oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
      v_errormsg := 'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
      fac.writelog (p_applname, 'E', 'Sub-proces ANONIMISEER afgebroken!', v_errormsg);
      COMMIT;
END;
/

-- UWVA#53566: Verwijderen naam van geschoonde/te schonen (enkelvoudige) bijlagen, want daarin vaak ook persoonsgegevens!
-- 1881 = Te vertalen document
DELETE FROM mld_kenmerkmelding km WHERE EXISTS (SELECT 1 FROM mld_kenmerk WHERE mld_srtkenmerk_key IN (1881) AND mld_kenmerk_key = km.mld_kenmerk_key);
DELETE FROM mld_kenmerkopdr ko WHERE EXISTS (SELECT 1 FROM mld_kenmerk WHERE mld_srtkenmerk_key IN (1881) AND mld_kenmerk_key = ko.mld_kenmerk_key);
COMMIT;

-- 801, 802, 803, 804, 821, 822 = Vertaalde documenten
DELETE FROM mld_kenmerkopdr ko WHERE EXISTS (SELECT 1 FROM mld_kenmerk WHERE mld_srtkenmerk_key IN (801, 802, 803, 804, 821, 822) AND mld_kenmerk_key = ko.mld_kenmerk_key);
COMMIT;

-- 1841 = Bijlage/Aanvraagformulier buitenlandse reis
DELETE FROM mld_kenmerkmelding km WHERE EXISTS (SELECT 1 FROM mld_kenmerk WHERE mld_srtkenmerk_key IN (1841) AND mld_kenmerk_key = km.mld_kenmerk_key);
DELETE FROM mld_kenmerkopdr ko WHERE EXISTS (SELECT 1 FROM mld_kenmerk WHERE mld_srtkenmerk_key IN (1841) AND mld_kenmerk_key = ko.mld_kenmerk_key);
COMMIT;

-- Prevent e-mails to real users
UPDATE prs_perslid SET prs_perslid_email=REPLACE(prs_perslid_email,'@', '$');

-- Prevent ordering/notification to real suppliers (and copy as much as possible to Opmerking)!
/* Formatted on 21-4-2015 13:42:24 (QP5 v5.136.908.31019) */
DECLARE
   v_dummy   NUMBER;
BEGIN
   FOR rec
      IN (  SELECT prs_bedrijf_key, prs_bedrijfadres_type, prs_bedrijfadres_url
              FROM prs_bedrijfadres
             WHERE prs_bedrijfadres_url IS NOT NULL
          ORDER BY 1, 2, 3)
   LOOP
      UPDATE prs_bedrijf b
         SET prs_bedrijf_opmerking =
                DECODE (
                   b.prs_bedrijf_opmerking,
                   '', '[' || rec.prs_bedrijfadres_type || ']' || rec.prs_bedrijfadres_url,
                   b.prs_bedrijf_opmerking || CHR (13) || CHR (10) || '[' || rec.prs_bedrijfadres_type || ']' || rec.prs_bedrijfadres_url)
       WHERE b.prs_bedrijf_key = rec.prs_bedrijf_key
             AND LENGTH (b.prs_bedrijf_opmerking || rec.prs_bedrijfadres_url) + 5 <= 320;
   END LOOP;
END;
/

-- URL besteladres weggekopieerd en nu nog vullen met mailto:infobeheer.fi@uwv.nl
UPDATE prs_bedrijfadres
SET prs_bedrijfadres_url='mailto:infobeheer.fi@uwv.nl'
WHERE prs_bedrijfadres_type = 'B'
  AND prs_bedrijfadres_url IS NOT NULL;

-- URL opdrachtadres weggekopieerd en nu nog vullen met mailto:infobeheer.fi@uwv.nl
UPDATE prs_bedrijfadres
SET prs_bedrijfadres_url='mailto:infobeheer.fi@uwv.nl'
WHERE prs_bedrijfadres_type = 'O'
  AND prs_bedrijfadres_url IS NOT NULL;

-- URL contractadres weggekopieerd en nu nog vullen met mailto:infobeheer.fi@uwv.nl
UPDATE prs_bedrijfadres
SET prs_bedrijfadres_url='mailto:infobeheer.fi@uwv.nl'
WHERE prs_bedrijfadres_type = 'C'
  AND prs_bedrijfadres_url IS NOT NULL;

UPDATE prs_bedrijf
SET prs_bedrijf_email = REPLACE(prs_bedrijf_email,'@', '$')
WHERE prs_bedrijf_email iS NOT NULL;

-- Prevent SMS messages to employees or real suppliers
UPDATE prs_perslid
   SET prs_perslid_mobiel = '06-12 34 56 78'
 WHERE prs_perslid_mobiel IS NOT NULL;

UPDATE prs_bedrijf
   SET prs_bedrijf_telefoon2 = '(053) 123 45 67'
 WHERE prs_bedrijf_telefoon2 IS NOT NULL;

UPDATE prs_contactpersoon
   SET prs_contactpersoon_telefoon_2 = '(053) 765 43 21'
 WHERE prs_contactpersoon_telefoon_2 IS NOT NULL;

-- Remove pending notifications
DELETE FROM fac_notificatie;

-- Notificatiejobs uitzetten
UPDATE fac_notificatie_job
SET fac_notificatie_job_nextrun = ADD_MONTHS(TRUNC(SYSDATE), 15*12)
 WHERE fac_notificatie_job_key IN (3, 21, 122, 161, 181, 183);

-- Een aantal mail-notificatie uitzetten
UPDATE fac_srtnotificatie
   SET fac_srtnotificatie_mode = BITAND(fac_srtnotificatie_mode, 255-2)
 WHERE fac_srtnotificatie_code IN ('IMPFAT', 'IMPERR', 'RESDIR', 'CNTMAI')
    OR fac_srtnotificatie_code LIKE 'CUST%';

-- Veld 'Aantal dagen tbv herinnering' leeg maken voor alle reserveringscatalogi
UPDATE res_disc_params
   SET res_disc_params_noti_dagen = NULL;

-- UWVA#41516: URL-meldingkenmerken (2881+2882) naar V&O-boekingen verwijderen
DELETE FROM mld_kenmerkmelding
      WHERE mld_kenmerk_key IN (2881, 2882);

-- Anonimiseer zaken PER DIRECT via procedure uwva_aftersales_anonimiseer
BEGIN
   uwva_aftersales_anonimiseer ('POSTIMP', '', '', '');
END;
/

-- Header prefix etc: worden ingesteld door /cust/custenv.wsc

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