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

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

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

CREATE OR REPLACE PROCEDURE pnbr_imp_writelog (
  p_import_key IN NUMBER,
  p_severity IN VARCHAR2,
  p_errormsg IN VARCHAR2,
  p_errorhint IN VARCHAR2)
AS
  PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
  fac.imp_writelog (p_import_key,
                    p_severity,
                    p_errormsg,
                    p_errorhint);
  COMMIT;
END;
/

------------ Tijdelijke view voor logging
CREATE OR REPLACE VIEW pnbr_v_cursor_noti_bezoek
( bez_bezoekers_key,
  bez_afspraak_key,
  bez_afspraak_datum,
  bez_afspraak_tijd,
  gastheer_email,
  res_reservering_key,
  res_rsv_ruimte_omschrijving,
  fac_srtnotificatie_code)
AS
         SELECT b.bez_bezoekers_key,
                a.bez_afspraak_key,
                TO_CHAR (bez_afspraak_datum, 'dd-mm-yyyy') datum,
                TO_CHAR (bez_afspraak_datum, 'hh24:mi') tijd,
                bk.bez_kenmerkwaarde_waarde email,
                res_reservering_key,
                res_rsv_ruimte_omschrijving,
                DECODE (
                   (SELECT bk2.bez_kenmerkwaarde_waarde
                      FROM bez_kenmerkwaarde bk2
                     WHERE bk2.bez_bezoekers_key = b.bez_bezoekers_key
                       AND bk2.bez_kenmerk_key = 1020),
                   1,
                   DECODE (rrr.res_rsv_ruimte_key, NULL, 'CUST03', 'CUST01'),
                   -- uitnodiging voor gastheer alleen als aangevinkt bij bezoek en gekoppeld aan reservering.
                   'CUST03')
                   fac_srtnotificatie_code
           FROM bez_bezoekers b,
                bez_afspraak a,
                res_rsv_ruimte rrr,
                bez_kenmerkwaarde bk
          WHERE b.bez_afspraak_key = a.bez_afspraak_key
            AND a.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key(+)
            AND bk.bez_bezoekers_key = b.bez_bezoekers_key
            AND bk.bez_kenmerk_key = 1001
            AND (
                 --Herinnering 3 dagen van te voren is uitgeschakeld. PNBR#31869
                 --TRUNC (fac.datumtijdplusuitvoertijd (SYSDATE, 4, 'DAGEN')) =
                 --   TRUNC(fac.datumtijdplusuitvoertijd (a.bez_afspraak_datum,
                 --                                       0,
                 --                                       'UREN'))
          --  OR
                 EXISTS    -- email adres is als kenmerk toegevoegd
                    (SELECT kw.bez_kenmerkwaarde_key
                       FROM bez_kenmerkwaarde kw
                      WHERE kw.bez_kenmerk_key = 1001   -- emailadres externe bezoeker
                        AND kw.bez_bezoekers_key = b.bez_bezoekers_key
                        AND TRUNC (kw.bez_kenmerkwaarde_aanmaak) = TRUNC (SYSDATE))
              OR EXISTS    -- aankomstdatum of tijdstip is aangepast
                    (SELECT fac_tracking_refkey
                       FROM fac_tracking t, fac_srtnotificatie sn
                      WHERE sn.fac_srtnotificatie_code = 'BEZUPD'
                        AND t.fac_srtnotificatie_key =
                               sn.fac_srtnotificatie_key
                        AND t.fac_tracking_refkey = a.bez_afspraak_key
                        AND fac_tracking_oms LIKE '%Aankomst:%'
                        AND TRUNC (t.fac_tracking_datum) = TRUNC (SYSDATE))
              OR EXISTS    -- afspraak is aangemaakt
                    (SELECT fac_tracking_refkey
                       FROM fac_tracking t, fac_srtnotificatie sn
                      WHERE sn.fac_srtnotificatie_code = 'BEZMUT'
                        AND t.fac_srtnotificatie_key =
                               sn.fac_srtnotificatie_key
                        AND t.fac_tracking_refkey = a.bez_afspraak_key
                        AND TRUNC (t.fac_tracking_datum) = TRUNC (SYSDATE)))
         UNION ALL                                     -- bedank/feedbackbrief
         SELECT b.bez_bezoekers_key,
                a.bez_afspraak_key,
                TO_CHAR (bez_afspraak_datum, 'dd-mm-yyyy') datum,
                TO_CHAR (bez_afspraak_datum, 'hh24:mi') tijd,
                bk.bez_kenmerkwaarde_waarde email,
                res_reservering_key,
                res_rsv_ruimte_omschrijving,
                'CUST02' fac_srtnotificatie_code
           FROM bez_bezoekers b,
                bez_afspraak a,
                res_rsv_ruimte rrr,
                bez_kenmerkwaarde bk,
                bez_kenmerkwaarde bk2
          WHERE b.bez_afspraak_key = a.bez_afspraak_key
            AND a.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
            AND bk.bez_bezoekers_key = b.bez_bezoekers_key
            AND bk.bez_kenmerk_key = 1001
            AND bk2.bez_bezoekers_key = b.bez_bezoekers_key
            AND bk2.bez_kenmerk_key = 1020
            AND TRUNC(fac.datumtijdplusuitvoertijd (a.bez_afspraak_datum,
                                                    1,
                                                    'DAGEN')) =
                   TRUNC (SYSDATE);

CREATE OR REPLACE PACKAGE pnbr
AS
   PROCEDURE noti_bezoek;

   PROCEDURE noti_bezoek_gastheer;

   FUNCTION get_kenmerk (p_module        IN VARCHAR2,
                         p_kenmerk_key   IN NUMBER,
                         p_link_key      IN NUMBER) RETURN VARCHAR2;

   FUNCTION get_kenmerkwaarde (p_kenmerk_type       VARCHAR2,
                               p_kenmerkdomein_key  NUMBER,
                               p_kenmerk_waarde     VARCHAR2) RETURN VARCHAR2;
END;
/

CREATE OR REPLACE PACKAGE BODY pnbr
AS
   PROCEDURE noti_bezoek
   AS
      -- cust01 brief naar cursusleider bij reserververingen
      -- cust02 dank/feedbackbrief naar cursusleider van reservering
      -- cust03 brief naar deelnemer aan reservering en los bezoek

      CURSOR c
      IS
         SELECT b.bez_bezoekers_key,
                a.bez_afspraak_key,
                TO_CHAR (bez_afspraak_datum, 'dd-mm-yyyy') datum,
                TO_CHAR (bez_afspraak_datum, 'hh24:mi') tijd,
                bk.bez_kenmerkwaarde_waarde email,
                res_reservering_key,
                res_rsv_ruimte_omschrijving,
                DECODE (
                   (SELECT bk2.bez_kenmerkwaarde_waarde
                      FROM bez_kenmerkwaarde bk2
                     WHERE bk2.bez_bezoekers_key = b.bez_bezoekers_key
                       AND bk2.bez_kenmerk_key = 1020),
                   1,
                   DECODE (rrr.res_rsv_ruimte_key, NULL, 'CUST03', 'CUST01'),
                   -- uitnodiging voor gastheer alleen als aangevinkt bij bezoek en gekoppeld aan reservering.
                   'CUST03')
                   fac_srtnotificatie_code
           FROM bez_bezoekers b,
                bez_afspraak a,
                res_rsv_ruimte rrr,
                bez_kenmerkwaarde bk
          WHERE b.bez_afspraak_key = a.bez_afspraak_key
            AND a.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key(+)
            AND bk.bez_bezoekers_key = b.bez_bezoekers_key
            AND bk.bez_kenmerk_key = 1001
            AND (
                 --Herinnering 3 dagen van te voren is uitgeschakeld. PNBR#31869
                 --TRUNC (fac.datumtijdplusuitvoertijd (SYSDATE, 4, 'DAGEN')) =
                 --   TRUNC(fac.datumtijdplusuitvoertijd (a.bez_afspraak_datum,
                 --                                       0,
                 --                                       'UREN'))
           --   OR
                 EXISTS    -- email adres is als kenmerk toegevoegd
                    (SELECT kw.bez_kenmerkwaarde_key
                       FROM bez_kenmerkwaarde kw
                      WHERE kw.bez_kenmerk_key = 1001   -- emailadres externe bezoeker
                        AND kw.bez_bezoekers_key = b.bez_bezoekers_key
                        AND TRUNC (kw.bez_kenmerkwaarde_aanmaak) = TRUNC (SYSDATE))
              OR EXISTS    -- aankomstdatum of tijdstip is aangepast
                    (SELECT fac_tracking_refkey
                       FROM fac_tracking t, fac_srtnotificatie sn
                      WHERE sn.fac_srtnotificatie_code = 'BEZUPD'
                        AND t.fac_srtnotificatie_key =
                               sn.fac_srtnotificatie_key
                        AND t.fac_tracking_refkey = a.bez_afspraak_key
                        AND fac_tracking_oms LIKE '%Aankomst:%'
                        AND TRUNC (t.fac_tracking_datum) = TRUNC (SYSDATE))
              OR EXISTS    -- afspraak is aangemaakt
                    (SELECT fac_tracking_refkey
                       FROM fac_tracking t, fac_srtnotificatie sn
                      WHERE sn.fac_srtnotificatie_code = 'BEZMUT'
                        AND t.fac_srtnotificatie_key =
                               sn.fac_srtnotificatie_key
                        AND t.fac_tracking_refkey = a.bez_afspraak_key
                        AND TRUNC (t.fac_tracking_datum) = TRUNC (SYSDATE)))
         UNION ALL                                     -- bedank/feedbackbrief
         SELECT b.bez_bezoekers_key,
                a.bez_afspraak_key,
                TO_CHAR (bez_afspraak_datum, 'dd-mm-yyyy') datum,
                TO_CHAR (bez_afspraak_datum, 'hh24:mi') tijd,
                bk.bez_kenmerkwaarde_waarde email,
                res_reservering_key,
                res_rsv_ruimte_omschrijving,
                'CUST02' fac_srtnotificatie_code
           FROM bez_bezoekers b,
                bez_afspraak a,
                res_rsv_ruimte rrr,
                bez_kenmerkwaarde bk,
                bez_kenmerkwaarde bk2
          WHERE b.bez_afspraak_key = a.bez_afspraak_key
            AND a.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
            AND bk.bez_bezoekers_key = b.bez_bezoekers_key
            AND bk.bez_kenmerk_key = 1001
            AND bk2.bez_bezoekers_key = b.bez_bezoekers_key
            AND bk2.bez_kenmerk_key = 1020
            AND TRUNC(fac.datumtijdplusuitvoertijd (a.bez_afspraak_datum,
                                                    1,
                                                    'DAGEN')) =
                   TRUNC (SYSDATE);

      oracle_err_num         NUMBER;
      oracle_err_mes         VARCHAR2 (200);
      v_errormsg             VARCHAR2 (200);
      v_srtnotificatie_key   NUMBER (10);
      v_onderwerp            VARCHAR2 (100);
   BEGIN
      -- cleanup kenmerklink
      DELETE bez_kenmerkwaarde
       WHERE bez_kenmerk_key = 1000;                  -- link naar reservering

      FOR rec IN c
      LOOP
         IF rec.res_reservering_key IS NOT NULL
         THEN
            INSERT INTO bez_kenmerkwaarde (bez_bezoekers_key,
                                           bez_kenmerk_key,
                                           bez_kenmerkwaarde_waarde)
                VALUES (rec.bez_bezoekers_key, 1000, rec.res_reservering_key);

            IF rec.fac_srtnotificatie_code = 'CUST02'         -- feedbackbrief
            THEN
               v_onderwerp := 'Feedback: ' || rec.res_rsv_ruimte_omschrijving;
            ELSE
               v_onderwerp :=
                  'Uitnodiging: ' || rec.res_rsv_ruimte_omschrijving;
            END IF;
         ELSE
            v_onderwerp :=
               'Afspraak ' || rec.datum || ' om ' || rec.tijd || ' uur';
         END IF;

         SELECT fac_srtnotificatie_key
           INTO v_srtnotificatie_key
           FROM fac_srtnotificatie
          WHERE fac_srtnotificatie_code = rec.fac_srtnotificatie_code;

         INSERT INTO fac_notificatie (fac_srtnotificatie_key,
                                      fac_notificatie_status,
                                      fac_notificatie_receiver_email,
                                      fac_notificatie_oms,
                                      fac_notificatie_refkey,
                                      fac_notificatie_extrakey,
                                      fac_notificatie_prioriteit)
             VALUES (v_srtnotificatie_key,
                     2,
                     rec.email,
                     v_onderwerp,
                     rec.bez_afspraak_key,
                     rec.bez_bezoekers_key,
                     2);

         IF rec.fac_srtnotificatie_code = 'CUST02'            -- feedbackbrief
         THEN
            INSERT INTO fac_notificatie (fac_srtnotificatie_key,
                                         fac_notificatie_status,
                                         prs_perslid_key_receiver,
                                         fac_notificatie_oms,
                                         fac_notificatie_refkey,
                                         fac_notificatie_extrakey,
                                         fac_notificatie_prioriteit)
                VALUES (v_srtnotificatie_key,
                        2,
                        3593,                   -- kopie naar Rob van der Plas
                        v_onderwerp,
                        rec.bez_afspraak_key,
                        rec.bez_bezoekers_key,
                        2);
         END IF;
      END LOOP;

      COMMIT;
   EXCEPTION
      WHEN OTHERS
      THEN
         oracle_err_num := SQLCODE;
         oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
         v_errormsg :=
               'OTHERS (error '
            || oracle_err_num
            || '/'
            || oracle_err_mes
            || ')';
         fac.writelog ('NOTI_BEZOEKERS',
                       'E',
                       v_errormsg,
                       '');
   END;


   PROCEDURE noti_bezoek_gastheer
   AS
      -- Notificatie die naar de gastheer verzonden wordt 15 minuten voordat het bezoek verwacht wordt.

      oracle_err_num         NUMBER;
      oracle_err_mes         VARCHAR2 (200);
      v_errormsg             VARCHAR2 (200);
      v_srtnotificatie_key   NUMBER (10);
      v_van                  DATE;
      v_tot                  DATE;
      v_onderwerp            VARCHAR2 (100);
   BEGIN
      -- cleanup kenmerklink
      SELECT GREATEST (
                COALESCE (
                   fac.safe_to_date (MAX (fac_usrdata_omschr),
                                     'yyyymmdd hh24miss'),
                   SYSDATE - 10),
                SYSDATE + 1 / (24 * 12)) -- 5 min voor aanvang
        INTO v_van
        FROM fac_usrdata
       WHERE fac_usrdata_code = 'BEZ_NOT_LASTTIME';

      v_tot := SYSDATE + 3 / (24 * 12);  -- 15 min voor aanvang

      SELECT fac_srtnotificatie_key
        INTO v_srtnotificatie_key
        FROM fac_srtnotificatie
       WHERE fac_srtnotificatie_code = 'BEZMAI';

      INSERT INTO fac_notificatie (fac_srtnotificatie_key,
                                   fac_notificatie_status,
                                   fac_notificatie_receiver_email,
                                   fac_notificatie_oms,
                                   fac_notificatie_refkey,
                                   fac_notificatie_extrakey,
                                   fac_notificatie_prioriteit,
                                   prs_perslid_key_receiver)
         SELECT v_srtnotificatie_key,
                2,
                h.prs_perslid_email,
                'Herinnering: ' ||
                   DECODE (rrr.res_rsv_ruimte_key, NULL, 'Reservering ' || rrr.res_reservering_key || ': over 15 minuten arriveren deelnemers voor bijeenkomst: ' || rrr.res_rsv_ruimte_omschrijving,
                                                         'Over 15 minuten arriveert bezoek voor uw afspraak'),
                a.bez_afspraak_key,
                NULL,
                2,
                h.prs_perslid_key
           FROM bez_afspraak a, prs_perslid h, res_rsv_ruimte rrr
          WHERE a.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
            AND bez_afspraak_datum > v_van
            AND bez_afspraak_datum <= v_tot
            AND a.bez_afspraak_host_key = h.prs_perslid_key
            AND h.prs_perslid_email IS NOT NULL;

      UPDATE fac_usrdata
         SET fac_usrdata_omschr = TO_CHAR (v_tot, 'yyyymmdd hh24miss')
       WHERE fac_usrdata_code = 'BEZ_NOT_LASTTIME';

      COMMIT;
   EXCEPTION
      WHEN OTHERS
      THEN
         oracle_err_num := SQLCODE;
         oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
         v_errormsg :=
               'OTHERS (error '
            || oracle_err_num
            || '/'
            || oracle_err_mes
            || ')';
         fac.writelog ('NOTI_BEZOEKERS_GASTHEER',
                       'E',
                       v_errormsg,
                       '');
   END;

  FUNCTION get_kenmerk (p_module        IN VARCHAR2,
                        p_kenmerk_key   IN NUMBER,
                        p_link_key      IN NUMBER)
     RETURN VARCHAR2
  AS
     v_kenmerk_type     mld_srtkenmerk.mld_srtkenmerk_kenmerktype%TYPE;
     v_kenmerk_waarde   mld_kenmerkmelding.mld_kenmerkmelding_waarde%TYPE;
     v_kenmerkdomein_key fac_kenmerkdomein.fac_kenmerkdomein_key%TYPE;
  BEGIN
     CASE p_module
        WHEN 'MLD'
        THEN
           SELECT mld_srtkenmerk_kenmerktype,
                  sk.fac_kenmerkdomein_key,
                  km.mld_kenmerkmelding_waarde
             INTO v_kenmerk_type,
                  v_kenmerkdomein_key,
                  v_kenmerk_waarde
             FROM mld_v_aanwezigkenmerkmelding km,
                  mld_kenmerk k,
                  mld_srtkenmerk sk
            WHERE km.mld_melding_key = p_link_key
              AND km.mld_kenmerk_key = p_kenmerk_key
              AND km.mld_kenmerk_key = k.mld_kenmerk_key
              AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key;
        WHEN 'CNT'
        THEN
           SELECT cnt_srtkenmerk_kenmerktype,
                  sk.fac_kenmerkdomein_key,
                  kc.cnt_kenmerkcontract_waarde
             INTO v_kenmerk_type,
                  v_kenmerkdomein_key,
                  v_kenmerk_waarde
             FROM cnt_kenmerkcontract kc,
                  cnt_kenmerk k,
                  cnt_srtkenmerk sk
            WHERE kc.cnt_contract_key = p_link_key
              AND kc.cnt_kenmerk_key = p_kenmerk_key
              AND kc.cnt_kenmerk_key = k.cnt_kenmerk_key
              AND k.cnt_srtkenmerk_key = sk.cnt_srtkenmerk_key;
        WHEN 'ALG'
        THEN
           SELECT alg_kenmerk_kenmerktype,
                  k.fac_kenmerkdomein_key,
                  aogk.alg_onrgoedkenmerk_waarde
             INTO v_kenmerk_type,
                  v_kenmerkdomein_key,
                  v_kenmerk_waarde
             FROM alg_onrgoedkenmerk aogk, alg_kenmerk k
            WHERE aogk.alg_onrgoed_key = p_link_key
              AND aogk.alg_kenmerk_key = p_kenmerk_key
              AND aogk.alg_kenmerk_key = k.alg_kenmerk_key;
        WHEN 'INS'
        THEN
           SELECT sk.ins_srtkenmerk_kenmerktype,
                  sk.fac_kenmerkdomein_key,
                  ikd.ins_kenmerkdeel_waarde
             INTO v_kenmerk_type,
                  v_kenmerkdomein_key,
                  v_kenmerk_waarde
             FROM ins_kenmerkdeel ikd, ins_kenmerk k, ins_srtkenmerk sk
            WHERE ikd.ins_deel_key = p_link_key
              AND ikd.ins_kenmerkdeel_verwijder IS NULL
              AND ikd.ins_kenmerk_key = p_kenmerk_key
              AND ikd.ins_kenmerk_key = k.ins_kenmerk_key
              AND k.ins_srtkenmerk_key = sk.ins_srtkenmerk_key;
     END CASE;
     RETURN get_kenmerkwaarde (v_kenmerk_type,
                                    v_kenmerkdomein_key,
                                    v_kenmerk_waarde);
  END;


  FUNCTION get_kenmerkwaarde (
     p_kenmerk_type VARCHAR2,
     p_kenmerkdomein_key NUMBER,
     p_kenmerk_waarde VARCHAR2)
     RETURN VARCHAR2
  AS
     v_result VARCHAR2(2000);
  BEGIN
  	IF p_kenmerk_type = 'R' OR p_kenmerk_type = 'S' THEN
      v_result := fac.getdomeinwaarde (p_kenmerkdomein_key,
                     p_kenmerk_waarde);
    ELSIF p_kenmerk_type = 'D' THEN
      v_result := TO_CHAR (fac.safe_to_date (p_kenmerk_waarde, 'dd-mm-yyyy'), 'yyyy-mm-dd');
    ELSE
      v_result := p_kenmerk_waarde;
    END IF;
    return v_result;
  END;
END;
/

-- script om dagelijks terugkerende scripts aan te roepen.
CREATE OR REPLACE PROCEDURE pnbr_select_daily_task (p_applname IN VARCHAR2,
                                                    p_applrun  IN VARCHAR2)
AS
BEGIN
   -- notificatiejob om voor bezoekers.
   pnbr.noti_bezoek();
END;
/

-- script om 5-min terugkerende scripts aan te roepen.
CREATE OR REPLACE PROCEDURE pnbr_select_five_min_task (p_applname IN VARCHAR2,
                                                       p_applrun  IN VARCHAR2)
AS
BEGIN
   -- notificatiejob om bezoekers te notificeren naar de gastheer.
   pnbr.noti_bezoek_gastheer();
END;
/

--=============================================================================
-- IMPORTFUNCTIES
-------------------------------------------------------------------------------

CREATE OR REPLACE PROCEDURE pnbr_import_perslid_mut (p_import_key IN NUMBER)
AS
    v_seq_of_columns VARCHAR(255);
BEGIN

    v_seq_of_columns := '0;0;0;4;5;6;7;8;9;11;10;0;0;0;0;13;14;15;0;17;16;18;19;12;0;0;3;1;2;30;31;32;33;34;35;36;37;38;39;40;41;42;43;44;45;46';
    prs.import_perslid(p_import_key, v_seq_of_columns, 'LOCATIECODE;GEBOUWCODE;BOUWLAAGVOLGNUMMER;RUIMTENUMMER;WERKPLEKVOLGNUMMER;OMSCHRIJVING;AFDELINGSCODE;PERSOONACHTERNAAM;TUSSENVOEGSEL;VOORLETTERS;VOORNAAM;TITEL_AANHEF;TELEFOONNUMMER;MOBIEL;EMAIL;FUNCTIE;PERSONEELSNUMMER;LOGINNAAM;PASSWORD%');

    -- we gebruikten kenmerk1 om tijdelijk de verdieping op te slaan. Bij PNBR kunnen namelijk letters in de verdieping staan. Deze
    -- proberen we eruit te werken zodat we op het laatst de verdieping weer om kunnen zetten.
UPDATE fac_imp_perslid
   SET alg_locatie_code = 'PH',
       alg_gebouw_code = '01',
       alg_verdieping_volgnr =
          DECODE (prs_kenmerk1,
                  'B (Begane grond)', 0,
                  'P (Parkeerkuilniveau)', -1,
                  fac.safe_to_number (SUBSTR (prs_kenmerk1, 12, 2))),
       alg_ruimte_nr = DECODE(UPPER(alg_ruimte_nr), 'FLEX', '_FLEX', alg_ruimte_nr)
 WHERE prs_kenmerk2 = 'Provinciehuis - toren' AND prs_kenmerk1 NOT LIKE 'Domein%';

-- Pas de ruimten van de nieuwbouw aan.
UPDATE fac_imp_perslid
   SET alg_locatie_code = 'PH',
       alg_gebouw_code = '02',
       alg_verdieping_volgnr =
          fac.safe_to_number (SUBSTR (prs_kenmerk1, 12, 1)),
       alg_ruimte_nr = COALESCE (alg_ruimte_nr, '_FLEX')
 WHERE prs_kenmerk2 = 'Provinciehuis - nieuwbouw';

UPDATE fac_imp_perslid
   SET alg_locatie_code = 'PH',
       alg_gebouw_code = '01',
       alg_verdieping_volgnr =
          fac.safe_to_number (SUBSTR (prs_kenmerk1, 11, 2)) + 1,
       alg_ruimte_nr = '_FLEX'
 WHERE prs_kenmerk2 = 'Provinciehuis - toren' AND prs_kenmerk1 LIKE 'Domein%';

UPDATE fac_imp_perslid
   SET alg_locatie_code = 'OMWB',
       alg_gebouw_code = 'OMWB',
       alg_verdieping_volgnr = 1,
       alg_ruimte_nr = '1'
 WHERE prs_kenmerk2 = 'Omg.dienst West Brabant';

UPDATE fac_imp_perslid
   SET alg_locatie_code = '27',
       alg_gebouw_code = '27',
       alg_verdieping_volgnr = 1,
       alg_ruimte_nr = '01'
 WHERE prs_kenmerk2 = 'Rekenkamer Brabant/Limburg';

UPDATE fac_imp_perslid
   SET alg_locatie_code = 'ODZOB',
       alg_gebouw_code = 'ODZOB',
       alg_verdieping_volgnr = '1',
       alg_ruimte_nr = '1'
 WHERE prs_kenmerk2 = 'Omg.dienst Zuid-Oost Brabant';

UPDATE fac_imp_perslid
   SET alg_locatie_code = '26',
       alg_gebouw_code = '26',
       alg_verdieping_volgnr = '1',
       alg_ruimte_nr = '01'
 WHERE prs_kenmerk2 = 'Eindhoven';

UPDATE fac_imp_perslid
   SET alg_locatie_code = 'BRU',
       alg_gebouw_code = 'BRU',
       alg_verdieping_volgnr = '1',
       alg_ruimte_nr = '01'
 WHERE prs_kenmerk2 = 'Brussel';

UPDATE fac_imp_perslid
   SET alg_locatie_code = '23',
       alg_gebouw_code = '23',
       alg_verdieping_volgnr = '1',
       alg_ruimte_nr = '01'
 WHERE prs_kenmerk2 = 'Het Noordbrabants museum';

UPDATE fac_imp_perslid
   SET alg_locatie_code = '51',
       alg_gebouw_code = '51',
       alg_verdieping_volgnr = '1',
       alg_ruimte_nr = '01'
 WHERE prs_kenmerk2 = 'Kantoor Den Haag';

UPDATE fac_imp_perslid
   SET alg_locatie_code = 'ODBN',
       alg_gebouw_code = 'ODBN',
       alg_verdieping_volgnr = 1,
       alg_ruimte_nr = '1'
 WHERE prs_kenmerk2 = 'Omg.dienst Brabant Noord';

UPDATE fac_imp_perslid
   SET alg_locatie_code = '5',
       alg_gebouw_code = '5',
       alg_verdieping_volgnr = 1,
       alg_ruimte_nr = '01'
 WHERE prs_kenmerk2 = 'Steunpunt Eethen';

UPDATE fac_imp_perslid
   SET alg_locatie_code = '11',
       alg_gebouw_code = '11',
       alg_verdieping_volgnr = 1,
       alg_ruimte_nr = '01'
 WHERE prs_kenmerk2 = 'Steunpunt Helmond';

UPDATE fac_imp_perslid
   SET alg_locatie_code = '2',
       alg_gebouw_code = '2',
       alg_verdieping_volgnr = 1,
       alg_ruimte_nr = '01'
 WHERE prs_kenmerk2 = 'Steunpunt Oud Gastel';

UPDATE fac_imp_perslid
   SET alg_locatie_code = '07',
       alg_gebouw_code = '07',
       alg_verdieping_volgnr = 1,
       alg_ruimte_nr = '01'
 WHERE prs_kenmerk2 = 'Steunpunt Uden';

UPDATE fac_imp_perslid
   SET alg_locatie_code = '09',
       alg_gebouw_code = '09',
       alg_verdieping_volgnr = 1,
       alg_ruimte_nr = '01'
 WHERE prs_kenmerk2 = 'Steunpunt Westerhoven';

UPDATE fac_imp_perslid
   SET alg_locatie_code = '--',
       alg_gebouw_code = '--',
       alg_verdieping_volgnr = 1,
       alg_ruimte_nr = '01'
 WHERE prs_kenmerk2 = 'Streekhuis Boven Dommel';

UPDATE fac_imp_perslid
   SET alg_locatie_code = '---',
       alg_gebouw_code = '---',
       alg_verdieping_volgnr = 1,
       alg_ruimte_nr = '01'
 WHERE prs_kenmerk2 = 'Streekhuis Kempenland';

UPDATE fac_imp_perslid
   SET alg_locatie_code = '41',
       alg_gebouw_code = '41',
       alg_verdieping_volgnr = 1,
       alg_ruimte_nr = '01'
 WHERE prs_kenmerk2 = 'Streekhuis Liempde';

UPDATE fac_imp_perslid SET alg_ruimte_nr = 'HJZ' WHERE alg_ruimte_nr LIKE 'HJZ%';

COMMIT;

END pnbr_import_perslid_mut;
/


CREATE OR REPLACE PROCEDURE pnbr_update_perslid_mut (
   p_import_key IN NUMBER
) IS

CURSOR c_renew
IS
   SELECT p.prs_perslid_key, p.prs_perslid_nr, pf.prs_perslid_naam_full
     FROM fac_imp_perslid i, prs_perslid p, prs_v_perslid_fullnames_all pf
    WHERE p.prs_perslid_nr = i.prs_perslid_nr
      AND pf.prs_perslid_key = p.prs_perslid_key
      AND p.prs_perslid_verwijder IS NULL
      AND EXISTS (SELECT prs_kenmerklink_waarde
                    FROM prs_kenmerklink kl
                   WHERE kl.prs_kenmerklink_verwijder IS NULL
                     AND prs_link_key = p.prs_perslid_key
                     AND prs_kenmerk_key = 1020)       -- datum uitdienst
    ORDER BY 2;

CURSOR c_mark
IS
   SELECT p.prs_perslid_key, p.prs_perslid_nr, pf.prs_perslid_naam_full
     FROM fac_imp_perslid i, prs_perslid p, prs_v_perslid_fullnames_all pf
    WHERE p.prs_perslid_nr = i.prs_perslid_nr(+)
      AND pf.prs_perslid_key = p.prs_perslid_key
      AND p.prs_perslid_nr    IS NOT NULL
      AND i.prs_perslid_nr IS NULL
      AND p.prs_perslid_verwijder IS NULL
      AND NOT EXISTS (SELECT prs_kenmerklink_waarde
                        FROM prs_kenmerklink kl
                       WHERE kl.prs_kenmerklink_verwijder IS NULL
                         AND prs_link_key = p.prs_perslid_key
                         AND prs_kenmerk_key = 1020)       -- datum uitdienst
    ORDER BY 2;

