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

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

-- BLCC#58361: Ipv. propertymanager voortaan eerste goedkeurder (en anders de
--             propertymanager)!
CREATE OR REPLACE VIEW blcc_v_rap_maand_ordafm
(
   maand,
   prefix,
   opdr_key,
   opdr,
   kpn,
   kplaats_nr,
   kplaats_oms,
   --corr_kplaats,
   ksoort_code,
   ksoort_oms,
   --org_ksoort,
   propertymanager,                -- BLCC#58361: Voortaan eerste goedkeurder!
   gebouw_terrein,
   verdieping,
   ruimte,
   vakgroep,
   melding,
   melder,
   omschrijving,
   opmerking,
   aanmaak,
   gepland,
   gereed,
   uitv_key,
   uitvoerende,
   contactpersoon,
   kosten,
   fclt_3d_afdeling_key
)
AS
   SELECT TO_CHAR (SYSDATE, 'yyyy-mm'),
          a.prefix,
          a.mld_opdr_key,
          a.opdracht,
          COALESCE (a.prs_kostenplaatsgrp_nr, SUBSTR (a.kdrager, 1, 5)) kpn,
          a.kdrager,
          a.kdrager_oms,
          a.ksoort,
          a.ksoort_oms,
          --a.propertymanager,
          COALESCE ((SELECT prs_perslid_naam_full FROM prs_v_perslid_fullnames_all WHERE prs_perslid_key = ordgoe.prs_perslid_key), a.propertymanager) goedkeurder,
          a.gebouw_terrein,
          a.verdieping,
          a.ruimte,
          a.vakgroep,
          a.melding,
          a.melder,
          a.oms,
          a.opm,
          a.datum_aanmaak,
          a.datum_gepland,
          a.datum_gereed,
          a.prs_bedrijf_key,
          a.bedrijf,
          a.cp,
          COALESCE (a.kosten, 0),
          b.afdeling
     FROM (SELECT o.mld_opdr_key,
                  COALESCE (og.alg_gebouw_key, og.alg_terreinsector_key) gebter_key,
                  sd.ins_srtdiscipline_prefix prefix,
                  o.mld_melding_key || '/' || o.mld_opdr_bedrijfopdr_volgnr opdracht,
                  kpg.prs_kostenplaatsgrp_nr,
                  kp.prs_kostenplaats_nr kdrager,
                  kp.prs_kostenplaats_omschrijving kdrager_oms,
                  COALESCE (ksm.prs_kostensoort_oms, ksv.prs_kostensoort_oms) ksoort,
                  DECODE (ksm.prs_kostensoort_oms,
                          NULL, ksv.prs_kostensoort_opmerking,
                          ksm.prs_kostensoort_opmerking)
                     ksoort_oms,
                  pm.prs_perslid_naam_full propertymanager,
                  COALESCE (og.alg_terreinsector_code, og.alg_gebouw_code) gebouw_terrein,
                  og.alg_verdieping_code verdieping,
                  og.alg_ruimte_nr ruimte,
                  td.ins_discipline_omschrijving vakgroep,
                  sm.mld_stdmelding_omschrijving melding,
                  pf.prs_perslid_naam_full melder,
                  o.mld_opdr_omschrijving oms,
                  o.mld_opdr_opmerking opm,
                  o.mld_opdr_datumbegin datum_aanmaak,        -- Of verzonden?
                  --fac.datumtijdplusuitvoertijd (o.mld_opdr_datumbegin, m.mld_melding_t_uitvoertijd.tijdsduur, m.mld_melding_t_uitvoertijd.eenheid)
                  o.mld_opdr_einddatum datum_gepland,
                  fac.gettrackingdate ('ORDAFM', o.mld_opdr_key) datum_gereed,
                  b.prs_bedrijf_key,
                  b.prs_bedrijf_naam bedrijf,
                  o.mld_opdr_contactpersoon cp,
                  o.mld_opdr_kosten kosten
             FROM mld_opdr o,
                  prs_bedrijf b,
                  mld_melding m,
                  prs_v_perslid_fullnames_all pf,
                  alg_v_allonrgoed_gegevens og,
                  alg_gebouw g,
                  prs_v_perslid_fullnames pm,
                  mld_stdmelding sm,
                  ins_tab_discipline td,
                  ins_srtdiscipline sd,
                  prs_kostensoort ksm,
                  prs_kostensoort ksv,
                  prs_kostenplaats kp,
                  prs_kostenplaatsgrp kpg
            WHERE o.mld_typeopdr_key = 101             -- Alleen Werkopdrachten???
                  AND o.mld_statusopdr_key = 6                      -- Afgemeld???
                  AND o.mld_uitvoerende_keys = b.prs_bedrijf_key
                  AND o.mld_melding_key = m.mld_melding_key
                  AND m.prs_perslid_key = pf.prs_perslid_key
                  AND m.mld_alg_onroerendgoed_keys = og.alg_onroerendgoed_keys
                  AND og.alg_gebouw_key = g.alg_gebouw_key(+)
                  AND g.prs_perslid_key_verantw = pm.prs_perslid_key(+)
                  AND m.mld_stdmelding_key = sm.mld_stdmelding_key
                  AND sm.mld_ins_discipline_key = td.ins_discipline_key
                  AND td.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
                  AND sm.prs_kostensoort_key = ksm.prs_kostensoort_key(+)
                  AND td.prs_kostensoort_key = ksv.prs_kostensoort_key(+)
                  AND o.prs_kostenplaats_key = kp.prs_kostenplaats_key
                  AND kp.prs_kostenplaatsgrp_key = kpg.prs_kostenplaatsgrp_key(+)) a
          LEFT JOIN (  SELECT o.mld_opdr_key, MAX (p.prs_afdeling_key) afdeling
                         FROM mld_opdr o, prs_bedrijf b, prs_contactpersoon cp, prs_perslid p
                        WHERE o.mld_uitvoerende_keys = b.prs_bedrijf_key
                              AND b.prs_bedrijf_key = cp.prs_bedrijf_key
                              AND cp.prs_perslid_key = p.prs_perslid_key
                     GROUP BY o.mld_opdr_key) b
             ON a.mld_opdr_key = b.mld_opdr_key
          LEFT JOIN (  SELECT t.fac_tracking_refkey, t.prs_perslid_key -- Bah!
                         FROM fac_tracking t
                        WHERE t.fac_srtnotificatie_key = 60          -- ORDUPD
                              AND UPPER (t.fac_tracking_oms) LIKE 'OPDRACHT IS GOEDGEKEURD DOOR%'
                              AND NOT EXISTS
                                    (SELECT 1
                                       FROM fac_tracking
                                      WHERE fac_srtnotificatie_key = 60 -- ORDUPD
                                            AND UPPER (fac_tracking_oms) LIKE 'OPDRACHT IS GOEDGEKEURD DOOR%'
                                            AND fac_tracking_refkey = t.fac_tracking_refkey
                                            AND fac_tracking_key < t.fac_tracking_key)) ordgoe
             ON a.mld_opdr_key = ordgoe.fac_tracking_refkey;

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