-- Script containing customer specific configuration sql statements for Driessen Groep
-- $Revision$
-- $Id$

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

SET ECHO ON
SET DEFINE ON
COLUMN fcltlogfile NEW_VALUE fcltlogfile NOPRINT;
COLUMN fcltcusttxt NEW_VALUE fcltcusttxt NOPRINT;
WHENEVER SQLERROR CONTINUE;
SELECT adm.getscriptspoolfile('&thisfile') AS fcltlogfile FROM DUAL;
SPOOL &fcltlogfile
WHENEVER SQLERROR EXIT;
SELECT adm.checkscriptcust('&dbuser') AS fcltcusttxt FROM DUAL;
WHENEVER SQLERROR CONTINUE;
---------------------------------------
PROMPT &fcltcusttxt
---------------------------------------
SET DEFINE OFF

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

CREATE OR REPLACE VIEW drie_v_rap_td_looplijst
(
   hide_f_srt,
   soort,
   nr,
   fclt_f_gebouw,
   datum,
   begintijd,
   eindtijd,
   fclt_f_ruimte,
   opstelling,
   aantal,
   omschrijving,
   soortkey
)
AS
   SELECT DISTINCT
             TO_CHAR (rr.res_rsv_ruimte_van, 'yyyy-mm-dd')
          || rg.alg_gebouw_upper
          || TO_CHAR (rr.res_rsv_ruimte_van, 'hh24:mi')
             hide_f_srt,
          'Reservering',
          rr.res_reservering_key || '/' || rr.res_rsv_ruimte_volgnr nr,
          rg.alg_gebouw_omschrijving fclt_f_gebouw,
          rr.res_rsv_ruimte_van datum,
          TO_CHAR (rr.res_rsv_ruimte_van, 'hh24:mi') begintijd,
          TO_CHAR (rr.res_rsv_ruimte_tot, 'hh24:mi') eindtijd,
          r.res_ruimte_nr fclt_f_ruimte,
          o.res_opstelling_omschrijving opstelling,
          rr.res_rsv_ruimte_bezoekers aantal,
          rr.res_rsv_ruimte_omschrijving omschrijving,
          rr.res_rsv_ruimte_key
     FROM res_rsv_ruimte rr,
          res_ruimte_opstelling ro,
          res_opstelling o,
          res_ruimte r,
          res_alg_ruimte ar,
          alg_v_ruimte_gegevens rg
    WHERE     rr.res_rsv_ruimte_verwijder IS NULL
          AND ro.res_ruimte_opstel_key = rr.res_ruimte_opstel_key
          AND o.res_opstelling_key = ro.res_opstelling_key
          AND r.res_ruimte_key = ro.res_ruimte_key
          AND ar.res_ruimte_key = r.res_ruimte_key
          AND ar.res_alg_ruimte_verwijder IS NULL
          AND rg.alg_ruimte_key = ar.alg_ruimte_key
          AND rr.res_status_bo_key NOT IN (5, 6)
   UNION ALL
   SELECT DISTINCT
             TO_CHAR (m.mld_melding_datum, 'yyyy-mm-dd')
          || UPPER (rg.alg_gebouw_code)
          || TO_CHAR (m.mld_melding_datum, 'hh24:mi')
             hide_f_srt,
          'Melding',
          TO_CHAR (m.mld_melding_key),
          alg_g.alg_gebouw_omschrijving,
          m.mld_melding_datum,
          TO_CHAR (m.mld_melding_datum, 'hh24:mi'),
          NULL,
          rg.alg_ruimte_omschrijving,
          NULL,
          NULL,
          TO_CHAR(SUBSTR(m.mld_melding_omschrijving,1,4000)),
          m.mld_melding_key
     FROM mld_melding m,
          mld_stdmelding sm,
          mld_disc_params vgp,
          alg_v_allonrgoed_gegevens rg,
          alg_gebouw alg_g
    WHERE     rg.alg_onroerendgoed_keys = m.mld_alg_onroerendgoed_keys
          AND m.mld_stdmelding_key = sm.mld_stdmelding_key
          AND sm.mld_ins_discipline_key = vgp.mld_ins_discipline_key
          AND vgp.mld_behandelgroep_key = 4                --Technische dienst
          AND alg_g.alg_gebouw_key = rg.alg_gebouw_key
          AND m.mld_melding_status IN (0, 2, 3, 4, 7);

