#ifdef  PRS // 01-12-98 PF
/*
 * $Revision$
 * $Id$
 */

DEFINIEER_VIEW_AANWEZIG(prs_afdeling,
                        prs_afdeling_verwijder,
                        prs_v_aanwezigafdeling,
                        0);

DEFINIEER_VIEW_AANWEZIG(prs_srtperslid,
                        prs_srtperslid_verwijder,
                        prs_v_aanwezigsrtperslid,
                        0);

DEFINIEER_VIEW_AANWEZIG(prs_perslid,
                        prs_perslid_verwijder,
                        prs_v_aanwezigperslid,
                        0);
DEFINIEER_VIEW_AANWEZIG(prs_perslid,
                        prs_perslid_verwijder,
                        all_v_aanwezigperslid,
                        0);

DEFINIEER_VIEW_AANWEZIG(prs_ruimteafdeling,
                        prs_ruimteafdeling_verwijder,
                        prs_v_aanwezigruimteafdeling,
                        0);

DEFINIEER_VIEW_AANWEZIG(prs_kostenplaats,
                        prs_kostenplaats_verwijder,
                        prs_v_aanwezigkostenplaats,
                        0);

DEFINIEER_VIEW_AANWEZIG(prs_bedrijf,
                        prs_bedrijf_verwijder,
                        prs_v_aanwezigbedrijf,
                        0);

/* 24-07-96/KTH Alle bedrijven die UITVOERENDE zijn */
DEFINIEER_VIEW_AANWEZIG(prs_bedrijf,
                        prs_bedrijf_verwijder,
                        prs_v_uitvoerendebedrijf,
                        0) AND prs_bedrijf_uitvoerende = 1;

/* 24-07-96/KTH Alle bedrijven die LEVERANCIER zijn */
DEFINIEER_VIEW_AANWEZIG(prs_bedrijf,
                        prs_bedrijf_verwijder,
                        prs_v_leverancierbedrijf,
                        0) AND prs_bedrijf_leverancier = 1;

/* 24-07-96/KTH Alle bedrijven waamee een CONTRACT kan worden afgesloten */
DEFINIEER_VIEW_AANWEZIG(prs_bedrijf,
                        prs_bedrijf_verwijder,
                        prs_v_contractbedrijf,
                        0) AND prs_bedrijf_contract = 1;

DEFINIEER_VIEW_AANWEZIG(prs_kenmerk, prs_kenmerk_verwijder,
    prs_v_aanwezigkenmerk,0);

DEFINIEER_VIEW_AANWEZIG(prs_kenmerkLink, prs_kenmerkLink_verwijder,
    prs_v_aanwezigkenmerkLink,0);


CREATE_VIEW(prs_v_perslid_gegevens,0) AS
    SELECT PRS_P.prs_perslid_key,
           PRS_P.prs_perslid_naam,
           PRS_P.prs_perslid_upper,
           PRS_P.prs_perslid_voorletters,
           PRS_P.prs_perslid_tussenvoegsel,
           PRS_P.prs_perslid_voornaam,
           PRS_P.prs_perslid_initialen,
           PRS_P.prs_perslid_init_upper,
           PRS_P.prs_perslid_nr,
           PRS_P.prs_perslid_telefoonnr,
           PRS_P.prs_perslid_email,
           PRS_P.prs_perslid_mobiel,
           PRS_P.prs_perslid_oslogin,
           PRS_P.prs_afdeling_key,
           PRS_A.prs_afdeling_naam,
           PRS_A.prs_afdeling_upper,
           PRS_A.prs_afdeling_omschrijving,
           PRS_S.prs_srtperslid_omschrijving
    FROM   prs_v_aanwezigperslid PRS_P, prs_afdeling PRS_A,
           prs_srtperslid PRS_S
    WHERE PRS_P.prs_afdeling_key = PRS_A.prs_afdeling_key
    AND   PRS_P.prs_srtperslid_key = PRS_S.prs_srtperslid_key;

CREATE_VIEW (prs_v_perslid_print,0) AS
     SELECT PRS_P.prs_perslid_key
           ,PRS_P.prs_perslid_naam
           ,PRS_P.prs_perslid_voorletters
           ,PRS_P.prs_perslid_tussenvoegsel
           ,PRS_P.prs_perslid_voornaam
           ,PRS_P.prs_perslid_initialen
           ,PRS_P.prs_perslid_nr
           ,PRS_A.prs_afdeling_naam
           ,PRS_P.prs_perslid_telefoonnr
           ,PRS_SP.prs_srtperslid_omschrijving
           ,k.prs_kostenplaats_nr AS prs_afdeling_kostenplaats
           ,k.prs_kostenplaats_nr
       FROM prs_v_aanwezigperslid    PRS_P
           ,prs_afdeling   PRS_A
           ,prs_srtperslid PRS_SP
           ,prs_kostenplaats k
    WHERE   PRS_P.prs_afdeling_key    = PRS_A.prs_afdeling_key
      AND   PRS_SP.prs_srtperslid_key(+) = PRS_P.prs_srtperslid_key
      AND   PRS_A.prs_kostenplaats_key=k.prs_kostenplaats_key;

CREATE_VIEW(prs_v_perslid_fullnames, 0) AS
SELECT prs_perslid_key,
       prs_perslid_naam||DECODE(p.prs_perslid_voorletters,null,'',', '||p.prs_perslid_voorletters)
       ||DECODE(p.prs_perslid_tussenvoegsel,null,'',' '||p.prs_perslid_tussenvoegsel)
       ||DECODE(p.prs_perslid_voornaam,null,'',' ('||p.prs_perslid_voornaam||')') prs_perslid_naam_full,
          DECODE (p.prs_perslid_voornaam, NULL, '', p.prs_perslid_voornaam || ' ')
       || DECODE (p.prs_perslid_tussenvoegsel, NULL, '', p.prs_perslid_tussenvoegsel || ' ')
       || prs_perslid_naam prs_perslid_naam_friendly
FROM prs_v_aanwezigperslid p;

CREATE_VIEW(prs_v_perslid_fullnames_all, 0) AS
SELECT prs_perslid_key,
       prs_perslid_naam||DECODE(p.prs_perslid_voorletters,null,'',', '||p.prs_perslid_voorletters)
       ||DECODE(p.prs_perslid_tussenvoegsel,null,'',' '||p.prs_perslid_tussenvoegsel)
       ||DECODE(p.prs_perslid_voornaam,null,'',' ('||p.prs_perslid_voornaam||')') prs_perslid_naam_full,
          DECODE (p.prs_perslid_voornaam, NULL, '', p.prs_perslid_voornaam || ' ')
       || DECODE (p.prs_perslid_tussenvoegsel, NULL, '', p.prs_perslid_tussenvoegsel || ' ')
       || prs_perslid_naam prs_perslid_naam_friendly,
       prs_perslid_verwijder
FROM prs_perslid p;

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 prs_a.prs_afdeling_key,
       'A',
       prs_a.prs_afdeling_key,
       prs_a.prs_afdeling_omschrijving,
       prs_a.prs_afdeling_upper,
       TO_NUMBER (NULL),
       NULL,
       NULL
  FROM prs_afdeling prs_a
UNION
SELECT prs_p.prs_perslid_key,
       'P',
       prs_a.prs_afdeling_key,
       prs_a.prs_afdeling_omschrijving,
       prs_a.prs_afdeling_upper,
       prs_p.prs_perslid_key,
       pf.prs_perslid_naam_full,
       prs_p.prs_perslid_upper
  FROM prs_perslid prs_p, prs_afdeling prs_a, prs_v_perslid_fullnames_all pf
 WHERE prs_p.prs_afdeling_key = prs_a.prs_afdeling_key
       AND prs_p.prs_perslid_key = pf.prs_perslid_key;

CREATE_VIEW (prs_v_afdeling_boom, 0)
      ( niveau,
    prs_bedrijf_key,
    prs_afdeling_key,
    prs_afdeling_key1,
    prs_afdeling_key2,
    prs_afdeling_key3,
    prs_afdeling_key4,
    prs_afdeling_key5) AS
SELECT '1' Niveau,
    a1.prs_bedrijf_key,
    a1.prs_afdeling_key,
    a1.prs_afdeling_key,
    TO_NUMBER(NULL),
    TO_NUMBER(NULL),
    TO_NUMBER(NULL),
    TO_NUMBER(NULL)
   FROM prs_afdeling a1
  WHERE a1.prs_afdeling_parentkey IS NULL
UNION
SELECT '2' Niveau,
    a1.prs_bedrijf_key,
    a2.prs_afdeling_key,
    a1.prs_afdeling_key,
    a2.prs_afdeling_key,
    TO_NUMBER(NULL),
    TO_NUMBER(NULL),
    TO_NUMBER(NULL)
   FROM prs_afdeling a1, prs_afdeling a2
  WHERE a2.prs_afdeling_parentkey=a1.prs_afdeling_key
    AND a1.prs_afdeling_parentkey IS NULL
UNION
SELECT '3' Niveau,
    a1.prs_bedrijf_key,
    a3.prs_afdeling_key,
    a1.prs_afdeling_key,
    a2.prs_afdeling_key,
    a3.prs_afdeling_key,
    TO_NUMBER(NULL),
    TO_NUMBER(NULL)
   FROM prs_afdeling a1, prs_afdeling a2, prs_afdeling a3
  WHERE a2.prs_afdeling_parentkey=a1.prs_afdeling_key
    AND a3.prs_afdeling_parentkey=a2.prs_afdeling_key
    AND a1.prs_afdeling_parentkey IS NULL
UNION
SELECT '4' Niveau,
        a1.prs_bedrijf_key,
        a4.prs_afdeling_key,
    a1.prs_afdeling_key,
    a2.prs_afdeling_key,
    a3.prs_afdeling_key,
    a4.prs_afdeling_key,
    TO_NUMBER(NULL)
   FROM prs_afdeling a1, prs_afdeling a2, prs_afdeling a3, prs_afdeling a4
  WHERE a2.prs_afdeling_parentkey=a1.prs_afdeling_key
    AND a3.prs_afdeling_parentkey=a2.prs_afdeling_key
    AND a4.prs_afdeling_parentkey=a3.prs_afdeling_key
    AND a1.prs_afdeling_parentkey IS NULL
UNION
SELECT '5' Niveau,
    a1.prs_bedrijf_key,
    a5.prs_afdeling_key,
    a1.prs_afdeling_key,
    a2.prs_afdeling_key,
    a3.prs_afdeling_key,
    a4.prs_afdeling_key,
    a5.prs_afdeling_key
   FROM prs_afdeling a1, prs_afdeling a2, prs_afdeling a3, prs_afdeling a4, prs_afdeling a5
  WHERE a2.prs_afdeling_parentkey=a1.prs_afdeling_key
    AND a3.prs_afdeling_parentkey=a2.prs_afdeling_key
    AND a4.prs_afdeling_parentkey=a3.prs_afdeling_key
    AND a5.prs_afdeling_parentkey=a4.prs_afdeling_key
    AND a1.prs_afdeling_parentkey IS NULL;