CURSOR c_del
IS
    SELECT p.prs_perslid_key, p.prs_perslid_nr, pf.prs_perslid_naam_full
      FROM fac_imp_perslid i, prs_perslid p, prs_v_perslid_fullnames_all pf
     WHERE p.prs_perslid_nr = i.prs_perslid_nr(+)
       AND pf.prs_perslid_key = p.prs_perslid_key
       AND p.prs_perslid_nr IS NOT NULL
       AND i.prs_perslid_nr IS NULL
       AND p.prs_perslid_verwijder IS NULL
       AND ADD_MONTHS (
              COALESCE (
                 (SELECT fac.safe_to_date (prs_kenmerklink_waarde, 'dd-mm-yyyy')
                    FROM prs_kenmerklink kl
                   WHERE kl.prs_kenmerklink_verwijder IS NULL
                     AND prs_link_key = p.prs_perslid_key
                     AND prs_kenmerk_key = 1020),
                 SYSDATE),
              2) < SYSDATE
    ORDER BY 2;

CURSOR c_imp
IS
   SELECT *
     FROM fac_imp_file
    WHERE fac_import_key = p_import_key;

v_perslid_key     NUMBER;
v_perslid_nr      VARCHAR2(100);
v_kostenplaats_nr VARCHAR2(100);
v_count           NUMBER;

BEGIN
	-- generic update

	SELECT count(*)
	  INTO v_count
	  FROM fac_imp_perslid;

	IF v_count < 1000
	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;

  prs.update_perslid (p_import_key, 'NR', 'A');

  -- ken iedereen een profiel toe
  UPDATE prs_perslid SET fac_profiel_key = 1 WHERE fac_profiel_key IS NULL;

  -- clear flexfield 'Datum uitdienst' for perslid records if people tagged with an 'uitdienst datum' are present again in the import file.
  -- their contract is probably renewed.
  FOR rec IN c_renew
  LOOP
     BEGIN
        PRS.upsertkenmerk (1020, rec.prs_perslid_key, NULL);
        fac.imp_writelog (p_import_key, 'I', 'Uitdienstdatum is verwijderd [' || rec.prs_perslid_naam_full || ']', '');
     END;
  END LOOP;

  -- set flexfield 'Datum uitdienst' for perslid records if people registered with perslid_nr are not present in the import file.
  -- they will be deleted after 2 months.
  FOR rec IN c_mark
  LOOP
     BEGIN
        PRS.upsertkenmerk (1020, rec.prs_perslid_key, TO_CHAR(SYSDATE, 'dd-mm-yyyy'));
        fac.imp_writelog (p_import_key, 'I', 'Uitdienstdatum wordt gezet [' || rec.prs_perslid_naam_full || ']', '');
		UPDATE prs_perslid SET prs_perslid_email = NULL WHERE rec.prs_perslid_key = prs_perslid_key;
     END;
  END LOOP;


  -- 2 maanden na het zetten van de uitdienst datum worden de medewerkers daadwerkelijk verwijderd.
  FOR rec IN c_del
  LOOP
     BEGIN
       prs.delete_perslid (p_import_key, rec.prs_perslid_key);
     END;
  END LOOP;

  -- we gaan conflicten in de login notificeren naar Menno Udo (key = 3371)
  SELECT COUNT (*)
    INTO v_count
    FROM imp_log
   WHERE fac_import_key = p_import_key
     AND imp_log_omschrijving LIKE '%PRS_C_PRS_PERSLID_OSLOGIN%';

  -- we notificeren alleen op maandag
  IF v_count > 0 AND to_char(sysdate, 'D') = 2
  THEN
    INSERT INTO fac_notificatie (fac_notificatie_status,
                                 fac_notificatie_oms,
                                 prs_perslid_key_sender,
                                 prs_perslid_key_receiver)
        VALUES (2,
                'Aantal geimporteerde gebruikers met conflict in de login: ' || v_count,
                4,
                3371);
  END IF;

  INSERT INTO prs_perslidkostenplaats (prs_perslid_key, prs_perslidkostenplaats_boeken)
  SELECT prs_perslid_key, 1
    FROM prs_v_aanwezigperslid p
   WHERE NOT EXISTS (
       SELECT pk.prs_perslid_key
         FROM prs_perslidkostenplaats pk
        WHERE p.prs_perslid_key = pk.prs_perslid_key);

END pnbr_update_perslid_mut;
/



CREATE OR REPLACE PROCEDURE pnbr_import_organisatie_mut (p_import_key IN NUMBER)
AS
   c_fielddelimitor VARCHAR2 (1) := ';';
   v_newline VARCHAR2 (1000);                                                                              -- Input line
   v_errormsg VARCHAR2 (1000);
   oracle_err_num NUMBER;
   oracle_err_mes VARCHAR2 (200);
   header_is_valid NUMBER;
   v_count NUMBER;
   v_ongeldig NUMBER (1);
   v_mode NUMBER (1);
   v_aanduiding VARCHAR2 (200);
   v_all_null BOOLEAN;
   v_count_error NUMBER (10);
   v_count_tot NUMBER (10);
   v_count_import NUMBER (10);
   -- De importvelden:
   v_bedrijf_naam VARCHAR2 (256);
   v_afdeling_naam VARCHAR2 (256);
   v_afdeling_naam_parent VARCHAR2 (256);
   v_afdeling_omschrijving VARCHAR2 (256);
   v_kostenplaats VARCHAR2 (256);


   -- PRS_BEDRIJF
   CURSOR c1
   IS
        SELECT   *
          FROM   fac_imp_file
         WHERE   fac_import_key = p_import_key
      ORDER BY   fac_imp_file_index;
BEGIN
   -- Eerst opruiming
   DELETE FROM   imp_log
         WHERE fac_import_key = p_import_key;

   DELETE FROM   fac_imp_organisatie;

   COMMIT;
   v_count_error := 0;
   header_is_valid := 0;
   v_count_tot := 0;
   v_count_import := 0;

   FOR rec1 IN c1
   LOOP
      BEGIN
         v_errormsg := 'Fout FETCH te importeren rij';

         v_newline := rec1.fac_imp_file_line;
         v_errormsg := 'Fout opvragen te importeren rij';
         v_aanduiding := '';
         v_ongeldig := 0;

         -- Lees alle veldwaarden
         fac.imp_getfield (v_newline, c_fielddelimitor, v_bedrijf_naam);
         fac.imp_getfield (v_newline, c_fielddelimitor, v_afdeling_naam_parent);
         fac.imp_getfield (v_newline, c_fielddelimitor, v_afdeling_naam);
         fac.imp_getfield (v_newline, c_fielddelimitor, v_afdeling_omschrijving);
         fac.imp_getfield (v_newline, c_fielddelimitor, v_kostenplaats);
         v_aanduiding := v_bedrijf_naam || '|' || v_afdeling_naam || '|' || v_afdeling_omschrijving || '| ';

         IF (header_is_valid = 0)
         THEN
            IF     UPPER (v_bedrijf_naam) = 'BEDRIJFSNAAM'
               AND UPPER (v_afdeling_naam_parent) = 'AFDELINGSCODEPARENT'
            THEN
               header_is_valid := 1;
            END IF;
         ELSE
            v_count_tot := v_count_tot + 1;
            v_bedrijf_naam := TRIM (v_bedrijf_naam);

            IF LENGTH (v_bedrijf_naam) > 60
            THEN
               v_bedrijf_naam := SUBSTR (v_bedrijf_naam, 1, 60);
               fac.imp_writelog (p_import_key,
                                 'W',
                                 v_aanduiding || 'Bedrijf-aanduiding is te lang',
                                 'Aanduiding wordt afgebroken tot [' || v_bedrijf_naam || ']'
                                );
            END IF;

            --
            v_afdeling_naam := TRIM (v_afdeling_naam);

            IF LENGTH (v_afdeling_naam) > 10
            THEN
               v_afdeling_naam := SUBSTR (v_afdeling_naam, 1, 10);
               fac.imp_writelog (p_import_key,
                                 'W',
                                 v_aanduiding || 'Afdeling-aanduiding is te lang',
                                 'Aanduiding wordt afgebroken tot [' || v_afdeling_naam || ']'
                                );
            END IF;

            --
            v_afdeling_naam_parent := TRIM (v_afdeling_naam_parent);

            IF LENGTH (v_afdeling_naam_parent) > 10
            THEN
               v_afdeling_naam_parent := SUBSTR (v_afdeling_naam_parent, 1, 10);
               fac.imp_writelog (p_import_key,
                                 'W',
                                 v_aanduiding || 'Afdeling-aanduiding is te lang',
                                 'Aanduiding wordt afgebroken tot [' || v_afdeling_naam_parent || ']'
                                );
            END IF;

            --
            v_afdeling_omschrijving := TRIM (v_afdeling_omschrijving);

            IF LENGTH (v_afdeling_omschrijving) > 60
            THEN
               v_afdeling_omschrijving := SUBSTR (v_afdeling_omschrijving, 1, 60);
               fac.imp_writelog (p_import_key,
                                 'W',
                                 v_aanduiding || 'Afdelingsomschrijving is te lang',
                                 'Aanduiding wordt afgebroken tot [' || v_afdeling_omschrijving || ']'
                                );
            END IF;

            v_kostenplaats := LTRIM(v_kostenplaats, '0');
            v_all_null :=
                   (v_bedrijf_naam IS NULL)
               AND (v_afdeling_naam IS NULL)
               AND (v_afdeling_naam_parent IS NULL)
               AND (v_afdeling_omschrijving IS NULL);

            -- Insert geformatteerde import record
            IF v_ongeldig = 0
            THEN
               v_errormsg := 'Fout bij toevoegen te impoteren bedrijf/afdeling [' || v_afdeling_naam || ']';

               INSERT INTO fac_imp_organisatie (
                                                   prs_bedrijf_naam,
                                                   prs_afdeling_naam,
                                                   prs_afdeling_naam_parent,
                                                   prs_afdeling_omschrijving,
                                                   prs_kostenplaats_nr
                          )
                 VALUES   (
                              v_bedrijf_naam,
                              v_afdeling_naam,
                              v_afdeling_naam_parent,
                              v_afdeling_omschrijving,
                              v_kostenplaats
                          );

               v_count_import := v_count_import + 1;
            END IF;
         END IF;
      END;
   END LOOP;

   IF (header_is_valid = 0)
   THEN
      fac.imp_writelog (p_import_key,
                        'E',
                        v_aanduiding || 'Ongeldig importbestand',
                        'Geen geldige headerregel aanwezig'
                       );
   ELSE
      fac.imp_writelog (p_import_key, 'S', 'Bedrijf: aantal ingelezen regels: ' || TO_CHAR (v_count_tot), '');
      fac.imp_writelog (p_import_key,
                        'S',
                        'Bedrijf: aantal ongeldige importregels: ' || TO_CHAR (v_count_tot - v_count_import),
                        ''
                       );
   END IF;

   -- De top elementen in de import hebben een parent die wijst naar
   -- een niet bestaande afdeling. Daarom maken we die maar leeg.
   UPDATE fac_imp_organisatie i
      SET prs_afdeling_naam_parent = NULL
    WHERE NOT EXISTS (SELECT prs_afdeling_naam
                        FROM fac_imp_organisatie i2
                       WHERE i.prs_afdeling_naam_parent = i2.prs_afdeling_naam);

   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, '');
END pnbr_import_organisatie_mut;
/


CREATE OR REPLACE PROCEDURE pnbr_update_organisatie_mut (p_import_key IN NUMBER)
AS
   CURSOR c
   IS
      SELECT i.*, a.prs_afdeling_key
      FROM fac_imp_organisatie i, prs_afdeling a
      WHERE i.prs_afdeling_naam = a.prs_afdeling_naam(+);

   v_errormsg               VARCHAR (200);
   v_errorhint              VARCHAR (200);
   oracle_err_mes           VARCHAR2 (150);
   currentversion           fac_module.fac_module_version%TYPE;
   v_aanduiding             VARCHAR (100);
   v_prs_kostenplaats_oms   PRS_KOSTENPLAATS.PRS_KOSTENPLAATS_OMSCHRIJVING%TYPE;
   v_prs_bedrijf_key        NUMBER;
   v_prs_afd_parent_key     NUMBER;
   v_prs_kostenplaats_key   NUMBER;
   v_prs_afdeling_key       NUMBER;
   v_prs_afd_niveau_parent  NUMBER;
   v_count                  NUMBER;
   v_newcount               NUMBER;
   v_oldcount               NUMBER;
   v_impcount               NUMBER;

BEGIN

   SELECT MAX (fac_module_version)
   INTO currentversion
   FROM fac_module;

   fac.imp_writelog (p_import_key,
                     'I',
                     'Facilitor afdeling import version ' || currentversion,
                     '$Revision$'
   );

   -- How many active records are now present?
   SELECT COUNT ( * )
   INTO v_oldcount
   FROM prs_afdeling
   WHERE (prs_afdeling_parentkey IS NULL OR prs_afdeling_parentkey <> 1)
         AND prs_afdeling_verwijder IS NULL;

   -- How many active records are imported?
   SELECT COUNT ( * )
   INTO v_impcount
   FROM fac_imp_organisatie;

   IF v_impcount < 50
   THEN
      fac.imp_writelog (p_import_key,
                        'E',
                           'Het verschil tussen de actieve afdelingen ('
                        || TO_CHAR (v_oldcount)
                        || ') en geimporteerde aantallen ('
                        || TO_CHAR (v_impcount)
                        || ') is te groot',
                        'Zie Specificatie'
      );
      RETURN;
   END IF;

   FOR rec IN c
   LOOP
      v_aanduiding   := rec.prs_afdeling_naam;
      v_errorhint    := 'Kijk of bedrijf al bestaat';

      -- Bestaat het bedrijf al?
      BEGIN
         SELECT prs_bedrijf_key
         INTO v_prs_bedrijf_key
         FROM prs_bedrijf
         WHERE UPPER (prs_bedrijf_naam) = UPPER (rec.prs_bedrijf_naam)
               AND prs_bedrijf_verwijder IS NULL;

         v_errorhint   := 'Kijk of kostenplaats al bestaat';
         v_prs_kostenplaats_key := NULL;
         BEGIN
            SELECT prs_kostenplaats_key
            INTO v_prs_kostenplaats_key
            FROM prs_kostenplaats
            WHERE prs_kostenplaats_verwijder IS NULL
                  AND prs_kostenplaats_nr = rec.prs_kostenplaats_nr;

            -- Komt deze kostenplaats ook misschien vaker voor?
            SELECT count(prs_kostenplaats_nr)
              INTO v_count
              FROM fac_imp_organisatie
             WHERE prs_kostenplaats_nr = rec.prs_kostenplaats_nr;

            IF v_count > 1
            THEN
               -- zo ja, dan pakken we de eerste omschrijving die we in het importbestand tegenkomen.
               FOR rec_k IN (SELECT prs_afdeling_omschrijving
                               FROM fac_imp_organisatie
                              WHERE prs_kostenplaats_nr = rec.prs_kostenplaats_nr)
               LOOP
                  v_prs_kostenplaats_oms := rec_k.prs_afdeling_omschrijving;
                  EXIT;
               END LOOP;
            ELSE
               v_prs_kostenplaats_oms := rec.prs_afdeling_omschrijving;
            END IF;

            UPDATE prs_kostenplaats
            SET prs_kostenplaats_omschrijving   =
                   v_prs_kostenplaats_oms
            WHERE prs_kostenplaats_key = v_prs_kostenplaats_key;
         EXCEPTION
            WHEN NO_DATA_FOUND
            THEN
               v_errorhint   := 'Nieuwe kostenplaats toevoegen';

               IF rec.prs_kostenplaats_nr IS NOT NULL THEN
                  INSERT INTO prs_kostenplaats
                  (
                      prs_kostenplaats_nr,
                      prs_kostenplaats_omschrijving,
                      prs_kostenplaats_module
                  )
                  VALUES (
                            rec.prs_kostenplaats_nr,
                            rec.prs_afdeling_omschrijving,
                            'PRS'
                         )
                  RETURNING prs_kostenplaats_key INTO v_prs_kostenplaats_key;
               END IF;
         END;

         v_errorhint   := 'Kijk of parent bestaat';

         IF rec.prs_afdeling_naam_parent IS NOT NULL
         THEN
            SELECT prs_afdeling_key
            INTO v_prs_afd_parent_key
            FROM prs_afdeling
            WHERE prs_afdeling_verwijder IS NULL
                  AND prs_afdeling_naam = rec.prs_afdeling_naam_parent;
         ELSE
            v_prs_afd_parent_key   := NULL;
         END IF;

         v_errorhint   := 'Zoek het niveau van de parent';
         IF v_prs_afd_parent_key IS NOT NULL
         THEN
            SELECT prs_kenmerklink_waarde
              INTO v_prs_afd_niveau_parent
              FROM prs_kenmerklink
             WHERE     prs_kenmerk_key = 1081             -- afdelingsniveau
                   AND prs_link_key = v_prs_afd_parent_key;
         ELSE
            v_prs_afd_niveau_parent   := 0;
         END IF;
         v_prs_afd_niveau_parent := v_prs_afd_niveau_parent +1;

         IF rec.prs_afdeling_key IS NULL
         THEN
            -- toevoegen afdeling
            v_errorhint   := 'Toevoegen afdeling';

            INSERT INTO prs_afdeling
           (
               prs_bedrijf_key,
               prs_afdeling_parentkey,
               prs_afdeling_naam,
               prs_afdeling_omschrijving,
               prs_kostenplaats_key
           )
            VALUES (
                      v_prs_bedrijf_key,
                      NULL,
                      rec.prs_afdeling_naam,
                      rec.prs_afdeling_omschrijving,
                      v_prs_kostenplaats_key
                   )
            RETURNING prs_afdeling_key INTO v_prs_afdeling_key;
         ELSE
            -- aanpassen afdeling
            v_errorhint   := 'Aanpassen afdeling';

            UPDATE prs_afdeling
            SET prs_bedrijf_key             = v_prs_bedrijf_key,
                prs_afdeling_parentkey      = NULL,
                prs_afdeling_naam           = rec.prs_afdeling_naam,
                prs_afdeling_omschrijving   = rec.prs_afdeling_omschrijving,
                prs_kostenplaats_key        = v_prs_kostenplaats_key
            WHERE prs_afdeling_key = rec.prs_afdeling_key;
            v_prs_afdeling_key := rec.prs_afdeling_key;
         END IF;

         PRS.upsertkenmerk (1080, v_prs_afdeling_key, v_prs_afd_parent_key);
         PRS.upsertkenmerk (1081, v_prs_afdeling_key, v_prs_afd_niveau_parent);

      EXCEPTION
         WHEN OTHERS
         THEN
            oracle_err_mes   := SUBSTR (SQLERRM, 1, 100);
            v_errormsg       := 'error ' || SQLCODE || '/' || oracle_err_mes;
            fac.imp_writelog (p_import_key,
                              'E',
                              v_errormsg,
                              v_errorhint || '-' || v_aanduiding
            );
      END;
   END LOOP;

   SELECT COUNT ( * )
   INTO v_newcount
   FROM prs_afdeling
   WHERE (prs_afdeling_parentkey IS NULL OR prs_afdeling_parentkey <> 1)
         AND prs_afdeling_verwijder IS NULL;


   fac.imp_writelog (p_import_key,
                     'S',
                     'Aantal ingelezen afdelingen: ' || TO_CHAR (v_impcount),
                     ''
   );
   fac.imp_writelog (p_import_key,
                     'S',
                        'Aantal afdelingen vooraf: '
                     || TO_CHAR (v_oldcount)
                     || '  nu: '
                     || TO_CHAR (v_newcount),
                     ''
   );

   UPDATE prs_kostenplaats k
      SET prs_kostenplaats_verwijder = SYSDATE
    WHERE NOT EXISTS (SELECT i.prs_kostenplaats_nr
                        FROM fac_imp_organisatie i
                       WHERE i.prs_kostenplaats_nr = k.prs_kostenplaats_nr)
      AND prs_kostenplaats_verwijder IS NULL
      AND prs_kostenplaats_module = 'PRS';

    UPDATE prs_kostenplaats k
       SET prs_kostenplaats_omschrijving = 'Externe dienstverlening'
     WHERE prs_kostenplaats_verwijder IS NULL
           AND prs_kostenplaats_module = 'PRS'
           AND prs_kostenplaats_nr = 5034;

   UPDATE prs_afdeling a
      SET prs_afdeling_omschrijving =
             SUBSTR ('Inactief - ' || prs_afdeling_omschrijving, 1, 60)
    WHERE     prs_afdeling_key <> 1
          AND prs_afdeling_verwijder IS NULL
          AND prs_afdeling_omschrijving NOT LIKE 'Inactief - %'
          AND NOT EXISTS (SELECT prs_afdeling_naam
                            FROM fac_imp_organisatie i
                           WHERE i.prs_afdeling_naam = a.prs_afdeling_naam);



END pnbr_update_organisatie_mut;
/


CREATE OR REPLACE VIEW pnbr_v_afdeling
(
   prs_bedrijf_key,
   prs_afdeling_key,
   prs_afdeling_parentkey
)
AS
   SELECT a.prs_bedrijf_key, a.prs_afdeling_key, kl.prs_afdeling_parentkey
     FROM prs_afdeling a,
          (SELECT prs_link_key prs_afdeling_key, prs_kenmerklink_waarde prs_afdeling_parentkey
             FROM prs_kenmerklink
            WHERE prs_kenmerk_key = 1080) kl
    WHERE a.prs_afdeling_key = kl.prs_afdeling_key(+);


CREATE OR REPLACE VIEW pnbr_v_afdeling_boom
(
   niveau,
   prs_bedrijf_key,
   prs_afdeling_key,
   prs_afdeling_key1,
   prs_afdeling_key2,
   prs_afdeling_key3,
   prs_afdeling_key4,
   prs_afdeling_key5,
   prs_afdeling_key6,
   prs_afdeling_key7,
   prs_afdeling_key8,
   prs_afdeling_key9,
   prs_afdeling_key10
)
AS
   SELECT '1' niveau,
          a1.prs_bedrijf_key,
          a1.prs_afdeling_key,
          a1.prs_afdeling_key,
          TO_NUMBER (NULL),
          TO_NUMBER (NULL),
          TO_NUMBER (NULL),
          TO_NUMBER (NULL),
          TO_NUMBER (NULL),
          TO_NUMBER (NULL),
          TO_NUMBER (NULL),
          TO_NUMBER (NULL),
          TO_NUMBER (NULL)
     FROM pnbr_v_afdeling a1
    WHERE a1.prs_afdeling_parentkey IS NULL
   UNION
   SELECT '2' niveau,
          a1.prs_bedrijf_key,
          a2.prs_afdeling_key,
          a1.prs_afdeling_key,
          a2.prs_afdeling_key,
          TO_NUMBER (NULL),
          TO_NUMBER (NULL),
          TO_NUMBER (NULL),
          TO_NUMBER (NULL),
          TO_NUMBER (NULL),
          TO_NUMBER (NULL),
          TO_NUMBER (NULL),
          TO_NUMBER (NULL)
     FROM pnbr_v_afdeling a1, pnbr_v_afdeling a2
    WHERE a2.prs_afdeling_parentkey = a1.prs_afdeling_key AND a1.prs_afdeling_parentkey IS NULL
   UNION
   SELECT '3' niveau,
          a1.prs_bedrijf_key,
          a3.prs_afdeling_key,
          a1.prs_afdeling_key,
          a2.prs_afdeling_key,
          a3.prs_afdeling_key,
          TO_NUMBER (NULL),
          TO_NUMBER (NULL),
          TO_NUMBER (NULL),
          TO_NUMBER (NULL),
          TO_NUMBER (NULL),
          TO_NUMBER (NULL),
          TO_NUMBER (NULL)
     FROM pnbr_v_afdeling a1, pnbr_v_afdeling a2, pnbr_v_afdeling a3
    WHERE a2.prs_afdeling_parentkey = a1.prs_afdeling_key
      AND a3.prs_afdeling_parentkey = a2.prs_afdeling_key
      AND a1.prs_afdeling_parentkey IS NULL
   UNION
   SELECT '4' niveau,
          a1.prs_bedrijf_key,
          a4.prs_afdeling_key,
          a1.prs_afdeling_key,
          a2.prs_afdeling_key,
          a3.prs_afdeling_key,
          a4.prs_afdeling_key,
          TO_NUMBER (NULL),
          TO_NUMBER (NULL),
          TO_NUMBER (NULL),
          TO_NUMBER (NULL),
          TO_NUMBER (NULL),
          TO_NUMBER (NULL)
     FROM pnbr_v_afdeling a1,
          pnbr_v_afdeling a2,
          pnbr_v_afdeling a3,
          pnbr_v_afdeling a4
    WHERE a2.prs_afdeling_parentkey = a1.prs_afdeling_key
      AND a3.prs_afdeling_parentkey = a2.prs_afdeling_key
      AND a4.prs_afdeling_parentkey = a3.prs_afdeling_key
      AND a1.prs_afdeling_parentkey IS NULL
   UNION
   SELECT '5' niveau,
          a1.prs_bedrijf_key,
          a5.prs_afdeling_key,
          a1.prs_afdeling_key,
          a2.prs_afdeling_key,
          a3.prs_afdeling_key,
          a4.prs_afdeling_key,
          a5.prs_afdeling_key,
          TO_NUMBER (NULL),
          TO_NUMBER (NULL),
          TO_NUMBER (NULL),
          TO_NUMBER (NULL),
          TO_NUMBER (NULL)
     FROM pnbr_v_afdeling a1,
          pnbr_v_afdeling a2,
          pnbr_v_afdeling a3,
          pnbr_v_afdeling a4,
          pnbr_v_afdeling a5
    WHERE a2.prs_afdeling_parentkey = a1.prs_afdeling_key
      AND a3.prs_afdeling_parentkey = a2.prs_afdeling_key
      AND a4.prs_afdeling_parentkey = a3.prs_afdeling_key
      AND a5.prs_afdeling_parentkey = a4.prs_afdeling_key
      AND a1.prs_afdeling_parentkey IS NULL
   UNION
   SELECT '6' niveau,
          a1.prs_bedrijf_key,
          a6.prs_afdeling_key,
          a1.prs_afdeling_key,
          a2.prs_afdeling_key,
          a3.prs_afdeling_key,
          a4.prs_afdeling_key,
          a5.prs_afdeling_key,
          a6.prs_afdeling_key,
          TO_NUMBER (NULL),
          TO_NUMBER (NULL),
          TO_NUMBER (NULL),
          TO_NUMBER (NULL)
     FROM pnbr_v_afdeling a1,
          pnbr_v_afdeling a2,
          pnbr_v_afdeling a3,
          pnbr_v_afdeling a4,
          pnbr_v_afdeling a5,
          pnbr_v_afdeling a6
    WHERE a2.prs_afdeling_parentkey = a1.prs_afdeling_key
      AND a3.prs_afdeling_parentkey = a2.prs_afdeling_key
      AND a4.prs_afdeling_parentkey = a3.prs_afdeling_key
      AND a5.prs_afdeling_parentkey = a4.prs_afdeling_key
      AND a6.prs_afdeling_parentkey = a5.prs_afdeling_key
      AND a1.prs_afdeling_parentkey IS NULL
   UNION
   SELECT '7' niveau,
          a1.prs_bedrijf_key,
          a7.prs_afdeling_key,
          a1.prs_afdeling_key,
          a2.prs_afdeling_key,
          a3.prs_afdeling_key,
          a4.prs_afdeling_key,
          a5.prs_afdeling_key,
          a6.prs_afdeling_key,
          a7.prs_afdeling_key,
          TO_NUMBER (NULL),
          TO_NUMBER (NULL),
          TO_NUMBER (NULL)
     FROM pnbr_v_afdeling a1,
          pnbr_v_afdeling a2,
          pnbr_v_afdeling a3,
          pnbr_v_afdeling a4,
          pnbr_v_afdeling a5,
          pnbr_v_afdeling a6,
          pnbr_v_afdeling a7
    WHERE a2.prs_afdeling_parentkey = a1.prs_afdeling_key
      AND a3.prs_afdeling_parentkey = a2.prs_afdeling_key
      AND a4.prs_afdeling_parentkey = a3.prs_afdeling_key
      AND a5.prs_afdeling_parentkey = a4.prs_afdeling_key
      AND a6.prs_afdeling_parentkey = a5.prs_afdeling_key
      AND a7.prs_afdeling_parentkey = a6.prs_afdeling_key
      AND a1.prs_afdeling_parentkey IS NULL
   UNION
   SELECT '8' niveau,
          a1.prs_bedrijf_key,
          a8.prs_afdeling_key,
          a1.prs_afdeling_key,
          a2.prs_afdeling_key,
          a3.prs_afdeling_key,
          a4.prs_afdeling_key,
          a5.prs_afdeling_key,
          a6.prs_afdeling_key,
          a7.prs_afdeling_key,
          a8.prs_afdeling_key,
          TO_NUMBER (NULL),
          TO_NUMBER (NULL)
     FROM pnbr_v_afdeling a1,
          pnbr_v_afdeling a2,
          pnbr_v_afdeling a3,
          pnbr_v_afdeling a4,
          pnbr_v_afdeling a5,
          pnbr_v_afdeling a6,
          pnbr_v_afdeling a7,
          pnbr_v_afdeling a8
    WHERE a2.prs_afdeling_parentkey = a1.prs_afdeling_key
      AND a3.prs_afdeling_parentkey = a2.prs_afdeling_key
      AND a4.prs_afdeling_parentkey = a3.prs_afdeling_key
      AND a5.prs_afdeling_parentkey = a4.prs_afdeling_key
      AND a6.prs_afdeling_parentkey = a5.prs_afdeling_key
      AND a7.prs_afdeling_parentkey = a6.prs_afdeling_key
      AND a8.prs_afdeling_parentkey = a7.prs_afdeling_key
      AND a1.prs_afdeling_parentkey IS NULL
   UNION
   SELECT '9' niveau,
          a1.prs_bedrijf_key,
          a9.prs_afdeling_key,
          a1.prs_afdeling_key,
          a2.prs_afdeling_key,
          a3.prs_afdeling_key,
          a4.prs_afdeling_key,
          a5.prs_afdeling_key,
          a6.prs_afdeling_key,
          a7.prs_afdeling_key,
          a8.prs_afdeling_key,
          a9.prs_afdeling_key,
          TO_NUMBER (NULL)
     FROM pnbr_v_afdeling a1,
          pnbr_v_afdeling a2,
          pnbr_v_afdeling a3,
          pnbr_v_afdeling a4,
          pnbr_v_afdeling a5,
          pnbr_v_afdeling a6,
          pnbr_v_afdeling a7,
          pnbr_v_afdeling a8,
          pnbr_v_afdeling a9
    WHERE a2.prs_afdeling_parentkey = a1.prs_afdeling_key
      AND a3.prs_afdeling_parentkey = a2.prs_afdeling_key
      AND a4.prs_afdeling_parentkey = a3.prs_afdeling_key
      AND a5.prs_afdeling_parentkey = a4.prs_afdeling_key
      AND a6.prs_afdeling_parentkey = a5.prs_afdeling_key
      AND a7.prs_afdeling_parentkey = a6.prs_afdeling_key
      AND a8.prs_afdeling_parentkey = a7.prs_afdeling_key
      AND a9.prs_afdeling_parentkey = a8.prs_afdeling_key
      AND a1.prs_afdeling_parentkey IS NULL
   UNION
   SELECT '10' niveau,
          a1.prs_bedrijf_key,
          a10.prs_afdeling_key,
          a1.prs_afdeling_key,
          a2.prs_afdeling_key,
          a3.prs_afdeling_key,
          a4.prs_afdeling_key,
          a5.prs_afdeling_key,
          a6.prs_afdeling_key,
          a7.prs_afdeling_key,
          a8.prs_afdeling_key,
          a9.prs_afdeling_key,
          a10.prs_afdeling_key
     FROM pnbr_v_afdeling a1,
          pnbr_v_afdeling a2,
          pnbr_v_afdeling a3,
          pnbr_v_afdeling a4,
          pnbr_v_afdeling a5,
          pnbr_v_afdeling a6,
          pnbr_v_afdeling a7,
          pnbr_v_afdeling a8,
          pnbr_v_afdeling a9,
          pnbr_v_afdeling a10
    WHERE a2.prs_afdeling_parentkey = a1.prs_afdeling_key
      AND a3.prs_afdeling_parentkey = a2.prs_afdeling_key
      AND a4.prs_afdeling_parentkey = a3.prs_afdeling_key
      AND a5.prs_afdeling_parentkey = a4.prs_afdeling_key
      AND a6.prs_afdeling_parentkey = a5.prs_afdeling_key
      AND a7.prs_afdeling_parentkey = a6.prs_afdeling_key
      AND a8.prs_afdeling_parentkey = a7.prs_afdeling_key
      AND a9.prs_afdeling_parentkey = a8.prs_afdeling_key
      AND a10.prs_afdeling_parentkey = a9.prs_afdeling_key
      AND a1.prs_afdeling_parentkey IS NULL;


