-- Script containing customer specific configuration sql statements for WELK
-- (c) 2010 SG|facilitor bv
-- $Revision$
-- $Id$
--
-- Support: +31 53 4800710

set echo on

spool welk.lst

-- Voorbeeld aanroep van webservice
-- http://dit03/facilitor5iwork/appl/fac/fac_usrrap_list.asp?standalone=1&key=23&session_customerId=WELK&session_user_key=3&sqlWhere=
-- http://welk-a.facilitor.nl/appl/fac/fac_usrrap_list.asp?standalone=1&key=41&session_customerId=WELK&session_user_key=3&sqlWhere=
--
-- Gebouw-key = 5 in onderstaande view om alle bezoekers van het hoofdkantoor in Heerenveen op te kunnen vragen
CREATE OR REPLACE VIEW welk_v_rapp_bezoekers_screen
AS
SELECT to_char(a.bez_afspraak_datum,'DD-MM-YYYY') bez_afspraak_datum,
			 to_char(a.bez_afspraak_datum,'YYYY-MM-DD') datum_yyyymmdd,
			 to_char(a.bez_afspraak_datum,'HH24:MI') starttijd,
			 a.bez_afspraak_key afspr_key,
       b.bez_afspraak_naam,
       b.bez_afspraak_bedrijf bez_bedrijf,
       b.prs_contactpersoon_key,
       p.prs_perslid_naam
       || CASE
             WHEN p.prs_perslid_voorletters IS NULL THEN ''
             ELSE ', ' || p.prs_perslid_voorletters
          END
       || CASE
             WHEN p.prs_perslid_tussenvoegsel IS NULL THEN ''
             ELSE ' ' || p.prs_perslid_tussenvoegsel
          END
       || CASE
             WHEN p.prs_perslid_voornaam IS NULL THEN ''
             ELSE ' (' || p.prs_perslid_voornaam || ')'
          END
          pers_naam,
       a.bez_afspraak_gastheer gastheer,
       COALESCE (a.bez_afspraak_telefoonnr,
                 p.prs_perslid_telefoonnr,
                 p.prs_perslid_mobiel
       )
          telf_nr,
       (SELECT alg_verdieping_volgnr
          FROM alg_verdieping
         WHERE alg_verdieping_key = og.alg_verdieping_key)
          verdieping,          
       a.bez_afspraak_ruimte ruimte,
       a.bez_afspraak_opmerking,
       a.bez_afspraak_eind,
       to_char(a.bez_afspraak_eind,'HH24:MI') eindtijd,
       t.bez_actie_omschrijving actie,
       b.bez_bezoekers_done,
       b.bez_bezoekers_out,
       l.alg_locatie_omschrijving loc_omschr,
       b.bez_bezoekers_key bez_key
FROM bez_afspraak a,
     bez_bezoekers b,
     bez_actie t,
     prs_perslid p,
     alg_locatie l,
     alg_district d,
     res_rsv_ruimte rrr,
     res_ruimte_opstelling rro,
     res_ruimte rr,
     (SELECT alg_r.alg_ruimte_key alg_onroerendgoed_keys,
             alg_r.alg_ruimte_key,
             alg_r.alg_verdieping_key,
             alg_v.alg_gebouw_key,
             'R' alg_type
      FROM alg_ruimte alg_r, alg_verdieping alg_v
      WHERE alg_r.alg_verdieping_key = alg_v.alg_verdieping_key
      UNION ALL
      SELECT alg_v.alg_verdieping_key,
             TO_NUMBER (NULL),
             alg_v.alg_verdieping_key,
             alg_v.alg_gebouw_key,
             'V'
      FROM alg_verdieping alg_v
      UNION ALL
      SELECT alg_g.alg_gebouw_key,
             TO_NUMBER (NULL),
             TO_NUMBER (NULL),
             alg_g.alg_gebouw_key,
             'G'
      FROM alg_gebouw alg_g) og,
     res_rsv_deel rd
