-- Customer specific once-script UWVA#33167.
-- $Id$

SET ECHO ON
SPOOL xuwva#33167.lst
SET DEFINE OFF

SET SERVEROUTPUT ON size 1000000;

-- Zoekt voor alle res_ruimtes met standaard-bez_actie "Oproepen" de bezoekersafspraken met een 
-- ophaal-actie of geen actie. Voor die afspraken wordt de bez_actie op "Ophalen" gezet.
-- (Merk op dat dit gebeurt voor alle oproep-res_ruimtes, ongeacht de locatie)
DECLARE
   oracle_err_num   NUMBER;
   oracle_err_mes   VARCHAR2 (255);
   v_aanduiding     VARCHAR2 (255);
   v_errormsg       VARCHAR2 (1024);
   v_errorhint      VARCHAR2 (1024);

   CURSOR c
   IS
      SELECT ac.bez_actie_omschrijving actie_oproep
            ,ac.bez_actie_key
            ,rr.res_ruimte_nr ruimte
            ,rrr.res_rsv_ruimte_key
            ,rrr.res_reservering_key||'/'||rrr.res_rsv_ruimte_volgnr deelres
            ,rrr.res_rsv_ruimte_van van
            ,a.bez_afspraak_key
            ,a.bez_actie_key actie_oud
        FROM bez_actie ac
            ,res_ruimte rr
            ,res_ruimte_opstelling ro
            ,res_rsv_ruimte rrr
            ,bez_afspraak a
       WHERE BITAND(ac.bez_actie_flags, 1) = 1
         AND rr.bez_actie_key = ac.bez_actie_key
         AND ro.res_ruimte_key = rr.res_ruimte_key
         AND rrr.res_ruimte_opstel_key = ro.res_ruimte_opstel_key
         AND a.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
         AND a.bez_afspraak_datum > TRUNC(SYSDATE)
         AND (   a.bez_actie_key != ac.bez_actie_key
              OR a.bez_actie_key IS NULL);
BEGIN
   FOR r IN c
   LOOP
      BEGIN
         v_aanduiding :=   'Afspraak '||r.bez_afspraak_key
                         ||' bij res '||r.deelres
                         ||' ('||r.res_rsv_ruimte_key
                         ||') in "'||r.ruimte
                         ||'" op '||TO_CHAR(r.van, 'dd-mm-yyyy hh24:mi');

         v_errorhint := 'Update bez_actie bij bez_afspraak';

         UPDATE bez_afspraak
            SET bez_actie_key = r.bez_actie_key
          WHERE bez_afspraak_key = r.bez_afspraak_key;

         DBMS_OUTPUT.PUT_LINE (v_aanduiding);
      EXCEPTION
         WHEN OTHERS
         THEN
            oracle_err_num := SQLCODE;
            oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
            v_errorhint := v_errormsg;
            v_errormsg :=
                  v_aanduiding
               || '(ORACLE error '
               || oracle_err_num
               || '/'
               || oracle_err_mes
               || ')';
            DBMS_OUTPUT.PUT_LINE ('Error: '||v_errormsg||'; Hint: '||v_errorhint);
      END;
   END LOOP;
END;
/

BEGIN adm.systrackscriptId('$Id$'); END;
/
COMMIT;
SPOOL OFF
