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

DEFINE thisfile = 'VEST.SQL'
DEFINE dbuser   = '^VEST'
DEFINE custid   = 'VEST'

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

------ payload begin ------

--
-- Personen import
--

CREATE OR REPLACE PROCEDURE vest_import_perslid (p_import_key IN NUMBER)
AS
   oracle_err_num            NUMBER;
   oracle_err_mes            VARCHAR2 (200);
   v_errormsg                VARCHAR2 (400);
   v_errorhint               VARCHAR2 (400);
   v_newline                 FAC_IMP_FILE.FAC_IMP_FILE_LINE%TYPE;
   
   
CURSOR c1 IS
    SELECT DISTINCT p.prs_afdeling_naam afdeling, i.prs_afdeling_naam
      FROM prs_afdeling p, fac_imp_perslid i
     WHERE     i.prs_afdeling_naam =
               SUBSTR (p.prs_afdeling_omschrijving, 1, 15)
           AND p.prs_afdeling_verwijder IS NULL;
           
CURSOR c2 IS
    SELECT DISTINCT f.alg_locatie_code, l.alg_locatie_code locatie
    FROM fac_imp_perslid f, alg_locatie l
    WHERE f.alg_locatie_code = l.alg_locatie_omschrijving;
    
BEGIN
   BEGIN
      SELECT fac_imp_file_line
        INTO v_newline
        FROM fac_imp_file
       WHERE fac_import_key = p_import_key
         AND fac_imp_file_index = 1;

      IF v_newline LIKE
                  CHR (TO_NUMBER ('EF', 'xx'))
               || CHR (TO_NUMBER ('BB', 'xx'))
               || CHR (TO_NUMBER ('BF', 'xx'))
               || '%'
      THEN
         -- EF BB BF aangetroffen
         fac.imp_writelog (p_import_key,
                           'W',
                           'Byte Order Mark aangetroffen',
                           'Bestand heeft onbehandeld UTF-8 formaat.'
                          );
         v_newline := SUBSTR (v_newline, 4);
      END IF;

      -- Verwijder de dubbele quotes
      v_newline := REPLACE (v_newline, '"');

      UPDATE fac_imp_file
         SET fac_imp_file_line = v_newline
       WHERE fac_import_key = p_import_key
         AND fac_imp_file_index = 1;


   EXCEPTION WHEN OTHERS
   THEN
      fac.imp_writelog (p_import_key,
                        'E',
                        'Fout bij controle op Byte Order Mark',
                        ''
                       );
   END;


   v_errorhint := 'Generieke update';
   -- de sequence array staat beschreven in PRS_PAC.SRC bij de prs.import_perslid proc
   prs.import_perslid (p_import_key,
                       '13;14;15;16;0;0;6;1;3;2;' ||
                       '0;0;0;0;9;10;11;5;0;12;' ||
                       '7;4;0;8;0;0;0;0;0;0;'||
                       '0;0;0;0;0;0;0;0;0;0;'||
                       '0;0;0;0;0;0',
                       'Achternaam;Voornaam;Tussenvoegsel;SamAccountName;Email;Afdeling;Functie;Titel/Aanhef;Geslacht;Telefoonnummer;Mobiel nummer;Personeelsnummer;Locatie;Gebouw;Verdieping;Ruimte%'
                       );

  FOR rec IN c2
   LOOP
    BEGIN
     UPDATE fac_imp_perslid
     SET alg_locatie_code = rec.locatie
     WHERE alg_locatie_code = rec.alg_locatie_code;
    END;
   END LOOP;

UPDATE fac_imp_perslid
SET alg_gebouw_code = '001'
WHERE fac_imp_perslid.alg_locatie_code LIKE '%AMS%';

UPDATE fac_imp_perslid
SET alg_verdieping_volgnr = '0'
WHERE fac_imp_perslid.alg_locatie_code LIKE '%AMS%';

UPDATE fac_imp_perslid
SET alg_ruimte_nr = '001'
WHERE fac_imp_perslid.alg_locatie_code LIKE '%AMS%';
           
 FOR rec IN c1
    LOOP
     BEGIN
        UPDATE fac_imp_perslid
           SET prs_afdeling_naam = rec.afdeling
         WHERE prs_afdeling_naam = rec.prs_afdeling_naam;
       END;
    END LOOP;

DELETE FROM fac_imp_perslid
WHERE alg_locatie_code NOT IN (SELECT alg_locatie_code FROM alg_locatie);

  COMMIT;
EXCEPTION
   WHEN OTHERS
   THEN
      oracle_err_num := SQLCODE;
      oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
      v_errormsg := 'Error ' || oracle_err_num || '/' || oracle_err_mes;
      fac.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint);
END vest_import_perslid;
/

CREATE OR REPLACE PROCEDURE vest_update_perslid (
   p_import_key IN NUMBER
) IS
  -- Alle personen verwijderen die niet meer in import bestand voorkomen.
  CURSOR c_del
  IS
    SELECT p.prs_perslid_key, p.prs_perslid_email
    FROM prs_perslid p
    WHERE   p.prs_perslid_verwijder IS NULL
        AND p.prs_perslid_oslogin IS NULL
        AND p.prs_perslid_email IS NOT NULL
        AND NOT EXISTS
                (SELECT 'x'
                    FROM fac_imp_perslid i
                    WHERE UPPER(p.prs_perslid_email) = UPPER(i.prs_perslid_email));

  v_count           NUMBER;

BEGIN
    -- generic update

    SELECT count(*)
      INTO v_count
      FROM fac_imp_perslid;

    IF v_count < 150
    THEN
      fac.imp_writelog (p_import_key,
                        'E',
                        'Het aantal te importeren personen is te klein ('
                        || TO_CHAR (v_count) || ')',
                        'Zie Specificatie'
      );
      RETURN;
    END IF;

  -- 'LOGIN' betekent dat op basis van oslogin wordt gematched.
  -- 'A' betekent altijd alle (andere/overige) werkplekken verwijderen
  prs.update_perslid (p_import_key, 'EMAIL', NULL);

  -- Verwijder personen die niet meer in de import voorkomen.
  FOR rec IN c_del
  LOOP
     BEGIN
       prs.delete_perslid (p_import_key, rec.prs_perslid_key);
     END;
  END LOOP;

END vest_update_perslid;
/

CREATE OR REPLACE VIEW VEST_V_RAP_CATERINGDAGLIJST
(
   RESKEY,
   FCLT_F_DATUM,
   RESNR,
   VAN,
   TOT,
   FCLT_F_RUIMTE,
   FCLT_F_CATALOGUS,
   LEVERING,
   VOORZIENING,
   AANTAL,
   OPMERKING,
   AANTAL_PERS,
   FCLT_F_GASTHEER_VROUW
)
AS
   SELECT rr.res_rsv_ruimte_key,
          rr.res_rsv_ruimte_van,
          rr.res_reservering_key || '/' || rr.res_rsv_ruimte_volgnr,
          TO_CHAR (rr.res_rsv_ruimte_van, 'hh24:mi'),
          TO_CHAR (rr.res_rsv_ruimte_tot, 'hh24:mi'),
          r.alg_ruimte_nr || ' ' || r.alg_ruimte_omschrijving,
          rd.ins_discipline_omschrijving,
          TO_CHAR (rra.res_rsv_artikel_levering, 'hh24:mi'),
          TRIM (ra.res_artikel_omschrijving),
          rra.res_rsv_artikel_aantal,
          rr.res_rsv_ruimte_opmerking,
          rr.res_rsv_ruimte_bezoekers,
          prs_perslid_naam_full
     FROM res_rsv_ruimte rr,
          alg_ruimte r,
          res_artikel ra,
          res_rsv_artikel rra,
          prs_v_perslid_fullnames ppf,
          res_reservering re,
          res_discipline rd
    WHERE     rr.alg_ruimte_key = r.alg_ruimte_key
          AND rra.res_rsv_ruimte_key = rr.res_rsv_ruimte_key
          AND rra.res_artikel_key = ra.res_artikel_key
          AND rr.res_rsv_ruimte_contact_key = ppf.prs_perslid_key
          AND rr.res_rsv_ruimte_host_key = ppf.prs_perslid_key
          AND ra.res_discipline_key = rd.ins_discipline_key
          AND re.res_reservering_key = rr.res_reservering_key
          AND re.res_reservering_verwijder IS NULL;
          
