/* Formatted on 4/3/2019 09:50:03 (QP5 v5.336) */
--
-- $Id$
--
-- Script containing customer specific sql statements for the FACILITOR database

DEFINE thisfile = 'SCBR.SQL'
DEFINE dbuser   = '^SCBR'

SET ECHO ON
SET DEFINE ON
COLUMN fcltlogfile NEW_VALUE fcltlogfile NOPRINT;
WHENEVER SQLERROR EXIT;

SELECT adm.scriptspoolfile ('&dbuser', '&thisfile') AS fcltlogfile FROM DUAL;

WHENEVER SQLERROR CONTINUE;
SPOOL &fcltlogfile
SET DEFINE OFF

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

CREATE OR REPLACE VIEW SCBR_V_RAP_DAGOVERZICHT
(
    SORT,
    NUMMER,
    GASTHEER,
    CONTACT,
    VAN,
    TOT,
    DUUR,
    ACTIVITEIT,
    ACTIVITEITSOORT,
    VOORZIENING_CATALOGUS,
    VOORZIENING_PRODUCT,
    PARAAF
)
AS
      SELECT rrr.res_rsv_ruimte_van,
             res.res_reservering_key || '/' || rrr.res_rsv_ruimte_volgnr,
             (SELECT prs_perslid_naam_full
                FROM prs_v_perslid_fullnames_all pf
               WHERE pf.prs_perslid_key = rrr.res_rsv_ruimte_host_key),
             (SELECT prs_perslid_naam_full
                FROM prs_v_perslid_fullnames_all pf
               WHERE pf.prs_perslid_key = rrr.res_rsv_ruimte_contact_key),
             rrr.res_rsv_ruimte_van,
             rrr.res_rsv_ruimte_tot,
             COALESCE ((rrr.res_rsv_ruimte_tot - rrr.res_rsv_ruimte_van) * 24,
                       0),
             ra.res_activiteit_omschrijving,
             rsa.res_srtactiviteit_omschrijving,
             voorz.catalogus,
             voorz.product,
             ''
        FROM res_v_aanwezigrsv_ruimte rrr,
             res_activiteit          ra,
             res_srtactiviteit       rsa,
             res_reservering         res,
             prs_perslid             p,
             prs_afdeling            a,
             (SELECT rrd.res_rsv_ruimte_key
                         res_rsv_ruimte_key,
                     -rd.res_deel_key
                         product_key,
                     rd.res_deel_omschrijving
                         product,
                     DECODE (
                         rd.res_deel_prijs_vast,
                         1, NVL (rrd.res_rsv_deel_prijs, rd.res_deel_prijs),
                           (rrd.res_rsv_deel_tot - rrd.res_rsv_deel_van)
                         * 24
                         * NVL (rrd.res_rsv_deel_prijs, rd.res_deel_prijs))
                         totaalprijs,
                     rrd.res_rsv_deel_van
                         van,
                     rrd.res_rsv_deel_tot
                         tot,
                     (rrd.res_rsv_deel_tot - rrd.res_rsv_deel_van) * 24
                         aantal,
                     NVL (rrd.res_rsv_deel_prijs, rd.res_deel_prijs)
                         prijs,
                     c.ins_discipline_key
                         ins_discipline_key,
                     c.ins_discipline_omschrijving
                         catalogus,
                     'object'
                         vtype
                FROM res_v_aanwezigrsv_deel rrd,
                     res_deel              rd,
                     ins_deel              d,
                     ins_tab_discipline    c
               WHERE     rrd.res_deel_key = rd.res_deel_key
                     AND d.ins_deel_key = rd.res_ins_deel_key
                     AND rrd.res_rsv_ruimte_key IS NOT NULL
                     AND c.ins_discipline_key = rd.res_discipline_key) voorz
       WHERE     rrr.res_reservering_key = res.res_reservering_key
             AND rrr.res_rsv_ruimte_key = voorz.res_rsv_ruimte_key
             AND rrr.res_activiteit_key = ra.res_activiteit_key
             AND ra.res_srtactiviteit_key = rsa.res_srtactiviteit_key
             AND rrr.res_rsv_ruimte_host_key = p.prs_perslid_key
             AND p.prs_afdeling_key = a.prs_afdeling_key
             AND rsa.res_srtactiviteit_key = 2
             AND rrr.res_rsv_ruimte_van >= TO_DATE ('01-01-2010', 'DD-MM-YYYY')
    ORDER BY rrr.res_rsv_ruimte_van;