-- De 'aanwezig'-variant van bovenstaande boom, en dat is handiger dan je denkt
-- Een aanwezige afdeling met ergens daarboven een parent die niet aanwezig is,
-- is effectief namelijk eigenlijk niet aanwezig.
-- Kan dus ook gebruikt worden om te checken of een afdeling echt nog aanwezig is
CREATE_VIEW (prs_v_aanwezigafdeling_boom, 0)
(
   niveau,
   prs_bedrijf_key,
   prs_afdeling_key,
   prs_afdeling_key1,
   prs_afdeling_key2,
   prs_afdeling_key3,
   prs_afdeling_key4,
   prs_afdeling_key5
)
AS
   SELECT '1' niveau,
          a1.prs_bedrijf_key,
          a1.prs_afdeling_key,
          a1.prs_afdeling_key,
          TO_NUMBER (NULL),
          TO_NUMBER (NULL),
          TO_NUMBER (NULL),
          TO_NUMBER (NULL)
     FROM prs_afdeling a1
    WHERE a1.prs_afdeling_parentkey IS NULL AND a1.prs_afdeling_verwijder IS NULL
   UNION
   SELECT '2' niveau,
          a1.prs_bedrijf_key,
          a2.prs_afdeling_key,
          a1.prs_afdeling_key,
          a2.prs_afdeling_key,
          TO_NUMBER (NULL),
          TO_NUMBER (NULL),
          TO_NUMBER (NULL)
     FROM prs_afdeling a1, prs_afdeling a2
    WHERE     a2.prs_afdeling_parentkey = a1.prs_afdeling_key
          AND a1.prs_afdeling_parentkey IS NULL
          AND a1.prs_afdeling_verwijder IS NULL
          AND a2.prs_afdeling_verwijder IS NULL
   UNION
   SELECT '3' niveau,
          a1.prs_bedrijf_key,
          a3.prs_afdeling_key,
          a1.prs_afdeling_key,
          a2.prs_afdeling_key,
          a3.prs_afdeling_key,
          TO_NUMBER (NULL),
          TO_NUMBER (NULL)
     FROM prs_afdeling a1, prs_afdeling a2, prs_afdeling a3
    WHERE     a2.prs_afdeling_parentkey = a1.prs_afdeling_key
          AND a3.prs_afdeling_parentkey = a2.prs_afdeling_key
          AND a1.prs_afdeling_parentkey IS NULL
          AND a1.prs_afdeling_verwijder IS NULL
          AND a2.prs_afdeling_verwijder IS NULL
          AND a3.prs_afdeling_verwijder IS NULL
   UNION
   SELECT '4' niveau,
          a1.prs_bedrijf_key,
          a4.prs_afdeling_key,
          a1.prs_afdeling_key,
          a2.prs_afdeling_key,
          a3.prs_afdeling_key,
          a4.prs_afdeling_key,
          TO_NUMBER (NULL)
     FROM prs_afdeling a1,
          prs_afdeling a2,
          prs_afdeling a3,
          prs_afdeling a4
    WHERE     a2.prs_afdeling_parentkey = a1.prs_afdeling_key
          AND a3.prs_afdeling_parentkey = a2.prs_afdeling_key
          AND a4.prs_afdeling_parentkey = a3.prs_afdeling_key
          AND a1.prs_afdeling_parentkey IS NULL
          AND a1.prs_afdeling_verwijder IS NULL
          AND a2.prs_afdeling_verwijder IS NULL
          AND a3.prs_afdeling_verwijder IS NULL
          AND a4.prs_afdeling_verwijder IS NULL
   UNION
   SELECT '5' niveau,
          a1.prs_bedrijf_key,
          a5.prs_afdeling_key,
          a1.prs_afdeling_key,
          a2.prs_afdeling_key,
          a3.prs_afdeling_key,
          a4.prs_afdeling_key,
          a5.prs_afdeling_key
     FROM prs_afdeling a1,
          prs_afdeling a2,
          prs_afdeling a3,
          prs_afdeling a4,
          prs_afdeling a5
    WHERE     a2.prs_afdeling_parentkey = a1.prs_afdeling_key
          AND a3.prs_afdeling_parentkey = a2.prs_afdeling_key
          AND a4.prs_afdeling_parentkey = a3.prs_afdeling_key
          AND a5.prs_afdeling_parentkey = a4.prs_afdeling_key
          AND a1.prs_afdeling_parentkey IS NULL
          AND a1.prs_afdeling_verwijder IS NULL
          AND a2.prs_afdeling_verwijder IS NULL
          AND a3.prs_afdeling_verwijder IS NULL
          AND a4.prs_afdeling_verwijder IS NULL
          AND a5.prs_afdeling_verwijder IS NULL;

CREATE_VIEW(prs_v_afdeling_fullnames, 0)
( NIVEAU,
  PRS_AFDELING_KEY,
  PRS_AFDELING_NAAM,
  PRS_AFDELING_NAAM1,
  PRS_AFDELING_NAAM2,
  PRS_AFDELING_NAAM3,
  PRS_AFDELING_NAAM4,
  PRS_AFDELING_NAAM5,
  PRS_AFDELING_NAAM6,
  PRS_BEDRIJF_KEY ) AS
SELECT 1,
        a1.prs_afdeling_key,
        a1.prs_afdeling_naam,
        a1.prs_afdeling_naam   ||   ' ['   ||   a1.prs_afdeling_omschrijving  ||  ']',
        a1.prs_afdeling_naam,
        a1.prs_afdeling_omschrijving,
        a1.prs_afdeling_omschrijving,
        a1.prs_afdeling_omschrijving,
        a1.prs_afdeling_naam  || '-' || a1.prs_afdeling_omschrijving,
        a1.prs_bedrijf_key
   FROM PRS_AFDELING a1
  WHERE a1.prs_afdeling_parentkey IS NULL
UNION ALL
 SELECT 2,
        a2.prs_afdeling_key,
        a2.prs_afdeling_omschrijving,
        a1.prs_afdeling_naam   ||   '-'   ||   a2.prs_afdeling_omschrijving,
        a1.prs_afdeling_naam   ||   '-'   ||   a2.prs_afdeling_naam,
        a2.prs_afdeling_naam,
        a2.prs_afdeling_omschrijving   ||   ' ['   ||   a1.prs_afdeling_omschrijving   ||   ']',
        a2.prs_afdeling_omschrijving   ||   ' ['   ||   a1.prs_afdeling_omschrijving   ||   ']',
        a2.prs_afdeling_naam  || '-' || a2.prs_afdeling_omschrijving,
        a1.prs_bedrijf_key
   FROM PRS_AFDELING a1, PRS_AFDELING a2
  WHERE a2.prs_afdeling_parentkey = a1.prs_afdeling_key
    AND a1.prs_afdeling_parentkey is NULL
UNION ALL
 SELECT 3,
        a3.prs_afdeling_key,
        a3.prs_afdeling_omschrijving,
        a1.prs_afdeling_naam   ||   '-'   ||   a2.prs_afdeling_naam   ||   '-'   ||   a3.prs_afdeling_omschrijving,
        a1.prs_afdeling_naam   ||   '-'   ||   a2.prs_afdeling_naam   ||   '-'   ||   a3.prs_afdeling_naam,
        a3.prs_afdeling_naam,
        a3.prs_afdeling_omschrijving   ||   ' ['   ||   a1.prs_afdeling_omschrijving   ||   ']',
        a3.prs_afdeling_omschrijving   ||   ' ['   ||   a1.prs_afdeling_naam   ||   '-'   ||   a2.prs_afdeling_naam   ||   ']',
        a3.prs_afdeling_naam  || '-' || a3.prs_afdeling_omschrijving,
        a1.prs_bedrijf_key
   FROM PRS_AFDELING a1, PRS_AFDELING a2, PRS_AFDELING a3
  WHERE a3.prs_afdeling_parentkey = a2.prs_afdeling_key
    AND a2.prs_afdeling_parentkey = a1.prs_afdeling_key
    AND a1.prs_afdeling_parentkey is NULL
UNION ALL
 SELECT 4,
        a4.prs_afdeling_key,
        a4.prs_afdeling_omschrijving,
        a1.prs_afdeling_naam   ||   '-'   ||   a2.prs_afdeling_naam   ||   '-'   ||   a3.prs_afdeling_naam   ||   '-'   ||   a4.prs_afdeling_omschrijving,
        a1.prs_afdeling_naam   ||   '-'   ||   a2.prs_afdeling_naam   ||   '-'   ||   a3.prs_afdeling_naam   ||   '-'   ||   a4.prs_afdeling_naam,
        a4.prs_afdeling_naam,
        a4.prs_afdeling_omschrijving   ||   ' ['   ||   a1.prs_afdeling_omschrijving   ||   ']',
        a4.prs_afdeling_omschrijving   ||   ' ['   ||   a1.prs_afdeling_naam   ||   '-'   ||   a2.prs_afdeling_naam   ||   '-'   ||   a3.prs_afdeling_naam   ||   ']',
        a4.prs_afdeling_naam  || '-' || a4.prs_afdeling_omschrijving,
        a1.prs_bedrijf_key
   FROM PRS_AFDELING a1, PRS_AFDELING a2, PRS_AFDELING a3, PRS_AFDELING a4
  WHERE a4.prs_afdeling_parentkey = a3.prs_afdeling_key
    AND a3.prs_afdeling_parentkey = a2.prs_afdeling_key
    AND a2.prs_afdeling_parentkey = a1.prs_afdeling_key
    AND a1.prs_afdeling_parentkey is NULL
UNION ALL
 SELECT 5,
        a5.prs_afdeling_key,
        a5.prs_afdeling_omschrijving,
        a1.prs_afdeling_naam   ||   '-'   ||   a2.prs_afdeling_naam   ||   '-'   ||   a3.prs_afdeling_naam   ||   '-'   ||   a4.prs_afdeling_naam   ||   '-'   ||   a5.prs_afdeling_omschrijving,
        a1.prs_afdeling_naam   ||   '-'   ||   a2.prs_afdeling_naam   ||   '-'   ||   a3.prs_afdeling_naam   ||   '-'   ||   a4.prs_afdeling_naam   ||   '-'   ||   a5.prs_afdeling_naam,
        a5.prs_afdeling_naam,
        a5.prs_afdeling_omschrijving   ||   ' ['   ||   a1.prs_afdeling_omschrijving   ||   ']',
        a5.prs_afdeling_omschrijving   ||   ' ['   ||   a1.prs_afdeling_naam   ||   '-'   ||   a2.prs_afdeling_naam   ||   '-'   ||   a3.prs_afdeling_naam   ||   '-'   ||   a4.prs_afdeling_naam  ||   ']',
        a5.prs_afdeling_naam  || '-' || a5.prs_afdeling_omschrijving,
        a1.prs_bedrijf_key
   FROM PRS_AFDELING a1, PRS_AFDELING a2, PRS_AFDELING a3, PRS_AFDELING a4, PRS_AFDELING a5
  WHERE a5.prs_afdeling_parentkey = a4.prs_afdeling_key
    AND a4.prs_afdeling_parentkey = a3.prs_afdeling_key
    AND a3.prs_afdeling_parentkey = a2.prs_afdeling_key
    AND a2.prs_afdeling_parentkey = a1.prs_afdeling_key
    AND a1.prs_afdeling_parentkey is NULL;


CREATE_VIEW (PRS_V_AFDELING_BOOM21, 0 )
(PRS_AFDELING_KEY1)
AS
SELECT a1.prs_afdeling_key
     FROM prs_afdeling a1
    WHERE a1.prs_afdeling_parentkey IS NULL;


CREATE_VIEW (PRS_V_AFDELING_BOOM22, 0 )
(PRS_AFDELING_KEY1, PRS_AFDELING_KEY2)
AS
SELECT a1.prs_afdeling_key, a2.prs_afdeling_key
     FROM prs_afdeling a1, prs_afdeling a2
    WHERE a2.prs_afdeling_parentkey = a1.prs_afdeling_key
      AND a1.prs_afdeling_parentkey IS NULL;