CREATE OR REPLACE VIEW vest_v_rap_mahler
(
   mld_key,
   datum,
   maand_uitgifte,
   datum_uitgifte,
   stempelnummer,
   uitgegeven_aan,      -- Afhankelijk van wel/niet extern, anders prs_perslid
   bezoeker_van,
   inrijdtijd,
   uitrijdtijd,
   toelichting
)
AS
   SELECT m.mld_melding_key,
          TRUNC (m.mld_melding_datum),
          (SELECT TO_CHAR (TO_DATE (mld_kenmerkmelding_waarde, 'DD-MM-YYYY'),
                           'YYYY-MM')
             FROM mld_kenmerkmelding km, mld_kenmerk k
            WHERE     km.mld_kenmerk_key = k.mld_kenmerk_key
                  AND km.mld_melding_key = m.mld_melding_key
                  AND k.mld_srtkenmerk_key = 21)
             maand_uitgifte,
          (SELECT TO_DATE (mld_kenmerkmelding_waarde, 'DD-MM-YYYY')
             FROM mld_kenmerkmelding km, mld_kenmerk k
            WHERE     km.mld_kenmerk_key = k.mld_kenmerk_key
                  AND km.mld_melding_key = m.mld_melding_key
                  AND k.mld_srtkenmerk_key = 21)
             datum_uitgifte,
          (SELECT mld_kenmerkmelding_waarde
             FROM mld_kenmerkmelding km, mld_kenmerk k
            WHERE     km.mld_kenmerk_key = k.mld_kenmerk_key
                  AND km.mld_melding_key = m.mld_melding_key
                  AND k.mld_srtkenmerk_key = 1)
             stempelnummer,
          COALESCE (
             (SELECT mld_kenmerkmelding_waarde
                FROM mld_kenmerkmelding km, mld_kenmerk k
               WHERE     km.mld_kenmerk_key = k.mld_kenmerk_key
                     AND km.mld_melding_key = m.mld_melding_key
                     AND k.mld_srtkenmerk_key = 22),
             (SELECT p.prs_perslid_naam_friendly
                FROM PRS_V_PERSLID_FULLNAMES_ALL p
               WHERE p.prs_perslid_key =
                        (SELECT fac.safe_to_number (
                                   mld_kenmerkmelding_waarde)
                           FROM mld_kenmerkmelding km, mld_kenmerk k
                          WHERE     km.mld_kenmerk_key = k.mld_kenmerk_key
                                AND km.mld_melding_key = m.mld_melding_key
                                AND k.mld_srtkenmerk_key = 184)))
             uitgegeven_aan,
          COALESCE (
             (SELECT mld_kenmerkmelding_waarde
                FROM mld_kenmerkmelding km, mld_kenmerk k
               WHERE     km.mld_kenmerk_key = k.mld_kenmerk_key
                     AND km.mld_melding_key = m.mld_melding_key
                     AND k.mld_srtkenmerk_key = 23),
             'Vesteda')
             bezoeker_van,
          (SELECT mld_kenmerkmelding_waarde
             FROM mld_kenmerkmelding km, mld_kenmerk k
            WHERE     km.mld_kenmerk_key = k.mld_kenmerk_key
                  AND km.mld_melding_key = m.mld_melding_key
                  AND k.mld_srtkenmerk_key = 24)
             inrijdtijd,
          (SELECT mld_kenmerkmelding_waarde
             FROM mld_kenmerkmelding km, mld_kenmerk k
            WHERE     km.mld_kenmerk_key = k.mld_kenmerk_key
                  AND km.mld_melding_key = m.mld_melding_key
                  AND k.mld_srtkenmerk_key = 25)
             uitrijdtijd,
          m.mld_melding_omschrijving toelichting
     FROM mld_melding m
    WHERE m.mld_stdmelding_key = 302;
    
CREATE OR REPLACE VIEW vest_v_rap_kluistoegang
(
   datum,
   bevoegd_persoon_1,
   bevoegd_persoon_2,
   datum_toegang,
   reden_toegang,
   maand
)
AS
   SELECT m.mld_melding_datum,
          (SELECT pf.prs_perslid_naam_friendly
             FROM prs_v_perslid_fullnames pf
            WHERE pf.prs_perslid_key =
                     (SELECT mld_kenmerkmelding_waarde
                        FROM mld_kenmerkmelding km, mld_kenmerk k
                       WHERE     km.mld_kenmerk_key = k.mld_kenmerk_key
                             AND km.mld_melding_key = m.mld_melding_key
                             AND k.mld_srtkenmerk_key = 41))
             bp1,
          (SELECT pf.prs_perslid_naam_friendly
             FROM prs_v_perslid_fullnames pf
            WHERE pf.prs_perslid_key =
                     (SELECT mld_kenmerkmelding_waarde
                        FROM mld_kenmerkmelding km, mld_kenmerk k
                       WHERE     km.mld_kenmerk_key = k.mld_kenmerk_key
                             AND km.mld_melding_key = m.mld_melding_key
                             AND k.mld_srtkenmerk_key = 42))
             bp2,
          (SELECT mld_kenmerkmelding_waarde
             FROM mld_kenmerkmelding km, mld_kenmerk k
            WHERE     km.mld_kenmerk_key = k.mld_kenmerk_key
                  AND km.mld_melding_key = m.mld_melding_key
                  AND k.mld_srtkenmerk_key = 44)
             datum_toegang,
          (SELECT mld_kenmerkmelding_waarde
             FROM mld_kenmerkmelding km, mld_kenmerk k
            WHERE     km.mld_kenmerk_key = k.mld_kenmerk_key
                  AND km.mld_melding_key = m.mld_melding_key
                  AND k.mld_srtkenmerk_key = 43)
             reden_toegang,
          TO_CHAR (m.mld_melding_datum, 'MM-YYYY') maand
     FROM mld_melding m
    WHERE m.mld_stdmelding_key = 101;
    
CREATE OR REPLACE VIEW vest_v_rap_wf_progress
(
   wf,
   melding_key,
   melding_datum,
   melding_onderwerp,
   melding_status,
   melding_behandelaar,
   max_stap_melding_key,
   max_stap_melding_datum,
   max_stap_melding_onderwerp,
   max_stap_melding_status,
   max_stap_melding_behandelaar,
   max_stap_stdmelding_key,
   max_stap_stdmelding_oms,
   melder,
   melder_afdeling_code,
   melder_afdeling_oms
)
AS
   SELECT (SELECT mld_workflowstep_omschrijving FROM mld_workflowstep WHERE mld_workflowstep_key = x.mld_workflowstep_key)
             wf,
          x.mld_melding_key,
          x.mld_melding_datum,
          x.mld_melding_onderwerp,
          x.mld_statuses_omschrijving melding_status,
          (SELECT prs_perslid_naam_full FROM prs_v_perslid_fullnames_all WHERE prs_perslid_key = x.mld_melding_behandelaar_key)
             melding_behandelaar,
          stap.mld_melding_key max_stap_melding_key,
          stap.mld_melding_datum max_stap_melding_datum,
          stap.mld_melding_onderwerp max_stap_melding_onderwerp,
          stap.mld_statuses_omschrijving max_stap_melding_status,
          (SELECT prs_perslid_naam_full FROM prs_v_perslid_fullnames_all WHERE prs_perslid_key = stap.mld_melding_behandelaar_key)
             max_stap_melding_behandelaar,
          stap.mld_stdmelding_key max_stap_stdmelding_key,
          stap.mld_stdmelding_omschrijving max_stap_stdmelding_oms,
          (SELECT prs_perslid_naam_full FROM prs_v_perslid_fullnames_all WHERE prs_perslid_key = x.prs_perslid_key)
             melder,
          x.prs_afdeling_naam,
          x.prs_afdeling_omschrijving
     FROM    (SELECT m.mld_melding_key,
                     m.mld_melding_datum,
                     m.mld_melding_onderwerp,
                     ms.mld_statuses_omschrijving,
                     m.mld_melding_behandelaar_key,
                     m.mld_workflowstep_key,
                     p.prs_perslid_key,
                     a.prs_afdeling_naam,
                     a.prs_afdeling_omschrijving
                FROM mld_melding m, mld_statuses ms, prs_perslid p, prs_afdeling a
               WHERE m.mld_melding_status = ms.mld_statuses_key
                     AND m.prs_perslid_key = p.prs_perslid_key
                     AND p.prs_afdeling_key = a.prs_afdeling_key) x
          LEFT JOIN
             (SELECT m.mld_melding_start_key,
                     m.mld_melding_key,
                     m.mld_melding_datum,
                     m.mld_melding_onderwerp,
                     ms.mld_statuses_omschrijving,
                     m.mld_melding_behandelaar_key,
                     sm.mld_stdmelding_key,
                     sm.mld_stdmelding_omschrijving
                FROM mld_melding m, mld_statuses ms, mld_stdmelding sm
               WHERE m.mld_workflowstep_key IS NOT NULL -- Beschouw alleen WF-stappen
                     AND m.mld_melding_status = ms.mld_statuses_key
                     AND m.mld_stdmelding_key = sm.mld_stdmelding_key) stap
          ON x.mld_melding_key = stap.mld_melding_start_key;
          