CREATE OR REPLACE PROCEDURE drie_import_perslid (p_import_key IN NUMBER)
AS
   oracle_err_num   NUMBER;
   oracle_err_mes   VARCHAR2 (200);
   v_errormsg       VARCHAR2 (400);
   v_errorhint      VARCHAR2 (400);
BEGIN
   v_errorhint := 'Generieke import';
   -- de sequence array staat beschreven in PRS_PAC.SRC bij de prs.import_perslid proc
   prs.import_perslid (
      p_import_key,
         '0;0;0;0;0;0;6;2;0;0;'
      || '0;0;0;0;17;0;0;3;0;1;'
      || '10;22;0;0;0;0;5;4;7;8;'
      || '9;13;18;19;14;15;16;20;12;11;'
      || '0;0;0;0;0;0',
      '"Mdw.";"Medewerker";"Mail_werk";"Loc";"Locatie";"OE";"Organisatorische_eenheid";"Kostenplaats";"Funct";"Functie";"Roepnaam";"Voorvoegsel";"Geboortenaam";"Naamgebruik_code";"Voorvoegsel_partner";"Geb.naam_partner";"Geslacht";"Begindatum_contract";"Einddatum_contract";"UPN";"Login"');

   -- Hier al login vullen, omdat deze anders wordt leeggemaakt en de sessie daarmee ook. Wanneer sessies leeg worden gemaakt, moet men met Mobile steeds opnieuw inloggen (57793)
   UPDATE fac_imp_perslid
      SET prs_perslid_oslogin =
             SUBSTR (prs_perslid_email,
                     1,
                     INSTR (prs_perslid_email, '@') - 1);

   v_errorhint := 'Klantspecifieke aanpassingen import';
   -- Klantspecifieke aanpassingen
   drie_post_import_perslid (p_import_key);

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


CREATE OR REPLACE PROCEDURE drie_post_import_perslid(
    p_import_key IN NUMBER
) AS

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

CURSOR cafd
IS 
SELECT i.prs_afdeling_naam, i.prs_kenmerk3
   FROM fac_imp_perslid i
   WHERE i.prs_afdeling_naam NOT IN
    (SELECT a.prs_afdeling_naam FROM prs_afdeling a WHERE a.prs_afdeling_naam = i.prs_afdeling_naam)
    GROUP BY (i.prs_afdeling_naam, i.prs_kenmerk3);

BEGIN

v_errorhint := 'Toevoegen afdelingen';
  FOR rec IN cafd
  LOOP
     BEGIN
       INSERT INTO prs_afdeling
            (prs_bedrijf_key,
            prs_afdeling_naam,
            prs_afdeling_upper,
            prs_afdeling_omschrijving)
       VALUES
            (2,
            rec.prs_afdeling_naam,
            UPPER(rec.prs_afdeling_naam),
            rec.prs_kenmerk3);
     END;
  END LOOP;
COMMIT;

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

CREATE OR REPLACE PROCEDURE drie_update_perslid (
   p_import_key IN NUMBER
) IS

   oracle_err_num            NUMBER;
   oracle_err_mes            VARCHAR2 (200);
   v_errormsg                VARCHAR2 (400);
   v_errorhint               VARCHAR2 (400);
   v_count           NUMBER;
   c_persoon_inactief       VARCHAR2 (30)   := 'INACTIEF: ';   
   -- Maximaal percentage aan nieuwe medewerkers tov. actieve medewerkers met een nummer
   c_max_delta_percentage   NUMBER (10)     := 1000;
   v_count_prs_actual       NUMBER (10);
   v_count_prs_import       NUMBER (10);          -- Matching actual persons!

BEGIN

    v_errorhint := 'Fout bij bepalen geldig bestand obv aantallen';
   
   SELECT DECODE (COUNT (*), 0, 1, COUNT (*))
     INTO v_count_prs_actual
     FROM prs_perslid
    WHERE prs_perslid_verwijder IS NULL AND prs_perslid_oslogin IS NOT NULL;

   SELECT DECODE (COUNT (*), 0, 1, COUNT (*))
     INTO v_count_prs_import
     FROM prs_perslid p, fac_imp_perslid ip
    WHERE p.prs_perslid_oslogin IS NOT NULL
      AND p.prs_perslid_verwijder IS NULL
      AND p.prs_perslid_oslogin = ip.prs_perslid_oslogin;

   IF (   (TRUNC ((v_count_prs_import / v_count_prs_actual) * 100) >=
                                               (100 - c_max_delta_percentage
                                               )
          )
      )
   THEN
      -- Geldig importbestand wat betreft aantal personen
       v_errorhint := 'Updaten personen';

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

      COMMIT;