CREATE_VIEW (PRS_V_AFDELING_BOOM23, 0 )
(PRS_AFDELING_KEY1, PRS_AFDELING_KEY2, PRS_AFDELING_KEY3)
AS
SELECT
	a1.prs_afdeling_key,
	a2.prs_afdeling_key,
	a3.prs_afdeling_key
   FROM prs_afdeling a1, prs_afdeling a2, prs_afdeling a3
  WHERE a2.prs_afdeling_parentkey=a1.prs_afdeling_key
    AND a3.prs_afdeling_parentkey=a2.prs_afdeling_key
    AND a1.prs_afdeling_parentkey IS NULL;


CREATE_VIEW (PRS_V_AFDELING_BOOM24, 0)
(PRS_AFDELING_KEY1, PRS_AFDELING_KEY2, PRS_AFDELING_KEY3, PRS_AFDELING_KEY4)
AS
SELECT 	a1.prs_afdeling_key,
	a2.prs_afdeling_key,
	a3.prs_afdeling_key,
	a4.prs_afdeling_key
   FROM prs_afdeling a1, prs_afdeling a2, prs_afdeling a3, prs_afdeling a4
  WHERE a2.prs_afdeling_parentkey=a1.prs_afdeling_key
    AND a3.prs_afdeling_parentkey=a2.prs_afdeling_key
    AND a4.prs_afdeling_parentkey=a3.prs_afdeling_key
    AND a1.prs_afdeling_parentkey IS NULL;


CREATE_VIEW (PRS_V_AFDELING_BOOM25, 0 )
(PRS_AFDELING_KEY1, PRS_AFDELING_KEY2, PRS_AFDELING_KEY3, PRS_AFDELING_KEY4, PRS_AFDELING_KEY5)
AS
SELECT
	a1.prs_afdeling_key,
	a2.prs_afdeling_key,
	a3.prs_afdeling_key,
	a4.prs_afdeling_key,
	a5.prs_afdeling_key
   FROM prs_afdeling a1, prs_afdeling a2, prs_afdeling a3, prs_afdeling a4, prs_afdeling a5
  WHERE a2.prs_afdeling_parentkey=a1.prs_afdeling_key
    AND a3.prs_afdeling_parentkey=a2.prs_afdeling_key
    AND a4.prs_afdeling_parentkey=a3.prs_afdeling_key
    AND a5.prs_afdeling_parentkey=a4.prs_afdeling_key
    AND a1.prs_afdeling_parentkey IS NULL;

CREATE_VIEW (prs_v_afdeling_familie, 0 )
(PRS_AFDELING_KEY, PRS_AFDELING_ELDER_KEY, NIVEAU)
AS
SELECT prs_afdeling_key5 prs_afdeling_key,
          prs_afdeling_key5 prs_afdeling_elder_key, 5 niveau
     FROM prs_v_afdeling_boom25
   UNION ALL
   SELECT prs_afdeling_key5, prs_afdeling_key4, 4
     FROM prs_v_afdeling_boom25
   UNION ALL
   SELECT prs_afdeling_key5, prs_afdeling_key3, 3
     FROM prs_v_afdeling_boom25
   UNION ALL
   SELECT prs_afdeling_key5, prs_afdeling_key2, 2
     FROM prs_v_afdeling_boom25
   UNION ALL
   SELECT prs_afdeling_key5, prs_afdeling_key1, 1
     FROM prs_v_afdeling_boom25
   UNION ALL
   SELECT prs_afdeling_key4, prs_afdeling_key4, 4
     FROM prs_v_afdeling_boom24
   UNION ALL
   SELECT prs_afdeling_key4, prs_afdeling_key3, 3
     FROM prs_v_afdeling_boom24
   UNION ALL
   SELECT prs_afdeling_key4, prs_afdeling_key2, 2
     FROM prs_v_afdeling_boom24
   UNION ALL
   SELECT prs_afdeling_key4, prs_afdeling_key1, 1
     FROM prs_v_afdeling_boom24
   UNION ALL
   SELECT prs_afdeling_key3, prs_afdeling_key3, 3
     FROM prs_v_afdeling_boom23
   UNION ALL
   SELECT prs_afdeling_key3, prs_afdeling_key2, 2
     FROM prs_v_afdeling_boom23
   UNION ALL
   SELECT prs_afdeling_key3, prs_afdeling_key1, 1
     FROM prs_v_afdeling_boom23
   UNION ALL
   SELECT prs_afdeling_key2, prs_afdeling_key2, 2
     FROM prs_v_afdeling_boom22
   UNION ALL
   SELECT prs_afdeling_key2, prs_afdeling_key1, 1
     FROM prs_v_afdeling_boom22
   UNION ALL
   SELECT prs_afdeling_key1, prs_afdeling_key1, 1
     FROM prs_v_afdeling_boom21 ;

--
--
CREATE_VIEW(prs_v_afdeling, 0)
  ( prs_afdeling_key,
    prs_afdeling_parentkey,
    prs_afdeling_naam,
    prs_afdeling_naam1,
    prs_afdeling_naam2,
    prs_afdeling_naam3,
    prs_afdeling_naam4,
    prs_afdeling_naam5,
    prs_afdeling_naam6,
    prs_afdeling_upper,
    prs_afdeling_omschrijving,
    prs_kostenplaats_key,
    mld_adres_key,
    prs_afdeling_aanmaak,
    prs_afdeling_verwijder,
    prs_bedrijf_key,
    niveau ) AS
 SELECT a.prs_afdeling_key,
    a.prs_afdeling_parentkey,
    b.prs_afdeling_naam,
    b.prs_afdeling_naam1,
    b.prs_afdeling_naam2,
    b.prs_afdeling_naam3,
    b.prs_afdeling_naam4,
    b.prs_afdeling_naam5,
    b.prs_afdeling_naam6,
    UPPER(a.prs_afdeling_naam) prs_afdeling_upper,
    a.prs_afdeling_omschrijving,
    a.prs_kostenplaats_key,
    a.mld_adres_key,
    a.prs_afdeling_aanmaak,
    a.prs_afdeling_verwijder,
    b.prs_bedrijf_key,
    b.niveau
   FROM prs_afdeling a, prs_v_afdeling_fullnames b
  WHERE a.prs_afdeling_key=b.prs_afdeling_key;

-- NB: dit is een overrule!
DEFINIEER_VIEW_AANWEZIG(prs_v_afdeling,
                        prs_afdeling_verwijder,
                        prs_v_aanwezigafdeling,
                        0);


CREATE_VIEW (prs_v_prs_kostenplaats_info, 0)
(kpn_nummer,
 kpn_omschrijving,
 fclt_f_kpn_budgethouder,
 fclt_f_kpn_groep_omschrijving,
 fclt_f_kpn_groep_verantw
)
AS
SELECT prs_kostenplaats_nr kpn_nummer,
       prs_kostenplaats_omschrijving kpn_omschrijving,
       pf1.prs_perslid_naam_full kpn_budgethouder,
       kpg.prs_kostenplaatsgrp_oms kpn_groep_omschrijving,
       pf2.prs_perslid_naam_full kpn_groep_verantw
  FROM prs_v_aanwezigkostenplaats kp,
       prs_v_perslid_fullnames pf1,
       prs_v_perslid_fullnames pf2,
       prs_kostenplaatsgrp kpg
 WHERE kp.prs_perslid_key = pf1.prs_perslid_key(+)
   AND kp.prs_kostenplaatsgrp_key = kpg.prs_kostenplaatsgrp_key(+)
   AND kpg.prs_perslid_key = pf2.prs_perslid_key(+);

/* Views voor de HOOFDwerkplek van persleden */
-- Deze is veel sneller dan de eropvolgende, dus die gebruiken als je alleen de hwp nodig hebt
CREATE_VIEW(prs_v_hoofdperslidwerkplek2, 0)
(
   prs_perslid_key,
   prs_werkplek_key,
   aantal
)
AS
   SELECT   prs_perslid_key, pwp.prs_werkplek_key, 1
     FROM   prs_perslidwerkplek pwp, prs_werkplek wp
    WHERE       pwp.prs_werkplek_key = wp.prs_werkplek_key
            AND wp.prs_werkplek_virtueel = 0
            AND NOT EXISTS
                  (SELECT   ''
                     FROM   prs_perslidwerkplek pwp2, prs_werkplek wp2
                    WHERE       pwp.prs_perslid_key = pwp2.prs_perslid_key
                            AND pwp2.prs_werkplek_key = wp2.prs_werkplek_key
                            AND wp2.prs_werkplek_virtueel = 0
                            AND pwp.prs_werkplek_key <> pwp2.prs_werkplek_key
                            AND COALESCE (pwp2.prs_perslidwerkplek_volgnr, 10000 + pwp2.prs_perslidwerkplek_key) <
                                  COALESCE (pwp.prs_perslidwerkplek_volgnr, 10000 + pwp.prs_perslidwerkplek_key));

CREATE_VIEW(prs_v_hoofdperslidwerkplek, 0)
AS
     SELECT prs_perslid_key,
            MAX (pwp.prs_werkplek_key) prs_werkplek_key,
            1 aantal
       FROM prs_perslidwerkplek pwp, prs_werkplek wp
      WHERE     pwp.prs_werkplek_key = wp.prs_werkplek_key
            AND wp.prs_werkplek_virtueel = 0
   GROUP BY prs_perslid_key
     HAVING COUNT (pwp.prs_werkplek_key) = 1
   UNION ALL
   SELECT prs_perslid_key, pwp.prs_werkplek_key, 2
     FROM prs_perslidwerkplek pwp, prs_werkplek wp
    WHERE     pwp.prs_werkplek_key = wp.prs_werkplek_key
          AND wp.prs_werkplek_virtueel = 0
          AND NOT EXISTS
                (SELECT ''
                   FROM prs_perslidwerkplek pwp2, prs_werkplek wp2
                  WHERE     pwp.prs_perslid_key = pwp2.prs_perslid_key
                        AND pwp2.prs_werkplek_key = wp2.prs_werkplek_key
                        AND wp2.prs_werkplek_virtueel = 0
                        AND pwp.prs_werkplek_key <> pwp2.prs_werkplek_key
                        AND COALESCE (pwp2.prs_perslidwerkplek_volgnr, 10000+pwp2.prs_perslidwerkplek_key) <
                              COALESCE (pwp.prs_perslidwerkplek_volgnr, 10000+pwp.prs_perslidwerkplek_key))
          AND NOT EXISTS
                (  SELECT prs_perslid_key
                     FROM prs_perslidwerkplek pwp3, prs_werkplek wp3
                    WHERE     pwp3.prs_werkplek_key = wp3.prs_werkplek_key
                          AND wp3.prs_werkplek_virtueel = 0
                          AND pwp3.prs_perslid_key = pwp.prs_perslid_key
                 GROUP BY prs_perslid_key
                   HAVING COUNT (pwp3.prs_werkplek_key) = 1);