CREATE OR REPLACE VIEW vest_v_ins_qrc_mld
AS
   SELECT i.ins_deel_omschrijving hide_f_sort,
          l.alg_locatie_code||' '||l.alg_locatie_omschrijving fclt_f_locatie,
          o.alg_gebouw_omschrijving fclt_f_gebouw,
          o.alg_plaatsaanduiding fclt_f_plaats,
          d.ins_discipline_omschrijving fclt_f_discipline,
          g.ins_srtgroep_omschrijving fclt_f_objectgroep,
          s.ins_srtdeel_omschrijving fclt_f_objectsoort,
          i.ins_deel_omschrijving fclt_f_identificatie,
          d.ins_discipline_omschrijving||' / '||sm.mld_stdmelding_omschrijving fclt_f_melding,
          i.ins_deel_key,
          s.ins_srtdeel_key,
          o.alg_gebouw_code,
          o.alg_verdieping_code,
          i.ins_discipline_key fclt_3d_discipline_key,
          l.alg_locatie_key fclt_3d_locatie_key,
          i.ins_alg_ruimte_type,
          i.ins_alg_ruimte_key,
          b.fac_bookmark_id hide_f_bookmark_id
     FROM ins_deel i,
          ins_v_alg_overzicht o,
          ins_srtdeel s,
          ins_srtgroep g,
          ins_discipline d,
          alg_locatie l,
          fac_bookmark b,
          mld_stdmelding sm,
          mld_stdmelding_srtinst si
    WHERE b.fac_bookmark_naam = 'QRC_MELDING'
      AND (b.fac_bookmark_expire IS NULL OR b.fac_bookmark_expire > SYSDATE)
      AND ins_deel_verwijder IS NULL
      AND i.ins_deel_module = 'INS'
      AND i.ins_deel_parent_key IS NULL
      AND s.ins_srtdeel_key = i.ins_srtdeel_key
      AND g.ins_srtgroep_key = s.ins_srtgroep_key
      AND d.ins_discipline_key = g.ins_discipline_key
      AND o.alg_onroerendgoed_keys = i.ins_alg_ruimte_key
      AND o.alg_onroerendgoed_type = i.ins_alg_ruimte_type
      AND i.ins_alg_ruimte_type IN ('T', 'R', 'W')
      AND o.alg_locatie_key = i.ins_alg_locatie_key
      AND i.ins_alg_locatie_key = l.alg_locatie_key
      AND sm.mld_stdmelding_key = si.mld_stdmelding_key
      AND si.ins_srtinstallatie_key = DECODE(si.ins_srtinstallatie_niveau,
                                      'S', i.ins_srtdeel_key,
                                      'G', s.ins_srtgroep_key,
                                      'D', g.ins_discipline_key);
                                      
CREATE OR REPLACE VIEW vest_v_rap_uitleen
(
   HIDE_F_REFKEY,
   HIDE_F_FAC_TRACKING_DATUM,
   INS_DEEL_KEY,
   OBJECTSOORT,
   OBJECT,
   UITGELEEND_AAN,
   IN_UIT,
   TRACKING_DATUM
)
AS
   SELECT t.fac_tracking_refkey sort_refkey,
          t.fac_tracking_datum sort_datum,
          d.ins_deel_key,
          i.ins_srtdeel_omschrijving,
          d.ins_deel_omschrijving,
          DECODE (
             t.fac_srtnotificatie_key,
             108,
             SUBSTR (REPLACE (fac_tracking_oms, CHR (10), ''),
                     ( (INSTR (fac_tracking_oms, 'is uitgegeven aan')) + 18)),
             NULL)
             uitgeleend_aan,
          DECODE (fac_srtnotificatie_key,
                  108, 'Uitgifte datum: ',
                  'Inname datum: ')
             In_uit,
          fac_tracking_datum
     FROM fac_tracking t, ins_deel d, ins_srtdeel i
    WHERE     fac_srtnotificatie_key IN (108, 110)
          AND t.fac_tracking_refkey = d.ins_deel_key
          AND d.ins_srtdeel_key = i.ins_srtdeel_key;
          
CREATE OR REPLACE VIEW vest_v_rap_parkeer
(
   ins_deel_key,
   locatie,
   identificatie,
   eigenaar,
   kenteken,
   van,
   tot,
   bedrag,
   factuurdatum
)
AS
   SELECT i.ins_deel_key,
          al.alg_locatie_omschrijving,
          i.ins_deel_omschrijving,
          (SELECT d.ins_kenmerkdeel_waarde
             FROM ins_kenmerkdeel d, ins_kenmerk k
            WHERE     i.ins_deel_key = d.ins_deel_key
                  AND k.ins_kenmerk_key = d.ins_kenmerk_key
                  AND k.ins_srtkenmerk_key = 42)
             eigenaar,
          (SELECT d.ins_kenmerkdeel_waarde
             FROM ins_kenmerkdeel d, ins_kenmerk k
            WHERE     i.ins_deel_key = d.ins_deel_key
                  AND k.ins_kenmerk_key = d.ins_kenmerk_key
                  AND k.ins_srtkenmerk_key = 44)
             kenteken,
          (SELECT d.ins_kenmerkdeel_waarde
             FROM ins_kenmerkdeel d, ins_kenmerk k
            WHERE     i.ins_deel_key = d.ins_deel_key
                  AND k.ins_kenmerk_key = d.ins_kenmerk_key
                  AND k.ins_srtkenmerk_key = 46)
             van,
          (SELECT d.ins_kenmerkdeel_waarde
             FROM ins_kenmerkdeel d, ins_kenmerk k
            WHERE     i.ins_deel_key = d.ins_deel_key
                  AND k.ins_kenmerk_key = d.ins_kenmerk_key
                  AND k.ins_srtkenmerk_key = 45)
             tot,
          (SELECT d.ins_kenmerkdeel_waarde
             FROM ins_kenmerkdeel d, ins_kenmerk k
            WHERE     i.ins_deel_key = d.ins_deel_key
                  AND k.ins_kenmerk_key = d.ins_kenmerk_key
                  AND k.ins_srtkenmerk_key = 41)
             bedrag,
          (SELECT d.ins_kenmerkdeel_waarde
             FROM ins_kenmerkdeel d, ins_kenmerk k
            WHERE     i.ins_deel_key = d.ins_deel_key
                  AND k.ins_kenmerk_key = d.ins_kenmerk_key
                  AND k.ins_srtkenmerk_key = 43)
             factuurdatum
     FROM ins_deel i,
          alg_ruimte ar,
          alg_verdieping av,
          alg_gebouw ag,
          alg_locatie al
    WHERE     i.ins_srtdeel_key = 41
          AND i.ins_deel_verwijder IS NULL
          AND i.ins_alg_ruimte_key = ar.alg_ruimte_key
          AND i.ins_alg_ruimte_type = 'R'
          AND ar.alg_verdieping_key = av.alg_verdieping_key
          AND av.alg_gebouw_key = ag.alg_gebouw_key
          AND ag.alg_locatie_key = al.alg_locatie_key;
          
