-- Customer specific once-script SBSH#34005.
--
-- (c) 2015 Facilitor B.V. 
--
-- Support: +31 53 4800700
SET ECHO ON
SPOOL xsbsh34005.lst
SET DEFINE OFF

SET SERVEROUTPUT ON size 1000000;

-- SBSH#34005 - Alles voor 1/10/2015 correct bevriezen!
-- Catering
/*
DECLARE
   oracle_err_num   NUMBER;
   oracle_err_mes   VARCHAR2 (255);
   v_errormsg       VARCHAR2 (1024);
   v_errorhint      VARCHAR2 (1024);
BEGIN
   FOR rc
   IN (  SELECT   '['
                  || TO_CHAR (ra.res_rsv_artikel_levering,
                              'yyyy-mm-dd hh24:mi')
                  || '/'
                  || TO_CHAR (rr.res_reservering_key)
                  || '/'
                  || TO_CHAR (rr.res_rsv_ruimte_volgnr)
                  || '/'
                  || a.res_artikel_omschrijving
                  || '] '
                     aanduiding,
                  ra.res_rsv_artikel_key,
                  ra.res_artikel_key,
                  ra.res_rsv_artikel_verwijder,
                  ra.res_rsv_artikel_prijs old_prijs,
                  DECODE (
                     TO_CHAR (ra.res_rsv_artikel_levering, 'D'),
                     1,                                              -- Zondag
                     DECODE (
                        a.res_artikel_kostenpersoneel,
                        2,
                        ra.res_rsv_artikel_aantal * a.res_artikel_prijs * 1.25,
                        3,
                        ra.res_rsv_artikel_aantal * a.res_artikel_prijs * 1.5,
                        ra.res_rsv_artikel_aantal * a.res_artikel_prijs
                     ),
                     7,                                            -- Zaterdag
                     DECODE (
                        a.res_artikel_kostenpersoneel,
                        2,
                        ra.res_rsv_artikel_aantal * a.res_artikel_prijs * 1.25,
                        3,
                        ra.res_rsv_artikel_aantal * a.res_artikel_prijs * 1.5,
                        ra.res_rsv_artikel_aantal * a.res_artikel_prijs
                     ),
                     ra.res_rsv_artikel_aantal * a.res_artikel_prijs
                  )
                     new_prijs
           FROM   res_rsv_artikel ra, res_artikel a, res_rsv_ruimte rr
          WHERE       ra.res_rsv_artikel_verwijder IS NULL
                  --AND ra.res_status_bo_key = 5
                  AND ra.res_artikel_key = a.res_artikel_key
                  AND a.res_artikel_prijs_vast = 1
                  AND ra.res_rsv_artikel_levering >=
                        TO_DATE ('01-10-2015', 'dd-mm-yyyy')
                  AND ra.res_rsv_artikel_levering <
                        TO_DATE ('01-01-2016', 'dd-mm-yyyy')
                  AND ra.res_rsv_ruimte_key = rr.res_rsv_ruimte_key
                  AND rr.res_rsv_ruimte_verwijder IS NULL
       ORDER BY   1)
   LOOP
      BEGIN
         v_errormsg := 'Fout bij bijwerken res_rsv_artikel_prijs';

         IF (rc.old_prijs <> rc.new_prijs)
         THEN
            UPDATE   res_rsv_artikel ra
               SET   ra.res_rsv_artikel_prijs = rc.new_prijs
             WHERE   ra.res_rsv_artikel_key = rc.res_rsv_artikel_key;

            DBMS_OUTPUT.PUT_LINE(   rc.aanduiding
                                 || 'Prijs van: '
                                 || TO_CHAR (rc.old_prijs)
                                 || ' naar: '
                                 || TO_CHAR (rc.new_prijs));
         ELSE
            DBMS_OUTPUT.PUT_LINE (rc.aanduiding || 'Prijs ongewijzigd!');
         END IF;
      EXCEPTION
         WHEN OTHERS
         THEN
            oracle_err_num := SQLCODE;
            oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
            v_errorhint := v_errormsg;
            v_errormsg :=
                  rc.aanduiding
               || '(ORACLE error '
               || oracle_err_num
               || '/'
               || oracle_err_mes
               || ')';
            DBMS_OUTPUT.PUT_LINE (
               'Error: ' || v_errormsg || '; Hint: ' || v_errorhint
            );
      END;
   END LOOP;
END;
/

COMMIT;
*/
-- Voorzieningen
/*
DECLARE
   oracle_err_num   NUMBER;
   oracle_err_mes   VARCHAR2 (255);
   v_errormsg       VARCHAR2 (1024);
   v_errorhint      VARCHAR2 (1024);
BEGIN
   FOR rc
   IN (  SELECT      '['
                  || TO_CHAR (rd.res_rsv_deel_van, 'yyyy-mm-dd hh24:mi')
                  || '/'
                  || TO_CHAR (rr.res_reservering_key)
                  || '/'
                  || TO_CHAR (rr.res_rsv_ruimte_volgnr)
                  || '/'
                  || TO_CHAR (d.res_deel_key)
                  || '] '
                     aanduiding,
                  rd.res_rsv_deel_key,
                  rd.res_deel_key,
                  rd.res_rsv_deel_verwijder,
                  rd.res_rsv_deel_prijs old_prijs,
                  DECODE (
                     rr.res_activiteit_key,
                     10,
                     0,           -- Voorzieningen gratis bij interne boeking!
                     COALESCE (
                          (rd.res_rsv_deel_tot - rd.res_rsv_deel_van)
                        * 24
                        * d.res_deel_prijs,
                        0
                     )
                  )
                     new_prijs
           FROM   res_rsv_deel rd, res_deel d, res_rsv_ruimte rr
          WHERE       rd.res_rsv_deel_verwijder IS NULL
                  --AND rd.res_status_bo_key = 5
                  AND rd.res_deel_key = d.res_deel_key
                  AND d.res_deel_prijs_vast = 1
                  AND rd.res_rsv_deel_van >=
                        TO_DATE ('01-10-2015', 'dd-mm-yyyy')
                  AND rd.res_rsv_deel_van <
                        TO_DATE ('01-01-2016', 'dd-mm-yyyy')
                  AND rd.res_rsv_ruimte_key = rr.res_rsv_ruimte_key
                  AND rr.res_rsv_ruimte_verwijder IS NULL
                  AND rr.res_ruimte_opstel_key IS NOT NULL
       ORDER BY   1)
   LOOP
      BEGIN
         v_errormsg := 'Fout bij bijwerken res_rsv_deel_prijs';

         IF (rc.old_prijs <> rc.new_prijs)
         THEN
            UPDATE   res_rsv_deel rd
               SET   rd.res_rsv_deel_prijs = rc.new_prijs
             WHERE   rd.res_rsv_deel_key = rc.res_rsv_deel_key;

            DBMS_OUTPUT.PUT_LINE(   rc.aanduiding
                                 || 'Prijs van: '
                                 || TO_CHAR (rc.old_prijs)
                                 || ' naar: '
                                 || TO_CHAR (rc.new_prijs));
         ELSE
            DBMS_OUTPUT.PUT_LINE (rc.aanduiding || 'Prijs ongewijzigd!');
         END IF;
      EXCEPTION
         WHEN OTHERS
         THEN
            oracle_err_num := SQLCODE;
            oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
            v_errorhint := v_errormsg;
            v_errormsg :=
                  rc.aanduiding
               || '(ORACLE error '
               || oracle_err_num
               || '/'
               || oracle_err_mes
               || ')';
            DBMS_OUTPUT.PUT_LINE (
               'Error: ' || v_errormsg || '; Hint: ' || v_errorhint
            );
      END;
   END LOOP;
END;
/
COMMIT;
*/
-- Ruimten
DECLARE
   oracle_err_num   NUMBER;
   oracle_err_mes   VARCHAR2 (255);
   v_errormsg       VARCHAR2 (1024);
   v_errorhint      VARCHAR2 (1024);