--      -- Klantspecifieke aanpassingen
      v_errorhint := 'Klantspecifieke aanpassingen update';
      drie_post_update_perslid(p_import_key);
      
      COMMIT;
      
   END IF;

END drie_update_perslid;
/

CREATE OR REPLACE PROCEDURE drie_post_update_perslid (p_import_key IN NUMBER)
IS
   oracle_err_num        NUMBER;
   oracle_err_mes        VARCHAR2 (200);
   v_errormsg            VARCHAR2 (400);
   v_errorhint           VARCHAR2 (400);
   c_key_default_rol     NUMBER (10) := 1;
   v_aanduiding          VARCHAR2 (200);
   v_groep_defaultnaam   VARCHAR2 (30);
   p_prs_key             VARCHAR2 (200);
   p_ruimte_key          VARCHAR2 (200);


   -- Alle personen in de import moeten inlognaam krijgen en extern id tbv inloggen (via SAML)
   -- Login naam niet meer ivm 57793
   CURSOR clogin
   IS
      SELECT i.prs_perslid_naam,
             i.prs_perslid_email,
             i.prs_perslid_key,
             i.prs_kenmerk12
        FROM fac_imp_perslid i
       WHERE i.prs_perslid_email IS NOT NULL;

   -- Alle aanwezige personen met personeelsnummer (ie. de import-doelgroep) niet in een groep
   CURSOR cnogroup
   IS
      SELECT p.prs_perslid_key,
             p.prs_perslid_oslogin,
             p.prs_perslid_naam,
             p.prs_perslid_voornaam
        FROM prs_v_aanwezigperslid p
       WHERE p.prs_perslid_oslogin IS NOT NULL
             AND NOT EXISTS (SELECT 1
                               FROM fac_gebruikersgroep g
                              WHERE g.prs_perslid_key = p.prs_perslid_key);
-- Alle personen in de import moeten een werkplek krijgen.
--BESLUIT 4-2-2019: Werkplekken hoeven toch niet aangemaakt te worden!
--    CURSOR cwp
--    IS
--        SELECT i.prs_perslid_key,
--        i.prs_perslid_email,
--        i.prs_perslid_nr,
--        i.prs_perslid_naam,
--        i.prs_perslid_oslogin,
--        i.prs_kenmerk2,
--        (SELECT MAX(r.alg_ruimte_key)
--            FROM alg_ruimte r, alg_verdieping v, alg_gebouw g, alg_locatie l
--            WHERE UPPER (l.alg_locatie_code) = UPPER (i.prs_kenmerk2)
--            AND l.alg_locatie_key = g.alg_locatie_key
--            AND g.alg_gebouw_key = v.alg_gebouw_key
--            AND v.alg_verdieping_key = r.alg_verdieping_key
--            AND r.alg_ruimte_verwijder IS NULL
--            AND UPPER (r.alg_ruimte_nr) = '_0') AS p_ruimte_key
--        FROM fac_imp_perslid i;

