--
-- $Id$
--
-- Script containing customer specific sql statements for the FACILITOR database

DEFINE thisfile = 'BOFO.SQL'
DEFINE dbuser   = '^BOFO'

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


CREATE OR REPLACE VIEW bofo_v_info_verkoopkamer (
   bezoekers,
   bezet,
   res_ruimte_nr,
   res_ruimte_key,
   vrij_tot,
   bezet_tot
   )
AS
   SELECT NVL (bezoekers.bez_afspraak_naam, 'geen'),
          (SELECT COUNT ( * )
           FROM res_rsv_ruimte rrr
           WHERE SYSDATE BETWEEN res_rsv_ruimte_van AND res_rsv_ruimte_tot
                 AND rrr.res_ruimte_opstel_key = ro.res_ruimte_opstel_key)
             bezet,
          res_ruimte_nr,
          rr.res_ruimte_key,
          (SELECT NVL (MIN (TO_CHAR (res_rsv_ruimte_van, 'hh24:mi')), '24:00')
           FROM res_rsv_ruimte rrr
           WHERE res_rsv_ruimte_van BETWEEN SYSDATE AND TRUNC (SYSDATE + 1)
                 AND rrr.res_ruimte_opstel_key = ro.res_ruimte_opstel_key)
             vrij_tot,
          (SELECT MIN (TO_CHAR (res_rsv_ruimte_tot, 'hh24:mi'))
           FROM res_rsv_ruimte rrr
           WHERE res_rsv_ruimte_tot BETWEEN SYSDATE AND TRUNC (SYSDATE + 1)
                 AND rrr.res_ruimte_opstel_key = ro.res_ruimte_opstel_key)
             bezet_tot
   FROM res_ruimte_opstelling ro,
        res_ruimte rr,
        (SELECT bez_afspraak_naam, res_ruimte_opstel_key
         FROM bez_bezoekers b, bez_afspraak a, res_rsv_ruimte rrr
         WHERE b.bez_afspraak_key = a.bez_afspraak_key
               AND rrr.res_rsv_ruimte_key = a.res_rsv_ruimte_key
               AND rrr.res_rsv_ruimte_van BETWEEN SYSDATE - 1 / 96
                                              AND  SYSDATE + 1 / 96) bezoekers
   WHERE ro.res_ruimte_key = rr.res_ruimte_key
         AND bezoekers.res_ruimte_opstel_key(+) = ro.res_ruimte_opstel_key;


CREATE OR REPLACE VIEW BOFO_V_RAP_ZIEKMELDING (naam
                                              ,datum_ziekmelding
                                              ,omschrijving
                                              ,opmerking
                                              ,datum_betermelding
                                              ,nummer)
AS
SELECT pf.prs_perslid_naam_full naam,
       mld_melding_datum datum_ziekmelding,
       SUBSTR (mld_melding_omschrijving, 1, 1000) omschijving,
       SUBSTR (mld_melding_opmerking, 1, 1000) opmerking,
       fac.gettrackingdate('MLDAFM', m.mld_melding_key) datum_betermelding,
       mld_melding_key nummer
FROM mld_melding m, prs_v_perslid_fullnames pf
WHERE     mld_stdmelding_key = 79  -- ziekmelding
      AND m.prs_perslid_key = pf.prs_perslid_key
      AND COALESCE (fac.gettrackingdate('MLDAFM', m.mld_melding_key), SYSDATE) > SYSDATE - 5;

-- no_show rapport met bijbehorende artikelen.
CREATE OR REPLACE VIEW bofo_v_rap_res_noshow (
   reservering,
   onderwerp,
   fclt_d_datum,
   aantal,
   omschrijving,
   prijs
   )