CREATE OR REPLACE VIEW VEST_V_THEMA_VENDING
(
   INS_DEEL_KEY,
   ALG_RUIMTE_KEY,
   WAARDE
)
AS
   SELECT ins_deel_key,
          ins_alg_ruimte_key,
          DECODE (
             (SELECT COUNT ( * )
                FROM mld_melding m, mld_melding_object mo
               WHERE     m.mld_melding_key = mo.mld_melding_key
                     AND mo.ins_deel_key = d.ins_deel_key
                     AND mld_melding_status IN (0, 2, 3, 4, 7, 99)),
             0,
             'Normaal',
             'Defect')
             ins_status
     FROM ins_deel d
    WHERE ins_discipline_key = 183;
    
CREATE OR REPLACE VIEW VEST_V_THEMA_GEBOUW
(
   INS_DEEL_KEY,
   ALG_RUIMTE_KEY,
   WAARDE
)
AS
   SELECT ins_deel_key,
          ins_alg_ruimte_key,
          DECODE (
             (SELECT COUNT ( * )
                FROM mld_melding m, mld_melding_object mo
               WHERE     m.mld_melding_key = mo.mld_melding_key
                     AND mo.ins_deel_key = d.ins_deel_key
                     AND mld_melding_status IN (0, 2, 3, 4, 7, 99)),
             0,
             'Normaal',
             'Defect')
             ins_status
     FROM ins_deel d
    WHERE ins_discipline_key = 184;
    
CREATE OR REPLACE VIEW VEST_V_THEMA_ICT
(
   INS_DEEL_KEY,
   ALG_RUIMTE_KEY,
   WAARDE
)
AS
   SELECT ins_deel_key,
          ins_alg_ruimte_key,
          DECODE (
             (SELECT COUNT ( * )
                FROM mld_melding m, mld_melding_object mo
               WHERE     m.mld_melding_key = mo.mld_melding_key
                     AND mo.ins_deel_key = d.ins_deel_key
                     AND mld_melding_status IN (0, 2, 3, 4, 7, 99)),
             0,
             'Normaal',
             'Defect')
             ins_status
     FROM ins_deel d
    WHERE ins_discipline_key = 186;
    
CREATE OR REPLACE VIEW VEST_V_THEMA_INVENTARIS
(
   INS_DEEL_KEY,
   ALG_RUIMTE_KEY,
   WAARDE
)
AS
   SELECT ins_deel_key,
          ins_alg_ruimte_key,
          DECODE (
             (SELECT COUNT ( * )
                FROM mld_melding m, mld_melding_object mo
               WHERE     m.mld_melding_key = mo.mld_melding_key
                     AND mo.ins_deel_key = d.ins_deel_key
                     AND mld_melding_status IN (0, 2, 3, 4, 7, 99)),
             0,
             'Normaal',
             'Defect')
             ins_status
     FROM ins_deel d
    WHERE ins_discipline_key = 182;
    
CREATE OR REPLACE VIEW VEST_V_THEMA_VEILIGHEID
(
   INS_DEEL_KEY,
   ALG_RUIMTE_KEY,
   WAARDE
)
AS
   SELECT ins_deel_key,
          ins_alg_ruimte_key,
          DECODE (
             (SELECT COUNT ( * )
                FROM mld_melding m, mld_melding_object mo
               WHERE     m.mld_melding_key = mo.mld_melding_key
                     AND mo.ins_deel_key = d.ins_deel_key
                     AND mld_melding_status IN (0, 2, 3, 4, 7, 99)),
             0,
             'Normaal',
             'Defect')
             ins_status
     FROM ins_deel d
    WHERE ins_discipline_key = 181;

