SET ECHO ON
SPOOL xAKZA#36261.lst

SET SERVEROUTPUT ON;

-- Generieke proc met logging
DECLARE
   oracle_err_num       NUMBER;
   oracle_err_mes       VARCHAR2 (200);
   v_errorhint          VARCHAR2 (100);

   v_aanduiding         VARCHAR2(100);
   c_srtcontrole_key    NUMBER(10)        := 50;

   CURSOR c
   IS
      SELECT ins_deel_key,
             ins_deel_omschrijving,
             objbeh_key,
             objbeh_naam,
             regdat,
             COALESCE(
               DECODE (uvtijd,
                       '< 1 month',     1,
                       '< 3 months',    3,
                       '< 6 months',    6,
                       '< 13 months',  12,
                       '< 30 months',  30,
                       '< 1 year',     12,
                       '< 2 years',    24,
                       '< 3 years',    36,
                       '< 4 years',    48,
                       NULL),
               ROUND( MONTHS_BETWEEN(vvldat, regdat) )
             ) periode
        FROM ( SELECT d.ins_deel_key,
                      d.ins_deel_omschrijving,
                      pf.prs_perslid_key objbeh_key,
                      pf.prs_perslid_naam_full objbeh_naam,
                      fac.safe_to_date(regdat.ins_kenmerkdeel_waarde, 'DD-MM-YYYY') regdat,
                      fac.safe_to_date(vvldat.ins_kenmerkdeel_waarde, 'DD-MM-YYYY') vvldat,
                      uvtijd.ins_kenmerkdeel_waarde uvtijd
                 FROM ins_v_aanwezigdeel d,
                      ( SELECT * FROM ins_kenmerkdeel
                         WHERE ins_kenmerk_key = 6859
                           AND ins_kenmerkdeel_verwijder IS NULL ) objbeh,
                      ( SELECT * FROM ins_kenmerkdeel
                         WHERE ins_kenmerk_key = 6860
                           AND ins_kenmerkdeel_verwijder IS NULL ) regdat,
                      ( SELECT * FROM ins_kenmerkdeel
                         WHERE ins_kenmerk_key = 6865
                           AND ins_kenmerkdeel_verwijder IS NULL ) vvldat,
                      ( SELECT * FROM ins_kenmerkdeel
                         WHERE ins_kenmerk_key = 6864
                           AND ins_kenmerkdeel_verwijder IS NULL ) uvtijd,
                      prs_v_perslid_fullnames pf
                WHERE objbeh.ins_deel_key(+) = d.ins_deel_key
                  AND regdat.ins_deel_key(+) = d.ins_deel_key
                  AND vvldat.ins_deel_key(+) = d.ins_deel_key
                  AND uvtijd.ins_deel_key(+) = d.ins_deel_key
                  AND d.ins_discipline_key = 1625
                  AND pf.prs_perslid_key(+) = fac.safe_to_number(objbeh.ins_kenmerkdeel_waarde) )
       ORDER BY ins_deel_omschrijving;

BEGIN

   FOR rec IN c
   LOOP
      BEGIN
         v_aanduiding := rec.ins_deel_omschrijving||' ('||rec.ins_deel_key||'): '
                       ||TO_CHAR(rec.regdat, 'DD-MM-YYYY')||' / '||rec.periode||'m / '||rec.objbeh_naam;

         DBMS_OUTPUT.PUT_LINE(v_aanduiding);

         -- Standaardvelden vullen die niet geïmporteerd kunnen worden.
         v_errorhint := 'Standaardvelden vullen';
         UPDATE ins_deel
            SET ins_deel_aanmaak = rec.regdat,
                prs_perslid_key_beh = rec.objbeh_key
          WHERE ins_deel_key = rec.ins_deel_key;

         -- Terugkerende taken aanmaken o.b.v. flexvelden
         v_errorhint := 'Taak aanmaken';
         INSERT INTO ins_srtcontroledl_xcp (
            ins_deel_key,
            ins_srtcontrole_key,
            ins_srtcontroledl_xcp_periode,
            ins_srtcontroledl_xcp_groep)
         VALUES (
            rec.ins_deel_key,
            c_srtcontrole_key,
            rec.periode,
            'LoD');

      EXCEPTION
         WHEN OTHERS
         THEN
            oracle_err_num := SQLCODE;
            oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
            DBMS_OUTPUT.PUT_LINE('Error ' || v_aanduiding || oracle_err_num || '/' || oracle_err_mes);
      END;
   END LOOP;

EXCEPTION
   WHEN OTHERS
   THEN
      oracle_err_num := SQLCODE;
      oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
      DBMS_OUTPUT.PUT_LINE('Error ' || oracle_err_num || '/' || oracle_err_mes);
END;
/

-- Opruimen
DROP TABLE tmp_imp_ins;

BEGIN adm.systrackscriptId('$Id$', 0); END;
/

COMMIT;

SET ECHO OFF;
SET SERVEROUTPUT OFF;
SPOOL OFF;