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

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

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 PROCEDURE quaw_import_prs (p_import_key IN NUMBER)
AS
   oracle_err_num     NUMBER;
   oracle_err_mes     VARCHAR2 (200);
   v_errormsg         VARCHAR2 (400);
   v_errorhint        VARCHAR2 (400);
   v_aantal_in_FCLT   NUMBER;
BEGIN
   UPDATE FAC_IMP_FILE
      SET fac_imp_file_line = REPLACE (fac_imp_file_line, ',', ';')
    WHERE fac_import_key = p_import_key;

   v_errorhint := 'Generieke update';
   -- de sequence array staat beschreven in PRS_PAC.SRC bij de prs.import_perslid proc
   prs.import_perslid (
      p_import_key,
         '4;5;0;0;0;0;6;2;0;1;'
      || '0;0;0;0;0;8;9;10;0;0;'
      || '7;12;0;0;0;0;11;0;0;0;'
      || '0;0;0;0;0;0;0;0;0;0;'
      || '0;0;0;0;0;0',
      '"First Name";"Last Name";"DisplayName";"Locatie";"Gebouwcode";"Afdelingscode";"Aanhef";"Telefoonnummer";"Mobiel";"Email";"ipPhone";"loginnaam"%');


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

CREATE OR REPLACE PROCEDURE quaw_update_doorkiesnr (p_import_key IN NUMBER)
IS
   CURSOR c_doorkiesnr
   IS
      SELECT '1000', P.PRS_PERSLID_KEY, I.PRS_KENMERK1
        FROM prs_perslid p, fac_imp_perslid i
       WHERE UPPER (P.PRS_PERSLID_OSLOGIN) = UPPER (I.PRS_PERSLID_OSLOGIN);
BEGIN
   FOR rec IN c_doorkiesnr
   LOOP
      BEGIN
         prs.upsertkenmerk (1000, rec.PRS_PERSLID_KEY, rec.PRS_KENMERK1);
      END;
   END LOOP;
END quaw_update_doorkiesnr;
/


CREATE OR REPLACE PROCEDURE quaw_update_prs (p_import_key IN NUMBER)
IS
   -- Alle personen verwijderen die niet meer in import bestand voorkomen.
   -- Key bij QUAW is SAMAccountName, hieronder de query om alle personen te verwijderen die:
   -- a) niet meer in het importbestand staan, wel in Facilitor, en
   -- b) waarvan de persoon in Facilitor niet begint met een _ in de loginnaam (ook van af blijven)


   CURSOR c_del
   IS
        SELECT DISTINCT
               p.prs_perslid_key, p.prs_perslid_nr, pf.prs_perslid_naam_full
          FROM fac_imp_perslid i, prs_perslid p, prs_v_perslid_fullnames_all pf
         WHERE     p.prs_perslid_verwijder IS NULL
               AND SUBSTR (p.prs_perslid_oslogin, 1, 1) <> '_'
               AND pf.prs_perslid_key = p.prs_perslid_key
               AND UPPER (p.prs_perslid_oslogin) NOT IN
                        (SELECT UPPER (I.PRS_PERSLID_OSLOGIN)
                           FROM fac_imp_perslid i)
      ORDER BY 2;

   v_count   NUMBER;
BEGIN
   -- generic update

   SELECT COUNT ( * ) INTO v_count FROM fac_imp_perslid;

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

   quaw_update_doorkiesnr (p_import_key);

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


-- QUAW#38329 QR code rapport

CREATE OR REPLACE VIEW QUAW_V_INS_QRC
(
   hide_f_sort,
   fclt_3d_discipline_key,
   fclt_3d_locatie_key,
   fclt_f_locatie,
   fclt_f_gebouw,
   plaats,
   fclt_f_objectsoort,
   fclt_f_identificatie,
   ins_deel_key,
   soortruimte,
   ins_srtdeel_code,
   ins_srtdeel_key,
   ins_alg_ruimte_type,
   alg_gebouw_code,
   alg_verdieping_code,
   alg_district_key,
   ins_alg_ruimte_key,
   hide_f_bookmark_id
)
AS
   SELECT i.ins_deel_omschrijving hide_f_sort,
          i.ins_discipline_key fclt_3d_discipline_key,
          l.alg_locatie_key fclt_3d_locatie_key,
          l.alg_locatie_omschrijving fclt_f_locatie,
          o.alg_gebouw_omschrijving fclt_f_gebouw,
          o.alg_plaatsaanduiding plaats,
          s.ins_srtdeel_omschrijving fclt_f_objectsoort,
          i.ins_deel_omschrijving fclt_f_identificatie,
          i.ins_deel_key,
          (SELECT r.alg_ruimte_omschrijving
             FROM alg_ruimte r
            WHERE r.alg_ruimte_key = i.ins_alg_ruimte_key)
             soortruimte,
          s.ins_srtdeel_code,
          s.ins_srtdeel_key,
          i.ins_alg_ruimte_type,
          o.alg_gebouw_code,
          o.alg_verdieping_code,
          l.alg_district_key,
          i.ins_alg_ruimte_key,
          b.fac_bookmark_id hide_f_bookmark_id
     FROM ins_deel i,
          ins_v_alg_overzicht o,
          ins_srtdeel s,
          alg_locatie l,
          alg_district di,
          fac_bookmark b
    WHERE     b.fac_bookmark_naam = 'QRC_OBJECT'
          AND ins_deel_verwijder IS NULL
          AND COALESCE (i.ins_deel_vervaldatum, SYSDATE + 1) > SYSDATE
          AND i.ins_deel_module = 'INS'
          AND i.ins_deel_parent_key IS NULL
          AND o.alg_onroerendgoed_keys = i.ins_alg_ruimte_key
          AND o.alg_onroerendgoed_type = i.ins_alg_ruimte_type
          AND i.ins_alg_ruimte_type IN ('T', 'R', 'W')
          AND o.alg_locatie_key = i.ins_alg_locatie_key
          AND i.ins_alg_locatie_key = l.alg_locatie_key
          AND l.alg_district_key = di.alg_district_key
          AND s.ins_srtdeel_key = i.ins_srtdeel_key;

