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

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

SET ECHO ON
SET DEFINE ON
COLUMN fcltlogfile NEW_VALUE fcltlogfile NOPRINT;
WHENEVER SQLERROR EXIT;
SELECT adm.scriptspoolfile('&dbuser', '&thisfile') AS fcltlogfile FROM DUAL;
WHENEVER SQLERROR CONTINUE;
SPOOL &fcltlogfile
SET DEFINE OFF

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

--
-- Personen import
--

CREATE OR REPLACE PROCEDURE apgr_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_newline                 FAC_IMP_FILE.FAC_IMP_FILE_LINE%TYPE;
   
   CURSOR c1
       IS
       SELECT l.alg_locatie_code,
                  pw.alg_gebouw_code,
                  pw.alg_verdieping_volgnr,
                  pw.alg_ruimte_nr,
                  p.prs_perslid_oslogin
             FROM prs_v_perslidwerkplek_gegevens pw,
                  prs_perslid p,
                  alg_locatie l,
                  fac_imp_perslid f
            WHERE p.prs_perslid_key = pw.prs_perslid_key
                  AND pw.alg_locatie_key = l.alg_locatie_key
                  AND UPPER (p.prs_perslid_oslogin) =
                        UPPER (f.prs_perslid_oslogin)
                  AND p.prs_perslid_verwijder IS NULL;
 
BEGIN
                  
   BEGIN
      SELECT fac_imp_file_line
        INTO v_newline
        FROM fac_imp_file
       WHERE fac_import_key = p_import_key
         AND fac_imp_file_index = 1;

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

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

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


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


   v_errorhint := 'Generieke update';
   -- de sequence array staat beschreven in PRS_PAC.SRC bij de prs.import_perslid proc
   prs.import_perslid (p_import_key,
                       '0;0;0;0;0;0;8;11;0;6;' ||
                       '0;0;0;0;0;10;5;4;0;0;' ||
                       '1;9;0;0;0;0;3;0;0;0;'||
                       '0;0;0;0;0;0;0;0;0;0;'||
                       '0;0;0;0;0;0',
                       'title;Type;Group;mail;telephoneNumber;givenName;company;department;sAMAccountName;ipPhone;sn%'
                       );       
       
-- Handmatig ingelezen prs_perslid_nr behouden, deze staat niet in de AD export
UPDATE fac_imp_perslid
   SET prs_perslid_nr =
          (SELECT p.prs_perslid_nr
             FROM prs_v_perslid_gegevens p
            WHERE UPPER (fac_imp_perslid.prs_perslid_oslogin) =
                     UPPER (p.prs_perslid_oslogin));

-- De AD export kent geen plaatsgegevens, dus deze moeten behouden blijven uit de handmatige prs import

BEGIN
FOR rec in c1
LOOP                  
   UPDATE fac_imp_perslid
   SET
       alg_locatie_code = rec.alg_locatie_code,
       alg_gebouw_code = rec.alg_gebouw_code,
       alg_verdieping_volgnr = rec.alg_verdieping_volgnr,
       alg_ruimte_nr = rec.alg_ruimte_nr
   WHERE UPPER (prs_perslid_oslogin) = UPPER (rec.prs_perslid_oslogin);
END LOOP;
END;    
  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 apgr_import_prs;
/

CREATE OR REPLACE PROCEDURE apgr_update_prs (
   p_import_key IN NUMBER
) IS
  -- Alle personen verwijderen die niet meer in import bestand voorkomen.
  CURSOR c_del
  IS
      SELECT p.prs_perslid_key, p.prs_perslid_oslogin, pf.prs_perslid_naam_full
        FROM fac_imp_perslid i, prs_perslid p, prs_v_perslid_fullnames_all pf
       WHERE UPPER (p.prs_perslid_oslogin) = UPPER (i.prs_perslid_oslogin(+))
         AND pf.prs_perslid_key = p.prs_perslid_key
         AND p.prs_perslid_oslogin IS NOT NULL
         AND i.prs_perslid_oslogin IS NULL
         AND p.prs_perslid_verwijder IS NULL
         AND substr(p.prs_perslid_oslogin, 1, 1) != '_'
    ORDER BY 2;

  v_count           NUMBER;

