#ifdef  INS // 13-03-96 AH
/*  $Revision$
 *  $Id$
 */

//
// Hierboven geldt voor alle modules, nu verder met INS-specifiek
//

// Alle actuele disciplinesoorten
DEFINIEER_VIEW_AANWEZIG(ins_srtdiscipline, ins_srtdiscipline_verwijder,
    ins_v_aanwezigsrtdiscipline,0);

// Alle (evt verwijderde) INS disciplines
// LETOP: DIT LIJKT WEL EEN TABEL!! (qua naamgeving) ivm vroegere autorisatie
CREATE_VIEW(INS_discipline, 0)
AS SELECT * FROM ins_tab_discipline WHERE ins_discipline_module = 'INS';

// Alle zichtbare INS disciplines
DEFINIEER_VIEW_AANWEZIG(ins_discipline, ins_discipline_verwijder,
    ins_v_aanwezigdiscipline,0);

DEFINIEER_VIEW_AANWEZIG(ins_srtgroep, ins_srtgroep_verwijder,
    ins_v_aanwezigsrtgroep,0);

DEFINIEER_VIEW_AANWEZIG(ins_srtdeel, ins_srtdeel_verwijder,
    ins_v_aanwezigsrtdeel,0);

CREATE_VIEW(ins_controlestatuses, 0)
(
   ins_controlestatus_key,
   ins_controlestatus_omschr
)
AS
   SELECT fac_code2label_code,
          COALESCE (fac_locale_xsl_cust, fac_locale_xsl_tekst)
     FROM fac_locale_xsl fl, fac_code2label fs
    WHERE     fl.fac_locale_xsl_label = fac_code2label_label
          AND fac_code2label_domein = 'controle'
          AND fac_locale_xsl_lang = lcl.getuserlanguage ();

/* Views met ins_deel moeten voorwaarde : "AND ins_deel_parent_key IS NULL" bevatten... */
DEFINIEER_VIEW_AANWEZIG(ins_deel, ins_deel_verwijder,
    ins_v_aanwezigdeel,0) AND
    ins_deel_parent_key IS NULL;

/* Views met ins_onderdeel moeten voorwaarde : "AND ins_deel_parent_key IS NOT NULL" bevatten... */
DEFINIEER_VIEW_AANWEZIG(ins_deel, ins_deel_verwijder,
    ins_v_aanwezigonderdeel,0) AND
    ins_deel_parent_key IS NOT NULL;


CREATE_VIEW(ins_v_srtgroep_gegevens,0) AS
    SELECT ins_D.ins_discipline_key, ins_D.ins_discipline_omschrijving,
           ins_SG.ins_srtgroep_key, ins_SG.ins_srtgroep_omschrijving,
           ins_SG.ins_srtgroep_upper
    FROM ins_v_aanwezigdiscipline ins_D, ins_v_aanwezigsrtgroep ins_SG
    WHERE
        ins_D.ins_discipline_key = ins_SG.ins_discipline_key;

CREATE_VIEW(ins_v_srtdeel_gegevens,0) AS
    SELECT ins_D.ins_discipline_key, ins_D.ins_discipline_omschrijving,
           ins_SG.ins_srtgroep_key, ins_SG.ins_srtgroep_omschrijving,
           ins_SG.ins_srtgroep_upper, ins_SD.ins_srtdeel_key,
           ins_SD.ins_srtdeel_code, ins_SD.ins_srtdeel_code_upper,
           ins_SD.ins_srtdeel_omschrijving, ins_SD.ins_srtdeel_upper,
           ins_SD.ins_srtdeel_cadlaycolor, ins_SD.ins_srtdeel_cadlayLinetype,
           ins_SD.ins_srtdeel_cadlayer, ins_SD.ins_srtdeel_acadsymbol,
           ins_SD.ins_srtdeel_dimensie, INS_SD.ins_srtdeel_opmaat
    FROM ins_v_aanwezigdiscipline ins_D, ins_v_aanwezigsrtgroep ins_SG,
         ins_v_aanwezigsrtdeel ins_SD
    WHERE
        ins_SG.ins_srtgroep_key = ins_SD.ins_srtgroep_key AND
        ins_D.ins_discipline_key = ins_SG.ins_discipline_key;

CREATE_VIEW(ins_v_alg_overzicht,0)
(
    alg_onroerendgoed_keys,
    alg_onroerendgoed_type,
    alg_plaatsaanduiding,
    alg_plaatsomschrijving,
    alg_locatie_key,
    alg_gebouw_key,
    alg_gebouw_code,
    alg_gebouw_omschrijving,
    alg_gebouw_upper,
    alg_verdieping_key,
    alg_verdieping_omschrijving,
    alg_verdieping_upper,
    alg_verdieping_code,
    alg_ruimte_key,
    alg_ruimte_nr,
    alg_ruimte_upper_nr,
    prs_werkplek_key,
    prs_werkplek_module,
    prs_werkplek_omschrijving,
    prs_werkplek_volgnr,
    alg_terreinsector_key,
    alg_terreinsector_code,
    alg_terreinsector_omschrijving,
    alg_terreinsector_upper,
    prs_afdeling_key,
    prs_afdeling_code,
    prs_afdeling_omschrijving
)
AS
    SELECT alg_r.alg_ruimte_key,
           'R',
              alg_l.alg_locatie_code
           || DECODE (SUBSTR (alg_g.alg_gebouw_code, 1, 1),
                      '_', '',
                      '-' || alg_g.alg_gebouw_code)
           || DECODE (SUBSTR (alg_v.alg_verdieping_code, 1, 1),
                      '_', '',
                      '-' || alg_v.alg_verdieping_code)
           || DECODE (SUBSTR (alg_r.alg_ruimte_nr, 1, 1),
                      '_', '',
                      '-' || alg_r.alg_ruimte_nr),
           DECODE (
               SUBSTR (alg_g.alg_gebouw_code, 1, 1),
               '_', alg_l.alg_locatie_omschrijving,
               DECODE (
                   SUBSTR (alg_v.alg_verdieping_code, 1, 1),
                   '_', alg_g.alg_gebouw_naam,
                   DECODE (SUBSTR (alg_r.alg_ruimte_nr, 1, 1),
                           '_', '',
                           alg_r.alg_ruimte_omschrijving))),
           alg_g.alg_locatie_key,
           alg_g.alg_gebouw_key,
           alg_g.alg_gebouw_code,
           alg_g.alg_gebouw_omschrijving,
           alg_g.alg_gebouw_upper,
           alg_v.alg_verdieping_key,
           alg_v.alg_verdieping_omschrijving,
           alg_v.alg_verdieping_upper,
           alg_v.alg_verdieping_volgnr,
           alg_r.alg_ruimte_key,
           alg_r.alg_ruimte_nr,
           alg_r.alg_ruimte_upper_nr,
           TO_NUMBER (NULL),
           NULL,
           NULL,
           TO_NUMBER (NULL),
           TO_NUMBER (NULL),
           NULL,
           NULL,
           NULL,
           TO_NUMBER (NULL),
           NULL,
           NULL
      FROM alg_ruimte      alg_r,
           alg_verdieping  alg_v,
           alg_gebouw      alg_g,
           alg_locatie     alg_l
     WHERE     alg_r.alg_verdieping_key = alg_v.alg_verdieping_key
           AND alg_v.alg_gebouw_key = alg_g.alg_gebouw_key
           AND alg_g.alg_locatie_key = alg_l.alg_locatie_key
    UNION
    SELECT prs_w.prs_werkplek_key,
           'W',
              alg_l.alg_locatie_code
           || '-'
           || alg_g.alg_gebouw_code
           || '-'
           || alg_v.alg_verdieping_code
           || '-'
           || alg_r.alg_ruimte_nr
           || '/'
           || TO_CHAR (prs_w.prs_werkplek_volgnr),
           alg_r.alg_ruimte_omschrijving,
           alg_g.alg_locatie_key,
           alg_g.alg_gebouw_key,
           alg_g.alg_gebouw_code,
           alg_g.alg_gebouw_omschrijving,
           alg_g.alg_gebouw_upper,
           alg_v.alg_verdieping_key,
           alg_v.alg_verdieping_omschrijving,
           alg_v.alg_verdieping_upper,
           alg_v.alg_verdieping_volgnr,
           alg_r.alg_ruimte_key,
           alg_r.alg_ruimte_nr,
           alg_r.alg_ruimte_upper_nr,
           prs_w.prs_werkplek_key,
           prs_w.prs_werkplek_module,
           prs_w.prs_werkplek_omschrijving,
           prs_w.prs_werkplek_volgnr,
           TO_NUMBER (NULL),
           NULL,
           NULL,
           NULL,
           TO_NUMBER (NULL),
           NULL,
           NULL
      FROM prs_werkplek    prs_w,
           alg_ruimte      alg_r,
           alg_verdieping  alg_v,
           alg_gebouw      alg_g,
           alg_locatie     alg_l
     WHERE     prs_w.prs_alg_ruimte_key = alg_r.alg_ruimte_key
           AND alg_r.alg_verdieping_key = alg_v.alg_verdieping_key
           AND alg_v.alg_gebouw_key = alg_g.alg_gebouw_key
           AND alg_g.alg_locatie_key = alg_l.alg_locatie_key
    UNION
    SELECT alg_t.alg_terreinsector_key,
           'T',
           alg_l.alg_locatie_code || '-' || alg_t.alg_terreinsector_code,
           alg_terreinsector_omschrijving,
           alg_t.alg_locatie_key,
           TO_NUMBER (NULL),
           NULL,
           NULL,
           NULL,
           TO_NUMBER (NULL),
           NULL,
           NULL,
           TO_NUMBER (NULL),
           TO_NUMBER (NULL),
           NULL,
           NULL,
           TO_NUMBER (NULL),
           NULL,
           NULL,
           TO_NUMBER (NULL),
           alg_t.alg_terreinsector_key,
           alg_t.alg_terreinsector_code,
           alg_t.alg_terreinsector_omschrijving,
           alg_t.alg_terreinsector_upper,
           TO_NUMBER (NULL),
           NULL,
           NULL
      FROM alg_terreinsector alg_t, alg_locatie alg_l
     WHERE alg_t.alg_locatie_key = alg_l.alg_locatie_key
    UNION
    SELECT prs_afdeling_key,
           'A',
           prs_afdeling_naam,
           prs_afdeling_naam2,
           TO_NUMBER (NULL),
           TO_NUMBER (NULL),
           NULL,
           NULL,
           NULL,
           TO_NUMBER (NULL),
           NULL,
           NULL,
           TO_NUMBER (NULL),
           TO_NUMBER (NULL),
           NULL,
           NULL,
           TO_NUMBER (NULL),
           NULL,
           NULL,
           TO_NUMBER (NULL),
           TO_NUMBER (NULL),
           NULL,
           NULL,
           NULL,
           prs_afdeling_key,
           prs_afdeling_naam3,
           prs_afdeling_naam4
      FROM prs_v_afdeling_fullnames;

--
-- dummy definitie van prs_v_afdeling_perslid
-- omdat deze in de ins_v_deel.. views gebruikt wordt
-- maar prs-views pas later worden aangemaakt.
--
CREATE_VIEW (prs_v_afdeling_perslid,0)
   (      prs_roerendgoed_key
   ,      prs_roerendgoed_type
   ,      prs_afdeling_key
   ,      prs_afdeling_omschrijving
   ,      prs_afdeling_upper
   ,      prs_perslid_key
   ,      prs_perslid_volnaam
   ,      prs_perslid_upper
   )
AS SELECT to_number(null),null,to_number(null),null,null,to_number(null),null,null
   FROM   DUAL;

