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

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#72497: Omhangen gebouwen naar nieuwe clusters=locaties op basis van
-- 'Eigen tabel'-import!

-- *** PRE-CONDITIE ***
-- Alleen inlezen (niet verwerken!) van bestand via 'FIP: Aanmaken/bijwerken
-- eigen tabel'-import!

-- Verwijder FAC_IMPORT-entry voor vandaag/zojuist door _FACILITOR ingelezen
-- bestand (om verwerken te voorkomen).
-- NB. De FAC_IMPORT_USRDATA-tabel blijft gevuld!
DELETE FROM fac_import
      WHERE fac_import_app_key = 23                     -- FIP: Eigen tabellen
            AND TRUNC (fac_import_datum_gelezen) = TRUNC (SYSDATE)
            --AND fac_import_filenaam = 'InventarisatieET_ClusterGebouw.csv'
            AND prs_perslid_key = 4                              -- _FACILITOR
;
COMMIT;

/*
-- Clusters bestaan nog niet?
SELECT DISTINCT fac_usrdata_omschr
  FROM fac_imp_usrdata ud
 WHERE NOT EXISTS
          (SELECT 1
             FROM alg_v_aanweziglocatie
            WHERE UPPER (alg_locatie_code) = UPPER (ud.fac_usrdata_omschr));
*/

-- Toevoegen clusters.
INSERT INTO alg_locatie (alg_district_key, alg_locatie_code, alg_locatie_omschrijving)
     SELECT DISTINCT 1, ud.fac_usrdata_omschr, ud.fac_usrdata_omschr
       FROM fac_imp_usrdata ud
   ORDER BY 1, 2;
COMMIT;

/*
-- Alle clusters toegevoegd?
SELECT ud.fac_usrdata_omschr gebouwcluster, ud.fac_usrdata_code gebouw
  FROM fac_imp_usrdata ud
 WHERE EXISTS (SELECT 1
                 FROM alg_v_aanweziggebouw
                WHERE TRIM (alg_gebouw_upper) = UPPER (TRIM (ud.fac_usrdata_code)));

SELECT g.alg_gebouw_code, g.alg_gebouw_naam
  FROM alg_v_aanweziggebouw g
 WHERE NOT EXISTS
          (SELECT 1
             FROM fac_imp_usrdata
            WHERE UPPER (TRIM (fac_usrdata_code)) = TRIM (g.alg_gebouw_upper));
*/

-- Omhangen gebouwen naar cluster.
/*
SELECT g.alg_locatie_key,
       (SELECT l.alg_locatie_key
          FROM fac_imp_usrdata ud, alg_v_aanweziglocatie l
         WHERE UPPER (TRIM (ud.fac_usrdata_omschr)) = UPPER (TRIM (l.alg_locatie_code))
               AND UPPER (TRIM (ud.fac_usrdata_code)) = TRIM (g.alg_gebouw_upper))
  FROM alg_gebouw g
 WHERE g.alg_gebouw_verwijder IS NULL
       AND g.alg_locatie_key = 1
       AND EXISTS
             (SELECT 1
                FROM fac_imp_usrdata ud, alg_v_aanweziglocatie l
               WHERE UPPER (TRIM (ud.fac_usrdata_omschr)) = UPPER (TRIM (l.alg_locatie_code))
                     AND UPPER (TRIM (ud.fac_usrdata_code)) = TRIM (g.alg_gebouw_upper));
*/
UPDATE alg_gebouw g
   SET g.alg_locatie_key =
          (SELECT l.alg_locatie_key
             FROM fac_imp_usrdata ud, alg_v_aanweziglocatie l
            WHERE UPPER (TRIM (ud.fac_usrdata_omschr)) = UPPER (TRIM (l.alg_locatie_code))
                  AND UPPER (TRIM (ud.fac_usrdata_code)) = TRIM (g.alg_gebouw_upper))
 WHERE g.alg_gebouw_verwijder IS NULL AND g.alg_locatie_key = 1
       AND EXISTS
             (SELECT 1
                FROM fac_imp_usrdata ud, alg_v_aanweziglocatie l
               WHERE UPPER (TRIM (ud.fac_usrdata_omschr)) = UPPER (TRIM (l.alg_locatie_code))
                     AND UPPER (TRIM (ud.fac_usrdata_code)) = TRIM (g.alg_gebouw_upper));