-- import om objectinformatie via de api in te lezen
CREATE OR REPLACE PROCEDURE pnbr_import_ins_mut (p_import_key IN NUMBER)
AS
BEGIN
   fac_import_ins (p_import_key);
END;
/

CREATE OR REPLACE PROCEDURE pnbr_update_ins_mut (p_import_key IN NUMBER)
AS
   CURSOR c
   IS
      SELECT (SELECT MAX (ins_deel_key)
                FROM ins_v_aanwezigdeel ad
               WHERE UPPER (ad.ins_deel_omschrijving) = UPPER (i.ins_deel_omschrijving))
                ins_deel_key, i.*
        FROM fac_imp_ins i;

   CURSOR c_del
   IS
      SELECT d.ins_deel_key
        FROM ins_v_deel_gegevens ad, ins_deel d
       WHERE ad.ins_deel_key = d.ins_deel_key
         AND COALESCE(d.ins_deel_vervaldatum, sysdate + 1) > sysdate
         -- Het betreffende object komt niet meer voor in het importbestand
         AND NOT EXISTS (SELECT ins_deel_omschrijving
                           FROM fac_imp_ins i
                          WHERE UPPER (i.ins_deel_omschrijving) = UPPER (ad.ins_deel_omschrijving))
         -- En het importbestand bevat objecten van dit objectsoort.
         AND (SELECT COUNT ( * )
                FROM fac_imp_ins
               WHERE UPPER (ins_srtdeel_omschrijving) = ad.ins_srtdeel_upper) > 0;

   PROCEDURE log_inskenmerk (p_import_key IN NUMBER, p_str IN VARCHAR2, p_deel_key IN NUMBER)
   AS
      v_srtkenmerk_key            ins_srtkenmerk.ins_srtkenmerk_key%TYPE;
      v_kenmerk_key               ins_kenmerk.ins_kenmerk_key%TYPE;
      v_waarde_new                ins_kenmerkdeel.ins_kenmerkdeel_waarde%TYPE;
      v_kenmerk_type              ins_srtkenmerk.ins_srtkenmerk_kenmerktype%TYPE;
      v_srtkenmerk_omschrijving   ins_srtkenmerk.ins_srtkenmerk_omschrijving%TYPE;
      v_waarde_old                ins_kenmerkdeel.ins_kenmerkdeel_waarde%TYPE;
      v_kenmerkdomein_key         fac_kenmerkdomein.fac_kenmerkdomein_key%TYPE;
      v_kenmerk_niveau            ins_kenmerk.ins_kenmerk_niveau%TYPE;
      v_kenmerkdeel_key           ins_kenmerkdeel.ins_kenmerkdeel_key%TYPE;
      v_srtnotificatie_key        fac_srtnotificatie.fac_srtnotificatie_key%TYPE;
      v_log                       imp_log.imp_log_omschrijving%TYPE;
      v_errormsg                  VARCHAR2 (200);
      oracle_err_num              NUMBER;
      oracle_err_mes              VARCHAR2 (200);
   BEGIN
      IF p_str IS NOT NULL AND INSTR (p_str, '=') > 1
      THEN
         v_srtkenmerk_key := SUBSTR (p_str, 1, INSTR (p_str, '|') - 1);
         v_waarde_new := SUBSTR (p_str, INSTR (p_str, '=') + 1, 100);

         -- vind de bijbehorende kenmerk key
         SELECT k.ins_kenmerk_key, k.ins_kenmerk_niveau
           INTO v_kenmerk_key, v_kenmerk_niveau
           FROM ins_kenmerk k, ins_v_deel_gegevens dg
          WHERE ins_srtkenmerk_key = v_srtkenmerk_key AND dg.ins_deel_key = p_deel_key
            AND ( (k.ins_kenmerk_niveau = 'S' AND k.ins_srtinstallatie_key = dg.ins_srtdeel_key)
              OR (k.ins_kenmerk_niveau = 'G' AND k.ins_srtinstallatie_key = dg.ins_srtgroep_key)
              OR (k.ins_kenmerk_niveau = 'D' AND k.ins_srtinstallatie_key = dg.ins_discipline_key));

         -- vind de srtkenmerkgegevens die nodig zijn om de waarde te bepalen en de naam van het kenmerk in de log op te nemen.
         SELECT sk.ins_srtkenmerk_kenmerktype,
                sk.fac_kenmerkdomein_key,
                sk.ins_srtkenmerk_omschrijving
           INTO v_kenmerk_type,
                v_kenmerkdomein_key,
                v_srtkenmerk_omschrijving
           FROM ins_srtkenmerk sk
          WHERE sk.ins_srtkenmerk_key = v_srtkenmerk_key;

         BEGIN
            SELECT ikd.ins_kenmerkdeel_waarde,
                   ikd.ins_kenmerkdeel_key
              INTO v_waarde_old,
                   v_kenmerkdeel_key
              FROM ins_kenmerkdeel ikd
             WHERE ikd.ins_deel_key = p_deel_key
               AND ikd.ins_kenmerkdeel_verwijder IS NULL
               AND ikd.ins_kenmerk_key = v_kenmerk_key;

            IF v_kenmerk_type = 'R' OR v_kenmerk_type = 'S'
            THEN
               v_waarde_old := fac.getdomeinwaarde (v_kenmerkdomein_key, v_waarde_old);
            ELSIF v_kenmerk_type = 'D'
            THEN
               v_waarde_old := TO_CHAR (fac.safe_to_date (v_waarde_old, 'dd-mm-yyyy'), 'yyyy-mm-dd');
            ELSIF v_kenmerk_type = 'N'
            THEN
               v_waarde_old := TO_CHAR (fac.safe_to_number (v_waarde_old));
            END IF;

         EXCEPTION WHEN NO_DATA_FOUND
         THEN
            v_waarde_old := NULL;
            v_kenmerkdeel_key := NULL;
         END;

         v_waarde_old := COALESCE(v_waarde_old, '(leeg)');
         v_waarde_new := COALESCE(v_waarde_new, '(leeg)');
         IF v_waarde_old <> v_waarde_new
         THEN
            v_log := v_srtkenmerk_omschrijving || ': ' || v_waarde_old || ' --> ' || v_waarde_new;

            SELECT fac_srtnotificatie_key
              INTO v_srtnotificatie_key
              FROM fac_srtnotificatie
             WHERE fac_srtnotificatie_code = 'INSUPD';

            INSERT INTO fac_tracking (fac_srtnotificatie_key,
                                      fac_tracking_refkey,
                                      fac_tracking_oms)
                VALUES (v_srtnotificatie_key, p_deel_key, v_log);

            IF v_waarde_new = '(leeg)'
            THEN
               -- kenmerken worden (nog) niet verwijderd in de fac_update_ins routine
               DELETE ins_kenmerkdeel WHERE ins_kenmerkdeel_key = v_kenmerkdeel_key;
            END IF;
         END IF;
      END IF;
   EXCEPTION
      WHEN OTHERS
      THEN
         oracle_err_num := SQLCODE;
         oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
         v_errormsg := ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
         fac.imp_writelog (p_import_key,
                           'W',
                           'Kenmerkwijziging kon niet gelogd worden. ' || v_errormsg,
                           'Deel_key:' || p_deel_key || ' String:' || p_str);
   END;
BEGIN
   FOR rec IN c
   LOOP
      log_inskenmerk (p_import_key, rec.ins_kenmerkwaarde1, rec.ins_deel_key);
      log_inskenmerk (p_import_key, rec.ins_kenmerkwaarde2, rec.ins_deel_key);
      log_inskenmerk (p_import_key, rec.ins_kenmerkwaarde3, rec.ins_deel_key);
      log_inskenmerk (p_import_key, rec.ins_kenmerkwaarde4, rec.ins_deel_key);
      log_inskenmerk (p_import_key, rec.ins_kenmerkwaarde5, rec.ins_deel_key);
      log_inskenmerk (p_import_key, rec.ins_kenmerkwaarde6, rec.ins_deel_key);
      log_inskenmerk (p_import_key, rec.ins_kenmerkwaarde7, rec.ins_deel_key);
      log_inskenmerk (p_import_key, rec.ins_kenmerkwaarde8, rec.ins_deel_key);
      log_inskenmerk (p_import_key, rec.ins_kenmerkwaarde9, rec.ins_deel_key);
      log_inskenmerk (p_import_key, rec.ins_kenmerkwaarde10, rec.ins_deel_key);
      log_inskenmerk (p_import_key, rec.ins_kenmerkwaarde11, rec.ins_deel_key);
      log_inskenmerk (p_import_key, rec.ins_kenmerkwaarde12, rec.ins_deel_key);
      log_inskenmerk (p_import_key, rec.ins_kenmerkwaarde13, rec.ins_deel_key);
      log_inskenmerk (p_import_key, rec.ins_kenmerkwaarde14, rec.ins_deel_key);
      log_inskenmerk (p_import_key, rec.ins_kenmerkwaarde15, rec.ins_deel_key);
      log_inskenmerk (p_import_key, rec.ins_kenmerkwaarde16, rec.ins_deel_key);
      log_inskenmerk (p_import_key, rec.ins_kenmerkwaarde17, rec.ins_deel_key);
      log_inskenmerk (p_import_key, rec.ins_kenmerkwaarde18, rec.ins_deel_key);
      log_inskenmerk (p_import_key, rec.ins_kenmerkwaarde19, rec.ins_deel_key);
      log_inskenmerk (p_import_key, rec.ins_kenmerkwaarde20, rec.ins_deel_key);
   END LOOP;

   fac_update_ins (p_import_key);

   -- fac_update_ins maakt tracking aan voor alle elementen die al in de lijst voorkomen.
   -- deze tracking is verwarrend en gaan we verwijderen. De tracking is te herkennen aan het feit
   -- dat er geen omschrijving bij staat.
   DELETE fac_tracking t
    WHERE fac_srtnotificatie_key IN (
           SELECT fac_srtnotificatie_key
             FROM fac_srtnotificatie
            WHERE fac_srtnotificatie_code = 'INSUPD')
      AND fac_tracking_oms IS NULL
      AND TRUNC(fac_tracking_datum) = TRUNC(SYSDATE);

   -- Verwijder elementen die niet meer voorkomen in de import
   FOR rec IN c_del
   LOOP
      UPDATE ins_deel
         SET ins_deel_vervaldatum = SYSDATE
       WHERE ins_deel_key = rec.ins_deel_key;
   END LOOP;
END;
/


/*
CREATE OR REPLACE PROCEDURE pnbr_import_mjob (p_import_key IN NUMBER)
AS
   c_fielddelimitor VARCHAR2 (1) := ';';
   v_newline VARCHAR2 (1000);                                                                              -- Input line
   v_errormsg VARCHAR2 (1000);
   oracle_err_num NUMBER;
   oracle_err_mes VARCHAR2 (200);
   header_is_valid NUMBER;
   v_count NUMBER;
   v_ongeldig NUMBER (1);
   v_mode NUMBER (1);
   v_aanduiding VARCHAR2 (200);
   v_all_null BOOLEAN;
   v_count_error NUMBER (10);
   v_count_tot NUMBER (10);
   v_count_import NUMBER (10);
   -- De importvelden:
   v_alg_object_code VARCHAR2(200);
   v_ins_plaats VARCHAR2(200)
   v_ins_id VARCHAR2(200);
   v_ins_nlsfb VARCHAR2(200);
   v_ins_aanduiding VARCHAR2(200);
   v_ins_bouwjaar VARCHAR2(200);
   v_crt_startjaar VARCHAR2(200);
   v_crt_stopjaar VARCHAR2(200);
   v_ins_dimensie VARCHAR2(200);
   v_ins_aantal VARCHAR2(200);
   v_crt_dimensie VARCHAR2(200);
   v_crt_aantal VARCHAR2(200);
   v_crt_prijs VARCHAR2(200);
   v_crt_opmerking VARCHAR2(200);
   v_crt_kostensoort VARCHAR2(200);
   v_crt_btw VARCHAR2(200);
   v_crt_prioriteit VARCHAR2(200);
   v_ins_levensduur VARCHAR2(200);
   v_ins_cno VARCHAR2(200);
   v_ins_cvo VARCHAR2(200);
   v_crt_omschrijving VARCHAR2(200);
   v_crt_key VARCHAR2(200);
   v_crt_periode VARCHAR2(200);
   v_crt_totaalprijs VARCHAR2(200);
   v_crt_urgentie VARCHAR2(200);
   v_crt_fonds VARCHAR2(200);

   CURSOR c1
   IS
        SELECT   *
          FROM   fac_imp_file
         WHERE   fac_import_key = p_import_key
      ORDER BY   fac_imp_file_index;
BEGIN
   -- Eerst opruiming
   DELETE FROM   imp_log
         WHERE fac_import_key = p_import_key;

   DELETE FROM   pnbr_imp_mjob;

   COMMIT;
   v_count_error := 0;
   header_is_valid := 0;
   v_count_tot := 0;
   v_count_import := 0;

   FOR rec1 IN c1
   LOOP
      BEGIN
         v_errormsg := 'Fout FETCH te importeren rij';

         v_newline := rec1.fac_imp_file_line;
         v_errormsg := 'Fout opvragen te importeren rij';
         v_aanduiding := '';
         v_ongeldig := 0;

         -- Lees alle veldwaarden
         fac.imp_getfield (v_newline, c_fielddelimitor, v_alg_object_code);
         fac.imp_getfield (v_newline, c_fielddelimitor, v_ins_id);
         fac.imp_getfield (v_newline, c_fielddelimitor, v_ins_aanduiding);
         fac.imp_getfield (v_newline, c_fielddelimitor, v_ins_aantal);
         fac.imp_getfield (v_newline, c_fielddelimitor, v_ins_dimensie);
         fac.imp_getfield (v_newline, c_fielddelimitor,  v_ins_plaats)
         fac.imp_getfield (v_newline, c_fielddelimitor, v_ins_nlsfb);
         fac.imp_getfield (v_newline, c_fielddelimitor, v_ins_bouwjaar);
         fac.imp_getfield (v_newline, c_fielddelimitor, v_ins_cno);
         fac.imp_getfield (v_newline, c_fielddelimitor, v_ins_cvo);
         fac.imp_getfield (v_newline, c_fielddelimitor, v_crt_key);
         fac.imp_getfield (v_newline, c_fielddelimitor, v_crt_omschrijving);
         fac.imp_getfield (v_newline, c_fielddelimitor, v_crt_dimensie);
         fac.imp_getfield (v_newline, c_fielddelimitor, v_crt_aantal);
         fac.imp_getfield (v_newline, c_fielddelimitor, v_crt_prijs);
         fac.imp_getfield (v_newline, c_fielddelimitor, v_crt_startjaar);
         fac.imp_getfield (v_newline, c_fielddelimitor, v_crt_prioriteit);
         fac.imp_getfield (v_newline, c_fielddelimitor, v_crt_periode);
         fac.imp_getfield (v_newline, c_fielddelimitor, v_crt_totaalprijs);
         fac.imp_getfield (v_newline, c_fielddelimitor, v_crt_urgentie);
         fac.imp_getfield (v_newline, c_fielddelimitor, v_crt_fonds);
         fac.imp_getfield (v_newline, c_fielddelimitor, v_crt_stopjaar);
         fac.imp_getfield (v_newline, c_fielddelimitor, v_crt_opmerking);
         fac.imp_getfield (v_newline, c_fielddelimitor, v_crt_kostensoort);
         fac.imp_getfield (v_newline, c_fielddelimitor, v_crt_btw);

         --fac.imp_getfield (v_newline, c_fielddelimitor, v_ins_levensduur);


         v_aanduiding := v_ins_id || '|' || v_afdeling_naam || '|' || v_afdeling_omschrijving || '| ';

         IF (header_is_valid = 0)
         THEN
            IF     UPPER (v_bedrijf_naam) = 'BEDRIJFSNAAM'
               AND UPPER (v_afdeling_naam_parent) = 'AFDELINGSCODEPARENT'
            THEN
               header_is_valid := 1;
            END IF;
         ELSE
            v_count_tot := v_count_tot + 1;
            v_bedrijf_naam := TRIM (v_bedrijf_naam);

            IF LENGTH (v_bedrijf_naam) > 60
            THEN
               v_bedrijf_naam := SUBSTR (v_bedrijf_naam, 1, 60);
               fac.imp_writelog (p_import_key,
                                 'W',
                                 v_aanduiding || 'Bedrijf-aanduiding is te lang',
                                 'Aanduiding wordt afgebroken tot [' || v_bedrijf_naam || ']'
                                );
            END IF;

            --
            v_afdeling_naam := TRIM (v_afdeling_naam);

            IF LENGTH (v_afdeling_naam) > 10
            THEN
               v_afdeling_naam := SUBSTR (v_afdeling_naam, 1, 10);
               fac.imp_writelog (p_import_key,
                                 'W',
                                 v_aanduiding || 'Afdeling-aanduiding is te lang',
                                 'Aanduiding wordt afgebroken tot [' || v_afdeling_naam || ']'
                                );
            END IF;

            --
            v_afdeling_naam_parent := TRIM (v_afdeling_naam_parent);

            IF LENGTH (v_afdeling_naam_parent) > 10
            THEN
               v_afdeling_naam_parent := SUBSTR (v_afdeling_naam_parent, 1, 10);
               fac.imp_writelog (p_import_key,
                                 'W',
                                 v_aanduiding || 'Afdeling-aanduiding is te lang',
                                 'Aanduiding wordt afgebroken tot [' || v_afdeling_naam_parent || ']'
                                );
            END IF;

            --
            v_afdeling_omschrijving := TRIM (v_afdeling_omschrijving);

            IF LENGTH (v_afdeling_omschrijving) > 60
            THEN
               v_afdeling_omschrijving := SUBSTR (v_afdeling_omschrijving, 1, 60);
               fac.imp_writelog (p_import_key,
                                 'W',
                                 v_aanduiding || 'Afdelingsomschrijving is te lang',
                                 'Aanduiding wordt afgebroken tot [' || v_afdeling_omschrijving || ']'
                                );
            END IF;

            v_kostenplaats := LTRIM(v_kostenplaats, '0');
            v_all_null :=
                   (v_bedrijf_naam IS NULL)
               AND (v_afdeling_naam IS NULL)
               AND (v_afdeling_naam_parent IS NULL)
               AND (v_afdeling_omschrijving IS NULL);

            -- Insert geformatteerde import record
            IF v_ongeldig = 0
            THEN
               v_errormsg := 'Fout bij toevoegen te impoteren bedrijf/afdeling [' || v_afdeling_naam || ']';

               INSERT INTO fac_imp_organisatie (
                                                   prs_bedrijf_naam,
                                                   prs_afdeling_naam,
                                                   prs_afdeling_naam_parent,
                                                   prs_afdeling_omschrijving,
                                                   prs_kostenplaats_nr
                          )
                 VALUES   (
                              v_bedrijf_naam,
                              v_afdeling_naam,
                              v_afdeling_naam_parent,
                              v_afdeling_omschrijving,
                              v_kostenplaats
                          );

               v_count_import := v_count_import + 1;
            END IF;
         END IF;
      END;
   END LOOP;

   IF (header_is_valid = 0)
   THEN
      fac.imp_writelog (p_import_key,
                        'E',
                        v_aanduiding || 'Ongeldig importbestand',
                        'Geen geldige headerregel aanwezig'
                       );
   ELSE
      fac.imp_writelog (p_import_key, 'S', 'Bedrijf: aantal ingelezen regels: ' || TO_CHAR (v_count_tot), '');
      fac.imp_writelog (p_import_key,
                        'S',
                        'Bedrijf: aantal ongeldige importregels: ' || TO_CHAR (v_count_tot - v_count_import),
                        ''
                       );
   END IF;

   -- De top elementen in de import hebben een parent die wijst naar
   -- een niet bestaande afdeling. Daarom maken we die maar leeg.
   UPDATE fac_imp_organisatie i
      SET prs_afdeling_naam_parent = NULL
    WHERE NOT EXISTS (SELECT prs_afdeling_naam
                        FROM fac_imp_organisatie i2
                       WHERE i.prs_afdeling_naam_parent = i2.prs_afdeling_naam);

   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, '');
END pnbr_import_organisatie_mut;
/

*/

CREATE OR REPLACE VIEW pnbr_v_perslid_fullnames
(
   prs_perslid_key,
   prs_perslid_naam_full
)
AS
   SELECT prs_perslid_key,
          prs_perslid_naam
          || DECODE (p.prs_perslid_voorletters,
                     NULL, '',
                     ', ' || p.prs_perslid_voorletters)
          || DECODE (p.prs_perslid_tussenvoegsel,
                     NULL, '',
                     ' ' || p.prs_perslid_tussenvoegsel)
          || DECODE (p.prs_perslid_voornaam,
                     NULL, '',
                     ' (' || p.prs_perslid_voornaam || ')')
          || ' [' || prs_perslid_oslogin || ']'
             prs_perslid_naam_full
     FROM prs_v_aanwezigperslid p;

--
-- evenementen
--
CREATE OR REPLACE VIEW pnbr_v_accmngrevenement
(
   prs_perslid_key,
   prs_perslid_naam_full
)
AS
   SELECT p.prs_perslid_key, prs_perslid_naam_full
     FROM prs_perslid p,
          prs_v_perslid_fullnames_all pf,
          fac_usrtab t,
          fac_usrdata d
    WHERE p.prs_perslid_key = pf.prs_perslid_key
      AND p.prs_perslid_nr = d.fac_usrdata_code
      AND t.fac_usrtab_key = d.fac_usrtab_key
      AND t.fac_usrtab_naam = 'AccMngrEvenement'
      AND d.fac_usrdata_verwijder IS NULL;

CREATE OR REPLACE VIEW pnbr_v_opermngrevenement
(
   prs_perslid_key,
   prs_perslid_naam_full
)
AS
   SELECT p.prs_perslid_key, prs_perslid_naam_full
     FROM prs_perslid p,
          prs_v_perslid_fullnames_all pf,
          fac_usrtab t,
          fac_usrdata d
    WHERE p.prs_perslid_key = pf.prs_perslid_key
      AND p.prs_perslid_nr = d.fac_usrdata_code
      AND t.fac_usrtab_key = d.fac_usrtab_key
      AND t.fac_usrtab_naam = 'OperMngrEvenemen'
      AND d.fac_usrdata_verwijder IS NULL;

CREATE OR REPLACE VIEW pnbr_v_projmngrevenement
(
   prs_perslid_key,
   prs_perslid_naam_full
)
AS
   SELECT p.prs_perslid_key, prs_perslid_naam_full
     FROM prs_perslid p,
          prs_v_perslid_fullnames_all pf,
          fac_usrtab t,
          fac_usrdata d
    WHERE p.prs_perslid_key = pf.prs_perslid_key
      AND p.prs_perslid_nr = d.fac_usrdata_code
      AND t.fac_usrtab_key = d.fac_usrtab_key
      AND t.fac_usrtab_naam = 'ProjMngrEvenemen'
      AND d.fac_usrdata_verwijder IS NULL;

CREATE OR REPLACE VIEW pnbr_v_evenement
(
   res_reservering_key,
   res_reservering_omschrijving
)
AS
     SELECT r.res_reservering_key,
               TO_CHAR (r.res_reservering_key)
            || ' - '
            || MAX (res_rsv_ruimte_omschrijving)
               res_reservering_omschrijving
       FROM res_reservering r, res_rsv_ruimte rrr
      WHERE r.res_reservering_key = rrr.res_reservering_key
        AND rrr.res_activiteit_key = 30  -- evenementen
   GROUP BY r.res_reservering_key;

CREATE OR REPLACE VIEW pnbr_v_rap_evenementen
(
   hide_f_ts,
   dag,
   fclt_d_datum,
   omschrijving,
   ruimte,
   van,
   tot,
   aant,
   om,
   pm,
   am
)
AS
   SELECT TO_CHAR (r.res_rsv_ruimte_van, 'yyyymmddhh24mi') ts,
          DECODE (TO_CHAR (r.res_rsv_ruimte_van, 'D'),
                  1, 'Zondag',
                  2, 'Maandag',
                  3, 'Dinsdag',
                  4, 'Woensdag',
                  5, 'Donderdag',
                  6, 'Vrijdag',
                  7, 'Zaterdag')
             dag,
          TO_CHAR (r.res_rsv_ruimte_van, 'dd-mm-yyyy') datum,
          oms.mld_kenmerkmelding_waarde oms,
          TRIM (res_ruimte_nr) ruimte,
          TO_CHAR (r.res_rsv_ruimte_van, 'hh24:mi') van,
          TO_CHAR (r.res_rsv_ruimte_tot, 'hh24:mi') tot,
          r.res_rsv_ruimte_bezoekers,
          om.naam,
          pm.naam,
          am.naam
     FROM mld_melding m,
          res_ruimte_opstelling ro,
          res_ruimte rr,
          (SELECT km.mld_melding_key, rg.*
             FROM res_rsv_ruimte rg, mld_kenmerkmelding km
            WHERE rg.res_reservering_key =
                     fac.safe_to_number (km.mld_kenmerkmelding_waarde)
              AND km.mld_kenmerk_key = 6032
              AND rg.res_rsv_ruimte_volgnr =
                     (SELECT MIN (res_rsv_ruimte_volgnr)
                        FROM res_v_aanwezigrsv_ruimte r
                       WHERE r.res_reservering_key = rg.res_reservering_key))
          r,
          (SELECT km.mld_melding_key, km.mld_kenmerkmelding_waarde
             FROM mld_kenmerkmelding km
            WHERE km.mld_kenmerk_key = 6028) oms,
          (SELECT km.mld_melding_key,
                  SUBSTR (prs_perslid_voornaam, 1, 1)
                  || SUBSTR (prs_perslid_naam, 1, 1)
                     naam
             FROM mld_kenmerkmelding km, prs_perslid p
            WHERE km.mld_kenmerk_key = 6030
              AND p.prs_perslid_key =
                     fac.safe_to_number (km.mld_kenmerkmelding_waarde)) pm,
          (SELECT km.mld_melding_key,
                  SUBSTR (prs_perslid_voornaam, 1, 1)
                  || SUBSTR (prs_perslid_naam, 1, 1)
                     naam
             FROM mld_kenmerkmelding km, prs_perslid p
            WHERE km.mld_kenmerk_key = 6029
              AND p.prs_perslid_key =
                     fac.safe_to_number (km.mld_kenmerkmelding_waarde)) am,
          (SELECT km.mld_melding_key,
                  SUBSTR (prs_perslid_voornaam, 1, 1)
                  || SUBSTR (prs_perslid_naam, 1, 1)
                     naam
             FROM mld_kenmerkmelding km, prs_perslid p
            WHERE km.mld_kenmerk_key = 6031
              AND p.prs_perslid_key =
                     fac.safe_to_number (km.mld_kenmerkmelding_waarde)) om
    WHERE m.mld_melding_key = r.mld_melding_key(+)
      AND m.mld_melding_key = oms.mld_melding_key(+)
      AND m.mld_melding_key = am.mld_melding_key(+)
      AND m.mld_melding_key = om.mld_melding_key(+)
      AND m.mld_melding_key = pm.mld_melding_key(+)
      AND r.res_ruimte_opstel_key = ro.res_ruimte_opstel_key(+)
      AND ro.res_ruimte_key = rr.res_ruimte_key(+)
      AND mld_stdmelding_key = 2441;
----------------------------
-- Rapportages


CREATE OR REPLACE VIEW pnbr_v_rap_errorlog
(
   HIDE_F_IMP_LOG_DATUM,
   FCLT_F_APPLICATIE,
   FCLT_F_DATUM,
   TIJDSTIP,
   FCLT_F_NIVEAU,
   FCLT_F_OMSCHRIJVING,
   HINT
)
AS
   SELECT imp_log_datum hide_f_imp_log_datum,
          fac_import_app_code,
          TO_CHAR (imp_log_datum, 'YYYYMMDD') fclt_f_datum,
          TO_CHAR (imp_log_datum, 'HH24:MI:SS') tijdstip,
          DECODE (imp_log_status,
                  'F', 'Fataal',
                  'E', 'Error',
                  'W', 'Waarschuwing',
                  'S', 'Samenvatting',
                  'I', 'Informatief',
                  '-')
             fclt_f_niveau,
          imp_log_omschrijving fclt_f_omschrijving,
          imp_log_hint
     FROM imp_log l, fac_import i, fac_import_app a
    WHERE l.fac_import_key = i.fac_import_key
      AND i.fac_import_app_key = a.fac_import_app_key
      AND l.fac_import_key IN (SELECT max(fac_import_key)
                               FROM fac_import
                              GROUP BY fac_import_app_key);