AS
   SELECT rrr.res_reservering_key || '/' || res_rsv_ruimte_volgnr,
          res_rsv_ruimte_omschrijving,
          TO_CHAR (res_rsv_ruimte_van, 'dd-mm-yyyy'),
          rra.res_rsv_artikel_aantal,
          ra.res_artikel_omschrijving,
          res.getartikelprijs (res_rsv_artikel_key) prijs
   FROM res_v_aanwezigrsv_artikel rra,
        res_artikel ra,
        res_v_aanwezigrsv_ruimte rrr
   WHERE     ra.res_artikel_key = rra.res_artikel_key
         AND rra.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
         AND res_rsv_ruimte_noshow = 1
   UNION ALL
   SELECT rrr.res_reservering_key || '/' || res_rsv_ruimte_volgnr,
          res_rsv_ruimte_omschrijving,
          TO_CHAR (res_rsv_ruimte_van, 'dd-mm-yyyy'),
          1,
          d.ins_deel_omschrijving,
          res.getdeelprijs (rrd.res_rsv_deel_key) prijs
   FROM res_v_aanwezigrsv_deel rrd,
        ins_deel d,
        res_deel rd,
        res_v_aanwezigrsv_ruimte rrr
   WHERE     rd.res_deel_key = rrd.res_deel_key
         AND rrd.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
         AND rd.res_ins_deel_key = d.ins_deel_key
         AND res_rsv_ruimte_noshow = 1;


CREATE OR REPLACE VIEW bofo_v_vak_recht (
   prs_perslid_key,
   vak,
   jaar
   )
AS
   SELECT prs_perslid_key,
          fac.safe_to_number (prs_kenmerklink_waarde),
          SUBSTR (prs_kenmerk_omschrijving,
                  LENGTH (prs_kenmerk_omschrijving) - 3,
                  4
          )
             jaar
   FROM prs_v_aanwezigperslid, prs_kenmerklink kl, prs_kenmerk k
   WHERE     prs_link_key = prs_perslid_key
         AND kl.prs_kenmerk_key = k.prs_kenmerk_key
         AND UPPER (k.prs_kenmerk_omschrijving) LIKE 'SALDO%VAK%';


CREATE OR REPLACE VIEW bofo_v_atv_recht (
   prs_perslid_key,
   atv,
   jaar
   )
AS
   SELECT prs_perslid_key,
          fac.safe_to_number (prs_kenmerklink_waarde),
          SUBSTR (prs_kenmerk_omschrijving,
                  LENGTH (prs_kenmerk_omschrijving) - 3,
                  4
          )
             jaar
   FROM prs_v_aanwezigperslid, prs_kenmerklink kl, prs_kenmerk k
   WHERE     prs_link_key = prs_perslid_key
         AND kl.prs_kenmerk_key = k.prs_kenmerk_key
         AND UPPER (k.prs_kenmerk_omschrijving) LIKE 'SALDO%ATV%';

CREATE OR REPLACE VIEW bofo_v_verlof_gegevens (
   mld_melding_key,
   prs_perslid_key,
   prs_afdeling_key,
   van,
   tot,
   status,
   vak,
   atv,
   bijz
   )
AS
   SELECT m.mld_melding_key,
          m.prs_perslid_key,
          p.prs_afdeling_key,
          (SELECT TO_DATE (mld_kenmerkmelding_waarde, 'dd-mm-yyyy')
           FROM mld_kenmerkmelding km
           WHERE km.mld_melding_key = m.mld_melding_key
                 AND km.mld_kenmerk_key = 121)          -- datum van
             van,
          (SELECT TO_DATE (mld_kenmerkmelding_waarde, 'dd-mm-yyyy')
           FROM mld_kenmerkmelding km
           WHERE km.mld_melding_key = m.mld_melding_key
                 AND km.mld_kenmerk_key = 122)          -- datum tot
             tot,
          mld_melding_status,
          COALESCE ( (SELECT fac.safe_to_number (mld_kenmerkmelding_waarde)
                      FROM mld_kenmerkmelding km
                      WHERE km.mld_melding_key = m.mld_melding_key
                            AND km.mld_kenmerk_key = 123),  -- vak_dagen
                    0
          )
             vak,
          COALESCE ( (SELECT fac.safe_to_number (mld_kenmerkmelding_waarde)
                      FROM mld_kenmerkmelding km
                      WHERE km.mld_melding_key = m.mld_melding_key
                            AND km.mld_kenmerk_key = 142),   -- atv dagen
                    0
          )
             atv,
          COALESCE ( (SELECT fac.safe_to_number (mld_kenmerkmelding_waarde)
                      FROM mld_kenmerkmelding km
                      WHERE km.mld_melding_key = m.mld_melding_key
                            AND km.mld_kenmerk_key = 221),   -- atv dagen
                    0
          )
             bijz
   FROM mld_melding m,
        prs_perslid p
   WHERE mld_stdmelding_key = 201
     AND m.prs_perslid_key = p.prs_perslid_key;