COMMIT;

-- Bijwerken MLD_ALG_LOCATIE_KEY op MLD_MELDING volgens nieuwe clusters.
/*
SELECT mld_alg_locatie_key,
       (SELECT alg_locatie_key
          FROM alg_v_allonroerendgoed
         WHERE alg_onroerendgoed_keys = m.mld_alg_onroerendgoed_keys)
  FROM mld_melding m
 WHERE m.mld_alg_onroerendgoed_keys IS NOT NULL
       AND EXISTS
             (SELECT 1
                FROM alg_v_allonroerendgoed
               WHERE alg_onroerendgoed_keys = m.mld_alg_onroerendgoed_keys);
*/
UPDATE mld_melding m
   SET mld_alg_locatie_key =
          (SELECT alg_locatie_key
             FROM alg_v_allonroerendgoed
            WHERE alg_onroerendgoed_keys = m.mld_alg_onroerendgoed_keys)
 WHERE m.mld_alg_onroerendgoed_keys IS NOT NULL
       AND EXISTS
             (SELECT 1
                FROM alg_v_allonroerendgoed
               WHERE alg_onroerendgoed_keys = m.mld_alg_onroerendgoed_keys);
COMMIT;

-- Bijwerken INS_ALG_LOCATIE_KEY op INS_DEEL volgens nieuwe clusters.
/*
SELECT ins_alg_locatie_key,
       (SELECT alg_locatie_key
          FROM alg_v_allonroerendgoed
         WHERE alg_onroerendgoed_keys = d.ins_alg_ruimte_key)
  FROM ins_deel d
 WHERE d.ins_deel_verwijder IS NULL
       AND d.ins_alg_ruimte_type = 'R'
       --AND d.ins_alg_ruimte_key IS NOT NULL
       AND EXISTS (SELECT 1
                     FROM alg_v_allonroerendgoed
                    WHERE alg_onroerendgoed_keys = d.ins_alg_ruimte_key);
*/
UPDATE ins_deel d
   SET ins_alg_locatie_key =
          (SELECT alg_locatie_key
             FROM alg_v_allonroerendgoed
            WHERE alg_onroerendgoed_keys = d.ins_alg_ruimte_key)
 WHERE d.ins_deel_verwijder IS NULL
       AND d.ins_alg_ruimte_type = 'R'
       --AND d.ins_alg_ruimte_key IS NOT NULL
       AND EXISTS (SELECT 1
                     FROM alg_v_allonroerendgoed
                    WHERE alg_onroerendgoed_keys = d.ins_alg_ruimte_key);
COMMIT;

/*
-- Bijwerken ALG_LOCATIE_OMSCHRIJVING van locaties.
SELECT l.alg_locatie_omschrijving,
       (SELECT MAX (alg_locatie_omschrijving)
          FROM fac_imp_onrgoed1
         WHERE UPPER (TRIM (alg_locatie_code)) = UPPER (TRIM (l.alg_locatie_code)))
  FROM alg_locatie l
 WHERE l.alg_locatie_verwijder IS NULL
       AND EXISTS
             (SELECT 1
                FROM fac_imp_onrgoed1
               WHERE UPPER (TRIM (alg_locatie_code)) = UPPER (TRIM (l.alg_locatie_code)));

UPDATE alg_locatie l
   SET l.alg_locatie_omschrijving =
          (SELECT MAX (alg_locatie_omschrijving)
             FROM fac_imp_onrgoed1
            WHERE UPPER (TRIM (alg_locatie_code)) = UPPER (TRIM (l.alg_locatie_code)))
 WHERE l.alg_locatie_verwijder IS NULL
       AND EXISTS
             (SELECT 1
                FROM fac_imp_onrgoed1
               WHERE UPPER (TRIM (alg_locatie_code)) = UPPER (TRIM (l.alg_locatie_code)));
*/