CREATE_VIEW(ins_v_deel_gegevens,0)
   (      ins_discipline_key
   ,      ins_discipline_omschrijving
   ,      ins_srtgroep_key
   ,      ins_srtgroep_omschrijving
   ,      ins_srtgroep_upper
   ,      ins_srtdeel_key
   ,      ins_srtdeel_omschrijving
   ,      ins_srtdeel_upper
   ,      alg_locatie_key
   ,      alg_gebouw_key
   ,      alg_gebouw_omschrijving
   ,      alg_gebouw_upper
   ,      alg_verdieping_key
   ,      alg_verdieping_omschrijving
   ,      alg_verdieping_upper
   ,      alg_verdieping_code
   ,      alg_ruimte_key
   ,      alg_ruimte_nr
   ,      alg_ruimte_upper_nr
   ,      prs_werkplek_key
   ,      prs_werkplek_module
   ,      prs_werkplek_volgnr
   ,      alg_terreinsector_key
   ,      alg_terreinsector_omschrijving
   ,      alg_terreinsector_upper
   ,      alg_plaatsaanduiding
   ,      prs_afdeling_key
   ,      prs_afdeling_omschrijving
   ,      prs_afdeling_upper
   ,      prs_perslid_key
   ,      prs_perslid_volnaam
   ,      prs_perslid_upper
   ,      ins_deel_key
   ,      ins_deel_omschrijving
   ,      ins_deel_upper
   ,      ins_deel_aantal
   ,      ins_deel_oppervlak
   ,      ins_deel_omtrek
   ,      ins_deel_aanmaak
   ,      ins_deel_opmerking
   ,      ins_deel_getekend
   ,      ins_deel_vervaldatum
)
AS SELECT INS_D.ins_discipline_key
   ,      INS_D.ins_discipline_omschrijving
   ,      INS_SG.ins_srtgroep_key
   ,      INS_SG.ins_srtgroep_omschrijving
   ,      INS_SG.ins_srtgroep_upper
   ,      INS_SD.ins_srtdeel_key
   ,      INS_SD.ins_srtdeel_code||'-'||INS_SD.ins_srtdeel_omschrijving
   ,      INS_SD.ins_srtdeel_upper
   ,      INS_DE.ins_alg_locatie_key
   ,      INS_AO.alg_gebouw_key
   ,      INS_AO.alg_gebouw_omschrijving
   ,      INS_AO.alg_gebouw_upper
   ,      INS_AO.alg_verdieping_key
   ,      INS_AO.alg_verdieping_omschrijving
   ,      INS_AO.alg_verdieping_upper
   ,      INS_AO.alg_verdieping_code
   ,      INS_AO.alg_ruimte_key
   ,      INS_AO.alg_ruimte_nr
   ,      INS_AO.alg_ruimte_upper_nr
   ,      INS_AO.prs_werkplek_key
   ,      INS_AO.prs_werkplek_module
   ,      INS_AO.prs_werkplek_volgnr
   ,      INS_AO.alg_terreinsector_key
   ,      INS_AO.alg_terreinsector_omschrijving
   ,      INS_AO.alg_terreinsector_upper
   ,      INS_AO.alg_plaatsaanduiding
   ,      to_number(NULL)
   ,      NULL
   ,      NULL
   ,      to_number(NULL)
   ,      NULL
   ,      NULL
   ,      INS_DE.ins_deel_key
   ,      INS_DE.ins_deel_omschrijving
   ,      INS_DE.ins_deel_upper
   ,      INS_DE.ins_deel_aantal
   ,      INS_DE.ins_deel_oppervlak
   ,      INS_DE.ins_deel_omtrek
   ,      INS_DE.ins_deel_aanmaak
   ,      INS_DE.ins_deel_opmerking
   ,      INS_DE.ins_deel_getekend
   ,      INS_DE.ins_deel_vervaldatum
   FROM   ins_deel               INS_DE
   ,      ins_tab_discipline     INS_D
   ,      ins_v_alg_overzicht    INS_AO
   ,      ins_srtdeel            INS_SD
   ,      ins_srtgroep           INS_SG
   WHERE  INS_DE.ins_deel_verwijder    IS NULL
   AND    INS_DE.ins_deel_parent_key   IS NULL
   AND    INS_AO.alg_onroerendgoed_keys = INS_DE.ins_alg_ruimte_key
   AND    INS_AO.alg_onroerendgoed_type = INS_DE.ins_alg_ruimte_type
   AND    INS_DE.ins_alg_ruimte_type   IN ('T','R','W')
   AND    INS_AO.alg_locatie_key        = INS_DE.ins_alg_locatie_key
   AND    INS_SD.ins_srtdeel_key        = INS_DE.ins_srtdeel_key
   AND    INS_SG.ins_srtgroep_key       = INS_SD.ins_srtgroep_key
   AND    INS_D.ins_discipline_key      = INS_DE.ins_discipline_key
   AND    INS_DE.ins_discipline_key IN (SELECT ins_discipline_key FROM ins_discipline)
   UNION
   SELECT INS_D.ins_discipline_key
   ,      INS_D.ins_discipline_omschrijving
   ,      INS_SG.ins_srtgroep_key
   ,      INS_SG.ins_srtgroep_omschrijving
   ,      INS_SG.ins_srtgroep_upper
   ,      INS_SD.ins_srtdeel_key
   ,      INS_SD.ins_srtdeel_code||'-'||INS_SD.ins_srtdeel_omschrijving
   ,      INS_SD.ins_srtdeel_upper
   ,      INS_DE.ins_alg_locatie_key
   ,      to_number(NULL)
   ,      NULL
   ,      NULL
   ,      to_number(NULL)
   ,      NULL
   ,      NULL
   ,      to_number(NULL)
   ,      to_number(NULL)
   ,      NULL
   ,      NULL
   ,      to_number(NULL)
   ,      NULL
   ,      to_number(NULL)
   ,      to_number(NULL)
   ,      NULL
   ,      NULL
   ,      decode(PRS_AP.prs_roerendgoed_type,'A',prs_afdeling_upper,'P',prs_perslid_volnaam)
   ,      PRS_AP.prs_afdeling_key
   ,      PRS_AP.prs_afdeling_omschrijving
   ,      PRS_AP.prs_afdeling_upper
   ,      PRS_AP.prs_perslid_key
   ,      PRS_AP.prs_perslid_volnaam
   ,      PRS_AP.prs_perslid_upper
   ,      INS_DE.ins_deel_key
   ,      INS_DE.ins_deel_omschrijving
   ,      INS_DE.ins_deel_upper
   ,      INS_DE.ins_deel_aantal
   ,      INS_DE.ins_deel_oppervlak
   ,      INS_DE.ins_deel_omtrek
   ,      INS_DE.ins_deel_aanmaak
   ,      INS_DE.ins_deel_opmerking
   ,      INS_DE.ins_deel_getekend
   ,      INS_DE.ins_deel_vervaldatum
   FROM   ins_deel               INS_DE
   ,      ins_tab_discipline     INS_D
   ,      prs_v_afdeling_perslid PRS_AP
   ,      ins_srtdeel            INS_SD
   ,      ins_srtgroep           INS_SG
   WHERE  INS_DE.ins_deel_verwijder    IS NULL
   AND    INS_DE.ins_deel_parent_key   IS NULL
   AND    PRS_AP.prs_roerendgoed_key    = INS_DE.ins_alg_ruimte_key
   AND    PRS_AP.prs_roerendgoed_type   = INS_DE.ins_alg_ruimte_type
   AND    INS_DE.ins_alg_ruimte_type   IN ('A','P')
   AND    INS_SD.ins_srtdeel_key        = INS_DE.ins_srtdeel_key
   AND    INS_SG.ins_srtgroep_key       = INS_SD.ins_srtgroep_key
   AND    INS_D.ins_discipline_key      = INS_DE.ins_discipline_key
   AND    INS_DE.ins_discipline_key IN (SELECT ins_discipline_key FROM ins_discipline);
        /* 05/02/1998 AH Voor performance is de vorige regel toegevoegd.
         *               Deze regel staat hier omdat anders een lege regel in de view-tekst
         *               komt te staan.
         */

CREATE_VIEW(ins_v_orgdeel_gegevens,0)
   (      ins_discipline_key
   ,      ins_discipline_omschrijving
   ,      ins_srtgroep_key
   ,      ins_srtgroep_omschrijving
   ,      ins_srtgroep_upper
   ,      ins_srtdeel_key
   ,      ins_srtdeel_omschrijving
   ,      ins_srtdeel_upper
   ,      alg_locatie_key
   ,      alg_gebouw_key
   ,      alg_gebouw_omschrijving
   ,      alg_gebouw_upper
   ,      alg_verdieping_key
   ,      alg_verdieping_omschrijving
   ,      alg_verdieping_upper
   ,      alg_verdieping_code
   ,      alg_ruimte_key
   ,      alg_ruimte_nr
   ,      alg_ruimte_upper_nr
   ,      prs_werkplek_key
   ,      prs_werkplek_module
   ,      prs_werkplek_volgnr
   ,      alg_terreinsector_key
   ,      alg_terreinsector_omschrijving
   ,      alg_terreinsector_upper
   ,      alg_plaatsaanduiding
   ,      prs_afdeling_key
   ,      prs_afdeling_omschrijving
   ,      prs_afdeling_upper
   ,      prs_perslid_key
   ,      prs_perslid_volnaam
   ,      prs_perslid_upper
   ,      ins_deel_key
   ,      ins_deel_omschrijving
   ,      ins_deel_upper
   ,      ins_deel_aantal
   ,      ins_deel_oppervlak
   ,      ins_deel_omtrek
   ,      ins_deel_aanmaak
   ,      ins_deel_opmerking
   ,      ins_deel_getekend
)
AS
SELECT INS_D.ins_discipline_key
   ,      INS_D.ins_discipline_omschrijving
   ,      INS_SG.ins_srtgroep_key
   ,      INS_SG.ins_srtgroep_omschrijving
   ,      INS_SG.ins_srtgroep_upper
   ,      INS_SD.ins_srtdeel_key
   ,      INS_SD.ins_srtdeel_code || '-' || INS_SD.ins_srtdeel_omschrijving
   ,      INS_SD.ins_srtdeel_upper
   ,      INS_DE.ins_alg_locatie_key
   ,      INS_AO.alg_gebouw_key
   ,      INS_AO.alg_gebouw_omschrijving
   ,      INS_AO.alg_gebouw_upper
   ,      INS_AO.alg_verdieping_key
   ,      INS_AO.alg_verdieping_omschrijving
   ,      INS_AO.alg_verdieping_upper
   ,      INS_AO.alg_verdieping_code
   ,      INS_AO.alg_ruimte_key
   ,      INS_AO.alg_ruimte_nr
   ,      INS_AO.alg_ruimte_upper_nr
   ,      INS_AO.prs_werkplek_key
   ,      INS_AO.prs_werkplek_module
   ,      INS_AO.prs_werkplek_volgnr
   ,      INS_AO.alg_terreinsector_key
   ,      INS_AO.alg_terreinsector_omschrijving
   ,      INS_AO.alg_terreinsector_upper
   ,      INS_AO.alg_plaatsaanduiding
   ,      TO_NUMBER(NULL)
   ,      NULL
   ,      NULL
   ,      TO_NUMBER(NULL)
   ,      NULL
   ,      NULL
   ,      INS_DE.ins_deel_key
   ,      INS_DE.ins_deel_omschrijving
   ,      INS_DE.ins_deel_upper
   ,      INS_DE.ins_deel_aantal
   ,      INS_DE.ins_deel_oppervlak
   ,      INS_DE.ins_deel_omtrek
   ,      INS_DE.ins_deel_aanmaak
   ,      INS_DE.ins_deel_opmerking
   ,      INS_DE.ins_deel_getekend
   FROM   ins_deel               INS_DE
   ,      ins_tab_discipline     INS_D
   ,      ins_v_alg_overzicht    INS_AO
   ,      ins_srtdeel            INS_SD
   ,      ins_srtgroep           INS_SG
   WHERE  INS_DE.ins_deel_verwijder    IS NULL
   AND    INS_DE.ins_deel_parent_key   IS NULL
   AND    INS_AO.alg_onroerendgoed_keys = INS_DE.ins_alg_ruimte_key_org
   AND    INS_AO.alg_onroerendgoed_type = INS_DE.ins_alg_ruimte_type_org
   AND    INS_DE.ins_alg_ruimte_type_org   IN ('T','R','W')
   AND    INS_AO.alg_locatie_key        = INS_DE.ins_alg_locatie_key
   AND    INS_SD.ins_srtdeel_key        = INS_DE.ins_srtdeel_key
   AND    INS_SG.ins_srtgroep_key       = INS_SD.ins_srtgroep_key
   AND    INS_D.ins_discipline_key      = INS_DE.ins_discipline_key
   AND    INS_DE.ins_discipline_key IN (SELECT ins_discipline_key FROM ins_discipline)
   UNION
   SELECT INS_D.ins_discipline_key
   ,      INS_D.ins_discipline_omschrijving
   ,      INS_SG.ins_srtgroep_key
   ,      INS_SG.ins_srtgroep_omschrijving
   ,      INS_SG.ins_srtgroep_upper
   ,      INS_SD.ins_srtdeel_key
   ,      INS_SD.ins_srtdeel_code || '-' || INS_SD.ins_srtdeel_omschrijving
   ,      INS_SD.ins_srtdeel_upper
   ,      INS_DE.ins_alg_locatie_key
   ,      TO_NUMBER(NULL)
   ,      NULL
   ,      NULL
   ,      TO_NUMBER(NULL)
   ,      NULL
   ,      NULL
   ,      TO_NUMBER(NULL)
   ,      TO_NUMBER(NULL)
   ,      NULL
   ,      NULL
   ,      TO_NUMBER(NULL)
   ,      NULL
   ,      TO_NUMBER(NULL)
   ,      TO_NUMBER(NULL)
   ,      NULL
   ,      NULL
   ,      DECODE( PRS_AP.prs_roerendgoed_type , 'A' , prs_afdeling_upper , 'P' , prs_perslid_volnaam )
   ,      PRS_AP.prs_afdeling_key
   ,      PRS_AP.prs_afdeling_omschrijving
   ,      PRS_AP.prs_afdeling_upper
   ,      PRS_AP.prs_perslid_key
   ,      PRS_AP.prs_perslid_volnaam
   ,      PRS_AP.prs_perslid_upper
   ,      INS_DE.ins_deel_key
   ,      INS_DE.ins_deel_omschrijving
   ,      INS_DE.ins_deel_upper
   ,      INS_DE.ins_deel_aantal
   ,      INS_DE.ins_deel_oppervlak
   ,      INS_DE.ins_deel_omtrek
   ,      INS_DE.ins_deel_aanmaak
   ,      INS_DE.ins_deel_opmerking
   ,      INS_DE.ins_deel_getekend
   FROM   ins_deel               INS_DE
   ,      ins_tab_discipline     INS_D
   ,      prs_v_afdeling_perslid PRS_AP
   ,      ins_srtdeel            INS_SD
   ,      ins_srtgroep           INS_SG
   WHERE  INS_DE.ins_deel_verwijder    IS NULL
   AND    INS_DE.ins_deel_parent_key   IS NULL
   AND    PRS_AP.prs_roerendgoed_key    = INS_DE.ins_alg_ruimte_key_org
   AND    PRS_AP.prs_roerendgoed_type   = INS_DE.ins_alg_ruimte_type_org
   AND    INS_DE.ins_alg_ruimte_type_org   IN ('A','P')
   AND    INS_SD.ins_srtdeel_key        = INS_DE.ins_srtdeel_key
   AND    INS_SG.ins_srtgroep_key       = INS_SD.ins_srtgroep_key
   AND    INS_D.ins_discipline_key      = INS_DE.ins_discipline_key
   AND    INS_DE.ins_discipline_key IN (SELECT ins_discipline_key FROM ins_discipline);