CREATE OR REPLACE VIEW bofo_v_verlof (
   naam,
   offset,
   prs_perslid_key,
   van,
   tot,
   status,
   vak,
   atv,
   bijz
   )
AS
   SELECT prs_perslid_naam_full,
          -1000 offset,
          p.prs_perslid_key,
          NULL van,
          NULL tot,
          'saldo 01-01-'||to_char(sysdate,'yyyy') status,
          coalesce(vak,0),
          coalesce(atv,0),
          null
   FROM bofo_v_vak_recht vr, bofo_v_atv_recht ar, prs_v_perslid_fullnames pf, prs_perslid p
   WHERE p.prs_perslid_key = pf.prs_perslid_key
     AND vr.prs_perslid_key(+) = pf.prs_perslid_key
     AND ar.prs_perslid_key(+) = pf.prs_perslid_key
     AND vr.jaar = to_char(sysdate, 'yyyy')
     AND ar.jaar = to_char(sysdate, 'yyyy')
   UNION ALL
   SELECT prs_perslid_naam_full,
          van - SYSDATE offset,
          pf.prs_perslid_key,
          van,
          tot,
          decode (to_char(m.van, 'yyyy'), to_char(m.tot, 'yyyy'),'goedgekeurd','***********'),
          -1 * fac.safe_to_number (vak),
          -1 * fac.safe_to_number (atv),
          -1 * fac.safe_to_number (bijz)
   FROM bofo_v_verlof_gegevens m, prs_v_perslid_fullnames pf
   WHERE m.prs_perslid_key = pf.prs_perslid_key AND status IN (4, 5, 6, 7)
     AND (to_char(m.van, 'yyyy') = to_char(sysdate, 'yyyy')
       OR to_char(m.tot, 'yyyy') = to_char(sysdate, 'yyyy'))
   UNION ALL
   SELECT prs_perslid_naam_full,
          van - SYSDATE offset,
          pf.prs_perslid_key,
          van,
          tot,
          decode (to_char(m.van, 'yyyy'), to_char(m.tot, 'yyyy'),'aangevraagd','***********'),
          -1 * fac.safe_to_number (vak),
          -1 * fac.safe_to_number (atv),
          -1 * fac.safe_to_number (bijz)
   FROM bofo_v_verlof_gegevens m, prs_v_perslid_fullnames pf
   WHERE m.prs_perslid_key = pf.prs_perslid_key AND status IN (2,3)
     AND (to_char(m.van, 'yyyy') = to_char(sysdate, 'yyyy')
       OR to_char(m.tot, 'yyyy') = to_char(sysdate, 'yyyy'))
   UNION ALL
   SELECT prs_perslid_naam_full,
          1000 offset,
          p.prs_perslid_key,
          NULL van,
          NULL tot,
          'huidig saldo' status,
          vak - svak,
          atv - satv,
          sbijz
   FROM bofo_v_vak_recht vr,
        bofo_v_atv_recht ar,
        prs_perslid p,
        prs_v_perslid_fullnames pf,
        (SELECT prs_perslid_key, SUM (vak) svak, SUM (atv) satv, SUM(bijz) sbijz
         FROM bofo_v_verlof_gegevens m
         WHERE status IN (4, 5, 6, 7)
           AND (to_char(m.van, 'yyyy') = to_char(sysdate, 'yyyy')
              OR to_char(m.tot, 'yyyy') = to_char(sysdate, 'yyyy'))
         GROUP BY prs_perslid_key) verbruik
   WHERE verbruik.prs_perslid_key = pf.prs_perslid_key
         AND p.prs_perslid_key = pf.prs_perslid_key
         AND vr.prs_perslid_key = pf.prs_perslid_key
         AND vr.prs_perslid_key(+) = pf.prs_perslid_key
         AND ar.prs_perslid_key(+) = pf.prs_perslid_key
         AND vr.jaar = to_char(sysdate, 'yyyy')
         AND ar.jaar = to_char(sysdate, 'yyyy');