CREATE OR REPLACE VIEW SCBR_V_RAP_SLEUTELUITGIFTE
(
    MEDEWERKER,
    MEDEWERKER_TELNR,
    MEDEWERKER_PERSNR,
    AFDELING,
    LEIDINGGEVENDE,
    LEIDINGGEVENDE_TELNR,
    SLEUTEL,
    CILINDER,
    RUIMTE
)
AS
      SELECT prs_perslid_naam_full,
             COALESCE (p.prs_perslid_mobiel, p.prs_perslid_telefoonnr)
                 telnr,
             p.prs_perslid_nr,
             a.prs_afdeling_omschrijving,
             leidinggev.leidinggev
                 leidinggevende,
             leidinggev.leidinggev_telnr,
             sleutel,
             LISTAGG (cilinder, ', ') WITHIN GROUP (ORDER BY cilinder)
                 AS cilinder,
             LISTAGG (plaats, ', ') WITHIN GROUP (ORDER BY plaats)
                 AS plaats
        FROM (SELECT l.alg_locatie_key,
                     pf.prs_perslid_key,
                     pf.prs_perslid_naam_full,
                     cil.ins_deel_omschrijving     cilinder,
                     s.ins_srtdeel_code            sleutelset_code,
                     s.ins_srtdeel_omschrijving    sleutelset_oms,
                     sle.ins_deel_omschrijving     sleutel,
                     l.alg_locatie_code, -- Locatie ruimte-cilinder (deur of bureau)!
                     DECODE (
                         cil.ins_alg_ruimte_key_org,
                         NULL,                       -- Als op (stam)bureau,..
                               NULL,                 -- ..dan nergens toegang!
                            l.alg_locatie_code
                         || '-'
                         || aog.alg_gebouw_code
                         || '-'
                         || aog.alg_verdieping_code
                         || '-'
                         || aog.alg_ruimte_nr)     plaats
                FROM ins_srtdeel_srtdeel        iss,
                     ins_srtdeel                c,
                     ins_v_aanwezigdeel         cil,
                     alg_v_allonrgoed_gegevens  aog,
                     alg_locatie                l,
                     ins_srtdeel                s,
                     ins_v_aanwezigdeel         sle,
                     prs_v_perslid_fullnames_all pf
               WHERE     iss.ins_module = 'SLE'
                     AND iss.ins_srtdeel_key_1 = c.ins_srtdeel_key
                     AND c.ins_srtdeel_key = cil.ins_srtdeel_key
                     AND cil.ins_alg_ruimte_type = 'R' -- Ingenomen of uitgegeven!
                     AND cil.ins_alg_ruimte_key = aog.alg_onroerendgoed_keys
                     AND aog.alg_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)
             sle_uitgifte,
             prs_perslid p,
             prs_afdeling a,
             (SELECT a.prs_afdeling_key,
                     a.prs_afdeling_omschrijving                                  afdeling,
                     lg.prs_perslid_naam_friendly                                 leidinggev,
                     COALESCE (p.prs_perslid_mobiel, p.prs_perslid_telefoonnr)    leidinggev_telnr
                FROM prs_kenmerklink            kl,
                     prs_v_perslid_fullnames_all lg,
                     prs_perslid                p,
                     prs_afdeling               a,
                     prs_kenmerk                k
               WHERE     kl.prs_kenmerklink_waarde = lg.prs_perslid_key
                     AND a.prs_afdeling_key = kl.prs_link_key
                     AND lg.prs_perslid_key = p.prs_perslid_key
                     AND kl.prs_kenmerk_key = k.prs_kenmerk_key
                     AND k.prs_kenmerk_upper = 'LEIDINGGEVENDE') leidinggev
       WHERE     sle_uitgifte.prs_perslid_key = p.prs_perslid_key
             AND p.prs_afdeling_key = a.prs_afdeling_key
             AND a.prs_afdeling_key = leidinggev.prs_afdeling_key(+)
    GROUP BY prs_perslid_naam_full,
             p.prs_perslid_nr,
             a.prs_afdeling_omschrijving,
             leidinggev.leidinggev,
             leidinggev.leidinggev_telnr,
             COALESCE (p.prs_perslid_mobiel, p.prs_perslid_telefoonnr),
             sleutel;