CREATE_VIEW(ins_v_deel_gegevens_keys,0)
(
       alg_locatie_key
       ,alg_gebouw_key,alg_verdieping_key,alg_ruimte_key,prs_werkplek_key,alg_terreinsector_key
       ,prs_afdeling_key,prs_perslid_key,ins_deel_key
)
AS
select de.ins_alg_locatie_key,ve.alg_gebouw_key,ru.alg_verdieping_key
      ,de.ins_alg_ruimte_key,to_number(null),to_number(null),to_number(null),to_number(null),de.ins_deel_key
from   ins_v_aanwezigdeel de,alg_ruimte  ru,alg_verdieping  ve
where ((de.ins_alg_ruimte_key = ru.alg_ruimte_key) and de.ins_alg_ruimte_type = 'R')
and  ((ru.alg_verdieping_key = ve.alg_verdieping_key) and de.ins_alg_ruimte_type = 'R')
union all
select de.ins_alg_locatie_key,ve.alg_gebouw_key,ru.alg_verdieping_key
      ,ru.alg_ruimte_key,de.ins_alg_ruimte_key,to_number(null),to_number(null),to_number(null),de.ins_deel_key
from   ins_v_aanwezigdeel de,prs_werkplek wp, alg_ruimte  ru, alg_verdieping ve
where  ((de.ins_alg_ruimte_key = wp.prs_werkplek_key) and de.ins_alg_ruimte_type = 'W')
and  ((wp.prs_alg_ruimte_key = ru.alg_ruimte_key) and de.ins_alg_ruimte_type = 'W')
and    ru.alg_verdieping_key = ve.alg_verdieping_key
union all
select de.ins_alg_locatie_key,to_number(null),to_number(null),to_number(null),to_number(null)
      ,de.ins_alg_ruimte_key,to_number(null),to_number(null),de.ins_deel_key
from   ins_v_aanwezigdeel  de
where  de.ins_alg_ruimte_type = 'T'
union all
select de.ins_alg_locatie_key,to_number(null),to_number(null)
      ,to_number(null),to_number(null), to_number(null),de.ins_alg_ruimte_key,to_number(null),de.ins_deel_key
from   ins_v_aanwezigdeel  de
where  de.ins_alg_ruimte_type = 'A'
union all
select de.ins_alg_locatie_key,to_number(null),to_number(null)
      ,to_number(null),to_number(null),to_number(null),af.prs_afdeling_key,de.ins_alg_ruimte_key,de.ins_deel_key
from   ins_v_aanwezigdeel  de,prs_perslid  pl,prs_afdeling  af
where  ((de.ins_alg_ruimte_key = pl.prs_perslid_key) and de.ins_alg_ruimte_type = 'P')
and  ((pl.prs_afdeling_key = af.prs_afdeling_key) and de.ins_alg_ruimte_type = 'P');