CREATE_VIEW(prs_v_werkplek_gegevens,0)
(
   prs_werkplek_key,
   prs_werkplek_volgnr,
   prs_werkplek_omschrijving,
   prs_werkplek_opp,
   prs_werkplek_module,
   prs_werkplek_virtueel,
   prs_werkplek_type,
   alg_ruimte_key,
   alg_ruimte_nr,
   alg_ruimte_upper_nr,
   alg_ruimte_bruto_vloeropp,
   alg_verdieping_key,
   alg_verdieping_code,
   alg_verdieping_volgnr,
   alg_verdieping_omschrijving,
   alg_gebouw_key,
   alg_gebouw_code,
   alg_gebouw_omschrijving,
   alg_gebouw_upper,
   alg_locatie_key,
   alg_locatie_code,
   alg_ruimte_aanduiding,
   prs_werkplek_aanduiding,
   prs_werkplek_getekend,
   alg_ruimte_omschrijving,
   prs_werkplek_vastopp
)
AS
   SELECT prs_w.prs_werkplek_key,
          prs_w.prs_werkplek_volgnr,
          prs_w.prs_werkplek_omschrijving,
          prs_w.prs_werkplek_opp,
          prs_w.prs_werkplek_module,
          prs_w.prs_werkplek_virtueel,
          prs_w.prs_werkplek_type,
          alg_r.alg_ruimte_key,
          alg_r.alg_ruimte_nr,
          alg_r.alg_ruimte_upper_nr,
          alg_r.alg_ruimte_bruto_vloeropp,
          alg_v.alg_verdieping_key,
          alg_v.alg_verdieping_code,
          alg_v.alg_verdieping_volgnr,
          alg_v.alg_verdieping_omschrijving,
          alg_g.alg_gebouw_key,
          alg_g.alg_gebouw_code,
          alg_g.alg_gebouw_omschrijving,
          alg_g.alg_gebouw_upper,
          alg_g.alg_locatie_key,
          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),
          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)
          || '/'
          || TO_CHAR (prs_w.prs_werkplek_volgnr),
          prs_w.prs_werkplek_getekend,
          alg_r.alg_ruimte_omschrijving,
          prs_w.prs_werkplek_vastopp
     FROM prs_werkplek prs_w,
          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 prs_w.prs_alg_ruimte_key = alg_r.alg_ruimte_key
          AND alg_g.alg_locatie_key = alg_l.alg_locatie_key;


/* View om te bepalen wat het totale bezettingspercentage van een werkplek is */
CREATE_VIEW(prs_v_werkplek_bezetting, 0)
           (prs_werkplek_key,
            prs_werkplek_bezetting) AS
    SELECT PRS_W.prs_werkplek_key,
           NVL(SUM(PRS_PW.prs_perslidwerkplek_bezetting), 0)
    FROM prs_werkplek PRS_W,
         prs_perslidwerkplek PRS_PW
    WHERE PRS_W.prs_werkplek_key = PRS_PW.prs_werkplek_key (+)
    GROUP BY PRS_W.prs_werkplek_key;

/* View om alle werkplekken te koppelen aan persleden, met outerjoin. */
CREATE_VIEW(prs_v_perslidwerkplek_gegevens, 0)
           (prs_werkplek_key,
            prs_werkplek_volgnr,
            prs_werkplek_omschrijving,
            prs_werkplek_opp,
            prs_werkplek_aanduiding,
            prs_werkplek_virtueel,
            alg_ruimte_key,
            alg_ruimte_nr,
            alg_ruimte_upper_nr,
            alg_verdieping_key,
            alg_verdieping_code,
            alg_verdieping_volgnr,
            alg_verdieping_omschrijving,
            alg_gebouw_key,
            alg_gebouw_code,
            alg_gebouw_omschrijving,
            alg_gebouw_upper,
            alg_locatie_key,
            prs_perslidwerkplek_key,
            prs_afdeling_key,
            prs_perslid_key,
            prs_afd_perslid_naam,
            prs_afd_perslid_upper,
            prs_perslidwerkplek_bezetting)
AS
   SELECT prs_w.prs_werkplek_key, prs_w.prs_werkplek_volgnr, prs_w.prs_werkplek_omschrijving, prs_w.prs_werkplek_opp,
          prs_w.prs_werkplek_aanduiding, prs_w.prs_werkplek_virtueel, prs_w.alg_ruimte_key, prs_w.alg_ruimte_nr,
          prs_w.alg_ruimte_upper_nr, prs_w.alg_verdieping_key, prs_w.alg_verdieping_code, prs_w.alg_verdieping_volgnr,
          prs_w.alg_verdieping_omschrijving, prs_w.alg_gebouw_key, prs_w.alg_gebouw_code, prs_w.alg_gebouw_omschrijving,
          prs_w.alg_gebouw_upper, prs_w.alg_locatie_key, prs_pw.prs_perslidwerkplek_key, TO_NUMBER (NULL),
          prs_pw.prs_perslid_key, pf.prs_perslid_naam_full, prs_p.prs_perslid_upper,
          prs_pw.prs_perslidwerkplek_bezetting
     FROM prs_v_werkplek_gegevens prs_w,
          prs_perslidwerkplek prs_pw,
          prs_perslid prs_p,
          prs_v_perslid_fullnames_all pf
    WHERE prs_w.prs_werkplek_key = prs_pw.prs_werkplek_key
      AND prs_pw.prs_perslid_key IS NOT NULL
      AND prs_pw.prs_perslid_key = prs_p.prs_perslid_key
      AND prs_p.prs_perslid_key = pf.prs_perslid_key
   UNION
   SELECT prs_w.prs_werkplek_key, prs_w.prs_werkplek_volgnr, prs_w.prs_werkplek_omschrijving, prs_w.prs_werkplek_opp,
          prs_w.prs_werkplek_aanduiding, prs_w.prs_werkplek_virtueel, prs_w.alg_ruimte_key, prs_w.alg_ruimte_nr,
          prs_w.alg_ruimte_upper_nr, prs_w.alg_verdieping_key, prs_w.alg_verdieping_code, prs_w.alg_verdieping_volgnr,
          prs_w.alg_verdieping_omschrijving, prs_w.alg_gebouw_key, prs_w.alg_gebouw_code, prs_w.alg_gebouw_omschrijving,
          prs_w.alg_gebouw_upper, prs_w.alg_locatie_key, TO_NUMBER (NULL), TO_NUMBER (NULL), TO_NUMBER (NULL), '[Vrij]',
          '[VRIJ]', 100 - prs_wb.prs_werkplek_bezetting
     FROM prs_v_werkplek_gegevens prs_w, prs_v_werkplek_bezetting prs_wb
    WHERE prs_w.prs_werkplek_key = prs_wb.prs_werkplek_key AND prs_wb.prs_werkplek_bezetting < 100;


/* View om werkplekken aan persleden te koppelen met afdeling. */
CREATE_VIEW(prs_v_werkplekperslid_gegevens,0) (prs_perslidwerkplek_key,
                                               prs_perslid_key,
                                               prs_afdeling_key,
                                               prs_naam,
                                               prs_werkplek_key,
                                               prs_werkplek_volgnr,
                                               prs_werkplek_opp,
                                               alg_locatie_key,
                                               alg_gebouw_omschrijving,
                                               alg_gebouw_upper,
                                               alg_verdieping_code,
                                               alg_verdieping_omschrijving,
                                               alg_ruimte_nr,
                                               alg_ruimte_upper_nr
                                              )
AS
   SELECT prs_pw.prs_perslidwerkplek_key, prs_pw.prs_perslid_key, prs_p.prs_afdeling_key, pf.prs_perslid_naam_full,
          prs_pw.prs_werkplek_key, prs_w.prs_werkplek_volgnr, prs_w.prs_werkplek_opp, prs_w.alg_locatie_key,
          prs_w.alg_gebouw_omschrijving, prs_w.alg_gebouw_upper, prs_w.alg_verdieping_code,
          prs_w.alg_verdieping_omschrijving, prs_w.alg_ruimte_nr, prs_w.alg_ruimte_upper_nr
     FROM prs_perslidwerkplek prs_pw,
          prs_perslid prs_p,
          prs_v_werkplek_gegevens prs_w,
          prs_v_perslid_fullnames_all pf
    WHERE prs_pw.prs_perslid_key = prs_p.prs_perslid_key
      AND prs_pw.prs_werkplek_key = prs_w.prs_werkplek_key
      AND prs_p.prs_perslid_key = pf.prs_perslid_key;

/* View om werkplekken aan persleden te koppelen met afdeling, geen outer join. */
CREATE_VIEW(prs_v_werkplekafdeling_geg,0)
                                           ( prs_perslidwerkplek_key,
                                             prs_afdeling_key,
                                             prs_afdeling_naam,
                                             prs_afdeling_upper,
                                             prs_werkplek_key,
                                             prs_werkplek_volgnr,
                                             prs_werkplek_opp,
                                             alg_locatie_key,
                                             alg_gebouw_omschrijving,
                                             alg_gebouw_upper,
                                             alg_verdieping_code,
                                             alg_verdieping_omschrijving,
                                             alg_ruimte_key,
                                             alg_ruimte_nr,
                                             alg_ruimte_upper_nr,
                                             alg_ruimte_bruto_vloeropp ) AS
 SELECT PRS_PW.prs_perslidwerkplek_key,
        PRS_A.prs_afdeling_key,
        PRS_A.prs_afdeling_naam,
        PRS_A.prs_afdeling_upper,
        PRS_PW.prs_werkplek_key,
        PRS_W.prs_werkplek_volgnr,
        PRS_W.prs_werkplek_opp,
        PRS_W.alg_locatie_key,
        PRS_W.alg_gebouw_omschrijving,
        PRS_W.alg_gebouw_upper,
        PRS_W.alg_verdieping_code,
        PRS_W.alg_verdieping_omschrijving,
        PRS_W.alg_ruimte_key,
        PRS_W.alg_ruimte_nr,
        PRS_W.alg_ruimte_upper_nr,
        PRS_W.alg_ruimte_bruto_vloeropp
   FROM prs_perslidwerkplek PRS_PW, PRS_PERSLID PRS_P,
        PRS_AFDELING PRS_A, prs_v_werkplek_gegevens PRS_W
  WHERE PRS_PW.prs_perslid_key = PRS_P.prs_perslid_key
    AND PRS_P.prs_afdeling_key = PRS_A.prs_afdeling_key
    AND PRS_PW.prs_werkplek_key = PRS_W.prs_werkplek_key;

CREATE_VIEW(prs_v_uurloon_uitvoerende, 0)
            (prs_uitvoerende_key, uurloon) AS

SELECT P.prs_perslid_key, P.prs_perslid_uurloon
FROM prs_v_aanwezigperslid P
WHERE P.prs_perslid_uurloon IS NOT NULL
UNION
SELECT P.prs_perslid_key, S.prs_srtperslid_uurloon
FROM prs_v_aanwezigperslid P, prs_v_aanwezigsrtperslid S
WHERE P.prs_perslid_uurloon IS NULL
  AND P.prs_srtperslid_key = S.prs_srtperslid_key
  AND S.prs_srtperslid_uurloon IS NOT NULL
  AND S.prs_bedrijf_key IS NULL
UNION
SELECT S.prs_srtperslid_key, S.prs_srtperslid_uurloon
FROM prs_v_aanwezigsrtperslid S
UNION
SELECT B.prs_bedrijf_key, B.prs_bedrijf_uurloon
FROM prs_v_aanwezigbedrijf B
WHERE B.prs_bedrijf_uurloon IS NOT NULL;