-- QUAW#39822 overzicht bezetting objecten van het soort vervoer (7-18 uur)
CREATE OR REPLACE VIEW QUAW_V_BEZETTING_VERVOER
(
   MND,
   CATALOGUS,
   OBJECT,
   AANTAL_RES,
   BESCH_UREN,
   BEZ_UREN,
   PERC
)
AS
   SELECT resbes.mnd,
            resbes.ins_discipline_omschrijving,
            resbes.res_deel_omschrijving,
            SUM (resbez.aant) aantal_reserveringen,
            ROUND (resbes.uren, 2) bes_uren,
            SUM (ROUND (resbez.tot_uren, 2)) bez_uren,
            ROUND (
               ( (SUM (ROUND (resbez.tot_uren, 2))
                  / SUM (ROUND (resbes.uren, 2)))
                * 100),
               2)
               AS perc
       FROM ( --- aantal uren dat een object beschikbaar is per maand uitgaande van res_t1 (7) en res_t2 (23) en werkdagen
             SELECT  TO_CHAR (p.mnd, 'yyyy-mm') mnd,
                     rd.res_discipline_key,
                     ds.ins_discipline_omschrijving,
                     rd.res_deel_key,
                     rd.res_deel_omschrijving,
                     fac.count_work_days (p.mnd - 1, ADD_MONTHS (p.mnd, 1) - 1)
                     * 11                               -- bij quaw voor auto's : 18-7 = 11 
                        uren
                FROM res_deel rd,
                     ins_deel d,
                     res_discipline ds,
                     (    SELECT ADD_MONTHS (TRUNC (SYSDATE, 'mm'), LEVEL - 26) mnd
                            FROM DUAL
                      CONNECT BY LEVEL <= 25) p
               WHERE     rd.res_ins_deel_key = d.ins_deel_key
                     AND COALESCE (d.ins_alg_ruimte_type_org,
                                   d.ins_alg_ruimte_type) = 'R' -- Noodzakelijk?
                     AND rd.res_deel_aanmaak < ADD_MONTHS (p.mnd, 1)
                     AND (rd.res_deel_verwijder IS NULL
                          OR rd.res_deel_verwijder >= p.mnd)
                     AND rd.res_discipline_key = ds.ins_discipline_key) resbes,
            --- aantal reserveringen en totaal aantal uren dat een object 'bezet' is per maand uitgaande van 7- 18 uur en werkdagen
            (  SELECT TO_CHAR (rrd.res_rsv_deel_tot, 'yyyy-mm') mnd,
                      rd.res_discipline_key,
                      ds.ins_discipline_omschrijving,
                      rd.res_deel_omschrijving,
                      rd.res_deel_key,
                      COUNT ( * ) aant,
                      SUM(LEAST (
                             (rrd.res_rsv_deel_tot - TRUNC (rrd.res_rsv_deel_tot))
                             * 24,
                             18)
                          - GREATEST (
                               (rrd.res_rsv_deel_van
                                - TRUNC (rrd.res_rsv_deel_van))
                               * 24,
                               7))
                         tot_uren
                 FROM res_rsv_deel rrd,
                      res_rsv_ruimte rrr,
                      res_deel rd,
                      ins_deel d,
                      res_discipline ds
                WHERE     rrd.res_rsv_deel_verwijder IS NULL
                      AND rd.res_discipline_key = ds.ins_discipline_key
                      AND rrd.res_rsv_deel_dirtlevel = 0
                      AND TRUNC (rrd.res_rsv_deel_van) =
                            TRUNC (rrd.res_rsv_deel_tot)          -- Eendaags!
                      AND rrd.res_rsv_deel_tot BETWEEN ADD_MONTHS (
                                                          TRUNC (SYSDATE, 'mm'),
                                                          -25)
                                                   AND  TRUNC (SYSDATE, 'mm')
                      --     AND TO_CHAR (rrd.res_rsv_deel_tot, 'd') BETWEEN '2' AND '6'  dit laat reserveringen weg die er wel in horen?!
                      AND NOT EXISTS
                            (SELECT 1
                               FROM mld_vrije_dagen
                              WHERE TRUNC (mld_vrije_dagen_datum) =
                                       TRUNC (rrd.res_rsv_deel_tot))
                      --AND TO_CHAR (rrd.res_rsv_deel_van, 'hh24') < '17'
                      --AND TO_CHAR (rrd.res_rsv_deel_tot, 'hh24') > '08'
                      --AND rrd.bez_bezoekers_key IS NULL -- Geen parkeerplaatsen!
                      AND rrd.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key(+)
                      AND rrr.res_status_fo_key(+) IN (1, 2) -- Optie/Definitief
                      AND rrd.res_deel_key = rd.res_deel_key
                      AND rd.res_ins_deel_key = d.ins_deel_key
             --      AND COALESCE (d.ins_alg_ruimte_type_org, d.ins_alg_ruimte_type) = 'R' -- Noodzakelijk?
             GROUP BY TO_CHAR (rrd.res_rsv_deel_tot, 'yyyy-mm'),
                      rd.res_discipline_key,
                      ds.ins_discipline_omschrijving,
                      rd.res_deel_omschrijving,
                      rd.res_deel_key
             UNION ALL                            -- Meerdaagse voorzieningen!
               SELECT TO_CHAR (p.dag, 'yyyy-mm') mnd,
                      rd.res_discipline_key,
                      ds.ins_discipline_omschrijving,
                      rd.res_deel_omschrijving,
                      rd.res_deel_key resource_key,
                      COUNT ( distinct  rrr.res_reservering_key ) aant,
                      SUM(DECODE (
                             p.dag,
                             TRUNC (rrd.res_rsv_deel_van),
                             18
                             - GREATEST (
                                  (rrd.res_rsv_deel_van
                                   - TRUNC (rrd.res_rsv_deel_van))
                                  * 24,
                                  7),
                             TRUNC (rrd.res_rsv_deel_tot),
                             LEAST (
                                (rrd.res_rsv_deel_tot
                                 - TRUNC (rrd.res_rsv_deel_tot))
                                * 24,
                                18)
                             - 7,
                             11))                                    -- = 18-7
                         uren
                 FROM res_rsv_deel rrd,
                      res_rsv_ruimte rrr,
                      res_deel rd,
                      ins_deel d,
                      res_discipline ds,
                      (    SELECT TRUNC (SYSDATE, 'mm') - LEVEL dag
                             FROM DUAL
                       CONNECT BY LEVEL <=
                                     TRUNC (SYSDATE, 'mm')
                                     - ADD_MONTHS (TRUNC (SYSDATE, 'mm'), -25)) p
                WHERE     rrd.res_rsv_deel_verwijder IS NULL
                      AND rd.res_discipline_key = ds.ins_discipline_key
                      AND rrd.res_rsv_deel_dirtlevel = 0
                      AND TRUNC (rrd.res_rsv_deel_van) !=
                            TRUNC (rrd.res_rsv_deel_tot)         -- Meerdaags!
                      AND rrd.res_rsv_deel_tot BETWEEN ADD_MONTHS (
                                                          TRUNC (SYSDATE, 'mm'),
                                                          -25)
                                                   AND  TRUNC (SYSDATE, 'mm')
                      --AND TO_CHAR (rrd.res_rsv_deel_van, 'hh24') < '17'
                      --AND TO_CHAR (rrd.res_rsv_deel_tot, 'hh24') > '08'
                      --AND rrd.bez_bezoekers_key IS NULL -- Geen parkeerplaatsen!
                      AND rrd.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key(+)
                      AND rrr.res_status_fo_key(+) IN (1, 2) -- Optie/Definitief
                      AND rrd.res_deel_key = rd.res_deel_key
                      AND rd.res_ins_deel_key = d.ins_deel_key
                      --     AND COALESCE (d.ins_alg_ruimte_type_org, d.ins_alg_ruimte_type) = 'R' -- Noodzakelijk?
                      AND p.dag BETWEEN TRUNC (rrd.res_rsv_deel_van)
                                    AND  TRUNC (rrd.res_rsv_deel_tot)
                      AND TO_CHAR (p.dag, 'd') BETWEEN '2' AND '6'
                      AND NOT EXISTS
                            (SELECT 1
                               FROM mld_vrije_dagen
                              WHERE TRUNC (mld_vrije_dagen_datum) = TRUNC (p.dag))
             GROUP BY TO_CHAR (p.dag, 'yyyy-mm'),
                      rd.res_discipline_key,
                      ds.ins_discipline_omschrijving,
                      rd.res_deel_omschrijving,
                      rd.res_deel_key) resbez,
            res_discipline rd
      WHERE     resbes.mnd = resbez.mnd(+)
            AND resbes.res_discipline_key = resbez.res_discipline_key(+)
            AND resbes.res_deel_key = resbez.res_deel_key(+)
            AND resbes.res_discipline_key = rd.ins_discipline_key(+)
            AND  resbes.ins_discipline_omschrijving='Vervoersmiddelen'
            AND resbes.uren > 0 -- Soms 0 of zelfs negatief bij vreemde/gelijke begin- en eindtijden (van reserveerbare ruimte = res_ruimte)!
            AND COALESCE (resbez.tot_uren, 1) > 0 -- Soms 0 of zelfs negatief bij vreemde/gelijke begin- en eindtijden (van res_rsv_ruimte/deel)!
   GROUP BY resbes.mnd,
            resbes.ins_discipline_omschrijving,
            resbes.res_deel_omschrijving,
            resbes.uren
   ORDER BY resbes.mnd,
            resbes.ins_discipline_omschrijving,
            resbes.res_deel_omschrijving;