-- Delen EN onderdelen (FSN#802)
CREATE_VIEW(ins_v_xdeel_gegevens_keys,0)
(
       ins_discipline_key,ins_srtgroep_key,ins_srtdeel_key,alg_locatie_key
       ,alg_gebouw_key,alg_verdieping_key,alg_ruimte_key,prs_werkplek_key,alg_terreinsector_key
       ,prs_afdeling_key,prs_perslid_key,ins_deel_key
)
AS
select de.ins_discipline_key,gr.ins_srtgroep_key,de.ins_srtdeel_key
      ,de.ins_alg_locatie_key,ve.alg_gebouw_key,ru.alg_verdieping_key
      ,de.ins_alg_ruimte_key,to_number(null),to_number(null),to_number(null),to_number(null),de.ins_deel_key
from   ins_deel de,ins_srtgroep  gr, ins_srtdeel sd, alg_ruimte  ru,alg_verdieping  ve
where  de.ins_discipline_key = gr.ins_discipline_key
and    de.ins_srtdeel_key = sd.ins_srtdeel_key
and    sd.ins_srtgroep_key = gr.ins_srtgroep_key
and  ((de.ins_alg_ruimte_key = ru.alg_ruimte_key) and de.ins_alg_ruimte_type = 'R')
and  ((ru.alg_verdieping_key = ve.alg_verdieping_key) and de.ins_alg_ruimte_type = 'R')
and    de.ins_deel_verwijder IS NULL
union
select de.ins_discipline_key,gr.ins_srtgroep_key,de.ins_srtdeel_key
      ,de.ins_alg_locatie_key,ve.alg_gebouw_key,ru.alg_verdieping_key
      ,ru.alg_ruimte_key,de.ins_alg_ruimte_key,to_number(null),to_number(null),to_number(null),de.ins_deel_key
from   ins_deel de,ins_srtgroep gr, ins_srtdeel sd, prs_werkplek wp, alg_ruimte  ru, alg_verdieping ve
where  de.ins_discipline_key = gr.ins_discipline_key
and    de.ins_srtdeel_key = sd.ins_srtdeel_key
and    sd.ins_srtgroep_key = gr.ins_srtgroep_key
and  ((de.ins_alg_ruimte_key = wp.prs_werkplek_key) and de.ins_alg_ruimte_type = 'W')
and  ((wp.prs_alg_ruimte_key = ru.alg_ruimte_key) and de.ins_alg_ruimte_type = 'W')
and    ru.alg_verdieping_key = ve.alg_verdieping_key
and    de.ins_deel_verwijder IS NULL
union
select de.ins_discipline_key,gr.ins_srtgroep_key,de.ins_srtdeel_key
      ,de.ins_alg_locatie_key,to_number(null),to_number(null),to_number(null),to_number(null)
      ,de.ins_alg_ruimte_key,to_number(null),to_number(null),de.ins_deel_key
from   ins_deel  de,ins_srtgroep  gr, ins_srtdeel sd
where  de.ins_discipline_key = gr.ins_discipline_key
and    de.ins_srtdeel_key = sd.ins_srtdeel_key
and    sd.ins_srtgroep_key = gr.ins_srtgroep_key and de.ins_alg_ruimte_type = 'T'
and    de.ins_deel_verwijder IS NULL
union
select de.ins_discipline_key,gr.ins_srtgroep_key,de.ins_srtdeel_key
      ,de.ins_alg_locatie_key,to_number(null),to_number(null)
      ,to_number(null),to_number(null), to_number(null),de.ins_alg_ruimte_key,to_number(null),de.ins_deel_key
from   ins_deel  de,ins_srtgroep  gr,ins_srtdeel  sd
where  de.ins_discipline_key = gr.ins_discipline_key
and    de.ins_srtdeel_key = sd.ins_srtdeel_key
and    sd.ins_srtgroep_key = gr.ins_srtgroep_key and de.ins_alg_ruimte_type = 'A'
and    de.ins_deel_verwijder IS NULL
union
select de.ins_discipline_key,gr.ins_srtgroep_key,de.ins_srtdeel_key
      ,de.ins_alg_locatie_key,to_number(null),to_number(null)
      ,to_number(null),to_number(null),to_number(null),af.prs_afdeling_key,de.ins_alg_ruimte_key,de.ins_deel_key
from   ins_deel  de,ins_srtgroep  gr,ins_srtdeel  sd,prs_perslid  pl,prs_afdeling  af
where  de.ins_discipline_key = gr.ins_discipline_key
and    de.ins_srtdeel_key = sd.ins_srtdeel_key
and    sd.ins_srtgroep_key = gr.ins_srtgroep_key
and  ((de.ins_alg_ruimte_key = pl.prs_perslid_key) and de.ins_alg_ruimte_type = 'P')
and  ((pl.prs_afdeling_key = af.prs_afdeling_key) and de.ins_alg_ruimte_type = 'P')
and    de.ins_deel_verwijder IS NULL;

-- FSN#14846: Uitgeleende objecten
CREATE_VIEW(ins_v_orgdeel_gegevens_keys,0)
(INS_DISCIPLINE_KEY, INS_SRTGROEP_KEY, INS_SRTDEEL_KEY, ALG_LOCATIE_KEY, ALG_GEBOUW_KEY,
 ALG_VERDIEPING_KEY, ALG_RUIMTE_KEY, PRS_WERKPLEK_KEY, ALG_TERREINSECTOR_KEY, PRS_AFDELING_KEY,
 PRS_PERSLID_KEY, INS_DEEL_KEY)
AS
select de.ins_discipline_key,gr.ins_srtgroep_key,de.ins_srtdeel_key
      ,de.ins_alg_locatie_key,ve.alg_gebouw_key,ru.alg_verdieping_key
      ,de.ins_alg_ruimte_key_org,TO_NUMBER(null),TO_NUMBER(null),TO_NUMBER(null),TO_NUMBER(null),de.ins_deel_key
from   ins_deel de,ins_srtgroep  gr, ins_srtdeel sd, alg_ruimte  ru,alg_verdieping  ve
where  de.ins_discipline_key = gr.ins_discipline_key
and    de.ins_srtdeel_key = sd.ins_srtdeel_key
and    sd.ins_srtgroep_key = gr.ins_srtgroep_key
and  ((de.ins_alg_ruimte_key_org = ru.alg_ruimte_key) and de.ins_alg_ruimte_type_org = 'R')
and  ((ru.alg_verdieping_key = ve.alg_verdieping_key) and de.ins_alg_ruimte_type_org = 'R')
and    de.ins_deel_verwijder IS NULL
union
select de.ins_discipline_key,gr.ins_srtgroep_key,de.ins_srtdeel_key
      ,de.ins_alg_locatie_key,ve.alg_gebouw_key,ru.alg_verdieping_key
      ,ru.alg_ruimte_key,de.ins_alg_ruimte_key_org,TO_NUMBER(null),TO_NUMBER(null),TO_NUMBER(null),de.ins_deel_key
from   ins_deel de,ins_srtgroep gr, ins_srtdeel sd, prs_werkplek wp, alg_ruimte  ru, alg_verdieping ve
where  de.ins_discipline_key = gr.ins_discipline_key
and    de.ins_srtdeel_key = sd.ins_srtdeel_key
and    sd.ins_srtgroep_key = gr.ins_srtgroep_key
and  ((de.ins_alg_ruimte_key_org = wp.prs_werkplek_key) and de.ins_alg_ruimte_type_org = 'W')
and  ((wp.prs_alg_ruimte_key = ru.alg_ruimte_key) and de.ins_alg_ruimte_type_org = 'W')
and    ru.alg_verdieping_key = ve.alg_verdieping_key
and    de.ins_deel_verwijder IS NULL
union
select de.ins_discipline_key,gr.ins_srtgroep_key,de.ins_srtdeel_key
      ,de.ins_alg_locatie_key,TO_NUMBER(null),TO_NUMBER(null),TO_NUMBER(null),TO_NUMBER(null)
      ,de.ins_alg_ruimte_key_org,TO_NUMBER(null),TO_NUMBER(null),de.ins_deel_key
from   ins_deel  de,ins_srtgroep  gr, ins_srtdeel sd
where  de.ins_discipline_key = gr.ins_discipline_key
and    de.ins_srtdeel_key = sd.ins_srtdeel_key
and    sd.ins_srtgroep_key = gr.ins_srtgroep_key and de.ins_alg_ruimte_type_org = 'T'
and    de.ins_deel_verwijder IS NULL
union
select de.ins_discipline_key,gr.ins_srtgroep_key,de.ins_srtdeel_key
      ,de.ins_alg_locatie_key,TO_NUMBER(null),TO_NUMBER(null)
      ,TO_NUMBER(null),TO_NUMBER(null), TO_NUMBER(null),de.ins_alg_ruimte_key_org,TO_NUMBER(null),de.ins_deel_key
from   ins_deel  de,ins_srtgroep  gr,ins_srtdeel  sd
where  de.ins_discipline_key = gr.ins_discipline_key
and    de.ins_srtdeel_key = sd.ins_srtdeel_key
and    sd.ins_srtgroep_key = gr.ins_srtgroep_key and de.ins_alg_ruimte_type_org = 'A'
and    de.ins_deel_verwijder IS NULL
union
select de.ins_discipline_key,gr.ins_srtgroep_key,de.ins_srtdeel_key
      ,de.ins_alg_locatie_key,TO_NUMBER(null),TO_NUMBER(null)
      ,TO_NUMBER(null),TO_NUMBER(null),TO_NUMBER(null),af.prs_afdeling_key,de.ins_alg_ruimte_key_org,de.ins_deel_key
from   ins_deel  de,ins_srtgroep  gr,ins_srtdeel  sd,prs_perslid  pl,prs_afdeling  af
where  de.ins_discipline_key = gr.ins_discipline_key
and    de.ins_srtdeel_key = sd.ins_srtdeel_key
and    sd.ins_srtgroep_key = gr.ins_srtgroep_key
and  ((de.ins_alg_ruimte_key_org = pl.prs_perslid_key) and de.ins_alg_ruimte_type_org = 'P')
and  ((pl.prs_afdeling_key = af.prs_afdeling_key) and de.ins_alg_ruimte_type_org = 'P')
and    de.ins_deel_verwijder IS NULL;

CREATE_VIEW(ins_v_onderdeel_gegevens,0)
   (      ins_discipline_key
   ,      ins_srtgroep_key
   ,      ins_srtdeel_key
   ,      ins_srtdeel_omschrijving
   ,      alg_locatie_key
   ,      alg_gebouw_key
   ,      alg_verdieping_key
   ,      alg_ruimte_key
   ,      alg_ruimte_nr
   ,      alg_ruimte_upper_nr
   ,      prs_werkplek_key
   ,      alg_terreinsector_key
   ,      alg_plaatsaanduiding
   ,      prs_afdeling_key
   ,      prs_perslid_key
   ,      ins_onderdeel_key
   ,      ins_deel_key
   ,      ins_onderdeel_omschrijving
   ,      ins_onderdeel_upper
   ,      ins_onderdeel_aantal
   ,      ins_deel_omschrijving)
AS SELECT INS_D.ins_discipline_key
   ,      INS_SG.ins_srtgroep_key
   ,      INS_SD.ins_srtdeel_key
   ,      INS_SD.ins_srtdeel_omschrijving
   ,      INS_DE.ins_alg_locatie_key
   ,      INS_AO.alg_gebouw_key
   ,      INS_AO.alg_verdieping_key
   ,      INS_AO.alg_ruimte_key
   ,      INS_AO.alg_ruimte_nr
   ,      INS_AO.alg_ruimte_upper_nr
   ,      INS_AO.prs_werkplek_key
   ,      INS_AO.alg_terreinsector_key
   ,      INS_AO.alg_plaatsaanduiding
   ,      to_number(null)
   ,      to_number(null)
   ,      INS_DE.ins_deel_key
   ,      INS_DE.ins_deel_parent_key
   ,      INS_DE.ins_deel_omschrijving
   ,      INS_DE.ins_deel_upper
   ,      INS_DE.ins_deel_aantal
   ,      INS_DE2.ins_deel_omschrijving
   FROM   ins_deel            INS_DE
   ,      ins_discipline      INS_D
   ,      ins_v_alg_overzicht INS_AO
   ,      ins_srtdeel         INS_SD
   ,      ins_srtgroep        INS_SG
   ,      ins_deel            INS_DE2
   WHERE  INS_DE.ins_deel_verwijder    IS NULL
   AND    INS_DE.ins_deel_parent_key    = INS_DE2.ins_deel_key
   AND    INS_AO.alg_onroerendgoed_keys = INS_DE.ins_alg_ruimte_key
   AND    INS_AO.alg_onroerendgoed_type = INS_DE.ins_alg_ruimte_type
   AND    INS_AO.alg_locatie_key        = INS_DE.ins_alg_locatie_key
   AND    INS_SD.ins_srtdeel_key        = INS_DE.ins_srtdeel_key
   AND    INS_SG.ins_srtgroep_key       = INS_SD.ins_srtgroep_key
   AND    INS_D.ins_discipline_key      = INS_DE.ins_discipline_key
   AND    INS_DE.ins_alg_ruimte_type   IN ('T','G','V','R','W')
   UNION
   SELECT INS_D.ins_discipline_key
   ,      INS_SG.ins_srtgroep_key
   ,      INS_SD.ins_srtdeel_key
   ,      INS_SD.ins_srtdeel_omschrijving
   ,      INS_DE.ins_alg_locatie_key
   ,      to_number(null)
   ,      to_number(null)
   ,      to_number(null)
   ,      null
   ,      null
   ,      to_number(null)
   ,      to_number(null)
   ,      decode(PRS_AP.prs_roerendgoed_type,'A',prs_afdeling_upper,'P',prs_perslid_volnaam)
   ,      PRS_AP.prs_afdeling_key
   ,      PRS_AP.prs_perslid_key
   ,      INS_DE.ins_deel_key
   ,      INS_DE.ins_deel_parent_key
   ,      INS_DE.ins_deel_omschrijving
   ,      INS_DE.ins_deel_upper
   ,      INS_DE.ins_deel_aantal
   ,      INS_DE2.ins_deel_omschrijving
   FROM   ins_deel               INS_DE
   ,      ins_discipline         INS_D
   ,      prs_v_afdeling_perslid PRS_AP
   ,      ins_srtdeel            INS_SD
   ,      ins_srtgroep           INS_SG
   ,      ins_deel               INS_DE2
   WHERE  INS_DE.ins_deel_verwijder  IS NULL
   AND    INS_DE.ins_deel_parent_key  = INS_DE2.ins_deel_key
   AND    PRS_AP.prs_roerendgoed_key  = INS_DE.ins_alg_ruimte_key
   AND    PRS_AP.prs_roerendgoed_type = INS_DE.ins_alg_ruimte_type
   AND    INS_SD.ins_srtdeel_key      = INS_DE.ins_srtdeel_key
   AND    INS_SG.ins_srtgroep_key     = INS_SD.ins_srtgroep_key
   AND    INS_D.ins_discipline_key    = INS_DE.ins_discipline_key
   AND    INS_DE.ins_alg_ruimte_type IN ('A','P');


/*
   View met alle sleutels van de gemeenschappelijke sequence
   ins_s_ins_srtinst_keys
*/
CREATE_VIEW(ins_v_srtinst,0) (ins_srtinst_keys,
                           ins_srtdeel_key,
                           ins_srtonderdeel_key,
                           ins_srtelement_key,
                           ins_type) AS
   SELECT ins_v_aanwezigsrtdeel.ins_srtdeel_key,
          ins_v_aanwezigsrtdeel.ins_srtdeel_key,
          TO_NUMBER(NULL),
          TO_NUMBER(NULL),
          'D'
   FROM ins_v_aanwezigsrtdeel;


CREATE_VIEW(ins_v_allsrtinst,0) (ins_srtinst_keys,
                           ins_srtdeel_key,
                           ins_srtonderdeel_key,
                           ins_srtelement_key,
                           ins_type) AS
   SELECT ins_srtdeel.ins_srtdeel_key,
          ins_srtdeel.ins_srtdeel_key,
          TO_NUMBER(NULL),
          TO_NUMBER(NULL),
          'D'
   FROM ins_srtdeel;

CREATE_VIEW(ins_v_allsrtinstallatie,0)
( niveau
, ins_srtinstallatie_key
, discipline_oms
, srtgroep_oms
, srtdeel_oms
, ins_discipline_key
, ins_srtgroep_key
, ins_srtdeel_key
)
AS
SELECT 'D'
     , ins_ID.ins_discipline_key
     , ins_ID.ins_discipline_omschrijving discipline_oms
     , null srtgroep_oms
     , null srtdeel_oms
     , ins_ID.ins_discipline_key
     , null ins_srtgroep_key
     , null ins_srtdeel_key
  FROM ins_discipline ins_ID
UNION
SELECT 'G'
     , ins_SG.ins_srtgroep_key
     , ins_ID.ins_discipline_omschrijving
     , ins_SG.ins_srtgroep_omschrijving
     , null
     , ins_ID.ins_discipline_key
     , ins_SG.ins_srtgroep_key
     , null
  FROM ins_discipline ins_ID
     , ins_srtgroep ins_SG
 WHERE ins_ID.ins_discipline_key = ins_SG.ins_discipline_key
UNION
SELECT 'S'
     , ins_SD.ins_srtdeel_key
     , ins_ID.ins_discipline_omschrijving
     , ins_SG.ins_srtgroep_omschrijving
     , ins_SD.ins_srtdeel_omschrijving
     , ins_ID.ins_discipline_key
     , ins_SG.ins_srtgroep_key
     , ins_SD.ins_srtdeel_key
  FROM ins_discipline ins_ID
     , ins_srtgroep ins_SG
     , ins_srtdeel ins_SD
 WHERE ins_SG.ins_srtgroep_key = ins_SD.ins_srtgroep_key
   AND ins_ID.ins_discipline_key = ins_SG.ins_discipline_key;

/* 17-01-96 */
CREATE_VIEW(ins_v_srtinst_discipline,0) AS
    SELECT INS_SI.ins_srtinst_keys,
           INS_SG.ins_srtgroep_key, INS_SG.ins_srtgroep_omschrijving,
           INS_SG.ins_srtgroep_upper, INS_D.ins_discipline_key,
           INS_D.ins_discipline_omschrijving
    FROM ins_v_srtinst INS_SI, ins_v_aanwezigsrtdeel INS_SD,
         ins_v_aanwezigsrtgroep INS_SG, ins_v_aanwezigdiscipline INS_D
    WHERE INS_SI.ins_srtdeel_key = INS_SD.ins_srtdeel_key
      AND INS_SD.ins_srtgroep_key = INS_SG.ins_srtgroep_key
      AND INS_SG.ins_discipline_key = INS_D.ins_discipline_key;

// INS_V_ALG_ONROERENDGOED: overzicht van de onroerendgoed hierarchie voor
// 'INS' en 'INV'. INS_V_MODULE heeft de waardes 'INS', 'INV' en 'ALL'
// 'ALL' is voor de onroerendgoed-zaken die in beide modules gebruikt kunnen
// worden.
CREATE_VIEW(ins_v_alg_onroerendgoed, 0)
                          (ins_v_module,
                           alg_onrgoed_keys,
                           alg_onrgoed_type,
                           alg_locatie_key,
                           alg_geb_ter_key,
                           alg_geb_ter_omschrijving,
                           alg_geb_ter_upper,
                           alg_verdieping_key,
                           alg_ruimte_key,
                           alg_ruimte_nr,
                           alg_ruimte_upper_nr)
AS
SELECT 'ALL',
       alg_gebouw_key,
       'G',
       alg_locatie_key,
       alg_gebouw_key,
       alg_gebouw_omschrijving,
       alg_gebouw_upper,
       TO_NUMBER(NULL),
       TO_NUMBER(NULL),
       NULL,
       NULL
FROM alg_v_aanweziggebouw
UNION
SELECT 'ALL',
       ALG_R.alg_ruimte_key,
       'R',
       ALG_G.alg_locatie_key,
       ALG_G.alg_gebouw_key,
       ALG_G.alg_gebouw_omschrijving,
       ALG_G.alg_gebouw_upper,
       ALG_V.alg_verdieping_key,
       ALG_R.alg_ruimte_key,
       ALG_R.alg_ruimte_nr,
       ALG_R.alg_ruimte_upper_nr
FROM alg_v_aanwezigruimte ALG_R, alg_verdieping ALG_V,
     alg_gebouw ALG_G
WHERE ALG_G.alg_gebouw_key = ALG_V.alg_gebouw_key
  AND ALG_V.alg_verdieping_key = ALG_R.alg_verdieping_key
UNION
SELECT 'INS',
       alg_terreinsector_key,
       'T',
       alg_locatie_key,
       alg_terreinsector_key,
       alg_terreinsector_omschrijving,
       alg_terreinsector_upper,
       TO_NUMBER(NULL),
       TO_NUMBER(NULL),
       NULL,
       NULL
FROM alg_v_aanwezigterreinsector;


CREATE_VIEW(ins_v_ins_import_deel,0)
AS
SELECT INS_D.ins_deel_key,
       INS_D.ins_deel_omschrijving,
       INS_D.ins_deel_upper,
       INS_D.ins_deel_aantal,
       INS_D.ins_alg_ruimte_key,
       INS_SD.ins_srtdeel_key,
       INS_SD.ins_srtdeel_omschrijving,
       INS_SD.ins_srtdeel_upper
FROM ins_v_aanwezigdeel INS_D, ins_srtdeel INS_SD
WHERE INS_D.ins_srtdeel_key = INS_SD.ins_srtdeel_key
UNION
SELECT TO_NUMBER(NULL),
       INS_SD.ins_srtdeel_omschrijving,
       INS_SD.ins_srtdeel_upper,
       0,
       -1,
       INS_SD.ins_srtdeel_key,
       INS_SD.ins_srtdeel_omschrijving,
       INS_SD.ins_srtdeel_upper
FROM ins_v_aanwezigsrtdeel INS_SD
WHERE INS_SD.ins_srtdeel_upper NOT IN (SELECT INS_D.ins_deel_upper
                                       FROM ins_v_aanwezigdeel INS_D
                                       WHERE INS_D.ins_srtdeel_key = INS_SD.ins_srtdeel_key);


/* Views voor INS_KENMERK-zaken */
DEFINIEER_VIEW_AANWEZIG(ins_srtkenmerk, ins_srtkenmerk_verwijder,
    ins_v_aanwezigsrtkenmerk,0);

DEFINIEER_VIEW_AANWEZIG(ins_kenmerk, ins_kenmerk_verwijder,
    ins_v_aanwezigkenmerk,0);

CREATE_VIEW(ins_v_srtdeel_kenmerk, 0)
         (ins_kenmerk_key,
          ins_srtkenmerk_key,
          ins_srtinstallatie_key,
          ins_kenmerk_niveau,
          ins_kenmerk_verplicht,
          ins_kenmerk_toonbaar,
          ins_kenmerk_meetwaarde,
          ins_kenmerk_uniek,
          ins_kenmerk_locatiekolom,
          ins_kenmerk_volgnummer,
          ins_srtkenmerk_omschrijving,
          ins_srtkenmerk_dimensie,
          ins_srtkenmerk_kenmerktype,
          ins_srtkenmerk_lengte,
          ins_srtkenmerk_dec,
          ins_srtkenmerk_nmin,
          ins_srtkenmerk_nmax,
          fac_kenmerkdomein_key,
          ins_srtdeel_key,
          ins_srtdeel_omschrijving,
          ins_srtdeel_upper,
          ins_srtgroep_key,
          ins_srtgroep_omschrijving,
          ins_srtgroep_upper,
          ins_discipline_key,
          ins_discipline_omschrijving) AS
  SELECT INS_K.ins_kenmerk_key,
         INS_K.ins_srtkenmerk_key,
         INS_K.ins_srtinstallatie_key,
         INS_K.ins_kenmerk_niveau,
         INS_K.ins_kenmerk_verplicht,
         INS_K.ins_kenmerk_toonbaar,
         INS_K.ins_kenmerk_meetwaarde,
         INS_K.ins_kenmerk_uniek,
         INS_K.ins_kenmerk_locatiekolom,
         INS_K.ins_kenmerk_volgnummer,
         INS_SK.ins_srtkenmerk_omschrijving,
         INS_SK.ins_srtkenmerk_dimensie,
         INS_SK.ins_srtkenmerk_kenmerktype,
         INS_SK.ins_srtkenmerk_lengte,
         INS_SK.ins_srtkenmerk_dec,
         INS_SK.ins_srtkenmerk_nmin,
         INS_SK.ins_srtkenmerk_nmax,
         INS_SK.fac_kenmerkdomein_key,
         INS_SD.ins_srtdeel_key,
         INS_SD.ins_srtdeel_omschrijving,
         INS_SD.ins_srtdeel_upper,
         INS_SG.ins_srtgroep_key,
         INS_SG.ins_srtgroep_omschrijving,
         INS_SG.ins_srtgroep_upper,
         INS_D.ins_discipline_key,
         INS_D.ins_discipline_omschrijving
  FROM ins_v_aanwezigkenmerk INS_K, ins_v_aanwezigsrtkenmerk INS_SK,
       ins_v_aanwezigsrtdeel INS_SD, ins_srtgroep INS_SG,
       ins_discipline INS_D
  WHERE INS_K.ins_srtkenmerk_key = INS_SK.ins_srtkenmerk_key
    AND INS_K.ins_kenmerk_niveau = 'S'
    AND INS_SD.ins_srtdeel_key = INS_K.ins_srtinstallatie_key
    AND INS_SD.ins_srtgroep_key = INS_SG.ins_srtgroep_key
    AND INS_SG.ins_discipline_key = INS_D.ins_discipline_key
  UNION
  SELECT INS_K.ins_kenmerk_key,
         INS_K.ins_srtkenmerk_key,
         INS_K.ins_srtinstallatie_key,
         INS_K.ins_kenmerk_niveau,
         INS_K.ins_kenmerk_verplicht,
         INS_K.ins_kenmerk_toonbaar,
         INS_K.ins_kenmerk_meetwaarde,
         INS_K.ins_kenmerk_uniek,
         INS_K.ins_kenmerk_locatiekolom,
         INS_K.ins_kenmerk_volgnummer,
         INS_SK.ins_srtkenmerk_omschrijving,
         INS_SK.ins_srtkenmerk_dimensie,
         INS_SK.ins_srtkenmerk_kenmerktype,
         INS_SK.ins_srtkenmerk_lengte,
         INS_SK.ins_srtkenmerk_dec,
         INS_SK.ins_srtkenmerk_nmin,
         INS_SK.ins_srtkenmerk_nmax,
         INS_SK.fac_kenmerkdomein_key,
         INS_SD.ins_srtdeel_key,
         INS_SD.ins_srtdeel_omschrijving,
         INS_SD.ins_srtdeel_upper,
         INS_SG.ins_srtgroep_key,
         INS_SG.ins_srtgroep_omschrijving,
         INS_SG.ins_srtgroep_upper,
         INS_D.ins_discipline_key,
         INS_D.ins_discipline_omschrijving
  FROM ins_v_aanwezigkenmerk INS_K, ins_v_aanwezigsrtkenmerk INS_SK,
       ins_v_aanwezigsrtdeel INS_SD, ins_v_aanwezigsrtgroep INS_SG,
       ins_discipline INS_D
  WHERE INS_K.ins_srtkenmerk_key = INS_SK.ins_srtkenmerk_key
    AND INS_K.ins_kenmerk_niveau = 'G'
    AND INS_SD.ins_srtgroep_key = INS_SG.ins_srtgroep_key
    AND INS_SG.ins_srtgroep_key = INS_K.ins_srtinstallatie_key
    AND INS_SG.ins_discipline_key = INS_D.ins_discipline_key
  UNION
  SELECT INS_K.ins_kenmerk_key,
         INS_K.ins_srtkenmerk_key,
         INS_K.ins_srtinstallatie_key,
         INS_K.ins_kenmerk_niveau,
         INS_K.ins_kenmerk_verplicht,
         INS_K.ins_kenmerk_toonbaar,
         INS_K.ins_kenmerk_meetwaarde,
         INS_K.ins_kenmerk_uniek,
         INS_K.ins_kenmerk_locatiekolom,
         INS_K.ins_kenmerk_volgnummer,
         INS_SK.ins_srtkenmerk_omschrijving,
         INS_SK.ins_srtkenmerk_dimensie,
         INS_SK.ins_srtkenmerk_kenmerktype,
         INS_SK.ins_srtkenmerk_lengte,
         INS_SK.ins_srtkenmerk_dec,
         INS_SK.ins_srtkenmerk_nmin,
         INS_SK.ins_srtkenmerk_nmax,
         INS_SK.fac_kenmerkdomein_key,
         INS_SD.ins_srtdeel_key,
         INS_SD.ins_srtdeel_omschrijving,
         INS_SD.ins_srtdeel_upper,
         INS_SG.ins_srtgroep_key,
         INS_SG.ins_srtgroep_omschrijving,
         INS_SG.ins_srtgroep_upper,
         INS_D.ins_discipline_key,
         INS_D.ins_discipline_omschrijving
  FROM ins_v_aanwezigkenmerk INS_K, ins_v_aanwezigsrtkenmerk INS_SK,
       ins_v_aanwezigsrtdeel INS_SD, ins_v_aanwezigsrtgroep INS_SG,
       ins_v_aanwezigdiscipline INS_D
  WHERE INS_K.ins_srtkenmerk_key = INS_SK.ins_srtkenmerk_key
    AND INS_K.ins_kenmerk_niveau = 'D'
    AND INS_SD.ins_srtgroep_key = INS_SG.ins_srtgroep_key
    AND INS_SG.ins_discipline_key = INS_D.ins_discipline_key
    AND (INS_D.ins_discipline_key = INS_K.ins_srtinstallatie_key
     OR  INS_K.ins_srtinstallatie_key IS NULL);


DEFINIEER_VIEW_AANWEZIG(ins_kenmerkdeel, ins_kenmerkdeel_verwijder,
ins_v_aanwezigkenmerkdeel, 0);

CREATE_VIEW(ins_v_srtdeel_kenmerkdeel, 0)
         (INS_KENMERK_KEY, INS_DEEL_KEY, INS_KENMERKDEEL_WAARDE) AS
   SELECT idsk.ins_kenmerk_key,
          idsk.ins_deel_key,
          ins_kd.ins_kenmerkdeel_waarde
     FROM ins_kenmerk k1,
          ins_v_aanwezigkenmerkdeel ins_kd,
          (SELECT ins_deel_key, ins_kenmerk_key
             FROM ins_deel ins_d, ins_v_srtdeel_kenmerk_keys ins_sdk
            WHERE ins_d.ins_srtdeel_key = ins_sdk.ins_srtdeel_key) idsk
    WHERE     idsk.ins_deel_key = ins_kd.ins_deel_key(+)
          AND idsk.ins_kenmerk_key = ins_kd.ins_kenmerk_key(+)
          AND k1.ins_kenmerk_key = idsk.ins_kenmerk_key
          AND k1.ins_kenmerk_bewerkniveau = 'D'
   UNION ALL
   SELECT kmd.ins_kenmerk_key,
          kd.ins_deel_key,
          kmd.ins_kenmerkdeel_waarde
     FROM ins_kenmerk k2,
          ins_kenmerkdeel kmd,
          ins_deel kd
    WHERE k2.ins_srtinstallatie_key =
          (SELECT CASE
                     WHEN k2.ins_kenmerk_niveau = 'S' THEN kd.ins_srtdeel_key
                     WHEN k2.ins_kenmerk_niveau = 'G' THEN (SELECT sd.ins_srtgroep_key FROM ins_srtdeel sd WHERE sd.ins_srtdeel_key = kd.ins_srtdeel_key)
                     WHEN k2.ins_kenmerk_niveau = 'D' THEN kd.ins_discipline_key
                     ELSE 0
                  END
             FROM DUAL)
      AND kd.ins_srtdeel_key = kmd.ins_deel_key
      AND k2.ins_kenmerk_key = kmd.ins_kenmerk_key
      AND k2.ins_kenmerk_bewerkniveau = 'S';

CREATE_VIEW(ins_v_srtdeel_kenmerk_keys,0)
AS
   SELECT ins_k.ins_kenmerk_key, ins_k.ins_srtinstallatie_key ins_srtdeel_key
     FROM ins_v_aanwezigkenmerk ins_k
    WHERE ins_k.ins_kenmerk_niveau = 'S'
   UNION ALL
   SELECT ins_k.ins_kenmerk_key, ins_sd.ins_srtdeel_key
     FROM ins_v_aanwezigkenmerk ins_k, ins_v_aanwezigsrtdeel ins_sd
    WHERE ins_k.ins_kenmerk_niveau = 'G'
      AND ins_sd.ins_srtgroep_key = ins_k.ins_srtinstallatie_key
   UNION ALL
   SELECT ins_k.ins_kenmerk_key, ins_sd.ins_srtdeel_key
     FROM ins_v_aanwezigkenmerk ins_k,
          ins_v_aanwezigsrtdeel ins_sd,
          ins_v_aanwezigsrtgroep ins_sg
    WHERE ins_k.ins_kenmerk_niveau = 'D'
      AND ins_sd.ins_srtgroep_key = ins_sg.ins_srtgroep_key
      AND ins_sg.ins_discipline_key = ins_k.ins_srtinstallatie_key;

CREATE_VIEW(ins_v_deelkoppeling_gegevens,0)
(
    ins_deelkoppeling_key,
    ins_deelkoppeling_van_key,
    ins_deelkoppeling_naar_key,
    ins_deel_van_omschrijving,
    ins_srtdeel_van_key,
    ins_alg_ruimte_van_key,
    ins_alg_ruimte_van_type,
    ins_deel_van_upper,
    ins_deel_naar_omschrijving,
    ins_srtdeel_naar_key,
    ins_alg_ruimte_naar_key,
    ins_alg_ruimte_naar_type,
    ins_deel_naar_upper
)
AS
    SELECT INS_DK.ins_deelkoppeling_key,
           INS_DK.ins_deelkoppeling_van_key,
           INS_DK.ins_deelkoppeling_naar_key,
           INS_DE1.ins_deel_omschrijving,
           INS_DE1.ins_srtdeel_key,
           INS_DE1.ins_alg_ruimte_key,
           INS_DE1.ins_alg_ruimte_type,
           INS_DE1.ins_deel_upper,
           INS_DE2.ins_deel_omschrijving,
           INS_DE2.ins_srtdeel_key,
           INS_DE2.ins_alg_ruimte_key,
           INS_DE2.ins_alg_ruimte_type,
           INS_DE2.ins_deel_upper
    FROM ins_deel INS_DE1, ins_deel INS_DE2, ins_deelkoppeling INS_DK
    WHERE INS_DK.ins_deelkoppeling_van_key = INS_DE1.ins_deel_key AND
          INS_DK.ins_deelkoppeling_naar_key = INS_DE2.ins_deel_key AND
          INS_DE1.ins_deel_parent_key IS NULL AND
          INS_DE2.ins_deel_parent_key IS NULL;

CREATE_VIEW(ins_v_deel_onderdeel,0)
(
  ins_deel_key, ins_deel_omschrijving,
  ins_onderdeel_key, ins_onderdeel_omschrijving,
  ins_alg_ruimte_key, ins_alg_ruimte_type,
  ins_srtdeel_key)
AS
 SELECT D.ins_deel_key, D.ins_deel_omschrijving,
        O.ins_deel_key, O.ins_deel_omschrijving,
        O.ins_alg_ruimte_key, O.ins_alg_ruimte_type,
        O.ins_srtdeel_key
   FROM ins_v_aanwezigdeel D, ins_v_aanwezigonderdeel O
   WHERE D.ins_deel_key = O.ins_deel_parent_key
UNION
 SELECT D.ins_deel_key, D.ins_deel_omschrijving,
        D.ins_deel_key, NULL,
        D.ins_alg_ruimte_key, D.ins_alg_ruimte_type,
        D.ins_srtdeel_key
   FROM ins_v_aanwezigdeel D;

DEFINIEER_VIEW_AANWEZIG(ins_compositie, ins_compositie_verwijder,
   ins_v_aanwezigcompositie,0);

CREATE_VIEW(ins_v_deel_plaatsaanduiding_r,0)
   (      alg_plaatsaanduiding
   ,      prs_werkplek_key
   ,      ins_deel_key
   ,      ins_deel_omschrijving
   ,      ins_deel_verwijder
   ,      alg_verdieping_key)
AS SELECT ALG_L.alg_locatie_code ||'-'
       || ALG_G.alg_gebouw_code                ||'-'
       || ALG_V.alg_verdieping_volgnr ||'-'
       || ALG_R.alg_ruimte_nr
   ,      to_number(NULL)
   ,      INS_D.ins_deel_key
   ,      INS_D.ins_deel_omschrijving
   ,      INS_D.ins_deel_verwijder
   ,      ALG_V.alg_verdieping_key
   FROM   ins_deel       INS_D
   ,      alg_ruimte     ALG_R
   ,      alg_verdieping ALG_V
   ,      alg_gebouw     ALG_G
   ,      alg_locatie    ALG_L
   WHERE  INS_D.ins_alg_ruimte_key       = ALG_R.alg_ruimte_key
   AND    INS_D.ins_alg_ruimte_type      = 'R'
   AND    ALG_R.alg_verdieping_key       = ALG_V.alg_verdieping_key
   AND    ALG_V.alg_gebouw_key           = ALG_G.alg_gebouw_key
   AND    ALG_G.alg_locatie_key          = ALG_L.alg_locatie_key
   ;

CREATE_VIEW(ins_v_deel_plaatsaanduiding_w,0)
   (      alg_plaatsaanduiding
   ,      prs_werkplek_key
   ,      ins_deel_key
   ,      ins_deel_omschrijving
   ,      ins_deel_verwijder
   ,      alg_verdieping_key)
AS SELECT ALG_L.alg_locatie_code ||'-'
       || ALG_G.alg_gebouw_code                ||'-'
       || ALG_V.alg_verdieping_code 	       ||'-'
       || ALG_R.alg_ruimte_nr                  ||'/'
       || to_char(PRS_W.prs_werkplek_volgnr),
          PRS_W.prs_werkplek_key
   ,      INS_D.ins_deel_key
   ,      INS_D.ins_deel_omschrijving
   ,      INS_D.ins_deel_verwijder
   ,      ALG_V.alg_verdieping_key
   FROM   ins_deel       INS_D
   ,      prs_werkplek   PRS_W
   ,      alg_ruimte     ALG_R
   ,      alg_verdieping ALG_V
   ,      alg_gebouw     ALG_G
   ,      alg_locatie    ALG_L
   WHERE  INS_D.ins_alg_ruimte_key       = PRS_W.prs_werkplek_key
   AND    INS_D.ins_alg_ruimte_type      = 'W'
   AND    PRS_W.prs_alg_ruimte_key       = ALG_R.alg_ruimte_key
   AND    ALG_R.alg_verdieping_key       = ALG_V.alg_verdieping_key
   AND    ALG_V.alg_gebouw_key           = ALG_G.alg_gebouw_key
   AND    ALG_G.alg_locatie_key          = ALG_L.alg_locatie_key
   ;

CREATE_VIEW(ins_v_deel_plaatsaanduiding,0)
AS SELECT *
   FROM   ins_v_deel_plaatsaanduiding_r
 UNION
   SELECT *
   FROM   ins_v_deel_plaatsaanduiding_w;

CREATE_VIEW (ins_v_ins_deel_verdieping,0)
   (      ins_deel_key
   ,      alg_verdieping_key)
AS SELECT INS_D.ins_deel_key,
          ALG_R.alg_verdieping_key
   FROM   ins_deel        INS_D,
          alg_ruimte      ALG_R
   WHERE  INS_D.ins_alg_ruimte_key  = ALG_R.alg_ruimte_key
   AND    ins_alg_ruimte_type = 'R'
   AND    ins_deel_verwijder IS NULL
  UNION
   SELECT INS_D.ins_deel_key,
          ALG_R.alg_verdieping_key
   FROM   ins_deel        INS_D,
          prs_werkplek    PRS_W,
          alg_ruimte      ALG_R
   WHERE  INS_D.ins_alg_ruimte_key  = PRS_W.prs_werkplek_key
   AND    PRS_W.prs_alg_ruimte_key  = ALG_R.alg_ruimte_key
   AND    ins_alg_ruimte_type = 'W'
   AND    ins_deel_verwijder IS NULL;

/* Formatted on 17-7-2012 12:16:55 (QP5 v5.115.810.9015) */
CREATE_VIEW (ins_v_rap_sle_toegang, 0)
   (fclt_3d_locatie_key,
    fclt_f_bezitter,
    fclt_f_sleutelset_code,
    fclt_f_sleutelset_oms,
    sleutel,
    fclt_x_locatie,
    fclt_f_plaats)
AS
   SELECT   l.alg_locatie_key,
            pf.prs_perslid_naam_full,
            s.ins_srtdeel_code sset_code,
            s.ins_srtdeel_omschrijving sset_oms,
            sle.ins_deel_omschrijving sleutel,
            l.alg_locatie_code,   -- Locatie ruimte-cilinder (deur of bureau)!
            DECODE (
               cil.ins_alg_ruimte_key_org,
               NULL,                                 -- Als op (stam)bureau,..
               NULL,                                 -- ..dan nergens toegang!
                  l.alg_locatie_code
               || '-'
               || aog.alg_gebouw_code
               || '-'
               || aog.alg_verdieping_code
               || '-'
               || aog.alg_ruimte_nr
            )
               plaats
     FROM   ins_srtdeel_srtdeel iss,
            ins_srtdeel c,
            ins_v_aanwezigdeel cil,
            alg_v_allonrgoed_gegevens aog,
            alg_locatie l,
            ins_srtdeel s,
            ins_v_aanwezigdeel sle,
            prs_v_perslid_fullnames_all pf
    WHERE       iss.ins_module = 'SLE'
            AND iss.ins_srtdeel_key_1 = c.ins_srtdeel_key
            AND c.ins_srtdeel_key = cil.ins_srtdeel_key
            AND cil.ins_alg_ruimte_type = 'R'      -- Ingenomen of uitgegeven!
            AND cil.ins_alg_ruimte_key = aog.alg_onroerendgoed_keys
            --AND aog.alg_type = 'R' -- Altijd waar
            AND aog.alg_locatie_key = l.alg_locatie_key
            AND iss.ins_srtdeel_key_2 = s.ins_srtdeel_key
            AND s.ins_srtdeel_key = sle.ins_srtdeel_key
            AND sle.ins_alg_ruimte_type = 'P'
            AND sle.ins_alg_ruimte_key = pf.prs_perslid_key
   UNION ALL          -- Uitgegeven sleutels voor uitgegeven terrein-cilinders
   SELECT   l.alg_locatie_key,
            pf.prs_perslid_naam_full,
            s.ins_srtdeel_code sset_code,
            s.ins_srtdeel_omschrijving sset_oms,
            sle.ins_deel_omschrijving sleutel,
            l.alg_locatie_code,   -- Locatie ruimte-cilinder (deur of bureau)!
            l.alg_locatie_code || '-' || t.alg_terreinsector_code plaats
     FROM   ins_srtdeel_srtdeel iss,
            ins_srtdeel c,
            ins_v_aanwezigdeel cil,
            alg_terreinsector t,
            alg_locatie l,
            ins_srtdeel s,
            ins_v_aanwezigdeel sle,
            prs_v_perslid_fullnames_all pf
    WHERE       iss.ins_module = 'SLE'
            AND iss.ins_srtdeel_key_1 = c.ins_srtdeel_key
            AND c.ins_srtdeel_key = cil.ins_srtdeel_key
            AND cil.ins_alg_ruimte_type = 'T'
            AND cil.ins_alg_ruimte_key = t.alg_terreinsector_key
            AND t.alg_locatie_key = l.alg_locatie_key
            AND iss.ins_srtdeel_key_2 = s.ins_srtdeel_key
            AND s.ins_srtdeel_key = sle.ins_srtdeel_key
            AND sle.ins_alg_ruimte_type = 'P'
            AND sle.ins_alg_ruimte_key = pf.prs_perslid_key;


CREATE_VIEW (ins_v_qvw_algemeen, 0)
AS
SELECT d.ins_deel_key,
       d.ins_deel_omschrijving,
       sd.ins_srtdeel_code,
       sd.ins_srtdeel_omschrijving,
       sg.ins_srtgroep_omschrijving,
       dis.ins_discipline_omschrijving,
       r.alg_ruimte_nr,
       v.alg_verdieping_code,
       v.alg_verdieping_volgnr,
       g.alg_gebouw_naam,
       l.alg_locatie_code,
       l.alg_locatie_omschrijving,
       kd.ins_kenmerkdeel_aanmaak datum,
       TRUNC (kd.ins_kenmerkdeel_aanmaak) tijd,
       sk.ins_srtkenmerk_omschrijving ins_srtkenmerk_omschrijving,
       kd.ins_kenmerkdeel_verwijder,
       sk.ins_srtkenmerk_kenmerktype,
       kd.ins_kenmerk_key,
       fac.safe_to_number (kd.ins_kenmerkdeel_waarde) ins_kenmerkdeel_waarde,
       sk.ins_srtkenmerk_key,
       sk.ins_srtkenmerk_dimensie,
       kd.ins_kenmerkdeel_key
  FROM ins_kenmerkdeel kd,
       ins_kenmerk k,
       ins_srtkenmerk sk,
       ins_deel d,
       ins_srtdeel sd,
       ins_srtgroep sg,
       ins_tab_discipline dis,
       alg_ruimte r,
       alg_verdieping v,
       alg_gebouw g,
       alg_locatie l
 WHERE     kd.ins_deel_key = d.ins_deel_key
       AND d.ins_srtdeel_key = sd.ins_srtdeel_key
       AND sd.ins_srtgroep_key = sg.ins_srtgroep_key
       AND sg.ins_discipline_key = dis.ins_discipline_key
       AND d.ins_alg_ruimte_key = r.alg_ruimte_key
       AND d.ins_alg_ruimte_type = 'R'
       AND r.alg_verdieping_key = v.alg_verdieping_key
       AND v.alg_gebouw_key = g.alg_gebouw_key
       AND g.alg_locatie_key = l.alg_locatie_key
       AND kd.ins_kenmerkdeel_verwijder IS NOT NULL
       AND sk.ins_srtkenmerk_key = k.ins_srtkenmerk_key
       AND kd.ins_kenmerk_key = k.ins_kenmerk_key
       AND k.ins_kenmerk_meetwaarde = 1;

CREATE_VIEW (ins_v_qvw_inspectie, 0)
AS
SELECT id.ins_deel_key,
       id.ins_deel_omschrijving,
       sd.ins_srtdeel_code,
       sd.ins_srtdeel_omschrijving,
       sg.ins_srtgroep_omschrijving,
       dis.ins_discipline_omschrijving,
       r.alg_ruimte_nr,
       v.alg_verdieping_volgnr,
       v.alg_verdieping_code,
       g.alg_gebouw_naam,
       l.alg_locatie_code,
       l.alg_locatie_omschrijving,
       idsc.ins_deelsrtcontrole_datum datum,
       TRUNC (idsc.ins_deelsrtcontrole_datum) tijd,
       idsc.ins_srtcontrole_key,
       ins_srtcontrole_omschrijving,
       idsc.ins_deelsrtcontrole_key,
       ins_srtcontrole_periode,
       idsc.ins_deelsrtcontrole_opmerking,
       cm.ins_controlemode_oms
  FROM ins_deel id,
       ins_deelsrtcontrole idsc,
       ins_srtcontrole isc,
       ins_controlemode cm,
       ins_srtdeel sd,
       ins_srtgroep sg,
       ins_tab_discipline dis,
       alg_ruimte r,
       alg_verdieping v,
       alg_gebouw g,
       alg_locatie l
 WHERE     idsc.ins_srtcontrole_key = isc.ins_srtcontrole_key
       AND idsc.ins_controlemode_key = cm.ins_controlemode_key
       AND idsc.ins_deel_key = id.ins_deel_key
       AND id.ins_srtdeel_key = sd.ins_srtdeel_key
       AND sd.ins_srtgroep_key = sg.ins_srtgroep_key
       AND sg.ins_discipline_key = dis.ins_discipline_key
       AND id.ins_alg_ruimte_key = r.alg_ruimte_key
       AND id.ins_alg_ruimte_type = 'R'
       AND r.alg_verdieping_key = v.alg_verdieping_key
       AND v.alg_gebouw_key = g.alg_gebouw_key
       AND g.alg_locatie_key = l.alg_locatie_key;

-- Merk op dat je nagenoeg altijd ins_v_defined_inspect_xcp wilt gebruiken
CREATE_VIEW(ins_v_defined_inspect, 0)
(
   ins_deel_key,
   ins_deel_aanmaak,
   ins_deel_aantal,
   ins_srtdeel_eenheid,
   ins_alg_locatie_key,
   ins_discipline_key,
   ins_srtgroep_key,
   ins_srtdeel_key,
   ins_srtcontrole_key,
   ins_srtcontrole_omschrijving,
   ins_srtcontrole_mode,
   ins_srtcontrole_eenheid,
   ins_srtcontrole_periode,
   ins_srtcontrole_bits,
   ins_srtcontrole_kosten,
   ins_srtcontrole_kosten2,
   ins_srtcontrole_kosten3,
   ins_srtcontrole_uren,
   ins_srtcontrole_materiaal,
   ins_srtcontrole_percentage,
   ins_srtcontrole_eind,
   ins_srtcontrole_groep,
   ins_srtcontrole_opmerking,
   ins_srtcontrole_info,
   ins_srtcontrole_level,
   ins_srtcontrole_afbouwtijd,
   ins_srtcontrole_options,
   prs_kostenplaats_key,
   fin_btwtabelwaarde_key,
   ctr_discipline_key,
   ctr_controle_type,
   ctr_ismjob,
   mld_stdmelding_key
)
AS
   SELECT id.ins_deel_key,
          id.ins_deel_aanmaak,
          id.ins_deel_aantal,
          s.ins_srtdeel_eenheid,
          id.ins_alg_locatie_key,
          id.ins_discipline_key,
          s.ins_srtgroep_key,
          id.ins_srtdeel_key,
          isc.ins_srtcontrole_key,
          isc.ins_srtcontrole_omschrijving,
          isc.ins_srtcontrole_mode,
          isc.ins_srtcontrole_eenheid,
          isc.ins_srtcontrole_periode,
          isc.ins_srtcontrole_bits,
          isc.ins_srtcontrole_kosten,
          isc.ins_srtcontrole_kosten2,
          isc.ins_srtcontrole_kosten3,
          isc.ins_srtcontrole_uren,
          isc.ins_srtcontrole_materiaal,
          isc.ins_srtcontrole_percentage,
          isc.ins_srtcontrole_eind,
          isc.ins_srtcontrole_groep,
          isc.ins_srtcontrole_opmerking,
          isc.ins_srtcontrole_info,
          isc.ins_srtcontrole_level,
          isc.ins_srtcontrole_afbouwtijd,
          isc.ins_srtcontrole_options,
          isc.prs_kostenplaats_key,
          isc.fin_btwtabelwaarde_key,
          isc.ctr_discipline_key,
          cdp.ctr_disc_params_controle_type,
          cdp.ctr_disc_params_ismjob,
          COALESCE(isc.mld_stdmelding_key, cdp.mld_stdmelding_key)
     FROM ins_deel id,
          ins_srtdeel s,
          ins_srtcontrole isc,
          ctr_disc_params cdp
    WHERE s.ins_srtdeel_key = id.ins_srtdeel_key
      AND (isc.ins_srtcontrole_niveau = 'S'
       AND isc.ins_srtinstallatie_key = id.ins_srtdeel_key
        OR isc.ins_srtcontrole_niveau = 'G'
       AND isc.ins_srtinstallatie_key = s.ins_srtgroep_key
        OR isc.ins_srtcontrole_niveau = 'D'
       AND isc.ins_srtinstallatie_key = id.ins_discipline_key)
      AND isc.ctr_discipline_key = cdp.ctr_ins_discipline_key;

CREATE_VIEW(ins_v_defined_inspect_xcp, 0)
(
   ins_deel_key,
   ins_deel_aanmaak,
   ins_deel_aantal,
   ins_srtdeel_eenheid,
   ins_alg_locatie_key,
   ins_discipline_key,
   ins_srtgroep_key,
   ins_srtdeel_key,
   ins_srtcontrole_key,
   ins_srtcontrole_omschrijving,
   ins_srtcontrole_mode,
   ins_srtcontrole_eenheid,
   ins_srtcontrole_periode,
   ins_srtcontrole_bits,
   ins_srtcontrole_kosten,
   ins_srtcontrole_kosten2,
   ins_srtcontrole_kosten3,
   ins_srtcontrole_uren,
   ins_srtcontrole_materiaal,
   ins_srtcontrole_percentage,
   ins_srtcontrole_eind,
   ins_srtcontrole_groep,
   ins_srtcontrole_opmerking,
   ins_srtcontrole_info,
   ins_srtcontrole_level,
   ins_srtcontrole_afbouwtijd,
   ins_srtcontrole_options,
   prs_kostenplaats_key,
   fin_btwtabelwaarde_key,
   ins_srtcontroledl_xcp_key,
   ins_srtcontroledl_xcp_eenheid,
   ins_srtcontroledl_xcp_periode,
   ins_srtcontroledl_xcp_bits,
   ins_srtcontroledl_xcp_kosten,
   ins_srtcontroledl_xcp_kosten2,
   ins_srtcontroledl_xcp_kosten3,
   ins_srtcontroledl_xcp_uren,
   ins_srtcontroledl_xcp_materia,
   ins_srtcontroledl_xcp_perc,
   ins_srtcontroledl_xcp_startdat,
   ins_srtcontroledl_xcp_prio,
   ins_srtcontroledl_xcp_eind,
   ins_srtcontroledl_xcp_groep,
   ins_srtcontroledl_xcp_opmerk,
   ins_srtcontroledl_xcp_aantal,
   ins_srtcontroledl_xcp_aanteh,
   ins_scenario_key,
   ctr_discipline_key,
   ctr_controle_type,
   ctr_ismjob,
   mld_stdmelding_key
)
AS
    -- Alle scenario controles. Die hebben geen outer-join nodig omdat de exceptions compleet zijn
    SELECT di.ins_deel_key,
           di.ins_deel_aanmaak,
           COALESCE (ins_srtcontroledl_xcp_aantal, di.ins_deel_aantal),
           COALESCE (ins_srtcontroledl_xcp_aanteh, di.ins_srtdeel_eenheid),
           di.ins_alg_locatie_key,
           di.ins_discipline_key,
           di.ins_srtgroep_key,
           di.ins_srtdeel_key,
           di.ins_srtcontrole_key,
           di.ins_srtcontrole_omschrijving,
           di.ins_srtcontrole_mode,
           COALESCE (ins_srtcontroledl_xcp_eenheid, di.ins_srtcontrole_eenheid),
           COALESCE (ins_srtcontroledl_xcp_periode, di.ins_srtcontrole_periode),
           COALESCE (ins_srtcontroledl_xcp_bits, di.ins_srtcontrole_bits),
           COALESCE (ins_srtcontroledl_xcp_kosten, di.ins_srtcontrole_kosten),
           COALESCE (ins_srtcontroledl_xcp_kosten2, di.ins_srtcontrole_kosten2),
           COALESCE (ins_srtcontroledl_xcp_kosten3, di.ins_srtcontrole_kosten3),
           COALESCE (ins_srtcontroledl_xcp_uren, di.ins_srtcontrole_uren),
           COALESCE (ins_srtcontroledl_xcp_materia, di.ins_srtcontrole_materiaal),
           COALESCE (ins_srtcontroledl_xcp_perc, di.ins_srtcontrole_percentage),
           COALESCE (ins_srtcontroledl_xcp_eind, di.ins_srtcontrole_eind),
           COALESCE (ins_srtcontroledl_xcp_groep, di.ins_srtcontrole_groep),
           COALESCE (ins_srtcontroledl_xcp_opmerk, di.ins_srtcontrole_opmerking),
           di.ins_srtcontrole_info,
           ins_srtcontrole_level,
           ins_srtcontrole_afbouwtijd,
           ins_srtcontrole_options,
           prs_kostenplaats_key,
           fin_btwtabelwaarde_key,
           ins_srtcontroledl_xcp_key,
           ins_srtcontroledl_xcp_eenheid,
           ins_srtcontroledl_xcp_periode,
           ins_srtcontroledl_xcp_bits,
           ins_srtcontroledl_xcp_kosten,
           ins_srtcontroledl_xcp_kosten2,
           ins_srtcontroledl_xcp_kosten3,
           ins_srtcontroledl_xcp_uren,
           ins_srtcontroledl_xcp_materia,
           ins_srtcontroledl_xcp_perc,
           ins_srtcontroledl_xcp_startdat,
           ins_srtcontroledl_xcp_prio,
           ins_srtcontroledl_xcp_eind,
           ins_srtcontroledl_xcp_groep,
           ins_srtcontroledl_xcp_opmerk,
           ins_srtcontroledl_xcp_aantal,
           ins_srtcontroledl_xcp_aanteh,
           ins_scenario_key,
           di.ctr_discipline_key,
           di.ctr_controle_type,
           di.ctr_ismjob,
           di.mld_stdmelding_key
      FROM ins_v_defined_inspect di, ins_srtcontroledl_xcp xcp
     WHERE     di.ins_srtcontrole_key = xcp.ins_srtcontrole_key
           AND di.ins_deel_key = xcp.ins_deel_key
           AND ins_scenario_key <> 1
    UNION ALL -- Alle actuele controles
    SELECT di.ins_deel_key,
           di.ins_deel_aanmaak,
           COALESCE (ins_srtcontroledl_xcp_aantal, di.ins_deel_aantal),
           COALESCE (ins_srtcontroledl_xcp_aanteh, di.ins_srtdeel_eenheid),
           di.ins_alg_locatie_key,
           di.ins_discipline_key,
           di.ins_srtgroep_key,
           di.ins_srtdeel_key,
           di.ins_srtcontrole_key,
           di.ins_srtcontrole_omschrijving,
           di.ins_srtcontrole_mode,
           COALESCE (ins_srtcontroledl_xcp_eenheid, di.ins_srtcontrole_eenheid),
           COALESCE (ins_srtcontroledl_xcp_periode, di.ins_srtcontrole_periode),
           COALESCE (ins_srtcontroledl_xcp_bits, di.ins_srtcontrole_bits),
           COALESCE (ins_srtcontroledl_xcp_kosten, di.ins_srtcontrole_kosten),
           COALESCE (ins_srtcontroledl_xcp_kosten2, di.ins_srtcontrole_kosten2),
           COALESCE (ins_srtcontroledl_xcp_kosten3, di.ins_srtcontrole_kosten3),
           COALESCE (ins_srtcontroledl_xcp_uren, di.ins_srtcontrole_uren),
           COALESCE (ins_srtcontroledl_xcp_materia, di.ins_srtcontrole_materiaal),
           COALESCE (ins_srtcontroledl_xcp_perc, di.ins_srtcontrole_percentage),
           COALESCE (ins_srtcontroledl_xcp_eind, di.ins_srtcontrole_eind),
           COALESCE (ins_srtcontroledl_xcp_groep, di.ins_srtcontrole_groep),
           COALESCE (ins_srtcontroledl_xcp_opmerk, di.ins_srtcontrole_opmerking),
           di.ins_srtcontrole_info,
           ins_srtcontrole_level,
           ins_srtcontrole_afbouwtijd,
           ins_srtcontrole_options,
           prs_kostenplaats_key,
           fin_btwtabelwaarde_key,
           ins_srtcontroledl_xcp_key,
           ins_srtcontroledl_xcp_eenheid,
           ins_srtcontroledl_xcp_periode,
           ins_srtcontroledl_xcp_bits,
           ins_srtcontroledl_xcp_kosten,
           ins_srtcontroledl_xcp_kosten2,
           ins_srtcontroledl_xcp_kosten3,
           ins_srtcontroledl_xcp_uren,
           ins_srtcontroledl_xcp_materia,
           ins_srtcontroledl_xcp_perc,
           ins_srtcontroledl_xcp_startdat,
           ins_srtcontroledl_xcp_prio,
           ins_srtcontroledl_xcp_eind,
           ins_srtcontroledl_xcp_groep,
           ins_srtcontroledl_xcp_opmerk,
           ins_srtcontroledl_xcp_aantal,
           ins_srtcontroledl_xcp_aanteh,
           1 ins_scenario_key,
           di.ctr_discipline_key,
           di.ctr_controle_type,
           di.ctr_ismjob,
           di.mld_stdmelding_key
      FROM ins_v_defined_inspect  di,
           (SELECT * -- de actuele exceptions
              FROM ins_srtcontroledl_xcp
             WHERE ins_scenario_key = 1) xcp
     WHERE     di.ins_srtcontrole_key = xcp.ins_srtcontrole_key(+)
           AND di.ins_deel_key = xcp.ins_deel_key(+);

CREATE_VIEW(ins_v_api_delen, 1)
AS
    SELECT d.ins_deel_key key,
           d.ins_deel_omschrijving deel,
           ig.ins_srtdeel_omschrijving soortdeel,
           ig.ins_srtgroep_omschrijving soortgroep,
           ig.ins_discipline_omschrijving discipline,
           ig.alg_plaatsaanduiding plaats,
           d.ins_alg_ruimte_type plaatstype,
           d.ins_alg_ruimte_key plaats_key,
           d.ins_deel_parent_key parentdeel_key,
           d.ins_deel_opmerking opmerking,
           d.ins_deel_x x,
           d.ins_deel_y y,
           DECODE (d.ins_alg_ruimte_key_org, NULL, NULL, 1) uitgeleend,
           d.ins_deel_state state,
           d.ins_deel_statedate statedate
      FROM ins_deel d, ins_v_deel_gegevens ig
     WHERE     ig.ins_deel_key = d.ins_deel_key
           AND COALESCE (d.ins_deel_vervaldatum, SYSDATE + 99) > SYSDATE
           AND d.ins_deel_verwijder IS NULL;

/* ROOT VIEWS for User defined Reports (UDR) */
/* Let op: kolomwijzigingen ook in de vervolgview(s) verwerken */
CREATE_VIEW(ins_v_udr_deel, 1)
(
   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
)
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
     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,
                  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,
                  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,
                  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,
                  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;

CREATE_VIEW(ins_v_udr_deelmelding, 1)
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,
   m.melding_key,
   m.meldingnummer,
   m.melding_district,
   m.melding_locatiecode,
   m.melding_locatie,
   m.melding_locatieplaats,
   --m.fclt_3d_locatie_key,
   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.fclt_3d_afdeling_key,
   m.bedrijf_key,
   m.invoerder,
   m.meldbron,
   m.soortmelding,
   --m.fclt_3d_discipline_key,
   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 ins_v_udr_deel 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;

CREATE_VIEW(ins_v_udr_deelkenmerk_cnd, 1)
AS
   SELECT m.*,
       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 ins_v_udr_deel 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(+);

-- Alle gedane en lopende inspecties van alle objecten.
CREATE OR REPLACE FORCE VIEW ins_v_udr_deelinspect
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,
       idsc.ins_deelsrtcontrole_key,
       idsc.ins_srtcontrole_key,
       (SELECT isc.ins_srtcontrole_omschrijving
          FROM ins_srtcontrole isc
         WHERE isc.ins_srtcontrole_key = idsc.ins_srtcontrole_key) srtcontrole_omschrijving,
       idsc.ins_deelsrtcontrole_datum,
       (SELECT icm.ins_controlemode_oms
          FROM ins_controlemode icm
         WHERE icm.ins_controlemode_key = idsc.ins_controlemode_key) controlemode_omschrijving,
       idsc.ins_deelsrtcontrole_opmerking,
       (SELECT prs_perslid_naam_full
          FROM prs_v_perslid_fullnames_all pf
         WHERE pf.prs_perslid_key = idsc.prs_perslid_key) perslid,
       idsc.ins_deelsrtcontrole_datum_org,
       idsc.ins_deelsrtcontrole_plandatum,
       (SELECT lcl.x ('fc2l.fac_code2label_label', fc2l.fac_code2label_key, fc2l.fac_code2label_label)
          FROM fac_code2label fc2l
         WHERE fc2l.fac_code2label_domein = 'controle'
           AND fc2l.fac_code2label_code = idsc.ins_deelsrtcontrole_status) deelsrtcontrole_status
  FROM ins_v_udr_deel d,
       ins_deelsrtcontrole idsc
 WHERE d.deel_key = idsc.ins_deel_key;

-- Alle soort controles die op de objecten zitten.
CREATE OR REPLACE FORCE VIEW ins_v_udr_deelsrtcontrole
AS
SELECT di.deel_key,
       di.discipline,
       di.soort,
       di.groep,
       di.soortcode,
       di.omschrijving,
       di.plaatseigenaar,
       di.plaatseigenaartype,
       di.plaatsaanduiding,
       di.eigenaar,
       di.opmerking,
       di.regio,
       di.district,
       di.locatie_code,
       di.locatie_omschrijving,
       di.locatie_plaats,
       di.gebouwcode,
       di.gebouw,
       di.terreinsectorcode,
       di.terreinsector,
       di.verdiepingcode,
       di.ruimtenr,
       di.werkplekvolgnr,
       di.werkplek,
       di.uitleenbaar,
       di.uitgeleend,
       di.res_opmerking,
       di.beheerder,
       di.vervaldatum,
       di.actief,
       di.aantal,
       di.state,
       di.statedate,
       di.fclt_3d_discipline_key,
       di.fclt_3d_afdeling_key,
       di.fclt_3d_locatie_key,
       iscx.ins_deel_aanmaak,
       iscx.ins_deel_aantal,
       (SELECT isc.ins_srtcontrole_omschrijving
          FROM ins_srtcontrole isc
         WHERE isc.ins_srtcontrole_key = iscx.ins_srtcontrole_key) ins_srtcontrole_omschrijving,
       CASE
       WHEN iscx.ins_srtcontrole_mode = 0
       THEN lcl.l('lcl_ins_srtcontrole_moment')
       ELSE lcl.l('lcl_ins_srtcontrole_interval')
       END ins_srtcontrole_mode,
       CASE
       WHEN iscx.ins_srtcontrole_eenheid = 0
       THEN lcl.l('lcl_ins_controle_uurlijks')
       WHEN iscx.ins_srtcontrole_eenheid = 1
       THEN lcl.l('lcl_ins_controle_dagelijks')
       WHEN iscx.ins_srtcontrole_eenheid = 2
       THEN lcl.l('lcl_ins_controle_wekelijks')
       WHEN iscx.ins_srtcontrole_eenheid = 3
       THEN lcl.l('lcl_ins_controle_maandelijks')
       WHEN iscx.ins_srtcontrole_eenheid = 4
       THEN lcl.l('lcl_ins_controle_jaarlijks')
       END ins_srtcontrole_eenheid,
       iscx.ins_srtcontrole_periode,
       --iscx.ins_srtcontrole_bits,
       CASE
       WHEN iscx.ins_srtcontrole_mode = 0 AND (iscx.ins_srtcontrole_eenheid = 0 OR iscx.ins_srtcontrole_eenheid = 1)
       THEN
            CASE
            WHEN BITAND(iscx.ins_srtcontrole_bits, 128) = 128
            THEN lcl.l('lcl_ins_controle_notholiday') || '.'
            ELSE ''
            END
       WHEN iscx.ins_srtcontrole_bits < 256 AND iscx.ins_srtcontrole_mode = 0 AND iscx.ins_srtcontrole_eenheid = 2
       THEN
            TRIM(CASE WHEN BITAND(iscx.ins_srtcontrole_bits,  1) =  1 THEN INITCAP(lcl.l('lcl_dag_1')) || ' ' END ||
                 CASE WHEN BITAND(iscx.ins_srtcontrole_bits,  2) =  2 THEN INITCAP(lcl.l('lcl_dag_2')) || ' ' END ||
                 CASE WHEN BITAND(iscx.ins_srtcontrole_bits,  4) =  4 THEN INITCAP(lcl.l('lcl_dag_3')) || ' ' END ||
                 CASE WHEN BITAND(iscx.ins_srtcontrole_bits,  8) =  8 THEN INITCAP(lcl.l('lcl_dag_4')) || ' ' END ||
                 CASE WHEN BITAND(iscx.ins_srtcontrole_bits, 16) = 16 THEN INITCAP(lcl.l('lcl_dag_5')) || ' ' END ||
                 CASE WHEN BITAND(iscx.ins_srtcontrole_bits, 32) = 32 THEN INITCAP(lcl.l('lcl_dag_6')) || ' ' END ||
                 CASE WHEN BITAND(iscx.ins_srtcontrole_bits, 64) = 64 THEN INITCAP(lcl.l('lcl_dag_7')) || ' ' END
                ) || '.'
            ||
            CASE
            WHEN BITAND(iscx.ins_srtcontrole_bits, 128) = 128
            THEN ' ' || lcl.l('lcl_ins_controle_notholiday') || '.'
            ELSE ''
            END
       WHEN iscx.ins_srtcontrole_bits >= 256 AND iscx.ins_srtcontrole_mode = 0 AND iscx.ins_srtcontrole_eenheid = 3
       THEN
            CASE
            WHEN BITAND(iscx.ins_srtcontrole_bits, 1792) = 1792 THEN lcl.l('lcl_ins_controle_laatste') || ' '
            WHEN BITAND(iscx.ins_srtcontrole_bits, 1536) = 1536 THEN lcl.l('lcl_ins_controle_eennalaatste') || ' '
            WHEN BITAND(iscx.ins_srtcontrole_bits, 1280) = 1280 THEN lcl.l('lcl_ins_controle_vijfde') || ' '
            WHEN BITAND(iscx.ins_srtcontrole_bits,  768) =  768 THEN lcl.l('lcl_ins_controle_derde') || ' '
            WHEN BITAND(iscx.ins_srtcontrole_bits, 1024) = 1024 THEN lcl.l('lcl_ins_controle_vierde') || ' '
            WHEN BITAND(iscx.ins_srtcontrole_bits,  512) =  512 THEN lcl.l('lcl_ins_controle_tweede') || ' '
            WHEN BITAND(iscx.ins_srtcontrole_bits,  256) =  256 THEN lcl.l('lcl_ins_controle_eerste') || ' '
            END
            ||
            CASE
            WHEN BITAND(iscx.ins_srtcontrole_bits,  1) =  1 THEN LOWER(lcl.l('lcl_dag_1'))
            WHEN BITAND(iscx.ins_srtcontrole_bits,  2) =  2 THEN LOWER(lcl.l('lcl_dag_2'))
            WHEN BITAND(iscx.ins_srtcontrole_bits,  4) =  4 THEN LOWER(lcl.l('lcl_dag_3'))
            WHEN BITAND(iscx.ins_srtcontrole_bits,  8) =  8 THEN LOWER(lcl.l('lcl_dag_4'))
            WHEN BITAND(iscx.ins_srtcontrole_bits, 16) = 16 THEN LOWER(lcl.l('lcl_dag_5'))
            WHEN BITAND(iscx.ins_srtcontrole_bits, 32) = 32 THEN LOWER(lcl.l('lcl_dag_6'))
            WHEN BITAND(iscx.ins_srtcontrole_bits, 64) = 64 THEN LOWER(lcl.l('lcl_dag_7'))
            END
            ||
            lcl.l('lcl_ins_controle_period_ofthemonth') || '.'
            ||
            CASE
            WHEN BITAND(iscx.ins_srtcontrole_bits, 128) = 128
            THEN ' ' || lcl.l('lcl_ins_controle_notholiday') || '.'
            ELSE ''
            END
       WHEN iscx.ins_srtcontrole_mode = 0 AND iscx.ins_srtcontrole_eenheid = 4
       THEN
            CASE
            WHEN BITAND(iscx.ins_srtcontrole_bits, 12) = 12 THEN INITCAP(lcl.l('lcl_maand_12'))
            WHEN BITAND(iscx.ins_srtcontrole_bits, 11) = 11 THEN INITCAP(lcl.l('lcl_maand_11'))
            WHEN BITAND(iscx.ins_srtcontrole_bits, 10) = 10 THEN INITCAP(lcl.l('lcl_maand_10'))
            WHEN BITAND(iscx.ins_srtcontrole_bits,  9) =  9 THEN INITCAP(lcl.l('lcl_maand_9'))
            WHEN BITAND(iscx.ins_srtcontrole_bits,  8) =  8 THEN INITCAP(lcl.l('lcl_maand_8'))
            WHEN BITAND(iscx.ins_srtcontrole_bits,  7) =  7 THEN INITCAP(lcl.l('lcl_maand_7'))
            WHEN BITAND(iscx.ins_srtcontrole_bits,  6) =  6 THEN INITCAP(lcl.l('lcl_maand_6'))
            WHEN BITAND(iscx.ins_srtcontrole_bits,  5) =  5 THEN INITCAP(lcl.l('lcl_maand_5'))
            WHEN BITAND(iscx.ins_srtcontrole_bits,  4) =  4 THEN INITCAP(lcl.l('lcl_maand_4'))
            WHEN BITAND(iscx.ins_srtcontrole_bits,  3) =  3 THEN INITCAP(lcl.l('lcl_maand_3'))
            WHEN BITAND(iscx.ins_srtcontrole_bits,  2) =  2 THEN INITCAP(lcl.l('lcl_maand_2'))
            WHEN BITAND(iscx.ins_srtcontrole_bits,  1) =  1 THEN INITCAP(lcl.l('lcl_maand_1'))
            END
       END ins_srtcontrole_bits,
       iscx.ins_srtcontrole_kosten,
       iscx.ins_srtcontrole_kosten2,
       iscx.ins_srtcontrole_kosten3,
       iscx.ins_srtcontrole_uren,
       iscx.ins_srtcontrole_materiaal,
       iscx.ins_srtcontrole_percentage,
       iscx.ins_srtcontrole_eind,
       iscx.ins_srtcontrole_groep,
       iscx.ins_srtcontrole_opmerking,
       iscx.ins_srtcontrole_info,
       iscx.ins_srtcontrole_level,
       iscx.ins_srtcontrole_afbouwtijd,
       iscx.ins_srtcontrole_options,
       (SELECT NVL2(k.prs_kostenplaats_nr, prs_kostenplaats_nr || ' '|| lcl.x('prs_kostenplaats_omschrijving', k.prs_kostenplaats_key, k.prs_kostenplaats_omschrijving), '')
          FROM prs_kostenplaats k
         WHERE k.prs_kostenplaats_key = iscx.prs_kostenplaats_key) prs_kostenplaats_omschr,
       (SELECT fbtw.fin_btwtabelwaarde_oms
          FROM fin_btwtabelwaarde fbtw
         WHERE fbtw.fin_btwtabelwaarde_key = iscx.fin_btwtabelwaarde_key) fin_btwtabelwaarde_oms,
       iscx.ins_srtcontroledl_xcp_key,
       iscx.ins_srtcontroledl_xcp_kosten,
       iscx.ins_srtcontroledl_xcp_kosten2,
       iscx.ins_srtcontroledl_xcp_kosten3,
       iscx.ins_srtcontroledl_xcp_uren,
       iscx.ins_srtcontroledl_xcp_materia,
       iscx.ins_srtcontroledl_xcp_perc,
       iscx.ins_srtcontroledl_xcp_startdat,
       iscx.ins_srtcontroledl_xcp_eind,
       (SELECT iscen.ins_scenario_omschrijving
          FROM ins_scenario iscen
         WHERE iscen.ins_scenario_key = iscx.ins_scenario_key) ins_scenario_omschrijving,
       --iscx.ctr_discipline_key,
       (SELECT ctrd.ins_discipline_omschrijving
          FROM ctr_discipline ctrd
         WHERE ctrd.ins_discipline_key = iscx.ctr_discipline_key) ctr_discipline,
       CASE
       WHEN iscx.ctr_controle_type = 1
       THEN lcl.l('lcl_ins_srtcontrole_insp')
       WHEN iscx.ctr_controle_type = 2
       THEN lcl.l('lcl_ins_srtcontrole_repl')
       WHEN iscx.ctr_controle_type = 3
       THEN lcl.l('lcl_ins_srtcontrole_cert')
       END ctr_controle_type,
       CASE
       WHEN iscx.ctr_ismjob = 0
       THEN lcl.l('lcl_no')
       ELSE lcl.l('lcl_yes')
       END ctr_ismjob
  FROM ins_v_udr_deel di,
       ins_v_defined_inspect_xcp iscx
 WHERE di.deel_key = iscx.ins_deel_key;

REGISTERRUN('$Id$')
#endif  // INS