CREATE OR REPLACE VIEW bofo_v_rap_verlof (
   fclt_f_naam,
   hide_f_offset,
   prs_perslid_key,
   van,
   tot,
   status,
   vak,
   atv,
   bijz
   )
AS
SELECT
   naam,
   offset,
   prs_perslid_key,
   van,
   tot,
   status,
   vak,
   atv,
   bijz
 FROM bofo_v_verlof;


-- rapport verlofuren voor leidinggevenden.
CREATE OR REPLACE VIEW bofo_v_rap_verlof_totaal (
   fclt_f_naam,
   [REDACTED],
   prs_perslid_key,
   begin_v,
   begin_a,
   aangevr_v,
   aangevr_a,
   goedgek_v,
   goedgek_a,
   saldo_v,
   saldo_a
   )
AS
   SELECT pf.prs_perslid_naam_full,
          fac.safe_to_number(kl.prs_kenmerklink_waarde),
          p.prs_perslid_key,
          (SELECT vak
           FROM bofo_v_verlof v
           WHERE status LIKE 'saldo%'
                 AND v.prs_perslid_key = p.prs_perslid_key)
             begin_v,
          (SELECT atv
           FROM bofo_v_verlof v
           WHERE status LIKE 'saldo%'
                 AND v.prs_perslid_key = p.prs_perslid_key)
             begin_a,
          (SELECT SUM (vak)
           FROM bofo_v_verlof v
           WHERE status = 'aangevraagd'
                 AND v.prs_perslid_key = p.prs_perslid_key)
             aangevr_v,
          (SELECT SUM (atv)
           FROM bofo_v_verlof v
           WHERE status = 'aangevraagd'
                 AND v.prs_perslid_key = p.prs_perslid_key)
             aangevr_a,
          (SELECT SUM (vak)
           FROM bofo_v_verlof v
           WHERE status = 'goedgekeurd'
                 AND v.prs_perslid_key = p.prs_perslid_key)
             goedgek_v,
          (SELECT SUM (atv)
           FROM bofo_v_verlof v
           WHERE status = 'goedgekeurd'
                 AND v.prs_perslid_key = p.prs_perslid_key)
             goedgek_a,
          (SELECT vak
           FROM bofo_v_verlof v
           WHERE status LIKE 'huidig%'
                 AND v.prs_perslid_key = p.prs_perslid_key)
             saldo_v,
          (SELECT atv
           FROM bofo_v_verlof v
           WHERE status LIKE 'huidig%'
                 AND v.prs_perslid_key = p.prs_perslid_key)
             saldo_a
   FROM prs_perslid p, prs_v_perslid_fullnames pf, prs_kenmerklink kl
   WHERE     p.prs_perslid_key = pf.prs_perslid_key
         AND p.prs_perslid_key = kl.prs_link_key
         AND kl.prs_kenmerk_key = 1040;
         -- leidinggevende


-- rapport verlofuren voor leidinggevenden.
CREATE OR REPLACE VIEW bofo_v_rap_verlof_detail (
   fclt_f_naam,
   hide_f_offset,
   [REDACTED],
   prs_perslid_key,
   van,
   tot,
   status,
   vak,
   atv,
   bijz
   )
AS
   SELECT naam,
          offset,
          fac.safe_to_number(kl.prs_kenmerklink_waarde),
          prs_perslid_key,
          TO_CHAR (van, 'dd-mm-yyyy'),
          TO_CHAR (tot, 'dd-mm-yyyy'),
          status,
          vak,
          atv,
          bijz
   FROM bofo_v_verlof v, prs_kenmerklink kl
   WHERE     v.prs_perslid_key = kl.prs_link_key
         AND kl.prs_kenmerk_key = 1040;
         -- leidinggevende

-- rapport verlofuren voor medewerker.
CREATE OR REPLACE VIEW bofo_v_rap_verlof_medew (
   fclt_f_naam,
   hide_f_offset,
   fclt_3d_user_key,
   van,
   tot,
   status,
   vak,
   atv,
   bijz
   )
AS
   SELECT naam,
          offset,
          prs_perslid_key,
          TO_CHAR (van, 'dd-mm-yyyy'),
          TO_CHAR (tot, 'dd-mm-yyyy'),
          status,
          vak,
          atv,
          bijz
   FROM bofo_v_verlof;