CREATE_VIEW(prs_v_ruimte_afdeling ,0)
       (prs_afdeling_key,
        prs_afdeling_naam,
        prs_werkplek_key,
        prs_werkplek_opp,
        alg_verdieping_key,
        alg_verdieping_code,
        alg_gebouw_key) AS
 SELECT AF.prs_afdeling_key,         -- Werkplekken gekoppeld aan personen
        AF.prs_afdeling_naam,
        PWP.prs_werkplek_key,
        (WP.prs_werkplek_opp*PWP.prs_perslidwerkplek_bezetting)/100,
        V.alg_verdieping_key,
        V.alg_verdieping_code,
        V.alg_gebouw_key
  FROM prs_perslidwerkplek PWP, prs_v_werkplek_gegevens WP,
       prs_perslid PL, prs_afdeling AF,
       alg_ruimte R, alg_verdieping V
 WHERE WP.prs_werkplek_key = PWP.prs_werkplek_key
   AND PL.prs_perslid_key = PWP.prs_perslid_key
   AND PL.prs_afdeling_key = AF.prs_afdeling_key
   AND WP.alg_ruimte_key = R.alg_ruimte_key
   AND R.alg_verdieping_key = V.alg_verdieping_key;

CREATE_VIEW(prs_v_ruimte_afdeling_total,0)
       (prs_afdeling_key,
        prs_afdeling_naam,
        prs_afdeling_opp,
        alg_verdieping_key,
        alg_gebouw_key) AS
 SELECT DISTINCT(RA.prs_afdeling_key),
        RA.prs_afdeling_naam,
        SUM(RA.prs_werkplek_opp),
        RA.alg_verdieping_key,
        RA.alg_gebouw_key
   FROM prs_v_ruimte_afdeling RA
 GROUP BY prs_afdeling_key,
          prs_afdeling_naam,
          alg_gebouw_key,
          alg_verdieping_key,
          prs_werkplek_opp;

--
-- Waarom hier?
CREATE_VIEW(fac_v_my_disciplines, 0)
      ( ins_discipline_key,
        prs_perslid_key,
        fac_gebruiker_alg_level_read,
        fac_gebruiker_alg_level_write,
        fac_gebruiker_prs_level_read,
        fac_gebruiker_prs_level_write,
        fac_functie_code,
        fac_functie_module) AS
 SELECT g.ins_discipline_key,
        g.prs_perslid_key,
        g.fac_gebruiker_alg_level_read,
    g.fac_gebruiker_alg_level_write,
        g.fac_gebruiker_prs_level_read,
    g.fac_gebruiker_prs_level_write,
    f.fac_functie_code,
    f.fac_functie_module
   FROM fac_v_webgebruiker g, FAC_FUNCTIE f
  WHERE f.fac_functie_key = g.fac_functie_key
    AND g.ins_discipline_key IS NOT NULL;


-- Oppervlakte van een werkplek, rekening houdend met andere werkplekken in de ruimte
-- die eventueel een vaste oppervlakte kunnen hebben
-- Het is een zware view dus sporadisch gebruiken!
CREATE_VIEW(prs_v_werkplek_oppervlakte, 0) (prs_werkplek_key, wpopp)
AS
   SELECT   prs_werkplek_key,
            DECODE (prs_werkplek_vastopp,
                    1, prs_werkplek_opp,
                    (alg_ruimte_bruto_vloeropp - totvastopp
                    ) / vrijwp
                   ) wpopp
       FROM (SELECT   prs_alg_ruimte_key, COUNT (*),
                      COUNT (*) - COUNT (prs_werkplek_vastopp) vrijwp,
                      COUNT (prs_werkplek_vastopp) vastwp,
                      SUM (DECODE (prs_werkplek_vastopp,
                                   1, prs_werkplek_opp,
                                   0
                                  )
                          ) totvastopp
                 FROM prs_werkplek
             GROUP BY prs_alg_ruimte_key) selopp,
            alg_ruimte prj_r,
            prs_werkplek prj_w
      WHERE prj_r.alg_ruimte_key = prj_w.prs_alg_ruimte_key
        AND selopp.prs_alg_ruimte_key = prj_r.alg_ruimte_key
   ORDER BY prs_werkplek_key;

-- overzicht van verplichtingen
CREATE_VIEW(PRS_V_VERPLICHTING, 0)
(prs_perslid_key, fac_message_code, item, item_key, locatie_key, xmlnode)
AS
   SELECT o.mld_uitvoerende_keys,
          'PRS_OPENST_OPDRACHT',
          (SELECT isd.ins_srtdiscipline_prefix
             FROM ins_srtdiscipline isd, ins_tab_discipline id, mld_melding m
            WHERE     id.ins_srtdiscipline_key = isd.ins_srtdiscipline_key
                  AND std.mld_ins_discipline_key = id.ins_discipline_key
                  AND o.mld_melding_key = m.mld_melding_key)
          || TO_CHAR (o.mld_melding_key)
          || '/'
          || TO_CHAR (o.mld_opdr_bedrijfopdr_volgnr),
          o.mld_opdr_key,
          m.mld_alg_locatie_key,
          'opdracht'
     FROM mld_opdr o,
          prs_perslid p,
          mld_melding m,
          mld_stdmelding std
    WHERE     o.mld_statusopdr_key IN (5, 8)
          AND o.mld_melding_key = m.mld_melding_key
          AND m.mld_stdmelding_key = std.mld_stdmelding_key
          AND o.mld_uitvoerende_keys = p.prs_perslid_key
          AND o.fac_activiteit_key IS NULL
   UNION ALL
   SELECT m.prs_perslid_key,
          'PRS_OPENST_MELDING',
          (SELECT isd.ins_srtdiscipline_prefix
             FROM ins_srtdiscipline isd, ins_tab_discipline id
            WHERE id.ins_srtdiscipline_key = isd.ins_srtdiscipline_key
                  AND std.mld_ins_discipline_key = id.ins_discipline_key)
          || TO_CHAR (m.mld_melding_key),
          m.mld_melding_key,
          m.mld_alg_locatie_key,
          'melding'
     FROM mld_melding m,
          mld_stdmelding std
    WHERE m.mld_stdmelding_key = std.mld_stdmelding_key
          AND m.mld_melding_status IN (0, 2, 3, 4, 7)
          AND m.fac_activiteit_key IS NULL
   UNION ALL
   SELECT b.prs_perslid_key,
          'PRS_OPENST_BESTELLING',
          TO_CHAR (bes_bestelling_key),
          bes_bestelling_key,
          ma.alg_locatie_key,
          'bestelling'
     FROM bes_bestelling b, mld_adres ma
    WHERE     b.bes_bestelling_status IN (5, 4, 3, 2)
          AND b.mld_adres_key_lev = ma.mld_adres_key(+)
          AND b.fac_activiteit_key IS NULL
   UNION ALL
   SELECT b.prs_perslid_key_voor,
          'PRS_OPENST_BESTELLING',
          TO_CHAR (bes_bestelling_key),
          bes_bestelling_key,
          ma.alg_locatie_key,
          'bestelling'
     FROM bes_bestelling b, mld_adres ma
    WHERE     b.bes_bestelling_status IN (5, 4, 3, 2)
          AND b.mld_adres_key_lev = ma.mld_adres_key(+)
          AND b.fac_activiteit_key IS NULL
   UNION ALL
   SELECT ins_alg_ruimte_key,
          'PRS_BEZIT_OBJECT',
          ins_deel_omschrijving,
          ins_deel_key,
          d.ins_alg_locatie_key,
          'deel'
     FROM ins_v_aanwezigdeel d, ins_tab_discipline id
    WHERE     d.ins_alg_ruimte_type = 'P'
          AND id.ins_discipline_key = d.ins_discipline_key
          AND id.ins_discipline_min_level <> 3
   UNION ALL
   SELECT rr.res_rsv_ruimte_host_key,
          'PRS_OPENST_RES_R',
             TO_CHAR (rr.res_reservering_key)
          || '/'
          || TO_CHAR (res_rsv_ruimte_volgnr),
          rr.res_rsv_ruimte_key,
          rg.alg_locatie_key,
          'reservering'
     FROM res_v_aanwezigrsv_ruimte rr,
          res_ruimte_opstelling ro,
          res_v_alg_ruimte_gegevens rg
    WHERE     rr.res_ruimte_opstel_key = ro.res_ruimte_opstel_key
          AND ro.res_ruimte_key = rg.res_ruimte_key
          AND rr.res_status_bo_key IN (4, 3, 2)
          AND res_rsv_ruimte_tot > SYSDATE-14 -- na 14 dagen niet meer klagen
   UNION ALL
   SELECT rr.res_rsv_ruimte_host_key,
          'PRS_OPENST_RES_V',
             TO_CHAR (rr.res_reservering_key)
          || '/'
          || TO_CHAR (res_rsv_ruimte_volgnr),
          rr.res_rsv_ruimte_key,
          rg.alg_locatie_key,
          'reservering'
     FROM res_v_aanwezigrsv_deel rd, alg_v_onrgoed_boom rg, res_rsv_ruimte rr
    WHERE     rr.alg_ruimte_key = rg.alg_ruimte_key
          AND rr.res_rsv_ruimte_key = rd.res_rsv_ruimte_key
          AND rd.res_status_bo_key IN (4, 3, 2)
          AND res_rsv_ruimte_tot > SYSDATE-14
   UNION ALL
   SELECT rr.res_rsv_ruimte_host_key,
          'PRS_OPENST_RES_C',
             TO_CHAR (rr.res_reservering_key)
          || '/'
          || TO_CHAR (res_rsv_ruimte_volgnr),
          rr.res_rsv_ruimte_key,
          rg.alg_locatie_key,
          'reservering'
     FROM res_v_aanwezigrsv_artikel ra,
          alg_v_onrgoed_boom rg,
          res_rsv_ruimte rr
    WHERE     rr.alg_ruimte_key = rg.alg_ruimte_key
          AND rr.res_rsv_ruimte_key = ra.res_rsv_ruimte_key
          AND ra.res_status_bo_key IN (4, 3, 2)
          AND res_rsv_ruimte_tot > SYSDATE-14
   UNION ALL
   SELECT rr.res_rsv_ruimte_contact_key,
          'PRS_OPENST_RES_RC',
             TO_CHAR (rr.res_reservering_key)
          || '/'
          || TO_CHAR (res_rsv_ruimte_volgnr),
          rr.res_rsv_ruimte_key,
          rg.alg_locatie_key,
          'reservering'
     FROM res_v_aanwezigrsv_ruimte rr,
          res_ruimte_opstelling ro,
          res_v_alg_ruimte_gegevens rg
    WHERE     rr.res_ruimte_opstel_key = ro.res_ruimte_opstel_key
          AND ro.res_ruimte_key = rg.res_ruimte_key
          AND rr.res_status_bo_key IN (4, 3, 2)
          AND res_rsv_ruimte_tot > SYSDATE-14
   UNION ALL
   SELECT rr.res_rsv_ruimte_contact_key,
          'PRS_OPENST_RES_VC',
             TO_CHAR (rr.res_reservering_key)
          || '/'
          || TO_CHAR (res_rsv_ruimte_volgnr),
          rr.res_rsv_ruimte_key,
          rg.alg_locatie_key,
          'reservering'
     FROM res_v_aanwezigrsv_deel rd, alg_v_onrgoed_boom rg, res_rsv_ruimte rr
    WHERE     rr.alg_ruimte_key = rg.alg_ruimte_key
          AND rr.res_rsv_ruimte_key = rd.res_rsv_ruimte_key
          AND rd.res_status_bo_key IN (4, 3, 2)
          AND res_rsv_ruimte_tot > SYSDATE-14
   UNION ALL
   SELECT rr.res_rsv_ruimte_contact_key,
          'PRS_OPENST_RES_CC',
             TO_CHAR (rr.res_reservering_key)
          || '/'
          || TO_CHAR (res_rsv_ruimte_volgnr),
          rr.res_rsv_ruimte_key,
          rg.alg_locatie_key,
          'reservering'
     FROM res_v_aanwezigrsv_artikel ra,
          alg_v_onrgoed_boom rg,
          res_rsv_ruimte rr
    WHERE     rr.alg_ruimte_key = rg.alg_ruimte_key
          AND rr.res_rsv_ruimte_key = ra.res_rsv_ruimte_key
          AND ra.res_status_bo_key IN (4, 3, 2)
          AND rr.alg_ruimte_key IS NOT NULL
          AND res_rsv_ruimte_tot > SYSDATE-14
   UNION ALL
   SELECT a.bez_afspraak_host_key,
          'PRS_AFSPRAAK_H',
          TO_CHAR (a.bez_afspraak_datum, 'DD-MM-YYYY HH24:MI'),
          a.bez_afspraak_key,
          a.alg_locatie_key,
          'afspraak'
     FROM bez_afspraak a
    WHERE a.bez_afspraak_datum > SYSDATE
   UNION ALL
   SELECT a.bez_afspraak_contact_key,
          'PRS_AFSPRAAK_C',
          TO_CHAR (a.bez_afspraak_datum, 'DD-MM-YYYY HH24:MI'),
          a.bez_afspraak_key,
          a.alg_locatie_key,
          'afspraak'
     FROM bez_afspraak a
    WHERE a.bez_afspraak_datum > SYSDATE
   UNION ALL
   SELECT k.prs_perslid_key,
          'PRS_BUDGETHOUDER_VAN',
          k.prs_kostenplaats_nr,
          k.prs_kostenplaats_key,
          NULL,
          ''
     FROM prs_kostenplaats k
   UNION ALL
   SELECT k.prs_perslid_key,
          'PRS_BUDGETHOUDER_GROEP',
          k.prs_kostenplaatsgrp_oms,
          k.prs_kostenplaatsgrp_key,
          NULL,
          ''
     FROM prs_kostenplaatsgrp k
   UNION ALL
   SELECT k.prs_kostenplaatsgrp_fiat2_key,
          'PRS_BUDGETHOUDER_GROEP',
          k.prs_kostenplaatsgrp_oms,
          k.prs_kostenplaatsgrp_key,
          NULL,
          ''
     FROM prs_kostenplaatsgrp k
   UNION ALL
   SELECT k.prs_kostenplaatsgrp_fiat3_key,
          'PRS_BUDGETHOUDER_GROEP',
          k.prs_kostenplaatsgrp_oms,
          k.prs_kostenplaatsgrp_key,
          NULL,
          ''
     FROM prs_kostenplaatsgrp k
   UNION ALL
   SELECT c.prs_perslid_key_beh,
          'CNT_CONTRACT_BEH',
          cnt_contract_nummer_intern ||
            CASE
            WHEN c.cnt_contract_versie IS NOT NULL
            THEN '.' || c.cnt_contract_versie
            ELSE ''
            END,
          c.cnt_contract_key,
          NULL,
          'contract'
     FROM cnt_contract c
    WHERE cnt_contract_verwijder IS NULL
      AND cnt_contract_status = 0 /* actief */
      AND cnt_contract_looptijd_tot > SYSDATE
  UNION ALL
  SELECT c.cnt_prs_perslid_key,
         'CNT_CONTRACT_PARTIJ',
          cnt_contract_nummer_intern ||
            CASE
            WHEN c.cnt_contract_versie IS NOT NULL
            THEN '.' || c.cnt_contract_versie
            ELSE ''
            END,
         c.cnt_contract_key,
         NULL,
         'contract'
    FROM cnt_contract c
   WHERE cnt_contract_verwijder IS NULL
     AND cnt_contract_status = 0 /* actief */
     AND cnt_contract_looptijd_tot > SYSDATE
     AND c.cnt_prs_perslid_key IS NOT NULL
  UNION ALL
  SELECT d.prs_perslid_key_beh,
         'PRS_BEHEERT_OBJECT',
          ins_deel_omschrijving,
          ins_deel_key,
          d.ins_alg_locatie_key,
          'deel'
     FROM ins_v_aanwezigdeel d;