CREATE OR REPLACE VIEW pnbr_v_rap_import_status
(
   fclt_f_import,
   datum,
   fclt_f_status,
   omschrijving,
   hint
)
AS
   SELECT fac_import_app_code,
          i.imp_log_datum,
          i.imp_log_status,
          i.imp_log_omschrijving,
          i.imp_log_hint
     FROM imp_log i, fac_import fi, fac_import_app ia
    WHERE i.fac_import_key = fi.fac_import_key
      AND fi.fac_import_app_key = ia.fac_import_app_key
      AND (fac_import_app_code = 'PERSLID_MUT'
        OR fac_import_app_code = 'ORGANISATIE_MUT')
      AND i.imp_log_datum > SYSDATE - 1;

CREATE OR REPLACE VIEW pnbr_v_rap_servicdesk_status
(
   behandelgroep,
   bij_frontoffice,
   afgewezen,
   nieuw,
   te_behandelen,
   in_behandeling,
   afgemeld,
   historie,
   uitgegeven,
   actie_vereist
)
AS
     SELECT ins_discipline_omschrijving,
            SUM (bij_frontoffice) bij_frontoffice,
            SUM (afgewezen) afgewezen,
            SUM (nieuw) nieuw,
            SUM (te_behandelen) te_behandelen,
            SUM (in_behandeling) in_behandeling,
            SUM (afgemeld) afgemeld,
            SUM (historie) historie,
            SUM (uitgegeven) uitgegeven,
            SUM (actie_vereist) actie_vereist
       FROM (SELECT ins_discipline_omschrijving,
                    DECODE (mld_melding_status, 0, 1, 0) bij_frontoffice,
                    DECODE (mld_melding_status, 1, 1, 0) afgewezen,
                    DECODE (mld_melding_status, 2, 1, 0) nieuw,
                    DECODE (mld_melding_status, 3, 1, 0) te_behandelen,
                    DECODE (mld_melding_status, 4, 1, 0) in_behandeling,
                    DECODE (mld_melding_status, 5, 1, 0) afgemeld,
                    DECODE (mld_melding_status, 6, 1, 0) historie,
                    DECODE (mld_melding_status, 7, 1, 0) uitgegeven,
                    DECODE (mld_melding_status, 99, 1, 0) actie_vereist
               FROM mld_melding m, mld_stdmelding std, mld_discipline d
              WHERE     m.mld_stdmelding_key = std.mld_stdmelding_key
                    AND ins_discipline_key > 400
                    AND std.mld_ins_discipline_key = d.ins_discipline_key)
   GROUP BY ins_discipline_omschrijving;

CREATE OR REPLACE VIEW pnbr_v_rap_perf_servicedesk
(
   naam,
   ingevoerd,
   afgemeld,
   afgewezen
)
AS
     SELECT prs_perslid_naam_full,
            SUM(COALESCE (
                   (SELECT 1
                      FROM fac_srtnotificatie sn
                     WHERE t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
                       AND sn.fac_srtnotificatie_code = 'MLDNEW'),
                   0))
               ingevoerd,
            SUM(COALESCE (
                   (SELECT 1
                      FROM fac_srtnotificatie sn
                     WHERE t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
                       AND sn.fac_srtnotificatie_code = 'MLDAFM'),
                   0))
               afgemeld,
            SUM(COALESCE (
                   (SELECT 1
                      FROM fac_srtnotificatie sn
                     WHERE t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
                       AND sn.fac_srtnotificatie_code = 'MLDREJ'),
                   0))
               afgewezen
       FROM fac_gebruikersgroep gg, prs_v_perslid_fullnames pf, fac_tracking t
      WHERE gg.prs_perslid_key = pf.prs_perslid_key
        AND gg.fac_groep_key = 253
        AND t.prs_perslid_key = pf.prs_perslid_key
        AND TRUNC (t.fac_tracking_datum) = TRUNC (SYSDATE)
   GROUP BY prs_perslid_naam_full;

CREATE OR REPLACE VIEW pnbr_v_rap_afm_servicedesk
(
   fclt_f_behandelgroep,
   servicedesk,
   totaal,
   fclt_f_periode
)
AS
     SELECT ins_discipline_omschrijving behandelgroep,
            SUM (servicedesk) servicedesk,
            COUNT (mld_melding_key) totaal,
            TO_CHAR (fac_tracking_datum, 'yyyy-mm') periode
       FROM (SELECT DISTINCT 1 servicedesk, prs_perslid_key
               FROM fac_gebruikersgroep gg
              WHERE gg.fac_groep_key = 253 OR gg.fac_groep_key = 91) gg,
            prs_v_perslid_fullnames pf,
            fac_tracking t,
            fac_srtnotificatie sn,
            mld_melding m,
            mld_stdmelding std,
            ins_tab_discipline d
      WHERE t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
        AND (sn.fac_srtnotificatie_code = 'MLDAFM'
          OR sn.fac_srtnotificatie_code = 'MLDREJ')
        AND t.fac_tracking_refkey = mld_melding_key
        AND m.mld_stdmelding_key = std.mld_stdmelding_key
        AND std.mld_ins_discipline_key = d.ins_discipline_key
        AND gg.prs_perslid_key(+) = pf.prs_perslid_key
        AND t.prs_perslid_key = pf.prs_perslid_key
   GROUP BY d.ins_discipline_omschrijving,
            TO_CHAR (fac_tracking_datum, 'yyyy-mm');

-- rapportages tbv het IT dashbord.
CREATE OR REPLACE VIEW pnbr_v_rap_beschikb_dienst
(
   naam,
   mobiel,
   dect,
   ins_key
)
AS
   SELECT SUBSTR (ins_deel_omschrijving, 4, 20),
          kdm.ins_kenmerkdeel_waarde,
          kdd.ins_kenmerkdeel_waarde,
          d.ins_deel_key
     FROM ins_deel d,
          (SELECT ins_deel_key, ins_kenmerkdeel_waarde
             FROM ins_kenmerkdeel kd
            WHERE ins_kenmerkdeel_verwijder IS NULL
              AND ins_kenmerk_key = 801) kdm,            -- mobiel nummer
          (SELECT ins_deel_key, ins_kenmerkdeel_waarde
             FROM ins_kenmerkdeel kd
            WHERE ins_kenmerkdeel_verwijder IS NULL
              AND ins_kenmerk_key = 821) kdd             -- DECT nummer
    WHERE d.ins_deel_verwijder IS NULL
      AND d.ins_deel_key = kdm.ins_deel_key(+)
      AND d.ins_deel_key = kdd.ins_deel_key(+)
      AND d.ins_srtdeel_key = 562;

CREATE OR REPLACE VIEW pnbr_v_rap_appl_beschikb
(
   applicatie,
   status,
   ins_key
)
AS
   SELECT SUBSTR (ins_deel_omschrijving, 6, 20),
          DECODE (ins_kenmerkdeel_waarde, 1, 'UP', 'DOWN'),
          d.ins_deel_key
     FROM ins_deel d, (SELECT ins_deel_key, ins_kenmerkdeel_waarde
                         FROM ins_kenmerkdeel kd
                        WHERE ins_kenmerk_key = 641) kd
    WHERE d.ins_deel_key = kd.ins_deel_key(+) AND d.ins_srtdeel_key = 561;

CREATE OR REPLACE VIEW pnbr_v_rap_dpl_meldingen
(
   mld_key,
   datum,
   omschrijving,
   eind,
   intervalwijz,
   workaround,
   status,
   afgemeld
)
AS
   SELECT mld_melding_key,
          to_char(mld_melding_datum, 'yyyy-mm-dd / hh24:mi'),
          mld_melding_omschrijving,
          fac.gettrackingdate ('MLDAFM', m.mld_melding_key) einddatum,
          SYSDATE
          - (SELECT MAX (t.fac_tracking_datum)
               FROM fac_tracking t, fac_srtnotificatie sn
              WHERE t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
                AND t.fac_tracking_refkey = m.mld_melding_key
                AND sn.fac_srtnotificatie_xmlnode = 'melding')
             intervalwijz,
          (SELECT mld_kenmerkmelding_waarde
             FROM mld_kenmerkmelding km
            WHERE km.mld_kenmerk_key = 6821
              AND km.mld_melding_key = m.mld_melding_key)
             workaround,
          s.mld_statuses_omschrijving,
          DECODE (m.mld_melding_status, 1, 1, 5, 1, 6, 1, 0)
     FROM mld_melding m, mld_statuses s
    WHERE mld_stdmelding_key = 5481
      AND m.mld_melding_status = s.mld_statuses_key
      AND COALESCE (fac.gettrackingdate ('MLDAFM', m.mld_melding_key),
                    SYSDATE) < SYSDATE + 14;

CREATE OR REPLACE VIEW pnbr_v_melding_bestuur
(
   mld_melding_key,
   meldingnummer,
   prs_perslid_naam_full,
   mld_stdmelding_omschrijving,
   mld_melding_omschrijving,
   mld_melding_status,
   opengesloten,
   mld_melding_datum,
   mld_melding_afgemeld
)
AS
   SELECT m.mld_melding_key,
          mg.meldingnummer,
          prs_perslid_naam_full,
          subproductgroep,
          mld_melding_omschrijving,
          status,
          DECODE (mld_melding_status,
                  1, 'Gesloten',
                  5, 'Gesloten',
                  6, 'Gesloten',
                  'Open')
             opengesloten,
          mld_melding_datum,
          mld.getmeldingstatusdate (m.mld_melding_key, 5) afgemeld
     FROM (SELECT p.prs_perslid_key, prs_perslid_naam_full
             FROM prs_perslid p,
                  prs_v_perslid_fullnames_all pf,
                  fac_usrtab t,
                  fac_usrdata d
            WHERE p.prs_perslid_key = pf.prs_perslid_key
              AND p.prs_perslid_nr = d.fac_usrdata_code
              AND t.fac_usrtab_key = d.fac_usrtab_key
              AND t.fac_usrtab_naam = 'BestuurOnderst'
           UNION ALL
           SELECT p.prs_perslid_key, prs_perslid_naam_full
             FROM prs_perslid p, prs_v_perslid_fullnames_all pf
            WHERE p.prs_perslid_key = pf.prs_perslid_key
              AND prs_afdeling_key IN (127, 128)) p,               -- GS en PS
          mld_v_qvw_algemeen mg,
          mld_melding m
    WHERE m.prs_perslid_key_voor = p.prs_perslid_key
      AND m.mld_melding_key = mg.mld_melding_key;

CREATE OR REPLACE VIEW pnbr_v_rap_melding_bestuur
(
   fclt_d_datum,
   melding,
   voor,
   soortmelding,
   omschrijving,
   fclt_f_status,
   fclt_f_opengesloten,
   ingediend,
   afgemeld
)
AS
   SELECT TO_CHAR (mld_melding_datum, 'dd-mm-yyyy'),
          meldingnummer,
          prs_perslid_naam_full,
          mld_stdmelding_omschrijving,
          mld_melding_omschrijving,
          mld_melding_status,
          opengesloten,
          mld_melding_datum,
          mld_melding_afgemeld
     FROM pnbr_v_melding_bestuur;

CREATE OR REPLACE VIEW pnbr_v_noti_melding_bestuur
(
   sender,
   receiver,
   text,
   code,
   key,
   xkey
)
AS
   SELECT NULL sender,
          3593 receiver,                             --Plas, RHA van der (Rob)
             'Nieuwe melding '
          || meldingnummer
          || ' ingevoerd voor/door: '
          || prs_perslid_naam_full
             text,
          'MLDNEW' code,
          mld_melding_key key,
          NULL xkey
     FROM pnbr_v_melding_bestuur
    WHERE mld_melding_datum >
             (SELECT fac_notificatie_job_nextrun
                     - fac_notificatie_job_interval / 24
                FROM fac_notificatie_job
               WHERE fac_notificatie_job_view = 'PNBR_V_NOTI_MELDING_BESTUUR')
      AND mld_melding_datum <
             (SELECT fac_notificatie_job_nextrun
                FROM fac_notificatie_job
               WHERE fac_notificatie_job_view = 'PNBR_V_NOTI_MELDING_BESTUUR');

CREATE OR REPLACE VIEW pnbr_v_rap_notificatie
(
   fclt_f_module,
   code,
   omschrijving,
   fclt_f_status,
   fclt_f_mail,
   fclt_f_sms,
   fclt_f_alert
)
AS
   SELECT SUBSTR (fac_srtnotificatie_code, 1, 3) module,
          fac_srtnotificatie_code,
          lcl.x('fac_srtnotificatie_oms', fac_srtnotificatie_key, fac_srtnotificatie_oms),
          DECODE (BITAND (fac_srtnotificatie_mode, 1), 0, '', 'status')
             status,
          DECODE (BITAND (fac_srtnotificatie_mode, 2), 0, '', 'mail') mail,
          DECODE (BITAND (fac_srtnotificatie_mode, 4), 0, '', 'sms') sms,
          DECODE (BITAND (fac_srtnotificatie_mode, 8), 0, '', 'alert') alert
     FROM fac_srtnotificatie;

CREATE OR REPLACE VIEW PNBR_V_RAP_VOORRAAD
(
   HIDE_F_EXTERN_DISKEY,
   HIDE_F_SRTGROEP_OMSCHRIJVING,
   FCLT_F_CATALOGUS,
   ARTIKEL_NR,
   ARTIKEL_OMSCHRIJVING,
   ARTIKEL_PRIJS,
   MAGAZIJN,
   MIN_VOORRAAD,
   MAX_VOORRAAD,
   INKOOP_GELEVERD,
   INTERN_BESTELD,
   VOORRAAD,
   INKOOP_BESTELD,
   INKOOP_LEVERDATUM,
   INKOOP_GEWENST
)
AS
   SELECT extern.dkey,
          COALESCE (intern.bes_srtgroep_omschrijving,
                    extern.bes_srtgroep_omschrijving),
          COALESCE (intern.ins_discipline_omschrijving,
                    extern.ins_discipline_omschrijving),
          extern.bes_srtdeel_nr,
          COALESCE (intern.bes_srtdeel_omschrijving,
                    extern.bes_srtdeel_omschrijving),
          COALESCE (intern.srtdeel_prijs, extern.srtdeel_prijs),
          intern.magazijn,
          extern.vmin,
          extern.vmax,
          extern.geleverd,
          intern.besteld,
          extern.geleverd - COALESCE (intern.besteld, 0) voorraad,
          extern.besteld,
          TO_CHAR(extern.leverdatum, 'dd-mm-yyyy'),
          CASE
             WHEN ( (COALESCE (extern.besteld, 0)
                     + COALESCE (extern.geleverd, 0))
                   - COALESCE (intern.besteld, 0)) < extern.vmin
             THEN
                extern.vmax
                - ( (COALESCE (extern.besteld, 0)
                     + COALESCE (extern.geleverd, 0))
                   - COALESCE (intern.besteld, 0))
             ELSE
                NULL
          END
             extern_gewenst
     FROM    (SELECT bd.ins_discipline_key dkey,                 -- INKOOP-key
                     g.bes_srtgroep_omschrijving,
                     sd.bes_srtdeel_nr,                      -- ext. artikelnr
                     sd.bes_srtdeel_omschrijving,
                     bes.getsrtdeelprijs (sd.bes_srtdeel_key, NULL)
                        srtdeel_prijs,
                     bd.ins_discipline_omschrijving,     -- ext. catalogusnaam
                     sd.bes_srtdeel_voorraadmin vmin,      -- ext. voorraadmin
                     sd.bes_srtdeel_voorraadmax vmax,      -- ext. voorraadmax
                     (SELECT SUM (coalesce(boi.bes_bestelopdr_item_aantal, bi.bes_bestelling_item_aantal)-COALESCE(boi.bes_bestelopdr_item_aantalontv,0))
                        FROM bes_bestelling b, bes_bestelling_item bi, bes_bestelopdr_item boi
                       WHERE     boi.bes_bestelopdr_item_key(+) = bi.bes_bestelopdr_item_key
                             AND bi.bes_bestelling_item_status IN (2, 3, 4, 5)
                             AND b.bes_bestelling_key = bi.bes_bestelling_key
                             AND bi.bes_srtdeel_key = sd.bes_srtdeel_key)
                        besteld,
                     (SELECT MIN (b.bes_bestelling_leverdatum)
                        FROM bes_bestelling b, bes_bestelling_item bi, bes_bestelopdr_item boi
                       WHERE     boi.bes_bestelopdr_item_key(+) = bi.bes_bestelopdr_item_key
                             AND bi.bes_bestelling_item_status IN (2, 3, 4, 5)
                             AND COALESCE(bes_bestelopdr_item_aantal, bi.bes_bestelling_item_aantal) <> COALESCE(bes_bestelopdr_item_aantalontv, 0)
                             AND b.bes_bestelling_key = bi.bes_bestelling_key
                             AND bi.bes_srtdeel_key = sd.bes_srtdeel_key)
                        leverdatum,
                     (SELECT SUM (boi.bes_bestelopdr_item_aantalontv)
                        FROM bes_bestelling b, bes_bestelling_item bi, bes_bestelopdr_item boi
                       WHERE  --   boi.bes_bestelopdr_item_status in (6,7) AND
                                 b.bes_bestelling_key = bi.bes_bestelling_key
                             AND boi.bes_bestelopdr_item_key = bi.bes_bestelopdr_item_key
                             AND bi.bes_srtdeel_key = sd.bes_srtdeel_key)
                        geleverd
                FROM bes_srtdeel sd,
                     bes_srtgroep g,
                     bes_discipline bd,
                     bes_disc_params dp
               WHERE     sd.bes_srtdeel_verwijder IS NULL
                     AND sd.bes_srtgroep_key = g.bes_srtgroep_key
                     AND g.ins_discipline_key = bd.ins_discipline_key
                     AND bd.ins_discipline_key = dp.bes_ins_discipline_key
                     AND dp.bes_ins_discipline_key_inkoop IS NULL
                     AND bd.ins_discipline_key IN
                              (SELECT bes_ins_discipline_key_inkoop
                                 FROM bes_disc_params
                                WHERE bes_ins_discipline_key_inkoop IS NOT NULL))
             extern                 -- Inkoop artikelen uit externe catalogus!
          FULL JOIN
             (SELECT dp.bes_ins_discipline_key_inkoop dkey,      -- INKOOP-key
                     g.bes_srtgroep_omschrijving,
                     sd.bes_srtdeel_nr,                      -- int. artikelnr
                     sd.bes_srtdeel_omschrijving,
                     sd.bes_srtdeel_notitie magazijn,
                     bes.getsrtdeelprijs (sd.bes_srtdeel_key, NULL)
                        srtdeel_prijs,
                     bd.ins_discipline_omschrijving,     -- int. catalogusnaam
                     (SELECT SUM (COALESCE(boi.bes_bestelopdr_item_aantal, bi.bes_bestelling_item_aantal))
                        FROM bes_bestelling b, bes_bestelling_item bi, bes_bestelopdr_item boi
                       WHERE boi.bes_bestelopdr_item_key(+) = bi.bes_bestelopdr_item_key
                             AND b.bes_bestelling_key = bi.bes_bestelling_key
                             AND bi.bes_srtdeel_key = sd.bes_srtdeel_key)
                        besteld
                FROM bes_srtdeel sd,
                     bes_srtgroep g,
                     bes_discipline bd,
                     bes_disc_params dp
               WHERE     sd.bes_srtdeel_verwijder IS NULL
                     AND sd.bes_srtgroep_key = g.bes_srtgroep_key
                     AND g.ins_discipline_key = bd.ins_discipline_key
                     AND bd.ins_discipline_key = dp.bes_ins_discipline_key
                     AND dp.bes_ins_discipline_key_inkoop IS NOT NULL) intern -- Verkoop artikelen uit interne catalogus!
          ON extern.dkey = intern.dkey
             AND extern.bes_srtdeel_nr = intern.bes_srtdeel_nr;

CREATE OR REPLACE VIEW pnbr_v_rap_bestellingen
(
   bestelnummer,
   fclt_d_bes_bestelling_datum,
   fclt_f_aanvrager,
   fclt_f_afdeling,
   fclt_f_kostenplaats,
   fclt_f_catalogus,
   fclt_f_groep,
   aantal,
   fclt_f_omschrijving,
   stuksprijs,
   totaalprijs
)
AS
   SELECT b.bes_bestelling_key,
          TO_CHAR (b.bes_bestelling_datum, 'dd-mm-yyyy'),
          pf.prs_perslid_naam_full,
          a.prs_afdeling_naam || '-' ||a.prs_afdeling_omschrijving,
          k.prs_kostenplaats_nr || '-' ||k.prs_kostenplaats_omschrijving,
          d.ins_discipline_omschrijving,
          sg.bes_srtgroep_omschrijving,
          bes_bestelling_item_aantal,
          sd.bes_srtdeel_omschrijving,
          COALESCE (bi.bes_bestelling_item_prijs,
                    bes.getsrtdeelprijs (sd.bes_srtdeel_key, SYSDATE)),
          ROUND (
             COALESCE (bi.bes_bestelling_item_prijs,
                       bes.getsrtdeelprijs (sd.bes_srtdeel_key, SYSDATE))
             * bes_bestelling_item_aantal,
             2)
     FROM bes_bestelling b,
          bes_bestelling_item bi,
          bes_srtdeel sd,
          bes_srtgroep sg,
          bes_discipline d,
          prs_v_perslid_fullnames_all pf,
          prs_perslid p,
          prs_afdeling a,
          prs_kostenplaats k
    WHERE b.bes_bestelling_key = bi.bes_bestelling_key
      AND bi.bes_srtdeel_key = sd.bes_srtdeel_key
      AND sd.bes_srtgroep_key = sg.bes_srtgroep_key
      AND sg.ins_discipline_key = d.ins_discipline_key
      AND b.prs_perslid_key = pf.prs_perslid_key
      AND b.prs_perslid_key = p.prs_perslid_key
      AND p.prs_afdeling_key = a.prs_afdeling_key
      AND a.prs_kostenplaats_key = k.prs_kostenplaats_key(+);

--
-- Sync view
--
CREATE OR REPLACE VIEW pnbr_v_sync_alg_ruimte (
   alg_ruimte_key,
   alg_verdieping_key,
   cadlabel
   )
AS
   SELECT r.alg_ruimte_key,
          r.alg_verdieping_key,
          decode (length(alg_verdieping_code), 1, '0' || alg_verdieping_code, alg_verdieping_code) || '.' ||
          decode (length(alg_ruimte_nr), 1, '00' || alg_ruimte_nr,
                                         2, '0' || alg_ruimte_nr,
                                         alg_ruimte_nr)
   FROM alg_v_aanwezigruimte r, alg_verdieping v
   WHERE     r.alg_verdieping_key = v.alg_verdieping_key;

-- tijdelijk vervangen door:
CREATE OR REPLACE VIEW pnbr_v_sync_alg_ruimte
(
   alg_ruimte_key,
   alg_verdieping_key,
   cadlabel
)
AS
   SELECT r.alg_ruimte_key,
          r.alg_verdieping_key,
          DECODE (fac.safe_to_number(alg_ruimte_nr), null, alg_ruimte_nr, to_char(to_number(alg_ruimte_nr)))
     FROM alg_v_aanwezigruimte r, alg_verdieping v
    WHERE r.alg_verdieping_key = v.alg_verdieping_key;

CREATE OR REPLACE VIEW pnbr_v_rap_dagstaat
(
   res_rsv_ruimte_key,
   res_rsv_ruimte_omschrijving,
   res_rsv_ruimte_van,
   res_rsv_ruimte_tot,
   res_rsv_ruimte_bezoekers,
   res_ruimte_key,
   res_ruimte_nr
)
AS
   SELECT r.res_rsv_ruimte_key,
          res_rsv_ruimte_omschrijving,
          to_char(r.res_rsv_ruimte_van, 'yyyy-mm-dd') || 'T' || to_char(r.res_rsv_ruimte_van, 'hh24:mi:ss'),
          to_char(r.res_rsv_ruimte_tot, 'yyyy-mm-dd') || 'T' || to_char(r.res_rsv_ruimte_tot, 'hh24:mi:ss'),
          COALESCE(res_rsv_ruimte_bezoekers,0),
          rr.res_ruimte_key,
          DECODE(INSTR(res_ruimte_nr, '('), 0, res_ruimte_nr, SUBSTR(res_ruimte_nr, INSTR(res_ruimte_nr, '(')+1, INSTR(res_ruimte_nr, ')')-INSTR(res_ruimte_nr, '(')-1))
     FROM res_rsv_ruimte r,
          res_ruimte_opstelling rro,
          res_ruimte rr,
          (SELECT rrr.res_rsv_ruimte_key,
                  (SELECT w.res_kenmerkreservering_waarde
                     FROM res_kenmerkwaarde w, res_kenmerk k
                    WHERE w.res_kenmerk_key = k.res_kenmerk_key
                      AND w.res_kenmerk_key = k.res_kenmerk_key
                      AND rrr.res_rsv_ruimte_key = w.res_rsv_ruimte_key
                      AND k.res_srtkenmerk_key = 1       -- zichtbaar op planbord
                      AND k.res_activiteit_key = rrr.res_activiteit_key)
                     res_kenmerkreservering_waarde
             FROM res_rsv_ruimte rrr) ds
    WHERE r.res_rsv_ruimte_verwijder IS NULL
      AND r.res_status_fo_key = 2
      AND r.res_rsv_ruimte_key = ds.res_rsv_ruimte_key
      AND r.res_ruimte_opstel_key = rro.res_ruimte_opstel_key
      AND rro.res_ruimte_key = rr.res_ruimte_key
      AND (fac.safe_to_number (ds.res_kenmerkreservering_waarde) = 2
        OR r.res_rsv_ruimte_contact_key = 30064)               -- SmartSigns user
      AND TRUNC (res_rsv_ruimte_van) = TRUNC (SYSDATE);