CREATE OR REPLACE VIEW bofo_v_noti_verlof (
   code,
   sender,
   receiver,
   text,
   key,
   xkey
   )
AS
   SELECT 'MLDINF',
          NULL,
          fac.safe_to_number(kl.prs_kenmerklink_waarde),
          'Verlofaanvraag medewerker: ' || pf.prs_perslid_naam_full,
          m.mld_melding_key,
          NULL
   FROM mld_melding m,
        prs_v_perslid_fullnames pf,
        prs_kenmerklink kl
   WHERE     m.prs_perslid_key = pf.prs_perslid_key
         AND m.mld_stdmelding_key = 201  -- verlofaanvraag
         AND m.mld_melding_status IN (2, 3)
         AND m.mld_melding_datum > SYSDATE - 1
         AND m.prs_perslid_key = kl.prs_link_key
         AND kl.prs_kenmerk_key = 1040;
         -- leidinggevende

CREATE OR REPLACE VIEW bofo_v_rap_verlof_goedkeuring (
   [REDACTED],
   mld_melding_key,
   naam,
   van,
   tot,
   vak,
   atv,
   bijz,
   omschrijving
   )
AS
   SELECT fac.safe_to_number(kl.prs_kenmerklink_waarde),
          m.mld_melding_key,
          prs_perslid_naam_full naam,
          van,
          tot,
          vak,
          atv,
          bijz,
          mld_melding_omschrijving omschrijving
   FROM bofo_v_verlof_gegevens vg, mld_melding m, prs_v_perslid_fullnames pf, prs_kenmerklink kl
   WHERE     vg.mld_melding_key = m.mld_melding_key
         AND vg.prs_perslid_key = pf.prs_perslid_key
         AND m.mld_melding_status IN (2, 3) -- ingevoerd, ingezien
         AND vg.prs_perslid_key = kl.prs_link_key
         AND kl.prs_kenmerk_key = 1040;
         -- leidinggevende


CREATE OR REPLACE VIEW bofo_v_verlof_afg_jaar (
   naam,
   offset,
   prs_perslid_key,
   van,
   tot,
   status,
   vak,
   atv,
   bijz
   )
AS
   SELECT prs_perslid_naam_full,
          -1000 offset,
          p.prs_perslid_key,
          NULL van,
          NULL tot,
          'saldo 01-01-'||to_char(sysdate-365,'yyyy') status,
          coalesce(vak,0),
          coalesce(atv,0),
          null
   FROM bofo_v_vak_recht vr, bofo_v_atv_recht ar, prs_v_perslid_fullnames pf, prs_perslid p
   WHERE p.prs_perslid_key = pf.prs_perslid_key
     AND vr.prs_perslid_key(+) = pf.prs_perslid_key
     AND ar.prs_perslid_key(+) = pf.prs_perslid_key
     AND vr.jaar = to_char(sysdate-365, 'yyyy')
     AND ar.jaar = to_char(sysdate-365, 'yyyy')
   UNION ALL
   SELECT prs_perslid_naam_full,
          van - SYSDATE offset,
          pf.prs_perslid_key,
          van,
          tot,
          decode (to_char(m.van, 'yyyy'), to_char(m.tot, 'yyyy'),'goedgekeurd','***********'),
          -1 * fac.safe_to_number (vak),
          -1 * fac.safe_to_number (atv),
          -1 * fac.safe_to_number (bijz)
   FROM bofo_v_verlof_gegevens m, prs_v_perslid_fullnames pf
   WHERE m.prs_perslid_key = pf.prs_perslid_key AND status IN (4, 5, 6, 7)
     AND (to_char(m.van, 'yyyy') = to_char(sysdate-365, 'yyyy')
       OR to_char(m.tot, 'yyyy') = to_char(sysdate-365, 'yyyy'))
   UNION ALL
   SELECT prs_perslid_naam_full,
          van - SYSDATE offset,
          pf.prs_perslid_key,
          van,
          tot,
          decode (to_char(m.van, 'yyyy'), to_char(m.tot, 'yyyy'),'aangevraagd','***********'),
          -1 * fac.safe_to_number (vak),
          -1 * fac.safe_to_number (atv),
          -1 * fac.safe_to_number (bijz)
   FROM bofo_v_verlof_gegevens m, prs_v_perslid_fullnames pf
   WHERE m.prs_perslid_key = pf.prs_perslid_key AND status IN (2,3)
     AND (to_char(m.van, 'yyyy') = to_char(sysdate-365, 'yyyy')
       OR to_char(m.tot, 'yyyy') = to_char(sysdate-365, 'yyyy'))
   UNION ALL
   SELECT prs_perslid_naam_full,
          1000 offset,
          p.prs_perslid_key,
          NULL van,
          NULL tot,
          'huidig saldo' status,
          vak - svak,
          atv - satv,
          sbijz
   FROM bofo_v_vak_recht vr,
        bofo_v_atv_recht ar,
        prs_perslid p,
        prs_v_perslid_fullnames pf,
        (SELECT prs_perslid_key, SUM (vak) svak, SUM (atv) satv, SUM(bijz) sbijz
         FROM bofo_v_verlof_gegevens m
         WHERE status IN (4, 5, 6, 7)
           AND (to_char(m.van, 'yyyy') = to_char(sysdate-365, 'yyyy')
              OR to_char(m.tot, 'yyyy') = to_char(sysdate-365, 'yyyy'))
         GROUP BY prs_perslid_key) verbruik
   WHERE verbruik.prs_perslid_key = pf.prs_perslid_key
         AND p.prs_perslid_key = pf.prs_perslid_key
         AND vr.prs_perslid_key = pf.prs_perslid_key
         AND vr.prs_perslid_key(+) = pf.prs_perslid_key
         AND ar.prs_perslid_key(+) = pf.prs_perslid_key
         AND vr.jaar = to_char(sysdate-365, 'yyyy')
         AND ar.jaar = to_char(sysdate-365, 'yyyy');