-- Dezelfde view voor afdelingen
CREATE_VIEW(prs_v_afd_verplichting, 0)
(prs_afdeling_key, fac_message_code, item, item_key)
AS
   SELECT p.prs_afdeling_key, 'PRS_OPENST_OPDRACHT',
             (SELECT isd.ins_srtdiscipline_prefix
                FROM ins_srtdiscipline isd, ins_tab_discipline ID, mld_stdmelding std, mld_melding m
               WHERE ID.ins_srtdiscipline_key = isd.ins_srtdiscipline_key
                 AND m.mld_stdmelding_key = std.mld_stdmelding_key
                 AND std.mld_ins_discipline_key = ID.ins_discipline_key
                 AND o.mld_melding_key = m.mld_melding_key)
          || TO_CHAR (o.mld_melding_key)
          || '/'
          || TO_CHAR (o.mld_opdr_bedrijfopdr_volgnr),
          o.mld_opdr_key
     FROM mld_opdr o, prs_perslid p
    WHERE o.mld_statusopdr_key IN (5, 8)
      AND o.mld_uitvoerende_keys = p.prs_perslid_key
      AND o.fac_activiteit_key IS NULL
   UNION
   SELECT p.prs_afdeling_key, 'PRS_OPENST_BESTELLING', TO_CHAR (bes_bestelling_key), bes_bestelling_key
     FROM bes_bestelling b, prs_perslid p
    WHERE b.bes_bestelling_status IN (5, 4, 3, 2)
	AND b.prs_perslid_key=p.prs_perslid_key
   UNION
   SELECT ins_alg_ruimte_key, 'PRS_BEZIT_OBJECT', ins_deel_omschrijving, ins_deel_key
     FROM ins_v_aanwezigdeel d, ins_tab_discipline ID
    WHERE d.ins_alg_ruimte_type = 'A'
      AND ID.ins_discipline_key = d.ins_discipline_key
      AND ID.ins_discipline_min_level <> 3;

// PF: DEZE NOG SEMANTISCH CONTROLEREN!
CREATE_VIEW(prs_v_kp_verplichting, 0)
 (prs_kostenplaats_key, fac_message_code, item, item_key, locatie_key)
AS
   SELECT o.prs_kostenplaats_key, 'KPN_OPENST_OPDRACHT',
             (SELECT isd.ins_srtdiscipline_prefix
                FROM ins_srtdiscipline isd, ins_tab_discipline ID, mld_melding m
               WHERE ID.ins_srtdiscipline_key = isd.ins_srtdiscipline_key
                 AND std.mld_ins_discipline_key = ID.ins_discipline_key
                 AND o.mld_melding_key = m.mld_melding_key)
          || TO_CHAR (o.mld_melding_key)
          || '/'
          || TO_CHAR (o.mld_opdr_bedrijfopdr_volgnr),
          o.mld_opdr_key, m.mld_alg_locatie_key
     FROM mld_opdr o, prs_perslid p, mld_stdmelding std, mld_melding m
    WHERE o.mld_statusopdr_key IN (5, 8)
      AND o.mld_melding_key = m.mld_melding_key
      AND m.mld_stdmelding_key = std.mld_stdmelding_key
      AND o.mld_uitvoerende_keys = p.prs_perslid_key
   UNION
   SELECT b.prs_kostenplaats_key, 'KPN_OPENST_BESTELLING', TO_CHAR (bes_bestelling_key), bes_bestelling_key,
          ma.alg_locatie_key
     FROM bes_bestelling b, mld_adres ma
    WHERE b.bes_bestelling_status IN (5, 4, 3, 2) AND b.mld_adres_key_lev = ma.mld_adres_key(+)
   UNION
   SELECT   rr.prs_kostenplaats_key, 'KPN_OPENST_RES_R', TO_CHAR (rr.res_reservering_key) || '/' || COUNT (*),
            rr.res_reservering_key, rg.alg_locatie_key
       FROM res_v_aanwezigrsv_ruimte rr, res_ruimte_opstelling ro, res_v_alg_ruimte_gegevens rg
      WHERE rr.res_ruimte_opstel_key = ro.res_ruimte_opstel_key
        AND ro.res_ruimte_key = rg.res_ruimte_key
        AND rr.res_status_bo_key IN (4, 3, 2)
   GROUP BY rr.prs_kostenplaats_key, 'KPN_OPENST_RES_R', rr.res_reservering_key, rg.alg_locatie_key
   UNION
   SELECT   rr.prs_kostenplaats_key, 'KPN_OPENST_RES_V', TO_CHAR (rr.res_reservering_key) || '/' || COUNT (*),
            rr.res_reservering_key, rg.alg_locatie_key
       FROM res_v_aanwezigrsv_deel rd, res_v_alg_ruimte_gegevens rg, res_v_aanwezigrsv_ruimte rr
      WHERE rr.res_rsv_ruimte_key = rd.res_rsv_ruimte_key
        AND rr.alg_ruimte_key = rg.alg_ruimte_key
        AND rd.res_status_bo_key IN (4, 3, 2)
        AND rr.alg_ruimte_key IS NOT NULL
   GROUP BY rr.prs_kostenplaats_key, 'KPN_OPENST_RES_V', rr.res_reservering_key, rg.alg_ruimte_key, rg.alg_locatie_key
   UNION
   SELECT   rr.prs_kostenplaats_key, 'KPN_OPENST_RES_C', TO_CHAR (rr.res_reservering_key) || '/' || COUNT (*),
            rr.res_reservering_key, rg.alg_locatie_key
       FROM res_v_aanwezigrsv_artikel ra, res_v_alg_ruimte_gegevens rg, res_v_aanwezigrsv_ruimte rr
      WHERE rr.res_rsv_ruimte_key = ra.res_rsv_ruimte_key
        AND rr.alg_ruimte_key = rg.alg_ruimte_key
        AND ra.res_status_bo_key IN (4, 3, 2)
        AND rr.alg_ruimte_key IS NOT NULL
   GROUP BY rr.prs_kostenplaats_key, 'KPN_OPENST_RES_C', rr.res_reservering_key, rr.alg_ruimte_key, rg.alg_locatie_key;


// Deze view is beter geschikt dan bovenstaande en geeft of een bepaald persoon
// relevant gebruikt werd/wordt in de database. Komt een perslid hier niet in voor
// dan mag die verwijderd (DELETED) worden. (gebruik als select ** where prs_perslid_key=NNN
CREATE_VIEW(prs_v_verplichting_refcheck,0)
 (prs_perslid_key)