BEGIN
   -- Login naam: emailadres; Extern ID: imp_kenmerk12 = UPN (dat wordt meegegeven voor uniek attribuut tbv SAML)
   -- Login naam niet meer ivm 57793
   FOR rec IN clogin
   LOOP
      BEGIN
         v_aanduiding := rec.prs_perslid_naam;
         v_errorhint := 'Externid updaten tbv login - ' || rec.prs_perslid_naam;

         UPDATE prs_perslid p
            SET p.prs_perslid_externid = rec.prs_kenmerk12
          WHERE rec.prs_perslid_key = p.prs_perslid_key
                AND p.prs_perslid_verwijder IS NULL;

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

   COMMIT;

   -- Iedereen verwijderen die niet meer voorkomt (obv pers.nr)
   UPDATE prs_perslid
      SET prs_perslid_verwijder = SYSDATE
    WHERE prs_perslid_nr NOT IN (SELECT prs_perslid_nr FROM fac_imp_perslid)
          AND (SUBSTR (prs_perslid_oslogin, 1, 1) <> '_');

   -- Iedereen krijgt _default-rol die nog geen groep heeft.
   v_errorhint := 'Toevoegen default gebruikersprofiel';

   FOR recnogroup IN cnogroup
   LOOP
      BEGIN
         v_aanduiding :=
               recnogroup.prs_perslid_oslogin
            || '|'
            || recnogroup.prs_perslid_naam
            || '|'
            || recnogroup.prs_perslid_voornaam
            || ' - ';
         v_errorhint :=
            'Fout bij bepalen groep met key [' || c_key_default_rol || ']';

         SELECT fac_groep_upper
           INTO v_groep_defaultnaam
           FROM fac_groep
          WHERE fac_groep_key = c_key_default_rol;

         v_errorhint :=
               'Fout bij koppelen ' || recnogroup.prs_perslid_naam || ' aan groep met key ['
            || c_key_default_rol
            || ']';

         INSERT INTO fac_gebruikersgroep (fac_groep_key, prs_perslid_key)
             VALUES (c_key_default_rol, recnogroup.prs_perslid_key);

         COMMIT;
      EXCEPTION
         WHEN OTHERS
         THEN
            oracle_err_num := SQLCODE;
            oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
            v_errormsg :=
                  'OTHERS (error '
               || oracle_err_num
               || '/'
               || oracle_err_mes
               || ')';
            fac.imp_writelog (p_import_key,
                              'E',
                              v_errormsg,
                              v_errorhint);
            COMMIT;
      END;
   END LOOP;
-- Verhuist een persoon p_prs_key naar een werkplek in p_ruimte_key
-- Als er al vaste werkplekken waren binnen het niveau van p_alg_type (R,V,G,L,D,NULL,A)
-- dan worden die geleegd/gewist. Bij NULL wordt niks gewist, bij A wordt altijd gewist.
--BESLUIT 4-2-2019: Werkplekken hoeven toch niet aangemaakt te worden!
--      FOR recwp IN cwp
--      LOOP
--         BEGIN
--            PRS.movetoruimte (recwp.prs_perslid_key, recwp.p_ruimte_key, 'R', 0);
--         END;
--      END LOOP;


-- Iedereen mandateren voor alle kostenplaatsen
   INSERT INTO prs_perslidkostenplaats (prs_perslid_key,
                                        prs_kostenplaats_key,
                                        prs_perslidkostenplaats_boeken,
                                        prs_perslidkostenplaats_inzage)
      SELECT p.prs_perslid_key,
             NULL,
             1,
             0
        FROM prs_v_aanwezigperslid p
       WHERE NOT EXISTS (SELECT 1
                           FROM prs_perslidkostenplaats
                          WHERE prs_perslid_key = p.prs_perslid_key);
END drie_post_update_perslid;
/

CREATE OR REPLACE VIEW drie_v_noti_reschange
(
   code,
   sender,
   receiver,
   text,
   key,
   xkey
)
AS
     SELECT 'CUST01',
            NULL,
            2841,                        --Persoon '_NotificatieReserveringen'
            (   rrg.res_omschrijving
             || ' - '
             || TO_CHAR (rrg.datum, 'DD/MM/YYYY')
             || ' - '
             || 'reservering is aangepast'),
            rrr.res_reservering_key,
            rrg.key
       FROM res_v_udr_reservering rrg,
            res_rsv_ruimte rrr,
            res_activiteit rra,
            fac_tracking t,
            fac_srtnotificatie sn
      WHERE     rrg.activiteit = rra.res_activiteit_omschrijving
            AND rra.res_activiteit_verwijder IS NULL
            AND t.fac_tracking_refkey = rrg.key
            AND rrr.res_rsv_ruimte_key = rrg.key
            AND t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
            AND sn.fac_srtnotificatie_key = 102                       --RESUPD
            AND rra.res_activiteit_key = 30           --Activiteit Evenementen
            AND TRUNC (rrg.van) - 90 <= TRUNC (SYSDATE) -- Samen met res_activiteit_key 30 even ingesteld vanwege #63966
            --            AND TRUNC (rrg.van) - rra.res_activiteit_posttime <=
            --                  TRUNC (SYSDATE)
            AND rra.res_activiteit_posttime <> 0
            AND TRUNC (rrg.van) > TRUNC (SYSDATE)
            AND t.fac_tracking_datum BETWEEN (SELECT fac_notificatie_job_nextrun
                                                     - fac_notificatie_job_interval
                                                       / 24
                                                FROM fac_notificatie_job
                                               WHERE fac_notificatie_job_view =
                                                        'DRIE_V_NOTI_RESCHANGE')
                                         AND  (SELECT fac_notificatie_job_nextrun
                                                 FROM fac_notificatie_job
                                                WHERE fac_notificatie_job_view =
                                                         'DRIE_V_NOTI_RESCHANGE')
   GROUP BY rrg.key,
            rrg.res_omschrijving,
            rrg.datum,
            rrr.res_reservering_key;
			