WHERE     a.bez_afspraak_key = b.bez_afspraak_key
      AND l.alg_district_key = d.alg_district_key
      AND t.bez_actie_key(+) = a.bez_actie_key
      AND a.alg_locatie_key = l.alg_locatie_key
      AND og.alg_onroerendgoed_keys(+) = a.alg_onrgoed_keys
      AND b.bez_bezoekers_key = rd.bez_bezoekers_key(+)
      AND p.prs_perslid_key = a.bez_afspraak_contact_key
      AND a.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key(+)
      AND rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key(+)
      AND rro.res_ruimte_key = rr.res_ruimte_key(+)
      AND a.bez_afspraak_datum BETWEEN TRUNC(SYSDATE) AND TRUNC(SYSDATE+1)
      AND og.alg_gebouw_key = 5
      AND bez_afspraak_naam not like '%*%';


-- res_discipline_key 101 = Catalogus "Lunch"
-- res_discipline_key 281 = Catalogus "Bakker"

CREATE OR REPLACE VIEW welk_v_res_lunches_en_bakker
(fclt_f_datum, tijd, fclt_f_locatie, res_discipline_key, ruimte, voorziening, aantal, aanvrager, gastheer, afdeling, activiteit, bezoekers, omschrijving, opmerking)
AS SELECT
TO_CHAR(DATUM,'YYYY-MM-DD') DATUM,
TO_CHAR(DATUM,'HH24:MI') TIJD,
LOCATIE,
res_ins_discipline_key,
ALG_RUIMTE_AANDUIDING RUIMTE,
RES_VOORZIENING,
AANTAL,
AANVRAGER,
GASTHEER,
ORGANISATIE,
RES_ACTIVITEIT_OMSCHRIJVING,
BEZOEKERS,
OMSCHRIJVING,
OPMERKING
FROM (WITH theperslid
             AS (SELECT prs_perslid_key,
                        prs_perslid_telefoonnr,
                        prs_afdeling_key,
                        p.prs_perslid_naam
                        || CASE
                              WHEN p.prs_perslid_voorletters IS NULL THEN ''
                              ELSE ', ' || p.prs_perslid_voorletters
                           END
                        || CASE
                              WHEN p.prs_perslid_tussenvoegsel IS NULL THEN ''
                              ELSE ' ' || p.prs_perslid_tussenvoegsel
                           END
                        || CASE
                              WHEN p.prs_perslid_voornaam IS NULL THEN ''
                              ELSE ' (' || p.prs_perslid_voornaam || ')'
                           END
                           naam
                 FROM prs_perslid p),
          theresrsv
             AS (SELECT *
                 FROM res_rsv_ruimte
                 )
      SELECT rrr.res_reservering_key,
             ruimte_geg.alg_locatie_key,
             l.alg_locatie_omschrijving locatie,
             ruimte_geg.alg_gebouw_key,
             ruimte_geg.alg_verdieping_key,
             ruimte_geg.alg_ruimte_key,
             COALESCE (opstelalg.res_ruimte_nr,
                       ruimte_geg.alg_ruimte_aanduiding
             )
                res_ruimte_nr,
             ruimte_geg.alg_ruimte_aanduiding,
             res_geg.res_voorziening,
             NULL,
             res_geg.res_reservering_van num_datum_tijd,
             res_geg.res_reservering_van datum,
             res_geg.res_reservering_van tijd,
             res_geg.res_reservering_tot tot,
             pcontact.naam aanvrager,
             res_geg.res_ins_discipline_key,
             res_rsv_ruimte_omschrijving omschrijving,
             res_rsv_ruimte_opmerking opmerking,
             res_geg.res_rsv_ruimte_key rsv_ruimte_key,
             res_geg.res_item_key,
             res_geg.res_status_bo_key res_status_bo_key,
             res_geg.res_type categorie,
             rrr.res_rsv_ruimte_bezoekers bezoekers,
             phost.naam gastheer,
             pcontact.prs_perslid_telefoonnr,
             COALESCE ( (SELECT k.prs_kostenplaats_nr
                         FROM prs_kostenplaats k
                         WHERE rrr.prs_kostenplaats_key =
                                  k.prs_kostenplaats_key),
                       ''
             )
                kostenplaats,
             res_geg.aantal aantal,
             res_geg.rsv_ruimte_aantal,
             res_geg.prijs verwerkt_prijs,
             l.alg_district_key,
             rrr.res_activiteit_key,
             ra.res_activiteit_omschrijving,
             ra.res_activiteit_upper,
             res_geg.stuks_prijs stuks_prijs,
             phost.prs_afdeling_key,
             (SELECT d.prs_afdeling_naam2
              FROM prs_v_afdeling d
              WHERE phost.prs_afdeling_key = d.prs_afdeling_key)
                organisatie,
             artikelnummer,
             rrr.res_rsv_ruimte_noshow noshow,
             artikel_groep,
             res_geg.rcv_type rcv_type,
             res_geg.res_type res_type,
             res_geg.keycolumn keycolumn,
             rrr.res_rsv_ruimte_volgnr,
             rrr.res_rsv_ruimte_key,
             res_geg.res_ruimte_key
      FROM (SELECT 'C' AS res_type,
                   'CV' AS rcv_type,
                   rra.res_rsv_ruimte_key,
                   (SELECT rro.res_ruimte_key
                    FROM res_ruimte_opstelling rro
                    WHERE rrr.res_ruimte_opstel_key =
                             rro.res_ruimte_opstel_key)
                      AS res_ruimte_key,
                   res_rsv_artikel_key AS res_item_key,
                   rra.res_rsv_artikel_levering AS res_reservering_van,
                   res_rsv_ruimte_tot AS res_reservering_tot,
                   rra.res_rsv_artikel_aantal AS aantal,
                   LTRIM (ra.res_artikel_omschrijving)
                   || CASE
                         WHEN ra.res_artikel_eenheid IS NULL THEN ''
                         ELSE ' (' || ra.res_artikel_eenheid || ')'
                      END
                      AS res_voorziening,
                   NULL,
                   ra.res_discipline_key AS res_ins_discipline_key,
                   rra.res_status_bo_key,
                   ra.res_artikel_key AS res_artikel_key,
                   rra.res_rsv_artikel_prijs AS prijs,
                   ra.res_artikel_prijs AS stuks_prijs,
                   TO_NUMBER (NULL) AS rsv_ruimte_aantal,
                   ra.res_artikel_nr AS artikelnummer,
                   ra.res_artikel_groep AS artikel_groep,
                   rra.res_rsv_artikel_key keycolumn
            FROM res_v_aanwezigrsv_artikel rra, theresrsv rrr, res_artikel ra
            WHERE     rra.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
                  AND rra.res_rsv_artikel_dirtlevel = 0
                  AND rra.res_artikel_key = ra.res_artikel_key
                  AND ra.res_discipline_key IN (101, 281)) res_geg,
           res_rsv_ruimte rrr,
           res_activiteit ra,
           theperslid phost,
           theperslid pcontact,
           alg_v_ruimte_gegevens ruimte_geg,
           (SELECT res_ruimte_opstel_key,
                   res_ruimte_nr,
                   MIN (alg_ruimte_key) alg_ruimte_key
            FROM res_ruimte_opstelling rro, res_alg_ruimte rar, res_ruimte rr
            WHERE     rro.res_ruimte_key = rar.res_ruimte_key
                  AND rr.res_ruimte_key = rar.res_ruimte_key
                  AND rar.res_alg_ruimte_verwijder IS NULL
            GROUP BY res_ruimte_opstel_key, res_ruimte_nr) opstelalg,
           alg_locatie l,
           alg_district di,
           prs_kostenplaats k
      WHERE     res_geg.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
            AND rrr.res_rsv_ruimte_verwijder IS NULL
            AND rrr.res_activiteit_key = ra.res_activiteit_key
            AND res_rsv_ruimte_host_key = phost.prs_perslid_key
            AND res_rsv_ruimte_contact_key = pcontact.prs_perslid_key
            AND rrr.res_ruimte_opstel_key = opstelalg.res_ruimte_opstel_key(+)
            AND rrr.prs_kostenplaats_key = k.prs_kostenplaats_key(+)
            AND ruimte_geg.alg_ruimte_key =
                  COALESCE (rrr.alg_ruimte_key, opstelalg.alg_ruimte_key)
            AND l.alg_locatie_key = ruimte_geg.alg_locatie_key
            AND l.alg_district_key = di.alg_district_key
            AND res_geg.res_status_bo_key < 5);