CREATE OR REPLACE VIEW pnbr_v_rap_dagstaat_bron
(
   fclt_d_datum,
   dagvweek,
   maand,
   dag,
   jaar,
   nummer,
   tijdsort,
   ruimte_van,
   ruimte_tot,
   bezoekers,
   activiteit,
   omschrijving,
   opmerking,
   ruimte,
   verdieping,
   locatie,
   melder,
   telefoon,
   kostenplaats,
   begrpost,
   bestelnr,
   opstelling,
   aantalcatering,
   v_van,
   v_tot,
   v_omschrijving,
   v_aantal,
   v_prijs,
   v_totaal,
   gs,
   cdk,
   res_rsv_ruimte_key,
   res_discipline_key,
   res_besnr_cateraar
)
AS
   SELECT TO_CHAR (res_rsv_ruimte_van, 'dd-mm-yyyy') datum,
          DECODE (TO_CHAR (res_rsv_ruimte_van, 'd'),
                  1,
                  'zondag',
                  2,
                  'maandag',
                  3,
                  'dinsdag',
                  4,
                  'woensdag',
                  5,
                  'donderdag',
                  6,
                  'vrijdag',
                  7,
                  'zaterdag')
             dagvweek,
          DECODE (TO_CHAR (res_rsv_ruimte_van, 'mm'),
                  1,
                  'januari',
                  2,
                  'februari',
                  3,
                  'maart',
                  4,
                  'april',
                  5,
                  'mei',
                  6,
                  'juni',
                  7,
                  'juli',
                  8,
                  'augustus',
                  9,
                  'september',
                  10,
                  'oktober',
                  11,
                  'november',
                  12,
                  'december')
             maand,
          TO_CHAR (res_rsv_ruimte_van, 'dd') dag,
          TO_CHAR (res_rsv_ruimte_van, 'yyyy') jaar,
          res_reservering_key || '/' || res_rsv_ruimte_volgnr nummer,
          TO_CHAR (res_rsv_ruimte_van, 'yyyymmddhh24mi') tijdsort,
          TO_CHAR (res_rsv_ruimte_van, 'hh24:mi') ruimte_van,
          TO_CHAR (res_rsv_ruimte_tot, 'hh24:mi') ruimte_tot,
          res_rsv_ruimte_bezoekers bezoekers,
          res_activiteit_omschrijving,
          DECODE (
             rrr.res_activiteit_key,
             150,
             'GEBAK '
             || (SELECT ud.fac_usrdata_omschr
                   FROM res_kenmerkwaarde rk, fac_usrdata ud
                  WHERE rk.res_kenmerk_key = 262 AND ud.fac_usrtab_key = 1943 -- kenmerk + usertab zakelijk/prive
                    AND ud.fac_usrdata_key =
                           fac.safe_to_number (rk.res_kenmerkreservering_waarde)
                    AND rk.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key),
             UPPER (res_rsv_ruimte_omschrijving)
          ),
          res_rsv_ruimte_opmerking opmerking,
          COALESCE (
             (SELECT res_ruimte_nr
                FROM res_v_ruimte_opstel_gegevens rog
               WHERE rog.res_ruimte_opstel_key = rrr.res_ruimte_opstel_key),
             (SELECT MAX (alg_ruimte_aanduiding)
                FROM alg_v_ruimte_gegevens rg
               WHERE rrr.alg_ruimte_key = rg.alg_ruimte_key)
          )
             ruimte,
          vg.alg_verdieping_omschrijving verdieping,
          vg.alg_locatie_omschrijving locatie,
          prs_perslid_naam_full melder,
          COALESCE (prs_perslid_telefoonnr, prs_perslid_mobiel) telefoon,
          k.prs_kostenplaats_nr kostenplaats,
          COALESCE (bp_extra.waarde, bp.waarde) begrpost,
          bnk.waarde bestelnr,
          (SELECT rog.res_opstelling_omschrijving
             FROM res_v_ruimte_opstel_gegevens rog
            WHERE rog.res_ruimte_opstel_key = rrr.res_ruimte_opstel_key)
             opstelling,
          (SELECT COUNT ( * )
             FROM res_rsv_artikel rra
            WHERE rra.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key)
             aantalcatering,
          TO_CHAR (v.van, 'hh24:mi') v_van,
          v.tot v_tot,
          v.omschrijving v_omschrijving,
          v.aantal v_aantal,
          v.prijs v_prijs,
          COALESCE (v.aantal, 0) * v.prijs v_totaal,
          COALESCE (gs.waarde, '0') gs,
          COALESCE (cdk.waarde, '0') cdk,
          rrr.res_rsv_ruimte_key,
          v.res_discipline_key,
          kn_bes_cateraar.waarde
     FROM res_rsv_ruimte rrr,
          (SELECT res_rsv_ruimte_key,
                  res_rsv_artikel_aantal aantal,
                  res_artikel_prijs prijs,
                  res_rsv_artikel_levering van,
                  NULL tot,
                  ra.res_artikel_omschrijving omschrijving,
                  ra.res_discipline_key
             FROM res_rsv_artikel rra, res_artikel ra
            WHERE rra.res_rsv_artikel_verwijder IS NULL
              AND rra.res_artikel_key = ra.res_artikel_key
           UNION ALL
           SELECT res_rsv_ruimte_key,
                  1 aantal,
                  NULL,
                  res_rsv_deel_van van,
                  res_rsv_deel_tot tot,
                  ins_deel_omschrijving omschrijving,
                  rd.res_discipline_key
             FROM res_rsv_deel rrd,
                  res_deel rd,
                  ins_deel d,
                  ins_srtdeel sd
            WHERE rrd.res_rsv_deel_verwijder IS NULL
              AND rrd.res_deel_key = rd.res_deel_key
              AND rd.res_ins_deel_key = d.ins_deel_key
              AND d.ins_srtdeel_key = sd.ins_srtdeel_key) v,
          (SELECT res_rsv_ruimte_key, fac_usrdata_code waarde
             FROM res_kenmerkwaarde kw, fac_usrdata ud, res_kenmerk rk
            WHERE rk.res_srtkenmerk_key = 21
              AND kw.res_kenmerk_key = rk.res_kenmerk_key
              AND fac.safe_to_number (res_kenmerkreservering_waarde) =
                     fac_usrdata_key) bp,
          (SELECT res_rsv_ruimte_key, res_kenmerkreservering_waarde waarde
             FROM res_kenmerkwaarde kw, res_kenmerk rk
            WHERE rk.res_srtkenmerk_key = 61
              AND kw.res_kenmerk_key = rk.res_kenmerk_key) bp_extra,
          (SELECT res_rsv_ruimte_key, fac_usrdata_code waarde
             FROM res_kenmerkwaarde kw, fac_usrdata ud, res_kenmerk rk
            WHERE rk.res_srtkenmerk_key = 2
              AND kw.res_kenmerk_key = rk.res_kenmerk_key
              AND fac.safe_to_number (res_kenmerkreservering_waarde) =
                     fac_usrdata_key) gs,
          (SELECT res_rsv_ruimte_key, fac_usrdata_code waarde
             FROM res_kenmerkwaarde kw, fac_usrdata ud, res_kenmerk rk
            WHERE rk.res_srtkenmerk_key = 22
              AND kw.res_kenmerk_key = rk.res_kenmerk_key
              AND fac.safe_to_number (res_kenmerkreservering_waarde) =
                     fac_usrdata_key) cdk,
				  (SELECT res_rsv_ruimte_key, res_kenmerkreservering_waarde waarde
				             FROM res_kenmerkwaarde kw, res_kenmerk rk
				            WHERE rk.res_srtkenmerk_key = 281
				                  AND kw.res_kenmerk_key = rk.res_kenmerk_key) bnk,
		(SELECT  fac_usrdata_omschr waarde , kw.res_rsv_ruimte_key
              FROM res_kenmerkwaarde kw, fac_usrdata ud, res_kenmerk rk
             WHERE     rk.res_srtkenmerk_key = 441
                   AND kw.res_kenmerk_key = rk.res_kenmerk_key
                   AND fac.safe_to_number (res_kenmerkreservering_waarde) =
                       fac_usrdata_key) kn_bes_cateraar,					  
          (SELECT rrr2.res_rsv_ruimte_key,
                  rg.alg_verdieping_omschrijving,
                  rg.alg_locatie_omschrijving
             FROM alg_v_ruimte_gegevens rg, res_rsv_ruimte rrr2
            WHERE rg.alg_ruimte_key =
                     COALESCE (
                        rrr2.alg_ruimte_key,
                        (SELECT MIN (rar.alg_ruimte_key)
                           FROM res_v_rsv_ruimte_2_alg_ruimte rar
                          WHERE rar.res_rsv_ruimte_key =
                                   rrr2.res_rsv_ruimte_key)
                     )) vg,
          prs_perslid p,
          prs_v_perslid_fullnames pf,
          prs_kostenplaats k,
          res_activiteit a
    WHERE rrr.res_rsv_ruimte_key = v.res_rsv_ruimte_key(+)
      AND rrr.res_rsv_ruimte_verwijder IS NULL
      AND rrr.res_activiteit_key = a.res_activiteit_key
      AND rrr.res_rsv_ruimte_contact_key = p.prs_perslid_key
      AND p.prs_perslid_key = pf.prs_perslid_key
      AND rrr.prs_kostenplaats_key = k.prs_kostenplaats_key(+)
      AND rrr.res_rsv_ruimte_key = vg.res_rsv_ruimte_key
      AND rrr.res_rsv_ruimte_key = bp.res_rsv_ruimte_key(+)
      AND rrr.res_rsv_ruimte_key = bp_extra.res_rsv_ruimte_key(+)
      AND rrr.res_rsv_ruimte_key = gs.res_rsv_ruimte_key(+)
      AND rrr.res_rsv_ruimte_key = cdk.res_rsv_ruimte_key(+)
	  AND rrr.res_rsv_ruimte_key = bnk.res_rsv_ruimte_key(+)
      AND rrr.res_rsv_ruimte_key = kn_bes_cateraar.res_rsv_ruimte_key(+);

CREATE OR REPLACE VIEW pnbr_v_rap_dagstaat_cat
(
   fclt_f_datum,
   dag,
   dagvweek,
   maand,
   jaar,
   nummer,
   tijdsort,
   ruimte_van,
   ruimte_tot,
   bezoekers,
   activiteit,
   omschrijving,
   opmerking,
   ruimte,
   verdieping,
   fclt_f_locatie,
   melder,
   telefoon,
   kostenplaats,
   begrpost,
   bestelnr,
   opstelling,
   aantalcatering,
   v_van,
   v_tot,
   v_omschrijving,
   v_aantal,
   v_prijs,
   v_totaal,
   gs,
   cdk,
   res_besnr_cateraar
)
AS
   SELECT    TO_CHAR (TO_DATE (fclt_d_datum, 'dd-mm-yyyy'), 'yyyy-mm-dd')
          || ' ('
          || dagvweek
          || ')',
          dag,
          dagvweek,
          maand,
          jaar,
          nummer,
          tijdsort,
          ruimte_van,
          ruimte_tot,
          bezoekers,
          activiteit,
          omschrijving,
          opmerking,
          ruimte,
          verdieping,
          locatie,
          melder,
          telefoon,
          kostenplaats,
          begrpost,
          bestelnr,
          opstelling,
          aantalcatering,
          v_van,
          v_tot,
          v_omschrijving,
          v_aantal,
          v_prijs,
          v_totaal,
          gs,
          cdk,
		  res_besnr_cateraar
     FROM pnbr_v_rap_dagstaat_bron
    WHERE TO_DATE (fclt_d_datum, 'dd-mm-yyyy') BETWEEN TRUNC (SYSDATE - 5)
                                                   AND  TRUNC (SYSDATE + 10);

CREATE OR REPLACE VIEW pnbr_v_rap_dagstaat_even
(
   fclt_d_datum,
   dag,
   dagvweek,
   maand,
   jaar,
   nummer,
   tijdsort,
   ruimte_van,
   ruimte_tot,
   bezoekers,
   activiteit,
   omschrijving,
   opmerking,
   ruimte,
   verdieping,
   melder,
   telefoon,
   kostenplaats,
   begrpost,
   bestelnr,
   opstelling,
   v_van,
   v_tot,
   v_omschrijving,
   v_aantal,
   v_prijs,
   v_totaal,
   gs,
   cdk,
   res_besnr_cateraar
)
AS
   SELECT fclt_d_datum,
          dag,
          dagvweek,
          maand,
          jaar,
          nummer,
          tijdsort,
          ruimte_van,
          ruimte_tot,
          bezoekers,
          activiteit,
          omschrijving,
          opmerking,
          ruimte,
          verdieping,
          melder,
          telefoon,
          kostenplaats,
          begrpost,
          bestelnr,
          opstelling,
          v_van,
          v_tot,
          v_omschrijving,
          v_aantal,
          v_prijs,
          v_totaal,
          gs,
          cdk,
		  res_besnr_cateraar
     FROM pnbr_v_rap_dagstaat_bron b
    WHERE activiteit = 'Evenement'
       OR EXISTS -- of reserveringen met catering die de klant niet zelf mag bestellen
             (SELECT res_rsv_ruimte_key
                FROM pnbr_v_rap_dagstaat_bron b2, ins_tab_discipline d
               WHERE b2.res_discipline_key IS NOT NULL
                 AND d.ins_discipline_min_level = 2
                 AND b2.res_discipline_key = d.ins_discipline_key
                 AND b.res_rsv_ruimte_key = b2.res_rsv_ruimte_key);

-- Rapport om status van reserveringen op te laten halen door SmartSigns.
CREATE OR REPLACE VIEW pnbr_v_api_reserveringen
(
   van,
   tot,
   key,
   resid,
   locatiecode,
   gebouwcode,
   fclt_3d_gebouw_key,
   verdiepingcode,
   ruimtecode,
   ruimtenaam,
   rvck_vnr,
   voorziening,
   aantal,
   prijs,
   btw,
   act_oms,
   srtact_oms,
   bezoekers,
   fo_status_key,
   fo_status,
   bo_status_key,
   bo_status,
   contact,
   HOST,
   kostenplaats,
   resruimtekey,
   algruimtekey,
   algruimtenr,
   omschrijving,
   opmerking,
   dagstaat
)
AS
   SELECT x.van van_datumtijd,
          x.tot tot_datumtijd,
          x.res_rsv_ruimte_key res_key,
             TO_CHAR (x.res_reservering_key)
          || '/'
          || TO_CHAR (x.res_rsv_ruimte_volgnr)
             res_id,
          rvck.loc_code,
          rvck.geb_code,
          rvck.geb_key,
          rvck.ver_code,
          rvck.ruimtenr,
          rvck.ruimtenaam,
          rvck.vnr,
          rvck.voorziening,
          rvck.aantal,
          ROUND (COALESCE (rvck.res_rsv_prijs, rvck.aantal * rvck.ps), 2)
             prijs,
          rvck.btw,
          x.res_activiteit_omschrijving,
          x.res_srtactiviteit_omschrijving,
          x.res_rsv_ruimte_bezoekers bezoekers,
          x.fo_status_key,
          DECODE (x.fo_status_key,
                  1, 'RESOPT',
                  2, 'RESDEF',
                  3, 'RESBLK',
                  'RESDEL')
             fo_status,
          x.bo_status_key,
          x.bo_status_oms,
          x.contact_naam,
          x.host_naam,
          x.kp_nr,
          rvck.res_ruimte_key,
          rvck.alg_ruimte_key,
          rvck.alg_ruimte_nr,
          x.res_rsv_ruimte_omschrijving oms,
          x.res_rsv_ruimte_opmerking opm,
          DECODE (x.contact_key, 30064, 'Ja',
             DECODE (
                COALESCE (
                   (SELECT res_kenmerkreservering_waarde
                      FROM res_kenmerkwaarde kw, res_kenmerk k
                     WHERE kw.res_kenmerk_key = k.res_kenmerk_key
                       AND k.res_srtkenmerk_key = 1
                       AND kw.res_rsv_ruimte_key = x.res_rsv_ruimte_key),
                   '1'),
                '1',
                'Nee',
                'Ja')
                )
             dagstaat
     FROM    (SELECT rr.res_rsv_ruimte_key,
                     rr.res_reservering_key,
                     rr.res_rsv_ruimte_volgnr,
                     a.res_activiteit_key,
                     a.res_activiteit_omschrijving,
                     sa.res_srtactiviteit_key,
                     sa.res_srtactiviteit_omschrijving,
                     rr.res_rsv_ruimte_van van,
                     rr.res_rsv_ruimte_tot tot,
                     rr.res_rsv_ruimte_bezoekers,
                     fs.res_status_fo_key fo_status_key,
                     fs.res_status_fo_omschrijving fo_status_oms,
                     bs.res_status_bo_key bo_status_key,
                     bs.res_status_bo_omschrijving bo_status_oms,
                     pfc.prs_perslid_key contact_key,
                     pfc.prs_perslid_naam_full contact_naam,
                     pfh.prs_perslid_key host_key,
                     pfh.prs_perslid_naam_full host_naam,
                     k.prs_kostenplaats_nr kp_nr,
                     k.prs_kostenplaats_omschrijving kp_oms,
                     rr.res_rsv_ruimte_omschrijving,
                     rr.res_rsv_ruimte_opmerking
                FROM res_v_aanwezigrsv_ruimte rr,           -- Alleen actieve!
                     res_activiteit a,
                     res_srtactiviteit sa,
                     res_status_fo fs,
                     res_status_bo bs,
                     prs_v_perslid_fullnames_all pfc,
                     prs_v_perslid_fullnames_all pfh,
                     prs_kostenplaats k
               WHERE rr.res_rsv_ruimte_tot > TRUNC (SYSDATE, 'IW') - 7
                 AND rr.res_ruimte_opstel_key IS NOT NULL -- Alleen ruimtereserveringen!
                 AND rr.res_activiteit_key = a.res_activiteit_key
                 AND a.res_activiteit_verwijder IS NULL
                 AND a.res_srtactiviteit_key = sa.res_srtactiviteit_key
                 AND sa.res_srtactiviteit_verwijder IS NULL
                 AND rr.res_status_fo_key = fs.res_status_fo_key
                 AND rr.res_status_bo_key = bs.res_status_bo_key
                 AND rr.res_rsv_ruimte_dirtlevel = 0
                 AND rr.res_rsv_ruimte_contact_key = pfc.prs_perslid_key
                 AND rr.res_rsv_ruimte_host_key = pfh.prs_perslid_key
                 AND rr.prs_kostenplaats_key = k.prs_kostenplaats_key(+)) x
          LEFT JOIN
             (SELECT rrr.res_rsv_ruimte_key,
                     l.alg_locatie_code loc_code,
                     g.alg_gebouw_code geb_code,
                     g.alg_gebouw_key geb_key,
                     v.alg_verdieping_code ver_code,
                     r.alg_ruimte_nr ruimtenr,
                     r.alg_ruimte_key alg_ruimte_key,
                     rr.res_ruimte_key res_ruimte_key,
                     r.alg_ruimte_nr,
                     rr.res_ruimte_nr ruimtenaam,
                     TO_NUMBER (NULL) vnr,
                     ro.res_opstelling_omschrijving voorziening,
                     ROUND (
                        (rrr.res_rsv_ruimte_tot - rrr.res_rsv_ruimte_van)
                        * 24,
                        2)
                        aantal,                                -- Duur in uren
                     rrr.res_rsv_ruimte_prijs res_rsv_prijs,
                     rr.res_ruimte_prijs ps,                     -- Uur-tarief
                     rr.res_ruimte_prijs_ochtend po,
                     rr.res_ruimte_prijs_middag pm,
                     rr.res_ruimte_prijs_avond pa,
                     NULL btw,
                     TO_NUMBER (NULL) k_key,
                     NULL k_naam,
                     NULL k_type,
                     NULL k_waarde
                FROM res_v_aanwezigrsv_ruimte rrr,
                     res_ruimte_opstelling rro,
                     res_ruimte rr,
                     res_opstelling ro,
                     (  SELECT res_ruimte_key,
                               MAX (alg_ruimte_key) alg_ruimte_key,
                               COUNT ( * ) aantal
                          FROM res_alg_ruimte
                         WHERE res_alg_ruimte_verwijder IS NULL
                      GROUP BY res_ruimte_key) rar,
                     alg_ruimte r,
                     alg_verdieping v,
                     alg_gebouw g,
                     alg_locatie l
               WHERE rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key
                 AND rro.res_ruimte_key = rr.res_ruimte_key
                 AND rro.res_opstelling_key = ro.res_opstelling_key
                 AND rr.res_ruimte_key = rar.res_ruimte_key(+)
                 AND rar.alg_ruimte_key = r.alg_ruimte_key(+)
                 AND r.alg_verdieping_key = v.alg_verdieping_key(+)
                 AND v.alg_gebouw_key = g.alg_gebouw_key(+)
                 AND g.alg_locatie_key = l.alg_locatie_key(+)) rvck
          ON x.res_rsv_ruimte_key = rvck.res_rsv_ruimte_key;

CREATE OR REPLACE VIEW pnbr_v_rap_ideeenbus
(
   melding,
   datum,
   fclt_f_korte_omschrijving,
   fclt_f_status,
   idee,
   financieel,
   immaterieel,
   afhandeling
)
AS
   SELECT m.mld_melding_key,
          TO_CHAR (mld_melding_datum, 'dd-mm-yyyy'),
          mld_kenmerkmelding_waarde korteomschrijving,
          DECODE (
             (SELECT mld_kenmerkmelding_waarde
                FROM mld_kenmerkmelding km
               WHERE km.mld_kenmerk_key = 3261
                 AND km.mld_melding_key = m.mld_melding_key),
             1542,
             'Afgewezen',
             1541,
             'Gehonoreerd',
             'In behandeling'),
          (SELECT mld_kenmerkmelding_waarde
             FROM mld_kenmerkmelding km
            WHERE km.mld_kenmerk_key = 262
              AND km.mld_melding_key = m.mld_melding_key)
             idee,
          (SELECT mld_kenmerkmelding_waarde
             FROM mld_kenmerkmelding km
            WHERE km.mld_kenmerk_key = 263
              AND km.mld_melding_key = m.mld_melding_key)
             financieel,
          (SELECT mld_kenmerkmelding_waarde
             FROM mld_kenmerkmelding km
            WHERE km.mld_kenmerk_key = 264
              AND km.mld_melding_key = m.mld_melding_key)
             immaterieel,
          mld_melding_opmerking
     FROM mld_melding m, mld_kenmerkmelding km
    WHERE km.mld_kenmerk_key = 261
      AND km.mld_melding_key = m.mld_melding_key
      AND mld_stdmelding_key = 262
      AND mld_melding_status <> 1;

-- rapport om inzage te krijgen in de bezittingen en of ze functioneel beheerders zijn,
-- van medewerkers die uitdienst gaan.
CREATE OR REPLACE VIEW pnbr_v_rap_uitdienst_objecten
(
   uitdienst,
   naam,
   aantal,
   objecten,
   beheer,
   applicaties
)
AS
   SELECT to_date(prs_kenmerklink_waarde, 'dd-mm-yyyy'),
          pf.prs_perslid_naam_full,
          d.aantal,
          d.ins_deel_omschrijving,
          f.aantal,
          f.ins_deel_omschrijving
     FROM prs_kenmerklink kl,
          prs_perslid p,
          prs_v_perslid_fullnames pf,
          (  SELECT COUNT (ins_deel_key) aantal,
                    listagg (
                       CASE
                          WHEN aantal < 40 THEN ins_deel_omschrijving
                          ELSE '.'
                       END,
                       ',')
                       WITHIN GROUP (ORDER BY ins_deel_omschrijving)
                       AS ins_deel_omschrijving,
                    d.ins_alg_ruimte_key prs_perslid_key
               FROM ins_deel d,
                    (  SELECT ins_alg_ruimte_key, COUNT ( * ) aantal
                         FROM ins_deel
                        WHERE ins_alg_ruimte_type = 'P'
                          AND ins_deel_verwijder IS NULL
                     GROUP BY ins_alg_ruimte_key) da
              WHERE ins_alg_ruimte_type = 'P'
                AND ins_deel_verwijder IS NULL
                AND d.ins_alg_ruimte_key = da.ins_alg_ruimte_key
                AND COALESCE (ins_deel_vervaldatum, SYSDATE + 1) > SYSDATE
           GROUP BY d.ins_alg_ruimte_key, da.aantal) d,
          (  SELECT COUNT (d.ins_deel_key) aantal,
                    listagg (ins_deel_opmerking, ',')
                       WITHIN GROUP (ORDER BY ins_deel_opmerking)
                       AS ins_deel_omschrijving,
                    fac.safe_to_number (ins_kenmerkdeel_waarde) prs_perslid_key
               FROM ins_kenmerkdeel kd, ins_kenmerk k, ins_deel d
              WHERE kd.ins_kenmerk_key = k.ins_kenmerk_key
                AND k.ins_srtkenmerk_key IN (549, 550, 551) -- functioneel beheerder altx
                AND kd.ins_kenmerkdeel_verwijder IS NULL
                AND d.ins_deel_key = kd.ins_deel_key
                AND d.ins_deel_verwijder IS NULL
           GROUP BY fac.safe_to_number (ins_kenmerkdeel_waarde)) f
    WHERE kl.prs_kenmerklink_verwijder IS NULL
      AND kl.prs_link_key = p.prs_perslid_key
      AND kl.prs_kenmerk_key = 1020
      AND p.prs_perslid_verwijder IS NULL
      AND p.prs_perslid_key = d.prs_perslid_key(+)
      AND p.prs_perslid_key = pf.prs_perslid_key
      AND p.prs_perslid_key = f.prs_perslid_key(+);

CREATE OR REPLACE VIEW pnbr_v_noti_resreminder
(
   code,
   sender,
   receiver,
   text,
   key,
   xkey
)
AS
   SELECT code,
          sender,
          receiver,
          'Herinnering - ' || REPLACE (text, '  ', ' '),
          key,
          xkey
     FROM fac_v_noti_resreminder n, prs_perslid p
    WHERE n.receiver = p.prs_perslid_key
      AND prs_perslid_naam NOT LIKE 'INACTIEF:%';

-- notificatie naar klant die niet binnen 7 dagen op een vraag heeft geantwoord.
CREATE OR REPLACE VIEW pnbr_v_noti_mld_fenote_rem
(
   code,
   sender,
   receiver,
   text,
   key,
   xkey
)
AS
   SELECT 'MLDNOT',
          NULL,
          prs_perslid_key,
          'Herinnering: vraag over melding M' || mld_melding_key,
          mld_melding_key,
          NULL
     FROM (  SELECT m.mld_melding_key,
                    MAX (n.mld_melding_note_aanmaak) mld_melding_note_aanmaak,
                    m.prs_perslid_key
               FROM mld_melding m, mld_melding_note n, fac_setting s
              WHERE mld_melding_flag = 1
                AND s.fac_setting_name = 'mld_flag_on_fenote'
                AND mld_melding_note_flag = s.fac_setting_pvalue
                AND n.mld_melding_key = m.mld_melding_key
                AND mld_melding_status IN (0, 2, 3, 4, 7, 99)
           GROUP BY m.mld_melding_key, m.prs_perslid_key)
    WHERE TRUNC (mld_melding_note_aanmaak) = TRUNC (SYSDATE) - 7;

CREATE OR REPLACE VIEW pnbr_v_rap_mld_fenote
(
   melding,
   melder,
   standaardmelding,
   behandelgroep,
   omschrijving
)
AS
   SELECT 'M' || mld_melding_key,
          pf.prs_perslid_naam_full,
          std.mld_stdmelding_omschrijving,
          d.ins_discipline_omschrijving,
          mld_melding_omschrijving
     FROM prs_v_perslid_fullnames pf,
          mld_stdmelding std,
          ins_tab_discipline d,
          (  SELECT m.mld_melding_key,
                    m.mld_stdmelding_key,
                    m.mld_melding_omschrijving,
                    MAX (n.mld_melding_note_aanmaak) mld_melding_note_aanmaak,
                    m.prs_perslid_key
               FROM mld_melding m, mld_melding_note n, fac_setting s
              WHERE mld_melding_flag = 1
                AND s.fac_setting_name = 'mld_flag_on_fenote'
                AND mld_melding_note_flag = s.fac_setting_pvalue
                AND n.mld_melding_key = m.mld_melding_key
                AND mld_melding_status IN (0, 2, 3, 4, 7, 99)
           GROUP BY m.mld_melding_key,
                    m.prs_perslid_key,
                    mld_stdmelding_key,
                    mld_melding_omschrijving) m
    WHERE mld_melding_note_aanmaak < SYSDATE - 14
      AND m.prs_perslid_key = pf.prs_perslid_key
      AND m.mld_stdmelding_key = std.mld_stdmelding_key
      AND std.mld_ins_discipline_key = d.ins_discipline_key;

-- PNBR#28111 Rapportage met kunstobjecten inclusief foto
-- Overige keys zijn kenmerken voor deze objecten die dezelfde naam hebben als het veld.

CREATE OR REPLACE VIEW PNBR_V_RAP_KUNST
(
    FCLT_F_OBJECT,
    HTML_INS_DEEL_KEY,
    FCLT_F_KUNSTENAAR,
    FCLT_F_TITEL,
    THEMA,
    TECHNIEK_KUNST,
    MATERIAAL,
    DATERING,
    HOOGTE,
    BREEDTE,
    DIEPTE,
    HXBXD_INCL_LIJST,
    EIGENAAR,
    ACHTERGRONDINFO,
    LAATSTE_TAXATIEDATUM,
    GETAXEERD_DOOR,
    TAXATIEWAARDE,
    VERZEKERDE_WAARDE,
    RESTAURATIE_ONDERHOUD,
    HTML_FOTO
)
AS
      SELECT ins_deel_omschrijving
                 id,
                '<a class="details" onclick=''FcltMgr.openDetail("'
             || 'appl/ins/ins_deel.asp?urole=bo&'
             || 'ins_key= '
             || ins_deel_key
             || '")''>'
             || HTF.escape_sc (ins_deel_omschrijving)
             || '</a>',
             (SELECT fac_usrdata_omschr
                FROM ins_kenmerkdeel  ikd,
                     ins_kenmerk      ik,
                     ins_srtkenmerk   isk,
                     fac_kenmerkdomein kd,
                     fac_usrdata      ud
               WHERE     ikd.ins_kenmerk_key = 3201
                     AND ik.ins_kenmerk_key = ikd.ins_kenmerk_key
                     AND ik.ins_srtkenmerk_key = isk.ins_srtkenmerk_key
                     AND kd.fac_kenmerkdomein_key = isk.fac_kenmerkdomein_key
                     AND ud.fac_usrtab_key = kd.fac_usrtab_key
                     AND ikd.ins_kenmerkdeel_waarde = ud.fac_usrdata_key
                     AND d.ins_deel_key = ikd.ins_deel_key)
                 Naam_kunstenaar,
             (SELECT ins_kenmerkdeel_waarde
                FROM ins_kenmerkdeel ikd
               WHERE     ins_kenmerk_key = 3221
                     AND d.ins_deel_key = ikd.ins_deel_key)
                 Titel,
             DECODE (
                 (SELECT ins_kenmerkdeel_waarde
                    FROM ins_kenmerkdeel ikd
                   WHERE     ins_kenmerk_key = 3242
                         AND d.ins_deel_key = ikd.ins_deel_key),
                 NULL, (SELECT fac_usrdata_omschr
                          FROM ins_kenmerkdeel  ikd,
                               ins_kenmerk      ik,
                               ins_srtkenmerk   isk,
                               fac_kenmerkdomein kd,
                               fac_usrdata      ud
                         WHERE     ikd.ins_kenmerk_key = 3241
                               AND ik.ins_kenmerk_key = ikd.ins_kenmerk_key
                               AND ik.ins_srtkenmerk_key =
                                   isk.ins_srtkenmerk_key
                               AND kd.fac_kenmerkdomein_key =
                                   isk.fac_kenmerkdomein_key
                               AND ud.fac_usrtab_key = kd.fac_usrtab_key
                               AND ikd.ins_kenmerkdeel_waarde =
                                   ud.fac_usrdata_key
                               AND d.ins_deel_key = ikd.ins_deel_key),
                    (SELECT fac_usrdata_omschr
                       FROM ins_kenmerkdeel  ikd,
                            ins_kenmerk      ik,
                            ins_srtkenmerk   isk,
                            fac_kenmerkdomein kd,
                            fac_usrdata      ud
                      WHERE     ikd.ins_kenmerk_key = 3241
                            AND ik.ins_kenmerk_key = ikd.ins_kenmerk_key
                            AND ik.ins_srtkenmerk_key = isk.ins_srtkenmerk_key
                            AND kd.fac_kenmerkdomein_key =
                                isk.fac_kenmerkdomein_key
                            AND ud.fac_usrtab_key = kd.fac_usrtab_key
                            AND ikd.ins_kenmerkdeel_waarde = ud.fac_usrdata_key
                            AND d.ins_deel_key = ikd.ins_deel_key)
                 || ' / '
                 || (SELECT ins_kenmerkdeel_waarde
                       FROM ins_kenmerkdeel ikd
                      WHERE     ins_kenmerk_key = 3242
                            AND d.ins_deel_key = ikd.ins_deel_key))
                 thema,
             (SELECT ins_kenmerkdeel_waarde
                FROM ins_kenmerkdeel ikd
               WHERE     ins_kenmerk_key = 3261
                     AND d.ins_deel_key = ikd.ins_deel_key)
                 techniek_kunst,
             (SELECT ins_kenmerkdeel_waarde
                FROM ins_kenmerkdeel ikd
               WHERE     ins_kenmerk_key = 3281
                     AND d.ins_deel_key = ikd.ins_deel_key)
                 Materiaal,
             (SELECT ins_kenmerkdeel_waarde
                FROM ins_kenmerkdeel ikd
               WHERE     ins_kenmerk_key = 3282
                     AND d.ins_deel_key = ikd.ins_deel_key)
                 datering,
             (SELECT ins_kenmerkdeel_waarde
                FROM ins_kenmerkdeel ikd
               WHERE     ins_kenmerk_key = 3301
                     AND d.ins_deel_key = ikd.ins_deel_key)
                 Hoogte,
             (SELECT ins_kenmerkdeel_waarde
                FROM ins_kenmerkdeel ikd
               WHERE     ins_kenmerk_key = 3302
                     AND d.ins_deel_key = ikd.ins_deel_key)
                 Breedte,
             (SELECT ins_kenmerkdeel_waarde
                FROM ins_kenmerkdeel ikd
               WHERE     ins_kenmerk_key = 3303
                     AND d.ins_deel_key = ikd.ins_deel_key)
                 Diepte,
             (SELECT ins_kenmerkdeel_waarde
                FROM ins_kenmerkdeel ikd
               WHERE     ins_kenmerk_key = 3321
                     AND d.ins_deel_key = ikd.ins_deel_key)
                 hxbxd_incl_lijst,
             (SELECT ins_kenmerkdeel_waarde
                FROM ins_kenmerkdeel ikd
               WHERE     ins_kenmerk_key = 3322
                     AND d.ins_deel_key = ikd.ins_deel_key)
                 Eigenaar,
             (SELECT ins_kenmerkdeel_waarde
                FROM ins_kenmerkdeel ikd
               WHERE     ins_kenmerk_key = 3341
                     AND d.ins_deel_key = ikd.ins_deel_key)
                 achtergrondinfo,
             (SELECT ins_kenmerkdeel_waarde
                FROM ins_kenmerkdeel ikd
               WHERE     ins_kenmerk_key = 3361
                     AND d.ins_deel_key = ikd.ins_deel_key)
                 laatste_taxatiedatum,
             (SELECT ins_kenmerkdeel_waarde
                FROM ins_kenmerkdeel ikd
               WHERE     ins_kenmerk_key = 3362
                     AND d.ins_deel_key = ikd.ins_deel_key)
                 getaxeerd_door,
             (SELECT ins_kenmerkdeel_waarde
                FROM ins_kenmerkdeel ikd
               WHERE     ins_kenmerk_key = 3363
                     AND d.ins_deel_key = ikd.ins_deel_key)
                 Taxatiewaarde,
             (SELECT ins_kenmerkdeel_waarde
                FROM ins_kenmerkdeel ikd
               WHERE     ins_kenmerk_key = 3381
                     AND d.ins_deel_key = ikd.ins_deel_key)
                 verzekerde_waarde,
             (SELECT ins_kenmerkdeel_waarde
                FROM ins_kenmerkdeel ikd
               WHERE     ins_kenmerk_key = 3401
                     AND d.ins_deel_key = ikd.ins_deel_key)
                 restauratie_onderhoud,
             DECODE (
                 (SELECT ins_kenmerkdeel_waarde
                    FROM ins_kenmerkdeel ikd
                   WHERE     ins_kenmerk_key = 4321
                         AND d.ins_deel_key = ikd.ins_deel_key),
                 NULL, 'Geen foto',
                    '<img  src="https://pnbr.facilitor.nl/api2/objects/'
                 || ins_deel_key
                 || '/attachments/109/'
                 || (SELECT ins_kenmerkdeel_waarde
                       FROM ins_kenmerkdeel ikd
                      WHERE     ins_kenmerk_key = 4321
                            AND d.ins_deel_key = ikd.ins_deel_key)
                 || '" height="128">')
                 Foto
        FROM ins_deel d
       WHERE ins_srtdeel_key = 1082 AND ins_deel_verwijder IS NULL
    ORDER BY 3, 1;