BEGIN
    -- generic update

    SELECT count(*)
      INTO v_count
      FROM fac_imp_perslid;

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

  -- 'LOGIN' betekent dat op basis van OSLOGIN wordt gematched.
  -- 'A' betekent altijd alle (andere/overige) werkplekken verwijderen
  prs.update_perslid (p_import_key, 'LOGIN', NULL);
  
  apgr_post_update_prs(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 apgr_update_prs;
/

CREATE OR REPLACE PROCEDURE apgr_post_update_prs (p_import_key IN NUMBER)
AS
 -- Personen die in de ADgroup "FMIS_Personeel" zitten moeten de autorisatie "Personeel"(4) krijgen (als ze dat al niet hebben).
 -- Hetzelfde geldt voor de groepen "Frontend"(5), "Directie"(6), "Backoffice"(7) en "Applicatiebeheer"(8)
                     
  CURSOR c_auth_personeel
  IS
     SELECT DISTINCT f.prs_perslid_key, f.prs_kenmerk1, DECODE (sub.aantal, NULL, 0, sub.aantal) aantal
       FROM fac_imp_perslid f,
            (  SELECT DISTINCT prs_perslid_key, COUNT (prs_perslid_key) aantal
                 FROM fac_gebruikersgroep
             GROUP BY prs_perslid_key) sub
      WHERE     f.prs_kenmerk1 LIKE '%Personeel%'
            AND f.fac_import_key = p_import_key
            AND f.prs_perslid_key IS NOT NULL
            AND f.prs_perslid_key = sub.prs_perslid_key(+);

  CURSOR c_auth_frontend
  IS
     SELECT DISTINCT f.prs_perslid_key, f.prs_kenmerk1, DECODE (sub.aantal, NULL, 0, sub.aantal) aantal
       FROM fac_imp_perslid f,
            (  SELECT DISTINCT prs_perslid_key, COUNT (prs_perslid_key) aantal
                 FROM fac_gebruikersgroep
             GROUP BY prs_perslid_key) sub
      WHERE     f.prs_kenmerk1 LIKE '%Front%'
            AND f.fac_import_key = p_import_key
            AND f.prs_perslid_key IS NOT NULL
            AND f.prs_perslid_key = sub.prs_perslid_key(+);                                         
 
  CURSOR c_auth_directie
  IS
     SELECT DISTINCT f.prs_perslid_key, f.prs_kenmerk1, DECODE (sub.aantal, NULL, 0, sub.aantal) aantal
       FROM fac_imp_perslid f,
            (  SELECT DISTINCT prs_perslid_key, COUNT (prs_perslid_key) aantal
                 FROM fac_gebruikersgroep
             GROUP BY prs_perslid_key) sub
      WHERE     f.prs_kenmerk1 LIKE '%Directie%'
            AND f.fac_import_key = p_import_key
            AND f.prs_perslid_key IS NOT NULL
            AND f.prs_perslid_key = sub.prs_perslid_key(+);  
                                          
   CURSOR c_auth_fmbackoffice
   IS
     SELECT DISTINCT f.prs_perslid_key, f.prs_kenmerk1, DECODE (sub.aantal, NULL, 0, sub.aantal) aantal
       FROM fac_imp_perslid f,
            (  SELECT DISTINCT prs_perslid_key, COUNT (prs_perslid_key) aantal
                 FROM fac_gebruikersgroep
             GROUP BY prs_perslid_key) sub
      WHERE     f.prs_kenmerk1 LIKE '%FMBack%'
            AND f.fac_import_key = p_import_key
            AND f.prs_perslid_key IS NOT NULL
            AND f.prs_perslid_key = sub.prs_perslid_key(+);
                                          
   CURSOR c_auth_ictbackoffice
   IS
     SELECT DISTINCT f.prs_perslid_key, f.prs_kenmerk1, DECODE (sub.aantal, NULL, 0, sub.aantal) aantal
       FROM fac_imp_perslid f,
            (  SELECT DISTINCT prs_perslid_key, COUNT (prs_perslid_key) aantal
                 FROM fac_gebruikersgroep
             GROUP BY prs_perslid_key) sub
      WHERE     f.prs_kenmerk1 LIKE '%ICTBack%'
            AND f.fac_import_key = p_import_key
            AND f.prs_perslid_key IS NOT NULL
            AND f.prs_perslid_key = sub.prs_perslid_key(+);

   CURSOR c_auth_fmbeheer
   IS
      SELECT DISTINCT prs_perslid_key, prs_kenmerk1
        FROM fac_imp_perslid
       WHERE     prs_kenmerk1 LIKE '%FMApp%'
             AND fac_import_key = p_import_key
             AND prs_perslid_key IS NOT NULL
             AND prs_perslid_key NOT IN (SELECT prs_perslid_key
                                           FROM fac_gebruikersgroep
                                          WHERE fac_groep_key = 27);

   CURSOR c_auth_ictbeheer
   IS
      SELECT DISTINCT prs_perslid_key, prs_kenmerk1
        FROM fac_imp_perslid
       WHERE     prs_kenmerk1 LIKE '%ICTApp%'
             AND fac_import_key = p_import_key
             AND prs_perslid_key IS NOT NULL
             AND prs_perslid_key NOT IN (SELECT prs_perslid_key
                                           FROM fac_gebruikersgroep
                                          WHERE fac_groep_key = 27); 
                                          
BEGIN
   -- plaats personen in de juiste autorisatie groepen
   FOR rec IN c_auth_personeel
   LOOP
      BEGIN
         -- Nog geen bestaand persoon? Dan record toevoegen
         IF rec.aantal = 0
         THEN
            INSERT INTO FAC_GEBRUIKERSGROEP (prs_perslid_key, fac_groep_key)
                VALUES (rec.prs_perslid_key, 23);
         END IF;

         -- Al wel in een groep, dan reduceren naar 1 en de laatste omhangen naar Personeel
         IF rec.aantal > 1
         THEN
            DELETE FAC_GEBRUIKERSGROEP
             WHERE prs_perslid_key = rec.prs_perslid_key
                   AND fac_gebruikersgroep_key <
                         (SELECT MAX (fac_gebruikersgroep_key)
                            FROM fac_gebruikersgroep
                           WHERE prs_perslid_key = rec.prs_perslid_key);

            UPDATE FAC_GEBRUIKERSGROEP
               SET fac_groep_key = 23
             WHERE prs_perslid_key = rec.prs_perslid_key;
         END IF;

         -- Persoon heeft nu 1 autorisatiegroep? Dan wordt deze omgehangen naar Personeel
         UPDATE FAC_GEBRUIKERSGROEP
            SET fac_groep_key = 23
          WHERE prs_perslid_key = rec.prs_perslid_key AND rec.aantal = 1;
      END;
   END LOOP;

   FOR rec IN c_auth_frontend
   LOOP
      BEGIN          
  -- Nog geen bestaand persoon? Dan record toevoegen
   IF rec.aantal = 0 
   THEN
   INSERT INTO FAC_GEBRUIKERSGROEP (prs_perslid_key, fac_groep_key)
        VALUES (rec.prs_perslid_key, 24);
   END IF;      

    -- Persoon heeft nu 1 autorisatiegroep? Dan wordt deze vervangen door de AD import   
        UPDATE FAC_GEBRUIKERSGROEP
           SET fac_groep_key = 24
         WHERE prs_perslid_key = rec.prs_perslid_key
           AND rec.aantal = 1;
      END;
   END LOOP;
   
   FOR rec IN c_auth_directie
   LOOP
   BEGIN          
  -- Nog geen bestaand persoon? Dan record toevoegen
   IF rec.aantal = 0 
   THEN
   INSERT INTO FAC_GEBRUIKERSGROEP (prs_perslid_key, fac_groep_key)
        VALUES (rec.prs_perslid_key, 25);
   END IF;      

    -- Persoon heeft nu 1 autorisatiegroep? Dan wordt deze vervangen door de AD import   
        UPDATE FAC_GEBRUIKERSGROEP
           SET fac_groep_key = 25
         WHERE prs_perslid_key = rec.prs_perslid_key
           AND rec.aantal = 1;
      END;
   END LOOP;
   
   FOR rec IN c_auth_fmbackoffice
   LOOP
   BEGIN          
  -- Nog geen bestaand persoon? Dan record toevoegen
   IF rec.aantal = 0 
   THEN
   INSERT INTO FAC_GEBRUIKERSGROEP (prs_perslid_key, fac_groep_key)
        VALUES (rec.prs_perslid_key, 26);
   END IF;      

    -- Persoon heeft nu 1 autorisatiegroep? Dan wordt deze vervangen door de AD import   
        UPDATE FAC_GEBRUIKERSGROEP
           SET fac_groep_key = 26
         WHERE prs_perslid_key = rec.prs_perslid_key
           AND rec.aantal = 1;
      END;
   END LOOP;
   
   FOR rec IN c_auth_ictbackoffice
   LOOP
   BEGIN          
  -- Nog geen bestaand persoon? Dan record toevoegen
   IF rec.aantal = 0 
   THEN
   INSERT INTO FAC_GEBRUIKERSGROEP (prs_perslid_key, fac_groep_key)
        VALUES (rec.prs_perslid_key, 41);
   END IF;      

    -- Persoon heeft nu 1 autorisatiegroep? Dan wordt deze vervangen door de AD import   
        UPDATE FAC_GEBRUIKERSGROEP
           SET fac_groep_key = 41
         WHERE prs_perslid_key = rec.prs_perslid_key
           AND rec.aantal = 1;
      END;
   END LOOP;
   
   FOR rec IN c_auth_fmbeheer
   LOOP
      BEGIN
         INSERT INTO FAC_GEBRUIKERSGROEP (prs_perslid_key, fac_groep_key)
             VALUES (rec.prs_perslid_key, 27);
       
         INSERT INTO FAC_GEBRUIKERSGROEP (prs_perslid_key, fac_groep_key)
             VALUES (rec.prs_perslid_key, 26);
      END;
   END LOOP;
   
      FOR rec IN c_auth_ictbeheer
   LOOP
      BEGIN
         INSERT INTO FAC_GEBRUIKERSGROEP (prs_perslid_key, fac_groep_key)
             VALUES (rec.prs_perslid_key, 27);

         INSERT INTO FAC_GEBRUIKERSGROEP (prs_perslid_key, fac_groep_key)
             VALUES (rec.prs_perslid_key, 41);
      END;
   END LOOP;

   COMMIT;
END;
/

-- Vanaf hier rapportages

-- Deze voegt de FCLT_3D_GEBOUW_KEY toe aan de meldingen UDR
-- Zoals gerealiseerd in melding FSN#11071
CREATE OR REPLACE VIEW APGR_V_MELDING_GEBOUW
(
   MELDING_KEY,
   MELDINGNUMMER,
   MELDING_REGIO,
   MELDING_DISTRICT,
   MELDING_LOCATIECODE,
   MELDING_LOCATIE,
   MELDING_LOCATIEPLAATS,
   FCLT_3D_LOCATIE_KEY,
   MELDING_GEBOUWCODE,
   MELDING_GEBOUW,
   FCLT_3D_GEBOUW_KEY,
   MELDING_VERDIEPING,
   MELDING_RUIMTENR,
   MELDING_RUIMTE,
   MELDING_ORDERNR,
   KOSTENSOORTGROEP,
   KOSTENSOORT,
   KOSTENPLAATS,
   KOSTENPLAATS_OMS,
   MELDER,
   MELDER_KEY,
   AFDELING,
   AFDELING_OMSCHRIJVING,
   FCLT_3D_AFDELING_KEY,
   BEDRIJF_KEY,
   INVOERDER,
   MELDBRON,
   SOORTMELDING,
   FCLT_3D_DISCIPLINE_KEY,
   PRODUCTGROEP,
   SUBPRODUCTGROEP,
   BEHANDELGROEP,
   BEHANDELAAR,
   BEHANDELAAR_KEY,
   SUBPRODUCTGROEPGROEP,
   FCLT_3D_DISCIPLINE2_KEY,
   ACTIEVE_BEHANDELGROEP,
   ACTIEVE_BEHANDELAAR_KEY,
   ACTIEVE_BEHANDELAAR,
   MELDING_STATUS,
   SLA_NVT,
   SLA_WERKDGN,
   SLA_WERKUREN,
   SLA_RESPIJTDGN,
   SLA_RESPIJTUREN,
   SLA_ACCPTDGN,
   SLA_ACCPTUREN,
   PLAN_UITVOERTIJD_SLA,
   MELDING_DATUM,
   MELDING_EINDDATUM,
   MELDING_ACCEPTDATUM,
   MELDING_AFGEMELD,
   MELDING_ACCEPTED,
   DOORLOOPTIJD_WERKDGN,
   DOORLOOPTIJD_WERKUREN,
   ONDERWERP,
   VOMSCHRIJVING,
   MELDING_OPMERKING,
   PRIORITEIT,
   PRIORITEITTXT,
   RATING,
   RATING_OPMERKING,
   BOLLETJE,
   ACCEPT_SLA_DAGEN,
   ACCEPT_SLA_UREN,
   UITVOERING_SLA_DAGEN,
   UITVOERING_SLA_UREN,
   AFSPRAAK_SLA_DAGEN,
   AFSPRAAK_SLA_UREN,
   ACCEPT_SLA_OPTIJD,
   UITVOERING_SLA_OPTIJD,
   AFSPRAAK_SLA_OPTIJD,
   SELFSERVICE
)
AS
   SELECT mld_melding_key,
          meldingnummer,
          alg_regio_omschrijving,
          alg_district_omschrijving,
          locatie,
          locatie_omschrijving,
          locatie_plaats,
          alg_locatie_key,
          gebouw,
          gebouw_naam,
          gebouw_key,
          verdieping,
          ruimte,
          ruimte_omschrijving,
          melding_ordernr,
          kostensoortgroep,
          kostensoort,
          kostenplaats,
          kostenplaats_oms,
          melder,
          prs_perslid_key,
          afdeling,
          afdeling_omschrijving,
          afdeling_key,
          prs_bedrijf_key,
          invoerder,
          meldbron,
          soortmelding,
          stdm_ins_discipline_key,
          productgroep,
          subproductgroep,
          behandelgroep,
          behandelaar,
          behandelaar_key,
          subproductgroepgroep,
          mld_ins_discipline_key,
          actieve_behandelgroep,
          actieve_behandelaar_key,
          actieve_behandelaar,
          status,
          sla_nvt,
          sla_werkdgn,
          sla_werkuren,
          sla_respijtdgn,
          sla_respijturen,
          sla_accptdgn,
          sla_accpturen,
          plan_uitvoertijd_sla,
          datum,
          einddatum,
          acceptdatum,
          afgemeld,
          accepted,
          DECODE (x.t_doorlooptijd.eenheid,
                  'D', x.t_doorlooptijd.tijdsduur,
                  NULL)
             doorlooptijd_werkdgn,
          DECODE (x.t_doorlooptijd.eenheid,
                  'U', x.t_doorlooptijd.tijdsduur,
                  NULL)
             doorlooptijd_werkuren,
          onderwerp,
          omschrijving,
          opmerking,
          mld_melding_spoed prioriteit,
          DECODE (mld_melding_spoed,
                  3, lcl.l ('lcl_mld_urg_normaal'),
                  1, lcl.l ('lcl_mld_urg_kritiek'),
                  2, lcl.l ('lcl_mld_urg_hoog'),
                  4, lcl.l ('lcl_mld_urg_laag')),
          mld_melding_satisfaction,
          mld_melding_satisfaction_op,
          mld_melding_flag,
          DECODE (x.t_doorlooptijd.eenheid,
                  'D', acceptdatum - COALESCE (accepted, afgemeld),
                  NULL)
             accept_sla_dagen,
          CAST (
             DECODE (x.t_doorlooptijd.eenheid,
                     'U', (acceptdatum - COALESCE (accepted, afgemeld)) * 24,
                     NULL) AS NUMBER (7, 2))
             accept_sla_uren,
          DECODE (
             x.t_doorlooptijd.eenheid,
             'D',
               mld.geteinddatum (mld_melding_key)
             - COALESCE (afgemeld, SYSDATE)
             + COALESCE (sla_respijtdgn, 0),
             NULL)
             uitvoering_sla_dagen,
          CAST (
             DECODE (
                x.t_doorlooptijd.eenheid,
                'U',
                ( (mld.geteinddatum (mld_melding_key)
                   - COALESCE (afgemeld, SYSDATE))
                 * 24)
                + COALESCE (sla_respijturen, 0),
                NULL) AS NUMBER (7, 2))
             uitvoering_sla_uren,
          DECODE (
             x.t_doorlooptijd.eenheid,
             'D',
               einddatum
             - COALESCE (afgemeld, SYSDATE)
             + COALESCE (sla_respijtdgn, 0),
             NULL)
             afspraak_sla_dagen,
          CAST (
             DECODE (
                x.t_doorlooptijd.eenheid,
                'U',
                ( (einddatum - COALESCE (afgemeld, SYSDATE)) * 24)
                + COALESCE (sla_respijtdgn, 0),
                NULL) AS NUMBER (7, 2))
             afspraak_sla_uren,
          CASE
             WHEN acceptdatum IS NULL
                  OR -- Dan is er geen acceptatietijd gedefinieerd en dus altijd op tijd.
                    DECODE (x.t_doorlooptijd.eenheid,
                            'D',
                            acceptdatum - COALESCE (accepted, afgemeld),
                            0)
                    + DECODE (
                         x.t_doorlooptijd.eenheid,
                         'U',
                         (acceptdatum - COALESCE (accepted, afgemeld)) * 24,
                         0) >= 0
             THEN
                lcl.l ('lcl_yes')
             ELSE
                lcl.l ('lcl_no')
          END
             accept_sla_optijd,
          CASE
             WHEN DECODE (
                     x.t_doorlooptijd.eenheid,
                     'D',
                       mld.geteinddatum (mld_melding_key)
                     - COALESCE (afgemeld, SYSDATE)
                     + COALESCE (sla_respijtdgn, 0),
                     0)
                  + DECODE (
                       x.t_doorlooptijd.eenheid,
                       'U',
                       ( (mld.geteinddatum (mld_melding_key)
                          - COALESCE (afgemeld, SYSDATE))
                        * 24)
                       + COALESCE (sla_respijturen, 0),
                       0) >= 0
             THEN
                lcl.l ('lcl_yes')
             ELSE
                lcl.l ('lcl_no')
          END
             uitvoering_sla_optijd,
          CASE
             WHEN DECODE (
                     x.t_doorlooptijd.eenheid,
                     'D',
                       einddatum
                     - COALESCE (afgemeld, SYSDATE)
                     + COALESCE (sla_respijtdgn, 0),
                     0)
                  + DECODE (
                       x.t_doorlooptijd.eenheid,
                       'U',
                       ( (einddatum - COALESCE (afgemeld, SYSDATE)) * 24)
                       + COALESCE (sla_respijtdgn, 0),
                       0) >= 0
             THEN
                lcl.l ('lcl_yes')
             ELSE
                lcl.l ('lcl_no')
          END
             afspraak_sla_optijd,
          DECODE (invoerder, melder, lcl.l ('lcl_yes'), lcl.l ('lcl_no'))
             selfservice
     FROM (SELECT m.mld_melding_key,
                  m.prs_perslid_key,
                  sd.ins_srtdiscipline_prefix || m.mld_melding_key
                     meldingnummer,
                  alg_regio_omschrijving,
                  alg_district_omschrijving,
                  alg_locatie_code locatie,
                  alg_locatie_omschrijving locatie_omschrijving,
                  alg_locatie_plaats locatie_plaats,
                  l.alg_locatie_key,
                  og.alg_gebouw_code gebouw,
                  og.alg_gebouw_naam gebouw_naam,
                  og.alg_gebouw_key gebouw_key,
                  og.alg_verdieping_code verdieping,
                  og.alg_ruimte_nr ruimte,
                  og.alg_ruimte_omschrijving ruimte_omschrijving,
                  m.mld_melding_ordernr melding_ordernr,
                  (SELECT ksg.prs_kostensoortgrp_oms
                     FROM prs_kostensoortgrp ksg, prs_kostensoort ks
                    WHERE ksg.prs_kostensoortgrp_key =
                             ks.prs_kostensoortgrp_key
                          AND ks.prs_kostensoort_key =
                                (SELECT COALESCE (sm.prs_kostensoort_key,
                                                  disc.prs_kostensoort_key)
                                   FROM mld_stdmelding sm,
                                        mld_discipline disc
                                  WHERE sm.mld_ins_discipline_key =
                                           disc.ins_discipline_key
                                        AND sm.mld_stdmelding_key =
                                              s.mld_stdmelding_key))
                     kostensoortgroep,
                  (SELECT ks.prs_kostensoort_oms
                     FROM prs_kostensoort ks
                    WHERE ks.prs_kostensoort_key =
                             (SELECT COALESCE (sm.prs_kostensoort_key,
                                               disc.prs_kostensoort_key)
                                FROM mld_stdmelding sm, mld_discipline disc
                               WHERE sm.mld_ins_discipline_key =
                                        disc.ins_discipline_key
                                     AND sm.mld_stdmelding_key =
                                           s.mld_stdmelding_key))
                     kostensoort,
                  (SELECT k.prs_kostenplaats_nr
                     FROM prs_kostenplaats k
                    WHERE k.prs_kostenplaats_key = m.prs_kostenplaats_key)
                     kostenplaats,
                  (SELECT k.prs_kostenplaats_omschrijving
                     FROM prs_kostenplaats k
                    WHERE k.prs_kostenplaats_key = m.prs_kostenplaats_key)
                     kostenplaats_oms,
                  (SELECT prs_perslid_naam_full
                     FROM prs_v_perslid_fullnames_all pf
                    WHERE pf.prs_perslid_key = m.prs_perslid_key)
                     melder,
                  (SELECT prs_afdeling_naam
                     FROM prs_afdeling afd, prs_perslid pp
                    WHERE afd.prs_afdeling_key = pp.prs_afdeling_key
                          AND pp.prs_perslid_key = m.prs_perslid_key)
                     afdeling,
                  (SELECT prs_afdeling_omschrijving
                     FROM prs_afdeling afd, prs_perslid pp
                    WHERE afd.prs_afdeling_key = pp.prs_afdeling_key
                          AND pp.prs_perslid_key = m.prs_perslid_key)
                     afdeling_omschrijving,
                  (SELECT prs_afdeling_key
                     FROM prs_perslid pp
                    WHERE pp.prs_perslid_key = m.prs_perslid_key)
                     afdeling_key,
                  (SELECT prs_bedrijf_key
                     FROM prs_v_afdeling pva, prs_perslid pp
                    WHERE pva.prs_afdeling_key = pp.prs_afdeling_key
                          AND pp.prs_perslid_key = m.prs_perslid_key)
                     prs_bedrijf_key,
                  (SELECT prs_perslid_naam_full
                     FROM prs_v_perslid_fullnames_all pf
                    WHERE pf.prs_perslid_key =
                             mld.getmeldinguser (m.mld_melding_key))
                     invoerder,
                  (SELECT mb.mld_meldbron_omschrijving
                     FROM mld_meldbron mb
                    WHERE mb.mld_meldbron_key = m.mld_meldbron_key)
                     meldbron,
                  m.mld_meldbron_key,
                  sd.ins_srtdiscipline_key ins_srtdiscipline_key,
                  sd.ins_srtdiscipline_omschrijving soortmelding,
                  md.ins_discipline_key stdm_ins_discipline_key,
                  md.ins_discipline_omschrijving productgroep,
                  s.mld_stdmelding_omschrijving subproductgroep,
                  smg.mld_stdmeldinggroep_naam subproductgroepgroep,
                  mbg.mld_behandelgroep_naam behandelgroep,
                  (SELECT prs_perslid_naam_full
                     FROM prs_v_perslid_fullnames_all pf
                    WHERE pf.prs_perslid_key = m.mld_melding_behandelaar_key)
                     behandelaar,
                  m.mld_melding_behandelaar_key behandelaar_key,
                  m.mld_ins_discipline_key mld_ins_discipline_key,
                  (SELECT md2.ins_discipline_omschrijving
                     FROM mld_discipline md2
                    WHERE md2.ins_discipline_key = m.mld_ins_discipline_key)
                     actieve_behandelgroep,
                  m.mld_melding_behandelaar2_key actieve_behandelaar_key,
                  (SELECT prs_perslid_naam_full
                     FROM prs_v_perslid_fullnames_all pf
                    WHERE pf.prs_perslid_key = m.mld_melding_behandelaar2_key)
                     actieve_behandelaar,
                  (SELECT mld_statuses_omschrijving
                     FROM mld_statuses sta
                    WHERE sta.mld_statuses_key = m.mld_melding_status)
                     status,
                  CASE
                     WHEN m.mld_melding_einddatum >
                             COALESCE (
                                fac.gettrackingdate ('MLDAFM',
                                                     m.mld_melding_key),
                                fac.gettrackingdate ('MLDREJ',
                                                     m.mld_melding_key),
                                SYSDATE)
                     THEN
                        1
                     ELSE
                        0
                  END
                     plan_uitvoertijd_sla,
                  CASE
                     WHEN m.mld_melding_indult = 1
                          OR s.mld_stdmelding_slabewaken = 0
                     THEN
                        1
                     ELSE
                        0
                  END
                     sla_nvt,
                  DECODE (m.mld_melding_t_uitvoertijd.eenheid,
                          'D', m.mld_melding_t_uitvoertijd.tijdsduur,
                          NULL)
                     sla_werkdgn,
                  DECODE (m.mld_melding_t_uitvoertijd.eenheid,
                          'U', m.mld_melding_t_uitvoertijd.tijdsduur,
                          NULL)
                     sla_werkuren,
                  DECODE (m.mld_melding_t_respijt.eenheid,
                          'D', m.mld_melding_t_respijt.tijdsduur,
                          NULL)
                     sla_respijtdgn,
                  DECODE (m.mld_melding_t_respijt.eenheid,
                          'U', m.mld_melding_t_respijt.tijdsduur,
                          NULL)
                     sla_respijturen,
                  DECODE (m.mld_melding_t_accepttijd.eenheid,
                          'D', m.mld_melding_t_accepttijd.tijdsduur,
                          NULL)
                     sla_accptdgn,
                  DECODE (m.mld_melding_t_accepttijd.eenheid,
                          'U', m.mld_melding_t_accepttijd.tijdsduur,
                          NULL)
                     sla_accpturen,
                  m.mld_melding_datum datum,
                  CASE
                     WHEN s.mld_stdmelding_planbaar = 2 THEN TO_DATE (NULL)
                     ELSE m.mld_melding_einddatum
                  END
                     einddatum,
                  mld.getacceptdatum (m.mld_melding_datum,
                                      m.mld_stdmelding_key,
                                      og.alg_onroerendgoed_keys)
                     acceptdatum,
                  COALESCE (mld.getmeldingstatusdate (m.mld_melding_key, 5),
                            mld.getmeldingstatusdate (m.mld_melding_key, 1))
                     afgemeld,
                  COALESCE (mld.getmeldingstatusdate (m.mld_melding_key, 4),
                            mld.getmeldingstatusdate (m.mld_melding_key, 1))
                     accepted,
                  mld.getactualuitvoer (m.mld_melding_key) t_doorlooptijd,
                  m.mld_melding_onderwerp onderwerp,
                  m.mld_melding_omschrijving omschrijving,
                  m.mld_melding_opmerking opmerking,
                  m.mld_melding_spoed,
                  m.mld_melding_satisfaction,
                  m.mld_melding_satisfaction_op,
                  m.mld_melding_flag
             FROM mld_melding m,
                  mld_stdmelding s,
                  alg_locatie l,
                  alg_district d,
                  alg_regio r,
                  alg_v_allonrgoed_gegevens og,
                  mld_discipline md,
                  mld_disc_params mdp,
                  mld_behandelgroep mbg,
                  ins_srtdiscipline sd,
                  mld_stdmeldinggroep smg
            WHERE     s.mld_stdmelding_key = m.mld_stdmelding_key
                  AND m.mld_alg_locatie_key = l.alg_locatie_key(+)
                  AND sd.ins_srtdiscipline_key = md.ins_srtdiscipline_key
                  AND md.ins_discipline_key = s.mld_ins_discipline_key
                  AND md.ins_discipline_key = mdp.mld_ins_discipline_key
                  AND s.mld_stdmeldinggroep_key =
                        smg.mld_stdmeldinggroep_key(+)
                  AND mdp.mld_behandelgroep_key =
                        mbg.mld_behandelgroep_key(+)
                  AND l.alg_district_key = d.alg_district_key(+)
                  AND d.alg_regio_key = r.alg_regio_key(+)
                  AND m.mld_alg_onroerendgoed_keys =
                        og.alg_onroerendgoed_keys(+)
                  AND m.fac_activiteit_key IS NULL
                  AND m.mld_melding_datum >=
                        TO_DATE ('01-01-2010', 'DD-MM-YYYY')) x;
                        
-- Ook voorzien van FCLT_3D_GEBOUW_KEY
CREATE OR REPLACE VIEW APGR_V_INS_GEBOUW
(
   DEEL_KEY,
   DISCIPLINE,
   SOORT,
   GROEP,
   SOORTCODE,
   OMSCHRIJVING,
   PLAATSEIGENAAR,
   PLAATSEIGENAARTYPE,
   PLAATSAANDUIDING,
   EIGENAAR,
   OPMERKING,
   REGIO,
   DISTRICT,
   LOCATIE_CODE,
   LOCATIE_OMSCHRIJVING,
   LOCATIE_PLAATS,
   GEBOUWCODE,
   GEBOUW,
   TERREINSECTORCODE,
   TERREINSECTOR,
   VERDIEPINGCODE,
   RUIMTENR,
   WERKPLEKVOLGNR,
   WERKPLEK,
   UITLEENBAAR,
   UITGELEEND,
   RES_OPMERKING,
   BEHEERDER,
   VERVALDATUM,
   ACTIEF,
   AANTAL,
   STATE,
   STATEDATE,
   FCLT_3D_DISCIPLINE_KEY,
   FCLT_3D_AFDELING_KEY,
   FCLT_3D_LOCATIE_KEY,
   FCLT_3D_GEBOUW_KEY
)
AS
   SELECT ii.ins_deel_key,
          lcl.x ('ins_discipline_omschrijving',
                 id.ins_discipline_key,
                 id.ins_discipline_omschrijving),
          lcl.x ('ins_srtdeel_omschrijving',
                 s.ins_srtdeel_key,
                 s.ins_srtdeel_omschrijving),
          lcl.x ('ins_srtgroep_omschrijving',
                 sg.ins_srtgroep_key,
                 sg.ins_srtgroep_omschrijving),
          s.ins_srtdeel_code,
          ii.ins_deel_omschrijving,
          COALESCE (ii.plaats, ii.eigenaar),
          ii.ins_alg_ruimte_type,
          ii.plaats,
          ii.eigenaar,
          ii.ins_deel_opmerking,
          ii.regio,
          ii.district,
          ii.locatie_code,
          ii.locatie_omschrijving,
          ii.locatie_plaats,
          ii.alg_gebouw_code,
          ii.alg_gebouw_omschrijving,
          ii.alg_terreinsector_code,
          ii.alg_terreinsector_omschrijving,
          ii.alg_verdieping_code,
          ii.alg_ruimte_nr,
          ii.prs_werkplek_volgnr,
          ii.prs_werkplek_omschrijving,
          DECODE (s.ins_srtdeel_uitleenbaar,
                  1, lcl.l ('lcl_yes'),
                  lcl.l ('lcl_no')),
          DECODE (ii.ins_alg_ruimte_key_org,
                  NULL, lcl.l ('lcl_no'),
                  lcl.l ('lcl_yes')),
          ii.res_deel_opmerking,
          pf.prs_perslid_naam_full,
          ii.ins_deel_vervaldatum,
          DECODE (ii.ins_deel_actief, 1, lcl.l ('lcl_yes'), lcl.l ('lcl_no')),
          ii.ins_deel_aantal,
          ii.ins_deel_state,
          ii.ins_deel_statedate,
          sg.ins_discipline_key,
          ii.ins_alg_ruimte_key,
          ii.alg_locatie_key,
          ii.alg_gebouw_key
     FROM (SELECT i.ins_deel_key,
                  i.ins_deel_omschrijving,
                  i.ins_srtdeel_key,
                  i.prs_perslid_key_beh,
                  TO_CHAR (NULL) plaats,
                  i.ins_deel_opmerking,
                  i.ins_alg_ruimte_type,
                  NULL regio,
                  NULL district,
                  NULL locatie_code,
                  NULL locatie_omschrijving,
                  NULL locatie_plaats,
                  NULL alg_gebouw_code,
                  NULL alg_gebouw_omschrijving,
                  NULL alg_terreinsector_code,
                  NULL alg_terreinsector_omschrijving,
                  NULL alg_verdieping_code,
                  NULL alg_ruimte_nr,
                  NULL prs_werkplek_volgnr,
                  NULL prs_werkplek_omschrijving,
                  rd.res_deel_opmerking,
                  i.ins_deel_vervaldatum,
                  (SELECT d.prs_afdeling_omschrijving
                     FROM prs_v_afdeling d
                    WHERE prs_afdeling_key = i.ins_alg_ruimte_key)
                     eigenaar,
                  i.ins_discipline_key,
                  i.ins_alg_ruimte_key,
                  NULL alg_locatie_key,
                  NULL alg_gebouw_key,
                  i.ins_deel_actief,
                  i.ins_deel_aantal,
                  i.ins_alg_ruimte_key_org,
                  i.ins_deel_state,
                  i.ins_deel_statedate
             FROM ins_deel i,
                  (SELECT res_deel_key,
                          res_ins_deel_key,
                          res_deel_opmerking res_deel_opmerking
                     FROM res_deel
                    WHERE res_deel_verwijder IS NULL) rd,
                  prs_v_afdeling_boom d,
                  prs_bedrijf b
            WHERE     i.ins_deel_verwijder IS NULL
                  AND i.ins_deel_key = rd.res_ins_deel_key(+)
                  AND i.ins_deel_module = 'INS'
                  AND i.ins_deel_parent_key IS NULL
                  AND i.ins_alg_ruimte_key = d.prs_afdeling_key
                  AND i.ins_alg_ruimte_type = 'A'
           UNION
           SELECT i.ins_deel_key,
                  i.ins_deel_omschrijving,
                  i.ins_srtdeel_key,
                  i.prs_perslid_key_beh,
                  TO_CHAR (NULL) plaats,
                  i.ins_deel_opmerking,
                  i.ins_alg_ruimte_type,
                  NULL regio,
                  NULL district,
                  NULL locatie_code,
                  NULL locatie_omschrijving,
                  NULL locatie_plaats,
                  NULL alg_gebouw_code,
                  NULL alg_gebouw_omschrijving,
                  NULL alg_terreinsector_code,
                  NULL alg_terreinsector_omschrijving,
                  NULL alg_verdieping_code,
                  NULL alg_ruimte_nr,
                  NULL prs_werkplek_volgnr,
                  NULL prs_werkplek_omschrijving,
                  rd.res_deel_opmerking,
                  i.ins_deel_vervaldatum,
                  pf.prs_perslid_naam_full eigenaar,
                  i.ins_discipline_key,
                  p.prs_afdeling_key,
                  NULL alg_locatie_key,
                  NULL alg_gebouw_key,
                  i.ins_deel_actief,
                  i.ins_deel_aantal,
                  i.ins_alg_ruimte_key_org,
                  i.ins_deel_state,
                  i.ins_deel_statedate
             FROM ins_deel i,
                  (SELECT res_deel_key,
                          res_ins_deel_key,
                          res_deel_opmerking res_deel_opmerking
                     FROM res_deel
                    WHERE res_deel_verwijder IS NULL) rd,
                  prs_perslid p,
                  prs_v_perslid_fullnames_all pf,
                  prs_v_afdeling_boom d
            WHERE     i.ins_deel_verwijder IS NULL
                  AND i.ins_deel_key = rd.res_ins_deel_key(+)
                  AND i.ins_deel_module = 'INS'
                  AND i.ins_deel_parent_key IS NULL
                  AND i.ins_alg_ruimte_key = p.prs_perslid_key
                  AND p.prs_perslid_key = pf.prs_perslid_key
                  AND p.prs_afdeling_key = d.prs_afdeling_key
                  AND i.ins_alg_ruimte_type = 'P'
           UNION
           SELECT i.ins_deel_key,
                  i.ins_deel_omschrijving,
                  i.ins_srtdeel_key,
                  i.prs_perslid_key_beh,
                  TO_CHAR (NULL) plaats,
                  i.ins_deel_opmerking,
                  i.ins_alg_ruimte_type,
                  NULL regio,
                  NULL district,
                  NULL locatie_code,
                  NULL locatie_omschrijving,
                  NULL locatie_plaats,
                  NULL alg_gebouw_code,
                  NULL alg_gebouw_omschrijving,
                  NULL alg_terreinsector_code,
                  NULL alg_terreinsector_omschrijving,
                  NULL alg_verdieping_code,
                  NULL alg_ruimte_nr,
                  NULL prs_werkplek_volgnr,
                  NULL prs_werkplek_omschrijving,
                  rd.res_deel_opmerking,
                  i.ins_deel_vervaldatum,
                  c.prs_contactpersoon_naam eigenaar,
                  NULL discipline_key,
                  NULL,
                  NULL alg_locatie_key,
                  NULL alg_gebouw_key,
                  i.ins_deel_actief,
                  i.ins_deel_aantal,
                  i.ins_alg_ruimte_key_org,
                  i.ins_deel_state,
                  i.ins_deel_statedate
             FROM ins_deel i,
                  (SELECT res_deel_key,
                          res_ins_deel_key,
                          res_deel_opmerking res_deel_opmerking
                     FROM res_deel
                    WHERE res_deel_verwijder IS NULL) rd,
                  prs_contactpersoon c
            WHERE     i.ins_deel_verwijder IS NULL
                  AND i.ins_deel_key = rd.res_ins_deel_key(+)
                  AND i.ins_deel_module = 'INS'
                  AND i.ins_deel_parent_key IS NULL
                  AND i.ins_alg_ruimte_key = c.prs_contactpersoon_key
                  AND i.ins_alg_ruimte_type = 'C'
           UNION
           SELECT i.ins_deel_key,
                  i.ins_deel_omschrijving,
                  i.ins_srtdeel_key,
                  i.prs_perslid_key_beh,
                  o.alg_plaatsaanduiding,
                  i.ins_deel_opmerking,
                  i.ins_alg_ruimte_type,
                  re.alg_regio_omschrijving,
                  di.alg_district_omschrijving,
                  l.alg_locatie_code locatie_code,
                  l.alg_locatie_omschrijving locatie_omschrijving,
                  l.alg_locatie_plaats locatie_plaats,
                  o.alg_gebouw_code,
                  o.alg_gebouw_omschrijving,
                  o.alg_terreinsector_code,
                  o.alg_terreinsector_omschrijving,
                  o.alg_verdieping_code,
                  o.alg_ruimte_nr,
                  o.prs_werkplek_volgnr,
                  o.prs_werkplek_omschrijving,
                  rd.res_deel_opmerking,
                  i.ins_deel_vervaldatum,
                  NULL eigenaar,
                  i.ins_discipline_key,
                  NULL,
                  l.alg_locatie_key,
                  o.alg_gebouw_key,
                  i.ins_deel_actief,
                  i.ins_deel_aantal,
                  i.ins_alg_ruimte_key_org,
                  i.ins_deel_state,
                  i.ins_deel_statedate
             FROM ins_deel i,
                  ins_v_alg_overzicht o,
                  alg_locatie l,
                  alg_district di,
                  alg_regio re,
                  (SELECT res_deel_key,
                          res_ins_deel_key,
                          res_deel_opmerking res_deel_opmerking
                     FROM res_deel
                    WHERE res_deel_verwijder IS NULL) rd
            WHERE     i.ins_deel_verwijder IS NULL
                  AND i.ins_deel_module = 'INS'
                  AND i.ins_deel_key = rd.res_ins_deel_key(+)
                  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 di.alg_regio_key = re.alg_regio_key) ii,
          ins_srtdeel s,
          ins_srtgroep sg,
          ins_discipline id,
          prs_v_perslid_fullnames pf
    WHERE     sg.ins_srtgroep_key = s.ins_srtgroep_key
          AND id.ins_discipline_key = sg.ins_discipline_key
          AND ii.prs_perslid_key_beh = pf.prs_perslid_key(+)
          AND s.ins_srtdeel_key = ii.ins_srtdeel_key;

-- Hier hetzelfde, ook FCLT_3D_GEBOUW_KEY
CREATE OR REPLACE VIEW APGR_V_INSDEELMELDING_GEBOUW
(
   DEEL_KEY,
   DISCIPLINE,
   SOORT,
   GROEP,
   SOORTCODE,
   OMSCHRIJVING,
   PLAATSEIGENAAR,
   PLAATSEIGENAARTYPE,
   PLAATSAANDUIDING,
   EIGENAAR,
   OPMERKING,
   REGIO,
   DISTRICT,
   LOCATIE_CODE,
   LOCATIE_OMSCHRIJVING,
   LOCATIE_PLAATS,
   GEBOUWCODE,
   GEBOUW,
   TERREINSECTORCODE,
   TERREINSECTOR,
   VERDIEPINGCODE,
   RUIMTENR,
   WERKPLEKVOLGNR,
   WERKPLEK,
   UITLEENBAAR,
   UITGELEEND,
   RES_OPMERKING,
   BEHEERDER,
   VERVALDATUM,
   ACTIEF,
   AANTAL,
   STATE,
   STATEDATE,
   FCLT_3D_DISCIPLINE_KEY,
   FCLT_3D_AFDELING_KEY,
   FCLT_3D_LOCATIE_KEY,
   FCLT_3D_GEBOUW_KEY,
   MELDING_KEY,
   MELDINGNUMMER,
   MELDING_DISTRICT,
   MELDING_LOCATIECODE,
   MELDING_LOCATIE,
   MELDING_LOCATIEPLAATS,
   MELDING_GEBOUWCODE,
   MELDING_GEBOUW,
   MELDING_VERDIEPING,
   MELDING_RUIMTENR,
   MELDING_RUIMTE,
   MELDING_ORDERNR,
   KOSTENSOORTGROEP,
   KOSTENSOORT,
   KOSTENPLAATS,
   KOSTENPLAATS_OMS,
   MELDER,
   MELDER_KEY,
   AFDELING,
   AFDELING_OMSCHRIJVING,
   BEDRIJF_KEY,
   INVOERDER,
   MELDBRON,
   SOORTMELDING,
   PRODUCTGROEP,
   SUBPRODUCTGROEP,
   BEHANDELGROEP,
   BEHANDELAAR,
   BEHANDELAAR_KEY,
   SUBPRODUCTGROEPGROEP,
   MELDING_STATUS,
   SLA_NVT,
   SLA_WERKDGN,
   SLA_WERKUREN,
   SLA_RESPIJTDGN,
   SLA_RESPIJTUREN,
   SLA_ACCPTDGN,
   SLA_ACCPTUREN,
   PLAN_UITVOERTIJD_SLA,
   MELDING_DATUM,
   MELDING_EINDDATUM,
   MELDING_ACCEPTDATUM,
   MELDING_AFGEMELD,
   MELDING_ACCEPTED,
   DOORLOOPTIJD_WERKDGN,
   DOORLOOPTIJD_WERKUREN,
   ONDERWERP,
   VOMSCHRIJVING,
   MELDING_OPMERKING,
   PRIORITEIT,
   PRIORITEITTXT,
   RATING,
   RATING_OPMERKING,
   BOLLETJE,
   ACCEPT_SLA_DAGEN,
   ACCEPT_SLA_UREN,
   UITVOERING_SLA_DAGEN,
   UITVOERING_SLA_UREN,
   AFSPRAAK_SLA_DAGEN,
   AFSPRAAK_SLA_UREN,
   ACCEPT_SLA_OPTIJD,
   UITVOERING_SLA_OPTIJD,
   AFSPRAAK_SLA_OPTIJD,
   SELFSERVICE
)
AS
   SELECT d.deel_key,
          d.discipline,
          d.soort,
          d.groep,
          d.soortcode,
          d.omschrijving,
          d.plaatseigenaar,
          d.plaatseigenaartype,
          d.plaatsaanduiding,
          d.eigenaar,
          d.opmerking,
          d.regio,
          d.district,
          d.locatie_code,
          d.locatie_omschrijving,
          d.locatie_plaats,
          d.gebouwcode,
          d.gebouw,
          d.terreinsectorcode,
          d.terreinsector,
          d.verdiepingcode,
          d.ruimtenr,
          d.werkplekvolgnr,
          d.werkplek,
          d.uitleenbaar,
          d.uitgeleend,
          d.res_opmerking,
          d.beheerder,
          d.vervaldatum,
          d.actief,
          d.aantal,
          d.state,
          d.statedate,
          d.fclt_3d_discipline_key,
          d.fclt_3d_afdeling_key,
          d.fclt_3d_locatie_key,
          d.fclt_3d_gebouw_key,
          m.melding_key,
          m.meldingnummer,
          m.melding_district,
          m.melding_locatiecode,
          m.melding_locatie,
          m.melding_locatieplaats,
          m.melding_gebouwcode,
          m.melding_gebouw,
          m.melding_verdieping,
          m.melding_ruimtenr,
          m.melding_ruimte,
          m.melding_ordernr,
          m.kostensoortgroep,
          m.kostensoort,
          m.kostenplaats,
          m.kostenplaats_oms,
          m.melder,
          m.melder_key,
          m.afdeling,
          m.afdeling_omschrijving,
          m.bedrijf_key,
          m.invoerder,
          m.meldbron,
          m.soortmelding,
          m.productgroep,
          m.subproductgroep,
          m.behandelgroep,
          m.behandelaar,
          m.behandelaar_key,
          m.subproductgroepgroep,
          m.melding_status,
          m.sla_nvt,
          m.sla_werkdgn,
          m.sla_werkuren,
          m.sla_respijtdgn,
          m.sla_respijturen,
          m.sla_accptdgn,
          m.sla_accpturen,
          m.plan_uitvoertijd_sla,
          m.melding_datum,
          m.melding_einddatum,
          m.melding_acceptdatum,
          m.melding_afgemeld,
          m.melding_accepted,
          m.doorlooptijd_werkdgn,
          m.doorlooptijd_werkuren,
          m.onderwerp,
          m.vomschrijving,
          m.melding_opmerking,
          m.prioriteit,
          m.prioriteittxt,
          m.rating,
          m.rating_opmerking,
          m.bolletje,
          m.accept_sla_dagen,
          m.accept_sla_uren,
          m.uitvoering_sla_dagen,
          m.uitvoering_sla_uren,
          m.afspraak_sla_dagen,
          m.afspraak_sla_uren,
          m.accept_sla_optijd,
          m.uitvoering_sla_optijd,
          m.afspraak_sla_optijd,
          m.selfservice
     FROM apgr_v_ins_gebouw d, mld_v_udr_melding m, mld_melding_object mo
    WHERE mo.mld_melding_key = m.melding_key AND mo.ins_deel_key = d.deel_key;

-- En de laatste FCLT_3D_GEBOUW_KEY
CREATE OR REPLACE VIEW APGR_V_INSKENMERK_GEBOUW
(
   DEEL_KEY,
   DISCIPLINE,
   SOORT,
   GROEP,
   SOORTCODE,
   OMSCHRIJVING,
   PLAATSEIGENAAR,
   PLAATSEIGENAARTYPE,
   PLAATSAANDUIDING,
   EIGENAAR,
   OPMERKING,
   REGIO,
   DISTRICT,
   LOCATIE_CODE,
   LOCATIE_OMSCHRIJVING,
   LOCATIE_PLAATS,
   GEBOUWCODE,
   GEBOUW,
   TERREINSECTORCODE,
   TERREINSECTOR,
   VERDIEPINGCODE,
   RUIMTENR,
   WERKPLEKVOLGNR,
   WERKPLEK,
   UITLEENBAAR,
   UITGELEEND,
   RES_OPMERKING,
   BEHEERDER,
   VERVALDATUM,
   ACTIEF,
   AANTAL,
   STATE,
   STATEDATE,
   FCLT_3D_DISCIPLINE_KEY,
   FCLT_3D_AFDELING_KEY,
   FCLT_3D_LOCATIE_KEY,
   FCLT_3D_GEBOUW_KEY,
   KENMERK,
   WAARDE_C,
   WAARDE_N,
   WAARDE_D
)
AS
   SELECT m."DEEL_KEY",
          m."DISCIPLINE",
          m."SOORT",
          m."GROEP",
          m."SOORTCODE",
          m."OMSCHRIJVING",
          m."PLAATSEIGENAAR",
          m."PLAATSEIGENAARTYPE",
          m."PLAATSAANDUIDING",
          m."EIGENAAR",
          m."OPMERKING",
          m."REGIO",
          m."DISTRICT",
          m."LOCATIE_CODE",
          m."LOCATIE_OMSCHRIJVING",
          m."LOCATIE_PLAATS",
          m."GEBOUWCODE",
          m."GEBOUW",
          m."TERREINSECTORCODE",
          m."TERREINSECTOR",
          m."VERDIEPINGCODE",
          m."RUIMTENR",
          m."WERKPLEKVOLGNR",
          m."WERKPLEK",
          m."UITLEENBAAR",
          m."UITGELEEND",
          m."RES_OPMERKING",
          m."BEHEERDER",
          m."VERVALDATUM",
          m."ACTIEF",
          m."AANTAL",
          m."STATE",
          m."STATEDATE",
          m."FCLT_3D_DISCIPLINE_KEY",
          m."FCLT_3D_AFDELING_KEY",
          m."FCLT_3D_LOCATIE_KEY",
          m."FCLT_3D_GEBOUW_KEY",
          lcl.x ('skm.ins_srtkenmerk_omschrijving',
                 skm.ins_srtkenmerk_key,
                 ins_srtkenmerk_omschrijving)
             kenmerk,
          CASE
             WHEN skm.ins_srtkenmerk_kenmerktype = 'R'
                  OR skm.ins_srtkenmerk_kenmerktype = 'S'
             THEN
                flx.getdomeinwaarde (skm.fac_kenmerkdomein_key,
                                     km.ins_kenmerkdeel_waarde)
             WHEN skm.ins_srtkenmerk_kenmerktype = 'C'
                  OR skm.ins_srtkenmerk_kenmerktype = 'F'
             THEN
                km.ins_kenmerkdeel_waarde
             ELSE
                NULL
          END
             waarde_c,
          CASE
             WHEN skm.ins_srtkenmerk_kenmerktype = 'N'
                  OR skm.ins_srtkenmerk_kenmerktype = 'B'
             THEN
                TO_NUMBER (km.ins_kenmerkdeel_waarde)
             ELSE
                TO_NUMBER (NULL)
          END
             waarde_n,
          CASE
             WHEN skm.ins_srtkenmerk_kenmerktype = 'D'
             THEN
                TO_DATE (km.ins_kenmerkdeel_waarde, 'DD-MM-YYYY')
             ELSE
                TO_DATE (NULL)
          END
             waarde_d
     FROM apgr_v_ins_gebouw M,
          ins_kenmerkdeel km,
          ins_kenmerk K,
          ins_srtkenmerk skm
    WHERE     km.ins_deel_key = m.deel_key
          AND km.ins_kenmerkdeel_verwijder IS NULL
          AND k.ins_kenmerk_verwijder IS NULL
          AND skm.ins_srtkenmerk_verwijder IS NULL
          AND km.ins_kenmerk_key = k.ins_kenmerk_key(+)
          AND k.ins_srtkenmerk_key = skm.ins_srtkenmerk_key(+);
    

------ payload end   ------

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

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