-- Customer specific once-script UWVA104.
--
-- (c) 2017 Facilitor B.V.
SET ECHO ON
SPOOL xuwva104.lst
SET DEFINE OFF

-- Is gepoogd om met UWVA97 te verwijderen, maar niet verwijderd in uwva_fin.sql (en dan komt 't weer terug)!
DROP VIEW UWVA_V_RAP_CAT1_ACTUAL;
DROP VIEW UWVA_V_RAP_CAT2_ACTUAL;
DROP VIEW UWVA_V_RAP_CAT1_FROZEN;
DROP VIEW UWVA_V_RAP_CAT2_FROZEN;

COMMIT;

-- UWVA#38626: CUST24-noti/afvoeren notificatie (key=474) en job (key=241) naar iMotions!
DELETE FROM fac_notificatie_job WHERE fac_notificatie_job_key = 241;
DELETE FROM fac_srtnotificatie WHERE fac_srtnotificatie_key = 474;
DROP VIEW UWVA_V_NOTI_RES_VC_NEWUPDDEL;

COMMIT;

-- UWVA#38882: MS2.0
DELETE FROM fac_usrrap WHERE fac_usrrap_key IN (1013, 1014, 1045, 1046, 1015, 1016, 1009, 1010, 1011, 1012, 1007, 1008);
DROP VIEW uwva_v_rap_schn_gebouw;
DROP VIEW uwva_v_rap_schz_gebouw;
DROP VIEW uwva_v_rap_schn_gebouwfrozen;
DROP VIEW uwva_v_rap_schz_gebouwfrozen;
DROP VIEW uwva_v_rap_schn_gebgebrfrozen;
DROP VIEW uwva_v_rap_schz_gebgebrfrozen;
DROP VIEW uwva_v_rap_schn_foto;
DROP VIEW uwva_v_rap_schz_foto;
DROP VIEW uwva_v_rap_schn_fotofrozen;
DROP VIEW uwva_v_rap_schz_fotofrozen;
DROP VIEW uwva_v_rap_hvn_ruimtedetails;
DROP VIEW uwva_v_rap_hvz_ruimtedetails;
DROP VIEW uwva_v_rap_catn_actual;
DROP VIEW uwva_v_rap_catz_actual;
DROP VIEW uwva_v_rap_catn_frozen;
--DROP VIEW uwva_v_rap_catz_frozen; -- Is al weg???

COMMIT;

-- Export van SCH-journaalbestand naar WebDAV VERVALLEN!
DROP VIEW uwva_v_export_sch;
DROP VIEW uwva_v_sch_journaalregels;

COMMIT;

CREATE OR REPLACE VIEW uwva_v_rap_sch_gebfrozen_ms20 AS SELECT NULL x FROM DUAL;
INSERT INTO fac_usrrap (fac_usrrap_omschrijving,
                        fac_usrrap_view_name,
                        fac_usrrap_vraagbegindatum,
                        fac_usrrap_vraageinddatum,
                        fac_usrrap_functie,
                        fac_usrrap_info,
                        fac_functie_key,
                        fac_usrrap_autorefresh)
   SELECT 'MS20: Historisch overzicht per gebouw',
          'uwva_v_rap_sch_gebfrozen_ms20',
          0,
          0,
          0,
          'Schoon te maken oppervlakten en leegstand per gebouw (historisch)',
          fac_functie_key,
          0
     FROM fac_functie
    WHERE fac_functie_code = 'WEB_PRSSYS'
          AND NOT EXISTS (SELECT 1 FROM fac_usrrap WHERE LOWER (fac_usrrap_view_name) = 'uwva_v_rap_sch_gebfrozen_ms20');

CREATE OR REPLACE VIEW uwva_v_rap_sch_fotofrozen_ms20 AS SELECT NULL x FROM DUAL;
INSERT INTO fac_usrrap (fac_usrrap_omschrijving,
                        fac_usrrap_view_name,
                        fac_usrrap_vraagbegindatum,
                        fac_usrrap_vraageinddatum,
                        fac_usrrap_functie,
                        fac_usrrap_info,
                        fac_functie_key,
                        fac_usrrap_autorefresh)
   SELECT 'MS20: Historische schoonmaakfoto',
          'uwva_v_rap_sch_fotofrozen_ms20',
          0,
          0,
          0,
          'Schoonmaakfoto (historisch)',
          fac_functie_key,
          0
     FROM fac_functie
    WHERE fac_functie_code = 'WEB_PRSSYS'
          AND NOT EXISTS (SELECT 1 FROM fac_usrrap WHERE LOWER (fac_usrrap_view_name) = 'uwva_v_rap_sch_fotofrozen_ms20');

CREATE OR REPLACE VIEW uwva_v_rap_sch_gebgebrfrozen AS SELECT NULL x FROM DUAL;
INSERT INTO fac_usrrap (fac_usrrap_omschrijving,
                        fac_usrrap_view_name,
                        fac_usrrap_vraagbegindatum,
                        fac_usrrap_vraageinddatum,
                        fac_usrrap_functie,
                        fac_usrrap_info,
                        fac_functie_key,
                        fac_usrrap_autorefresh)
   SELECT 'SCH: Historisch controle-overzicht oppervlakten',
          'uwva_v_rap_sch_gebgebrfrozen',
          0,
          0,
          0,
          'Controle-overzicht van oppervlakten per gebouw en ruimtesoort/gebruik (historisch)',
          fac_functie_key,
          0
     FROM fac_functie
    WHERE fac_functie_code = 'WEB_PRSSYS'
          AND NOT EXISTS (SELECT 1 FROM fac_usrrap WHERE LOWER (fac_usrrap_view_name) = 'uwva_v_rap_sch_gebgebrfrozen');

CREATE OR REPLACE VIEW uwva_v_rap_sch_gebgfrozen_ms20 AS SELECT NULL x FROM DUAL;
INSERT INTO fac_usrrap (fac_usrrap_omschrijving,
                        fac_usrrap_view_name,
                        fac_usrrap_vraagbegindatum,
                        fac_usrrap_vraageinddatum,
                        fac_usrrap_functie,
                        fac_usrrap_info,
                        fac_functie_key,
                        fac_usrrap_autorefresh)
   SELECT 'MS20: Historisch controle-overzicht oppervlakten',
          'uwva_v_rap_sch_gebgfrozen_ms20',
          0,
          0,
          0,
          'Controle-overzicht van oppervlakten per gebouw en ruimtesoort/gebruik (historisch)',
          fac_functie_key,
          0
     FROM fac_functie
    WHERE fac_functie_code = 'WEB_PRSSYS'
          AND NOT EXISTS (SELECT 1 FROM fac_usrrap WHERE LOWER (fac_usrrap_view_name) = 'uwva_v_rap_sch_gebgfrozen_ms20');

CREATE OR REPLACE VIEW uwva_v_rap_cat_frozen_ms20 AS SELECT NULL x FROM DUAL;
INSERT INTO fac_usrrap (fac_usrrap_omschrijving,
                        fac_usrrap_view_name,
                        fac_usrrap_vraagbegindatum,
                        fac_usrrap_vraageinddatum,
                        fac_usrrap_functie,
                        fac_usrrap_info,
                        fac_functie_key,
                        fac_usrrap_autorefresh)
   SELECT 'MS20: Doorbelaste catering per export',
          'uwva_v_rap_cat_frozen_ms20',
          0,
          0,
          0,
          'Historisch overzicht doorbelaste catering per exportmaand',
          fac_functie_key,
          0
     FROM fac_functie
    WHERE fac_functie_code = 'WEB_PRSSYS'
          AND NOT EXISTS (SELECT 1 FROM fac_usrrap WHERE LOWER (fac_usrrap_view_name) = 'uwva_v_rap_cat_frozen_ms20');

CREATE OR REPLACE VIEW uwva_v_rap_cat_frozen_det_ms20 AS SELECT NULL x FROM DUAL;
INSERT INTO fac_usrrap (fac_usrrap_omschrijving,
                        fac_usrrap_view_name,
                        fac_usrrap_vraagbegindatum,
                        fac_usrrap_vraageinddatum,
                        fac_usrrap_functie,
                        fac_usrrap_info,
                        fac_functie_key,
                        fac_usrrap_autorefresh)
   SELECT 'MS20: Doorbelaste catering incl. details',
          'uwva_v_rap_cat_frozen_det_ms20',
          0,
          0,
          0,
          'Historisch overzicht doorbelaste catering per exportmaand inclusief details op reserveringsniveau',
          fac_functie_key,
          0
     FROM fac_functie
    WHERE fac_functie_code = 'WEB_PRSSYS'
          AND NOT EXISTS (SELECT 1 FROM fac_usrrap WHERE LOWER (fac_usrrap_view_name) = 'uwva_v_rap_cat_frozen_det_ms20');

-- UWVA#38957: Voorleveren 2016.3 core-views!
--CREATE_VIEW(mld_v_udr_melding, 1)
CREATE OR REPLACE VIEW mld_v_udr_melding
(
   melding_key,
   meldingnummer,
   melding_regio,
   melding_district,
   melding_locatiecode,
   melding_locatie,
   melding_locatieplaats,
   fclt_3d_locatie_key,
   melding_gebouwcode,
   melding_gebouw,
   melding_verdieping,
   melding_ruimtenr,
   melding_ruimte,
   melding_ordernr,
   kostensoortgroep,
   kostensoort,
   kostenplaats,
   kostenplaats_oms,
   melder,
   melder_key,
   afdeling,
   afdeling_omschrijving,
   fclt_3d_afdeling_key,
   bedrijf_key,
   invoerder,
   meldbron,
   soortmelding,
   fclt_3d_discipline_key,
   productgroep,
   subproductgroep,
   behandelgroep,
   behandelaar,
   behandelaar_key,
   subproductgroepgroep,
   melding_status,
   sla_nvt,
   sla_werkdgn,
   sla_werkuren,
   sla_respijtdgn,
   sla_respijturen,
   sla_accptdgn,
   sla_accpturen,
   plan_uitvoertijd_sla,
   melding_datum,
   melding_einddatum,
   melding_acceptdatum,
   melding_afgemeld,
   melding_accepted,
   doorlooptijd_werkdgn,
   doorlooptijd_werkuren,
   onderwerp,
   vomschrijving,
   melding_opmerking,
   prioriteit,
   prioriteittxt,
   rating,
   rating_opmerking,
   bolletje,
   accept_sla_dagen,
   accept_sla_uren,
   uitvoering_sla_dagen,
   uitvoering_sla_uren,
   afspraak_sla_dagen,
   afspraak_sla_uren,
   accept_sla_optijd,
   uitvoering_sla_optijd,
   afspraak_sla_optijd,
   selfservice
)
AS
   SELECT mld_melding_key,
          meldingnummer,
          alg_regio_omschrijving,
          alg_district_omschrijving,
          locatie,
          locatie_omschrijving,
          locatie_plaats,
          alg_locatie_key,
          gebouw,
          gebouw_naam,
          verdieping,
          ruimte,
          ruimte_omschrijving,
          melding_ordernr,
          kostensoortgroep,
          kostensoort,
          kostenplaats,
          kostenplaats_oms,
          melder,
          prs_perslid_key,
          afdeling,
          afdeling_omschrijving,
          afdeling_key,
          prs_bedrijf_key,
          invoerder,
          meldbron,
          soortmelding,
          ins_discipline_key,
          productgroep,
          subproductgroep,
          behandelgroep,
          behandelaar,
          behandelaar_key,
          subproductgroepgroep,
          status,
          sla_nvt,
          sla_werkdgn,
          sla_werkuren,
          sla_respijtdgn,
          sla_respijturen,
          sla_accptdgn,
          sla_accpturen,
          plan_uitvoertijd_sla,
          datum,
          einddatum,
          acceptdatum,
          afgemeld,
          accepted,
          DECODE (x.t_doorlooptijd.eenheid, 'D', x.t_doorlooptijd.tijdsduur, NULL)
             doorlooptijd_werkdgn,
          DECODE (x.t_doorlooptijd.eenheid, 'U', x.t_doorlooptijd.tijdsduur, NULL)
             doorlooptijd_werkuren,
          onderwerp,
          omschrijving,
          opmerking,
          mld_melding_spoed prioriteit,
          DECODE(mld_melding_spoed,3,lcl.l('lcl_mld_urg_normaal'),1,lcl.l('lcl_mld_urg_kritiek'),2,lcl.l('lcl_mld_urg_hoog'),4,lcl.l('lcl_mld_urg_laag')),
          mld_melding_satisfaction,
          mld_melding_satisfaction_op,
          mld_melding_flag,
          DECODE (x.t_doorlooptijd.eenheid, 'D', acceptdatum - COALESCE (accepted, afgemeld), NULL)
             accept_sla_dagen,
          DECODE (x.t_doorlooptijd.eenheid,
                  'U', (acceptdatum - COALESCE (accepted, afgemeld)) * 24,
                  NULL)
             accept_sla_uren,
          DECODE (
             x.t_doorlooptijd.eenheid,
             'D',
               mld.geteinddatum (mld_melding_key)
             - COALESCE (afgemeld, SYSDATE)
             + COALESCE (sla_respijtdgn, 0),
             NULL)
             uitvoering_sla_dagen,
          DECODE (
             x.t_doorlooptijd.eenheid,
             'U',
             ( (mld.geteinddatum (mld_melding_key) - COALESCE (afgemeld, SYSDATE)) * 24)
             + COALESCE (sla_respijturen, 0),
             NULL)
             uitvoering_sla_uren,
          DECODE (x.t_doorlooptijd.eenheid,
                  'D', einddatum - COALESCE (afgemeld, SYSDATE) + COALESCE (sla_respijtdgn, 0),
                  NULL)
             afspraak_sla_dagen,
          DECODE (
             x.t_doorlooptijd.eenheid,
             'U',
             ( (einddatum - COALESCE (afgemeld, SYSDATE)) * 24) + COALESCE (sla_respijtdgn, 0),
             NULL)
             afspraak_sla_uren,
          CASE
             WHEN acceptdatum IS NULL
                  OR            -- Dan is er geen acceptatietijd gedefinieerd en dus altijd op tijd.
                    DECODE (x.t_doorlooptijd.eenheid,
                            'D', acceptdatum - COALESCE (accepted, afgemeld),
                            0)
                    + DECODE (x.t_doorlooptijd.eenheid,
                              'U', (acceptdatum - COALESCE (accepted, afgemeld)) * 24,
                              0) >= 0
             THEN
                lcl.l ('lcl_yes')
             ELSE
                lcl.l ('lcl_no')
          END
             accept_sla_optijd,
          CASE
             WHEN DECODE (
                     x.t_doorlooptijd.eenheid,
                     'D',
                       mld.geteinddatum (mld_melding_key)
                     - COALESCE (afgemeld, SYSDATE)
                     + COALESCE (sla_respijtdgn, 0),
                     0)
                  + DECODE (
                       x.t_doorlooptijd.eenheid,
                       'U',
                       ( (mld.geteinddatum(mld_melding_key) - COALESCE (afgemeld, SYSDATE)) * 24)
                       + COALESCE (sla_respijturen, 0),
                       0) >= 0
             THEN
                lcl.l ('lcl_yes')
             ELSE
                lcl.l ('lcl_no')
          END
             uitvoering_sla_optijd,
          CASE
             WHEN DECODE (x.t_doorlooptijd.eenheid,
                          'D',
                          einddatum - COALESCE (afgemeld, SYSDATE) + COALESCE (sla_respijtdgn, 0),
                          0)
                  + DECODE (
                       x.t_doorlooptijd.eenheid,
                       'U',
                       ( (einddatum - COALESCE (afgemeld, SYSDATE)) * 24)
                       + COALESCE (sla_respijtdgn, 0),
                       0) >= 0
             THEN
                lcl.l ('lcl_yes')
             ELSE
                lcl.l ('lcl_no')
          END
             afspraak_sla_optijd,
             DECODE(invoerder, melder, lcl.l ('lcl_yes'), lcl.l ('lcl_no')) selfservice
     FROM (SELECT m.mld_melding_key,
                  m.prs_perslid_key,
                  sd.ins_srtdiscipline_prefix || m.mld_melding_key meldingnummer,
                  alg_regio_omschrijving,
                  alg_district_omschrijving,
                  alg_locatie_code locatie,
                  alg_locatie_omschrijving locatie_omschrijving,
                  alg_locatie_plaats locatie_plaats,
                  l.alg_locatie_key,
                  og.alg_gebouw_code gebouw,
                  og.alg_gebouw_naam gebouw_naam,
                  og.alg_verdieping_code verdieping,
                  og.alg_ruimte_nr ruimte,
                  og.alg_ruimte_omschrijving ruimte_omschrijving,
                  m.mld_melding_ordernr melding_ordernr,
                  (SELECT ksg.prs_kostensoortgrp_oms
                     FROM prs_kostensoortgrp ksg, prs_kostensoort ks
                    WHERE ksg.prs_kostensoortgrp_key = ks.prs_kostensoortgrp_key
                          AND ks.prs_kostensoort_key =
                                (SELECT COALESCE (sm.prs_kostensoort_key, disc.prs_kostensoort_key)
                                   FROM mld_stdmelding sm, mld_discipline disc
                                  WHERE sm.mld_ins_discipline_key = disc.ins_discipline_key
                                        AND sm.mld_stdmelding_key = s.mld_stdmelding_key))
                     kostensoortgroep,
                  (SELECT ks.prs_kostensoort_oms
                     FROM prs_kostensoort ks
                    WHERE ks.prs_kostensoort_key =
                             (SELECT COALESCE (sm.prs_kostensoort_key, disc.prs_kostensoort_key)
                                FROM mld_stdmelding sm, mld_discipline disc
                               WHERE sm.mld_ins_discipline_key = disc.ins_discipline_key
                                     AND sm.mld_stdmelding_key = s.mld_stdmelding_key))
                     kostensoort,
                  (SELECT k.prs_kostenplaats_nr
                     FROM prs_kostenplaats k
                    WHERE k.prs_kostenplaats_key = m.prs_kostenplaats_key)
                     kostenplaats,
                  (SELECT k.prs_kostenplaats_omschrijving
                     FROM prs_kostenplaats k
                    WHERE k.prs_kostenplaats_key = m.prs_kostenplaats_key)
                     kostenplaats_oms,
                  (SELECT prs_perslid_naam_full
                     FROM prs_v_perslid_fullnames_all pf
                    WHERE pf.prs_perslid_key = m.prs_perslid_key)
                     melder,
                  (SELECT prs_afdeling_naam
                     FROM prs_afdeling afd, prs_perslid pp
                    WHERE afd.prs_afdeling_key = pp.prs_afdeling_key
                          AND pp.prs_perslid_key = m.prs_perslid_key)
                     afdeling,
                  (SELECT prs_afdeling_omschrijving
                     FROM prs_afdeling afd, prs_perslid pp
                    WHERE afd.prs_afdeling_key = pp.prs_afdeling_key
                          AND pp.prs_perslid_key = m.prs_perslid_key)
                     afdeling_omschrijving,
                  (SELECT prs_afdeling_key
                     FROM prs_perslid pp
                    WHERE pp.prs_perslid_key = m.prs_perslid_key)
                     afdeling_key,
                  (SELECT prs_bedrijf_key
                     FROM prs_v_afdeling pva, prs_perslid pp
                    WHERE pva.prs_afdeling_key = pp.prs_afdeling_key
                          AND pp.prs_perslid_key = m.prs_perslid_key)
                     prs_bedrijf_key,
                  (SELECT prs_perslid_naam_full
                     FROM prs_v_perslid_fullnames_all pf
                    WHERE pf.prs_perslid_key = mld.getmeldinguser (m.mld_melding_key))
                     invoerder,
                  (SELECT mb.mld_meldbron_omschrijving
                     FROM mld_meldbron mb
                    WHERE mb.mld_meldbron_key = m.mld_meldbron_key)
                     meldbron,
                  m.mld_meldbron_key,
                  sd.ins_srtdiscipline_key ins_srtdiscipline_key,
                  sd.ins_srtdiscipline_omschrijving soortmelding,
                  md.ins_discipline_key ins_discipline_key,
                  md.ins_discipline_omschrijving productgroep,
                  s.mld_stdmelding_omschrijving subproductgroep,
                  smg.mld_stdmeldinggroep_naam subproductgroepgroep,
                  mbg.mld_behandelgroep_naam behandelgroep,
                  (SELECT prs_perslid_naam_full
                     FROM prs_v_perslid_fullnames_all pf
                    WHERE pf.prs_perslid_key = m.mld_melding_behandelaar_key)
                     behandelaar,
                  m.mld_melding_behandelaar_key behandelaar_key,
                  (SELECT mld_statuses_omschrijving
                     FROM mld_statuses sta
                    WHERE sta.mld_statuses_key = m.mld_melding_status)
                     status,
                  CASE
                     WHEN m.mld_melding_einddatum >
                             COALESCE (fac.gettrackingdate ('MLDAFM', m.mld_melding_key),
                                       fac.gettrackingdate ('MLDREJ', m.mld_melding_key),
                                       SYSDATE)
                     THEN
                        1
                     ELSE
                        0
                  END
                     plan_uitvoertijd_sla,
                  CASE
                     WHEN m.mld_melding_indult = 1 OR s.mld_stdmelding_slabewaken = 0 THEN 1
                     ELSE 0
                  END
                     sla_nvt,
                  DECODE (m.mld_melding_t_uitvoertijd.eenheid,
                          'D', m.mld_melding_t_uitvoertijd.tijdsduur,
                          NULL)
                     sla_werkdgn,
                  DECODE (m.mld_melding_t_uitvoertijd.eenheid,
                          'U', m.mld_melding_t_uitvoertijd.tijdsduur,
                          NULL)
                     sla_werkuren,
                  DECODE (m.mld_melding_t_respijt.eenheid,
                          'D', m.mld_melding_t_respijt.tijdsduur,
                          NULL)
                     sla_respijtdgn,
                  DECODE (m.mld_melding_t_respijt.eenheid,
                          'U', m.mld_melding_t_respijt.tijdsduur,
                          NULL)
                     sla_respijturen,
                  DECODE (m.mld_melding_t_accepttijd.eenheid,
                          'D', m.mld_melding_t_accepttijd.tijdsduur,
                          NULL)
                     sla_accptdgn,
                  DECODE (m.mld_melding_t_accepttijd.eenheid,
                          'U', m.mld_melding_t_accepttijd.tijdsduur,
                          NULL)
                     sla_accpturen,
                  m.mld_melding_datum datum,
                  m.mld_melding_einddatum einddatum,
                  mld.getacceptdatum (m.mld_melding_datum,
                                      m.mld_stdmelding_key,
                                      og.alg_onroerendgoed_keys)
                     acceptdatum,
                  COALESCE (mld.getmeldingstatusdate (m.mld_melding_key, 5),
                            mld.getmeldingstatusdate (m.mld_melding_key, 1))
                     afgemeld,
                  COALESCE (mld.getmeldingstatusdate (m.mld_melding_key, 4),
                            mld.getmeldingstatusdate (m.mld_melding_key, 1))
                     accepted,
                  mld.getactualuitvoer (m.mld_melding_key) t_doorlooptijd,
                  m.mld_melding_onderwerp onderwerp,
                  m.mld_melding_omschrijving omschrijving,
                  m.mld_melding_opmerking opmerking,
                  m.mld_melding_spoed,
                  m.mld_melding_satisfaction,
                  m.mld_melding_satisfaction_op,
                  m.mld_melding_flag
             FROM mld_melding m,
                  mld_stdmelding s,
                  alg_locatie l,
                  alg_district d,
                  alg_regio r,
                  alg_v_allonrgoed_gegevens og,
                  mld_discipline md,
                  mld_disc_params mdp,
                  mld_behandelgroep mbg,
                  ins_srtdiscipline sd,
                  mld_stdmeldinggroep smg
            WHERE     s.mld_stdmelding_key = m.mld_stdmelding_key
                  AND m.mld_alg_locatie_key = l.alg_locatie_key(+)
                  AND sd.ins_srtdiscipline_key = md.ins_srtdiscipline_key
                  AND md.ins_discipline_key = s.mld_ins_discipline_key
                  AND md.ins_discipline_key = mdp.mld_ins_discipline_key
                  AND s.mld_stdmeldinggroep_key = smg.mld_stdmeldinggroep_key(+)
                  AND mdp.mld_behandelgroep_key = mbg.mld_behandelgroep_key(+)
                  AND l.alg_district_key = d.alg_district_key(+)
                  AND d.alg_regio_key = r.alg_regio_key(+)
                  AND m.mld_alg_onroerendgoed_keys = og.alg_onroerendgoed_keys(+)
                  AND m.fac_activiteit_key IS NULL
                  AND m.mld_melding_datum >= TO_DATE ('01-01-2010', 'DD-MM-YYYY')) x;

--CREATE_VIEW(mld_v_udr_opdracht, 1)
CREATE OR REPLACE VIEW mld_v_udr_opdracht
(
   opdracht_key,
   opdracht_nummer,
   opdracht_regio,
   opdracht_district,
   opdracht_locatie_code,
   opdracht_locatie,
   opdracht_locatieplaats,
   fclt_3d_locatie_key,
   opdracht_gebouwcode,
   opdracht_gebouw,
   opdracht_verdieping,
   opdracht_ruimtenr,
   opdracht_ruimte,
   opdracht_kostenplaats,
   opdracht_kostenplaats_oms,
   melding_key,
   opdracht_type,
   opdracht_volgnummer,
   opdracht_status,
   opdracht_duur_gepland,
   opdracht_datum,
   opdracht_einddatum,
   opdracht_plandatum,
   opdracht_acceptdatum,
   opdracht_afgemeld,
   opdracht_doorlooptijd,
   opdracht_accepttijd,
   opdracht_omschrijving,
   opdracht_opmerking,
   opdracht_uitvoerende,
   opdracht_contract,
   opdracht_contract_versie,
   opdracht_contactpersoon,
   opdracht_uren,
   opdracht_correctie,
   opdracht_materiaal,
   opdracht_uurtarief,
   opdracht_kosten
)
AS
   SELECT mld_opdr_key,
          ins_srtdiscipline_prefix||TO_CHAR (mld_melding_key) || '/' || opdracht_volgnummer,
          alg_regio_omschrijving,
          alg_district_omschrijving,
          locatie,
          locatie_omschrijving,
          locatie_plaats,
          alg_locatie_key,
          gebouw,
          gebouw_naam,
          verdieping,
          ruimte,
          ruimte_omschrijving,
          kostenplaats,
          kostenplaats_oms,
          mld_melding_key,
          opdracht_type,
          opdracht_volgnummer,
          opdracht_status,
          opdracht_duur_gepland,
          opdracht_datum,
          opdracht_einddatum,
          opdracht_plandatum,
          opdracht_acceptdatum,
          opdracht_afgemeld,
          opdracht_doorlooptijd,
          opdracht_accepttijd,
          opdracht_omschrijving,
          opdracht_opmerking,
          opdracht_uitvoerende,
          opdracht_contract,
          opdracht_contract_versie,
          opdracht_contactpersoon,
          opdracht_uren,
          opdracht_correctie,
          opdracht_materiaal,
          opdracht_uurtarief,
          opdracht_kosten
     FROM (SELECT alg_regio_omschrijving,
                  alg_district_omschrijving,
                  alg_locatie_code locatie,
                  alg_locatie_omschrijving locatie_omschrijving,
                  alg_locatie_plaats locatie_plaats,
                  l.alg_locatie_key,
                  og.alg_gebouw_code gebouw,
                  og.alg_gebouw_naam gebouw_naam,
                  og.alg_verdieping_code verdieping,
                  og.alg_ruimte_nr ruimte,
                  og.alg_ruimte_omschrijving ruimte_omschrijving,
                  (SELECT k.prs_kostenplaats_nr
                     FROM prs_kostenplaats k
                    WHERE k.prs_kostenplaats_key = o.prs_kostenplaats_key)
                     kostenplaats,
                  (SELECT k.prs_kostenplaats_omschrijving
                     FROM prs_kostenplaats k
                    WHERE k.prs_kostenplaats_key = o.prs_kostenplaats_key)
                     kostenplaats_oms,
                  o.mld_opdr_key,
                  o.mld_melding_key,
                  top.mld_typeopdr_key,
                  top.mld_typeopdr_omschrijving opdracht_type,
                  o.mld_opdr_bedrijfopdr_volgnr opdracht_volgnummer,
                  (SELECT mld_statusopdr_omschrijving
                     FROM mld_statusopdr sta
                    WHERE sta.mld_statusopdr_key = o.mld_statusopdr_key)
                     opdracht_status,
                  fac.count_work_days (o.mld_opdr_datumbegin, o.mld_opdr_einddatum)
                     opdracht_duur_gepland,
                  o.mld_opdr_datumbegin opdracht_datum,
                  o.mld_opdr_einddatum opdracht_einddatum,
                  o.mld_opdr_plandatum opdracht_plandatum,
                  COALESCE(mld.getopdrachtstatusdate (o.mld_opdr_key, 8), mld.getopdrachtstatusdate (o.mld_opdr_key, 1)) opdracht_acceptdatum,
                  mld.getopdrachtstatusdate (o.mld_opdr_key, 6) opdracht_afgemeld,
                  fac.count_work_days (o.mld_opdr_datumbegin,
                                       mld.getopdrachtstatusdate (o.mld_opdr_key, 6))
                     opdracht_doorlooptijd,
                  COALESCE (fac.count_Work_Days (mld.getopdrachtstatusdate (o.mld_opdr_key, 5),
                                                 COALESCE(mld.getopdrachtstatusdate (o.mld_opdr_key, 8), mld.getopdrachtstatusdate (o.mld_opdr_key, 6))),
                            fac.count_Work_Days (mld.getopdrachtstatusdate (o.mld_opdr_key, 5),
                                                 mld.getopdrachtstatusdate (o.mld_opdr_key, 1)))
                    opdracht_accepttijd,
                  o.mld_opdr_omschrijving opdracht_omschrijving,
                  o.mld_opdr_opmerking opdracht_opmerking,
                  (SELECT naam
                     FROM mld_v_uitvoerende u
                    WHERE u.mld_uitvoerende_key = o.mld_uitvoerende_keys)
                     opdracht_uitvoerende,
                  c.cnt_contract_nummer_intern opdracht_contract,
                  c.cnt_contract_versie opdracht_contract_versie,
                  o.mld_opdr_contactpersoon opdracht_contactpersoon,
                  o.mld_opdr_uren opdracht_uren,
                  o.mld_opdr_kosten - o.mld_opdr_materiaal - (o.mld_opdr_uren * o.mld_opdr_uurloon)
                     opdracht_correctie,
                  o.mld_opdr_materiaal opdracht_materiaal,
                  o.mld_opdr_uurloon opdracht_uurtarief,
                  o.mld_opdr_kosten opdracht_kosten,
                  sdi.ins_srtdiscipline_prefix
             FROM alg_locatie l,
                  alg_district d,
                  alg_regio r,
                  alg_v_allonrgoed_gegevens og,
                  mld_opdr o,
                  mld_typeopdr top,
                  mld_melding m,
                  mld_stdmelding stdm,
                  ins_tab_discipline di,
                  ins_srtdiscipline sdi,
                  cnt_contract c
            WHERE     m.mld_alg_locatie_key = l.alg_locatie_key(+)
                  AND l.alg_district_key = d.alg_district_key(+)
                  AND d.alg_regio_key = r.alg_regio_key(+)
                  AND m.mld_alg_onroerendgoed_keys = og.alg_onroerendgoed_keys(+)
                  AND o.cnt_contract_key = c.cnt_contract_key(+)
                  AND m.mld_stdmelding_key = stdm.mld_stdmelding_key
                  AND stdm.mld_ins_discipline_key = di.ins_discipline_key
                  AND di.ins_srtdiscipline_key = sdi.ins_srtdiscipline_key
                  AND o.mld_melding_key = m.mld_melding_key
                  AND o.mld_typeopdr_key = top.mld_typeopdr_key(+)
                  AND o.mld_opdr_datumbegin >= TO_DATE ('01-01-2010', 'DD-MM-YYYY')) x;

-- Noot: SELECT * is een slecht gebruik en leidt tot onoplosbare conflicten
--CREATE_VIEW(mld_v_udr_meldingopdracht, 1)
CREATE OR REPLACE VIEW mld_v_udr_meldingopdracht
AS
SELECT
   m.melding_key,
   m.meldingnummer,
   m.melding_regio,
   m.melding_district,
   m.melding_locatiecode,
   m.melding_locatie,
   m.melding_locatieplaats,
   m.fclt_3d_locatie_key,
   m.melding_gebouwcode,
   m.melding_gebouw,
   m.melding_verdieping,
   m.melding_ruimtenr,
   m.melding_ruimte,
   m.melding_ordernr,
   m.kostensoortgroep,
   m.kostensoort,
   m.kostenplaats,
   m.kostenplaats_oms,
   m.melder,
   m.melder_key,
   m.afdeling,
   m.afdeling_omschrijving,
   m.fclt_3d_afdeling_key,
   m.bedrijf_key,
   m.invoerder,
   m.meldbron,
   m.soortmelding,
   m.fclt_3d_discipline_key,
   m.productgroep,
   m.subproductgroep,
   m.behandelgroep,
   m.behandelaar,
   m.behandelaar_key,
   m.subproductgroepgroep,
   m.melding_status,
   m.sla_nvt,
   m.sla_werkdgn,
   m.sla_werkuren,
   m.sla_respijtdgn,
   m.sla_respijturen,
   m.sla_accptdgn,
   m.sla_accpturen,
   m.plan_uitvoertijd_sla,
   m.melding_datum,
   m.melding_einddatum,
   m.melding_acceptdatum,
   m.melding_afgemeld,
   m.melding_accepted,
   m.doorlooptijd_werkdgn,
   m.doorlooptijd_werkuren,
   m.onderwerp,
   m.vomschrijving,
   m.melding_opmerking,
   m.prioriteit,
   m.prioriteittxt,
   m.rating,
   m.rating_opmerking,
   m.bolletje,
   m.accept_sla_dagen,
   m.accept_sla_uren,
   m.uitvoering_sla_dagen,
   m.uitvoering_sla_uren,
   m.afspraak_sla_dagen,
   m.afspraak_sla_uren,
   m.accept_sla_optijd,
   m.uitvoering_sla_optijd,
   m.afspraak_sla_optijd,
   m.selfservice,
   o.opdracht_key,
   o.opdracht_nummer,
   o.opdracht_regio,
   o.opdracht_district,
   o.opdracht_locatie_code,
   o.opdracht_locatie,
   o.opdracht_locatieplaats,
   --o.fclt_3d_locatie_key,
   o.opdracht_gebouwcode,
   o.opdracht_gebouw,
   o.opdracht_verdieping,
   o.opdracht_ruimtenr,
   o.opdracht_ruimte,
   o.opdracht_kostenplaats,
   o.opdracht_kostenplaats_oms,
   --o.melding_key,
   o.opdracht_type,
   o.opdracht_volgnummer,
   o.opdracht_status,
   o.opdracht_duur_gepland,
   o.opdracht_datum,
   o.opdracht_einddatum,
   o.opdracht_plandatum,
   o.opdracht_acceptdatum,
   o.opdracht_afgemeld,
   o.opdracht_doorlooptijd,
   o.opdracht_accepttijd,
   o.opdracht_omschrijving,
   o.opdracht_opmerking,
   o.opdracht_uitvoerende,
   o.opdracht_contract,
   o.opdracht_contract_versie,
   o.opdracht_contactpersoon,
   o.opdracht_uren,
   o.opdracht_correctie,
   o.opdracht_materiaal,
   o.opdracht_uurtarief,
   o.opdracht_kosten
 FROM mld_v_udr_melding m, mld_v_udr_opdracht o
 WHERE m.melding_key = o.melding_key(+);

-- UDR met kenmerken (1 record per kenmerk met waarde in kolom c, n of d afhankelijk van type
-- Geen kenmerk, geen record.
--CREATE_VIEW(mld_v_udr_meldingkenmerk_cnd, 1)
CREATE OR REPLACE VIEW mld_v_udr_meldingkenmerk_cnd
AS
   SELECT m.*,
       lcl.x ('skm.mld_srtkenmerk_omschrijving',
              skm.mld_srtkenmerk_key,
              mld_srtkenmerk_omschrijving)
          kenmerk,
       CASE
          WHEN skm.mld_srtkenmerk_kenmerktype = 'R' OR skm.mld_srtkenmerk_kenmerktype = 'S'
          THEN
             fac.getdomeinwaarde (skm.fac_kenmerkdomein_key, km.mld_kenmerkmelding_waarde)
          WHEN skm.mld_srtkenmerk_kenmerktype = 'C' OR skm.mld_srtkenmerk_kenmerktype = 'F'
          THEN
             km.mld_kenmerkmelding_waarde
          ELSE
             NULL
       END
          waarde_c,
       CASE
          WHEN skm.mld_srtkenmerk_kenmerktype IN ('N', 'B')
          THEN TO_NUMBER (km.mld_kenmerkmelding_waarde)
          ELSE TO_NUMBER (NULL)
       END
          waarde_n,
       CASE
          WHEN skm.mld_srtkenmerk_kenmerktype = 'D'
          THEN
             TO_DATE (km.mld_kenmerkmelding_waarde, 'DD-MM-YYYY')
          ELSE
             TO_DATE (NULL)
       END
          waarde_d
  FROM mld_v_udr_melding M,
       mld_kenmerkmelding km,
       mld_kenmerk K,
       mld_srtkenmerk skm
 WHERE     km.mld_melding_key = m.melding_key
       AND km.mld_kenmerkmelding_verwijder IS NULL
       AND k.mld_kenmerk_verwijder IS NULL
       AND skm.mld_srtkenmerk_verwijder IS NULL
       AND km.mld_kenmerk_key = k.mld_kenmerk_key(+)
       AND k.mld_srtkenmerk_key = skm.mld_srtkenmerk_key(+);

COMMIT;
BEGIN adm.systrackscriptId('$Id$'); END;
/
SPOOL OFF

--@@uwva_prs.sql
@@uwva_fin.sql
@@uwva_hv.sql
@@uwva_misc.sql

BEGIN fac.registercustversion('UWVA', 104); END;
/
COMMIT;