-- PNBR#31907: Objectwijzigingen (alle) en ook direct bovenstaande rapportage
-- daarmee in lijn gebracht!
/* Formatted on 15-4-2015 11:12:42 (QP5 v5.136.908.31019) */
CREATE OR REPLACE VIEW pnbr_v_rap_objectwijzigingen
(
   hide_f_id,
   html_identificatie,
   beschrijving,
   fclt_f_discipline,
   fclt_f_groep,
   mutatie,
   fclt_d_mutatiedatum
)
AS
     SELECT d.ins_deel_omschrijving,
            '<a class="details" onclick=''FcltMgr.openDetail("appl/ins/ins_deel.asp?urole=bo&'
            || 'ins_key='
            || d.ins_deel_key
            || '")''>'
            || d.ins_deel_omschrijving
            || '</a>'
               identificatie,
            d.ins_deel_opmerking beschrijving,
            td.ins_discipline_omschrijving discipline,
            sd.ins_srtdeel_omschrijving groep,
            DECODE (d.ins_deel_verwijder,
                    NULL, lcl.x('fac_srtnotificatie_oms', sn.fac_srtnotificatie_key, sn.fac_srtnotificatie_oms),
                    'Object verwijderd')
            || DECODE (sn.fac_srtnotificatie_code,
                       'INSUPD',
                       ' (' || COUNT (sn.fac_srtnotificatie_oms) || ')')
               mutatie,
            TO_CHAR (t.fac_tracking_datum, 'dd-mm-yyyy') mutatiedatum
       FROM fac_tracking t,
            fac_srtnotificatie sn,
            ins_deel d,
            ins_srtdeel sd,
            ins_srtgroep sg,
            ins_discipline td
      WHERE     t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
            AND sn.fac_srtnotificatie_xmlnode = 'deel'
            AND t.fac_tracking_refkey = d.ins_deel_key
            AND d.ins_srtdeel_key = sd.ins_srtdeel_key
            AND sd.ins_srtgroep_key = sg.ins_srtgroep_key
            AND sg.ins_discipline_key = td.ins_discipline_key
   GROUP BY d.ins_deel_omschrijving,
            d.ins_deel_key,
            d.ins_deel_opmerking,
            td.ins_discipline_omschrijving,
            sd.ins_srtdeel_omschrijving,
            d.ins_deel_verwijder,
            sn.fac_srtnotificatie_oms,
            sn.fac_srtnotificatie_code,
            sn.fac_srtnotificatie_key,
            t.fac_tracking_datum;

CREATE OR REPLACE VIEW pnbr_v_rap_open_cmdb_status
(
   hide_f_volgorde,
   html_melding,
   html_wijziging,
   datum,
   melding_status,
   klasse,
   status,
   domein,
   laatste_update,
   omschrijving_wijziging,
   gewenste_opleverdat,
   verwachte_oplostijd
)
AS
   SELECT   TO_CHAR (mld_melding_datum, 'yyyymmddhh24mi'),
            '<a class="details" onclick=''FcltMgr.openDetail("appl/mld/mld_melding.asp?urole=bo&'
            || 'mld_key='
            || w.start_key
            || '")''>'
            || w.start_key
            || '</a>',
            '<a class="details" onclick=''FcltMgr.openDetail("appl/mld/mld_melding.asp?urole=bo&'
            || 'mld_key='
            || m.mld_melding_key
            || '")''>'
            || m.mld_melding_key
            || '</a>',
            m.mld_melding_datum,
            (SELECT   mld_statuses_omschrijving
               FROM   mld_statuses
              WHERE   mld_statuses_key = m.mld_melding_status)
               melding_status,
            (SELECT   fac_usrdata_code
               FROM   mld_kenmerkmelding km2, mld_kenmerk k, fac_usrdata ud
              WHERE       km2.mld_kenmerk_key = k.mld_kenmerk_key
                      AND k.mld_srtkenmerk_key = 3565      -- Wijzigingsklasse
                      AND km2.mld_melding_key = m.mld_melding_key
                      AND fac.safe_to_number (km2.mld_kenmerkmelding_waarde) =
                            ud.fac_usrdata_key)
               klasse,
            (SELECT   fac_usrdata_omschr
               FROM   mld_kenmerkmelding km, mld_kenmerk k, fac_usrdata ud
              WHERE   km.mld_kenmerk_key = k.mld_kenmerk_key
                      AND k.mld_srtkenmerk_key = 3621                -- status
                      AND ud.fac_usrdata_key =
                            fac.safe_to_number (mld_kenmerkmelding_waarde)
                      AND km.mld_melding_key = m.mld_melding_key)
               status,
            (SELECT   ins_discipline_omschrijving
               FROM   ins_tab_discipline d, mld_stdmelding std
              WHERE   d.ins_discipline_key = std.mld_ins_discipline_key
                      AND std.mld_stdmelding_key = m.mld_stdmelding_key)
               domein,
            (SELECT   MAX (fac_tracking_datum)
               FROM   (SELECT   fac_tracking_datum, fac_tracking_refkey
                         FROM   fac_tracking t
                        WHERE   (t.fac_tracking_oms LIKE
                                    '%' || 'Status wijzigingsbeheer:' || '%'
                                 OR t.fac_srtnotificatie_key = 161)
                       UNION ALL
                       SELECT   mld_melding_note_aanmaak, mld_melding_key
                         FROM   mld_melding_note mn) grp
              WHERE   grp.fac_tracking_refkey = m.mld_melding_key)
               laatstestatwijz,
            m.mld_melding_omschrijving,
            (SELECT   fac.safe_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 k.mld_srtkenmerk_key = 3568 -- gewenste opleverdatum
                      AND km.mld_melding_key = m.mld_melding_key)
               gewenste_opleverdat,
            m.mld_melding_einddatum verwachte_oplostijd
     FROM   (SELECT   m.mld_melding_key start_key,
                      m2.mld_melding_key vervolg_key
               FROM   (SELECT   mld_kenmerkmelding_waarde, km.mld_melding_key
                         FROM   mld_kenmerkmelding km, mld_kenmerk k2
                        WHERE   km.mld_kenmerk_key = k2.mld_kenmerk_key
                                AND k2.mld_srtkenmerk_key = 3601) km2, -- wijziging
                      mld_melding m,
                      mld_melding m2,
                      mld_stdmelding std,
                      ins_tab_discipline d
              WHERE       m.mld_melding_key = km2.mld_melding_key(+)
                      AND m2.mld_stdmelding_key = std.mld_stdmelding_key
                      AND std.mld_ins_discipline_key = d.ins_discipline_key
                      AND ins_srtdiscipline_key = 21    -- wijzigingsverzoeken
                      AND m2.mld_melding_start_key = m.mld_melding_key
                      AND m2.mld_melding_status NOT IN (1, 5, 6)
             UNION
             SELECT   NULL start_key, m2.mld_melding_key vervolg_key
               FROM   mld_melding m2,
                      mld_stdmelding std,
                      ins_tab_discipline d
              WHERE       m2.mld_stdmelding_key = std.mld_stdmelding_key
                      AND std.mld_ins_discipline_key = d.ins_discipline_key
                      AND ins_srtdiscipline_key = 21    -- wijzigingsverzoeken
                      AND mld_melding_start_key IS NULL
                      AND m2.mld_melding_status NOT IN (1, 5, 6)) w,
            mld_melding m
    WHERE   w.vervolg_key = m.mld_melding_key;

CREATE OR REPLACE VIEW pnbr_v_rap_cmdb_status
(
   hide_f_volgorde,
   html_melding,
   html_wijziging,
   datum,
   klasse,
   status,
   domein,
   laatste_update,
   omschrijving_wijziging,
   gewenste_opleverdatum
)
AS
   SELECT TO_CHAR (mld_melding_datum, 'yyyymmddhh24mi'),
          '<a class="details" onclick=''FcltMgr.openDetail("appl/mld/mld_melding.asp?urole=bo&'
          || 'mld_key='
          || w.start_key
          || '")''>'
          || w.start_key
          || '</a>',
          '<a class="details" onclick=''FcltMgr.openDetail("appl/mld/mld_melding.asp?urole=bo&'
          || 'mld_key='
          || m.mld_melding_key
          || '")''>'
          || m.mld_melding_key
          || '</a>',
          m.mld_melding_datum,
          (SELECT fac_usrdata_code
             FROM mld_kenmerkmelding km2, mld_kenmerk k, fac_usrdata ud
            WHERE km2.mld_kenmerk_key = k.mld_kenmerk_key
              AND k.mld_srtkenmerk_key = 3565              -- Wijzigingsklasse
              AND km2.mld_melding_key = m.mld_melding_key
              AND fac.safe_to_number (km2.mld_kenmerkmelding_waarde) =
                     ud.fac_usrdata_key)
             klasse,
          (SELECT fac_usrdata_omschr
             FROM mld_kenmerkmelding km, mld_kenmerk k, fac_usrdata ud
            WHERE km.mld_kenmerk_key = k.mld_kenmerk_key
              AND k.mld_srtkenmerk_key = 3621                        -- status
              AND ud.fac_usrdata_key =
                     fac.safe_to_number (mld_kenmerkmelding_waarde)
              AND km.mld_melding_key = m.mld_melding_key)
             status,
          (SELECT ins_discipline_omschrijving
             FROM ins_tab_discipline d, mld_stdmelding std
            WHERE d.ins_discipline_key = std.mld_ins_discipline_key
              AND std.mld_stdmelding_key = m.mld_stdmelding_key)
             domein,
          (SELECT MAX (fac_tracking_datum)
             FROM fac_tracking t
            WHERE fac_tracking_refkey = m.mld_melding_key
              AND t.fac_tracking_oms LIKE
                     '%' || 'Status wijzigingsbeheer:' || '%')
             laatstestatwijz,
          m.mld_melding_omschrijving,
          (SELECT fac.safe_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 k.mld_srtkenmerk_key = 3568         -- gewenste opleverdatum
              AND km.mld_melding_key = m.mld_melding_key)
             gewenste_opleverdatum
     FROM (SELECT m.mld_melding_key start_key, m2.mld_melding_key vervolg_key
             FROM (SELECT mld_kenmerkmelding_waarde, km.mld_melding_key
                     FROM mld_kenmerkmelding km, mld_kenmerk k2
                    WHERE km.mld_kenmerk_key = k2.mld_kenmerk_key
                      AND k2.mld_srtkenmerk_key = 3601) km2,      -- wijziging
                  mld_melding m,
                  mld_melding m2,
                  mld_stdmelding std,
                  ins_tab_discipline d
            WHERE m.mld_melding_key = km2.mld_melding_key(+)
              AND m2.mld_stdmelding_key = std.mld_stdmelding_key
              AND std.mld_ins_discipline_key = d.ins_discipline_key
              AND ins_srtdiscipline_key = 21            -- wijzigingsverzoeken
              AND m2.mld_melding_start_key = m.mld_melding_key
              AND m2.mld_melding_status IN (5, 6)
           UNION ALL
           SELECT NULL start_key, m2.mld_melding_key vervolg_key
             FROM mld_melding m2, mld_stdmelding std, ins_tab_discipline d
            WHERE m2.mld_stdmelding_key = std.mld_stdmelding_key
              AND std.mld_ins_discipline_key = d.ins_discipline_key
              AND ins_srtdiscipline_key = 21            -- wijzigingsverzoeken
              AND mld_melding_start_key IS NULL
              AND m2.mld_melding_status IN (5, 6)) w,
          mld_melding m
    WHERE w.vervolg_key = m.mld_melding_key;

-- View achter de API om de software componenten beschikbaar te stellen op brain
CREATE OR REPLACE VIEW pnbr_v_rap_sw_catalog
(
   ins_deel_key,
   omschrijving,
   groep,
   code_applicatie,
   lange_applicatienaam,
   functionele_beschrijving,
   versie_applicatie,
   locatie_van_installatie,
   categorie,
   fabrikant,
   koppelingen_met,
   beschrijving_relatie_met,
   applicatiebeheerder,
   technisch_beheerder,
   functioneel_beheerder_alt_1,
   functioneel_beheerder_alt_2,
   functioneel_beheerder_alt_3,
   eigenaar_organisatieonderdeel,
   bedrijfskritisch,
   dienstverleningsniveau,
   status_software,
   contract_beschikbaar,
   licentie_beschikbaar,
   indicatie_aantal_gebruikers,
   relatie_met_snow,
   beschikbare_documentatie,
   locatie_documentatie,
   notitie,
   bevat_data_met_bewaartermijn,
   startdatum_gebruik_applicatie,
   einddatum_gebruik_applicatie
)
AS
   SELECT d.ins_deel_key,
          ins_deel_omschrijving,
          ins_srtdeel_omschrijving groep,
          pnbr.get_kenmerk ('INS', 661, d.ins_deel_key), -- Code_applicatie
          pnbr.get_kenmerk ('INS', 662, d.ins_deel_key), -- Lange applicatienaam
          pnbr.get_kenmerk ('INS', 663, d.ins_deel_key), -- Functionele beschrijving
          pnbr.get_kenmerk ('INS', 664, d.ins_deel_key), -- Versie applicatie
          pnbr.get_kenmerk ('INS', 665, d.ins_deel_key), -- Locatie van installatie
          pnbr.get_kenmerk ('INS', 667, d.ins_deel_key), -- Categorie
          pnbr.get_kenmerk ('INS', 668, d.ins_deel_key), -- Fabrikant
          pnbr.get_kenmerk ('INS', 669, d.ins_deel_key), -- Koppelingen met andere applicatie(s)
          pnbr.get_kenmerk ('INS', 670, d.ins_deel_key), -- Beschrijving relatie met andere configuratie items
          pnbr.get_kenmerk ('INS', 671, d.ins_deel_key), -- Applicatiebeheerder
          pnbr.get_kenmerk ('INS', 672, d.ins_deel_key), -- Technisch beheerder
          pnbr.get_kenmerk ('INS', 673, d.ins_deel_key), -- Functioneel beheerder alt 1
          pnbr.get_kenmerk ('INS', 674, d.ins_deel_key), -- Functioneel beheerder alt 2
          pnbr.get_kenmerk ('INS', 675, d.ins_deel_key), -- Functioneel beheerder alt 3
          pnbr.get_kenmerk ('INS', 676, d.ins_deel_key), -- Eigenaar /Organisatieonderdeel
          pnbr.get_kenmerk ('INS', 677, d.ins_deel_key), -- Bedrijfskritisch
          pnbr.get_kenmerk ('INS', 678, d.ins_deel_key), -- Dienstverleningsniveau
          pnbr.get_kenmerk ('INS', 679, d.ins_deel_key), -- Status Software
          pnbr.get_kenmerk ('INS', 680, d.ins_deel_key), -- Contract beschikbaar
          pnbr.get_kenmerk ('INS', 681, d.ins_deel_key), -- Licentie beschikbaar
          pnbr.get_kenmerk ('INS', 682, d.ins_deel_key), -- Indicatie aantal gebruikers
          pnbr.get_kenmerk ('INS', 683, d.ins_deel_key), -- Relatie met SNOW
          pnbr.get_kenmerk ('INS', 684, d.ins_deel_key), -- Beschikbare documentatie
          pnbr.get_kenmerk ('INS', 685, d.ins_deel_key), -- Locatie documentatie
          pnbr.get_kenmerk ('INS', 686, d.ins_deel_key), -- Notitie
          pnbr.get_kenmerk ('INS', 741, d.ins_deel_key), -- Bevat data met bewaartermijn
          pnbr.get_kenmerk ('INS', 687, d.ins_deel_key), -- Startdatum gebruik applicatie
          pnbr.get_kenmerk ('INS', 688, d.ins_deel_key)  -- Einddatum gebruik applicatie
     FROM ins_deel d,
          ins_srtdeel sd,
          ins_srtgroep sg,
          ins_kenmerkdeel kd,
          ins_kenmerk k
    WHERE d.ins_srtdeel_key = sd.ins_srtdeel_key
      AND sd.ins_srtgroep_key = sg.ins_srtgroep_key
      AND sg.ins_discipline_key = 1621                             -- software
      AND d.ins_deel_key = kd.ins_deel_key
      AND kd.ins_kenmerk_key = k.ins_kenmerk_key
      AND k.ins_srtkenmerk_key = 567                 -- dienstverleningsniveau
      AND (kd.ins_kenmerkdeel_waarde = 2990                            -- kern
        OR kd.ins_kenmerkdeel_waarde = 2991              -- functionele ruimte
          );

CREATE OR REPLACE VIEW pnbr_v_rap_melding_top25
(
   ins_discipline_omschrijving,
   mld_stdmelding_omschrijving,
   aantal
)
AS
     SELECT ins_discipline_omschrijving,
            mld_stdmelding_omschrijving,
            COUNT (mld_melding_key)
       FROM mld_melding m, mld_stdmelding std, ins_tab_discipline d
      WHERE m.mld_stdmelding_key = std.mld_stdmelding_key
        AND std.mld_ins_discipline_key = d.ins_discipline_key
        AND m.mld_melding_datum BETWEEN TO_DATE (
                                           TO_CHAR (ADD_MONTHS (SYSDATE, -1),
                                                    'yyyymm')
                                           || '01',
                                           'yyyymmdd')
                                    AND  TO_DATE (
                                            TO_CHAR (SYSDATE, 'yyyymm') || '01',
                                            'yyyymmdd')
   GROUP BY mld_stdmelding_omschrijving, d.ins_discipline_omschrijving;

CREATE OR REPLACE VIEW pnbr_v_rap_melding_oro
(
   mld_melding_key,
   mld_discipline_stdmelding,
   mld_melding_datum,
   prs_perslid_naam,
   mld_melding_omschrijving
)
AS
   SELECT mld_melding_key,
             d.ins_discipline_omschrijving
          || '-'
          || std.mld_stdmelding_omschrijving,
          mld_melding_datum,
          pf.prs_perslid_naam_full,
          mld_melding_omschrijving
     FROM mld_melding m,
          prs_perslid p,
          prs_v_perslid_fullnames pf,
          mld_stdmelding std,
          ins_tab_discipline d
    WHERE m.mld_stdmelding_key = std.mld_stdmelding_key
      AND std.mld_ins_discipline_key = d.ins_discipline_key
      AND m.prs_perslid_key = p.prs_perslid_key
      AND p.prs_perslid_key = pf.prs_perslid_key
      AND p.prs_afdeling_key = 381
      AND m.mld_melding_datum BETWEEN TO_DATE (
                                         TO_CHAR (ADD_MONTHS (SYSDATE, -1),
                                                  'yyyymm')
                                         || '01',
                                         'yyyymmdd')
                                  AND  TO_DATE (
                                          TO_CHAR (SYSDATE, 'yyyymm') || '01',
                                          'yyyymmdd');

CREATE OR REPLACE VIEW pnbr_v_rap_mnd_bestelling
(
   catalogus,
   groep,
   aantal,
   prijs
)
AS
     SELECT d.ins_discipline_omschrijving,
            sg.bes_srtgroep_omschrijving,
            COUNT (DISTINCT b.bes_bestelling_key),
            SUM (bes_bestelopdr_item_aantal * bes_bestelopdr_item_brutoprijs)
               prijs
       FROM bes_bestelling b,
            bes_bestelling_item bi,
            bes_bestelopdr_item boi,
            bes_srtdeel bd,
            bes_srtgroep sg,
            bes_discipline d
      WHERE b.bes_bestelling_key = bi.bes_bestelling_key
        AND bi.bes_bestelopdr_item_key = boi.bes_bestelopdr_item_key
        AND bi.bes_srtdeel_key = bd.bes_srtdeel_key
        AND bd.bes_srtgroep_key = sg.bes_srtgroep_key
        AND sg.ins_discipline_key = d.ins_discipline_key
        AND d.ins_discipline_omschrijving NOT LIKE '%-ink'
        AND b.bes_bestelling_datum BETWEEN TO_DATE (
                                              TO_CHAR (
                                                 ADD_MONTHS (SYSDATE, -1),
                                                 'yyyymm')
                                              || '01',
                                              'yyyymmdd')
                                       AND  TO_DATE (
                                               TO_CHAR (SYSDATE, 'yyyymm')
                                               || '01',
                                               'yyyymmdd')
   GROUP BY d.ins_discipline_omschrijving, sg.bes_srtgroep_omschrijving;

CREATE OR REPLACE VIEW pnbr_v_rap_mnd_kosten_afd
(
   afdeling,
   prijs
)
AS
     SELECT prs_afdeling_naam,
            SUM (bes_bestelopdr_item_aantal * bes_bestelopdr_item_brutoprijs)
               prijs
       FROM bes_bestelling b,
            bes_bestelling_item bi,
            bes_bestelopdr_item boi,
            bes_srtdeel bd,
            bes_srtgroep sg,
            bes_discipline d,
            prs_afdeling a,
            prs_perslid p
      WHERE b.bes_bestelling_key = bi.bes_bestelling_key
        AND bi.bes_bestelopdr_item_key = boi.bes_bestelopdr_item_key
        AND bi.bes_srtdeel_key = bd.bes_srtdeel_key
        AND bd.bes_srtgroep_key = sg.bes_srtgroep_key
        AND sg.ins_discipline_key = d.ins_discipline_key
        AND d.ins_discipline_omschrijving NOT LIKE '%-ink'
        AND b.prs_perslid_key = p.prs_perslid_key
        AND p.prs_afdeling_key = a.prs_afdeling_key
        AND b.bes_bestelling_datum BETWEEN TO_DATE (
                                              TO_CHAR (
                                                 ADD_MONTHS (SYSDATE, -1),
                                                 'yyyymm')
                                              || '01',
                                              'yyyymmdd')
                                       AND  TO_DATE (
                                               TO_CHAR (SYSDATE, 'yyyymm')
                                               || '01',
                                               'yyyymmdd')
   GROUP BY a.prs_afdeling_naam;


CREATE OR REPLACE VIEW pnbr_v_rap_mnd_res_dag
(
   hide_f_volgorde,
   fclt_f_maaand,
   fclt_f_dag,
   fclt_f_activiteit,
   fclt_f_frontend_frontoffice,
   aantal,
   prijs
)
AS
     SELECT TO_CHAR (res_rsv_ruimte_van, 'yyyy-mm')
            || TO_CHAR (res_rsv_ruimte_van, 'd'),
            TO_CHAR (res_rsv_ruimte_van, 'yyyy-mm'),
            DECODE (TO_CHAR (res_rsv_ruimte_van, 'd'),
                    '1', 'Zondag',
                    '2', 'Maandag',
                    '3', 'Dinsdag',
                    '4', 'Woensdag',
                    '5', 'Donderdag',
                    '6', 'Vrijdag',
                    '7', 'Zaterdag')
               dag,
            res_activiteit_omschrijving,
            fe_fo,
            COUNT (rrr.res_rsv_ruimte_key) aantal,
            SUM (res.getdeelresprijs (rrr.res_rsv_ruimte_key)) prijs
       FROM res_rsv_ruimte rrr,
            res_activiteit a,
            (SELECT fac_tracking_refkey res_rsv_ruimte_key,
                    DECODE (res_rsv_ruimte_contact_key,
                            tr.prs_perslid_key, 'Frontend',
                            'Frontoffice')
                       fe_fo
               FROM fac_tracking tr,
                    fac_srtnotificatie str,
                    res_rsv_ruimte rrr2
              WHERE str.fac_srtnotificatie_code = 'RESNEW'
                AND tr.fac_srtnotificatie_key = str.fac_srtnotificatie_key
                AND tr.fac_tracking_refkey = rrr2.res_rsv_ruimte_key) f
      WHERE rrr.res_activiteit_key = a.res_activiteit_key
        AND rrr.res_rsv_ruimte_key = f.res_rsv_ruimte_key(+)
        AND rrr.res_rsv_ruimte_verwijder IS NULL
        AND (rrr.res_ruimte_opstel_key IS NOT NULL
          OR EXISTS (SELECT res_rsv_artikel_key
                       FROM res_rsv_artikel rra
                      WHERE rra.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
                     UNION ALL
                     SELECT res_rsv_deel_key
                       FROM res_rsv_deel rrd
                      WHERE rrd.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key))
        AND res_rsv_ruimte_van >
               ADD_MONTHS (
                  TO_DATE (TO_CHAR (SYSDATE, 'yyyymm') || '01', 'yyyymmdd'),
                  -4)
        AND TO_CHAR (res_rsv_ruimte_van, 'yyyymm') <
               TO_CHAR (SYSDATE, 'yyyymm')
   GROUP BY TO_CHAR (res_rsv_ruimte_van, 'd'),
            TO_CHAR (res_rsv_ruimte_van, 'yyyy-mm'),
            res_activiteit_omschrijving,
            f.fe_fo;

------------------------------------------------------------------------------------
--
-- Tijdelijke notificatie voor bezoek dat aangemeld is in Toren C van het
-- SNS Reaal gebouw
--
------------------------------------------------------------------------------------
CREATE OR REPLACE VIEW pnbr_v_rap_bezoekers_c_toren
(
   hide_f_ts,
   locatie,
   datum,
   van,
   tot,
   bezoeker,
   bedrijf,
   opdrachtgever,
   telefoon,
   opmerking
)
AS
   SELECT TO_CHAR (bez_afspraak_datum, 'yyyymmddhh24mi') ts,
          l.alg_locatie_code,
          TO_CHAR (bez_afspraak_datum, 'dd-mm-yyyy') datum,
          TO_CHAR (bez_afspraak_datum, 'hh24:mi') van,
          TO_CHAR (bez_afspraak_eind, 'hh24:mi') tot,
          bez_afspraak_naam bezoeker,
          bez_afspraak_bedrijf bedrijf,
          bez_afspraak_gastheer opdrachtgever,
          h.prs_perslid_telefoonnr telefoon,
          a.bez_afspraak_opmerking opmerking
     FROM bez_afspraak a, bez_bezoekers b, prs_perslid h, alg_locatie l
    WHERE a.bez_afspraak_key = b.bez_afspraak_key
      AND a.alg_locatie_key = 221
      AND a.alg_locatie_key = l.alg_locatie_key
      AND bez_afspraak_host_key = h.prs_perslid_key
      AND bez_afspraak_datum BETWEEN TRUNC (SYSDATE)
                                 AND  fac.datumtijdplusuitvoertijd (
                                         TRUNC (SYSDATE),
                                         2,
                                         'DAGEN');

-- notificatie naar medewerkers van SNS Reaal over bezoekers voor vandaag en volgende werkdag.
CREATE OR REPLACE VIEW pnbr_v_noti_bezoekers_c_toren
(
   code,
   sender,
   receiver,
   text,
   key,
   xkey
)
AS
   SELECT 'FACUSR',
          NULL,
          23044,
          'PNB Bezoekers voor vandaag en eerstvolgende werkdag',
          681,
          NULL
     FROM DUAL;

CREATE OR REPLACE VIEW PNBR_V_RAP_FAQMLD_VERVALLEN
(
   Kennisbankitem,
   Publicatiedatum,
   FCLT_F_Vakgroep,
   FCLT_F_Melding,
   Vervaldatum,
   Verwijderdatum
)
AS
   SELECT   fac_faq_question kennisbankitem,
            fac_faq_datum publicatiedatum,
            ins_srtdiscipline_prefix || '-' || ins_discipline_omschrijving
               vakgroep,
            mld_stdmelding_omschrijving melding,
            mld_stdmelding_vervaldatum vervaldatum,
            mld_stdmelding_verwijder verwijderdatum
     FROM   fac_faq f,
            mld_stdmeldingfaq fm,
            mld_stdmelding std,
            mld_discipline d,
            ins_srtdiscipline srt
    WHERE       f.fac_faq_key = fm.fac_faq_key
            AND fm.mld_stdmelding_key = std.mld_stdmelding_key
            AND std.mld_ins_discipline_key = d.ins_discipline_key
            AND srt.ins_srtdiscipline_key = d.ins_srtdiscipline_key
            AND (std.mld_stdmelding_verwijder IS NOT NULL
                 OR std.mld_stdmelding_vervaldatum < SYSDATE)
   UNION ALL
   SELECT   fac_faq_question vraag,
            fac_faq_datum publicatiedatum,
            ins_srtdiscipline_prefix || '-' || ins_discipline_omschrijving
               vakgroep,
            NULL melding,
            NULL vervaldatum,
            d.ins_discipline_verwijder verwijderdatum
     FROM   fac_faq f,
            mld_stdmeldingfaq fm,
            mld_discipline d,
            ins_srtdiscipline srt
    WHERE       f.fac_faq_key = fm.fac_faq_key
            AND srt.ins_srtdiscipline_key = d.ins_srtdiscipline_key
            AND d.ins_discipline_key = fm.ins_discipline_key
            AND fm.mld_stdmelding_key IS NULL
            AND d.ins_discipline_verwijder IS NOT NULL;