CREATE OR REPLACE VIEW drie_v_rap_sle_toegang
(
   [REDACTED],
   fclt_f_bezitter,
   fclt_f_sleutelset_code,
   fclt_f_sleutelset_oms,
   sleutel,
   fclt_x_locatie,
   fclt_f_plaats,
   type,
   binnenbuiten
)
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,
          (SELECT DISTINCT ins_kenmerkdeel_waarde
             FROM ins_kenmerkdeel
            WHERE     ins_deel_key = cil.ins_deel_key
                  AND ins_kenmerk_key = 1
                  AND ins_kenmerkdeel_verwijder IS NULL)
             AS type,
          (SELECT DISTINCT ins_kenmerkdeel_waarde
             FROM ins_kenmerkdeel
            WHERE     ins_deel_key = cil.ins_deel_key
                  AND ins_kenmerk_key = 2
                  AND ins_kenmerkdeel_verwijder IS NULL)
             AS binnenbuiten
     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_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 OR REPLACE VIEW DRIE_V_RAP_CATERING
(
    RES_RESERVERING_KEY,
    RES_RSV_RUIMTE_VOLGNR,
    RES_RESERVERING,
    RES_RSV_RUIMTE_KEY,
    RES_RUIMTE_KEY,
    RES_RUIMTE_NR,
    ALG_LOCATIE_CODE,
    ALG_LOCATIE_OMSCHRIJVING,
    ALG_GEBOUW_CODE,
    ALG_GEBOUW_NAAM,
    ALG_VERDIEPING_VOLGNR,
    ALG_VERDIEPING_OMSCHRIJVING,
    ALG_RUIMTE_NR,
    ALG_RUIMTE_OMSCHRIJVING,
    RES_OPSTELLING_KEY,
    RES_OPSTELLING_OMSCHRIJVING,
    RES_RSV_RUIMTE_VAN,
    RES_RSV_RUIMTE_OMSCHRIJVING,
    RES_RSV_RUIMTE_OPMERKING,
    RES_RSV_RUIMTE_BEZOEKERS,
    RES_STATUS_FO_KEY,
    RES_STATUS_BO_KEY,
    RES_RSV_ARTIKEL_LEVERING,
    DATUM,
    VAN,
    TOT,
    AANTAL,
    RES_ARTIKEL_KEY,
    ARTIKELNR,
    ARTIKELOMS,
    INS_DISCIPLINE_KEY,
    CATALOGUS,
    RES_RSV_ARTIKEL_PRIJS,
    RES_ARTIKEL_PRIJS,
    EENHEIDSPRIJS,
    TOTAALPRIJS,
    CONTACT_NAAM,
    CONTACT_TUSSENVOEGSEL,
    CONTACT_VOORLETTERS,
    CONTACT_VOORNAAM,
    CONTACT_GESLACHT,
    CONTACT_EMAIL,
    CONTACT_TELEFOONNR,
    CONTACT_MOBIEL,
    HOST_NAAM,
    HOST_TUSSENVOEGSEL,
    HOST_VOORLETTERS,
    HOST_VOORNAAM,
    HOST_GESLACHT,
    HOST_EMAIL,
    HOST_TELEFOONNR,
    HOST_MOBIEL,
    PRS_KOSTENPLAATS_NR,
    PRS_KOSTENSOORT_OMS,
    DATUM_GEREGISTREERD,
    LAST_MINUTE,
    ARTIKELKENMERKEN,
    RUIMTE_OMSCHRIJVING,
    AANVRAGER,
    DAG,
    SORT
)
AS    
SELECT rr.res_reservering_key,
       rr.res_rsv_ruimte_volgnr,
       rr.res_reservering_key || '/' || rr.res_rsv_ruimte_volgnr,
       rr.res_rsv_ruimte_key,
       r.res_ruimte_key,
       r.res_ruimte_nr,
       l.alg_locatie_code,
       l.alg_locatie_omschrijving,
       g.alg_gebouw_code,
       g.alg_gebouw_naam,
       v.alg_verdieping_volgnr,
       v.alg_verdieping_omschrijving,
       ar.alg_ruimte_nr,
       ar.alg_ruimte_omschrijving,
       op.res_opstelling_key,
       op.res_opstelling_omschrijving,
       rr.res_rsv_ruimte_van,
       rr.res_rsv_ruimte_omschrijving,
       rr.res_rsv_ruimte_opmerking,
       rr.res_rsv_ruimte_bezoekers,
       rr.res_status_fo_key,
       rr.res_status_bo_key,
       ra.res_rsv_artikel_levering,
       TO_CHAR (ra.res_rsv_artikel_levering, 'DD-MM-YYYY')
           datum,
       TO_CHAR (ra.res_rsv_artikel_levering, 'HH24:MI')
           van,
       TO_CHAR (COALESCE (ra.res_rsv_artikel_afhalen, rr.res_rsv_ruimte_tot),
                'HH24:MI')
           tot,
       ra.res_rsv_artikel_aantal
           aantal,
       a.res_artikel_key,
       a.res_artikel_nr
           artikelnr,
       a.res_artikel_omschrijving
           artikeloms,
       d.ins_discipline_key,
       d.ins_discipline_omschrijving
           catalogus,
       ra.res_rsv_artikel_prijs,
       a.res_artikel_prijs,
       a.res_artikel_prijs
           eenheidsprijs,
       res.getartikelprijs (ra.res_rsv_artikel_key)
           totaalprijs,
       c.prs_perslid_naam
           contact_naam,
       c.prs_perslid_tussenvoegsel
           contact_tussenvoegsel,
       c.prs_perslid_voorletters
           contact_voorletters,
       c.prs_perslid_voornaam
           contact_voornaam,
       DECODE (c.prs_perslid_geslacht,  0, 'V',  1, 'M',  '')
           contact_geslacht,
       c.prs_perslid_email
           contact_email,
       c.prs_perslid_telefoonnr
           contact_telefoonnr,
       c.prs_perslid_mobiel
           contact_mobiel,
       h.prs_perslid_naam
           host_naam,
       h.prs_perslid_tussenvoegsel
           host_tussenvoegsel,
       h.prs_perslid_voorletters
           host_voorletters,
       h.prs_perslid_voornaam
           host_voornaam,
       DECODE (h.prs_perslid_geslacht,  0, 'V',  1, 'M',  '')
           host_geslacht,
       h.prs_perslid_email
           host_email,
       h.prs_perslid_telefoonnr
           host_telefoonnr,
       h.prs_perslid_mobiel
           host_mobiel,
       k.prs_kostenplaats_nr,
       ks.prs_kostensoort_oms,
       rr.res_rsv_ruimte_aanmaak,
       DECODE (TRUNC (ra.res_rsv_artikel_levering),
               TRUNC (rr.res_rsv_ruimte_aanmaak), 'Last Minute!',
               ''),
       (SELECT LISTAGG (
                      COALESCE (rk.res_kenmerk_omschrijving,
                                rs.res_srtkenmerk_omschrijving)
                   || ': '
                   || rak.res_kenmerkartikel_waarde,
                   CHR (10))
          FROM res_v_aanwezigkenmerkartikel  rak,
               res_kenmerk                   rk,
               res_srtkenmerk                rs
         WHERE     rak.res_kenmerk_key = rk.res_kenmerk_key
               AND rak.res_rsv_artikel_key = ra.res_rsv_artikel_key
               AND rk.res_srtkenmerk_key = rs.res_srtkenmerk_key
               AND rak.res_kenmerkartikel_verwijder IS NULL)
           artikel_kenmerken,
       COALESCE (r.res_ruimte_nr, ar.alg_ruimte_omschrijving),
       cn.prs_perslid_naam_friendly,
       DECODE (TRUNC (ra.res_rsv_artikel_levering),
               TRUNC (SYSDATE), 'Vandaag',
               TRUNC (SYSDATE) + 1, 'Morgen',
               'Onbekend'),
       (   rr.res_reservering_key
        || '/'
        || rr.res_rsv_ruimte_volgnr
        || '_'
        || TO_CHAR (ra.res_rsv_artikel_levering, 'DD-MM-YYYY')
        || '_'
        || TO_CHAR (ra.res_rsv_artikel_levering, 'HH24:MI'))
  FROM res_rsv_artikel          ra,
       res_artikel              a,
       res_discipline           d,
       res_rsv_ruimte           rr,
       res_ruimte_opstelling    ro,
       res_opstelling           op,
       res_ruimte               r,
       alg_ruimte               ar,
       alg_verdieping           v,
       alg_gebouw               g,
       alg_locatie              l,
       prs_perslid              c,
       prs_v_perslid_fullnames  cn,
       prs_kostenplaats         k,
       prs_kostensoort          ks,
       prs_perslid              h
 WHERE     rr.res_rsv_ruimte_verwijder IS NULL
       AND a.res_artikel_key = ra.res_artikel_key
       AND d.ins_discipline_key = a.res_discipline_key
       --           AND d.ins_discipline_key IN (36, 841, 881) -- Catering catalogi: Catering, Koffie&Thee, Lunch
       AND rr.res_rsv_ruimte_key = ra.res_rsv_ruimte_key
       AND rr.res_ruimte_opstel_key = ro.res_ruimte_opstel_key(+)
       AND ro.res_ruimte_key = r.res_ruimte_key(+)
       AND ro.res_opstelling_key = op.res_opstelling_key(+)
       AND rr.alg_ruimte_key = ar.alg_ruimte_key(+)
       AND ar.alg_verdieping_key = v.alg_verdieping_key(+)
       AND v.alg_gebouw_key = g.alg_gebouw_key(+)
       AND g.alg_locatie_key = l.alg_locatie_key(+)
       AND rr.res_rsv_ruimte_contact_key = c.prs_perslid_key
       AND c.prs_perslid_key = cn.prs_perslid_key
       AND rr.prs_kostenplaats_key = k.prs_kostenplaats_key(+)
       AND d.prs_kostensoort_key = ks.prs_kostensoort_key(+)
       AND rr.res_rsv_ruimte_host_key = h.prs_perslid_key
       AND rr.res_rsv_ruimte_dirtlevel = 0;
       