-- QUAW#39822 overzicht bezetting objecten niet van het soort vervoer (7-23 uur)
CREATE OR REPLACE VIEW QUAW_V_BEZETTING_OBJ
(
   MND,
   CATALOGUS,
   OBJECT,
   AANTAL_RES,
   BESCH_UREN,
   BEZ_UREN,
   PERC
)
AS
     SELECT resbes.mnd,
            resbes.ins_discipline_omschrijving,
            resbes.res_deel_omschrijving,
            SUM (resbez.aant) aantal_reserveringen,
            ROUND (resbes.uren, 2) bes_uren,
            SUM (ROUND (resbez.tot_uren, 2)) bez_uren,
            ROUND (
               ( (SUM (ROUND (resbez.tot_uren, 2))
                  / SUM (ROUND (resbes.uren, 2)))
                * 100),
               2)
               AS perc
       FROM ( --- aantal uren dat een object beschikbaar is per maand uitgaande van res_t1 (7) en res_t2 (23) en werkdagen
             SELECT  TO_CHAR (p.mnd, 'yyyy-mm') mnd,
                     rd.res_discipline_key,
                     ds.ins_discipline_omschrijving,
                     rd.res_deel_key,
                     rd.res_deel_omschrijving,
                     fac.count_work_days (p.mnd - 1, ADD_MONTHS (p.mnd, 1) - 1)
                     * 16                               -- bij quaw: 23-7 = 16
                        uren
                FROM res_deel rd,
                     ins_deel d,
                     res_discipline ds,
                     (    SELECT ADD_MONTHS (TRUNC (SYSDATE, 'mm'), LEVEL - 26) mnd
                            FROM DUAL
                      CONNECT BY LEVEL <= 25) p
               WHERE     rd.res_ins_deel_key = d.ins_deel_key
                     AND COALESCE (d.ins_alg_ruimte_type_org,
                                   d.ins_alg_ruimte_type) = 'R' -- Noodzakelijk?
                     AND rd.res_deel_aanmaak < ADD_MONTHS (p.mnd, 1)
                     AND (rd.res_deel_verwijder IS NULL
                          OR rd.res_deel_verwijder >= p.mnd)
                     AND rd.res_discipline_key = ds.ins_discipline_key) resbes,
            --- aantal reserveringen en totaal aantal uren dat een object 'bezet' is per maand uitgaande van res_t1 (7) en res_t2 (23) en werkdagen
            (  SELECT TO_CHAR (rrd.res_rsv_deel_tot, 'yyyy-mm') mnd,
                      rd.res_discipline_key,
                      ds.ins_discipline_omschrijving,
                      rd.res_deel_omschrijving,
                      rd.res_deel_key,
                      COUNT ( * ) aant,
                      SUM(LEAST (
                             (rrd.res_rsv_deel_tot - TRUNC (rrd.res_rsv_deel_tot))
                             * 24,
                             23)
                          - GREATEST (
                               (rrd.res_rsv_deel_van
                                - TRUNC (rrd.res_rsv_deel_van))
                               * 24,
                               7))
                         tot_uren
                 FROM res_rsv_deel rrd,
                      res_rsv_ruimte rrr,
                      res_deel rd,
                      ins_deel d,
                      res_discipline ds
                WHERE     rrd.res_rsv_deel_verwijder IS NULL
                      AND rd.res_discipline_key = ds.ins_discipline_key
                      AND rrd.res_rsv_deel_dirtlevel = 0
                      AND TRUNC (rrd.res_rsv_deel_van) =
                            TRUNC (rrd.res_rsv_deel_tot)          -- Eendaags!
                      AND rrd.res_rsv_deel_tot BETWEEN ADD_MONTHS (
                                                          TRUNC (SYSDATE, 'mm'),
                                                          -25)
                                                   AND  TRUNC (SYSDATE, 'mm')
                      --     AND TO_CHAR (rrd.res_rsv_deel_tot, 'd') BETWEEN '2' AND '6'  dit laat reserveringen weg die er wel in horen?!
                      AND NOT EXISTS
                            (SELECT 1
                               FROM mld_vrije_dagen
                              WHERE TRUNC (mld_vrije_dagen_datum) =
                                       TRUNC (rrd.res_rsv_deel_tot))
                      --AND TO_CHAR (rrd.res_rsv_deel_van, 'hh24') < '17'
                      --AND TO_CHAR (rrd.res_rsv_deel_tot, 'hh24') > '08'
                      --AND rrd.bez_bezoekers_key IS NULL -- Geen parkeerplaatsen!
                      AND rrd.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key(+)
                      AND rrr.res_status_fo_key(+) IN (1, 2) -- Optie/Definitief
                      AND rrd.res_deel_key = rd.res_deel_key
                      AND rd.res_ins_deel_key = d.ins_deel_key
             --      AND COALESCE (d.ins_alg_ruimte_type_org, d.ins_alg_ruimte_type) = 'R' -- Noodzakelijk?
             GROUP BY TO_CHAR (rrd.res_rsv_deel_tot, 'yyyy-mm'),
                      rd.res_discipline_key,
                      ds.ins_discipline_omschrijving,
                      rd.res_deel_omschrijving,
                      rd.res_deel_key
             UNION ALL                            -- Meerdaagse voorzieningen!
               SELECT TO_CHAR (p.dag, 'yyyy-mm') mnd,
                      rd.res_discipline_key,
                      ds.ins_discipline_omschrijving,
                      rd.res_deel_omschrijving,
                      rd.res_deel_key resource_key,
                      COUNT (DISTINCT rrr.res_reservering_key) aant,
                      SUM(DECODE (
                             p.dag,
                             TRUNC (rrd.res_rsv_deel_van),
                             23
                             - GREATEST (
                                  (rrd.res_rsv_deel_van
                                   - TRUNC (rrd.res_rsv_deel_van))
                                  * 24,
                                  7),
                             TRUNC (rrd.res_rsv_deel_tot),
                             LEAST (
                                (rrd.res_rsv_deel_tot
                                 - TRUNC (rrd.res_rsv_deel_tot))
                                * 24,
                                23)
                             - 7,
                             16))                                    -- = 23-7
                         uren
                 FROM res_rsv_deel rrd,
                      res_rsv_ruimte rrr,
                      res_deel rd,
                      ins_deel d,
                      res_discipline ds,
                      (    SELECT TRUNC (SYSDATE, 'mm') - LEVEL dag
                             FROM DUAL
                       CONNECT BY LEVEL <=
                                     TRUNC (SYSDATE, 'mm')
                                     - ADD_MONTHS (TRUNC (SYSDATE, 'mm'), -25)) p
                WHERE     rrd.res_rsv_deel_verwijder IS NULL
                      AND rd.res_discipline_key = ds.ins_discipline_key
                      AND rrd.res_rsv_deel_dirtlevel = 0
                      AND TRUNC (rrd.res_rsv_deel_van) !=
                            TRUNC (rrd.res_rsv_deel_tot)         -- Meerdaags!
                      AND rrd.res_rsv_deel_tot BETWEEN ADD_MONTHS (
                                                          TRUNC (SYSDATE, 'mm'),
                                                          -25)
                                                   AND  TRUNC (SYSDATE, 'mm')
                      --AND TO_CHAR (rrd.res_rsv_deel_van, 'hh24') < '17'
                      --AND TO_CHAR (rrd.res_rsv_deel_tot, 'hh24') > '08'
                      --AND rrd.bez_bezoekers_key IS NULL -- Geen parkeerplaatsen!
                      AND rrd.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key(+)
                      AND rrr.res_status_fo_key(+) IN (1, 2) -- Optie/Definitief
                      AND rrd.res_deel_key = rd.res_deel_key
                      AND rd.res_ins_deel_key = d.ins_deel_key
                      --     AND COALESCE (d.ins_alg_ruimte_type_org, d.ins_alg_ruimte_type) = 'R' -- Noodzakelijk?
                      AND p.dag BETWEEN TRUNC (rrd.res_rsv_deel_van)
                                    AND  TRUNC (rrd.res_rsv_deel_tot)
                      AND TO_CHAR (p.dag, 'd') BETWEEN '2' AND '6'
                      AND NOT EXISTS
                            (SELECT 1
                               FROM mld_vrije_dagen
                              WHERE TRUNC (mld_vrije_dagen_datum) = TRUNC (p.dag))
             GROUP BY TO_CHAR (p.dag, 'yyyy-mm'),
                      rd.res_discipline_key,
                      ds.ins_discipline_omschrijving,
                      rd.res_deel_omschrijving,
                      rd.res_deel_key) resbez,
            res_discipline rd
      WHERE     resbes.mnd = resbez.mnd(+)
            AND resbes.res_discipline_key = resbez.res_discipline_key(+)
            AND resbes.res_deel_key = resbez.res_deel_key(+)
            AND resbes.res_discipline_key = rd.ins_discipline_key(+)
            AND  resbes.ins_discipline_omschrijving <> 'Vervoersmiddelen'
            AND resbes.uren > 0 -- Soms 0 of zelfs negatief bij vreemde/gelijke begin- en eindtijden (van reserveerbare ruimte = res_ruimte)!
            AND COALESCE (resbez.tot_uren, 1) > 0 -- Soms 0 of zelfs negatief bij vreemde/gelijke begin- en eindtijden (van res_rsv_ruimte/deel)!
   GROUP BY resbes.mnd,
            resbes.ins_discipline_omschrijving,
            resbes.res_deel_omschrijving,
            resbes.uren
   ORDER BY resbes.mnd,
            resbes.ins_discipline_omschrijving,
            resbes.res_deel_omschrijving;