CREATE OR REPLACE VIEW vest_v_wpl_pstatus
(
   perslid_key,
   voornaam,
   naam,
   tussenvoegsel,
   voorletters,
   email,
   telefoonnr,
   mobiel,
   oslogin,
   kostenplaats,
   afdeling,
   functie,
   budget,
   extra_budget,
   totaal_budget,
   declaratie_concept,
   declaratie_definitief,
   h2w_concept,
   h2w_definitief,
   totaal_concept,
   totaal_definitief,
   restbudget,
   budget_verval
)
AS
   SELECT p.prs_perslid_key,
          p.prs_perslid_voornaam,
          p.prs_perslid_naam,
          p.prs_perslid_tussenvoegsel,
          p.prs_perslid_voorletters,
          p.prs_perslid_email,
          p.prs_perslid_telefoonnr,
          p.prs_perslid_mobiel,
          p.prs_perslid_oslogin,
          k.prs_kostenplaats_omschrijving,
          a.prs_afdeling_naam,
          f.prs_srtperslid_omschrijving,
          (SELECT fac.safe_to_number (ud.fac_usrdata_prijs)
             FROM prs_kenmerklink kml,
                  prs_kenmerk km,
                  fac_kenmerkdomein kd,
                  fac_usrdata ud
            WHERE     kml.prs_link_key = p.prs_perslid_key
                  AND kml.prs_kenmerk_key = km.prs_kenmerk_key
                  AND km.fac_kenmerkdomein_key = kd.fac_kenmerkdomein_key
                  AND kd.fac_usrtab_key = ud.fac_usrtab_key
                  AND fac.safe_to_number (kml.prs_kenmerklink_waarde) =
                        ud.fac_usrdata_key
                  AND kml.prs_kenmerk_key = 1001)       --Kenmerk extra_budget
             budget,
          (SELECT fac.safe_to_number (ud.fac_usrdata_prijs)
             FROM prs_kenmerklink kml,
                  prs_kenmerk km,
                  fac_kenmerkdomein kd,
                  fac_usrdata ud
            WHERE     kml.prs_link_key = p.prs_perslid_key
                  AND kml.prs_kenmerk_key = km.prs_kenmerk_key
                  AND km.fac_kenmerkdomein_key = kd.fac_kenmerkdomein_key
                  AND kd.fac_usrtab_key = ud.fac_usrtab_key
                  AND fac.safe_to_number (kml.prs_kenmerklink_waarde) =
                        ud.fac_usrdata_key
                  AND kml.prs_kenmerk_key = 1002)       --Kenmerk extra_budget
             extra_budget,
          COALESCE (
             (SELECT fac.safe_to_number (ud.fac_usrdata_prijs)
                FROM prs_kenmerklink kml,
                     prs_kenmerk km,
                     fac_kenmerkdomein kd,
                     fac_usrdata ud
               WHERE     kml.prs_link_key = p.prs_perslid_key
                     AND kml.prs_kenmerk_key = km.prs_kenmerk_key
                     AND km.fac_kenmerkdomein_key = kd.fac_kenmerkdomein_key
                     AND kd.fac_usrtab_key = ud.fac_usrtab_key
                     AND fac.safe_to_number (kml.prs_kenmerklink_waarde) =
                           ud.fac_usrdata_key
                     AND kml.prs_kenmerk_key = 1002),
             0)
          + COALESCE (
               (SELECT fac.safe_to_number (ud.fac_usrdata_prijs)
                  FROM prs_kenmerklink kml,
                       prs_kenmerk km,
                       fac_kenmerkdomein kd,
                       fac_usrdata ud
                 WHERE kml.prs_link_key = p.prs_perslid_key
                       AND kml.prs_kenmerk_key = km.prs_kenmerk_key
                       AND km.fac_kenmerkdomein_key =
                             kd.fac_kenmerkdomein_key
                       AND kd.fac_usrtab_key = ud.fac_usrtab_key
                       AND fac.safe_to_number (kml.prs_kenmerklink_waarde) =
                             ud.fac_usrdata_key
                       AND kml.prs_kenmerk_key = 1001),
               0)
             AS totaal_budget,
          (SELECT COALESCE (SUM (kmm.mld_kenmerkmelding_waarde), 0)
             FROM mld_kenmerkmelding kmm,
                  mld_kenmerk km,
                  mld_melding m,
                  mld_srtkenmerk sk
            WHERE     m.mld_melding_key = kmm.mld_melding_key
                  AND km.mld_kenmerk_key = kmm.mld_kenmerk_key
                  AND p.prs_perslid_key = m.prs_perslid_key_voor
                  AND km.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
                  AND sk.mld_srtkenmerk_key = 252 -- Kenmerksoort totaal declaratie
                  AND m.mld_stdmelding_key = 342        -- Declaratieformulier
                  AND m.mld_melding_status IN (0, 2, 3, 4))
             AS declaratie_concept,
          (SELECT COALESCE (SUM (kmm.mld_kenmerkmelding_waarde), 0)
             FROM mld_kenmerkmelding kmm,
                  mld_kenmerk km,
                  mld_melding m,
                  mld_srtkenmerk sk
            WHERE     m.mld_melding_key = kmm.mld_melding_key
                  AND km.mld_kenmerk_key = kmm.mld_kenmerk_key
                  AND p.prs_perslid_key = m.prs_perslid_key_voor
                  AND km.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
                  AND sk.mld_srtkenmerk_key = 252 -- Kenmerksoort totaal declaratie
                  AND m.mld_stdmelding_key = 342        -- Declaratieformulier
                  AND m.mld_melding_status IN (5, 6))
             AS declaratie_definitief,
          (SELECT COALESCE (SUM (kmm.mld_kenmerkmelding_waarde), 0)
             FROM mld_kenmerkmelding kmm,
                  mld_kenmerk km,
                  mld_melding m,
                  mld_srtkenmerk sk
            WHERE     m.mld_melding_key = kmm.mld_melding_key
                  AND km.mld_kenmerk_key = kmm.mld_kenmerk_key
                  AND p.prs_perslid_key = m.prs_perslid_key_voor
                  AND km.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
                  AND sk.mld_srtkenmerk_key = 252 -- Kenmerksoort totaal declaratie
                  AND m.mld_stdmelding_key = 343                        -- H2W
                  AND m.mld_melding_status IN (0, 2, 3, 4))
             AS h2w_concept,
          (SELECT COALESCE (SUM (kmm.mld_kenmerkmelding_waarde), 0)
             FROM mld_kenmerkmelding kmm,
                  mld_kenmerk km,
                  mld_melding m,
                  mld_srtkenmerk sk
            WHERE     m.mld_melding_key = kmm.mld_melding_key
                  AND km.mld_kenmerk_key = kmm.mld_kenmerk_key
                  AND p.prs_perslid_key = m.prs_perslid_key_voor
                  AND km.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
                  AND sk.mld_srtkenmerk_key = 252 -- Kenmerksoort totaal declaratie
                  AND m.mld_stdmelding_key = 343                        -- H2W
                  AND m.mld_melding_status IN (5, 6))
             AS h2w_definitief,
          (SELECT COALESCE (SUM (kmm.mld_kenmerkmelding_waarde), 0)
             FROM mld_kenmerkmelding kmm,
                  mld_kenmerk km,
                  mld_melding m,
                  mld_srtkenmerk sk
            WHERE     m.mld_melding_key = kmm.mld_melding_key
                  AND km.mld_kenmerk_key = kmm.mld_kenmerk_key
                  AND p.prs_perslid_key = m.prs_perslid_key_voor
                  AND km.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
                  AND sk.mld_srtkenmerk_key = 252 -- Kenmerksoort totaal declaratie
                  AND m.mld_melding_status IN (0, 2, 3, 4))
             AS totaal_concept,
          (SELECT COALESCE (SUM (kmm.mld_kenmerkmelding_waarde), 0)
             FROM mld_kenmerkmelding kmm,
                  mld_kenmerk km,
                  mld_melding m,
                  mld_srtkenmerk sk
            WHERE     m.mld_melding_key = kmm.mld_melding_key
                  AND km.mld_kenmerk_key = kmm.mld_kenmerk_key
                  AND p.prs_perslid_key = m.prs_perslid_key_voor
                  AND km.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
                  AND sk.mld_srtkenmerk_key = 252 -- Kenmerksoort totaal declaratie
                  AND m.mld_melding_status IN (5, 6))
             AS totaal_definitief,
          COALESCE (
             (SELECT fac.safe_to_number (ud.fac_usrdata_prijs)
                FROM prs_kenmerklink kml,
                     prs_kenmerk km,
                     fac_kenmerkdomein kd,
                     fac_usrdata ud
               WHERE     kml.prs_link_key = p.prs_perslid_key
                     AND kml.prs_kenmerk_key = km.prs_kenmerk_key
                     AND km.fac_kenmerkdomein_key = kd.fac_kenmerkdomein_key
                     AND kd.fac_usrtab_key = ud.fac_usrtab_key
                     AND fac.safe_to_number (kml.prs_kenmerklink_waarde) =
                           ud.fac_usrdata_key
                     AND kml.prs_kenmerk_key = 1001),
             0)
          + COALESCE (
               (SELECT fac.safe_to_number (ud.fac_usrdata_prijs)
                  FROM prs_kenmerklink kml,
                       prs_kenmerk km,
                       fac_kenmerkdomein kd,
                       fac_usrdata ud
                 WHERE kml.prs_link_key = p.prs_perslid_key
                       AND kml.prs_kenmerk_key = km.prs_kenmerk_key
                       AND km.fac_kenmerkdomein_key =
                             kd.fac_kenmerkdomein_key
                       AND kd.fac_usrtab_key = ud.fac_usrtab_key
                       AND fac.safe_to_number (kml.prs_kenmerklink_waarde) =
                             ud.fac_usrdata_key
                       AND kml.prs_kenmerk_key = 1002),
               0)
          - (SELECT COALESCE (SUM (kmm.mld_kenmerkmelding_waarde), 0)
               FROM mld_kenmerkmelding kmm,
                    mld_kenmerk km,
                    mld_melding m,
                    mld_srtkenmerk sk
              WHERE     m.mld_melding_key = kmm.mld_melding_key
                    AND km.mld_kenmerk_key = kmm.mld_kenmerk_key
                    AND p.prs_perslid_key = m.prs_perslid_key_voor
                    AND km.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
                    AND sk.mld_srtkenmerk_key = 252 -- Kenmerksoort totaal declaratie
                    AND m.mld_melding_status IN (0, 2, 3, 4, 5, 6))
             AS restbudget,
          b.budget_verval
     FROM (  SELECT prs_perslid_key,
                    budget,
                    extra_budget,
                    SUM (mld_kenmerkmelding_waarde) AS budget_verval -- Dit moet nog worden bepaald.
               FROM (SELECT prs_perslid_key,
                            budget,
                            extra_budget,
                            mld_kenmerkmelding_waarde,
                            factuurdatum,
                            mndverval,
                            MONTHS_BETWEEN (
                               SYSDATE,
                               TO_DATE (factuurdatum, 'DD-MM-YYYY'))
                               mndtussen
                       FROM (SELECT pbudget.prs_perslid_key,
                                    pbudget.budget,
                                    pbudget.extra_budget,
                                    kmmverv.mld_kenmerkmelding_waarde,
                                    (SELECT MAX (fac_usrdata_volgnr)
                                       FROM fac_usrdata
                                      WHERE fac_usrdata_verwijder IS NULL
                                            AND fac_usrtab_key = 141 --Eigen tabel Verval wpl (mnd)
                                            AND fac.safe_to_number (
                                                  fac_usrdata_code) =
                                                  kmverv.mld_kenmerk_key)
                                       mndverval,
                                    DECODE (
                                       kmverv.mld_kenmerk_key,
                                       281,  -- kenmerk Declaratie Beeldscherm
                                       (SELECT DISTINCT
                                               fkmm.mld_kenmerkmelding_waarde
                                          FROM mld_kenmerkmelding fkmm
                                         WHERE fkmm.mld_kenmerk_key = 301 --Kenmerk factuurdatum Beeldscherm
                                               AND fkmm.mld_kenmerkmelding_verwijder IS NULL
                                               AND fkmm.mld_melding_key =
                                                     mverv.mld_melding_key),
                                       282, -- kenmerk Declaratie Beeldscherm-arm
                                       (SELECT DISTINCT
                                               fkmm.mld_kenmerkmelding_waarde
                                          FROM mld_kenmerkmelding fkmm
                                         WHERE fkmm.mld_kenmerk_key = 302 --Kenmerk factuurdatum Beeldscherm-arm
                                               AND fkmm.mld_kenmerkmelding_verwijder IS NULL
                                               AND fkmm.mld_melding_key =
                                                     mverv.mld_melding_key),
                                       283,       -- kenmerk Declaratie Bureau
                                       (SELECT DISTINCT
                                               fkmm.mld_kenmerkmelding_waarde
                                          FROM mld_kenmerkmelding fkmm
                                         WHERE fkmm.mld_kenmerk_key = 303 --Kenmerk factuurdatum Bureau
                                               AND fkmm.mld_kenmerkmelding_verwijder IS NULL
                                               AND fkmm.mld_melding_key =
                                                     mverv.mld_melding_key),
                                       284,   -- kenmerk Declaratie Bureaulamp
                                       (SELECT DISTINCT
                                               fkmm.mld_kenmerkmelding_waarde
                                          FROM mld_kenmerkmelding fkmm
                                         WHERE fkmm.mld_kenmerk_key = 304 --Kenmerk factuurdatum Bureaulamp
                                               AND fkmm.mld_kenmerkmelding_verwijder IS NULL
                                               AND fkmm.mld_melding_key =
                                                     mverv.mld_melding_key),
                                       285,  -- kenmerk Declaratie Bureaustoel
                                       (SELECT DISTINCT
                                               fkmm.mld_kenmerkmelding_waarde
                                          FROM mld_kenmerkmelding fkmm
                                         WHERE fkmm.mld_kenmerk_key = 305 --Kenmerk factuurdatum Bureaustoel
                                               AND fkmm.mld_kenmerkmelding_verwijder IS NULL
                                               AND fkmm.mld_melding_key =
                                                     mverv.mld_melding_key),
                                       286, -- kenmerk Declaratie Laptophouder
                                       (SELECT DISTINCT
                                               fkmm.mld_kenmerkmelding_waarde
                                          FROM mld_kenmerkmelding fkmm
                                         WHERE fkmm.mld_kenmerk_key = 306 --Kenmerk factuurdatum Laptophouder
                                               AND fkmm.mld_kenmerkmelding_verwijder IS NULL
                                               AND fkmm.mld_melding_key =
                                                     mverv.mld_melding_key),
                                       287,         -- kenmerk Declaratie Muis
                                       (SELECT DISTINCT
                                               fkmm.mld_kenmerkmelding_waarde
                                          FROM mld_kenmerkmelding fkmm
                                         WHERE fkmm.mld_kenmerk_key = 307 --Kenmerk factuurdatum Muis
                                               AND fkmm.mld_kenmerkmelding_verwijder IS NULL
                                               AND fkmm.mld_melding_key =
                                                     mverv.mld_melding_key),
                                       288,  -- kenmerk Declaratie Toetsenbord
                                       (SELECT DISTINCT
                                               fkmm.mld_kenmerkmelding_waarde
                                          FROM mld_kenmerkmelding fkmm
                                         WHERE fkmm.mld_kenmerk_key = 308 --Kenmerk factuurdatum Toetsenbord
                                               AND fkmm.mld_kenmerkmelding_verwijder IS NULL
                                               AND fkmm.mld_melding_key =
                                                     mverv.mld_melding_key),
                                       289,  -- kenmerk Declaratie Voetensteun
                                       (SELECT DISTINCT
                                               fkmm.mld_kenmerkmelding_waarde
                                          FROM mld_kenmerkmelding fkmm
                                         WHERE fkmm.mld_kenmerk_key = 309 --Kenmerk factuurdatum Voetensteun
                                               AND fkmm.mld_kenmerkmelding_verwijder IS NULL
                                               AND fkmm.mld_melding_key =
                                                     mverv.mld_melding_key),
                                       290,       -- kenmerk Declaratie Webcam
                                       (SELECT DISTINCT
                                               fkmm.mld_kenmerkmelding_waarde
                                          FROM mld_kenmerkmelding fkmm
                                         WHERE fkmm.mld_kenmerk_key = 310 --Kenmerk factuurdatum Webcam
                                               AND fkmm.mld_kenmerkmelding_verwijder IS NULL
                                               AND fkmm.mld_melding_key =
                                                     mverv.mld_melding_key),
                                       291, -- kenmerk Declaratie Zit-sta verhoger
                                       (SELECT DISTINCT
                                               fkmm.mld_kenmerkmelding_waarde
                                          FROM mld_kenmerkmelding fkmm
                                         WHERE fkmm.mld_kenmerk_key = 311 --Kenmerk factuurdatum Zit-sta verhoger
                                               AND fkmm.mld_kenmerkmelding_verwijder IS NULL
                                               AND fkmm.mld_melding_key =
                                                     mverv.mld_melding_key),
                                       292,       -- kenmerk Declaratie Overig
                                       (SELECT DISTINCT
                                               fkmm.mld_kenmerkmelding_waarde
                                          FROM mld_kenmerkmelding fkmm
                                         WHERE fkmm.mld_kenmerk_key = 312 --Kenmerk factuurdatum Overig
                                               AND fkmm.mld_kenmerkmelding_verwijder IS NULL
                                               AND fkmm.mld_melding_key =
                                                     mverv.mld_melding_key),
                                       (SELECT DISTINCT
                                               fkmm.mld_kenmerkmelding_waarde
                                          FROM mld_kenmerkmelding fkmm
                                         WHERE fkmm.mld_kenmerk_key = 344 --Kenmerk factuurdatum (bij stdmelding Bestelling Health2Work)
                                               AND fkmm.mld_kenmerkmelding_verwijder IS NULL
                                               AND fkmm.mld_melding_key =
                                                     mverv.mld_melding_key))
                                       AS factuurdatum
                               FROM (SELECT pa.prs_perslid_key,
                                            (SELECT fac.safe_to_number (
                                                       ud.fac_usrdata_prijs)
                                               FROM prs_kenmerklink kml,
                                                    prs_kenmerk km,
                                                    fac_kenmerkdomein kd,
                                                    fac_usrdata ud
                                              WHERE prs_link_key =
                                                       pa.prs_perslid_key
                                                    AND kml.prs_kenmerk_key =
                                                          km.prs_kenmerk_key
                                                    AND km.fac_kenmerkdomein_key =
                                                          kd.fac_kenmerkdomein_key
                                                    AND kd.fac_usrtab_key =
                                                          ud.fac_usrtab_key
                                                    AND fac.safe_to_number(kml.prs_kenmerklink_waarde) =
                                                          ud.fac_usrdata_key
                                                    AND kml.prs_kenmerk_key =
                                                          1001) --Kenmerk budget
                                               budget,
                                            (SELECT fac.safe_to_number (
                                                       ud.fac_usrdata_prijs)
                                               FROM prs_kenmerklink kml,
                                                    prs_kenmerk km,
                                                    fac_kenmerkdomein kd,
                                                    fac_usrdata ud
                                              WHERE prs_link_key =
                                                       pa.prs_perslid_key
                                                    AND kml.prs_kenmerk_key =
                                                          km.prs_kenmerk_key
                                                    AND km.fac_kenmerkdomein_key =
                                                          kd.fac_kenmerkdomein_key
                                                    AND kd.fac_usrtab_key =
                                                          ud.fac_usrtab_key
                                                    AND fac.safe_to_number(kml.prs_kenmerklink_waarde) =
                                                          ud.fac_usrdata_key
                                                    AND kml.prs_kenmerk_key =
                                                          1002) --Kenmerk extra_budget
                                               extra_budget
                                       FROM prs_perslid pa
                                       WHERE pa.prs_afdeling_key > 1) pbudget,
                                    mld_melding mverv,
                                    mld_kenmerkmelding kmmverv,
                                    mld_kenmerk kmverv
                              WHERE kmmverv.mld_melding_key =
                                       mverv.mld_melding_key
                                    AND kmverv.mld_kenmerk_key =
                                          kmmverv.mld_kenmerk_key
                                    AND kmverv.mld_srtkenmerk_key = 253 --Kenmerksoort Declaratie
                                    AND mverv.prs_perslid_key_voor =
                                          pbudget.prs_perslid_key))
              WHERE (TO_NUMBER (mndverval) < TO_NUMBER (mndtussen))
           GROUP BY prs_perslid_key, budget, extra_budget) b,
          prs_perslid p,
          prs_afdeling a,
          prs_srtperslid f,
          prs_kostenplaats k
    WHERE     p.prs_perslid_key = b.prs_perslid_key(+)
          AND a.prs_afdeling_key = p.prs_afdeling_key
          AND f.prs_srtperslid_key = p.prs_srtperslid_key
          AND a.prs_kostenplaats_key = k.prs_kostenplaats_key(+)
          AND p.prs_afdeling_key > 1;