CREATE OR REPLACE VIEW drie_v_noti_reschange10
(
    code,
    sender,
    receiver,
    text,
    key,
    xkey,
    xsender,
    xemail,
    xmobile
)
AS
    SELECT DISTINCT 'CUST02',
           NULL,
           ag.prs_perslid_key,
           (   'Reservering '
            || rrr.res_reservering_key
            || '/'
            || rrr.res_rsv_ruimte_volgnr
            || ' ('
            || TO_CHAR (rrr.res_rsv_ruimte_van, 'DD/MM/YYYY')
            || ') '
            || rrr.res_rsv_ruimte_omschrijving
            || ', is '
            || DECODE (sn.fac_srtnotificatie_key,
                       101, 'nieuw ingevoerd',
                       102, 'aangepast',
                       106, 'vervallen')
            || ' op '
            || TO_CHAR (t.fac_tracking_datum, 'DD/MM/YYYY HH24:MI')),
           rrr.res_reservering_key,
           rrr.res_rsv_ruimte_key,
           NULL,
           NULL,
           NULL
      FROM res_rsv_ruimte         rrr,
           res_rsv_artikel rra,
           fac_tracking           t,
           fac_srtnotificatie     sn,
           fac_gebruikersgroep    ag
     WHERE     t.fac_tracking_refkey = rrr.res_rsv_ruimte_key
           AND t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
           AND ag.fac_groep_key = 261       --Autorisatiegroep tbv notificatie
           AND sn.fac_srtnotificatie_key IN (101, 102, 106) --RESNEW, RESUPD, RESDEL
           AND rra.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
           AND TRUNC (rrr.res_rsv_ruimte_van) - 10 <= TRUNC (SYSDATE)
           AND TRUNC (rrr.res_rsv_ruimte_van) >= TRUNC (SYSDATE)
           AND t.fac_tracking_datum BETWEEN (SELECT   fac_notificatie_job_nextrun
                                                    -   fac_notificatie_job_interval
                                                      / 24
                                               FROM fac_notificatie_job
                                              WHERE fac_notificatie_job_view =
                                                    'DRIE_V_NOTI_RESCHANGE10')
                                        AND (SELECT fac_notificatie_job_nextrun
                                               FROM fac_notificatie_job
                                              WHERE fac_notificatie_job_view =
                                                    'DRIE_V_NOTI_RESCHANGE10');     

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

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

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