CREATE OR REPLACE VIEW QUAW_V_RAP_SLA_DETAIL
(
   prioriteit,
   meldingnr,
   opdracht,
   vakgroeptype,
   vakgroep,
   melding,
   onderwerp,
   omschrijving,
   afhandeling,
   startdatum,
   einddatum,
   doorlooptijd,
   status,
   melder,
   behandelaar,
   organisatie,
   oordeel,
   reden
)
AS
   SELECT prioriteittxt,
          meldingnummer,
          o.mld_opdr_id,
          soortmelding vakgroeptype,
          productgroep vakgroep,
          subproductgroep melding,
          COALESCE (km.fac_usrdata_omschr, m.onderwerp) onderwerp,
          vomschrijving,
          melding_opmerking,
          melding_datum,
          melding_afgemeld,
          doorlooptijd_werkdgn,
          melding_status,
          melder,
          behandelaar,
          prs_bedrijf_naam,
          rating,
          reden.fac_usrdata_omschr reden
     FROM mld_v_udr_melding m,
          (SELECT mo.mld_melding_key,
                  mo.mld_opdr_key,
                  mo.mld_opdr_id,
                  b.prs_bedrijf_naam
             FROM mld_opdr mo, prs_bedrijf b
            WHERE mo.mld_uitvoerende_keys = b.prs_bedrijf_key) o,
          (SELECT mld_melding_key, fac_usrdata_omschr
             FROM mld_kenmerkmelding km, fac_usrdata ud
            WHERE UD.FAC_USRDATA_key = mld_kenmerkmelding_waarde
                  AND mld_kenmerk_key IN
                           (3061,
                            3062,
                            3063,
                            3064,
                            3065,
                            3066,
                            3067,
                            3081,
                            3082,
                            3083,
                            3084)) km,
          (SELECT mld_melding_key, fac_usrdata_omschr
             FROM mld_kenmerkmelding km, fac_usrdata ud
            WHERE ud.fac_usrdata_key = mld_kenmerkmelding_waarde
                  AND mld_kenmerk_key IN
                           ('1501',
                            '2726',
                            '2724',
                            '2723',
                            '1411',
                            '1882',
                            '1884',
                            '1562',
                            '1885',
                            '1409',
                            '1506',
                            '1461',
                            '2843',
                            '2845',
                            '2861',
                            '2862',
                            '2864',
                            '2867',
                            '2868',
                            '3041',
                            '2844',
                            '2865',
                            '2863',
                            '1441',
                            '1442',
                            '1443',
                            '1444',
                            '1445',
                            '1446',
                            '1447',
                            '1545',
                            '1448',
                            '1481',
                            '2361',
                            '1483',
                            '1484',
                            '1485',
                            '1486',
                            '1896',
                            '1893',
                            '1502',
                            '1902',
                            '1503',
                            '1541',
                            '1542',
                            '1543',
                            '1901',
                            '1546',
                            '1505',
                            '1547',
                            '1548',
                            '1549',
                            '1504',
                            '1550',
                            '2041',
                            '1886',
                            '1426',
                            '1427',
                            '1428',
                            '1889',
                            '1887',
                            '1583',
                            '1888',
                            '1423',
                            '2001',
                            '1425',
                            '2846',
                            '2914',
                            '2922',
                            '2930',
                            '2946',
                            '2970',
                            '2955',
                            '3042',
                            '2906',
                            '2954',
                            '2971',
                            '1907',
                            '1908',
                            '1909',
                            '1910',
                            '1911',
                            '1913',
                            '1912',
                            '1914',
                            '1915',
                            '1916',
                            '1917',
                            '1918',
                            '1919',
                            '1920',
                            '1962',
                            '1921',
                            '1963',
                            '1964',
                            '2625',
                            '2624',
                            '1965',
                            '1981',
                            '1982',
                            '1984',
                            '1985',
                            '1924',
                            '1925',
                            '2623',
                            '1926',
                            '1521',
                            '1983')) reden
    WHERE     m.melding_key = o.mld_melding_key(+)
          AND m.melding_key = km.mld_melding_key(+)
          AND m.melding_key = reden.mld_melding_key(+);            