CREATE OR REPLACE VIEW welk_v_rapp_lunches
(fclt_f_datum, tijd, fclt_f_locatie, ruimte, voorziening, aantal, aanvrager, gastheer, afdeling, activiteit, bezoekers, omschrijving, opmerking)
AS SELECT fclt_f_datum, tijd, fclt_f_locatie, ruimte, voorziening, aantal, aanvrager, gastheer, afdeling, activiteit, bezoekers, omschrijving, opmerking
FROM welk_v_res_lunches_en_bakker
WHERE res_discipline_key = 101;

-- Overmorgen is standaard 2 dagen erbij optellen bij vandaag, alleen bij donderdag en vrijdag nogeens 2 extra dagen.
CREATE OR REPLACE VIEW welk_v_rap_lunches_overmorgen
(datum, tijd, fclt_f_locatie, ruimte, voorziening, aantal, aanvrager, gastheer, omschrijving, opmerking)
AS 
SELECT fclt_f_datum, tijd, fclt_f_locatie, ruimte, voorziening, aantal, aanvrager, gastheer, omschrijving, opmerking
FROM welk_v_rapp_lunches
WHERE TO_DATE (fclt_f_datum, 'YYYY-MM-DD') = trunc(sysdate + 2 + decode(to_char(sysdate,'D'),5,2,6,2,0));