CREATE OR REPLACE VIEW vest_v_wpl_declaraties
(
   perslid_key,
   voornaam,
   naam,
   tussenvoegsel,
   voorletters,
   email,
   telefoonnr,
   mobiel,
   oslogin,
   kostenplaats,
   afdeling,
   functie,
   leverancier,
   categorie,
   bedrag,
   status,
   datum_definitief,
   factuurdatum,
   budget,
   extra_budget,
   totaal_budget,
   decl_concept,
   decl_goedgekeurd,
   h2w_concept,
   h2w_goedgekeurd,
   totaal_concept,
   totaal_goedgekeurd,
   restbudget,
   melding_key
)
AS
   SELECT DISTINCT p.perslid_key,
          p.voornaam,
          p.naam,
          p.tussenvoegsel,
          p.voorletters,
          p.email,
          p.telefoonnr,
          p.mobiel,
          p.oslogin,
          p.kostenplaats,
          p.afdeling,
          p.functie,
          DECODE (m.mld_stdmelding_key,
                  342, 'Vrije bestelling',
                  343, 'Health2Work',
                  NULL),
          km.mld_kenmerk_omschrijving,
          fac.safe_to_number (kmm.mld_kenmerkmelding_waarde),
          DECODE (m.mld_melding_status,
                  0, 'Ingediend',
                  1, 'Afgewezen',
                  2, x.fac_usrdata_omschr,
                  3, x.fac_usrdata_omschr,
                  4, x.fac_usrdata_omschr,
                  5, 'Goedgekeurd',
                  6, 'Goedgekeurd',
                  NULL), -- Er is een onderscheid tussen concept en ingediend via een kenmerk zodra de melding nog niet in behandeling is.
          DECODE (
             m.mld_stdmelding_key,
             342, -- Als het de stdmelding Declaratie is, dan kijken naar de tracking, bij H2W is er geen tracking MLDAFM, maar de melding is meteen afgehandeld, dus gevuld kenmerk ophalen.
             (SELECT MAX (fac_tracking_datum)
                FROM fac_tracking t, fac_srtnotificatie sn
               WHERE     t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
                     AND sn.fac_srtnotificatie_code = 'MLDAFM'
                     AND t.fac_tracking_refkey = m.mld_melding_key),
             (SELECT DISTINCT
                     fac.safe_to_date (fkmm.mld_kenmerkmelding_waarde,
                                       'DD-MM-YYYY')
                FROM mld_kenmerkmelding fkmm
               WHERE     fkmm.mld_kenmerk_key = 344 --Kenmerk factuurdatum bij melding Bestelling Health2Work
                     AND fkmm.mld_kenmerkmelding_verwijder IS NULL
                     AND fkmm.mld_melding_key = m.mld_melding_key))
             AS datum_definitief,
          (fac.safe_to_date (
              DECODE (
                 kmm.mld_kenmerk_key,
                 281,                        -- kenmerk Declaratie Beeldscherm
                 (SELECT DISTINCT fkmm.mld_kenmerkmelding_waarde
                    FROM mld_kenmerkmelding fkmm
                   WHERE     fkmm.mld_kenmerk_key = 301 --Kenmerk factuurdatum Beeldscherm
                         AND fkmm.mld_kenmerkmelding_verwijder IS NULL
                         AND fkmm.mld_melding_key = m.mld_melding_key),
                 282,                    -- kenmerk Declaratie Beeldscherm-arm
                 (SELECT DISTINCT fkmm.mld_kenmerkmelding_waarde
                    FROM mld_kenmerkmelding fkmm
                   WHERE     fkmm.mld_kenmerk_key = 302 --Kenmerk factuurdatum Beeldscherm-arm
                         AND fkmm.mld_kenmerkmelding_verwijder IS NULL
                         AND fkmm.mld_melding_key = m.mld_melding_key),
                 283,                             -- kenmerk Declaratie Bureau
                 (SELECT DISTINCT fkmm.mld_kenmerkmelding_waarde
                    FROM mld_kenmerkmelding fkmm
                   WHERE     fkmm.mld_kenmerk_key = 303 --Kenmerk factuurdatum Bureau
                         AND fkmm.mld_kenmerkmelding_verwijder IS NULL
                         AND fkmm.mld_melding_key = m.mld_melding_key),
                 284,                         -- kenmerk Declaratie Bureaulamp
                 (SELECT DISTINCT fkmm.mld_kenmerkmelding_waarde
                    FROM mld_kenmerkmelding fkmm
                   WHERE     fkmm.mld_kenmerk_key = 304 --Kenmerk factuurdatum Bureaulamp
                         AND fkmm.mld_kenmerkmelding_verwijder IS NULL
                         AND fkmm.mld_melding_key = m.mld_melding_key),
                 285,                        -- kenmerk Declaratie Bureaustoel
                 (SELECT DISTINCT fkmm.mld_kenmerkmelding_waarde
                    FROM mld_kenmerkmelding fkmm
                   WHERE     fkmm.mld_kenmerk_key = 305 --Kenmerk factuurdatum Bureaustoel
                         AND fkmm.mld_kenmerkmelding_verwijder IS NULL
                         AND fkmm.mld_melding_key = m.mld_melding_key),
                 286,                       -- kenmerk Declaratie Laptophouder
                 (SELECT DISTINCT fkmm.mld_kenmerkmelding_waarde
                    FROM mld_kenmerkmelding fkmm
                   WHERE     fkmm.mld_kenmerk_key = 306 --Kenmerk factuurdatum Laptophouder
                         AND fkmm.mld_kenmerkmelding_verwijder IS NULL
                         AND fkmm.mld_melding_key = m.mld_melding_key),
                 287,                               -- kenmerk Declaratie Muis
                 (SELECT DISTINCT fkmm.mld_kenmerkmelding_waarde
                    FROM mld_kenmerkmelding fkmm
                   WHERE     fkmm.mld_kenmerk_key = 307 --Kenmerk factuurdatum Muis
                         AND fkmm.mld_kenmerkmelding_verwijder IS NULL
                         AND fkmm.mld_melding_key = m.mld_melding_key),
                 288,                        -- kenmerk Declaratie Toetsenbord
                 (SELECT DISTINCT fkmm.mld_kenmerkmelding_waarde
                    FROM mld_kenmerkmelding fkmm
                   WHERE     fkmm.mld_kenmerk_key = 308 --Kenmerk factuurdatum Toetsenbord
                         AND fkmm.mld_kenmerkmelding_verwijder IS NULL
                         AND fkmm.mld_melding_key = m.mld_melding_key),
                 289,                        -- kenmerk Declaratie Voetensteun
                 (SELECT DISTINCT fkmm.mld_kenmerkmelding_waarde
                    FROM mld_kenmerkmelding fkmm
                   WHERE     fkmm.mld_kenmerk_key = 309 --Kenmerk factuurdatum Voetensteun
                         AND fkmm.mld_kenmerkmelding_verwijder IS NULL
                         AND fkmm.mld_melding_key = m.mld_melding_key),
                 290,                             -- kenmerk Declaratie Webcam
                 (SELECT DISTINCT fkmm.mld_kenmerkmelding_waarde
                    FROM mld_kenmerkmelding fkmm
                   WHERE     fkmm.mld_kenmerk_key = 310 --Kenmerk factuurdatum Webcam
                         AND fkmm.mld_kenmerkmelding_verwijder IS NULL
                         AND fkmm.mld_melding_key = m.mld_melding_key),
                 291,                   -- kenmerk Declaratie Zit-sta verhoger
                 (SELECT DISTINCT fkmm.mld_kenmerkmelding_waarde
                    FROM mld_kenmerkmelding fkmm
                   WHERE     fkmm.mld_kenmerk_key = 311 --Kenmerk factuurdatum Zit-sta verhoger
                         AND fkmm.mld_kenmerkmelding_verwijder IS NULL
                         AND fkmm.mld_melding_key = m.mld_melding_key),
                 292,                             -- kenmerk Declaratie Overig
                 (SELECT DISTINCT fkmm.mld_kenmerkmelding_waarde
                    FROM mld_kenmerkmelding fkmm
                   WHERE     fkmm.mld_kenmerk_key = 312 --Kenmerk factuurdatum Overig
                         AND fkmm.mld_kenmerkmelding_verwijder IS NULL
                         AND fkmm.mld_melding_key = m.mld_melding_key),
                 (SELECT DISTINCT fkmm.mld_kenmerkmelding_waarde
                    FROM mld_kenmerkmelding fkmm
                   WHERE     fkmm.mld_kenmerk_key = 344 --Kenmerk factuurdatum bij melding Bestelling Health2Work
                         AND fkmm.mld_kenmerkmelding_verwijder IS NULL
                         AND fkmm.mld_melding_key = m.mld_melding_key)),
              'DD-MM-YYYY'))
             AS factuurdatum,
          p.budget,
          p.extra_budget,
          p.totaal_budget,
          p.declaratie_concept,
          p.declaratie_definitief,
          p.h2w_concept,
          p.h2w_definitief,
          p.totaal_concept,
          p.totaal_definitief,
          p.restbudget,
          m.mld_melding_key
     FROM vest_v_wpl_pstatus p,
          mld_melding m,
          mld_srtkenmerk skm,
          mld_kenmerk km,
          mld_kenmerkmelding kmm,
          (SELECT status_ud.fac_usrdata_omschr, status_kmm.mld_melding_key
             FROM mld_kenmerkmelding status_kmm,
                  mld_srtkenmerk status_skm,
                  mld_kenmerk status_km,
                  fac_usrdata status_ud,
                  fac_usrtab status_ut
            WHERE status_kmm.mld_kenmerkmelding_verwijder IS NULL
                  AND status_kmm.mld_kenmerk_key = status_km.mld_kenmerk_key
                  AND status_skm.mld_srtkenmerk_key =
                        status_km.mld_srtkenmerk_key
                  AND status_ut.fac_usrtab_key = 123 -- Eigen tabel 'Status declaratie'
                  AND status_ut.fac_usrtab_key = status_ud.fac_usrtab_key
                  AND status_ud.fac_usrdata_key =
                        fac.safe_to_number (
                           status_kmm.mld_kenmerkmelding_waarde)) x
    WHERE     m.mld_melding_key = kmm.mld_melding_key
          AND kmm.mld_kenmerk_key = km.mld_kenmerk_key
          AND skm.mld_srtkenmerk_key = km.mld_srtkenmerk_key
          AND m.mld_stdmelding_key IN (342, 343) -- Stdmeldingen Declaratieformulier & Bestelling H2W
          AND skm.mld_srtkenmerk_key = 253 --srtkenmerk declaratie (hier zijn alle categorieen een afgeleide van)
          AND m.mld_melding_status IN (0, 2, 3, 4, 5, 6) --Status 1 bewust niet meegenomen, anders zou dit als bedrag ook (onterecht) mee gaan tellen
          AND m.mld_melding_key = x.mld_melding_key(+)
          AND m.prs_perslid_key_voor = p.perslid_key
   UNION ALL
   SELECT pa.perslid_key,
          pa.voornaam,
          pa.naam,
          pa.tussenvoegsel,
          pa.voorletters,
          pa.email,
          pa.telefoonnr,
          pa.mobiel,
          pa.oslogin,
          pa.kostenplaats,
          pa.afdeling,
          pa.functie,
          NULL,
          NULL,
          NULL,
          NULL,
          NULL,
          (fac.safe_to_date (NULL, 'DD-MM-YYYY')),
          pa.budget,
          pa.extra_budget,
          pa.totaal_budget,
          pa.declaratie_concept,
          pa.declaratie_definitief,
          pa.h2w_concept,
          pa.h2w_definitief,
          pa.totaal_concept,
          pa.totaal_definitief,
          pa.restbudget,
          NULL
     FROM vest_v_wpl_pstatus pa
    WHERE pa.perslid_key NOT IN
                (SELECT p.perslid_key
                   FROM vest_v_wpl_pstatus p,
                        mld_melding m,
                        mld_srtkenmerk skm,
                        mld_kenmerk km,
                        mld_kenmerkmelding kmm
                  WHERE     m.mld_melding_key = kmm.mld_melding_key
                        AND kmm.mld_kenmerk_key = km.mld_kenmerk_key
                        AND skm.mld_srtkenmerk_key = km.mld_srtkenmerk_key
                        AND m.mld_stdmelding_key IN (342, 343) -- Stdmeldingen Declaratieformulier & Bestelling H2W
                        AND skm.mld_srtkenmerk_key = 241 --srtkenmerk declaratie (hier zijn alle categorieen een afgeleide van)
                        AND m.mld_melding_status IN (0, 2, 3, 4, 5, 6) --Status 1 bewust niet meegenomen, anders zou dit als bedrag ook (onterecht) mee gaan tellen
                        AND m.prs_perslid_key_voor = p.perslid_key);
					 