-- PNBR#31166. De MLDNEW notificatie staat uit.
-- Toch moet de melding controle email adres (3941) wel worden genotificeerd
CREATE OR REPLACE VIEW PNBR_V_NOTI_MLD_CONTROLEMAIL
(
   SENDER,
   RECEIVER,
   TEXT,
   CODE,
   KEY,
   XKEY
)
AS
   SELECT   NULL sender,
            prs_perslid_key_voor,
               'Nieuwe melding '
            || ins_srtdiscipline_prefix
            || '-'
            || mld_melding_key
            || ' ('
            || d.ins_discipline_omschrijving
            || '/'
            || std.mld_stdmelding_omschrijving
            || ') geregistreerd'
               text,
            'MLDNEW' code,
            mld_melding_key key,
            NULL xkey
     FROM   mld_melding m,
            mld_stdmelding std,
            mld_discipline d,
            ins_srtdiscipline srt
    WHERE       m.mld_stdmelding_key = 3941
            AND mld_melding_status != 1
            AND m.mld_stdmelding_key = std.mld_stdmelding_key
            AND d.ins_discipline_key = std.mld_ins_discipline_key
            AND d.ins_srtdiscipline_key = srt.ins_srtdiscipline_key
            AND mld_melding_datum >
                  (SELECT   fac_notificatie_job_nextrun
                            - fac_notificatie_job_interval / 24
                     FROM   fac_notificatie_job
                    WHERE   fac_notificatie_job_view =
                               'PNBR_V_NOTI_MLD_CONTROLEMAIL')
            AND mld_melding_datum <
                  (SELECT   fac_notificatie_job_nextrun
                     FROM   fac_notificatie_job
                    WHERE   fac_notificatie_job_view =
                               'PNBR_V_NOTI_MLD_CONTROLEMAIL');

-- PNBR#31533 - notijob tbv voorraadbehher
-- Als de minimale voorrraad van een artikel is behaald dan wordt een CUST05 notificatie verstuurd naar de groep LOGISTIEK VOORRAAD.
CREATE OR REPLACE VIEW PNBR_V_NOTI_BES_VOORRAAD
(
   SENDER,
   RECEIVER,
   TEXT,
   CODE,
   KEY,
   XKEY
)
AS
   SELECT   NULL,
            prs.prs_perslid_key,
               'Herinnering: Minimale voorraad ('
            || vmin
            || ') van artikel '
            || artikel
            || ' (nr. '
            || nr
            || ') is bereikt',
            'CUST05',
            bst.bes_key,
            NULL
     FROM   (SELECT   extern.dkey,
                      extern.bes_srtdeel_nr nr,
                      intern.bes_srtdeel_key,
                      COALESCE (intern.bes_srtdeel_omschrijving,
                                extern.bes_srtdeel_omschrijving)
                         artikel,
                      extern.vmin,
                      extern.geleverd - COALESCE (intern.besteld, 0) voorraad
               FROM      (SELECT   bd.ins_discipline_key dkey,   -- INKOOP-key
                                   sd.bes_srtdeel_nr,        -- ext. artikelnr
                                   sd.bes_srtdeel_omschrijving,
                                   sd.bes_srtdeel_voorraadmin vmin, -- ext. voorraadmin
                                   (SELECT   SUM(boi.bes_bestelopdr_item_aantalontv)
                                      FROM   bes_bestelling b,
                                             bes_bestelling_item bi,
                                             bes_bestelopdr_item boi
                                     WHERE --   boi.bes_bestelopdr_item_status in (6,7) AND
                                          b  .bes_bestelling_key =
                                                bi.bes_bestelling_key
                                             AND boi.bes_bestelopdr_item_key =
                                                   bi.bes_bestelopdr_item_key
                                             AND bi.bes_srtdeel_key =
                                                   sd.bes_srtdeel_key)
                                      geleverd
                            FROM   bes_srtdeel sd,
                                   bes_srtgroep g,
                                   bes_discipline bd,
                                   bes_disc_params dp
                           WHERE   sd.bes_srtdeel_verwijder IS NULL
                                   AND sd.bes_srtgroep_key =
                                         g.bes_srtgroep_key
                                   AND g.ins_discipline_key =
                                         bd.ins_discipline_key
                                   AND bd.ins_discipline_key =
                                         dp.bes_ins_discipline_key
                                   AND dp.bes_ins_discipline_key_inkoop IS NULL
                                   AND bd.ins_discipline_key IN
                                            (SELECT   bes_ins_discipline_key_inkoop
                                               FROM   bes_disc_params
                                              WHERE   bes_ins_discipline_key_inkoop IS NOT NULL))
                         extern     -- Inkoop artikelen uit externe catalogus!
                      FULL JOIN
                         (SELECT   dp.bes_ins_discipline_key_inkoop dkey, -- INKOOP-key
                                   sd.bes_srtdeel_key,
                                   sd.bes_srtdeel_nr,        -- int. artikelnr
                                   sd.bes_srtdeel_omschrijving,
                                   bd.ins_discipline_omschrijving, -- int. catalogusnaam
                                   (SELECT   SUM(COALESCE (
                                                    boi.bes_bestelopdr_item_aantal,
                                                    bi.bes_bestelling_item_aantal
                                                 ))
                                      FROM   bes_bestelling b,
                                             bes_bestelling_item bi,
                                             bes_bestelopdr_item boi
                                     WHERE   boi.bes_bestelopdr_item_key(+) =
                                                bi.bes_bestelopdr_item_key
                                             AND b.bes_bestelling_key =
                                                   bi.bes_bestelling_key
                                             AND bi.bes_srtdeel_key =
                                                   sd.bes_srtdeel_key)
                                      besteld
                            FROM   bes_srtdeel sd,
                                   bes_srtgroep g,
                                   bes_discipline bd,
                                   bes_disc_params dp
                           WHERE   sd.bes_srtdeel_verwijder IS NULL
                                   AND sd.bes_srtgroep_key =
                                         g.bes_srtgroep_key
                                   AND g.ins_discipline_key =
                                         bd.ins_discipline_key
                                   AND bd.ins_discipline_key =
                                         dp.bes_ins_discipline_key
                                   AND dp.bes_ins_discipline_key_inkoop IS NOT NULL)
                         intern    -- Verkoop artikelen uit interne catalogus!
                      ON extern.dkey = intern.dkey
                         AND extern.bes_srtdeel_nr = intern.bes_srtdeel_nr)
            vrd,
            (  SELECT   MAX (bes_bestelling_datum) bes_dat,
                        MAX (b.bes_bestelling_key) bes_key,
                        bes_srtdeel_key
                 FROM   bes_bestelling b, bes_bestelling_item bi
                WHERE   b.bes_bestelling_key = bi.bes_bestelling_key
                        AND b.bes_bestelling_datum > SYSDATE - 90
             GROUP BY   bes_srtdeel_key) bst,
            (SELECT   p.prs_perslid_key
               FROM   fac_groep fg, fac_gebruikersgroep fgg, prs_perslid p
              WHERE       fac_groep_upper = 'LOGISTIEK VOORRAAD'
                      AND fg.fac_groep_key = fgg.fac_groep_key
                      AND p.prs_perslid_key = fgg.prs_perslid_key
                      AND p.prs_perslid_verwijder IS NULL) prs
    WHERE   vrd.bes_srtdeel_key = bst.bes_srtdeel_key
            AND vrd.vmin >= vrd.voorraad
            AND bst.bes_dat >
                  (SELECT   fac_notificatie_job_nextrun
                            - fac_notificatie_job_interval / 24
                     FROM   fac_notificatie_job
                    WHERE   fac_notificatie_job_view =
                               'PNBR_V_NOTI_BES_VOORRAAD')
            AND bst.bes_dat <
                  (SELECT   fac_notificatie_job_nextrun
                     FROM   fac_notificatie_job
                    WHERE   fac_notificatie_job_view =
                               'PNBR_V_NOTI_BES_VOORRAAD');

-- PNBR#35208 backoffice gebak reminder (autorisatiegroep hutten = key 101)
-- als er nieuwe (status gefiatteerd = key 3) gebak aanvragen (=2161) zijn
-- PNBR# 35590 backoffice gebak bestellen omgezet van bestelling naar reservering
-- cateraar krijgt een dag van te voren bericht als er gebakbestelling voor 'morgen' zijn
-- gefilterd op ccatalogi van bakkers Hutten (2342), Vermeulen (2341) en De Rouw (2343)
CREATE OR REPLACE FORCE VIEW PNBR_V_NOTI_BES_BOGEBREMINDER
(
   CODE,
   SENDER,
   RECEIVER,
   TEXT,
   KEY,
   PAR1,
   PAR2,
   XKEY
)
AS
   SELECT 'CUST06',
          NULL,
          prs_perslid_key,
          'Let op: er zijn ' || aantal || ' gebakbestelregels voor morgen',
          res_artikel_key,
          NULL,
          NULL,
          NULL
     FROM (SELECT COUNT ( * ) aantal,
                      MAX(res_artikel_key) res_artikel_key
             FROM (  SELECT rsv.res_artikel_key
                           FROM
                            RES_V_AANWEZIGRSV_ARTIKEL rsv,
                            RES_ARTIKEL a
                            WHERE
                                A.RES_ARTIKEL_KEY=RSV.RES_ARTIKEL_KEY
                                and A.RES_DISCIPLINE_KEY in (2342, 2341, 2343)
                                and TRUNC(rsv.res_rsv_artikel_levering) = TRUNC(SYSDATE)+1
                          GROUP BY rsv.res_artikel_key )
           HAVING COUNT ( * ) > 0) x,
          (SELECT p.prs_perslid_key
             FROM fac_gebruikersgroep fg, prs_perslid p
            WHERE     fac_groep_key = 101
                  AND p.prs_perslid_key = fg.prs_perslid_key
                  AND p.prs_perslid_verwijder IS NULL
                  AND p.prs_perslid_email IS NOT NULL
                  AND p.prs_perslid_oslogin IS NOT NULL) y;

CREATE OR REPLACE FORCE VIEW PNBR_V_RAP_GEBAKBESTELLING
(
   LEVERANCIER,
   ARTIKEL,
   EENHEID,
   PRIJS,
   AANTAL,
   TOTAAL,
   LEVERDATUM,
   KOSTENPLAATS,
   OMSCHR_KOSTENPLAATS,
   MEDEWERKER,
   HTML_BESTELNUMMER,
   NOTITIE,
   ZAKELIJK_PRIVE,
   RESERVERINGNR
)
AS
   SELECT D.INS_DISCIPLINE_OMSCHRIJVING AS Leverancier,
          A.RES_ARTIKEL_OMSCHRIJVING AS Artikel,
          A.RES_ARTIKEL_EENHEID AS Eenheid,
          A.RES_ARTIKEL_PRIJS AS Prijs,
          RA.RES_RSV_ARTIKEL_AANTAL AS Aantal,
          RA.RES_RSV_ARTIKEL_LEVERING AS Leverdatum,
          coalesce(A.RES_ARTIKEL_PRIJS, 0) * RA.RES_RSV_ARTIKEL_AANTAL,
          KP.PRS_KOSTENPLAATS_NR AS Kostenplaats,
          KP.PRS_KOSTENPLAATS_OMSCHRIJVING AS Omschr_kostenplaats,
          P.PRS_PERSLID_NAAM_FRIENDLY AS Medewerker,
          '<a class="details" onclick=''FcltMgr.openDetail("appl/res/res_reservering.asp?urole=fo&'
          || 'rsv_ruimte_key='
          || rr.res_rsv_ruimte_key
          || '")''>'
          || rr.res_reservering_key
          || '/'
          || res_rsv_ruimte_volgnr
          || '</a>'
             AS html_Bestelnummer,
          RR.RES_RSV_RUIMTE_OPMERKING,
         (SELECT ud.fac_usrdata_omschr
            FROM res_kenmerkwaarde rk, fac_usrdata ud
           WHERE rk.res_kenmerk_key = 262 AND ud.fac_usrtab_key = 1943   -- kenmerk + usertab zakelijk of prive
             AND ud.fac_usrdata_key =
                    fac.safe_to_number (rk.res_kenmerkreservering_waarde)
             AND rk.res_rsv_ruimte_key = rr.res_rsv_ruimte_key)
            zakpriv,
          RR.RES_RESERVERING_KEY || '/' || res_rsv_ruimte_volgnr
     FROM res_rsv_artikel ra,
          res_artikel a,
          res_rsv_ruimte rr,
          prs_kostenplaats kp,
          PRS_V_PERSLID_FULLNAMES_ALL P,
          res_activiteitdiscipline AD,
          ins_tab_discipline d
    WHERE     A.RES_ARTIKEL_KEY = RA.RES_ARTIKEL_KEY
          AND A.RES_DISCIPLINE_KEY IN (2342, 2341, 2343)
          AND RA.RES_RSV_RUIMTE_KEY = RR.RES_RSV_RUIMTE_KEY
          AND RR.PRS_KOSTENPLAATS_KEY = kp.prs_kostenplaats_key
          AND RR.RES_RSV_RUIMTE_HOST_KEY = P.PRS_PERSLID_KEY
          AND AD.RES_DISCIPLINE_KEY = A.RES_DISCIPLINE_KEY
          AND AD.RES_DISCIPLINE_KEY = D.INS_DISCIPLINE_KEY
          AND RR.RES_RSV_RUIMTE_VERWIJDER IS NULL
          AND RA.RES_RSV_ARTIKEL_AFGEMELD IS NULL
          AND RA.RES_RSV_ARTIKEL_VERWIJDER IS NULL;

-- Rapportage inzicht in welke meldingen autgroep Servicedesk (key 253) registreerd (key 39)
-- en welke meldingen autgroep Servicedesk (key 253) afmeld (key 35)
CREATE OR REPLACE VIEW mld_v_udr_mld_actiegroep
(
   melding_key,
   registratie_datum,
   geregistreerd_door,
   registratie_autorisatiegroep,
   afmeld_datum,
   afgemeld_door,
   afmeld_autorisatiegroep,
   zelfservice,
   meldingnummer,
   locatiecode,
   locatie_omschrijving,
   gebouwcode,
   gebouw_omschrijving,
   verdieping,
   ruimtenr,
   ruimte_omschrijving,
   melder,
   afdeling,
   afdeling_omschrijving,
   vakgroeptype,
   vakgroep,
   standaard_melding,
   melding_datum,
   melding_einddatum,
   omschrijving,
   status
)
AS
   SELECT mld_melding_key,
          tr2.fac_tracking_datum registratie_datum,
          (SELECT prs_perslid_naam_full
             FROM prs_v_perslid_fullnames_all pf
            WHERE pf.prs_perslid_key = tr2.prs_perslid_key)
             geregistreerd_door,
          tr2.groep registratie_autorisatiegroep,
          tr.fac_tracking_datum afmeld_datum,
          (SELECT prs_perslid_naam_full
             FROM prs_v_perslid_fullnames_all pf
            WHERE pf.prs_perslid_key = tr.prs_perslid_key)
             afgemeld_door,
          tr.groep afmeld_autorisatiegroep,
          DECODE (tr2.prs_perslid_key, m.prs_perslid_key, 'Ja', 'Nee')
             zelfservice,
          sd.ins_srtdiscipline_prefix || m.mld_melding_key meldingnummer,
          alg_locatie_code locatie,
          alg_locatie_omschrijving locatie_omschrijving,
          og.alg_gebouw_code gebouw,
          og.alg_gebouw_naam gebouw_naam,
          og.alg_verdieping_code verdieping,
          og.alg_ruimte_nr ruimte,
          og.alg_ruimte_omschrijving ruimte_omschrijving,
          (SELECT prs_perslid_naam_full
             FROM prs_v_perslid_fullnames_all pf
            WHERE pf.prs_perslid_key = m.prs_perslid_key_voor)
             melder,
          (SELECT prs_afdeling_naam
             FROM prs_afdeling afd, prs_perslid pp
            WHERE afd.prs_afdeling_key = pp.prs_afdeling_key
              AND pp.prs_perslid_key = m.prs_perslid_key)
             afdeling,
          (SELECT prs_afdeling_omschrijving
             FROM prs_afdeling afd, prs_perslid pp
            WHERE afd.prs_afdeling_key = pp.prs_afdeling_key
              AND pp.prs_perslid_key = m.prs_perslid_key)
             afdeling_omschrijving,
          sd.ins_srtdiscipline_omschrijving vakgroeptype,
          md.ins_discipline_omschrijving vakgroep,
          s.mld_stdmelding_omschrijving standaard_melding,
          mld_melding_datum,
          m.mld_melding_einddatum einddatum,
          mld_melding_omschrijving,
          (SELECT mld_statuses_omschrijving
             FROM mld_statuses sta
            WHERE sta.mld_statuses_key = m.mld_melding_status)
             status
     FROM mld_melding m,
          alg_v_allonrgoed_gegevens og,
          alg_locatie l,
          mld_discipline md,
          mld_stdmelding s,
          ins_srtdiscipline sd,
          (SELECT 'Afgemeld' afgemeld,
                  fac_tracking_refkey,
                  fac_tracking_datum,
                  track.prs_perslid_key,
                  COALESCE (fac_groep_omschrijving, 'Anders') groep
             FROM fac_tracking track,
                  (SELECT prs_perslid_key, fac_groep_omschrijving
                     FROM fac_groep g, fac_gebruikersgroep gg
                    WHERE g.fac_groep_key = 253
                      AND g.fac_groep_key = gg.fac_groep_key) auth
            WHERE fac_srtnotificatie_key = 35
              AND auth.prs_perslid_key(+) = track.prs_perslid_key) tr,
          (SELECT 'Geregistreerd' geregistreerd,
                  fac_tracking_refkey,
                  fac_tracking_datum,
                  track.prs_perslid_key,
                  COALESCE (fac_groep_omschrijving, 'Anders') groep
             FROM fac_tracking track,
                  (SELECT prs_perslid_key, fac_groep_omschrijving
                     FROM fac_groep g, fac_gebruikersgroep gg
                    WHERE g.fac_groep_key = 253
                      AND g.fac_groep_key = gg.fac_groep_key) auth
            WHERE fac_srtnotificatie_key = 39
              AND auth.prs_perslid_key(+) = track.prs_perslid_key) tr2
    WHERE m.mld_alg_locatie_key = l.alg_locatie_key(+)
      AND m.mld_alg_onroerendgoed_keys = og.alg_onroerendgoed_keys(+)
      AND s.mld_stdmelding_key = m.mld_stdmelding_key
      AND md.ins_discipline_key = s.mld_ins_discipline_key
      AND sd.ins_srtdiscipline_key = md.ins_srtdiscipline_key
      AND fac_activiteit_key IS NULL
      AND tr.fac_tracking_refkey(+) = m.mld_melding_key
      AND tr2.fac_tracking_refkey(+) = m.mld_melding_key;

--- PNBR#36004 Functie voor het 'uitlezen' van de mail body vanuit SAP voor een 'Choose Your Own Device' aanvraag
CREATE OR REPLACE FUNCTION pnbr_get_html_value (
   p_text    IN VARCHAR2,
   p_start   IN VARCHAR2)
   RETURN VARCHAR2
AS
   v_pos         NUMBER;
   v_pos_begin   NUMBER;
   v_pos_eind    NUMBER;
   v_result      VARCHAR2 (4000);
   v_lb          VARCHAR2 (2);
BEGIN
   -- Wat gebruiken we als linebreak
   IF INSTR (p_text, CHR (13) || CHR (10)) <> 0
   THEN
      v_lb := CHR (13) || CHR (10);
     dbms_output.put_line('1310');
   ELSIF INSTR (p_text, CHR (10) || CHR (13)) <> 0
   THEN
      v_lb := CHR (10) || CHR (13);
       dbms_output.put_line('1013');
   ELSIF INSTR (p_text, CHR (10) || CHR (10)) <> 0
   THEN
      v_lb := CHR (10) || CHR (10);
       dbms_output.put_line('1010');
   END IF;

   -- Controleer of de begintag aanwezig is. Zo nee, dan hebben we niets te tonen.
   -- Bepaal de positie waar de opgegeven start tekst begint
   v_pos := INSTR (p_text, p_start);

   -- Als de opgegeven start tekst niet gevonden wordt dan is v_pos 0
   IF v_pos = 0
   THEN
      RETURN NULL;
   END IF;

   -- Bij pnbr staat de beginpositie op dezelfde regel.
   -- De beginpositie wordt bepaald door startpositie van de opgegeven start tekst Personeelsnummer de lengte van de starttekst + carriage return (CHR13) + linefeed (CHR10)
   v_pos_begin := INSTR (p_text, v_lb || p_start) + LENGTH (p_start) + 2;

   --- Eind positie is altijd einde van de regel
   v_pos_eind :=
      INSTR (p_text,
             v_lb,
             v_pos_begin,
             1);

   -- v_result is alles vanaf de startpositie tot aan het einde
   v_result := SUBSTR (p_text, v_pos_begin, v_pos_eind - v_pos_begin);

   -- Soms wordt een tag niet gevonden. Dan wordt de hele body inclusief CSS meegestuurd.
   -- Dat willen we natuurlijk niet. Daarom maken we daar maar een lege tag van.
   IF LENGTH (v_result) > 1000
   THEN
      v_result := p_start;
   END IF;

   RETURN v_result;
END;
/


-- PNBR#36004 Procedure voor het verwerken van 'Choose Your Own Device' aanvraag vanuit SAP
CREATE OR REPLACE PROCEDURE pnbr_processemail (
   pfrom        IN VARCHAR2,
   pto          IN VARCHAR2,
   psubject     IN VARCHAR2,
   pbody        IN VARCHAR2,
   psessionid   IN VARCHAR2,
   puserkey     IN NUMBER DEFAULT NULL)
AS
   sender                 prs_perslid.prs_perslid_key%TYPE;
   persnr                 prs_perslid.prs_perslid_nr%TYPE;
   kostenplaats           prs_afdeling.prs_kostenplaats_key%TYPE;
   v_mldkey               mld_melding.mld_melding_key%TYPE;
   defaultstdmelding      fac_setting.fac_setting_default%TYPE;
   errormsg               fac_result.fac_result_waarde%TYPE;
   v_soort_aanvraag       VARCHAR2 (50);
   v_model_omschrijving   VARCHAR2 (2000);                               -- 40
   v_plus_standaard       VARCHAR2 (2000);                               -- 30
   v_eigen_bijdrage       VARCHAR2 (2000);                                -- 8
   v_from                 VARCHAR2 (1000);
   v_mld_meldbron_key     NUMBER (10);
   v_hint                 VARCHAR2 (1000);
BEGIN

   -- Choose Your Own Device aanvragen vanuit SAP naar mld_stdmelding_key 7441 (Tablet) of mld_stdmelding_key 7442 (Telefoon)
   v_soort_aanvraag := pnbr_get_html_value (pbody, 'Soort Choose Your Own : ');
   v_hint := 'sa:' || v_soort_aanvraag;

   IF v_soort_aanvraag = 'Tablet'
   THEN
      defaultstdmelding := '7721';
   END IF;

   IF v_soort_aanvraag = 'Telefoon'
   THEN
      defaultstdmelding := '7701';
   END IF;

   v_hint := v_hint || '-std:' || defaultstdmelding;
   -- Meldbron = SAP, dus systeem = 6
   v_mld_meldbron_key := 6;

   -- Bij PNBR is de melder terug te halen uit de body van de email obv personeelsnummer aanvrager
   -- Op basis van dit personeelsnummer kan de melder en de kostenplaats bepaald worden
   persnr := pnbr_get_html_value (pbody, 'Personeelsnummer aanvrager : ');
   v_hint := v_hint || '-pnr:' || persnr;

   SELECT prs_perslid_key, d.prs_kostenplaats_key
     INTO sender, kostenplaats
     FROM prs_perslid p, prs_afdeling d
    WHERE p.prs_afdeling_key = d.prs_afdeling_key
      AND prs_perslid_nr = persnr
      AND prs_perslid_verwijder IS NULL;

   v_hint := v_hint || '-pk:' || sender;
   v_hint := v_hint || '-kp:' || kostenplaats;
   -- Bepaal de kenmerkwaarden die bij de melding moeten worden weggeschreven
   v_model_omschrijving :=
      pnbr_get_html_value (pbody, 'Model omschrijving : ');
   v_plus_standaard := pnbr_get_html_value (pbody, 'Plus/standaard model : ');
   v_eigen_bijdrage := pnbr_get_html_value (pbody, 'Eigen bijdrage : ');

   -- Registreer de melding in Facilitor
   BEGIN
      INSERT INTO mld_melding (mld_melding_module,
                               mld_meldbron_key,
                               mld_melding_datum,
                               mld_alg_locatie_key,
                               mld_melding_omschrijving,
                               mld_melding_status,
                               mld_stdmelding_key,
                               prs_perslid_key,
                               prs_perslid_key_voor,
                               prs_kostenplaats_key,
                               mld_melding_spoed)
          VALUES ('MLD',
                  v_mld_meldbron_key,
                  SYSDATE,
                  2, -- Provinciehuis Provincie Noord Brabant, alg_locatie_key=2
                  SUBSTR (
                     psubject || CHR (13)
                     || REPLACE (
                           SUBSTR (pbody, 1, 4000 - (LENGTH (psubject) + 2)),
                           CHR (13) || CHR (10) || CHR (13) || CHR (10),
                           CHR (13) || CHR (10)),
                     1,
                     4000),                    -- verwijder onnodige witregels
                  NULL,
                  defaultstdmelding,
                  sender,
                  sender,
                  kostenplaats,
                  3)
       RETURNING mld_melding_key
            INTO v_mldkey;

      BEGIN
         -- Vullen van kenmerk Model omschrijving (key = 9564) voor CYO aanvraag tablet (mld_key 7441)
         IF v_model_omschrijving IS NOT NULL AND defaultstdmelding = '7721'
         THEN
            INSERT INTO mld_kenmerkmelding (mld_melding_key,
                                            mld_kenmerk_key,
                                            mld_kenmerkmelding_waarde)
                VALUES (v_mldkey, 9564, SUBSTR (v_model_omschrijving, 1, 40));
         END IF;
      EXCEPTION
         WHEN OTHERS
         THEN
            fac.writelog (
               'PROCESSEMAIL',
               'W',
               'Veld Model omschrijving (key = 9564) kon niet opgeslagen worden.',
               SUBSTR (v_model_omschrijving, 1, 100));
      END;

      BEGIN
         -- Vullen van kenmerk Plus/standaard (key = 9565) voor CYO aanvraag tablet (mld_key 7441)
         IF v_plus_standaard IS NOT NULL AND defaultstdmelding = '7721'
         THEN
            INSERT INTO mld_kenmerkmelding (mld_melding_key,
                                            mld_kenmerk_key,
                                            mld_kenmerkmelding_waarde)
                VALUES (v_mldkey, 9565, SUBSTR (v_plus_standaard, 1, 30));
         END IF;
      EXCEPTION
         WHEN OTHERS
         THEN
            fac.writelog (
               'PROCESSEMAIL',
               'W',
               'Veld Plus/standaard (key = 9565) kon niet opgeslagen worden.',
               SUBSTR (v_plus_standaard, 1, 100));
      END;

      BEGIN
         -- Vullen van kenmerk Eigen bijdrag (key = 9566) voor CYO aanvraag tablet (mld_key 7441)
         IF v_eigen_bijdrage IS NOT NULL AND defaultstdmelding = '7721'
         THEN
            INSERT INTO mld_kenmerkmelding (mld_melding_key,
                                            mld_kenmerk_key,
                                            mld_kenmerkmelding_waarde)
                VALUES (v_mldkey, 9566, SUBSTR (v_eigen_bijdrage, 1, 8));
         END IF;
      EXCEPTION
         WHEN OTHERS
         THEN
            fac.writelog (
               'PROCESSEMAIL',
               'W',
               'Veld Eigen bijdrag (key = 9566) kon niet opgeslagen worden.',
               SUBSTR (v_eigen_bijdrage, 1, 100));
      END;

      BEGIN
         -- Vullen van kenmerk Model omschrijving (key = 9561) voor CYO aanvraag telefoon (mld_key 7442)
         IF v_model_omschrijving IS NOT NULL AND defaultstdmelding = '7701'
         THEN
            INSERT INTO mld_kenmerkmelding (mld_melding_key,
                                            mld_kenmerk_key,
                                            mld_kenmerkmelding_waarde)
                VALUES (v_mldkey, 9561, SUBSTR (v_model_omschrijving, 1, 40));
         END IF;
      EXCEPTION
         WHEN OTHERS
         THEN
            fac.writelog (
               'PROCESSEMAIL',
               'W',
               'Veld Model omschrijving (key = 9561) kon niet opgeslagen worden.',
               SUBSTR (v_model_omschrijving, 1, 100));
      END;

      BEGIN
         -- Vullen van kenmerk Plus/standaard (key = 9562) voor CYO aanvraag telefoon (mld_key 7442)
         IF v_plus_standaard IS NOT NULL AND defaultstdmelding = '7701'
         THEN
            INSERT INTO mld_kenmerkmelding (mld_melding_key,
                                            mld_kenmerk_key,
                                            mld_kenmerkmelding_waarde)
                VALUES (v_mldkey, 9562, SUBSTR (v_plus_standaard, 1, 30));
         END IF;
      EXCEPTION
         WHEN OTHERS
         THEN
            fac.writelog (
               'PROCESSEMAIL',
               'W',
               'Veld Plus/standaard (key = 9562) kon niet opgeslagen worden.',
               SUBSTR (v_plus_standaard, 1, 100));
      END;

      BEGIN
         -- Vullen van kenmerk Eigen bijdrag (key = 9563) voor CYO aanvraag telefoon (mld_key 7442)
         IF v_eigen_bijdrage IS NOT NULL AND defaultstdmelding = '7701'
         THEN
            INSERT INTO mld_kenmerkmelding (mld_melding_key,
                                            mld_kenmerk_key,
                                            mld_kenmerkmelding_waarde)
                VALUES (v_mldkey, 9563, SUBSTR (v_eigen_bijdrage, 1, 8));
         END IF;
      EXCEPTION
         WHEN OTHERS
         THEN
            fac.writelog (
               'PROCESSEMAIL',
               'W',
               'Veld Eigen bijdrag (key = 9563) kon niet opgeslagen worden.',
               SUBSTR (v_eigen_bijdrage, 1, 100));
      END;

      mld.setmeldingstatus (v_mldkey, 2, sender);

      INSERT INTO fac_result (fac_result_sessionid,
                              fac_result_naam,
                              fac_result_waarde)
          VALUES (psessionid,
                  'maillog',
                  'Geregistreerd onder melding ' || v_mldkey);
   END;


   IF errormsg IS NOT NULL
   THEN
      INSERT INTO fac_result (fac_result_sessionid,
                              fac_result_naam,
                              fac_result_waarde)
          VALUES (psessionid, 'errormsg', errormsg);
   END IF;