CREATE OR REPLACE VIEW SCBR_V_RAP_BESTELLINGEN
(
    CATALOGUS,
    KOSTENSOORT,
    KOSTENPLAATS,
    BUDGETHOUDER,
    BESTELOPDRACHT,
    BESTEL_DATUM,
    BESTEL_STATUS,
    BESTELLER,
    ARTIKEL,
    ARTIKEL_PRIJS,
    AANTAL,
    REGEL_TOTAAL
)
AS
      SELECT d.ins_discipline_omschrijving
                 catalogus,
             (SELECT ks.prs_kostensoort_oms
                FROM prs_kostensoort ks
               WHERE ks.prs_kostensoort_key =
                     (SELECT MAX (
                                 COALESCE (bsg.prs_kostensoort_key,
                                           disc.prs_kostensoort_key))
                        FROM bes_discipline disc, bes_srtgroep bsg
                       WHERE     disc.ins_discipline_key =
                                 bsg.ins_discipline_key
                             AND disc.ins_discipline_key = d.ins_discipline_key))
                 kostensoort,
             kp.prs_kostenplaats_nr,
             kp.budgethouder,
             bo.bes_bestelopdr_id,
             bo.bes_bestelopdr_datum,
             stat.bes_bestelopdrstatuses_omschr,
             pn.prs_perslid_naam_friendly
                 besteller,
             boi.bes_bestelopdr_item_omschrijv,
             COALESCE (boi.bes_bestelopdr_item_prijs, 0),
             boi.bes_bestelopdr_item_aantalontv,
             COALESCE (
                   boi.bes_bestelopdr_item_prijs
                 * boi.bes_bestelopdr_item_aantalontv,
                 0)
                 AS totaal_bedrag
        FROM bes_bestelopdr             bo,
             bes_bestelopdr_item        boi,
             bes_bestelopdrstatuses     stat,
             prs_v_perslid_fullnames_all pn,
             prs_perslid                p,
             prs_afdeling               a,
             bes_bestelling             b,
             bes_bestelling_item        bi,
             bes_srtdeel                sd,
             bes_srtgroep               sg,
             ins_tab_discipline         d,
             (SELECT kp.prs_kostenplaats_key,
                     kp.prs_kostenplaats_nr,
                     bh.prs_perslid_naam_friendly     budgethouder
                FROM prs_kostenplaats kp, prs_v_perslid_fullnames_all bh
               WHERE kp.prs_perslid_key = bh.prs_perslid_key(+)) kp
       WHERE     bo.bes_bestelopdr_key = boi.bes_bestelopdr_key
             AND stat.bes_bestelopdrstatuses_key = bo.bes_bestelopdr_status
             AND bo.prs_perslid_key = pn.prs_perslid_key
             AND bo.prs_perslid_key = p.prs_perslid_key
             AND p.prs_afdeling_key = a.prs_afdeling_key
             AND a.prs_kostenplaats_key = kp.prs_kostenplaats_key
             AND b.bes_bestelling_key = bi.bes_bestelling_key
             AND bi.bes_bestelopdr_item_key = boi.bes_bestelopdr_item_key(+)
             AND boi.bes_bestelopdr_key = bo.bes_bestelopdr_key(+)
             AND bi.bes_srtdeel_key = sd.bes_srtdeel_key
             AND sd.bes_srtgroep_key = sg.bes_srtgroep_key
             AND sg.ins_discipline_key = d.ins_discipline_key
    ORDER BY d.ins_discipline_omschrijving,
             (SELECT ks.prs_kostensoort_oms
                FROM prs_kostensoort ks
               WHERE ks.prs_kostensoort_key =
                     (SELECT MAX (
                                 COALESCE (bsg.prs_kostensoort_key,
                                           disc.prs_kostensoort_key))
                        FROM bes_discipline disc, bes_srtgroep bsg
                       WHERE     disc.ins_discipline_key =
                                 bsg.ins_discipline_key
                             AND disc.ins_discipline_key =
                                 d.ins_discipline_key)),
             kp.prs_kostenplaats_nr,
             bo.bes_bestelopdr_id;

CREATE OR REPLACE PACKAGE SCBR
AS
    PROCEDURE bes_after_insert (p_bes_bestelling_key IN NUMBER);
END;
/

CREATE OR REPLACE PACKAGE BODY SCBR
AS
    PROCEDURE bes_after_insert (p_bes_bestelling_key IN NUMBER)
    IS
        v_count          NUMBER;
        v_kostenplaats   NUMBER;
    BEGIN
        -- STAP 1: kostenplaats bepalen adhv de gekozen projectcode
        SELECT COUNT (kpl.prs_kostenplaats_key)
          INTO v_count
          FROM bes_bestelling      bs,
               bes_kenmerkbestell  km,
               fac_usrdata         ud,
               fac_usrtab          ut,
               prs_kostenplaats    kpl
         WHERE     bs.bes_bestelling_key = p_bes_bestelling_key
               AND km.bes_bestelling_key = bs.bes_bestelling_key
               AND km.bes_kenmerkbestell_waarde = ud.fac_usrdata_key
               AND ud.fac_usrtab_key = ut.fac_usrtab_key
               AND ud.fac_usrdata_prijs = kpl.prs_kostenplaats_nr;

        --- Stap 2: als 1 kostenplaats gevonden kon worden, dan deze opnemen bij de bestelling
        IF v_count = 1
        THEN
            SELECT kpl.prs_kostenplaats_key
              INTO v_kostenplaats
              FROM bes_bestelling      bs,
                   bes_kenmerkbestell  km,
                   fac_usrdata         ud,
                   fac_usrtab          ut,
                   prs_kostenplaats    kpl
             WHERE     bs.bes_bestelling_key = p_bes_bestelling_key
                   AND km.bes_bestelling_key = bs.bes_bestelling_key
                   AND km.bes_kenmerkbestell_waarde = ud.fac_usrdata_key
                   AND ud.fac_usrtab_key = ut.fac_usrtab_key
                   AND ud.fac_usrdata_prijs = kpl.prs_kostenplaats_nr;

            UPDATE bes_bestelling b
               SET b.prs_kostenplaats_key = v_kostenplaats
             WHERE b.bes_bestelling_key = p_bes_bestelling_key;
        END IF;

        COMMIT;
    END;

END SCBR;
/
------ 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