--
-- $Id$
--
-- Customer specific once-script BLCC#71247.sql.
DEFINE thisfile = 'BLCC#71247.sql'
DEFINE dbuser   = '^BLCC'

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

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

-- BLCC#71247: Tabel met  historische ALG-ruimtegegevens.
CREATE TABLE blcc_alg_freeze
(
  freeze_datum       DATE,
  alg_ruimte_key     NUMBER (10),
  locatiecode        VARCHAR2 (20),
  gebouwcode         VARCHAR2 (20),
  verdiepingcode     VARCHAR2 (20),
  ruimtenummer       VARCHAR2 (20),
  ruimtefunctie      VARCHAR2 (60),
  nvo                NUMBER(8,2),                 -- alg_ruimte_bruto_vloeropp
  nvo_getekend       NUMBER(8,2),
  vvo                NUMBER(8,2),                       -- alg_ruimte_opp_alt1
  vvo_getekend       NUMBER(8,2),
  lhkotc_class       VARCHAR2 (60),
  basic_tarief       NUMBER(16,5),
  premium_tarief     NUMBER(16,5),
  excellent_tarief   NUMBER(16,5),
  sch_maand          VARCHAR2 (10),                 -- Maand voor freeze_datum
  sch_tariefniveau   VARCHAR2 (1000), -- Basic/Premium/Excellent
  sch_contract       VARCHAR2 (1000), -- Aan ruimte gekoppeld(e) Schoonmaakcontract(en) 2981/2501/2982=Soft Services Cleaning Basic/Premium/Excellent
  sch_mantel         VARCHAR2 (1000), -- Aan ruimte gekoppeld(e) Schoonmaakmantel(s)
  huur_maand         VARCHAR2 (10),                   -- Maand na freeze_datum
  huur_contract      VARCHAR2 (1000)  -- Aan ruimte gekoppeld(e) Huurcontract(en) 2122/2123=LA/LA CRF
);
/*
SELECT SYSDATE freeze_datum,
       r.alg_ruimte_key,
       l.alg_locatie_code,
       g.alg_gebouw_code,
       v.alg_verdieping_code,
       r.alg_ruimte_nr,
       sr.alg_srtruimte_omschrijving,
       r.alg_ruimte_bruto_vloeropp nvo,
       tekcont.cad_imp_contour_opp nvo_getekend,
       r.alg_ruimte_opp_alt1 vvo,
       tekcont.cad_imp_contour_opp_alt1 vvo_getekend,
       lhkotc.waarde lhkotc_class,
       type_vloer.waarde type_vloer,
       fac.safe_to_number (basic.waarde) basic_tarief,
       fac.safe_to_number (premium.waarde) premium_tarief,
       fac.safe_to_number (excellent.waarde) excellent_tarief,
       TO_CHAR (ADD_MONTHS (SYSDATE, -1), 'yyyy-mm') sch_maand,
       csch.sch_tariefniveau_lijst sch_tariefniveau,
       csch.sch_cnt_lijst sch_contract,
       csch.sch_mantel_lijst sch_mantel,
       TO_CHAR (ADD_MONTHS (SYSDATE, 1), 'yyyy-mm') huur_maand,
       chuur.huur_cnt_lijst huur_contract
  FROM alg_v_aanwezigruimte r,
       alg_verdieping v,
       alg_gebouw g,
       alg_locatie l,
       alg_srtruimte sr,
       (SELECT alg_onrgoed_key, alg_onrgoedkenmerk_waarde waarde
          FROM alg_v_aanwezigonrgoedkenmerk
         WHERE alg_kenmerk_key = 1460                                   -- NVO
               AND alg_onrgoed_niveau = 'R') nvo,
       --cad_tekening tek,
       --(SELECT * FROM cad_tekening WHERE cad_tekening_verwijder IS NULL) tek,
       --cad_imp_contour cont,
       --(SELECT * FROM cad_imp_contour WHERE cad_imp_contour_concept = 0 AND prj_scenario_key IS NULL) cont,
       (SELECT tek.alg_verdieping_key, cont.cad_imp_contour_nr, cont.cad_imp_contour_opp, cont.cad_imp_contour_opp_alt1
          FROM cad_tekening tek, cad_imp_contour cont
         WHERE cad_tekening_verwijder IS NULL
               AND tek.alg_verdieping_key = cont.cad_tekening_key
               AND cont.cad_imp_contour_concept = 0
               AND cont.prj_scenario_key IS NULL) tekcont,
       (SELECT alg_onrgoed_key, ud.fac_usrdata_omschr waarde
          FROM alg_v_aanwezigonrgoedkenmerk ok, fac_v_aanwezigusrdata ud
         WHERE ok.alg_kenmerk_key = 1100               -- LHKOTC Classificatie
               AND ok.alg_onrgoed_niveau = 'R'
               AND fac.safe_to_number (ok.alg_onrgoedkenmerk_waarde) = ud.fac_usrdata_key) lhkotc,
       (SELECT alg_onrgoed_key, ud.fac_usrdata_omschr waarde
          FROM alg_v_aanwezigonrgoedkenmerk ok, fac_v_aanwezigusrdata ud
         WHERE ok.alg_kenmerk_key = 1301                         -- Type vloer
               AND ok.alg_onrgoed_niveau = 'R'
               AND fac.safe_to_number (ok.alg_onrgoedkenmerk_waarde) = ud.fac_usrdata_key) type_vloer,
       (SELECT alg_onrgoed_key, alg_onrgoedkenmerk_waarde waarde
          FROM alg_v_aanwezigonrgoedkenmerk
         WHERE alg_kenmerk_key = 1540                -- Schoonmaaktarief Basic
               AND alg_onrgoed_niveau = 'R') basic,
       (SELECT alg_onrgoed_key, alg_onrgoedkenmerk_waarde waarde
          FROM alg_v_aanwezigonrgoedkenmerk
         WHERE alg_kenmerk_key = 1541              -- Schoonmaaktarief Premium
               AND alg_onrgoed_niveau = 'R') premium,
       (SELECT alg_onrgoed_key, alg_onrgoedkenmerk_waarde waarde
          FROM alg_v_aanwezigonrgoedkenmerk
         WHERE alg_kenmerk_key = 1542            -- Schoonmaaktarief Excellent
               AND alg_onrgoed_niveau = 'R') excellent,
       (  SELECT c2r.alg_ruimte_key,
                 LISTAGG (DISTINCT DECODE (c.ins_discipline_key, 2981, 'Basic', 2501, 'Premium', 'Excellent'), ',') WITHIN GROUP (ORDER BY DECODE (c.ins_discipline_key, 2981, 'Basic', 2501, 'Premium', 'Excellent'))
                    sch_tariefniveau_lijst,
                 LISTAGG (DISTINCT TO_CHAR (c.cnt_contract_key) || '=' || c.cnt_contract_nummer_intern || '.' || COALESCE (c.cnt_contract_versie, '0') || '|' || cd.ins_discipline_omschrijving || '|' || b.prs_overeenkomst_nr || '|' || b.prs_bedrijf_naam, ',') WITHIN GROUP (ORDER BY TO_CHAR (c.cnt_contract_key) || '=' || c.cnt_contract_nummer_intern || '.' || COALESCE (c.cnt_contract_versie, '0') || '|' || cd.ins_discipline_omschrijving || '|' || b.prs_overeenkomst_nr || '|' || b.prs_bedrijf_naam)
                    sch_cnt_lijst,
                 LISTAGG (DISTINCT TO_CHAR (mc.cnt_contract_key) || '=' || mc.cnt_contract_nummer_intern || '.' || COALESCE (mc.cnt_contract_versie, '0') || '|' || mc.cnt_contract_omschrijving, ',') WITHIN GROUP (ORDER BY TO_CHAR (mc.cnt_contract_key) || '=' || mc.cnt_contract_nummer_intern || '.' || COALESCE (mc.cnt_contract_versie, '0') || '|' || mc.cnt_contract_omschrijving)
                    sch_mantel_lijst
            FROM cnt_v_aanwezigcontract c,
                 cnt_discipline cd,
                 prs_bedrijf b,
                 cnt_v_aanwezigcontract mc,
                 (SELECT cp.cnt_contract_key, r.alg_ruimte_key
                    FROM cnt_contract_plaats cp, alg_ruimte r
                   WHERE cp.cnt_contract_plaats_verwijder IS NULL
                         AND cp.cnt_alg_plaats_code = 'R'
                         AND cp.cnt_alg_plaats_key = r.alg_ruimte_key
                  UNION
                  SELECT cp.cnt_contract_key, r.alg_ruimte_key
                    FROM cnt_contract_plaats cp, alg_ruimte r
                   WHERE cp.cnt_contract_plaats_verwijder IS NULL
                         AND cp.cnt_alg_plaats_code = 'V'
                         AND cp.cnt_alg_plaats_key = r.alg_verdieping_key
                  UNION
                  SELECT cp.cnt_contract_key, r.alg_ruimte_key
                    FROM cnt_contract_plaats cp, alg_verdieping v, alg_ruimte r
                   WHERE cp.cnt_contract_plaats_verwijder IS NULL
                         AND cp.cnt_alg_plaats_code = 'G'
                         AND cp.cnt_alg_plaats_key = v.alg_gebouw_key
                         AND v.alg_verdieping_key = r.alg_verdieping_key) c2r -- Contract2Ruimte
           WHERE c.ins_discipline_key IN (2981, 2501, 2982) -- Soft Services Cleaning Basic/Premium/Excellent
                 AND TRUNC (ADD_MONTHS (SYSDATE, -1), 'mm') >= TRUNC(c.cnt_contract_looptijd_van)
                 AND TRUNC (ADD_MONTHS (SYSDATE, -1), 'mm') < TRUNC(c.cnt_contract_looptijd_tot + 1) -- Voorgaande maand actief (want op 1/4 wordt maart geschoonmaakfactureerd)!
                 AND c.cnt_contract_status = 0                   -- Definitief
                 AND c.ins_discipline_key = cd.ins_discipline_key
                 AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key
                 AND c.cnt_contract_mantel_key = mc.cnt_contract_key(+)
                 AND c.cnt_contract_key = c2r.cnt_contract_key
        GROUP BY c2r.alg_ruimte_key) csch, -- Schoonmaakcontracten per ruimte (via scope gekoppeld)
       (  SELECT c2r.alg_ruimte_key,
                 LISTAGG (DISTINCT TO_CHAR (c.cnt_contract_key) || '=' || c.cnt_contract_nummer_intern || '.' || COALESCE (c.cnt_contract_versie, '0'), ',') WITHIN GROUP (ORDER BY TO_CHAR (c.cnt_contract_key) || '=' || c.cnt_contract_nummer_intern || '.' || COALESCE (c.cnt_contract_versie, '0'))
                    huur_cnt_lijst
            FROM cnt_v_aanwezigcontract c,
                 (SELECT cp.cnt_contract_key, r.alg_ruimte_key
                    FROM cnt_contract_plaats cp, alg_v_aanwezigruimte r
                   WHERE cp.cnt_contract_plaats_verwijder IS NULL
                         AND cp.cnt_alg_plaats_code = 'R'
                         AND cp.cnt_alg_plaats_key = r.alg_ruimte_key
                  UNION
                  SELECT cp.cnt_contract_key, r.alg_ruimte_key
                    FROM cnt_contract_plaats cp, alg_v_aanwezigruimte r
                   WHERE cp.cnt_contract_plaats_verwijder IS NULL
                         AND cp.cnt_alg_plaats_code = 'V'
                         AND cp.cnt_alg_plaats_key = r.alg_verdieping_key
                  UNION
                  SELECT cp.cnt_contract_key, r.alg_ruimte_key
                    FROM cnt_contract_plaats cp, alg_verdieping v, alg_v_aanwezigruimte r
                   WHERE cp.cnt_contract_plaats_verwijder IS NULL
                         AND cp.cnt_alg_plaats_code = 'G'
                         AND cp.cnt_alg_plaats_key = v.alg_gebouw_key
                         AND v.alg_verdieping_key = r.alg_verdieping_key) c2r -- Contract2Ruimte
           WHERE c.ins_discipline_key IN (2122, 2123)             -- LA/LA CRF
                 AND TRUNC (ADD_MONTHS (SYSDATE, 1), 'mm') >= TRUNC(c.cnt_contract_looptijd_van)
                 AND TRUNC (ADD_MONTHS (SYSDATE, 1), 'mm') < TRUNC(c.cnt_contract_looptijd_tot + 1) -- Volgende maand actief (want op 1/4 wordt mei gehuurfactureerd)!
                 AND c.cnt_contract_status = 0                   -- Definitief
                 AND c.cnt_contract_key = c2r.cnt_contract_key
        GROUP BY c2r.alg_ruimte_key) chuur -- Huurcontracten per ruimte (via scope gekoppeld)
 WHERE r.alg_verdieping_key = v.alg_verdieping_key
       AND v.alg_gebouw_key = g.alg_gebouw_key
       AND g.alg_locatie_key = l.alg_locatie_key
       AND r.alg_srtruimte_key = sr.alg_srtruimte_key(+)
       AND r.alg_ruimte_key = nvo.alg_onrgoed_key(+)
       --AND r.alg_verdieping_key = tek.alg_verdieping_key(+)
       --AND r.alg_ruimte_nr = cont.cad_imp_contour_nr(+)
       --AND cont.cad_tekening_key = tek.cad_tekening_key(+)
       AND r.alg_verdieping_key = tekcont.alg_verdieping_key(+)
       AND r.alg_ruimte_nr = tekcont.cad_imp_contour_nr(+)
       AND r.alg_ruimte_key = lhkotc.alg_onrgoed_key(+)
       AND r.alg_ruimte_key = type_vloer.alg_onrgoed_key(+)
       AND r.alg_ruimte_key = basic.alg_onrgoed_key(+)
       AND r.alg_ruimte_key = premium.alg_onrgoed_key(+)
       AND r.alg_ruimte_key = excellent.alg_onrgoed_key(+)
       AND r.alg_ruimte_key = chuur.alg_ruimte_key(+)
       AND r.alg_ruimte_key = csch.alg_ruimte_key(+);
*/
------ payload end   ------

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

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