/*
-- Bijwerken ALG_GEBOUW_NAAM van gebouwen.
SELECT g.alg_gebouw_naam,
       (SELECT alg_gebouw_naam
          FROM fac_imp_onrgoed1
         WHERE UPPER (TRIM (alg_gebouw_code)) = TRIM (g.alg_gebouw_upper))
  FROM alg_gebouw g
 WHERE g.alg_gebouw_verwijder IS NULL
       AND EXISTS
             (SELECT 1
                FROM fac_imp_onrgoed1
               WHERE UPPER (TRIM (alg_gebouw_code)) = TRIM (g.alg_gebouw_upper));
UPDATE alg_gebouw g
   SET g.alg_gebouw_naam =
          (SELECT alg_gebouw_naam
             FROM fac_imp_onrgoed1
            WHERE UPPER (TRIM (alg_gebouw_code)) = TRIM (g.alg_gebouw_upper))
 WHERE g.alg_gebouw_verwijder IS NULL
       AND EXISTS
             (SELECT 1
                FROM fac_imp_onrgoed1
               WHERE UPPER (TRIM (alg_gebouw_code)) = TRIM (g.alg_gebouw_upper));
*/

/*
-- Bijwerken ALG_SRTGEBOUW_KEY van gebouwen.
SELECT g.alg_srtgebouw_key,
       (SELECT sg.alg_srtgebouw_key
          FROM fac_imp_onrgoed1 x, alg_srtgebouw sg
         WHERE UPPER (TRIM (x.alg_srtgebouw_omschrijving)) = TRIM (sg.alg_srtgebouw_upper)
               AND sg.alg_srtgebouw_verwijder IS NULL
               AND UPPER (TRIM (x.alg_gebouw_code)) = TRIM (g.alg_gebouw_upper))
  FROM alg_gebouw g
 WHERE g.alg_gebouw_verwijder IS NULL
       AND EXISTS
             (SELECT 1
                FROM fac_imp_onrgoed1 x, alg_srtgebouw sg
               WHERE UPPER (TRIM (x.alg_srtgebouw_omschrijving)) = TRIM (sg.alg_srtgebouw_upper)
                     AND sg.alg_srtgebouw_verwijder IS NULL
                     AND UPPER (TRIM (x.alg_gebouw_code)) = TRIM (g.alg_gebouw_upper));
UPDATE alg_gebouw g
   SET g.alg_srtgebouw_key =
          (SELECT sg.alg_srtgebouw_key
             FROM fac_imp_onrgoed1 x, alg_srtgebouw sg
            WHERE UPPER (TRIM (x.alg_srtgebouw_omschrijving)) = TRIM (sg.alg_srtgebouw_upper)
                  AND sg.alg_srtgebouw_verwijder IS NULL
                  AND UPPER (TRIM (x.alg_gebouw_code)) = TRIM (g.alg_gebouw_upper))
 WHERE g.alg_gebouw_verwijder IS NULL
       AND EXISTS
             (SELECT 1
                FROM fac_imp_onrgoed1 x, alg_srtgebouw sg
               WHERE UPPER (TRIM (x.alg_srtgebouw_omschrijving)) = TRIM (sg.alg_srtgebouw_upper)
                     AND sg.alg_srtgebouw_verwijder IS NULL
                     AND UPPER (TRIM (x.alg_gebouw_code)) = TRIM (g.alg_gebouw_upper));
*/

-- Met BLCC#71247_3.sql gereconstrueerde Strategie-veld weer wissen t/m 01-03-2022.
/*
SELECT *
  FROM blcc_alg_freeze
 WHERE freeze_datum <= TO_DATE ('01-03-2022', 'dd-mm-yyyy')
       AND gebouw_strategie IS NOT NULL;
*/
UPDATE blcc_alg_freeze
   SET gebouw_strategie = NULL
 WHERE freeze_datum <= TO_DATE ('01-03-2022', 'dd-mm-yyyy')
       AND gebouw_strategie IS NOT NULL;
COMMIT;

------ 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
