--
-- $Id$
--
-- Customer specific once-script FMHN#76317.sql.
DEFINE thisfile = 'FMHN#76317.sql'
DEFINE dbuser   = '^FMHN'

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

-- FMHN#76317: Logisch verwijderen alle uit beeld geraakte BZK-personen in de
--             Facilitor-afdelingboom (op niveau 6) met voorkennis dat er geen
--             geen lopende verplichtingen meer zijn.
SET SERVEROUTPUT ON size 1000000;

DECLARE
   CURSOR c
   IS
        SELECT p.prs_perslid_key
          FROM prs_afdeling a, prs_perslid p
         WHERE a.prs_afdeling_verwijder IS NULL
               AND SUBSTR (a.prs_afdeling_externid, 1, 2) = '04'
               AND EXISTS (SELECT 1
                             FROM prs_v_afdeling_boom
                            WHERE prs_afdeling_key5 = a.prs_afdeling_parentkey)
               AND a.prs_afdeling_key = p.prs_afdeling_key
      ORDER BY 1;

   v_count_del   NUMBER := 0;
BEGIN
   FOR rec IN c
   LOOP
      BEGIN
         -- Niet van toepassing voor de 254 te verwijderen BZK-personen.
         --v_errormsg := 'Fout schonen collega';
         DELETE FROM prs_collega
               WHERE prs_perslid_key = rec.prs_perslid_key
                     OR prs_perslid_key_alt = rec.prs_perslid_key;

         --v_errormsg := 'Fout schonen perslid';
         UPDATE prs_perslid
            SET prs_perslid_verwijder = SYSDATE
          WHERE prs_perslid_key = rec.prs_perslid_key;

         v_count_del := v_count_del + 1;

         -- Niet van toepassing voor de te 254 verwijderen BZK-personen.
         IF MOD (v_count_del, 1000) = 0
         THEN
            COMMIT;
         END IF;
      END;
   END LOOP;

   DBMS_OUTPUT.PUT_LINE ('S: ' || TO_CHAR (v_count_del) || ' BZK-personen verwijderd (op niveau 6)');
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
