--
-- $Id$
--
-- Script containing customer specific sql for UWVA (UWV Amsterdam)
-- related to QLIKVIEW/SPOBILO(-package)/KZ/SLA/STATS/DIV/KAS/FLEXWHERE/NOTI/
-- INFOBORD/AFTERSALES (incl. ANONIMISEER)/CPUA/UWVA-package/UWVA_RAP-package/
-- FLEXHWERE/RTM/KTO/HMAIL.

DEFINE thisfile = 'UWVA_MISC.SQL'
DEFINE dbuser   = '^UWVA'

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

CREATE OR REPLACE PACKAGE uwva
AS
   FUNCTION bepaal_uwv_doorlooptijd (van_date IN DATE, tot_date IN DATE)
      RETURN NUMBER;

   PROCEDURE markorderassent (pxmlnode       VARCHAR2,
                              pkey           NUMBER,
                              presult        NUMBER,
                              presulttext    VARCHAR2);

   PROCEDURE format_telefoonnummers (p_import_key IN NUMBER);

   PROCEDURE abo_verhuisd (p_import_key     NUMBER,
                           p_perslid_key    NUMBER,
                           p_locatie_key    NUMBER);
END uwva;
/

CREATE OR REPLACE PACKAGE BODY uwva
AS
   -- UWVA#25539: Nu nog klantspecifiek, maar zou in 5.3.1 standaard mogen
   --             worden.
   -- Toch niet (mmm), want UWV heeft een verschillende berekening voor en
   -- na 01-03-2013!
   -- En per UWVA#27868 nog een volgende grens, nl. voor en na 01-11-2013!
   FUNCTION bepaal_uwv_doorlooptijd (van_date IN DATE, tot_date IN DATE)
      RETURN NUMBER
   IS
      c_kt_van_v1311   NUMBER := 7;            -- De van-tijd voor 01-11-2013!
      c_kt_tot_v1311   NUMBER := 19;           -- De tot-tijd voor 01-11-2013!
      c_kt_van_v1303   NUMBER := 8;            -- De van-tijd voor 01-03-2013!
      c_kt_tot_v1303   NUMBER := 17;           -- De tot-tijd voor 01-03-2013!
      v_kt_van         NUMBER;
      v_kt_tot         NUMBER;
      v_dl             NUMBER;
      lbackwards       BOOLEAN;
      v_van_date       DATE;
      v_van_uur        NUMBER;
      v_tot_date       DATE;
      v_tot_uur        NUMBER;
      v_loop_date      DATE;
      v_count          NUMBER;
   BEGIN
      v_dl := 0;

      -- Bepaal 'Start time of working day' (21=fac_t_startofworkday)!
      v_kt_van := fac.safe_to_number (fac.getsetting ('fac_t_startofworkday'));

      -- Bepaal 'End time of working day' (22=fac_t_endofworkday)!
      v_kt_tot := fac.safe_to_number (fac.getsetting ('fac_t_endofworkday'));

      IF (van_date > tot_date)
      THEN
         v_van_date := TO_DATE (TO_CHAR (tot_date, 'yyyymmddhh24mi'), 'yyyymmddhh24mi');
         v_tot_date := TO_DATE (TO_CHAR (van_date, 'yyyymmddhh24mi'), 'yyyymmddhh24mi');
         lbackwards := TRUE;
      ELSE
         v_van_date := TO_DATE (TO_CHAR (van_date, 'yyyymmddhh24mi'), 'yyyymmddhh24mi');
         v_tot_date := TO_DATE (TO_CHAR (tot_date, 'yyyymmddhh24mi'), 'yyyymmddhh24mi');
         lbackwards := FALSE;
      END IF;

      v_loop_date := TRUNC (v_van_date);

      WHILE (v_loop_date <= v_tot_date)
      LOOP
         SELECT COUNT ( * )
           INTO v_count
           FROM mld_vrije_dagen
          WHERE mld_vrije_dagen_datum = v_loop_date;

         IF (v_count = 0 AND TO_CHAR (v_loop_date, 'd') NOT IN ('1', '7'))
         THEN
            IF (v_loop_date >= TO_DATE ('01-11-2013', 'dd-mm-yyyy'))
            THEN                                    -- Settings-kantoortijden!
               IF ( ( ( (v_van_date - TRUNC (v_van_date)) * 24) - v_kt_van) < 0)
               THEN
                  v_van_uur := v_kt_van;
               ELSE
                  IF ( ( ( (v_van_date - TRUNC (v_van_date)) * 24) - v_kt_tot) < 0)
                  THEN
                     v_van_uur := (v_van_date - TRUNC (v_van_date)) * 24;
                  ELSE
                     v_van_uur := v_kt_tot;
                  END IF;
               END IF;

               IF ( ( ( (v_tot_date - TRUNC (v_tot_date)) * 24) - v_kt_van) < 0)
               THEN
                  v_tot_uur := v_kt_van;
               ELSE
                  IF ( ( ( (v_tot_date - TRUNC (v_tot_date)) * 24) - v_kt_tot) < 0)
                  THEN
                     v_tot_uur := (v_tot_date - TRUNC (v_tot_date)) * 24;
                  ELSE
                     v_tot_uur := v_kt_tot;
                  END IF;
               END IF;

               CASE
                  WHEN TRUNC (v_van_date) = TRUNC (v_tot_date)
                  THEN
                     v_dl := v_dl + (v_tot_uur - v_van_uur);
                  WHEN v_loop_date = TRUNC (v_van_date)
                  THEN
                     v_dl := v_dl + (v_kt_tot - v_van_uur);
                  WHEN v_loop_date = TRUNC (v_tot_date)
                  THEN
                     v_dl := v_dl + (v_tot_uur - v_kt_van);
                  ELSE
                     v_dl := v_dl + (v_kt_tot - v_kt_van);
               END CASE;
            ELSIF (v_loop_date >= TO_DATE ('01-03-2013', 'dd-mm-yyyy'))
            THEN                     --  Oude setings: 7-tot-19-kantoortijden!
               IF ( ( ( (v_van_date - TRUNC (v_van_date)) * 24) - c_kt_van_v1311) < 0)
               THEN
                  v_van_uur := c_kt_van_v1311;
               ELSE
                  IF ( ( ( (v_van_date - TRUNC (v_van_date)) * 24) - c_kt_tot_v1311) < 0)
                  THEN
                     v_van_uur := (v_van_date - TRUNC (v_van_date)) * 24;
                  ELSE
                     v_van_uur := c_kt_tot_v1311;
                  END IF;
               END IF;

               IF ( ( ( (v_tot_date - TRUNC (v_tot_date)) * 24) - c_kt_van_v1311) < 0)
               THEN
                  v_tot_uur := c_kt_van_v1311;
               ELSE
                  IF ( ( ( (v_tot_date - TRUNC (v_tot_date)) * 24) - c_kt_tot_v1311) < 0)
                  THEN
                     v_tot_uur := (v_tot_date - TRUNC (v_tot_date)) * 24;
                  ELSE
                     v_tot_uur := c_kt_tot_v1311;
                  END IF;
               END IF;

               CASE
                  WHEN TRUNC (v_van_date) = TRUNC (v_tot_date)
                  THEN
                     v_dl := v_dl + (v_tot_uur - v_van_uur);
                  WHEN v_loop_date = TRUNC (v_van_date)
                  THEN
                     v_dl := v_dl + (c_kt_tot_v1311 - v_van_uur);
                  WHEN v_loop_date = TRUNC (v_tot_date)
                  THEN
                     v_dl := v_dl + (v_tot_uur - c_kt_van_v1311);
                  ELSE
                     v_dl := v_dl + (c_kt_tot_v1311 - c_kt_van_v1311);
               END CASE;
            ELSE               --  Nog oudere setings: 8-tot-17-kantoortijden!
               IF ( ( ( (v_van_date - TRUNC (v_van_date)) * 24) - c_kt_van_v1303) < 0)
               THEN
                  v_van_uur := c_kt_van_v1303;
               ELSE
                  IF ( ( ( (v_van_date - TRUNC (v_van_date)) * 24) - c_kt_tot_v1303) < 0)
                  THEN
                     v_van_uur := (v_van_date - TRUNC (v_van_date)) * 24;
                  ELSE
                     v_van_uur := c_kt_tot_v1303;
                  END IF;
               END IF;

               IF ( ( ( (v_tot_date - TRUNC (v_tot_date)) * 24) - c_kt_van_v1303) < 0)
               THEN
                  v_tot_uur := c_kt_van_v1303;
               ELSE
                  IF ( ( ( (v_tot_date - TRUNC (v_tot_date)) * 24) - c_kt_tot_v1303) < 0)
                  THEN
                     v_tot_uur := (v_tot_date - TRUNC (v_tot_date)) * 24;
                  ELSE
                     v_tot_uur := c_kt_tot_v1303;
                  END IF;
               END IF;

               CASE
                  WHEN TRUNC (v_van_date) = TRUNC (v_tot_date)
                  THEN
                     v_dl := v_dl + (v_tot_uur - v_van_uur);
                  WHEN v_loop_date = TRUNC (v_van_date)
                  THEN
                     v_dl := v_dl + (c_kt_tot_v1303 - v_van_uur);
                  WHEN v_loop_date = TRUNC (v_tot_date)
                  THEN
                     v_dl := v_dl + (v_tot_uur - c_kt_van_v1303);
                  ELSE
                     v_dl := v_dl + (c_kt_tot_v1303 - c_kt_van_v1303);
               END CASE;
            END IF;
         END IF;

         v_loop_date := v_loop_date + 1;
      END LOOP;

      IF lbackwards
      THEN
         RETURN 0 - v_dl;
      ELSE
         RETURN v_dl;
      END IF;
   END;

   -- MarkOrderAsSent
   -- Markeert dat een opdracht is verzonden, zoals door PutOrders.exe.
   -- Hoe dat moet hangt af van het soort opdracht: contract, opdracht e.d.
   -- pxmlnode is (lowercase!) de xml-naam van de entiteit (contract, opdracht,
   --  bestelopdr of iets klantspecifieks zoals ooit 'folder').
   -- pkey is de key daarvan.
   -- presult geeft het succes van verzending aan: 0(/2)=succesvol, 1=geweigerd
   --  wat gebruikt *kan* worden bij het bepalen van een te zetten status.
   -- Voor customer-orderqueues dient overeenkomstige CUST.markorderassent() te
   -- worden gedefinieerd.
   -- UWVA#39432: Vervallen per overgang van Infotrading naar P+C (abonnementen
   --             moeten jaarlijks opnieuw worden afgesloten).
   --             Nog even aanhouden met oog op evt. nieuwe functionaliteit!
   PROCEDURE markorderassent (pxmlnode       VARCHAR2,
                              pkey           NUMBER,
                              presult        NUMBER,
                              presulttext    VARCHAR2)
   AS
      v_count   NUMBER;
   BEGIN
      CASE pxmlnode
         WHEN 'contract'
         THEN
            IF presult = 0 OR presult = 2
            THEN
               SELECT COUNT ( * )
                 INTO v_count
                 FROM cnt_kenmerkcontract
                WHERE cnt_contract_key = pkey
                      AND cnt_kenmerk_key = 700       -- 'Laatste cXML-update'
                      AND cnt_kenmerkcontract_verwijder IS NULL;

               IF (v_count = 0)
               THEN
                  INSERT INTO cnt_kenmerkcontract (cnt_contract_key,
                                                   cnt_kenmerk_key,
                                                   cnt_kenmerkcontract_waarde)
                      VALUES (pkey,
                              700,                    -- 'Laatste cXML-update'
                              TO_CHAR (SYSDATE, 'dd-mm-yyyy'));
               ELSE
                  UPDATE cnt_kenmerkcontract
                     SET cnt_kenmerkcontract_waarde = TO_CHAR (SYSDATE, 'dd-mm-yyyy'),
                         cnt_kenmerkcontract_wijzig = SYSDATE
                   WHERE cnt_contract_key = pkey
                         AND cnt_kenmerk_key = 700    -- 'Laatste cXML-update'
                         AND cnt_kenmerkcontract_verwijder IS NULL;
               END IF;
            END IF;
      END CASE;
   END;

   -- UWVA#20205 en UWVA#20219: Procedure om telefoonnummers netjes op te maken.
   -- Wordt aangeroepen aan het einde van uwva_update_abs().
   --
   -- Voor een specificatie van de opmaak, zie UWVA#20205.
   -- FSN#23352: (sub)query's opschonen
   PROCEDURE format_telefoonnummers (p_import_key IN NUMBER)
   AS
      v_fac_usrtab_key   NUMBER;
      c_faxnr_key        NUMBER (10) := 7;
   BEGIN
      -- Eigen Tabel met alle netnummers, om netnummers in telefoonnummers-zonder-opmaak
      -- te kunnen achterhalen.
      SELECT fac_usrtab_key
        INTO v_fac_usrtab_key
        FROM fac_usrtab
       WHERE fac_usrtab_naam = 'netnummers';

      -- UWVA#21779: Door een foutieve trigger (FSN#21781) bestaan er prs_kenmerklinks waarvan de
      --             prs_perslid verwijderd is. Deze prs_kenmerklinks mogen (moeten) verwijderd.
      DELETE FROM prs_kenmerklink
            WHERE prs_kenmerklink_niveau = 'P'
                  AND NOT EXISTS (SELECT 1
                                    FROM prs_perslid
                                   WHERE prs_perslid_key = prs_link_key);

      --
      -- TELEFOONNUMMER --------------------------------------------------------------
      --
      -- Verwijder landinformatie (alleen van Nederlandse nummers; buitenlandse
      -- worden helaas verminkt!)
      UPDATE prs_perslid
         SET prs_perslid_telefoonnr = SUBSTR (prs_perslid_telefoonnr, 2)
       WHERE prs_perslid_telefoonnr LIKE '+%';

      UPDATE prs_perslid
         SET prs_perslid_telefoonnr = SUBSTR (prs_perslid_telefoonnr, 3)
       WHERE prs_perslid_telefoonnr LIKE '31%';

      UPDATE prs_perslid
         SET prs_perslid_telefoonnr = SUBSTR (prs_perslid_telefoonnr, 5)
       WHERE prs_perslid_telefoonnr LIKE '0031%';

      -- Verwijder non-digit tekens (leestekens en spaties)
      UPDATE prs_perslid
         SET prs_perslid_telefoonnr =
                REPLACE (
                   REPLACE (
                      REPLACE (
                         REPLACE (REPLACE (prs_perslid_telefoonnr, '.', ''),
                                  '(',
                                  ''),
                         ')',
                         ''),
                      '-',
                      ''),
                   ' ',
                   '');

      UPDATE prs_perslid
         SET prs_perslid_telefoonnr = '20' || prs_perslid_telefoonnr
       WHERE prs_perslid_telefoonnr LIKE '687____';

      UPDATE prs_perslid
         SET prs_perslid_telefoonnr = SUBSTR (prs_perslid_telefoonnr, 2)
       WHERE prs_perslid_telefoonnr LIKE '0%';

      -- 06-nummers bijwerken
      -- (NB: format "06 - xx xx xx xx" is 16 digits, dus gebruik ik
      --  "06-xx xx xx xx", om het binnen de 15 karakters te houden.)
      UPDATE prs_perslid
         SET prs_perslid_telefoonnr =
                SUBSTR (
                   TRIM(   '0'
                        || SUBSTR (prs_perslid_telefoonnr, 1, 1)
                        || '-'
                        || SUBSTR (prs_perslid_telefoonnr, 2, 2)
                        || ' '
                        || SUBSTR (prs_perslid_telefoonnr, 4, 2)
                        || ' '
                        || SUBSTR (prs_perslid_telefoonnr, 6, 2)
                        || ' '
                        || SUBSTR (prs_perslid_telefoonnr, 8, 2)),
                   1,
                   15)
       WHERE     prs_perslid_telefoonnr LIKE '6%'
             AND prs_perslid_telefoonnr IS NOT NULL
             AND LENGTH (prs_perslid_telefoonnr) > 5;

      -- 0800- en 0900-nummers met een even aantal digits
      -- (NB: MOD(prs_perslid_telefoonnr, 2) = 1, omdat prs_perslid_telefoonnr begint met 900 ipv 0900!)
      UPDATE prs_perslid
         SET prs_perslid_telefoonnr =
                SUBSTR (
                   TRIM(   '0'
                        || SUBSTR (prs_perslid_telefoonnr, 1, 3)
                        || ' - '
                        || SUBSTR (prs_perslid_telefoonnr, 4, 2)
                        || ' '
                        || SUBSTR (prs_perslid_telefoonnr, 6, 2)
                        || ' '
                        || SUBSTR (prs_perslid_telefoonnr, 8, 2)),
                   1,
                   15)
       WHERE     prs_perslid_telefoonnr IS NOT NULL
             AND LENGTH (prs_perslid_telefoonnr) > 5
             AND MOD (LENGTH (prs_perslid_telefoonnr), 2) = 1
             AND (prs_perslid_telefoonnr LIKE '800%'
                  OR prs_perslid_telefoonnr LIKE '900%');

      -- 0800- en 0900-nummers met een oneven aantal digits
      UPDATE prs_perslid
         SET prs_perslid_telefoonnr =
                SUBSTR (
                   TRIM(   '0'
                        || SUBSTR (prs_perslid_telefoonnr, 1, 3)
                        || '-'
                        || SUBSTR (prs_perslid_telefoonnr, 4, 3)
                        || ' '
                        || SUBSTR (prs_perslid_telefoonnr, 7, 2)
                        || ' '
                        || SUBSTR (prs_perslid_telefoonnr, 9, 2)),
                   1,
                   15)
       WHERE     prs_perslid_telefoonnr IS NOT NULL
             AND LENGTH (prs_perslid_telefoonnr) > 5
             AND MOD (LENGTH (prs_perslid_telefoonnr), 2) = 0
             AND (prs_perslid_telefoonnr LIKE '800%'
                  OR prs_perslid_telefoonnr LIKE '900%');

      -- 088-nummers met een even aantal digits
      UPDATE prs_perslid
         SET prs_perslid_telefoonnr =
                SUBSTR (
                   TRIM(   '0'
                        || SUBSTR (prs_perslid_telefoonnr, 1, 2)
                        || ' - '
                        || SUBSTR (prs_perslid_telefoonnr, 3, 3)
                        || ' '
                        || SUBSTR (prs_perslid_telefoonnr, 6, 2)
                        || ' '
                        || SUBSTR (prs_perslid_telefoonnr, 8, 2)),
                   1,
                   15)
       WHERE     prs_perslid_telefoonnr IS NOT NULL
             AND LENGTH (prs_perslid_telefoonnr) > 5
             AND MOD (LENGTH (prs_perslid_telefoonnr), 2) = 1
             AND prs_perslid_telefoonnr LIKE '88%';

      -- 088-nummers met een oneven aantal digits
      UPDATE prs_perslid
         SET prs_perslid_telefoonnr =
                SUBSTR (
                   TRIM(   '0'
                        || SUBSTR (prs_perslid_telefoonnr, 1, 2)
                        || '-'
                        || SUBSTR (prs_perslid_telefoonnr, 3, 2)
                        || ' '
                        || SUBSTR (prs_perslid_telefoonnr, 5, 2)
                        || ' '
                        || SUBSTR (prs_perslid_telefoonnr, 7, 2)
                        || ' '
                        || SUBSTR (prs_perslid_telefoonnr, 9, 2)),
                   1,
                   15)
       WHERE     prs_perslid_telefoonnr IS NOT NULL
             AND LENGTH (prs_perslid_telefoonnr) > 5
             AND MOD (LENGTH (prs_perslid_telefoonnr), 2) = 0
             AND prs_perslid_telefoonnr LIKE '88%';

      -- netnummers met 2 digits na-de-nul (bijv "020")
      UPDATE prs_perslid
         SET prs_perslid_telefoonnr =
                SUBSTR (
                      '(0'
                   || SUBSTR (prs_perslid_telefoonnr, 1, 2)
                   || ') '
                   || SUBSTR (prs_perslid_telefoonnr, 3, 3)
                   || ' '
                   || SUBSTR (prs_perslid_telefoonnr, 6, 2)
                   || ' '
                   || SUBSTR (prs_perslid_telefoonnr, 8, 2),
                   1,
                   15)
       WHERE prs_perslid_telefoonnr IS NOT NULL
             AND LENGTH (prs_perslid_telefoonnr) > 5
             AND EXISTS
                   (SELECT 1
                      FROM fac_usrdata
                     WHERE fac_usrtab_key = v_fac_usrtab_key
                           AND fac_usrdata_verwijder IS NULL
                           AND prs_perslid_telefoonnr LIKE
                                 fac_usrdata_code || '%'
                           AND LENGTH (fac_usrdata_code) = 2);

      -- netnummers met 3 digits na-de-nul (bijv "0118")
      UPDATE prs_perslid
         SET prs_perslid_telefoonnr =
                SUBSTR (
                      '(0'
                   || SUBSTR (prs_perslid_telefoonnr, 1, 3)
                   || ') '
                   || SUBSTR (prs_perslid_telefoonnr, 4, 2)
                   || ' '
                   || SUBSTR (prs_perslid_telefoonnr, 6, 2)
                   || ' '
                   || SUBSTR (prs_perslid_telefoonnr, 8, 2),
                   1,
                   15)
       WHERE prs_perslid_telefoonnr IS NOT NULL
             AND LENGTH (prs_perslid_telefoonnr) > 5
             AND EXISTS
                   (SELECT 1
                      FROM fac_usrdata
                     WHERE fac_usrtab_key = v_fac_usrtab_key
                           AND fac_usrdata_verwijder IS NULL
                           AND prs_perslid_telefoonnr LIKE
                                 fac_usrdata_code || '%'
                           AND LENGTH (fac_usrdata_code) = 3);

      --
      -- MOBIELE NUMMER --------------------------------------------------------------
      --
      -- Verwijder landinformatie (alleen van Nederlandse nummers; buitenlandse
      -- worden helaas verminkt!)
      UPDATE prs_perslid
         SET prs_perslid_mobiel = SUBSTR (prs_perslid_mobiel, 2)
       WHERE prs_perslid_mobiel LIKE '+%';

      UPDATE prs_perslid
         SET prs_perslid_mobiel = SUBSTR (prs_perslid_mobiel, 3)
       WHERE prs_perslid_mobiel LIKE '31%';

      UPDATE prs_perslid
         SET prs_perslid_mobiel = SUBSTR (prs_perslid_mobiel, 5)
       WHERE prs_perslid_mobiel LIKE '0031%';

      -- Verwijder non-digit tekens (leestekens en spaties)
      UPDATE prs_perslid
         SET prs_perslid_mobiel =
                REPLACE (
                   REPLACE (
                      REPLACE (
                         REPLACE (REPLACE (prs_perslid_mobiel, '.', ''),
                                  '(',
                                  ''),
                         ')',
                         ''),
                      '-',
                      ''),
                   ' ',
                   '');

      UPDATE prs_perslid
         SET prs_perslid_mobiel = '20' || prs_perslid_mobiel
       WHERE prs_perslid_mobiel LIKE '687____';

      UPDATE prs_perslid
         SET prs_perslid_mobiel = SUBSTR (prs_perslid_mobiel, 2)
       WHERE prs_perslid_mobiel LIKE '0%';

      -- 06-nummers bijwerken
      -- (NB: format "06 - xx xx xx xx" is 16 digits, dus gebruik ik
      --  "06-xx xx xx xx", om het binnen de 15 karakters te houden.)
      UPDATE prs_perslid
         SET prs_perslid_mobiel =
                SUBSTR (
                   TRIM(   '0'
                        || SUBSTR (prs_perslid_mobiel, 1, 1)
                        || '-'
                        || SUBSTR (prs_perslid_mobiel, 2, 2)
                        || ' '
                        || SUBSTR (prs_perslid_mobiel, 4, 2)
                        || ' '
                        || SUBSTR (prs_perslid_mobiel, 6, 2)
                        || ' '
                        || SUBSTR (prs_perslid_mobiel, 8, 2)),
                   1,
                   15)
       WHERE     prs_perslid_mobiel LIKE '6%'
             AND prs_perslid_mobiel IS NOT NULL
             AND LENGTH (prs_perslid_mobiel) > 5;

      -- 0800- en 0900-nummers met een even aantal digits
      -- (NB: MOD(prs_perslid_mobiel, 2) = 1, omdat prs_perslid_mobiel begint met 900 ipv 0900!)
      UPDATE prs_perslid
         SET prs_perslid_mobiel =
                SUBSTR (
                   TRIM(   '0'
                        || SUBSTR (prs_perslid_mobiel, 1, 3)
                        || ' - '
                        || SUBSTR (prs_perslid_mobiel, 4, 2)
                        || ' '
                        || SUBSTR (prs_perslid_mobiel, 6, 2)
                        || ' '
                        || SUBSTR (prs_perslid_mobiel, 8, 2)),
                   1,
                   15)
       WHERE     prs_perslid_mobiel IS NOT NULL
             AND LENGTH (prs_perslid_mobiel) > 5
             AND MOD (LENGTH (prs_perslid_mobiel), 2) = 1
             AND (prs_perslid_mobiel LIKE '800%'
                  OR prs_perslid_mobiel LIKE '900%');

      -- 0800- en 0900-nummers met een oneven aantal digits
      UPDATE prs_perslid
         SET prs_perslid_mobiel =
                SUBSTR (
                   TRIM(   '0'
                        || SUBSTR (prs_perslid_mobiel, 1, 3)
                        || '-'
                        || SUBSTR (prs_perslid_mobiel, 4, 3)
                        || ' '
                        || SUBSTR (prs_perslid_mobiel, 7, 2)
                        || ' '
                        || SUBSTR (prs_perslid_mobiel, 9, 2)),
                   1,
                   15)
       WHERE     prs_perslid_mobiel IS NOT NULL
             AND LENGTH (prs_perslid_mobiel) > 5
             AND MOD (LENGTH (prs_perslid_mobiel), 2) = 0
             AND (prs_perslid_mobiel LIKE '800%'
                  OR prs_perslid_mobiel LIKE '900%');

      -- 088-nummers met een even aantal digits
      UPDATE prs_perslid
         SET prs_perslid_mobiel =
                SUBSTR (
                   TRIM(   '0'
                        || SUBSTR (prs_perslid_mobiel, 1, 2)
                        || ' - '
                        || SUBSTR (prs_perslid_mobiel, 3, 3)
                        || ' '
                        || SUBSTR (prs_perslid_mobiel, 6, 2)
                        || ' '
                        || SUBSTR (prs_perslid_mobiel, 8, 2)),
                   1,
                   15)
       WHERE     prs_perslid_mobiel IS NOT NULL
             AND LENGTH (prs_perslid_mobiel) > 5
             AND MOD (LENGTH (prs_perslid_mobiel), 2) = 1
             AND prs_perslid_mobiel LIKE '88%';

      -- 088-nummers met een oneven aantal digits
      UPDATE prs_perslid
         SET prs_perslid_mobiel =
                SUBSTR (
                   TRIM(   '0'
                        || SUBSTR (prs_perslid_mobiel, 1, 2)
                        || '-'
                        || SUBSTR (prs_perslid_mobiel, 3, 2)
                        || ' '
                        || SUBSTR (prs_perslid_mobiel, 5, 2)
                        || ' '
                        || SUBSTR (prs_perslid_mobiel, 7, 2)
                        || ' '
                        || SUBSTR (prs_perslid_mobiel, 9, 2)),
                   1,
                   15)
       WHERE     prs_perslid_mobiel IS NOT NULL
             AND LENGTH (prs_perslid_mobiel) > 5
             AND MOD (LENGTH (prs_perslid_mobiel), 2) = 0
             AND prs_perslid_mobiel LIKE '88%';

      -- netnummers met 2 digits na-de-nul (bijv "020")
      UPDATE prs_perslid
         SET prs_perslid_mobiel =
                SUBSTR (
                      '(0'
                   || SUBSTR (prs_perslid_mobiel, 1, 2)
                   || ') '
                   || SUBSTR (prs_perslid_mobiel, 3, 3)
                   || ' '
                   || SUBSTR (prs_perslid_mobiel, 6, 2)
                   || ' '
                   || SUBSTR (prs_perslid_mobiel, 8, 2),
                   1,
                   15)
       WHERE prs_perslid_mobiel IS NOT NULL
             AND LENGTH (prs_perslid_mobiel) > 5
             AND EXISTS
                   (SELECT 1
                      FROM fac_usrdata
                     WHERE fac_usrtab_key = v_fac_usrtab_key
                           AND fac_usrdata_verwijder IS NULL
                           AND prs_perslid_mobiel LIKE
                                 fac_usrdata_code || '%'
                           AND LENGTH (fac_usrdata_code) = 2);

      -- netnummers met 3 digits na-de-nul (bijv "0118")
      UPDATE prs_perslid
         SET prs_perslid_mobiel =
                SUBSTR (
                      '(0'
                   || SUBSTR (prs_perslid_mobiel, 1, 3)
                   || ') '
                   || SUBSTR (prs_perslid_mobiel, 4, 2)
                   || ' '
                   || SUBSTR (prs_perslid_mobiel, 6, 2)
                   || ' '
                   || SUBSTR (prs_perslid_mobiel, 8, 2),
                   1,
                   15)
       WHERE prs_perslid_mobiel IS NOT NULL
             AND LENGTH (prs_perslid_mobiel) > 5
             AND EXISTS
                   (SELECT 1
                      FROM fac_usrdata
                     WHERE fac_usrtab_key = v_fac_usrtab_key
                           AND fac_usrdata_verwijder IS NULL
                           AND prs_perslid_mobiel LIKE
                                 fac_usrdata_code || '%'
                           AND LENGTH (fac_usrdata_code) = 3);

      --
      -- FAXNUMMER -------------------------------------------------------------------
      --
      -- Verwijder landinformatie (alleen van Nederlandse nummers; buitenlandse
      -- worden helaas verminkt!)
      UPDATE prs_kenmerklink
         SET prs_kenmerklink_waarde = SUBSTR (prs_kenmerklink_waarde, 2)
       WHERE prs_kenmerk_key = c_faxnr_key
             AND prs_kenmerklink_waarde LIKE '+%';

      UPDATE prs_kenmerklink
         SET prs_kenmerklink_waarde = SUBSTR (prs_kenmerklink_waarde, 3)
       WHERE prs_kenmerk_key = c_faxnr_key
             AND prs_kenmerklink_waarde LIKE '31%';

      UPDATE prs_kenmerklink
         SET prs_kenmerklink_waarde = SUBSTR (prs_kenmerklink_waarde, 5)
       WHERE prs_kenmerk_key = c_faxnr_key
             AND prs_kenmerklink_waarde LIKE '0031%';

      -- Verwijder non-digit tekens (leestekens en spaties)
      UPDATE prs_kenmerklink
         SET prs_kenmerklink_waarde =
                REPLACE (
                   REPLACE (
                      REPLACE (
                         REPLACE (REPLACE (prs_kenmerklink_waarde, '.', ''),
                                  '(',
                                  ''),
                         ')',
                         ''),
                      '-',
                      ''),
                   ' ',
                   '')
       WHERE prs_kenmerk_key = c_faxnr_key;

      UPDATE prs_kenmerklink
         SET prs_kenmerklink_waarde = '20' || prs_kenmerklink_waarde
       WHERE prs_kenmerk_key = c_faxnr_key
             AND prs_kenmerklink_waarde LIKE '687____';

      UPDATE prs_kenmerklink
         SET prs_kenmerklink_waarde = SUBSTR (prs_kenmerklink_waarde, 2)
       WHERE prs_kenmerk_key = c_faxnr_key
             AND prs_kenmerklink_waarde LIKE '0%';

      -- 06-nummers bijwerken
      -- (NB: format "06 - xx xx xx xx" is 16 digits, dus gebruik ik
      --  "06-xx xx xx xx", om het binnen de 15 karakters te houden.)
      UPDATE prs_kenmerklink
         SET prs_kenmerklink_waarde =
                SUBSTR (
                   TRIM(   '0'
                        || SUBSTR (prs_kenmerklink_waarde, 1, 1)
                        || '-'
                        || SUBSTR (prs_kenmerklink_waarde, 2, 2)
                        || ' '
                        || SUBSTR (prs_kenmerklink_waarde, 4, 2)
                        || ' '
                        || SUBSTR (prs_kenmerklink_waarde, 6, 2)
                        || ' '
                        || SUBSTR (prs_kenmerklink_waarde, 8, 2)),
                   1,
                   15)
       WHERE     prs_kenmerk_key = c_faxnr_key
             AND prs_kenmerklink_waarde LIKE '6%'
             AND prs_kenmerklink_waarde IS NOT NULL
             AND LENGTH (prs_kenmerklink_waarde) > 5;

      -- 0800- en 0900-nummers met een even aantal digits
      -- (NB: MOD(prs_kenmerklink_waarde, 2) = 1, omdat prs_kenmerklink_waarde begint met 900 ipv 0900!)
      UPDATE prs_kenmerklink
         SET prs_kenmerklink_waarde =
                SUBSTR (
                   TRIM(   '0'
                        || SUBSTR (prs_kenmerklink_waarde, 1, 3)
                        || ' - '
                        || SUBSTR (prs_kenmerklink_waarde, 4, 2)
                        || ' '
                        || SUBSTR (prs_kenmerklink_waarde, 6, 2)
                        || ' '
                        || SUBSTR (prs_kenmerklink_waarde, 8, 2)),
                   1,
                   15)
       WHERE     prs_kenmerk_key = c_faxnr_key
             AND prs_kenmerklink_waarde IS NOT NULL
             AND LENGTH (prs_kenmerklink_waarde) > 5
             AND MOD (LENGTH (prs_kenmerklink_waarde), 2) = 1
             AND (prs_kenmerklink_waarde LIKE '800%'
                  OR prs_kenmerklink_waarde LIKE '900%');

      -- 0800- en 0900-nummers met een oneven aantal digits
      UPDATE prs_kenmerklink
         SET prs_kenmerklink_waarde =
                SUBSTR (
                   TRIM(   '0'
                        || SUBSTR (prs_kenmerklink_waarde, 1, 3)
                        || '-'
                        || SUBSTR (prs_kenmerklink_waarde, 4, 3)
                        || ' '
                        || SUBSTR (prs_kenmerklink_waarde, 7, 2)
                        || ' '
                        || SUBSTR (prs_kenmerklink_waarde, 9, 2)),
                   1,
                   15)
       WHERE     prs_kenmerk_key = c_faxnr_key
             AND prs_kenmerklink_waarde IS NOT NULL
             AND LENGTH (prs_kenmerklink_waarde) > 5
             AND MOD (LENGTH (prs_kenmerklink_waarde), 2) = 0
             AND (prs_kenmerklink_waarde LIKE '800%'
                  OR prs_kenmerklink_waarde LIKE '900%');

      -- 088-nummers met een even aantal digits
      UPDATE prs_kenmerklink
         SET prs_kenmerklink_waarde =
                SUBSTR (
                   TRIM(   '0'
                        || SUBSTR (prs_kenmerklink_waarde, 1, 2)
                        || ' - '
                        || SUBSTR (prs_kenmerklink_waarde, 3, 3)
                        || ' '
                        || SUBSTR (prs_kenmerklink_waarde, 6, 2)
                        || ' '
                        || SUBSTR (prs_kenmerklink_waarde, 8, 2)),
                   1,
                   15)
       WHERE     prs_kenmerk_key = c_faxnr_key
             AND prs_kenmerklink_waarde IS NOT NULL
             AND LENGTH (prs_kenmerklink_waarde) > 5
             AND MOD (LENGTH (prs_kenmerklink_waarde), 2) = 1
             AND prs_kenmerklink_waarde LIKE '88%';

      -- 088-nummers met een oneven aantal digits
      UPDATE prs_kenmerklink
         SET prs_kenmerklink_waarde =
                SUBSTR (
                   TRIM(   '0'
                        || SUBSTR (prs_kenmerklink_waarde, 1, 2)
                        || '-'
                        || SUBSTR (prs_kenmerklink_waarde, 3, 2)
                        || ' '
                        || SUBSTR (prs_kenmerklink_waarde, 5, 2)
                        || ' '
                        || SUBSTR (prs_kenmerklink_waarde, 7, 2)
                        || ' '
                        || SUBSTR (prs_kenmerklink_waarde, 9, 2)),
                   1,
                   15)
       WHERE     prs_kenmerk_key = c_faxnr_key
             AND prs_kenmerklink_waarde IS NOT NULL
             AND LENGTH (prs_kenmerklink_waarde) > 5
             AND MOD (LENGTH (prs_kenmerklink_waarde), 2) = 0
             AND prs_kenmerklink_waarde LIKE '88%';

      -- netnummers met 2 digits na-de-nul (bijv "020")
      UPDATE prs_kenmerklink
         SET prs_kenmerklink_waarde =
                SUBSTR (
                      '(0'
                   || SUBSTR (prs_kenmerklink_waarde, 1, 2)
                   || ') '
                   || SUBSTR (prs_kenmerklink_waarde, 3, 3)
                   || ' '
                   || SUBSTR (prs_kenmerklink_waarde, 6, 2)
                   || ' '
                   || SUBSTR (prs_kenmerklink_waarde, 8, 2),
                   1,
                   15)
       WHERE     prs_kenmerk_key = c_faxnr_key
             AND prs_kenmerklink_waarde IS NOT NULL
             AND LENGTH (prs_kenmerklink_waarde) > 5
             AND EXISTS
                   (SELECT 1
                      FROM fac_usrdata
                     WHERE fac_usrtab_key = v_fac_usrtab_key
                           AND fac_usrdata_verwijder IS NULL
                           AND prs_kenmerklink_waarde LIKE
                                 fac_usrdata_code || '%'
                           AND LENGTH (fac_usrdata_code) = 2);

      -- netnummers met 3 digits na-de-nul (bijv "0118")
      UPDATE prs_kenmerklink
         SET prs_kenmerklink_waarde =
                SUBSTR (
                      '(0'
                   || SUBSTR (prs_kenmerklink_waarde, 1, 3)
                   || ') '
                   || SUBSTR (prs_kenmerklink_waarde, 4, 2)
                   || ' '
                   || SUBSTR (prs_kenmerklink_waarde, 6, 2)
                   || ' '
                   || SUBSTR (prs_kenmerklink_waarde, 8, 2),
                   1,
                   15)
       WHERE     prs_kenmerk_key = c_faxnr_key
             AND prs_kenmerklink_waarde IS NOT NULL
             AND LENGTH (prs_kenmerklink_waarde) > 5
             AND EXISTS
                   (SELECT prs_kenmerklink_key
                      FROM fac_usrdata
                     WHERE fac_usrtab_key = v_fac_usrtab_key
                           AND fac_usrdata_verwijder IS NULL
                           AND prs_kenmerklink_waarde LIKE
                                 fac_usrdata_code || '%'
                           AND LENGTH (fac_usrdata_code) = 3);
   EXCEPTION
      WHEN OTHERS
      THEN
         fac.imp_writelog (p_import_key,
                           'W',
                           'Fout bij formatteren telefoonnummers',
                           SQLCODE || ': ' || SUBSTR (SQLERRM, 1, 200));
   END format_telefoonnummers;

   PROCEDURE abo_verhuisd (p_import_key     NUMBER,
                           p_perslid_key    NUMBER,
                           p_locatie_key    NUMBER)
   AS
      oracle_err_num   VARCHAR (20);
      oracle_err_mes   VARCHAR (100);
      v_errorhint      VARCHAR (200);
      v_errormsg       VARCHAR (200);
      v_aanduiding     VARCHAR (200);
      v_count          NUMBER;

      -- Contract is een abonnement en deze persoon is contracteigenaar!
      CURSOR c_cnt
      IS
         SELECT c.cnt_contract_key,
                c.cnt_contract_nummer_intern,
                pf.prs_perslid_naam_full,
                l.alg_locatie_omschrijving,
                l.alg_locatie_post_adres,
                l.alg_locatie_post_postcode,
                l.alg_locatie_post_plaats,
                sn.fac_srtnotificatie_oms
           FROM cnt_v_aanwezigcontract c, prs_v_perslid_fullnames pf, alg_locatie l, fac_srtnotificatie sn
          WHERE c.ins_discipline_key = 360                     -- Abonnementen
                AND c.cnt_contract_status = 0                -- NIET Gesloten!
                AND NOT EXISTS -- Beschouw alleen laatste versie van contracten
                      (SELECT 1
                         FROM cnt_v_aanwezigcontract
                        WHERE cnt_contract_nummer_intern = c.cnt_contract_nummer_intern
                              AND cnt_contract_versie > c.cnt_contract_versie)
                AND c.cnt_contract_looptijd_tot > SYSDATE
                AND c.prs_perslid_key_eig = p_perslid_key
                AND pf.prs_perslid_key = p_perslid_key
                AND l.alg_locatie_key = p_locatie_key
                AND sn.fac_srtnotificatie_code = 'CUST19';
   BEGIN
      FOR rec IN c_cnt
      LOOP
         BEGIN
            v_aanduiding :=
                  rec.prs_perslid_naam_full
               || '/'
               || rec.cnt_contract_nummer_intern;

            -- Op basis van CUST19-tracking wordt via PutOrders ook aansluitend
            -- een cXML - uit customer orderqueue! - naar leverancier gestuurd!
            -- UWVA#41576: Tevens wordt nav. onderstaande tracking standaard de
            --             contractbeheerder=abonnee genotificeerd!
            fac.trackaction ('CUST19',
                             rec.cnt_contract_key,
                             NULL,
                             NULL,
                             rec.fac_srtnotificatie_oms);

            -- Ook nog maar even in ABS-logging noemen of niet?
            fac.imp_writelog (
               p_import_key,
               'I',
                  rec.cnt_contract_nummer_intern
               || ': abonnee '
               || rec.prs_perslid_naam_full
               || ' verhuisd.',
                  rec.alg_locatie_omschrijving
               || ', '
               || rec.alg_locatie_post_adres
               || ', '
               || rec.alg_locatie_post_postcode
               || ' '
               || rec.alg_locatie_post_plaats);
         EXCEPTION
            WHEN OTHERS
            THEN
               oracle_err_num := SQLCODE;
               oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
               v_errorhint := 'abo_verhuisd {' || v_errormsg || '}';
               v_errormsg :=
                     v_aanduiding
                  || '(ORACLE error '
                  || oracle_err_num
                  || '/'
                  || oracle_err_mes
                  || ')';
               fac.imp_writelog (p_import_key,
                                 'W',
                                 v_errormsg,
                                 v_errorhint);
         END;
      END LOOP;
   EXCEPTION
      WHEN OTHERS
      THEN
         oracle_err_num := SQLCODE;
         oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
         v_errorhint := 'abo_verhuisd {' || v_errormsg || '}';
         v_errormsg :=
               v_aanduiding
            || '(ORACLE error '
            || oracle_err_num
            || '/'
            || oracle_err_mes
            || ')';
         fac.imp_writelog (p_import_key,
                           'W',
                           v_errormsg,
                           v_errorhint);
   END;
END uwva;
/



--
-- UWVA#29757: Flexwhere: Configuratie tbv bezettingsrapportages ----------------------------------------------------------------------------------------------------------------------------
--

-- d.ins_discipline_key = 406 is de discipline 'FlexWhere'.
-- MBMB
-- Alle ins_delen (objecten) van discpline FlexWhere: dit zijn de sensoren in de vergaderruimten.

CREATE OR REPLACE VIEW uwva_v_flexwhere_deel
(
   ins_deel_key,
   ins_deel_omschrijving,
   alg_ruimte_key,
   alg_ruimte_nr,
   alg_verdieping_key,
   alg_verdieping_volgnr,
   alg_gebouw_key,
   alg_gebouw_code,
   alg_locatie_key,
   alg_locatie_code
)
AS
   SELECT d.ins_deel_key,
          d.ins_deel_omschrijving,
          r.alg_ruimte_key,
          r.alg_ruimte_nr,
          v.alg_verdieping_key,
          v.alg_verdieping_volgnr,
          g.alg_gebouw_key,
          g.alg_gebouw_code,
          l.alg_locatie_key,
          alg_locatie_code
     FROM ins_deel d,
          alg_ruimte r,
          alg_verdieping v,
          alg_gebouw g,
          alg_locatie l
    WHERE     d.ins_discipline_key = 406
          AND d.ins_alg_ruimte_key = r.alg_ruimte_key
          AND v.alg_verdieping_key = r.alg_verdieping_key
          AND g.alg_gebouw_key = v.alg_gebouw_key
          AND l.alg_locatie_key = g.alg_locatie_key
          AND (d.ins_deel_vervaldatum < sysdate OR d.ins_deel_vervaldatum IS NULL)
          AND d.ins_deel_verwijder IS NULL;

-- Alle sensor meetwaarde-wijzigingen.
-- ins_deel_state = 0 betekent dat ruimte geen beweging is gedecteerd (= vrij)
--                = 1 betekent dat ruimte WEL  beweging is gedecteerd (= bezet)

CREATE OR REPLACE VIEW uwva_v_flexwhere_ins_state
(
   ins_deel_key,
   ins_deel_omschrijving,
   ins_deel_state,
   ins_deel_statedate,
   ins_deel_statedate_trunc,
   jaar,
   maand,
   dag,
   dagnr,
   uur,
   MIN,
   min2,
   alg_ruimte_key,
   alg_ruimte_nr,
   alg_verdieping_key,
   alg_verdieping_volgnr,
   alg_gebouw_key,
   alg_gebouw_code,
   alg_locatie_key,
   alg_locatie_code
)
AS
   SELECT d.ins_deel_key,
          d.ins_deel_omschrijving,
          h.ins_deel_state,
          h.ins_deel_statedate,
          TRUNC (h.ins_deel_statedate),
          TO_CHAR (h.ins_deel_statedate, 'yyyy'),
          TO_CHAR (h.ins_deel_statedate, 'mm'),
          TO_CHAR (h.ins_deel_statedate, 'dd'),
          TO_CHAR (h.ins_deel_statedate, 'D'),
          TO_CHAR (h.ins_deel_statedate, 'hh24'),
          TO_CHAR (h.ins_deel_statedate, 'mi'),
          CASE
             WHEN fac.safe_to_number (TO_CHAR (h.ins_deel_statedate, 'mi')) <
                     15
             THEN
                '00'
             WHEN fac.safe_to_number (TO_CHAR (h.ins_deel_statedate, 'mi')) <
                     30
             THEN
                '15'
             WHEN fac.safe_to_number (TO_CHAR (h.ins_deel_statedate, 'mi')) <
                     45
             THEN
                '30'
             ELSE
                '45'
          END
             CASE,
          d.alg_ruimte_key,
          d.alg_ruimte_nr,
          d.alg_verdieping_key,
          d.alg_verdieping_volgnr,
          d.alg_gebouw_key,
          d.alg_gebouw_code,
          d.alg_locatie_key,
          d.alg_locatie_code
     FROM uwva_v_flexwhere_deel d, ins_deel_state_history h
    WHERE d.ins_deel_key = h.ins_deel_key;


-- Alle reserveringen met de status in de vergaderruimten met een FlexWhere-sensor:
-- Formaat:
-- ins_deel_key, ins_deel_omschrijving, ins_deel_state,ins_deel_statedate
-- ins_deel_state   = 0 betekent dat ruimte VANAF res_deel_statedate (!) niet gereserveerd is (= vrij zou zijn) (was 2)
--                  = 1 betekent dat ruimte VANAF res_deel_statedate gereserveerd is (= bezet zou zijn) (was 3)

CREATE OR REPLACE VIEW uwva_v_flexwhere_res_state
(
   ins_deel_key,
   ins_deel_omschrijving,
   res_deel_state,
   res_deel_statedate,
   res_deel_statedate_trunc,
   jaar,
   maand,
   dag,
   dagnr,
   uur,
   MIN,
   min2,
   res_rsv_ruimte_key,
   alg_ruimte_key,
   alg_ruimte_nr,
   alg_verdieping_volgnr,
   alg_gebouw_code,
   alg_locatie_code
)
AS
   SELECT d.ins_deel_key,
          d.ins_deel_omschrijving,
          '0',
          rr.res_rsv_ruimte_tot,
          TRUNC (rr.res_rsv_ruimte_tot),
          TO_CHAR (rr.res_rsv_ruimte_tot, 'yyyy'),
          TO_CHAR (rr.res_rsv_ruimte_tot, 'mm'),
          TO_CHAR (rr.res_rsv_ruimte_tot, 'dd'),
          TO_CHAR (rr.res_rsv_ruimte_tot, 'D'),
          TO_CHAR (rr.res_rsv_ruimte_tot, 'hh24'),
          TO_CHAR (rr.res_rsv_ruimte_tot, 'mi'),
          CASE
             WHEN fac.safe_to_number (TO_CHAR (rr.res_rsv_ruimte_tot, 'mi')) <
                     15
             THEN
                '00'
             WHEN fac.safe_to_number (TO_CHAR (rr.res_rsv_ruimte_tot, 'mi')) <
                     30
             THEN
                '15'
             WHEN fac.safe_to_number (TO_CHAR (rr.res_rsv_ruimte_tot, 'mi')) <
                     45
             THEN
                '30'
             ELSE
                '45'
          END
             CASE,
          rr.res_rsv_ruimte_key,
          ar.alg_ruimte_key,
          ar.alg_ruimte_nr,
          v.alg_verdieping_volgnr,
          g.alg_gebouw_code,
          l.alg_locatie_code
     FROM res_rsv_ruimte rr,
          res_ruimte_opstelling ro,
          res_ruimte r,
          res_alg_ruimte rar,
          alg_ruimte ar,
          uwva_v_flexwhere_deel d,
          alg_verdieping v,
          alg_gebouw g,
          alg_locatie l
    WHERE     rr.res_rsv_ruimte_verwijder IS NULL
          AND rr.res_ruimte_opstel_key = ro.res_ruimte_opstel_key
          AND ro.res_ruimte_key = r.res_ruimte_key
          AND r.res_ruimte_key = rar.res_ruimte_key
          AND rar.alg_ruimte_key = ar.alg_ruimte_key
          AND d.alg_ruimte_key = ar.alg_ruimte_key
          AND ar.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
   UNION ALL
   SELECT d.ins_deel_key,
          d.ins_deel_omschrijving,
          '1',
          rr.res_rsv_ruimte_van,
          TRUNC (rr.res_rsv_ruimte_van),
          TO_CHAR (rr.res_rsv_ruimte_van, 'yyyy'),
          TO_CHAR (rr.res_rsv_ruimte_van, 'mm'),
          TO_CHAR (rr.res_rsv_ruimte_van, 'dd'),
          TO_CHAR (rr.res_rsv_ruimte_van, 'D'),
          TO_CHAR (rr.res_rsv_ruimte_van, 'hh24'),
          TO_CHAR (rr.res_rsv_ruimte_van, 'mi'),
          CASE
             WHEN fac.safe_to_number (TO_CHAR (rr.res_rsv_ruimte_van, 'mi')) <
                     15
             THEN
                '00'
             WHEN fac.safe_to_number (TO_CHAR (rr.res_rsv_ruimte_van, 'mi')) <
                     30
             THEN
                '15'
             WHEN fac.safe_to_number (TO_CHAR (rr.res_rsv_ruimte_van, 'mi')) <
                     45
             THEN
                '30'
             ELSE
                '45'
          END
             CASE,
          rr.res_rsv_ruimte_key,
          ar.alg_ruimte_key,
          ar.alg_ruimte_nr,
          v.alg_verdieping_volgnr,
          g.alg_gebouw_code,
          l.alg_locatie_code
     FROM res_rsv_ruimte rr,
          res_ruimte_opstelling ro,
          res_ruimte r,
          res_alg_ruimte rar,
          alg_ruimte ar,
          uwva_v_flexwhere_deel d,
          alg_verdieping v,
          alg_gebouw g,
          alg_locatie l
    WHERE     rr.res_rsv_ruimte_verwijder IS NULL
          AND rr.res_ruimte_opstel_key = ro.res_ruimte_opstel_key
          AND ro.res_ruimte_key = r.res_ruimte_key
          AND r.res_ruimte_key = rar.res_ruimte_key
          AND rar.alg_ruimte_key = ar.alg_ruimte_key
          AND d.alg_ruimte_key = ar.alg_ruimte_key
          AND ar.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;



-- De verzameling (set) van dagen waarover de rapportage gaat:
-- Alle dagen van de afgelopen 2 maanden (2*31),
-- Behalve de weekenden. (dagnr 7 (=za) en 1 (=zo)) (1=zo, 2=ma, 3=di, .... 6=vr, 7 = za)
-- Elke dag (datum) met de begintijd voor de rapportage: 09:00u (9/24) en een eindtijd 16:00 (16/24)
-- NB: Let op, het is mogelijk dat van sommige zalen op sommige dagen helemaal geen sensorinfo in Facilitor wordt bewaard, dan is vangt deze view deze missing datums (in theorie ws) op.

CREATE OR REPLACE VIEW uwva_flexwhere_2mnd_tmp
(
   datum_starttijd,
   datum_eindtijd
)
AS
       SELECT TRUNC (SYSDATE - (LEVEL - 1)) + 9 / 24,
              TRUNC (SYSDATE - (LEVEL - 1)) + 16 / 24
         FROM DUAL
   CONNECT BY LEVEL <= 2 * 31;


CREATE OR REPLACE VIEW uwva_flexwhere_2mnd
AS
   SELECT *
     FROM uwva_flexwhere_2mnd_tmp
    WHERE TO_CHAR (datum_starttijd, 'D') <> 1
          AND TO_CHAR (datum_starttijd, 'D') <> 7;

-- View met alle kwartieren tussen 09:00u en 16:00u, dus gedurende 7 uur
-- Gebruik hiervan is voor de lijngrafiek die om op de X-as elk kwartier een waarde heeft staan.

CREATE OR REPLACE VIEW uwva_flexwhere_kwartieren_1dag
(
   tijd,
   uur,
   MIN
)
AS
       SELECT TRUNC (SYSDATE) + 9 / 24 + (LEVEL - 1) / (24 * 4),
              TO_CHAR (TRUNC (SYSDATE) + 9 / 24 + (LEVEL - 1) / (24 * 4),
                       'hh24'),
              TO_CHAR (TRUNC (SYSDATE) + 9 / 24 + (LEVEL - 1) / (24 * 4), 'mi')
         FROM DUAL
   CONNECT BY LEVEL <= (7.0 * 4) + 1;



CREATE OR REPLACE VIEW uwva_flexwhere_kwartier_2mnd
(
   tijdstip,
   datum,
   uur,
   min2
)
AS
   SELECT TRUNC (datum_starttijd) + uur / 24 + MIN / (60 * 24),
          TRUNC (datum_starttijd),
          uur,
          MIN
     FROM uwva_flexwhere_2mnd, uwva_flexwhere_kwartieren_1dag;

CREATE OR REPLACE VIEW uwva_flexwhere_kwartier_mnd_1
AS
   SELECT *
     FROM uwva_flexwhere_kwartier_2mnd
    WHERE TO_CHAR (datum, 'yyyy') =
             DECODE (TO_CHAR (SYSDATE, 'mm'),
                     1, TO_CHAR (SYSDATE, 'yyyy') - 1,
                     TO_CHAR (SYSDATE, 'yyyy'))
          AND TO_CHAR (datum, 'mm') =
                DECODE (TO_CHAR (SYSDATE, 'mm'),
                        1, 12,
                        TO_CHAR (SYSDATE, 'mm') - 1);

--------------------------------------------------------------------
-- Om de no-show van reserveringen te kunnen bepalen, een tijdsvak van 4 weken (zeg maar 1 maand) terug de sensor-info.
-- state_code = R (reservering-state) of "I" (sensor-state)
--              HIER IS NIET NODIG: A (starttijd 09:00u van beide NULL, zowel I als R NULL)
--              HIER IS NIET NODIG B (eindtijd 16:00u  van beide NULL, zowel I als R NULL

CREATE OR REPLACE VIEW uwva_v_flexwhere_res_4_noshow
(
   ins_deel_key,
   res_rsv_ruimte_van,
   res_rsv_ruimte_tot,
   tijdsduur,
   tijdsinterval,
   res_rsv_ruimte_key,
   res_reservering_key,
   res_rsv_ruimte_volgnr,
   alg_ruimte_key,
   alg_ruimte_nr,
   alg_verdieping_volgnr,
   alg_gebouw_code,
   alg_locatie_code
)
AS
   SELECT d.ins_deel_key,
          rr.res_rsv_ruimte_van,
          rr.res_rsv_ruimte_tot,
          rr.res_rsv_ruimte_tot - rr.res_rsv_ruimte_van,
          CASE
             WHEN rr.res_rsv_ruimte_tot - rr.res_rsv_ruimte_van < 2 / 24
             THEN
                1 / 96
             WHEN rr.res_rsv_ruimte_tot - rr.res_rsv_ruimte_van < 4 / 24
             THEN
                2 / 96
             ELSE
                3 / 96
          END
             CASE,
          rr.res_rsv_ruimte_key,
          rr.res_reservering_key,
          rr.res_rsv_ruimte_volgnr,
          ar.alg_ruimte_key,
          ar.alg_ruimte_nr,
          v.alg_verdieping_volgnr,
          g.alg_gebouw_code,
          l.alg_locatie_code
     FROM res_rsv_ruimte rr,
          res_ruimte_opstelling ro,
          res_ruimte r,
          res_alg_ruimte rar,
          alg_ruimte ar,
          uwva_v_flexwhere_deel d,
          alg_verdieping v,
          alg_gebouw g,
          alg_locatie l
    WHERE     rr.res_rsv_ruimte_verwijder IS NULL
          AND rr.res_ruimte_opstel_key = ro.res_ruimte_opstel_key
          AND ro.res_ruimte_key = r.res_ruimte_key
          AND r.res_ruimte_key = rar.res_ruimte_key
          AND rar.alg_ruimte_key = ar.alg_ruimte_key
          AND d.alg_ruimte_key = ar.alg_ruimte_key
          AND ar.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;


-- Van DEZE maand, wordt gebruikt om NO-show te bepalen

CREATE OR REPLACE VIEW uwva_v_flexwhere_insres_noshow
(
   ins_deel_key,
   res_rsv_ruimte_van,
   res_rsv_ruimte_tot,
   tijdsduur,
   tijdsinterval,
   res_rsv_ruimte_key,
   res_reservering_key,
   res_rsv_ruimte_volgnr,
   alg_ruimte_key,
   alg_ruimte_nr,
   alg_verdieping_volgnr,
   alg_gebouw_code,
   alg_locatie_code,
   ins_deel_state,
   ins_deel_statedate
)
AS
   SELECT ns.ins_deel_key,
          res_rsv_ruimte_van,
          res_rsv_ruimte_tot,
          tijdsduur,
          tijdsinterval,
          res_rsv_ruimte_key,
          res_reservering_key,
          res_rsv_ruimte_volgnr,
          alg_ruimte_key,
          alg_ruimte_nr,
          alg_verdieping_volgnr,
          alg_gebouw_code,
          alg_locatie_code,
          a.ins_deel_state,
          a.ins_deel_statedate
     FROM uwva_v_flexwhere_res_4_noshow ns, ins_deel_state_history a
    WHERE a.ins_deel_statedate =
             (SELECT MAX (ins_deel_statedate)
                FROM ins_deel_state_history b
               WHERE B.INS_DEEL_KEY = ns.ins_deel_key
                     AND B.INS_DEEL_STATEDATE <=
                           ns.res_rsv_ruimte_van + ns.tijdsinterval)
          AND a.ins_deel_key = ns.ins_deel_key
   UNION
   SELECT ns.ins_deel_key,
          res_rsv_ruimte_van,
          res_rsv_ruimte_tot,
          tijdsduur,
          tijdsinterval,
          res_rsv_ruimte_key,
          alg_ruimte_key,
          res_reservering_key,
          res_rsv_ruimte_volgnr,
          alg_ruimte_nr,
          alg_verdieping_volgnr,
          alg_gebouw_code,
          alg_locatie_code,
          '0',
          res_rsv_ruimte_van
     FROM uwva_v_flexwhere_res_4_noshow ns
    WHERE NOT EXISTS (SELECT 'x'
                        FROM ins_deel_state_history a
                       WHERE a.ins_deel_key = ns.ins_deel_key);



CREATE OR REPLACE PROCEDURE uwva_res_sensor_noshow (p_applname   IN VARCHAR2,
                                                    p_applrun    IN VARCHAR2,
                                                    p_filedir    IN VARCHAR2,
                                                    p_filename   IN VARCHAR2)
AS
   -- Cursor met alle reservering die geen aanwezigheid hebben op tijdstip kwartier, half uur of 3 kwartier volgens de spelregels 'no-show':
   --
   -- Vergadering < 2 uur: als na exact 15 minuten géén aanwezigheid wordt geconstateerd wordt de reservering aangemerkt als een No Show
   -- Vergadering duurt vanaf 2 tot 4 uur -> na 30 minuten wordt het aangemerkt als een No Show
   -- Vergadering duurt vanaf 4 uur -> na 45 minuten wordt het aangemerkt als een No Show

   CURSOR c_noshow
   IS
      SELECT res_rsv_ruimte_key, ins_deel_state
        FROM uwva_v_flexwhere_insres_noshow
       WHERE ins_deel_state = 0
             AND TRUNC (res_rsv_ruimte_van) = TRUNC (SYSDATE - 1); -- Gisteren


   v_errorhint      VARCHAR2 (1000);
   v_errormsg       VARCHAR2 (1000);
   oracle_err_num   NUMBER;
   oracle_err_mes   VARCHAR2 (200);

   v_txt_noshow     VARCHAR2 (200);

   h_track_res      NUMBER (1);
   h_track_bez      NUMBER (1);

   v_nu             DATE;
BEGIN
   v_nu := SYSDATE;
   v_txt_noshow := 'Flexwhere: No show';

   ----------------------------------------------------------------------------------------------------------------------------------------------------------------------
   FOR rc IN c_noshow
   LOOP
      fac.trackaction ('#RESUPD',
                       rc.res_rsv_ruimte_key,
                       NULL,
                       v_nu,
                       v_txt_noshow);

      UPDATE res_rsv_ruimte
         SET res_rsv_ruimte_bezoekers_shown = 0
       WHERE res_rsv_ruimte_key = rc.res_rsv_ruimte_key;
   END LOOP;

   COMMIT;
----------------------------------------------------------------------------------------------------------------------------------------------------------------------

EXCEPTION
   WHEN OTHERS
   THEN
      oracle_err_num := SQLCODE;
      oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
      v_errormsg :=
         'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
      fac.writelog (p_applname,
                    'E',
                    'Flexwhere afgebroken!',
                    v_errormsg);
      COMMIT;
END;
/




--------------------------------------------------------------------
-- Vorige maand
-- state_code = R (reservering-state) of "I" (sensor-state)
--              A (starttijd 10:00u van beide NULL, zowel I als R NULL)
--              B (eindtijd 14:00u  van beide NULL, zowel I als R NULL

CREATE OR REPLACE VIEW uwva_v_flexwhere_ins_mnd_1
(
   ins_deel_key,
   ins_deel_omschrijving,
   ins_deel_state,
   res_deel_state,
   state_code,
   ins_deel_statedate,
   ins_deel_statedate_trunc,
   jaar,
   maand,
   dag,
   dagnr,
   uur,
   MIN,
   min2,
   alg_ruimte_key,
   alg_ruimte_nr,
   alg_verdieping_volgnr,
   alg_gebouw_code,
   alg_locatie_code
)
AS
   SELECT ins_deel_key,
          ins_deel_omschrijving,
          ins_deel_state,
          NULL,
          'I',
          ins_deel_statedate,
          ins_deel_statedate_trunc,
          jaar,
          maand,
          dag,
          dagnr,
          uur,
          MIN,
          min2,
          alg_ruimte_key,
          alg_ruimte_nr,
          alg_verdieping_volgnr,
          alg_gebouw_code,
          alg_locatie_code
     FROM uwva_v_flexwhere_ins_state fw
    WHERE fw.jaar =
             DECODE (TO_CHAR (SYSDATE, 'mm'),
                     1, TO_CHAR (SYSDATE, 'yyyy') - 1,
                     TO_CHAR (SYSDATE, 'yyyy'))
          AND fw.maand =
                DECODE (TO_CHAR (SYSDATE, 'mm'),
                        1, 12,
                        TO_CHAR (SYSDATE, 'mm') - 1)
   UNION ALL
   SELECT ins_deel_key,
          ins_deel_omschrijving,
          NULL,
          NULL,
          'A',
          dag.datum_starttijd,
          TRUNC (dag.datum_starttijd),
          TO_CHAR (dag.datum_starttijd, 'yyyy'),
          TO_CHAR (dag.datum_starttijd, 'mm'),
          TO_CHAR (dag.datum_starttijd, 'dd'),
          TO_CHAR (dag.datum_starttijd, 'D'),
          TO_CHAR (dag.datum_starttijd, 'hh24'),
          TO_CHAR (dag.datum_starttijd, 'mi'),
          CASE
             WHEN fac.safe_to_number (TO_CHAR (dag.datum_starttijd, 'mi')) <
                     15
             THEN
                '00'
             WHEN fac.safe_to_number (TO_CHAR (dag.datum_starttijd, 'mi')) <
                     30
             THEN
                '15'
             WHEN fac.safe_to_number (TO_CHAR (dag.datum_starttijd, 'mi')) <
                     45
             THEN
                '30'
             ELSE
                '45'
          END
             CASE,
          alg_ruimte_key,
          alg_ruimte_nr,
          alg_verdieping_volgnr,
          alg_gebouw_code,
          alg_locatie_code
     FROM uwva_v_flexwhere_deel d, uwva_flexwhere_2mnd dag
    WHERE TO_CHAR (dag.datum_starttijd, 'yyyy') =
             DECODE (TO_CHAR (SYSDATE, 'mm'),
                     1, TO_CHAR (SYSDATE, 'yyyy') - 1,
                     TO_CHAR (SYSDATE, 'yyyy'))
          AND TO_CHAR (dag.datum_starttijd, 'mm') =
                DECODE (TO_CHAR (SYSDATE, 'mm'),
                        1, 12,
                        TO_CHAR (SYSDATE, 'mm') - 1)
   UNION ALL
   SELECT ins_deel_key,
          ins_deel_omschrijving,
          NULL,
          NULL,
          'B',
          dag.datum_eindtijd,
          TRUNC (dag.datum_eindtijd),
          TO_CHAR (dag.datum_eindtijd, 'yyyy'),
          TO_CHAR (dag.datum_eindtijd, 'mm'),
          TO_CHAR (dag.datum_eindtijd, 'dd'),
          TO_CHAR (dag.datum_eindtijd, 'D'),
          TO_CHAR (dag.datum_eindtijd, 'hh24'),
          TO_CHAR (dag.datum_eindtijd, 'mi'),
          CASE
             WHEN fac.safe_to_number (TO_CHAR (dag.datum_eindtijd, 'mi')) <
                     15
             THEN
                '00'
             WHEN fac.safe_to_number (TO_CHAR (dag.datum_eindtijd, 'mi')) <
                     30
             THEN
                '15'
             WHEN fac.safe_to_number (TO_CHAR (dag.datum_eindtijd, 'mi')) <
                     45
             THEN
                '30'
             ELSE
                '45'
          END
             CASE,
          alg_ruimte_key,
          alg_ruimte_nr,
          alg_verdieping_volgnr,
          alg_gebouw_code,
          alg_locatie_code
     FROM uwva_v_flexwhere_deel d, uwva_flexwhere_2mnd dag
    WHERE TO_CHAR (dag.datum_eindtijd, 'yyyy') =
             DECODE (TO_CHAR (SYSDATE, 'mm'),
                     1, TO_CHAR (SYSDATE, 'yyyy') - 1,
                     TO_CHAR (SYSDATE, 'yyyy'))
          AND TO_CHAR (dag.datum_eindtijd, 'mm') =
                DECODE (TO_CHAR (SYSDATE, 'mm'),
                        1, 12,
                        TO_CHAR (SYSDATE, 'mm') - 1);



--------------------------------------------------------------------
-- Vorige maand, INS sensoren en RES bij elkaar

CREATE OR REPLACE VIEW uwva_v_flexwhere_ins_en_res_1
(
   ins_deel_key,
   ins_deel_omschrijving,
   ins_deel_state,
   res_deel_state,
   state_code,
   ins_deel_statedate,
   ins_deel_statedate_trunc,
   jaar,
   maand,
   dag,
   dagnr,
   uur,
   MIN,
   min2,
   res_rsv_ruimte_key,
   alg_ruimte_key,
   alg_ruimte_nr,
   alg_verdieping_volgnr,
   alg_gebouw_code,
   alg_locatie_code
)
AS
   SELECT ins_deel_key,
          ins_deel_omschrijving,
          NULL,
          res_deel_state,
          'R',
          res_deel_statedate,
          res_deel_statedate_trunc,
          jaar,
          maand,
          dag,
          dagnr,
          uur,
          MIN,
          min2,
          res_rsv_ruimte_key,
          alg_ruimte_key,
          alg_ruimte_nr,
          alg_verdieping_volgnr,
          alg_gebouw_code,
          alg_locatie_code
     FROM uwva_v_flexwhere_res_state fw
    --WHERE fw.res_deel_statedate >= SYSDATE - 2*31
    WHERE fw.jaar =
             DECODE (TO_CHAR (SYSDATE, 'mm'),
                     1, TO_CHAR (SYSDATE, 'yyyy') - 1,
                     TO_CHAR (SYSDATE, 'yyyy'))
          AND fw.maand =
                DECODE (TO_CHAR (SYSDATE, 'mm'),
                        1, 12,
                        TO_CHAR (SYSDATE, 'mm') - 1)
   UNION ALL
   SELECT ins_deel_key,
          ins_deel_omschrijving,
          ins_deel_state,
          res_deel_state,
          state_code,
          ins_deel_statedate,
          ins_deel_statedate_trunc,
          jaar,
          maand,
          dag,
          dagnr,
          uur,
          MIN,
          min2,
          NULL,
          alg_ruimte_key,
          alg_ruimte_nr,
          alg_verdieping_volgnr,
          alg_gebouw_code,
          alg_locatie_code
     FROM uwva_v_flexwhere_ins_mnd_1;


-- Statecode hier wordt 'X'

CREATE OR REPLACE VIEW uwva_v_flexwhere_ins_kwartier
(
   ins_deel_key,
   ins_deel_omschrijving,
   ins_deel_state,
   res_deel_state,
   state_code,
   ins_deel_statedate,
   ins_deel_statedate_trunc,
   jaar,
   maand,
   dag,
   dagnr,
   uur,
   MIN,
   min2,
   alg_ruimte_key,
   alg_ruimte_nr,
   alg_verdieping_volgnr,
   alg_gebouw_code,
   alg_locatie_code
)
AS
   SELECT ins_deel_key,
          ins_deel_omschrijving,
          NULL,
          NULL,
          'X',
          k.tijdstip,
          k.datum,
          TO_CHAR (k.tijdstip, 'yyyy'),
          TO_CHAR (k.tijdstip, 'mm'),
          TO_CHAR (k.tijdstip, 'dd'),
          TO_CHAR (k.tijdstip, 'D'),
          k.uur,
          k.min2,
          k.min2,
          alg_ruimte_key,
          alg_ruimte_nr,
          alg_verdieping_volgnr,
          alg_gebouw_code,
          alg_locatie_code
     FROM uwva_v_flexwhere_deel t, uwva_flexwhere_kwartier_mnd_1 k
   UNION ALL
   SELECT ins_deel_key,
          ins_deel_omschrijving,
          ins_deel_state,
          NULL,
          'I',
          ins_deel_statedate,
          ins_deel_statedate_trunc,
          jaar,
          maand,
          dag,
          dagnr,
          uur,
          MIN,
          min2,
          alg_ruimte_key,
          alg_ruimte_nr,
          alg_verdieping_volgnr,
          alg_gebouw_code,
          alg_locatie_code
     FROM uwva_v_flexwhere_ins_state fw
    WHERE fw.jaar =
             DECODE (TO_CHAR (SYSDATE, 'mm'),
                     1, TO_CHAR (SYSDATE, 'yyyy') - 1,
                     TO_CHAR (SYSDATE, 'yyyy'))
          AND fw.maand =
                DECODE (TO_CHAR (SYSDATE, 'mm'),
                        1, 12,
                        TO_CHAR (SYSDATE, 'mm') - 1);


-- Van VORIGE maand

CREATE OR REPLACE VIEW uwva_v_flexwhere_insres_vantot
(
   ins_deel_key,
   state_code,
   ins_deel_state,
   res_deel_state,
   vandatum,
   tmdatum,
   jaar,
   maand,
   dag,
   dagnr,
   uur,
   MIN
)
AS
   SELECT ins_deel_key,
          state_code,
          COALESCE (
             ABS (ins_deel_state - 1),
             (SELECT ABS (MAX (fac.safe_to_number (ins_deel_state)) - 1)
                FROM ins_deel_state_history a
               WHERE a.ins_deel_statedate =
                        (SELECT MIN (ins_deel_statedate)
                           FROM ins_deel_state_history b
                          WHERE B.INS_DEEL_KEY = t1.ins_deel_key
                                AND B.INS_DEEL_STATEDATE >=
                                      t1.INS_DEEL_STATEDATE)
                     AND a.ins_deel_key = t1.ins_deel_key),
             (SELECT MAX (fac.safe_to_number (ins_deel_state))
                FROM ins_deel_state_history a
               WHERE a.ins_deel_statedate =
                        (SELECT MAX (ins_deel_statedate)
                           FROM ins_deel_state_history b
                          WHERE B.INS_DEEL_KEY = t1.ins_deel_key
                                AND B.INS_DEEL_STATEDATE <
                                      t1.INS_DEEL_STATEDATE)
                     AND a.ins_deel_key = t1.ins_deel_key),
             0)
             ins_state,
          COALESCE (
             ABS (res_deel_state - 1),
             (SELECT ABS (MAX (fac.safe_to_number (res_deel_state)) - 1)
                FROM uwva_v_flexwhere_ins_en_res_1 a
               WHERE a.ins_deel_statedate =
                        (SELECT MIN (ins_deel_statedate)
                           FROM uwva_v_flexwhere_ins_en_res_1 b
                          WHERE B.INS_DEEL_KEY = t1.ins_deel_key
                                AND B.INS_DEEL_STATEDATE >=
                                      t1.INS_DEEL_STATEDATE
                                AND b.state_code = 'R')
                     AND A.INS_DEEL_KEY = t1.ins_deel_key
                     AND a.state_code = 'R'),
             (SELECT MAX (fac.safe_to_number (res_deel_state))
                FROM uwva_v_flexwhere_ins_en_res_1 a
               WHERE a.ins_deel_statedate =
                        (SELECT MAX (ins_deel_statedate)
                           FROM uwva_v_flexwhere_ins_en_res_1 b
                          WHERE B.INS_DEEL_KEY = t1.ins_deel_key
                                AND B.INS_DEEL_STATEDATE <
                                      t1.INS_DEEL_STATEDATE
                                AND b.state_code = 'R')
                     AND A.INS_DEEL_KEY = t1.ins_deel_key
                     AND a.state_code = 'R'),
             0)
             res_state,
          COALESCE (
             LAG (ins_deel_statedate, 1)
                OVER (ORDER BY ins_deel_key, ins_deel_statedate),
             TO_DATE ('01-01-2010', 'DD-MM-YYYY'))
             AS vandatum,
          ins_deel_statedate AS tmdatum,
          jaar,
          maand,
          dag,
          dagnr,
          uur,
          MIN
     FROM uwva_v_flexwhere_ins_en_res_1 t1;



--
-- uwva_v_flexwhere_pie_maandag_1 is die van de VORIGE maand
--
-- Dit is per dag van 09:00 - 16:00 u = 7.0 uur
-- Dit is voor alle maandagen van de maand (voor juni 2014 -> 5 maandagen)
-- Dit is voor alle sensorobjecten van de reserveerzalen (17 stuks)
-- Betekent 7.0 * 5 * 17 = 595 uur, 595 / 24 = 24,791666667 dag.
-- Als je de SUM doet van FCLT_YAS_ van onderstaande view dan klopt dit exact!

CREATE OR REPLACE VIEW uwva_v_fwhere_pie_maandag_1
(
   fclt_key,
   FCLT_XAS_,
   FCLT_YAS_,
   FCLT_URL,
   FCLT_SORT
)
AS
     SELECT '',
            DECODE (ins_deel_state || res_deel_state,
                    '00', 'Vrij',
                    '01', 'Vrij vergadering gepland',
                    '10', 'Bezet, geen vergadering',
                    'Bezet'),
            SUM (tmdatum - vandatum),
            '',
            ins_deel_state || res_deel_state
       FROM t_uwva_v_flexwhere_insres_vant t1
      WHERE t1.jaar =
               DECODE (TO_CHAR (SYSDATE, 'mm'),
                       1, TO_CHAR (SYSDATE, 'yyyy') - 1,
                       TO_CHAR (SYSDATE, 'yyyy'))
            AND t1.maand =
                  DECODE (TO_CHAR (SYSDATE, 'mm'),
                          1, 12,
                          TO_CHAR (SYSDATE, 'mm') - 1)
            AND t1.uur >= 9
            AND ( (t1.uur = 16 AND t1.MIN = 0) OR (t1.uur < 16))
            AND state_code <> 'A'
            AND vandatum <> tmdatum -- dezelfde timestamps uitsluiten: is mogelijk als toevallig res-tijd vanaf 09:00 of tot 16:00 met de A en B code regels
            AND TRUNC (vandatum) = TRUNC (tmdatum) -- wel op dezelfde dag,  vandatum vrijdag 16:00  en tmdatum maandag 09:00 kan toevallig worden generereerd, dus hier eruit.
            AND dagnr = 2
   GROUP BY ins_deel_state || res_deel_state;

CREATE OR REPLACE VIEW uwva_v_fwhere_pie_dinsdag_1
(
   fclt_key,
   FCLT_XAS_,
   FCLT_YAS_,
   FCLT_URL,
   FCLT_SORT
)
AS
     SELECT '',
            DECODE (ins_deel_state || res_deel_state,
                    '00', 'Vrij',
                    '01', 'Vrij vergadering gepland',
                    '10', 'Bezet, geen vergadering',
                    'Bezet'),
            SUM (tmdatum - vandatum),
            '',
            ins_deel_state || res_deel_state
       FROM t_uwva_v_flexwhere_insres_vant t1
      WHERE t1.jaar =
               DECODE (TO_CHAR (SYSDATE, 'mm'),
                       1, TO_CHAR (SYSDATE, 'yyyy') - 1,
                       TO_CHAR (SYSDATE, 'yyyy'))
            AND t1.maand =
                  DECODE (TO_CHAR (SYSDATE, 'mm'),
                          1, 12,
                          TO_CHAR (SYSDATE, 'mm') - 1)
            AND t1.uur >= 9
            AND ( (t1.uur = 16 AND t1.MIN = 0) OR (t1.uur < 16))
            AND state_code <> 'A'
            AND vandatum <> tmdatum -- dezelfde timestamps uitsluiten: is mogelijk als toevallig res-tijd vanaf 09:00 of tot 16:00 met de A en B code regels
            AND TRUNC (vandatum) = TRUNC (tmdatum) -- wel op dezelfde dag,  vandatum vrijdag 16:00  en tmdatum maandag 09:00 kan toevallig worden generereerd, dus hier eruit.
            AND dagnr = 3
   GROUP BY ins_deel_state || res_deel_state;

CREATE OR REPLACE VIEW uwva_v_fwhere_pie_woensdag_1
(
   fclt_key,
   FCLT_XAS_,
   FCLT_YAS_,
   FCLT_URL,
   FCLT_SORT
)
AS
     SELECT '',
            DECODE (ins_deel_state || res_deel_state,
                    '00', 'Vrij',
                    '01', 'Vrij vergadering gepland',
                    '10', 'Bezet, geen vergadering',
                    'Bezet'),
            SUM (tmdatum - vandatum),
            '',
            ins_deel_state || res_deel_state
       FROM t_uwva_v_flexwhere_insres_vant t1
      WHERE t1.jaar =
               DECODE (TO_CHAR (SYSDATE, 'mm'),
                       1, TO_CHAR (SYSDATE, 'yyyy') - 1,
                       TO_CHAR (SYSDATE, 'yyyy'))
            AND t1.maand =
                  DECODE (TO_CHAR (SYSDATE, 'mm'),
                          1, 12,
                          TO_CHAR (SYSDATE, 'mm') - 1)
            AND t1.uur >= 9
            AND ( (t1.uur = 16 AND t1.MIN = 0) OR (t1.uur < 16))
            AND state_code <> 'A'
            AND vandatum <> tmdatum -- dezelfde timestamps uitsluiten: is mogelijk als toevallig res-tijd vanaf 09:00 of tot 16:00 met de A en B code regels
            AND TRUNC (vandatum) = TRUNC (tmdatum) -- wel op dezelfde dag,  vandatum vrijdag 16:00  en tmdatum maandag 09:00 kan toevallig worden generereerd, dus hier eruit.
            AND dagnr = 4
   GROUP BY ins_deel_state || res_deel_state;


CREATE OR REPLACE VIEW uwva_v_fwhere_pie_donderdag_1
(
   fclt_key,
   FCLT_XAS_,
   FCLT_YAS_,
   FCLT_URL,
   FCLT_SORT
)
AS
     SELECT '',
            DECODE (ins_deel_state || res_deel_state,
                    '00', 'Vrij',
                    '01', 'Vrij vergadering gepland',
                    '10', 'Bezet, geen vergadering',
                    'Bezet'),
            SUM (tmdatum - vandatum),
            '',
            ins_deel_state || res_deel_state
       FROM t_uwva_v_flexwhere_insres_vant t1
      WHERE t1.jaar =
               DECODE (TO_CHAR (SYSDATE, 'mm'),
                       1, TO_CHAR (SYSDATE, 'yyyy') - 1,
                       TO_CHAR (SYSDATE, 'yyyy'))
            AND t1.maand =
                  DECODE (TO_CHAR (SYSDATE, 'mm'),
                          1, 12,
                          TO_CHAR (SYSDATE, 'mm') - 1)
            AND t1.uur >= 9
            AND ( (t1.uur = 16 AND t1.MIN = 0) OR (t1.uur < 16))
            AND state_code <> 'A'
            AND vandatum <> tmdatum -- dezelfde timestamps uitsluiten: is mogelijk als toevallig res-tijd vanaf 09:00 of tot 16:00 met de A en B code regels
            AND TRUNC (vandatum) = TRUNC (tmdatum) -- wel op dezelfde dag,  vandatum vrijdag 16:00  en tmdatum maandag 09:00 kan toevallig worden generereerd, dus hier eruit.
            AND dagnr = 5
   GROUP BY ins_deel_state || res_deel_state;


CREATE OR REPLACE VIEW uwva_v_fwhere_pie_vrijdag_1
(
   fclt_key,
   FCLT_XAS_,
   FCLT_YAS_,
   FCLT_URL,
   FCLT_SORT
)
AS
     SELECT '',
            DECODE (ins_deel_state || res_deel_state,
                    '00', 'Vrij',
                    '01', 'Vrij vergadering gepland',
                    '10', 'Bezet, geen vergadering',
                    'Bezet'),
            SUM (tmdatum - vandatum),
            '',
            ins_deel_state || res_deel_state
       FROM t_uwva_v_flexwhere_insres_vant t1
      WHERE t1.jaar =
               DECODE (TO_CHAR (SYSDATE, 'mm'),
                       1, TO_CHAR (SYSDATE, 'yyyy') - 1,
                       TO_CHAR (SYSDATE, 'yyyy'))
            AND t1.maand =
                  DECODE (TO_CHAR (SYSDATE, 'mm'),
                          1, 12,
                          TO_CHAR (SYSDATE, 'mm') - 1)
            AND t1.uur >= 9
            AND ( (t1.uur = 16 AND t1.MIN = 0) OR (t1.uur < 16))
            AND state_code <> 'A'
            AND vandatum <> tmdatum -- dezelfde timestamps uitsluiten: is mogelijk als toevallig res-tijd vanaf 09:00 of tot 16:00 met de A en B code regels
            AND TRUNC (vandatum) = TRUNC (tmdatum) -- wel op dezelfde dag,  vandatum vrijdag 16:00  en tmdatum maandag 09:00 kan toevallig worden generereerd, dus hier eruit.
            AND dagnr = 6
   GROUP BY ins_deel_state || res_deel_state;


CREATE OR REPLACE VIEW uwva_v_fwhere_pie_maand_1
(
   fclt_key,
   FCLT_XAS_,
   FCLT_YAS_,
   FCLT_URL,
   FCLT_SORT
)
AS
     SELECT '',
            DECODE (ins_deel_state || res_deel_state,
                    '00', 'Vrij',
                    '01', 'Vrij vergadering gepland',
                    '10', 'Bezet, geen vergadering',
                    'Bezet'),
            SUM (tmdatum - vandatum),
            '',
            ins_deel_state || res_deel_state
       FROM t_uwva_v_flexwhere_insres_vant t1
      WHERE t1.jaar =
               DECODE (TO_CHAR (SYSDATE, 'mm'),
                       1, TO_CHAR (SYSDATE, 'yyyy') - 1,
                       TO_CHAR (SYSDATE, 'yyyy'))
            AND t1.maand =
                  DECODE (TO_CHAR (SYSDATE, 'mm'),
                          1, 12,
                          TO_CHAR (SYSDATE, 'mm') - 1)
            AND t1.uur >= 09
            AND ( (t1.uur = 16 AND t1.MIN = 0) OR (t1.uur < 16))
            AND state_code <> 'A'
            AND vandatum <> tmdatum -- dezelfde timestamps uitsluiten: is mogelijk als toevallig res-tijd vanaf 09:00 of tot 16:00 met de A en B code regels
            AND TRUNC (vandatum) = TRUNC (tmdatum) -- wel op dezelfde dag,  vandatum vrijdag 16:00  en tmdatum maandag 09:00 kan toevallig worden generereerd, dus hier eruit.
   GROUP BY ins_deel_state || res_deel_state;



--------------------------------------------------------------------------------------------------------------------------------------------------------------------


-- Lijngrafieken, hierin zijn de RES-gegevens niet relevant, alleen de sensor-bezetting info zit in de lijngrafiek


---------------------------------------------------------------------------------------------------------------------------------------------------------------------


--  Voorbeeld uitleg hoe deze view eruit ziet, vanuit uwva_v_flexwhere_ins_kwartier gemaakt:

--  uwva_v_flexwhere_ins_kwartier:
--  ins_deel_key, ins_deel_state, ins_deel_statedate
--  14981	FW3	    NULL	        23-6-2014 09:00:00    -> dan hier bezet (1), is inverse van volgende regel (0)
--  14981	FW3	    0	            23-6-2014 15:45:03   -> vanaf hier vrij, inverse van volgende regel (1)
--  14981	FW3	    1	            23-6-2014 15:48:28   -> etc
--  14981	FW3	    0	            23-6-2014 15:48:42
--  14981	FW3	    NULL	        23-6-2014 16:00:00   -> Hier die van de VORIGE(!!!) regel.
--- En dat wordt dan:
-- uwva_v_flexwhere_ins_vantot:
-- ins_deel_key, ins_deel_state,vandatum,           tmdatum
-- 14981	        0	            20-6-2014 16:00:00  23-6-2014 09:00:00
-- 14981	        1	            23-6-2014 09:00:00	  23-6-2014 15:45:03
-- 14981	        0	            23-6-2014 15:45:03	23-6-2014 15:48:28
-- 14981	        1	            23-6-2014 15:48:28	23-6-2014 15:48:42
-- 14981	        0	            23-6-2014 15:48:42	23-6-2014 16:00:00



CREATE OR REPLACE VIEW uwva_v_flexwhere_ins_vantot
(
   ins_deel_key,
   state_code,
   ins_deel_state,
   vandatum,
   tmdatum,
   jaar,
   maand,
   dag,
   dagnr,
   uur,
   min2
)
AS
   SELECT ins_deel_key,
          state_code,
          COALESCE (
             ABS (ins_deel_state - 1),
             (SELECT ABS (MAX (fac.safe_to_number (ins_deel_state)) - 1)
                FROM ins_deel_state_history a
               WHERE a.ins_deel_statedate =
                        (SELECT MIN (ins_deel_statedate)
                           FROM ins_deel_state_history b
                          WHERE B.INS_DEEL_KEY = t1.ins_deel_key
                                AND B.INS_DEEL_STATEDATE >=
                                      t1.INS_DEEL_STATEDATE)
                     AND a.ins_deel_key = t1.ins_deel_key),
             (SELECT MAX (fac.safe_to_number (ins_deel_state))
                FROM ins_deel_state_history a
               WHERE a.ins_deel_statedate =
                        (SELECT MAX (ins_deel_statedate)
                           FROM ins_deel_state_history b
                          WHERE B.INS_DEEL_KEY = t1.ins_deel_key
                                AND B.INS_DEEL_STATEDATE <
                                      t1.INS_DEEL_STATEDATE)
                     AND a.ins_deel_key = t1.ins_deel_key),
             0)
             ins_state,
          COALESCE (
             LAG (ins_deel_statedate, 1)
                OVER (ORDER BY ins_deel_key, ins_deel_statedate),
             TO_DATE ('01-01-2010', 'DD-MM-YYYY'))
             AS vandatum,
          ins_deel_statedate AS tmdatum,
          jaar,
          maand,
          dag,
          dagnr,
          uur,
          min2
     FROM uwva_v_flexwhere_ins_kwartier t1;



CREATE OR REPLACE VIEW uwva_v_fwhere_line_maand_1
(
   dagnr,
   tijd,
   ins_deel_state,
   delta_tijd
)
AS
     SELECT dagnr,
            uur || ':' || min2,
            ins_deel_state,
            COUNT ( * )
       FROM uwva_v_flexwhere_ins_vantot t1
      WHERE     TO_CHAR (vandatum, 'hh24') >= 9
            AND TO_CHAR (vandatum, 'hh24') < 16
            AND state_code <> 'A'
            AND vandatum <> tmdatum -- dezelfde timestamps uitsluiten: is mogelijk als toevallig res-tijd vanaf 09:00 of tot 16:00 met de A en B code regels
            AND TRUNC (vandatum) = TRUNC (tmdatum) -- wel op dezelfde dag,  vandatum vrijdag 16:00  en tmdatum maandag 09:00 kan toevallig worden generereerd, dus hier eruit.
   GROUP BY dagnr, uur || ':' || min2, ins_deel_state
   UNION ALL
     SELECT dagnr,
            uur || ':' || min2,
            ins_deel_state,
            COUNT ( * )
       FROM uwva_v_flexwhere_ins_vantot t1
      WHERE (TO_CHAR (tmdatum, 'hh24') = 16 AND TO_CHAR (tmdatum, 'mi') = 0)
            AND state_code <> 'A'
            AND vandatum <> tmdatum -- dezelfde timestamps uitsluiten: is mogelijk als toevallig res-tijd vanaf 09:00 of tot 16:00 met de A en B code regels
            AND TRUNC (vandatum) = TRUNC (tmdatum) -- wel op dezelfde dag,  vandatum vrijdag 16:00  en tmdatum maandag 09:00 kan toevallig worden generereerd, dus hier eruit.
   GROUP BY dagnr, uur || ':' || min2, ins_deel_state
   UNION ALL
     SELECT dagnr,
            uur || ':' || min2,
            ins_deel_state,
            COUNT ( * )
       FROM uwva_v_flexwhere_ins_vantot t1
      WHERE (TO_CHAR (tmdatum, 'hh24') = 9 AND TO_CHAR (tmdatum, 'mi') = 0)
            AND state_code <> 'A'
            AND vandatum <> tmdatum -- dezelfde timestamps uitsluiten: is mogelijk als toevallig res-tijd vanaf 09:00 of tot 16:00 met de A en B code regels
   --AND TRUNC(vandatum) = TRUNC(tmdatum) -- wel op dezelfde dag,  vandatum vrijdag 16:00  en tmdatum maandag 09:00 kan toevallig worden generereerd, dus hier eruit.
   GROUP BY dagnr, uur || ':' || min2, ins_deel_state;



-- View die per dag (maandag, dinsdag... vrijdag) alle kwartiertjes tussen 09:00 en 16:00 de bezetting (in kwartiertjes geteld) ten opzichte van het totaal aantal kwartiertjes

CREATE OR REPLACE VIEW uwva_v_fwhere_lgraph_maand_1
(
   dagnr,
   tijd,
   bezet,
   totaal
)
AS
     SELECT dagnr,
            tijd,
            SUM (a),
            SUM (b)
       FROM (  SELECT dagnr,
                      tijd,
                      ins_deel_state * SUM (delta_tijd) a,
                      SUM (delta_tijd) b
                 FROM uwva_v_fwhere_line_maand_1 t1
             GROUP BY dagnr, tijd, ins_deel_state)
   GROUP BY dagnr, tijd;

CREATE OR REPLACE VIEW uwva_v_fwhere_linegrap_maand_1
(
   fclt_key,
   FCLT_XAS_,
   FCLT_YAS_MAANDAG,
   FCLT_YAS2_DINSDAG,
   FCLT_YAS3_WOENSDAG,
   FCLT_YAS4_DONDERDAG,
   FCLT_YAS5_VRIJDAG,
   FCLT_URL
)
AS
   WITH XX AS (SELECT * FROM t_uwva_v_fwhere_lgraph_maand_1)
     SELECT '',
            tijd,
            (SELECT ROUND (100 * bezet / totaal, 2)
               FROM XX b
              WHERE dagnr = 2 AND b.tijd = a.tijd),
            (SELECT ROUND (100 * bezet / totaal, 2)
               FROM XX b
              WHERE dagnr = 3 AND b.tijd = a.tijd),
            (SELECT ROUND (100 * bezet / totaal, 2)
               FROM XX b
              WHERE dagnr = 4 AND b.tijd = a.tijd),
            (SELECT ROUND (100 * bezet / totaal, 2)
               FROM XX b
              WHERE dagnr = 5 AND b.tijd = a.tijd),
            (SELECT ROUND (100 * bezet / totaal, 2)
               FROM XX b
              WHERE dagnr = 6 AND b.tijd = a.tijd),
            ''
       FROM t_uwva_v_fwhere_lgraph_maand_1 a
   GROUP BY a.tijd;


CREATE OR REPLACE VIEW uwva_v_rap_flexwhere
(
   jaar,
   maand
)
AS
   SELECT DECODE (TO_CHAR (SYSDATE, 'mm'),
                  1, TO_CHAR (SYSDATE, 'yyyy') - 1,
                  TO_CHAR (SYSDATE, 'yyyy')),
          DECODE (TO_CHAR (SYSDATE, 'mm'),
                  1, 12,
                  TO_CHAR (SYSDATE, 'mm') - 1)
     FROM DUAL;

--
-- einde UWVA#29757: Flexwhere: Configuratie tbv bezettingsrapportages -------------------------------------------------------------------------------------------------------------------------
--




-- Handelsdrukwerk

CREATE OR REPLACE VIEW uwva_v_visitekaartje
(
   prs_perslid_key,
   naam,
   functie,
   gebouwcode,
   adres,
   postcode,
   plaats,
   postadres,
   postpostcode,
   postplaats,
   telefoon1,
   telefoon2,
   mobiel1,
   mobiel2,
   email,
   fax1,
   fax2
)
AS
   SELECT p.prs_perslid_key,
          DECODE (COALESCE (RTRIM (p.prs_perslid_titel), ''),
                  '', '',
                  '(' || LOWER (p.prs_perslid_titel) || ') ')
          || DECODE (COALESCE (p.prs_perslid_voornaam, ''),
                     '', '',
                     p.prs_perslid_voornaam || ' ')
          || DECODE (COALESCE (p.prs_perslid_tussenvoegsel, ''),
                     '', '',
                     p.prs_perslid_tussenvoegsel || ' ')
          || prs_perslid_naam
             naam,
          prs_srtperslid_omschrijving functie,
          pgl.alg_gebouw_code,
          l.alg_locatie_adres adres,
          l.alg_locatie_postcode postcode,
          l.alg_locatie_plaats plaats,
          l.alg_locatie_post_adres postadres,
          l.alg_locatie_post_postcode postpostcode,
          l.alg_locatie_post_plaats postplaats,
          TRIM(DECODE (
                  SUBSTR (p.prs_perslid_telefoonnr, 1, 1),
                  '(',
                  SUBSTR (p.prs_perslid_telefoonnr,
                          2,
                          INSTR (p.prs_perslid_telefoonnr, ')') - 2),
                  SUBSTR (p.prs_perslid_telefoonnr,
                          1,
                          INSTR (p.prs_perslid_telefoonnr, '-') - 1)))
             telefoon1,
          TRIM(DECODE (
                  SUBSTR (p.prs_perslid_telefoonnr, 1, 1),
                  '(',
                  SUBSTR (p.prs_perslid_telefoonnr,
                          INSTR (p.prs_perslid_telefoonnr, ')') + 1),
                  SUBSTR (p.prs_perslid_telefoonnr,
                          INSTR (p.prs_perslid_telefoonnr, '-') + 1)))
             telefoon2,
          TRIM(DECODE (
                  SUBSTR (p.prs_perslid_mobiel, 1, 1),
                  '(',
                  SUBSTR (p.prs_perslid_mobiel,
                          2,
                          INSTR (p.prs_perslid_mobiel, ')') - 2),
                  SUBSTR (p.prs_perslid_mobiel,
                          1,
                          INSTR (p.prs_perslid_mobiel, '-') - 1)))
             mobiel1,
          TRIM(DECODE (
                  SUBSTR (p.prs_perslid_mobiel, 1, 1),
                  '(',
                  SUBSTR (p.prs_perslid_mobiel,
                          INSTR (p.prs_perslid_mobiel, ')') + 1),
                  SUBSTR (p.prs_perslid_mobiel,
                          INSTR (p.prs_perslid_mobiel, '-') + 1)))
             mobiel2,
          p.prs_perslid_email email,
          TRIM(DECODE (
                  SUBSTR (kl.prs_kenmerklink_waarde, 1, 1),
                  '(',
                  SUBSTR (kl.prs_kenmerklink_waarde,
                          2,
                          INSTR (kl.prs_kenmerklink_waarde, ')') - 2),
                  SUBSTR (kl.prs_kenmerklink_waarde,
                          1,
                          INSTR (kl.prs_kenmerklink_waarde, '-') - 1)))
             fax1,
          TRIM(DECODE (
                  SUBSTR (kl.prs_kenmerklink_waarde, 1, 1),
                  '(',
                  SUBSTR (kl.prs_kenmerklink_waarde,
                          INSTR (kl.prs_kenmerklink_waarde, ')') + 1),
                  SUBSTR (kl.prs_kenmerklink_waarde,
                          INSTR (kl.prs_kenmerklink_waarde, '-') + 1)))
             fax2
     FROM prs_perslid p,
          prs_srtperslid sp,
          alg_locatie l,
          (SELECT alg_locatie_key,
                  g.alg_gebouw_key,
                  g.alg_gebouw_code,
                  prs_perslid_key
             FROM (SELECT prs_perslid_key,
                          (SELECT MAX (alg_ruimte_key)
                             FROM prs_v_perslidwerkplek_gegevens pwg
                            WHERE pwg.prs_perslid_key = pb.prs_perslid_key
                                  AND pwg.prs_perslidwerkplek_bezetting =
                                        pb.prs_perslidwerkplek_bezetting)
                             alg_ruimte_key
                     FROM (  SELECT prs_perslid_key,
                                    MAX (prs_perslidwerkplek_bezetting)
                                       prs_perslidwerkplek_bezetting
                               FROM prs_perslidwerkplek pw, prs_werkplek wp
                              WHERE pw.prs_werkplek_key = wp.prs_werkplek_key
                                    AND wp.prs_werkplek_virtueel = 0
                           GROUP BY prs_perslid_key) pb) pr,
                  alg_gebouw g,
                  alg_verdieping v,
                  alg_ruimte r
            WHERE     pr.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) pgl,
          (SELECT prs_link_key, prs_kenmerklink_waarde
             FROM prs_kenmerklink kl
            WHERE prs_kenmerk_key = 7 AND prs_kenmerklink_verwijder IS NULL)
          kl
    WHERE     p.prs_srtperslid_key = sp.prs_srtperslid_key
          AND p.prs_perslid_key = pgl.prs_perslid_key(+)
          AND pgl.alg_locatie_key = l.alg_locatie_key(+)
          AND p.prs_perslid_key = kl.prs_link_key(+);

/

CREATE OR REPLACE VIEW UWVA_V_HD_RECEIVERS
(
   PRS_PERSLID_KEY
)
AS
   SELECT fac.safe_to_number (fd.FAC_USRDATA_OMSCHR)
     FROM FAC_USRDATA fd
    WHERE fd.FAC_USRTAB_KEY = 62
          AND fd.FAC_USRDATA_UPPER LIKE 'SYS_PRS_BES_HD%';

/

CREATE OR REPLACE VIEW UWVA_V_NOTI_BES_HD
(
   CODE,
   SENDER,
   RECEIVER,
   TEXT,
   KEY,
   XKEY
)
AS
   SELECT DISTINCT
          'BESMAI',
          NULL,
          bo_hd.prs_perslid_key,
             'Retour bestelling '
          || b.bes_bestelling_key
          || '  (Reden:'
          || b.bes_bestelling_opmerking
          || ')',
          b.bes_bestelling_key,
          NULL
     FROM bes_bestelling b,
          bes_bestelling_item bi,
          bes_srtdeel sd,
          bes_srtgroep sg,
          UWVA_V_HD_RECEIVERS bo_hd
    WHERE     b.BES_BESTELLING_RETOURVAN_KEY IS NOT NULL
          AND TRUNC (b.BES_BESTELLING_DATUM) = TRUNC (SYSDATE) - 1
          -- AND to_number(to_char(b.BES_BESTELLING_DATUM,'HH24')) = to_number(to_char(sysdate,'HH24')) - 1
          AND bi.bes_bestelling_key = b.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 IN
                   (SELECT TO_NUMBER (fd.FAC_USRDATA_OMSCHR)
                      FROM FAC_USRDATA fd
                     WHERE fd.FAC_USRTAB_KEY = 62
                           AND fd.FAC_USRDATA_UPPER LIKE 'SYS_RETOUR_BES_HD%');

/


-- UWVA#555

CREATE OR REPLACE FORCE VIEW uwva_v_kz_zonder_bezoek
(
   datum,
   tijdstip,
   fclt_3d_locatie_key,
   fclt_f_locatie,
   ruimte,
   reservering,
   omschrijving,
   aangemaakt_door
)
AS
   SELECT res_rsv_ruimte_van,
          TO_CHAR (res_rsv_ruimte_van, 'HH24:MI') tijdstip,
          l.alg_locatie_key,
          alg_locatie_code,
          res_ruimte_nr,
          TO_CHAR (res_r.res_reservering_key),
          rg.res_rsv_ruimte_omschrijving,
          pf.prs_perslid_naam_full
     FROM alg_ruimte r,
          alg_verdieping v,
          alg_gebouw g,
          alg_locatie l,
          res_v_aanwezigreservering res_r,
          prs_v_perslid_fullnames pf,
          (SELECT r.res_reservering_key,
                  r.res_rsv_ruimte_key,
                  r.res_ruimte_opstel_key,
                  ro.res_ruimte_key,
                  ra.alg_ruimte_key,
                  r.res_rsv_ruimte_van,
                  r.res_rsv_ruimte_tot,
                  r.res_status_fo_key,
                  rr.res_discipline_key,
                  rr.res_ruimte_nr,
                  r.res_rsv_ruimte_omschrijving
             FROM res_rsv_ruimte r,
                  res_ruimte_opstelling ro,
                  res_ruimte rr,
                  res_alg_ruimte ra
            WHERE     r.res_rsv_ruimte_verwijder IS NULL
                  AND ra.res_alg_ruimte_verwijder IS NULL
                  AND rr.res_ruimte_verwijder IS NULL
                  AND r.res_ruimte_opstel_key = ro.res_ruimte_opstel_key
                  AND ro.res_ruimte_key = rr.res_ruimte_key
                  AND rr.res_ruimte_key = ra.res_ruimte_key) rg
    WHERE     rg.res_discipline_key IN (126, 121, 125, 122, 123, 124, 138)
          AND res_rsv_ruimte_van > SYSDATE
          AND rg.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
          AND rg.res_reservering_key = res_r.res_reservering_key
          AND fac.gettrackinguserkey ('RESNEW', rg.res_rsv_ruimte_key) =
                pf.prs_perslid_key
          AND NOT EXISTS
                (SELECT a.res_rsv_ruimte_key
                   FROM bez_afspraak a
                  WHERE a.res_rsv_ruimte_key = rg.res_rsv_ruimte_key);


CREATE OR REPLACE VIEW uwva_v_stats_users_today
(
   naam,
   ingelogd,
   rol,
   i
)
AS
   SELECT prs_perslid_naam_full,
          prs_perslid_login,
          (SELECT MIN (fac_groep_omschrijving)
             FROM fac_gebruikersgroep gg, fac_groep g
            WHERE gg.prs_perslid_key = p.prs_perslid_key
                  AND gg.fac_groep_key = g.fac_groep_key)
          || DECODE (
                (SELECT COUNT (fac_groep_omschrijving)
                   FROM fac_gebruikersgroep gg, fac_groep g
                  WHERE gg.prs_perslid_key = p.prs_perslid_key
                        AND gg.fac_groep_key = g.fac_groep_key),
                1,
                '',
                '...'),
          1
     FROM prs_perslid p, prs_v_perslid_fullnames pf
    WHERE p.prs_perslid_key = pf.prs_perslid_key
          AND TRUNC (prs_perslid_login) = TRUNC (SYSDATE);


CREATE OR REPLACE VIEW uwva_v_beheer_prs_extern
(
   locatie,
   fclt_3d_locatie_key,
   naam
)
AS
   SELECT (SELECT MIN (alg_locatie_code)
             FROM prs_v_werkplekperslid_gegevens wg, alg_locatie l
            WHERE wg.prs_perslid_key = p.prs_perslid_key
                  AND wg.alg_locatie_key = l.alg_locatie_key),
          (SELECT MIN (alg_locatie_key)
             FROM prs_v_werkplekperslid_gegevens wg
            WHERE wg.prs_perslid_key = p.prs_perslid_key),
          prs_perslid_naam_full
     FROM prs_v_aanwezigperslid p, prs_v_perslid_fullnames pf
    WHERE p.prs_perslid_key = pf.prs_perslid_key AND p.prs_perslid_nr IS NULL;


-- Rapportages

-- Wat bonusrapportages
-- Bonus: aantal personen per locatie

CREATE OR REPLACE VIEW uwva_v_stats_01_pploc
(
   locatie,
   aantal
)
AS
     SELECT l.alg_locatie_omschrijving, COUNT ( * )
       FROM prs_v_aanwezigperslid p,
            prs_werkplek wp,
            prs_perslidwerkplek pw,
            alg_ruimte r,
            alg_verdieping v,
            alg_gebouw g,
            alg_locatie l
      WHERE     pw.prs_perslid_key = p.prs_perslid_key
            AND pw.prs_werkplek_key = wp.prs_werkplek_key
            AND wp.prs_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
   GROUP BY l.alg_locatie_omschrijving
   UNION
   SELECT '[Geen locatie]', COUNT ( * )
     FROM prs_v_aanwezigperslid p, prs_perslidwerkplek pw
    WHERE pw.prs_perslid_key(+) = p.prs_perslid_key
          AND pw.prs_werkplek_key IS NULL;

-- Bonus: aantal locaties/medewerkers per servicepunt

CREATE OR REPLACE VIEW uwva_v_stats_02_plpfsp
(
   fclt_f_servicepunt,
   locaties,
   medewerkers
)
AS
     SELECT alg_district_omschrijving, COUNT ( * ), SUM (aantal)
       FROM (  SELECT d.alg_district_omschrijving,
                      l.alg_locatie_omschrijving,
                      COUNT ( * ) aantal
                 FROM prs_v_aanwezigperslid p,
                      prs_werkplek wp,
                      prs_perslidwerkplek pw,
                      alg_ruimte r,
                      alg_verdieping v,
                      alg_gebouw g,
                      alg_locatie l,
                      alg_district d
                WHERE     pw.prs_perslid_key = p.prs_perslid_key
                      AND pw.prs_werkplek_key = wp.prs_werkplek_key
                      AND wp.prs_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
                      AND l.alg_district_key = d.alg_district_key
             GROUP BY d.alg_district_omschrijving, l.alg_locatie_omschrijving
             UNION
             SELECT '[Onbekend]', '??', COUNT ( * )
               FROM prs_v_aanwezigperslid p, prs_perslidwerkplek pw
              WHERE pw.prs_perslid_key(+) = p.prs_perslid_key
                    AND pw.prs_werkplek_key IS NULL)
   GROUP BY alg_district_omschrijving;

CREATE OR REPLACE VIEW uwva_v_stats_03_bezreceptie
(
   hide_f_locatiecode,
   fclt_3d_locatie_key,
   fclt_f_locatie,
   afpraak_key,
   bezoek_voor,
   fclt_f_afspraak_datum,
   fclt_f_pool
)
AS
   SELECT l.alg_locatie_code,
          a.alg_locatie_key,
          l.alg_locatie_code,
          a.bez_afspraak_key,
          pf.prs_perslid_naam_full,
          a.bez_afspraak_datum,
          DECODE (rp.res_reservering_ispool, 1, 'Ja', 'Nee')
     FROM bez_afspraak a,
          bez_bezoekers b,
          fac_gebruikersgroep gg,
          prs_v_perslid_fullnames pf,
          alg_locatie l,
          (SELECT res_rsv_ruimte_key, res_reservering_ispool
             FROM res_reservering rr, res_rsv_ruimte rrr
            WHERE rr.res_reservering_key = rrr.res_reservering_key
                  AND rr.res_reservering_ispool = 1) rp
    WHERE     gg.fac_groep_key = 1301
          AND a.prs_perslid_key = gg.prs_perslid_key
          AND pf.prs_perslid_key = a.bez_afspraak_contact_key
          AND l.alg_locatie_key = a.alg_locatie_key
          AND rp.res_rsv_ruimte_key(+) = a.res_rsv_ruimte_key
          AND b.bez_afspraak_key = a.bez_afspraak_key;


CREATE OR REPLACE VIEW uwva_v_sp_01_mldperdistrict
(
   fclt_f_maand,
   fclt_f_servicepunt,
   fclt_f_soort,
   productgroep,
   aantal,
   fclt_3d_locatie_key
)
AS
     SELECT TO_CHAR (m.mld_melding_datum, 'YYMM'),
            d.alg_district_omschrijving,
            sv.ins_srtdiscipline_omschrijving,
            v.ins_discipline_omschrijving,
            COUNT ( * ) aantal,
            MIN (l.alg_locatie_key)
       FROM mld_melding m,
            mld_stdmelding std,
            alg_locatie l,
            alg_district d,
            ins_tab_discipline v,
            ins_srtdiscipline sv
      WHERE     m.mld_alg_locatie_key = l.alg_locatie_key(+)
            AND d.alg_district_key(+) = l.alg_district_key
            AND m.mld_stdmelding_key = std.mld_stdmelding_key
            AND std.mld_ins_discipline_key = v.ins_discipline_key
            AND sv.ins_srtdiscipline_key = v.ins_srtdiscipline_key
            AND m.mld_melding_datum > SYSDATE - 547
   GROUP BY TO_CHAR (m.mld_melding_datum, 'YYMM'),
            d.alg_district_omschrijving,
            sv.ins_srtdiscipline_omschrijving,
            v.ins_discipline_omschrijving;


CREATE OR REPLACE VIEW uwva_v_sp_02_mldperloc
(
   fclt_f_maand,
   fclt_f_servicepunt,
   locatie,
   fclt_f_soort,
   productgroep,
   aantal,
   fclt_3d_locatie_key
)
AS
     SELECT TO_CHAR (m.mld_melding_datum, 'YYMM'),
            d.alg_district_omschrijving,
            l.alg_locatie_omschrijving,
            sv.ins_srtdiscipline_omschrijving,
            v.ins_discipline_omschrijving,
            COUNT ( * ) aantal,
            MIN (l.alg_locatie_key)
       FROM mld_melding m,
            mld_stdmelding std,
            alg_locatie l,
            alg_district d,
            ins_tab_discipline v,
            ins_srtdiscipline sv
      WHERE     m.mld_alg_locatie_key = l.alg_locatie_key(+)
            AND d.alg_district_key(+) = l.alg_district_key
            AND m.mld_stdmelding_key = std.mld_stdmelding_key
            AND std.mld_ins_discipline_key = v.ins_discipline_key
            AND sv.ins_srtdiscipline_key = v.ins_srtdiscipline_key
            AND m.mld_melding_datum > SYSDATE - 547
   GROUP BY TO_CHAR (m.mld_melding_datum, 'YYMM'),
            d.alg_district_omschrijving,
            l.alg_locatie_omschrijving,
            sv.ins_srtdiscipline_omschrijving,
            v.ins_discipline_omschrijving;

CREATE OR REPLACE VIEW uwva_v_sp_04_fac_gebruikers
(
   fclt_f_servicepunt,
   fclt_f_rol,
   fclt_f_naam,
   nummer,
   profiel,
   email,
   fclt_f_pandcode,
   afdeling,
   fclt_f_kostenplaats,
   fclt_f_login,
   datum,
   fclt_3d_locatie_key
)
AS
   SELECT di.alg_district_omschrijving fclt_f_servicepunt,
          g.fac_groep_omschrijving fclt_f_rol,
          pf.prs_perslid_naam_full fclt_f_naam,
          p.prs_perslid_nr,
          pr.fac_profiel_omschrijving,
          p.prs_perslid_email email,
          w.alg_gebouw_code fclt_f_pandcode,
          d.prs_afdeling_naam afdeling,
          NVL (kp.prs_kostenplaats_nr,
               DECODE (pk.prs_perslidkostenplaats_key, NULL, '', 'Alle'))
             fclt_f_kostenplaats,
          p.prs_perslid_oslogin fclt_f_login,
          (SELECT kl.prs_kenmerklink_waarde
             FROM prs_kenmerklink kl
            WHERE kl.prs_link_key = p.prs_perslid_key
                  AND kl.prs_kenmerk_key = 1004)
             datum,
          l.alg_locatie_key
     FROM prs_perslid p,
          prs_v_perslid_fullnames pf,
          fac_gebruikersgroep gg,
          fac_groep g,
          fac_profiel pr,
          prs_v_werkplek_gegevens w,
          prs_perslidwerkplek pw,
          alg_locatie l,
          alg_district di,
          prs_perslidkostenplaats pk,
          prs_kostenplaats kp,
          prs_afdeling d
    WHERE     gg.prs_perslid_key = p.prs_perslid_key
          AND p.prs_afdeling_key = d.prs_afdeling_key
          AND g.fac_groep_key = gg.fac_groep_key
          AND p.prs_perslid_key = pf.prs_perslid_key
          AND w.prs_werkplek_key = pw.prs_werkplek_key
          AND p.prs_perslid_key = pw.prs_perslid_key
          AND w.alg_locatie_key = l.alg_locatie_key
          AND l.alg_district_key = di.alg_district_key
          AND kp.prs_kostenplaats_key(+) = pk.prs_kostenplaats_key
          AND pk.prs_perslid_key(+) = p.prs_perslid_key
          AND p.fac_profiel_key = pr.fac_profiel_key(+);

--UWVA#12455

CREATE OR REPLACE VIEW UWVA_V_SP_05_FAC_GEBRUIKERS_MW
(
   FCLT_F_SERVICEPUNT,
   ROL,
   FCLT_F_NAAM,
   NUMMER,
   PROFIEL,
   FCLT_F_EMAIL,
   FCLT_F_PANDCODE,
   KOSTENPLAATS,
   FCLT_F_LOGIN,
   DATUM,
   FCLT_3D_LOCATIE_KEY
)
AS
     SELECT DISTINCT
            di.alg_district_omschrijving fclt_f_servicepunt,
            (SELECT MIN (g.fac_groep_omschrijving)
                    || DECODE (COUNT ( * ), 1, '', '...')
               FROM fac_gebruikersgroep gg, fac_groep g
              WHERE g.fac_groep_key = gg.fac_groep_key
                    AND gg.prs_perslid_key = p.prs_perslid_key),
            pf.prs_perslid_naam_full fclt_f_naam,
            p.prs_perslid_nr,
            pr.fac_profiel_omschrijving,
            p.prs_perslid_email email,
            (SELECT MIN (w.alg_gebouw_code)
                    || DECODE (COUNT ( * ), 1, '', '...')
               FROM prs_v_werkplek_gegevens w, prs_perslidwerkplek pw
              WHERE w.prs_werkplek_key = pw.prs_werkplek_key
                    AND pw.prs_perslid_key = p.prs_perslid_key)
               fclt_f_pandcode,
            k.prs_kostenplaats_nr,
            p.prs_perslid_oslogin fclt_f_login,
            (SELECT kl.prs_kenmerklink_waarde
               FROM prs_kenmerklink kl
              WHERE kl.prs_link_key = p.prs_perslid_key
                    AND kl.prs_kenmerk_key = 1004)
               datum,
            (SELECT MIN (l.alg_locatie_key)
               FROM prs_v_werkplek_gegevens w,
                    prs_perslidwerkplek pw,
                    alg_locatie l
              WHERE     w.prs_werkplek_key = pw.prs_werkplek_key
                    AND pw.prs_perslid_key = p.prs_perslid_key
                    AND w.alg_locatie_key = l.alg_locatie_key)
               alg_locatie_key
       FROM prs_perslid p,
            prs_v_perslid_fullnames pf,
            fac_gebruikersgroep gg,
            fac_profiel pr,
            prs_v_werkplek_gegevens w,
            prs_perslidwerkplek pw,
            alg_locatie l,
            alg_district di,
            prs_afdeling d,
            prs_kostenplaats k
      WHERE     gg.prs_perslid_key = p.prs_perslid_key
            AND p.prs_perslid_key = pf.prs_perslid_key
            AND w.prs_werkplek_key = pw.prs_werkplek_key
            AND p.prs_perslid_key = pw.prs_perslid_key
            AND w.alg_locatie_key = l.alg_locatie_key
            AND l.alg_district_key = di.alg_district_key
            AND p.prs_afdeling_key = d.prs_afdeling_key
            AND k.prs_kostenplaats_key(+) = d.prs_kostenplaats_key
            AND p.fac_profiel_key = pr.fac_profiel_key(+)
   ORDER BY 1, 2, 3;

--UWVA#15946

CREATE OR REPLACE VIEW UWVA_V_SP_06_FAC_GEBRUIKERS_MW
(
   FCLT_F_SERVICEPUNT,
   FCLT_F_ROL,
   FCLT_F_NAAM,
   NUMMER,
   PROFIEL,
   EMAIL,
   PANDCODE,
   KOSTENPLAATS,
   LOGIN,
   DATUM,
   FCLT_3D_LOCATIE_KEY
)
AS
     SELECT DISTINCT
            di.alg_district_omschrijving fclt_f_servicepunt,
            g.fac_groep_omschrijving,
            pf.prs_perslid_naam_full,
            p.prs_perslid_nr,
            pr.fac_profiel_omschrijving,
            p.prs_perslid_email email,
            (SELECT MIN (w.alg_gebouw_code)
                    || DECODE (COUNT ( * ), 1, '', '...')
               FROM prs_v_werkplek_gegevens w, prs_perslidwerkplek pw
              WHERE w.prs_werkplek_key = pw.prs_werkplek_key
                    AND pw.prs_perslid_key = p.prs_perslid_key),
            k.prs_kostenplaats_nr,
            p.prs_perslid_oslogin,
            (SELECT kl.prs_kenmerklink_waarde
               FROM prs_kenmerklink kl
              WHERE kl.prs_link_key = p.prs_perslid_key
                    AND kl.prs_kenmerk_key = 1004)
               datum,
            (SELECT MIN (l.alg_locatie_key)
               FROM prs_v_werkplek_gegevens w,
                    prs_perslidwerkplek pw,
                    alg_locatie l
              WHERE     w.prs_werkplek_key = pw.prs_werkplek_key
                    AND pw.prs_perslid_key = p.prs_perslid_key
                    AND w.alg_locatie_key = l.alg_locatie_key)
               alg_locatie_key
       FROM prs_perslid p,
            prs_v_perslid_fullnames pf,
            fac_gebruikersgroep gg,
            fac_profiel pr,
            prs_v_werkplek_gegevens w,
            prs_perslidwerkplek pw,
            alg_locatie l,
            alg_district di,
            prs_afdeling d,
            prs_kostenplaats k,
            fac_groep g
      WHERE     g.fac_groep_key = gg.fac_groep_key
            AND gg.prs_perslid_key = p.prs_perslid_key
            AND p.prs_perslid_key = pf.prs_perslid_key
            AND w.prs_werkplek_key = pw.prs_werkplek_key
            AND p.prs_perslid_key = pw.prs_perslid_key
            AND w.alg_locatie_key = l.alg_locatie_key
            AND l.alg_district_key = di.alg_district_key
            AND p.prs_afdeling_key = d.prs_afdeling_key
            AND k.prs_kostenplaats_key(+) = d.prs_kostenplaats_key
            AND p.fac_profiel_key = pr.fac_profiel_key(+)
   ORDER BY 1, 2, 3;

--UWVA#15656

CREATE OR REPLACE FORCE VIEW uwva_v_imp_bes_artikel_sync
(
   FCLT_F_CatalogusNaam,
   Leverancier,
   CatDatum,
   Artikelnr,
   Groep,
   Omschrijving,
   Prijs,
   Eenheid,
   Picture,
   Orderaantal,
   Tax,
   DueDate,
   Inkoopprijs,
   Minimum,
   Staffeltabel,
   Wijzigdagen,
   Annuleerdagen,
   Opmerking
)
AS
   SELECT td.ins_discipline_omschrijving,
          b.prs_bedrijf_naam,
          TO_CHAR (td.ins_discipline_aanmaak, 'yyyymmdd'),
          sd.bes_srtdeel_nr,
          sg.bes_srtgroep_omschrijving,
          sd.bes_srtdeel_omschrijving,
          TO_CHAR (bes.getsrtdeelprijs (sd.bes_srtdeel_key, NULL)),
          sd.bes_srtdeel_eenheid,
          sd.bes_srtdeel_image,
          TO_CHAR (sd.bes_srtdeel_veelvoud),
          TO_CHAR (sd.bes_srtdeel_btw),
          TO_CHAR (sd.bes_srtdeel_vervaldatum, 'yyyymmdd'),
          TO_CHAR (bes.getsrtdeelinkprijs (sd.bes_srtdeel_key, NULL)),
          NULL,
          bs.bes_staffeltabel_naam,
          sd.bes_srtdeel_wijzigdagen,
          sd.bes_srtdeel_annuleerdagen,
          sd.bes_srtdeel_opmerking
     FROM ins_tab_discipline td,
          bes_srtgroep sg,
          bes_srtdeel sd,
          prs_bedrijf b,
          bes_staffeltabel bs
    WHERE     td.ins_discipline_module = 'BES'
          AND td.ins_discipline_verwijder IS NULL
          AND td.ins_discipline_key = sg.ins_discipline_key
          AND sg.bes_srtgroep_verwijder IS NULL
          AND sg.bes_srtgroep_key = sd.bes_srtgroep_key
          AND sd.bes_srtdeel_verwijder IS NULL
          AND sd.prs_bedrijf_key = b.prs_bedrijf_key
          AND bs.bes_staffeltabel_key(+) = sd.bes_staffeltabel_key;

-- UWVA#201

CREATE OR REPLACE VIEW uwva_v_stats_04_res_artikel
(
   fclt_f_dag,
   fclt_f_gebouwcode,
   fclt_3d_gebouw_key,
   fclt_f_voorziening,
   aantal,
   prijs_per_stuk,
   totaal,
   totaal_afgemeld
)
AS
     SELECT datum,
            (SELECT alg_gebouw_code
               FROM alg_gebouw g
              WHERE g.alg_gebouw_key = gebouw_key),
            gebouw_key,
            res_voorziening,
            SUM (aantal),
            stuksprijs,
            SUM (prijs),
            SUM (verw_prijs)
       FROM (SELECT ruimte_geg.alg_gebouw_key AS gebouw_key,
                    res_geg.res_voorziening,
                    TO_CHAR (res_geg.res_reservering_van, 'YYYY-MM-DD') datum,
                    res_geg.res_item_key,
                    res_geg.res_type categorie,
                    res_geg.aantal,
                    res_geg.stuksprijs,
                    res_geg.verw_prijs,
                    prijs
               FROM (SELECT 'C' AS res_type,
                            rrr.alg_ruimte_key AS alg_ruimte_key,
                            rrr.res_rsv_ruimte_key AS res_rsv_ruimte_key,
                            (SELECT rro.res_ruimte_key
                               FROM res_ruimte_opstelling rro
                              WHERE rro.res_ruimte_opstel_key =
                                       rrr.res_ruimte_opstel_key)
                               AS res_ruimte_key,
                            res_rsv_artikel_key AS res_item_key,
                            rrr.res_reservering_key AS res_reservering_key,
                            rra.res_rsv_artikel_levering AS res_reservering_van,
                            rra.res_rsv_artikel_aantal AS aantal,
                               LTRIM (ra.res_artikel_omschrijving)
                            || ' ('
                            || NVL (ra.res_artikel_eenheid, '')
                            || ')'
                               AS res_voorziening,
                            ra.res_discipline_key AS res_ins_discipline_key,
                            ra.res_artikel_key AS res_artikel_key,
                            rra.res_rsv_artikel_aantal * ra.res_artikel_prijs
                               AS prijs,
                            rra.res_rsv_artikel_prijs AS verw_prijs,
                            ra.res_artikel_prijs AS stuksprijs,
                            TO_NUMBER (NULL) AS rsv_ruimte_aantal
                       FROM res_v_aanwezigrsv_artikel rra,
                            res_artikel ra,
                            res_rsv_ruimte rrr
                      WHERE rra.res_artikel_key = ra.res_artikel_key
                            AND rra.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key)
                    res_geg,
                    res_v_alg_ruimte_gegevens ruimte_geg,
                    alg_locatie l
              WHERE (res_geg.alg_ruimte_key = ruimte_geg.alg_ruimte_key
                     OR (res_geg.res_ruimte_key = ruimte_geg.res_ruimte_key
                         AND ruimte_geg.alg_ruimte_key IN
                                  (SELECT MIN (alg_ruimte_key)
                                     FROM res_v_alg_ruimte_gegevens rvar
                                    WHERE rvar.res_ruimte_key =
                                             res_geg.res_ruimte_key)))
                    AND l.alg_locatie_key = ruimte_geg.alg_locatie_key)
      WHERE categorie = 'C'
   GROUP BY res_voorziening,
            stuksprijs,
            gebouw_key,
            datum;


-- SPOBILO-rapportages (UWVA#9328)
-- Basis view met SPOBILO's

CREATE OR REPLACE VIEW uwva_v_spobilo
(
   melding,
   tekst_melding,
   locatie,
   servicepunt,
   aanmaak,
   tijdsblok,
   reden_bezoek,
   soort_client,
   afdeling,
   afhandeling,
   kontakt_kcc,
   klant_geholpen,
   bsn_nummer
)
AS
     SELECT m.mld_melding_key melding,
            m.mld_melding_omschrijving tekst_melding,
            l.alg_locatie_code locatie,
            d.alg_district_omschrijving servicepunt,
            m.mld_melding_datum aanmaak,
            TO_CHAR (m.mld_melding_datum, 'HH24') tijdsblok,
            reden_bezoek,
            soort_client,
            afdeling,
            afhandeling,
            kontakt_kcc,
            klant_geholpen,
            bsn_nummer
       FROM (SELECT km.mld_melding_key m1, ud.fac_usrdata_omschr reden_bezoek
               FROM mld_kenmerkmelding km, fac_usrdata ud
              WHERE km.mld_kenmerk_key = 102                 -- 'REDEN BEZOEK'
                    AND fac.safe_to_number (km.mld_kenmerkmelding_waarde) =
                          ud.fac_usrdata_key),
            (SELECT km.mld_melding_key m2, ud.fac_usrdata_omschr soort_client
               FROM mld_kenmerkmelding km, fac_usrdata ud
              WHERE km.mld_kenmerk_key = 104                 -- 'SOORT CLIENT'
                    AND fac.safe_to_number (km.mld_kenmerkmelding_waarde) =
                          ud.fac_usrdata_key),
            (SELECT km.mld_melding_key m3, ud.fac_usrdata_omschr afdeling
               FROM mld_kenmerkmelding km, fac_usrdata ud
              WHERE km.mld_kenmerk_key = 101                     -- 'AFDELING'
                    AND fac.safe_to_number (km.mld_kenmerkmelding_waarde) =
                          ud.fac_usrdata_key),
            (SELECT km.mld_melding_key m4, ud.fac_usrdata_omschr afhandeling
               FROM mld_kenmerkmelding km, fac_usrdata ud
              WHERE km.mld_kenmerk_key = 111                  -- 'AFHANDELING'
                    AND fac.safe_to_number (km.mld_kenmerkmelding_waarde) =
                          ud.fac_usrdata_key),
            (SELECT km.mld_melding_key m5, ud.fac_usrdata_omschr kontakt_kcc
               FROM mld_kenmerkmelding km, fac_usrdata ud
              WHERE km.mld_kenmerk_key = 107                  -- 'KONTAKT KCC'
                    AND fac.safe_to_number (km.mld_kenmerkmelding_waarde) =
                          ud.fac_usrdata_key),
            (SELECT km.mld_melding_key m6, ud.fac_usrdata_omschr klant_geholpen
               FROM mld_kenmerkmelding km, fac_usrdata ud
              WHERE km.mld_kenmerk_key = 113               -- 'KLANT GEHOLPEN'
                    AND fac.safe_to_number (km.mld_kenmerkmelding_waarde) =
                          ud.fac_usrdata_key),
            (SELECT km.mld_melding_key m7,
                    km.mld_kenmerkmelding_waarde bsn_nummer
               FROM mld_kenmerkmelding km
              WHERE km.mld_kenmerk_key = 109),                        -- 'BSN'
            mld_melding m,
            --mld_stdmelding sm,
            alg_locatie l,
            alg_district d
      WHERE     m.mld_melding_key = m1(+)
            AND m.mld_melding_key = m2(+)
            AND m.mld_melding_key = m3(+)
            AND m.mld_melding_key = m4(+)
            AND m.mld_melding_key = m5(+)
            AND m.mld_melding_key = m6(+)
            AND m.mld_melding_key = m7(+)
            --AND m.mld_stdmelding_key = sm.mld_stdmelding_key
            AND m.mld_stdmelding_key = 361                      -- Registratie
            --AND sm.mld_ins_discipline_key = 165 -- SBL - SpoBiLo
            AND m.mld_alg_locatie_key = l.alg_locatie_key(+)
            AND l.alg_district_key = d.alg_district_key(+)
   ORDER BY m.mld_melding_key;

-- SPOBILO-PACKAGE

CREATE OR REPLACE PACKAGE uwva_spobilo_rap
AS
   TYPE t_cursor IS REF CURSOR;

   PROCEDURE servicepunt (user_key      IN     NUMBER,
                          p_datum_van   IN     VARCHAR2,
                          p_datum_tot   IN     VARCHAR2,
                          p_cursor         OUT t_cursor);

   PROCEDURE tijdsblok (user_key      IN     NUMBER,
                        p_datum_van   IN     VARCHAR2,
                        p_datum_tot   IN     VARCHAR2,
                        p_cursor         OUT t_cursor);

   PROCEDURE reden_bezoek (user_key      IN     NUMBER,
                           p_datum_van   IN     VARCHAR2,
                           p_datum_tot   IN     VARCHAR2,
                           p_cursor         OUT t_cursor);

   PROCEDURE soort_bezoek (user_key      IN     NUMBER,
                           p_datum_van   IN     VARCHAR2,
                           p_datum_tot   IN     VARCHAR2,
                           p_cursor         OUT t_cursor);

   PROCEDURE afdeling (user_key      IN     NUMBER,
                       p_datum_van   IN     VARCHAR2,
                       p_datum_tot   IN     VARCHAR2,
                       p_cursor         OUT t_cursor);

   PROCEDURE afhandeling (user_key      IN     NUMBER,
                          p_datum_van   IN     VARCHAR2,
                          p_datum_tot   IN     VARCHAR2,
                          p_cursor         OUT t_cursor);

   PROCEDURE kontakt_kcc (user_key      IN     NUMBER,
                          p_datum_van   IN     VARCHAR2,
                          p_datum_tot   IN     VARCHAR2,
                          p_cursor         OUT t_cursor);

   PROCEDURE klant_geholpen (user_key      IN     NUMBER,
                             p_datum_van   IN     VARCHAR2,
                             p_datum_tot   IN     VARCHAR2,
                             p_cursor         OUT t_cursor);

   PROCEDURE details (user_key      IN     NUMBER,
                      p_datum_van   IN     VARCHAR2,
                      p_datum_tot   IN     VARCHAR2,
                      p_cursor         OUT t_cursor);

   PROCEDURE details_extra (user_key      IN     NUMBER,
                            p_datum_van   IN     VARCHAR2,
                            p_datum_tot   IN     VARCHAR2,
                            p_cursor         OUT t_cursor);
END;
/

-- SPOBILO-PROCEDURES in PACKAGE BODY (1 per rapportage)

CREATE OR REPLACE PACKAGE BODY uwva_spobilo_rap
AS
   -- Aantal/percentage SPOBILO's per servicepunt
   PROCEDURE servicepunt (user_key      IN     NUMBER,
                          p_datum_van   IN     VARCHAR2, -- Let wel: formaat '16-01-2006'
                          p_datum_tot   IN     VARCHAR2,
                          p_cursor         OUT t_cursor)
   AS
      v_datum_van   DATE;
      v_datum_tot   DATE;
   BEGIN
      v_datum_van := fac.safe_to_date (p_datum_van, 'dd-mm-yyyy');
      v_datum_tot := fac.safe_to_date (p_datum_tot, 'dd-mm-yyyy');

      OPEN p_cursor FOR
           SELECT servicepunt,
                  COUNT (servicepunt) aantal,
                  ROUND (ratio_to_report (COUNT (servicepunt)) OVER () * 100,
                         2)
                     percentage
             FROM (SELECT servicepunt
                     FROM uwva_v_spobilo
                    WHERE aanmaak BETWEEN v_datum_van AND v_datum_tot)
         GROUP BY servicepunt
         ORDER BY servicepunt;
   END;

   -- Aantal/percentage SPOBILO's per tijdsblok
   PROCEDURE tijdsblok (user_key      IN     NUMBER,
                        p_datum_van   IN     VARCHAR2, -- Let wel: formaat '16-01-2006'
                        p_datum_tot   IN     VARCHAR2,
                        p_cursor         OUT t_cursor)
   AS
      v_datum_van   DATE;
      v_datum_tot   DATE;
   BEGIN
      v_datum_van := fac.safe_to_date (p_datum_van, 'dd-mm-yyyy');
      v_datum_tot := fac.safe_to_date (p_datum_tot, 'dd-mm-yyyy');

      OPEN p_cursor FOR
           SELECT tijdsblok,
                  COUNT (tijdsblok) aantal,
                  ROUND (ratio_to_report (COUNT (tijdsblok)) OVER () * 100, 2)
                     percentage
             FROM (SELECT tijdsblok
                     FROM uwva_v_spobilo
                    WHERE     aanmaak BETWEEN v_datum_van AND v_datum_tot
                          AND tijdsblok >= 8
                          AND tijdsblok <= 17
                   UNION ALL
                   SELECT '99' tijdsblok
                     FROM uwva_v_spobilo
                    WHERE aanmaak BETWEEN v_datum_van AND v_datum_tot
                          AND (tijdsblok < 8 OR tijdsblok > 17))
         GROUP BY tijdsblok
         ORDER BY tijdsblok;
   END;

   -- Aantal/percentage SPOBILO's per reden bezoek
   PROCEDURE reden_bezoek (user_key      IN     NUMBER,
                           p_datum_van   IN     VARCHAR2, -- Let wel: formaat '16-01-2006'
                           p_datum_tot   IN     VARCHAR2,
                           p_cursor         OUT t_cursor)
   AS
      v_datum_van   DATE;
      v_datum_tot   DATE;
   BEGIN
      v_datum_van := fac.safe_to_date (p_datum_van, 'dd-mm-yyyy');
      v_datum_tot := fac.safe_to_date (p_datum_tot, 'dd-mm-yyyy');

      OPEN p_cursor FOR
           SELECT reden_bezoek,
                  COUNT (reden_bezoek) aantal,
                  ROUND (ratio_to_report (COUNT (reden_bezoek)) OVER () * 100,
                         2)
                     percentage
             FROM (SELECT reden_bezoek
                     FROM uwva_v_spobilo
                    WHERE aanmaak BETWEEN v_datum_van AND v_datum_tot)
         GROUP BY reden_bezoek
         ORDER BY reden_bezoek;
   END;

   -- Aantal/percentage SPOBILO's per soort client (oorspronkelijke naam procedure ongewijzigd: soort_bezoek)
   PROCEDURE soort_bezoek (user_key      IN     NUMBER,
                           p_datum_van   IN     VARCHAR2, -- Let wel: formaat '16-01-2006'
                           p_datum_tot   IN     VARCHAR2,
                           p_cursor         OUT t_cursor)
   AS
      v_datum_van   DATE;
      v_datum_tot   DATE;
   BEGIN
      v_datum_van := fac.safe_to_date (p_datum_van, 'dd-mm-yyyy');
      v_datum_tot := fac.safe_to_date (p_datum_tot, 'dd-mm-yyyy');

      OPEN p_cursor FOR
           SELECT soort_client,
                  COUNT (soort_client) aantal,
                  ROUND (ratio_to_report (COUNT (soort_client)) OVER () * 100,
                         2)
                     percentage
             FROM (SELECT soort_client
                     FROM uwva_v_spobilo
                    WHERE aanmaak BETWEEN v_datum_van AND v_datum_tot)
         GROUP BY soort_client
         ORDER BY soort_client;
   END;

   -- Aantal/percentage SPOBILO's per afdeling
   PROCEDURE afdeling (user_key      IN     NUMBER,
                       p_datum_van   IN     VARCHAR2, -- Let wel: formaat '16-01-2006'
                       p_datum_tot   IN     VARCHAR2,
                       p_cursor         OUT t_cursor)
   AS
      v_datum_van   DATE;
      v_datum_tot   DATE;
   BEGIN
      v_datum_van := fac.safe_to_date (p_datum_van, 'dd-mm-yyyy');
      v_datum_tot := fac.safe_to_date (p_datum_tot, 'dd-mm-yyyy');

      OPEN p_cursor FOR
           SELECT afdeling,
                  COUNT (afdeling) aantal,
                  ROUND (ratio_to_report (COUNT (afdeling)) OVER () * 100, 2)
                     percentage
             FROM (SELECT afdeling
                     FROM uwva_v_spobilo
                    WHERE aanmaak BETWEEN v_datum_van AND v_datum_tot)
         GROUP BY afdeling
         ORDER BY afdeling;
   END;

   -- Aantal/percentage SPOBILO's per afhandeling
   PROCEDURE afhandeling (user_key      IN     NUMBER,
                          p_datum_van   IN     VARCHAR2, -- Let wel: formaat '16-01-2006'
                          p_datum_tot   IN     VARCHAR2,
                          p_cursor         OUT t_cursor)
   AS
      v_datum_van   DATE;
      v_datum_tot   DATE;
   BEGIN
      v_datum_van := fac.safe_to_date (p_datum_van, 'dd-mm-yyyy');
      v_datum_tot := fac.safe_to_date (p_datum_tot, 'dd-mm-yyyy');

      OPEN p_cursor FOR
           SELECT afhandeling,
                  COUNT (afhandeling) aantal,
                  ROUND (ratio_to_report (COUNT (afhandeling)) OVER () * 100,
                         2)
                     percentage
             FROM (SELECT afhandeling
                     FROM uwva_v_spobilo
                    WHERE aanmaak BETWEEN v_datum_van AND v_datum_tot)
         GROUP BY afhandeling
         ORDER BY afhandeling;
   END;

   -- Aantal/percentage SPOBILO's per "kontakt KCC" (ja/nee)
   PROCEDURE kontakt_kcc (user_key      IN     NUMBER,
                          p_datum_van   IN     VARCHAR2, -- Let wel: formaat '16-01-2006'
                          p_datum_tot   IN     VARCHAR2,
                          p_cursor         OUT t_cursor)
   AS
      v_datum_van   DATE;
      v_datum_tot   DATE;
   BEGIN
      v_datum_van := fac.safe_to_date (p_datum_van, 'dd-mm-yyyy');
      v_datum_tot := fac.safe_to_date (p_datum_tot, 'dd-mm-yyyy');

      OPEN p_cursor FOR
           SELECT kontakt_kcc,
                  COUNT (kontakt_kcc) aantal,
                  ROUND (ratio_to_report (COUNT (kontakt_kcc)) OVER () * 100,
                         2)
                     percentage
             FROM (SELECT kontakt_kcc
                     FROM uwva_v_spobilo
                    WHERE aanmaak BETWEEN v_datum_van AND v_datum_tot)
         GROUP BY kontakt_kcc
         ORDER BY kontakt_kcc;
   END;

   -- Aantal/percentage SPOBILO's per "klant geholpen"-classificatie
   PROCEDURE klant_geholpen (user_key      IN     NUMBER,
                             p_datum_van   IN     VARCHAR2, -- Let wel: formaat '16-01-2006'
                             p_datum_tot   IN     VARCHAR2,
                             p_cursor         OUT t_cursor)
   AS
      v_datum_van   DATE;
      v_datum_tot   DATE;
   BEGIN
      v_datum_van := fac.safe_to_date (p_datum_van, 'dd-mm-yyyy');
      v_datum_tot := fac.safe_to_date (p_datum_tot, 'dd-mm-yyyy');

      OPEN p_cursor FOR
           SELECT klant_geholpen,
                  COUNT (klant_geholpen) aantal,
                  ROUND (
                     ratio_to_report (COUNT (klant_geholpen)) OVER () * 100,
                     2)
                     percentage
             FROM (SELECT klant_geholpen
                     FROM uwva_v_spobilo
                    WHERE aanmaak BETWEEN v_datum_van AND v_datum_tot)
         GROUP BY klant_geholpen
         ORDER BY klant_geholpen;
   END;

   -- Aantal/percentage SPOBILO's over alle karakteristieken
   PROCEDURE details (user_key      IN     NUMBER,
                      p_datum_van   IN     VARCHAR2, -- Let wel: formaat '16-01-2006'
                      p_datum_tot   IN     VARCHAR2,
                      p_cursor         OUT t_cursor)
   AS
      v_datum_van   DATE;
      v_datum_tot   DATE;
   BEGIN
      v_datum_van := fac.safe_to_date (p_datum_van, 'dd-mm-yyyy');
      v_datum_tot := fac.safe_to_date (p_datum_tot, 'dd-mm-yyyy');

      OPEN p_cursor FOR
           SELECT locatie,
                  TO_CHAR (aanmaak, 'DD-MM-YYYY') datum,
                  tijdsblok,
                  reden_bezoek,
                  soort_client,
                  afdeling,
                  kontakt_kcc,
                  bsn_nummer,
                  afhandeling,
                  klant_geholpen
             FROM (SELECT locatie,
                          aanmaak,
                          tijdsblok,
                          reden_bezoek,
                          soort_client,
                          afdeling,
                          afhandeling,
                          kontakt_kcc,
                          klant_geholpen,
                          bsn_nummer
                     FROM uwva_v_spobilo
                    WHERE     aanmaak BETWEEN v_datum_van AND v_datum_tot
                          AND tijdsblok >= 8
                          AND tijdsblok <= 17
                   UNION ALL
                   SELECT locatie,
                          aanmaak,
                          '99' tijdsblok,
                          reden_bezoek,
                          soort_client,
                          afdeling,
                          afhandeling,
                          kontakt_kcc,
                          klant_geholpen,
                          bsn_nummer
                     FROM uwva_v_spobilo
                    WHERE aanmaak BETWEEN v_datum_van AND v_datum_tot
                          AND (tijdsblok < 8 OR tijdsblok > 17))
         ORDER BY locatie,
                  TO_CHAR (aanmaak, 'DD-MM-YYYY'),
                  tijdsblok,
                  reden_bezoek,
                  soort_client,
                  afdeling,
                  kontakt_kcc,
                  bsn_nummer,
                  afhandeling,
                  klant_geholpen;
   END;

   -- Aantal/percentage SPOBILO's over alle karakteristieken
   PROCEDURE details_extra (user_key      IN     NUMBER,
                            p_datum_van   IN     VARCHAR2, -- Let wel: formaat '16-01-2006'
                            p_datum_tot   IN     VARCHAR2,
                            p_cursor         OUT t_cursor)
   AS
      v_datum_van   DATE;
      v_datum_tot   DATE;
   BEGIN
      v_datum_van := fac.safe_to_date (p_datum_van, 'dd-mm-yyyy');
      v_datum_tot := fac.safe_to_date (p_datum_tot, 'dd-mm-yyyy');

      OPEN p_cursor FOR
           SELECT locatie,
                  TO_CHAR (aanmaak, 'DD-MM-YYYY') datum,
                  tijdsblok,
                  reden_bezoek,
                  soort_client,
                  afdeling,
                  kontakt_kcc,
                  bsn_nummer,
                  afhandeling,
                  klant_geholpen,
                  tekst_melding
             FROM (SELECT locatie,
                          aanmaak,
                          tijdsblok,
                          reden_bezoek,
                          soort_client,
                          afdeling,
                          afhandeling,
                          kontakt_kcc,
                          klant_geholpen,
                          bsn_nummer,
                          tekst_melding
                     FROM uwva_v_spobilo
                    WHERE     aanmaak BETWEEN v_datum_van AND v_datum_tot
                          AND tijdsblok >= 8
                          AND tijdsblok <= 17
                          AND tekst_melding IS NOT NULL
                   UNION ALL
                   SELECT locatie,
                          aanmaak,
                          '99' tijdsblok,
                          reden_bezoek,
                          soort_client,
                          afdeling,
                          afhandeling,
                          kontakt_kcc,
                          klant_geholpen,
                          bsn_nummer,
                          tekst_melding
                     FROM uwva_v_spobilo
                    WHERE     aanmaak BETWEEN v_datum_van AND v_datum_tot
                          AND tekst_melding IS NOT NULL
                          AND (tijdsblok < 8 OR tijdsblok > 17))
         ORDER BY locatie,
                  TO_CHAR (aanmaak, 'DD-MM-YYYY'),
                  tijdsblok,
                  reden_bezoek,
                  soort_client,
                  afdeling,
                  kontakt_kcc,
                  bsn_nummer,
                  afhandeling,
                  klant_geholpen;
   END;
END;
/


CREATE OR REPLACE PACKAGE UWVA_P_EXPORT
AS
   FUNCTION escape_str (p_str IN VARCHAR2)
      RETURN VARCHAR2;
END;
/

CREATE OR REPLACE PACKAGE BODY UWVA_P_EXPORT
AS
   FUNCTION escape_str (p_str IN VARCHAR2)
      RETURN VARCHAR2
   IS
      v_result   VARCHAR2 (4000);
   BEGIN
      SELECT SUBSTR (
                REPLACE (
                   REPLACE (
                      REPLACE (REPLACE (p_str, CHR (10), ' '), CHR (13), ' '),
                      CHR (128),
                      'EUR'),
                   '"',
                   ''''),
                1,
                4000)
        INTO v_result
        FROM DUAL
       WHERE 1 = 1;

      RETURN v_result;
   EXCEPTION
      WHEN OTHERS
      THEN
         RETURN p_str;
   END escape_str;
END;
/



CREATE OR REPLACE VIEW uwva_v_export_qlikview_melding
(
   result,
   result_order
)
AS
   SELECT    '"meldingnummer"'
          || ';"alg_district_omschrijving"'
          || ';"locatie"'
          || ';"locatie_omschrijving"'
          || ';"kostenplaats"'
          || ';"kostenplaats_oms"'
          || ';"melder"'
          || ';"invoerder"'
          || ';"mldacp_user"'
          || ';"soortmelding"'
          || ';"soortmelding_key"'
          || ';"productgroep"'
          || ';"productgroep_key"'
          || ';"behandelgroep"'
          || ';"subproductgroep"'
          || ';"subproductgroep_key"'
          || ';"status"'
          || ';"auto_opdr_mogelijk"'
          || ';"sla_acpuren"'
          || ';"sla_werkdgn"'
          || ';"plan_uitvoertijd"'
          || ';"ingediend_datum"'
          || ';"ingediend_tijd"'
          || ';"opgepakt_datum"'
          || ';"opgepakt_tijd"'
          || ';"sla_acceptatie_gereed"'
          || ';"sla_uitvoering_gereed"'
          || ';"afgemeld"'
          || ';"mldacp_doorlooptijd"'
          || ';"doorlooptijd_werkdgn"'
          || ';"omschrijving"'
          || ';"opmerking"'
          --gaat niet door|| ';"grondslag"'
          --gaat niet door|| ';"vervolg"'
          || ';"opdracht_volgnummer"'
          || ';"opdracht_status"'
          || ';"opdracht_automatisch"'
          || ';"opdracht_duur_gepland"'
          || ';"ordacp_user"'
          || ';"opdracht_datum"'
          || ';"opdracht_afgemeld"'
          || ';"opdracht_doorlooptijd"'
          || ';"opdracht_omschrijving"'
          || ';"opdracht_opmerking"'
          || ';"opdracht_uitvoerende"'
          || ';"opdracht_contract"'
          || ';"opdracht_contactpersoon"'
          || ';"opdracht_uren"'
          || ';"opdracht_correctie"'
          || ';"opdracht_materiaal"'
          || ';"opdracht_uurtarief"'
          || ';"opdracht_kosten"'
          || ';',
          '00000000'
     FROM DUAL
   UNION ALL
   SELECT SUBSTR (
                '"'
             || TO_CHAR (meldingnummer)
             || '";"'
             || alg_district_omschrijving
             || '";"'
             || locatie
             || '";"'
             || locatie_omschrijving
             || '";"'
             || kostenplaats
             || '";"'
             || kostenplaats_oms
             || '";"'
             || melder
             || '";"'
             || invoerder
             || '";"'
             || NVL (
                   (SELECT prs_perslid_naam_full
                      FROM prs_v_perslid_fullnames_all pf
                     WHERE pf.prs_perslid_key = opgepakt.prs_perslid_key
                           AND opgepakt.fac_srtnotificatie_key IN (17, 22)),
                   '<NULL>')
             || '";"'
             || soortmelding
             || '";"'
             || soortmelding_key
             || '";"'
             || productgroep
             || '";"'
             || productgroep_key
             || '";"'
             || behandelgroep
             || '";"'
             || subproductgroep
             || '";"'
             || subproductgroep_key
             || '";"'
             || status
             || '";"'
             || auto_opdr_mogelijk
             || '";"'
             || sla_acpuren
             || '";"'
             || sla_werkdgn
             || '";"'
             || plan_uitvoertijd
             || '";"'
             || NVL (TO_CHAR (ingediend.fac_tracking_datum, 'YYYY-MM-DD'),
                     '<NULL>')
             || '";"'
             || NVL (TO_CHAR (ingediend.fac_tracking_datum, 'HH24:MI:SS'),
                     '<NULL>')
             || '";"'
             || NVL (TO_CHAR (opgepakt.fac_tracking_datum, 'YYYY-MM-DD '),
                     '<NULL>')
             || '";"'
             || NVL (TO_CHAR (opgepakt.fac_tracking_datum, 'HH24:MI:SS'),
                     '<NULL>')
             || '";"'
             || NVL (
                   TO_CHAR (mld_melding_acceptdatum_std,
                            'YYYY-MM-DD HH24:MI:SS'),
                   '<NULL>')
             || '";"'
             || NVL (
                   TO_CHAR (mld_melding_einddatum_std,
                            'YYYY-MM-DD HH24:MI:SS'),
                   '<NULL>')
             || '";"'
             || afgemeld
             || '";"'
             || DECODE (
                   opgepakt.fac_srtnotificatie_key,
                   17,
                   TO_CHAR(FLOOR(uwva.bepaal_uwv_doorlooptijd (
                                    ingediend.fac_tracking_datum,
                                    opgepakt.fac_tracking_datum)))
                   || ':'
                   || TO_CHAR(MOD (
                                 ROUND (
                                    uwva.bepaal_uwv_doorlooptijd (
                                       ingediend.fac_tracking_datum,
                                       opgepakt.fac_tracking_datum)
                                    * 60,
                                    0),
                                 60)),
                   '<NULL>')
             || '";"'
             || doorlooptijd_werkdgn
             || '";"'
             || SUBSTR (uwva_p_export.escape_str (omschrijving), 1, 768)
             || '";"'
             || SUBSTR (uwva_p_export.escape_str (opmerking), 1, 768)
             || '";"'
             --gaat niet door|| NVL (TO_CHAR (grondslag), '<NULL>')
             --gaat niet door|| '";"'
             --gaat niet door|| NVL (TO_CHAR (vervolg), '<NULL>')
             --gaat niet door|| '";"'
             || opdracht_volgnummer
             || '";"'
             || opdracht_status
             || '";"'
             --|| opdracht_automatisch
             || DECODE (
                   SIGN( ( (COALESCE (ordnew.fac_tracking_datum, SYSDATE)
                            - ingediend.fac_tracking_datum)
                          * 24
                          * 60
                          * 60)
                        - 7),
                   -1,                       -- <= 6 sec., dan door FACILITOR?
                   'J',
                   'N')
             || '";"'
             || opdracht_duur_gepland
             || '";"'
             || NVL ( (SELECT prs_perslid_naam_full
                         FROM prs_v_perslid_fullnames_all pf
                        WHERE pf.prs_perslid_key = ordacp.prs_perslid_key),
                     '<NULL>')
             || '";"'
             || opdracht_datum
             || '";"'
             || opdracht_afgemeld
             || '";"'
             || opdracht_doorlooptijd
             || '";"'
             || SUBSTR (uwva_p_export.escape_str (opdracht_omschrijving),
                        1,
                        768)
             || '";"'
             || SUBSTR (uwva_p_export.escape_str (opdracht_opmerking),
                        1,
                        768)
             || '";"'
             || opdracht_uitvoerende
             || '";"'
             || opdracht_contract
             || '";"'
             || opdracht_contactpersoon
             || '";"'
             || opdracht_uren
             || '";"'
             || opdracht_correctie
             || '";"'
             || opdracht_materiaal
             || '";"'
             || opdracht_uurtarief
             || '";"'
             || opdracht_kosten
             || '"',
             1,
             4000),
          TO_CHAR (meldingnummer, 'FM00000009') || '/' || opdracht_volgnummer
     FROM (SELECT m.mld_melding_key meldingnummer,
                  NVL (alg_district_omschrijving, '<NULL>')
                     alg_district_omschrijving,
                  NVL (alg_locatie_code, '<NULL>') locatie,
                  NVL (alg_locatie_omschrijving, '<NULL>')
                     locatie_omschrijving,
                  NVL (
                     (SELECT k.prs_kostenplaats_nr
                        FROM prs_kostenplaats k
                       WHERE k.prs_kostenplaats_key = m.prs_kostenplaats_key),
                     '<NULL>')
                     kostenplaats,
                  NVL (
                     (SELECT k.prs_kostenplaats_omschrijving
                        FROM prs_kostenplaats k
                       WHERE k.prs_kostenplaats_key = m.prs_kostenplaats_key),
                     '<NULL>')
                     kostenplaats_oms,
                  NVL ( (SELECT prs_perslid_naam_full
                           FROM prs_v_perslid_fullnames_all pf
                          WHERE pf.prs_perslid_key = m.prs_perslid_key),
                       '<NULL>')
                     melder,
                  NVL (
                     (SELECT prs_perslid_naam_full
                        FROM prs_v_perslid_fullnames_all pf
                       WHERE pf.prs_perslid_key =
                                fac.gettrackinguserkey ('MLDNEW',
                                                        m.mld_melding_key)),
                     '<NULL>')
                     invoerder,
                  NVL (sd.ins_srtdiscipline_omschrijving, '<NULL>')
                     soortmelding,
                  TO_CHAR (sd.ins_srtdiscipline_key) soortmelding_key,
                  NVL (md.ins_discipline_omschrijving, '<NULL>') productgroep,
                  TO_CHAR (md.ins_discipline_key) productgroep_key,
                  NVL (bg.mld_behandelgroep_naam, '<NULL>') behandelgroep,
                  NVL (s.mld_stdmelding_omschrijving, '<NULL>')
                     subproductgroep,
                  TO_CHAR (s.mld_stdmelding_key) subproductgroep_key,
                  (SELECT mld_statuses_omschrijving
                     FROM mld_statuses sta
                    WHERE sta.mld_statuses_key = m.mld_melding_status)
                     status,
                  DECODE (s.mld_stdmelding_autoorder, 1, 'J', 'N')
                     auto_opdr_mogelijk,
                  CASE    -- Aanname uren, anders <NULL>; tzt. nader afstemmen
                     WHEN m.mld_melding_t_accepttijd.eenheid = 'U'
                     THEN
                        TO_CHAR (m.mld_melding_t_accepttijd.tijdsduur)
                     ELSE
                        '<NULL>'
                  END
                     sla_acpuren,
                  CASE   -- Aanname dagen, anders <NULL>; tzt. nader afstemmen
                     WHEN m.mld_melding_t_accepttijd.eenheid = 'D'
                     THEN
                        TO_CHAR (m.mld_melding_t_uitvoertijd.tijdsduur)
                     ELSE
                        '<NULL>'
                  END
                     sla_werkdgn,
                  m.mld_melding_acceptdatum_std,
                  m.mld_melding_einddatum_std,
                  NVL (
                     TO_CHAR(fac.count_work_days (m.mld_melding_datum,
                                                  m.mld_melding_einddatum)),
                     '<NULL>')
                     plan_uitvoertijd,
                  NVL (
                     TO_CHAR (
                        fac.gettrackingdate ('MLDAFM', m.mld_melding_key),
                        'YYYY-MM-DD'),
                     NVL (
                        TO_CHAR (
                           fac.gettrackingdate ('MLDREJ', m.mld_melding_key),
                           'YYYY-MM-DD'),
                        '<OPEN>'))
                     afgemeld,
                  NVL (
                     TO_CHAR(fac.count_work_days (
                                m.mld_melding_datum,
                                NVL (
                                   fac.gettrackingdate ('MLDAFM',
                                                        m.mld_melding_key),
                                   fac.gettrackingdate ('MLDREJ',
                                                        m.mld_melding_key)))),
                     '<NULL>')
                     doorlooptijd_werkdgn,
                  NVL (m.mld_melding_omschrijving, '<NULL>') omschrijving,
                  NVL (m.mld_melding_opmerking, '<NULL>') opmerking,
                  --m.mld_melding_start_key grondslag,
                  --(SELECT   MIN (mld_melding_key)
                  --   FROM   mld_melding
                  --  WHERE   mld_melding_key =
                  --             m.mld_melding_start_key)
                  --   vervolg,
                  o.mld_opdr_key,
                  NVL (TO_CHAR (o.mld_opdr_bedrijfopdr_volgnr), '<NULL>')
                     opdracht_volgnummer,
                  NVL (
                     (SELECT mld_statusopdr_omschrijving
                        FROM mld_statusopdr sta
                       WHERE sta.mld_statusopdr_key = o.mld_statusopdr_key),
                     '<NULL>')
                     opdracht_status,
                  --DECODE (o.mld_opdr_datumbegin,
                  --        NULL, '<NULL>',
                  --        m.mld_melding_datum, 'J',
                  --        'N')
                  --   opdracht_automatisch,
                  NVL (
                     TO_CHAR(fac.count_work_days (o.mld_opdr_datumbegin,
                                                  o.mld_opdr_einddatum)),
                     '<NULL>')
                     opdracht_duur_gepland,
                  NVL (TO_CHAR (o.mld_opdr_datumbegin, 'YYYY-MM-DD'),
                       '<NULL>')
                     opdracht_datum,
                  NVL (
                     TO_CHAR (fac.gettrackingdate ('ORDAFM', o.mld_opdr_key),
                              'YYYY-MM-DD'),
                     DECODE (o.mld_opdr_key, NULL, '<NULL>', '<OPEN>'))
                     opdracht_afgemeld,
                  NVL (
                     TO_CHAR(fac.count_work_days (
                                o.mld_opdr_datumbegin,
                                fac.gettrackingdate ('ORDAFM',
                                                     o.mld_opdr_key))),
                     '<NULL>')
                     opdracht_doorlooptijd,
                  NVL (o.mld_opdr_omschrijving, '<NULL>')
                     opdracht_omschrijving,
                  NVL (o.mld_opdr_opmerking, '<NULL>') opdracht_opmerking,
                  NVL (
                     (SELECT naam
                        FROM mld_v_uitvoerende u
                       WHERE u.mld_uitvoerende_key = o.mld_uitvoerende_keys),
                     '<NULL>')
                     opdracht_uitvoerende,
                  '<NULL>' opdracht_contract,
                  '<NULL>' opdracht_contactpersoon,
                  NVL (
                     REPLACE (TO_CHAR (o.mld_opdr_uren, '9999990.99'),
                              '.',
                              ','),
                     '<NULL>')
                     opdracht_uren,
                  NVL (
                     REPLACE (
                        TO_CHAR (
                             o.mld_opdr_kosten
                           - o.mld_opdr_materiaal
                           - (o.mld_opdr_uren * o.mld_opdr_uurloon),
                           '9999990.99'),
                        '.',
                        ','),
                     '<NULL>')
                     opdracht_correctie,
                  NVL (
                     REPLACE (TO_CHAR (o.mld_opdr_materiaal, '9999990.99'),
                              '.',
                              ','),
                     '<NULL>')
                     opdracht_materiaal,
                  NVL (
                     REPLACE (TO_CHAR (o.mld_opdr_uurloon, '9999990.99'),
                              '.',
                              ','),
                     '<NULL>')
                     opdracht_uurtarief,
                  NVL (
                     REPLACE (TO_CHAR (o.mld_opdr_kosten, '9999990.99'),
                              '.',
                              ','),
                     '<NULL>')
                     opdracht_kosten
             FROM mld_melding m,
                  mld_stdmelding s,
                  mld_discipline md,
                  mld_disc_params mdp,
                  mld_behandelgroep bg,
                  ins_srtdiscipline sd,
                  alg_locatie l,
                  alg_district d,
                  mld_opdr o
            WHERE     m.mld_stdmelding_key = s.mld_stdmelding_key
                  AND s.mld_ins_discipline_key = md.ins_discipline_key
                  AND md.ins_discipline_key = mdp.mld_ins_discipline_key
                  AND mdp.mld_behandelgroep_key = bg.mld_behandelgroep_key(+)
                  AND md.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
                  AND m.mld_alg_locatie_key = l.alg_locatie_key(+)
                  AND l.alg_district_key = d.alg_district_key
                  AND m.mld_melding_key = o.mld_melding_key(+)) rs
          LEFT JOIN                                                  -- MLDNEW
                   fac_tracking ingediend
             ON rs.meldingnummer = ingediend.fac_tracking_refkey
                AND ingediend.fac_srtnotificatie_key = 21
          LEFT JOIN                                    -- MLDACP/MLDAFM/MLDREJ
                    (SELECT t.*
                       FROM fac_tracking t
                      WHERE t.fac_srtnotificatie_key IN (17, 18, 22)
                            AND t.fac_tracking_key IN
                                     (SELECT MIN (fac_tracking_key)
                                        FROM fac_tracking
                                       WHERE fac_srtnotificatie_key IN
                                                   (17, 18, 22)
                                             AND fac_tracking_refkey =
                                                   t.fac_tracking_refkey))
                    opgepakt
             ON rs.meldingnummer = opgepakt.fac_tracking_refkey
          LEFT JOIN                                                  -- ORDNEW
                   fac_tracking ordnew
             ON rs.mld_opdr_key = ordnew.fac_tracking_refkey
                AND ordnew.fac_srtnotificatie_key = 125
          LEFT JOIN                                                  -- ORDACP
                    (SELECT t.*
                       FROM fac_tracking t
                      WHERE t.fac_srtnotificatie_key = 146
                            AND t.fac_tracking_key IN
                                     (SELECT MIN (fac_tracking_key)
                                        FROM fac_tracking
                                       WHERE fac_srtnotificatie_key = 146
                                             AND fac_tracking_refkey =
                                                   t.fac_tracking_refkey))
                    ordacp
             ON rs.mld_opdr_key = ordacp.fac_tracking_refkey;

CREATE OR REPLACE VIEW uwva_v_export_qv_klachtbeoord
(
   RESULT,
   result_order
)
AS
   SELECT '"meldingnummer";"klachtbeoordeling"', 0 FROM DUAL
   UNION ALL
   SELECT '"' || m.mld_melding_key || '";"' || ud.FAC_USRDATA_OMSCHR || '"',
          1
     FROM mld_srtkenmerk sk,
          fac_kenmerkdomein rsk,
          fac_usrtab ut,
          fac_usrdata ud,
          mld_kenmerk km,
          mld_kenmerkmelding kmm,
          mld_melding m
    WHERE     sk.mld_srtkenmerk_key = 461
          AND rsk.fac_kenmerkdomein_key = sk.fac_kenmerkdomein_key
          AND ut.fac_usrtab_key = rsk.fac_usrtab_key
          AND ud.fac_usrtab_key = rsk.fac_usrtab_key
          AND km.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
          AND kmm.mld_kenmerk_key = km.mld_kenmerk_key
          AND fac.safe_to_number (kmm.mld_kenmerkmelding_waarde) =
                ud.fac_usrdata_key
          AND m.MLD_MELDING_KEY = kmm.MLD_MELDING_KEY;

/

CREATE OR REPLACE VIEW uwva_v_export_qv_klachtcatgor
(
   RESULT,
   result_order
)
AS
   SELECT '"meldingnummer";"klachtcategorie"', 0 FROM DUAL
   UNION ALL
   SELECT '"' || m.mld_melding_key || '";"' || ud.FAC_USRDATA_OMSCHR || '"',
          1
     FROM mld_srtkenmerk sk,
          fac_kenmerkdomein rsk,
          fac_usrtab ut,
          fac_usrdata ud,
          mld_kenmerk km,
          mld_kenmerkmelding kmm,
          mld_melding m
    WHERE     sk.mld_srtkenmerk_key = 621
          AND rsk.fac_kenmerkdomein_key = sk.fac_kenmerkdomein_key
          AND ut.fac_usrtab_key = rsk.fac_usrtab_key
          AND ud.fac_usrtab_key = rsk.fac_usrtab_key
          AND km.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
          AND kmm.mld_kenmerk_key = km.mld_kenmerk_key
          AND fac.safe_to_number (kmm.mld_kenmerkmelding_waarde) =
                ud.fac_usrdata_key
          AND m.MLD_MELDING_KEY = kmm.MLD_MELDING_KEY;

/

CREATE OR REPLACE VIEW uwva_v_export_qv_vertaalwerk
(
   RESULT,
   result_order
)
AS
   SELECT '"meldingnummer";"van";"naar";"nationaliteit"', 0 FROM DUAL
   UNION ALL
   SELECT '"' || m.mld_melding_key || '";"'
          || -- Brontaal
             (SELECT fd.fac_usrdata_omschr
                FROM mld_kenmerkmelding k1, fac_usrdata fd
               WHERE     k1.mld_melding_key = m.mld_melding_key
                     AND k1.mld_kenmerk_key = 706              -- vertalen van
                     AND fd.fac_usrtab_key = 401
                     AND fac.safe_to_number (k1.mld_kenmerkmelding_waarde) =
                           fd.fac_usrdata_key)
          || '";"'
          || -- Doeltaal
             (SELECT fd.fac_usrdata_omschr
                FROM mld_kenmerkmelding k1, fac_usrdata fd
               WHERE     k1.mld_melding_key = m.mld_melding_key
                     AND k1.mld_kenmerk_key = 707             -- vertalen naar
                     AND fd.fac_usrtab_key = 401
                     AND fac.safe_to_number (k1.mld_kenmerkmelding_waarde) =
                           fd.fac_usrdata_key)
          || '";"'
          || -- Nationaliteit
             (SELECT fd.fac_usrdata_omschr
                FROM mld_kenmerkmelding k1, fac_usrdata fd
               WHERE     k1.mld_melding_key = m.mld_melding_key
                     AND k1.mld_kenmerk_key = 821             -- nationaliteit
                     AND fd.fac_usrtab_key = 441
                     AND fac.safe_to_number (k1.mld_kenmerkmelding_waarde) =
                           fd.fac_usrdata_key)
          || '"',
          1
     FROM mld_melding m
    WHERE m.mld_stdmelding_key = 1301;

/

CREATE OR REPLACE VIEW uwva_v_export_qv_mld_objecten
(
   RESULT,
   result_order
)
AS
   SELECT '"meldingnummer";"discipline";"discipline_key";"groep";"groep_key";"objectsoort";"objectsoort_key";"object";"object_key"',
          0
     FROM DUAL
   UNION ALL
   SELECT    '"'
          || m.mld_melding_key
          || '";"'
          || dis.ins_discipline_omschrijving
          || '";"'
          || dis.ins_discipline_key
          || '";"'
          || sg.ins_srtgroep_omschrijving
          || '";"'
          || sg.ins_srtgroep_key
          || '";"'
          || sd.ins_srtdeel_omschrijving
          || '";"'
          || sd.ins_srtdeel_key
          || '";"'
          || d.ins_deel_omschrijving
          || '";"'
          || d.ins_deel_key
          || '"',
          1
     FROM mld_melding_object m,
          ins_deel d,
          ins_srtdeel sd,
          ins_srtgroep sg,
          ins_tab_discipline dis
    WHERE     m.mld_melding_object_verwijder IS NULL
          AND m.ins_deel_key = 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 = dis.ins_discipline_key;

/

CREATE OR REPLACE VIEW uwva_v_export_qlikview_contr
(
   RESULT,
   result_order
)
AS
   SELECT '"INTERNNR";"EXTERNNR";"BESCHRIJVING";"CONTRACTSOORT";"TYPECONTRACT";"INGANGSDATUM";"RAPPELDATUM";'
          || '"RAPPELTERMIJN";"OPZEGDATUM";"OPZEGTERMIJN";"EINDDATUM";"EIGENAAR";"BEHEERDER";"UITVOERDER";"CONTACTPERSOON";'
          || '"KOSTENPLAATS";"TERMIJNBEDRAG";"CONTRACTBEDRAG";"LOCATIE_CODE";"GEBOUW_CODE"',
          0
     FROM DUAL
   UNION ALL
   SELECT    '"'
          || INTERNNR
          || '";"'
          || EXTERNNR
          || '";"'
          || BESCHRIJVING
          || '";"'
          || CONTRACTSOORT
          || '";"'
          || TYPECONTRACT
          || '";"'
          || INGANGSDATUM
          || '";"'
          || RAPPELDATUM
          || '";'
          || '"'
          || RAPPELTERMIJN
          || '";"'
          || OPZEGDATUM
          || '";"'
          || OPZEGTERMIJN
          || '";"'
          || EINDDATUM
          || '";"'
          || EIGENAAR
          || '";"'
          || BEHEERDER
          || '";"'
          || UITVOERDER
          || '";"'
          || CONTACTPERSOON
          || '";'
          || '"'
          || KOSTENPLAATS
          || '";"'
          || TERMIJNBEDRAG
          || '";"'
          || CONTRACTBEDRAG
          || '";"'
          || LOCATIE_CODE
          || '";"'
          || GEBOUW_CODE
          || '"',
          1
     FROM CNT_V_QVW_ALGEMEEN;

/

CREATE OR REPLACE VIEW uwva_v_export_qlikview_bedrijf
(
   RESULT,
   result_order
)
AS
   SELECT '"PRS_BEDRIJF_KEY";"PRS_BEDRIJF_NAAM";"PRS_BEDRIJF_NAAM_UPPER";"PRS_BEDRIJF_POST_ADRES";"PRS_BEDRIJF_POST_POSTCODE";'
          || '"PRS_BEDRIJF_POST_PLAATS";"PRS_BEDRIJF_POST_LAND";"PRS_BEDRIJF_BEZOEK_ADRES";"PRS_BEDRIJF_BEZOEK_POSTCODE";"PRS_BEDRIJF_BEZOEK_PLAATS";'
          || '"PRS_BEDRIJF_BEZOEK_LAND";"PRS_BEDRIJF_TELEFOON";"PRS_BEDRIJF_FAX";"PRS_BEDRIJF_TELEFOON2";"PRS_BEDRIJF_CONTACT_PERSOON";'
          || '"PRS_BEDRIJF_CONTACT_TELEFOON";"PRS_BEDRIJF_CONTACT_FAX";"PRS_BEDRIJF_OPMERKING";"PRS_BEDRIJF_OPMERKING2";"PRS_BEDRIJF_UURLOON";'
          || '"PRS_LEVERANCIER_NR";"PRS_OVEREENKOMST_NR";"PRS_OVEREENKOMST_DATUM";"PRS_BEDRIJF_AANMAAK";"PRS_BEDRIJF_VERWIJDER";'
          || '"PRS_BEDRIJF_LEVERANCIER";"PRS_BEDRIJF_UITVOERENDE";"PRS_BEDRIJF_CONTRACT";"PRS_BEDRIJF_INTERN";"PRS_BEDRIJF_HUURDER";'
          || '"PRS_BEDRIJF_EMAIL";"PRS_BEDRIJF_INGIDS"',
          0
     FROM DUAL
   UNION ALL
   SELECT    '"'
          || PRS_BEDRIJF_KEY
          || '";"'
          || PRS_BEDRIJF_NAAM
          || '";"'
          || PRS_BEDRIJF_NAAM_UPPER
          || '";"'
          || PRS_BEDRIJF_POST_ADRES
          || '";"'
          || PRS_BEDRIJF_POST_POSTCODE
          || '";"'
          || PRS_BEDRIJF_POST_PLAATS
          || '";"'
          || PRS_BEDRIJF_POST_LAND
          || '";"'
          || PRS_BEDRIJF_BEZOEK_ADRES
          || '";"'
          || PRS_BEDRIJF_BEZOEK_POSTCODE
          || '";"'
          || PRS_BEDRIJF_BEZOEK_PLAATS
          || '";"'
          || PRS_BEDRIJF_BEZOEK_LAND
          || '";"'
          || PRS_BEDRIJF_TELEFOON
          || '";"'
          || PRS_BEDRIJF_FAX
          || '";"'
          || PRS_BEDRIJF_TELEFOON2
          || '";"'
          || PRS_BEDRIJF_CONTACT_PERSOON
          || '";"'
          || PRS_BEDRIJF_CONTACT_TELEFOON
          || '";"'
          || PRS_BEDRIJF_CONTACT_FAX
          || '";"'
          || PRS_BEDRIJF_OPMERKING
          || '";"'
          || PRS_BEDRIJF_OPMERKING2
          || '";"'
          || PRS_BEDRIJF_UURLOON
          || '";"'
          || PRS_LEVERANCIER_NR
          || '";"'
          || PRS_OVEREENKOMST_NR
          || '";"'
          || PRS_OVEREENKOMST_DATUM
          || '";"'
          || PRS_BEDRIJF_AANMAAK
          || '";"'
          || PRS_BEDRIJF_VERWIJDER
          || '";"'
          || PRS_BEDRIJF_LEVERANCIER
          || '";"'
          || PRS_BEDRIJF_UITVOERENDE
          || '";"'
          || PRS_BEDRIJF_CONTRACT
          || '";"'
          || PRS_BEDRIJF_INTERN
          || '";"'
          || PRS_BEDRIJF_HUURDER
          || '";"'
          || PRS_BEDRIJF_EMAIL
          || '";"'
          || PRS_BEDRIJF_INGIDS
          || '"',
          1
     FROM PRS_V_QVW_BEDRIJF;

/


CREATE OR REPLACE FORCE VIEW uwva_v_export_qlikview_bestel
(
   result,
   result_order
)
AS
   SELECT    '"bestelaanvraagnr"'
          || ';'
          || '"besteldatum"'
          || ';'
          || '"besteller"'
          || ';'
          || '"invoerder"'
          || ';'
          || '"kpn"'
          || ';'
          || '"kpn_omschrijving"'
          || ';'
          || '"afdeling_code"'
          || ';'
          || '"afdeling_omschrijving"'
          || ';'
          || '"locatie_code"'
          || ';'
          || '"district_omschijving"'
          || ';'
          || '"afleveradres"'
          || ';'
          || '"mandaat"'
          || ';'
          || '"personeelsnr"'
          || ';'
          || '"bsn"'
          || ';'
          || '"werkplek"'
          || ';'
          || '"catalogus"'
          || ';'
          || '"catalogus_key"'
          || ';'
          || '"groep"'
          || ';'
          || '"groep_key"'
          || ';'
          || '"afleverdatum"'
          || ';'
          || '"sla_tijd"'
          || ';'
          || '"productcode"'
          || ';'
          || '"prijs"'
          || ';'
          || '"status"'
          || ';'
          || '"gefiatteerddoor"'
          || ';'
          || '"bestelopdrachtnummer"'
          || ';'
          || '"aantal"'
          || ';'
          || '"itemprijs"'
          || ';'
          || '"itemposnr"'
          || ';'
          || '"productomschrijving"'
          || ';',
          TO_CHAR (0, 'FM00000009')
     FROM DUAL
   UNION ALL
   SELECT    '"'
          || bestelaanvraagnr
          || '"'
          || ';"'
          || besteldatum
          || '"'
          || ';"'
          || besteller
          || '"'
          || ';"'
          || invoerder
          || '"'
          || ';"'
          || kpn
          || '"'
          || ';"'
          || kpn_omschrijving
          || '"'
          || ';"'
          || afdeling_code
          || '"'
          || ';"'
          || afdeling_omschrijving
          || '"'
          || ';"'
          || locatie_code
          || '"'
          || ';"'
          || district_omschijving
          || '"'
          || ';"'
          || afleveradres
          || '"'
          || ';"'
          || mandaat
          || '"'
          || ';"'
          || personeelsnr
          || '"'
          || ';"'
          || bsn
          || '"'
          || ';"'
          || werkplek
          || '"'
          || ';"'
          || catalogus
          || '"'
          || ';"'
          || catalogus_key
          || '"'
          || ';"'
          || groep
          || '"'
          || ';"'
          || groep_key
          || '"'
          || ';"'
          || afleverdatum
          || '"'
          || ';"'
          || sla_tijd
          || '"'
          || ';"'
          || productcode
          || '"'
          || ';"'
          || prijs
          || '"'
          || ';"'
          || status
          || '"'
          || ';"'
          || gefiatteerddoor
          || '"'
          || ';"'
          || bestelopdrachtnummer
          || '"'
          || ';"'
          || aantal
          || '"'
          || ';"'
          || itemprijs
          || '"'
          || ';"'
          || itemposnr
          || '"'
          || ';"'
          || productomschrijving
          || '"',
          TO_CHAR (bes_bestelling_key, 'FM00000009')
     FROM (SELECT b.bes_bestelling_key,
                  'A-' || b.bes_bestelling_key bestelaanvraagnr,
                  NVL (TO_CHAR (b.bes_bestelling_datum, 'YYYY-MM-DD'),
                       '<null>')
                     besteldatum,
                  (SELECT prs_perslid_naam_full
                     FROM prs_v_perslid_fullnames_all pf
                    WHERE pf.prs_perslid_key = p.prs_perslid_key)
                     besteller,
                  (SELECT prs_perslid_naam_full
                     FROM prs_v_perslid_fullnames_all pf
                    WHERE pf.prs_perslid_key =
                             fac.gettrackinguserkey ('BESAP2',
                                                     b.bes_bestelling_key))
                     invoerder,
                  k.prs_kostenplaats_nr kpn,
                  k.prs_kostenplaats_omschrijving kpn_omschrijving,
                  a.prs_afdeling_naam afdeling_code,
                  a.prs_afdeling_omschrijving afdeling_omschrijving,
                  NVL ( (SELECT alg_locatie_code
                           FROM alg_locatie l
                          WHERE l.alg_locatie_key = ma.alg_locatie_key),
                       '<null>')
                     locatie_code,
                  NVL (
                     (SELECT alg_district_omschrijving
                        FROM alg_locatie l, alg_district d
                       WHERE l.alg_district_key = d.alg_district_key
                             AND l.alg_locatie_key = ma.alg_locatie_key),
                     '<null>')
                     district_omschijving,
                  NVL (ma.mld_adres_naam, '<null>') afleveradres,
                  NVL ( (SELECT pr.fac_profiel_limiet
                           FROM fac_profiel pr
                          WHERE p.fac_profiel_key = pr.fac_profiel_key), 0)
                     mandaat,
                  NVL (prs_perslid_nr, '<null>') personeelsnr,
                  '<future>' bsn -- , (select max(pwp.PRS_PERSLIDWERKPLEK_BEZETTING) from prs_perslidwerkplek pwp where p.prs_perslid_key = pwp.prs_perslid_key and ) wp
                                ,
                  NVL (wp2.prs_werkplek_aanduiding, '<null>') werkplek,
                  d.ins_discipline_omschrijving catalogus,
                  TO_CHAR (d.ins_discipline_key) catalogus_key,
                  sg.bes_srtgroep_omschrijving groep,
                  TO_CHAR (sg.bes_srtgroep_key) groep_key,
                  NVL (TO_CHAR (b.bes_bestelling_leverdatum, 'YYYY-MM-DD'),
                       '<null>')
                     afleverdatum,
                  NVL (
                     (SELECT bdp.bes_disc_params_leverdagen
                        FROM bes_disc_params bdp
                       WHERE d.ins_discipline_key =
                                bdp.bes_ins_discipline_key),
                     0)
                     sla_tijd,
                  NVL (sd.bes_srtdeel_nr, '<null>') productcode,
                  REPLACE (
                     TO_CHAR (
                        bes_bestelling_item_prijs
                        * bi.bes_bestelling_item_aantal,
                        '9999990.99'),
                     '.',
                     ',')
                     prijs,
                  (SELECT bes_bestellingstatuses_omschr
                     FROM bes_bestellingstatuses bs
                    WHERE bs.bes_bestellingstatuses_key =
                             b.bes_bestelling_status)
                     status,
                  NVL (
                     (SELECT prs_perslid_naam_full
                        FROM prs_v_perslid_fullnames_all pf
                       WHERE pf.prs_perslid_key = b.bes_bestelling_fiat_user),
                     '<null>')
                     gefiatteerddoor,
                  NVL ('O-' || bo.bes_bestelopdr_key, '<null>')
                     bestelopdrachtnummer,
                  bi.bes_bestelling_item_aantal aantal,
                  REPLACE (TO_CHAR (bes_bestelling_item_prijs, '9999990.99'),
                           '.',
                           ',')
                     itemprijs,
                  boi.bes_bestelopdr_item_posnr itemposnr,
                  sd.bes_srtdeel_omschrijving productomschrijving
             FROM bes_bestelling b,
                  prs_perslid p,
                  prs_kostenplaats k,
                  prs_afdeling a,
                  mld_adres ma,
                  (  SELECT pw.prs_perslid_key,
                            MIN (prs_werkplek_aanduiding)
                            || DECODE (COUNT ( * ), 1, '', '...')
                               prs_werkplek_aanduiding
                       FROM prs_v_werkplek_gegevens wp, prs_perslidwerkplek pw
                      WHERE wp.prs_werkplek_key = pw.prs_werkplek_key
                   GROUP BY pw.prs_perslid_key) wp2,
                  bes_bestelling_item bi,
                  bes_bestelopdr_item boi,
                  bes_bestelopdr bo,
                  bes_srtdeel sd,
                  bes_srtgroep sg,
                  ins_tab_discipline d
            WHERE     b.prs_perslid_key = p.prs_perslid_key
                  AND b.prs_kostenplaats_key = k.prs_kostenplaats_key
                  AND p.prs_afdeling_key = a.prs_afdeling_key
                  AND b.mld_adres_key_lev = ma.mld_adres_key
                  AND wp2.prs_perslid_key(+) = p.prs_perslid_key
                  AND b.bes_bestelling_key = bi.bes_bestelling_key
                  AND bi.bes_bestelopdr_item_key =
                        boi.bes_bestelopdr_item_key(+)
                  AND boi.bes_bestelopdr_key = bo.bes_bestelopdr_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);


CREATE OR REPLACE FORCE VIEW uwva_v_export_qlikview_reserv
(
   result,
   result_order
)
AS
   SELECT    '"nummer"'
          || ';'
          || '"datum"'
          || ';'
          || '"gastheer"'
          || ';'
          || '"contact"'
          || ';'
          || '"invoerder"'
          || ';'
          || '"kpn"'
          || ';'
          || '"kpn_omschrijving"'
          || ';'
          || '"afdeling_code"'
          || ';'
          || '"afdeling_omschrijving"'
          || ';'
          || '"district_omschijving"'
          || ';'
          || '"locatie"'
          || ';'
          || '"locatie_omschrijving"'
          || ';'
          || '"gebouw"'
          || ';'
          || '"verdieping"'
          || ';'
          || '"ruimte"'
          || ';'
          || '"mandaat"'
          || ';'
          || '"personeelsnr"'
          || ';'
          || '"bsn"'
          || ';'
          || '"werkplek"'
          || ';'
          || '"catalogus"'
          || ';'
          || '"reserveerbare_ruimte"'
          || ';'
          || '"bezoekers"'
          || ';'
          || '"van"'
          || ';'
          || '"tot"'
          || ';'
          || '"duur"'
          || ';'
          || '"status"'
          || ';'
          || '"activiteit"'
          || ';'
          || '"voorziening_catalogus"'
          || ';'
          || '"voorziening_product"'
          || ';'
          || '"voorziening_totaalprijs"'
          || ';'
          || '"voorziening_van"'
          || ';'
          || '"voorziening_tot"'
          || ';'
          || '"voorziening_aantal"'
          || ';'
          || '"voorziening_prijs"'
          || ';'
          || '"voorziening_afgemeld"'
          || ';',
          0
     FROM DUAL
   UNION ALL
   SELECT    '"'
          || res.res_reservering_key
          || '/'
          || rrr.res_rsv_ruimte_volgnr
          || '";"'
          || NVL (
                TO_CHAR (NVL (rrr.res_rsv_ruimte_van, voorz.van),
                         'YYYY-MM-DD'),
                '<null>')
          || '";"'
          || (SELECT prs_perslid_naam_full
                FROM prs_v_perslid_fullnames_all pf
               WHERE pf.prs_perslid_key = rrr.res_rsv_ruimte_host_key)
          || '";"'
          || (SELECT prs_perslid_naam_full
                FROM prs_v_perslid_fullnames_all pf
               WHERE pf.prs_perslid_key = rrr.res_rsv_ruimte_contact_key)
          || '";"'
          || (SELECT prs_perslid_naam_full
                FROM prs_v_perslid_fullnames_all pf
               WHERE pf.prs_perslid_key =
                        fac.gettrackinguserkey ('RESNEW',
                                                rrr.res_rsv_ruimte_key))
          || '";"'
          || NVL (k.prs_kostenplaats_nr, '<null>')
          || '";"'
          || NVL (k.prs_kostenplaats_omschrijving, '<null>')
          || '";"'
          || NVL (a.prs_afdeling_naam, '<null>')
          || '";"'
          || NVL (a.prs_afdeling_omschrijving, '<null>')
          || '";"'
          || (SELECT d.alg_district_omschrijving
                FROM alg_district d,
                     alg_locatie l,
                     alg_gebouw g,
                     alg_verdieping v,
                     alg_ruimte r
               WHERE     d.alg_district_key = l.alg_district_key
                     AND l.alg_locatie_key = g.alg_locatie_key
                     AND g.alg_gebouw_key = v.alg_gebouw_key
                     AND v.alg_verdieping_key = r.alg_verdieping_key
                     AND r.alg_ruimte_key = r2a.alg_ruimte_key)
          || '";"'
          || (SELECT alg_locatie_code
                FROM alg_locatie l,
                     alg_gebouw g,
                     alg_verdieping v,
                     alg_ruimte r
               WHERE     l.alg_locatie_key = g.alg_locatie_key
                     AND g.alg_gebouw_key = v.alg_gebouw_key
                     AND v.alg_verdieping_key = r.alg_verdieping_key
                     AND r.alg_ruimte_key = r2a.alg_ruimte_key)
          || '";"'
          || (SELECT alg_locatie_omschrijving
                FROM alg_locatie l,
                     alg_gebouw g,
                     alg_verdieping v,
                     alg_ruimte r
               WHERE     l.alg_locatie_key = g.alg_locatie_key
                     AND g.alg_gebouw_key = v.alg_gebouw_key
                     AND v.alg_verdieping_key = r.alg_verdieping_key
                     AND r.alg_ruimte_key = r2a.alg_ruimte_key)
          || '";"'
          || (SELECT alg_gebouw_code
                FROM alg_gebouw g, alg_verdieping v, alg_ruimte r
               WHERE     g.alg_gebouw_key = v.alg_gebouw_key
                     AND v.alg_verdieping_key = r.alg_verdieping_key
                     AND r.alg_ruimte_key = r2a.alg_ruimte_key)
          || '";"'
          || (SELECT alg_verdieping_code
                FROM alg_verdieping v, alg_ruimte r
               WHERE v.alg_verdieping_key = r.alg_verdieping_key
                     AND r.alg_ruimte_key = r2a.alg_ruimte_key)
          || '";"'
          || (SELECT alg_ruimte_nr
                FROM alg_ruimte r
               WHERE r.alg_ruimte_key = r2a.alg_ruimte_key)
          || '";"'
          || NVL ( (SELECT pr.fac_profiel_limiet
                      FROM fac_profiel pr
                     WHERE p.fac_profiel_key = pr.fac_profiel_key), 0)
          || '";"'
          || NVL (prs_perslid_nr, '<null>')
          || '";"'
          || '<null>'
          || '";"'
          || NVL (wp2.prs_werkplek_aanduiding, '<null>')
          || '";"'
          || NVL (
                (SELECT ins_discipline_omschrijving
                   FROM ins_tab_discipline d,
                        res_ruimte_opstelling ro,
                        res_ruimte rr
                  WHERE rrr.res_ruimte_opstel_key = ro.res_ruimte_opstel_key
                        AND ro.res_ruimte_key = rr.res_ruimte_key
                        AND rr.res_discipline_key = d.ins_discipline_key),
                '<null>')
          || '";"'
          || DECODE (rrr.alg_ruimte_key, NULL, 'Ja', 'Nee')
          || '";"'
          || NVL (TO_CHAR (rrr.res_rsv_ruimte_bezoekers), '<null>')
          || '";"'
          || NVL (TO_CHAR (rrr.res_rsv_ruimte_van, 'hh24:mi'), '<null>')
          || '";"'
          || NVL (TO_CHAR (rrr.res_rsv_ruimte_tot, 'hh24:mi'), '<null>')
          || '";"'
          || NVL (
                REPLACE (
                   TO_CHAR (
                      (rrr.res_rsv_ruimte_tot - rrr.res_rsv_ruimte_van) * 24),
                   '.',
                   ','),
                '<null>')
          || '";"'
          || NVL ( (SELECT res_status_fo_omschrijving
                      FROM res_status_fo rs
                     WHERE rs.res_status_fo_key = rrr.res_status_fo_key),
                  '<null>')
          || '";"'
          || NVL ( (SELECT res_activiteit_omschrijving
                      FROM res_activiteit ra
                     WHERE ra.res_activiteit_key = rrr.res_activiteit_key),
                  '<null>')
          || '";"'
          || NVL (voorz.catalogus, '<null>')
          || '";"'
          || NVL (voorz.product, '<null>')
          || '";"'
          || NVL (REPLACE (TO_CHAR (voorz.totaalprijs), '.', ','), '<null>')
          || '";"'
          || NVL (TO_CHAR (voorz.van, 'hh24:mi'), '<null>')
          || '";"'
          || NVL (TO_CHAR (voorz.tot, 'hh24:mi'), '<null>')
          || '";"'
          || NVL (REPLACE (TO_CHAR (voorz.aantal), '.', ','), '<null>')
          || '";"'
          || NVL (REPLACE (TO_CHAR (voorz.prijs), '.', ','), '<null>')
          || '";"'
          || CASE
                WHEN voorz.status_bo < 5
                THEN
                   '<open>'
                WHEN voorz.status_bo >= 5
                THEN
                   NVL (TO_CHAR (voorz.afgemeld, 'ddmmyyyy'), '<closed>')
                ELSE
                   '<null>'
             END
          || '";',
          rrr.res_reservering_key * 1000 + rrr.res_rsv_ruimte_volgnr
     FROM res_v_aanwezigrsv_ruimte rrr,
          res_reservering res,
          prs_kostenplaats k,
          prs_perslid p,
          prs_afdeling a,
          (  SELECT res_rsv_ruimte_key, MAX (ra.alg_ruimte_key) alg_ruimte_key
               FROM res_rsv_ruimte r,
                    res_ruimte_opstelling ro,
                    res_ruimte rr,
                    res_alg_ruimte ra
              WHERE     r.res_rsv_ruimte_verwijder IS NULL
                    AND r.res_ruimte_opstel_key = ro.res_ruimte_opstel_key
                    AND ro.res_ruimte_key = rr.res_ruimte_key
                    AND rr.res_ruimte_key = ra.res_ruimte_key
           GROUP BY res_rsv_ruimte_key
           UNION ALL
           SELECT res_rsv_ruimte_key, alg_ruimte_key
             FROM res_rsv_ruimte
            WHERE alg_ruimte_key IS NOT NULL) r2a,
          (SELECT rrd.res_rsv_ruimte_key res_rsv_ruimte_key,
                  d.ins_deel_omschrijving product,
                  DECODE (
                     rd.res_deel_prijs_vast,
                     1,
                     NVL (rrd.res_rsv_deel_prijs, rd.res_deel_prijs),
                       (rrd.res_rsv_deel_tot - rrd.res_rsv_deel_van)
                     * 24
                     * NVL (rrd.res_rsv_deel_prijs, rd.res_deel_prijs))
                     totaalprijs,
                  rrd.res_rsv_deel_van van,
                  rrd.res_rsv_deel_tot tot,
                  (rrd.res_rsv_deel_tot - rrd.res_rsv_deel_van) * 24 aantal,
                  NVL (rrd.res_rsv_deel_prijs, rd.res_deel_prijs) prijs,
                  rrd.res_status_bo_key status_bo,
                  rrd.res_rsv_deel_afgemeld afgemeld,
                  c.ins_discipline_omschrijving catalogus
             FROM res_v_aanwezigrsv_deel rrd,
                  res_deel rd,
                  ins_deel d,
                  ins_tab_discipline c
            WHERE     rrd.res_deel_key = rd.res_deel_key
                  AND d.ins_deel_key = rd.res_ins_deel_key
                  AND rrd.res_rsv_ruimte_key IS NOT NULL
                  AND c.ins_discipline_key = rd.res_discipline_key
           UNION ALL
           SELECT rra.res_rsv_ruimte_key res_rsv_ruimte_key,
                  ra.res_artikel_omschrijving product,
                  NVL (rra.res_rsv_artikel_prijs,
                       rra.res_rsv_artikel_aantal * res_artikel_prijs)
                     totaalprijs,
                  rra.res_rsv_artikel_levering van,
                  NULL tot,
                  rra.res_rsv_artikel_aantal aantal,
                  NVL (
                     rra.res_rsv_artikel_prijs / rra.res_rsv_artikel_aantal,
                     res_artikel_prijs)
                     prijs,
                  rra.res_status_bo_key status_bo,
                  rra.res_rsv_artikel_afgemeld afgemeld,
                  c.ins_discipline_omschrijving catalogus
             FROM res_v_aanwezigrsv_artikel rra,
                  res_artikel ra,
                  ins_tab_discipline c
            WHERE rra.res_artikel_key = ra.res_artikel_key
                  AND ra.res_discipline_key = c.ins_discipline_key) voorz,
          (  SELECT pw.prs_perslid_key,
                    MIN (prs_werkplek_aanduiding)
                    || DECODE (COUNT ( * ), 1, '', '...')
                       prs_werkplek_aanduiding
               FROM prs_v_werkplek_gegevens wp, prs_perslidwerkplek pw
              WHERE wp.prs_werkplek_key = pw.prs_werkplek_key
           GROUP BY pw.prs_perslid_key) wp2
    WHERE     rrr.res_reservering_key = res.res_reservering_key
          AND rrr.res_rsv_ruimte_key = r2a.res_rsv_ruimte_key(+)
          AND rrr.prs_kostenplaats_key = k.prs_kostenplaats_key(+)
          AND rrr.res_rsv_ruimte_key = voorz.res_rsv_ruimte_key(+)
          AND rrr.res_rsv_ruimte_host_key = p.prs_perslid_key
          AND p.prs_afdeling_key = a.prs_afdeling_key
          AND wp2.prs_perslid_key(+) = p.prs_perslid_key
          AND (rrr.res_ruimte_opstel_key IS NOT NULL
               OR voorz.res_rsv_ruimte_key IS NOT NULL)
          AND rrr.res_rsv_ruimte_tot >
                TRUNC (ADD_MONTHS (SYSDATE, -12), 'YYYY');


CREATE OR REPLACE FORCE VIEW uwva_v_export_qlikview_factuur
(
   result,
   result_order
)
AS
   SELECT    '"factuur_key"'
          || ';'
          || '"factuur_nr"'
          || ';'
          || '"factuur_datum"'
          || ';'
          || '"bedrijf_naam"'
          || ';'
          || '"bestelnr"'
          || ';'
          || '"opdrachtnr"'
          || ';'
          || '"contractnr"'
          || ';'
          || '"factuurregel_nr"'
          || ';'
          || '"factuurregel_exbtw"'
          || ';'
          || '"factuurregel_btw"'
          || ';'
          || '"factuurregel_inbtw"'
          || ';'
          || '"debiteur_nr"'
          || ';'
          || '"opmerking"'
          || ';'
          || '"boekmaand"'
          || ';'
          || '"kostensoort"'
          || ';'
          || '"kostenplaats"'
          || ';'
          || '"bedrijf_key"'
          || ';'
          || '"extern_contractnr"'
          || ';'
          || '"bestelopdracht_key"'
          || ';'
          || '"opdracht_key"'
          || ';'
          || '"contract_key"'
          || ';'
          || '"factuur_status"'
          || ';',
          0
     FROM DUAL
   UNION ALL
   SELECT    f.fin_factuur_key
          || ';"'
          || f.fin_factuur_nr
          || '";"'
          || TO_CHAR (f.fin_factuur_datum, 'YYYY-MM-DD')
          || '";"'
          || (SELECT prs_bedrijf_naam
                FROM prs_bedrijf
               WHERE prs_bedrijf_key =
                        COALESCE (b_c.prs_bedrijf_key,
                                  b_o.prs_bedrijf_key,
                                  sd.prs_bedrijf_key))
          || '";"'
          || b.bes_bestelopdr_id
          || '";"'
          || (SELECT    sd.ins_srtdiscipline_prefix
                     || m.mld_melding_key
                     || '/'
                     || o.mld_opdr_bedrijfopdr_volgnr
                FROM mld_melding m,
                     mld_stdmelding std,
                     ins_tab_discipline d,
                     ins_srtdiscipline sd
               WHERE     m.mld_melding_key = o.mld_melding_key
                     AND m.mld_stdmelding_key = std.mld_stdmelding_key
                     AND std.mld_ins_discipline_key = d.ins_discipline_key
                     AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key)
          || '";"'
          || c.cnt_contract_nummer_intern
          || '";"'
          || fr.fin_factuurregel_nr
          || '";"'
          || NVL (REPLACE (TO_CHAR (fr.fin_factuurregel_totaal), '.', ','),
                  '<null>')
          || '";"'
          || NVL (REPLACE (TO_CHAR (fr.fin_factuurregel_btw), '.', ','),
                  '<null>')
          || '";"'
          || NVL (
                REPLACE (
                   TO_CHAR (
                      fr.fin_factuurregel_totaal + fr.fin_factuurregel_btw),
                   '.',
                   ','),
                '<null>')
          || '";"'
          || f.fin_factuur_debiteur_nr
          || '";"'
          || SUBSTR (uwva_p_export.escape_str (f.fin_factuur_opmerking),
                     1,
                     768)
          || '";"'
          || REPLACE (f.fin_factuur_boekmaand, '-', '')
          || '";"'
          || k.prs_kostensoort_oms
          || '";"'
          || (SELECT prs_kostenplaats_nr
                FROM prs_kostenplaats
               WHERE prs_kostenplaats_key =
                        COALESCE (o.prs_kostenplaats_key,
                                  c.prs_kostenplaats_key,
                                  bb.prs_kostenplaats_key))
          || '";"'
          || COALESCE (b_c.prs_bedrijf_key,
                       b_o.prs_bedrijf_key,
                       sd.prs_bedrijf_key)
          || '";"'
          || c.cnt_contract_nummer
          || '";"'
          || b.bes_bestelopdr_key
          || '";"'
          || o.mld_opdr_key
          || '";"'
          || c.cnt_contract_key
          || '";"'
          || fin_factuur_statuses_key
          || '";',
          fr.fin_factuurregel_key
     FROM fin_factuur f,
          fin_factuurregel fr,
          mld_opdr o,
          mld_typeopdr ot,
          cnt_contract c,
          bes_bestelopdr b,
          prs_bedrijf b_o,
          prs_bedrijf b_c,
          prs_kostensoort k,
          bes_srtdeel sd,
          bes_bestelopdr_item boi,
          bes_bestelling_item bi,
          bes_bestelling bb
    WHERE     f.fin_factuur_key = fr.fin_factuur_key
          AND f.mld_opdr_key = o.mld_opdr_key(+)
          AND o.mld_typeopdr_key = ot.mld_typeopdr_key(+)
          AND f.cnt_contract_key = c.cnt_contract_key(+)
          AND f.bes_bestelopdr_key = b.bes_bestelopdr_key(+)
          AND boi.bes_bestelopdr_key(+) = b.bes_bestelopdr_key
          AND bi.bes_bestelopdr_item_key(+) = boi.bes_bestelopdr_item_key
          AND bes_bestelopdr_item_posnr(+) = 1
          AND bi.bes_srtdeel_key = sd.bes_srtdeel_key(+)
          AND bi.bes_bestelling_key = bb.bes_bestelling_key(+)
          AND o.mld_uitvoerende_keys = b_o.prs_bedrijf_key(+)
          AND c.cnt_prs_bedrijf_key = b_c.prs_bedrijf_key(+)
          AND f.prs_kostensoort_key = k.prs_kostensoort_key(+);

CREATE OR REPLACE FORCE VIEW uwva_v_export_qv_opdrtelaat
(
   result,
   result_order
)
AS
   SELECT    '"meldingnummer"'
          || ';"opdrachtkey"'
          || ';"opdrachtnummer"'
          || ';"Reden_te_laat"'
          || ';"Reden_vertraging"',
          0
     FROM DUAL
   UNION ALL
   SELECT    '"'
          || m.mld_melding_key
          || '";"'
          || o.mld_opdr_key
          || '";"'
          || m.mld_melding_key
          || '/'
          || mld_opdr_bedrijfopdr_volgnr
          || '";"'
          || f.fac_usrdata_omschr
          || '";"'
          || k2.mld_kenmerkopdr_waarde
          || '"',
          2
     FROM mld_melding m,
          mld_opdr o,
          mld_kenmerkopdr k,
          mld_kenmerk kk,
          mld_srtkenmerk sk,
          fac_kenmerkdomein rk,
          fac_usrdata f,
          (SELECT o.mld_opdr_key, mld_kenmerkopdr_waarde
             FROM mld_kenmerkopdr ko, mld_kenmerk k, mld_opdr o
            WHERE     k.mld_srtkenmerk_key = 741
                  AND ko.mld_kenmerk_key = k.mld_kenmerk_key
                  AND o.mld_opdr_key = ko.mld_opdr_key
                  AND o.mld_typeopdr_key = k.mld_typeopdr_key) k2
    WHERE     o.mld_melding_key = m.mld_melding_key
          AND o.mld_typeopdr_key = kk.mld_typeopdr_key
          AND o.mld_opdr_key = k.mld_opdr_key
          AND o.mld_opdr_key = k2.mld_opdr_key(+)
          AND kk.mld_kenmerk_key = k.mld_kenmerk_key
          AND kk.mld_srtkenmerk_key = 721
          AND KK.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
          AND sk.fac_kenmerkdomein_key = rk.fac_kenmerkdomein_key
          AND f.fac_usrtab_key = rk.fac_usrtab_key
          AND f.fac_usrdata_key =
                fac.safe_to_number (k.mld_kenmerkopdr_waarde);

/* UWVA#22594 autorisatie export */

CREATE OR REPLACE VIEW uwva_v_export_qv_autorisaties
(
   RESULT,
   result_order
)
AS
   SELECT '"Autorisatiegroep_omschrijving";"Autorisatie_omschrijving";"Autorisatie_code";"Autorisatie_module";"Discipline_omschrijving";"Vakgroep/contractsoort/objectsoort/catalogus";"Org_lezen";"Org_schrijven";"Plaats_lezen";"Plaats_schrijven"',
          0
     FROM DUAL
   UNION ALL
   SELECT    '"'
          || fac_groep_oms
          || '";"'
          || fac_functie_oms
          || '";"'
          || fac_functie_code
          || '";"'
          || fac_module
          || '";"'
          || ins_srtdisc
          || '";"'
          || ins_disc
          || '";"'
          || prs_read
          || '";"'
          || prs_write
          || '";"'
          || alg_read
          || '";"'
          || alg_write
          || '"',
          1
     FROM (SELECT gr.fac_groep_omschrijving fac_groep_oms,
                  f.fac_functie_omschrijving fac_functie_oms,
                  f.fac_functie_code fac_functie_code,
                  f.fac_functie_module fac_module,
                  sd.ins_srtdiscipline_omschrijving ins_srtdisc,
                  a.ins_discipline_omschrijving ins_disc,
                  TO_CHAR (COALESCE (g.fac_gebruiker_prs_level_read, -1))
                     prs_read,
                  TO_CHAR (COALESCE (g.fac_gebruiker_prs_level_write, -1))
                     prs_write,
                  TO_CHAR (COALESCE (g.fac_gebruiker_alg_level_read, -1))
                     alg_read,
                  TO_CHAR (COALESCE (g.fac_gebruiker_alg_level_write, -1))
                     alg_write
             FROM fac_groeprechten g,
                  fac_functie f,
                  ins_tab_discipline a,
                  ins_srtdiscipline sd,
                  fac_groep gr
            WHERE     g.ins_discipline_key = a.ins_discipline_key
                  AND a.ins_srtdiscipline_key = sd.ins_srtdiscipline_key(+)
                  AND g.fac_groep_key = gr.fac_groep_key
                  AND f.fac_functie_key = g.fac_functie_key
                  AND f.fac_functie_discipline = 1
                  AND ins_discipline_verwijder IS NULL
           UNION ALL
           SELECT gr.fac_groep_omschrijving fac_groep_oms,
                  f.fac_functie_omschrijving fac_functie_oms,
                  f.fac_functie_code fac_functie_code,
                  f.fac_functie_module fac_module,
                  NULL ins_srtdisc,
                  NULL ins_disc,
                  TO_CHAR (COALESCE (g.fac_gebruiker_prs_level_read, -1))
                     prs_read,
                  TO_CHAR (COALESCE (g.fac_gebruiker_prs_level_write, -1))
                     prs_write,
                  TO_CHAR (COALESCE (g.fac_gebruiker_alg_level_read, -1))
                     alg_read,
                  TO_CHAR (COALESCE (g.fac_gebruiker_alg_level_write, -1))
                     alg_write
             FROM fac_groeprechten g, fac_functie f, fac_groep gr
            WHERE     g.fac_groep_key = gr.fac_groep_key
                  AND fac_functie_discipline = 0
                  AND g.fac_functie_key = f.fac_functie_key
           ORDER BY 1);

-- UWVA#30245: 'b.bez_bezoekers_opmerking' hier ook maar toegevoegd!

CREATE OR REPLACE VIEW uwva_v_kz_gastheer_vandaag
(
   fclt_3d_user_key,
   hide_f_van,
   tijdstip,
   ruimte,
   klant,
   binnen,
   opmerkingen,
   hide_f_reskey
)
AS
   SELECT rsv.res_rsv_ruimte_host_key,
          a.bez_afspraak_datum,
          TO_CHAR (a.bez_afspraak_datum, 'HH24:MI') tijdstip,
          (SELECT rg.alg_ruimte_aanduiding
             FROM res_v_alg_ruimte_gegevens rg
            WHERE rg.res_alg_ruimte_key = rar.res_alg_ruimte_key)
             ruimte,
          b.bez_afspraak_naam klant,
          COALESCE (TO_CHAR (b.bez_bezoekers_done, 'HH24:MI'),
                    DECODE (rsv.res_status_fo_key, 4, 'Afgezegd', ''))
             binnen,
             a.bez_afspraak_opmerking
          || CHR (13)
          || CHR (10)
          || b.bez_bezoekers_opmerking
             sofi_postc,
          r.res_reservering_key
     FROM res_v_aanwezigreservering r,
          res_v_aanwezigrsv_ruimte rsv,
          bez_afspraak a,
          bez_bezoekers b,
          res_ruimte_opstelling ro,
          res_v_aanwezigalg_ruimte rar
    WHERE     r.res_reservering_key = rsv.res_reservering_key
          AND rsv.res_rsv_ruimte_key = a.res_rsv_ruimte_key
          AND a.bez_afspraak_key = b.bez_afspraak_key
          AND TO_CHAR (rsv.res_rsv_ruimte_van, 'YYYYMMDD') =
                TO_CHAR (SYSDATE, 'YYYYMMDD')
          AND rsv.res_ruimte_opstel_key = ro.res_ruimte_opstel_key
          AND ro.res_ruimte_key = rar.res_ruimte_key;

-- UWVA#30245: En hier dan dus ook 'b.bez_bezoekers_opmerking' toegevoegd!

CREATE OR REPLACE VIEW uwva_v_kz_gastheer_2wkn
(
   fclt_3d_user_key,
   datum,
   tijdstip,
   ruimte,
   klant,
   binnen,
   opmerkingen,
   hide_f_reskey
)
AS
   SELECT rsv.res_rsv_ruimte_host_key,
          a.bez_afspraak_datum,
          TO_CHAR (a.bez_afspraak_datum, 'HH24:MI') tijdstip,
          (SELECT rg.alg_ruimte_aanduiding
             FROM res_v_alg_ruimte_gegevens rg
            WHERE rg.res_alg_ruimte_key = rar.res_alg_ruimte_key)
             ruimte,
          b.bez_afspraak_naam klant,
          NVL (TO_CHAR (b.bez_bezoekers_done, 'HH24:MI'),
               DECODE (rsv.res_status_fo_key, 4, 'Afgezegd', ''))
             binnen,
             a.bez_afspraak_opmerking
          || CHR (13)
          || CHR (10)
          || b.bez_bezoekers_opmerking
             sofi_postc,
          r.res_reservering_key
     FROM res_v_aanwezigreservering r,
          res_v_aanwezigrsv_ruimte rsv,
          bez_afspraak a,
          bez_bezoekers b,
          res_ruimte_opstelling ro,
          res_v_aanwezigalg_ruimte rar
    WHERE     r.res_reservering_key = rsv.res_reservering_key
          AND rsv.res_rsv_ruimte_key = a.res_rsv_ruimte_key
          AND a.bez_afspraak_key = b.bez_afspraak_key
          AND rsv.res_rsv_ruimte_van BETWEEN TRUNC (SYSDATE) + 1
                                         AND  TRUNC (SYSDATE) + 14
          AND rsv.res_ruimte_opstel_key = ro.res_ruimte_opstel_key
          AND ro.res_ruimte_key = rar.res_ruimte_key;

-- UWVA#30245: En hier dan dus ook 'b.bez_bezoekers_opmerking' toegevoegd!

CREATE OR REPLACE VIEW UWVA_V_KZ_PLANNER_VANDAAG
(
   fclt_3d_user_key,
   gastheer,
   tijdstip,
   ruimte,
   klant,
   binnen,
   opmerkingen,
   hide_f_reskey
)
AS
   SELECT rsv.res_rsv_ruimte_contact_key,
          pf.prs_perslid_naam_full,
          TO_CHAR (a.bez_afspraak_datum, 'HH24:MI') tijdstip,
          (SELECT rg.alg_ruimte_aanduiding
             FROM res_v_alg_ruimte_gegevens rg
            WHERE rg.res_alg_ruimte_key = rar.res_alg_ruimte_key)
             ruimte,
          b.bez_afspraak_naam klant,
          COALESCE (TO_CHAR (b.bez_bezoekers_done, 'HH24:MI'),
                    DECODE (rsv.res_status_fo_key, 4, 'Afgezegd', ''))
             binnen,
             a.bez_afspraak_opmerking
          || CHR (13)
          || CHR (10)
          || b.bez_bezoekers_opmerking
             sofi_postc,
          r.res_reservering_key
     FROM res_v_aanwezigreservering r,
          res_v_aanwezigrsv_ruimte rsv,
          bez_afspraak a,
          bez_bezoekers b,
          res_ruimte_opstelling ro,
          prs_v_perslid_fullnames_all pf,
          res_v_aanwezigalg_ruimte rar
    WHERE     r.res_reservering_key = rsv.res_reservering_key
          AND rsv.res_rsv_ruimte_key = a.res_rsv_ruimte_key
          AND a.bez_afspraak_key = b.bez_afspraak_key
          AND rsv.res_rsv_ruimte_host_key = pf.prs_perslid_key
          AND TO_CHAR (rsv.res_rsv_ruimte_van, 'YYYYMMDD') =
                TO_CHAR (SYSDATE, 'YYYYMMDD')
          AND rsv.res_ruimte_opstel_key = ro.res_ruimte_opstel_key
          AND ro.res_ruimte_key = rar.res_ruimte_key;

CREATE OR REPLACE VIEW UWVA_V_DISCIPLINE_SLA
(
   INS_DISCIPLINE_KEY,
   INS_DISCIPLINE_OMSCHRIJVING,
   INS_SRTDISCIPLINE_PREFIX
)
AS
   SELECT ins_discipline_key,
          ins_discipline_omschrijving,
          ins_srtdiscipline_prefix
     FROM mld_discipline d, ins_srtdiscipline sd
    WHERE     d.ins_discipline_module = 'MLD'
          AND sd.ins_srtdiscipline_key = d.ins_srtdiscipline_key
          AND ins_srtdiscipline_prefix IN ('A', 'S');


CREATE OR REPLACE VIEW uwva_v_mld_actual
(
   mld_key,
   vakgroeptype_key,
   vakgroeptype_prefix,
   vakgroep_key,
   vakgroep_oms,
   stdmld_key,
   stdmld_oms,
   mld_status_key,
   --mld_sla,
   mld_begindatum,
   mld_einddatum,
   acpt_telaat,
   uitv_telaat,
   district_key,
   district_oms,
   mldacp_date,
   mldrej_date,
   mldafm_date
)
AS
   SELECT meld.mld_key,
          meld.vakgroeptype_key,
          meld.vakgroeptype_prefix,
          meld.vakgroep_key,
          meld.vakgroep_oms,
          meld.stdmld_key,
          meld.stdmld_oms,
          meld.status_key,
          --meld.sla,
          meld.begindatum,
          meld.einddatum,
          DECODE (SIGN (meld.mld_melding_acceptdatum_std
                        - COALESCE (mldrej.fac_tracking_datum,
                                    mldacp.fac_tracking_datum,
                                    mldafm.fac_tracking_datum,
                                    SYSDATE)),
                  -1, 1,
                  0)
             acpt_telaat,
          DECODE (
             SIGN(meld.mld_melding_einddatum_std
                  - COALESCE (mldrej.fac_tracking_datum,
                              mldafm.fac_tracking_datum,
                              SYSDATE)),
             -1,
             1,
             0)
             uitv_telaat,
          meld.district_key,
          meld.district_oms,
          mldacp.fac_tracking_datum,
          mldrej.fac_tracking_datum,
          mldafm.fac_tracking_datum
     FROM (SELECT m.mld_melding_key mld_key,
                  sd.ins_srtdiscipline_key vakgroeptype_key,
                  sd.ins_srtdiscipline_prefix vakgroeptype_prefix,
                  td.ins_discipline_key vakgroep_key,
                  td.ins_discipline_omschrijving vakgroep_oms,
                  sm.mld_stdmelding_key stdmld_key,
                  sm.mld_stdmelding_omschrijving stdmld_oms,
                  m.mld_melding_status status_key,
                  --m.mld_melding_uitvoertijd sla,
                  m.mld_melding_datum begindatum,
                  m.mld_melding_einddatum einddatum,
                  m.mld_melding_acceptdatum_std,
                  m.mld_melding_einddatum_std,
                  d.alg_district_key district_key,
                  d.alg_district_omschrijving district_oms
             FROM mld_melding m,
                  mld_stdmelding sm,
                  ins_tab_discipline td,
                  ins_srtdiscipline sd,
                  alg_locatie l,
                  alg_district d
            WHERE     m.mld_stdmelding_key = sm.mld_stdmelding_key
                  AND sm.mld_ins_discipline_key = td.ins_discipline_key
                  AND td.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
                  AND sd.ins_srtdiscipline_prefix IN ('A', 'S')
                  AND m.mld_alg_locatie_key = l.alg_locatie_key(+)
                  AND l.alg_district_key = d.alg_district_key(+)) meld
          LEFT JOIN (SELECT t.fac_tracking_refkey,
                            t.fac_tracking_datum,
                            t.prs_perslid_key
                       FROM fac_tracking t
                      WHERE t.fac_srtnotificatie_key = 17
                            AND t.fac_tracking_key IN
                                     (SELECT MAX (fac_tracking_key)
                                        FROM fac_tracking
                                       WHERE fac_srtnotificatie_key = 17
                                             AND fac_tracking_refkey =
                                                   t.fac_tracking_refkey))
                    mldacp
             ON meld.mld_key = mldacp.fac_tracking_refkey
          LEFT JOIN fac_tracking mldrej
             ON meld.mld_key = mldrej.fac_tracking_refkey
                AND mldrej.fac_srtnotificatie_key = 22
          LEFT JOIN fac_tracking mldafm
             ON meld.mld_key = mldafm.fac_tracking_refkey
                AND mldafm.fac_srtnotificatie_key = 18
    WHERE meld.begindatum > TRUNC (ADD_MONTHS (SYSDATE, -12), 'YYYY');

-- SLA Rapportages, van alle rapportages wordt eerst de onderliggende rapportage
-- xxx_INPUT gedefinieerd. Rapportages met UITV hebben betrekking op de uitvoertijd
-- en rapportages met ACC hebben betrekking op de acceptatie tijd.

CREATE OR REPLACE VIEW uwva_v_mld_sla_acc_input_sp
(
   maand,
   ins_discipline_key,
   ins_discipline_omschrijving,
   ins_srtdiscipline_prefix,
   district_key,
   nogopen,
   optijd,
   telaat,
   totaal
)
AS
   SELECT x.maand,
          x.vakgroep_key,
          x.vakgroep_oms,
          x.vakgroeptype_prefix,
          x.district_key,
          x.nogopen,
          x.optijd,
          x.telaat,
          x.nogopen + x.optijd + x.telaat totaal
     FROM (  SELECT TO_CHAR (mld_begindatum, 'yymm') maand,
                    vakgroep_key,
                    vakgroep_oms,
                    vakgroeptype_prefix,
                    district_key,
                    SUM (DECODE (mld_status_key, 2, 1, 3, 1, 0)) nogopen,
                    SUM(DECODE (mld_status_key,
                                2, 0,
                                3, 0,
                                DECODE (acpt_telaat, 0, 1, 0)))
                       optijd,
                    SUM(DECODE (mld_status_key,
                                2, 0,
                                3, 0,
                                DECODE (acpt_telaat, 1, 1, 0)))
                       telaat
               FROM uwva_v_mld_actual
           GROUP BY TO_CHAR (mld_begindatum, 'yymm'),
                    vakgroep_key,
                    vakgroep_oms,
                    vakgroeptype_prefix,
                    district_key) x;


CREATE OR REPLACE VIEW uwva_v_mld_sla_acc_sp
(
   fclt_f_maand,
   fclt_f_productgroep,
   fclt_f_soort,
   fclt_f_servicepunt,
   fclt_3d_locatie_key,
   aantal_open,
   aantal_optijd,
   aantal_telaat,
   totaal,
   openperc,
   optijdperc,
   telaatperc
)
AS
   SELECT maand,
          ins_discipline_omschrijving vakgroep,
          ins_srtdiscipline_prefix soort,
          (SELECT alg_district_omschrijving
             FROM alg_district
            WHERE alg_district_key = district_key)
             AS district,
          (SELECT MAX (alg_locatie_key)
             FROM alg_locatie
            WHERE alg_district_key = district_key)
             AS locatie_key,
          TO_CHAR (nogopen) nogopen,
          TO_CHAR (optijd) optijd,
          TO_CHAR (telaat) telaat,
          TO_CHAR (totaal) totaal,
          DECODE (totaal,
                  0, '0',
                  TO_CHAR (ROUND ( (nogopen / totaal) * 100, 1)))
             p_open,
          DECODE (totaal,
                  0, '0',
                  TO_CHAR (ROUND ( (optijd / totaal) * 100, 1)))
             p_optijd,
          DECODE (totaal,
                  0, '0',
                  TO_CHAR (ROUND ( (telaat / totaal) * 100, 1)))
             p_telaat
     FROM uwva_v_mld_sla_acc_input_sp;


CREATE OR REPLACE VIEW uwva_v_mld_sla_acc
(
   fclt_f_maand,
   fclt_f_productgroep,
   fclt_f_soort,
   aantal_open,
   aantal_optijd,
   aantal_telaat,
   totaal,
   openperc,
   optijdperc,
   telaatperc
)
AS
   SELECT x.maand,
          x.ins_discipline_omschrijving vakgroep,
          x.ins_srtdiscipline_prefix soort,
          TO_CHAR (x.nogopen) nogopen,
          TO_CHAR (x.optijd) optijd,
          TO_CHAR (x.telaat) telaat,
          TO_CHAR (x.totaal) totaal,
          DECODE (x.totaal,
                  0, '0',
                  TO_CHAR (ROUND ( (x.nogopen / x.totaal) * 100, 1)))
             p_open,
          DECODE (totaal,
                  0, '0',
                  TO_CHAR (ROUND ( (x.optijd / x.totaal) * 100, 1)))
             p_optijd,
          DECODE (totaal,
                  0, '0',
                  TO_CHAR (ROUND ( (x.telaat / x.totaal) * 100, 1)))
             p_telaat
     FROM (  SELECT maand,
                    ins_discipline_omschrijving,
                    ins_srtdiscipline_prefix,
                    SUM (nogopen) nogopen,
                    SUM (optijd) optijd,
                    SUM (telaat) telaat,
                    SUM (nogopen + optijd + telaat) totaal
               FROM uwva_v_mld_sla_acc_input_sp
           GROUP BY maand,
                    ins_discipline_omschrijving,
                    ins_srtdiscipline_prefix) x;


CREATE OR REPLACE VIEW uwva_v_mld_sla_uitv_input_sp
(
   maand,
   ins_discipline_key,
   ins_discipline_omschrijving,
   ins_srtdiscipline_prefix,
   district_key,
   nogopen,
   optijd,
   telaat,
   afgewezen,
   totaal
)
AS
   SELECT x.maand,
          x.vakgroep_key,
          x.vakgroep_oms,
          x.vakgroeptype_prefix,
          x.district_key,
          x.nogopen,
          x.optijd,
          x.telaat,
          x.afgewezen,
          x.nogopen + x.optijd + x.telaat + x.afgewezen totaal
     FROM (  SELECT TO_CHAR (mld_begindatum, 'yymm') maand,
                    vakgroep_key,
                    vakgroep_oms,
                    vakgroeptype_prefix,
                    district_key,
                    SUM (DECODE (mld_status_key, 1, 0, 5, 0, 6, 0, 1)) nogopen,
                    SUM(DECODE (mld_status_key,
                                5, DECODE (uitv_telaat, 0, 1, 0),
                                6, DECODE (uitv_telaat, 0, 1, 0),
                                0))
                       optijd,
                    SUM(DECODE (mld_status_key,
                                5, DECODE (uitv_telaat, 1, 1, 0),
                                6, DECODE (uitv_telaat, 1, 1, 0),
                                0))
                       telaat,
                    SUM (DECODE (mld_status_key, 1, 1, 0)) afgewezen
               FROM uwva_v_mld_actual
           GROUP BY TO_CHAR (mld_begindatum, 'yymm'),
                    vakgroep_key,
                    vakgroep_oms,
                    vakgroeptype_prefix,
                    district_key) x;


CREATE OR REPLACE VIEW uwva_v_mld_sla_uitv_sp
(
   fclt_f_maand,
   fclt_f_productgroep,
   fclt_f_soort,
   fclt_f_servicepunt,
   fclt_3d_locatie_key,
   aantal_open,
   aantal_optijd,
   aantal_telaat,
   aantal_afgewezen,
   totaal,
   openperc,
   optijdperc,
   telaatperc,
   afgewezenperc
)
AS
   SELECT maand,
          ins_discipline_omschrijving vakgroep,
          ins_srtdiscipline_prefix soort,
          (SELECT alg_district_omschrijving
             FROM alg_district
            WHERE alg_district_key = district_key)
             AS district,
          (SELECT MAX (alg_locatie_key)
             FROM alg_locatie
            WHERE alg_district_key = district_key)
             AS locatie_key,
          TO_CHAR (nogopen) nogopen,
          TO_CHAR (optijd) optijd,
          TO_CHAR (telaat) telaat,
          TO_CHAR (afgewezen) afgewezen,
          TO_CHAR (totaal) totaal,
          DECODE (totaal,
                  0, '0',
                  TO_CHAR (ROUND ( (nogopen / totaal) * 100, 1)))
             p_open,
          DECODE (totaal,
                  0, '0',
                  TO_CHAR (ROUND ( (optijd / totaal) * 100, 1)))
             p_optijd,
          DECODE (totaal,
                  0, '0',
                  TO_CHAR (ROUND ( (telaat / totaal) * 100, 1)))
             p_telaat,
          DECODE (totaal,
                  0, '0',
                  TO_CHAR (ROUND ( (afgewezen / totaal) * 100, 1)))
             p_afgewezen
     FROM uwva_v_mld_sla_uitv_input_sp;


CREATE OR REPLACE VIEW uwva_v_mld_sla_uitv
(
   fclt_f_maand,
   fclt_f_productgroep,
   fclt_f_soort,
   aantal_open,
   aantal_optijd,
   aantal_telaat,
   aantal_afgewezen,
   totaal,
   openperc,
   optijdperc,
   telaatperc,
   afgewezenperc
)
AS
   SELECT x.maand,
          x.ins_discipline_omschrijving vakgroep,
          x.ins_srtdiscipline_prefix soort,
          TO_CHAR (x.nogopen) nogopen,
          TO_CHAR (x.optijd) optijd,
          TO_CHAR (x.telaat) telaat,
          TO_CHAR (x.afgewezen) afgewezen,
          TO_CHAR (x.totaal) totaal,
          DECODE (x.totaal,
                  0, '0',
                  TO_CHAR (ROUND ( (x.nogopen / x.totaal) * 100, 1)))
             p_open,
          DECODE (totaal,
                  0, '0',
                  TO_CHAR (ROUND ( (x.optijd / x.totaal) * 100, 1)))
             p_optijd,
          DECODE (totaal,
                  0, '0',
                  TO_CHAR (ROUND ( (x.telaat / x.totaal) * 100, 1)))
             p_telaat,
          DECODE (totaal,
                  0, '0',
                  TO_CHAR (ROUND ( (x.afgewezen / x.totaal) * 100, 1)))
             p_afgewezen
     FROM (  SELECT maand,
                    ins_discipline_omschrijving,
                    ins_srtdiscipline_prefix,
                    SUM (nogopen) nogopen,
                    SUM (optijd) optijd,
                    SUM (telaat) telaat,
                    SUM (afgewezen) afgewezen,
                    SUM (nogopen + optijd + telaat + afgewezen) totaal
               FROM uwva_v_mld_sla_uitv_input_sp
           GROUP BY maand,
                    ins_discipline_omschrijving,
                    ins_srtdiscipline_prefix) x;


CREATE OR REPLACE VIEW uwva_v_mld_klachten_pi
(
   fclt_f_maand,
   productgroep,
   locatie,
   aantal_geaccepteerd
)
AS
     SELECT TO_CHAR (mld_melding_datum, 'YYYYMM'),
            d.ins_discipline_omschrijving,
            l.alg_locatie_code,
            COUNT (DISTINCT mld_melding_key)
       FROM mld_melding m,
            ins_tab_discipline d,
            mld_stdmelding st,
            alg_locatie l
      WHERE     m.mld_stdmelding_key = st.mld_stdmelding_key
            AND st.mld_ins_discipline_key = d.ins_discipline_key
            AND d.ins_srtdiscipline_key = 3
            AND m.mld_alg_locatie_key = l.alg_locatie_key(+)
            AND m.mld_melding_status >= 4
   GROUP BY TO_CHAR (mld_melding_datum, 'YYYYMM'),
            l.alg_locatie_code,
            d.ins_discipline_omschrijving;



CREATE OR REPLACE VIEW uwva_v_active_users
AS
   SELECT prs_perslid_key
     FROM prs_v_aanwezigperslid
    WHERE prs_perslid_login + (6 * 30) > SYSDATE;


CREATE OR REPLACE VIEW uwva_v_inactive_users
AS
   SELECT p.prs_perslid_naam
          || DECODE (NVL (p.prs_perslid_voorletters, ''),
                     '', '',
                     ', ' || p.prs_perslid_voorletters)
          || DECODE (NVL (p.prs_perslid_tussenvoegsel, ''),
                     '', '',
                     ' ' || p.prs_perslid_tussenvoegsel)
          || DECODE (NVL (p.prs_perslid_voornaam, ''),
                     '', '',
                     ' (' || p.prs_perslid_voornaam || ')')
             naam,
          p.prs_perslid_nr personeelsnr,
          COALESCE (kp.prs_kostenplaats_nr, '-') kostenplaats,
          l.locatie,
          u.fac_groep_omschrijving rol,
          (SELECT prs_kenmerklink_waarde
             FROM prs_kenmerklink
            WHERE prs_kenmerk_key = 1004        -- Op 15-11-2010 verwijderd???
                                        AND prs_link_key = p.prs_perslid_key)
             datum,
          COALESCE (
             bh.prs_perslid_naam
             || DECODE (NVL (bh.prs_perslid_voorletters, ''),
                        '', '',
                        ', ' || bh.prs_perslid_voorletters)
             || DECODE (NVL (bh.prs_perslid_tussenvoegsel, ''),
                        '', '',
                        ' ' || bh.prs_perslid_tussenvoegsel)
             || DECODE (NVL (bh.prs_perslid_voornaam, ''),
                        '', '',
                        ' (' || bh.prs_perslid_voornaam || ')'),
             '-')
             budgethouder,
          COALESCE (bh.prs_perslid_email, '-') budgethouder_email
     FROM (SELECT p.prs_perslid_key,
                  p.prs_afdeling_key,
                  g.fac_groep_omschrijving
             FROM fac_gebruikersgroep gg, fac_groep g, prs_perslid p
            WHERE     gg.fac_groep_key = g.fac_groep_key
                  AND g.fac_groep_key <> 241                     -- '_default'
                  AND gg.prs_perslid_key = p.prs_perslid_key
                  AND p.prs_perslid_oslogin IS NOT NULL) u,
          prs_v_aanwezigperslid p,
          (  SELECT prs_pw.prs_perslid_key,
                    MIN (alg_l.alg_locatie_code) locatie
               FROM alg_ruimte alg_r,
                    alg_verdieping alg_v,
                    alg_gebouw alg_g,
                    alg_locatie alg_l,
                    prs_werkplek prs_w,
                    prs_perslidwerkplek prs_pw
              WHERE     alg_r.alg_verdieping_key = alg_v.alg_verdieping_key
                    AND alg_v.alg_gebouw_key = alg_g.alg_gebouw_key
                    AND alg_g.alg_locatie_key = alg_l.alg_locatie_key
                    AND alg_r.alg_ruimte_key = prs_w.prs_alg_ruimte_key
                    AND prs_w.prs_werkplek_key = prs_pw.prs_werkplek_key
           GROUP BY prs_pw.prs_perslid_key) l,
          prs_afdeling a,
          prs_kostenplaats kp,
          prs_perslid bh,
          uwva_v_active_users au
    WHERE     u.prs_perslid_key = p.prs_perslid_key
          AND p.prs_perslid_aanmaak + (6 * 30) < SYSDATE
          AND p.prs_perslid_key = l.prs_perslid_key(+)
          AND p.prs_afdeling_key = a.prs_afdeling_key
          AND a.prs_kostenplaats_key = kp.prs_kostenplaats_key(+)
          AND kp.prs_perslid_key = bh.prs_perslid_key(+)
          AND u.prs_perslid_key = au.prs_perslid_key(+)
          AND au.prs_perslid_key IS NULL;


-- Met UWVA53 het window tussen 60-75 dagen actief gemaakt
-- (ipv. alles > 60 dagen); scheelt een hoop log-regels!
CREATE OR REPLACE VIEW uwva_v_vertaal_docs_delete
(
   mld_melding_key,
   mld_melding_datum,
   mld_melding_verwerkt,
   mld_melding_afgewezen,
   foldervertaaldocumenten
)
AS
   SELECT m.mld_melding_key,
          m.mld_melding_datum,
          fac.gettrackingdate ('MLDAFM', m.mld_melding_key),
          fac.gettrackingdate ('MLDREJ', m.mld_melding_key),
          --'../flexfiles/mld/M'
          '/MLD/M'
          || SUBSTR (LPAD (m.mld_melding_key, 7, '0'), 1, 4)
          || '___'
          || '/M'
          || m.mld_melding_key
          || '/'
          || k.mld_kenmerk_key
             foldervertaaldocumenten
     FROM mld_kenmerk k, mld_melding m, mld_stdmelding sm
    WHERE k.mld_kenmerk_niveau IN ('S', 'D')
          AND k.mld_srtkenmerk_key IN (483, 1881)      -- Te vertalen document
          AND k.mld_kenmerk_verwijder IS NULL
          AND k.mld_stdmelding_key = m.mld_stdmelding_key
          AND m.mld_stdmelding_key = sm.mld_stdmelding_key
          AND sm.mld_ins_discipline_key = 245                 -- Vertaaldienst
          AND m.mld_melding_status IN (1, 5, 6) -- Melding Afgewezen, TV of AV
          AND ((fac.gettrackingdate ('MLDAFM', m.mld_melding_key) < (SYSDATE - 60)
                AND fac.gettrackingdate ('MLDAFM', m.mld_melding_key) > (SYSDATE - 75))
               OR (fac.gettrackingdate ('MLDREJ', m.mld_melding_key) < (SYSDATE - 60)
                   AND fac.gettrackingdate ('MLDREJ', m.mld_melding_key) > (SYSDATE - 75)))
   UNION
   SELECT m.mld_melding_key,
          m.mld_melding_datum,
          fac.gettrackingdate ('ORDAFM', o.mld_opdr_key),
          COALESCE (fac.gettrackingdate ('ORDREJ', o.mld_opdr_key), fac.gettrackingdate ('ORDCAN', o.mld_opdr_key)),
          --'../flexfiles/mld/O'
          '/MLD/O'
          || SUBSTR (LPAD (o.mld_opdr_key, 7, '0'), 1, 4)
          || '___'
          || '/O'
          || o.mld_opdr_key
          || '/'
          || k.mld_kenmerk_key
             foldervertaaldocumenten
     FROM mld_kenmerk k, mld_opdr o, mld_melding m, mld_stdmelding sm
    WHERE k.mld_kenmerk_niveau = 'O'
          AND k.mld_srtkenmerk_key IN (483, 1881)      -- Te vertalen document
          AND k.mld_kenmerk_verwijder IS NULL
          AND k.mld_typeopdr_key = o.mld_typeopdr_key
          AND o.mld_melding_key = m.mld_melding_key
          AND m.mld_stdmelding_key = sm.mld_stdmelding_key
          AND sm.mld_ins_discipline_key = 245                 -- Vertaaldienst
          AND m.mld_melding_status IN (1, 5, 6) -- Melding Afgewezen, TV of AV
          AND o.mld_statusopdr_key IN (1, 2, 6, 7, 9) -- Opdracht Afgewezen, Niet akkoord, TV, AV of KV
          AND ((fac.gettrackingdate ('ORDAFM', o.mld_opdr_key) < (SYSDATE - 60)
                AND fac.gettrackingdate ('ORDAFM', o.mld_opdr_key) > (SYSDATE - 75))
               OR (fac.gettrackingdate ('ORDREJ', o.mld_opdr_key) < (SYSDATE - 60)
                   AND fac.gettrackingdate ('ORDREJ', o.mld_opdr_key) > (SYSDATE - 75))
               OR (fac.gettrackingdate ('ORDCAN', o.mld_opdr_key) < (SYSDATE - 60)
                   AND fac.gettrackingdate ('ORDCAN', o.mld_opdr_key) > (SYSDATE - 75)))
   UNION
   SELECT m.mld_melding_key,
          m.mld_melding_datum,
          fac.gettrackingdate ('ORDAFM', o.mld_opdr_key),
          COALESCE (fac.gettrackingdate ('ORDREJ', o.mld_opdr_key), fac.gettrackingdate ('ORDCAN', o.mld_opdr_key)),
          --'../flexfiles/mld/O'
          '/MLD/O'
          || SUBSTR (LPAD (o.mld_opdr_key, 7, '0'), 1, 4)
          || '___'
          || '/O'
          || o.mld_opdr_key
          || '/'
          || k.mld_kenmerk_key
             foldervertaaldocumenten
     FROM mld_kenmerk k, mld_opdr o, mld_melding m, mld_stdmelding sm, mld_kenmerkopdr ko
    WHERE k.mld_kenmerk_niveau = 'O'
          AND k.mld_srtkenmerk_key IN (801, 802, 803, 804, 821, 822) -- Vertaalde documenten
          AND k.mld_kenmerk_verwijder IS NULL
          AND k.mld_typeopdr_key = o.mld_typeopdr_key
          AND o.mld_melding_key = m.mld_melding_key
          AND m.mld_stdmelding_key = sm.mld_stdmelding_key
          AND sm.mld_ins_discipline_key = 245                 -- Vertaaldienst
          AND m.mld_melding_status IN (1, 5, 6) -- Melding Afgewezen, TV of AV
          AND o.mld_statusopdr_key IN (1, 2, 6, 7, 9) -- Opdracht Afgewezen, Niet akkoord, TV, AV of KV
          AND ko.mld_opdr_key = o.mld_opdr_key     -- If kenmerkopdr exists...
          AND ko.mld_kenmerk_key = k.mld_kenmerk_key    -- ...for opdr+kenmerk
          AND ((fac.gettrackingdate ('ORDAFM', o.mld_opdr_key) < (SYSDATE - 60)
                AND fac.gettrackingdate ('ORDAFM', o.mld_opdr_key) > (SYSDATE - 75))
               OR (fac.gettrackingdate ('ORDREJ', o.mld_opdr_key) < (SYSDATE - 60)
                   AND fac.gettrackingdate ('ORDREJ', o.mld_opdr_key) > (SYSDATE - 75))
               OR (fac.gettrackingdate ('ORDCAN', o.mld_opdr_key) < (SYSDATE - 60)
                   AND fac.gettrackingdate ('ORDCAN', o.mld_opdr_key) > (SYSDATE - 75)))
   UNION -- UWVA#40012: Schonen bijlagen bij Buitenlandse reis (soortmeldingen met keys 2941 en 3442)
   SELECT m.mld_melding_key,
          m.mld_melding_datum,
          fac.gettrackingdate ('MLDAFM', m.mld_melding_key),
          fac.gettrackingdate ('MLDREJ', m.mld_melding_key),
          --'../flexfiles/mld/M'
          '/MLD/M'
          || SUBSTR (LPAD (m.mld_melding_key, 7, '0'), 1, 4)
          || '___'
          || '/M'
          || m.mld_melding_key
          || '/'
          || k.mld_kenmerk_key
             foldervertaaldocumenten
     FROM mld_kenmerk k, mld_melding m
    WHERE k.mld_kenmerk_niveau = 'S' --IN ('S', 'D')
          AND k.mld_srtkenmerk_key IN (441, 1841) -- Bijlage/Aanvraagformulier buitenlandse reis
          --AND k.mld_kenmerk_verwijder IS NULL
          AND k.mld_stdmelding_key = m.mld_stdmelding_key
          AND m.mld_stdmelding_key IN (2941, 3442) -- Buitenlandse reis (oud en nieuw)
          AND m.mld_melding_status IN (1, 5, 6) -- Melding Afgewezen, TV of AV
          AND ((fac.gettrackingdate ('MLDAFM', m.mld_melding_key) < (SYSDATE - 60)
                 AND fac.gettrackingdate ('MLDAFM', m.mld_melding_key) > (SYSDATE - 75))
               OR (fac.gettrackingdate ('MLDREJ', m.mld_melding_key) < (SYSDATE - 60)
                   AND fac.gettrackingdate ('MLDREJ', m.mld_melding_key) > (SYSDATE - 75)))
   UNION -- UWVA#40012: Schonen bijlagen bij Buitenlandse reis (opdrachten onder soortmeldingen met keys 2941 en 3442)
   SELECT m.mld_melding_key,
          m.mld_melding_datum,
          fac.gettrackingdate ('ORDAFM', o.mld_opdr_key),
          COALESCE (fac.gettrackingdate ('ORDREJ', o.mld_opdr_key), fac.gettrackingdate ('ORDCAN', o.mld_opdr_key)),
          --'../flexfiles/mld/O'
          '/MLD/O'
          || SUBSTR (LPAD (o.mld_opdr_key, 7, '0'), 1, 4)
          || '___'
          || '/O'
          || o.mld_opdr_key
          || '/'
          || k.mld_kenmerk_key
             foldervertaaldocumenten
     FROM mld_kenmerk k, mld_opdr o, mld_melding m
    WHERE k.mld_kenmerk_niveau = 'O'
          AND k.mld_srtkenmerk_key IN (441, 1841) -- Bijlage/Aanvraagformulier buitenlandse reis
          --AND k.mld_kenmerk_verwijder IS NULL
          AND k.mld_typeopdr_key = o.mld_typeopdr_key
          AND o.mld_melding_key = m.mld_melding_key
          AND m.mld_stdmelding_key IN (2941, 3442) -- Buitenlandse reis (oud en nieuw)
          AND m.mld_melding_status IN (1, 5, 6) -- Melding Afgewezen, TV of AV
          AND o.mld_statusopdr_key IN (1, 2, 6, 7, 9) -- Opdracht Afgewezen, Niet akkoord, TV, AV of KV
          AND ((fac.gettrackingdate ('ORDAFM', o.mld_opdr_key) < (SYSDATE - 60)
                AND fac.gettrackingdate ('ORDAFM', o.mld_opdr_key) > (SYSDATE - 75))
               OR (fac.gettrackingdate ('ORDREJ', o.mld_opdr_key) < (SYSDATE - 60)
                   AND fac.gettrackingdate ('ORDREJ', o.mld_opdr_key) > (SYSDATE - 75))
               OR (fac.gettrackingdate ('ORDCAN', o.mld_opdr_key) < (SYSDATE - 60)
                   AND fac.gettrackingdate ('ORDCAN', o.mld_opdr_key) > (SYSDATE - 75)));
/*
   UNION -- UWVA#52959: Schonen bijlagen bij Aanvraag meubilair op medische indicatie (soortmeldingen met keys 741, 2525, 3234)
   SELECT m.mld_melding_key,
          m.mld_melding_datum,
          fac.gettrackingdate ('MLDAFM', m.mld_melding_key),
          fac.gettrackingdate ('MLDREJ', m.mld_melding_key),
          --'../flexfiles/mld/M'
          '/MLD/M'
          || SUBSTR (LPAD (m.mld_melding_key, 7, '0'), 1, 4)
          || '___'
          || '/M'
          || m.mld_melding_key
          || '/'
          || k.mld_kenmerk_key
             foldervertaaldocumenten
     FROM mld_kenmerk k, mld_melding m, mld_stdmelding sm
    WHERE k.mld_srtkenmerk_key = 441                               -- Bijlage
          --AND k.mld_kenmerk_verwijder IS NULL
          AND m.mld_stdmelding_key IN (741, 2525, 3234) -- Aanvraag meubilair op medische indicatie
          AND m.mld_melding_status IN (1, 5, 6) -- Melding Afgewezen, TV of AV
          AND m.mld_stdmelding_key = sm.mld_stdmelding_key
          AND ((m.mld_stdmelding_key = k.mld_stdmelding_key AND k.mld_kenmerk_niveau = 'S')
               OR (sm.mld_ins_discipline_key = k.mld_stdmelding_key AND k.mld_kenmerk_niveau = 'D'))
          --TODO:AND ((fac.gettrackingdate ('MLDAFM', m.mld_melding_key) < (SYSDATE - 60)
          --      AND fac.gettrackingdate ('MLDAFM', m.mld_melding_key) > (SYSDATE - 75))
          --     OR (fac.gettrackingdate ('MLDREJ', m.mld_melding_key) < (SYSDATE - 60)
          --         AND fac.gettrackingdate ('MLDREJ', m.mld_melding_key) > (SYSDATE - 75)))
          AND (fac.gettrackingdate ('MLDAFM', m.mld_melding_key) < (SYSDATE - 60)
               OR fac.gettrackingdate ('MLDREJ', m.mld_melding_key) < (SYSDATE - 60))
   UNION -- UWVA#52959: Schonen bijlagen bij Aanvraag meubilair op medische indicatie (opdrachten onder soortmeldingen met keys 741, 2525, 3234)
   SELECT m.mld_melding_key,
          m.mld_melding_datum,
          fac.gettrackingdate ('ORDAFM', o.mld_opdr_key),
          COALESCE (fac.gettrackingdate ('ORDREJ', o.mld_opdr_key), fac.gettrackingdate ('ORDCAN', o.mld_opdr_key)),
          --'../flexfiles/mld/O'
          '/MLD/O'
          || SUBSTR (LPAD (o.mld_opdr_key, 7, '0'), 1, 4)
          || '___'
          || '/O'
          || o.mld_opdr_key
          || '/'
          || k.mld_kenmerk_key
             foldervertaaldocumenten
     FROM mld_kenmerk k, mld_opdr o, mld_melding m
    WHERE k.mld_kenmerk_niveau = 'O'
          AND k.mld_srtkenmerk_key = 441                            -- Bijlage
          --AND k.mld_kenmerk_verwijder IS NULL
          AND k.mld_typeopdr_key = o.mld_typeopdr_key
          AND o.mld_melding_key = m.mld_melding_key
          AND m.mld_stdmelding_key IN (741, 2525, 3234) -- Aanvraag meubilair op medische indicatie
          AND m.mld_melding_status IN (1, 5, 6) -- Melding Afgewezen, TV of AV
          AND o.mld_statusopdr_key IN (1, 2, 6, 7, 9) -- Opdracht Afgewezen, Niet akkoord, TV, AV of KV
          --TODO:AND ((fac.gettrackingdate ('ORDAFM', o.mld_opdr_key) < (SYSDATE - 60)
          --      AND fac.gettrackingdate ('ORDAFM', o.mld_opdr_key) > (SYSDATE - 75))
          --     OR (fac.gettrackingdate ('ORDREJ', o.mld_opdr_key) < (SYSDATE - 60)
          --         AND fac.gettrackingdate ('ORDREJ', o.mld_opdr_key) > (SYSDATE - 75))
          --     OR (fac.gettrackingdate ('ORDCAN', o.mld_opdr_key) < (SYSDATE - 60)
          --         AND fac.gettrackingdate ('ORDCAN', o.mld_opdr_key) > (SYSDATE - 75)))
          AND (fac.gettrackingdate ('ORDAFM', o.mld_opdr_key) < (SYSDATE - 60)
               OR fac.gettrackingdate ('ORDREJ', o.mld_opdr_key) < (SYSDATE - 60)
               OR fac.gettrackingdate ('ORDCAN', o.mld_opdr_key) < (SYSDATE - 60));
*/
CREATE OR REPLACE VIEW uwva_v_vertaal_subsidie
(
   fclt_f_maand,
   fclt_f_nationaliteit,
   fclt_f_brontaal,
   fclt_f_doeltaal,
   aantal_woorden,
   hide_f_datumuitgevoerd,
   fclt_3d_locatie_key,
   hide_f_melding_key,
   hide_f_opdracht_key
)
AS
     SELECT TO_CHAR (m.mld_melding_datum, 'YYYY-MM') AS fclt_f_maand,
            ud_nat.fac_usrdata_omschr AS nationaliteit,
            (SELECT fd.fac_usrdata_omschr
               FROM mld_kenmerkmelding k1, fac_usrdata fd
              WHERE     k1.mld_melding_key = m.mld_melding_key
                    AND k1.mld_kenmerk_key = 706               -- vertalen van
                    AND fd.fac_usrtab_key = 401                    -- Brontaal
                    AND fac.safe_to_number (k1.mld_kenmerkmelding_waarde) =
                          fd.fac_usrdata_key)
               AS brontaal,
            (SELECT fd.fac_usrdata_omschr
               FROM mld_kenmerkmelding k1, fac_usrdata fd
              WHERE     k1.mld_melding_key = m.mld_melding_key
                    AND k1.mld_kenmerk_key = 707              -- vertalen naar
                    AND fd.fac_usrtab_key = 401                    -- Doeltaal
                    AND fac.safe_to_number (k1.mld_kenmerkmelding_waarde) =
                          fd.fac_usrdata_key)
               AS doeltaal,
            o.mld_opdr_uren AS aantal_woorden,
            TO_CHAR (fac.gettrackingdate ('ORDAFM', o.mld_opdr_key),
                     'DD-MM-YYYY')
               AS hide_f_datumuitgevoerd,
            m.mld_alg_locatie_key AS fclt_3d_locatie_key,
            m.mld_melding_key,
            o.mld_opdr_key
       FROM mld_melding m,
            mld_opdr o,
            mld_kenmerkmelding nat,
            fac_usrdata ud_nat
      WHERE     m.mld_stdmelding_key = 1301
            AND m.mld_melding_key = o.mld_melding_key(+)
            AND nat.mld_melding_key = m.mld_melding_key
            AND nat.mld_kenmerk_key = 821
            AND ud_nat.fac_usrtab_key = 441                   -- Nationaliteit
            AND fac.safe_to_number (nat.mld_kenmerkmelding_waarde) =
                  ud_nat.fac_usrdata_key
            AND ud_nat.fac_usrdata_prijs = 1               -- EU Nationaliteit
            AND o.mld_statusopdr_key IN (6, 7, 9)
   ORDER BY 1,
            2,
            3,
            4;

CREATE OR REPLACE VIEW UWVA_V_VERTAAL_SUBSIDIE_UITG
(
   FCLT_F_MAAND,
   FCLT_F_NATIONALITEIT,
   FCLT_F_BRONTAAL,
   FCLT_F_DOELTAAL,
   AANTAL_WOORDEN,
   FCLT_3D_LOCATIE_KEY
)
AS
     SELECT fclt_f_maand,
            fclt_f_nationaliteit,
            fclt_f_brontaal,
            fclt_f_doeltaal,
            SUM (aantal_woorden) aantal_woorden,
            fclt_3d_locatie_key
       FROM uwva_v_vertaal_subsidie tab
   GROUP BY fclt_f_maand,
            fclt_f_nationaliteit,
            fclt_f_brontaal,
            fclt_f_doeltaal,
            fclt_3d_locatie_key
   ORDER BY 1,
            2,
            3,
            4,
            5;

/


CREATE OR REPLACE FORCE VIEW uwva_v_vertaalwerk_omzet
(
   fclt_f_maand,
   fclt_f_vertaalbureau,
   fclt_f_nationaliteit,
   fclt_f_brontaal,
   fclt_f_doeltaal,
   aantal_woorden,
   omzet,
   hide_f_datumuitgevoerd,
   fclt_3d_locatie_key,
   hide_f_melding_key,
   hide_f_opdracht_key
)
AS
     SELECT TO_CHAR (m.mld_melding_datum, 'YYYY-MM') AS fclt_f_maand,
            b.prs_bedrijf_naam vertaalbureau,
            ud_nat.fac_usrdata_omschr AS nationaliteit,
            (SELECT fd.fac_usrdata_omschr
               FROM mld_kenmerkmelding k1, fac_usrdata fd
              WHERE     k1.mld_melding_key = m.mld_melding_key
                    AND k1.mld_kenmerk_key = 706               -- vertalen van
                    AND fd.fac_usrtab_key = 401                    -- Brontaal
                    AND fac.safe_to_number (k1.mld_kenmerkmelding_waarde) =
                          fd.fac_usrdata_key)
               AS brontaal,
            (SELECT fd.fac_usrdata_omschr
               FROM mld_kenmerkmelding k1, fac_usrdata fd
              WHERE     k1.mld_melding_key = m.mld_melding_key
                    AND k1.mld_kenmerk_key = 707              -- vertalen naar
                    AND fd.fac_usrtab_key = 401                    -- Doeltaal
                    AND fac.safe_to_number (k1.mld_kenmerkmelding_waarde) =
                          fd.fac_usrdata_key)
               AS doeltaal,
            o.mld_opdr_uren AS aantal_woorden,
            o.mld_opdr_kosten AS omzet,
            TO_CHAR (fac.gettrackingdate ('ORDAFM', o.mld_opdr_key),
                     'DD-MM-YYYY')
               AS hide_f_datumuitgevoerd,
            m.mld_alg_locatie_key AS fclt_3d_locatie_key,
            m.mld_melding_key,
            o.mld_opdr_key
       FROM mld_melding m,
            mld_opdr o,
            mld_kenmerkmelding nat,
            fac_usrdata ud_nat,
            prs_v_uitvoerendebedrijf b
      WHERE     m.mld_stdmelding_key = 1301
            AND m.mld_melding_key = o.mld_melding_key(+)
            AND nat.mld_melding_key = m.mld_melding_key
            AND o.mld_uitvoerende_keys = b.prs_bedrijf_key
            AND nat.mld_kenmerk_key = 821
            AND ud_nat.fac_usrtab_key = 441                   -- Nationaliteit
            AND fac.safe_to_number (nat.mld_kenmerkmelding_waarde) =
                  ud_nat.fac_usrdata_key
            AND o.mld_statusopdr_key IN (6, 7, 9)
   ORDER BY 1,
            2,
            3,
            4,
            5;

CREATE OR REPLACE VIEW UWVA_V_VERTAALWERK_OMZET_UITG
(
   FCLT_F_MAAND,
   FCLT_F_VERTAALBUREAU,
   FCLT_F_NATIONALITEIT,
   FCLT_F_BRONTAAL,
   FCLT_F_DOELTAAL,
   AANTAL_WOORDEN,
   OMZET,
   FCLT_3D_LOCATIE_KEY
)
AS
     SELECT fclt_f_maand,
            fclt_f_vertaalbureau,
            fclt_f_nationaliteit,
            fclt_f_brontaal,
            fclt_f_doeltaal,
            SUM (aantal_woorden) aantal_woorden,
            SUM (omzet) omzet,
            fclt_3d_locatie_key
       FROM uwva_v_vertaalwerk_omzet tab
   GROUP BY fclt_f_maand,
            fclt_f_vertaalbureau,
            fclt_f_nationaliteit,
            fclt_f_brontaal,
            fclt_f_doeltaal,
            fclt_3d_locatie_key
   ORDER BY 1,
            2,
            3,
            4,
            5;

/

CREATE OR REPLACE PACKAGE UWVA_RAP
AS
   -- PACKAGES voor de UWVA specifieke rapportages
   TYPE t_cursor IS REF CURSOR;

   PROCEDURE uwva_rap_afgemelde_kl (user_key      IN     NUMBER,
                                    p_datum_van   IN     VARCHAR2,
                                    p_datum_tot   IN     VARCHAR2,
                                    p_cursor         OUT t_cursor);

   PROCEDURE uwva_rap_afgemelde_io (user_key      IN     NUMBER,
                                    p_datum_van   IN     VARCHAR2,
                                    p_datum_tot   IN     VARCHAR2,
                                    p_cursor         OUT t_cursor);

   PROCEDURE uwva_rap_hv_cntopeind (user_key      IN     NUMBER,
                                    p_datum_van   IN     VARCHAR2,
                                    p_datum_tot   IN     VARCHAR2,
                                    p_cursor         OUT t_cursor);

   PROCEDURE uwva_rap_hv_cntopopzeg (user_key      IN     NUMBER,
                                     p_datum_van   IN     VARCHAR2,
                                     p_datum_tot   IN     VARCHAR2,
                                     p_cursor         OUT t_cursor);

   PROCEDURE uwva_rap_vert_sub (user_key      IN     NUMBER,
                                p_datum_van   IN     VARCHAR2,
                                p_datum_tot   IN     VARCHAR2,
                                p_cursor         OUT t_cursor);

   PROCEDURE uwva_rap_vertaalw_omz (user_key      IN     NUMBER,
                                    p_datum_van   IN     VARCHAR2,
                                    p_datum_tot   IN     VARCHAR2,
                                    p_cursor         OUT t_cursor);
END;
/


CREATE OR REPLACE PACKAGE BODY uwva_rap
AS
   --
   -- Algemene procedures en functies.
   --
   PROCEDURE uwva_rap_afgemelde_kl (user_key      IN     NUMBER,
                                    p_datum_van   IN     VARCHAR2, -- Let wel: formaat '16-01-2006'
                                    p_datum_tot   IN     VARCHAR2,
                                    p_cursor         OUT t_cursor)
   AS
      v_datum_van   DATE;
      v_datum_tot   DATE;
   BEGIN
      v_datum_van := fac.safe_to_date (p_datum_van, 'dd-mm-yyyy');
      v_datum_tot := fac.safe_to_date (p_datum_tot, 'dd-mm-yyyy');

      OPEN p_cursor FOR
           SELECT m.mld_melding_key nummer,
                  TO_CHAR (m.mld_melding_datum, 'DD-MM-YYYY HH24:MI') datum,
                  TO_CHAR (MAX (tr.fac_tracking_datum), 'DD-MM-YYYY HH24:MI')
                     laatste_actie,
                     '['
                  || md.ins_discipline_omschrijving
                  || '/'
                  || (SELECT stdm.mld_stdmelding_omschrijving
                        FROM mld_stdmelding stdm
                       WHERE m.mld_stdmelding_key = stdm.mld_stdmelding_key)
                  || '] '
                  || SUBSTR (m.mld_melding_omschrijving, 1, 2000)
                     omschrijving,
                  m.mld_melding_opmerking opmerking,
                  (SELECT alg_locatie_code
                     FROM alg_locatie l
                    WHERE m.mld_alg_locatie_key = l.alg_locatie_key)
                     plaats
             FROM mld_melding m,
                  mld_stdmelding std,
                  mld_discipline md,
                  alg_v_onroerendgoed_gegevens v,
                  alg_locatie l,
                  prs_perslid p,
                  fac_tracking tr
            WHERE m.mld_alg_locatie_key = l.alg_locatie_key(+)
                  AND m.mld_alg_onroerendgoed_keys =
                        v.alg_onroerendgoed_keys(+)
                  AND m.prs_perslid_key = p.prs_perslid_key
                  AND m.mld_stdmelding_key = std.mld_stdmelding_key
                  AND std.mld_ins_discipline_key = md.ins_discipline_key
                  AND m.mld_melding_status IN (5)
                  AND tr.fac_tracking_refkey = m.mld_melding_key
                  AND tr.fac_srtnotificatie_key IN
                           (SELECT fac_srtnotificatie_key
                              FROM fac_srtnotificatie sn
                             WHERE sn.fac_srtnotificatie_code LIKE 'MLD%')
                  AND md.ins_srtdiscipline_key = 3
                  AND m.mld_melding_datum BETWEEN TO_DATE ('01-01-2010',
                                                           'DD-MM-YYYY')
                                              AND  TO_DATE ('21-01-2010',
                                                            'DD-MM-YYYY')
         GROUP BY mld_melding_key,
                  mld_melding_datum,
                  md.ins_discipline_omschrijving,
                  m.mld_stdmelding_key,
                  m.mld_melding_omschrijving,
                  m.mld_melding_opmerking,
                  m.mld_alg_locatie_key
         ORDER BY 1, 2, 3 DESC;
   END;

   PROCEDURE uwva_rap_afgemelde_io (user_key      IN     NUMBER,
                                    p_datum_van   IN     VARCHAR2, -- Let wel: formaat '16-01-2006'
                                    p_datum_tot   IN     VARCHAR2,
                                    p_cursor         OUT t_cursor)
   AS
      v_datum_van   DATE;
      v_datum_tot   DATE;
   BEGIN
      v_datum_van := fac.safe_to_date (p_datum_van, 'dd-mm-yyyy');
      v_datum_tot := fac.safe_to_date (p_datum_tot, 'dd-mm-yyyy');

      OPEN p_cursor FOR
           SELECT x.sp servicepunt,
                  x.gebouw gebouw,
                  COUNT ( * ) totaal_afgemeld,
                  SUM (y.fsm) fsm_afgemeld
             FROM    (SELECT o.mld_opdr_key,
                             d.alg_district_omschrijving sp,
                             g.alg_gebouw_code gebouw
                        FROM mld_opdr o,
                             mld_v_uitvoerende u,
                             mld_melding m,
                             alg_v_allonroerendgoed aog,
                             alg_locatie l,
                             alg_district d,
                             alg_gebouw g
                       WHERE fac.gettrackingdate ('ORDAFM', o.mld_opdr_key) BETWEEN v_datum_van
                                                                                AND  v_datum_tot
                             -- Afgemeld!
                             AND o.mld_uitvoerende_keys = u.mld_uitvoerende_key
                             AND u.TYPE = 'P'                       -- Intern!
                             AND o.mld_melding_key = m.mld_melding_key
                             AND m.mld_alg_onroerendgoed_keys =
                                   aog.alg_onroerendgoed_keys
                             AND aog.alg_locatie_key = l.alg_locatie_key
                             AND l.alg_district_key = d.alg_district_key
                             AND aog.alg_gebouw_key = g.alg_gebouw_key) x
                  -- Afgemelde interne opdrachten (voor meldingen op gebouw-nivo of lager)
                  LEFT JOIN
                     (SELECT o.mld_opdr_key, 1 fsm
                        FROM mld_opdr o, fac_gebruikersgroep gg
                       WHERE fac.gettrackingdate ('ORDAFM', o.mld_opdr_key) BETWEEN v_datum_van
                                                                                AND  v_datum_tot -- Afgemeld!
                             AND fac.gettrackinguserkey ('ORDAFM',
                                                         o.mld_opdr_key) =
                                   gg.prs_perslid_key
                             AND gg.fac_groep_key = 381) y
                  -- Door FSM afgemelde opdrachten
                  ON x.mld_opdr_key = y.mld_opdr_key
         GROUP BY x.sp, x.gebouw
         ORDER BY x.sp, x.gebouw;
   END;

   -- Contracten op einddatum in een bepaalde periode!
   PROCEDURE uwva_rap_hv_cntopeind (user_key      IN     NUMBER,
                                    p_datum_van   IN     VARCHAR2, -- Let wel: formaat '16-01-2006'
                                    p_datum_tot   IN     VARCHAR2,
                                    p_cursor         OUT t_cursor)
   AS
      v_datum_van   DATE;
      v_datum_tot   DATE;
   BEGIN
      v_datum_van := fac.safe_to_date (p_datum_van, 'dd-mm-yyyy');
      v_datum_tot := fac.safe_to_date (p_datum_tot, 'dd-mm-yyyy');

      OPEN p_cursor FOR
           SELECT hide_f_sortdatum,
                  contract,
                  fclt_f_mantel,
                  beschrijving,
                  --fclt_x_regio,
                  adres,
                  plaats,
                  contractrubriek,
                  begindatum,
                  einddatum,
                  opzegtermijn,
                  opzegdatum,
                  fclt_f_contractstatus,
                  optie_systematiek,
                  cnt_opp,
                  eenheid,
                  fclt_3d_gebouw_key
             FROM uwva_v_rap_hv_cntopeind
            WHERE einddatum BETWEEN v_datum_van AND v_datum_tot
         ORDER BY hide_f_sortdatum;
   END;

   -- Contracten op opzegdatum in een bepaalde periode!
   PROCEDURE uwva_rap_hv_cntopopzeg (user_key      IN     NUMBER,
                                     p_datum_van   IN     VARCHAR2, -- Let wel: formaat '16-01-2006'
                                     p_datum_tot   IN     VARCHAR2,
                                     p_cursor         OUT t_cursor)
   AS
      v_datum_van   DATE;
      v_datum_tot   DATE;
   BEGIN
      v_datum_van := fac.safe_to_date (p_datum_van, 'dd-mm-yyyy');
      v_datum_tot := fac.safe_to_date (p_datum_tot, 'dd-mm-yyyy');

      OPEN p_cursor FOR
           SELECT hide_f_sortdatum,
                  contract,
                  fclt_f_mantel,
                  beschrijving,
                  --fclt_x_regio,
                  adres,
                  plaats,
                  contractrubriek,
                  begindatum,
                  einddatum,
                  opzegtermijn,
                  opzegdatum,
                  fclt_f_contractstatus,
                  optie_systematiek,
                  cnt_opp,
                  eenheid,
                  fclt_3d_gebouw_key
             FROM uwva_v_rap_hv_cntopopzeg
            WHERE opzegdatum BETWEEN v_datum_van AND v_datum_tot
         ORDER BY hide_f_sortdatum;
   END;

   -- Aantal woorden per vertaalde taal in een bepaalde periode!
   PROCEDURE uwva_rap_vert_sub (user_key      IN     NUMBER,
                                p_datum_van   IN     VARCHAR2, -- Let wel: formaat '16-01-2006'
                                p_datum_tot   IN     VARCHAR2,
                                p_cursor         OUT t_cursor)
   AS
      v_datum_van   DATE;
      v_datum_tot   DATE;
   BEGIN
      v_datum_van := fac.safe_to_date (p_datum_van, 'dd-mm-yyyy');
      v_datum_tot := fac.safe_to_date (p_datum_tot, 'dd-mm-yyyy');

      OPEN p_cursor FOR
           SELECT doeltaal, aantal_woorden
             FROM (  SELECT fclt_f_doeltaal AS doeltaal,
                            SUM (aantal_woorden) AS aantal_woorden,
                            'A' extra
                       FROM uwva_v_vertaal_subsidie
                      WHERE TO_DATE (hide_f_datumuitgevoerd, 'dd-mm-yyyy') BETWEEN v_datum_van
                                                                               AND  v_datum_tot
                   GROUP BY fclt_f_doeltaal
                   UNION
                   SELECT '' AS doeltaal,
                          SUM (aantal_woorden) AS aantal_woorden,
                          'B' extra
                     FROM uwva_v_vertaal_subsidie
                    WHERE TO_DATE (hide_f_datumuitgevoerd, 'dd-mm-yyyy') BETWEEN v_datum_van
                                                                             AND  v_datum_tot)
                  tab
         ORDER BY tab.extra, 1;
   END;

   -- Aantal woorden en omzet per vertaalde taal per vertaalbureau in een bepaalde periode!
   PROCEDURE uwva_rap_vertaalw_omz (user_key      IN     NUMBER,
                                    p_datum_van   IN     VARCHAR2, -- Let wel: formaat '16-01-2006'
                                    p_datum_tot   IN     VARCHAR2,
                                    p_cursor         OUT t_cursor)
   AS
      v_datum_van   DATE;
      v_datum_tot   DATE;
   BEGIN
      v_datum_van := fac.safe_to_date (p_datum_van, 'dd-mm-yyyy');
      v_datum_tot := fac.safe_to_date (p_datum_tot, 'dd-mm-yyyy');

      OPEN p_cursor FOR
           SELECT vertaalbureau,
                  doeltaal,
                  aantal_woorden,
                  omzet
             FROM (  SELECT fclt_f_vertaalbureau AS vertaalbureau,
                            fclt_f_doeltaal AS doeltaal,
                            SUM (aantal_woorden) AS aantal_woorden,
                            SUM (omzet) AS omzet,
                            'A' extra
                       FROM uwva_v_vertaalwerk_omzet
                      WHERE TO_DATE (hide_f_datumuitgevoerd, 'dd-mm-yyyy') BETWEEN v_datum_van
                                                                               AND  v_datum_tot
                   GROUP BY fclt_f_vertaalbureau, fclt_f_doeltaal
                   UNION
                   SELECT '' AS vertaalbureau,
                          '' AS doeltaal,
                          SUM (aantal_woorden) AS aantal_woorden,
                          SUM (omzet) AS omzet,
                          'B' extra
                     FROM uwva_v_vertaalwerk_omzet
                    WHERE TO_DATE (hide_f_datumuitgevoerd, 'dd-mm-yyyy') BETWEEN v_datum_van
                                                                             AND  v_datum_tot)
                  tab
         ORDER BY tab.extra, 1, 2;
   END;
END;
/

CREATE OR REPLACE VIEW uwva_v_no_default
(
   naam,
   pers_nr,
   login,
   afdeling
)
AS
   SELECT pf.prs_perslid_naam_full naam,
          p.prs_perslid_nr pers_nr,
          p.prs_perslid_oslogin login,
          a.prs_afdeling_naam || ' - ' || a.prs_afdeling_omschrijving
             afdeling
     FROM prs_afdeling a,
          prs_perslid p,
          prs_v_perslid_fullnames_all pf,
          (SELECT *
             FROM fac_gebruikersgroep
            WHERE fac_groep_key = 241) gg
    WHERE     p.prs_perslid_oslogin IS NOT NULL
          AND p.prs_perslid_key = pf.prs_perslid_key
          AND p.prs_perslid_verwijder IS NULL
          AND p.prs_afdeling_key = a.prs_afdeling_key
          AND gg.prs_perslid_key(+) = p.prs_perslid_key
          AND gg.prs_perslid_key IS NULL;

/

CREATE OR REPLACE VIEW UWVA_V_CATALOGUS
(
   HIDE_F_CATALOGUS,
   KEY,
   FCLT_F_CATALOGUS,
   GROEP,
   OMSCHRIJVING,
   PRIJS,
   EENHEID,
   ART_NR,
   LEVERANCIER,
   VERVALDATUM,
   IMAGE,
   VEELVOUD
)
AS
   SELECT UPPER (dis.ins_discipline_omschrijving) hide_f_Catalogus,
          TO_CHAR (b.bes_srtdeel_key) KEY,
          dis.ins_discipline_omschrijving FCLT_F_Catalogus,
          g.bes_srtgroep_omschrijving groep,
          b.bes_srtdeel_omschrijving omschrijving,
          TO_CHAR (bes.getsrtdeelprijs (b.bes_srtdeel_key, NULL)) prijs,
          b.bes_srtdeel_eenheid eenheid,
          b.bes_srtdeel_nr art_nr,
          bd.prs_bedrijf_naam leverancier,
          TO_CHAR (b.bes_srtdeel_vervaldatum, 'dd-mm-yyyy') vervaldatum,
          b.bes_srtdeel_image image,
          TO_CHAR (b.bes_srtdeel_veelvoud) veelvoud
     FROM bes_v_aanwezigsrtdeel b,
          bes_srtGROEP g,
          PRS_BEDRIJF bd,
          INS_TAB_DISCIPLINE dis
    WHERE     b.bes_srtgroep_key = g.bes_srtgroep_key
          AND b.prs_bedrijf_key = bd.prs_bedrijf_key(+)
          AND dis.ins_discipline_key = g.ins_discipline_key;

/

-- UWVA#12097

CREATE OR REPLACE VIEW uwva_v_res_catalogus
(
   omschrijving,
   kostensoort,
   kostensoort_opmerking,
   artikel_nr,
   artikel_omschrijving,
   artikel_prijs,
   eenheid,
   vaste_prijs
)
AS
   SELECT ins_discipline_omschrijving,
          ks.prs_kostensoort_oms,
          prs_kostensoort_opmerking,
          ra.res_artikel_nr,
          ra.res_artikel_omschrijving,
          ra.res_artikel_prijs,
          ra.res_artikel_eenheid,
          ra.res_artikel_prijs_vast
     FROM res_discipline rd, prs_kostensoort ks, res_v_aanwezigartikel ra
    WHERE     rd.prs_kostensoort_key = ks.prs_kostensoort_key(+)
          AND rd.ins_discipline_verwijder IS NULL
          AND ra.res_artikel_verwijder IS NULL
          AND rd.ins_discipline_key = ra.res_discipline_key;


-- Notification view

CREATE OR REPLACE VIEW uwva_v_noti_mailcheck
(
   sender,
   receiver,
   text,
   par1,
   code,
   key,
   xkey
)
AS
SELECT '',
          prs_perslid_key,
          'Controle e-mail van Facilitor voor de beheerders, verstuurd om '
          || TO_CHAR (SYSDATE, 'DD-MM-YYYY HH24:MI'),
          SYSDATE,
          NULL,
          NULL,
          NULL
     FROM fac_functie f, fac_v_webgebruiker wg
    WHERE     f.fac_functie_key = wg.fac_functie_key
          AND f.fac_functie_code = 'WEB_PRSSYS';


CREATE OR REPLACE VIEW uwva_v_noti_resreminder
(
   code,
   sender,
   receiver,
   text,
   KEY,
   xkey
)
AS
   SELECT code,
          sender,
          receiver,
          REPLACE (text, 'Reservering ', 'HERINNERING voor uw reservering '),
          KEY,
          xkey
     FROM fac_v_noti_resreminder;


-- UWVA#12262: 4.70: nieuwe Rapportage lege email adressen resp. geen uwv mail Personen

CREATE OR REPLACE VIEW uwva_v_invalid_email
AS
     SELECT pf.prs_perslid_naam_full FCLT_F_Naam,
            d.prs_afdeling_naam6 Organisatie,
            p.prs_perslid_email email,
            p.prs_perslid_telefoonnr Telefoon,
            srt_p.prs_srtperslid_omschrijving Functie
       FROM PRS_PERSLID p,
            prs_v_perslid_fullnames pf,
            prs_v_afdeling d,
            PRS_SRTPERSLID srt_p
      WHERE     pf.prs_perslid_key = p.prs_perslid_key
            AND p.prs_perslid_verwijder IS NULL
            AND d.prs_afdeling_key = p.prs_afdeling_key
            AND srt_p.prs_srtperslid_key = p.prs_srtperslid_key
            AND p.prs_perslid_verwijder IS NULL
            AND ( (p.prs_perslid_email IS NULL)
                 OR ( (INSTR (UPPER (p.prs_perslid_email), 'UWV.NL')) = 0))
   ORDER BY p.prs_perslid_upper ASC;


-- UWVA#12422

CREATE OR REPLACE VIEW uwva_v_mld_stdmelding
(
   fclt_f_vakgroep,
   fclt_f_omschrijving,
   acceptatietijd_uren,
   uitvoertijd_dagen,
   kostensoort
)
AS
   SELECT td.ins_discipline_omschrijving,
          sm.mld_stdmelding_omschrijving,
          TO_CHAR (sm.mld_stdmelding_t_accepttijd.tijdsduur)
          || sm.mld_stdmelding_t_accepttijd.eenheid,
          TO_CHAR (sm.mld_stdmelding_t_uitvoertijd.tijdsduur)
          || sm.mld_stdmelding_t_uitvoertijd.eenheid,
          NVL (kss.prs_kostensoort_oms, ksd.prs_kostensoort_oms)
     FROM ins_tab_discipline td,
          mld_stdmelding sm,
          prs_kostensoort kss,
          prs_kostensoort ksd
    WHERE     sm.mld_ins_discipline_key = td.ins_discipline_key
          AND td.ins_discipline_verwijder IS NULL
          AND td.prs_kostensoort_key = ksd.prs_kostensoort_key(+)
          AND sm.prs_kostensoort_key = kss.prs_kostensoort_key(+);

-- UWVA#12460 Overzicht van geautoriseerden voor overige rapportages (WEB_USER<nn>)

CREATE OR REPLACE VIEW uwva_v_overige_rap
(
   autorisatiegroep,
   rapportage,
   omschrijving,
   info
)
AS
     SELECT g.fac_groep_omschrijving autorisatiegroep,
            f.fac_functie_omschrijving rapportage,
            ur.fac_usrrap_omschrijving omschrijving,
            ur.fac_usrrap_info info
       FROM fac_groep g,
            fac_groeprechten gr,
            fac_functie f,
            fac_usrrap ur
      WHERE     g.fac_groep_key = gr.fac_groep_key
            AND gr.fac_functie_key = f.fac_functie_key
            AND f.fac_functie_key = ur.fac_functie_key
            AND SUBSTR (f.fac_functie_code, 1, 8) = 'WEB_USER'
   ORDER BY g.fac_groep_omschrijving,
            f.fac_functie_omschrijving,
            ur.fac_usrrap_omschrijving;


-- AfterSales afmelden van bestellingen, meldingen en reserveringen.
-- UWVA#21019: ook facturen automatisch accorderen (na 4 weken bij de budgethouder)

CREATE OR REPLACE VIEW uwva_v_export_aftersales (result, result_order)
AS
   SELECT '', 0
     FROM DUAL
    WHERE 1 = 0;

----------------------------------------------------------------------------------
--
-- UWVA#29299: Allemaal cursors voor tracken van anonimisering van MLD/RES/BEZ

CREATE OR REPLACE PROCEDURE uwva_aftersales_anonimiseer (
   p_applname   IN VARCHAR2,
   p_applrun    IN VARCHAR2,
   p_filedir    IN VARCHAR2,
   p_filename   IN VARCHAR2)
AS
   -- Delete 'BSN' voor spobilo-meldingen >31 dagen oud! (UWVA#19129)
   CURSOR c_spobilo
   IS
        SELECT m.mld_melding_key, km.mld_kenmerkmelding_key
          FROM mld_melding m, mld_stdmelding sm, mld_discipline md, ins_srtdiscipline sd,
               mld_kenmerkmelding km, mld_kenmerk k, mld_srtkenmerk sk
         WHERE m.mld_melding_datum < SYSDATE - 31
               AND m.mld_melding_datum > SYSDATE - 365 --MB toegevoegd tbv performance
               AND m.mld_stdmelding_key = sm.mld_stdmelding_key
               AND sm.mld_ins_discipline_key = md.ins_discipline_key
               AND md.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
               AND sd.ins_srtdiscipline_key = 5                     -- Spobilo
               AND km.mld_kenmerkmelding_verwijder IS NULL
               AND m.mld_melding_key = km.mld_melding_key
               AND k.mld_kenmerk_verwijder IS NULL
               AND km.mld_kenmerk_key = k.mld_kenmerk_key
               AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
               AND sk.mld_srtkenmerk_key = 105                           --BSN
      ORDER BY m.mld_melding_key;

   CURSOR c_vertaal
   IS
        SELECT m.mld_melding_key, km.mld_kenmerkmelding_key, km.mld_kenmerk_key
          FROM mld_kenmerkmelding km, mld_melding m, fac_tracking tr
         WHERE (km.mld_kenmerk_key IN (702, 703)           -- Gevalsnummer+BSN
                OR (km.mld_kenmerk_key = 701 AND km.mld_kenmerkmelding_waarde != 'Anoniem')) -- Naam en niet Anoniem
               AND km.mld_melding_key = m.mld_melding_key
               AND m.mld_stdmelding_key = 1301                  -- Vertaalwerk
               AND m.mld_melding_key = tr.fac_tracking_refkey
               AND tr.fac_srtnotificatie_key IN (18, 22)      -- MLDAFM/MLDREJ
               AND tr.fac_tracking_datum < SYSDATE - 60
      ORDER BY m.mld_melding_key;

   CURSOR c_archief_dossier_hulshoff
   IS
        SELECT m.mld_melding_key, m.mld_melding_omschrijving, km.mld_kenmerk_key
          FROM mld_melding m, fac_tracking tr, mld_kenmerkmelding km
         WHERE m.mld_stdmelding_key IN (2, 146, 2961) -- Vraag over archief+Overdracht naar Hulshoff+Verwijderen dossiers
               AND m.mld_melding_key = tr.fac_tracking_refkey
               AND tr.fac_srtnotificatie_key IN (18, 22)      -- MLDAFM/MLDREJ
               AND m.mld_melding_key = km.mld_melding_key(+)
               AND km.mld_kenmerk_key(+) = 2385     -- Te verwijderen dossiers
               AND tr.fac_tracking_datum < SYSDATE - 31
               AND tr.fac_tracking_datum > SYSDATE - 365 --MB toegevoegd tbv performance
      ORDER BY m.mld_melding_key;

   CURSOR c_tolk
   IS
      SELECT m.mld_melding_key, km.mld_kenmerkmelding_key
        FROM mld_melding m, fac_tracking tr, mld_kenmerkmelding km, mld_kenmerk k
       WHERE m.mld_stdmelding_key IN (2801, 2802, 2821, 3421, 3422, 3423) -- Tolkdiensten (op UWV locatie+telefonisch+extern)
             AND m.mld_melding_key = tr.fac_tracking_refkey
             AND tr.fac_srtnotificatie_key IN (18, 22)        -- MLDAFM/MLDREJ
             AND m.mld_melding_key = km.mld_melding_key
             AND km.mld_kenmerk_key = k.mld_kenmerk_key
             AND k.mld_srtkenmerk_key = 1500                     -- Naam klant
             AND tr.fac_tracking_datum < SYSDATE - 31
             AND tr.fac_tracking_datum > SYSDATE - 365 --MvH toegevoegd tbv performance
      UNION ALL
      SELECT m.mld_melding_key, km.mld_kenmerkmelding_key
        FROM mld_melding m, fac_tracking tr, mld_kenmerkmelding km, mld_kenmerk k
       WHERE m.mld_stdmelding_key = 1721       -- Tolk Nederlandse gebarentaal
             AND m.mld_melding_key = tr.fac_tracking_refkey
             AND tr.fac_srtnotificatie_key IN (18, 22)        -- MLDAFM/MLDREJ
             AND m.mld_melding_key = km.mld_melding_key
             AND km.mld_kenmerk_key = k.mld_kenmerk_key
             AND k.mld_srtkenmerk_key = 701        -- Naam gesprekspartner UWV
             AND tr.fac_tracking_datum < SYSDATE - 31
             --AND tr.fac_tracking_datum > SYSDATE - 365 --MvH toegevoegd tbv performance
      ORDER BY 1;

   -- UWVA#55161: Uitbreiding anonimisering met onderstaande MLD/BES-kenmerksoorten!
   CURSOR c_mld_kenmerksoorten
   IS
      SELECT DISTINCT m.mld_melding_key
        FROM mld_melding m, fac_tracking tr, mld_kenmerkmelding km, mld_kenmerk k
       WHERE m.mld_melding_key = tr.fac_tracking_refkey
             AND tr.fac_srtnotificatie_key IN (18, 22)        -- MLDAFM/MLDREJ
             AND m.mld_melding_key = km.mld_melding_key
             AND km.mld_kenmerk_key = k.mld_kenmerk_key
             AND k.mld_srtkenmerk_key IN (1267, 1665, 1722, 1765) -- Adres/Telefoonnummer/IBAN/Exacte tenaamsteling
             AND tr.fac_tracking_datum < SYSDATE - 31
             --AND tr.fac_tracking_datum > SYSDATE - 365 --MvH toegevoegd tbv performance
      ORDER BY 1;

   CURSOR c_bes_kenmerksoorten
   IS
      SELECT DISTINCT b.bes_bestelling_key
        FROM bes_bestelling b, fac_tracking tr, bes_kenmerkbestell kb, bes_kenmerk k
       WHERE b.bes_bestelling_key = tr.fac_tracking_refkey
             AND tr.fac_srtnotificatie_key IN (6, 7)        -- BESOTV/BESREJ
             AND b.bes_bestelling_key = kb.bes_bestelling_key
             AND kb.bes_kenmerk_key = k.bes_kenmerk_key
             AND k.bes_srtkenmerk_key IN (4, 5, 8) -- Afgeven bij/Straat huisnummer/Telefoon
             AND tr.fac_tracking_datum < SYSDATE - 31
             --AND tr.fac_tracking_datum > SYSDATE - 365 --MvH toegevoegd tbv performance
      ORDER BY 1;

   -- Delete 'BSN' van alle bezoekers bij afspraken >31 dagen oud! (UWVA#28511)
   CURSOR c_afspraak
   IS                   -- Afspraken met een bezoeker met een gevuld BSN-veld!
      SELECT DISTINCT a.bez_afspraak_key
        FROM bez_afspraak a, bez_bezoekers b, bez_kenmerkwaarde bk
       WHERE a.bez_afspraak_key = b.bez_afspraak_key
             AND b.bez_bezoekers_key = bk.bez_bezoekers_key
             AND bk.bez_kenmerk_key = 1                                  --BSN
             AND a.bez_afspraak_datum < SYSDATE - 31
             AND a.bez_afspraak_datum > SYSDATE - 365 --MvH toegevoegd tbv performance
      UNION
      SELECT DISTINCT a.bez_afspraak_key
        FROM bez_afspraak a, bez_bezoekers b
       WHERE a.bez_afspraak_key = b.bez_afspraak_key
             AND (LENGTH (REPLACE (bez_afspraak_bedrijf || 'x', ' ', '')) - LENGTH (REPLACE (TRANSLATE (bez_afspraak_bedrijf || 'x', '1234567890', ' '), ' ', '')) > 5
                  OR LENGTH (REPLACE (bez_afspraak_naam || 'x', ' ', '')) - LENGTH (REPLACE (TRANSLATE (bez_afspraak_naam || 'x', '1234567890', ' '), ' ', '')) > 5)
             AND a.bez_afspraak_datum < SYSDATE - 31
             AND a.bez_afspraak_datum > SYSDATE - 365 --MvH toegevoegd tbv performance
      UNION -- Afspraken bij een reservering met een gevuld BSN-veld (voordat die in c_res wordt verwijderd)!
      SELECT a.bez_afspraak_key
        FROM bez_afspraak a, res_rsv_ruimte r, res_kenmerkwaarde kw,  res_kenmerk k
       WHERE a.res_rsv_ruimte_key = r.res_rsv_ruimte_key
             AND r.res_rsv_ruimte_key = kw.res_rsv_ruimte_key
             AND kw.res_kenmerk_key = k.res_kenmerk_key
             AND k.res_srtkenmerk_key = 3                                --BSN
             AND a.bez_afspraak_datum < SYSDATE - 31
             AND a.bez_afspraak_datum > SYSDATE - 365 --MvH toegevoegd tbv performance
      ORDER BY bez_afspraak_key;

   -- Reserveringen met een gevuld BSN-veld (deze hebben hier geen bezoekers meer met een gevuld BSN-veld)!
   CURSOR c_res
   IS
        SELECT r.res_rsv_ruimte_key, kw.res_kenmerkwaarde_key
          FROM res_rsv_ruimte r, res_kenmerkwaarde kw, res_kenmerk k
         WHERE r.res_rsv_ruimte_key = kw.res_rsv_ruimte_key
               AND kw.res_kenmerk_key = k.res_kenmerk_key
               AND k.res_srtkenmerk_key = 3                              --BSN
               AND r.res_rsv_ruimte_tot < SYSDATE - 31
               AND r.res_rsv_ruimte_tot > SYSDATE - 365 --MB toegevoegd tbv performance
      ORDER BY res_rsv_ruimte_key;

   v_errorhint         VARCHAR2 (1000);
   v_errormsg          VARCHAR2 (1000);
   oracle_err_num      NUMBER;
   oracle_err_mes      VARCHAR2 (200);

   h_mld_melding_key   NUMBER (10);                           --hulp-variabele

   v_nu                DATE;
   v_txt_anoniem       VARCHAR2 (200);
BEGIN
   v_nu := SYSDATE;
   v_txt_anoniem := 'Geanonimiseerd';

   ----------------------------------------------------------------------------------------------------------------------------------------------------------------------
   FOR rc IN c_spobilo
   LOOP
      DELETE FROM mld_kenmerkmelding
            WHERE mld_kenmerkmelding_key = rc.mld_kenmerkmelding_key;

      DELETE FROM fac_tracking
            WHERE fac_srtnotificatie_key = 23                        -- MLDUPD
                  AND fac_tracking_refkey = rc.mld_melding_key;

      fac.trackaction ('#MLDUPD', rc.mld_melding_key, NULL, v_nu, v_txt_anoniem);
   END LOOP;

   COMMIT;

   ----------------------------------------------------------------------------------------------------------------------------------------------------------------------
   h_mld_melding_key := 0;

   FOR rc IN c_vertaal
   LOOP
      IF h_mld_melding_key <> rc.mld_melding_key
      THEN
         -- Per vertaalwerk-melding eenmalig tracking toevoegen (en verwijderen), om meervoudige tracking te voorkomen!
         DELETE FROM fac_tracking
               WHERE fac_srtnotificatie_key = 23                     -- MLDUPD
                     AND (UPPER (fac_tracking_oms) LIKE '%BSN%' OR UPPER (fac_tracking_oms) LIKE '%NAAM%')
                     AND fac_tracking_refkey = rc.mld_melding_key;

         fac.trackaction ('#MLDUPD', rc.mld_melding_key, NULL, v_nu, v_txt_anoniem);
      END IF;

      IF rc.mld_kenmerk_key = 701                                      -- Naam
      THEN
         UPDATE mld_kenmerkmelding
            SET mld_kenmerkmelding_waarde = 'Anoniem'
          WHERE mld_kenmerkmelding_key = rc.mld_kenmerkmelding_key;
      END IF;

      IF (rc.mld_kenmerk_key = 702 OR rc.mld_kenmerk_key = 703) -- Gevalsnummer of BSN
      THEN
         DELETE FROM mld_kenmerkmelding
               WHERE mld_kenmerkmelding_key = rc.mld_kenmerkmelding_key;
      END IF;

      h_mld_melding_key := rc.mld_melding_key;
   END LOOP;

   COMMIT;

   ----------------------------------------------------------------------------------------------------------------------------------------------------------------------
   -- Delete/anonimiseer bovenstaande kenmerken ook uit Omschrijving van opdracht! (UWVA#28316)
   EXECUTE IMMEDIATE 'ALTER TRIGGER MLD_T_MLD_OPDR_B_IU DISABLE';

   UPDATE mld_opdr
      SET mld_opdr_omschrijving = '[Geanonimiseerd; zie bovenliggende melding voor nog aanwezige gegevens.]'
    WHERE COALESCE (mld_opdr_omschrijving, '-') NOT LIKE '[Geanonimiseerd%'
          AND mld_melding_key IN
                   (SELECT mld_melding_key
                      FROM mld_melding m, fac_tracking tr
                     WHERE m.mld_stdmelding_key = 1301          -- Vertaalwerk
                           AND m.mld_melding_key = tr.fac_tracking_refkey
                           AND tr.fac_srtnotificatie_key IN (18, 22) -- MLDAFM/MLDREJ
                           AND tr.fac_tracking_datum < SYSDATE - 60);

   EXECUTE IMMEDIATE 'ALTER TRIGGER MLD_T_MLD_OPDR_B_IU ENABLE';

   COMMIT;

   ----------------------------------------------------------------------------------------------------------------------------------------------------------------------
   FOR rc IN c_archief_dossier_hulshoff
   LOOP
      IF COALESCE (rc.mld_melding_omschrijving, '-') NOT LIKE '[Geanonimiseerd%' OR rc.mld_kenmerk_key = 2385
      THEN
         DELETE FROM fac_tracking
               WHERE fac_srtnotificatie_key = 23                     -- MLDUPD
                     AND (UPPER (fac_tracking_oms) LIKE '%BSN%' OR UPPER (fac_tracking_oms) LIKE '%NAAM%')
                     AND fac_tracking_refkey = rc.mld_melding_key;

         fac.trackaction ('#MLDUPD', rc.mld_melding_key, NULL, v_nu, v_txt_anoniem);
      END IF;

      -- Delete/anonimiseer Omschrijving van 2-, 146 en 2961-meldingen die >31 dagen geleden zijn afgemeld! (UWVA#29178)
      UPDATE mld_melding
         SET mld_melding_omschrijving = '[Geanonimiseerd.]',
             mld_melding_onderwerp = '[Geanonimiseerd.]'
       WHERE COALESCE (mld_melding_omschrijving, mld_melding_onderwerp) NOT LIKE '[Geanonimiseerd%'
             AND mld_melding_key = rc.mld_melding_key;

      DELETE FROM mld_kenmerkmelding km
            WHERE km.mld_kenmerk_key = 2385         -- Te verwijderen dossiers
                  AND km.mld_melding_key = rc.mld_melding_key;
   END LOOP;

   COMMIT;

   ----------------------------------------------------------------------------------------------------------------------------------------------------------------------
   -- Delete/anonimiseer Omschrijving van 2-, 146 en 2961-opdrachten die >31 dagen geleden zijn afgemeld! (UWVA#29178)
   EXECUTE IMMEDIATE 'ALTER TRIGGER MLD_T_MLD_OPDR_B_IU DISABLE';

   UPDATE mld_opdr
      SET mld_opdr_omschrijving = '[Geanonimiseerd.]'
    WHERE COALESCE (mld_opdr_omschrijving, '-') NOT LIKE '[Geanonimiseerd%'
          AND mld_melding_key IN
                   (SELECT mld_melding_key
                      FROM mld_melding m, fac_tracking tr
                     WHERE m.mld_stdmelding_key IN (2, 146, 2961) -- Vraag over archief+Overdracht naar Hulshoff+Verwijderen dossiers
                           AND m.mld_melding_key = tr.fac_tracking_refkey
                           AND tr.fac_srtnotificatie_key IN (18, 22) -- MLDAFM/MLDREJ
                           AND tr.fac_tracking_datum < SYSDATE - 31);

   EXECUTE IMMEDIATE 'ALTER TRIGGER MLD_T_MLD_OPDR_B_IU ENABLE';

   COMMIT;

   ----------------------------------------------------------------------------------------------------------------------------------------------------------------------
   FOR rc IN c_tolk
   LOOP
      DELETE FROM fac_tracking
            WHERE fac_srtnotificatie_key = 23                        -- MLDUPD
                  AND UPPER (fac_tracking_oms) LIKE '%NAAM%'
                  AND fac_tracking_refkey = rc.mld_melding_key;

      fac.trackaction ('#MLDUPD', rc.mld_melding_key, NULL, v_nu, v_txt_anoniem);

      -- Delete/anonimiseer Omschrijving én Onderwerp van 3421-, 3422-, 3423-, 1721-meldingen die >31 dagen geleden zijn afgemeld! (UWVA#41825)
      -- NIET NODIG VOOR 2801-, 2802-, 2821-MELDINGEN, WANT DIE MELDINGEN HEBBEN GEEN OMSCHRIJVING/ONDERWERP!
      UPDATE mld_melding
         SET mld_melding_omschrijving = '[Geanonimiseerd.]',
             mld_melding_onderwerp = '[Geanonimiseerd.]'
       WHERE mld_stdmelding_key IN (3421, 3422, 3423, 1721)
             AND COALESCE (mld_melding_omschrijving, mld_melding_onderwerp) NOT LIKE '[Geanonimiseerd%'
             AND mld_melding_key = rc.mld_melding_key;

      -- Delete 'Naam klant' (kenmerksoort met key=1500) of 'Naam gesprekspartner UWV' (kenmerksoort met key=701).
      DELETE FROM mld_kenmerkmelding
            WHERE mld_kenmerkmelding_key = rc.mld_kenmerkmelding_key;
   END LOOP;

   COMMIT;

   ----------------------------------------------------------------------------------------------------------------------------------------------------------------------
   -- Delete/anonimiseer Omschrijving van 2801-, 2802-, 2821-opdrachten die >31 dagen geleden zijn afgemeld! (UWVA#33073)
   -- En ook van 3421-, 3422-, 3423-, 1721-opdrachten! (UWVA#41825)
   EXECUTE IMMEDIATE 'ALTER TRIGGER MLD_T_MLD_OPDR_B_IU DISABLE';

   UPDATE mld_opdr
      SET mld_opdr_omschrijving = '[Geanonimiseerd.]'
    WHERE COALESCE (mld_opdr_omschrijving, '-') NOT LIKE '[Geanonimiseerd%'
          AND mld_melding_key IN
                   (SELECT mld_melding_key
                      FROM mld_melding m, fac_tracking tr
                     WHERE m.mld_stdmelding_key IN (2801, 2802, 2821, 3421, 3422, 3423, 1721) -- Tolkdiensten (op UWV locatie+telefonisch+extern)
                           AND m.mld_melding_key = tr.fac_tracking_refkey
                           AND tr.fac_srtnotificatie_key IN (18, 22) -- MLDAFM/MLDREJ
                           AND tr.fac_tracking_datum < SYSDATE - 31
                           AND tr.fac_tracking_datum > TO_DATE ('26062015', 'ddmmyyyy')); -- Per introductie 'Naam klant'!

   EXECUTE IMMEDIATE 'ALTER TRIGGER MLD_T_MLD_OPDR_B_IU ENABLE';

   COMMIT;

   -- UWVA#55161: Uitbreiding anonimisering met onderstaande MLD/BES-kenmerksoorten!
   ----------------------------------------------------------------------------------------------------------------------------------------------------------------------
   FOR rc IN c_mld_kenmerksoorten
   LOOP
      fac.trackaction ('#MLDUPD', rc.mld_melding_key, NULL, v_nu, v_txt_anoniem);

      DELETE FROM mld_kenmerkmelding km -- Inclusief eventueel verwijderde waarden!
            WHERE km.mld_melding_key = rc.mld_melding_key
                  AND EXISTS (SELECT 1
                                FROM mld_kenmerk
                               WHERE mld_srtkenmerk_key IN (1267, 1665, 1722, 1765) -- Adres/Telefoonnummer/IBAN/Exacte tenaamsteling
                                     AND mld_kenmerk_key = km.mld_kenmerk_key);
   END LOOP;

   COMMIT;

   ----------------------------------------------------------------------------------------------------------------------------------------------------------------------
   FOR rc IN c_bes_kenmerksoorten
   LOOP
      fac.trackaction ('#BESUPD', rc.bes_bestelling_key, NULL, v_nu, v_txt_anoniem);

      DELETE FROM bes_kenmerkbestell kb -- Inclusief eventueel verwijderde waarden!
            WHERE kb.bes_bestelling_key = rc.bes_bestelling_key
                  AND EXISTS (SELECT 1
                                FROM bes_kenmerk
                               WHERE bes_srtkenmerk_key IN (4, 5, 8) -- Afgeven bij/Straat huisnummer/Telefoon
                                     AND bes_kenmerk_key = kb.bes_kenmerk_key);
   END LOOP;

   COMMIT;

   ----------------------------------------------------------------------------------------------------------------------------------------------------------------------
   FOR rc IN c_afspraak
   LOOP
      -- Delete 'BSN' van alle bezoekers bij afspraken >31 dagen oud (UWVA#28511)
      DELETE FROM bez_kenmerkwaarde kw
            WHERE EXISTS
                     (SELECT 1
                        FROM bez_bezoekers
                       WHERE bez_bezoekers_key = kw.bez_bezoekers_key
                             AND bez_afspraak_key = rc.bez_afspraak_key);

      -- UWVA#30245: Anonimiseren bez_bezoekers.bez_bezoekers_opmerking hoeft
      --             niet, want bevat geen vertrouwelijke info!

      -- Anonimiseer gegevens per bezoeker van afspraken >31 dagen oud met BSN (bij bezoeker of reservering)
      UPDATE bez_bezoekers
         SET bez_afspraak_naam = 'Anoniem', bez_afspraak_bedrijf = NULL
       WHERE bez_afspraak_key = rc.bez_afspraak_key;

      -- Verwijder opmerking van afspraken >31 dagen oud met BSN (bij bezoeker of reservering)
      UPDATE bez_afspraak
         SET bez_afspraak_opmerking = NULL
       WHERE bez_afspraak_key = rc.bez_afspraak_key;

      DELETE FROM fac_tracking
            WHERE fac_srtnotificatie_key = 334                       -- BEZUPD
                  AND fac_tracking_refkey = rc.bez_afspraak_key;

      DELETE FROM fac_tracking t1
            WHERE t1.fac_srtnotificatie_key IN (14, 15, 61, 62, 154) -- BEZDON/BEZOUT/BEZDO2/BEZOU2/BEZBAD
                  AND t1.fac_tracking_oms IS NOT NULL       -- Niet van belang
                  AND EXISTS
                        (SELECT 1
                           FROM bez_bezoekers b
                          WHERE b.bez_afspraak_key = rc.bez_afspraak_key
                                AND b.bez_bezoekers_key = t1.fac_tracking_refkey);

      fac.trackaction ('#BEZUPD', rc.bez_afspraak_key, NULL, v_nu, v_txt_anoniem);
   END LOOP;

   COMMIT;

   ----------------------------------------------------------------------------------------------------------------------------------------------------------------------
   FOR rc IN c_res
   LOOP
      -- Cursor bevat reserveringen met BSN die moeten worden geanonimiseerd.

      -- Delete 'BSN' voor alle reserveringen >31 dagen oud (dus met BSN)
      -- Per UWVA#29469 ongeacht activiteitkey!
      DELETE FROM res_kenmerkwaarde
            WHERE res_kenmerkwaarde_key = rc.res_kenmerkwaarde_key;

      -- Verwijder opmerking van alle reserveringen >31 dagen oud met BSN
      -- Per UWVA#29469 ongeacht activiteitkey!
      UPDATE res_rsv_ruimte
         SET res_rsv_ruimte_opmerking = NULL
       WHERE res_rsv_ruimte_key = rc.res_rsv_ruimte_key;

      DELETE FROM fac_tracking
            WHERE fac_srtnotificatie_key = 31                        -- RESUPD
                  AND UPPER (fac_tracking_oms) LIKE '%BSN%'
                  AND fac_tracking_refkey = rc.res_rsv_ruimte_key;

      fac.trackaction ('#RESUPD', rc.res_rsv_ruimte_key, NULL, v_nu, v_txt_anoniem);
   /* Hoeft niet meer; gebeurt in c_afspraak-loop!
         -- BEZ-afspraken bij reservering ook anonimiseren; is er gerelateerde afspraak?
         IF rc.bez_afspraak_key IS NOT NULL
         THEN
            -- Ja dus, er is een afspraak bij reservering!

            -- Verwijder opmerking van afspraken bij reserveringen >31 dagen oud met BSN
            -- Per UWVA#29469 ongeacht activiteitkey!
            UPDATE bez_afspraak
               SET bez_afspraak_opmerking = NULL
             WHERE bez_afspraak_key = rc.bez_afspraak_key;

            -- Anonimiseer gegevens per bezoeker bij reserveringen >31 dagen oud met BSN
            -- Per UWVA#29469 ongeacht activiteitkey!
            UPDATE bez_bezoekers
               SET bez_afspraak_naam = 'Anoniem',
                   bez_afspraak_bedrijf = 'Anoniem'
             WHERE bez_afspraak_key = rc.bez_afspraak_key;

            fac.trackaction ('#BEZUPD', rc.bez_afspraak_key, NULL, v_nu, v_txt_anoniem);
         END IF;
   */
   END LOOP;

   COMMIT;
EXCEPTION
   WHEN OTHERS
   THEN
      -- Op verzoek van JGL voor de zekerheid toegevoegd!
      EXECUTE IMMEDIATE 'ALTER TRIGGER MLD_T_MLD_OPDR_B_IU ENABLE';

      oracle_err_num := SQLCODE;
      oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
      v_errormsg := 'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
      fac.writelog (p_applname, 'E', 'Sub-proces ANONIMISEER afgebroken!', v_errormsg);
      COMMIT;
END;
/

CREATE OR REPLACE PROCEDURE uwva_export_aftersales (p_applname   IN VARCHAR2,
                                                    p_applrun    IN VARCHAR2,
                                                    p_filedir    IN VARCHAR2,
                                                    p_filename   IN VARCHAR2)
AS
   -- De bestelopdrachten die ik als compleet geleverd veronderstel,
   -- die zouden in principe meer werkdagen geleden geleverd zijn dan
   -- de 'notidagen' van de catalogus aangeeft.
   CURSOR cbopi
   IS
      SELECT boi.bes_bestelopdr_item_key, bo.bes_bestelopdr_key
        FROM bes_bestelopdr bo,
             bes_bestelopdr_item boi,
             bes_bestelling_item bi,
             bes_bestelling b,
             bes_srtdeel sd,
             bes_srtgroep sg,
             bes_disc_params bdp
       WHERE     bo.bes_bestelopdr_status = 4                 -- In bestelling
             AND bo.bes_bestelopdr_key = boi.bes_bestelopdr_key
             AND boi.bes_bestelopdr_item_key = bi.bes_bestelopdr_item_key
             AND bi.bes_bestelling_key = b.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 = bdp.bes_ins_discipline_key
             AND bdp.bes_disc_params_noti_dagen IS NOT NULL
             AND (b.bes_bestelling_leverdatum IS NULL
                  OR fac.datumtijdplusuitvoertijd (
                       b.bes_bestelling_leverdatum,
                       bdp.bes_disc_params_noti_dagen,
                       'DAGEN') < SYSDATE);

   -- Alle bestelaanvragen die (nu) geheel geleverd zijn sluiten we af.
   CURSOR cbesi
   IS
      SELECT bi.bes_bestelling_item_key, b.bes_bestelling_key
        FROM bes_bestelling b,
             bes_bestelling_item bi,
             bes_bestelopdr_item boi
       WHERE     b.bes_bestelling_status = 5                        -- Besteld
             AND b.bes_bestelling_key = bi.bes_bestelling_key
             --AND bi.bes_bestelling_item_aantal <>
             --      NVL (bi.bes_bestelling_item_aantalontv, 0)
             AND bi.bes_bestelopdr_item_key = boi.bes_bestelopdr_item_key
             AND boi.bes_bestelopdr_item_aantal =
                   boi.bes_bestelopdr_item_aantalontv;

   -- Alle meldingen die nu wel klaar mogen zijn, x kalender(!)dagen na de
   -- geplande einddatum.
   -- Dit was in 4i x werkdagen (waarden 0,1,2,3, dus laag > kalenderdagen
   -- benadert beste).
   -- UWVA#17854 vraagt dit te baseren op de datum van de open opdrachten als
   -- die daarbij zijn.
   CURSOR copdr                                    -- nu te sluiten opdrachten
   IS
      SELECT o.mld_opdr_key, o.mld_melding_key
        FROM mld_opdr o,
             mld_melding m,
             mld_stdmelding std,
             mld_disc_params mdp
       WHERE     o.mld_statusopdr_key NOT IN (1, 6, 7, 9) -- vervallen/gesloten
             AND o.mld_melding_key = m.mld_melding_key
             AND m.mld_stdmelding_key = std.mld_stdmelding_key
             AND std.mld_ins_discipline_key = mdp.mld_ins_discipline_key
             AND mdp.mld_disc_params_noti_dagen IS NOT NULL
             AND o.mld_opdr_einddatum + mdp.mld_disc_params_noti_dagen + 1 <
                   SYSDATE;

   CURSOR cmld  -- nu te sluiten meldingen, maar alleen ZONDER OPEN OPDRACHTEN
   IS
      SELECT m.mld_melding_key, m.mld_melding_status
        FROM mld_melding m, mld_stdmelding std, mld_disc_params mdp
       WHERE     m.mld_melding_status NOT IN (1, 5, 6)   -- nog niet al klaar!
             AND m.mld_stdmelding_key = std.mld_stdmelding_key
             AND std.mld_ins_discipline_key = mdp.mld_ins_discipline_key
             AND mdp.mld_disc_params_noti_dagen IS NOT NULL
             AND m.mld_melding_einddatum + mdp.mld_disc_params_noti_dagen + 1 <
                   SYSDATE
             AND NOT EXISTS
                   (SELECT ''
                      FROM mld_opdr o
                     WHERE o.mld_melding_key = m.mld_melding_key
                           AND o.mld_statusopdr_key NOT IN (1, 6, 7, 9));

   CURSOR cart
   IS
      SELECT    '['
             || TO_CHAR (ra.res_rsv_ruimte_key)
             || '/'
             || TO_CHAR (ra.res_rsv_artikel_key)
             || '] '
                aanduiding,
             ra.res_rsv_ruimte_key,
             ra.res_rsv_artikel_key,
             ra.res_artikel_key
        FROM res_rsv_artikel ra
       WHERE     ra.res_status_bo_key = 2
             AND ra.res_rsv_artikel_dirtlevel = 0
             AND ra.res_rsv_artikel_verwijder IS NULL
             AND fac.count_work_days (ra.res_rsv_artikel_levering, SYSDATE) >
                   2;

   CURSOR cobj
   IS
      SELECT    '['
             || TO_CHAR (rd.res_rsv_ruimte_key)
             || '/'
             || TO_CHAR (rd.res_rsv_deel_key)
             || '] '
                aanduiding,
             rd.res_rsv_ruimte_key,
             rd.res_rsv_deel_key
        FROM res_rsv_deel rd
       WHERE     rd.res_status_bo_key = 2
             AND rd.res_rsv_ruimte_key IS NOT NULL     -- Geen parkeerplaatsen
             AND rd.res_rsv_deel_dirtlevel = 0
             AND rd.res_rsv_deel_verwijder IS NULL
             AND fac.count_work_days (rd.res_rsv_deel_tot, SYSDATE) > 2;

   CURSOR cres
   IS
      SELECT '[' || TO_CHAR (rrr.res_rsv_ruimte_key) || '] ' aanduiding,
             rrr.res_rsv_ruimte_key
        FROM res_rsv_ruimte rrr
       WHERE     rrr.res_status_bo_key = 2
             AND rrr.res_ruimte_opstel_key IS NOT NULL   -- Geen "roomservice"
             AND rrr.res_rsv_ruimte_dirtlevel = 0
             AND rrr.res_rsv_ruimte_verwijder IS NULL
             AND fac.count_work_days (rrr.res_rsv_ruimte_tot, SYSDATE) > 2;

   -- Facturen die al 4 weken bij de budgethouder liggen,
   -- maar nog steeds niet zijn goedgekeurd --> akkoord verklaren.
   CURSOR cfact
   IS
      SELECT *
        FROM fin_factuur f
       WHERE f.fin_factuur_statuses_key = 2
             AND f.fin_factuur_verwijder IS NULL
             AND (   f.bes_bestelopdr_key IS NOT NULL
                  OR f.mld_opdr_key IS NOT NULL
                  OR f.cnt_contract_key IS NOT NULL)
             AND f.fin_factuur_datum < SYSDATE - 28; -- meer dan 4 weken (28 dagen) geleden

   -- UWVA#39432: Alle lopende niet bevroren Abo-contracten per overgang naar
   --             P&C direct op stopzetten en bevriezen (= dichtzetten).
   CURSOR cabo
   IS
      SELECT '[' || TO_CHAR (c.cnt_contract_nummer_intern) || '] ' aanduiding,
             c.cnt_contract_key,
             '#' || sn.fac_srtnotificatie_code fac_srtnotificatie_code, -- NOOIT notificeren!
             sn.fac_srtnotificatie_oms
        FROM cnt_v_aanwezigcontract c, fac_srtnotificatie sn
       WHERE c.ins_discipline_key = 360                        -- Abonnementen
             AND c.cnt_contract_status = 0                   -- NIET Gesloten!
             AND COALESCE (c.cnt_contract_verlenging, 0) IN (0, 1)
             AND NOT EXISTS   -- Beschouw alleen laatste versie van contracten
                   (SELECT 1
                      FROM cnt_v_aanwezigcontract
                     WHERE cnt_contract_nummer_intern = c.cnt_contract_nummer_intern
                           AND cnt_contract_versie > c.cnt_contract_versie)
             AND sn.fac_srtnotificatie_code = 'CUST18';

   v_errorhint      VARCHAR2 (1000);
   v_errormsg       VARCHAR2 (1000);
   oracle_err_num   NUMBER;
   oracle_err_mes   VARCHAR2 (200);
   v_prijs          NUMBER (9, 2);
BEGIN
   FOR r IN cbopi
   LOOP
      -- Zeg dat alles geleverd is wat besteld is.
      UPDATE bes_bestelopdr_item
         SET bes_bestelopdr_item_aantalontv = bes_bestelopdr_item_aantal
       WHERE bes_bestelopdr_item_key = r.bes_bestelopdr_item_key;

      bes.updatebestelopdrstatus (r.bes_bestelopdr_key, NULL);
   END LOOP;

   FOR r IN cbesi
   LOOP
      -- Sluit alle aanvraagregels af die nu geheel geleverd zijn.
      UPDATE bes_bestelling_item
         SET bes_bestelling_item_aantalontv = bes_bestelling_item_aantal
       WHERE bes_bestelling_item_key = r.bes_bestelling_item_key;

      bes.updatebestellingstatus (r.bes_bestelling_key, NULL);
   END LOOP;

   COMMIT;

   FOR r IN copdr
   LOOP
      mld.setopdrachtstatus (r.mld_opdr_key, 6, NULL);
      -- Actualiseer nu de meldingstatus. Intuitief zou je kunnen denken
      -- dat je juist wel closeit zou moeten meegegeven, maar er is een
      -- verschil met de loop erna, die naar de eindtijd kijkt.
      mld.updatemeldingstatus (r.mld_melding_key, 0, NULL);
   END LOOP;

   -- Merk op: door de loop hiervoor zijn opdrachten gesloten waardoor
   -- meldingen hierna aan het criterium voldoen.
   FOR r IN cmld
   LOOP
      -- Overgang van Ingezien naar Afgemeld is niet mogelijk, daarom eerst
      -- accepteren!
      IF (r.mld_melding_status = 3)                                -- Ingezien
      THEN
         MLD.setmeldingstatus (r.mld_melding_key, 4, NULL);    -- Geaccepteerd
      END IF;

      mld.setmeldingstatus (r.mld_melding_key, 5, NULL);           -- Afgemeld
   END LOOP;

   COMMIT;

   -- UWVA#21428 - Per 2012 (28/12 om precies te zijn worden ook R-artikelen +
   --              R-delen automatisch afgemeld!
   FOR rc IN cart
   LOOP
      BEGIN
         v_errorhint := 'Fout bij bepalen res_rsv_artikel_prijs.';

         SELECT res.getartikelprijs (rc.res_rsv_artikel_key)
           INTO v_prijs
           FROM DUAL;

         v_errorhint := 'Fout bij bijwerken res_rsv_artikel_prijs.';

         UPDATE res_rsv_artikel
            SET res_status_bo_key = 5,
                res_rsv_artikel_prijs = v_prijs,
                res_rsv_artikel_inkoopprijs =
                   (SELECT res_artikel_inkoopprijs
                      FROM res_artikel
                     WHERE res_artikel_key = rc.res_artikel_key),
                res_rsv_artikel_btw =
                   (SELECT res_artikel_btw
                      FROM res_artikel
                     WHERE res_artikel_key = rc.res_artikel_key)
          WHERE res_rsv_artikel_key = rc.res_rsv_artikel_key;

         fac.trackaction ('RESAFM',
                          rc.res_rsv_ruimte_key,
                          NULL,
                          NULL,
                          'Catering afgemeld');
      EXCEPTION
         WHEN OTHERS
         THEN
            oracle_err_num := SQLCODE;
            oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
            v_errormsg :=
                  ' ORACLE (error '
               || oracle_err_num
               || '/'
               || oracle_err_mes
               || ')';
            fac.writelog (p_applname,
                          'W',
                          rc.aanduiding || v_errormsg,
                          v_errorhint);
            COMMIT;
      END;
   END LOOP;

   COMMIT;

   FOR rc IN cobj
   LOOP
      BEGIN
         v_errorhint := 'Fout bij bepalen res_rsv_deel_prijs.';

         SELECT res.getdeelprijs (rc.res_rsv_deel_key) INTO v_prijs FROM DUAL;

         v_errorhint := 'Fout bij bijwerken res_rsv_deel_prijs.';

         UPDATE res_rsv_deel
            SET res_status_bo_key = 5, res_rsv_deel_prijs = v_prijs
          WHERE res_rsv_deel_key = rc.res_rsv_deel_key;

         fac.trackaction ('RESAFM',
                          rc.res_rsv_ruimte_key,
                          NULL,
                          NULL,
                          'Voorziening(en) afgemeld');
      EXCEPTION
         WHEN OTHERS
         THEN
            oracle_err_num := SQLCODE;
            oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
            v_errormsg :=
                  ' ORACLE (error '
               || oracle_err_num
               || '/'
               || oracle_err_mes
               || ')';
            fac.writelog (p_applname,
                          'W',
                          rc.aanduiding || v_errormsg,
                          v_errorhint);
            COMMIT;
      END;
   END LOOP;

   COMMIT;

   FOR rc IN cres
   LOOP
      BEGIN
         v_errorhint := 'Fout bij bepalen res_rsv_ruimte_prijs.';

         SELECT res.getruimteprijs (rc.res_rsv_ruimte_key)
           INTO v_prijs
           FROM DUAL;

         v_errorhint := 'Fout bij bijwerken res_rsv_ruimte_prijs.';

         UPDATE res_rsv_ruimte
            SET res_status_bo_key = 5, res_rsv_ruimte_prijs = v_prijs
          WHERE res_rsv_ruimte_key = rc.res_rsv_ruimte_key;

         fac.trackaction ('RESAFM',
                          rc.res_rsv_ruimte_key,
                          NULL,
                          NULL,
                          NULL);
      EXCEPTION
         WHEN OTHERS
         THEN
            oracle_err_num := SQLCODE;
            oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
            v_errormsg :=
                  ' ORACLE (error '
               || oracle_err_num
               || '/'
               || oracle_err_mes
               || ')';
            fac.writelog (p_applname,
                          'W',
                          rc.aanduiding || v_errormsg,
                          v_errorhint);
            COMMIT;
      END;
   END LOOP;

   COMMIT;

   FOR r IN cfact
   LOOP
      -- Fiatteer factuur
      -- (zet status 6. Geen userkey, zodat blijkt dat dit automagisch gedaan is)
      fin.setfactuurstatus (r.fin_factuur_key, 6, NULL);
   END LOOP;

   COMMIT;

   -- UWVA#39432: Alle lopende niet bevroren Abo-contracten per overgang naar
   --             P&C direct op stopzetten en bevriezen (= dichtzetten).
   FOR rc IN cabo
   LOOP
      BEGIN
         v_errorhint := 'Fout stopzetten/bevriezen abonnement.';

         UPDATE cnt_contract
            SET cnt_contract_verlenging = 2
          WHERE cnt_contract_key = rc.cnt_contract_key;

         fac.trackaction (rc.fac_srtnotificatie_code,
                          rc.cnt_contract_key,
                          NULL,
                          NULL,
                          rc.fac_srtnotificatie_oms);
         COMMIT;
      EXCEPTION
         WHEN OTHERS
         THEN
            oracle_err_num := SQLCODE;
            oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
            v_errormsg :=
                  ' ORACLE (error '
               || oracle_err_num
               || '/'
               || oracle_err_mes
               || ')';
            fac.writelog (p_applname, 'W', rc.aanduiding || v_errormsg, v_errorhint);
            COMMIT;
      END;
   END LOOP;

   -- Alle anonimiseer-zaken verlopen via procedure uwva_aftersales_anonimiseer.
   --------------------------------------------------------------------------------
   uwva_aftersales_anonimiseer (p_applname,
                                p_applrun,
                                p_filedir,
                                p_filename);
   --------------------------------------------------------------------------------

   -- UWVA#29757 FlexWhere: De reserveringen van gisteren van AMSG3 (22,23 verdieping) op no-show zetten.
   --------------------------------------------------------------------------------
   uwva_res_sensor_noshow (p_applname,
                           p_applrun,
                           p_filedir,
                           p_filename);
   --------------------------------------------------------------------------------

   COMMIT;
EXCEPTION
   WHEN OTHERS
   THEN
      oracle_err_num := SQLCODE;
      oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
      v_errormsg :=
         'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
      fac.writelog (p_applname,
                    'E',
                    'Proces AFTERSALES afgebroken!',
                    v_errormsg);
      COMMIT;
END;
/


-- UWVA#35039: Handmatig ‚n direct te starten KOS-procedure!

CREATE OR REPLACE VIEW uwva_v_export_kos (result, result_order)
AS
   SELECT fac_rapport_regel, fac_rapport_volgnr
     FROM fac_rapport
    WHERE fac_rapport_node = SUBSTR ('KOS', 1, 12);

CREATE OR REPLACE PROCEDURE uwva_select_kos (p_applname   IN VARCHAR2,
                                             p_applrun    IN VARCHAR2)
AS
   CURSOR c
   IS
        SELECT a.bez_afspraak_key,
               rrr.res_rsv_ruimte_key,
               rrr.res_reservering_key || '/' || rrr.res_rsv_ruimte_volgnr
                  resnr,
               rr.res_ruimte_nr resruimte,
               rrr.res_rsv_ruimte_van van,
               ac.bez_actie_key
          FROM bez_afspraak a,
               res_rsv_ruimte rrr,
               res_ruimte_opstelling ro,
               res_ruimte rr,
               bez_actie ac
         WHERE     a.bez_afspraak_datum > TRUNC (SYSDATE)
               AND a.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
               AND rrr.res_ruimte_opstel_key = ro.res_ruimte_opstel_key
               AND ro.res_ruimte_key = rr.res_ruimte_key
               AND rr.bez_actie_key = ac.bez_actie_key
               AND BITAND (ac.bez_actie_flags, 1) = 1
               AND (a.bez_actie_key != ac.bez_actie_key
                    OR a.bez_actie_key IS NULL)
      ORDER BY 1;

   v_errormsg       VARCHAR2 (1000);
   oracle_err_num   NUMBER;
   oracle_err_mes   VARCHAR2 (200);
   v_aanduiding     VARCHAR2 (255);
   v_rownr          NUMBER := 0;
   v_count          NUMBER;

   PROCEDURE add_row (p_regel IN VARCHAR2)
   AS
   BEGIN
      INSERT INTO fac_rapport (fac_rapport_node,
                               fac_rapport_volgnr,
                               fac_rapport_regel)
          VALUES (SUBSTR (p_applname, 1, 12), v_rownr, p_regel);

      v_rownr := v_rownr + 1;
   END;

   PROCEDURE add_element (p_tag IN VARCHAR2, p_value IN VARCHAR2)
   AS
   BEGIN
      add_row(   '<'
              || p_tag
              || '>'
              || xml.char_to_html (p_value)
              || '</'
              || p_tag
              || '>');
   END;
BEGIN
   DELETE fac_rapport
    WHERE fac_rapport_node = SUBSTR (p_applname, 1, 12);

   COMMIT;

   add_row ('<kos>');

   FOR r IN c
   LOOP
      BEGIN
         v_aanduiding :=
               'Afspraak '
            || r.bez_afspraak_key
            || ' op '
            || TO_CHAR (r.van, 'dd-mm-yyyy hh24:mi')
            || ' bij '
            || r.resnr
            || ' ('
            || r.res_rsv_ruimte_key
            || ') in '
            || r.resruimte;

         v_errormsg := 'Fout bijwerken bez_actie bij bez_afspraak';

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

         fac.writelog (p_applname,
                       'I',
                       v_aanduiding,
                       '');
         add_element ('log', v_aanduiding);
      EXCEPTION
         WHEN OTHERS
         THEN
            oracle_err_num := SQLCODE;
            oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
            v_errormsg :=
                  v_errormsg
               || ' ORACLE (error '
               || oracle_err_num
               || '/'
               || oracle_err_mes
               || ')';
            fac.writelog (p_applname,
                          'E',
                          v_errormsg,
                          v_aanduiding);
      END;
   END LOOP;

   COMMIT;

   -- Alle res_ruimte zonder default-actie de default-actie toekennen.
   SELECT COUNT ( * )
     INTO v_count
     FROM res_ruimte
    WHERE bez_actie_key IS NULL;

   UPDATE res_ruimte
      SET bez_actie_key = 5
    WHERE bez_actie_key IS NULL;

   add_element (
      'log',
      'Aantal reserveerbare ruimten zonder actie: ' || TO_CHAR (v_count));

   -- Alle toekomstige bez_afspraak zonder actie de default-actie toekennen.
   SELECT COUNT ( * )
     INTO v_count
     FROM bez_afspraak
    WHERE bez_afspraak_datum > TRUNC (SYSDATE) AND bez_actie_key IS NULL;

   UPDATE bez_afspraak
      SET bez_actie_key = 5
    WHERE bez_afspraak_datum > TRUNC (SYSDATE) AND bez_actie_key IS NULL;

   add_element (
      'log',
      'Aantal toekomstige afspraken zonder actie: ' || TO_CHAR (v_count));

   add_row ('</kos>');

   COMMIT;
END;
/


CREATE OR REPLACE VIEW uwva_v_imp_log
(
   fclt_f_applicatie,
   datum,
   fclt_f_status,
   omschrijving,
   hint
)
AS
   SELECT COALESCE (fac_import_app_code, imp_log_applicatie),
          imp_log_datum,
          imp_log_status,
          imp_log_omschrijving,
          imp_log_hint
     FROM imp_log il, fac_import fi, fac_import_app fia
    WHERE il.fac_import_key = fi.fac_import_key(+)
          AND fi.fac_import_app_key = fia.fac_import_app_key(+);


CREATE OR REPLACE VIEW UWVA_V_KCI
(
   LOCATIE,
   DATUM,
   TIJDSBLOK,
   REDEN_BEZOEK,
   SOORT_CLIENT,
   AFDELING,
   KONTAKT_KCC,
   BSN_NUMMER,
   AFHANDELING,
   KLANT_GEHOLPEN,
   MELDING,
   TIJDSTIP
)
AS
   SELECT locatie,
          TO_CHAR (aanmaak, 'DD-MM-YYYY') datum,
          tijdsblok,
          reden_bezoek,
          soort_client,
          afdeling,
          kontakt_kcc,
          bsn_nummer,
          afhandeling,
          klant_geholpen,
          melding,
          TO_CHAR (aanmaak, 'HH24:MI') tijdstip
     FROM (SELECT locatie,
                  aanmaak,
                  tijdsblok,
                  reden_bezoek,
                  soort_client,
                  afdeling,
                  afhandeling,
                  kontakt_kcc,
                  klant_geholpen,
                  bsn_nummer,
                  melding
             FROM uwva_v_spobilo
            WHERE     aanmaak BETWEEN SYSDATE - 7 AND SYSDATE
                  AND tijdsblok >= 8
                  AND tijdsblok <= 17
           UNION ALL
           SELECT locatie,
                  aanmaak,
                  '99' tijdsblok,
                  reden_bezoek,
                  soort_client,
                  afdeling,
                  afhandeling,
                  kontakt_kcc,
                  klant_geholpen,
                  bsn_nummer,
                  melding
             FROM uwva_v_spobilo
            WHERE aanmaak BETWEEN SYSDATE - 7 AND SYSDATE
                  AND (tijdsblok < 8 OR tijdsblok > 17));

/

CREATE OR REPLACE VIEW uwva_v_export_kci
AS
   SELECT NULL result_key,
             locatie
          || CHR (9)
          || datum
          || CHR (9)
          || tijdsblok
          || CHR (9)
          || reden_bezoek
          || CHR (9)
          || soort_client
          || CHR (9)
          || afdeling
          || CHR (9)
          || kontakt_kcc
          || CHR (9)
          || bsn_nummer
          || CHR (9)
          || afhandeling
          || CHR (9)
          || klant_geholpen
          || CHR (9)
          || melding
          || CHR (9)
          || tijdstip
             result,
          NULL result_order
     FROM UWVA_EXP_KCI;

/

-- Procedure voor de exporteren gegevens SpoBilo

CREATE OR REPLACE PROCEDURE uwva_select_kci (p_applname   IN VARCHAR2,
                                             p_applrun    IN VARCHAR2)
AS
BEGIN
   -- conn_exp_finorders_nav_fb

   DELETE UWVA_EXP_KCI;

   INSERT INTO UWVA_EXP_KCI (locatie,
                             datum,
                             tijdsblok,
                             reden_bezoek,
                             soort_client,
                             afdeling,
                             kontakt_kcc,
                             bsn_nummer,
                             afhandeling,
                             klant_geholpen,
                             melding,
                             tijdstip)
      (SELECT locatie,
              datum,
              tijdsblok,
              reden_bezoek,
              soort_client,
              afdeling,
              kontakt_kcc,
              bsn_nummer,
              afhandeling,
              klant_geholpen,
              melding,
              tijdstip
         FROM UWVA_V_KCI);
END;
/

-- UWVA#30547: Deze personen niet meer exporteren:
--   - autorisatiegroepen Budgethouder en Medewerker
--   - medewerkertype M (Techniek en Uitvoerenden) en L (Leverancier)
-- fac_groep      Budgethouder            1061
-- fac_groep      Medewerker              1601
-- fac_groep      _Default                 241
-- prs_kenmerk    Type Medewerker         1040
-- fac_usrtab     Type_medewerker          301

CREATE OR REPLACE VIEW uwva_v_export_cpua
(
   result,
   result_order
)
AS
   SELECT    Systeem
          || ';'
          || SysOmschr
          || ';'
          || Account_id
          || ';'
          || AutOmschr
          || ';'
          || Autorisatie_id
          || ';'
          || VolNaamMedew
          || ';'
          || VoornaamMedew
          || ';'
          || AchternaamMedew
          || ';'
          || VoorletterMedew
          || ';'
          || WnrMedew
          || ';'
          || Userid_KA
          || ';'
          || KstnpltsMedew
          || ';'
          || LastLogon
          || ';'
          || Status_account
             result,
          Account_Id result_order
     FROM (SELECT 'Facilitor' Systeem,
                  'Facilitair Management Informatie Systeem' SysOmschr,
                  prs_perslid_oslogin Account_id,
                  fac_groep_omschrijving AutOmschr,
                  g.fac_groep_key Autorisatie_id,
                  prs_perslid_naam_full VolNaamMedew,
                  prs_perslid_voornaam VoornaamMedew,
                  prs_perslid_naam AchternaamMedew,
                  prs_perslid_voorletters VoorletterMedew,
                  prs_perslid_nr WnrMedew,
                  prs_perslid_oslogin Userid_KA,
                  prs_afdeling_naam KstnpltsMedew,
                  TO_CHAR (prs_perslid_login, 'yyyymmddhh24mi') LastLogon,
                  DECODE (prs_perslid_verwijder, NULL, 'A', 'B')
                     Status_account
             FROM prs_perslid p,
                  prs_v_perslid_fullnames pf,
                  prs_afdeling a,
                  fac_gebruikersgroep gg,
                  fac_groep g,
                  (SELECT *
                     FROM prs_kenmerklink kl
                    WHERE prs_kenmerk_key = 1040
                          AND prs_kenmerklink_verwijder IS NULL) km,
                  (SELECT *
                     FROM fac_usrdata
                    WHERE fac_usrtab_key = 301
                          AND fac_usrdata_verwijder IS NULL) ud
            WHERE     p.prs_perslid_key = pf.prs_perslid_key
                  AND p.prs_afdeling_key = a.prs_afdeling_key
                  AND p.prs_perslid_key = gg.prs_perslid_key
                  AND gg.fac_groep_key = g.fac_groep_key
                  AND p.prs_perslid_oslogin IS NOT NULL
                  AND g.fac_groep_key NOT IN (241, 1061, 1601)
                  AND km.prs_link_key(+) = p.prs_perslid_key
                  AND ud.fac_usrdata_key(+) =
                        fac.safe_to_number (km.prs_kenmerklink_waarde)
                  AND COALESCE (ud.fac_usrdata_upper, 'nix') NOT IN
                           ('M', 'L'));


CREATE OR REPLACE VIEW uwva_v_rap_bedrijfinfo
(
   bedrijfsnaam,
   bezoekadres,
   plaats,
   email,
   l,
   u,
   c,
   h
)
AS
   SELECT prs_bedrijf_naam,
          prs_bedrijf_bezoek_adres,
          prs_bedrijf_bezoek_plaats,
          prs_bedrijf_email,
          prs_bedrijf_leverancier l,
          prs_bedrijf_uitvoerende u,
          prs_bedrijf_contract c,
          prs_bedrijf_huurder h
     FROM prs_v_aanwezigbedrijf;

/


CREATE OR REPLACE FORCE VIEW uwva_v_kenmerkwaarden
(
   cnt_contract_key,
   cnt_srtkenmerk_upper,
   cnt_kenmerkcontract_waarde,
   ins_discipline_key
)
AS
     SELECT kc.cnt_contract_key,
            t.cnt_srtkenmerk_upper,
            kc.cnt_kenmerkcontract_waarde,
            s.ins_discipline_key
       FROM cnt_srtkenmerk t,
            cnt_kenmerkcontract kc,
            cnt_discipline s,
            cnt_kenmerk k,
            fac_kenmerkdomein r
      WHERE     1 = 1
            AND k.cnt_srtcontract_key = s.ins_discipline_key
            AND k.cnt_kenmerk_verwijder IS NULL
            AND k.cnt_srtkenmerk_key = t.cnt_srtkenmerk_key
            AND t.cnt_srtkenmerk_verwijder IS NULL
            AND t.fac_kenmerkdomein_key = r.fac_kenmerkdomein_key(+)
            AND kc.cnt_kenmerk_key = k.cnt_kenmerk_key
            AND kc.cnt_kenmerkcontract_verwijder IS NULL
   ORDER BY k.cnt_kenmerk_volgnummer, t.cnt_srtkenmerk_omschrijving;


-- UWVA#14205

CREATE OR REPLACE FORCE VIEW uwva_v_bes_retouren
(
   hide_f_descend,
   fclt_f_retourdatum,
   retournr,
   aanvraag,
   fclt_f_besteller,
   aantal,
   fclt_f_artikelnr,
   artikelomschrijving,
   bedrag,
   reden,
   fclt_f_status,
   fclt_f_ophaaladres,
   fclt_3d_discipline_key
)
AS
   SELECT -b.bes_bestelling_key hide_f_descend,
          TO_CHAR (b.bes_bestelling_datum, 'YYYY-MM-DD') fclt_f_retourdatum,
          'A-' || b.bes_bestelling_key retournr,
          'A-' || bes_bestelling_retourvan_key aanvraag,
          p.prs_perslid_naam
          || DECODE (NVL (p.prs_perslid_voorletters, ''),
                     '', '',
                     ', ' || p.prs_perslid_voorletters)
          || DECODE (NVL (p.prs_perslid_tussenvoegsel, ''),
                     '', '',
                     ' ' || p.prs_perslid_tussenvoegsel)
          || DECODE (NVL (p.prs_perslid_voornaam, ''),
                     '', '',
                     ' (' || p.prs_perslid_voornaam || ')')
             fclt_f_besteller,
          i.bes_bestelling_item_aantal aantal,
          sd.bes_srtdeel_nr fclt_f_artikelnr,
          sd.bes_srtdeel_omschrijving artikelomschrijving,
          i.bes_bestelling_item_aantal * i.bes_bestelling_item_prijs bedrag,
          bes_bestelling_opmerking reden,
          (CASE b.bes_bestelling_status
              WHEN 6 THEN 'Opgehaald'
              WHEN 5 THEN 'Gemeld'
              ELSE s.bes_bestellingstatuses_omschr
           END)
             fclt_f_status,
          m.mld_adres_naam fclt_f_ophaaladres,
          sg.ins_discipline_key fclt_3d_discipline_key
     FROM bes_bestelling b,
          bes_bestelling_item i,
          bes_bestellingstatuses s,
          bes_srtdeel sd,
          bes_srtgroep sg,
          prs_perslid p,
          mld_adres m
    WHERE     b.mld_adres_key_lev = m.mld_adres_key
          AND b.bes_bestelling_key = i.bes_bestelling_key
          AND i.bes_srtdeel_key = sd.bes_srtdeel_key
          AND b.fac_activiteit_key IS NULL
          AND p.prs_perslid_key = b.prs_perslid_key
          AND b.bes_bestelling_retourvan_key IS NOT NULL
          AND b.bes_bestelling_status = s.bes_bestellingstatuses_key
          AND sd.bes_srtgroep_key = sg.bes_srtgroep_key;


-- UWVA#14466

CREATE OR REPLACE VIEW uwva_v_rap_ruimte_verpl
(
   locatie_code,
   adres,
   plaats,
   fclt_f_gebouw_code,
   fclt_f_verdieping_code,
   fclt_f_ruimte_nr,
   ruimte_omschrijving,
   reserveerbaar,
   aant_wp,
   aant_res,
   aant_mld,
   aant_ins
)
AS
     SELECT l.alg_locatie_code,
            l.alg_locatie_adres,
            l.alg_locatie_plaats,
            g.alg_gebouw_code,
            v.alg_verdieping_code,
            rr.alg_ruimte_nr,
            rr.alg_ruimte_omschrijving,
            DECODE (aantal_rsv, 0, NULL, 'J') reserveerbaar,
            aantal_wp,
            aantal_res,
            aantal_mld,
            aantal_ins
       FROM (SELECT alg_ruimte_nr,
                    alg_ruimte_omschrijving,
                    alg_verdieping_key,
                    (SELECT COUNT ( * )
                       FROM prs_werkplek
                      WHERE prs_werkplek.prs_alg_ruimte_key = r.alg_ruimte_key)
                       aantal_wp,
                    (SELECT COUNT ( * )
                       FROM res_rsv_ruimte
                      WHERE res_rsv_ruimte_verwijder IS NULL
                            AND res_rsv_ruimte.alg_ruimte_key = r.alg_ruimte_key)
                       aantal_res,
                    (SELECT COUNT ( * )
                       FROM mld_melding
                      WHERE mld_alg_onroerendgoed_keys = r.alg_ruimte_key
                            AND mld_melding_status NOT IN (1, 5, 6))
                       aantal_mld,
                    (SELECT COUNT ( * )
                       FROM ins_deel
                      WHERE ins_deel_verwijder IS NULL
                            AND ins_alg_ruimte_type = 'R'
                            AND ins_alg_ruimte_key = r.alg_ruimte_key)
                       aantal_ins,
                    (SELECT COUNT ( * )
                       FROM res_alg_ruimte
                      WHERE res_alg_ruimte_verwijder IS NULL
                            AND res_alg_ruimte_key = r.alg_ruimte_key)
                       aantal_rsv
               FROM alg_v_aanwezigruimte r
              WHERE alg_ruimte_bruto_vloeropp IS NULL
                    AND alg_ruimte_nr <> '000') rr,
            alg_verdieping v,
            alg_gebouw g,
            alg_locatie l
      WHERE     rr.alg_verdieping_key = v.alg_verdieping_key
            AND v.alg_gebouw_key = g.alg_gebouw_key
            AND COALESCE (g.alg_gebouw_vervaldatum, SYSDATE) > TRUNC (SYSDATE)
            AND g.alg_locatie_key = l.alg_locatie_key
   ORDER BY l.alg_locatie_upper ASC,
            g.alg_gebouw_upper ASC,
            v.alg_verdieping_volgnr ASC,
            rr.alg_ruimte_nr ASC
/

-- Klantspecifieke orderqueue die gebruikt wordt door de putorders als setting
-- CustOrders in de putorders.ini is gezet.
-- Alleen gebruikt in de abonnementen-hoek (UWVA#23124) en ooit geintroduceerd
-- icm. FOLDER-import (per UWVA79/UWVA#25612 vervallen)!
-- UWVA#29166: Alleen opnemen in orderqueue als kanaal correct geconfigureerd!
-- UWVA#39432: Vervallen per overgang van Infotrading naar P&C (abonnementen
--             moeten jaarlijks opnieuw worden afgesloten).
--             Nog even aanhouden met oog op evt. nieuwe functionaliteit!
-- UWVA#39432: Per overgang naar P&C worden alleen nog verhuizingen langs deze
--             weg verstuurd (per e-mail).
CREATE OR REPLACE VIEW UWVA_V_ORDERQUEUE
(
   prs_bedrijf_key,
   alg_locatie_key,
   xmlnode,
   key,
   status,
   reference,
   sender
)
AS
   SELECT DISTINCT c.cnt_prs_bedrijf_key,
                   NULL,
                   'contract',
                   c.cnt_contract_key,
                   2,
                   c.cnt_contract_nummer_intern,
                   NULL
     FROM cnt_v_aanwezigcontract c,
          (SELECT *
             FROM cnt_kenmerkcontract
            WHERE cnt_kenmerk_key = 700      -- 'Laatste cXML-update' (hidden)
                  AND cnt_kenmerkcontract_verwijder IS NULL) kc,
          fac_tracking t
    WHERE c.ins_discipline_key = 360                           -- Abonnementen
          AND c.cnt_contract_status = 0                      -- NIET Gesloten!
          AND c.cnt_contract_key = kc.cnt_contract_key(+)     -- Al verzonden?
          AND c.cnt_contract_key = t.fac_tracking_refkey
          AND t.fac_srtnotificatie_key = 322         -- CUST19=Adres gewijzigd
          AND t.fac_tracking_datum > COALESCE (kc.cnt_kenmerkcontract_wijzig, kc.cnt_kenmerkcontract_aanmaak, c.cnt_contract_aanmaak)
          AND EXISTS
                (SELECT 1
                   FROM prs_bedrijfadres
                  WHERE prs_bedrijf_key = c.cnt_prs_bedrijf_key
                        AND prs_bedrijfadres_type = 'C'
                        AND LENGTH (prs_bedrijfadres_url) > 1
                        AND prs_bedrijfadres_xsl IS NOT NULL);

-- UWVA#23124/UWVA#24109: Naast de CUST17-, CUST18- en CUST19-notificaties die via
-- de AFTERSALES-export (17/18) en de ABS-import (19) worden voorbereid, worden
-- via onderstaande view->notificatiejob nog de volgende notificaties naar de zgn.
-- Bestelbevoegde (= contractbeheerder) voorbereid:
-- CUST15 -> Verlengen of stopzetten abonnement (op rappeldatum).
-- CUST16 -> Herinnering: verlengen of stopzetten abonnement (op rappeldatum+14).
-- CUST20 -> Abonnement gesloten/geannuleerd (wordt misschien core-notificatie?).
-- Met PFo afgestemd dat notificatiejob 's ochtends (vroeg) wordt gescheduled en
-- dan CUST15/16 over VANDAAG tov. rappeldatum notificeert en CUST20 over GISTEREN
-- gesloten/geannuleerde contracten notificeert.
-- UWVA#39432: CUST16 vervallen, CUST15 omgebutst naar "opnieuw bestellen" en CUST20 ongewijzigd?
CREATE OR REPLACE VIEW uwva_v_noti_abonnementen
(
   code,
   sender,
   receiver,
   text,
   KEY,
   par1,
   par2,
   xkey
)
AS
   SELECT sn.fac_srtnotificatie_code,
          NULL,
          c.prs_perslid_key_beh,
          sn.fac_srtnotificatie_oms,
          c.cnt_contract_key,
          c.cnt_contract_nummer_intern,
          NULL,
          NULL
     FROM cnt_v_aanwezigcontract c, fac_srtnotificatie sn
    WHERE c.ins_discipline_key = 360                           -- Abonnementen
          AND c.cnt_contract_status = 0                      -- NIET Gesloten!
          AND NOT EXISTS      -- Beschouw alleen laatste versie van contracten
                (SELECT 1
                   FROM cnt_v_aanwezigcontract
                  WHERE cnt_contract_nummer_intern = c.cnt_contract_nummer_intern
                        AND cnt_contract_versie > c.cnt_contract_versie)
          AND TRUNC (cnt.cnt_getRappeldatum (c.cnt_contract_key)) = TRUNC (SYSDATE)
          AND sn.fac_srtnotificatie_code = 'CUST15'
   UNION ALL
   SELECT sn.fac_srtnotificatie_code,
          NULL,
          c.prs_perslid_key_beh,
          sn.fac_srtnotificatie_oms,
          c.cnt_contract_key,
          c.cnt_contract_nummer_intern,
          NULL,
          NULL
     FROM cnt_v_aanwezigcontract c, fac_tracking t, fac_srtnotificatie sn
    WHERE c.ins_discipline_key = 360                           -- Abonnementen
          AND c.cnt_contract_status = 1                           -- Gesloten!
          AND NOT EXISTS      -- Beschouw alleen laatste versie van contracten
                (SELECT 1
                   FROM cnt_v_aanwezigcontract
                  WHERE cnt_contract_nummer_intern = c.cnt_contract_nummer_intern
                        AND cnt_contract_versie > c.cnt_contract_versie)
          AND c.cnt_contract_key = t.fac_tracking_refkey
          AND t.fac_srtnotificatie_key = 139                       -- 'CNTUPD'
          AND UPPER (t.fac_tracking_oms) LIKE '%GESLOTEN%'
          AND TRUNC (t.fac_tracking_datum) = TRUNC (SYSDATE - 1)
          AND sn.fac_srtnotificatie_code = 'CUST20';

-- UWVA#24468/UWVA#27249
CREATE OR REPLACE VIEW uwva_v_rap_abo_cnt
(
   contractnummer,
   fclt_f_titel,
   omschrijving,
   ingangsdatum,
   rappeldatum,
   opzegdatum,
   einddatum,
   fclt_f_bestelbevoegde,
   fclt_f_contractafdeling,
   fclt_f_abonnee,
   fclt_f_afleveradres,
   kostenplaats,
   bedrag,
   gefactureerd_bedrag,
   leverancier
)
AS
   SELECT c.contractnummer,
          c.titel,
          c.omschrijving,
          c.cnt_contract_looptijd_van,
          cnt.cnt_getrappeldatum (c.cnt_contract_key),
          cnt.cnt_getopzegdatum (c.cnt_contract_key),
          c.cnt_contract_looptijd_tot,
          c.bestelbevoegde,
          c.contractafdeling,
          c.abonnee,
          g.alg_gebouw_code,
          c.kostenplaats,
          c.bedrag,
          f.gefactureerd,
          c.leverancier
     FROM (SELECT c.cnt_contract_key,
                  c.prs_perslid_key_eig,
                  c.cnt_contract_nummer_intern contractnummer,
                  c.cnt_contract_omschrijving titel,
                  c.cnt_contract_document omschrijving,
                  c.cnt_contract_looptijd_van,
                  c.cnt_contract_looptijd_tot,
                  beh.prs_perslid_naam_full bestelbevoegde,
                  a.prs_afdeling_naam4 contractafdeling,
                  eig.prs_perslid_naam_full abonnee,
                  k.prs_kostenplaats_nr kostenplaats,
                  --k.prs_perslid_key budgethouder,
                  c.cnt_contract_kosten bedrag,
                  b.prs_bedrijf_naam leverancier
             FROM cnt_v_aanwezigcontract c,
                  prs_v_perslid_fullnames_all beh,
                  prs_v_afdeling a,
                  prs_v_perslid_fullnames_all eig,
                  prs_kostenplaats k,
                  prs_bedrijf b
            WHERE c.ins_discipline_key = 360                   -- Abonnementen
                  AND c.prs_perslid_key_beh = beh.prs_perslid_key
                  AND c.prs_afdeling_key_eig = a.prs_afdeling_key
                  AND c.prs_perslid_key_eig = eig.prs_perslid_key
                  AND c.prs_kostenplaats_key = k.prs_kostenplaats_key
                  AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key) c
          LEFT JOIN (  SELECT f.cnt_contract_key, SUM (f.fin_factuur_totaal) gefactureerd
                         FROM fin_factuur f
                        WHERE f.fin_factuur_verwijder IS NULL
                     GROUP BY f.cnt_contract_key) f
             ON c.cnt_contract_key = f.cnt_contract_key
          LEFT JOIN (SELECT pw.prs_perslid_key, g.alg_gebouw_code
                       FROM prs_perslidwerkplek pw,
                            prs_werkplek wp,
                            alg_v_aanwezigruimte r,
                            alg_verdieping v,
                            alg_gebouw g
                      --mld_v_aanwezigadres a
                      WHERE     pw.prs_perslidwerkplek_volgnr = 2
                            AND pw.prs_werkplek_key = wp.prs_werkplek_key
                            AND wp.prs_werkplek_virtueel = 0
                            AND wp.prs_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.mld_adres_key = a.mld_adres_key
                            AND NOT EXISTS
                                  (SELECT 1
                                     FROM prs_perslidwerkplek pw2, prs_werkplek wp2
                                    WHERE pw2.prs_perslid_key = pw.prs_perslid_key
                                          AND pw2.prs_werkplek_key = wp2.prs_werkplek_key
                                          AND wp2.prs_werkplek_virtueel = 0
                                          AND COALESCE (pw2.prs_perslidwerkplek_volgnr, 10000 + pw2.prs_perslidwerkplek_key) <
                                                COALESCE (pw.prs_perslidwerkplek_volgnr, 10000 + pw.prs_perslidwerkplek_key))) g
             ON c.prs_perslid_key_eig = g.prs_perslid_key;

CREATE OR REPLACE VIEW uwva_v_rap_abo_cnt_3d
(
   fclt_3d_user_key,
   contractnummer,
   fclt_f_titel,
   omschrijving,
   ingangsdatum,
   rappeldatum,
   opzegdatum,
   einddatum,
   fclt_f_bestelbevoegde,
   fclt_f_contractafdeling,
   fclt_f_abonnee,
   fclt_f_afleveradres,
   kostenplaats,
   bedrag,
   gefactureerd_bedrag,
   leverancier
)
AS
   SELECT c.budgethouder,
          c.contractnummer,
          c.titel,
          c.omschrijving,
          c.cnt_contract_looptijd_van,
          cnt.cnt_getrappeldatum (c.cnt_contract_key),
          cnt.cnt_getopzegdatum (c.cnt_contract_key),
          c.cnt_contract_looptijd_tot,
          c.bestelbevoegde,
          c.contractafdeling,
          c.abonnee,
          g.alg_gebouw_code,
          c.kostenplaats,
          c.bedrag,
          f.gefactureerd,
          c.leverancier
     FROM (SELECT c.cnt_contract_key,
                  c.prs_perslid_key_eig,
                  c.cnt_contract_nummer_intern contractnummer,
                  c.cnt_contract_omschrijving titel,
                  c.cnt_contract_document omschrijving,
                  c.cnt_contract_looptijd_van,
                  c.cnt_contract_looptijd_tot,
                  beh.prs_perslid_naam_full bestelbevoegde,
                  a.prs_afdeling_naam4 contractafdeling,
                  eig.prs_perslid_naam_full abonnee,
                  k.prs_kostenplaats_nr kostenplaats,
                  k.prs_perslid_key budgethouder,
                  c.cnt_contract_kosten bedrag,
                  b.prs_bedrijf_naam leverancier
             FROM cnt_v_aanwezigcontract c,
                  prs_v_perslid_fullnames_all beh,
                  prs_v_afdeling a,
                  prs_v_perslid_fullnames_all eig,
                  prs_kostenplaats k,
                  prs_bedrijf b
            WHERE c.ins_discipline_key = 360                   -- Abonnementen
                  AND c.prs_perslid_key_beh = beh.prs_perslid_key
                  AND c.prs_afdeling_key_eig = a.prs_afdeling_key
                  AND c.prs_perslid_key_eig = eig.prs_perslid_key
                  AND c.prs_kostenplaats_key = k.prs_kostenplaats_key
                  AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key) c
          LEFT JOIN (  SELECT f.cnt_contract_key, SUM (f.fin_factuur_totaal) gefactureerd
                         FROM fin_factuur f
                        WHERE f.fin_factuur_verwijder IS NULL
                     GROUP BY f.cnt_contract_key) f
             ON c.cnt_contract_key = f.cnt_contract_key
          LEFT JOIN (SELECT pw.prs_perslid_key, g.alg_gebouw_code
                       FROM prs_perslidwerkplek pw,
                            prs_werkplek wp,
                            alg_v_aanwezigruimte r,
                            alg_verdieping v,
                            alg_gebouw g
                      --mld_v_aanwezigadres a
                      WHERE     pw.prs_perslidwerkplek_volgnr = 2
                            AND pw.prs_werkplek_key = wp.prs_werkplek_key
                            AND wp.prs_werkplek_virtueel = 0
                            AND wp.prs_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.mld_adres_key = a.mld_adres_key
                            AND NOT EXISTS
                                  (SELECT 1
                                     FROM prs_perslidwerkplek pw2, prs_werkplek wp2
                                    WHERE pw2.prs_perslid_key = pw.prs_perslid_key
                                          AND pw2.prs_werkplek_key = wp2.prs_werkplek_key
                                          AND wp2.prs_werkplek_virtueel = 0
                                          AND COALESCE (pw2.prs_perslidwerkplek_volgnr, 10000 + pw2.prs_perslidwerkplek_key) <
                                                COALESCE (pw.prs_perslidwerkplek_volgnr, 10000 + pw.prs_perslidwerkplek_key))) g
             ON c.prs_perslid_key_eig = g.prs_perslid_key;


// View die de verplichtingen op een gebouw/verdieping/ruimte weergeeft
// Verplichtingen worden gedefinieerd als relaties die het ontmantelen,
// d.i. het zetten van alg_gebouw_verwijder/alg_verdieping_verwijder/alg_ruimte_verwijder,
// kunnen beletten of althans daar een rol in spelen; moeten weggemanaged worden.

CREATE OR REPLACE VIEW UWVA_V_ONRGOED_VERPLICHTING
(
   ALG_GEBOUW_KEY,
   ALG_VERDIEPING_KEY,
   ALG_RUIMTE_KEY,
   FAC_MESSAGE_CODE,
   ITEM,
   ITEM_KEY,
   LOCATIE_KEY
)
AS
   SELECT og.alg_gebouw_key,
          og.alg_verdieping_key,
          og.alg_ruimte_key,
          'ALG_OPENST_MELDING',
          (SELECT isd.ins_srtdiscipline_prefix
             FROM ins_srtdiscipline isd,
                  ins_tab_discipline ID,
                  mld_stdmelding std
            WHERE     ID.ins_srtdiscipline_key = isd.ins_srtdiscipline_key
                  AND m.mld_stdmelding_key = std.mld_stdmelding_key
                  AND std.mld_ins_discipline_key = ID.ins_discipline_key)
          || TO_CHAR (m.mld_melding_key),
          m.mld_melding_key,
          m.mld_alg_locatie_key
     FROM mld_melding m, alg_v_allonroerendgoed og
    WHERE     m.mld_melding_status IN (2, 3, 4, 7)
          AND m.mld_alg_onroerendgoed_keys <> 0
          AND m.mld_alg_onroerendgoed_keys = og.alg_onroerendgoed_keys
   UNION
   SELECT og.alg_gebouw_key,
          og.alg_verdieping_key,
          og.alg_ruimte_key,
          'ALG_BEVAT_OBJECT',
          ins_deel_omschrijving,
          ins_deel_key,
          d.ins_alg_locatie_key
     FROM ins_v_aanwezigdeel d,
          ins_tab_discipline ID,
          alg_v_allonroerendgoed og
    WHERE     d.ins_alg_ruimte_key = og.alg_onroerendgoed_keys
          AND ID.ins_discipline_key = d.ins_discipline_key
          AND ID.ins_discipline_min_level <> 3
   UNION
     SELECT rg.alg_gebouw_key,
            rg.alg_verdieping_key,
            rg.alg_ruimte_key,
            'ALG_OPENST_RES',
            TO_CHAR (r.res_reservering_key) || ' (' || COUNT ( * ) || ')',
            r.res_reservering_key,
            rg.alg_locatie_key
       FROM res_v_aanwezigreservering r,
            res_v_aanwezigrsv_ruimte rr,
            res_ruimte_opstelling ro,
            res_v_alg_ruimte_gegevens rg
      WHERE     r.res_reservering_key = rr.res_reservering_key
            AND rr.res_ruimte_opstel_key = ro.res_ruimte_opstel_key
            AND ro.res_ruimte_key = rg.res_ruimte_key
            AND rr.res_status_bo_key IN (4, 3, 2)
   GROUP BY rg.alg_gebouw_key,
            rg.alg_verdieping_key,
            rg.alg_ruimte_key,
            'PRS_OPENST_RES',
            r.res_reservering_key,
            rg.alg_locatie_key
   UNION
     SELECT rg.alg_gebouw_key,
            rg.alg_verdieping_key,
            rg.alg_ruimte_key,
            'ALG_OPENST_RES_V',
            TO_CHAR (r.res_reservering_key) || '/' || COUNT ( * ),
            r.res_reservering_key,
            rg.alg_locatie_key
       FROM res_v_aanwezigreservering r,
            res_v_aanwezigrsv_deel rd,
            res_v_alg_ruimte_gegevens rg,
            res_rsv_ruimte rr
      WHERE     r.res_reservering_key = rr.res_reservering_key
            AND rr.alg_ruimte_key = rg.alg_ruimte_key
            AND rr.res_rsv_ruimte_key = rd.res_rsv_ruimte_key
            AND rd.res_status_bo_key IN (4, 3, 2)
   GROUP BY rg.alg_gebouw_key,
            rg.alg_verdieping_key,
            rg.alg_ruimte_key,
            'ALG_OPENST_RES_V',
            r.res_reservering_key,
            rg.alg_locatie_key
   UNION
     SELECT rg.alg_gebouw_key,
            rg.alg_verdieping_key,
            rg.alg_ruimte_key,
            'ALG_OPENST_RES_V',
            TO_CHAR (r.res_reservering_key) || '/' || COUNT ( * ),
            r.res_reservering_key,
            rg.alg_locatie_key
       FROM res_v_aanwezigreservering r,
            res_v_aanwezigrsv_artikel ra,
            res_v_alg_ruimte_gegevens rg,
            res_rsv_ruimte rr
      WHERE     r.res_reservering_key = rr.res_reservering_key
            AND rr.alg_ruimte_key = rg.alg_ruimte_key
            AND rr.res_rsv_ruimte_key = ra.res_rsv_ruimte_key
            AND ra.res_status_bo_key IN (4, 3, 2)
   GROUP BY rg.alg_gebouw_key,
            rg.alg_verdieping_key,
            rg.alg_ruimte_key,
            'ALG_OPENST_RES_V',
            r.res_reservering_key,
            rg.alg_locatie_key
   UNION
   SELECT og.alg_gebouw_key,
          og.alg_verdieping_key,
          og.alg_ruimte_key,
          'ALG_TOEK_AFSPRAAK',
             TO_CHAR (a.bez_afspraak_key)
          || ' ('
          || TO_CHAR (a.bez_afspraak_datum, 'DD-MM-YYYY')
          || ')',
          a.bez_afspraak_key,
          a.alg_locatie_key
     FROM bez_afspraak a, alg_v_allonroerendgoed og
    WHERE a.alg_onrgoed_keys = og.alg_onroerendgoed_keys
          AND a.bez_afspraak_datum > SYSDATE
   UNION
   SELECT og.alg_gebouw_key,
          og.alg_verdieping_key,
          og.alg_ruimte_key,
          'ALG_OPEN_CONTRACT',
          TO_CHAR (cp.cnt_contract_key),
          cp.cnt_contract_key,
          og.alg_locatie_key
     FROM cnt_v_aanwezigcontract_plaats cp,
          alg_v_allonroerendgoed og,
          cnt_contract c
    WHERE     c.cnt_contract_key = cp.cnt_contract_key
          AND c.cnt_contract_looptijd_tot > SYSDATE
          AND cp.cnt_alg_plaats_key = og.alg_onroerendgoed_keys;

/

/* En deze ten behoeve van de gebruikersrapportage */

CREATE OR REPLACE VIEW UWVA_V_RAP_ONRGOEDVERPLICHTING
(
   FCLT_F_GEBOUWCODE,
   FCLT_F_VERDIEPINGVOLGNR,
   FCLT_F_RUIMTECODE,
   FCLT_F_VERPLICHTING,
   ITEM,
   FCLT_3D_LOCATIE_KEY
)
AS
   SELECT g.alg_gebouw_code,
          SUBSTR ('0' || TO_CHAR (v.alg_verdieping_volgnr), -2),
          r.alg_ruimte_nr,
          COALESCE (t.fac_message_text, ov.fac_message_code),
          ov.item,
          ov.locatie_key
     FROM uwva_v_onrgoed_verplichting ov,
          alg_gebouw g,
          alg_verdieping v,
          alg_ruimte r,
          fac_message t
    WHERE     ov.alg_gebouw_key = g.alg_gebouw_key
          AND ov.alg_verdieping_key = v.alg_verdieping_key(+)
          AND ov.alg_ruimte_key = r.alg_ruimte_key(+)
          AND ov.fac_message_code = t.fac_message_code(+);

/


CREATE OR REPLACE VIEW uwva_v_rap_beheer_prs_type
(
   personeelsnummer,
   login1,
   login2,
   naam,
   fclt_f_type_medewerker
)
AS
   SELECT a.prs_perslid_naam_full,
          a.prs_perslid_nr,
          a.prs_perslid_oslogin,
          a.prs_perslid_oslogin2,
          b.fac_usrdata_omschr
     FROM    (SELECT p.prs_perslid_key,
                     fn.prs_perslid_naam_full,
                     p.prs_perslid_nr,
                     p.prs_perslid_oslogin,
                     p.prs_perslid_oslogin2
                FROM prs_v_aanwezigperslid p, prs_v_perslid_fullnames fn
               WHERE p.prs_perslid_key = fn.prs_perslid_key) a
          LEFT JOIN
             (SELECT kl.prs_link_key, ud.fac_usrdata_omschr
                FROM prs_kenmerklink kl, fac_usrdata ud
               WHERE kl.prs_kenmerk_key = 1040              -- Type medewerker
                     AND kl.prs_kenmerklink_waarde = ud.fac_usrdata_key) b
          ON a.prs_perslid_key = b.prs_link_key;


-- UWVA#16324

CREATE OR REPLACE VIEW uwva_v_contractanten
(
   prs_bedrijf_key,
   prs_bedrijf_naam
)
AS
   SELECT b.prs_bedrijf_key, b.prs_bedrijf_naam
     FROM prs_v_aanwezigbedrijf b
    WHERE b.prs_bedrijf_contract = 1                     -- Contractant-vinkje
/


-- UWVA#16539, herziening in UWVA#23138
-- keys 81, 82 en 83 zijn van de drie HDW-catalogusimports (bij resp. catalogi 215, 216, 217)

CREATE OR REPLACE VIEW uwva_v_catalogushdwlog
(
   HIDE_F_SRT,
   FCLT_F_STATUS,
   FCLT_F_OMSCHRIJVING,
   DETAIL,
   DATUM
)
AS
   SELECT imp_log_key,
          imp_log_status fclt_f_status,
          imp_log_omschrijving fclt_f_omschrijving,
          imp_log_hint detail,
          TO_CHAR (imp_log_datum, 'YYYY-MM-DD HH24:MI') datum
     FROM imp_log
    WHERE fac_import_key = (SELECT MAX (fac_import_key)
                              FROM fac_import
                             WHERE fac_import_app_key = 81)
   UNION
   SELECT imp_log_key,
          imp_log_status fclt_f_status,
          imp_log_omschrijving fclt_f_omschrijving,
          imp_log_hint detail,
          TO_CHAR (imp_log_datum, 'YYYY-MM-DD HH24:MI') datum
     FROM imp_log
    WHERE fac_import_key = (SELECT MAX (fac_import_key)
                              FROM fac_import
                             WHERE fac_import_app_key = 82)
   UNION
   SELECT imp_log_key,
          imp_log_status fclt_f_status,
          imp_log_omschrijving fclt_f_omschrijving,
          imp_log_hint detail,
          TO_CHAR (imp_log_datum, 'YYYY-MM-DD HH24:MI') datum
     FROM imp_log
    WHERE fac_import_key = (SELECT MAX (fac_import_key)
                              FROM fac_import
                             WHERE fac_import_app_key = 83)
   ORDER BY imp_log_key;


CREATE OR REPLACE VIEW uwva_v_rap_res_ruimten
(
   fclt_f_gebouw,
   fclt_f_verdieping,
   ruimte,
   alg_key,
   fclt_f_ruimtecategorie,
   fclt_f_ruimtenaam,
   norm_capaciteit,
   res_key,
   fotonaam,
   omschrijving,
   fclt_f_bez_actie,
   ruimtenaam_friendly,
   vervaldatum
)
AS
   SELECT x.alg_gebouw_code,
          x.alg_verdieping_code,
          x.alg_ruimte_nr,
          TO_CHAR (x.alg_ruimte_key) alg_key,
          z.ins_discipline_omschrijving,
          z.res_ruimte_nr,
          TO_CHAR(DECODE (
                     cap1.def_ro_key,
                     NULL,
                     (SELECT ro.res_ruimte_opstel_bezoekers
                        FROM res_ruimte_opstelling ro
                       WHERE ro.res_ruimte_opstel_key = cap2.min_ro_key),
                     (SELECT ro.res_ruimte_opstel_bezoekers
                        FROM res_ruimte_opstelling ro
                       WHERE ro.res_ruimte_opstel_key = cap1.def_ro_key)))
             norm_capaciteit,
          TO_CHAR (z.res_ruimte_key) res_key,
          z.res_ruimte_image fotonaam,
          z.res_ruimte_omschrijving omschrijving,
          z.bez_actie_omschrijving,
          z.res_ruimte_friendlyname,
          z.res_ruimte_vervaldatum
     FROM (SELECT rar.res_ruimte_key,
                  r.alg_ruimte_key,
                  r.alg_ruimte_nr,
                  v.alg_verdieping_code,
                  g.alg_gebouw_code,
                  l.alg_locatie_code
             FROM res_v_aanwezigalg_ruimte rar,
                  alg_v_aanwezigruimte r,
                  alg_v_aanwezigverdieping v,
                  alg_v_aanweziggebouw g,
                  alg_v_aanweziglocatie l
            WHERE     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) x
          JOIN (SELECT rr.res_ruimte_key,
                       d.ins_discipline_omschrijving,
                       rr.res_ruimte_nr,
                       rr.res_ruimte_omschrijving,
                       rr.res_ruimte_image,
                       rr.res_ruimte_friendlyname,
                       rr.res_ruimte_vervaldatum,
                       a.bez_actie_omschrijving
                  FROM res_v_aanwezigruimte rr,
                       res_v_aanwezigdiscipline d,
                       bez_actie a
                 WHERE rr.res_discipline_key = d.ins_discipline_key
                       AND a.bez_actie_key(+) = rr.bez_actie_key) z
             ON x.res_ruimte_key = z.res_ruimte_key
          LEFT JOIN         -- Default ruimte-capaciteit (indien gedefinieerd)
                    (SELECT ro.res_ruimte_key,
                            ro.res_ruimte_opstel_key def_ro_key
                       FROM res_ruimte_opstelling ro
                      WHERE ro.res_ruimte_opstel_default = 1) cap1
             ON x.res_ruimte_key = cap1.res_ruimte_key
          LEFT JOIN         -- Anders de eerst gedefinieerde ruimte-capaciteit
                    (  SELECT ro.res_ruimte_key,
                              MIN (ro.res_ruimte_opstel_key) min_ro_key
                         FROM res_ruimte_opstelling ro
                     GROUP BY ro.res_ruimte_key) cap2
             ON x.res_ruimte_key = cap2.res_ruimte_key;


CREATE OR REPLACE PROCEDURE uwva_import_resruimten (p_import_key IN NUMBER)
AS
   c_delim                         VARCHAR2 (1) := ';';
   v_newline                       VARCHAR2 (1000);              -- Input line
   v_errormsg                      VARCHAR2 (1000);
   v_errorhint                     VARCHAR2 (1000);
   oracle_err_num                  NUMBER;
   oracle_err_mes                  VARCHAR2 (200);
   header_is_valid                 NUMBER;
   v_count_tot                     NUMBER (10);
   v_count_import                  NUMBER (10);
   v_ongeldig                      NUMBER (1);
   v_aanduiding                    VARCHAR2 (200);
   -- De importvelden
   v_alg_gebouw_code               VARCHAR2 (255);                      -- C10
   v_alg_verdieping_code           VARCHAR2 (255);                      -- C10
   v_alg_ruimte_nr                 VARCHAR2 (255);                      -- C10
   v_alg_ruimte_key                VARCHAR2 (255);                      -- N10
   v_alg_ruimte_key_n              NUMBER (10);                         -- N10
   v_ins_discipline_omschrijving   VARCHAR2 (255);                      -- C30
   v_res_ruimte_nr                 VARCHAR2 (255);                      -- C40
   v_norm_capaciteit               VARCHAR2 (255);                    -- dummy
   v_res_ruimte_key                VARCHAR2 (255);                      -- N10
   v_res_ruimte_key_n              NUMBER (10);                         -- N10
   v_fotonaam                      VARCHAR2 (255);                     -- C255
   v_res_ruimte_omschrijving       VARCHAR2 (1000);                    -- C255

   -- Overige velden:
   CURSOR c1
   IS
        SELECT *
          FROM fac_imp_file
         WHERE fac_import_key = p_import_key
      ORDER BY fac_imp_file_index;
BEGIN
   DELETE FROM uwva_imp_resruimten;

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

   FOR rec1 IN c1
   LOOP
      BEGIN
         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_delim, v_alg_gebouw_code);
         fac.imp_getfield (v_newline, c_delim, v_alg_verdieping_code);
         fac.imp_getfield (v_newline, c_delim, v_alg_ruimte_nr);
         fac.imp_getfield (v_newline, c_delim, v_alg_ruimte_key);
         fac.imp_getfield (v_newline, c_delim, v_ins_discipline_omschrijving);
         fac.imp_getfield (v_newline, c_delim, v_res_ruimte_nr);
         fac.imp_getfield (v_newline, c_delim, v_norm_capaciteit);
         fac.imp_getfield (v_newline, c_delim, v_res_ruimte_key);
         fac.imp_getfield (v_newline, c_delim, v_fotonaam);
         fac.imp_getfield (v_newline, c_delim, v_res_ruimte_omschrijving);
         v_aanduiding :=
               '['
            || v_alg_gebouw_code
            || '|'
            || v_alg_verdieping_code
            || '|'
            || v_alg_ruimte_nr
            || '|'
            || v_res_ruimte_nr
            || '] ';

         -- Ik controleer of ik een geldige header heb, dat is: in de juiste kolommen
         -- de juiste kolomkop. Ik controleer daarbij ALLE kolommen!
         -- Ik negeer alles totdat ik een geldige header ben gepasseerd.
         IF (header_is_valid = 0)
         THEN
            IF     UPPER (v_alg_gebouw_code) = 'GEBOUW'
               AND UPPER (v_alg_verdieping_code) = 'VERDIEPING'
               AND UPPER (v_alg_ruimte_nr) = 'RUIMTE'
               AND UPPER (v_alg_ruimte_key) = 'ALG_KEY'
               AND UPPER (v_ins_discipline_omschrijving) = 'RUIMTECATEGORIE'
               AND UPPER (v_res_ruimte_nr) = 'RUIMTENAAM'
               AND UPPER (v_norm_capaciteit) = 'NORM_CAPACITEIT'
               AND UPPER (v_res_ruimte_key) = 'RES_KEY'
               AND UPPER (v_fotonaam) = 'FOTONAAM'
               AND UPPER (v_res_ruimte_omschrijving) = 'OMSCHRIJVING'
            THEN
               header_is_valid := 1;
            END IF;
         ELSE
            v_count_tot := v_count_tot + 1;
            -- Controleer alle veldwaarden
            v_errormsg :=
               'Fout bij inlezen gebouwcode [' || v_alg_gebouw_code || ']';
            v_alg_gebouw_code := TRIM (v_alg_gebouw_code);

            --
            v_errormsg :=
                  'Fout bij inlezen verdiepingcode ['
               || v_alg_verdieping_code
               || ']';
            v_alg_verdieping_code := TRIM (v_alg_verdieping_code);

            --
            v_errormsg :=
               'Fout bij inlezen ruimtenr [' || v_alg_ruimte_nr || ']';
            v_alg_ruimte_nr := TRIM (v_alg_ruimte_nr);

            --
            v_errormsg :=
               'Fout bij inlezen alg_key [' || v_alg_ruimte_key || ']';
            v_alg_ruimte_key_n := TO_NUMBER (v_alg_ruimte_key);

            --
            v_errormsg :=
                  'Fout bij inlezen ruimtecategorie ['
               || v_ins_discipline_omschrijving
               || ']';
            v_ins_discipline_omschrijving :=
               TRIM (v_ins_discipline_omschrijving);

            --
            v_errormsg :=
               'Fout bij inlezen ruimtenaam [' || v_res_ruimte_nr || ']';
            v_res_ruimte_nr := TRIM (v_res_ruimte_nr);

            IF LENGTH (v_res_ruimte_nr) > 40
            THEN
               v_res_ruimte_nr := SUBSTR (v_res_ruimte_nr, 1, 40);
               fac.imp_writelog (
                  p_import_key,
                  'W',
                  v_aanduiding || 'Ruimtenaam te lang',
                     'Ruimtenaam wordt afgebroken tot ['
                  || v_res_ruimte_nr
                  || ']');
            END IF;

            -- DUMMY: hier nog wel ingelezen, maar verder niets mee doen!
            v_errormsg :=
                  'Fout bij inlezen max. bezoekers ['
               || v_norm_capaciteit
               || ']';
            v_norm_capaciteit := TRIM (v_norm_capaciteit);

            --
            v_errormsg :=
               'Fout bij inlezen res_key [' || v_res_ruimte_key || ']';
            v_res_ruimte_key_n := TO_NUMBER (v_res_ruimte_key);

            --
            v_errormsg := 'Fout bij inlezen fotonaam [' || v_fotonaam || ']';
            v_fotonaam := TRIM (v_fotonaam);

            --
            v_errormsg :=
                  'Fout bij inlezen omschrijving ['
               || v_res_ruimte_omschrijving
               || ']';
            v_res_ruimte_omschrijving := TRIM (v_res_ruimte_omschrijving);

            IF LENGTH (v_res_ruimte_omschrijving) > 255
            THEN
               v_res_ruimte_omschrijving :=
                  SUBSTR (v_res_ruimte_omschrijving, 1, 255);
               fac.imp_writelog (
                  p_import_key,
                  'W',
                  v_aanduiding || 'Omschrijving te lang',
                  'Omschrijving wordt afgebroken na 255 tekens');
            END IF;

            -- Insert geformatteerde import record
            IF v_ongeldig = 0
            THEN
               BEGIN
                  v_errormsg := 'Fout bij toevoegen regel aan importtabel';

                  INSERT INTO uwva_imp_resruimten (alg_gebouw_code,
                                                   alg_verdieping_code,
                                                   alg_ruimte_nr,
                                                   alg_ruimte_key,
                                                   ins_discipline_omschrijving,
                                                   res_ruimte_nr,
                                                   res_ruimte_key,
                                                   fotonaam,
                                                   res_ruimte_omschrijving)
                      VALUES (v_alg_gebouw_code,
                              v_alg_verdieping_code,
                              v_alg_ruimte_nr,
                              v_alg_ruimte_key_n,
                              v_ins_discipline_omschrijving,
                              v_res_ruimte_nr,
                              v_res_ruimte_key_n,
                              v_fotonaam,
                              v_res_ruimte_omschrijving);

                  COMMIT;

                  v_count_import := v_count_import + 1;
               EXCEPTION
                  WHEN OTHERS
                  THEN
                     oracle_err_num := SQLCODE;
                     oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
                     v_errormsg :=
                           v_errormsg
                        || ' ORACLE (error '
                        || oracle_err_num
                        || '/'
                        || oracle_err_mes
                        || ')';
                     fac.imp_writelog (
                        p_import_key,
                        'E',
                        v_aanduiding || v_errormsg,
                        'Fout bij toevoegen regel aan importtabel UWVA_IMP_RESRUIMTEN.');
               END;
            END IF;
         END IF;
      END;
   END LOOP;

   IF (header_is_valid = 0)
   THEN
      fac.imp_writelog (p_import_key,
                        'E',
                        'Ongeldig importbestand',
                        'Geen header of header niet volgens specificatie!');
   ELSE
      fac.imp_writelog (
         p_import_key,
         'S',
         'Inleesproces: aantal ingelezen importregels: '
         || TO_CHAR (v_count_tot),
         '');
      fac.imp_writelog (
         p_import_key,
         'S',
         'Inleesproces: aantal ongeldige niet ingelezen importregels: '
         || TO_CHAR (v_count_tot - v_count_import),
         '');
   END IF;

   COMMIT;
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,
         'E',
         v_errormsg,
         'Inleesproces reserveerbare ruimtegegevens afgebroken!');
END uwva_import_resruimten;
/


CREATE OR REPLACE PROCEDURE uwva_update_resruimten (p_import_key IN NUMBER)
AS
   -- Cursor loopt over tijdelijke tabel met daarin opgebouwd de reserveerbare
   -- ruimtegegevens.
   CURSOR c1
   IS
        SELECT alg_ruimte_key,
               res_ruimte_key,
               res_ruimte_nr,
               fotonaam,
               res_ruimte_omschrijving
          FROM uwva_imp_resruimten
      ORDER BY 1, 2;

   v_count_tot      NUMBER (10);
   v_count_upd      NUMBER (10);
   v_ongeldig       NUMBER;
   v_errormsg       VARCHAR2 (1000);
   oracle_err_num   NUMBER;
   oracle_err_mes   VARCHAR2 (200);

   -- SUBFUNC
   FUNCTION verwerk_regel (p_import_key                IN NUMBER,
                           p_alg_key                   IN NUMBER,
                           p_res_key                   IN NUMBER,
                           p_res_ruimte_nr             IN VARCHAR2,
                           p_fotonaam                  IN VARCHAR2,
                           p_res_ruimte_omschrijving   IN VARCHAR2)
      RETURN NUMBER
   IS
      --c_foto_prefix          VARCHAR2 (20) := '/photos/';
      v_errormsg             VARCHAR2 (1000);
      oracle_err_num         NUMBER;
      oracle_err_mes         VARCHAR2 (200);
      v_ongeldig             NUMBER (10);
      v_aanduiding           VARCHAR2 (200);
      v_count                NUMBER (10);
      v_onrgoedkenmerk_key   NUMBER (10);
   BEGIN
      v_ongeldig := 0;
      v_aanduiding := '[' || p_alg_key || '|' || p_res_key || '] ';
      -- Controleer ruimte-keys
      v_errormsg := 'Fout bepalen resruimte';

      SELECT COUNT (rar.res_alg_ruimte_key)
        INTO v_count
        FROM res_v_aanwezigalg_ruimte rar
       WHERE rar.alg_ruimte_key = p_alg_key
             AND rar.res_ruimte_key = p_res_key;

      IF v_count = 1
      THEN
         v_errormsg := 'Fout bijwerken resruimte-naam/omschrijving/foto';

         UPDATE res_ruimte
            SET res_ruimte_nr = COALESCE (p_res_ruimte_nr, res_ruimte_nr),
                res_ruimte_omschrijving =
                   COALESCE (p_res_ruimte_omschrijving,
                             res_ruimte_omschrijving),
                res_ruimte_image = COALESCE (p_fotonaam, res_ruimte_image)
          WHERE res_ruimte_key = p_res_key;

         COMMIT;
      ELSE
         v_ongeldig := 1;
         fac.imp_writelog (p_import_key,
                           'W',
                           v_aanduiding || v_errormsg,
                           'Regel wordt overgeslagen');
         COMMIT;
      END IF;

      RETURN v_ongeldig;
   EXCEPTION
      WHEN OTHERS
      THEN
         v_ongeldig := 1;
         oracle_err_num := SQLCODE;
         oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
         v_errormsg :=
               v_errormsg
            || 'ORACLE (error '
            || oracle_err_num
            || '/'
            || oracle_err_mes
            || ')';
         fac.imp_writelog (p_import_key,
                           'W',
                           v_aanduiding || v_errormsg,
                           '');
         COMMIT;

         RETURN v_ongeldig;
   END;
-- MAIN
BEGIN
   -- Loop door alle resruimte-regels en verwerk deze.
   v_count_tot := 0;
   v_count_upd := 0;

   FOR rec IN c1
   LOOP
      BEGIN
         v_count_tot := v_count_tot + 1;

         IF verwerk_regel (p_import_key,
                           rec.alg_ruimte_key,
                           rec.res_ruimte_key,
                           rec.res_ruimte_nr,
                           rec.fotonaam,
                           rec.res_ruimte_omschrijving) = 0
         THEN
            v_count_upd := v_count_upd + 1;
         END IF;
      END;
   END LOOP;

   fac.imp_writelog (
      p_import_key,
      'S',
         'Importproces: '
      || TO_CHAR (v_count_upd)
      || ' van de '
      || TO_CHAR (v_count_tot)
      || ' regels verwerkt',
      '');
   COMMIT;
EXCEPTION
   WHEN OTHERS
   THEN
      oracle_err_num := SQLCODE;
      oracle_err_mes := SUBSTR (SQLERRM, 1, 150);
      v_errormsg :=
            v_errormsg
         || 'ORACLE (error '
         || oracle_err_num
         || '/'
         || oracle_err_mes
         || ')';
      fac.imp_writelog (
         p_import_key,
         'E',
         'Importproces reserveerbare ruimtegegevens afgebroken!',
         v_errormsg);
END uwva_update_resruimten;
/

CREATE OR REPLACE PROCEDURE uwva_export_tcsbezout (p_applname   IN VARCHAR2,
                                                   p_applrun    IN VARCHAR2,
                                                   p_filedir    IN VARCHAR2,
                                                   p_filename   IN VARCHAR2)
AS
   -- Automatisch buitenmelden bezoekers (moet gepland tussen 22:00 en 0:00 uur).
   CURSOR uwva_tcs_bez_out_c
   IS
      SELECT b.bezoeker_id, b.pasnr, b.bezoeker_in
        FROM UWVA_V_RAP_TCS_BEZ b
       WHERE b.bezoeker_out IS NULL;
BEGIN
   IF fac.safe_to_number (TO_CHAR (SYSDATE, 'HH24')) >= '22'
   THEN
      FOR rec IN uwva_tcs_bez_out_c
      LOOP
         BEGIN
            UPDATE bez_bezoekers
               SET bez_bezoekers_out = SYSDATE
             WHERE bez_bezoekers_key = rec.bezoeker_id;

            fac.trackaction ('BEZOUT', rec.bezoeker_id, NULL, NULL, NULL);
         END;
      END LOOP;
   END IF;
END;
/

CREATE OR REPLACE PROCEDURE uwva_export_tcsustatus (p_applname   IN VARCHAR2,
                                                    p_applrun    IN VARCHAR2,
                                                    p_filedir    IN VARCHAR2,
                                                    p_filename   IN VARCHAR2)
AS
   -- Status pas wijzigen naar aanleiding van invulling "uitgifte" veld.
   CURSOR uwva_tcs_uitgifte_status_c
   IS
      SELECT i.ins_deel_key,
             DECODE (kdu.ins_kenmerkdeel_waarde,
                     '29740',
                     DECODE (ku.ins_kenmerk_key,                     -- Defect
                             502, '29874',                   -- Defect/Andover
                             '30127'),                      -- Defect/Niet UWV
                     '29743',
                     DECODE (ku.ins_kenmerk_key,                   -- Verloren
                             502, '29877',                  -- Vermist/Andover
                             '30129'),                     -- Vermist/Niet UWV
                     DECODE (ku.ins_kenmerk_key,                  -- Ingenomen
                             502, '29875',              -- Geblokkeerd/Andover
                             '30128'))                 -- Geblokkeerd/Niet UWV
                newstat_key,
             DECODE (kdu.ins_kenmerkdeel_waarde,
                     '29740',
                     DECODE (ku.ins_kenmerk_key,                     -- Defect
                             502, 'Defect',                  -- Defect/Andover
                             'Defect'),                     -- Defect/Niet UWV
                     '29743',
                     DECODE (ku.ins_kenmerk_key,                   -- Verloren
                             502, 'Vermist',                -- Vermist/Andover
                             'Vermist'),                   -- Vermist/Niet UWV
                     DECODE (ku.ins_kenmerk_key,                  -- Ingenomen
                             502, 'Geblokkeerd',        -- Geblokkeerd/Andover
                             'Geblokkeerd'))           -- Geblokkeerd/Niet UWV
                newstat_oms
        FROM ins_v_aanwezigdeel i, ins_kenmerkdeel kdu, ins_kenmerk ku, ins_kenmerkdeel kds, ins_kenmerk ks
       WHERE     i.ins_deel_key = kdu.ins_deel_key
             AND kdu.ins_kenmerk_key = ku.ins_kenmerk_key
             AND ku.ins_srtkenmerk_key = 342                       -- Uitgifte
             AND kdu.ins_kenmerkdeel_waarde IN ('29741', '29740', '29743') -- Ingenomen/Defect/Verloren
             AND i.ins_deel_key = kds.ins_deel_key
             AND kds.ins_kenmerk_key = ks.ins_kenmerk_key
             AND ks.ins_srtkenmerk_key IN (327, 361) -- Status (Andover/Niet UWV)
             AND kds.ins_kenmerkdeel_waarde NOT IN ('29875', '30128', '29874', '30127', '29877', '30129'); -- Geblokkeerd/Defect/Vermist

   v_kenmerkdeel_key   NUMBER (10);
   v_oldstat_oms       VARCHAR2 (60);
BEGIN
   FOR rec IN uwva_tcs_uitgifte_status_c
   LOOP
      BEGIN
         SELECT kd.ins_kenmerkdeel_key, ud.fac_usrdata_omschr
           INTO v_kenmerkdeel_key, v_oldstat_oms
           FROM ins_v_aanwezigkenmerkdeel kd, ins_kenmerk k, fac_usrdata ud
          WHERE kd.ins_deel_key = rec.ins_deel_key
                AND kd.ins_kenmerk_key = k.ins_kenmerk_key
                AND k.ins_srtkenmerk_key IN (327, 361) -- Status (Andover/Niet UWV)
                AND kd.ins_kenmerkdeel_waarde = TO_CHAR (ud.fac_usrdata_key);

         UPDATE ins_kenmerkdeel
            SET ins_kenmerkdeel_waarde = rec.newstat_key
          WHERE ins_kenmerkdeel_key = v_kenmerkdeel_key;

         fac.trackaction ('INSUPD', rec.ins_deel_key, NULL, NULL, 'Status gewijzigd: ' || v_oldstat_oms || ' --> ' || rec.newstat_oms);

         COMMIT;
      END;
   END LOOP;
END;
/

-- UWVA#20109: Marktplaats reminder
CREATE OR REPLACE FORCE VIEW uwva_v_noti_mrkreminder
(
   code,
   sender,
   receiver,
   text,
   key,
   xkey
)
AS
   SELECT NULL,
          NULL,
          prs_perslid_key,
          'U heeft een bericht op Facilitair Marktplaats staan met de titel: '
          || mrk_bericht_titel
          || ' als u geen actie onderneemt wordt deze over 14 dagen vanzelf verwijderd',
          NULL,
          NULL
     FROM mrk_bericht
    WHERE TO_DATE (mrk_bericht_aanmaak) = TO_DATE (SYSDATE) - 46;


--UWVA#20417 ondersteunende view voor een flexveld kostensoort bij bedrijf.

CREATE OR REPLACE VIEW uwva_v_kostensoort
(
   prs_kostensoort_key,
   prs_kostensoort_oms
)
AS
   SELECT prs_kostensoort_key,
          prs_kostensoort_oms || ' - ' || prs_kostensoort_opmerking
             prs_kostensoort_omschrijving
     FROM prs_kostensoort;


-- UWVA#19622: Alleen bepaalde catalogi (Instructieruimte/86, Servicepunt/87,
-- Vergaderruimte/89, Vergader RvB/112 en Video conference/276) en alleen met
-- FO-status Optie/Definitief (dus niet Blokkade en Vervallen)!

CREATE OR REPLACE VIEW UWVA_V_RAP_RES_INFOBORD
(
   AKTIEF,
   OFFSET,
   DAG,
   TIJD_VAN,
   TIJD_TOT,
   RUIMTE,
   CATALOGUS,
   AANVRAGER,
   GASTHEER,
   OMSCHRIJVING,
   STATUS,
   LOCATIE_CODE,
   GEBOUW_CODE,
   VERDIEPING_CODE,
   LOCATIE_OMSCHRIJVING,
   GEBOUW_OMSCHRIJVING,
   VERDIEPING_OMSCHRIJVING,
   ALG_LOCATIE_KEY,
   ALG_GEBOUW_KEY,
   ALG_VERDIEPING_KEY
)
AS
   SELECT (CASE
              WHEN rrr.res_rsv_ruimte_van > SYSDATE THEN 'expected'
              WHEN rrr.res_rsv_ruimte_tot < SYSDATE THEN 'passed'
              ELSE 'active'
           END)
             aktief,
          TRUNC ( (SYSDATE - rrr.res_rsv_ruimte_van) * 24 * 60) offset,
          TO_CHAR (rrr.res_rsv_ruimte_van, 'dd-mm-yyyy') dag,
          TO_CHAR (rrr.res_rsv_ruimte_van, 'hh24:mi') tijd_van,
          TO_CHAR (rrr.res_rsv_ruimte_tot, 'hh24:mi') tijd_tot,
          rrg.res_ruimte_nr ruimte,
          rd.ins_discipline_omschrijving catalogus,
          aanvrager.prs_perslid_naam_full aanvrager,
          gastheer.prs_perslid_naam_full gastheer,
          rrr.res_rsv_ruimte_omschrijving omschrijving,
          sf.res_status_fo_omschrijving status,
          l.alg_locatie_code locatie_code,
          g.alg_gebouw_code gebouw_code,
          v.alg_verdieping_code verdieping_code,
          l.alg_locatie_omschrijving locatie_omschrijving,
          g.alg_gebouw_omschrijving gebouw_omschrijving,
          v.alg_verdieping_omschrijving verdieping_omschrijving,
          l.alg_locatie_key,
          g.alg_gebouw_key,
          v.alg_verdieping_key
     FROM res_v_aanwezigrsv_ruimte rrr,
          res_ruimte_opstelling rro,
          res_v_res_ruimte_gegevens rrg,
          prs_v_perslid_fullnames aanvrager,
          prs_v_perslid_fullnames gastheer,
          alg_locatie l,
          alg_gebouw g,
          alg_verdieping v,
          res_status_fo sf,
          res_discipline rd
    WHERE     rrr.res_status_fo_key IN (1, 2)    -- Alleen Optie + Definitief!
          AND rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key
          AND rro.res_ruimte_key = rrg.res_ruimte_key
          AND rrr.res_rsv_ruimte_host_key = gastheer.prs_perslid_key
          AND rrr.res_rsv_ruimte_contact_key = aanvrager.prs_perslid_key
          AND TRUNC (rrr.res_rsv_ruimte_van) = TRUNC (SYSDATE)
          AND rrg.alg_locatie_key = l.alg_locatie_key
          AND rrg.alg_gebouw_key = g.alg_gebouw_key
          AND rrg.alg_verdieping_key = v.alg_verdieping_key
          AND rrr.res_status_fo_key = sf.res_status_fo_key
          AND rrg.res_discipline_key = rd.ins_discipline_key
          AND rd.ins_discipline_key IN (86, 87, 89, 112, 276, 404, 409);


-- UWVA#21050: Overzicht instellingen alle vakgroepen

CREATE OR REPLACE VIEW uwva_v_rap_vakgroep
(
   FCLT_F_VAKGROEPTYPE,
   VAKGROEPTYPE_KEY,
   FCLT_F_VAKGROEP,
   VAKGROEP_KEY,
   BEHANDELGROEP,
   KOSTENSOORT,
   KOSTENPLAATS_VERPLICHT,
   BACKOFFICE_BESTELLIMIET,
   STARTDATUM_BEPALEN,
   FRONTOFFICE_BEHANDELD,
   FRONTEND_PRIORITEIT_BEPALEN,
   FE_MANDAAT_EIGEN_KPN,
   FACTUURMARGE_PERCENTAGE,
   FACTUURMARGE_EURO,
   FACTUUR_MATCHING,
   FACTUUR_AUTO_BINNEN_MARGE,
   FACTUUR_ACCOORD_BENEDEN,
   BACKOFFICE_NOTIFICEREN,
   MELDER_NOTIFICEREN,
   DAGEN_TBV_HERINNERING,
   VERPLICHT_OPDRACHTBEDRAG,
   OPDRACHTSJABLOON,
   AFZENDER_EMAIL_NOTIFICATIE,
   KTO_METING_PERC,
   KTO_METING_DREMPEL
)
AS
   SELECT srt.ins_srtdiscipline_omschrijving vakgroeptype,
          TO_CHAR (srt.ins_srtdiscipline_key) vakgroeptype_key,
          vak.ins_discipline_omschrijving vakgroep,
          TO_CHAR (vak.ins_discipline_key) vakgroep_key,
          bg.mld_behandelgroep_naam behandelgroep,
          pks.prs_kostensoort_oms kostensoort,
          DECODE (vak.ins_discipline_kpnverplicht, 1, 'ja', 'nee')
             kostenplaats_verplicht,
          TO_CHAR (dc.mld_disc_params_bestellimiet) backoffice_bestellimiet,
          DECODE (dc.mld_disc_params_startdatum, 1, 'ja', 'nee')
             startdatum_bepalen,
          DECODE (dc.mld_disc_params_directklaar, 1, 'ja', 'nee')
             frontoffice_behandeld,
          DECODE (dc.mld_disc_params_frontendprio, 1, 'ja', 'nee')
             frontend_prioriteit_bepalen,
          DECODE (dc.mld_disc_params_eigen_kp, 1, 'ja', 'nee')
             fe_mandaat_eigen_kpn,
          TO_CHAR (dc.mld_disc_params_factuurpct) factuurmarge_percentage,
          TO_CHAR (dc.mld_disc_params_factuurmarge) factuurmarge_euro,
          TO_CHAR (dc.mld_disc_params_factmatchmode) factuur_matching,
          DECODE (dc.mld_disc_params_factuurappr, 1, 'ja', 'nee')
             factuur_auto_binnen_marge,
          TO_CHAR (dc.mld_disc_params_factuurgrens) factuur_accoord_beneden,
          DECODE (dc.mld_disc_params_bonotify, 1, 'ja', 'nee')
             backoffice_notificeren,
          DECODE (dc.mld_disc_params_notify, 1, 'ja', 'nee')
             melder_notificeren,
          TO_CHAR (dc.mld_disc_params_noti_dagen) dagen_tbv_herinnering,
          DECODE (dc.mld_disc_params_opdr_kosten, 1, 'ja', 'nee')
             verplicht_opdrachtbedrag,
          TO_CHAR (dc.fac_activiteit_key) opdrachtsjabloon,
          vak.ins_discipline_email afzender_email_notificatie,
          TO_CHAR (vak.ins_discipline_ktopercentage) kto_meting_perc,
          TO_CHAR (vak.ins_discipline_ktodrempel) kto_meting_drempel
     FROM mld_discipline vak,
          ins_srtdiscipline srt,
          mld_disc_params dc,
          mld_behandelgroep bg,
          prs_kostensoort pks
    WHERE     vak.ins_discipline_verwijder IS NULL
          AND vak.ins_srtdiscipline_key = srt.ins_srtdiscipline_key
          AND vak.ins_discipline_key = dc.mld_ins_discipline_key
          AND dc.mld_behandelgroep_key = bg.mld_behandelgroep_key(+)
          AND vak.prs_kostensoort_key = pks.prs_kostensoort_key(+);

-- UWVA#21050: Overzicht instellingen alle bestelcatalogi

CREATE OR REPLACE VIEW uwva_v_rap_bescatalogi
(
   FCLT_F_CATALOGUS,
   CATALOGUS_KEY,
   KOSTENSOORT,
   KOSTENPLAATS_VERPLICHT,
   BESTELLIMIET,
   MIN_BESTELBEDRAG,
   TEN_LASTE_VAN_PGB,
   AUTO_BESTELOPDRACHT,
   AUTO_ACCEPT_AANVRAAG,
   OPNIEUW_FIATEREN,
   AFWIJKING_MEER_DAN_PERC,
   AFWIJKING_MEER_DAN_EURO,
   BES_DISC_PARAMS_FACTUURPCT,
   BES_DISC_PARAMS_FACTUURMARGE,
   FACTUUR_MATCHING,
   FACTUUR_AUTO_FIAT_BINNEN_MARGE,
   FACTUUR_ACCOORD_BENEDEN,
   LEVERDAGEN,
   Afleverbevestiging,
   PUNCHOUT_URL,
   PUNCHOUT_BEDRIJF,
   LOGO,
   AANTAL_DAGEN_TBV_HERINNERING,
   besteller_notificeren_opdr,
   RETOUREN_TOEGESTAAN,
   RETOUR_URL,
   OPMERKING_URL,
   AANWIJZING,
   GEKOPPELD_AAN_INKOOPCATALOGUS,
   ARTIKELEN_ZELFDE_GROEP,
   KTO_PERCENTAGE,
   KTO_DREMPEL
)
AS
   SELECT d.ins_discipline_omschrijving catalogus,
          d.ins_discipline_key catalogus_key,
          pks.prs_kostensoort_oms kostensoort,
          DECODE (d.ins_discipline_kpnverplicht, 1, 'ja', 'nee')
             kostenplaats_verplicht,
          bes_disc_params_bestellimiet bestellimiet,
          bes_disc_params_min_bedrag min_bestelbedrag,
          DECODE (bes_disc_params_pgb, 1, 'ja', 'nee') ten_laste_van_pgb,
          DECODE (bes_disc_params_auto_order, 1, 'ja', 'nee')
             auto_bestelopdracht,
          DECODE (bes_disc_params_autoacceptrfo, 1, 'ja', 'nee')
             auto_accept_aanvraag,
          DECODE (bes_disc_params_herfiat,
                  1, 'Als nieuwe',
                  2, 'Volgens onderstaand criterium',
                  'Nooit')
             opnieuw_fiateren,
          bes_disc_params_herfiatpct Afwijking_meer_dan_perc,
          bes_disc_params_herfiatmarge Afwijking_meer_dan_euro,
          bes_disc_params_factuurpct,
          bes_disc_params_factuurmarge,
          DECODE (bes_disc_params_factmatchmode, 3, '3-weg', 2, '2-weg', ' ')
             factuur_matching,
          DECODE (bes_disc_params_factuurappr, 1, 'ja', 'nee')
             factuur_auto_fiat_binnen_marge,
          bes_disc_params_factuurgrens factuur_accoord_beneden,
          bes_disc_params_leverdagen leverdagen,
          DECODE (bes_disc_params_remoteconfirm, 1, 'ja', 'nee')
             Afleverbevestiging,
          bes_disc_params_punchouturl punchout_URL,
          pb.prs_bedrijf_naam punchout_bedrijf,
          bes_disc_params_logo_url logo,
          bes_disc_params_noti_dagen aantal_dagen_tbv_herinnering,
          DECODE (bes_disc_params_noti_opdr, 1, 'ja', 'nee')
             besteller_notificeren_opdr,
          DECODE (bes_disc_params_retour, 1, 'ja', 'nee') retouren_toegestaan,
          bes_disc_params_retour_url retour_URL,
          bes_disc_params_levopm_url opmerking_URL,
          d.ins_discipline_opmerking aanwijzing,
          d2.ins_discipline_omschrijving gekoppeld_aan_inkoopcatalogus,
          DECODE (bes_disc_params_singlegroep, 1, 'ja', 'nee')
             artikelen_zelfde_groep,
          d.ins_discipline_ktopercentage kto_percentage,
          d.ins_discipline_ktodrempel kto_drempel
     FROM bes_discipline d,
          prs_kostensoort pks,
          bes_disc_params bdp,
          prs_bedrijf pb,
          bes_discipline d2
    WHERE     d.ins_discipline_verwijder IS NULL
          AND d.prs_kostensoort_key = pks.prs_kostensoort_key(+)
          AND d.ins_discipline_key = bdp.bes_ins_discipline_key
          AND bdp.bes_disc_params_punch_bedr_key = pb.prs_bedrijf_key(+)
          AND bdp.bes_ins_discipline_key_inkoop = d2.ins_discipline_key(+);

-- UWVA#20222 - Gegevensbron voor het samenstellen van de response op API-requests
--              vanuit KAS!
-- TODO: Vraag is of filtering op nr, naam (INACTIEF), oslogin, ed. wel gewenst???

CREATE OR REPLACE VIEW uwva_v_kas_input
(
   div_naam,
   div_oms,
   afd_naam,
   afd_oms,
   perslid_nr,
   achternaam,
   voorletters,
   tussenvoegsel,
   voornaam,
   naam_full
)
AS
     SELECT div.prs_afdeling_naam,
            div.prs_afdeling_omschrijving,
            afd.prs_afdeling_naam,
            afd.prs_afdeling_omschrijving,
            prs.prs_perslid_nr,
            prs.prs_perslid_naam,
            prs.prs_perslid_voorletters,
            prs.prs_perslid_tussenvoegsel,
            prs.prs_perslid_voornaam,
            prs.prs_naam_full
       FROM (SELECT a1.prs_afdeling_key,
                    a1.prs_afdeling_naam,
                    a1.prs_afdeling_omschrijving
               FROM prs_afdeling a1
              WHERE     a1.prs_afdeling_verwijder IS NULL
                    AND a1.prs_afdeling_parentkey IS NULL
                    AND prs_afdeling_omschrijving NOT LIKE 'INACTIEF:%'
                    AND EXISTS   -- Alleen echte divies; geen pseudo-divisies!
                          (SELECT 1
                             FROM prs_afdeling a2
                            WHERE a2.prs_afdeling_verwijder IS NULL
                                  AND a2.prs_afdeling_parentkey =
                                        a1.prs_afdeling_key)) div
            LEFT JOIN (SELECT ab.prs_afdeling_key1,
                              a.prs_afdeling_key,
                              a.prs_afdeling_naam,
                              a.prs_afdeling_omschrijving
                         FROM prs_afdeling a, prs_v_afdeling_boom ab
                        WHERE a.prs_afdeling_verwijder IS NULL
                              AND prs_afdeling_omschrijving NOT LIKE
                                    'INACTIEF:%'
                              AND a.prs_afdeling_key = ab.prs_afdeling_key) afd
               ON div.prs_afdeling_key = afd.prs_afdeling_key1
            LEFT JOIN (SELECT prs_afdeling_key,
                              prs_perslid_nr,
                              prs_perslid_naam,
                              prs_perslid_voorletters,
                              prs_perslid_tussenvoegsel,
                              prs_perslid_voornaam,
                              prs_perslid_naam
                              || DECODE (prs_perslid_voorletters,
                                         NULL, '',
                                         ', ' || prs_perslid_voorletters)
                              || DECODE (prs_perslid_tussenvoegsel,
                                         NULL, '',
                                         ' ' || prs_perslid_tussenvoegsel)
                              || DECODE (prs_perslid_voornaam,
                                         NULL, '',
                                         ' (' || prs_perslid_voornaam || ')')
                                 prs_naam_full
                         FROM prs_v_aanwezigperslid
                        WHERE     prs_perslid_nr IS NOT NULL
                              AND prs_perslid_naam NOT LIKE 'INACTIEF:%'
                              AND prs_perslid_oslogin IS NOT NULL
                              AND prs_perslid_oslogin NOT LIKE '\_%' ESCAPE '\') -- ' tbv. opmaak
                      prs
               ON afd.prs_afdeling_key = prs.prs_afdeling_key
   ORDER BY div.prs_afdeling_naam, afd.prs_afdeling_naam, prs.prs_naam_full;

-- KAS-request: GetAllDivisies

CREATE OR REPLACE VIEW uwva_v_kas_getdiv
AS
   SELECT DISTINCT div_naam, div_oms FROM uwva_v_kas_input;

-- KAS-requests: GetAllAfdelingen+GetAfdelingenBinnenDivisie

CREATE OR REPLACE VIEW uwva_v_kas_getafd
AS
   SELECT DISTINCT div_naam,
                   div_oms,
                   afd_naam,
                   afd_oms
     FROM uwva_v_kas_input
    WHERE div_naam <> afd_naam;

-- KAS-requests: GetPersonen+GetPersonenBinnenDivisie+GetPersonenBinnenAfdeling

CREATE OR REPLACE VIEW uwva_v_kas_getprs
AS
     SELECT div_naam,
            div_oms,
            afd_naam,
            afd_oms,
            perslid_nr,
            naam_full,
            achternaam,
            voorletters,
            tussenvoegsel,
            voornaam,
            1 aantal
       FROM uwva_v_kas_input
      WHERE naam_full IS NOT NULL
   ORDER BY naam_full;

-- UWVA#23613/FlexWhere-request: GetRes

CREATE OR REPLACE VIEW UWVA_V_FLEXWHERE_GETRES
(
   LOCATIE_CODE,
   GEBOUW_CODE,
   VERDIEPING_CODE,
   RUIMTE_NR,
   RES_NR,
   DATUM,
   VAN,
   TOT
)
AS
   SELECT l.alg_locatie_code locatie_code,
          g.alg_gebouw_code gebouw_code,
          v.alg_verdieping_code verdieping_code,
          r.alg_ruimte_nr ruimte_nr,                    -- Niet res_ruimte_nr!
          rrr.res_reservering_key || '/' || rrr.res_rsv_ruimte_volgnr res_nr,
          --(CASE
          --    WHEN rrr.res_rsv_ruimte_van > SYSDATE THEN 'expected'
          --    WHEN rrr.res_rsv_ruimte_tot < SYSDATE THEN 'passed'
          --    ELSE 'active'
          -- END)
          --   aktief,
          --TRUNC ( (SYSDATE - rrr.res_rsv_ruimte_van) * 24 * 60) offset,
          TO_CHAR (rrr.res_rsv_ruimte_van, 'dd-mm-yyyy') datum,
          TO_CHAR (rrr.res_rsv_ruimte_van, 'hh24:mi') van,
          TO_CHAR (rrr.res_rsv_ruimte_tot, 'hh24:mi') tot
     FROM res_v_aanwezigrsv_ruimte rrr,
          res_ruimte_opstelling rro,
          res_alg_ruimte rar,
          alg_v_aanwezigruimte r,
          alg_verdieping v,
          alg_gebouw g,
          alg_locatie l
    WHERE     rrr.res_status_fo_key IN (1, 2)    -- Alleen Optie + Definitief!
          AND rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key
          AND rro.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_verdieping_code IN ('22', '23')     -- Tbv. pilot beperkt!
          AND v.alg_gebouw_key = g.alg_gebouw_key
          AND g.alg_gebouw_upper = 'AMSG3'              -- Tbv. pilot beperkt!
          AND g.alg_locatie_key = l.alg_locatie_key
          AND SYSDATE BETWEEN rrr.res_rsv_ruimte_van
                          AND  rrr.res_rsv_ruimte_tot;


CREATE OR REPLACE VIEW uwva_v_rap_openopdr_mldafgmld
AS
     SELECT o.mld_melding_key || '/' || mld_opdr_bedrijfopdr_volgnr
               opdrachtnummer,
            so.mld_statusopdr_omschrijving status,
            o.mld_opdr_omschrijving omschrijving
       FROM mld_opdr o, mld_statusopdr so, mld_melding m
      WHERE     o.mld_statusopdr_key = so.mld_statusopdr_key
            AND so.mld_statusopdr_key NOT IN (1, 2, 6, 7, 9)
            AND m.mld_melding_key = o.mld_melding_key
            AND m.mld_melding_status IN (1, 5, 6)
   ORDER BY 1;

-- UWVA#21697: View voor flexveld "Alternatieve afdeling"
-- UWVA#21925: Niet filteren op Kostenplaatsgroep "Afdelingen", maar alle
--             PRS-kostenplaatsen nemen.

CREATE OR REPLACE VIEW uwva_v_alt_afdeling
AS
     SELECT afd.*
       FROM prs_kostenplaats kpn, prs_v_aanwezigafdeling afd
      WHERE     kpn.prs_kostenplaats_module = 'PRS'
            AND afd.prs_kostenplaats_key = kpn.prs_kostenplaats_key
            AND prs_afdeling_naam NOT LIKE 'INACTIEF%'
            AND prs_afdeling_key NOT IN (1, 3142)
   ORDER BY prs_afdeling_naam4;


-- UWVA#22765 - SLE: Verfijning sleutelbeheer

CREATE OR REPLACE PROCEDURE uwva_import_sle (p_import_key IN NUMBER)
AS
BEGIN
   -- 1-op-1 de generieke import.
   fac_import_sle (p_import_key);
END;
/


CREATE OR REPLACE PROCEDURE uwva_update_sle (p_import_key IN NUMBER)
AS
   v_errormsg       VARCHAR2 (1000);
   oracle_err_num   NUMBER;
   oracle_err_mes   VARCHAR2 (200);

   -- SUBPROC
   PROCEDURE add_sle_kenmerken (p_import_key IN NUMBER)
   AS
      CURSOR c1
      IS
         SELECT DISTINCT sg.ins_discipline_key,
                         sg.ins_srtgroep_key,
                         sd.ins_srtdeel_key,
                         x.ins_srtdeel_code,
                         x.ins_srtdeel_omschrijving,
                         TRIM (x.ins_kenmerkwaarde1) ssetnr,
                         TRIM (x.ins_kenmerkwaarde2) ssettype,
                         TRIM (x.ins_kenmerkwaarde3) ssetzone
           FROM fac_setting s,
                ins_v_aanwezigsrtgroep sg,
                ins_v_aanwezigsrtdeel sd,
                fac_imp_sle x
          WHERE UPPER (s.fac_setting_name) = 'SLE_INS_SRT_GROEP_KEY'
                AND fac.safe_to_number (s.fac_setting_pvalue) =
                      sg.ins_srtgroep_key
                AND sg.ins_srtgroep_key = sd.ins_srtgroep_key
                AND UPPER (TRIM (sd.ins_srtdeel_omschrijving)) =
                      UPPER (TRIM (x.ins_srtdeel_omschrijving))
                AND (   x.ins_kenmerkwaarde1 IS NOT NULL
                     OR x.ins_kenmerkwaarde2 IS NOT NULL
                     OR x.ins_kenmerkwaarde3 IS NOT NULL);

      c_ssetnr_srtkey     NUMBER (10) := 203; -- Sleutelsetnummer kenmerksoort
      c_ssettype_srtkey   NUMBER (10) := 201;  -- Type sleutelset kenmerksoort
      c_ssetzone_srtkey   NUMBER (10) := 202;             -- Zone kenmerksoort
      c_ssettype_tabkey   NUMBER (10) := 883;   -- Type sleutelset eigen tabel
      c_ssetzone_tabkey   NUMBER (10) := 882;              -- Zone eigen tabel
      v_count_tot         NUMBER (10);
      v_aanduiding        VARCHAR (200);
      v_kenmerk_key       NUMBER (10);
      v_usrdata_key       NUMBER (10);
      ccount              NUMBER (10);
   BEGIN
      v_errormsg := '';
      v_count_tot := 0;

      FOR rec IN c1
      LOOP
         BEGIN
            v_aanduiding :=
                  '['
               || rec.ins_srtdeel_code
               || '|'
               || rec.ins_srtdeel_omschrijving
               || '|'
               || rec.ssetnr
               || '|'
               || rec.ssettype
               || '|'
               || rec.ssetzone
               || '] ';

            -- SLEUTELSETNUMMER toevoegen/bijwerken; NOOIT naar NULL via import!
            IF rec.ssetnr IS NOT NULL
            THEN
               v_errormsg := 'Fout bij bepalen ssetnr-kenmerk';

               SELECT k.ins_kenmerk_key
                 INTO v_kenmerk_key
                 FROM ins_v_aanwezigkenmerk k
                WHERE     k.ins_srtkenmerk_key = c_ssetnr_srtkey
                      AND k.ins_srtinstallatie_key = rec.ins_srtgroep_key
                      AND k.ins_kenmerk_niveau = 'G';

               v_errormsg := 'Fout bij bepalen huidige ssetnr';

               SELECT COUNT ( * )
                 INTO ccount
                 FROM ins_v_aanwezigkenmerkdeel
                WHERE ins_deel_key = rec.ins_srtdeel_key -- ObjectSOORTkenmerk!
                      AND ins_kenmerk_key = v_kenmerk_key;

               IF ccount = 0
               THEN
                  v_errormsg := 'Fout bij toevoegen ssetnr';

                  INSERT INTO ins_kenmerkdeel (ins_deel_key,
                                               ins_kenmerk_key,
                                               ins_kenmerkdeel_waarde)
                      VALUES (rec.ins_srtdeel_key, v_kenmerk_key, rec.ssetnr);
               ELSE
                  v_errormsg := 'Fout bij bijwerken ssetnr';

                  UPDATE ins_kenmerkdeel
                     SET ins_kenmerkdeel_waarde = rec.ssetnr
                   WHERE     ins_kenmerkdeel_verwijder IS NULL
                         AND ins_deel_key = rec.ins_srtdeel_key -- ObjectSOORTkenmerk!
                         AND ins_kenmerk_key = v_kenmerk_key;
               END IF;

               COMMIT;
            END IF;

            -- TYPE SLEUTELSET toevoegen/bijwerken; NOOIT naar NULL via import!
            IF rec.ssettype IS NOT NULL
            THEN
               v_errormsg := 'Fout bij bepalen ssettype-kenmerk';

               SELECT k.ins_kenmerk_key
                 INTO v_kenmerk_key
                 FROM ins_v_aanwezigkenmerk k
                WHERE     k.ins_srtkenmerk_key = c_ssettype_srtkey
                      AND k.ins_srtinstallatie_key = rec.ins_srtgroep_key
                      AND k.ins_kenmerk_niveau = 'G';

               v_errormsg := 'Fout bij bepalen ssettype-waarde';

               SELECT COUNT ( * )
                 INTO ccount
                 FROM ins_v_aanwezigkenmerkdeel
                WHERE ins_deel_key = rec.ins_srtdeel_key -- ObjectSOORTkenmerk!
                      AND ins_kenmerk_key = v_kenmerk_key;

               SELECT ud.fac_usrdata_key
                 INTO v_usrdata_key
                 FROM fac_usrdata ud
                WHERE ud.fac_usrtab_key = c_ssettype_tabkey
                      AND UPPER (ud.fac_usrdata_omschr) =
                            UPPER (rec.ssettype);

               IF ccount = 0
               THEN
                  v_errormsg := 'Fout bij toevoegen ssettype';

                  INSERT INTO ins_kenmerkdeel (ins_deel_key,
                                               ins_kenmerk_key,
                                               ins_kenmerkdeel_waarde)
                      VALUES (rec.ins_srtdeel_key,
                              v_kenmerk_key,
                              v_usrdata_key);
               ELSE
                  v_errormsg := 'Fout bij bijwerken ssettype';

                  UPDATE ins_kenmerkdeel
                     SET ins_kenmerkdeel_waarde = v_usrdata_key
                   WHERE     ins_kenmerkdeel_verwijder IS NULL
                         AND ins_deel_key = rec.ins_srtdeel_key -- ObjectSOORTkenmerk!
                         AND ins_kenmerk_key = v_kenmerk_key;
               END IF;

               COMMIT;
            END IF;

            -- ZONE toevoegen/bijwerken; NOOIT naar NULL via import!
            IF rec.ssetzone IS NOT NULL
            THEN
               v_errormsg := 'Fout bij bepalen ssetzone-kenmerk';

               SELECT k.ins_kenmerk_key
                 INTO v_kenmerk_key
                 FROM ins_v_aanwezigkenmerk k
                WHERE     k.ins_srtkenmerk_key = c_ssetzone_srtkey
                      AND k.ins_srtinstallatie_key = rec.ins_srtgroep_key
                      AND k.ins_kenmerk_niveau = 'G';

               v_errormsg := 'Fout bij bepalen ssetzone-waarde';

               SELECT COUNT ( * )
                 INTO ccount
                 FROM ins_v_aanwezigkenmerkdeel
                WHERE ins_deel_key = rec.ins_srtdeel_key -- ObjectSOORTkenmerk!
                      AND ins_kenmerk_key = v_kenmerk_key;

               SELECT ud.fac_usrdata_key
                 INTO v_usrdata_key
                 FROM fac_usrdata ud
                WHERE ud.fac_usrtab_key = c_ssetzone_tabkey
                      AND UPPER (ud.fac_usrdata_omschr) =
                            UPPER (rec.ssetzone);

               IF ccount = 0
               THEN
                  v_errormsg := 'Fout bij toevoegen ssetzone';

                  INSERT INTO ins_kenmerkdeel (ins_deel_key,
                                               ins_kenmerk_key,
                                               ins_kenmerkdeel_waarde)
                      VALUES (rec.ins_srtdeel_key,
                              v_kenmerk_key,
                              v_usrdata_key);
               ELSE
                  v_errormsg := 'Fout bij bijwerken ssetzone';

                  UPDATE ins_kenmerkdeel
                     SET ins_kenmerkdeel_waarde = v_usrdata_key
                   WHERE     ins_kenmerkdeel_verwijder IS NULL
                         AND ins_deel_key = rec.ins_srtdeel_key -- ObjectSOORTkenmerk!
                         AND ins_kenmerk_key = v_kenmerk_key;
               END IF;

               COMMIT;
            END IF;

            v_count_tot := v_count_tot + 1;
         EXCEPTION
            WHEN OTHERS
            THEN
               oracle_err_num := SQLCODE;
               oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
               v_errormsg :=
                     v_errormsg
                  || ' ORACLE (error '
                  || oracle_err_num
                  || '/'
                  || oracle_err_mes
                  || ')';
               fac.imp_writelog (p_import_key,
                                 'W',
                                 v_aanduiding || v_errormsg,
                                 '');
               COMMIT;
         END;
      END LOOP;

      fac.imp_writelog (
         p_import_key,
         'S',
         'INS-Sleutelsetkenmerken/#bijgewerkt: ' || TO_CHAR (v_count_tot),
         '');
      COMMIT;
   END;
-- MAIN
BEGIN
   -- UWVA#23784: Eerst ingelezen data in import tabel nog wat UWVA-specifiek
   --             tweaken, nl. de objectsoortomschrijving prefixen met de code
   --             (als dat niet al zo is/was)!
   --             NB. Betreffende kolommen zijn niet leeg (want verplicht)!
   UPDATE fac_imp_sle
      SET ins_srtdeel_omschrijving =
             SUBSTR (ins_srtdeel_code || ' ' || ins_srtdeel_omschrijving,
                     1,
                     100)
    WHERE UPPER (ins_srtdeel_omschrijving) NOT LIKE
             UPPER (ins_srtdeel_code) || '%';

   -- Dan de generieke update.
   fac_update_sle (p_import_key);

   -- Daarna nog de 3 UWV-specifieke kenmerkvelden verwerken (Sleutelsetnummer,
   -- Type sleutelset + Zone).
   add_sle_kenmerken (p_import_key);
EXCEPTION
   WHEN OTHERS
   THEN
      oracle_err_num := SQLCODE;
      oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
      v_errormsg :=
            v_errormsg
         || ' ORACLE (error '
         || oracle_err_num
         || '/'
         || oracle_err_mes
         || ')';
      fac.imp_writelog (p_import_key,
                        'E',
                        v_errormsg,
                        'Importproces sleutelsets afgebroken!');
END uwva_update_sle;
/


CREATE OR REPLACE VIEW uwva_v_rap_sle_prs_inactief
(
   fclt_3d_alg_locatie_key,
   fclt_f_medewerker,
   fclt_f_sleutelsetcode,
   fclt_f_sleutelsetoms,
   sleutelnr,
   fclt_f_cilindersetoms
)
AS
   SELECT c.sleloc_key,                -- Stamlocatie van uitgeleende sleutel!
          a.prs_perslid_naam_full,
          a.sset_code,
          a.sset_oms,
          a.sleutel,
          b.cset_oms
     FROM (SELECT p.prs_perslid_key,
                  pf.prs_perslid_naam_full,
                  d.ins_deel_key,
                  d.ins_srtdeel_key,
                  sd.ins_srtdeel_code sset_code,
                  sd.ins_srtdeel_omschrijving sset_oms,
                  d.ins_deel_omschrijving sleutel
             FROM prs_perslid p,
                  ins_v_aanwezigdeel d,
                  ins_srtdeel sd,
                  prs_v_perslid_fullnames_all pf
            WHERE p.prs_perslid_verwijder IS NULL
                  AND (prs_perslid_naam LIKE 'INACTIEF:%'
                       OR (p.prs_perslid_oslogin IS NULL
                           AND p.prs_perslid_oslogin2 IS NULL))
                  AND p.prs_perslid_key = d.ins_alg_ruimte_key
                  AND d.ins_alg_ruimte_type = 'P'
                  AND d.ins_srtdeel_key = sd.ins_srtdeel_key
                  AND sd.ins_srtgroep_key = 1190                     -- Sgroep
                  AND p.prs_perslid_key = pf.prs_perslid_key) a
          LEFT JOIN (  SELECT ss.ins_srtdeel_key_2 sset_key,       -- Sset-key
                              COUNT ( * ) cset_aant,       -- Bij UWV altijd 1
                              MIN (sd.ins_srtdeel_omschrijving) cset_oms
                         FROM ins_srtdeel_srtdeel ss, ins_srtdeel sd
                        WHERE ss.ins_module = 'SLE'
                              AND ss.ins_srtdeel_key_1 = sd.ins_srtdeel_key
                     GROUP BY ss.ins_srtdeel_key_2) b
             ON a.ins_srtdeel_key = b.sset_key
          LEFT JOIN (SELECT d.ins_deel_key, ao.alg_locatie_key sleloc_key
                       FROM ins_deel d, alg_v_allonroerendgoed ao
                      WHERE     d.ins_alg_ruimte_type = 'P'
                            AND d.ins_alg_ruimte_type_org IN ('R', 'T')
                            AND d.ins_alg_ruimte_key_org = ao.alg_ruimte_key)
                    c
             ON a.ins_deel_key = c.ins_deel_key
          LEFT JOIN       -- Aantal cilinders=deuren waarop Sset toegang geeft
                    (  SELECT ss.ins_srtdeel_key_2 sset_key,       -- Sset-key
                              COUNT ( * ) cil_aant,
                              MIN (pa.alg_onroerendgoed_type) cil_ptype,
                              MIN (pa.alg_plaatsaanduiding) cil_plaats,
                              MIN (ao.alg_locatie_key) min_cilloc_key,
                              MAX (ao.alg_locatie_key) max_cilloc_key
                         FROM ins_srtdeel_srtdeel ss,
                              ins_srtdeel sd,
                              ins_v_aanwezigdeel d,
                              alg_v_plaatsaanduiding_all pa,
                              alg_v_allonroerendgoed ao
                        WHERE     ss.ins_module = 'SLE'
                              AND ss.ins_srtdeel_key_1 = sd.ins_srtdeel_key
                              AND sd.ins_srtdeel_key = d.ins_srtdeel_key
                              AND d.ins_alg_ruimte_type IN ('R', 'T')
                              AND d.ins_alg_ruimte_key =
                                    pa.alg_onroerendgoed_keys
                              AND d.ins_alg_ruimte_key = ao.alg_ruimte_key
                     GROUP BY ss.ins_srtdeel_key_2) d
             ON a.ins_srtdeel_key = d.sset_key
          LEFT JOIN                    -- Aantal sleutels in bezit van persoon
                    (  SELECT d.ins_alg_ruimte_key, COUNT ( * ) sle_aant
                         FROM ins_v_aanwezigdeel d, ins_srtdeel sd
                        WHERE     d.ins_alg_ruimte_type = 'P'
                              AND d.ins_srtdeel_key = sd.ins_srtdeel_key
                              AND sd.ins_srtgroep_key = 1189         -- Sgroep
                     GROUP BY d.ins_alg_ruimte_key) e
             ON a.prs_perslid_key = e.ins_alg_ruimte_key;


CREATE OR REPLACE VIEW uwva_v_noti_lfm_sle_retour
(
   code,
   sender,
   receiver,
   text,
   KEY,
   par1,
   par2,
   xkey
)
AS
   SELECT DISTINCT sn.fac_srtnotificatie_code,
                   NULL,
                   fac.safe_to_number (k.alg_onrgoedkenmerk_waarde),
                   sn.fac_srtnotificatie_oms,
                   fac.safe_to_number (k.alg_onrgoedkenmerk_waarde),
                   NULL,
                   NULL,
                   NULL
     FROM uwva_v_rap_sle_prs_inactief x,
          alg_onrgoedkenmerk k,
          fac_srtnotificatie sn
    WHERE     x.fclt_3d_alg_locatie_key = k.alg_onrgoed_key
          AND k.alg_onrgoed_niveau = 'L'
          AND k.alg_kenmerk_key = 1020                                  -- LFM
          AND k.alg_onrgoedkenmerk_verwijder IS NULL
          AND sn.fac_srtnotificatie_code = 'CUST14';


CREATE OR REPLACE VIEW uwva_v_rap_heavy_users
(
   fclt_f_kwartaal,
   naam,
   fclt_f_functie,
   fclt_f_rol,
   email,
   fclt_f_regio,
   fclt_f_pandcode,
   aanvragen,
   klachten,
   storingen,
   bestellingen,
   reserveringen
)
AS
   SELECT x.periode,
          pf.prs_perslid_naam_full naam,
          sp.prs_srtperslid_omschrijving functie,
          g.fac_groep_omschrijving rol,
          p.prs_perslid_email email,
          d.alg_district_omschrijving regio,
          rg.alg_gebouw_upper pandcode,
          TO_CHAR (x.mld_a),
          TO_CHAR (x.mld_k),
          TO_CHAR (x.mld_s),
          TO_CHAR (x.bes),
          TO_CHAR (x.res)
     FROM    (  SELECT x.prs_perslid_key,
                       x.periode,
                       SUM (x.mld_a) mld_a,
                       SUM (x.mld_k) mld_k,
                       SUM (x.mld_s) mld_s,
                       SUM (x.bes) bes,
                       SUM (x.res) res
                  FROM (  SELECT t.prs_perslid_key prs_perslid_key,
                                 TO_CHAR (m.mld_melding_datum, 'yyyy/q') periode,
                                 SUM(DECODE (md.ins_srtdiscipline_key,
                                             1, 0,
                                             3, 0,
                                             1)) -- 2, 9 of 10 = Aanvr./Vertaald./Verg.&Overn.
                                    mld_a,
                                 SUM(DECODE (md.ins_srtdiscipline_key,
                                             1, 0,
                                             3, 1,             -- 3 = Klachten
                                             0))
                                    mld_k,
                                 SUM(DECODE (md.ins_srtdiscipline_key,
                                             1, 1,            -- 1 = Storingen
                                             3, 0,
                                             0))
                                    mld_s,
                                 0 bes,
                                 0 res
                            FROM mld_melding m,
                                 mld_stdmelding sm,
                                 mld_discipline md,
                                 fac_tracking t
                           WHERE m.mld_stdmelding_key = sm.mld_stdmelding_key
                                 AND sm.mld_ins_discipline_key =
                                       md.ins_discipline_key
                                 AND md.ins_srtdiscipline_key IN (2, 9, 10, 3, 1)
                                 AND m.mld_melding_datum >
                                       TRUNC (ADD_MONTHS (SYSDATE, -12), 'q')
                                 AND m.mld_melding_key = t.fac_tracking_refkey
                                 AND t.fac_srtnotificatie_key = 21   -- MLDNEW
                        GROUP BY t.prs_perslid_key,
                                 TO_CHAR (m.mld_melding_datum, 'yyyy/q'),
                                 md.ins_srtdiscipline_key
                        UNION ALL
                          SELECT t.prs_perslid_key prs_perslid_key,
                                 TO_CHAR (t.fac_tracking_datum, 'yyyy/q') periode,
                                 0 mld_a,
                                 0 mld_k,
                                 0 mld_S,
                                 COUNT ( * ) bes,
                                 0 res
                            FROM fac_tracking t
                           WHERE t.fac_srtnotificatie_key = 234      -- BESNEW
                                 AND t.fac_tracking_datum >
                                       TRUNC (ADD_MONTHS (SYSDATE, -12), 'q')
                                 AND NOT EXISTS
                                       (SELECT 1
                                          FROM fac_tracking
                                         WHERE fac_srtnotificatie_key = 234 -- BESNEW
                                               AND fac_tracking_refkey =
                                                     t.fac_tracking_refkey
                                               AND fac_tracking_key <
                                                     t.fac_tracking_key)
                        GROUP BY t.prs_perslid_key,
                                 TO_CHAR (t.fac_tracking_datum, 'yyyy/q')
                        UNION ALL
                          SELECT t.prs_perslid_key prs_perslid_key,
                                 TO_CHAR (t.fac_tracking_datum, 'yyyy/q') periode,
                                 --TO_CHAR (rrr.res_rsv_ruimte_van, 'yyyy/q')
                                 --   periode,
                                 0 mld_a,
                                 0 mld_k,
                                 0 mld_s,
                                 0 bes,
                                 COUNT ( * ) res
                            FROM fac_tracking t
                           WHERE t.fac_srtnotificatie_key = 30       -- RESNEW
                                 AND t.fac_tracking_datum >
                                       TRUNC (ADD_MONTHS (SYSDATE, -12), 'q')
                        GROUP BY t.prs_perslid_key,
                                 TO_CHAR (t.fac_tracking_datum, 'yyyy/q')) x
              -- FROM   res_rsv_ruimte rrr, fac_tracking t
              --WHERE   rrr.res_rsv_ruimte_van >
              --           TRUNC (ADD_MONTHS (SYSDATE, -12), 'q')
              --        AND rrr.res_rsv_ruimte_van <= SYSDATE
              --        AND rrr.res_rsv_ruimte_key =
              --              t.fac_tracking_refkey
              --        AND t.fac_srtnotificatie_key = 30 -- RESNEW
              --GROUP BY   t.prs_perslid_key,
              --           TO_CHAR (rrr.res_rsv_ruimte_van,
              --                    'yyyy/q')) x
              GROUP BY x.prs_perslid_key, x.periode) x
          LEFT JOIN
             (SELECT pw.prs_perslid_key,
                     wp.prs_alg_ruimte_key,
                     pw.prs_perslidwerkplek_key,         -- Laagste/oudste PW!
                     pw.prs_perslidwerkplek_volgnr
                FROM prs_perslidwerkplek pw, prs_werkplek wp
               WHERE pw.prs_werkplek_key = wp.prs_werkplek_key
                     AND wp.prs_werkplek_virtueel = 0
                     AND NOT EXISTS
                           (SELECT 1
                              FROM prs_perslidwerkplek pw2, prs_werkplek wp2
                             WHERE pw2.prs_perslid_key = pw.prs_perslid_key
                                   AND pw2.prs_werkplek_key =
                                         wp2.prs_werkplek_key
                                   AND wp2.prs_werkplek_virtueel = 0
                                   AND COALESCE (
                                         pw2.prs_perslidwerkplek_volgnr,
                                         10000 + pw2.prs_perslidwerkplek_key) <
                                         COALESCE (
                                            pw.prs_perslidwerkplek_volgnr,
                                            10000
                                            + pw.prs_perslidwerkplek_key))) y
          ON x.prs_perslid_key = y.prs_perslid_key,
          prs_perslid p,
          prs_v_perslid_fullnames_all pf,
          prs_srtperslid sp,
          alg_v_ruimte_gegevens rg,
          alg_district d,
          fac_gebruikersgroep gg,
          fac_groep g
    WHERE     1 = 1
          --AND (x.mld_a + x.mld_k + x.mld_s + x.bes + x.res) > 5
          AND x.prs_perslid_key = p.prs_perslid_key
          AND p.prs_perslid_key = pf.prs_perslid_key
          AND p.prs_srtperslid_key = sp.prs_srtperslid_key
          AND y.prs_alg_ruimte_key = rg.alg_ruimte_key
          AND rg.alg_district_key = d.alg_district_key
          AND x.prs_perslid_key = gg.prs_perslid_key
          AND gg.fac_groep_key = g.fac_groep_key;


CREATE OR REPLACE VIEW uwva_v_rap_bezoekers
(
   fclt_f_locatie,
   datum,
   bezoek,
   spreekuur,
   spobilo
)
AS
     SELECT locatie,
            datum,
            SUM (totbez - uurbez) bezoek,
            SUM (uurbez) spreekuur,
            SUM (spobez) spobilo
       FROM (  SELECT l.alg_locatie_code locatie,
                      TRUNC (ba.bez_afspraak_datum) datum,
                      COUNT ( * ) totbez,
                      0 uurbez,
                      0 spobez
                 FROM bez_bezoekers bb, bez_afspraak ba, alg_locatie l
                WHERE     bb.bez_bezoekers_done IS NOT NULL   -- Binnengemeld!
                      AND bb.bez_afspraak_key = ba.bez_afspraak_key
                      --AND ba.bez_afspraak_datum >
                      --      TRUNC (ADD_MONTHS (SYSDATE, -60), 'YYYY')
                      AND ba.alg_locatie_key = l.alg_locatie_key
             GROUP BY l.alg_locatie_code, TRUNC (ba.bez_afspraak_datum)
             UNION ALL
               SELECT l.alg_locatie_code locatie,
                      TRUNC (ba.bez_afspraak_datum) datum,
                      0 totbez,
                      COUNT ( * ) uurbez,
                      0 spobez
                 FROM bez_bezoekers bb,
                      bez_afspraak ba,
                      alg_locatie l,
                      res_rsv_ruimte rr,
                      res_ruimte_opstelling ro,
                      res_ruimte r
                WHERE     bb.bez_bezoekers_done IS NOT NULL   -- Binnengemeld!
                      AND bb.bez_afspraak_key = ba.bez_afspraak_key
                      --AND ba.bez_afspraak_datum >
                      --      TRUNC (ADD_MONTHS (SYSDATE, -60), 'YYYY')
                      AND ba.alg_locatie_key = l.alg_locatie_key
                      AND ba.res_rsv_ruimte_key = rr.res_rsv_ruimte_key
                      AND rr.res_ruimte_opstel_key = ro.res_ruimte_opstel_key
                      AND ro.res_ruimte_key = r.res_ruimte_key
                      AND r.res_discipline_key IN -- Bookable by KZ planner/RESFOF
                               (SELECT ins_discipline_key
                                  FROM fac_groeprechten
                                 WHERE fac_groep_key = 61        -- KZ planner
                                       AND fac_functie_key = 17)     -- RESFOF
             GROUP BY l.alg_locatie_code, TRUNC (ba.bez_afspraak_datum)
             UNION ALL
               SELECT locatie,
                      TRUNC (aanmaak) datum,
                      0 totbez,
                      0 uurbez,
                      COUNT ( * ) spobez
                 FROM uwva_v_spobilo
             --WHERE   aanmaak > TRUNC (ADD_MONTHS (SYSDATE, -60), 'YYYY')
             GROUP BY locatie, TRUNC (aanmaak))
   GROUP BY locatie, datum;

-- UWVA#26813: Rapportage van meldingen op objecten
-- Met scoping op discipline en gebouw (waarbij die laatste niets uithaalt als je voor minstens
-- één discipline vastgoedscope "Alles" hebt!)

CREATE OR REPLACE VIEW uwva_v_rap_objectmelding
AS
   SELECT mld_melding_datum hide_f_srt,
          sd.ins_srtdiscipline_prefix || m.mld_melding_key html_meldingnr,
          TO_CHAR (mld_melding_datum, 'DD-MM-YYYY') fclt_d_datum,
          TO_CHAR (mld_melding_datum, 'HH24:MI') tijd,
          v.alg_gebouw_code gebouw,
          v.alg_gebouw_key fclt_3d_gebouw_key,
          v.alg_verdieping_code verdieping,
          v.alg_ruimte_nr ruimte,
          sd.ins_srtdiscipline_omschrijving fclt_f_meldingsoort,
          md.ins_discipline_omschrijving fclt_f_productgroep,
          md.ins_discipline_key fclt_3d_discipline_key,
          std.mld_stdmelding_omschrijving fclt_f_melding,
          m.mld_melding_omschrijving omschrijving,
          m.mld_melding_opmerking afhandeling,
          ms.mld_statuses_omschrijving status,
          sd.ins_srtdeel_omschrijving fclt_f_objectsoort,
          id.ins_deel_omschrijving fclt_f_object
     FROM mld_melding m,
          mld_discipline md,
          mld_disc_params mdp,
          alg_v_allonrgoed_gegevens v,
          alg_locatie l,
          alg_district di,
          mld_stdmelding std,
          ins_srtdiscipline sd,
          mld_statuses ms,
          mld_melding_object mo,
          ins_deel id,
          ins_srtdeel sd
    WHERE     m.mld_alg_locatie_key = l.alg_locatie_key(+)
          AND l.alg_district_key = di.alg_district_key(+)
          AND m.mld_alg_onroerendgoed_keys = v.alg_onroerendgoed_keys(+)
          AND md.ins_discipline_key = mdp.mld_ins_discipline_key
          AND md.ins_discipline_key = std.mld_ins_discipline_key
          AND std.mld_stdmelding_key = m.mld_stdmelding_key
          AND m.fac_activiteit_key IS NULL
          AND ms.mld_statuses_key = m.mld_melding_status
          AND sd.ins_srtdiscipline_key = md.ins_srtdiscipline_key
          AND mo.mld_melding_key = m.mld_melding_key
          AND mo.mld_melding_object_verwijder IS NULL
          AND id.ins_deel_key = mo.ins_deel_key
          AND sd.ins_srtdeel_key = id.ins_srtdeel_key;

-- UWVA#27681 - Vervolg op bovenstaande rapportage (maar dan anders ;-)!
-- NB. Erg zware rapportage, dus via tabelizer?

CREATE OR REPLACE VIEW uwva_v_rap_opdr_doorloop
(
   hide_f_srt,
   opdrachtnr,
   fclt_d_datum,
   tijd,
   fclt_f_meldingsoort,
   fclt_3d_discipline_key,
   fclt_f_productgroep,
   fclt_f_melding,
   omschrijving,
   afhandeling,
   fclt_f_bedrijf,
   status,
   --ordnew,
   --ordafm,
   doorlooptijd,
   fclt_3d_gebouw_key,
   fclt_f_gebouw,
   verdieping,
   ruimte,
   fclt_f_objectsoort,
   fclt_f_object
)
AS
   WITH opdr
           AS (SELECT o.mld_opdr_key opdr_key,
                      o.mld_melding_key mld_key,
                      o.mld_opdr_bedrijfopdr_volgnr volgnr,
                      sd.ins_srtdiscipline_omschrijving vakgroeptype,
                      md.ins_discipline_key vakgroep_key,
                      md.ins_discipline_omschrijving vakgroep,
                      sm.mld_stdmelding_key stdmld_key,
                      sm.mld_stdmelding_omschrijving stdmld_oms,
                      o.mld_opdr_omschrijving oms,
                      o.mld_opdr_opmerking opm,
                      b.prs_bedrijf_naam bedrijf,
                      s.mld_statusopdr_omschrijving status,
                      --l.alg_locatie_key locatie_key,
                      --l.alg_locatie_code locatie,
                      aog.alg_gebouw_key gebouw_key,
                      aog.alg_gebouw_code gebouw,
                      aog.alg_verdieping_code verdieping,
                      aog.alg_ruimte_nr ruimte,
                      sd.ins_srtdeel_omschrijving,
                      d.ins_deel_omschrijving
                 FROM mld_opdr o,
                      mld_melding m,
                      mld_stdmelding sm,
                      mld_discipline md,
                      ins_srtdiscipline sd,
                      prs_bedrijf b,
                      mld_statusopdr s,
                      --alg_locatie l,
                      alg_v_allonrgoed_gegevens aog,
                      mld_melding_object mo,
                      ins_deel d,
                      ins_srtdeel sd
                WHERE     o.mld_melding_key = m.mld_melding_key
                      AND m.mld_stdmelding_key = sm.mld_stdmelding_key
                      AND sm.mld_ins_discipline_key = md.ins_discipline_key
                      AND md.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
                      AND o.mld_uitvoerende_keys = b.prs_bedrijf_key
                      AND o.mld_statusopdr_key = s.mld_statusopdr_key
                      --AND m.mld_alg_locatie_key = l.alg_locatie_key
                      AND m.mld_alg_onroerendgoed_keys =
                            aog.alg_onroerendgoed_keys(+)
                      AND m.mld_melding_key = mo.mld_melding_key(+)
                      AND mo.mld_melding_object_verwijder IS NULL
                      AND mo.ins_deel_key = d.ins_deel_key(+)
                      AND d.ins_srtdeel_key = sd.ins_srtdeel_key(+)
                      AND m.mld_melding_datum >
                            TRUNC (ADD_MONTHS (SYSDATE, -12), 'YYYY'))
   SELECT ordnew_date,
          TO_CHAR (mld_key) || '/' || TO_CHAR (volgnr) opdrachtnr,
          TO_CHAR (ordnew_date, 'DD-MM-YYYY') fclt_d_datum,
          TO_CHAR (ordnew_date, 'HH24:MI') tijd,
          vakgroeptype,
          vakgroep_key,
          vakgroep,
          stdmld_oms,
          oms,
          opm,
          bedrijf,
          status,
          --TO_CHAR (ordnew_date, 'DD-MM-YYYY HH24:MI:SS'),
          --TO_CHAR (ordafm_date, 'DD-MM-YYYY HH24:MI:SS'),
          DECODE (
             ordafm_date,
             NULL,
             NULL,
             CASE
                WHEN alldag_uren = 0
                THEN
                   '0d-0u-0m'
                WHEN newdag_uren = 0 OR afmdag_uren = 0
                THEN
                   CASE
                      WHEN TO_CHAR (ordafm_date, 'D') IN (1, 7)
                           OR mld_vrije_dagen_datum IS NOT NULL
                      THEN
                            TO_CHAR (workdays)
                         || 'd-'
                         || TO_CHAR (FLOOR (newdag_uren))
                         || 'u-'
                         || TO_CHAR (MOD (ROUND (newdag_uren * 60, 0), 60))
                         || 'm'
                      ELSE
                            TO_CHAR (workdays - 1)
                         || 'd-'
                         || TO_CHAR (FLOOR (newdag_uren + afmdag_uren))
                         || 'u-'
                         || TO_CHAR(MOD (
                                       CEIL (
                                          (newdag_uren + afmdag_uren) * 60),
                                       60))
                         || 'm'
                   END
                ELSE
                   CASE
                      WHEN TO_CHAR (ordafm_date, 'HH24MI') >=
                              TO_CHAR (ordnew_date, 'HH24MI')
                      THEN        -- Aanname: als workdays=0, dan afm_t>new_t!
                         TO_CHAR (workdays) || 'd-'
                         || TO_CHAR(FLOOR( (ordafm_date
                                            - TO_DATE (
                                                 TO_CHAR (ordafm_date,
                                                          'DDMMYYYY')
                                                 || TO_CHAR (ordnew_date,
                                                             'HH24MISS'),
                                                 'DDMMYYYYHH24MISS'))
                                          * 24))
                         || 'u-'
                         || TO_CHAR(MOD (
                                       CEIL( (ordafm_date
                                              - TO_DATE (
                                                   TO_CHAR (ordafm_date,
                                                            'DDMMYYYY')
                                                   || TO_CHAR (ordnew_date,
                                                               'HH24MISS'),
                                                   'DDMMYYYYHH24MISS'))
                                            * 24
                                            * 60),
                                       60))
                         || 'm'
                      ELSE                             -- Aanname: workdays>0!
                            TO_CHAR (workdays - 1)
                         || 'd-'
                         || TO_CHAR (FLOOR (newdag_uren + afmdag_uren))
                         || 'u-'
                         || TO_CHAR(MOD (
                                       CEIL (
                                          (newdag_uren + afmdag_uren) * 60),
                                       60))
                         || 'm'
                   END
             END)
             doorlooptijd,
          gebouw_key,
          gebouw,
          verdieping,
          ruimte,
          ins_srtdeel_omschrijving,
          ins_deel_omschrijving
     FROM (SELECT opdr.opdr_key,
                  opdr.mld_key,
                  opdr.volgnr,
                  opdr.vakgroeptype,
                  opdr.vakgroep_key,
                  opdr.vakgroep,
                  opdr.stdmld_oms,
                  opdr.oms,
                  opdr.opm,
                  opdr.bedrijf,
                  opdr.status,
                  ordnew.fac_tracking_datum ordnew_date,
                  ordafm.fac_tracking_datum ordafm_date,
                  fac.count_work_days (ordnew.fac_tracking_datum,
                                       ordafm.fac_tracking_datum)
                     workdays,
                  uwva.bepaal_uwv_doorlooptijd (ordnew.fac_tracking_datum,
                                                ordafm.fac_tracking_datum)
                     alldag_uren,
                  uwva.bepaal_uwv_doorlooptijd (
                     ordnew.fac_tracking_datum,
                     TRUNC (ordnew.fac_tracking_datum + 1))
                     newdag_uren,
                  uwva.bepaal_uwv_doorlooptijd (
                     TRUNC (ordafm.fac_tracking_datum),
                     ordafm.fac_tracking_datum)
                     afmdag_uren,
                  vd.mld_vrije_dagen_datum,
                  opdr.gebouw_key,
                  opdr.gebouw,
                  opdr.verdieping,
                  opdr.ruimte,
                  opdr.ins_srtdeel_omschrijving,
                  opdr.ins_deel_omschrijving
             FROM opdr
                  LEFT JOIN fac_tracking ordnew
                     ON opdr.opdr_key = ordnew.fac_tracking_refkey
                        AND ordnew.fac_srtnotificatie_key = 125
                  LEFT JOIN fac_tracking ordafm
                     ON opdr.opdr_key = ordafm.fac_tracking_refkey
                        AND ordafm.fac_srtnotificatie_key = 26
                  LEFT JOIN mld_vrije_dagen vd
                     ON TRUNC (ordafm.fac_tracking_datum) =
                           TRUNC (vd.mld_vrije_dagen_datum));

-- UWVA#28572: MLD: rapport op behandelgroepen, vakgroeptype, vakgroep en mld

CREATE OR REPLACE VIEW uwva_v_rap_mld_behandelgroep
(
   fclt_f_vakgroeptype,
   fclt_f_vakgroep,
   fclt_f_stdmelding,
   fclt_f_behandelgroep
)
AS
   SELECT t.ins_srtdiscipline_omschrijving,
          v.ins_discipline_omschrijving,
          s.mld_stdmelding_omschrijving,
          b.mld_behandelgroep_naam
     FROM ins_srtdiscipline t,
          mld_discipline v,
          mld_stdmelding s,
          mld_behandelgroep b,
          mld_disc_params d
    WHERE     s.mld_stdmelding_verwijder IS NULL
          AND v.ins_discipline_verwijder IS NULL
          AND t.ins_srtdiscipline_verwijder IS NULL
          AND (s.mld_stdmelding_vervaldatum IS NULL
               OR s.mld_stdmelding_vervaldatum > SYSDATE)
          AND t.ins_srtdiscipline_key = v.ins_srtdiscipline_key
          AND v.ins_discipline_key = s.mld_ins_discipline_key
          AND d.mld_ins_discipline_key = v.ins_discipline_key
          AND b.mld_behandelgroep_key(+) = d.mld_behandelgroep_key;

-- UWVA#29463: MLD: rapport standaardmeldingen icm bedrijf-dienst-locatie

CREATE OR REPLACE VIEW UWVA_V_RAP_MLDOPR_DIENSTLOC
(
   VAKGROEPTYPE,
   FCLT_F_VAKGROEP,
   FCLT_F_MELDING,
   FCLT_F_DIENST,
   AUTOMATISCHE_OPDRACHT,
   FCLT_F_LEVERANCIER,
   FCLT_F_PLAATS
)
AS
   SELECT srt.ins_srtdiscipline_omschrijving Vakgroeptype,
          d.ins_discipline_omschrijving Vakgroep,
          std.mld_stdmelding_omschrijving Melding,
          pd.prs_dienst_omschrijving Dienst,
          (CASE mld_stdmelding_autoorder WHEN 1 THEN 'Ja' ELSE 'Nee' END)
             auto_opdracht,
          b.prs_bedrijf_naam Leverancier,
          COALESCE (l.alg_locatie_omschrijving,
                    g.alg_gebouw_omschrijving,
                    'Geen specifieke locatie/gebouw')
             Plaats
     FROM mld_stdmelding std,
          mld_discipline d,
          ins_srtdiscipline srt,
          prs_dienst pd,
          prs_bedrijfdienstlocatie bdl,
          prs_bedrijf b,
          alg_gebouw g,
          alg_locatie l
    WHERE     std.mld_ins_discipline_key = d.ins_discipline_key
          AND d.ins_srtdiscipline_key = srt.ins_srtdiscipline_key
          AND pd.prs_dienst_key = std.prs_dienst_key
          AND pd.prs_dienst_key = bdl.prs_dienst_key
          AND b.prs_bedrijf_key = bdl.prs_bedrijf_key
          AND b.prs_bedrijf_verwijder IS NULL
          AND std.mld_stdmelding_verwijder IS NULL
          AND std.mld_stdmelding_vervaldatum IS NULL
          AND d.ins_discipline_verwijder IS NULL
          AND srt.ins_srtdiscipline_verwijder IS NULL
          AND g.alg_gebouw_verwijder IS NULL
          AND l.alg_locatie_verwijder IS NULL
          AND g.alg_gebouw_key(+) = bdl.alg_gebouw_key
          AND l.alg_locatie_key(+) = bdl.alg_locatie_key;


-- UWVA#31184
-- Rapportage gebruiker WEB_USERXX in rapporten, autorisatiegroepen, labels, themas en menu-items

CREATE OR REPLACE VIEW UWVA_V_RAP_FAC_WEBUSR
(
   FCLT_F_FUNCTIE,
   FUNCTIE_OMSCHRIJVING,
   FCLT_F_TYPE,
   KEY,
   OMSCHRIJVING,
   EXTRA
)
AS
   SELECT ff.fac_functie_code functie,
          ff.fac_functie_omschrijving beschrijving,
          'Menu' Soort,
          fm.fac_menu_key key,
          COALESCE (fm.fac_menu_altlabel, fi.fac_menuitems_label)
             omschrijving,
          DECODE (COALESCE (fac_menu_altgroep, fac_menuitems_groep),
                  1, 'Service',
                  2, 'Admin',
                  'Zelfservice')
          || ' ('
          || fac_menu_volgnr
          || ')'
             Extra
     FROM fac_menuitems fi, fac_functie ff, fac_menu fm
    WHERE     fm.fac_functie_key = ff.fac_functie_key
          AND ff.fac_functie_code LIKE 'WEB_USER%'
          AND fi.fac_menuitems_key(+) = fm.fac_menuitems_key
   UNION ALL
   SELECT ff.fac_functie_code functie,
          ff.fac_functie_omschrijving beschrijving,
          'Rapport' Soort,
          fr.fac_usrrap_key key,
          fr.fac_usrrap_omschrijving omschrijving,
          fr.fac_usrrap_view_name Extra
     FROM fac_usrrap fr, fac_functie ff
    WHERE fr.fac_functie_key = ff.fac_functie_key
          AND ff.fac_functie_code LIKE 'WEB_USER%'
   UNION ALL
   SELECT ff.fac_functie_code functie,
          ff.fac_functie_omschrijving beschrijving,
          'Label' Soort,
          cl.cad_label_key key,
          cl.cad_label_omschrijving omschrijving,
          cl.cad_label_view Extra
     FROM cad_label cl, fac_functie ff
    WHERE cl.fac_functie_key = ff.fac_functie_key
          AND ff.fac_functie_code LIKE 'WEB_USER%'
   UNION ALL
   SELECT ff.fac_functie_code functie,
          ff.fac_functie_omschrijving beschrijving,
          'Thema' Soort,
          ct.cad_thema_key key,
          ct.cad_thema_omschrijving omschrijving,
          ct.cad_thema_view Extra
     FROM cad_thema ct, fac_functie ff
    WHERE ct.fac_functie_key = ff.fac_functie_key
          AND ff.fac_functie_code LIKE 'WEB_USER%'
   UNION ALL
   SELECT ff.fac_functie_code functie,
          ff.fac_functie_omschrijving beschrijving,
          'Autorisatiegroep' Soort,
          fg.fac_groep_key key,
          fg.fac_groep_omschrijving omschrijving,
          NULL Extra
     FROM fac_groeprechten fgr, fac_functie ff, fac_groep fg
    WHERE     fgr.fac_functie_key = ff.fac_functie_key
          AND ff.fac_functie_code LIKE 'WEB_USER%'
          AND fg.fac_groep_key = fgr.fac_groep_key;



-- UWVA#28837/UWVA#30332:
-- Alle op te roepen bezoekers, dat is:
-- * bezoeker is binnen, maar nog niet opgeroepen (en nog niet vertrokken)
-- * bezoeker is aangemeld voor vandaag
-- * bij de afspraak hoort een oproep-actie (geen ophaal-actie)
-- Filtering via de API kan op gebouw, verdieping en wachtzone (groep), dus die ook ophalen

CREATE OR REPLACE VIEW uwva_v_api_bez_oproep
AS
     SELECT TO_CHAR (b.bez_bezoekers_oproep, 'YYYY-MM-DD HH24:MI:SS')
               oproep_tijd,
            COALESCE (rr.res_ruimte_friendlyname, rr.res_ruimte_nr) ruimtenr,
            COALESCE (rr.res_ruimte_groep, ' ') groep,
            b.bez_bezoekers_pasnr oproep_nummer,
            b.bez_bezoekers_key bezoeker_key,
            g.alg_gebouw_code gebouw_code,
            g.alg_gebouw_key gebouw_key,
            v.alg_verdieping_code verdieping_code,
            v.alg_verdieping_key verdieping_key
       FROM bez_bezoekers b,
            bez_afspraak a,
            bez_actie ac,
            res_rsv_ruimte rrr,
            res_ruimte_opstelling ro,
            res_ruimte rr,
            res_alg_ruimte rar,
            alg_ruimte r,
            alg_verdieping v,
            alg_gebouw g
      WHERE rrr.res_rsv_ruimte_van BETWEEN TRUNC (SYSDATE)
                                       AND  TRUNC (SYSDATE) + 1
            AND a.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
            AND ac.bez_actie_key = a.bez_actie_key
            AND BITAND (ac.bez_actie_flags, 1) = 1
            AND b.bez_afspraak_key = a.bez_afspraak_key
            AND b.bez_bezoekers_done IS NOT NULL
            AND b.bez_bezoekers_oproep IS NOT NULL
            AND b.bez_bezoekers_out IS NULL
            AND b.bez_bezoekers_pasnr IS NOT NULL
            AND ro.res_ruimte_opstel_key = rrr.res_ruimte_opstel_key
            AND rr.res_ruimte_key = ro.res_ruimte_key
            AND rar.res_ruimte_key = rr.res_ruimte_key
            AND r.alg_ruimte_key = rar.alg_ruimte_key
            AND r.alg_ruimte_verwijder IS NULL
            AND v.alg_verdieping_key = r.alg_verdieping_key
            AND g.alg_gebouw_key = v.alg_gebouw_key
   ORDER BY 1 DESC;

-- ------------------------------------------------ --
-- Noficatiejobs/views (zoveel mogelijk bij elkaar) --
-- ------------------------------------------------ --
-- UWVA#28207: Bevat CUST22-noti naar besteller+budgethouder bij mutaties >€500
--             in VOB-bestelling (door Worldmeetings).
-- UWVA#38338: VO2017/CUST28-noti naar bugethouder bij registratie (MLDNEW) van
--             VO-boeking. Bovendien vervalt per VO2017 de CUST22-noti cq. deze
--             wordt vanzelf niet meer verstuurd en kan tzt. worden verwijderd).
-- UWVA#51769: CUST22-noti verwijderd.
CREATE OR REPLACE VIEW uwva_v_noti_vob
(
   code,
   sender,
   receiver,
   text,
   key,
   par1,
   par2,
   xkey
)
AS                            -- MLDNEW naar budgethouder (per UWVA107/VO2017)
   SELECT sn.fac_srtnotificatie_code,
          NULL,
          prs.getkpverantwoordelijke (m.prs_kostenplaats_key, 2, -1),
          REPLACE (
             REPLACE (
                REPLACE (sn.fac_srtnotificatie_oms,
                         '##KEY##', TO_CHAR (m.mld_melding_key)),
                '##DISC##', TO_CHAR (md.ins_discipline_omschrijving)),
             '##STDMLD##', TO_CHAR (sm.mld_stdmelding_omschrijving)),
          m.mld_melding_key refkey,
          NULL refoms,
          NULL,
          NULL
     FROM fac_tracking t, mld_melding m, mld_stdmelding sm, mld_discipline md, fac_srtnotificatie sn, fac_notificatie_job nj
    WHERE t.fac_srtnotificatie_key = 21                              -- MLDNEW
          AND t.fac_tracking_refkey = m.mld_melding_key
          AND m.mld_stdmelding_key = sm.mld_stdmelding_key
          AND sm.mld_ins_discipline_key = md.ins_discipline_key
          AND md.ins_discipline_key IN (457, 458) -- Bijeenkomsten/Overnachtingen
          AND sn.fac_srtnotificatie_code = 'CUST28'
          AND nj.fac_notificatie_job_view = 'UWVA_V_NOTI_VOB'
          AND t.fac_tracking_datum BETWEEN nj.fac_notificatie_job_nextrun - (nj.fac_notificatie_job_interval / 24) AND nj.fac_notificatie_job_nextrun;


-- UWVA#28494: FDO CNT noti reminder naar LFM
CREATE OR REPLACE VIEW UWVA_V_NOTI_CNT_LFM_REMINDER
(
   CODE,
   SENDER,
   RECEIVER,
   TEXT,
   KEY,
   PAR1,
   PAR2,
   XKEY
)
AS
   SELECT 'CUST23',
          NULL,
          fac.safe_to_number (ak.alg_onrgoedkenmerk_waarde),
          'Controle Facilitaire Dienstovereenkomst - Contract: '
          || c.cnt_contract_omschrijving,
          c.cnt_contract_key,
          c.cnt_contract_nummer_intern,
          NULL,
          NULL
     FROM cnt_contract c,
          cnt_contract_plaats cp,
          alg_gebouw g,
          alg_onrgoedkenmerk ak
    WHERE     ins_discipline_key = 358
          AND cnt_contract_looptijd_tot > SYSDATE
          AND c.cnt_contract_verwijder IS NULL
          AND c.cnt_contract_key = cp.cnt_contract_key
          AND cp.cnt_contract_plaats_verwijder IS NULL
          AND cp.cnt_alg_plaats_code = 'G'
          AND g.alg_gebouw_key = cp.cnt_alg_plaats_key
          AND alg_onrgoedkenmerk_verwijder IS NULL
          AND alg_onrgoed_niveau = 'L'
          AND alg_kenmerk_key = 1020
          AND g.alg_locatie_key = ak.alg_onrgoed_key
   UNION ALL
   SELECT 'CUST23',
          NULL,
          fac.safe_to_number (ak.alg_onrgoedkenmerk_waarde),
          'Controle Facilitaire Dienstovereenkomst - '
          || c.cnt_contract_omschrijving,
          c.cnt_contract_key,
          c.cnt_contract_nummer_intern,
          NULL,
          NULL
     FROM cnt_contract c,
          cnt_contract_plaats cp,
          alg_locatie l,
          alg_onrgoedkenmerk ak
    WHERE     ins_discipline_key = 358
          AND cnt_contract_looptijd_tot > SYSDATE
          AND c.cnt_contract_verwijder IS NULL
          AND c.cnt_contract_key = cp.cnt_contract_key
          AND cp.cnt_contract_plaats_verwijder IS NULL
          AND cp.cnt_alg_plaats_code = 'L'
          AND l.alg_locatie_key = cp.cnt_alg_plaats_key
          AND alg_onrgoedkenmerk_verwijder IS NULL
          AND alg_onrgoed_niveau = 'L'
          AND alg_kenmerk_key = 1020
          AND l.alg_locatie_key = ak.alg_onrgoed_key;


-- CMS-notificaties (CUST31 t/m CUST34)!
CREATE OR REPLACE VIEW UWVA_V_NOTI_PAS_TMP_PARK
(
   CODE,
   SENDER,
   RECEIVER,
   TEXT,
   KEY,
   PAR1,
   PAR2,
   XKEY
)
AS
   SELECT 'CUST31',
          NULL,
          k.prs_perslid_key,
          'Toegangspas of parkeerrechten van toegangspas zijn gewijzigd voor medewerker ' || pf.prs_perslid_naam_friendly,
          i.ins_deel_key,
          NULL,
          NULL,
          NULL
     FROM ins_deel i,
          fac_tracking f,
          prs_perslid p,
          prs_afdeling a,
          prs_kostenplaats k,
          prs_v_perslid_fullnames pf
    WHERE i.ins_srtdeel_key = 259000                    -- Toegangspas/Andover
          AND i.ins_deel_key = f.fac_tracking_refkey
          AND f.fac_srtnotificatie_key = 134                         -- INSUPD
          AND f.fac_tracking_datum > SYSDATE - 1 / 24
          AND (UPPER (f.fac_tracking_oms) LIKE '%TEMPLATE:%' OR UPPER (f.fac_tracking_oms) LIKE '%PARKEER:%')
          AND i.ins_alg_ruimte_type = 'P'
          AND i.ins_alg_ruimte_key = p.prs_perslid_key
          AND p.prs_afdeling_key = a.prs_afdeling_key
          AND k.prs_kostenplaats_key = a.prs_kostenplaats_key
          AND p.prs_perslid_key = pf.prs_perslid_key;

CREATE OR REPLACE VIEW UWVA_V_NOTI_PAS_VER_DEF
(
   CODE,
   SENDER,
   RECEIVER,
   TEXT,
   KEY,
   PAR1,
   PAR2,
   XKEY
)
AS
   SELECT 'CUST32',
          NULL,
          k.prs_perslid_key,
          'Toegangspas van medewerker ' || pf.prs_perslid_naam_friendly || ' is vermist of defect',
          i.ins_deel_key,
          NULL,
          NULL,
          NULL
     FROM ins_deel i,
          fac_tracking f,
          prs_perslid p,
          prs_afdeling a,
          prs_kostenplaats k,
          prs_v_perslid_fullnames pf
    WHERE i.ins_srtdeel_key = 259000                    -- Toegangspas/Andover
          AND i.ins_deel_key = f.fac_tracking_refkey
          AND f.fac_srtnotificatie_key = 134                         -- INSUPD
          AND f.fac_tracking_datum > SYSDATE - 1 / 24
          AND (UPPER (f.fac_tracking_oms) LIKE '%--> VERMIST%' OR UPPER (f.fac_tracking_oms) LIKE '%--> DEFECT%')
          AND i.ins_alg_ruimte_type = 'P'
          AND i.ins_alg_ruimte_key = p.prs_perslid_key
          AND p.prs_afdeling_key = a.prs_afdeling_key
          AND k.prs_kostenplaats_key = a.prs_kostenplaats_key
          AND p.prs_perslid_key = pf.prs_perslid_key;

CREATE OR REPLACE VIEW UWVA_V_NOTI_PAS_NIEUW
(
   CODE,
   SENDER,
   RECEIVER,
   TEXT,
   KEY,
   PAR1,
   PAR2,
   XKEY
)
AS
   SELECT sn.fac_srtnotificatie_code,
          NULL,
          k.prs_perslid_key,
          REPLACE (sn.fac_srtnotificatie_oms, '##NAAM##', pf.prs_perslid_naam_friendly),
          i.ins_deel_key,
          NULL,
          NULL,
          NULL
     FROM ins_deel i,
          fac_tracking t,
          prs_perslid p,
          prs_afdeling a,
          prs_kostenplaats k,
          prs_v_perslid_fullnames pf,
          fac_srtnotificatie sn,
          fac_notificatie_job nj
    WHERE i.ins_srtdeel_key = 259000                    -- Toegangspas/Andover
          AND i.ins_deel_key = t.fac_tracking_refkey
          AND t.fac_srtnotificatie_key = 133                         -- INSNEW
          AND i.ins_alg_ruimte_type = 'P'
          AND i.ins_alg_ruimte_key = p.prs_perslid_key
          AND p.prs_afdeling_key = a.prs_afdeling_key
          AND k.prs_kostenplaats_key = a.prs_kostenplaats_key
          AND p.prs_perslid_key = pf.prs_perslid_key
          AND sn.fac_srtnotificatie_code = 'CUST33'
          AND nj.fac_notificatie_job_view = 'UWVA_V_NOTI_PAS_NIEUW'
          AND t.fac_tracking_datum BETWEEN nj.fac_notificatie_job_nextrun - (nj.fac_notificatie_job_interval / 24) AND nj.fac_notificatie_job_nextrun
   UNION ALL
   SELECT sn.fac_srtnotificatie_code,
          NULL,
          p.prs_perslid_key,
          REPLACE (sn.fac_srtnotificatie_oms, '##NAAM##', pf.prs_perslid_naam_friendly),
          i.ins_deel_key,
          NULL,
          NULL,
          NULL
     FROM ins_deel i,
          ins_v_aanwezigkenmerkdeel kd,
          prs_perslid p,
          prs_v_perslid_fullnames pf,
          fac_srtnotificatie sn,
          fac_notificatie_job nj
    WHERE i.ins_srtdeel_key = 259000                    -- Toegangspas/Andover
          AND i.ins_deel_key = kd.ins_deel_key
          AND kd.ins_kenmerk_key = 487                                -- Pasnr
          AND i.ins_alg_ruimte_type = 'P'
          AND i.ins_alg_ruimte_key = p.prs_perslid_key
          AND p.prs_perslid_key = pf.prs_perslid_key
          AND sn.fac_srtnotificatie_code = 'CUST34'
          AND nj.fac_notificatie_job_view = 'UWVA_V_NOTI_PAS_NIEUW'
          AND kd.ins_kenmerkdeel_aanmaak BETWEEN nj.fac_notificatie_job_nextrun - (nj.fac_notificatie_job_interval / 24) AND nj.fac_notificatie_job_nextrun;


-- UWVA#36904
CREATE OR REPLACE VIEW uwva_v_rap_res_vc_perslid
(
   person_id,
   person_name,
   person_email,
   person_phone
)
AS
   SELECT p.prs_perslid_key,
          pf.prs_perslid_naam_full,
          p.prs_perslid_email,
          COALESCE (p.prs_perslid_telefoonnr, p.prs_perslid_mobiel)
     FROM prs_perslid p, prs_v_perslid_fullnames_all pf
    WHERE p.prs_perslid_key = pf.prs_perslid_key
          AND EXISTS
                (SELECT 1
                   FROM res_rsv_ruimte
                  WHERE res_activiteit_key = 241           -- Video conference
                        AND res_rsv_ruimte_van > TRUNC (SYSDATE)
                        AND (res_rsv_ruimte_host_key = p.prs_perslid_key
                             OR res_rsv_ruimte_contact_key =
                                  p.prs_perslid_key));


-- UWVA#31552: RTMs incl. 3 rapportages waarnaar kan worden doorgeklikt!
--             De MLDOPEN-rapportage dubbel uitgevoerd om 1x op organisatie en
--             1x op plaats te kunnen 3d-scopen!

CREATE OR REPLACE VIEW UWVA_V_RAP_MLDOPEN_ORANJE1        -- Tbv. plaats-scopen
(
   FCLT_3D_LOCATIE_KEY,
   FCLT_3D_AFDELING_KEY,
   HIDE_F_SORTERING,
   HIDE_F_SPECIALISATIE,
   PRIO,
   PREFIX,
   MLD_MELDING_KEY,
   HIDE_F_INS_DISCIPLINE_KEY,
   INS_DISCIPLINE_OMS,
   MLD_STDMELDING_OMS,
   BEGINDATUM,
   BEGINTIJD,
   PLAATS,
   ALG_RUIMTE_OMSCHRIJVING,
   OMSCHRIJVING,
   MELDER,
   STATUS,
   HIDE_F_BEHANDELAAR_KEY,
   BEHANDELAAR,
   EINDDATUM,
   EINDTIJD
)
AS
   SELECT l.alg_locatie_key,
          p.prs_afdeling_key,
          TO_CHAR (m.mld_melding_datum, 'yyyymmddhh24:mi:ss'),
          SUBSTR (UPPER (ud.fac_usrdata_omschr), 1, 3),
          TO_CHAR (m.mld_melding_spoed),
          sd.ins_srtdiscipline_prefix,
          TO_CHAR (m.mld_melding_key),
          md.ins_discipline_key,
          md.ins_discipline_omschrijving,
          sm.mld_stdmelding_omschrijving,
          TO_CHAR (m.mld_melding_datum, 'dd-mm-yyyy') datum,
          TO_CHAR (m.mld_melding_datum, 'hh24:mi') tijd,
          DECODE (
             og.alg_type,
             'R',
                l.alg_locatie_code
             || '-'
             || og.alg_gebouw_code
             || '-'
             || og.alg_verdieping_code
             || og.alg_ruimte_nr,
             'V',
                l.alg_locatie_code
             || '-'
             || og.alg_gebouw_code
             || '-'
             || og.alg_verdieping_code,
             'G',
             l.alg_locatie_code || '-' || og.alg_gebouw_code,
             'T',
             l.alg_locatie_code || '-' || og.alg_terreinsector_code,
             l.alg_locatie_code)
             plaatsaanduiding,
          DECODE (og.alg_type, 'R', og.alg_ruimte_omschrijving, NULL)
             alg_ruimte_omschrijving,
          m.mld_melding_omschrijving,
          pm.prs_perslid_naam_full,
          ms.mld_statuses_omschrijving,
          pb.prs_perslid_key,
          pb.prs_perslid_naam_full,
          TO_CHAR (m.mld_melding_einddatum_std, 'dd-mm-yyyy') einddatum,
          TO_CHAR (m.mld_melding_einddatum_std, 'hh24:mi') eindtijd
     FROM mld_melding m,
          mld_statuses ms,
          mld_stdmelding sm,
          mld_discipline md,
          ins_srtdiscipline sd,
          (SELECT *
             FROM fac_v_aanwezigusrdata
            WHERE fac_usrtab_key = 1142) ud,
          alg_locatie l,
          alg_v_onroerendgoed_gegevens og,
          prs_perslid p,
          prs_v_perslid_fullnames_all pm,
          prs_v_perslid_fullnames_all pb
    WHERE     m.mld_melding_status IN (2, 3, 4, 7, 0) -- 2-Ingevoerd, 3-Ingezien, 4-Geaccepteerd, 7-Uitgegeven, 0-Pending
          AND m.mld_melding_einddatum_std > SYSDATE
          AND m.mld_melding_status = ms.mld_statuses_key
          AND m.mld_stdmelding_key = sm.mld_stdmelding_key
          AND sm.mld_ins_discipline_key = md.ins_discipline_key
          AND md.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
          AND md.ins_discipline_key =
                fac.safe_to_number (ud.fac_usrdata_code)
          AND m.mld_alg_locatie_key = l.alg_locatie_key(+)
          AND m.mld_alg_onroerendgoed_keys = og.alg_onroerendgoed_keys(+)
          AND m.prs_perslid_key_voor = p.prs_perslid_key
          AND m.prs_perslid_key_voor = pm.prs_perslid_key
          AND m.mld_melding_behandelaar_key = pb.prs_perslid_key(+)
          AND SIGN(mld.geteinddatum (
                      m.mld_melding_datum,
                      m.mld_stdmelding_key,
                      m.mld_melding_spoed,
                      NULL,                  -- Plaats binnen/kleiner locatie!
                      NULL,                  -- Object met laagste uitvoertijd
                      MLD_T_UITVOERTIJD (
                         0.7 * m.mld_melding_t_uitvoertijd.tijdsduur,
                         m.mld_melding_t_uitvoertijd.eenheid))
                   - TRUNC (SYSDATE, 'mi')) = -1;

-- Ongeacht specialisatie!!!

CREATE OR REPLACE VIEW UWVA_V_RAP_MLDOPEN_ORANJE2   -- Tbv. organisatie-scopen
(
   FCLT_3D_LOCATIE_KEY,
   FCLT_3D_AFDELING_KEY,
   HIDE_F_SORTERING,
   HIDE_F_SPECIALISATIE,
   PRIO,
   PREFIX,
   MLD_MELDING_KEY,
   HIDE_F_INS_DISCIPLINE_KEY,
   INS_DISCIPLINE_OMS,
   MLD_STDMELDING_OMS,
   BEGINDATUM,
   BEGINTIJD,
   PLAATS,
   ALG_RUIMTE_OMSCHRIJVING,
   OMSCHRIJVING,
   MELDER,
   STATUS,
   HIDE_F_BEHANDELAAR_KEY,
   BEHANDELAAR,
   EINDDATUM,
   EINDTIJD
)
AS
   SELECT l.alg_locatie_key,
          p.prs_afdeling_key,
          TO_CHAR (m.mld_melding_datum, 'yyyymmddhh24:mi:ss'),
          NULL,
          TO_CHAR (m.mld_melding_spoed),
          sd.ins_srtdiscipline_prefix,
          TO_CHAR (m.mld_melding_key),
          md.ins_discipline_key,
          md.ins_discipline_omschrijving,
          sm.mld_stdmelding_omschrijving,
          TO_CHAR (m.mld_melding_datum, 'dd-mm-yyyy') datum,
          TO_CHAR (m.mld_melding_datum, 'hh24:mi') tijd,
          DECODE (
             og.alg_type,
             'R',
                l.alg_locatie_code
             || '-'
             || og.alg_gebouw_code
             || '-'
             || og.alg_verdieping_code
             || og.alg_ruimte_nr,
             'V',
                l.alg_locatie_code
             || '-'
             || og.alg_gebouw_code
             || '-'
             || og.alg_verdieping_code,
             'G',
             l.alg_locatie_code || '-' || og.alg_gebouw_code,
             'T',
             l.alg_locatie_code || '-' || og.alg_terreinsector_code,
             l.alg_locatie_code)
             plaatsaanduiding,
          DECODE (og.alg_type, 'R', og.alg_ruimte_omschrijving, NULL)
             alg_ruimte_omschrijving,
          m.mld_melding_omschrijving,
          pm.prs_perslid_naam_full,
          ms.mld_statuses_omschrijving,
          pb.prs_perslid_key,
          pb.prs_perslid_naam_full,
          TO_CHAR (m.mld_melding_einddatum_std, 'dd-mm-yyyy') einddatum,
          TO_CHAR (m.mld_melding_einddatum_std, 'hh24:mi') eindtijd
     FROM mld_melding m,
          mld_statuses ms,
          mld_stdmelding sm,
          mld_discipline md,
          ins_srtdiscipline sd,
          alg_locatie l,
          alg_v_onroerendgoed_gegevens og,
          prs_perslid p,
          prs_v_perslid_fullnames_all pm,
          prs_v_perslid_fullnames_all pb
    WHERE     m.mld_melding_status IN (2, 3, 4, 7, 0) -- 2-Ingevoerd, 3-Ingezien, 4-Geaccepteerd, 7-Uitgegeven, 0-Pending
          AND m.mld_melding_einddatum_std > SYSDATE
          AND m.mld_melding_status = ms.mld_statuses_key
          AND m.mld_stdmelding_key = sm.mld_stdmelding_key
          AND sm.mld_ins_discipline_key = md.ins_discipline_key
          AND md.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
          AND m.mld_alg_locatie_key = l.alg_locatie_key(+)
          AND m.mld_alg_onroerendgoed_keys = og.alg_onroerendgoed_keys(+)
          --AND m.prs_perslid_key_voor = p.prs_perslid_key
          --AND m.prs_perslid_key_voor = pm.prs_perslid_key
          --AND m.mld_melding_behandelaar_key = pb.prs_perslid_key(+)
          AND m.prs_perslid_key_voor = pm.prs_perslid_key
          AND m.mld_melding_behandelaar_key = p.prs_perslid_key(+)
          AND m.mld_melding_behandelaar_key = pb.prs_perslid_key(+)
          AND SIGN(mld.geteinddatum (
                      m.mld_melding_datum,
                      m.mld_stdmelding_key,
                      m.mld_melding_spoed,
                      NULL,                  -- Plaats binnen/kleiner locatie!
                      NULL,                  -- Object met laagste uitvoertijd
                      MLD_T_UITVOERTIJD (
                         0.7 * m.mld_melding_t_uitvoertijd.tijdsduur,
                         m.mld_melding_t_uitvoertijd.eenheid))
                   - TRUNC (SYSDATE, 'mi')) = -1;

-- Specialisatie van melding = specialisatie van opdracht!
-- SLA van melding bepalend voor 70% criterium (= oranje)!

CREATE OR REPLACE VIEW UWVA_V_RAP_ORDOPEN_ORANJE         -- Tbv. plaats-scopen
(
   FCLT_3D_LOCATIE_KEY,
   --FCLT_3D_AFDELING_KEY,
   HIDE_F_SORTERING,
   HIDE_F_SPECIALISATIE,
   PRIO,
   PREFIX,
   MLD_MELDING_KEY,
   VOLGNR,
   MLD_OPDR_KEY,
   OPDRACHTTYPE,
   PLAATS,
   ALG_RUIMTE_OMSCHRIJVING,
   --HIDE_F_INS_DISCIPLINE_KEY,
   --INS_DISCIPLINE_OMS,
   MLD_STDMELDING_OMS,
   OMSCHRIJVING,
   BEGINDATUM,
   --BEGINTIJD,
   MELDINGSTATUS,
   OPDRACHTSTATUS,
   EINDDATUM,
   --EINDTIJD,
   HIDE_F_UITVOERENDE_KEY,
   UITVOERENDE,
   AFHANDELING,
   KOSTEN
)
AS
   SELECT l.alg_locatie_key,
          --p.prs_afdeling_key,
          TO_CHAR (o.mld_opdr_einddatum, 'yyyymmddhh24:mi:ss'),
          SUBSTR (UPPER (ud.fac_usrdata_omschr), 1, 3),
          TO_CHAR (m.mld_melding_spoed),
          sd.ins_srtdiscipline_prefix,
          TO_CHAR (m.mld_melding_key),
          TO_CHAR (o.mld_opdr_bedrijfopdr_volgnr),
          TO_CHAR (o.mld_opdr_key),
          ot.mld_typeopdr_omschrijving,
          DECODE (
             og.alg_type,
             'R',
                l.alg_locatie_code
             || '-'
             || og.alg_gebouw_code
             || '-'
             || og.alg_verdieping_code
             || og.alg_ruimte_nr,
             'V',
                l.alg_locatie_code
             || '-'
             || og.alg_gebouw_code
             || '-'
             || og.alg_verdieping_code,
             'G',
             l.alg_locatie_code || '-' || og.alg_gebouw_code,
             'T',
             l.alg_locatie_code || '-' || og.alg_terreinsector_code,
             l.alg_locatie_code)
             plaatsaanduiding,
          DECODE (og.alg_type, 'R', og.alg_ruimte_omschrijving, NULL)
             alg_ruimte_omschrijving,
          --md.ins_discipline_key,
          --md.ins_discipline_omschrijving,
          sm.mld_stdmelding_omschrijving,
          o.mld_opdr_omschrijving,
          TO_CHAR (o.mld_opdr_datumbegin, 'dd-mm-yyyy') datum,
          --TO_CHAR (o.mld_opdr_datumbegin, 'hh24:mi') tijd,
          ms.mld_statuses_omschrijving,
          os.mld_statusopdr_omschrijving,
          TO_CHAR (o.mld_opdr_einddatum, 'dd-mm-yyyy') einddatum,
          --TO_CHAR (o.mld_opdr_einddatum, 'hh24:mi') eindtijd,
          o.mld_uitvoerende_keys,
          COALESCE (b.prs_bedrijf_naam, puv.prs_perslid_naam_full)
             uitvoerende,
          o.mld_opdr_opmerking,
          o.mld_opdr_kosten
     FROM mld_opdr o,
          mld_statusopdr os,
          mld_typeopdr ot,
          prs_bedrijf b,                                -- Externe leverancier
          prs_v_perslid_fullnames_all puv,              -- Interne uitvoerende
          mld_melding m,
          mld_statuses ms,
          mld_stdmelding sm,
          mld_discipline md,
          ins_srtdiscipline sd,
          (SELECT *
             FROM fac_v_aanwezigusrdata
            WHERE fac_usrtab_key = 1142) ud,
          alg_locatie l,
          alg_v_onroerendgoed_gegevens og,
          prs_perslid p
    WHERE     o.mld_statusopdr_key IN (3, 4, 5, 8, 10) -- 3-Ter fiattering, 4-Gefiatteerd, 5-Uitgegeven, 8-Geaccepteerd, 10-Ter goedkeuring
          AND o.mld_statusopdr_key = os.mld_statusopdr_key
          AND o.mld_typeopdr_key = ot.mld_typeopdr_key
          AND o.mld_uitvoerende_keys = b.prs_bedrijf_key(+)
          AND o.mld_uitvoerende_keys = puv.prs_perslid_key(+)
          AND o.mld_melding_key = m.mld_melding_key
          AND m.mld_melding_status IN (2, 3, 4, 7, 0) -- 2-Ingevoerd, 3-Ingezien, 4-Geaccepteerd, 7-Uitgegeven, 0-Pending
          AND m.mld_melding_einddatum_std > SYSDATE
          AND m.mld_melding_status = ms.mld_statuses_key
          AND m.mld_stdmelding_key = sm.mld_stdmelding_key
          AND sm.mld_ins_discipline_key = md.ins_discipline_key
          AND md.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
          AND md.ins_discipline_key =
                fac.safe_to_number (ud.fac_usrdata_code)
          AND m.mld_alg_locatie_key = l.alg_locatie_key(+)
          AND m.mld_alg_onroerendgoed_keys = og.alg_onroerendgoed_keys(+)
          AND m.prs_perslid_key_voor = p.prs_perslid_key
          AND SIGN(mld.geteinddatum (
                      m.mld_melding_datum,
                      m.mld_stdmelding_key,
                      m.mld_melding_spoed,
                      NULL,                  -- Plaats binnen/kleiner locatie!
                      NULL,                  -- Object met laagste uitvoertijd
                      MLD_T_UITVOERTIJD (
                         0.7 * m.mld_melding_t_uitvoertijd.tijdsduur,
                         m.mld_melding_t_uitvoertijd.eenheid))
                   - TRUNC (SYSDATE, 'mi')) = -1;

-- 12x UWVA_V_GRAPH_MLDOPEN_XXX/‚‚n per specialisatie zoals gedefinieerd in
-- Eigen tabel met key=1142!

CREATE OR REPLACE VIEW UWVA_V_GRAPH_MLDOPEN_BES -- BHV/EVE/IEO/KLI/MUS/PEI/PEL/SBL/TIN/VEO/VEB
(
   FCLT_XAS_,
   FCLT_YAS_,               -- groen=ruim op tijd (<70% tijdigheid verstreken)
   FCLT_YAS2_,             -- oranje=krap op tijd (>70% tijdigheid verstreken)
   FCLT_YAS3_,                                            -- rood=echt te laat
   VOLGORDE,
   FCLT_URL
)
AS
   SELECT x.vakgroep_oms,
          x.ruimoptijd groen,
          x.totaal - x.ruimoptijd - x.echttelaat oranje,
          x.echttelaat rood,
          TO_CHAR (999999 - x.totaal) || x.vakgroep_oms volgorde,
             'appl/fac/fac_report.asp?mode=list'
          || '&'
          || 'usrrap_key=1285'
          || '&'
          || 'hide_f_specialisatie=BES'
          || '&'
          || 'hide_f_ins_discipline_key='
          || TO_CHAR (x.ins_discipline_key)
     FROM (  SELECT md.ins_discipline_key,
                       sd.ins_srtdiscipline_prefix
                    || '-'
                    || md.ins_discipline_omschrijving
                       vakgroep_oms,
                    COUNT ( * ) totaal,
                    SUM(DECODE (
                           SIGN(mld.geteinddatum (
                                   m.mld_melding_datum,
                                   m.mld_stdmelding_key,
                                   m.mld_melding_spoed,
                                   NULL,     -- Plaats binnen/kleiner locatie!
                                   NULL,     -- Object met laagste uitvoertijd
                                   MLD_T_UITVOERTIJD (
                                      0.7
                                      * m.mld_melding_t_uitvoertijd.tijdsduur,
                                      m.mld_melding_t_uitvoertijd.eenheid))
                                - TRUNC (SYSDATE, 'mi')),
                           1,
                           1,
                           0))
                       ruimoptijd,
                    SUM(DECODE (
                           SIGN(m.mld_melding_einddatum_std
                                - TRUNC (SYSDATE, 'mi')),
                           -1,
                           1,
                           0))
                       echttelaat
               FROM mld_melding m,
                    mld_stdmelding sm,
                    mld_discipline md,
                    ins_srtdiscipline sd
              WHERE     m.mld_melding_status IN (2, 3, 4, 7, 0) -- 2-Ingevoerd, 3-Ingezien, 4-Geaccepteerd, 7-Uitgegeven, 0-Pending
                    AND m.mld_stdmelding_key = sm.mld_stdmelding_key
                    AND sm.mld_ins_discipline_key = md.ins_discipline_key
                    AND md.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
                    AND md.ins_discipline_key IN
                             (SELECT fac.safe_to_number (fac_usrdata_code)
                                FROM fac_v_aanwezigusrdata
                               WHERE fac_usrtab_key = 1142
                                     AND SUBSTR (UPPER (fac_usrdata_omschr),
                                                 1,
                                                 3) = 'BES')
           GROUP BY md.ins_discipline_key,
                       sd.ins_srtdiscipline_prefix
                    || '-'
                    || md.ins_discipline_omschrijving) x
   UNION ALL        -- Extra kolom zodat voorgaande kolommen helemaal getoond?
   SELECT ' ',
          0,
          0,
          0,
          '999999',
          ' '
     FROM DUAL;

CREATE OR REPLACE VIEW UWVA_V_GRAPH_MLDOPEN_BHV
(
   FCLT_XAS_,
   FCLT_YAS_,               -- groen=ruim op tijd (<70% tijdigheid verstreken)
   FCLT_YAS2_,             -- oranje=krap op tijd (>70% tijdigheid verstreken)
   FCLT_YAS3_,                                            -- rood=echt te laat
   VOLGORDE,
   FCLT_URL
)
AS
   SELECT x.vakgroep_oms,
          x.ruimoptijd groen,
          x.totaal - x.ruimoptijd - x.echttelaat oranje,
          x.echttelaat rood,
          TO_CHAR (999999 - x.totaal) || x.vakgroep_oms volgorde,
             'appl/fac/fac_report.asp?mode=list'
          || '&'
          || 'usrrap_key=1285'
          || '&'
          || 'hide_f_specialisatie=BHV'
          || '&'
          || 'hide_f_ins_discipline_key='
          || TO_CHAR (x.ins_discipline_key)
     FROM (  SELECT md.ins_discipline_key,
                       sd.ins_srtdiscipline_prefix
                    || '-'
                    || md.ins_discipline_omschrijving
                       vakgroep_oms,
                    COUNT ( * ) totaal,
                    SUM(DECODE (
                           SIGN(mld.geteinddatum (
                                   m.mld_melding_datum,
                                   m.mld_stdmelding_key,
                                   m.mld_melding_spoed,
                                   NULL,     -- Plaats binnen/kleiner locatie!
                                   NULL,     -- Object met laagste uitvoertijd
                                   MLD_T_UITVOERTIJD (
                                      0.7
                                      * m.mld_melding_t_uitvoertijd.tijdsduur,
                                      m.mld_melding_t_uitvoertijd.eenheid))
                                - TRUNC (SYSDATE, 'mi')),
                           1,
                           1,
                           0))
                       ruimoptijd,
                    SUM(DECODE (
                           SIGN(m.mld_melding_einddatum_std
                                - TRUNC (SYSDATE, 'mi')),
                           -1,
                           1,
                           0))
                       echttelaat
               FROM mld_melding m,
                    mld_stdmelding sm,
                    mld_discipline md,
                    ins_srtdiscipline sd
              WHERE     m.mld_melding_status IN (2, 3, 4, 7, 0) -- 2-Ingevoerd, 3-Ingezien, 4-Geaccepteerd, 7-Uitgegeven, 0-Pending
                    AND m.mld_stdmelding_key = sm.mld_stdmelding_key
                    AND sm.mld_ins_discipline_key = md.ins_discipline_key
                    AND md.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
                    AND md.ins_discipline_key IN
                             (SELECT fac.safe_to_number (fac_usrdata_code)
                                FROM fac_v_aanwezigusrdata
                               WHERE fac_usrtab_key = 1142
                                     AND SUBSTR (UPPER (fac_usrdata_omschr),
                                                 1,
                                                 3) = 'BHV')
           GROUP BY md.ins_discipline_key,
                       sd.ins_srtdiscipline_prefix
                    || '-'
                    || md.ins_discipline_omschrijving) x
   UNION ALL        -- Extra kolom zodat voorgaande kolommen helemaal getoond?
   SELECT ' ',
          0,
          0,
          0,
          '999999',
          ' '
     FROM DUAL;

CREATE OR REPLACE VIEW UWVA_V_GRAPH_MLDOPEN_EVE
(
   FCLT_XAS_,
   FCLT_YAS_,               -- groen=ruim op tijd (<70% tijdigheid verstreken)
   FCLT_YAS2_,             -- oranje=krap op tijd (>70% tijdigheid verstreken)
   FCLT_YAS3_,                                            -- rood=echt te laat
   VOLGORDE,
   FCLT_URL
)
AS
   SELECT x.vakgroep_oms,
          x.ruimoptijd groen,
          x.totaal - x.ruimoptijd - x.echttelaat oranje,
          x.echttelaat rood,
          TO_CHAR (999999 - x.totaal) || x.vakgroep_oms volgorde,
             'appl/fac/fac_report.asp?mode=list'
          || '&'
          || 'usrrap_key=1285'
          || '&'
          || 'hide_f_specialisatie=EVE'
          || '&'
          || 'hide_f_ins_discipline_key='
          || TO_CHAR (x.ins_discipline_key)
     FROM (  SELECT md.ins_discipline_key,
                       sd.ins_srtdiscipline_prefix
                    || '-'
                    || md.ins_discipline_omschrijving
                       vakgroep_oms,
                    COUNT ( * ) totaal,
                    SUM(DECODE (
                           SIGN(mld.geteinddatum (
                                   m.mld_melding_datum,
                                   m.mld_stdmelding_key,
                                   m.mld_melding_spoed,
                                   NULL,     -- Plaats binnen/kleiner locatie!
                                   NULL,     -- Object met laagste uitvoertijd
                                   MLD_T_UITVOERTIJD (
                                      0.7
                                      * m.mld_melding_t_uitvoertijd.tijdsduur,
                                      m.mld_melding_t_uitvoertijd.eenheid))
                                - TRUNC (SYSDATE, 'mi')),
                           1,
                           1,
                           0))
                       ruimoptijd,
                    SUM(DECODE (
                           SIGN(m.mld_melding_einddatum_std
                                - TRUNC (SYSDATE, 'mi')),
                           -1,
                           1,
                           0))
                       echttelaat
               FROM mld_melding m,
                    mld_stdmelding sm,
                    mld_discipline md,
                    ins_srtdiscipline sd
              WHERE     m.mld_melding_status IN (2, 3, 4, 7, 0) -- 2-Ingevoerd, 3-Ingezien, 4-Geaccepteerd, 7-Uitgegeven, 0-Pending
                    AND m.mld_stdmelding_key = sm.mld_stdmelding_key
                    AND sm.mld_ins_discipline_key = md.ins_discipline_key
                    AND md.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
                    AND md.ins_discipline_key IN
                             (SELECT fac.safe_to_number (fac_usrdata_code)
                                FROM fac_v_aanwezigusrdata
                               WHERE fac_usrtab_key = 1142
                                     AND SUBSTR (UPPER (fac_usrdata_omschr),
                                                 1,
                                                 3) = 'EVE')
           GROUP BY md.ins_discipline_key,
                       sd.ins_srtdiscipline_prefix
                    || '-'
                    || md.ins_discipline_omschrijving) x
   UNION ALL        -- Extra kolom zodat voorgaande kolommen helemaal getoond?
   SELECT ' ',
          0,
          0,
          0,
          '999999',
          ' '
     FROM DUAL;

CREATE OR REPLACE VIEW UWVA_V_GRAPH_MLDOPEN_IEO
(
   FCLT_XAS_,
   FCLT_YAS_,               -- groen=ruim op tijd (<70% tijdigheid verstreken)
   FCLT_YAS2_,             -- oranje=krap op tijd (>70% tijdigheid verstreken)
   FCLT_YAS3_,                                            -- rood=echt te laat
   VOLGORDE,
   FCLT_URL
)
AS
   SELECT x.vakgroep_oms,
          x.ruimoptijd groen,
          x.totaal - x.ruimoptijd - x.echttelaat oranje,
          x.echttelaat rood,
          TO_CHAR (999999 - x.totaal) || x.vakgroep_oms volgorde,
             'appl/fac/fac_report.asp?mode=list'
          || '&'
          || 'usrrap_key=1285'
          || '&'
          || 'hide_f_specialisatie=IEO'
          || '&'
          || 'hide_f_ins_discipline_key='
          || TO_CHAR (x.ins_discipline_key)
     FROM (  SELECT md.ins_discipline_key,
                       sd.ins_srtdiscipline_prefix
                    || '-'
                    || md.ins_discipline_omschrijving
                       vakgroep_oms,
                    COUNT ( * ) totaal,
                    SUM(DECODE (
                           SIGN(mld.geteinddatum (
                                   m.mld_melding_datum,
                                   m.mld_stdmelding_key,
                                   m.mld_melding_spoed,
                                   NULL,     -- Plaats binnen/kleiner locatie!
                                   NULL,     -- Object met laagste uitvoertijd
                                   MLD_T_UITVOERTIJD (
                                      0.7
                                      * m.mld_melding_t_uitvoertijd.tijdsduur,
                                      m.mld_melding_t_uitvoertijd.eenheid))
                                - TRUNC (SYSDATE, 'mi')),
                           1,
                           1,
                           0))
                       ruimoptijd,
                    SUM(DECODE (
                           SIGN(m.mld_melding_einddatum_std
                                - TRUNC (SYSDATE, 'mi')),
                           -1,
                           1,
                           0))
                       echttelaat
               FROM mld_melding m,
                    mld_stdmelding sm,
                    mld_discipline md,
                    ins_srtdiscipline sd
              WHERE     m.mld_melding_status IN (2, 3, 4, 7, 0) -- 2-Ingevoerd, 3-Ingezien, 4-Geaccepteerd, 7-Uitgegeven, 0-Pending
                    AND m.mld_stdmelding_key = sm.mld_stdmelding_key
                    AND sm.mld_ins_discipline_key = md.ins_discipline_key
                    AND md.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
                    AND md.ins_discipline_key IN
                             (SELECT fac.safe_to_number (fac_usrdata_code)
                                FROM fac_v_aanwezigusrdata
                               WHERE fac_usrtab_key = 1142
                                     AND SUBSTR (UPPER (fac_usrdata_omschr),
                                                 1,
                                                 3) = 'IEO')
           GROUP BY md.ins_discipline_key,
                       sd.ins_srtdiscipline_prefix
                    || '-'
                    || md.ins_discipline_omschrijving) x
   UNION ALL        -- Extra kolom zodat voorgaande kolommen helemaal getoond?
   SELECT ' ',
          0,
          0,
          0,
          '999999',
          ' '
     FROM DUAL;

CREATE OR REPLACE VIEW UWVA_V_GRAPH_MLDOPEN_KLI
(
   FCLT_XAS_,
   FCLT_YAS_,               -- groen=ruim op tijd (<70% tijdigheid verstreken)
   FCLT_YAS2_,             -- oranje=krap op tijd (>70% tijdigheid verstreken)
   FCLT_YAS3_,                                            -- rood=echt te laat
   VOLGORDE,
   FCLT_URL
)
AS
   SELECT x.vakgroep_oms,
          x.ruimoptijd groen,
          x.totaal - x.ruimoptijd - x.echttelaat oranje,
          x.echttelaat rood,
          TO_CHAR (999999 - x.totaal) || x.vakgroep_oms volgorde,
             'appl/fac/fac_report.asp?mode=list'
          || '&'
          || 'usrrap_key=1285'
          || '&'
          || 'hide_f_specialisatie=KLI'
          || '&'
          || 'hide_f_ins_discipline_key='
          || TO_CHAR (x.ins_discipline_key)
     FROM (  SELECT md.ins_discipline_key,
                       sd.ins_srtdiscipline_prefix
                    || '-'
                    || md.ins_discipline_omschrijving
                       vakgroep_oms,
                    COUNT ( * ) totaal,
                    SUM(DECODE (
                           SIGN(mld.geteinddatum (
                                   m.mld_melding_datum,
                                   m.mld_stdmelding_key,
                                   m.mld_melding_spoed,
                                   NULL,     -- Plaats binnen/kleiner locatie!
                                   NULL,     -- Object met laagste uitvoertijd
                                   MLD_T_UITVOERTIJD (
                                      0.7
                                      * m.mld_melding_t_uitvoertijd.tijdsduur,
                                      m.mld_melding_t_uitvoertijd.eenheid))
                                - TRUNC (SYSDATE, 'mi')),
                           1,
                           1,
                           0))
                       ruimoptijd,
                    SUM(DECODE (
                           SIGN(m.mld_melding_einddatum_std
                                - TRUNC (SYSDATE, 'mi')),
                           -1,
                           1,
                           0))
                       echttelaat
               FROM mld_melding m,
                    mld_stdmelding sm,
                    mld_discipline md,
                    ins_srtdiscipline sd
              WHERE     m.mld_melding_status IN (2, 3, 4, 7, 0) -- 2-Ingevoerd, 3-Ingezien, 4-Geaccepteerd, 7-Uitgegeven, 0-Pending
                    AND m.mld_stdmelding_key = sm.mld_stdmelding_key
                    AND sm.mld_ins_discipline_key = md.ins_discipline_key
                    AND md.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
                    AND md.ins_discipline_key IN
                             (SELECT fac.safe_to_number (fac_usrdata_code)
                                FROM fac_v_aanwezigusrdata
                               WHERE fac_usrtab_key = 1142
                                     AND SUBSTR (UPPER (fac_usrdata_omschr),
                                                 1,
                                                 3) = 'KLI')
           GROUP BY md.ins_discipline_key,
                       sd.ins_srtdiscipline_prefix
                    || '-'
                    || md.ins_discipline_omschrijving) x
   UNION ALL        -- Extra kolom zodat voorgaande kolommen helemaal getoond?
   SELECT ' ',
          0,
          0,
          0,
          '999999',
          ' '
     FROM DUAL;

CREATE OR REPLACE VIEW UWVA_V_GRAPH_MLDOPEN_MUS
(
   FCLT_XAS_,
   FCLT_YAS_,               -- groen=ruim op tijd (<70% tijdigheid verstreken)
   FCLT_YAS2_,             -- oranje=krap op tijd (>70% tijdigheid verstreken)
   FCLT_YAS3_,                                            -- rood=echt te laat
   VOLGORDE,
   FCLT_URL
)
AS
   SELECT x.vakgroep_oms,
          x.ruimoptijd groen,
          x.totaal - x.ruimoptijd - x.echttelaat oranje,
          x.echttelaat rood,
          TO_CHAR (999999 - x.totaal) || x.vakgroep_oms volgorde,
             'appl/fac/fac_report.asp?mode=list'
          || '&'
          || 'usrrap_key=1285'
          || '&'
          || 'hide_f_specialisatie=MUS'
          || '&'
          || 'hide_f_ins_discipline_key='
          || TO_CHAR (x.ins_discipline_key)
     FROM (  SELECT md.ins_discipline_key,
                       sd.ins_srtdiscipline_prefix
                    || '-'
                    || md.ins_discipline_omschrijving
                       vakgroep_oms,
                    COUNT ( * ) totaal,
                    SUM(DECODE (
                           SIGN(mld.geteinddatum (
                                   m.mld_melding_datum,
                                   m.mld_stdmelding_key,
                                   m.mld_melding_spoed,
                                   NULL,     -- Plaats binnen/kleiner locatie!
                                   NULL,     -- Object met laagste uitvoertijd
                                   MLD_T_UITVOERTIJD (
                                      0.7
                                      * m.mld_melding_t_uitvoertijd.tijdsduur,
                                      m.mld_melding_t_uitvoertijd.eenheid))
                                - TRUNC (SYSDATE, 'mi')),
                           1,
                           1,
                           0))
                       ruimoptijd,
                    SUM(DECODE (
                           SIGN(m.mld_melding_einddatum_std
                                - TRUNC (SYSDATE, 'mi')),
                           -1,
                           1,
                           0))
                       echttelaat
               FROM mld_melding m,
                    mld_stdmelding sm,
                    mld_discipline md,
                    ins_srtdiscipline sd
              WHERE     m.mld_melding_status IN (2, 3, 4, 7, 0) -- 2-Ingevoerd, 3-Ingezien, 4-Geaccepteerd, 7-Uitgegeven, 0-Pending
                    AND m.mld_stdmelding_key = sm.mld_stdmelding_key
                    AND sm.mld_ins_discipline_key = md.ins_discipline_key
                    AND md.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
                    AND md.ins_discipline_key IN
                             (SELECT fac.safe_to_number (fac_usrdata_code)
                                FROM fac_v_aanwezigusrdata
                               WHERE fac_usrtab_key = 1142
                                     AND SUBSTR (UPPER (fac_usrdata_omschr),
                                                 1,
                                                 3) = 'MUS')
           GROUP BY md.ins_discipline_key,
                       sd.ins_srtdiscipline_prefix
                    || '-'
                    || md.ins_discipline_omschrijving) x
   UNION ALL        -- Extra kolom zodat voorgaande kolommen helemaal getoond?
   SELECT ' ',
          0,
          0,
          0,
          '999999',
          ' '
     FROM DUAL;

CREATE OR REPLACE VIEW UWVA_V_GRAPH_MLDOPEN_PEI
(
   FCLT_XAS_,
   FCLT_YAS_,               -- groen=ruim op tijd (<70% tijdigheid verstreken)
   FCLT_YAS2_,             -- oranje=krap op tijd (>70% tijdigheid verstreken)
   FCLT_YAS3_,                                            -- rood=echt te laat
   VOLGORDE,
   FCLT_URL
)
AS
   SELECT x.vakgroep_oms,
          x.ruimoptijd groen,
          x.totaal - x.ruimoptijd - x.echttelaat oranje,
          x.echttelaat rood,
          TO_CHAR (999999 - x.totaal) || x.vakgroep_oms volgorde,
             'appl/fac/fac_report.asp?mode=list'
          || '&'
          || 'usrrap_key=1285'
          || '&'
          || 'hide_f_specialisatie=PEI'
          || '&'
          || 'hide_f_ins_discipline_key='
          || TO_CHAR (x.ins_discipline_key)
     FROM (  SELECT md.ins_discipline_key,
                       sd.ins_srtdiscipline_prefix
                    || '-'
                    || md.ins_discipline_omschrijving
                       vakgroep_oms,
                    COUNT ( * ) totaal,
                    SUM(DECODE (
                           SIGN(mld.geteinddatum (
                                   m.mld_melding_datum,
                                   m.mld_stdmelding_key,
                                   m.mld_melding_spoed,
                                   NULL,     -- Plaats binnen/kleiner locatie!
                                   NULL,     -- Object met laagste uitvoertijd
                                   MLD_T_UITVOERTIJD (
                                      0.7
                                      * m.mld_melding_t_uitvoertijd.tijdsduur,
                                      m.mld_melding_t_uitvoertijd.eenheid))
                                - TRUNC (SYSDATE, 'mi')),
                           1,
                           1,
                           0))
                       ruimoptijd,
                    SUM(DECODE (
                           SIGN(m.mld_melding_einddatum_std
                                - TRUNC (SYSDATE, 'mi')),
                           -1,
                           1,
                           0))
                       echttelaat
               FROM mld_melding m,
                    mld_stdmelding sm,
                    mld_discipline md,
                    ins_srtdiscipline sd
              WHERE     m.mld_melding_status IN (2, 3, 4, 7, 0) -- 2-Ingevoerd, 3-Ingezien, 4-Geaccepteerd, 7-Uitgegeven, 0-Pending
                    AND m.mld_stdmelding_key = sm.mld_stdmelding_key
                    AND sm.mld_ins_discipline_key = md.ins_discipline_key
                    AND md.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
                    AND md.ins_discipline_key IN
                             (SELECT fac.safe_to_number (fac_usrdata_code)
                                FROM fac_v_aanwezigusrdata
                               WHERE fac_usrtab_key = 1142
                                     AND SUBSTR (UPPER (fac_usrdata_omschr),
                                                 1,
                                                 3) = 'PEI')
           GROUP BY md.ins_discipline_key,
                       sd.ins_srtdiscipline_prefix
                    || '-'
                    || md.ins_discipline_omschrijving) x
   UNION ALL        -- Extra kolom zodat voorgaande kolommen helemaal getoond?
   SELECT ' ',
          0,
          0,
          0,
          '999999',
          ' '
     FROM DUAL;

CREATE OR REPLACE VIEW UWVA_V_GRAPH_MLDOPEN_PEL
(
   FCLT_XAS_,
   FCLT_YAS_,               -- groen=ruim op tijd (<70% tijdigheid verstreken)
   FCLT_YAS2_,             -- oranje=krap op tijd (>70% tijdigheid verstreken)
   FCLT_YAS3_,                                            -- rood=echt te laat
   VOLGORDE,
   FCLT_URL
)
AS
   SELECT x.vakgroep_oms,
          x.ruimoptijd groen,
          x.totaal - x.ruimoptijd - x.echttelaat oranje,
          x.echttelaat rood,
          TO_CHAR (999999 - x.totaal) || x.vakgroep_oms volgorde,
             'appl/fac/fac_report.asp?mode=list'
          || '&'
          || 'usrrap_key=1285'
          || '&'
          || 'hide_f_specialisatie=PEL'
          || '&'
          || 'hide_f_ins_discipline_key='
          || TO_CHAR (x.ins_discipline_key)
     FROM (  SELECT md.ins_discipline_key,
                       sd.ins_srtdiscipline_prefix
                    || '-'
                    || md.ins_discipline_omschrijving
                       vakgroep_oms,
                    COUNT ( * ) totaal,
                    SUM(DECODE (
                           SIGN(mld.geteinddatum (
                                   m.mld_melding_datum,
                                   m.mld_stdmelding_key,
                                   m.mld_melding_spoed,
                                   NULL,     -- Plaats binnen/kleiner locatie!
                                   NULL,     -- Object met laagste uitvoertijd
                                   MLD_T_UITVOERTIJD (
                                      0.7
                                      * m.mld_melding_t_uitvoertijd.tijdsduur,
                                      m.mld_melding_t_uitvoertijd.eenheid))
                                - TRUNC (SYSDATE, 'mi')),
                           1,
                           1,
                           0))
                       ruimoptijd,
                    SUM(DECODE (
                           SIGN(m.mld_melding_einddatum_std
                                - TRUNC (SYSDATE, 'mi')),
                           -1,
                           1,
                           0))
                       echttelaat
               FROM mld_melding m,
                    mld_stdmelding sm,
                    mld_discipline md,
                    ins_srtdiscipline sd
              WHERE     m.mld_melding_status IN (2, 3, 4, 7, 0) -- 2-Ingevoerd, 3-Ingezien, 4-Geaccepteerd, 7-Uitgegeven, 0-Pending
                    AND m.mld_stdmelding_key = sm.mld_stdmelding_key
                    AND sm.mld_ins_discipline_key = md.ins_discipline_key
                    AND md.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
                    AND md.ins_discipline_key IN
                             (SELECT fac.safe_to_number (fac_usrdata_code)
                                FROM fac_v_aanwezigusrdata
                               WHERE fac_usrtab_key = 1142
                                     AND SUBSTR (UPPER (fac_usrdata_omschr),
                                                 1,
                                                 3) = 'PEL')
           GROUP BY md.ins_discipline_key,
                       sd.ins_srtdiscipline_prefix
                    || '-'
                    || md.ins_discipline_omschrijving) x
   UNION ALL        -- Extra kolom zodat voorgaande kolommen helemaal getoond?
   SELECT ' ',
          0,
          0,
          0,
          '999999',
          ' '
     FROM DUAL;

CREATE OR REPLACE VIEW UWVA_V_GRAPH_MLDOPEN_SBL
(
   FCLT_XAS_,
   FCLT_YAS_,               -- groen=ruim op tijd (<70% tijdigheid verstreken)
   FCLT_YAS2_,             -- oranje=krap op tijd (>70% tijdigheid verstreken)
   FCLT_YAS3_,                                            -- rood=echt te laat
   VOLGORDE,
   FCLT_URL
)
AS
   SELECT x.vakgroep_oms,
          x.ruimoptijd groen,
          x.totaal - x.ruimoptijd - x.echttelaat oranje,
          x.echttelaat rood,
          TO_CHAR (999999 - x.totaal) || x.vakgroep_oms volgorde,
             'appl/fac/fac_report.asp?mode=list'
          || '&'
          || 'usrrap_key=1285'
          || '&'
          || 'hide_f_specialisatie=SBL'
          || '&'
          || 'hide_f_ins_discipline_key='
          || TO_CHAR (x.ins_discipline_key)
     FROM (  SELECT md.ins_discipline_key,
                       sd.ins_srtdiscipline_prefix
                    || '-'
                    || md.ins_discipline_omschrijving
                       vakgroep_oms,
                    COUNT ( * ) totaal,
                    SUM(DECODE (
                           SIGN(mld.geteinddatum (
                                   m.mld_melding_datum,
                                   m.mld_stdmelding_key,
                                   m.mld_melding_spoed,
                                   NULL,     -- Plaats binnen/kleiner locatie!
                                   NULL,     -- Object met laagste uitvoertijd
                                   MLD_T_UITVOERTIJD (
                                      0.7
                                      * m.mld_melding_t_uitvoertijd.tijdsduur,
                                      m.mld_melding_t_uitvoertijd.eenheid))
                                - TRUNC (SYSDATE, 'mi')),
                           1,
                           1,
                           0))
                       ruimoptijd,
                    SUM(DECODE (
                           SIGN(m.mld_melding_einddatum_std
                                - TRUNC (SYSDATE, 'mi')),
                           -1,
                           1,
                           0))
                       echttelaat
               FROM mld_melding m,
                    mld_stdmelding sm,
                    mld_discipline md,
                    ins_srtdiscipline sd
              WHERE     m.mld_melding_status IN (2, 3, 4, 7, 0) -- 2-Ingevoerd, 3-Ingezien, 4-Geaccepteerd, 7-Uitgegeven, 0-Pending
                    AND m.mld_stdmelding_key = sm.mld_stdmelding_key
                    AND sm.mld_ins_discipline_key = md.ins_discipline_key
                    AND md.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
                    AND md.ins_discipline_key IN
                             (SELECT fac.safe_to_number (fac_usrdata_code)
                                FROM fac_v_aanwezigusrdata
                               WHERE fac_usrtab_key = 1142
                                     AND SUBSTR (UPPER (fac_usrdata_omschr),
                                                 1,
                                                 3) = 'SBL')
           GROUP BY md.ins_discipline_key,
                       sd.ins_srtdiscipline_prefix
                    || '-'
                    || md.ins_discipline_omschrijving) x
   UNION ALL        -- Extra kolom zodat voorgaande kolommen helemaal getoond?
   SELECT ' ',
          0,
          0,
          0,
          '999999',
          ' '
     FROM DUAL;

CREATE OR REPLACE VIEW UWVA_V_GRAPH_MLDOPEN_TIN
(
   FCLT_XAS_,
   FCLT_YAS_,               -- groen=ruim op tijd (<70% tijdigheid verstreken)
   FCLT_YAS2_,             -- oranje=krap op tijd (>70% tijdigheid verstreken)
   FCLT_YAS3_,                                            -- rood=echt te laat
   VOLGORDE,
   FCLT_URL
)
AS
   SELECT x.vakgroep_oms,
          x.ruimoptijd groen,
          x.totaal - x.ruimoptijd - x.echttelaat oranje,
          x.echttelaat rood,
          TO_CHAR (999999 - x.totaal) || x.vakgroep_oms volgorde,
             'appl/fac/fac_report.asp?mode=list'
          || '&'
          || 'usrrap_key=1285'
          || '&'
          || 'hide_f_specialisatie=TIN'
          || '&'
          || 'hide_f_ins_discipline_key='
          || TO_CHAR (x.ins_discipline_key)
     FROM (  SELECT md.ins_discipline_key,
                       sd.ins_srtdiscipline_prefix
                    || '-'
                    || md.ins_discipline_omschrijving
                       vakgroep_oms,
                    COUNT ( * ) totaal,
                    SUM(DECODE (
                           SIGN(mld.geteinddatum (
                                   m.mld_melding_datum,
                                   m.mld_stdmelding_key,
                                   m.mld_melding_spoed,
                                   NULL,     -- Plaats binnen/kleiner locatie!
                                   NULL,     -- Object met laagste uitvoertijd
                                   MLD_T_UITVOERTIJD (
                                      0.7
                                      * m.mld_melding_t_uitvoertijd.tijdsduur,
                                      m.mld_melding_t_uitvoertijd.eenheid))
                                - TRUNC (SYSDATE, 'mi')),
                           1,
                           1,
                           0))
                       ruimoptijd,
                    SUM(DECODE (
                           SIGN(m.mld_melding_einddatum_std
                                - TRUNC (SYSDATE, 'mi')),
                           -1,
                           1,
                           0))
                       echttelaat
               FROM mld_melding m,
                    mld_stdmelding sm,
                    mld_discipline md,
                    ins_srtdiscipline sd
              WHERE     m.mld_melding_status IN (2, 3, 4, 7, 0) -- 2-Ingevoerd, 3-Ingezien, 4-Geaccepteerd, 7-Uitgegeven, 0-Pending
                    AND m.mld_stdmelding_key = sm.mld_stdmelding_key
                    AND sm.mld_ins_discipline_key = md.ins_discipline_key
                    AND md.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
                    AND md.ins_discipline_key IN
                             (SELECT fac.safe_to_number (fac_usrdata_code)
                                FROM fac_v_aanwezigusrdata
                               WHERE fac_usrtab_key = 1142
                                     AND SUBSTR (UPPER (fac_usrdata_omschr),
                                                 1,
                                                 3) = 'TIN')
           GROUP BY md.ins_discipline_key,
                       sd.ins_srtdiscipline_prefix
                    || '-'
                    || md.ins_discipline_omschrijving) x
   UNION ALL        -- Extra kolom zodat voorgaande kolommen helemaal getoond?
   SELECT ' ',
          0,
          0,
          0,
          '999999',
          ' '
     FROM DUAL;

CREATE OR REPLACE VIEW UWVA_V_GRAPH_MLDOPEN_VEO
(
   FCLT_XAS_,
   FCLT_YAS_,               -- groen=ruim op tijd (<70% tijdigheid verstreken)
   FCLT_YAS2_,             -- oranje=krap op tijd (>70% tijdigheid verstreken)
   FCLT_YAS3_,                                            -- rood=echt te laat
   VOLGORDE,
   FCLT_URL
)
AS
   SELECT x.vakgroep_oms,
          x.ruimoptijd groen,
          x.totaal - x.ruimoptijd - x.echttelaat oranje,
          x.echttelaat rood,
          TO_CHAR (999999 - x.totaal) || x.vakgroep_oms volgorde,
             'appl/fac/fac_report.asp?mode=list'
          || '&'
          || 'usrrap_key=1285'
          || '&'
          || 'hide_f_specialisatie=VEO'
          || '&'
          || 'hide_f_ins_discipline_key='
          || TO_CHAR (x.ins_discipline_key)
     FROM (  SELECT md.ins_discipline_key,
                       sd.ins_srtdiscipline_prefix
                    || '-'
                    || md.ins_discipline_omschrijving
                       vakgroep_oms,
                    COUNT ( * ) totaal,
                    SUM(DECODE (
                           SIGN(mld.geteinddatum (
                                   m.mld_melding_datum,
                                   m.mld_stdmelding_key,
                                   m.mld_melding_spoed,
                                   NULL,     -- Plaats binnen/kleiner locatie!
                                   NULL,     -- Object met laagste uitvoertijd
                                   MLD_T_UITVOERTIJD (
                                      0.7
                                      * m.mld_melding_t_uitvoertijd.tijdsduur,
                                      m.mld_melding_t_uitvoertijd.eenheid))
                                - TRUNC (SYSDATE, 'mi')),
                           1,
                           1,
                           0))
                       ruimoptijd,
                    SUM(DECODE (
                           SIGN(m.mld_melding_einddatum_std
                                - TRUNC (SYSDATE, 'mi')),
                           -1,
                           1,
                           0))
                       echttelaat
               FROM mld_melding m,
                    mld_stdmelding sm,
                    mld_discipline md,
                    ins_srtdiscipline sd
              WHERE     m.mld_melding_status IN (2, 3, 4, 7, 0) -- 2-Ingevoerd, 3-Ingezien, 4-Geaccepteerd, 7-Uitgegeven, 0-Pending
                    AND m.mld_stdmelding_key = sm.mld_stdmelding_key
                    AND sm.mld_ins_discipline_key = md.ins_discipline_key
                    AND md.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
                    AND md.ins_discipline_key IN
                             (SELECT fac.safe_to_number (fac_usrdata_code)
                                FROM fac_v_aanwezigusrdata
                               WHERE fac_usrtab_key = 1142
                                     AND SUBSTR (UPPER (fac_usrdata_omschr),
                                                 1,
                                                 3) = 'VEO')
           GROUP BY md.ins_discipline_key,
                       sd.ins_srtdiscipline_prefix
                    || '-'
                    || md.ins_discipline_omschrijving) x
   UNION ALL        -- Extra kolom zodat voorgaande kolommen helemaal getoond?
   SELECT ' ',
          0,
          0,
          0,
          '999999',
          ' '
     FROM DUAL;

CREATE OR REPLACE VIEW UWVA_V_GRAPH_MLDOPEN_VEB
(
   FCLT_XAS_,
   FCLT_YAS_,               -- groen=ruim op tijd (<70% tijdigheid verstreken)
   FCLT_YAS2_,             -- oranje=krap op tijd (>70% tijdigheid verstreken)
   FCLT_YAS3_,                                            -- rood=echt te laat
   VOLGORDE,
   FCLT_URL
)
AS
   SELECT x.vakgroep_oms,
          x.ruimoptijd groen,
          x.totaal - x.ruimoptijd - x.echttelaat oranje,
          x.echttelaat rood,
          TO_CHAR (999999 - x.totaal) || x.vakgroep_oms volgorde,
             'appl/fac/fac_report.asp?mode=list'
          || '&'
          || 'usrrap_key=1285'
          || '&'
          || 'hide_f_specialisatie=VEB'
          || '&'
          || 'hide_f_ins_discipline_key='
          || TO_CHAR (x.ins_discipline_key)
     FROM (  SELECT md.ins_discipline_key,
                       sd.ins_srtdiscipline_prefix
                    || '-'
                    || md.ins_discipline_omschrijving
                       vakgroep_oms,
                    COUNT ( * ) totaal,
                    SUM(DECODE (
                           SIGN(mld.geteinddatum (
                                   m.mld_melding_datum,
                                   m.mld_stdmelding_key,
                                   m.mld_melding_spoed,
                                   NULL,     -- Plaats binnen/kleiner locatie!
                                   NULL,     -- Object met laagste uitvoertijd
                                   MLD_T_UITVOERTIJD (
                                      0.7
                                      * m.mld_melding_t_uitvoertijd.tijdsduur,
                                      m.mld_melding_t_uitvoertijd.eenheid))
                                - TRUNC (SYSDATE, 'mi')),
                           1,
                           1,
                           0))
                       ruimoptijd,
                    SUM(DECODE (
                           SIGN(m.mld_melding_einddatum_std
                                - TRUNC (SYSDATE, 'mi')),
                           -1,
                           1,
                           0))
                       echttelaat
               FROM mld_melding m,
                    mld_stdmelding sm,
                    mld_discipline md,
                    ins_srtdiscipline sd
              WHERE     m.mld_melding_status IN (2, 3, 4, 7, 0) -- 2-Ingevoerd, 3-Ingezien, 4-Geaccepteerd, 7-Uitgegeven, 0-Pending
                    AND m.mld_stdmelding_key = sm.mld_stdmelding_key
                    AND sm.mld_ins_discipline_key = md.ins_discipline_key
                    AND md.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
                    AND md.ins_discipline_key IN
                             (SELECT fac.safe_to_number (fac_usrdata_code)
                                FROM fac_v_aanwezigusrdata
                               WHERE fac_usrtab_key = 1142
                                     AND SUBSTR (UPPER (fac_usrdata_omschr),
                                                 1,
                                                 3) = 'VEB')
           GROUP BY md.ins_discipline_key,
                       sd.ins_srtdiscipline_prefix
                    || '-'
                    || md.ins_discipline_omschrijving) x
   UNION ALL        -- Extra kolom zodat voorgaande kolommen helemaal getoond?
   SELECT ' ',
          0,
          0,
          0,
          '999999',
          ' '
     FROM DUAL;

-- Tov. SLA van melding of geplande einddatum van melding?
-- Lopend incl. meldingstatus 7-Uitgegeven, maar niet als opdracht belegd?

CREATE OR REPLACE VIEW UWVA_V_GRAPH_MLDOPEN_BHND
(
   FCLT_3D_AFDELING_KEY,
   FCLT_XAS_,
   FCLT_YAS_,               -- groen=ruim op tijd (<70% tijdigheid verstreken)
   FCLT_YAS2_,             -- oranje=krap op tijd (>70% tijdigheid verstreken)
   FCLT_YAS3_,                                            -- rood=echt te laat
   VOLGORDE,
   FCLT_URL
)
AS
   SELECT prs_afdeling_key,
          prs_perslid_naam_full,
          ruimoptijd groen,
          totaal - ruimoptijd - echttelaat oranje,
          echttelaat rood,
          TO_CHAR (999999 - totaal) || prs_perslid_naam_full volgorde,
             'appl/fac/fac_report.asp?mode=list'
          || '&'
          || 'usrrap_key=1286'
          || '&'
          || 'hide_f_behandelaar_key='
          || TO_CHAR (prs_perslid_key)
     FROM (  SELECT p.prs_afdeling_key,
                    pb.prs_perslid_key,
                    pb.prs_perslid_naam_full,
                    COUNT ( * ) totaal,
                    SUM(DECODE (
                           SIGN(mld.geteinddatum (
                                   m.mld_melding_datum,
                                   m.mld_stdmelding_key,
                                   m.mld_melding_spoed,
                                   NULL,     -- Plaats binnen/kleiner locatie!
                                   NULL,     -- Object met laagste uitvoertijd
                                   MLD_T_UITVOERTIJD (
                                      0.7
                                      * m.mld_melding_t_uitvoertijd.tijdsduur,
                                      m.mld_melding_t_uitvoertijd.eenheid))
                                - TRUNC (SYSDATE, 'mi')),
                           1,
                           1,
                           0))
                       ruimoptijd,
                    SUM(DECODE (
                           SIGN(m.mld_melding_einddatum_std
                                - TRUNC (SYSDATE, 'mi')),
                           -1,
                           1,
                           0))
                       echttelaat
               FROM mld_melding m,
                    prs_perslid p,
                    prs_v_perslid_fullnames_all pb
              WHERE     m.mld_melding_status IN (2, 3, 4, 7, 0) -- 2-Ingevoerd, 3-Ingezien, 4-Geaccepteerd, 7-Uitgegeven, 0-Pending
                    AND m.mld_melding_behandelaar_key = p.prs_perslid_key
                    AND p.prs_perslid_key = pb.prs_perslid_key
           --AND NOT EXISTS
           --      (SELECT 1
           --         FROM mld_opdr
           --        WHERE mld_statusopdr_key IN (3, 4, 5, 8, 10) -- 3-Ter fiattering, 4-Gefiatteerd, 5-Uitgegeven, 8-Geaccepteerd, 10-Ter goedkeuring
           --              AND mld_melding_key = m.mld_melding_key)
           GROUP BY p.prs_afdeling_key,
                    pb.prs_perslid_key,
                    pb.prs_perslid_naam_full);

-- Per opdracht (>1 per melding)?
-- Tov. SLA van melding, geplande einddatum van melding of geplande einddatum van opdracht?

CREATE OR REPLACE VIEW UWVA_V_GRAPH_ORDOPEN_UITV_I
(
   FCLT_XAS_,
   FCLT_YAS_,               -- groen=ruim op tijd (<70% tijdigheid verstreken)
   FCLT_YAS2_,             -- oranje=krap op tijd (>70% tijdigheid verstreken)
   FCLT_YAS3_,                                            -- rood=echt te laat
   VOLGORDE,
   FCLT_URL
)
AS
   SELECT uitvoerende,
          ruimoptijd groen,
          totaal - ruimoptijd - echttelaat oranje,
          echttelaat rood,
          TO_CHAR (999999 - totaal) || uitvoerende volgorde,
             'appl/fac/fac_report.asp?mode=list'
          || '&'
          || 'usrrap_key=1287'
          || '&'
          || 'hide_f_uitvoerende_key='
          || TO_CHAR (mld_uitvoerende_keys)
     FROM (  SELECT o.mld_uitvoerende_keys,
                    COALESCE (b.prs_bedrijf_naam, puv.prs_perslid_naam_full)
                       uitvoerende,
                    COUNT ( * ) totaal,
                    SUM(DECODE (
                           SIGN(mld.geteinddatum (
                                   m.mld_melding_datum,
                                   m.mld_stdmelding_key,
                                   m.mld_melding_spoed,
                                   NULL,     -- Plaats binnen/kleiner locatie!
                                   NULL,     -- Object met laagste uitvoertijd
                                   MLD_T_UITVOERTIJD (
                                      0.7
                                      * m.mld_melding_t_uitvoertijd.tijdsduur,
                                      m.mld_melding_t_uitvoertijd.eenheid))
                                - TRUNC (SYSDATE, 'mi')),
                           1,
                           1,
                           0))
                       ruimoptijd,
                    SUM(DECODE (
                           SIGN(m.mld_melding_einddatum_std
                                - TRUNC (SYSDATE, 'mi')),
                           -1,
                           1,
                           0))
                       echttelaat
               FROM mld_opdr o,
                    (SELECT * -- Alleen interne relaties (1200 is aangevinkt)!
                       FROM prs_bedrijf b
                      WHERE EXISTS
                               (SELECT 1
                                  FROM prs_kenmerklink kl
                                 WHERE     kl.prs_link_key = b.prs_bedrijf_key
                                       AND kl.prs_kenmerk_key = 1200 -- Intern
                                       AND kl.prs_kenmerklink_waarde = 1)) b,
                    prs_v_perslid_fullnames_all puv,     -- Interne uitvoerder
                    mld_melding m
              WHERE     o.mld_statusopdr_key IN (3, 4, 5, 8, 10) -- 3-Ter fiattering, 4-Gefiatteerd, 5-Uitgegeven, 8-Geaccepteerd, 10-Ter goedkeuring
                    AND o.mld_uitvoerende_keys = b.prs_bedrijf_key(+)
                    AND o.mld_uitvoerende_keys = puv.prs_perslid_key(+)
                    AND o.mld_melding_key = m.mld_melding_key
                    AND m.mld_melding_status IN (2, 3, 4, 7, 0) -- 2-Ingevoerd, 3-Ingezien, 4-Geaccepteerd, 7-Uitgegeven, 0-Pending
           GROUP BY o.mld_uitvoerende_keys,
                    COALESCE (b.prs_bedrijf_naam, puv.prs_perslid_naam_full))
    WHERE uitvoerende IS NOT NULL;

CREATE OR REPLACE VIEW UWVA_V_GRAPH_ORDOPEN_UITV_E
(
   FCLT_XAS_,
   FCLT_YAS_,               -- groen=ruim op tijd (<70% tijdigheid verstreken)
   FCLT_YAS2_,             -- oranje=krap op tijd (>70% tijdigheid verstreken)
   FCLT_YAS3_,                                            -- rood=echt te laat
   VOLGORDE,
   FCLT_URL
)
AS
   SELECT uitvoerende,
          ruimoptijd groen,
          totaal - ruimoptijd - echttelaat oranje,
          echttelaat rood,
          TO_CHAR (999999 - totaal) || uitvoerende volgorde,
             'appl/fac/fac_report.asp?mode=list'
          || '&'
          || 'usrrap_key=1287'
          || '&'
          || 'hide_f_uitvoerende_key='
          || TO_CHAR (mld_uitvoerende_keys)
     FROM (  SELECT o.mld_uitvoerende_keys,
                    b.prs_bedrijf_naam uitvoerende,
                    COUNT ( * ) totaal,
                    SUM(DECODE (
                           SIGN(mld.geteinddatum (
                                   m.mld_melding_datum,
                                   m.mld_stdmelding_key,
                                   m.mld_melding_spoed,
                                   NULL,     -- Plaats binnen/kleiner locatie!
                                   NULL,     -- Object met laagste uitvoertijd
                                   MLD_T_UITVOERTIJD (
                                      0.7
                                      * m.mld_melding_t_uitvoertijd.tijdsduur,
                                      m.mld_melding_t_uitvoertijd.eenheid))
                                - TRUNC (SYSDATE, 'mi')),
                           1,
                           1,
                           0))
                       ruimoptijd,
                    SUM(DECODE (
                           SIGN(m.mld_melding_einddatum_std
                                - TRUNC (SYSDATE, 'mi')),
                           -1,
                           1,
                           0))
                       echttelaat
               FROM mld_opdr o,
                    (SELECT * -- Alleen externe relaties (1200 is uitgevinkt)!
                       FROM prs_bedrijf b
                      WHERE NOT EXISTS
                               (SELECT 1
                                  FROM prs_kenmerklink kl
                                 WHERE     kl.prs_link_key = b.prs_bedrijf_key
                                       AND kl.prs_kenmerk_key = 1200 -- Intern
                                       AND kl.prs_kenmerklink_waarde = 1)) b,
                    mld_melding m
              WHERE     o.mld_statusopdr_key IN (3, 4, 5, 8, 10) -- 3-Ter fiattering, 4-Gefiatteerd, 5-Uitgegeven, 8-Geaccepteerd, 10-Ter goedkeuring
                    AND o.mld_uitvoerende_keys = b.prs_bedrijf_key
                    AND o.mld_melding_key = m.mld_melding_key
                    AND m.mld_melding_status IN (2, 3, 4, 7, 0) -- 2-Ingevoerd, 3-Ingezien, 4-Geaccepteerd, 7-Uitgegeven, 0-Pending
           GROUP BY o.mld_uitvoerende_keys, b.prs_bedrijf_naam);

CREATE OR REPLACE VIEW UWVA_V_GRAPH_PPI_ACP (FCLT_XAS_, FCLT_YAS_)
AS
   SELECT SUM (acceptatieoptijd) aantal, COUNT (mld_key) totaal
     FROM (SELECT DISTINCT
                  m.mld_melding_key mld_key,
                  DECODE (
                     SIGN(m.mld_melding_acceptdatum_std
                          - TRUNC (SYSDATE, 'mi')),
                     -1,
                     0,
                     1)
                     acceptatieoptijd
             FROM mld_melding m
            WHERE m.mld_melding_status IN (2, 3, 4, 7, 0) -- 2-Ingevoerd, 3-Ingezien, 4-Geaccepteerd, 7-Uitgegeven, 0-Pending
                                                         );

CREATE OR REPLACE VIEW UWVA_V_GRAPH_PPI_AFM (FCLT_XAS_, FCLT_YAS_)
AS
   SELECT SUM (uitvoeringoptijd) aantal, COUNT (mld_key) totaal
     FROM (SELECT DISTINCT
                  m.mld_melding_key mld_key,
                  DECODE (
                     SIGN (
                        m.mld_melding_einddatum_std - TRUNC (SYSDATE, 'mi')),
                     -1,
                     0,
                     1)
                     uitvoeringoptijd
             FROM mld_melding m
            WHERE m.mld_melding_status IN (2, 3, 4, 7, 0) -- 2-Ingevoerd, 3-Ingezien, 4-Geaccepteerd, 7-Uitgegeven, 0-Pending
                                                         );

CREATE OR REPLACE VIEW uwva_v_fac_notificatie
AS
   SELECT * FROM fac_notificatie;


-- UWVA#33269
-- Bron-view 'uwva_v_afh_geb_grp' loopt via tabelizer tbv. performance!

CREATE OR REPLACE VIEW uwva_v_afh_geb_grp
(
   maand,
   alg_gebouw_key,
   alg_gebouw_code,
   ins_srtdiscipline_omschrijving,
   mld_behandelgroep_naam,
   aantal,
   tot_doorlooptijd,
   tot_verschilnorm_abs,
   tot_verschilnorm_pct
)
AS
     SELECT TO_CHAR (x.mldafm, 'yyyy-mm') maand,
            x.alg_gebouw_key,
            x.alg_gebouw_code,
            x.ins_srtdiscipline_omschrijving,
            x.mld_behandelgroep_naam,
            COUNT ( * ) aantal,
            SUM (x.doorlooptijd.tijdsduur) tot_doorlooptijd,
            SUM (x.doorlooptijd.tijdsduur - x.norm.tijdsduur)
               tot_verschilnorm_abs,
            SUM(DECODE (
                   COALESCE (x.norm.tijdsduur, 0),
                   0,
                   0,
                   (x.doorlooptijd.tijdsduur - x.norm.tijdsduur)
                   / x.norm.tijdsduur))
               tot_verschilnorm_pct
       --SUM(DECODE (COALESCE (x.norm.tijdsduur, 0),
       --            0, 1,
       --            x.doorlooptijd.tijdsduur / x.norm.tijdsduur))
       --   tot_doorloopnorm_pct
       FROM (SELECT t.fac_tracking_datum mldafm,               -- MLDAFM-datum
                    g.alg_gebouw_key,
                    g.alg_gebouw_code,
                    sd.ins_srtdiscipline_omschrijving,
                    bg.mld_behandelgroep_naam,
                    mld.getactualuitvoer (m.mld_melding_datum,
                                          t.fac_tracking_datum,
                                          sm.mld_stdmelding_key,
                                          m.mld_melding_spoed,
                                          NULL,
                                          NULL,
                                          'D')
                       doorlooptijd,
                    mld.getactualuitvoer (m.mld_melding_datum,
                                          m.mld_melding_einddatum_std,
                                          sm.mld_stdmelding_key,
                                          m.mld_melding_spoed,
                                          NULL,
                                          NULL,
                                          'D')
                       norm
               FROM fac_tracking t,
                    mld_melding m,
                    mld_stdmelding sm,
                    ins_tab_discipline td,
                    ins_srtdiscipline sd,
                    mld_disc_params dp,
                    mld_behandelgroep bg,
                    alg_v_allonroerendgoed aog,
                    alg_gebouw g
              WHERE t.fac_srtnotificatie_key = 18            -- MLDAFM/alleen?
                    --AND t.fac_tracking_datum > TRUNC (ADD_MONTHS (SYSDATE, -12), 'mm')
                    AND t.fac_tracking_datum BETWEEN TRUNC (
                                                        ADD_MONTHS (SYSDATE,
                                                                    -12),
                                                        'mm')
                                                 AND  TRUNC (SYSDATE, 'mm')
                    AND t.fac_tracking_refkey = m.mld_melding_key
                    AND m.mld_stdmelding_key = sm.mld_stdmelding_key
                    AND sm.mld_ins_discipline_key = td.ins_discipline_key
                    AND td.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
                    AND sd.ins_srtdiscipline_key IN (1, 2, 9, 10)  -- S/A/V/VO
                    AND td.ins_discipline_key = dp.mld_ins_discipline_key
                    AND dp.mld_behandelgroep_key = bg.mld_behandelgroep_key(+)
                    AND m.mld_alg_onroerendgoed_keys =
                          aog.alg_onroerendgoed_keys
                    AND aog.alg_gebouw_key = g.alg_gebouw_key(+)) x
   GROUP BY TO_CHAR (x.mldafm, 'yyyy-mm'),
            x.alg_gebouw_key,
            x.alg_gebouw_code,
            x.ins_srtdiscipline_omschrijving,
            x.mld_behandelgroep_naam;


CREATE OR REPLACE FORCE VIEW uwva_v_rap_afh_geb
(
   fclt_f_maand,
   fclt_f_kavel,
   fclt_f_gebouw,
   aantal,
   tot_doorlooptijd,
   tot_verschilnorm_abs,
   tot_verschilnorm_pct,
   fclt_x_verschil_ok
)
AS
   SELECT x.maand,
          COALESCE (k.fac_usrdata_omschr, 'ONBEKEND') kavel,
          x.alg_gebouw_code,
          x.aantal,
          x.tot_doorlooptijd,                                   -- / x.aantal,
          x.tot_verschilnorm_abs,                               -- / x.aantal,
          x.tot_verschilnorm_pct,                               -- / x.aantal,
          DECODE (SIGN (x.tot_verschilnorm_pct / x.aantal), 1, 'NOK', 'OK')
             verschil_ok
     FROM    (  SELECT maand,
                       alg_gebouw_key,
                       alg_gebouw_code,
                       SUM (aantal) aantal,
                       SUM (tot_doorlooptijd) tot_doorlooptijd,
                       SUM (tot_verschilnorm_abs) tot_verschilnorm_abs,
                       SUM (tot_verschilnorm_pct) tot_verschilnorm_pct
                  FROM t_uwva_v_afh_geb_grp
              GROUP BY maand, alg_gebouw_key, alg_gebouw_code) x
          LEFT JOIN
             (SELECT ok.alg_onrgoed_key, ud.fac_usrdata_omschr
                FROM alg_v_aanwezigonrgoedkenmerk ok,
                     fac_v_aanwezigusrdata ud
               WHERE ok.alg_kenmerk_key = 1420           -- Kavel (G-kenmerk!)
                     AND fac.safe_to_number (ok.alg_onrgoedkenmerk_waarde) =
                           ud.fac_usrdata_key) k
          ON x.alg_gebouw_key = k.alg_onrgoed_key;

CREATE OR REPLACE FORCE VIEW uwva_v_rap_afh_geb_grp
(
   fclt_f_maand,
   fclt_f_kavel,
   fclt_f_gebouw,
   fclt_f_soortmelding,
   fclt_f_behandelgroep,
   aantal,
   tot_doorlooptijd,
   tot_verschilnorm_abs,
   tot_verschilnorm_pct,
   fclt_x_verschil_ok
)
AS
   SELECT x.maand,
          COALESCE (k.fac_usrdata_omschr, 'ONBEKEND') kavel,
          x.alg_gebouw_code,
          x.ins_srtdiscipline_omschrijving,
          x.mld_behandelgroep_naam,
          x.aantal,
          x.tot_doorlooptijd,                                   -- / x.aantal,
          x.tot_verschilnorm_abs,                               -- / x.aantal,
          x.tot_verschilnorm_pct,                               -- / x.aantal,
          DECODE (SIGN (x.tot_verschilnorm_pct / x.aantal), 1, 'NOK', 'OK')
             verschil_ok
     FROM    t_uwva_v_afh_geb_grp x
          LEFT JOIN
             (SELECT ok.alg_onrgoed_key, ud.fac_usrdata_omschr
                FROM alg_v_aanwezigonrgoedkenmerk ok,
                     fac_v_aanwezigusrdata ud
               WHERE ok.alg_kenmerk_key = 1420           -- Kavel (G-kenmerk!)
                     AND fac.safe_to_number (ok.alg_onrgoedkenmerk_waarde) =
                           ud.fac_usrdata_key) k
          ON x.alg_gebouw_key = k.alg_onrgoed_key;

-- UWVA#33269
-- Bron-view 'uwva_v_st_kl_geb' loopt via tabelizer tbv. performance!
-- td.ins_discipline_key IN
-- (47,  -- S-Beveiligingsinstallaties
--  342, -- S-Beveiliging toegang
--  33,  -- S-Catering/VERVALLEN!
--  315, -- S-Klimaatinstallaties
--  36,  -- S-Schoonmaak
--  64,  -- K-Beveiliging
--  340, -- K-Beveiliging toegang
--  74,  -- K-Beveiligingsinstallaties
--  131, -- K-Catering
--  330, -- K-Klimaatinstallaties
--  63)  -- K-Schoonmaak

CREATE OR REPLACE VIEW uwva_v_st_kl_geb
(
   maand,
   kavel,
   gebouw,
   kl_overall,
   st_beveiliging,
   --st_catering,
   st_klimaat,
   st_schoonmaak,
   kl_beveiliging,
   kl_catering,
   kl_klimaat,
   kl_schoonmaak
)
AS
   SELECT x.maand,
          k.fac_usrdata_omschr,
          x.alg_gebouw_code,
          x.kl_overall,
          x.st_beveiliging,
          x.st_klimaat,
          x.st_schoonmaak,
          x.kl_beveiliging,
          x.kl_catering,
          x.kl_klimaat,
          x.kl_schoonmaak
     FROM    (  SELECT TO_CHAR (x.mldafm, 'yyyy-mm') maand,
                       x.alg_gebouw_key,
                       x.alg_gebouw_code,
                       SUM (kl_overall) kl_overall,
                       SUM (st_beveiliging) st_beveiliging,
                       SUM (st_klimaat) st_klimaat,
                       SUM (st_schoonmaak) st_schoonmaak,
                       SUM (kl_beveiliging) kl_beveiliging,
                       SUM (kl_catering) kl_catering,
                       SUM (kl_klimaat) kl_klimaat,
                       SUM (kl_schoonmaak) kl_schoonmaak
                  FROM (SELECT t.fac_tracking_datum mldafm,
                               g.alg_gebouw_key,
                               g.alg_gebouw_code,
                               1 kl_overall,
                               0 st_beveiliging,
                               0 st_klimaat,
                               0 st_schoonmaak,
                               0 kl_beveiliging,
                               0 kl_catering,
                               0 kl_klimaat,
                               0 kl_schoonmaak
                          FROM fac_tracking t,
                               mld_melding m,
                               mld_stdmelding sm,
                               ins_tab_discipline td,
                               alg_v_allonroerendgoed aog,
                               alg_gebouw g
                         WHERE t.fac_srtnotificatie_key = 18 -- MLDAFM/alleen?
                               AND t.fac_tracking_datum BETWEEN TRUNC (
                                                                   ADD_MONTHS (
                                                                      SYSDATE,
                                                                      -12),
                                                                   'mm')
                                                            AND  TRUNC (
                                                                    SYSDATE,
                                                                    'mm')
                               AND t.fac_tracking_refkey = m.mld_melding_key
                               AND m.mld_stdmelding_key = sm.mld_stdmelding_key
                               AND sm.mld_ins_discipline_key =
                                     td.ins_discipline_key
                               AND td.ins_srtdiscipline_key IN (3)        -- K
                               AND m.mld_alg_onroerendgoed_keys =
                                     aog.alg_onroerendgoed_keys
                               AND aog.alg_gebouw_key = g.alg_gebouw_key(+)
                        UNION ALL
                        SELECT t.fac_tracking_datum mldafm,
                               g.alg_gebouw_key,
                               g.alg_gebouw_code,
                               0 kl_overall,
                               1 st_beveiliging,
                               0 st_klimaat,
                               0 st_schoonmaak,
                               0 kl_beveiliging,
                               0 kl_catering,
                               0 kl_klimaat,
                               0 kl_schoonmaak
                          FROM fac_tracking t,
                               mld_melding m,
                               mld_stdmelding sm,
                               alg_v_allonroerendgoed aog,
                               alg_gebouw g
                         WHERE t.fac_srtnotificatie_key = 18 -- MLDAFM/alleen?
                               AND t.fac_tracking_datum BETWEEN TRUNC (
                                                                   ADD_MONTHS (
                                                                      SYSDATE,
                                                                      -12),
                                                                   'mm')
                                                            AND  TRUNC (
                                                                    SYSDATE,
                                                                    'mm')
                               AND t.fac_tracking_refkey = m.mld_melding_key
                               AND m.mld_stdmelding_key = sm.mld_stdmelding_key
                               AND sm.mld_ins_discipline_key IN (47, 342) -- S-Beveiligingsinstallaties/Beveiliging toegang
                               AND m.mld_alg_onroerendgoed_keys =
                                     aog.alg_onroerendgoed_keys
                               AND aog.alg_gebouw_key = g.alg_gebouw_key(+)
                        --UNION ALL
                        --SELECT t.fac_tracking_datum mldafm, g.alg_gebouw_key, g.alg_gebouw_code,
                        --       0 kl_overall,
                        --       0 st_beveiliging, 1 st_catering, 0 st_klimaat, 0 st_schoonmaak,
                        --       0 kl_beveiliging, 0 kl_catering, 0 kl_klimaat, 0 kl_schoonmaak
                        --  FROM fac_tracking t, mld_melding m, mld_stdmelding sm, alg_v_allonroerendgoed aog, alg_gebouw g
                        -- WHERE t.fac_srtnotificatie_key = 18 -- MLDAFM/alleen?
                        --       AND t.fac_tracking_datum BETWEEN TRUNC (ADD_MONTHS (SYSDATE, -12), 'mm') AND TRUNC (SYSDATE, 'mm')
                        --       AND t.fac_tracking_refkey = m.mld_melding_key
                        --       AND m.mld_stdmelding_key = sm.mld_stdmelding_key
                        --       AND sm.mld_ins_discipline_key = 33 -- S-Catering
                        --       AND m.mld_alg_onroerendgoed_keys = aog.alg_onroerendgoed_keys
                        --       AND aog.alg_gebouw_key = g.alg_gebouw_key(+)
                        UNION ALL
                        SELECT t.fac_tracking_datum mldafm,
                               g.alg_gebouw_key,
                               g.alg_gebouw_code,
                               0 kl_overall,
                               0 st_beveiliging,
                               1 st_klimaat,
                               0 st_schoonmaak,
                               0 kl_beveiliging,
                               0 kl_catering,
                               0 kl_klimaat,
                               0 kl_schoonmaak
                          FROM fac_tracking t,
                               mld_melding m,
                               mld_stdmelding sm,
                               alg_v_allonroerendgoed aog,
                               alg_gebouw g
                         WHERE t.fac_srtnotificatie_key = 18 -- MLDAFM/alleen?
                               AND t.fac_tracking_datum BETWEEN TRUNC (
                                                                   ADD_MONTHS (
                                                                      SYSDATE,
                                                                      -12),
                                                                   'mm')
                                                            AND  TRUNC (
                                                                    SYSDATE,
                                                                    'mm')
                               AND t.fac_tracking_refkey = m.mld_melding_key
                               AND m.mld_stdmelding_key = sm.mld_stdmelding_key
                               AND sm.mld_ins_discipline_key = 315 -- S-Klimaatinstallaties
                               AND m.mld_alg_onroerendgoed_keys =
                                     aog.alg_onroerendgoed_keys
                               AND aog.alg_gebouw_key = g.alg_gebouw_key(+)
                        UNION ALL
                        SELECT t.fac_tracking_datum mldafm,
                               g.alg_gebouw_key,
                               g.alg_gebouw_code,
                               0 kl_overall,
                               0 st_beveiliging,
                               0 st_klimaat,
                               1 st_schoonmaak,
                               0 kl_beveiliging,
                               0 kl_catering,
                               0 kl_klimaat,
                               0 kl_schoonmaak
                          FROM fac_tracking t,
                               mld_melding m,
                               mld_stdmelding sm,
                               alg_v_allonroerendgoed aog,
                               alg_gebouw g
                         WHERE t.fac_srtnotificatie_key = 18 -- MLDAFM/alleen?
                               AND t.fac_tracking_datum BETWEEN TRUNC (
                                                                   ADD_MONTHS (
                                                                      SYSDATE,
                                                                      -12),
                                                                   'mm')
                                                            AND  TRUNC (
                                                                    SYSDATE,
                                                                    'mm')
                               AND t.fac_tracking_refkey = m.mld_melding_key
                               AND m.mld_stdmelding_key = sm.mld_stdmelding_key
                               AND sm.mld_ins_discipline_key = 36 -- S-Schoonmaak
                               AND m.mld_alg_onroerendgoed_keys =
                                     aog.alg_onroerendgoed_keys
                               AND aog.alg_gebouw_key = g.alg_gebouw_key(+)
                        UNION ALL
                        SELECT t.fac_tracking_datum mldafm,
                               g.alg_gebouw_key,
                               g.alg_gebouw_code,
                               0 kl_overall,
                               0 st_beveiliging,
                               0 st_klimaat,
                               0 st_schoonmaak,
                               1 kl_beveiliging,
                               0 kl_catering,
                               0 kl_klimaat,
                               0 kl_schoonmaak
                          FROM fac_tracking t,
                               mld_melding m,
                               mld_stdmelding sm,
                               alg_v_allonroerendgoed aog,
                               alg_gebouw g
                         WHERE t.fac_srtnotificatie_key = 18 -- MLDAFM/alleen?
                               AND t.fac_tracking_datum BETWEEN TRUNC (
                                                                   ADD_MONTHS (
                                                                      SYSDATE,
                                                                      -12),
                                                                   'mm')
                                                            AND  TRUNC (
                                                                    SYSDATE,
                                                                    'mm')
                               AND t.fac_tracking_refkey = m.mld_melding_key
                               AND m.mld_stdmelding_key = sm.mld_stdmelding_key
                               AND sm.mld_ins_discipline_key IN (64, 340, 74) -- K-Beveiliging/Beveiliging toegang/Beveiligingsinstallaties
                               AND m.mld_alg_onroerendgoed_keys =
                                     aog.alg_onroerendgoed_keys
                               AND aog.alg_gebouw_key = g.alg_gebouw_key(+)
                        UNION ALL
                        SELECT t.fac_tracking_datum mldafm,
                               g.alg_gebouw_key,
                               g.alg_gebouw_code,
                               0 kl_overall,
                               0 st_beveiliging,
                               0 st_klimaat,
                               0 st_schoonmaak,
                               0 kl_beveiliging,
                               1 kl_catering,
                               0 kl_klimaat,
                               0 kl_schoonmaak
                          FROM fac_tracking t,
                               mld_melding m,
                               mld_stdmelding sm,
                               alg_v_allonroerendgoed aog,
                               alg_gebouw g
                         WHERE t.fac_srtnotificatie_key = 18 -- MLDAFM/alleen?
                               AND t.fac_tracking_datum BETWEEN TRUNC (
                                                                   ADD_MONTHS (
                                                                      SYSDATE,
                                                                      -12),
                                                                   'mm')
                                                            AND  TRUNC (
                                                                    SYSDATE,
                                                                    'mm')
                               AND t.fac_tracking_refkey = m.mld_melding_key
                               AND m.mld_stdmelding_key = sm.mld_stdmelding_key
                               AND sm.mld_ins_discipline_key = 131 -- K-Catering
                               AND m.mld_alg_onroerendgoed_keys =
                                     aog.alg_onroerendgoed_keys
                               AND aog.alg_gebouw_key = g.alg_gebouw_key(+)
                        UNION ALL
                        SELECT t.fac_tracking_datum mldafm,
                               g.alg_gebouw_key,
                               g.alg_gebouw_code,
                               0 kl_overall,
                               0 st_beveiliging,
                               0 st_klimaat,
                               0 st_schoonmaak,
                               0 kl_beveiliging,
                               0 kl_catering,
                               1 kl_klimaat,
                               0 kl_schoonmaak
                          FROM fac_tracking t,
                               mld_melding m,
                               mld_stdmelding sm,
                               alg_v_allonroerendgoed aog,
                               alg_gebouw g
                         WHERE t.fac_srtnotificatie_key = 18 -- MLDAFM/alleen?
                               AND t.fac_tracking_datum BETWEEN TRUNC (
                                                                   ADD_MONTHS (
                                                                      SYSDATE,
                                                                      -12),
                                                                   'mm')
                                                            AND  TRUNC (
                                                                    SYSDATE,
                                                                    'mm')
                               AND t.fac_tracking_refkey = m.mld_melding_key
                               AND m.mld_stdmelding_key = sm.mld_stdmelding_key
                               AND sm.mld_ins_discipline_key = 330 -- K-Klimaatinstallaties
                               AND m.mld_alg_onroerendgoed_keys =
                                     aog.alg_onroerendgoed_keys
                               AND aog.alg_gebouw_key = g.alg_gebouw_key(+)
                        UNION ALL
                        SELECT t.fac_tracking_datum mldafm,
                               g.alg_gebouw_key,
                               g.alg_gebouw_code,
                               0 kl_overall,
                               0 st_beveiliging,
                               0 st_klimaat,
                               0 st_schoonmaak,
                               0 kl_beveiliging,
                               0 kl_catering,
                               0 kl_klimaat,
                               1 kl_schoonmaak
                          FROM fac_tracking t,
                               mld_melding m,
                               mld_stdmelding sm,
                               alg_v_allonroerendgoed aog,
                               alg_gebouw g
                         WHERE t.fac_srtnotificatie_key = 18 -- MLDAFM/alleen?
                               AND t.fac_tracking_datum BETWEEN TRUNC (
                                                                   ADD_MONTHS (
                                                                      SYSDATE,
                                                                      -12),
                                                                   'mm')
                                                            AND  TRUNC (
                                                                    SYSDATE,
                                                                    'mm')
                               AND t.fac_tracking_refkey = m.mld_melding_key
                               AND m.mld_stdmelding_key = sm.mld_stdmelding_key
                               AND sm.mld_ins_discipline_key = 63 -- K-Schoonmaak
                               AND m.mld_alg_onroerendgoed_keys =
                                     aog.alg_onroerendgoed_keys
                               AND aog.alg_gebouw_key = g.alg_gebouw_key(+)) x
              GROUP BY TO_CHAR (x.mldafm, 'yyyy-mm'),
                       x.alg_gebouw_key,
                       x.alg_gebouw_code) x
          LEFT JOIN
             (SELECT ok.alg_onrgoed_key, ud.fac_usrdata_omschr
                FROM alg_v_aanwezigonrgoedkenmerk ok,
                     fac_v_aanwezigusrdata ud
               WHERE ok.alg_kenmerk_key = 1420                        -- Kavel
                     AND fac.safe_to_number (ok.alg_onrgoedkenmerk_waarde) =
                           ud.fac_usrdata_key) k
          ON x.alg_gebouw_key = k.alg_onrgoed_key;


CREATE OR REPLACE FORCE VIEW uwva_v_rap_kl_geb
(
   fclt_f_maand,
   fclt_f_kavel,
   fclt_f_gebouw,
   aantal
)
AS
   SELECT x.maand,
          x.kavel,
          x.gebouw,
          x.kl_overall
     FROM t_uwva_v_st_kl_geb x;

CREATE OR REPLACE FORCE VIEW uwva_v_rap_st_kl_geb
(
   fclt_f_maand,
   fclt_f_kavel,
   fclt_f_gebouw,
   st_beveiliging,
   st_klimaat,
   st_schoonmaak,
   kl_beveiliging,
   kl_catering,
   kl_klimaat,
   kl_schoonmaak
)
AS
   SELECT x.maand,
          x.kavel,
          x.gebouw,
          x.st_beveiliging,
          x.st_klimaat,
          x.st_schoonmaak,
          x.kl_beveiliging,
          x.kl_catering,
          x.kl_klimaat,
          x.kl_schoonmaak
     FROM t_uwva_v_st_kl_geb x;

-- UWVA#33705 rap tbv bijlage inspectiekenmerken

CREATE OR REPLACE VIEW uwva_v_rap_inspect_file
(
   fclt_f_object,
   fclt_f_controle,
   controle_datum,
   fclt_f_locatie,
   fclt_f_gebouw,
   kenmerksoort_key,
   kenmerksoort,
   kenmerk_key,
   fclt_f_verplicht,
   controle_key,
   fclt_f_bijlagen,
   aantal_bijlagen
)
AS
   SELECT d.ins_deel_omschrijving Object,
          c.ins_srtcontrole_omschrijving Controle,
          ins_deelsrtcontrole_datum Controle_datum,
          l.alg_locatie_omschrijving locatie,
          aog.alg_gebouw_naam gebouw,
          t.ins_srtkenmerk_key Kenmerksoort_key,
          t.ins_srtkenmerk_omschrijving Kenmerksoort,
          k.ins_kenmerk_key Kenmkerk_key,
          DECODE (k.ins_kenmerk_verplicht, 1, 'Ja', 'Nee') Verplicht,
          dsc.ins_deelsrtcontrole_key controle_key,
          'Nee' Bijlagen,
          0 Aantal_bijlagen
     FROM ins_srtkenmerk t,
          ins_kenmerk k,
          ins_srtcontrole c,
          ins_deelsrtcontrole dsc,
          ins_deel d,
          alg_v_allonrgoed_gegevens aog,
          alg_locatie l
    WHERE     k.ins_srtkenmerk_key = t.ins_srtkenmerk_key
          AND k.ins_kenmerk_verwijder IS NULL
          AND t.ins_srtkenmerk_verwijder IS NULL
          AND k.ins_kenmerk_niveau = 'C'
          AND k.ins_srtinstallatie_key = c.ins_srtcontrole_key
          AND (t.ins_srtkenmerk_kenmerktype = 'M'
               OR t.ins_srtkenmerk_kenmerktype = 'F')
          AND dsc.ins_srtcontrole_key = c.ins_srtcontrole_key
          AND d.ins_deel_key = dsc.ins_deel_key
          AND d.ins_deel_verwijder IS NULL
          AND ins_alg_ruimte_type = 'R'
          AND aog.alg_ruimte_key = d.ins_alg_ruimte_key
          AND l.alg_locatie_key = aog.alg_locatie_key
          AND dsc.ins_deelsrtcontrole_key NOT IN
                   (SELECT ins_deelsrtcontrole_key
                      FROM ins_deelsrtcontrole dsc, uwva_flexfiles uf
                     WHERE uf.object_key = dsc.ins_deelsrtcontrole_key)
   UNION ALL
     SELECT d.ins_deel_omschrijving,
            c.ins_srtcontrole_omschrijving,
            ins_deelsrtcontrole_datum,
            l.alg_locatie_omschrijving,
            aog.alg_gebouw_naam,
            t.ins_srtkenmerk_key,
            t.ins_srtkenmerk_omschrijving,
            k.ins_kenmerk_key,
            DECODE (k.ins_kenmerk_verplicht, 1, 'Ja', 'Nee'),
            dsc.ins_deelsrtcontrole_key,
            'Ja',
            COUNT (UF.FILE_NAME)
       FROM ins_srtkenmerk t,
            ins_kenmerk k,
            ins_srtcontrole c,
            ins_deelsrtcontrole dsc,
            ins_deel d,
            uwva_flexfiles uf,
            alg_v_allonrgoed_gegevens aog,
            alg_locatie l
      WHERE     k.ins_srtkenmerk_key = t.ins_srtkenmerk_key
            AND k.ins_kenmerk_verwijder IS NULL
            AND t.ins_srtkenmerk_verwijder IS NULL
            AND k.ins_kenmerk_niveau = 'C'
            AND k.ins_srtinstallatie_key = c.ins_srtcontrole_key
            AND (t.ins_srtkenmerk_kenmerktype = 'M'
                 OR t.ins_srtkenmerk_kenmerktype = 'F')
            AND dsc.ins_srtcontrole_key = c.ins_srtcontrole_key
            AND d.ins_deel_key = dsc.ins_deel_key
            AND d.ins_deel_verwijder IS NULL
            AND uf.object_key = dsc.ins_deelsrtcontrole_key
            AND ins_alg_ruimte_type = 'R'
            AND aog.alg_ruimte_key = d.ins_alg_ruimte_key
            AND l.alg_locatie_key = aog.alg_locatie_key
   GROUP BY dsc.ins_deelsrtcontrole_key,
            d.ins_deel_omschrijving,
            c.ins_srtcontrole_omschrijving,
            ins_deelsrtcontrole_datum,
            aog.alg_gebouw_naam,
            l.alg_locatie_omschrijving,
            t.ins_srtkenmerk_key,
            t.ins_srtkenmerk_omschrijving,
            k.ins_kenmerk_key,
            k.ins_kenmerk_verplicht;

-- UWVA#35516 rapport met inzicht vastgepinde tabs per gebruiker

CREATE OR REPLACE VIEW uwva_v_rap_menutab
(
   perslid_key,
   naam,
   login,
   last_login,
   url,
   zoeken,
   module
)
AS
   SELECT prs_perslid_key,
          prs_perslid_naam_full,
          prs_perslid_oslogin,
          prs_perslid_login,
          url,
          CASE
             WHEN    LOWER (url) LIKE '%search%'
                  OR LOWER (url) LIKE '%phonebook%'
                  OR LOWER (url) LIKE '%overview%'
                  OR LOWER (url) LIKE '%fe_menu%'
             THEN
                'Ja'
             ELSE
                'Nee'
          END
             AS zoeken,
          CASE
             WHEN LOWER (url) LIKE '%/help%' THEN 'Help'
             WHEN LOWER (url) LIKE '%/mld_%' THEN 'Meldingen'
             WHEN LOWER (url) LIKE '%/bes_%' THEN 'Bestellingen'
             WHEN LOWER (url) LIKE '%/res_%' THEN 'Reserveringen'
             WHEN LOWER (url) LIKE '%deel%' THEN 'Objecten'
             WHEN LOWER (url) LIKE '%/ins_%' THEN 'Objecten'
             WHEN LOWER (url) LIKE '%phone%' THEN 'Telefoonboek'
             WHEN LOWER (url) LIKE '%/prs_%' THEN 'Organisatiebeheer'
             WHEN LOWER (url) LIKE '%/bez_%' THEN 'Bezoekers'
             WHEN LOWER (url) LIKE '%/alg_%' THEN 'Ruimtebeheer'
             WHEN LOWER (url) LIKE '%/cnt_%' THEN 'Contracten'
             WHEN LOWER (url) LIKE '%portal%' THEN 'Portaal'
             WHEN LOWER (url) LIKE '%cad%' THEN 'Graphics'
             WHEN LOWER (url) LIKE '%/kpn_%' THEN 'Kostenplaatsen'
             WHEN LOWER (url) LIKE '%fac_user%.asp%' THEN 'Gebruiker info'
             WHEN LOWER (url) LIKE '%prodsearch%' THEN 'Zoek&Bestel'
             WHEN LOWER (url) LIKE '%fac_usrrap%' THEN 'Rapporten'
             WHEN LOWER (url) LIKE '%report%' THEN 'Rapporten'
             WHEN LOWER (url) LIKE '%/fin_%' THEN 'Facturen'
             WHEN LOWER (url) LIKE '%/sle_%' THEN 'Sleutels'
             WHEN LOWER (url) LIKE '%fiat%' THEN 'Fiatteren'
             ELSE 'Overig'
          END
             AS module
     FROM (SELECT prs_perslid_key,
                  prs_perslid_naam_full,
                  prs_perslid_oslogin,
                  prs_perslid_login,
                  REPLACE (
                     REPLACE (REPLACE (optie, '"autoopen":[', ''),
                              '{"u":"',
                              ''),
                     '"',
                     '')
                     url
             FROM (  SELECT DISTINCT
                            p.prs_perslid_key,
                            prs_perslid_naam_full,
                            prs_perslid_oslogin,
                            prs_perslid_login,
                            TRIM (REGEXP_SUBSTR (p.prs_perslid_options,
                                                 '[^,]+',
                                                 1,
                                                 levels.COLUMN_VALUE))
                               AS optie
                       FROM prs_perslid p,
                            prs_v_perslid_fullnames pf,
                            TABLE(CAST (
                                     MULTISET(    SELECT LEVEL
                                                    FROM DUAL
                                              CONNECT BY LEVEL <=
                                                            LENGTH(REGEXP_REPLACE (
                                                                      p.prs_perslid_options,
                                                                      '[^,]+'))
                                                            + 1) AS SYS.odcinumberlist)) levels
                      WHERE prs_perslid_options LIKE '%{"u"%'
                            AND p.prs_perslid_key = pf.prs_perslid_key
                   ORDER BY prs_perslid_key)
            WHERE optie LIKE '%{"u"%')
    WHERE url NOT LIKE '%welcome%';

--- UWVA#36478 controlerapport met leasecontracten en gebruikersovereenkomsten waar geen auto aangekoppeld is

CREATE OR REPLACE VIEW UWVA_V_RAP_GOVK_LEASE
(
   CONTRACTNUMMER,
   INGANGSDATUM,
   EINDDATUM,
   CONTRACT_OMSCHR
)
AS
   SELECT c.cnt_contract_nummer_intern,
          cnt_contract_looptijd_van,
          cnt_contract_looptijd_tot,
          c.cnt_contract_omschrijving
     FROM cnt_contract c
    WHERE C.INS_DISCIPLINE_KEY IN (426, 425) --- gebruikersovereenkomst en leasecontract
          AND C.CNT_CONTRACT_VERWIJDER IS NULL
          AND c.cnt_contract_key NOT IN
                   (SELECT o.cnt_contract_key
                      FROM CNT_CONTRACT_OBJECT o
                     WHERE O.CNT_INS_SRTDEEL_KEY = 258658);

-- UWVA#36044 Overzicht om FIP voor leasecontracten mee te genereren

CREATE OR REPLACE FORCE VIEW UWVA_V_RAP_FIP_LEASE_CONTRACT
(
   CONTRACTNR,
   EXTERNNR,
   CONTRACTSOORT,
   BESCHRIJVING,
   MANTELNR,
   OMSCHRIJVING,
   VERSIE,
   DIENST,
   EIGENAAR_AFD,
   EIGENAAR_LOGIN,
   BEHEERDER_LOGIN,
   OPMERKING,
   INGANGSDATUM,
   RAPPELDATUM,
   OPZEGDATUM,
   EINDDATUM,
   BEDRIJFNAAM,
   CONTACTNAAM,
   KOSTENPLAATSCODE,
   CONTRACTBEDRAG,
   TERMIJNBEDRAG,
   UURTARIEF,
   KORTING,
   LOCATIEGEBOUW,
   VERLENGEN,
   SOORT_AUTO,
   AANTAL_KM_JAAR,
   KM_TOTAAL,
   KM_MAXIMAAL,
   LOOPTIJD_MAXIMAAL,
   BRANDSTOFKOSTEN,
   LEASETARIEF,
   KENMERK8,
   KENMERK9,
   KENMERK10,
   KENMERK11,
   KENMERK12,
   KENMERK13,
   KENMERK14,
   KENMERK15,
   KENMERK16,
   KENMERK17,
   KENMERK18,
   KENMERK19,
   KENMERK20,
   KENMERK21,
   KENMERK22,
   KENMERK23,
   KENMERK24,
   KENMERK25
)
AS
   SELECT DISTINCT
          c.cnt_contract_nummer_intern contractnr,
          c.cnt_contract_nummer externnr,
          d.ins_discipline_omschrijving contractsoort,
          c.cnt_contract_omschrijving beschrijving,
          '' mantelnr,
          '' omschrijving,
          c.cnt_contract_versie versie,
          '' dienst,
          a.prs_afdeling_upper eigenaar_afd,
          '' eigenaar_login,
          p.prs_perslid_oslogin beheerder_login,
          c.cnt_contract_opmerking opmerking,
          TO_CHAR (c.cnt_contract_looptijd_van, 'dd-mm-yyyy') ingangsdatum,
          TO_CHAR (
             ADD_MONTHS (c.cnt_contract_looptijd_tot,
                         - (rt.cnt_termijn_aantal)),
             'dd-mm-yyyy')
             rappeldatum,
          TO_CHAR (
             ADD_MONTHS (c.cnt_contract_looptijd_tot,
                         - (ot.cnt_termijn_aantal)),
             'dd-mm-yyyy')
             opzegdatum,
          TO_CHAR (c.cnt_contract_looptijd_tot, 'dd-mm-yyyy') einddatum,
          b.prs_bedrijf_naam bedrijfnaam,
          '' contactnaam,
          k.prs_kostenplaats_upper kostenplaatscode,
          c.cnt_contract_kosten contractbedrag,
          c.cnt_contract_termijnkosten termijnbedrag,
          c.cnt_contract_uurloon uurtarief,
          c.cnt_contract_korting korting,
          '' locatiegebouw,
          c.cnt_contract_verlenging verlengen,
          soort_auto.fac_usrdata_code soort_auto,
          aantal_km_jr.cnt_kenmerkcontract_waarde aantalkmperjaar,
          km_tot.cnt_kenmerkcontract_waarde kmtotaal,
          km_max.cnt_kenmerkcontract_waarde kmmaximaal,
          looptijd_max.cnt_kenmerkcontract_waarde looptijdmaximaal,
          brandstofkst.cnt_kenmerkcontract_waarde brandstofkosten,
          lease_tar.cnt_kenmerkcontract_waarde leasetarief,
          '' kenmerk8,
          '' kenmerk9,
          '' kenmerk10,
          '' kenmerk11,
          '' kenmerk12,
          '' kenmerk13,
          '' kenmerk14,
          '' kenmerk15,
          '' kenmerk16,
          '' kenmerk17,
          '' kenmerk18,
          '' kenmerk19,
          '' kenmerk20,
          '' kenmerk21,
          '' kenmerk22,
          '' kenmerk23,
          '' kenmerk24,
          '' kenmerk25
     FROM cnt_contract c,
          ins_tab_discipline d,
          prs_afdeling a,
          prs_perslid p,
          prs_bedrijf b,
          prs_kostenplaats k,
          (SELECT kc.*, kw.*
             FROM cnt_kenmerkcontract kc, fac_usrdata kw
            WHERE kc.cnt_kenmerk_key = 1053   -- kenmerk_key 1053 = Soort auto
                  AND kc.cnt_kenmerkcontract_waarde = kw.fac_usrdata_key)
          soort_auto,
          (SELECT kc.*
             FROM cnt_kenmerkcontract kc
            WHERE kc.cnt_kenmerk_key = 1041) aantal_km_jr, -- kenmerk_key 1041 = Aantal km per jaar
          (SELECT kc.*
             FROM cnt_kenmerkcontract kc
            WHERE kc.cnt_kenmerk_key = 1042) brandstofkst, -- kenmerk_key 1042 = Brandstofkosten
          (SELECT kc.*
             FROM cnt_kenmerkcontract kc
            WHERE kc.cnt_kenmerk_key = 1043) datum_uit, -- kenmerk_key 1043 = Datum uit
          (SELECT kc.*
             FROM cnt_kenmerkcontract kc
            WHERE kc.cnt_kenmerk_key = 1045) km_max, -- kenmerk_key 1045 = Km maximaal
          (SELECT kc.*
             FROM cnt_kenmerkcontract kc
            WHERE kc.cnt_kenmerk_key = 1046) km_tot, -- kenmerk_key 1046 = Km totaal
          (SELECT kc.*
             FROM cnt_kenmerkcontract kc
            WHERE kc.cnt_kenmerk_key = 1048) lease_tar, -- kenmerk_key 1048 = Leasetarief
          (SELECT kc.*
             FROM cnt_kenmerkcontract kc
            WHERE kc.cnt_kenmerk_key = 1049) looptijd_max, -- kenmerk_key 1049 = Looptijd maximaal
          cnt_termijn rt,
          cnt_termijn ot
    WHERE     c.ins_discipline_key = d.ins_discipline_key
          AND c.ins_discipline_key = 425               -- 425 = lease contract
          AND c.prs_afdeling_key_eig = a.prs_afdeling_key
          AND c.prs_perslid_key_beh = p.prs_perslid_key
          AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key
          AND c.prs_kostenplaats_key = k.prs_kostenplaats_key
          AND c.cnt_contract_key = soort_auto.cnt_contract_key(+)
          AND c.cnt_contract_key = aantal_km_jr.cnt_contract_key(+)
          AND c.cnt_contract_key = datum_uit.cnt_contract_key(+)
          AND c.cnt_contract_key = km_tot.cnt_contract_key(+)
          AND c.cnt_contract_key = km_max.cnt_contract_key(+)
          AND c.cnt_contract_key = looptijd_max.cnt_contract_key(+)
          AND c.cnt_contract_key = brandstofkst.cnt_contract_key(+)
          AND c.cnt_contract_key = lease_tar.cnt_contract_key(+)
          AND ot.cnt_termijn_key = c.cnt_contract_opzegtermijn
          AND rt.cnt_termijn_key = c.cnt_contract_rappeltermijn
          AND C.CNT_CONTRACT_VERWIJDER IS NULL
          AND TRUNC (C.CNT_CONTRACT_LOOPTIJD_TOT) >= TRUNC (SYSDATE)
          AND C.CNT_CONTRACT_STATUS = 0;

CREATE OR REPLACE VIEW UWVA_V_ORG_STRUCTUUR
(
   DIVISIE,
   DIVISIE_OMSCH,
   DIVISIE_KP,
   AFD_NIV2,
   AFD_NIV2_OMSCH,
   AFD_NIV2_KP,
   AFD_NIV3,
   AFD_NIV3_OMSCH,
   AFD_NIV3_KP,
   AFD_NIV4,
   AFD_NIV4_OMSCH,
   AFD_NIV4_KP,
   AFD_NIV5,
   AFD_NIV5_OMSCH,
   AFD_NIV5_KP
)
AS
   SELECT divisie.prs_afdeling_naam divisie,
          divisie.prs_afdeling_omschrijving divisie_omsch,
          divisie.prs_kostenplaats_nr kp_divisie,
          afd_niv2.prs_afdeling_naam afd_niv2,
          afd_niv2.prs_afdeling_omschrijving omsch_afd_niv2,
          afd_niv2.prs_kostenplaats_nr kp_afd_niv2,
          afd_niv3.prs_afdeling_naam afd_niv3,
          afd_niv3.prs_afdeling_omschrijving omsch_afd_niv3,
          afd_niv3.prs_kostenplaats_nr kp_afd_niv3,
          afd_niv4.prs_afdeling_naam afd_niv4,
          afd_niv4.prs_afdeling_omschrijving omsch_afd_niv4,
          afd_niv4.prs_kostenplaats_nr kp_afd_niv4,
          afd_niv5.prs_afdeling_naam afd_niv5,
          afd_niv5.prs_afdeling_omschrijving omsch_afd_niv5,
          afd_niv5.prs_kostenplaats_nr kp_afd_niv5
     FROM (SELECT prs_afdeling_key,
                  prs_afdeling_naam,
                  prs_afdeling_omschrijving,
                  k.prs_kostenplaats_nr,
                  k.prs_kostenplaats_omschrijving
             FROM prs_afdeling a, prs_kostenplaats k
            WHERE     prs_bedrijf_key = 1
                  AND prs_afdeling_verwijder IS NULL
                  AND a.prs_kostenplaats_key = k.prs_kostenplaats_key)
          divisie,
          (SELECT prs_afdeling_key,
                  prs_afdeling_naam,
                  prs_afdeling_parentkey,
                  prs_afdeling_omschrijving,
                  k.prs_kostenplaats_nr,
                  k.prs_kostenplaats_omschrijving
             FROM prs_afdeling a, prs_kostenplaats k
            WHERE prs_afdeling_verwijder IS NULL
                  AND a.prs_kostenplaats_key = k.prs_kostenplaats_key
                  AND prs_afdeling_parentkey IN
                           (SELECT prs_afdeling_key
                              FROM prs_afdeling
                             WHERE prs_bedrijf_key = 1
                                   AND prs_afdeling_verwijder IS NULL))
          afd_niv2,
          (SELECT prs_afdeling_key,
                  prs_afdeling_naam,
                  prs_afdeling_parentkey,
                  prs_afdeling_omschrijving,
                  k.prs_kostenplaats_nr,
                  k.prs_kostenplaats_omschrijving
             FROM prs_afdeling a, prs_kostenplaats k
            WHERE prs_afdeling_verwijder IS NULL
                  AND a.prs_kostenplaats_key = k.prs_kostenplaats_key
                  AND prs_afdeling_parentkey IN
                           (SELECT prs_afdeling_key
                              FROM prs_afdeling
                             WHERE prs_afdeling_verwijder IS NULL
                                   AND prs_afdeling_parentkey IN
                                            (SELECT prs_afdeling_key
                                               FROM prs_afdeling
                                              WHERE prs_bedrijf_key = 1
                                                    AND prs_afdeling_verwijder IS NULL)))
          afd_niv3,
          (SELECT prs_afdeling_key,
                  prs_afdeling_parentkey,
                  prs_afdeling_naam,
                  prs_afdeling_omschrijving,
                  k.prs_kostenplaats_nr,
                  k.prs_kostenplaats_omschrijving
             FROM prs_afdeling a, prs_kostenplaats k
            WHERE prs_afdeling_verwijder IS NULL
                  AND a.prs_kostenplaats_key = k.prs_kostenplaats_key
                  AND prs_afdeling_parentkey IN
                           (SELECT prs_afdeling_key
                              FROM prs_afdeling
                             WHERE prs_afdeling_verwijder IS NULL
                                   AND prs_afdeling_parentkey IN
                                            (SELECT prs_afdeling_key
                                               FROM prs_afdeling
                                              WHERE prs_afdeling_verwijder IS NULL
                                                    AND prs_afdeling_parentkey IN
                                                             (SELECT prs_afdeling_key
                                                                FROM prs_afdeling
                                                               WHERE prs_bedrijf_key =
                                                                        1
                                                                     AND prs_afdeling_verwijder IS NULL))))
          afd_niv4,
          (SELECT prs_afdeling_key,
                  prs_afdeling_parentkey,
                  prs_afdeling_naam,
                  prs_afdeling_omschrijving,
                  k.prs_kostenplaats_nr,
                  k.prs_kostenplaats_omschrijving
             FROM prs_afdeling a, prs_kostenplaats k
            WHERE prs_afdeling_verwijder IS NULL
                  AND a.prs_kostenplaats_key = k.prs_kostenplaats_key
                  AND prs_afdeling_parentkey IN
                           (SELECT prs_afdeling_key
                              FROM prs_afdeling
                             WHERE prs_afdeling_verwijder IS NULL
                                   AND prs_afdeling_parentkey IN
                                            (SELECT prs_afdeling_key
                                               FROM prs_afdeling
                                              WHERE prs_afdeling_verwijder IS NULL
                                                    AND prs_afdeling_parentkey IN
                                                             (SELECT prs_afdeling_key
                                                                FROM prs_afdeling
                                                               WHERE prs_afdeling_verwijder IS NULL
                                                                     AND prs_afdeling_parentkey IN
                                                                              (SELECT prs_afdeling_key
                                                                                 FROM prs_afdeling
                                                                                WHERE prs_bedrijf_key =
                                                                                         1
                                                                                      AND prs_afdeling_verwijder IS NULL)))))
          afd_niv5
    WHERE     afd_niv2.prs_afdeling_parentkey(+) = divisie.prs_afdeling_key
          AND afd_niv3.prs_afdeling_parentkey(+) = afd_niv2.prs_afdeling_key
          AND afd_niv4.prs_afdeling_parentkey(+) = afd_niv3.prs_afdeling_key
          AND afd_niv5.prs_afdeling_parentkey(+) = afd_niv4.prs_afdeling_key;

CREATE OR REPLACE VIEW UWVA_V_RAP_FACTUUR_WAGENP
(
   NR,
   FACTUURDATUM,
   UITVOERENDE,
   FACTUURNR,
   CONTRACTTYPE,
   KOSTENSOORT,
   OPDRACHTNR,
   BERIJDER,
   STATUS,
   BUDGETHOUDER,
   DIVISIE,
   KOSTENPLAATS,
   OMSCHRIJVING,
   SRT_FACTUURREGEL,
   REGELNR,
   EXCL_BTW,
   BTW,
   INCL_BTW
)
AS
SELECT DISTINCT
       f.fin_factuur_key nr,
       TRUNC (fin_factuur_datum) factuurdatum,
       b.prs_bedrijf_naam uitvoerende,
       f.fin_factuur_nr factuurnummer,
       d.ins_discipline_omschrijving TYPE,
       ks.prs_kostensoort_oms kostensoort,
       'C' || leasecontracten.cnt_contract_nummer_intern opdrachtnummer,
       gebruikersovk.berijder berijder,
       CASE f.fin_factuur_statuses_key
          WHEN 1 THEN 'Afgewezen'
          WHEN 2 THEN 'In behandeling'
          WHEN 3 THEN 'Onbekend'
          WHEN 4 THEN 'Onbekend'
          WHEN 5 THEN 'Onbekend'
          WHEN 6 THEN 'Akkoord'
          WHEN 7 THEN 'Verwerkt'
       END
          status,
       budgethouder.prs_perslid_naam_full budgethouder,
       divisie.divisie || ' ' || divisie.divisie_omsch divisie,
       kp.prs_kostenplaats_nr || ' ' || kp.prs_kostenplaats_omschrijving
          kostenplaats,
       fr.fin_factuurregel_omschrijving omschrijving,
       srt_fr.fac_usrdata_code || ' ' || srt_fr.fac_usrdata_omschr
          srt_factuurregel,
       regel.fin_kenmerkfactregel_waarde regelnummer,
       fr.fin_factuurregel_totaal excl_btw,
       btw.fin_btwtabelwaarde_perc btw_tarief,
       fr.fin_factuurregel_totaal + fin_factuurregel_btw
  FROM fin_factuur f,
       (SELECT *
          FROM cnt_contract
         WHERE ins_discipline_key = 425) leasecontracten,
       prs_bedrijf b,
       ins_tab_discipline d,
       prs_kostensoort ks,
       cnt_contract_object co,
       ins_deel auto,
       (SELECT x.*,
               DECODE (y.aantal,
                       NULL, NULL,
                       1, y.prs_perslid_naam_full,
                       'Meerdere berijders')
                  berijder
          FROM    (SELECT f.fin_factuur_key,
                          TRUNC (fin_factuur_datum) factuurdatum,
                          f.fin_factuur_nr factuurnummer,
                          'C' || leasecontracten.cnt_contract_nummer_intern
                             opdrachtnummer,
                          auto.ins_deel_key
                     FROM fin_factuur f,
                          (SELECT *
                             FROM cnt_contract
                            WHERE ins_discipline_key = 425) leasecontracten,
                          cnt_contract_object co,
                          ins_deel auto
                    WHERE f.cnt_contract_key =
                             leasecontracten.cnt_contract_key
                          AND leasecontracten.cnt_contract_key =
                                co.cnt_contract_key
                          AND co.cnt_ins_deel_key = auto.ins_deel_key) x
               LEFT JOIN
                  (  SELECT f.fin_factuur_key,
                            auto.ins_deel_key,
                            COUNT ( * ) aantal,
                            MAX (P.PRS_PERSLID_NAAM_FULL) PRS_PERSLID_NAAM_FULL
                       FROM fin_factuur f,
                            (SELECT *
                               FROM cnt_contract
                              WHERE ins_discipline_key = 425) leasecontracten,
                            cnt_contract_object co,
                            ins_deel auto,
                            (SELECT c.cnt_contract_key,
                                    o.cnt_ins_deel_key,
                                    C.CNT_PRS_PERSLID_KEY,
                                    cnt_contract_looptijd_van,
                                    cnt_contract_looptijd_tot
                               FROM cnt_contract c, cnt_contract_object o
                              WHERE ins_discipline_key = 426
                                    AND o.cnt_contract_key = c.cnt_contract_key)
                            gebruikersovk,
                            prs_v_perslid_fullnames_all p
                      WHERE f.cnt_contract_key =
                               leasecontracten.cnt_contract_key
                            AND leasecontracten.cnt_contract_key =
                                  co.cnt_contract_key
                            AND gebruikersovk.cnt_prs_perslid_key =
                                  p.prs_perslid_key
                            AND co.cnt_ins_deel_key = auto.ins_deel_key
                            AND auto.ins_deel_key =
                                  gebruikersovk.cnt_ins_deel_key(+)
                            AND (TRUNC (
                                    gebruikersovk.cnt_contract_looptijd_van) <=
                                    TRUNC (fin_factuur_datum)
                                 AND TRUNC (
                                       gebruikersovk.cnt_contract_looptijd_tot) >=
                                       TRUNC (fin_factuur_datum))
                   GROUP BY f.fin_factuur_key, auto.ins_deel_key) y
               ON x.ins_deel_key = y.ins_deel_key
                  AND x.fin_factuur_key = y.fin_factuur_key
         WHERE y.aantal IS NOT NULL) gebruikersovk,
       prs_kostenplaats kp,
       prs_v_perslid_fullnames_all budgethouder,
       fin_factuurregel fr,
       (SELECT km.*, fac_usrdata_omschr, fac_usrdata_code
          FROM fin_kenmerkfactregel km, fac_usrdata kw
         WHERE km.fin_kenmerk_key = 1
               AND km.fin_kenmerkfactregel_waarde = kw.fac_usrdata_key)
       srt_fr,
       (SELECT km.*
          FROM fin_kenmerkfactregel km
         WHERE km.fin_kenmerk_key = 2) regel,
       fin_btwtabelwaarde btw,
       (SELECT DISTINCT divisie, divisie_omsch, divisie_kp kpl
          FROM uwva_v_org_structuur org
        UNION ALL
        SELECT DISTINCT divisie, divisie_omsch, afd_niv2_kp kpl
          FROM uwva_v_org_structuur org
        UNION ALL
        SELECT DISTINCT divisie, divisie_omsch, afd_niv3_kp kpl
          FROM uwva_v_org_structuur org
        UNION ALL
        SELECT DISTINCT divisie, divisie_omsch, afd_niv4_kp kpl
          FROM uwva_v_org_structuur org
        UNION ALL
        SELECT DISTINCT divisie, divisie_omsch, afd_niv5_kp kpl
          FROM uwva_v_org_structuur org) divisie
 WHERE     f.cnt_contract_key = leasecontracten.cnt_contract_key
       AND leasecontracten.cnt_prs_bedrijf_key = b.prs_bedrijf_key(+)
       AND leasecontracten.ins_discipline_key = d.ins_discipline_key
       AND d.prs_kostensoort_key = ks.prs_kostensoort_key
       AND leasecontracten.cnt_contract_key = co.cnt_contract_key
       AND co.cnt_ins_deel_key = auto.ins_deel_key
       -- AND auto.ins_deel_key = gebruikersovk.cnt_ins_deel_key(+)
       AND f.fin_factuur_key = gebruikersovk.fin_factuur_key(+)
       AND leasecontracten.prs_kostenplaats_key = kp.prs_kostenplaats_key
       AND kp.prs_perslid_key = budgethouder.prs_perslid_key(+)
       AND fr.fin_factuur_key = f.fin_factuur_key
       AND srt_fr.fin_factuurregel_key(+) = fr.fin_factuurregel_key
       AND regel.fin_factuurregel_key(+) = fr.fin_factuurregel_key
       AND fr.fin_btwtabelwaarde_key = btw.fin_btwtabelwaarde_key
       AND kp.prs_kostenplaats_nr = divisie.kpl(+)
UNION ALL
SELECT DISTINCT
       f.fin_factuur_key nr,
       TRUNC (fin_factuur_datum) factuurdatum,
       '' uitvoerende,
       f.fin_factuur_nr factuurnummer,
       d.ins_discipline_omschrijving TYPE,
       ks.prs_kostensoort_oms kostensoort,
       'C' || gebruikersovereenkomst.cnt_contract_nummer_intern
          opdrachtnummer,
       p.prs_perslid_naam_full berijder,
       CASE f.fin_factuur_statuses_key
          WHEN 1 THEN 'Afgewezen'
          WHEN 2 THEN 'In behandeling'
          WHEN 3 THEN 'Onbekend'
          WHEN 4 THEN 'Onbekend'
          WHEN 5 THEN 'Onbekend'
          WHEN 6 THEN 'Akkoord'
          WHEN 7 THEN 'Verwerkt'
       END
          status,
       budgethouder.prs_perslid_naam_full budgethouder,
       divisie.divisie || ' ' || divisie.divisie_omsch divisie,
       kp.prs_kostenplaats_nr || ' ' || kp.prs_kostenplaats_omschrijving
          kostenplaats,
       fr.fin_factuurregel_omschrijving omschrijving,
       srt_fr.fac_usrdata_code || ' ' || srt_fr.fac_usrdata_omschr
          srt_factuurregel,
       regel.fin_kenmerkfactregel_waarde regelnummer,
       fr.fin_factuurregel_totaal excl_btw,
       btw.fin_btwtabelwaarde_perc btw_tarief,
       fr.fin_factuurregel_totaal + fin_factuurregel_btw
  FROM fin_factuur f,
       (SELECT *
          FROM cnt_contract
         WHERE ins_discipline_key = 426) gebruikersovereenkomst,
       ins_tab_discipline d,
       prs_kostensoort ks,
       prs_v_perslid_fullnames_all p,
       cnt_contract_object co,
       ins_deel auto,
       prs_kostenplaats kp,
       prs_v_perslid_fullnames_all budgethouder,
       fin_factuurregel fr,
       (SELECT km.*, fac_usrdata_omschr, fac_usrdata_code
          FROM fin_kenmerkfactregel km, fac_usrdata kw
         WHERE km.fin_kenmerk_key = 1
               AND km.fin_kenmerkfactregel_waarde = kw.fac_usrdata_key)
       srt_fr,
       (SELECT km.*
          FROM fin_kenmerkfactregel km
         WHERE km.fin_kenmerk_key = 2) regel,
       fin_btwtabelwaarde btw,
       (SELECT DISTINCT divisie, divisie_omsch, divisie_kp kpl
          FROM uwva_v_org_structuur org
        UNION ALL
        SELECT DISTINCT divisie, divisie_omsch, afd_niv2_kp kpl
          FROM uwva_v_org_structuur org
        UNION ALL
        SELECT DISTINCT divisie, divisie_omsch, afd_niv3_kp kpl
          FROM uwva_v_org_structuur org
        UNION ALL
        SELECT DISTINCT divisie, divisie_omsch, afd_niv4_kp kpl
          FROM uwva_v_org_structuur org
        UNION ALL
        SELECT DISTINCT divisie, divisie_omsch, afd_niv5_kp kpl
          FROM uwva_v_org_structuur org) divisie
 WHERE     f.cnt_contract_key = gebruikersovereenkomst.cnt_contract_key
       AND gebruikersovereenkomst.cnt_prs_perslid_key = p.prs_perslid_key(+)
       AND gebruikersovereenkomst.ins_discipline_key = d.ins_discipline_key
       AND d.prs_kostensoort_key = ks.prs_kostensoort_key
       AND gebruikersovereenkomst.cnt_contract_key = co.cnt_contract_key
       AND co.cnt_ins_deel_key = auto.ins_deel_key
       AND gebruikersovereenkomst.prs_kostenplaats_key =
             kp.prs_kostenplaats_key
       AND kp.prs_perslid_key = budgethouder.prs_perslid_key(+)
       AND fr.fin_factuur_key = f.fin_factuur_key
       AND regel.fin_factuurregel_key(+) = fr.fin_factuurregel_key
       AND srt_fr.fin_factuurregel_key(+) = fr.fin_factuurregel_key
       AND fr.fin_btwtabelwaarde_key = btw.fin_btwtabelwaarde_key
       AND kp.prs_kostenplaats_nr = divisie.kpl(+);

-- UWVA#38333 personen op vervallen werkplekken
CREATE OR REPLACE VIEW uwva_v_rap_prs_vervallenwp
(
   prs_perslid_key,
   volledige_naam,
   naam,
   voornaam,
   login,
   email,
   werkplek,
   locatie_code,
   locatie_omschrijving,
   gebouw_code,
   gebouw_omschrijving,
   verdieping_code,
   verdieping_omschrijving,
   ruimte_nr,
   ruimte_omschrijving,
   werkplek_volgnr
)
AS
   SELECT p.prs_perslid_key,
          pf.prs_perslid_naam_full,
          prs_perslid_naam,
          prs_perslid_voornaam,
          prs_perslid_oslogin,
          prs_perslid_email,
          l.alg_locatie_code || '-' || aog.alg_plaatsaanduiding plaats,
          l.alg_locatie_code,
          l.alg_locatie_omschrijving,
          aog.alg_gebouw_code,
          aog.alg_gebouw_naam,
          aog.alg_verdieping_code,
          alg_verdieping_omschrijving,
          alg_ruimte_nr,
          alg_ruimte_omschrijving,
          prs_perslidwerkplek_volgnr
     FROM prs_perslid p,
          prs_perslidwerkplek pw,
          prs_v_perslid_fullnames_all pf,
          prs_werkplek w,
          alg_v_allonrgoed_gegevens aog,
          alg_gebouw g,
          alg_locatie l
    WHERE p.prs_perslid_key = pw.prs_perslid_key
      AND p.prs_perslid_key = pf.prs_perslid_key
      AND pw.prs_werkplek_key = w.prs_werkplek_key
      AND w.prs_alg_ruimte_key = aog.alg_ruimte_key
      AND aog.alg_locatie_key = l.alg_locatie_key
      AND g.alg_gebouw_key = aog.alg_gebouw_key
      AND g.alg_gebouw_verwijder IS NULL
      AND g.alg_gebouw_vervaldatum < TRUNC (SYSDATE)
      AND p.prs_perslid_verwijder IS NULL;

create or replace view uwva_v_rap_werkplek_werkloc
(
   naam,
   personeelsnummer,
   account1,
   account2,
   type_medewerker,
   werklocatie,
   toon_in_gids,
   werkplek_volgnr,
   werkplek,
   locatie_werkplek,
   gebouw_werkplek,
   verdieping_werkplek,
   ruimtenr_werkplek
)
as
     select pf.prs_perslid_naam_full naam,
            p.prs_perslid_nr,
            p.prs_perslid_oslogin,
            p.prs_perslid_oslogin2,
            (select fac_usrdata_omschr
               from prs_kenmerklink, fac_usrdata
              where     prs_kenmerk_key = 1040
                    and fac_usrtab_key = 301
                    and prs_kenmerklink_waarde = to_char (fac_usrdata_key)
                    and prs_link_key = p.prs_perslid_key)
               type,
            wloc.werklocatie,
            p.prs_perslid_ingids,
            pwp.prs_perslidwerkplek_volgnr,
            l.alg_locatie_code || '-' || aog.alg_plaatsaanduiding,
            l.alg_locatie_code,
            aog.alg_gebouw_code,
            aog.alg_verdieping_code,
            aog.alg_ruimte_nr
       from prs_perslid p,
            prs_v_perslid_fullnames_all pf,
            (select p.prs_perslid_key,
                    l.alg_locatie_code || '-' || aog.alg_plaatsaanduiding
                       werklocatie
               from prs_perslid p, alg_v_allonrgoed_gegevens aog, alg_locatie l
              where     aog.alg_onroerendgoed_keys = p.alg_onroerendgoed_keys
                    and p.prs_perslid_verwijder is null
                    and p.alg_onroerendgoed_type != 'L'
                    and l.alg_locatie_key = aog.alg_locatie_key
             union
             select p.prs_perslid_key, l.alg_locatie_code
               from prs_perslid p, alg_locatie l
              where     p.alg_onroerendgoed_keys = l.alg_locatie_key
                    and p.prs_perslid_verwijder is null
                    and p.alg_onroerendgoed_type = 'L') wloc,
            alg_v_allonrgoed_gegevens aog,
            prs_perslidwerkplek pwp,
            prs_werkplek pw,
            alg_locatie l
      where     p.prs_perslid_key = pf.prs_perslid_key
            and wloc.prs_perslid_key(+) = p.prs_perslid_key
            and p.prs_perslid_key = pwp.prs_perslid_key
            and p.prs_perslid_verwijder is null
            and l.alg_locatie_key = aog.alg_locatie_key
            and pw.prs_werkplek_key = pwp.prs_werkplek_key
            and pw.prs_alg_ruimte_key = aog.alg_onroerendgoed_keys
            and l.alg_locatie_key = aog.alg_locatie_key;

CREATE OR REPLACE VIEW uwva_v_rap_cntauto_noscope
(
   cnt_contract_key,
   contractnummer,
   contractsoort,
   ingangsdatum,
   einddatum,
   kostenplaats
)
AS
   SELECT cnt_contract_key,
          COALESCE (cnt_contract_nummer_intern, TO_CHAR (cnt_contract_key))
             contractnummer,
          cd.ins_discipline_omschrijving contractsoort,
          cnt_contract_looptijd_van,
          cnt_contract_looptijd_tot,
          (SELECT NVL2 (
                     k.prs_kostenplaats_nr,
                     prs_kostenplaats_nr || ' '
                     || lcl.x ('prs_kostenplaats_omschrijving',
                               k.prs_kostenplaats_key,
                               k.prs_kostenplaats_omschrijving),
                     '')
             FROM prs_kostenplaats k
            WHERE prs_kostenplaats_key = c.prs_kostenplaats_key)
             kostenplaats
     FROM cnt_contract c, cnt_discipline cd
    WHERE     cnt_contract_verwijder IS NULL
          AND c.ins_discipline_key IN (425, 426)
          AND cd.ins_discipline_key = c.ins_discipline_key
          AND c.cnt_contract_key NOT IN
                   (SELECT cnt_contract_key
                      FROM cnt_contract_object
                     WHERE cnt_contract_object_verwijder IS NULL);

-- Rapportage views voor UWV TCS

-- Medewerkers
CREATE OR REPLACE VIEW UWVA_V_RAP_TCS_MDW
(
   FACILITOR_NR,
   VOORNAAM,
   TUSSENVOEGSEL,
   ACHTERNAAM,
   WERKLOCATIE,
   LAATSTE_MUTATIE
)
AS
   SELECT TO_CHAR (p.prs_perslid_key),
          p.prs_perslid_voornaam,
          p.prs_perslid_tussenvoegsel,
          p.prs_perslid_naam,
          wpg.alg_locatie_code,
          GREATEST (
             COALESCE ((SELECT MAX (t.fac_tracking_datum)
                          FROM fac_tracking t, fac_srtnotificatie sn
                         WHERE t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
                           AND sn.fac_srtnotificatie_xmlnode = 'perslid'
                           AND sn.fac_srtnotificatie_code NOT LIKE 'CUST%'
                           AND t.fac_tracking_refkey = p.prs_perslid_key),
                       p.prs_perslid_aanmaak),
             (SELECT MAX (fac_tracking_datum)
                FROM fac_tracking
               WHERE fac_srtnotificatie_key = 133                    -- INSNEW
                 AND fac_tracking_refkey = i.ins_deel_key
                 AND i.ins_alg_ruimte_key = p.prs_perslid_key))
     FROM ins_deel i,                                     -- Alle passen ooit!
          prs_perslid p,                             -- Alle medewerkers ooit!
          (SELECT * FROM prs_perslidwerkplek WHERE prs_perslidwerkplek_volgnr = 2) pw, -- HRM-WP
          prs_v_werkplek_gegevens wpg
    WHERE     i.ins_srtdeel_key = 259000                -- Toegangspas/Andover
          AND i.ins_alg_ruimte_type = 'P'                          -- Persoon!
          AND i.ins_alg_ruimte_key = p.prs_perslid_key
          AND p.prs_perslid_key = pw.prs_perslid_key(+)
          AND pw.prs_werkplek_key = wpg.prs_werkplek_key(+)
          AND NOT EXISTS (SELECT 1
                            FROM ins_deel
                           WHERE ins_srtdeel_key = 259000 -- Toegangspas/Andover
                                 AND ins_alg_ruimte_type = 'P'
                                 AND ins_alg_ruimte_key = p.prs_perslid_key
                                 AND ins_deel_key > i.ins_deel_key)
   UNION ALL               -- Personen aan wie een Niet UWV pas is uitgeleend!
   SELECT  '9' || LPAD (TO_CHAR (cp.prs_contactpersoon_key), 5, '0'),
          cp.prs_contactpersoon_voornaam prs_perslid_voornaam,
          cp.prs_contactpersoon_tussenv prs_perslid_tussenvoegsel,
          cp.prs_contactpersoon_naam prs_perslid_naam,
          rg.alg_locatie_code,
          GREATEST (
             (SELECT MAX (fac_tracking_datum)
                FROM fac_tracking
               WHERE     fac_srtnotificatie_key = 133                -- INSNEW
                     AND fac_tracking_refkey = i.ins_deel_key
                     AND i.ins_alg_ruimte_key = cp.prs_contactpersoon_key),
             COALESCE (cp.prs_contactpersoon_verwijder, cp.prs_contactpersoon_aanmaak))
     FROM ins_deel i,                                     -- Alle passen ooit!
          prs_contactpersoon cp,                 -- Alle contactpersonen ooit!
          alg_v_ruimte_gegevens_all rg
    WHERE     i.ins_srtdeel_key = 259118               -- Toegangspas/Niet UWV
          AND i.ins_alg_ruimte_type = 'C'                   -- Contactpersoon!
          AND i.ins_alg_ruimte_key = cp.prs_contactpersoon_key
          AND i.ins_alg_ruimte_type_org = 'R'                       -- Ruimte!
          AND i.ins_alg_ruimte_key_org = rg.alg_ruimte_key
          AND NOT EXISTS
                (SELECT 1
                   FROM ins_deel
                  WHERE ins_srtdeel_key = 259118       -- Toegangspas/Niet UWV
                        AND ins_alg_ruimte_type = 'C'
                        AND ins_alg_ruimte_key = cp.prs_contactpersoon_key
                        AND ins_deel_key > i.ins_deel_key);

-- Object toegangspas
CREATE OR REPLACE VIEW UWVA_V_RAP_TCS_OBJ
(
   DEEL_KEY,
   PASNR,
   SITECODE,
   EIGENAARNR,
   TEMPLATE,
   STATUS,
   VERLOOPDATUMTIJD,
   LAATSTGEWIJZIGD,
   PARKEERCODE_1,
   PARKEERLOCATIECODE_1,
   PARKEERCODE_2,
   PARKEERLOCATIECODE_2,
   PARKEERCODE_3,
   PARKEERLOCATIECODE_3,
   PARKEERCODE_4,
   PARKEERLOCATIECODE_4,
   PARKEERCODE_5,
   PARKEERLOCATIECODE_5,
   PARKEER_LANDELIJK,
   LAATSTE_MUTATIE
)
AS
   SELECT TO_CHAR (i.ins_deel_key),
          (SELECT ink.ins_kenmerkdeel_waarde
             FROM ins_v_aanwezigkenmerkdeel ink, ins_kenmerk ik
            WHERE     ink.ins_kenmerk_key = ik.ins_kenmerk_key
                  AND ik.ins_srtkenmerk_key = 325                     -- Pasnr
                  AND ink.ins_deel_key = i.ins_deel_key)
             PASNR,
          (SELECT ud.fac_usrdata_code
             FROM ins_v_aanwezigkenmerkdeel ink, ins_kenmerk ik, fac_v_aanwezigusrdata ud
            WHERE     ink.ins_kenmerk_key = ik.ins_kenmerk_key
                  AND ik.ins_srtkenmerk_key = 341                  -- Sitecode
                  AND ink.ins_kenmerkdeel_waarde = TO_CHAR (ud.fac_usrdata_key)
                  AND ink.ins_deel_key = i.ins_deel_key)
             SITECODE,
          TO_CHAR (p.prs_perslid_key),
          (SELECT ud.fac_usrdata_omschr
             FROM ins_v_aanwezigkenmerkdeel ink, ins_kenmerk ik, fac_v_aanwezigusrdata ud
            WHERE     ink.ins_kenmerk_key = ik.ins_kenmerk_key
                  AND ik.ins_srtkenmerk_key = 328                  -- Template
                  AND ink.ins_kenmerkdeel_waarde = TO_CHAR (ud.fac_usrdata_key)
                  AND ink.ins_deel_key = i.ins_deel_key)
             TEMPLATE,
          DECODE (i.ins_deel_verwijder,
                  NULL,
                  (SELECT ud.fac_usrdata_omschr
                     FROM ins_v_aanwezigkenmerkdeel ink, ins_kenmerk ik, fac_v_aanwezigusrdata ud
                    WHERE     ink.ins_kenmerk_key = ik.ins_kenmerk_key
                          AND ik.ins_srtkenmerk_key = 327            -- Status
                          AND ink.ins_kenmerkdeel_waarde = TO_CHAR (ud.fac_usrdata_key)
                          AND ink.ins_deel_key = i.ins_deel_key),
                  'Geblokkeerd')
             STATUS,
          (SELECT ink.ins_kenmerkdeel_waarde
             FROM ins_v_aanwezigkenmerkdeel ink, ins_kenmerk ik
            WHERE     ink.ins_kenmerk_key = ik.ins_kenmerk_key
                  AND ik.ins_srtkenmerk_key = 329           -- Verloopdatumpas
                  AND ink.ins_deel_key = i.ins_deel_key)
             VERLOOPDATUMTIJD,
          (SELECT ink.ins_kenmerkdeel_waarde
             FROM ins_v_aanwezigkenmerkdeel ink, ins_kenmerk ik
            WHERE     ink.ins_kenmerk_key = ik.ins_kenmerk_key
                  AND ik.ins_srtkenmerk_key = 321            -- Laatstgebruikt
                  AND ink.ins_deel_key = i.ins_deel_key)
             LAATSTGEWIJZIGD,
          (SELECT ud.fac_usrdata_code
             FROM ins_v_aanwezigkenmerkdeel ink, ins_kenmerk ik, fac_v_aanwezigusrdata ud
            WHERE     ink.ins_kenmerk_key = ik.ins_kenmerk_key
                  AND ik.ins_kenmerk_key = 493
                  AND ik.ins_srtkenmerk_key = 324               -- Parkeercode
                  AND ink.ins_kenmerkdeel_waarde = TO_CHAR (ud.fac_usrdata_key)
                  AND ink.ins_deel_key = i.ins_deel_key)
             PARKEERCODE_1,
          (SELECT ud.fac_usrdata_code
             FROM ins_v_aanwezigkenmerkdeel ink, ins_kenmerk ik, fac_v_aanwezigusrdata ud
            WHERE     ink.ins_kenmerk_key = ik.ins_kenmerk_key
                  AND ik.ins_kenmerk_key = 492
                  AND ik.ins_srtkenmerk_key = 323        -- Parkeerlocatiecode
                  AND ink.ins_kenmerkdeel_waarde = TO_CHAR (ud.fac_usrdata_key)
                  AND ink.ins_deel_key = i.ins_deel_key)
             PARKEERLOCATIECODE_1,
          (SELECT ud.fac_usrdata_code
             FROM ins_v_aanwezigkenmerkdeel ink, ins_kenmerk ik, fac_v_aanwezigusrdata ud
            WHERE     ink.ins_kenmerk_key = ik.ins_kenmerk_key
                  AND ik.ins_kenmerk_key = 495
                  AND ik.ins_srtkenmerk_key = 324               -- Parkeercode
                  AND ink.ins_kenmerkdeel_waarde = TO_CHAR (ud.fac_usrdata_key)
                  AND ink.ins_deel_key = i.ins_deel_key)
             PARKEERCODE_2,
          (SELECT ud.fac_usrdata_code
             FROM ins_v_aanwezigkenmerkdeel ink, ins_kenmerk ik, fac_v_aanwezigusrdata ud
            WHERE     ink.ins_kenmerk_key = ik.ins_kenmerk_key
                  AND ik.ins_kenmerk_key = 494
                  AND ik.ins_srtkenmerk_key = 323        -- Parkeerlocatiecode
                  AND ink.ins_kenmerkdeel_waarde = TO_CHAR (ud.fac_usrdata_key)
                  AND ink.ins_deel_key = i.ins_deel_key)
             PARKEERLOCATIECODE_2,
          (SELECT ud.fac_usrdata_code
             FROM ins_v_aanwezigkenmerkdeel ink, ins_kenmerk ik, fac_v_aanwezigusrdata ud
            WHERE     ink.ins_kenmerk_key = ik.ins_kenmerk_key
                  AND ik.ins_kenmerk_key = 497
                  AND ik.ins_srtkenmerk_key = 324               -- Parkeercode
                  AND ink.ins_kenmerkdeel_waarde = TO_CHAR (ud.fac_usrdata_key)
                  AND ink.ins_deel_key = i.ins_deel_key)
             PARKEERCODE_3,
          (SELECT ud.fac_usrdata_code
             FROM ins_v_aanwezigkenmerkdeel ink, ins_kenmerk ik, fac_v_aanwezigusrdata ud
            WHERE     ink.ins_kenmerk_key = ik.ins_kenmerk_key
                  AND ik.ins_kenmerk_key = 496
                  AND ik.ins_srtkenmerk_key = 323        -- Parkeerlocatiecode
                  AND ink.ins_kenmerkdeel_waarde = TO_CHAR (ud.fac_usrdata_key)
                  AND ink.ins_deel_key = i.ins_deel_key)
             PARKEERLOCATIECODE_3,
          (SELECT ud.fac_usrdata_code
             FROM ins_v_aanwezigkenmerkdeel ink, ins_kenmerk ik, fac_v_aanwezigusrdata ud
            WHERE     ink.ins_kenmerk_key = ik.ins_kenmerk_key
                  AND ik.ins_kenmerk_key = 499
                  AND ik.ins_srtkenmerk_key = 324               -- Parkeercode
                  AND ink.ins_kenmerkdeel_waarde = TO_CHAR (ud.fac_usrdata_key)
                  AND ink.ins_deel_key = i.ins_deel_key)
             PARKEERCODE_4,
          (SELECT ud.fac_usrdata_code
             FROM ins_v_aanwezigkenmerkdeel ink, ins_kenmerk ik, fac_v_aanwezigusrdata ud
            WHERE     ink.ins_kenmerk_key = ik.ins_kenmerk_key
                  AND ik.ins_kenmerk_key = 498
                  AND ik.ins_srtkenmerk_key = 323        -- Parkeerlocatiecode
                  AND ink.ins_kenmerkdeel_waarde = TO_CHAR (ud.fac_usrdata_key)
                  AND ink.ins_deel_key = i.ins_deel_key)
             PARKEERLOCATIECODE_4,
          (SELECT ud.fac_usrdata_code
             FROM ins_v_aanwezigkenmerkdeel ink, ins_kenmerk ik, fac_v_aanwezigusrdata ud
            WHERE     ink.ins_kenmerk_key = ik.ins_kenmerk_key
                  AND ik.ins_kenmerk_key = 486
                  AND ik.ins_srtkenmerk_key = 324               -- Parkeercode
                  AND ink.ins_kenmerkdeel_waarde = TO_CHAR (ud.fac_usrdata_key)
                  AND ink.ins_deel_key = i.ins_deel_key)
             PARKEERCODE_5,
          (SELECT ud.fac_usrdata_code
             FROM ins_v_aanwezigkenmerkdeel ink, ins_kenmerk ik, fac_v_aanwezigusrdata ud
            WHERE     ink.ins_kenmerk_key = ik.ins_kenmerk_key
                  AND ik.ins_kenmerk_key = 485
                  AND ik.ins_srtkenmerk_key = 323        -- Parkeerlocatiecode
                  AND ink.ins_kenmerkdeel_waarde = TO_CHAR (ud.fac_usrdata_key)
                  AND ink.ins_deel_key = i.ins_deel_key)
             PARKEERLOCATIECODE_5,
          (SELECT ink.ins_kenmerkdeel_waarde
             FROM ins_v_aanwezigkenmerkdeel ink, ins_kenmerk ik
            WHERE     ink.ins_kenmerk_key = ik.ins_kenmerk_key
                  AND ik.ins_srtkenmerk_key = 322 -- Landelijke parkeerrechten
                  AND ink.ins_deel_key = i.ins_deel_key)
            PARKEER_LANDELIJK,
          (SELECT MAX (fac_tracking_datum)
             FROM fac_tracking
            WHERE fac_srtnotificatie_key IN
                        (SELECT fac_srtnotificatie_key
                           FROM fac_srtnotificatie
                          WHERE UPPER (fac_srtnotificatie_xmlnode) = 'DEEL')
                  AND fac_tracking_refkey = i.ins_deel_key)
             LAATSTE_MUTATIE
     FROM ins_deel i, prs_perslid p
    WHERE i.ins_srtdeel_key = 259000
          AND i.ins_alg_ruimte_type = 'P'
          AND i.ins_alg_ruimte_key = p.prs_perslid_key
   UNION ALL
   SELECT TO_CHAR (i.ins_deel_key),
          (SELECT ink.ins_kenmerkdeel_waarde
             FROM ins_v_aanwezigkenmerkdeel ink, ins_kenmerk ik
            WHERE     ink.ins_kenmerk_key = ik.ins_kenmerk_key
                  AND ik.ins_srtkenmerk_key = 325                     -- Pasnr
                  AND ink.ins_deel_key = i.ins_deel_key)
             PASNR,
          (SELECT ud.fac_usrdata_code
             FROM ins_v_aanwezigkenmerkdeel ink, ins_kenmerk ik, fac_v_aanwezigusrdata ud
            WHERE     ink.ins_kenmerk_key = ik.ins_kenmerk_key
                  AND ik.ins_srtkenmerk_key = 341                  -- Sitecode
                  AND ink.ins_kenmerkdeel_waarde = TO_CHAR (ud.fac_usrdata_key)
                  AND ink.ins_deel_key = i.ins_deel_key)
             SITECODE,
          DECODE (i.ins_alg_ruimte_type, 'C', '9' || LPAD (TO_CHAR (i.ins_alg_ruimte_key), 5, '0'), NULL),
          (SELECT ud.fac_usrdata_omschr
             FROM ins_v_aanwezigkenmerkdeel ink, ins_kenmerk ik, fac_v_aanwezigusrdata ud
            WHERE     ink.ins_kenmerk_key = ik.ins_kenmerk_key
                  AND ik.ins_srtkenmerk_key = 328                  -- Template
                  AND ink.ins_kenmerkdeel_waarde = TO_CHAR (ud.fac_usrdata_key)
                  AND ink.ins_deel_key = i.ins_deel_key)
             TEMPLATE,
          DECODE (i.ins_deel_verwijder,
                  NULL,
                  DECODE (i.ins_alg_ruimte_type,
                          'C',
                          (SELECT ud.fac_usrdata_omschr
                             FROM ins_v_aanwezigkenmerkdeel ink, ins_kenmerk ik, fac_v_aanwezigusrdata ud
                            WHERE     ink.ins_kenmerk_key = ik.ins_kenmerk_key
                                  AND ik.ins_srtkenmerk_key = 361    -- Status
                                  AND ink.ins_kenmerkdeel_waarde = TO_CHAR (ud.fac_usrdata_key)
                                  AND ink.ins_deel_key = i.ins_deel_key),
                          'Geblokkeerd'),
                  'Geblokkeerd')
             STATUS,
          (SELECT ink.ins_kenmerkdeel_waarde
             FROM ins_v_aanwezigkenmerkdeel ink, ins_kenmerk ik
            WHERE     ink.ins_kenmerk_key = ik.ins_kenmerk_key
                  AND ik.ins_srtkenmerk_key = 329           -- Verloopdatumpas
                  AND ink.ins_deel_key = i.ins_deel_key)
             VERLOOPDATUMTIJD,
          (SELECT ink.ins_kenmerkdeel_waarde
             FROM ins_v_aanwezigkenmerkdeel ink, ins_kenmerk ik
            WHERE     ink.ins_kenmerk_key = ik.ins_kenmerk_key
                  AND ik.ins_srtkenmerk_key = 321            -- Laatstgebruikt
                  AND ink.ins_deel_key = i.ins_deel_key)
             LAATSTGEWIJZIGD,
          (SELECT ud.fac_usrdata_code
             FROM ins_v_aanwezigkenmerkdeel ink, ins_kenmerk ik, fac_v_aanwezigusrdata ud
            WHERE     ink.ins_kenmerk_key = ik.ins_kenmerk_key
                  AND ik.ins_kenmerk_key = 524
                  AND ik.ins_srtkenmerk_key = 324               -- Parkeercode
                  AND ink.ins_kenmerkdeel_waarde = TO_CHAR (ud.fac_usrdata_key)
                  AND ink.ins_deel_key = i.ins_deel_key)
             PARKEERCODE_1,
          (SELECT ud.fac_usrdata_code
             FROM ins_v_aanwezigkenmerkdeel ink, ins_kenmerk ik, fac_v_aanwezigusrdata ud
            WHERE     ink.ins_kenmerk_key = ik.ins_kenmerk_key
                  AND ik.ins_kenmerk_key = 523
                  AND ik.ins_srtkenmerk_key = 323        -- Parkeerlocatiecode
                  AND ink.ins_kenmerkdeel_waarde = TO_CHAR (ud.fac_usrdata_key)
                  AND ink.ins_deel_key = i.ins_deel_key)
             PARKEERLOCATIECODE_1,
          (SELECT ud.fac_usrdata_code
             FROM ins_v_aanwezigkenmerkdeel ink, ins_kenmerk ik, fac_v_aanwezigusrdata ud
            WHERE     ink.ins_kenmerk_key = ik.ins_kenmerk_key
                  AND ik.ins_kenmerk_key = 532
                  AND ik.ins_srtkenmerk_key = 324               -- Parkeercode
                  AND ink.ins_kenmerkdeel_waarde = TO_CHAR (ud.fac_usrdata_key)
                  AND ink.ins_deel_key = i.ins_deel_key)
             PARKEERCODE_2,
          (SELECT ud.fac_usrdata_code
             FROM ins_v_aanwezigkenmerkdeel ink, ins_kenmerk ik, fac_v_aanwezigusrdata ud
            WHERE     ink.ins_kenmerk_key = ik.ins_kenmerk_key
                  AND ik.ins_kenmerk_key = 531
                  AND ik.ins_srtkenmerk_key = 323        -- Parkeerlocatiecode
                  AND ink.ins_kenmerkdeel_waarde = TO_CHAR (ud.fac_usrdata_key)
                  AND ink.ins_deel_key = i.ins_deel_key)
             PARKEERLOCATIECODE_2,
          (SELECT ud.fac_usrdata_code
             FROM ins_v_aanwezigkenmerkdeel ink, ins_kenmerk ik, fac_v_aanwezigusrdata ud
            WHERE     ink.ins_kenmerk_key = ik.ins_kenmerk_key
                  AND ik.ins_kenmerk_key = 534
                  AND ik.ins_srtkenmerk_key = 324               -- Parkeercode
                  AND ink.ins_kenmerkdeel_waarde = TO_CHAR (ud.fac_usrdata_key)
                  AND ink.ins_deel_key = i.ins_deel_key)
             PARKEERCODE_3,
          (SELECT ud.fac_usrdata_code
             FROM ins_v_aanwezigkenmerkdeel ink, ins_kenmerk ik, fac_v_aanwezigusrdata ud
            WHERE     ink.ins_kenmerk_key = ik.ins_kenmerk_key
                  AND ik.ins_kenmerk_key = 533
                  AND ik.ins_srtkenmerk_key = 323        -- Parkeerlocatiecode
                  AND ink.ins_kenmerkdeel_waarde = TO_CHAR (ud.fac_usrdata_key)
                  AND ink.ins_deel_key = i.ins_deel_key)
             PARKEERLOCATIECODE_3,
          (SELECT ud.fac_usrdata_code
             FROM ins_v_aanwezigkenmerkdeel ink, ins_kenmerk ik, fac_v_aanwezigusrdata ud
            WHERE     ink.ins_kenmerk_key = ik.ins_kenmerk_key
                  AND ik.ins_kenmerk_key = 536
                  AND ik.ins_srtkenmerk_key = 324               -- Parkeercode
                  AND ink.ins_kenmerkdeel_waarde = TO_CHAR (ud.fac_usrdata_key)
                  AND ink.ins_deel_key = i.ins_deel_key)
             PARKEERCODE_4,
          (SELECT ud.fac_usrdata_code
             FROM ins_v_aanwezigkenmerkdeel ink, ins_kenmerk ik, fac_v_aanwezigusrdata ud
            WHERE     ink.ins_kenmerk_key = ik.ins_kenmerk_key
                  AND ik.ins_kenmerk_key = 535
                  AND ik.ins_srtkenmerk_key = 323        -- Parkeerlocatiecode
                  AND ink.ins_kenmerkdeel_waarde = TO_CHAR (ud.fac_usrdata_key)
                  AND ink.ins_deel_key = i.ins_deel_key)
             PARKEERLOCATIECODE_4,
          (SELECT ud.fac_usrdata_code
             FROM ins_v_aanwezigkenmerkdeel ink, ins_kenmerk ik, fac_v_aanwezigusrdata ud
            WHERE     ink.ins_kenmerk_key = ik.ins_kenmerk_key
                  AND ik.ins_kenmerk_key = 538
                  AND ik.ins_srtkenmerk_key = 324               -- Parkeercode
                  AND ink.ins_kenmerkdeel_waarde = TO_CHAR (ud.fac_usrdata_key)
                  AND ink.ins_deel_key = i.ins_deel_key)
             PARKEERCODE_5,
          (SELECT ud.fac_usrdata_code
             FROM ins_v_aanwezigkenmerkdeel ink, ins_kenmerk ik, fac_v_aanwezigusrdata ud
            WHERE     ink.ins_kenmerk_key = ik.ins_kenmerk_key
                  AND ik.ins_kenmerk_key = 537
                  AND ik.ins_srtkenmerk_key = 323        -- Parkeerlocatiecode
                  AND ink.ins_kenmerkdeel_waarde = TO_CHAR (ud.fac_usrdata_key)
                  AND ink.ins_deel_key = i.ins_deel_key)
             PARKEERLOCATIECODE_5,
          (SELECT ink.ins_kenmerkdeel_waarde
             FROM ins_v_aanwezigkenmerkdeel ink, ins_kenmerk ik
            WHERE     ink.ins_kenmerk_key = ik.ins_kenmerk_key
                  AND ik.ins_srtkenmerk_key = 322 -- Landelijke parkeerrechten
                  AND ink.ins_deel_key = i.ins_deel_key)
            PARKEER_LANDELIJK,
          (SELECT MAX (fac_tracking_datum)
             FROM fac_tracking
            WHERE fac_srtnotificatie_key IN
                        (SELECT fac_srtnotificatie_key
                           FROM fac_srtnotificatie
                          WHERE UPPER (fac_srtnotificatie_xmlnode) = 'DEEL')
                  AND fac_tracking_refkey = i.ins_deel_key)
             LAATSTE_MUTATIE
     FROM ins_deel i
    WHERE i.ins_srtdeel_key = 259118                   -- Toegangspas/Niet UWV
;

CREATE OR REPLACE VIEW UWVA_V_RAP_TCS_BEZ
(
   BEZOEKER_ID,
   PASNR,
   NAAM,
   BEDRIJF,
   BEZOEKDATUM,
   BEZOEKLOCATIE,
   BEZOEKER_IN,
   BEZOEKER_OUT,
   TEMPLATE,
   SITECODE,
   LAATSTE_MUTATIE
)
AS
   SELECT bb.bez_bezoekers_key,
          bw.bez_kenmerkwaarde_waarde,
          bb.bez_afspraak_naam,
          bb.bez_afspraak_bedrijf,
          ba.bez_afspraak_datum,
          l.alg_locatie_code,
          DECODE (bb.bez_bezoekers_done, NULL, NULL, 1),
          DECODE (bb.bez_bezoekers_out, NULL, NULL, 1),
          (SELECT ud.fac_usrdata_code
             FROM bez_kenmerkwaarde bw, fac_v_aanwezigusrdata ud
            WHERE bw.bez_kenmerk_key = 1002                        -- Template
                  AND bw.bez_kenmerkwaarde_waarde = TO_CHAR (ud.fac_usrdata_key)
                  AND bw.bez_bezoekers_key = bb.bez_bezoekers_key)
             template,
          (SELECT ud.fac_usrdata_code
             FROM bez_kenmerkwaarde bw, fac_v_aanwezigusrdata ud
            WHERE bw.bez_kenmerk_key = 1001                        -- Sitecode
                  AND bw.bez_kenmerkwaarde_waarde = TO_CHAR (ud.fac_usrdata_key)
                  AND bw.bez_bezoekers_key = bb.bez_bezoekers_key)
             sitecode,
          GREATEST (
             (SELECT MAX (t.fac_tracking_datum)
                FROM fac_tracking t, fac_srtnotificatie sn
               WHERE t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
                     AND ((sn.fac_srtnotificatie_xmlnode = 'afspraak' AND t.fac_tracking_refkey = bb.bez_afspraak_key)
                          OR (sn.fac_srtnotificatie_xmlnode = 'bezoeker' AND t.fac_tracking_refkey = bb.bez_bezoekers_key))),
             COALESCE (bb.bez_bezoekers_out, SYSDATE - 1000))
     FROM bez_bezoekers bb, bez_kenmerkwaarde bw, bez_afspraak ba, alg_locatie l
    WHERE bb.bez_bezoekers_done IS NOT NULL -- Alleen binnengevinkte passen meenemen!
          AND bb.bez_bezoekers_key = bw.bez_bezoekers_key
          AND bw.bez_kenmerk_key = 1000                           -- Pasnummer
          AND bb.bez_afspraak_key = ba.bez_afspraak_key
          AND ba.alg_locatie_key = l.alg_locatie_key
          AND TRUNC (ba.bez_afspraak_datum) = TRUNC (SYSDATE);

CREATE OR REPLACE VIEW UWVA_V_RAP_TCS_BEV
(
   DEEL_KEY,
   FCLT_3D_LOCATIE_KEY, -- Beveiliger mag alleen passen van personen op eigen locatie zien
   PASNR,
   SITECODE,
   EIGENAARNR,
   EIGENAARNAAM,
   TEMPLATE,
   STATUS,
   UITGIFTE,
   VERLOOPDATUMTIJD,
   LAATSTGEWIJZIGD,
   PARKEERCODE_1,
   PARKEERLOCATIECODE_1,
   PARKEERCODE_2,
   PARKEERLOCATIECODE_2,
   PARKEERCODE_3,
   PARKEERLOCATIECODE_3,
   PARKEERCODE_4,
   PARKEERLOCATIECODE_4,
   PARKEERCODE_5,
   PARKEERLOCATIECODE_5,
   PARKEER_LANDELIJK,
   LAATSTE_MUTATIE
)
AS
   SELECT i.ins_deel_key,
          wpg.alg_locatie_key,
          (SELECT ink.ins_kenmerkdeel_waarde
             FROM ins_v_aanwezigkenmerkdeel ink, ins_kenmerk ik
            WHERE     ink.ins_kenmerk_key = ik.ins_kenmerk_key
                  AND ik.ins_srtkenmerk_key = 325                     -- Pasnr
                  AND ink.ins_deel_key = i.ins_deel_key)
             PASNR,
          (SELECT ud.fac_usrdata_code
             FROM ins_v_aanwezigkenmerkdeel ink, ins_kenmerk ik, fac_v_aanwezigusrdata ud
            WHERE     ink.ins_kenmerk_key = ik.ins_kenmerk_key
                  AND ik.ins_srtkenmerk_key = 341                  -- Sitecode
                  AND ink.ins_kenmerkdeel_waarde = TO_CHAR (ud.fac_usrdata_key)
                  AND ink.ins_deel_key = i.ins_deel_key)
             SITECODE,
          TO_CHAR (p.prs_perslid_key) EIGENAARNR,
          TRIM (DECODE (p.prs_perslid_tussenvoegsel,
                NULL, p.prs_perslid_voornaam || ' ' || p.prs_perslid_naam,
                p.prs_perslid_voornaam || ' ' || p.prs_perslid_tussenvoegsel || ' ' || p.prs_perslid_naam))
             EIGENAARNAAM,
          (SELECT ud.fac_usrdata_omschr
             FROM ins_v_aanwezigkenmerkdeel ink, ins_kenmerk ik, fac_v_aanwezigusrdata ud
            WHERE     ink.ins_kenmerk_key = ik.ins_kenmerk_key
                  AND ik.ins_srtkenmerk_key = 328                  -- Template
                  AND ink.ins_kenmerkdeel_waarde = TO_CHAR (ud.fac_usrdata_key)
                  AND ink.ins_deel_key = i.ins_deel_key)
             TEMPLATE,
          (SELECT ud.fac_usrdata_omschr
             FROM ins_v_aanwezigkenmerkdeel ink, ins_kenmerk ik, fac_v_aanwezigusrdata ud
            WHERE     ink.ins_kenmerk_key = ik.ins_kenmerk_key
                  AND ik.ins_srtkenmerk_key = 327                    -- Status
                  AND ink.ins_kenmerkdeel_waarde = TO_CHAR (ud.fac_usrdata_key)
                  AND ink.ins_deel_key = i.ins_deel_key)
             STATUS,
          (SELECT ud.fac_usrdata_omschr
             FROM ins_v_aanwezigkenmerkdeel ink, ins_kenmerk ik, fac_v_aanwezigusrdata ud
            WHERE     ink.ins_kenmerk_key = ik.ins_kenmerk_key
                  AND ik.ins_srtkenmerk_key = 342                  -- Uitgifte
                  AND ink.ins_kenmerkdeel_waarde = TO_CHAR (ud.fac_usrdata_key)
                  AND ink.ins_deel_key = i.ins_deel_key)
             UITGIFTE,
          (SELECT ink.ins_kenmerkdeel_waarde
             FROM ins_v_aanwezigkenmerkdeel ink, ins_kenmerk ik
            WHERE     ink.ins_kenmerk_key = ik.ins_kenmerk_key
                  AND ik.ins_srtkenmerk_key = 329           -- Verloopdatumpas
                  AND ink.ins_deel_key = i.ins_deel_key)
             VERLOOPDATUMTIJD,
          (SELECT ink.ins_kenmerkdeel_waarde
             FROM ins_v_aanwezigkenmerkdeel ink, ins_kenmerk ik
            WHERE     ink.ins_kenmerk_key = ik.ins_kenmerk_key
                  AND ik.ins_srtkenmerk_key = 321            -- Laatstgebruikt
                  AND ink.ins_deel_key = i.ins_deel_key)
             LAATSTGEWIJZIGD,
          (SELECT ud.fac_usrdata_code
             FROM ins_v_aanwezigkenmerkdeel ink, ins_kenmerk ik, fac_v_aanwezigusrdata ud
            WHERE     ink.ins_kenmerk_key = ik.ins_kenmerk_key
                  AND ik.ins_kenmerk_key = 493
                  AND ik.ins_srtkenmerk_key = 324               -- Parkeercode
                  AND ink.ins_kenmerkdeel_waarde = TO_CHAR (ud.fac_usrdata_key)
                  AND ink.ins_deel_key = i.ins_deel_key)
             PARKEERCODE_1,
          (SELECT ud.fac_usrdata_code
             FROM ins_v_aanwezigkenmerkdeel ink, ins_kenmerk ik, fac_v_aanwezigusrdata ud
            WHERE     ink.ins_kenmerk_key = ik.ins_kenmerk_key
                  AND ik.ins_kenmerk_key = 492
                  AND ik.ins_srtkenmerk_key = 323        -- Parkeerlocatiecode
                  AND ink.ins_kenmerkdeel_waarde = TO_CHAR (ud.fac_usrdata_key)
                  AND ink.ins_deel_key = i.ins_deel_key)
             PARKEERLOCATIECODE_1,
          (SELECT ud.fac_usrdata_code
             FROM ins_v_aanwezigkenmerkdeel ink, ins_kenmerk ik, fac_v_aanwezigusrdata ud
            WHERE     ink.ins_kenmerk_key = ik.ins_kenmerk_key
                  AND ik.ins_kenmerk_key = 495
                  AND ik.ins_srtkenmerk_key = 324               -- Parkeercode
                  AND ink.ins_kenmerkdeel_waarde = TO_CHAR (ud.fac_usrdata_key)
                  AND ink.ins_deel_key = i.ins_deel_key)
             PARKEERCODE_2,
          (SELECT ud.fac_usrdata_code
             FROM ins_v_aanwezigkenmerkdeel ink, ins_kenmerk ik, fac_v_aanwezigusrdata ud
            WHERE     ink.ins_kenmerk_key = ik.ins_kenmerk_key
                  AND ik.ins_kenmerk_key = 494
                  AND ik.ins_srtkenmerk_key = 323        -- Parkeerlocatiecode
                  AND ink.ins_kenmerkdeel_waarde = TO_CHAR (ud.fac_usrdata_key)
                  AND ink.ins_deel_key = i.ins_deel_key)
             PARKEERLOCATIECODE_2,
          (SELECT ud.fac_usrdata_code
             FROM ins_v_aanwezigkenmerkdeel ink, ins_kenmerk ik, fac_v_aanwezigusrdata ud
            WHERE     ink.ins_kenmerk_key = ik.ins_kenmerk_key
                  AND ik.ins_kenmerk_key = 497
                  AND ik.ins_srtkenmerk_key = 324               -- Parkeercode
                  AND ink.ins_kenmerkdeel_waarde = TO_CHAR (ud.fac_usrdata_key)
                  AND ink.ins_deel_key = i.ins_deel_key)
             PARKEERCODE_3,
          (SELECT ud.fac_usrdata_code
             FROM ins_v_aanwezigkenmerkdeel ink, ins_kenmerk ik, fac_v_aanwezigusrdata ud
            WHERE     ink.ins_kenmerk_key = ik.ins_kenmerk_key
                  AND ik.ins_kenmerk_key = 496
                  AND ik.ins_srtkenmerk_key = 323        -- Parkeerlocatiecode
                  AND ink.ins_kenmerkdeel_waarde = TO_CHAR (ud.fac_usrdata_key)
                  AND ink.ins_deel_key = i.ins_deel_key)
             PARKEERLOCATIECODE_3,
          (SELECT ud.fac_usrdata_code
             FROM ins_v_aanwezigkenmerkdeel ink, ins_kenmerk ik, fac_v_aanwezigusrdata ud
            WHERE     ink.ins_kenmerk_key = ik.ins_kenmerk_key
                  AND ik.ins_kenmerk_key = 499
                  AND ik.ins_srtkenmerk_key = 324               -- Parkeercode
                  AND ink.ins_kenmerkdeel_waarde = TO_CHAR (ud.fac_usrdata_key)
                  AND ink.ins_deel_key = i.ins_deel_key)
             PARKEERCODE_4,
          (SELECT ud.fac_usrdata_code
             FROM ins_v_aanwezigkenmerkdeel ink, ins_kenmerk ik, fac_v_aanwezigusrdata ud
            WHERE     ink.ins_kenmerk_key = ik.ins_kenmerk_key
                  AND ik.ins_kenmerk_key = 498
                  AND ik.ins_srtkenmerk_key = 323        -- Parkeerlocatiecode
                  AND ink.ins_kenmerkdeel_waarde = TO_CHAR (ud.fac_usrdata_key)
                  AND ink.ins_deel_key = i.ins_deel_key)
             PARKEERLOCATIECODE_4,
          (SELECT ud.fac_usrdata_code
             FROM ins_v_aanwezigkenmerkdeel ink, ins_kenmerk ik, fac_v_aanwezigusrdata ud
            WHERE     ink.ins_kenmerk_key = ik.ins_kenmerk_key
                  AND ik.ins_kenmerk_key = 486
                  AND ik.ins_srtkenmerk_key = 324               -- Parkeercode
                  AND ink.ins_kenmerkdeel_waarde = TO_CHAR (ud.fac_usrdata_key)
                  AND ink.ins_deel_key = i.ins_deel_key)
             PARKEERCODE_5,
          (SELECT ud.fac_usrdata_code
             FROM ins_v_aanwezigkenmerkdeel ink, ins_kenmerk ik, fac_v_aanwezigusrdata ud
            WHERE     ink.ins_kenmerk_key = ik.ins_kenmerk_key
                  AND ik.ins_kenmerk_key = 485
                  AND ik.ins_srtkenmerk_key = 323        -- Parkeerlocatiecode
                  AND ink.ins_kenmerkdeel_waarde = TO_CHAR (ud.fac_usrdata_key)
                  AND ink.ins_deel_key = i.ins_deel_key)
             PARKEERLOCATIECODE_5,
          (SELECT ink.ins_kenmerkdeel_waarde
             FROM ins_v_aanwezigkenmerkdeel ink, ins_kenmerk ik
            WHERE     ink.ins_kenmerk_key = ik.ins_kenmerk_key
                  AND ik.ins_srtkenmerk_key = 322 -- Landelijke parkeerrechten
                  AND ink.ins_deel_key = i.ins_deel_key)
            PARKEER_LANDELIJK,
          (SELECT MAX (fac_tracking_datum)
             FROM fac_tracking
            WHERE fac_srtnotificatie_key IN
                        (SELECT fac_srtnotificatie_key
                           FROM fac_srtnotificatie
                          WHERE UPPER (fac_srtnotificatie_xmlnode) = 'DEEL')
                  AND fac_tracking_refkey = i.ins_deel_key)
             LAATSTE_MUTATIE
     FROM ins_v_aanwezigdeel i,
          ins_v_aanwezigkenmerkdeel ink,
          prs_perslid p,
          (SELECT * FROM prs_perslidwerkplek WHERE prs_perslidwerkplek_volgnr = 2) pw, -- HRM-WP
          prs_v_werkplek_gegevens wpg
    WHERE i.ins_srtdeel_key = 259000                    -- Toegangspas Andover
          AND i.ins_deel_key = ink.ins_deel_key
          AND ink.ins_kenmerk_key = 502                            -- Uitgifte
          AND ink.ins_kenmerkdeel_waarde IN ('29739', '29740', '29743') -- Aangemaakt/Defect/Verloren
          AND i.ins_alg_ruimte_type = 'P'
          AND i.ins_alg_ruimte_key = p.prs_perslid_key
          AND p.prs_perslid_key = pw.prs_perslid_key(+)
          AND pw.prs_werkplek_key = wpg.prs_werkplek_key(+)
   UNION ALL
   SELECT i.ins_deel_key,
          rg.alg_locatie_key,
          (SELECT ink.ins_kenmerkdeel_waarde
             FROM ins_v_aanwezigkenmerkdeel ink, ins_kenmerk ik
            WHERE     ink.ins_kenmerk_key = ik.ins_kenmerk_key
                  AND ik.ins_srtkenmerk_key = 325                     -- Pasnr
                  AND ink.ins_deel_key = i.ins_deel_key)
             PASNR,
          (SELECT ud.fac_usrdata_code
             FROM ins_v_aanwezigkenmerkdeel ink, ins_kenmerk ik, fac_v_aanwezigusrdata ud
            WHERE     ink.ins_kenmerk_key = ik.ins_kenmerk_key
                  AND ik.ins_srtkenmerk_key = 341                  -- Sitecode
                  AND ink.ins_kenmerkdeel_waarde = TO_CHAR (ud.fac_usrdata_key)
                  AND ink.ins_deel_key = i.ins_deel_key)
             SITECODE,
          DECODE (i.ins_alg_ruimte_type, 'C', '9' || LPAD (TO_CHAR (i.ins_alg_ruimte_key), 5, '0'), NULL)
             EIGENAARNR,
          (SELECT TRIM (DECODE (prs_contactpersoon_tussenv,
                                NULL, prs_contactpersoon_voornaam || ' ' || prs_contactpersoon_naam,
                                prs_contactpersoon_voornaam || ' ' || prs_contactpersoon_tussenv  || ' ' || prs_contactpersoon_naam))
             FROM prs_contactpersoon
            WHERE prs_contactpersoon_key = i.ins_alg_ruimte_key
                  AND i.ins_alg_ruimte_type = 'C')
             EIGENAARNAAM,
          (SELECT ud.fac_usrdata_omschr
             FROM ins_v_aanwezigkenmerkdeel ink, ins_kenmerk ik, fac_v_aanwezigusrdata ud
            WHERE     ink.ins_kenmerk_key = ik.ins_kenmerk_key
                  AND ik.ins_srtkenmerk_key = 328                  -- Template
                  AND ink.ins_kenmerkdeel_waarde = TO_CHAR (ud.fac_usrdata_key)
                  AND ink.ins_deel_key = i.ins_deel_key)
             TEMPLATE,
          (SELECT ud.fac_usrdata_omschr
             FROM ins_v_aanwezigkenmerkdeel ink, ins_kenmerk ik, fac_v_aanwezigusrdata ud
            WHERE     ink.ins_kenmerk_key = ik.ins_kenmerk_key
                  AND ik.ins_srtkenmerk_key = 361                    -- Status
                  AND ink.ins_kenmerkdeel_waarde = TO_CHAR (ud.fac_usrdata_key)
                  AND ink.ins_deel_key = i.ins_deel_key)
             STATUS,
          (SELECT ud.fac_usrdata_omschr
             FROM ins_v_aanwezigkenmerkdeel ink, ins_kenmerk ik, fac_v_aanwezigusrdata ud
            WHERE     ink.ins_kenmerk_key = ik.ins_kenmerk_key
                  AND ik.ins_srtkenmerk_key = 342                  -- Uitgifte
                  AND ink.ins_kenmerkdeel_waarde = TO_CHAR (ud.fac_usrdata_key)
                  AND ink.ins_deel_key = i.ins_deel_key)
             UITGIFTE,
          (SELECT ink.ins_kenmerkdeel_waarde
             FROM ins_v_aanwezigkenmerkdeel ink, ins_kenmerk ik
            WHERE     ink.ins_kenmerk_key = ik.ins_kenmerk_key
                  AND ik.ins_srtkenmerk_key = 329           -- Verloopdatumpas
                  AND ink.ins_deel_key = i.ins_deel_key)
             VERLOOPDATUMTIJD,
          (SELECT ink.ins_kenmerkdeel_waarde
             FROM ins_v_aanwezigkenmerkdeel ink, ins_kenmerk ik
            WHERE     ink.ins_kenmerk_key = ik.ins_kenmerk_key
                  AND ik.ins_srtkenmerk_key = 321            -- Laatstgebruikt
                  AND ink.ins_deel_key = i.ins_deel_key)
             LAATSTGEWIJZIGD,
          (SELECT ud.fac_usrdata_code
             FROM ins_v_aanwezigkenmerkdeel ink, ins_kenmerk ik, fac_v_aanwezigusrdata ud
            WHERE     ink.ins_kenmerk_key = ik.ins_kenmerk_key
                  AND ik.ins_kenmerk_key = 524
                  AND ik.ins_srtkenmerk_key = 324               -- Parkeercode
                  AND ink.ins_kenmerkdeel_waarde = TO_CHAR (ud.fac_usrdata_key)
                  AND ink.ins_deel_key = i.ins_deel_key)
             PARKEERCODE_1,
          (SELECT ud.fac_usrdata_code
             FROM ins_v_aanwezigkenmerkdeel ink, ins_kenmerk ik, fac_v_aanwezigusrdata ud
            WHERE     ink.ins_kenmerk_key = ik.ins_kenmerk_key
                  AND ik.ins_kenmerk_key = 523
                  AND ik.ins_srtkenmerk_key = 323        -- Parkeerlocatiecode
                  AND ink.ins_kenmerkdeel_waarde = TO_CHAR (ud.fac_usrdata_key)
                  AND ink.ins_deel_key = i.ins_deel_key)
             PARKEERLOCATIECODE_1,
          (SELECT ud.fac_usrdata_code
             FROM ins_v_aanwezigkenmerkdeel ink, ins_kenmerk ik, fac_v_aanwezigusrdata ud
            WHERE     ink.ins_kenmerk_key = ik.ins_kenmerk_key
                  AND ik.ins_kenmerk_key = 532
                  AND ik.ins_srtkenmerk_key = 324               -- Parkeercode
                  AND ink.ins_kenmerkdeel_waarde = TO_CHAR (ud.fac_usrdata_key)
                  AND ink.ins_deel_key = i.ins_deel_key)
             PARKEERCODE_2,
          (SELECT ud.fac_usrdata_code
             FROM ins_v_aanwezigkenmerkdeel ink, ins_kenmerk ik, fac_v_aanwezigusrdata ud
            WHERE     ink.ins_kenmerk_key = ik.ins_kenmerk_key
                  AND ik.ins_kenmerk_key = 531
                  AND ik.ins_srtkenmerk_key = 323        -- Parkeerlocatiecode
                  AND ink.ins_kenmerkdeel_waarde = TO_CHAR (ud.fac_usrdata_key)
                  AND ink.ins_deel_key = i.ins_deel_key)
             PARKEERLOCATIECODE_2,
          (SELECT ud.fac_usrdata_code
             FROM ins_v_aanwezigkenmerkdeel ink, ins_kenmerk ik, fac_v_aanwezigusrdata ud
            WHERE     ink.ins_kenmerk_key = ik.ins_kenmerk_key
                  AND ik.ins_kenmerk_key = 534
                  AND ik.ins_srtkenmerk_key = 324               -- Parkeercode
                  AND ink.ins_kenmerkdeel_waarde = TO_CHAR (ud.fac_usrdata_key)
                  AND ink.ins_deel_key = i.ins_deel_key)
             PARKEERCODE_3,
          (SELECT ud.fac_usrdata_code
             FROM ins_v_aanwezigkenmerkdeel ink, ins_kenmerk ik, fac_v_aanwezigusrdata ud
            WHERE     ink.ins_kenmerk_key = ik.ins_kenmerk_key
                  AND ik.ins_kenmerk_key = 533
                  AND ik.ins_srtkenmerk_key = 323        -- Parkeerlocatiecode
                  AND ink.ins_kenmerkdeel_waarde = TO_CHAR (ud.fac_usrdata_key)
                  AND ink.ins_deel_key = i.ins_deel_key)
             PARKEERLOCATIECODE_3,
          (SELECT ud.fac_usrdata_code
             FROM ins_v_aanwezigkenmerkdeel ink, ins_kenmerk ik, fac_v_aanwezigusrdata ud
            WHERE     ink.ins_kenmerk_key = ik.ins_kenmerk_key
                  AND ik.ins_kenmerk_key = 536
                  AND ik.ins_srtkenmerk_key = 324               -- Parkeercode
                  AND ink.ins_kenmerkdeel_waarde = TO_CHAR (ud.fac_usrdata_key)
                  AND ink.ins_deel_key = i.ins_deel_key)
             PARKEERCODE_4,
          (SELECT ud.fac_usrdata_code
             FROM ins_v_aanwezigkenmerkdeel ink, ins_kenmerk ik, fac_v_aanwezigusrdata ud
            WHERE     ink.ins_kenmerk_key = ik.ins_kenmerk_key
                  AND ik.ins_kenmerk_key = 535
                  AND ik.ins_srtkenmerk_key = 323        -- Parkeerlocatiecode
                  AND ink.ins_kenmerkdeel_waarde = TO_CHAR (ud.fac_usrdata_key)
                  AND ink.ins_deel_key = i.ins_deel_key)
             PARKEERLOCATIECODE_4,
          (SELECT ud.fac_usrdata_code
             FROM ins_v_aanwezigkenmerkdeel ink, ins_kenmerk ik, fac_v_aanwezigusrdata ud
            WHERE     ink.ins_kenmerk_key = ik.ins_kenmerk_key
                  AND ik.ins_kenmerk_key = 538
                  AND ik.ins_srtkenmerk_key = 324               -- Parkeercode
                  AND ink.ins_kenmerkdeel_waarde = TO_CHAR (ud.fac_usrdata_key)
                  AND ink.ins_deel_key = i.ins_deel_key)
             PARKEERCODE_5,
          (SELECT ud.fac_usrdata_code
             FROM ins_v_aanwezigkenmerkdeel ink, ins_kenmerk ik, fac_v_aanwezigusrdata ud
            WHERE     ink.ins_kenmerk_key = ik.ins_kenmerk_key
                  AND ik.ins_kenmerk_key = 537
                  AND ik.ins_srtkenmerk_key = 323        -- Parkeerlocatiecode
                  AND ink.ins_kenmerkdeel_waarde = TO_CHAR (ud.fac_usrdata_key)
                  AND ink.ins_deel_key = i.ins_deel_key)
             PARKEERLOCATIECODE_5,
          (SELECT ink.ins_kenmerkdeel_waarde
             FROM ins_v_aanwezigkenmerkdeel ink, ins_kenmerk ik
            WHERE     ink.ins_kenmerk_key = ik.ins_kenmerk_key
                  AND ik.ins_srtkenmerk_key = 322 -- Landelijke parkeerrechten
                  AND ink.ins_deel_key = i.ins_deel_key)
            PARKEER_LANDELIJK,
          (SELECT MAX (fac_tracking_datum)
             FROM fac_tracking
            WHERE fac_srtnotificatie_key IN
                        (SELECT fac_srtnotificatie_key
                           FROM fac_srtnotificatie
                          WHERE UPPER (fac_srtnotificatie_xmlnode) = 'DEEL')
                  AND fac_tracking_refkey = i.ins_deel_key)
             LAATSTE_MUTATIE
     FROM ins_v_aanwezigdeel i,
          ins_v_aanwezigkenmerkdeel ink,
          alg_v_ruimte_gegevens_all rg
    WHERE i.ins_srtdeel_key = 259118                   -- Toegangspas/Niet UWV
          AND i.ins_deel_key = ink.ins_deel_key
          AND ink.ins_kenmerk_key = 529                            -- Uitgifte
          AND ink.ins_kenmerkdeel_waarde IN ('29739', '29740', '29743') -- Aangemaakt/Defect/Verloren
          AND ((i.ins_alg_ruimte_type = 'R' AND i.ins_alg_ruimte_key = rg.alg_ruimte_key)
               OR (i.ins_alg_ruimte_type_org = 'R' AND i.ins_alg_ruimte_key_org = rg.alg_ruimte_key));

-- UWVA#51959: Afhandelen CR-meldingen!
CREATE OR REPLACE PROCEDURE UWVA_processemail (
   pfrom        IN VARCHAR2,
   pto          IN VARCHAR2,
   psubject     IN VARCHAR2,
   pbody        IN VARCHAR2,
   psessionid   IN VARCHAR2,
   puserkey     IN NUMBER DEFAULT NULL)
AS
   -- Soortmelding=3581=Call/service verzoek onder Vakgroep=468=Call registratie onder Vakgroeptype=2=Aanvragen met Kenmerk=3181=Bijlage!
   v_errormsg           VARCHAR2 (1000);
   oracle_err_num       NUMBER;
   oracle_err_mes       VARCHAR2 (200);
   v_perslid_key        NUMBER (10);
   v_kostenplaats_key   NUMBER (10);
   v_stdmelding_key     NUMBER (10);
   v_melding_key        NUMBER (10) := NULL;
   v_count              NUMBER (10) := NULL;
BEGIN
   CASE
      WHEN UPPER (pto) LIKE 'CALL_REGISTRATIE@%'
      THEN
         -- Bepaal persoon met loginnaam _HMAIL.
         v_errormsg := 'Fout bepalen CR-melder';
         SELECT p.prs_perslid_key, a.prs_kostenplaats_key
           INTO v_perslid_key, v_kostenplaats_key
           FROM prs_v_aanwezigperslid p, prs_afdeling a
          WHERE p.prs_perslid_key = 91592                   -- _Service Center
                AND p.prs_afdeling_key = a.prs_afdeling_key;

         -- Bepaal Soortmelding met afgesproken key=3581 én Kenmerk met afgesproken key=3181.
         v_errormsg := 'Fout bepalen CR-soortmelding/kenmerk';
         SELECT sm.mld_stdmelding_key
           INTO v_stdmelding_key
           FROM mld_discipline md, mld_stdmelding sm
          WHERE md.ins_discipline_verwijder IS NULL
                --AND md.ins_srtdiscipline_key = 2                  -- Aanvragen
                AND md.ins_discipline_key = sm.mld_ins_discipline_key
                AND sm.mld_stdmelding_key = 3581       -- Call/service verzoek
                AND EXISTS (SELECT 1
                              FROM mld_kenmerk
                             WHERE mld_kenmerk_verwijder IS NULL
                                   AND mld_kenmerk_key = 3181       -- Bijlage
                                   AND mld_kenmerk_niveau = 'D'
                                   AND mld_stdmelding_key = md.ins_discipline_key);

         -- Suggested extensions:
         -- - Check for MLDUSE-write autorisations
         -- - Parse the subject to find the appropriate stdmelding, if uniquely possible
         -- - Append (as a note?) to an existing melding if #key is found in the subject
         v_errormsg := 'Fout toevoegen CR-melding';
         INSERT INTO mld_melding (mld_melding_module,
                                  mld_meldbron_key,
                                  mld_alg_locatie_key,
                                  mld_alg_onroerendgoed_keys,
                                  mld_melding_datum,
                                  mld_melding_omschrijving,
                                  mld_stdmelding_key,
                                  mld_melding_t_uitvoertijd,
                                  prs_kostenplaats_key,
                                  prs_perslid_key,
                                  prs_perslid_key_voor,
                                  mld_melding_status,
                                  mld_melding_spoed,
                                  mld_melding_onderwerp)
             VALUES ('MLD',
                     4,                                               -- email
                     70, -- TODO/AMSG bij gebrek aan iets anders ter bepaling?
                     NULL,
                     SYSDATE,
                     SUBSTR (pbody, 1, 4000),
                     v_stdmelding_key,
                     NULL,
                     v_kostenplaats_key,
                     v_perslid_key,
                     v_perslid_key,
                     NULL,
                     3,                                        -- prio normaal
                     SUBSTR (pfrom || ':  ' || psubject, 1, 80))
          RETURNING mld_melding_key
               INTO v_melding_key;

         mld.setmeldingstatus (v_melding_key, 2, v_perslid_key);

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

         -- Bijlagen worden op basis van onderstaande door HMAIL-server geplaatst in de juiste folder!
         INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde)
             VALUES (psessionid, 'kenmerkpath', 'MLD\M' || TO_CHAR (TRUNC (v_melding_key/1000), 'FM0000') || '___\M' || v_melding_key || '\3181\');  -- ' tbv. opmaak
      ELSE
         INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde)
             VALUES (psessionid, 'errormsg', 'Ontvanger ongeldig - Neem contact op met uw systeembeheerder ');
   END CASE;
EXCEPTION
   WHEN OTHERS
   THEN
      oracle_err_num := SQLCODE;
      oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
      v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
      fac.writelog ('PROCESSEMAIL', 'E', 'UWVA_processemail afgebroken!', '[' || pfrom || '] ' || v_errormsg);
      INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde)
          VALUES (psessionid, 'errormsg', 'Database fout - Neem contact op met uw systeembeheerder ');
      COMMIT;
END;
/

CREATE OR REPLACE VIEW uwva_v_rap_mail_error
(
   hide_f_offset,
   datum,
   hint,
   error
)
AS
   SELECT SYSDATE - imp_log_datum, imp_log_datum, imp_log_hint, imp_log_omschrijving
     FROM imp_log
    WHERE imp_log_applicatie = 'PROCESSEMAIL' AND imp_log_datum > SYSDATE - 30;

-- UWVA#54031: Overschrijding acceptatietijd
-- UWVA#57192: Inbouwen 3d autorisatie op locatie (en daarmee regio)
CREATE OR REPLACE VIEW uwva_v_rap_overschrijding
(
   vakgroeptype,
   vakgroep,
   soortmelding,
   regio,
   district,
   locatiecode,
   behandelaar,
   melding_key,
   meldingnr,
   mldnew_dat,
   status,
   mldacp_sla,
   mldacp_std,
   mldacp_dat,
   overschrijding_hh,
   overschrijding_mm,
   fclt_3d_locatie_key
)
AS
   SELECT x.ins_srtdiscipline_omschrijving vakgroeptype,
          x.ins_discipline_omschrijving vakgroep,
          x.mld_stdmelding_omschrijving soortmelding,
          x.alg_regio_omschrijving regio,
          x.alg_district_omschrijving district,
          x.alg_locatie_code locatiecode,
          x.prs_perslid_naam_full behandelaar,
          x.mld_melding_key melding_key,
          x.ins_srtdiscipline_prefix || TO_CHAR (x.mld_melding_key) meldingnr,
          x.mld_melding_datum mldnew_dat,
          x.mld_statuses_omschrijving status,
          TO_CHAR (x.tijdsduur) || x.eenheid mldacp_sla,
          x.mld_melding_acceptdatum_std mldacp_std,
          mldacp.fac_tracking_datum mldacp_dat,
          DECODE (SIGN (mldacp.fac_tracking_datum - x.mld_melding_acceptdatum_std),
                  -1, TO_NUMBER (NULL),
                  ROUND (uwva.bepaal_uwv_doorlooptijd (x.mld_melding_acceptdatum_std, mldacp.fac_tracking_datum), 0))
             overschrijding_hh,
          DECODE (SIGN (mldacp.fac_tracking_datum - x.mld_melding_acceptdatum_std),
                  -1, TO_NUMBER (NULL),
                  ROUND (uwva.bepaal_uwv_doorlooptijd (x.mld_melding_acceptdatum_std, mldacp.fac_tracking_datum) * 60, 0))
             overschrijding_mm,
          x.alg_locatie_key
     FROM    (SELECT m.mld_melding_key,
                     m.mld_stdmelding_key,
                     sd.ins_srtdiscipline_prefix,
                     sd.ins_srtdiscipline_omschrijving,
                     md.ins_discipline_omschrijving,
                     sm.mld_stdmelding_omschrijving,
                     m.mld_melding_datum,
                     ms.mld_statuses_omschrijving,
                     r.alg_regio_omschrijving,
                     d.alg_district_omschrijving,
                     l.alg_locatie_key,
                     l.alg_locatie_code,
                     pf.prs_perslid_naam_full,
                     m.mld_melding_t_accepttijd.tijdsduur tijdsduur,
                     m.mld_melding_t_accepttijd.eenheid eenheid,
                     m.mld_melding_acceptdatum_std
                FROM mld_melding m,
                     mld_stdmelding sm,
                     mld_discipline md,
                     ins_srtdiscipline sd,
                     mld_statuses ms,
                     alg_locatie l,
                     alg_district d,
                     alg_regio r,
                     prs_v_perslid_fullnames pf
               WHERE m.mld_melding_datum > TRUNC (ADD_MONTHS (SYSDATE, -24), 'yyyy')
                     AND m.mld_stdmelding_key = sm.mld_stdmelding_key
                     AND sm.mld_ins_discipline_key = md.ins_discipline_key
                     AND md.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
                     AND m.mld_melding_status = ms.mld_statuses_key
                     AND m.mld_alg_locatie_key = l.alg_locatie_key(+)
                     AND l.alg_district_key = d.alg_district_key(+)
                     AND d.alg_regio_key = r.alg_regio_key(+)
                     AND m.mld_melding_behandelaar_key = pf.prs_perslid_key(+)) x
          LEFT JOIN
             (  SELECT fac_tracking_refkey, MAX (fac_tracking_datum) fac_tracking_datum
                  FROM fac_tracking
                 WHERE fac_srtnotificatie_key IN (17, 22)     -- MLDACP/MLDREJ
              GROUP BY fac_tracking_refkey) mldacp
          ON x.mld_melding_key = mldacp.fac_tracking_refkey
    WHERE mldacp.fac_tracking_datum > x.mld_melding_acceptdatum_std;

-- UWVA#56421: KTO onderzoek IPSOS
-- Export van meldingen en bestellingen van afgelopen kwartaal.
CREATE OR REPLACE VIEW uwva_v_rap_ipsos_mld
(
   result,
   result_order
)
AS
   SELECT    'Naam_Medewerker'
          || ';Emailadres'
          || ';Locatie_medewerker'
          || ';Afdeling_medewerker'
          || ';Datum_van_melding'
          || ';Type_melding'
          || ';Nummer_van_de_melding',
           0
     FROM DUAL
   UNION ALL
   SELECT    prs_perslid_naam_full
          || ';'
          || prs_perslid_email
          || ';'
          || alg_locatie_code
          || ';'
          || prs_afdeling_omschrijving
          || ';'
          || mld_melding_datum
          || ';'
          || ins_srtdiscipline_omschrijving
          || ';'
          || mld_melding_key
          || ';',
           ROWNUM            -- Gesorteerd op melding (wel zo gedefinieerd)!
     FROM ( SELECT m.mld_melding_key,
                    m.mld_melding_datum,
                    t.fac_tracking_datum,
                    sd.ins_srtdiscipline_omschrijving,
                    pf.prs_perslid_naam_full,
                    p.prs_perslid_email,
                    l.alg_locatie_code,
                    a.prs_afdeling_omschrijving,
                    fac.safe_to_number (TO_CHAR (t.fac_tracking_datum, 'YYYY'))
                       AS jaar,
                    fac.safe_to_number (TO_CHAR (t.fac_tracking_datum, 'Q'))
                       AS kwartaal
               FROM fac_tracking t,
                    mld_melding m,
                    mld_stdmelding sm,
                    ins_srtdiscipline sd,
                    mld_discipline md,
                    prs_perslid p,
                    prs_v_perslid_fullnames pf,
                    prs_v_afdeling_boom ab,
                    prs_afdeling a,
                    alg_locatie l
              WHERE t.fac_srtnotificatie_key = 18                    -- MLDAFM
                    AND ( (fac.safe_to_number (
                              TO_CHAR (t.fac_tracking_datum, 'YYYY')) =
                              fac.safe_to_number (TO_CHAR (SYSDATE, 'YYYY'))
                           AND fac.safe_to_number (
                                 TO_CHAR (t.fac_tracking_datum, 'Q')) =
                                 fac.safe_to_number (
                                    TO_CHAR (SYSDATE, 'Q')) --Hiermee enkel van vorige maand
                                 - 1)
                         OR (fac.safe_to_number (
                                TO_CHAR (t.fac_tracking_datum, 'YYYY')) =
                                fac.safe_to_number (TO_CHAR (SYSDATE, 'YYYY'))
                                - 1
                             AND fac.safe_to_number (TO_CHAR (SYSDATE, 'YYYY')) = 1
							 AND fac.safe_to_number (
                                   TO_CHAR (t.fac_tracking_datum, 'Q')) = 4))
                    AND t.fac_tracking_refkey = m.mld_melding_key
                    AND m.mld_stdmelding_key = sm.mld_stdmelding_key
                    AND sm.mld_ins_discipline_key = md.ins_discipline_key
                    AND sd.ins_srtdiscipline_key = md.ins_srtdiscipline_key
                    AND md.ins_srtdiscipline_key IN (1, 2, 3) -- Storingen, Aanvragen, Klachten.
                    AND m.prs_perslid_key_voor = p.prs_perslid_key
                    AND p.prs_perslid_key != 58387                   -- Derden
                    AND p.prs_afdeling_key = ab.prs_afdeling_key
                    AND ab.prs_afdeling_key1 = a.prs_afdeling_key
                    AND a.prs_afdeling_key != 1328       -- Divisie Handhaving
                    AND p.prs_perslid_key = pf.prs_perslid_key
                    AND m.mld_alg_locatie_key = l.alg_locatie_key
                    and p.prs_perslid_key not in (SELECT pk.prs_link_key
  FROM prs_v_aanwezigkenmerklink pk, fac_usrdata ud
 WHERE     pk.prs_kenmerklink_waarde = ud.fac_usrdata_key
       AND pk.prs_kenmerk_key = 1040      --Kenmerk Type medewerker
       AND ud.fac_usrtab_key = 301      --Eigen tabel Type medewerker
       AND fac_usrdata_upper IN ('C', 'B', 'L', 'D', 'M', 'X')) --C-Contract; B- Beveiliging, Receptie en Catering; L - Leverancier; D- Dummy; M - Techniek en Uitvoerenden; X - Derden
           ORDER BY 1);

-- UWVA#56421: KTO onderzoek IPSOS
-- Export van meldingen en bestellingen van afgelopen kwartaal.
CREATE OR REPLACE VIEW uwva_v_rap_ipsos_bes
(
   result,
   result_order
)
AS
   SELECT    'Naam_Medewerker'
          || ';Emailadres'
          || ';Locatie_medewerker'
          || ';Afdeling_medewerker'
          || ';Datum_van_melding'
          || ';Type_melding'
          || ';Nummer_van_de_melding',
          100000
     FROM DUAL
   UNION ALL
   SELECT    prs_perslid_naam_full
          || ';'
          || prs_perslid_email
          || ';'
          || locatie_code
          || ';'
          || prs_afdeling_omschrijving
          || ';'
          || afleverdatum
          || ';'
          || catalogus
          || ';'
          || bestelling_key
          || ';',
          ROWNUM + 100000   -- Gesorteerd op bestelling (wel zo gedefinieerd)!
     FROM (  SELECT pf.prs_perslid_naam_full,
                    p.prs_perslid_email,
                    a.prs_afdeling_omschrijving,
                    bu.bestelling_key,
                    bu.catalogus,
                    bu.afleverdatum,
                    bu.locatie_code
               FROM bes_v_udr_bestelling bu,
                    fac_tracking t,
                    bes_bestelling b,
                    prs_perslid p,
                    prs_v_perslid_fullnames pf,
                    prs_v_afdeling_boom ab,
                    prs_afdeling a
              WHERE t.fac_srtnotificatie_key = 6                     -- BESOTV
                    AND ( (fac.safe_to_number (
                              TO_CHAR (t.fac_tracking_datum, 'YYYY')) =
                              fac.safe_to_number (TO_CHAR (SYSDATE, 'YYYY'))
                           AND fac.safe_to_number (
                                 TO_CHAR (t.fac_tracking_datum, 'Q')) =
                                 fac.safe_to_number (
                                    TO_CHAR (SYSDATE, 'Q')) --Hiermee enkel van vorige maand
                                 - 1)
                         OR (fac.safe_to_number (
                                TO_CHAR (t.fac_tracking_datum, 'YYYY')) =
                                fac.safe_to_number (TO_CHAR (SYSDATE, 'YYYY'))
                                - 1
                             AND fac.safe_to_number (TO_CHAR (SYSDATE, 'YYYY')) = 1
							 AND fac.safe_to_number (
                                   TO_CHAR (t.fac_tracking_datum, 'Q')) = 4))
                    AND t.fac_tracking_refkey = b.bes_bestelling_key
                    AND p.prs_perslid_key = b.prs_perslid_key
                    AND bu.bestelling_key = b.bes_bestelling_key
                    AND bu.fclt_3d_discipline_key = 350 -- Enkel bestellingen vanuit catalogus Bedrijfskleding
					AND b.bes_bestelling_status IN (6, 7) -- Geleverd of verwerkt
                    AND p.prs_perslid_key != 58387                   -- Derden
                    AND p.prs_afdeling_key = ab.prs_afdeling_key
                    AND ab.prs_afdeling_key1 = a.prs_afdeling_key
                    AND a.prs_afdeling_key != 1328       -- Divisie Handhaving
                    AND p.prs_perslid_key = pf.prs_perslid_key
                    AND p.prs_afdeling_key = ab.prs_afdeling_key
                    AND ab.prs_afdeling_key1 = a.prs_afdeling_key
                    AND a.prs_afdeling_key != 1328       -- Divisie Handhaving
                    AND p.prs_perslid_key NOT IN
                             (SELECT pk.prs_link_key
                                FROM prs_v_aanwezigkenmerklink pk,
                                     fac_usrdata ud
                               WHERE pk.prs_kenmerklink_waarde =
                                        ud.fac_usrdata_key
                                     AND pk.prs_kenmerk_key = 1040 --Kenmerk Type medewerker
                                     AND ud.fac_usrtab_key = 301 --Eigen tabel Type medewerker
                                     AND fac_usrdata_upper IN
                                              ('C', 'B', 'L', 'D', 'M', 'X')) --C-Contract; B- Beveiliging, Receptie en Catering; L - Leverancier; D- Dummy; M - Techniek en Uitvoerenden; X - Derden
           GROUP BY pf.prs_perslid_naam_full,
                    p.prs_perslid_email,
                    a.prs_afdeling_omschrijving,
                    bu.bestelling_key,
                    bu.catalogus,
                    bu.afleverdatum,
                    bu.locatie_code);

-- UWVA#56421: KTO onderzoek IPSOS
-- Export van meldingen en bestellingen van afgelopen kwartaal.
CREATE OR REPLACE VIEW uwva_v_export_ipsos (result, result_order)
AS
   SELECT result, result_order
     FROM uwva_v_rap_ipsos_mld
   UNION ALL
   SELECT result, result_order
     FROM uwva_v_rap_ipsos_bes
     WHERE result_order <> 100000;

--UWVA#56770: Nieuw rapport Acceptatie- en doorlooptijden meldingen + bronview

CREATE OR REPLACE VIEW uwva_v_mld_actual_all
(
   mld_key,
   mld_begindatum,
   mld_einddatum,
   mld_accpttijd,
   mld_afmtijd,
   acpt_telaat,
   uitv_telaat,
   mldacp_date,
   mldrej_date,
   mldafm_date
)
AS
   SELECT meld.mld_key,
          meld.begindatum,
          meld.einddatum,
          TO_CHAR(FLOOR(uwva.bepaal_uwv_doorlooptijd (
                           meld.begindatum,
                           mldacp.fac_tracking_datum)))
          || ':'
          || TO_CHAR(MOD (
                        ROUND (
                           uwva.bepaal_uwv_doorlooptijd (
                              meld.begindatum,
                              mldacp.fac_tracking_datum)
                           * 60,
                           0),
                        60))
             accepttijd,
          TO_CHAR(FLOOR(uwva.bepaal_uwv_doorlooptijd (
                           meld.begindatum,
                           mldafm.fac_tracking_datum)))
          || ':'
          || TO_CHAR(MOD (
                        ROUND (
                           uwva.bepaal_uwv_doorlooptijd (
                              meld.begindatum,
                              mldafm.fac_tracking_datum)
                           * 60,
                           0),
                        60))
             afmeldtijd,
          DECODE (SIGN (meld.mld_melding_acceptdatum_std
                        - COALESCE (mldrej.fac_tracking_datum,
                                    mldacp.fac_tracking_datum,
                                    mldafm.fac_tracking_datum,
                                    SYSDATE)),
                  -1, 1,
                  0)
             acpt_telaat,
          DECODE (
             SIGN(meld.mld_melding_einddatum_std
                  - COALESCE (mldrej.fac_tracking_datum,
                              mldafm.fac_tracking_datum,
                              SYSDATE)),
             -1,
             1,
             0)
             uitv_telaat,
          mldacp.fac_tracking_datum,
          mldrej.fac_tracking_datum,
          mldafm.fac_tracking_datum
     FROM (SELECT m.mld_melding_key mld_key,
                  m.mld_melding_datum begindatum,
                  m.mld_melding_einddatum einddatum,
                  m.mld_melding_acceptdatum_std,
                  m.mld_melding_einddatum_std
             FROM mld_melding m) meld
          LEFT JOIN (SELECT t.fac_tracking_refkey,
                            t.fac_tracking_datum,
                            t.prs_perslid_key
                       FROM fac_tracking t
                      WHERE t.fac_srtnotificatie_key = 17
                            AND t.fac_tracking_key IN
                                     (SELECT MAX (fac_tracking_key)
                                        FROM fac_tracking
                                       WHERE fac_srtnotificatie_key = 17
                                             AND fac_tracking_refkey =
                                                   t.fac_tracking_refkey))
                    mldacp
             ON meld.mld_key = mldacp.fac_tracking_refkey
          LEFT JOIN fac_tracking mldrej
             ON meld.mld_key = mldrej.fac_tracking_refkey
                AND mldrej.fac_srtnotificatie_key = 22
          LEFT JOIN fac_tracking mldafm
             ON meld.mld_key = mldafm.fac_tracking_refkey
                AND mldafm.fac_srtnotificatie_key = 18;

CREATE OR REPLACE VIEW uwva_v_rap_doorloopmld
(
   mld_key,
   meldingsnummer,
   fclt_f_soort_melding,
   fclt_f_productgroep,
   fclt_f_melding,
   fclt_f_regio,
   fclt_f_district,
   fclt_3d_locatie_key,
   locatie,
   fclt_f_gebouw,
   fclt_f_behandelgroep,
   behandelaar,
   registratiedatum,
   registratietijd,
   sla_acceptatie,
   acceptatiedatum,
   acceptatietijd,
   werkelijk_accptijd,
   binnen_sla_accp,
   delta_sla_accp,
   sla_uitvoertijd,
   afmelddatum,
   afmeldtijd,
   werkelijk_afmtijd,
   binnen_sla_afm,
   delta_sla_afm
)
AS
   SELECT m.mld_melding_key,
          sd.ins_srtdiscipline_prefix || m.mld_melding_key,
          sd.ins_srtdiscipline_omschrijving,
          md.ins_discipline_omschrijving,
          mstd.mld_stdmelding_omschrijving,
          ar.alg_regio_omschrijving,
          ad.alg_district_omschrijving,
          al.alg_locatie_key,
          al.alg_locatie_omschrijving,
          v.alg_gebouw_naam,
          bg.mld_behandelgroep_naam,
          pf.prs_perslid_naam_friendly,
          TRUNC (m.mld_melding_datum) registratiedatum,
          TO_CHAR (m.mld_melding_datum, 'HH24:MI') registratietijd,
          CASE
             WHEN MSTD.MLD_STDMELDING_T_ACCEPTTIJD.eenheid = 'D'
             THEN
                MSTD.MLD_STDMELDING_T_ACCEPTTIJD.tijdsduur * 10.5       -- aantal dagen X 10,5 uur (werkdag)
             ELSE
                mstd.mld_stdmelding_t_accepttijd.tijdsduur
          END
             accepttijd,
          TRUNC (ua.mldacp_date) accptdatum,
          TO_CHAR (ua.mldacp_date, 'HH24:MI') accpttijd,
         fac.safe_to_number ( ROUND (
             fac.safe_to_number(SUBSTR (ua.mld_accpttijd,
                                        0,
                                        INSTR (ua.mld_accpttijd, ':') - 1)
                                + (SUBSTR (ua.mld_accpttijd,
                                           INSTR (ua.mld_accpttijd, ':') + 1)
                                   / 60)),
             2)) werkelijkaccp,
          DECODE (SIGN (m.mld_melding_acceptdatum_std - ua.mldacp_date),
                  -1, 'Nee',
                  'Ja')
             binnen_sla,
          ROUND (
             uwva.bepaal_uwv_doorlooptijd (m.mld_melding_acceptdatum_std,
                                           ua.mldacp_date),
             2)
             delatacp,
          CASE
             WHEN mstd.mld_stdmelding_t_uitvoertijd.eenheid = 'D'
             THEN
                mstd.mld_stdmelding_t_uitvoertijd.tijdsduur * 10.5           -- aantal dagen X 10,5 uur (werkdag)
             ELSE
                mstd.mld_stdmelding_t_uitvoertijd.tijdsduur
          END
             eindtijd,
         TRUNC (ua.mldafm_date) afmdatum,
         TO_CHAR (ua.mldafm_date, 'HH24:MI') afmtijd,
                  fac.safe_to_number ( ROUND (
             fac.safe_to_number(SUBSTR (ua.mld_afmtijd,
                                        0,
                                        INSTR (ua.mld_afmtijd, ':') - 1)
                                + (SUBSTR (ua.mld_afmtijd,
                                           INSTR (ua.mld_afmtijd, ':') + 1)
                                   / 60)),
             2)) werkelijkafm,
          DECODE (SIGN (m.mld_melding_einddatum_std - ua.mldafm_date),
                  -1, 'Nee',
                  'Ja')
             binnen_sla_afm,
          ROUND (
             uwva.bepaal_uwv_doorlooptijd (m.mld_melding_einddatum_std,
                                           ua.mldafm_date),
             2)
             delatafm
     FROM mld_melding m,
          mld_stdmelding mstd,
          mld_discipline md,
          ins_srtdiscipline sd,
          alg_locatie al,
          alg_district ad,
          alg_regio ar,
          alg_v_onroerendgoed_gegevens v,
          mld_behandelgroep bg,
          mld_disc_params dc,
          prs_v_perslid_fullnames pf,
          uwva_v_mld_actual_all ua
    WHERE     m.mld_stdmelding_key = mstd.mld_stdmelding_key
          AND mstd.mld_ins_discipline_key = md.ins_discipline_key
          AND md.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
          AND m.mld_alg_locatie_key = al.alg_locatie_key
          AND al.alg_district_key = ad.alg_district_key
          AND ad.alg_regio_key = ar.alg_regio_key
          AND m.mld_alg_onroerendgoed_keys = v.alg_onroerendgoed_keys
          AND md.ins_discipline_key = dc.mld_ins_discipline_key
          AND dc.mld_behandelgroep_key = bg.mld_behandelgroep_key
          AND m.mld_melding_behandelaar_key = pf.prs_perslid_key(+)
          AND m.mld_melding_status IN (1, 5, 6) -- Afgewezen, afgemeld en historie
          AND m.mld_melding_key = ua.mld_key;

CREATE OR REPLACE VIEW UWVA_V_RAP_EAFSPRAAK1
(
   LOCATIE_ID,
   LOCATIE_CODE,
   CATALOG_ID,
   CATALOG_NAME,
   RUIMTE_ID,
   RUIMTE_NAAM,
   RUIMTE_OMSCHRIJVING,
   AANTAL_PERS
)
AS
   SELECT al.alg_locatie_key,
          al.alg_locatie_code,
          rd.ins_discipline_key,
          rd.ins_discipline_omschrijving,
          rr.res_ruimte_key,
          rr.res_ruimte_nr,
          rr.res_ruimte_omschrijving,
          (SELECT MAX (rro.res_ruimte_opstel_bezoekers)
             FROM res_ruimte_opstelling rro
            WHERE rr.res_ruimte_key = rro.res_ruimte_key)
             pers
     FROM res_ruimte rr,
          res_alg_ruimte rar,
          alg_ruimte ar,
          alg_verdieping av,
          alg_gebouw ag,
          alg_locatie al,
          res_discipline rd
    WHERE     rr.res_ruimte_key = rar.res_ruimte_key
          AND rar.alg_ruimte_key = ar.alg_ruimte_key
          AND ar.alg_verdieping_key = av.alg_verdieping_key
          AND av.alg_gebouw_key = ag.alg_gebouw_key
          AND ag.alg_locatie_key = al.alg_locatie_key
          AND rr.res_discipline_key = rd.ins_discipline_key
          AND rd.ins_discipline_key IN (121, 122, 124, 125, 140)
          AND ar.alg_ruimte_verwijder IS NULL
          AND rr.res_ruimte_verwijder IS NULL
          AND rar.res_alg_ruimte_verwijder IS NULL
          AND (rr.res_ruimte_vervaldatum IS NULL
               OR rr.res_ruimte_vervaldatum > SYSDATE);

CREATE OR REPLACE VIEW UWVA_V_RAP_EAFSPRAAK2
(
   RUIMTE_ID,
   LOCATIE_ID,
   VAN,
   TOT,
   VERVALDATUM
)
AS
   SELECT rr.res_ruimte_key,
          al.alg_locatie_key,
          vr.res_rsv_ruimte_van,
          vr.res_rsv_ruimte_tot,
          rr.res_ruimte_vervaldatum
     FROM res_v_rsv_ruimte_2_alg_ruimte vr,
          res_ruimte rr,
          alg_ruimte ar,
          alg_verdieping av,
          alg_gebouw ag,
          alg_locatie al
    WHERE     vr.res_ruimte_key = rr.res_ruimte_key
          AND vr.alg_ruimte_key = ar.alg_ruimte_key
          AND ar.alg_verdieping_key = av.alg_verdieping_key
          AND av.alg_gebouw_key = ag.alg_gebouw_key
          AND ag.alg_locatie_key = al.alg_locatie_key
          AND TRUNC (vr.res_rsv_ruimte_van) >= TRUNC (SYSDATE) - 14
          AND rr.res_discipline_key IN (121, 122, 124, 125, 140)
          AND rr.res_ruimte_verwijder IS NULL
          AND (rr.res_ruimte_vervaldatum IS NULL
               OR rr.res_ruimte_vervaldatum > SYSDATE)
   UNION ALL
   SELECT rr.res_ruimte_key,
          al.alg_locatie_key,
          NULL,
          NULL,
          rr.res_ruimte_vervaldatum
     FROM res_ruimte rr,
          alg_ruimte ar,
          alg_verdieping av,
          alg_gebouw ag,
          alg_locatie al,
          res_alg_ruimte rar
    WHERE     rar.res_ruimte_key = rr.res_ruimte_key
          AND rar.alg_ruimte_key = ar.alg_ruimte_key
          AND ar.alg_verdieping_key = av.alg_verdieping_key
          AND av.alg_gebouw_key = ag.alg_gebouw_key
          AND ag.alg_locatie_key = al.alg_locatie_key
          AND rr.res_discipline_key IN (121, 122, 124, 125, 140)
          AND rar.res_alg_ruimte_verwijder IS NULL
          AND rr.res_ruimte_verwijder IS NULL
          AND (rr.res_ruimte_vervaldatum IS NULL
               OR rr.res_ruimte_vervaldatum > SYSDATE);
               
CREATE OR REPLACE VIEW UWVA_V_RAP_EAFSPRAAK3
(
   res_id,
   ruimte_id,
   afspraak_id,
   bezoeker_id,
   bezoeker_naam,
   bezoeker_bedrijf,
   bezoeker_tijdstip_in,
   bezoeker_tijdstip_uit,
   bezoeker_opmerking
)
AS
SELECT vr.res_reservering_key,
          rr.res_ruimte_key,
          ba.bez_afspraak_key,
          bb.bez_bezoekers_key,
          bb.bez_afspraak_naam,
          bb.bez_afspraak_bedrijf,
          ba.bez_afspraak_datum,
          ba.bez_afspraak_eind,
          ba.bez_afspraak_opmerking
     FROM res_v_rsv_ruimte_2_alg_ruimte vr,
          res_ruimte rr,
          bez_bezoekers bb,
          bez_afspraak ba,
          fac_tracking ft
    WHERE     vr.res_ruimte_key = rr.res_ruimte_key
          AND bb.bez_afspraak_key = ba.bez_afspraak_key
          AND ba.res_rsv_ruimte_key = vr.res_rsv_ruimte_key
          AND ft.prs_perslid_key = 100122      -- API account CommUnited
          AND ft.fac_srtnotificatie_key = 30   -- RESNEW
          AND ft.fac_tracking_refkey = vr.res_rsv_ruimte_key
          AND vr.res_alg_ruimte_verwijder IS NULL
          AND rr.res_ruimte_verwijder IS NULL
          AND (rr.res_ruimte_vervaldatum IS NULL
               OR rr.res_ruimte_vervaldatum > SYSDATE);
               
CREATE OR REPLACE VIEW UWVA_V_RAP_EAFSPRAAK4 (PRS_PERSLID_KEY, PUIK)
AS
   SELECT prs_perslid_key, prs_perslid_oslogin
     FROM prs_perslid
    WHERE prs_perslid_verwijder IS NULL;
            
------ 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