-- rapport verlofuren voor leidinggevenden.
CREATE OR REPLACE VIEW bofo_v_rap_verlof_tot_afg_jaar (
   fclt_f_naam,
   [REDACTED],
   prs_perslid_key,
   begin_v,
   begin_a,
   aangevr_v,
   aangevr_a,
   goedgek_v,
   goedgek_a,
   saldo_v,
   saldo_a
   )
AS
   SELECT pf.prs_perslid_naam_full,
          fac.safe_to_number(kl.prs_kenmerklink_waarde),
          p.prs_perslid_key,
          (SELECT vak
           FROM bofo_v_verlof_afg_jaar v
           WHERE status LIKE 'saldo%'
                 AND v.prs_perslid_key = p.prs_perslid_key)
             begin_v,
          (SELECT atv
           FROM bofo_v_verlof_afg_jaar v
           WHERE status LIKE 'saldo%'
                 AND v.prs_perslid_key = p.prs_perslid_key)
             begin_a,
          (SELECT SUM (vak)
           FROM bofo_v_verlof_afg_jaar v
           WHERE status = 'aangevraagd'
                 AND v.prs_perslid_key = p.prs_perslid_key)
             aangevr_v,
          (SELECT SUM (atv)
           FROM bofo_v_verlof_afg_jaar v
           WHERE status = 'aangevraagd'
                 AND v.prs_perslid_key = p.prs_perslid_key)
             aangevr_a,
          (SELECT SUM (vak)
           FROM bofo_v_verlof_afg_jaar v
           WHERE status = 'goedgekeurd'
                 AND v.prs_perslid_key = p.prs_perslid_key)
             goedgek_v,
          (SELECT SUM (atv)
           FROM bofo_v_verlof_afg_jaar v
           WHERE status = 'goedgekeurd'
                 AND v.prs_perslid_key = p.prs_perslid_key)
             goedgek_a,
          (SELECT vak
           FROM bofo_v_verlof_afg_jaar v
           WHERE status LIKE 'huidig%'
                 AND v.prs_perslid_key = p.prs_perslid_key)
             saldo_v,
          (SELECT atv
           FROM bofo_v_verlof_afg_jaar v
           WHERE status LIKE 'huidig%'
                 AND v.prs_perslid_key = p.prs_perslid_key)
             saldo_a
   FROM prs_perslid p, prs_v_perslid_fullnames pf, prs_kenmerklink kl
   WHERE     p.prs_perslid_key = pf.prs_perslid_key
         AND p.prs_perslid_key = kl.prs_link_key
         AND kl.prs_kenmerk_key = 1040;
         -- leidinggevende