CREATE OR REPLACE VIEW QUAW_V_RAP_SLA_REDEN_AANVRAAG
AS
     SELECT soortmelding vakgroeptype,
            productgroep vakgroep,
            subproductgroep melding,
            reden.fac_usrdata_omschr reden,
            COUNT (meldingnummer) aant_mld,
            SUM (CASE prioriteit WHEN 1 THEN 1 ELSE 0 END) aant_prio_kritiek,
            SUM (CASE prioriteit WHEN 2 THEN 1 ELSE 0 END) aant_prio_hoog,
            SUM (CASE prioriteit WHEN 3 THEN 1 ELSE 0 END) aant_prio_normaal,
            SUM (CASE prioriteit WHEN 4 THEN 1 ELSE 0 END) aant_prio_laag,
            SUM(CASE
                   WHEN prioriteit = 1 AND uitvoering_sla_optijd = 'nee' THEN 1
                   ELSE 0
                END)
               sla_overschr_kritiek,
            SUM(CASE
                   WHEN prioriteit = 2 AND uitvoering_sla_optijd = 'nee' THEN 1
                   ELSE 0
                END)
               sla_overschr_hoog,
            SUM(CASE
                   WHEN prioriteit = 3 AND uitvoering_sla_optijd = 'nee' THEN 1
                   ELSE 0
                END)
               sla_overschr_normaal,
            SUM(CASE
                   WHEN prioriteit = 4 AND uitvoering_sla_optijd = 'nee' THEN 1
                   ELSE 0
                END)
               sla_overschr_laag,
            (NULLIF (
                (SUM(CASE
                        WHEN prioriteit = 1 AND uitvoering_sla_optijd = 'nee'
                        THEN
                           1
                        ELSE
                           0
                     END)),
                0)
             / (NULLIF ( (SUM (CASE prioriteit WHEN 1 THEN 1 ELSE 0 END)), 0)))
            * 100
               AS perc_overschr_kritiek,
            (NULLIF (
                (SUM(CASE
                        WHEN prioriteit = 2 AND uitvoering_sla_optijd = 'nee'
                        THEN
                           1
                        ELSE
                           0
                     END)),
                0)
             / (NULLIF ( (SUM (CASE prioriteit WHEN 2 THEN 1 ELSE 0 END)), 0)))
            * 100
               AS perc_overschr_hoog,
            (NULLIF (
                (SUM(CASE
                        WHEN prioriteit = 3 AND uitvoering_sla_optijd = 'nee'
                        THEN
                           1
                        ELSE
                           0
                     END)),
                0)
             / (NULLIF ( (SUM (CASE prioriteit WHEN 3 THEN 1 ELSE 0 END)), 0)))
            * 100
               AS perc_overschr_normaal,
            (NULLIF (
                (SUM(CASE
                        WHEN prioriteit = 4 AND uitvoering_sla_optijd = 'nee'
                        THEN
                           1
                        ELSE
                           0
                     END)),
                0)
             / (NULLIF ( (SUM (CASE prioriteit WHEN 4 THEN 1 ELSE 0 END)), 0)))
            * 100
               AS perc_overschr_laag,
            NULLIF (
               SUM(CASE
                      WHEN prioriteit = 1 AND uitvoering_sla_optijd = 'nee'
                      THEN
                         uitvoering_sla_dagen
                      ELSE
                         0
                   END),
               0)
            / NULLIF (
                 SUM(CASE
                        WHEN prioriteit = 1 AND uitvoering_sla_optijd = 'nee'
                        THEN
                           1
                        ELSE
                           0
                     END),
                 0)
               AS gem_overschrtijd_kritiek,
            NULLIF (
               SUM(CASE
                      WHEN prioriteit = 2 AND uitvoering_sla_optijd = 'nee'
                      THEN
                         uitvoering_sla_dagen
                      ELSE
                         0
                   END),
               0)
            / NULLIF (
                 SUM(CASE
                        WHEN prioriteit = 2 AND uitvoering_sla_optijd = 'nee'
                        THEN
                           1
                        ELSE
                           0
                     END),
                 0)
               AS gem_overschrtijd_hoog,
            NULLIF (
               SUM(CASE
                      WHEN prioriteit = 3 AND uitvoering_sla_optijd = 'nee'
                      THEN
                         uitvoering_sla_dagen
                      ELSE
                         0
                   END),
               0)
            / NULLIF (
                 SUM(CASE
                        WHEN prioriteit = 3 AND uitvoering_sla_optijd = 'nee'
                        THEN
                           1
                        ELSE
                           0
                     END),
                 0)
               AS gem_overschrtijd_normaal,
            NULLIF (
               SUM(CASE
                      WHEN prioriteit = 4 AND uitvoering_sla_optijd = 'nee'
                      THEN
                         uitvoering_sla_dagen
                      ELSE
                         0
                   END),
               0)
            / NULLIF (
                 SUM(CASE
                        WHEN prioriteit = 4 AND uitvoering_sla_optijd = 'nee'
                        THEN
                           1
                        ELSE
                           0
                     END),
                 0)
               AS gem_overschrtijd_laag
       FROM mld_v_udr_melding m,
            (SELECT mld_melding_key, fac_usrdata_omschr
               FROM mld_kenmerkmelding km, fac_usrdata ud
              WHERE ud.fac_usrdata_key = mld_kenmerkmelding_waarde
                    AND mld_kenmerk_key IN
                             (1501,
                              2726,
                              2724,
                              2723,
                              1411,
                              1882,
                              1884,
                              1562,
                              1885,
                              1409,
                              1506,
                              1461,
                              2843,
                              2844,
                              2845,
                              2861,
                              2862,
                              2866,
                              2864,
                              2865,
                              2868,
                              2867,
                              2863,
                              1441,
                              1442,
                              1443,
                              1444,
                              1445,
                              1446,
                              1447,
                              1545,
                              1448,
                              1481,
                              2361,
                              1483,
                              1484,
                              1485,
                              1486,
                              1896,
                              1892,
                              1893,
                              1894,
                              1895,
                              1502,
                              1902,
                              1503,
                              1541,
                              1542,
                              1543,
                              1901,
                              1546,
                              1505,
                              1547,
                              1548,
                              1549,
                              1504,
                              1550)) reden
      WHERE m.melding_key = reden.mld_melding_key(+)
            AND m.melding_status = 'Afgemeld'
   GROUP BY soortmelding,
            productgroep,
            subproductgroep,
            reden.fac_usrdata_omschr
   ORDER BY soortmelding,
            productgroep,
            subproductgroep,
            reden.fac_usrdata_omschr;