BEGIN
   FOR rc
   IN (  SELECT      '['
                  || TO_CHAR (x.res_rsv_ruimte_van, 'yyyy-mm-dd hh24:mi')
                  || '/'
                  || TO_CHAR (x.res_reservering_key)
                  || '/'
                  || TO_CHAR (x.res_rsv_ruimte_volgnr)
                  || '/'
                  || TO_CHAR (x.res_ruimte_opstel_key)
                  || '] '
                     aanduiding,
                  x.res_rsv_ruimte_key,
                  x.res_rsv_ruimte_verwijder,
                  x.res_rsv_ruimte_prijs old_prijs,
                  x.aantal
                  * DECODE (
                       y.tarief,
                       'Profit',                 -- Profit = Prijs bij middag!
                       DECODE (TO_CHAR (x.res_rsv_ruimte_van, 'D'),
                               1,                                    -- Zondag
                                 DECODE (x.pa, 2, x.pm * 2.3, x.pm * 1.2),
                               7,                                  -- Zaterdag
                                 DECODE (x.pa, 2, x.pm * 2.3, x.pm * 1.2),
                               x.pm),
                       DECODE (             -- Non-profit = Prijs bij ochtend!
                               TO_CHAR (x.res_rsv_ruimte_van, 'D'),
                               1,                                    -- Zondag
                                 DECODE (x.pa, 2, x.po * 2, x.po * 1.2),
                               7,                                  -- Zaterdag
                                 DECODE (x.pa, 2, x.po * 2, x.po * 1.2),
                               x.po)
                    )
                     new_prijs
           FROM      (SELECT   a.prs_afdeling_key,
                               rr.res_rsv_ruimte_van,
                               rr.res_reservering_key,
                               rr.res_rsv_ruimte_volgnr,
                               rr.res_ruimte_opstel_key,
                               rr.res_rsv_ruimte_key,
                               rr.res_rsv_ruimte_verwijder,
                               rr.res_rsv_ruimte_prijs,
                               (rr.res_rsv_ruimte_tot - rr.res_rsv_ruimte_van)
                               * 24
                                  aantal,                      -- Duur in uren
                               DECODE (rr.res_activiteit_key,
                                       10, 0, -- Ruimte gratis bij interne boeking!
                                       r.res_ruimte_prijs_ochtend)
                                  po,                     -- Non-profit tarief
                               DECODE (rr.res_activiteit_key,
                                       10, 0, -- Ruimte gratis bij interne boeking!
                                       r.res_ruimte_prijs_middag)
                                  pm,                         -- Profit tarief
                               r.res_ruimte_prijs_avond pa -- Welke weekend-factor
                        FROM   res_v_aanwezigrsv_ruimte rr,
                               res_ruimte_opstelling ro,
                               res_ruimte r,
                               prs_perslid p,
                               prs_afdeling a
                       WHERE   rr.res_ruimte_opstel_key =
                                  ro.res_ruimte_opstel_key
                               AND ro.res_ruimte_key = r.res_ruimte_key
                               AND rr.res_rsv_ruimte_host_key =
                                     p.prs_perslid_key
                               AND p.prs_afdeling_key = a.prs_afdeling_key
                               AND rr.res_rsv_ruimte_van >=
                                     TO_DATE ('01-10-2015', 'dd-mm-yyyy')
                               AND rr.res_rsv_ruimte_van <
                                     TO_DATE ('01-01-2016', 'dd-mm-yyyy')
                               AND rr.res_ruimte_opstel_key IS NOT NULL) x
                  LEFT JOIN
                     (SELECT   prs_link_key, ud.fac_usrdata_omschr tarief
                        FROM   prs_v_aanwezigkenmerklink, fac_usrdata ud
                       WHERE   prs_kenmerk_key = 1000                -- Tarief
                               AND fac.safe_to_number (prs_kenmerklink_waarde) =
                                     ud.fac_usrdata_key) y
                  ON x.prs_afdeling_key = y.prs_link_key
       ORDER BY   1)
   LOOP
      BEGIN
         v_errormsg := 'Fout bij bijwerken res_rsv_ruimte_prijs';

         IF (rc.old_prijs <> rc.new_prijs)
         THEN
            UPDATE   res_rsv_ruimte rr
               SET   rr.res_rsv_ruimte_prijs = rc.new_prijs
             WHERE   rr.res_rsv_ruimte_key = rc.res_rsv_ruimte_key;

            DBMS_OUTPUT.PUT_LINE(   rc.aanduiding
                                 || 'Prijs van: '
                                 || TO_CHAR (rc.old_prijs)
                                 || ' naar: '
                                 || TO_CHAR (rc.new_prijs));
         ELSE
            DBMS_OUTPUT.PUT_LINE (rc.aanduiding || 'Prijs ongewijzigd!');
         END IF;
      EXCEPTION
         WHEN OTHERS
         THEN
            oracle_err_num := SQLCODE;
            oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
            v_errorhint := v_errormsg;
            v_errormsg :=
                  rc.aanduiding
               || '(ORACLE error '
               || oracle_err_num
               || '/'
               || oracle_err_mes
               || ')';
            DBMS_OUTPUT.PUT_LINE (
               'Error: ' || v_errormsg || '; Hint: ' || v_errorhint
            );
      END;
   END LOOP;
END;
/

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