CREATE OR REPLACE VIEW bofo_v_rap_verlof_afg_jaar (
   fclt_f_naam,
   hide_f_offset,
   prs_perslid_key,
   van,
   tot,
   status,
   vak,
   atv,
   bijz
   )
AS
SELECT
   naam,
   offset,
   prs_perslid_key,
   van,
   tot,
   status,
   vak,
   atv,
   bijz
 FROM bofo_v_verlof_afg_jaar;


CREATE OR REPLACE PACKAGE BOFO AS
  -- PACKAGES voor de BOFO specifieke rapportages
  TYPE t_cursor IS REF CURSOR;
  FUNCTION vt (p_offset IN number, p_prs_perslid_key IN NUMBER) RETURN VARCHAR2;
  PROCEDURE rap_verlof_overzicht (user_key IN NUMBER, p_datum_van IN VARCHAR2, p_datum_tot IN VARCHAR2, p_cursor OUT t_cursor);
 END;
/

CREATE OR REPLACE PACKAGE BODY BOFO
AS
   -- Bepaal de of een persoon verlof aangevraagd heeft op deze datum.
   FUNCTION vt (p_offset IN number, p_prs_perslid_key IN number)
      RETURN VARCHAR2
   IS
      v_result              VARCHAR2 (100);
      v_day_of_week         VARCHAR2 (3);
   BEGIN
      v_day_of_week   := TO_CHAR (TRUNC (SYSDATE) + p_offset, 'd');

      SELECT v_day_of_week || '-' || NVL (MAX (status), 'geen')
      INTO v_result
      FROM bofo_v_rap_verlof v
      WHERE v.prs_perslid_key = p_prs_perslid_key
            AND TRUNC (SYSDATE) + p_offset BETWEEN van AND tot;
      RETURN v_result;
   END vt;

   PROCEDURE rap_verlof_overzicht (user_key IN number,
                                   p_datum_van IN varchar2 -- Let wel: formaat '13-05-2005'
                                                          ,
                                   p_datum_tot IN varchar2,
                                   p_cursor OUT t_cursor
   )
   AS
      v_datum_van   DATE;
      v_datum_tot   DATE;
      v_query_st    VARCHAR2 (4000);
      v_query       VARCHAR2 (4000);
      v_query_end   VARCHAR2 (4000);
      v_loop_date   DATE;
      v_count       NUMBER;
   BEGIN
      v_datum_van   := fac.safe_to_date (p_datum_van, 'dd-mm-yyyy');
      v_datum_tot   := fac.safe_to_date (p_datum_tot, 'dd-mm-yyyy') + 1;

     -- we ondersteunen een interval van max 95 dagen. Anders past de query niet meer in de variabele
      IF v_datum_tot - v_datum_van > 95
      THEN
         v_datum_tot   := v_datum_van + 95;
      END IF;

      v_query       := '';
      v_query_st    := 'SELECT pf.prs_perslid_naam_full naam, prs_afdeling_omschrijving afd ';
      v_loop_date   := v_datum_van;
      v_count       := v_datum_van - TRUNC (SYSDATE);

      WHILE v_loop_date < v_datum_tot
      LOOP
         v_query       :=
               v_query
            || ' ,bofo.vt ('
            || v_count
            || ', p.prs_perslid_key) d'
            || TO_CHAR (SYSDATE + v_count, 'mmdd');
         v_loop_date   := v_loop_date + 1;
         v_count       := v_count + 1;
      END LOOP;

      v_query_end := ' FROM prs_v_perslid_fullnames pf, prs_perslid p, prs_afdeling a WHERE pf.prs_perslid_key = p.prs_perslid_key AND a.prs_afdeling_key = p.prs_afdeling_key';

      OPEN p_cursor FOR v_query_st || v_query || v_query_end;
   END rap_verlof_overzicht;
END;
/

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

COMMIT;
SET ECHO OFF
SPOOL OFF
SET DEFINE ON
PROMPT Logfile of this upgrade is: &fcltlogfile