AS
   SELECT b.prs_perslid_key
     FROM bes_bestelling b
   UNION ALL
   SELECT b.prs_perslid_key_voor
     FROM bes_bestelling b
   UNION ALL
   SELECT b.bes_bestelling_fiat_user
     FROM bes_bestelling b
   UNION ALL
   SELECT b.prs_perslid_key
     FROM bes_bestelopdr b
   UNION ALL
   SELECT a.bez_afspraak_contact_key
     FROM bez_afspraak a
   UNION ALL
   SELECT a.bez_afspraak_host_key
     FROM bez_afspraak a
   UNION ALL
   SELECT a.prs_perslid_key
     FROM bez_afspraak a
   UNION ALL
   SELECT z.prs_perslid_key
     FROM bez_bezoekers z
   UNION ALL
   SELECT p.prs_perslid_key
     FROM prs_contactpersoon p
   UNION ALL
   SELECT c.prs_perslid_key_beh
     FROM cnt_contract c
   UNION ALL
   SELECT c.prs_perslid_key_eig
     FROM cnt_contract c
   UNION ALL
   SELECT c.cnt_prs_perslid_key
     FROM cnt_contract c
   UNION ALL
   SELECT m.prs_perslid_key
     FROM mld_melding m
   UNION ALL
   SELECT m.prs_perslid_key_voor
     FROM mld_melding m
   UNION ALL
   SELECT m.mld_melding_behandelaar_key
     FROM mld_melding m
   UNION ALL
   SELECT o.mld_uitvoerende_keys
     FROM mld_opdr o
   UNION ALL
   SELECT o.prs_perslid_key
     FROM mld_opdr o
   UNION ALL
   SELECT m.prs_perslid_key
     FROM mrk_bericht m
   UNION ALL
   SELECT r.res_rsv_ruimte_host_key
     FROM res_rsv_ruimte r
   UNION ALL
   SELECT r.res_rsv_ruimte_contact_key
     FROM res_rsv_ruimte r
   UNION ALL
   SELECT ins_alg_ruimte_key
     FROM ins_deel d
    WHERE d.ins_alg_ruimte_type = 'P'
   UNION ALL
   SELECT prs_perslid_key_beh
     FROM ins_deel d;

-- Genuanceeerdere versie van de voorgaande, te gebruiken voor existentie:
-- kom een perslid_key hierin voor, dan heeft die een actuele verplichting
-- en mag-ie niet inactief (_VERWIJDER) worden.
CREATE_VIEW(prs_v_verplichting_keys, 0) (prs_perslid_key, item_key)
AS
   SELECT o.mld_uitvoerende_keys, o.mld_opdr_key
     FROM mld_opdr o, prs_perslid p
    WHERE o.mld_statusopdr_key IN (5, 8)
      AND o.mld_uitvoerende_keys = p.prs_perslid_key
      AND o.fac_activiteit_key IS NULL
   UNION ALL
   SELECT m.prs_perslid_key, m.mld_melding_key
     FROM mld_melding m
    WHERE m.mld_melding_status IN (2, 3, 4, 7)
      AND m.fac_activiteit_key IS NULL
   UNION ALL
   SELECT b.prs_perslid_key, bes_bestelling_key
     FROM bes_bestelling b
    WHERE b.bes_bestelling_status IN (5, 4, 3, 2)
      AND b.fac_activiteit_key IS NULL
   UNION ALL
   SELECT ins_alg_ruimte_key, ins_deel_key
     FROM ins_v_aanwezigdeel d, ins_tab_discipline ID
    WHERE d.ins_alg_ruimte_type = 'P'
      AND ID.ins_discipline_key = d.ins_discipline_key
      AND ID.ins_discipline_min_level <> 3
   UNION ALL
   SELECT prs_perslid_key_beh, ins_deel_key
     FROM ins_v_aanwezigdeel d
   UNION ALL
   SELECT rr.res_rsv_ruimte_host_key, r.res_reservering_key
     FROM res_v_aanwezigreservering r, res_v_aanwezigrsv_ruimte rr
    WHERE r.res_reservering_key = rr.res_reservering_key
      AND rr.res_status_bo_key IN (4, 3, 2)
      AND res_rsv_ruimte_tot > SYSDATE-14 -- na 14 dagen niet meer klagen
   UNION ALL
   SELECT rr.res_rsv_ruimte_host_key, r.res_reservering_key
     FROM res_v_aanwezigreservering r, res_v_aanwezigrsv_deel rd, res_rsv_ruimte rr
    WHERE r.res_reservering_key = rr.res_reservering_key
      AND rr.res_rsv_ruimte_key = rd.res_rsv_ruimte_key
      AND rd.res_status_bo_key IN (4, 3, 2)
      AND res_rsv_ruimte_tot > SYSDATE-14
   UNION ALL
   SELECT rr.res_rsv_ruimte_host_key, r.res_reservering_key
     FROM res_v_aanwezigreservering r, res_v_aanwezigrsv_artikel ra, res_rsv_ruimte rr
    WHERE r.res_reservering_key = rr.res_reservering_key
      AND rr.res_rsv_ruimte_key = ra.res_rsv_ruimte_key
      AND ra.res_status_bo_key IN (4, 3, 2)
      AND res_rsv_ruimte_tot > SYSDATE-14
   UNION ALL
   SELECT rr.res_rsv_ruimte_contact_key, r.res_reservering_key
     FROM res_v_aanwezigreservering r, res_v_aanwezigrsv_ruimte rr, res_ruimte_opstelling ro
    WHERE r.res_reservering_key = rr.res_reservering_key
      AND rr.res_ruimte_opstel_key = ro.res_ruimte_opstel_key
      AND rr.res_status_bo_key IN (4, 3, 2)
      AND res_rsv_ruimte_tot > SYSDATE-14
   UNION ALL
   SELECT rr.res_rsv_ruimte_contact_key, r.res_reservering_key
     FROM res_v_aanwezigreservering r, res_v_aanwezigrsv_deel rd, res_rsv_ruimte rr
    WHERE r.res_reservering_key = rr.res_reservering_key
      AND rr.res_rsv_ruimte_key = rd.res_rsv_ruimte_key
      AND rd.res_status_bo_key IN (4, 3, 2)
      AND res_rsv_ruimte_tot > SYSDATE-14
   UNION ALL
   SELECT rr.res_rsv_ruimte_contact_key, r.res_reservering_key
     FROM res_v_aanwezigreservering r, res_v_aanwezigrsv_artikel ra, res_rsv_ruimte rr
    WHERE r.res_reservering_key = rr.res_reservering_key
      AND rr.res_rsv_ruimte_key = ra.res_rsv_ruimte_key
      AND ra.res_status_bo_key IN (4, 3, 2)
      AND res_rsv_ruimte_tot > SYSDATE-14
      AND rr.alg_ruimte_key IS NOT NULL
   UNION ALL
   SELECT a.bez_afspraak_host_key, a.bez_afspraak_key
     FROM bez_afspraak a
    WHERE a.bez_afspraak_datum > SYSDATE
   UNION ALL
   SELECT a.bez_afspraak_contact_key, a.bez_afspraak_key
     FROM bez_afspraak a
    WHERE a.bez_afspraak_datum > SYSDATE
   UNION ALL
   SELECT k.prs_perslid_key, k.prs_kostenplaats_key
     FROM prs_kostenplaats k
    WHERE prs_kostenplaats_verwijder IS NULL
      AND k.prs_perslid_key IS NOT NULL
      AND prs_kostenplaats_eind > SYSDATE
   UNION ALL
   SELECT k.prs_perslid_key, k.prs_kostenplaatsgrp_key
     FROM prs_kostenplaatsgrp k
    WHERE k.prs_perslid_key IS NOT NULL
   UNION ALL
   SELECT k.prs_kostenplaatsgrp_fiat2_key, k.prs_kostenplaatsgrp_key
     FROM prs_kostenplaatsgrp k
    WHERE k.prs_kostenplaatsgrp_fiat2_key IS NOT NULL
   UNION ALL
   SELECT k.prs_kostenplaatsgrp_fiat3_key, k.prs_kostenplaatsgrp_key
     FROM prs_kostenplaatsgrp k
    WHERE k.prs_kostenplaatsgrp_fiat3_key IS NOT NULL
   UNION ALL
   SELECT c.prs_perslid_key_beh, cnt_contract_key
     FROM cnt_contract c
    WHERE cnt_contract_verwijder IS NULL
      AND cnt_contract_status = 0 /* actief */
      AND cnt_contract_looptijd_tot > SYSDATE
   UNION ALL
   SELECT c.cnt_prs_perslid_key, cnt_contract_key
     FROM cnt_contract c
    WHERE cnt_contract_verwijder IS NULL
      AND cnt_contract_status = 0 /* actief */
      AND cnt_contract_looptijd_tot > SYSDATE;

-- Aantal echte werkplekken van een persoon
CREATE_VIEW(PRS_V_AANTALWP,0)
(PRS_PERSLID_KEY, AANTALWP)
AS
SELECT   pww2.prs_perslid_key, count (1)
    FROM prs_werkplek pw2,
         prs_perslidwerkplek pww2
   WHERE pw2.prs_werkplek_key = pww2.prs_werkplek_key
     AND pw2.prs_werkplek_virtueel = 0
GROUP BY pww2.prs_perslid_key;

-- Genormaliseerd dienstverband in een ruimte (dienstverband / aantal werkplekken)
CREATE_VIEW(prs_v_norm_verband, 0)
AS
   SELECT prs_w.prs_alg_ruimte_key alg_ruimte_key, prs_p.prs_perslid_key, pp2.aantalwp,
            TRUNC (10 * prs_perslid_dienstverband / pp2.aantalwp)
          / 10 norm_verband
     FROM prs_werkplek prs_w,
          prs_perslidwerkplek prs_pw,
          prs_perslid prs_p,
          prs_v_aantalwp pp2
    WHERE prs_w.prs_werkplek_key = prs_pw.prs_werkplek_key
      AND prs_pw.prs_perslid_key IS NOT NULL
      AND prs_pw.prs_perslid_key = prs_p.prs_perslid_key
      AND prs_w.prs_werkplek_virtueel = 0
      AND prs_p.prs_perslid_key = pp2.prs_perslid_key;

CREATE_VIEW(prs_v_qvw_bedrijf, 0)
AS
SELECT prs_bedrijf_key,
       prs_bedrijf_naam,
       prs_bedrijf_naam_upper,
       prs_bedrijf_post_adres,
       prs_bedrijf_post_postcode,
       prs_bedrijf_post_plaats,
       prs_bedrijf_post_land,
       prs_bedrijf_bezoek_adres,
       prs_bedrijf_bezoek_postcode,
       prs_bedrijf_bezoek_plaats,
       prs_bedrijf_bezoek_land,
       prs_bedrijf_telefoon,
       prs_bedrijf_fax,
       prs_bedrijf_telefoon2,
       prs_bedrijf_contact_persoon,
       prs_bedrijf_contact_telefoon,
       prs_bedrijf_contact_fax,
       prs_bedrijf_opmerking,
       prs_bedrijf_opmerking2,
       prs_bedrijf_uurloon,
       prs_leverancier_nr,
       prs_overeenkomst_nr,
       prs_overeenkomst_datum,
       prs_bedrijf_aanmaak,
       prs_bedrijf_verwijder,
       prs_bedrijf_leverancier,
       prs_bedrijf_uitvoerende,
       prs_bedrijf_contract,
       prs_bedrijf_intern,
       prs_bedrijf_huurder,
       prs_bedrijf_email,
       prs_bedrijf_ingids
  FROM prs_bedrijf
 WHERE prs_bedrijf.prs_bedrijf_verwijder IS NULL;