CREATE OR REPLACE VIEW QUAW_V_RAP_SLA_REDEN_STORING
AS
     SELECT soortmelding vakgroeptype,
            productgroep vakgroep,
            subproductgroep melding,
            reden.fac_usrdata_omschr reden,
            COUNT (meldingnummer) aant_mld,
            SUM (CASE prioriteit WHEN 1 THEN 1 ELSE 0 END) aant_prio_kritiek,
            SUM (CASE prioriteit WHEN 2 THEN 1 ELSE 0 END) aant_prio_hoog,
            SUM (CASE prioriteit WHEN 3 THEN 1 ELSE 0 END) aant_prio_normaal,
            SUM (CASE prioriteit WHEN 4 THEN 1 ELSE 0 END) aant_prio_laag,
            SUM(CASE
                   WHEN prioriteit = 1 AND uitvoering_sla_optijd = 'nee' THEN 1
                   ELSE 0
                END)
               sla_overschr_kritiek,
            SUM(CASE
                   WHEN prioriteit = 2 AND uitvoering_sla_optijd = 'nee' THEN 1
                   ELSE 0
                END)
               sla_overschr_hoog,
            SUM(CASE
                   WHEN prioriteit = 3 AND uitvoering_sla_optijd = 'nee' THEN 1
                   ELSE 0
                END)
               sla_overschr_normaal,
            SUM(CASE
                   WHEN prioriteit = 4 AND uitvoering_sla_optijd = 'nee' THEN 1
                   ELSE 0
                END)
               sla_overschr_laag,
            (NULLIF (
                (SUM(CASE
                        WHEN prioriteit = 1 AND uitvoering_sla_optijd = 'nee'
                        THEN
                           1
                        ELSE
                           0
                     END)),
                0)
             / (NULLIF ( (SUM (CASE prioriteit WHEN 1 THEN 1 ELSE 0 END)), 0)))
            * 100
               AS perc_overschr_kritiek,
            (NULLIF (
                (SUM(CASE
                        WHEN prioriteit = 2 AND uitvoering_sla_optijd = 'nee'
                        THEN
                           1
                        ELSE
                           0
                     END)),
                0)
             / (NULLIF ( (SUM (CASE prioriteit WHEN 2 THEN 1 ELSE 0 END)), 0)))
            * 100
               AS perc_overschr_hoog,
            (NULLIF (
                (SUM(CASE
                        WHEN prioriteit = 3 AND uitvoering_sla_optijd = 'nee'
                        THEN
                           1
                        ELSE
                           0
                     END)),
                0)
             / (NULLIF ( (SUM (CASE prioriteit WHEN 3 THEN 1 ELSE 0 END)), 0)))
            * 100
               AS perc_overschr_normaal,
            (NULLIF (
                (SUM(CASE
                        WHEN prioriteit = 4 AND uitvoering_sla_optijd = 'nee'
                        THEN
                           1
                        ELSE
                           0
                     END)),
                0)
             / (NULLIF ( (SUM (CASE prioriteit WHEN 4 THEN 1 ELSE 0 END)), 0)))
            * 100
               AS perc_overschr_laag,
            NULLIF (
               SUM(CASE
                      WHEN prioriteit = 1 AND uitvoering_sla_optijd = 'nee'
                      THEN
                         uitvoering_sla_dagen
                      ELSE
                         0
                   END),
               0)
            / NULLIF (
                 SUM(CASE
                        WHEN prioriteit = 1 AND uitvoering_sla_optijd = 'nee'
                        THEN
                           1
                        ELSE
                           0
                     END),
                 0)
               AS gem_overschrtijd_kritiek,
            NULLIF (
               SUM(CASE
                      WHEN prioriteit = 2 AND uitvoering_sla_optijd = 'nee'
                      THEN
                         uitvoering_sla_dagen
                      ELSE
                         0
                   END),
               0)
            / NULLIF (
                 SUM(CASE
                        WHEN prioriteit = 2 AND uitvoering_sla_optijd = 'nee'
                        THEN
                           1
                        ELSE
                           0
                     END),
                 0)
               AS gem_overschrtijd_hoog,
            NULLIF (
               SUM(CASE
                      WHEN prioriteit = 3 AND uitvoering_sla_optijd = 'nee'
                      THEN
                         uitvoering_sla_dagen
                      ELSE
                         0
                   END),
               0)
            / NULLIF (
                 SUM(CASE
                        WHEN prioriteit = 3 AND uitvoering_sla_optijd = 'nee'
                        THEN
                           1
                        ELSE
                           0
                     END),
                 0)
               AS gem_overschrtijd_normaal,
            NULLIF (
               SUM(CASE
                      WHEN prioriteit = 4 AND uitvoering_sla_optijd = 'nee'
                      THEN
                         uitvoering_sla_dagen
                      ELSE
                         0
                   END),
               0)
            / NULLIF (
                 SUM(CASE
                        WHEN prioriteit = 4 AND uitvoering_sla_optijd = 'nee'
                        THEN
                           1
                        ELSE
                           0
                     END),
                 0)
               AS gem_overschrtijd_laag
       FROM mld_v_udr_melding m,
            (SELECT mld_melding_key, fac_usrdata_omschr
               FROM mld_kenmerkmelding km, fac_usrdata ud
              WHERE ud.fac_usrdata_key = mld_kenmerkmelding_waarde
                    AND mld_kenmerk_key IN
                             (2041,
                              1886,
                              1426,
                              1427,
                              1428,
                              1889,
                              1887,
                              1583,
                              1888,
                              1423,
                              2001,
                              1425,
                              2846,
                              2906,
                              2914,
                              2922,
                              2930,
                              2938,
                              2946,
                              2954,
                              2955,
                              2970,
                              2971,
                              1907,
                              1908,
                              1909,
                              1910,
                              1911,
                              1913,
                              1912,
                              1914,
                              1915,
                              1916,
                              1917,
                              1918,
                              1919,
                              1920,
                              1962,
                              1921,
                              1963,
                              1964,
                              2625,
                              2624,
                              1965,
                              1981,
                              1982,
                              1984,
                              1985,
                              1924,
                              1925,
                              2623,
                              1926,
                              1521,
                              1983)) reden
      WHERE m.melding_key = reden.mld_melding_key(+) 
            AND m.melding_status = 'Afgemeld'
   GROUP BY soortmelding,
            productgroep,
            subproductgroep,
            reden.fac_usrdata_omschr
   ORDER BY soortmelding,
            productgroep,
            subproductgroep,
            reden.fac_usrdata_omschr;