CREATE OR REPLACE VIEW vest_v_werkplekbudget
(
   prs_perslid_key,
   restbudget
)
AS
   SELECT x.perslid_key,
          DECODE (
             (SELECT p.prs_kenmerklink_waarde
                FROM prs_kenmerklink p
               WHERE     p.prs_link_key = x.perslid_key
                     AND prs_kenmerklink_niveau = 'P'
                     AND prs_kenmerk_key = 1020), --Kenmerk of er een thuiswerkovereenkomst is getekend, zonder OVK is budget altijd 0.
             NULL,
             0,
             x.restbudget)
     FROM (  SELECT perslid_key, restbudget AS restbudget
               FROM vest_v_wpl_declaraties
           GROUP BY perslid_key, restbudget) x;
   
   CREATE OR REPLACE FORCE VIEW vest_v_wpl_portalh2wmobile
(
   perslid_key,
   link
)
AS
   SELECT prs_perslid_key,
          'Klik hier om het assortiment te bekijken van Health2Work en een bestelling te doen.'
     FROM prs_perslid;
     
     
CREATE OR REPLACE VIEW vest_v_rap_lunch
AS
    SELECT (SELECT fac.safe_to_date(mk.mld_kenmerkmelding_waarde, 'DD-MM-YYYY')
              FROM mld_kenmerkmelding mk
             WHERE     mk.mld_melding_key = m.mld_melding_key
                   AND mk.mld_kenmerk_key = 621)    datum,
           (SELECT fac.safe_to_date(mk.mld_kenmerkmelding_waarde, 'HH:MI')
              FROM mld_kenmerkmelding mk
             WHERE     mk.mld_melding_key = m.mld_melding_key
                   AND mk.mld_kenmerk_key = 622)    tijd,
           m.mld_melding_key                        nummer,
           (SELECT mk.mld_kenmerkmelding_waarde
              FROM mld_kenmerkmelding mk
             WHERE     mk.mld_melding_key = m.mld_melding_key
                   AND mk.mld_kenmerk_key = 641)    aantal,
           (SELECT mk.mld_kenmerkmelding_waarde
              FROM mld_kenmerkmelding mk
             WHERE     mk.mld_melding_key = m.mld_melding_key
                   AND mk.mld_kenmerk_key = 701)    plaats,
           (SELECT mk.mld_kenmerkmelding_waarde
              FROM mld_kenmerkmelding mk
             WHERE     mk.mld_melding_key = m.mld_melding_key
                   AND mk.mld_kenmerk_key = 642)    dieetwensen,
           pk.prs_kostenplaats_omschrijving         kostenplaats,
           pf.prs_perslid_naam_full                 melder
      FROM mld_melding m, prs_kostenplaats pk, prs_v_perslid_fullnames pf
     WHERE     m.mld_stdmelding_key = 461                    -- lunch aanvraag
           AND m.mld_melding_status NOT IN (1, 5, 6)         -- niet afgewezen, afgemeld of historie
           AND m.prs_kostenplaats_key = pk.prs_kostenplaats_key
           AND m.prs_perslid_key = pf.prs_perslid_key;

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