EXCEPTION
   WHEN OTHERS
   THEN
      fac.writelog (
         'PROCESSEMAIL',
         'W',
            'Mail kon niet verwerkt worden afzender: '
         || pfrom
         || '['
         || errormsg
         || '-'
         || v_hint
         || ']',
            'OTHERS (error '
         || SQLCODE
         || '/'
         || SUBSTR (SQLERRM, 1, 100)
         || ')');

      -- bewaar ook even de mail die ontvangen is.
      fac.writelog ('PROCESSEMAIL',
                    'I',
                    SUBSTR (pbody, 1, 900),
                    '');

      INSERT INTO fac_result (fac_result_sessionid,
                              fac_result_naam,
                              fac_result_waarde)
          VALUES (psessionid,
                  'errormsg',
                  'Database fout - Neem contact op met uw systeembeheerder');
END;
/

-- view voor zoekfunctie op brain
CREATE OR REPLACE VIEW pnbr_v_rap_brain_search
AS
   SELECT sd.ins_srtdiscipline_prefix,
          sd.ins_srtdiscipline_omschrijving,
          d.ins_discipline_omschrijving,
          mld_stdmelding_omschrijving,
          mld_stdmelding_hint,
          'https://pnbr.facilitor.nl/?u=61EsxN5AJI2Yf4Dq&mld_defaultstdmelding='
          || mld_stdmelding_key
             facilitor_link
     FROM mld_stdmelding std,
          mld_discipline d,
          ins_srtdiscipline sd,
          fac_groeprechten gr
    WHERE std.mld_ins_discipline_key = d.ins_discipline_key
      AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
      AND gr.ins_discipline_key = d.ins_discipline_key
      AND gr.fac_functie_key = 2                                                           -- MLDUSE
      AND gr.fac_groep_key = 1                                                           -- _default
      AND std.mld_stdmelding_verwijder IS NULL
      AND COALESCE (std.mld_stdmelding_notfrontend, 0) = 0;


--- Tbv eigen tabel met nog actieve kosten plaatsen
CREATE OR REPLACE VIEW PNBR_V_KOSTENPLAATSEN
(
   PRS_KOSTENPLAATS_KEY,
   PRS_KOSTENPLAATS,
   PRS_KOSTENPLAATS_VERWIJDER
)
AS
   SELECT prs_kostenplaats_key,
          prs_kostenplaats_nr || ' - ' || prs_kostenplaats_omschrijving,
          COALESCE(prs_kostenplaats_verwijder, prs_kostenplaats_eind)
     FROM prs_kostenplaats k;

--- Overzicht met kunstuitleen tbv kenmerkdomein
CREATE OR REPLACE VIEW PNBR_V_KUNST_AANVRAGEN
(
   MLD_MELDING_KEY,
   MLD_MELDING_NUMMER
)
AS
   SELECT m.mld_melding_key, sd.ins_srtdiscipline_prefix || m.mld_melding_key
     FROM mld_melding m,
          mld_stdmelding sm,
          ins_tab_discipline d,
          ins_srtdiscipline sd
    WHERE     m.mld_stdmelding_key = 4201
          AND m.mld_melding_status NOT IN (1, 5, 7)
          AND m.mld_stdmelding_key = sm.mld_stdmelding_key
          AND sm.mld_ins_discipline_key = d.ins_discipline_key
          AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key;

--- Portal menu item 'Kunst uitleen'
-- Overzicht 'KUNST: Kunstuitleen'
CREATE OR REPLACE VIEW PNBR_V_RAP_KUNST_UITLEEN
(
   FCLT_F_OBJECT,
   TECHNIEK,
   ONDERWERP,
   FCLT_F_KUNSTENAAR,
   FCLT_F_TITEL,
   MATERIAAL,
   GESIGNEERD,
   HOOGTE,
   BREEDTE,
   HTML_FOTO,
   VERKRIJGINGSINFORMATIE,
   TAXATIEWAARDE,
   RUIMTE,
   STATUS,
   RESERVERING,
   AANVRAAGNR,
   STATUS_SELECTIE,
   OBJECT_KEY
)
AS
   SELECT o.ins_deel_omschrijving,
          (SELECT fac_usrdata_omschr
             FROM ins_kenmerkdeel ikd,
                  ins_kenmerk ik,
                  ins_srtkenmerk isk,
                  fac_kenmerkdomein kd,
                  fac_usrdata ud
            WHERE     ikd.ins_kenmerk_key = 107
                  AND ik.ins_kenmerk_key = ikd.ins_kenmerk_key
                  AND ik.ins_srtkenmerk_key = isk.ins_srtkenmerk_key
                  AND kd.fac_kenmerkdomein_key = isk.fac_kenmerkdomein_key
                  AND ud.fac_usrtab_key = kd.fac_usrtab_key
                  AND ikd.ins_kenmerkdeel_waarde = ud.fac_usrdata_key
                  AND o.ins_deel_key = ikd.ins_deel_key)
             techniek,
          (SELECT fac_usrdata_omschr
             FROM ins_kenmerkdeel ikd,
                  ins_kenmerk ik,
                  ins_srtkenmerk isk,
                  fac_kenmerkdomein kd,
                  fac_usrdata ud
            WHERE     ikd.ins_kenmerk_key = 1382
                  AND ik.ins_kenmerk_key = ikd.ins_kenmerk_key
                  AND ik.ins_srtkenmerk_key = isk.ins_srtkenmerk_key
                  AND kd.fac_kenmerkdomein_key = isk.fac_kenmerkdomein_key
                  AND ud.fac_usrtab_key = kd.fac_usrtab_key
                  AND ikd.ins_kenmerkdeel_waarde = ud.fac_usrdata_key
                  AND o.ins_deel_key = ikd.ins_deel_key)
             onderwerp,
          (SELECT ins_kenmerkdeel_waarde
             FROM ins_kenmerkdeel ikd
            WHERE ins_kenmerk_key = 102 AND o.ins_deel_key = ikd.ins_deel_key)
             naam_kunstenaar,
          (SELECT ins_kenmerkdeel_waarde
             FROM ins_kenmerkdeel ikd
            WHERE ins_kenmerk_key = 104 AND o.ins_deel_key = ikd.ins_deel_key)
             titel,
          (SELECT ins_kenmerkdeel_waarde
             FROM ins_kenmerkdeel ikd
            WHERE ins_kenmerk_key = 110 AND o.ins_deel_key = ikd.ins_deel_key)
             materiaal,
          (SELECT fac_usrdata_omschr
             FROM ins_kenmerkdeel ikd,
                  ins_kenmerk ik,
                  ins_srtkenmerk isk,
                  fac_kenmerkdomein kd,
                  fac_usrdata ud
            WHERE     ikd.ins_kenmerk_key = 112
                  AND ik.ins_kenmerk_key = ikd.ins_kenmerk_key
                  AND ik.ins_srtkenmerk_key = isk.ins_srtkenmerk_key
                  AND kd.fac_kenmerkdomein_key = isk.fac_kenmerkdomein_key
                  AND ud.fac_usrtab_key = kd.fac_usrtab_key
                  AND ikd.ins_kenmerkdeel_waarde = ud.fac_usrdata_key
                  AND o.ins_deel_key = ikd.ins_deel_key)
             gesigneerd,
          (SELECT ins_kenmerkdeel_waarde
             FROM ins_kenmerkdeel ikd
            WHERE ins_kenmerk_key = 119 AND o.ins_deel_key = ikd.ins_deel_key)
             hoogte,
          (SELECT ins_kenmerkdeel_waarde
             FROM ins_kenmerkdeel ikd
            WHERE ins_kenmerk_key = 120 AND o.ins_deel_key = ikd.ins_deel_key)
             breedte,
          DECODE (
             (SELECT ins_kenmerkdeel_waarde
                FROM ins_kenmerkdeel ikd
               WHERE ins_kenmerk_key = 109
                     AND o.ins_deel_key = ikd.ins_deel_key),
             NULL,
             'Geen foto',
             '<img  src="https://pnbr.facilitor.nl/api2/objects/' || ins_deel_key ||'/attachments/109/'
             || (SELECT ins_kenmerkdeel_waarde
                   FROM ins_kenmerkdeel ikd
                  WHERE ins_kenmerk_key = 109
                        AND o.ins_deel_key = ikd.ins_deel_key)
             || '" height="128">')
             foto,
          (SELECT ins_kenmerkdeel_waarde
             FROM ins_kenmerkdeel ikd
            WHERE ins_kenmerk_key = 125 AND o.ins_deel_key = ikd.ins_deel_key)
             verkrijgingsinformatie,
          (SELECT ins_kenmerkdeel_waarde
             FROM ins_kenmerkdeel ikd
            WHERE ins_kenmerk_key = 132 AND o.ins_deel_key = ikd.ins_deel_key)
             taxatiewaarde,
          r.alg_ruimte_aanduiding || ' (' || r.alg_ruimte_omschrijving || ')',
          DECODE (
             r.alg_ruimte_key,
             1614,
             'Beschikbaar',
             'Uitgeleend' || ' sinds: '
             || (SELECT ins_kenmerkdeel_waarde
                   FROM ins_kenmerkdeel ikd
                  WHERE ins_kenmerk_key = 1363
                        AND o.ins_deel_key = ikd.ins_deel_key))
             status,
          (SELECT DECODE (ins_kenmerkdeel_waarde, 1, 'Gereserveerd', NULL)
             FROM ins_kenmerkdeel ikd
            WHERE ins_kenmerk_key = 1342
                  AND o.ins_deel_key = ikd.ins_deel_key)
             reservering,
          (SELECT ins_kenmerkdeel_waarde
             FROM ins_kenmerkdeel ikd
            WHERE ins_kenmerk_key = 1343
                  AND o.ins_deel_key = ikd.ins_deel_key)
             aanvraagnr,
          DECODE (r.alg_ruimte_key, 1614, 'Beschikbaar', 'Uitgeleend')
             status_selectie,
          o.ins_deel_key
     FROM ins_deel o, alg_v_ruimte_gegevens r, ins_srtdeel s
    WHERE     s.ins_srtdeel_key = 41
          AND o.ins_deel_verwijder IS NULL
          AND o.ins_alg_ruimte_key = r.alg_ruimte_key
          AND o.ins_srtdeel_key = s.ins_srtdeel_key
          AND (SELECT fac_usrdata_omschr
                 FROM ins_kenmerkdeel ikd,
                      ins_kenmerk ik,
                      ins_srtkenmerk isk,
                      fac_kenmerkdomein kd,
                      fac_usrdata ud
                WHERE     ikd.ins_kenmerk_key = 115
                      AND ik.ins_kenmerk_key = ikd.ins_kenmerk_key
                      AND ik.ins_srtkenmerk_key = isk.ins_srtkenmerk_key
                      AND kd.fac_kenmerkdomein_key =
                            isk.fac_kenmerkdomein_key
                      AND ud.fac_usrtab_key = kd.fac_usrtab_key
                      AND ikd.ins_kenmerkdeel_waarde = ud.fac_usrdata_key
                      AND o.ins_deel_key = ikd.ins_deel_key) = 'Ja'
          AND o.INS_DEEL_KEY NOT IN
                   (SELECT o.ins_deel_key
                      FROM ins_deel o, alg_v_ruimte_gegevens r, ins_srtdeel s
                     WHERE     s.ins_srtdeel_key = 41
                           AND o.ins_deel_verwijder IS NULL
                           AND o.ins_alg_ruimte_key = r.alg_ruimte_key
                           AND o.ins_srtdeel_key = s.ins_srtdeel_key
                           AND (SELECT fac_usrdata_omschr
                                  FROM ins_kenmerkdeel ikd,
                                       ins_kenmerk ik,
                                       ins_srtkenmerk isk,
                                       fac_kenmerkdomein kd,
                                       fac_usrdata ud
                                 WHERE ikd.ins_kenmerk_key = 115
                                       AND ik.ins_kenmerk_key =
                                             ikd.ins_kenmerk_key
                                       AND ik.ins_srtkenmerk_key =
                                             isk.ins_srtkenmerk_key
                                       AND kd.fac_kenmerkdomein_key =
                                             isk.fac_kenmerkdomein_key
                                       AND ud.fac_usrtab_key =
                                             kd.fac_usrtab_key
                                       AND ikd.ins_kenmerkdeel_waarde =
                                             ud.fac_usrdata_key
                                       AND o.ins_deel_key = ikd.ins_deel_key) =
                                 'Ja'
                           -- objecten die niet in het depot staan
                           AND r.alg_ruimte_key <> 1614
                           --- objecten die al gereserveerd zijn
                           AND (SELECT DECODE (ins_kenmerkdeel_waarde,
                                               1, 'Gereserveerd',
                                               NULL)
                                  FROM ins_kenmerkdeel ikd
                                 WHERE ins_kenmerk_key = 1342
                                       AND o.ins_deel_key = ikd.ins_deel_key) IS NOT NULL);

--- Portal menu item 'Verzoek inname kunst'
-- Overzicht 'KUNST: Kunstinname'
CREATE OR REPLACE VIEW PNBR_V_RAP_KUNST_INNAME
(
   FCLT_F_OBJECT,
   FCLT_F_KUNSTENAAR,
   FCLT_F_TITEL,
   MATERIAAL,
   GESIGNEERD,
   HOOGTE,
   BREEDTE,
   HTML_FOTO,
   VERKRIJGINGSINFORMATIE,
   TAXATIEWAARDE,
   RUIMTE,
   STATUS,
   RESERVERING,
   AANVRAAGNR,
   OBJECT_KEY
)
AS
   SELECT o.ins_deel_omschrijving,
          (SELECT ins_kenmerkdeel_waarde
             FROM ins_kenmerkdeel ikd
            WHERE ins_kenmerk_key = 102 AND o.ins_deel_key = ikd.ins_deel_key)
             naam_kunstenaar,
          (SELECT ins_kenmerkdeel_waarde
             FROM ins_kenmerkdeel ikd
            WHERE ins_kenmerk_key = 104 AND o.ins_deel_key = ikd.ins_deel_key)
             titel,
          (SELECT ins_kenmerkdeel_waarde
             FROM ins_kenmerkdeel ikd
            WHERE ins_kenmerk_key = 110 AND o.ins_deel_key = ikd.ins_deel_key)
             materiaal,
          (SELECT fac_usrdata_omschr
             FROM ins_kenmerkdeel ikd,
                  ins_kenmerk ik,
                  ins_srtkenmerk isk,
                  fac_kenmerkdomein kd,
                  fac_usrdata ud
            WHERE     ikd.ins_kenmerk_key = 112
                  AND ik.ins_kenmerk_key = ikd.ins_kenmerk_key
                  AND ik.ins_srtkenmerk_key = isk.ins_srtkenmerk_key
                  AND kd.fac_kenmerkdomein_key = isk.fac_kenmerkdomein_key
                  AND ud.fac_usrtab_key = kd.fac_usrtab_key
                  AND ikd.ins_kenmerkdeel_waarde = ud.fac_usrdata_key
                  AND o.ins_deel_key = ikd.ins_deel_key)
             gesigneerd,
          (SELECT ins_kenmerkdeel_waarde
             FROM ins_kenmerkdeel ikd
            WHERE ins_kenmerk_key = 119 AND o.ins_deel_key = ikd.ins_deel_key)
             hoogte,
          (SELECT ins_kenmerkdeel_waarde
             FROM ins_kenmerkdeel ikd
            WHERE ins_kenmerk_key = 120 AND o.ins_deel_key = ikd.ins_deel_key)
             breedte,
          DECODE (
             (SELECT ins_kenmerkdeel_waarde
                FROM ins_kenmerkdeel ikd
               WHERE ins_kenmerk_key = 109
                     AND o.ins_deel_key = ikd.ins_deel_key),
             NULL,
             'Geen foto',
             '<img  src="https://pnbr.facilitor.nl/api2/objects/' || ins_deel_key ||'/attachments/109/'
             || (SELECT ins_kenmerkdeel_waarde
                   FROM ins_kenmerkdeel ikd
                  WHERE ins_kenmerk_key = 109
                        AND o.ins_deel_key = ikd.ins_deel_key)
             || '" height="128">')
             foto,
          (SELECT ins_kenmerkdeel_waarde
             FROM ins_kenmerkdeel ikd
            WHERE ins_kenmerk_key = 125 AND o.ins_deel_key = ikd.ins_deel_key)
             verkrijgingsinformatie,
          (SELECT ins_kenmerkdeel_waarde
             FROM ins_kenmerkdeel ikd
            WHERE ins_kenmerk_key = 132 AND o.ins_deel_key = ikd.ins_deel_key)
             taxatiewaarde,
          r.alg_ruimte_aanduiding || ' (' || r.alg_ruimte_omschrijving || ')',
          DECODE (
             r.alg_ruimte_key,
             1614,
             'Beschikbaar',
             'Uitgeleend' || ' sinds: '
             || (SELECT ins_kenmerkdeel_waarde
                   FROM ins_kenmerkdeel ikd
                  WHERE ins_kenmerk_key = 1363
                        AND o.ins_deel_key = ikd.ins_deel_key))
             status,
          (SELECT DECODE (ins_kenmerkdeel_waarde, 1, 'Gereserveerd', NULL)
             FROM ins_kenmerkdeel ikd
            WHERE ins_kenmerk_key = 1282
                  AND o.ins_deel_key = ikd.ins_deel_key)
             reservering,
          (SELECT ins_kenmerkdeel_waarde
             FROM ins_kenmerkdeel ikd
            WHERE ins_kenmerk_key = 1342
                  AND o.ins_deel_key = ikd.ins_deel_key)
             aanvraagnr,
          o.ins_deel_key
     FROM ins_deel o, alg_v_ruimte_gegevens r, ins_srtdeel s
    WHERE     s.ins_srtdeel_key = 41
          AND o.ins_deel_verwijder IS NULL
          AND o.ins_alg_ruimte_key = r.alg_ruimte_key
          AND o.ins_srtdeel_key = s.ins_srtdeel_key
          AND (SELECT fac_usrdata_omschr
                 FROM ins_kenmerkdeel ikd,
                      ins_kenmerk ik,
                      ins_srtkenmerk isk,
                      fac_kenmerkdomein kd,
                      fac_usrdata ud
                WHERE     ikd.ins_kenmerk_key = 115
                      AND ik.ins_kenmerk_key = ikd.ins_kenmerk_key
                      AND ik.ins_srtkenmerk_key = isk.ins_srtkenmerk_key
                      AND kd.fac_kenmerkdomein_key =
                            isk.fac_kenmerkdomein_key
                      AND ud.fac_usrtab_key = kd.fac_usrtab_key
                      AND ikd.ins_kenmerkdeel_waarde = ud.fac_usrdata_key
                      AND o.ins_deel_key = ikd.ins_deel_key) = 'Ja'
          AND r.alg_ruimte_key <> 1614;

CREATE OR REPLACE VIEW PNBR_V_RUIMTE_GEGEVENS
(
   RUIMTE_KEY,
   OMSCHRIJVING
)
AS
   SELECT r.alg_ruimte_key,
          r.alg_ruimte_aanduiding || ' (' || r.alg_ruimte_omschrijving || ')'
     FROM alg_v_ruimte_gegevens r;

-- PNBR#52789 - Rapportage bedrijfscatering
CREATE OR REPLACE VIEW PNBR_V_RAP_CATERING
(
    RESERVERINGSNUMMER,
    AFLEVERADRES,
    ADRES,
    LOCATIE,
    RUIMTE,
    RUIMTENR,
    KOSTENPLAATS,
    KOSTENPLAATS_OMSCHRIJVING,
    PERSOONSNAAM,
    AFDELING,
    COSTCENTER,
    DATUM,
    TIJD_RESERVERING_VAN,
    TIJD_RESERVERING_TOT,
    AANTAL_PERSONEN,
    OMSCHRIJVING,
    OPMERKING,
    TIJD_LEVERING,
    BESTELNR,
    ARTIKELNR,
    ARTIKEL_OMSCHRIJVING,
    ARTIKEL_AANTAL,
    ARTIKEL_PRIJS,
    TOTAAL_PRIJS,
    BTW,
    ARTIKEL_PRIJS_BTW,
    TOTAAL_PARIJS_BTW,
    kn_besnr_cateraar
)
   SELECT
AS
    (x.res_reservering_key || '/' || x.res_rsv_ruimte_volgnr)
               reserveringsnummer,
           DECODE (
               x.alg_ruimte_key,
               NULL, 'Onbekend',
                  rg.alg_locatie_code
               || '-'
               || rg.alg_gebouw_upper
               || '-'
               || rg.alg_verdieping_code
               || '-'
               || rg.alg_ruimte_nr
               || ' ('
               || rg.alg_ruimte_omschrijving
               || ')')
               afleveradres,
           rg.alg_locatie_adres
               adres,
           rg.alg_locatie_omschrijving
               locatie,
           rg.alg_ruimte_omschrijving
               ruimte,
           rg.alg_ruimte_nr
               ruimtenr,
           x.prs_kostenplaats_nr
               kostenplaats,
           x.prs_kostenplaats_omschrijving
               kostenplaats_omschrijving,
           x.prs_perslid_naam_full,
           (x.prs_afdeling_upper || '-' || x.prs_afdeling_omschrijving)
               afdeling,
           (SELECT MAX (kw.res_kenmerkreservering_waarde)
              FROM res_kenmerkwaarde kw, res_kenmerk rk
             WHERE     kw.res_rsv_ruimte_key = x.res_rsv_ruimte_key
                   AND kw.res_kenmerkwaarde_verwijder IS NULL
                   AND kw.res_kenmerk_key = rk.res_kenmerk_key
                   AND rk.res_srtkenmerk_key = 1)
               costcenter,
           x.res_rsv_artikel_levering
               datum,
           TO_CHAR (x.res_rsv_ruimte_van, 'hh24:mi')
               tijd_ruimtereservering,
           TO_CHAR (x.res_rsv_ruimte_tot, 'hh24:mi')
               tijd_einde_ruimtereservering,
           x.res_rsv_ruimte_bezoekers,
           x.res_rsv_ruimte_omschrijving,
           x.res_rsv_ruimte_opmerking,
           TO_CHAR (x.res_rsv_artikel_levering, 'hh24:mi')
               tijd_levering,
           x.bestelnr,
           x.res_artikel_nr,
           x.res_artikel_omschrijving,
           x.res_rsv_artikel_aantal,
           x.res_artikel_prijs,
           ROUND ((x.res_rsv_artikel_aantal) * (x.res_artikel_prijs), 5)
               prijs_totaal_btw,
           TO_NUMBER (
               DECODE (x.res_artikel_btw, NULL, '6', x.res_artikel_btw))
               btw,
           ROUND (
                 x.res_artikel_prijs
               * (  1
                  + (  TO_NUMBER (
                           DECODE (x.res_artikel_btw,
                                   NULL, '6',
                                   x.res_artikel_btw))
                     / 100)),
               2)
               res_artikel_prijs_btw,
           ROUND (
                 x.res_artikel_prijs
               * (  1
                  + (  TO_NUMBER (
                           DECODE (x.res_artikel_btw,
                                   NULL, '6',
                                   x.res_artikel_btw))
                     / 100))
               * x.res_rsv_artikel_aantal,
               2)
               prijs_totaal_btw,
               (SELECT fac_usrdata_omschr waarde
              FROM res_kenmerkwaarde kw, fac_usrdata ud, res_kenmerk rk
             WHERE     rk.res_srtkenmerk_key = 441
                   AND kw.res_kenmerk_key = rk.res_kenmerk_key
                   AND fac.safe_to_number (res_kenmerkreservering_waarde) =
                       fac_usrdata_key
                   AND x.res_rsv_ruimte_key = kw.res_rsv_ruimte_key)  kn_bes_cateraar         
      FROM (SELECT rra.res_rsv_artikel_verwerkt,
                   COALESCE (rar1.alg_ruimte_key,
                             rar2.alg_ruimte_key,
                             rrr.alg_ruimte_key)
                       alg_ruimte_key,
                   rra.res_rsv_artikel_levering,
                   rrr.res_rsv_ruimte_key,
                   rrr.res_reservering_key,
                   rrr.res_rsv_ruimte_volgnr,
                   rrr.res_rsv_ruimte_van,
                   rrr.res_rsv_ruimte_tot,
                   rrr.res_rsv_ruimte_bezoekers,
                   rrr.res_rsv_ruimte_omschrijving,
                   rrr.res_rsv_ruimte_opmerking,
                   rrr.res_rsv_ruimte_totaal,
                   td.ins_discipline_volgnr, -- Ter bepaling leverancier/DEPRECATED!
                   b.prs_bedrijf_naam,
                   a.prs_afdeling_key,
                   a.prs_afdeling_naam,
                   rra.res_artikel_nr,
                   (   rra.res_artikel_omschrijving
                    || ' ('
                    || rra.res_artikel_eenheid
                    || ')')
                       res_artikel_omschrijving,
                   rra.res_rsv_artikel_prijs,
                   rra.res_artikel_prijs,
                   rra.res_rsv_artikel_aantal,
                   rra.btw,
                   rra.res_artikel_btw,
                   pf.prs_perslid_naam_full,
                   paf.prs_afdeling_omschrijving,
                   paf.prs_afdeling_upper,
                   k.prs_kostenplaats_nr,
                   k.prs_kostenplaats_omschrijving,
                   (SELECT rrk.res_kenmerkreservering_waarde
                      FROM res_kenmerkwaarde rrk
                      WHERE rrk.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
                      AND rrk.res_kenmerk_key = 281) bestelnr               
              FROM res_rsv_ruimte               rrr,
                   (SELECT rra.res_rsv_ruimte_key,
                           rra.res_rsv_artikel_verwerkt,
                           rra.res_rsv_artikel_levering,
                           ra.res_artikel_nr,
                           ra.res_artikel_omschrijving,
                           ra.res_artikel_eenheid,
                           ra.res_artikel_prijs,
                           rra.res_rsv_artikel_prijs,
                           rra.res_rsv_artikel_aantal,
                           rra.res_rsv_artikel_btw btw,
                           ra.res_discipline_key,
                           ra.res_artikel_btw
                      FROM res_rsv_artikel rra, res_artikel ra
                     WHERE rra.res_artikel_key = ra.res_artikel_key) rra,
                   res_discipline               td,
                   res_disc_params              dp,
                   prs_bedrijf                  b,
                   prs_afdeling                 a,
                   prs_v_afdeling_perslid       paf,
                   res_ruimte_opstelling        rro,
                   (  SELECT res_ruimte_key,
                             MAX (alg_ruimte_key) alg_ruimte_key
                        FROM res_alg_ruimte
                       WHERE res_alg_ruimte_verwijder IS NULL
                    GROUP BY res_ruimte_key) rar1,
                   (  SELECT res_ruimte_key,
                             MAX (alg_ruimte_key) alg_ruimte_key
                        FROM res_alg_ruimte
                       WHERE res_alg_ruimte_verwijder IS NOT NULL
                    GROUP BY res_ruimte_key) rar2,
                   alg_v_allonroerendgoed       aog,
                   prs_v_perslid_fullnames_all  pf,
                   prs_kostenplaats             k
             WHERE     rrr.res_rsv_ruimte_key = rra.res_rsv_ruimte_key
                   AND rra.res_discipline_key = td.ins_discipline_key
                   AND rrr.res_rsv_ruimte_verwijder IS NULL
                   AND rrr.res_activiteit_key != 50 --activiteit Afhalen catering
                   AND td.ins_discipline_key = dp.res_ins_discipline_key
                   AND dp.prs_bedrijf_key = b.prs_bedrijf_key(+)
                   AND paf.prs_perslid_key = pf.prs_perslid_key
                   AND a.prs_afdeling_parentkey IS NULL
                   AND b.prs_leverancier_nr = a.prs_afdeling_naam(+)
                   AND rrr.res_ruimte_opstel_key =
                       rro.res_ruimte_opstel_key(+)
                   AND rro.res_ruimte_key = rar1.res_ruimte_key(+)
                   AND rro.res_ruimte_key = rar2.res_ruimte_key(+)
                   AND COALESCE (rar1.alg_ruimte_key,
                                 rar2.alg_ruimte_key,
                                 rrr.alg_ruimte_key) =
                       aog.alg_ruimte_key
                   AND rrr.res_rsv_ruimte_host_key = pf.prs_perslid_key
                   AND rrr.prs_kostenplaats_key = k.prs_kostenplaats_key(+))   
               x LEFT JOIN alg_v_ruimte_gegevens_all rg
               ON x.alg_ruimte_key = rg.alg_ruimte_key;



CREATE OR REPLACE VIEW PNBR_V_BEDRIJF
(
   bedrijf_key,
   naam,
   eind_datum
)
AS
   SELECT prs_bedrijf_key, prs_bedrijf_naam, prs_bedrijf_verwijder
     FROM PRS_BEDRIJF;



-- View voor QR Codes
CREATE OR REPLACE VIEW PNBR_V_INS_QRC_OBJECT
(
   HIDE_F_SORT,
   LOCATIE_CODE,
   FCLT_F_LOCATIE,
   FCLT_F_GEBOUW,
   FCLT_F_PLAATS,
   RUIMTENR,
   FCLT_F_DISCIPLINE,
   FCLT_F_OBJECTGROEP,
   FCLT_F_OBJECTSOORT,
   FCLT_F_IDENTIFICATIE,
   FCLT_F_BOOKMARK,
   INS_DEEL_KEY,
   INS_SRTDEEL_KEY,
   FCLT_3D_DISCIPLINE_KEY,
   FCLT_3D_LOCATIE_KEY,
   INS_ALG_RUIMTE_TYPE,
   INS_ALG_RUIMTE_KEY,
   HIDE_F_BOOKMARK_ID
)
AS
   SELECT i.ins_deel_omschrijving hide_f_sort,
          l.alg_locatie_code,
          l.alg_locatie_code || ' ' || l.alg_locatie_omschrijving
             fclt_f_locatie,
          o.alg_gebouw_omschrijving fclt_f_gebouw,
          SUBSTR (o.alg_plaatsaanduiding, 13) fclt_f_plaats,
          o.alg_ruimte_nr,
          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,
          b.fac_bookmark_naam fclt_f_bookmark,
          i.ins_deel_key,
          s.ins_srtdeel_key,
          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
    WHERE     b.fac_bookmark_path = 'appl/pda/ins_deel.asp'
          AND COALESCE (b.fac_bookmark_expire, SYSDATE + 1) > SYSDATE
          AND ins_deel_verwijder IS NULL
          AND COALESCE (i.ins_deel_vervaldatum, SYSDATE + 1) > SYSDATE
          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 l.alg_locatie_key = i.ins_alg_locatie_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