-- Per ruimte hoeveel flexplekken vrij en bezet
-- verdieping is wel handig in deze view, voor totaaloverzichten op gebouwniveau
CREATE_VIEW(prs_v_flexplekken, 0)
(
   alg_ruimte_key,
   vrij,
   bezet,
   alg_verdieping_key
)
AS
     SELECT   alg_ruimte_key, SUM (vrij) vrij, SUM (bezet) bezet, alg_verdieping_key
       FROM   (  SELECT   wp.prs_alg_ruimte_key alg_ruimte_key,
                          COUNT (wp.prs_werkplek_key) vrij,
                          0 bezet,
                          r.alg_verdieping_key
                   FROM   prs_werkplek wp, prs_perslidwerkplek pwp, alg_ruimte r
                  WHERE       wp.prs_werkplek_virtueel = 0
                          AND wp.prs_werkplek_type = 1
                          AND wp.prs_alg_ruimte_key = r.alg_ruimte_key
                          AND pwp.prs_werkplek_key(+) = wp.prs_werkplek_key
                          AND pwp.prs_perslid_key IS NULL
               GROUP BY   wp.prs_alg_ruimte_key, r.alg_verdieping_key
               UNION ALL
                 SELECT   wp.prs_alg_ruimte_key alg_ruimte_key,
                          0 vrij,
                          COUNT (wp.prs_werkplek_key) bezet,
                          r.alg_verdieping_key
                   FROM   prs_werkplek wp, prs_perslidwerkplek pwp, alg_ruimte r
                  WHERE       wp.prs_werkplek_virtueel = 0
                          AND wp.prs_werkplek_type = 1
                          AND wp.prs_alg_ruimte_key = r.alg_ruimte_key
                          AND pwp.prs_werkplek_key = wp.prs_werkplek_key
                          AND pwp.prs_perslid_key IS NOT NULL
               GROUP BY   wp.prs_alg_ruimte_key, r.alg_verdieping_key)
   GROUP BY   alg_ruimte_key, alg_verdieping_key;

-- Vooralsnog placeholder, moet aangepast worden
CREATE_VIEW(prs_v_api_afdelingen, 1) AS SELECT * from prs_v_aanwezigafdeling;
CREATE_VIEW(prs_v_api_personen, 1) AS SELECT * from prs_v_aanwezigperslid;

/* ROOT VIEWS for User defined Reports (UDR) */
CREATE_VIEW(prs_v_udr_bedrijf, 0)
(
   key,
   naam,
   postadres,
   postpostcode,
   postplaats,
   postland,
   adres,
   postcode,
   plaats,
   land,
   telefoon1,
   telefoon2,
   contactpersoon,
   contacttelefoon,
   opmerking1,
   opmerking2,
   uurloon,
   leveranciernr,
   overeenkomstnr,
   overeenkomstdatum,
   relatietype,
   registratiedatum,
   isleverancier,
   isuitvoerende,
   iscontract,
   ishuurder,
   isintern,
   email,
   dienst,
   locatie,
   gebouw,
   district,
   regio,
   fclt_3d_locatie_key
)
AS
   SELECT b.prs_bedrijf_key key,
          prs_bedrijf_naam naam,
          prs_bedrijf_post_adres postadres,
          prs_bedrijf_post_postcode postpostcode,
          prs_bedrijf_post_plaats postplaats,
          prs_bedrijf_post_land postland,
          prs_bedrijf_bezoek_adres adres,
          prs_bedrijf_bezoek_postcode postcode,
          prs_bedrijf_bezoek_plaats plaats,
          prs_bedrijf_bezoek_land land,
          prs_bedrijf_telefoon telefoon1,
          prs_bedrijf_telefoon2 telefoon2,
          prs_bedrijf_contact_persoon contactpersoon,
          prs_bedrijf_contact_telefoon contacttelefoon,
          prs_bedrijf_opmerking opmerking1,
          prs_bedrijf_opmerking2 opmerking2,
          prs_bedrijf_uurloon uurloon,
          prs_leverancier_nr leveranciernr,
          prs_overeenkomst_nr overeenkomstnr,
          prs_overeenkomst_datum overeenkomstdatum,
          lcl.x ('prs_relatietype_omschrijving',
                 r.prs_relatietype_key,
                 r.prs_relatietype_omschrijving)
             relatietype,
          prs_bedrijf_aanmaak registratiedatum,
          DECODE (prs_bedrijf_leverancier, 1, lcl.l ('lcl_yes'), lcl.l ('lcl_no')) isleverancier,
          DECODE (prs_bedrijf_uitvoerende, 1, lcl.l ('lcl_yes'), lcl.l ('lcl_no')) isuitvoerende,
          DECODE (prs_bedrijf_contract, 1, lcl.l ('lcl_yes'), lcl.l ('lcl_no')) iscontract,
          DECODE (prs_bedrijf_huurder, 1, lcl.l ('lcl_yes'), lcl.l ('lcl_no')) ishuurder,
          DECODE (prs_bedrijf_intern, 1, lcl.l ('lcl_yes'), lcl.l ('lcl_no')) isintern,
          prs_bedrijf_email email,
          lcl.x ('prs_dienst_omschrijving', d.prs_dienst_key, d.prs_dienst_omschrijving) dienst,
          l.alg_locatie_omschrijving locatie,
          lcl.l ('lcl_all') gebouw,
          lcl.l ('lcl_all') district,
          lcl.l ('lcl_all') regio,
          bdl.alg_locatie_key fclt_3d_locatie_key
     FROM prs_bedrijf b,
          prs_bedrijfdienstlocatie bdl,
          prs_dienst d,
          prs_relatietype r,
          alg_locatie l
    WHERE     prs_bedrijf_verwijder IS NULL
          AND b.prs_bedrijf_key = bdl.prs_bedrijf_key(+)
          AND d.prs_dienst_key(+) = bdl.prs_dienst_key
          AND b.prs_relatietype_key = r.prs_relatietype_key(+)
          AND l.alg_locatie_key = bdl.alg_locatie_key
   UNION
   SELECT b.prs_bedrijf_key key,
          prs_bedrijf_naam naam,
          prs_bedrijf_post_adres postadres,
          prs_bedrijf_post_postcode postpostcode,
          prs_bedrijf_post_plaats postplaats,
          prs_bedrijf_post_land postland,
          prs_bedrijf_bezoek_adres adres,
          prs_bedrijf_bezoek_postcode postcode,
          prs_bedrijf_bezoek_plaats plaats,
          prs_bedrijf_bezoek_land land,
          prs_bedrijf_telefoon telefoon1,
          prs_bedrijf_telefoon2 telefoon2,
          prs_bedrijf_contact_persoon contactpersoon,
          prs_bedrijf_contact_telefoon contacttelefoon,
          prs_bedrijf_opmerking opmerking1,
          prs_bedrijf_opmerking2 opmerking2,
          prs_bedrijf_uurloon uurloon,
          prs_leverancier_nr leveranciernr,
          prs_overeenkomst_nr overeenkomstnr,
          prs_overeenkomst_datum overeenkomstdatum,
          lcl.x ('prs_relatietype_omschrijving',
                 r.prs_relatietype_key,
                 r.prs_relatietype_omschrijving)
             relatietype,
          prs_bedrijf_aanmaak registratiedatum,
          DECODE (prs_bedrijf_leverancier, 1, lcl.l ('lcl_yes'), lcl.l ('lcl_no')) isleverancier,
          DECODE (prs_bedrijf_uitvoerende, 1, lcl.l ('lcl_yes'), lcl.l ('lcl_no')) isuitvoerende,
          DECODE (prs_bedrijf_contract, 1, lcl.l ('lcl_yes'), lcl.l ('lcl_no')) iscontract,
          DECODE (prs_bedrijf_huurder, 1, lcl.l ('lcl_yes'), lcl.l ('lcl_no')) ishuurder,
          DECODE (prs_bedrijf_intern, 1, lcl.l ('lcl_yes'), lcl.l ('lcl_no')) isintern,
          prs_bedrijf_email email,
          lcl.x ('prs_dienst_omschrijving', d.prs_dienst_key, d.prs_dienst_omschrijving) dienst,
          l.alg_locatie_omschrijving locatie,
          g.alg_gebouw_omschrijving gebouw,
          ad.alg_district_omschrijving district,
          ar.alg_regio_omschrijving regio,
          bdl.alg_locatie_key fclt_3d_locatie_key
     FROM prs_bedrijf b,
          prs_bedrijfdienstlocatie bdl,
          prs_dienst d,
          prs_relatietype r,
          alg_locatie l,
          alg_gebouw g,
          alg_regio ar,
          alg_district ad
    WHERE     prs_bedrijf_verwijder IS NULL
          AND b.prs_bedrijf_key = bdl.prs_bedrijf_key(+)
          AND d.prs_dienst_key(+) = bdl.prs_dienst_key
          AND b.prs_relatietype_key = r.prs_relatietype_key(+)
          AND g.alg_locatie_key = l.alg_locatie_key
          AND g.alg_gebouw_key = bdl.alg_gebouw_key
          AND l.alg_district_key = ad.alg_district_key
          AND ad.alg_regio_key = ar.alg_regio_key
   UNION
   SELECT b.prs_bedrijf_key key,
          prs_bedrijf_naam naam,
          prs_bedrijf_post_adres postadres,
          prs_bedrijf_post_postcode postpostcode,
          prs_bedrijf_post_plaats postplaats,
          prs_bedrijf_post_land postland,
          prs_bedrijf_bezoek_adres adres,
          prs_bedrijf_bezoek_postcode postcode,
          prs_bedrijf_bezoek_plaats plaats,
          prs_bedrijf_bezoek_land land,
          prs_bedrijf_telefoon telefoon1,
          prs_bedrijf_telefoon2 telefoon2,
          prs_bedrijf_contact_persoon contactpersoon,
          prs_bedrijf_contact_telefoon contacttelefoon,
          prs_bedrijf_opmerking opmerking1,
          prs_bedrijf_opmerking2 opmerking2,
          prs_bedrijf_uurloon uurloon,
          prs_leverancier_nr leveranciernr,
          prs_overeenkomst_nr overeenkomstnr,
          prs_overeenkomst_datum overeenkomstdatum,
          lcl.x ('prs_relatietype_omschrijving',
                 r.prs_relatietype_key,
                 r.prs_relatietype_omschrijving)
             relatietype,
          prs_bedrijf_aanmaak registratiedatum,
          DECODE (prs_bedrijf_leverancier, 1, lcl.l ('lcl_yes'), lcl.l ('lcl_no')) isleverancier,
          DECODE (prs_bedrijf_uitvoerende, 1, lcl.l ('lcl_yes'), lcl.l ('lcl_no')) isuitvoerende,
          DECODE (prs_bedrijf_contract, 1, lcl.l ('lcl_yes'), lcl.l ('lcl_no')) iscontract,
          DECODE (prs_bedrijf_huurder, 1, lcl.l ('lcl_yes'), lcl.l ('lcl_no')) ishuurder,
          DECODE (prs_bedrijf_intern, 1, lcl.l ('lcl_yes'), lcl.l ('lcl_no')) isintern,
          prs_bedrijf_email email,
          lcl.x ('prs_dienst_omschrijving', d.prs_dienst_key, d.prs_dienst_omschrijving) dienst,
          lcl.l ('lcl_all') locatie,
          lcl.l ('lcl_all') gebouw,
          lcl.l ('lcl_all') district,
          lcl.l ('lcl_all') regio,
          NULL fclt_3d_locatie_key
     FROM prs_bedrijf b,
          prs_bedrijfdienstlocatie bdl,
          prs_dienst d,
          prs_relatietype r
    WHERE     prs_bedrijf_verwijder IS NULL
          AND b.prs_bedrijf_key = bdl.prs_bedrijf_key(+)
          AND d.prs_dienst_key(+) = bdl.prs_dienst_key
          AND b.prs_relatietype_key = r.prs_relatietype_key(+)
          AND bdl.alg_gebouw_key IS NULL
          AND bdl.alg_locatie_key IS NULL;

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