CREATE OR REPLACE VIEW QUAW_V_RAP_SLA_BEHANDELAAR
AS
     SELECT soortmelding vakgroeptype,
            productgroep vakgroep,
            subproductgroep melding,
            behandelaar,
            COUNT (meldingnummer) aant_mld,
            SUM (CASE prioriteit WHEN 1 THEN 1 ELSE 0 END) aant_prio_kritiek,
            SUM (CASE prioriteit WHEN 2 THEN 1 ELSE 0 END) aant_prio_hoog,
            SUM (CASE prioriteit WHEN 3 THEN 1 ELSE 0 END) aant_prio_normaal,
            SUM (CASE prioriteit WHEN 4 THEN 1 ELSE 0 END) aant_prio_laag,
            SUM(CASE
                   WHEN prioriteit = 1 AND uitvoering_sla_optijd = 'nee' THEN 1
                   ELSE 0
                END)
               sla_overschr_kritiek,
            SUM(CASE
                   WHEN prioriteit = 2 AND uitvoering_sla_optijd = 'nee' THEN 1
                   ELSE 0
                END)
               sla_overschr_hoog,
            SUM(CASE
                   WHEN prioriteit = 3 AND uitvoering_sla_optijd = 'nee' THEN 1
                   ELSE 0
                END)
               sla_overschr_normaal,
            SUM(CASE
                   WHEN prioriteit = 4 AND uitvoering_sla_optijd = 'nee' THEN 1
                   ELSE 0
                END)
               sla_overschr_laag,
            (NULLIF (
                (SUM(CASE
                        WHEN prioriteit = 1 AND uitvoering_sla_optijd = 'nee'
                        THEN
                           1
                        ELSE
                           0
                     END)),
                0)
             / (NULLIF ( (SUM (CASE prioriteit WHEN 1 THEN 1 ELSE 0 END)), 0)))
            * 100
               AS perc_overschr_kritiek,
            (NULLIF (
                (SUM(CASE
                        WHEN prioriteit = 2 AND uitvoering_sla_optijd = 'nee'
                        THEN
                           1
                        ELSE
                           0
                     END)),
                0)
             / (NULLIF ( (SUM (CASE prioriteit WHEN 2 THEN 1 ELSE 0 END)), 0)))
            * 100
               AS perc_overschr_hoog,
            (NULLIF (
                (SUM(CASE
                        WHEN prioriteit = 3 AND uitvoering_sla_optijd = 'nee'
                        THEN
                           1
                        ELSE
                           0
                     END)),
                0)
             / (NULLIF ( (SUM (CASE prioriteit WHEN 3 THEN 1 ELSE 0 END)), 0)))
            * 100
               AS perc_overschr_normaal,
            (NULLIF (
                (SUM(CASE
                        WHEN prioriteit = 4 AND uitvoering_sla_optijd = 'nee'
                        THEN
                           1
                        ELSE
                           0
                     END)),
                0)
             / (NULLIF ( (SUM (CASE prioriteit WHEN 4 THEN 1 ELSE 0 END)), 0)))
            * 100
               AS perc_overschr_laag,
            NULLIF (
               SUM(CASE
                      WHEN prioriteit = 1 AND uitvoering_sla_optijd = 'nee'
                      THEN
                         uitvoering_sla_dagen
                      ELSE
                         0
                   END),
               0)
            / NULLIF (
                 SUM(CASE
                        WHEN prioriteit = 1 AND uitvoering_sla_optijd = 'nee'
                        THEN
                           1
                        ELSE
                           0
                     END),
                 0)
               AS gem_overschrtijd_kritiek,
            NULLIF (
               SUM(CASE
                      WHEN prioriteit = 2 AND uitvoering_sla_optijd = 'nee'
                      THEN
                         uitvoering_sla_dagen
                      ELSE
                         0
                   END),
               0)
            / NULLIF (
                 SUM(CASE
                        WHEN prioriteit = 2 AND uitvoering_sla_optijd = 'nee'
                        THEN
                           1
                        ELSE
                           0
                     END),
                 0)
               AS gem_overschrtijd_hoog,
            NULLIF (
               SUM(CASE
                      WHEN prioriteit = 3 AND uitvoering_sla_optijd = 'nee'
                      THEN
                         uitvoering_sla_dagen
                      ELSE
                         0
                   END),
               0)
            / NULLIF (
                 SUM(CASE
                        WHEN prioriteit = 3 AND uitvoering_sla_optijd = 'nee'
                        THEN
                           1
                        ELSE
                           0
                     END),
                 0)
               AS gem_overschrtijd_normaal,
            NULLIF (
               SUM(CASE
                      WHEN prioriteit = 4 AND uitvoering_sla_optijd = 'nee'
                      THEN
                         uitvoering_sla_dagen
                      ELSE
                         0
                   END),
               0)
            / NULLIF (
                 SUM(CASE
                        WHEN prioriteit = 4 AND uitvoering_sla_optijd = 'nee'
                        THEN
                           1
                        ELSE
                           0
                     END),
                 0)
               AS gem_overschrtijd_laag
       FROM mld_v_udr_melding m
      WHERE m.melding_status = 'Afgemeld'
   GROUP BY soortmelding,
            productgroep,
            subproductgroep,
            behandelaar
   ORDER BY soortmelding,
            productgroep,
            subproductgroep,
            behandelaar;


CREATE OR REPLACE VIEW QUAW_V_RAP_SLA_MELDER
AS
     SELECT soortmelding vakgroeptype,
            productgroep vakgroep,
            subproductgroep melding,
            melder,
            COUNT (meldingnummer) aant_mld,
            SUM (CASE prioriteit WHEN 1 THEN 1 ELSE 0 END) aant_prio_kritiek,
            SUM (CASE prioriteit WHEN 2 THEN 1 ELSE 0 END) aant_prio_hoog,
            SUM (CASE prioriteit WHEN 3 THEN 1 ELSE 0 END) aant_prio_normaal,
            SUM (CASE prioriteit WHEN 4 THEN 1 ELSE 0 END) aant_prio_laag,
            SUM(CASE
                   WHEN prioriteit = 1 AND uitvoering_sla_optijd = 'nee' THEN 1
                   ELSE 0
                END)
               sla_overschr_kritiek,
            SUM(CASE
                   WHEN prioriteit = 2 AND uitvoering_sla_optijd = 'nee' THEN 1
                   ELSE 0
                END)
               sla_overschr_hoog,
            SUM(CASE
                   WHEN prioriteit = 3 AND uitvoering_sla_optijd = 'nee' THEN 1
                   ELSE 0
                END)
               sla_overschr_normaal,
            SUM(CASE
                   WHEN prioriteit = 4 AND uitvoering_sla_optijd = 'nee' THEN 1
                   ELSE 0
                END)
               sla_overschr_laag,
            (NULLIF (
                (SUM(CASE
                        WHEN prioriteit = 1 AND uitvoering_sla_optijd = 'nee'
                        THEN
                           1
                        ELSE
                           0
                     END)),
                0)
             / (NULLIF ( (SUM (CASE prioriteit WHEN 1 THEN 1 ELSE 0 END)), 0)))
            * 100
               AS perc_overschr_kritiek,
            (NULLIF (
                (SUM(CASE
                        WHEN prioriteit = 2 AND uitvoering_sla_optijd = 'nee'
                        THEN
                           1
                        ELSE
                           0
                     END)),
                0)
             / (NULLIF ( (SUM (CASE prioriteit WHEN 2 THEN 1 ELSE 0 END)), 0)))
            * 100
               AS perc_overschr_hoog,
            (NULLIF (
                (SUM(CASE
                        WHEN prioriteit = 3 AND uitvoering_sla_optijd = 'nee'
                        THEN
                           1
                        ELSE
                           0
                     END)),
                0)
             / (NULLIF ( (SUM (CASE prioriteit WHEN 3 THEN 1 ELSE 0 END)), 0)))
            * 100
               AS perc_overschr_normaal,
            (NULLIF (
                (SUM(CASE
                        WHEN prioriteit = 4 AND uitvoering_sla_optijd = 'nee'
                        THEN
                           1
                        ELSE
                           0
                     END)),
                0)
             / (NULLIF ( (SUM (CASE prioriteit WHEN 4 THEN 1 ELSE 0 END)), 0)))
            * 100
               AS perc_overschr_laag,
            NULLIF (
               SUM(CASE
                      WHEN prioriteit = 1 AND uitvoering_sla_optijd = 'nee'
                      THEN
                         uitvoering_sla_dagen
                      ELSE
                         0
                   END),
               0)
            / NULLIF (
                 SUM(CASE
                        WHEN prioriteit = 1 AND uitvoering_sla_optijd = 'nee'
                        THEN
                           1
                        ELSE
                           0
                     END),
                 0)
               AS gem_overschrtijd_kritiek,
            NULLIF (
               SUM(CASE
                      WHEN prioriteit = 2 AND uitvoering_sla_optijd = 'nee'
                      THEN
                         uitvoering_sla_dagen
                      ELSE
                         0
                   END),
               0)
            / NULLIF (
                 SUM(CASE
                        WHEN prioriteit = 2 AND uitvoering_sla_optijd = 'nee'
                        THEN
                           1
                        ELSE
                           0
                     END),
                 0)
               AS gem_overschrtijd_hoog,
            NULLIF (
               SUM(CASE
                      WHEN prioriteit = 3 AND uitvoering_sla_optijd = 'nee'
                      THEN
                         uitvoering_sla_dagen
                      ELSE
                         0
                   END),
               0)
            / NULLIF (
                 SUM(CASE
                        WHEN prioriteit = 3 AND uitvoering_sla_optijd = 'nee'
                        THEN
                           1
                        ELSE
                           0
                     END),
                 0)
               AS gem_overschrtijd_normaal,
            NULLIF (
               SUM(CASE
                      WHEN prioriteit = 4 AND uitvoering_sla_optijd = 'nee'
                      THEN
                         uitvoering_sla_dagen
                      ELSE
                         0
                   END),
               0)
            / NULLIF (
                 SUM(CASE
                        WHEN prioriteit = 4 AND uitvoering_sla_optijd = 'nee'
                        THEN
                           1
                        ELSE
                           0
                     END),
                 0)
               AS gem_overschrtijd_laag
       FROM mld_v_udr_melding m
      WHERE m.melding_status = 'Afgemeld'
   GROUP BY soortmelding,
            productgroep,
            subproductgroep,
            melder
   ORDER BY soortmelding,
            productgroep,
            subproductgroep,
            melder;