-- Bakker
CREATE OR REPLACE VIEW welk_v_rapp_bakker
(fclt_f_datum, tijd, fclt_f_locatie, ruimte, voorziening, aantal, aanvrager, gastheer, afdeling, activiteit, bezoekers, omschrijving, opmerking)
AS SELECT fclt_f_datum, tijd, fclt_f_locatie, ruimte, voorziening, aantal, aanvrager, gastheer, afdeling, activiteit, bezoekers, omschrijving, opmerking
FROM welk_v_res_lunches_en_bakker
WHERE res_discipline_key = 281;

-- Overmorgen is standaard 2 dagen erbij optellen bij vandaag, alleen bij donderdag en vrijdag nogeens 2 extra dagen.
CREATE OR REPLACE VIEW welk_v_rap_bakker_overmorgen
(datum, tijd, fclt_f_locatie, ruimte, voorziening, aantal, aanvrager, gastheer, omschrijving, opmerking)
AS 
SELECT fclt_f_datum, tijd, fclt_f_locatie, ruimte, voorziening, aantal, aanvrager, gastheer, omschrijving, opmerking
FROM welk_v_rapp_bakker
WHERE TO_DATE (fclt_f_datum, 'YYYY-MM-DD') = trunc(sysdate + 2 + decode(to_char(sysdate,'D'),5,2,6,2,0));

-- fac_notificatie_job_key = 41 is de notifictaiejob die een mail stuurt naar receptie bij een nieuwe melding
-- 361 = vakgroep postkamer; 1541 = persoon postkamer; 1181 = persoon receptie
CREATE OR REPLACE VIEW welk_v_noti_receptie
(
   code,
   sender,
   receiver,
   text,
   key,
   par1,
   par2,
   xkey
)
AS
   SELECT   sn.fac_srtnotificatie_code,
            fac.gettrackinguserkey ('MLDNEW', m.mld_melding_key),
            DECODE (std.mld_ins_discipline_key, 361, 1541, 1181), 
            sn.fac_srtnotificatie_oms,
            m.mld_melding_key,
            m.mld_stdmelding_key,
            m.mld_melding_omschrijving,
            NULL
     FROM   mld_melding m,
            mld_stdmelding std,
            fac_notificatie_job nj,
            fac_srtnotificatie sn
    WHERE       sn.fac_srtnotificatie_code = 'CUST01'
            AND m.mld_stdmelding_key = std.mld_stdmelding_key
            AND m.mld_melding_status = 2
            AND nj.fac_notificatie_job_key = 41
            AND fac.gettrackingdate ('MLDNEW', m.mld_melding_key) >=
                  nj.fac_notificatie_job_nextrun
                  - (nj.fac_notificatie_job_interval / 24);

BEGIN adm.systrackscriptId('$Id$', 0); END;
/
BEGIN fac.registercustversion('WELK', 10); END;
/

commit;

spool off