-- QUAW#55035 Links genereren naar kennisbankitems. -daanb
CREATE OR REPLACE  VIEW QUAW_V_RAP_FAQ_LINK
(
KENNISBANK_KEY,
KENNISBANK_VRAAG,
KENNISBANK_ANTWOORD,
KENNISBANK_LINK
)
AS
SELECT f.fac_faq_key,
f.fac_faq_question,
f.fac_faq_answer,
  'https://'
           || LOWER ((SELECT fac_version_cust FROM fac_version))
           || '.facilitor.nl/appl/fac/fac_faq.asp?faq_key='
           || f.fac_faq_key
           || CHR (38)
           || 'role=bo'
           || CHR (38)
           || 'sso=1'
FROM fac_faq f ORDER BY f.fac_faq_key;





CREATE OR REPLACE VIEW QUAW_V_RAP_SLA_EXT_UITVOERENDE
AS
     SELECT soortmelding vakgroeptype,
            productgroep vakgroep,
            subproductgroep melding,
            prs_bedrijf_naam,
            SUM (o.aantal) aant_opdr,
            COUNT (meldingnummer) aantal_mld,
            SUM (CASE prioriteit WHEN 1 THEN 1 ELSE 0 END) aant_prio_kritiek,
            SUM (CASE prioriteit WHEN 2 THEN 1 ELSE 0 END) aant_prio_hoog,
            SUM (CASE prioriteit WHEN 3 THEN 1 ELSE 0 END) aant_prio_normaal,
            SUM (CASE prioriteit WHEN 4 THEN 1 ELSE 0 END) aant_prio_laag,
            SUM(CASE
                   WHEN prioriteit = 1 AND uitvoering_sla_optijd = 'nee' THEN 1
                   ELSE 0
                END)
               sla_overschr_kritiek,
            SUM(CASE
                   WHEN prioriteit = 2 AND uitvoering_sla_optijd = 'nee' THEN 1
                   ELSE 0
                END)
               sla_overschr_hoog,
            SUM(CASE
                   WHEN prioriteit = 3 AND uitvoering_sla_optijd = 'nee' THEN 1
                   ELSE 0
                END)
               sla_overschr_normaal,
            SUM(CASE
                   WHEN prioriteit = 4 AND uitvoering_sla_optijd = 'nee' THEN 1
                   ELSE 0
                END)
               sla_overschr_laag,
            (NULLIF (
                (SUM(CASE
                        WHEN prioriteit = 1 AND uitvoering_sla_optijd = 'nee'
                        THEN
                           1
                        ELSE
                           0
                     END)),
                0)
             / (NULLIF ( (SUM (CASE prioriteit WHEN 1 THEN 1 ELSE 0 END)), 0)))
            * 100
               AS perc_overschr_kritiek,
            (NULLIF (
                (SUM(CASE
                        WHEN prioriteit = 2 AND uitvoering_sla_optijd = 'nee'
                        THEN
                           1
                        ELSE
                           0
                     END)),
                0)
             / (NULLIF ( (SUM (CASE prioriteit WHEN 2 THEN 1 ELSE 0 END)), 0)))
            * 100
               AS perc_overschr_hoog,
            (NULLIF (
                (SUM(CASE
                        WHEN prioriteit = 3 AND uitvoering_sla_optijd = 'nee'
                        THEN
                           1
                        ELSE
                           0
                     END)),
                0)
             / (NULLIF ( (SUM (CASE prioriteit WHEN 3 THEN 1 ELSE 0 END)), 0)))
            * 100
               AS perc_overschr_normaal,
            (NULLIF (
                (SUM(CASE
                        WHEN prioriteit = 4 AND uitvoering_sla_optijd = 'nee'
                        THEN
                           1
                        ELSE
                           0
                     END)),
                0)
             / (NULLIF ( (SUM (CASE prioriteit WHEN 4 THEN 1 ELSE 0 END)), 0)))
            * 100
               AS perc_overschr_laag,
            NULLIF (
               SUM(CASE
                      WHEN prioriteit = 1 AND uitvoering_sla_optijd = 'nee'
                      THEN
                         uitvoering_sla_dagen
                      ELSE
                         0
                   END),
               0)
            / NULLIF (
                 SUM(CASE
                        WHEN prioriteit = 1 AND uitvoering_sla_optijd = 'nee'
                        THEN
                           1
                        ELSE
                           0
                     END),
                 0)
               AS gem_overschrtijd_kritiek,
            NULLIF (
               SUM(CASE
                      WHEN prioriteit = 2 AND uitvoering_sla_optijd = 'nee'
                      THEN
                         uitvoering_sla_dagen
                      ELSE
                         0
                   END),
               0)
            / NULLIF (
                 SUM(CASE
                        WHEN prioriteit = 2 AND uitvoering_sla_optijd = 'nee'
                        THEN
                           1
                        ELSE
                           0
                     END),
                 0)
               AS gem_overschrtijd_hoog,
            NULLIF (
               SUM(CASE
                      WHEN prioriteit = 3 AND uitvoering_sla_optijd = 'nee'
                      THEN
                         uitvoering_sla_dagen
                      ELSE
                         0
                   END),
               0)
            / NULLIF (
                 SUM(CASE
                        WHEN prioriteit = 3 AND uitvoering_sla_optijd = 'nee'
                        THEN
                           1
                        ELSE
                           0
                     END),
                 0)
               AS gem_overschrtijd_normaal,
            NULLIF (
               SUM(CASE
                      WHEN prioriteit = 4 AND uitvoering_sla_optijd = 'nee'
                      THEN
                         uitvoering_sla_dagen
                      ELSE
                         0
                   END),
               0)
            / NULLIF (
                 SUM(CASE
                        WHEN prioriteit = 4 AND uitvoering_sla_optijd = 'nee'
                        THEN
                           1
                        ELSE
                           0
                     END),
                 0)
               AS gem_overschrtijd_laag
       FROM mld_v_udr_melding m,
            (  SELECT b.prs_bedrijf_naam,
                      mo.mld_melding_key,
                      COUNT (mo.mld_opdr_key) AS aantal
                 FROM mld_opdr mo, prs_bedrijf b
                WHERE mo.mld_uitvoerende_keys = b.prs_bedrijf_key
             GROUP BY b.prs_bedrijf_naam, mo.mld_melding_key) o
      WHERE m.melding_status = 'Afgemeld' AND m.melding_key = o.mld_melding_key
   GROUP BY soortmelding,
            productgroep,
            subproductgroep,
            prs_bedrijf_naam
   ORDER BY soortmelding,
            productgroep,
            subproductgroep,
            prs_bedrijf_naam;            
                                                            
COMMIT;

BEGIN
   DBMS_UTILITY.COMPILE_SCHEMA (USER, FALSE);
END;
/

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