#ifdef  MLD // 13-03-96 AH
/*
 * $Revision$
 * $Id$
 */

CREATE_VIEW(MLD_discipline, 0)
AS
 SELECT * FROM ins_tab_discipline WHERE ins_discipline_module = 'MLD';

DEFINIEER_VIEW_AANWEZIG(MLD_discipline, ins_discipline_verwijder,
    MLD_v_aanwezigdiscipline,0);


DEFINIEER_VIEW_AANWEZIG(mld_oorzaak,
                        mld_oorzaak_verwijder,
                        mld_v_aanwezigoorzaak,
                        0);
DEFINIEER_VIEW_AANWEZIG(mld_meldbron,
                        mld_meldbron_verwijder,
                        mld_v_aanwezigmeldbron,
                        0);
DEFINIEER_VIEW_AANWEZIG(mld_standaardopdr,
                        mld_standaardopdr_verwijder,
                        mld_v_aanwezigstandaardopdr,
                        0);

/* LET OP (FSN#21553)
 * Deze twee views lijken qua naam een tabel, maar is het technisch niet
 * Hij levert de statustekst in de juiste taal op, van een specifieke statuscode
 * Voorheen was dit een tabel met deze naam, en werd deze initieel gevuld. Dit is
 * hiermee dus vanwege de i18n veranderd.
 */
CREATE_VIEW(mld_statuses, 0)
AS
SELECT   fac_code2label_code mld_statuses_key,
         COALESCE (fac_locale_xsl_cust, fac_locale_xsl_tekst) mld_statuses_omschrijving
  FROM   fac_locale_xsl fl, fac_code2label fs
 WHERE       fl.fac_locale_xsl_label = fac_code2label_label
         AND fac_code2label_domein = 'melding'
         AND fac_locale_xsl_lang = lcl.getuserlanguage ();

CREATE_VIEW(mld_statusopdr, 0)
AS
SELECT   fac_code2label_code mld_statusopdr_key,
         COALESCE (fac_locale_xsl_cust, fac_locale_xsl_tekst) mld_statusopdr_omschrijving
  FROM   fac_locale_xsl fl, fac_code2label fs
 WHERE       fl.fac_locale_xsl_label = fac_code2label_label
         AND fac_code2label_domein = 'opdracht'
         AND fac_locale_xsl_lang = lcl.getuserlanguage ();

/*
   View met alle sleutels van de gemeenschappelijke sequence
   prs_s_prs_uitvoerende_keys
*/

CREATE_VIEW(mld_v_aanweziguitvoerende,0)
(  mld_alluitvoerende_keys,
   prs_bedrijf_key,
   prs_perslid_key,
   prs_srtperslid_key,
   mld_type) AS
   SELECT prs_v_uitvoerendebedrijf.prs_bedrijf_key,
          prs_v_uitvoerendebedrijf.prs_bedrijf_key,
          TO_NUMBER(NULL),
          TO_NUMBER(NULL),
          'B'
   FROM prs_v_uitvoerendebedrijf
   WHERE prs_bedrijf_key>0
   UNION
   SELECT prs_v_aanwezigperslid.prs_perslid_key,
          TO_NUMBER(NULL),
          prs_v_aanwezigperslid.prs_perslid_key,
          prs_v_aanwezigperslid.prs_srtperslid_key,
          'P'
   FROM prs_v_aanwezigperslid
   WHERE prs_perslid_key >0
   UNION
   SELECT prs_v_aanwezigsrtperslid.prs_srtperslid_key,
          prs_v_aanwezigsrtperslid.prs_bedrijf_key,
          TO_NUMBER(NULL),
          prs_v_aanwezigsrtperslid.prs_srtperslid_key,
          'S'
   FROM prs_v_aanwezigsrtperslid;

/*
   View met alle sleutels van de uitvoerenden
   type: 'B' = bedrijf
         'P' = perslid
         //'S' = srtperslid bij bedrijf
*/
/* PF: op eigen houtje aangepast, achterhaalde onzin eruitgehaald */
CREATE_VIEW(mld_v_uitvoerende,0) (mld_uitvoerende_key, naam, type, intern) AS
SELECT B.prs_bedrijf_key,
       B.prs_bedrijf_naam,
       'B',
       COALESCE(prs_bedrijf_intern, 0)
FROM prs_bedrijf B
UNION ALL
SELECT P.prs_perslid_key,
       p.prs_perslid_naam||DECODE(p.prs_perslid_voorletters,null,'',', '||p.prs_perslid_voorletters)||DECODE(p.prs_perslid_tussenvoegsel,null,'',' '||p.prs_perslid_tussenvoegsel)||DECODE(p.prs_perslid_voornaam,null,'',' ('||p.prs_perslid_voornaam||')'),
       'P',
       1
FROM prs_perslid P;

/*
 *  View voor de form mld_215.fmb
 */
CREATE_VIEW(mld_v_onroerendgoed_locatie,0) ( alg_onroerendgoed_keys,
                                          alg_onrgoed_omschrijving,
                                          alg_locatie_key,
                                          alg_gebouw_key,
                                          alg_terreinsector_key,
                                          type ) AS
    SELECT ALG_O.alg_onroerendgoed_keys,
           ALG_G.alg_gebouw_omschrijving,
           ALG_G.alg_locatie_key,
           ALG_G.alg_gebouw_key,
           to_number(NULL),
           'G'
    FROM alg_v_onroerendgoed ALG_O, alg_v_aanweziggebouw ALG_G
    WHERE ALG_O.alg_gebouw_key = ALG_G.alg_gebouw_key
    UNION
    SELECT ALG_O.alg_onroerendgoed_keys,
           ALG_T.alg_terreinsector_omschrijving,
           ALG_T.alg_locatie_key,
           to_number(NULL),
           ALG_T.alg_terreinsector_key,
           'T'
    FROM alg_v_onroerendgoed ALG_O, alg_v_aanwezigterreinsector ALG_T
    WHERE ALG_O.alg_terreinsector_key = ALG_T.alg_terreinsector_key;

CREATE_VIEW(mld_v_ins_discipline, 0) AS
  SELECT * FROM MLD_v_aanwezigdiscipline;

DEFINIEER_VIEW_AANWEZIG(mld_melding_object, mld_melding_object_verwijder,
    mld_v_aanwezigmelding_object,0);

DEFINIEER_VIEW_AANWEZIG(mld_kenmerkmelding, mld_kenmerkmelding_verwijder,
mld_v_aanwezigkenmerkmelding, 0);

DEFINIEER_VIEW_AANWEZIG(mld_adres, mld_adres_verwijder,
mld_v_aanwezigadres, 0);

CREATE_VIEW(mld_v_afleveradres, 0) AS
 SELECT * FROM mld_v_aanwezigadres WHERE mld_adres_afleveradres = 1;

CREATE_VIEW(mld_v_factuuradres, 0) AS
 SELECT * FROM mld_v_aanwezigadres WHERE mld_adres_factuuradres = 1;

DEFINIEER_VIEW_AANWEZIG(mld_kenmerkopdr, mld_kenmerkopdr_verwijder,
mld_v_aanwezigkenmerkopdr, 0);

CREATE_VIEW(mld_v_qvw_algemeen, 0) (mld_melding_key,
                                meldingnummer,
                                alg_district_omschrijving,
                                locatie,
                                locatie_omschrijving,
                                alg_locatie_key,
                                gebouw,
                                gebouw_naam,
                                verdieping,
                                ruimtenr,
                                ruimte_omschrijving,
                                melding_ordernr,
                                kostensoortgroep,
                                kostensoort,
                                kostenplaats,
                                kostenplaats_oms,
                                melder,
                                afdeling,
                                afdeling_omschrijving,
                                prs_bedrijf_key,
                                invoerder,
                                meldbron,
                                meldbron_key,
                                ins_srtdiscipline_key,
                                soortmelding,
                                ins_discipline_key,
                                productgroep,
                                mld_stdmelding_key,
                                subproductgroep,
                                mld_stdmeldinggroep_key,
                                mld_behandelgroep_key,
                                behandelgroep,
                                behandelaar,
                                subproductgroepgroep,
                                status,
                                sla_nvt,
                                sla_werkdgn,
                                sla_werkuren,
                                sla_respijtdgn,
                                sla_respijturen,
                                sla_accptdgn,
                                sla_accpturen,
                                plan_uitvoertijd_sla,
                                datum,
                                afgemeld,
                                doorlooptijd_werkdgn,
                                doorlooptijd_werkuren,
                                omschrijving,
                                opmerking,
                                mld_typeopdr_key,
                                opdracht_type,
                                opdracht_volgnummer,
                                opdracht_status,
                                opdracht_duur_gepland,
                                opdracht_datum,
                                opdracht_afgemeld,
                                opdracht_doorlooptijd,
                                opdracht_omschrijving,
                                opdracht_opmerking,
                                opdracht_uitvoerende,
                                opdracht_contract,
                                opdracht_contactpersoon,
                                opdracht_uren,
                                opdracht_correctie,
                                opdracht_materiaal,
                                opdracht_uurtarief,
                                opdracht_kosten
                               )
AS
   SELECT mld_melding_key, meldingnummer, alg_district_omschrijving, locatie, locatie_omschrijving, alg_locatie_key, gebouw, gebouw_naam, verdieping, ruimte, ruimte_omschrijving,
          melding_ordernr, kostensoortgroep, kostensoort, kostenplaats, kostenplaats_oms, melder, afdeling, afdeling_omschrijving,prs_bedrijf_key, invoerder, meldbron, mld_meldbron_key,
          ins_srtdiscipline_key, soortmelding, ins_discipline_key, productgroep, mld_stdmelding_key, subproductgroep, mld_stdmeldinggroep_key, mld_behandelgroep_key, behandelgroep, behandelaar,
          subproductgroepgroep, status, sla_nvt, sla_werkdgn, sla_werkuren, sla_respijtdgn, sla_respijturen, sla_accptdgn, sla_accpturen, plan_uitvoertijd_sla, datum, afgemeld,
          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,
          SUBSTR (omschrijving, 1, 512), SUBSTR (opmerking, 1, 512),
          mld_typeopdr_key, opdracht_type, opdracht_volgnummer, opdracht_status, opdracht_duur_gepland, opdracht_datum, opdracht_afgemeld,
          opdracht_doorlooptijd, SUBSTR (opdracht_omschrijving, 1, 512), SUBSTR (opdracht_opmerking, 1, 512),
          opdracht_uitvoerende, opdracht_contract, opdracht_contactpersoon, opdracht_uren, opdracht_correctie,
          opdracht_materiaal, opdracht_uurtarief, opdracht_kosten
     FROM (SELECT m.mld_melding_key, sd.ins_srtdiscipline_prefix||m.mld_melding_key meldingnummer, alg_district_omschrijving, alg_locatie_code locatie,
                  alg_locatie_omschrijving locatie_omschrijving, 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_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_key,
                  s.mld_stdmelding_omschrijving subproductgroep,
                  smg.mld_stdmeldinggroep_key,
                  smg.mld_stdmeldinggroep_naam subproductgroepgroep,
                  mbg.mld_behandelgroep_key,
                  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,
                  (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,
                  TRUNC (m.mld_melding_datum) datum,
                  COALESCE (TRUNC (mld.getmeldingstatusdate(m.mld_melding_key,5)),
                            TRUNC (mld.getmeldingstatusdate(m.mld_melding_key,1))
                           )
                     afgemeld,
                  mld.getactualuitvoer(m.mld_melding_key) t_doorlooptijd,
                  m.mld_melding_omschrijving omschrijving,
                  m.mld_melding_opmerking opmerking,
                  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,
                  TRUNC (o.mld_opdr_datumbegin) opdracht_datum,
                  TRUNC (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,
                  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, NULL opdracht_contract,
                  NULL 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
             FROM mld_melding m,
                  mld_stdmelding s,
                  alg_locatie l,
                  alg_district d,
                  alg_v_allonrgoed_gegevens og,
                  mld_discipline md,
                  mld_disc_params mdp,
                  mld_behandelgroep mbg,
                  ins_srtdiscipline sd,
                  mld_opdr o,
                  mld_typeopdr top,
                  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 m.mld_alg_onroerendgoed_keys = og.alg_onroerendgoed_keys(+)
              AND m.mld_melding_key = o.mld_melding_key(+)
              AND O.MLD_TYPEOPDR_KEY=top.MLD_TYPEOPDR_KEY(+)
              AND m.mld_melding_datum >= TO_DATE ('01-01-2000', 'DD-MM-YYYY')) x;


CREATE_VIEW(mld_v_qvw_locale, 0)
(fac_locale_kolomkeyval, fac_locale_kolomnaam, fac_locale_tekst_nl, fac_locale_tekst_en, fac_locale_tekst_de, fac_locale_tekst_fr)
AS
    WITH mqa AS (SELECT DISTINCT ins_srtdiscipline_key,
                                 soortmelding,
                                 ins_discipline_key,
                                 productgroep,
                                 mld_stdmelding_key,
                                 subproductgroep,
                                 mld_stdmeldinggroep_key,
                                 subproductgroepgroep,
                                 mld_behandelgroep_key,
                                 behandelgroep,
                                 mld_typeopdr_key,
                                 opdracht_type
                   FROM mld_v_qvw_algemeen)
    SELECT DISTINCT mqa.ins_srtdiscipline_key,
                    'INS_SRTDISCIPLINE_OMSCHRIJVING',
                    mqa.soortmelding,
                    COALESCE (en.fac_locale_tekst, mqa.soortmelding),
                    COALESCE (de.fac_locale_tekst, mqa.soortmelding),
                    COALESCE (fr.fac_locale_tekst, mqa.soortmelding)
      FROM fac_locale en,
           fac_locale de,
           fac_locale fr,
           mqa
     WHERE     mqa.ins_srtdiscipline_key = en.fac_locale_kolomkeyval(+)
           AND en.fac_locale_kolomnaam(+) = 'INS_SRTDISCIPLINE_OMSCHRIJVING'
           AND en.fac_locale_lang(+) = 'EN'
           AND mqa.ins_srtdiscipline_key = de.fac_locale_kolomkeyval(+)
           AND de.fac_locale_kolomnaam(+) = 'INS_SRTDISCIPLINE_OMSCHRIJVING'
           AND de.fac_locale_lang(+) = 'DE'
           AND mqa.ins_srtdiscipline_key = fr.fac_locale_kolomkeyval(+)
           AND fr.fac_locale_kolomnaam(+) = 'INS_SRTDISCIPLINE_OMSCHRIJVING'
           AND fr.fac_locale_lang(+) = 'FR'
    UNION ALL
    SELECT DISTINCT mqa.ins_discipline_key,
                    'INS_DISCIPLINE_OMSCHRIJVING',
                    mqa.productgroep,
                    COALESCE (en.fac_locale_tekst, mqa.productgroep),
                    COALESCE (de.fac_locale_tekst, mqa.productgroep),
                    COALESCE (fr.fac_locale_tekst, mqa.productgroep)
      FROM fac_locale en,
           fac_locale de,
           fac_locale fr,
           mqa
     WHERE     mqa.ins_discipline_key = en.fac_locale_kolomkeyval(+)
           AND en.fac_locale_kolomnaam(+) = 'INS_DISCIPLINE_OMSCHRIJVING'
           AND en.fac_locale_lang(+) = 'EN'
           AND mqa.ins_discipline_key = de.fac_locale_kolomkeyval(+)
           AND de.fac_locale_kolomnaam(+) = 'INS_DISCIPLINE_OMSCHRIJVING'
           AND de.fac_locale_lang(+) = 'DE'
           AND mqa.ins_discipline_key = fr.fac_locale_kolomkeyval(+)
           AND fr.fac_locale_kolomnaam(+) = 'INS_DISCIPLINE_OMSCHRIJVING'
           AND fr.fac_locale_lang(+) = 'FR'
    UNION ALL
    SELECT DISTINCT mqa.mld_stdmelding_key,
                    'MLD_STDMELDING_OMSCHRIJVING',
                    mqa.subproductgroep,
                    COALESCE (en.fac_locale_tekst, mqa.subproductgroep),
                    COALESCE (de.fac_locale_tekst, mqa.subproductgroep),
                    COALESCE (fr.fac_locale_tekst, mqa.subproductgroep)
      FROM fac_locale en,
           fac_locale de,
           fac_locale fr,
           mqa
     WHERE     mqa.mld_stdmelding_key = en.fac_locale_kolomkeyval(+)
           AND en.fac_locale_kolomnaam(+) = 'MLD_STDMELDING_OMSCHRIJVING'
           AND en.fac_locale_lang(+) = 'EN'
           AND mqa.mld_stdmelding_key = de.fac_locale_kolomkeyval(+)
           AND de.fac_locale_kolomnaam(+) = 'MLD_STDMELDING_OMSCHRIJVING'
           AND de.fac_locale_lang(+) = 'DE'
           AND mqa.mld_stdmelding_key = fr.fac_locale_kolomkeyval(+)
           AND fr.fac_locale_kolomnaam(+) = 'MLD_STDMELDING_OMSCHRIJVING'
           AND fr.fac_locale_lang(+) = 'FR'
    UNION ALL
    SELECT DISTINCT mqa.mld_stdmeldinggroep_key,
                    'MLD_STDMELDINGGROEP_NAAM',
                    mqa.subproductgroepgroep,
                    COALESCE (en.fac_locale_tekst, mqa.subproductgroepgroep),
                    COALESCE (de.fac_locale_tekst, mqa.subproductgroepgroep),
                    COALESCE (fr.fac_locale_tekst, mqa.subproductgroepgroep)
      FROM fac_locale en,
           fac_locale de,
           fac_locale fr,
           mqa
     WHERE     mqa.mld_stdmeldinggroep_key = en.fac_locale_kolomkeyval(+)
           AND en.fac_locale_kolomnaam(+) = 'MLD_STDMELDINGGROEP_NAAM'
           AND en.fac_locale_lang(+) = 'EN'
           AND mqa.mld_stdmeldinggroep_key = de.fac_locale_kolomkeyval(+)
           AND de.fac_locale_kolomnaam(+) = 'MLD_STDMELDINGGROEP_NAAM'
           AND de.fac_locale_lang(+) = 'DE'
           AND mqa.mld_stdmeldinggroep_key = fr.fac_locale_kolomkeyval(+)
           AND fr.fac_locale_kolomnaam(+) = 'MLD_STDMELDINGGROEP_NAAM'
           AND fr.fac_locale_lang(+) = 'FR'
    UNION ALL
    SELECT DISTINCT mqa.mld_behandelgroep_key,
                    'MLD_BEHANDELGROEP_NAAM',
                    mqa.behandelgroep,
                    COALESCE (en.fac_locale_tekst, mqa.behandelgroep),
                    COALESCE (de.fac_locale_tekst, mqa.behandelgroep),
                    COALESCE (fr.fac_locale_tekst, mqa.behandelgroep)
      FROM fac_locale en,
           fac_locale de,
           fac_locale fr,
           mqa
     WHERE     mqa.mld_behandelgroep_key = en.fac_locale_kolomkeyval(+)
           AND en.fac_locale_kolomnaam(+) = 'MLD_BEHANDELGROEP_NAAM'
           AND en.fac_locale_lang(+) = 'EN'
           AND mqa.mld_behandelgroep_key = de.fac_locale_kolomkeyval(+)
           AND de.fac_locale_kolomnaam(+) = 'MLD_BEHANDELGROEP_NAAM'
           AND de.fac_locale_lang(+) = 'DE'
           AND mqa.mld_behandelgroep_key = fr.fac_locale_kolomkeyval(+)
           AND fr.fac_locale_kolomnaam(+) = 'MLD_BEHANDELGROEP_NAAM'
           AND fr.fac_locale_lang(+) = 'FR'
    UNION ALL
    SELECT DISTINCT mqa.mld_typeopdr_key,
                    'MLD_TYPEOPDR_OMSCHRIJVING',
                    mqa.opdracht_type,
                    COALESCE (en.fac_locale_tekst, mqa.opdracht_type),
                    COALESCE (de.fac_locale_tekst, mqa.opdracht_type),
                    COALESCE (fr.fac_locale_tekst, mqa.opdracht_type)
      FROM fac_locale en,
           fac_locale de,
           fac_locale fr,
           mqa
     WHERE     mqa.mld_typeopdr_key = en.fac_locale_kolomkeyval(+)
           AND en.fac_locale_kolomnaam(+) = 'MLD_TYPEOPDR_OMSCHRIJVING'
           AND en.fac_locale_lang(+) = 'EN'
           AND mqa.mld_typeopdr_key = de.fac_locale_kolomkeyval(+)
           AND de.fac_locale_kolomnaam(+) = 'MLD_TYPEOPDR_OMSCHRIJVING'
           AND de.fac_locale_lang(+) = 'DE'
           AND mqa.mld_typeopdr_key = fr.fac_locale_kolomkeyval(+)
           AND fr.fac_locale_kolomnaam(+) = 'MLD_TYPEOPDR_OMSCHRIJVING'
           AND fr.fac_locale_lang(+) = 'FR';

-- Voor een handige standaardrapportage
CREATE_VIEW(mld_v_rap_stdmelding, 0)
(
   hide_f_vakgroeptype,
   fclt_f_vakgroep,
   vakgroep_key,
   notificeren_vakgroep,
   doorzetten,
   eerstnaarFO,
   interactie_fe,
   fclt_f_melding,
   melding_key,
   volgnummer,
   meldingsgroep,
   acceptatietijd,
   uitvoertijd_normaal,
   uitvoertijd_laag,
   uitvoertijd_hoog,
   uitvoertijd_kritisch,
   planbaar,
   omschrijvingsveld,
   tekst_bij_afmelden,
   niet_zichtbaar_fe,
   notificeren,
   kostensoort,
   object_kiezen_verplicht,
   verplicht_niveau_alg,
   alleen_ruimtes_eigen_org,
   aanwijzing,
   symboolnaam,
   te_beh_door_dienst,
   dienst_vereist,
   standaard_opdrachttype,
   auto_opdr_aanmaken,
   beperk_tot_catalogus,
   kopieerbaar,
   regime,
   malusbasis,
   malus,
   dubbele_mld_controleren,
   doet_mee_in_kto,
   vervaldatum
)
AS
   SELECT ins_srtdiscipline_omschrijving vakgroeptype,
          ins_srtdiscipline_prefix || '-' || vak.ins_discipline_omschrijving
             vakgroep,
          vak.ins_discipline_key vakgroep_key,
          DECODE (mld_disc_params_notify,
                  0, 'Nooit',
                  1, 'Altijd',
                  2, 'Afhankelijk van melding',
                  'Onbekend')
             notificeren,
          DECODE (mld_disc_params_keten,
                  0, 'Niet',
                  'Wel') doorzetten,
          DECODE (COALESCE(mld_stdmelding_directklaar, mld_disc_params_directklaar),
                  0, 'Nee',
                  1, 'Ja',
                  2, 'Initieel ook eerst naar FO',
                  'Onbekend') eerstnaarFO,
          DECODE (mld_disc_params_fenotes,
                  0, 'default niet zichtbaar voor FE',
                  1, 'default wel zichtbaar voor FE',
                  2, 'per notitie, default niet zichtbaar voor FE',
                  3, 'per notitie, default wel zichtbaar voor FE',
                  'Onbekend') interactiefe,
          mld_stdmelding_omschrijving melding,
          std.mld_stdmelding_key melding_key,
          mld_stdmelding_volgnr volgnummer,
          mld_stdmeldinggroep_naam meldingsgroep,
          std.mld_stdmelding_t_accepttijd.tijdsduur||DECODE(std.mld_stdmelding_t_accepttijd.eenheid, 'U', ' Uren', 'D', ' Dagen', '') acceptatietijd,
          std.mld_stdmelding_t_uitvoertijd.tijdsduur||DECODE(std.mld_stdmelding_t_uitvoertijd.eenheid, 'U', ' Uren', 'D', ' Dagen', '') uitvoertijd_normaal,
          std.mld_stdmelding_t_uitvtijd_pr4.tijdsduur||DECODE(std.mld_stdmelding_t_uitvtijd_pr4.eenheid, 'U', ' Uren', 'D', ' Dagen', '') uitvoertijd_laag,
          std.mld_stdmelding_t_uitvtijd_pr2.tijdsduur||DECODE(std.mld_stdmelding_t_uitvtijd_pr2.eenheid, 'U', ' Uren', 'D', ' Dagen', '') uitvoertijd_hoog,
          std.mld_stdmelding_t_uitvtijd_pr1.tijdsduur||DECODE(std.mld_stdmelding_t_uitvtijd_pr1.eenheid, 'U', ' Uren', 'D', ' Dagen', '') uitvoertijd_kritisch,
          DECODE (mld_stdmelding_planbaar, 1, 'ja', 'nee') planbaar,
          DECODE (mld_stdmelding_freetext,
                  0, 'onzichtbaar',
                  2, 'verplicht',
                  'optioneel')
             omschrijvingsveld,
          DECODE (mld_stdmelding_afmeldtext, 2, 'verplicht', 'optioneel')
             tekst_bij_afmelden,
          DECODE (mld_stdmelding_notfrontend, 1, 'ja', 'nee')
             niet_zichtbaar_fe,
          DECODE (mld_stdmelding_notify, 1, 'ja', 'nee') notificeren,
          pks.prs_kostensoort_oms kostensoort,
          CASE
          WHEN ins_srtinst_verplichtstatus = 1
          THEN 'Afgewezen'
          WHEN ins_srtinst_verplichtstatus = 2
          THEN 'Altijd verplicht'
          WHEN ins_srtinst_verplichtstatus = 5
          THEN 'Afgemeld'
          ELSE 'Niet verplicht'
          END status_object_verplicht,
          DECODE (alg_onrgoed_niveau,
                  'R', 'ruimte',
                  'V', 'verdieping',
                  'G', 'gebouw',
                  'L', 'locatie')
             verplicht_niveau,
          DECODE (mld_stdmelding_prseigen, 1, 'ja', 'nee')
             alleen_ruimtes_eigen_org,
          mld_stdmelding_hint aanwijzing,
          mld_stdmelding_image symboolnaam,
          d.prs_dienst_omschrijving te_beh_door_dienst,
          DECODE (mld_stdmelding_vereisdienst, 1, 'ja', 'nee') dienst_vereist,
          ot.mld_typeopdr_omschrijving standaard_opdrachttype,
          DECODE (mld_stdmelding_autoorder, 1, 'ja', 'nee')
             auto_opdr_aanmaken,
          bd.ins_discipline_omschrijving beperk_tot_catalogus,
          DECODE (mld_stdmelding_kopieerbaar, 1, 'ja', 'nee') kopieerbaar,
          DECODE (mld_stdmelding_regime,
                  1, 'Kantoortijden',
                  2, 'Openingstijden',
                  3, '24/7')
             regime,
          mld_stdmelding_malusbasis malusbasis,
          mld_stdmelding_malus malus,
          DECODE (mld_stdmelding_doublecheck,
                  1, 'alleen bij invoeren',
                  2, 'alleen bij accepteren',
                  3, 'bij invoeren en accepteren',
                  'nooit')
             dubbele_mld_controleren,
          DECODE (mld_stdmelding_kto,
                  1, 'Altijd',
                  2, 'Opt-in',
                  3, 'Opt-out',
                  'Nooit')
             doet_mee_in_kto,
          mld_stdmelding_vervaldatum vervaldatum
     FROM mld_stdmelding std,
          mld_stdmeldinggroep smg,
          mld_discipline vak,
          ins_srtdiscipline srt,
          prs_kostensoort pks,
          prs_dienst d,
          mld_disc_params dp,
          mld_typeopdr ot,
          bes_discipline bd
    WHERE std.mld_stdmelding_verwijder IS NULL
      AND std.mld_ins_discipline_key = vak.ins_discipline_key
      AND vak.ins_discipline_verwijder IS NULL
      AND vak.ins_srtdiscipline_key = srt.ins_srtdiscipline_key
      AND srt.ins_srtdiscipline_verwijder IS NULL
      AND std.prs_kostensoort_key = pks.prs_kostensoort_key(+)
      AND std.prs_dienst_key = d.prs_dienst_key(+)
      AND std.mld_typeopdr_key = ot.mld_typeopdr_key(+)
      AND std.mld_stdmeldinggroep_key = smg.mld_stdmeldinggroep_key(+)
      AND bd.ins_discipline_key(+) = std.bes_ins_discipline_key
      AND vak.ins_discipline_key = dp.mld_ins_discipline_key;

-- UWVA#31346: Export tbv. import afmeldteksten!
CREATE_VIEW(mld_v_rap_expimp_afmtxt, 0)
(
   afmeldtekstnaam,
   afmeldtekstomschrijving,
   fclt_x_discipline_key,
   fclt_x_stdmelding_key,
   discipline_key,
   stdmelding_key
)
AS
   SELECT t.mld_afmeldtekst_naam,
          t.mld_afmeldtekst_omschrijving,
             md.ins_discipline_omschrijving
          || ' [key='
          || TO_CHAR (sm.mld_ins_discipline_key)
          || ']',
             sm.mld_stdmelding_omschrijving
          || ' [key='
          || TO_CHAR (sm.mld_stdmelding_key)
          || ']',
          sm.mld_ins_discipline_key,
          t.mld_stdmelding_key
     FROM mld_afmeldtekst t, mld_stdmelding sm, mld_discipline md
    WHERE     t.mld_stdmelding_key IS NOT NULL
          AND t.mld_stdmelding_key = sm.mld_stdmelding_key
          AND sm.mld_ins_discipline_key = md.ins_discipline_key
   UNION ALL
   SELECT t.mld_afmeldtekst_naam,
          t.mld_afmeldtekst_omschrijving,
          DECODE (
             md.ins_discipline_key,
             NULL,
             NULL,
                md.ins_discipline_omschrijving
             || ' [key='
             || TO_CHAR (md.ins_discipline_key)
             || ']'),
          NULL,
          md.ins_discipline_key,
          NULL
     FROM mld_afmeldtekst t, mld_discipline md
    WHERE t.mld_stdmelding_key IS NULL
          AND t.mld_ins_discipline_key = md.ins_discipline_key(+);

---- KTO views + rapportages
CREATE_VIEW(mld_v_kto_vragen, 0)
(
   vraag1,
   vraag2,
   vraag3,
   vraag4,
   vraag5
)
AS SELECT
   (SELECT mld_kenmerk_default
    FROM mld_kenmerk
    WHERE mld_kenmerk_key = fac.getSetting('kto_mld_vraag1')
   ) vraag1,
   (SELECT mld_kenmerk_default
    FROM mld_kenmerk
    WHERE mld_kenmerk_key = fac.getSetting('kto_mld_vraag2')
   ) vraag2,
   (SELECT mld_kenmerk_default
    FROM mld_kenmerk
    WHERE mld_kenmerk_key = fac.getSetting('kto_mld_vraag3')
   ) vraag3,
   (SELECT mld_kenmerk_default
    FROM mld_kenmerk
    WHERE mld_kenmerk_key = fac.getSetting('kto_mld_vraag4')
   ) vraag4,
   (SELECT mld_kenmerk_default
    FROM mld_kenmerk
    WHERE mld_kenmerk_key = fac.getSetting('kto_mld_vraag5')
   ) vraag5
FROM   dual;


CREATE_VIEW(mld_v_kto_antwoorden, 0)
(
   mld_melding_key,
   cijfer1,
   cijfer2,
   cijfer3,
   cijfer4,
   cijfer5,
   opm1,
   opm2,
   opm3,
   opm4,
   opm5
)
AS
SELECT
   kto.mld_melding_key,
   (SELECT fac.safe_to_number(mld_kenmerkmelding_waarde)
    FROM mld_kenmerkmelding km
    WHERE km.mld_melding_key = kto.mld_melding_key AND   km.mld_kenmerk_key = fac.getSetting('kto_mld_cijfer1')
   ) cijfer1,
   (SELECT fac.safe_to_number(mld_kenmerkmelding_waarde)
    FROM mld_kenmerkmelding km
    WHERE km.mld_melding_key = kto.mld_melding_key AND   km.mld_kenmerk_key = fac.getSetting('kto_mld_cijfer2')
   ) cijfer2,
   (SELECT fac.safe_to_number(mld_kenmerkmelding_waarde)
    FROM mld_kenmerkmelding km
    WHERE km.mld_melding_key = kto.mld_melding_key AND   km.mld_kenmerk_key = fac.getSetting('kto_mld_cijfer3')
   ) cijfer3,
   (SELECT fac.safe_to_number(mld_kenmerkmelding_waarde)
    FROM mld_kenmerkmelding km
    WHERE km.mld_melding_key = kto.mld_melding_key AND   km.mld_kenmerk_key = fac.getSetting('kto_mld_cijfer4')
   ) cijfer4,
   (SELECT fac.safe_to_number(mld_kenmerkmelding_waarde)
    FROM mld_kenmerkmelding km
    WHERE km.mld_melding_key = kto.mld_melding_key AND   km.mld_kenmerk_key = fac.getSetting('kto_mld_cijfer5')
   ) cijfer5,
   (SELECT mld_kenmerkmelding_waarde
    FROM mld_kenmerkmelding km
    WHERE km.mld_melding_key = kto.mld_melding_key AND   km.mld_kenmerk_key = fac.getSetting('kto_mld_toelicht1')
   ) toelicht1,
   (SELECT mld_kenmerkmelding_waarde
    FROM mld_kenmerkmelding km
    WHERE km.mld_melding_key = kto.mld_melding_key AND   km.mld_kenmerk_key = fac.getSetting('kto_mld_toelicht2')
   ) toelicht2,
   (SELECT mld_kenmerkmelding_waarde
    FROM mld_kenmerkmelding km
    WHERE km.mld_melding_key = kto.mld_melding_key AND   km.mld_kenmerk_key = fac.getSetting('kto_mld_toelicht3')
   ) toelicht3,
   (SELECT mld_kenmerkmelding_waarde
    FROM mld_kenmerkmelding km
    WHERE km.mld_melding_key = kto.mld_melding_key AND   km.mld_kenmerk_key = fac.getSetting('kto_mld_toelicht4')
   ) toelicht4,
   (SELECT mld_kenmerkmelding_waarde
    FROM mld_kenmerkmelding km
    WHERE km.mld_melding_key = kto.mld_melding_key AND   km.mld_kenmerk_key = fac.getSetting('kto_mld_toelicht5')
   ) toelicht5
FROM   mld_melding kto
WHERE  kto.mld_melding_kto_type IS NOT NULL
AND    kto.mld_melding_kto_key IS NOT NULL;


CREATE_VIEW(mld_v_kto_geg, 0)
(
  KTO_KEY,
  KTO_TYPE,
  KTO_REFKEY,
  KTO_UITNODIGING_DATUM,
  KTO_INVUL_DATUM,
  KTO_RESPONSE_TIJD,
  INS_SRTDISCIPLINE_KEY,
  RES_ACTIVITEIT_KEY,
  INS_DISCIPLINE_KEY,
  MLD_STDMELDING_KEY,
  INS_SRTDISCIPLINE_OMSCHRIJVING,
  RES_ACTIVITEIT_OMSCHRIJVING,
  MLD_VAKGROEP_OMSCHRIJVING,
  RES_RUIMTECATEGORIE,
  BES_CATALOGUS,
  MLD_STDMELDING_OMSCHRIJVING,
  ALG_REGIO_OMSCHRIJVING,
  ALG_DISTRICT_OMSCHRIJVING,
  ALG_LOCATIE_CODE,
  ALG_LOCATIE_OMSCHRIJVING,
  CIJFER1,
  CIJFER2,
  CIJFER3,
  CIJFER4,
  CIJFER5,
  OPM1,
  OPM2,
  OPM3,
  OPM4,
  OPM5
)
AS
-- Alle meldingen (alias m) waarvan KTO-uitnodiging is verstuurd met eventuele bijbehorende kto-melding (alias kto)
-- Let op: 2e kolom staat hard 'BMR', en niet overnemen van kto.mld_melding_kto_type, omdat je dat zonder KTO-melding al wilt weten
SELECT      kto.mld_melding_key kto_key,
            'M',
            kto.mld_melding_kto_key,
            m.mld_melding_kto_verstuurd,
            fac.gettrackingdate('MLDNEW',kto.mld_melding_key) kto_invul_datum,
            fac.gettrackingdate('MLDNEW',kto.mld_melding_key) - m.mld_melding_kto_verstuurd kto_response_tijd,
            sd.ins_srtdiscipline_key,
            NULL res_activiteit_key,
            d.ins_discipline_key,
            s.mld_stdmelding_key,
            sd.ins_srtdiscipline_omschrijving,
            NULL res_activiteit_omschrijving,
            d.ins_discipline_omschrijving mld_vakgroep_omschrijving,
            NULL res_ruimtecategorie,
            NULL bes_catalogus,
            s.mld_stdmelding_omschrijving,
            r.alg_regio_omschrijving,
            di.alg_district_omschrijving,
            l.alg_locatie_code,
            l.alg_locatie_omschrijving,
            kto_a.cijfer1,
            kto_a.cijfer2,
            kto_a.cijfer3,
            kto_a.cijfer4,
            kto_a.cijfer5,
            kto_a.opm1,
            kto_a.opm2,
            kto_a.opm3,
            kto_a.opm4,
            kto_a.opm5
   FROM     mld_melding kto, mld_melding m, ins_tab_discipline d, mld_stdmelding s, ins_srtdiscipline sd,
            alg_locatie l, alg_district di, alg_regio r,
            mld_v_kto_antwoorden kto_a
   WHERE    m.mld_melding_kto_verstuurd IS NOT NULL
   AND      m.mld_melding_key = kto.mld_melding_kto_key(+)
   AND      kto.mld_melding_key = kto_a.mld_melding_key (+)
   AND      COALESCE(KTO.MLD_MELDING_KTO_TYPE,'M') = 'M'
   AND      s.mld_stdmelding_key = m.mld_stdmelding_key
   AND      d.ins_discipline_key = s.mld_ins_discipline_key
   AND      d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
   AND      m.mld_alg_locatie_key = l.alg_locatie_key (+)
   AND      l.alg_district_key = di.alg_district_key (+)
   AND      di.alg_regio_key = r.alg_regio_key (+)
UNION ALL
   SELECT   kto.mld_melding_key kto_key,
            'R',
            kto.mld_melding_kto_key,
            rrr.res_rsv_ruimte_kto_verstuurd kto_uitnodiging_datum,
            fac.gettrackingdate('MLDNEW',kto.mld_melding_key) kto_invul_datum,
            fac.gettrackingdate('MLDNEW',kto.mld_melding_key) - rrr.res_rsv_ruimte_kto_verstuurd kto_response_tijd,
            NULL ins_srtdiscipline_key,
            a.res_activiteit_key,
            d.ins_discipline_key,
            rrr.res_rsv_ruimte_key,
            NULL ins_srtdiscipline_omschrijving,
            a.res_activiteit_omschrijving,
            NULL mld_vakgroep_omschrijving,
            d.ins_discipline_omschrijving res_ruimtecategorie,
            NULL bes_catalogus,
            NULL mld_stdmelding_omschrijving,
            rg.alg_regio_omschrijving,
            di.alg_district_omschrijving,
            l.alg_locatie_code,
            l.alg_locatie_omschrijving,
            kto_a.cijfer1,
            kto_a.cijfer2,
            kto_a.cijfer3,
            kto_a.cijfer4,
            kto_a.cijfer5,
            kto_a.opm1,
            kto_a.opm2,
            kto_a.opm3,
            kto_a.opm4,
            kto_a.opm5
   FROM     mld_melding kto, res_rsv_ruimte rrr, res_ruimte_opstelling ro, res_ruimte rr, ins_tab_discipline d, res_activiteit a,
            alg_ruimte r, alg_verdieping v, alg_gebouw g, alg_locatie l, alg_district di, alg_regio rg,
            mld_v_kto_antwoorden kto_a
   WHERE    rrr.res_rsv_ruimte_kto_verstuurd IS NOT NULL
   AND      a.res_activiteit_key = rrr.res_activiteit_key
   AND      rrr.res_rsv_ruimte_key = kto.mld_melding_kto_key(+)
   AND      kto.mld_melding_key = kto_a.mld_melding_key (+)
   AND      COALESCE(KTO.MLD_MELDING_KTO_TYPE,'R') = 'R'
   AND      rrr.res_ruimte_opstel_key = ro.res_ruimte_opstel_key
   AND      ro.res_ruimte_key = rr.res_ruimte_key
   AND      rr.res_discipline_key = d.ins_discipline_key
   AND      r.alg_ruimte_key = (SELECT MIN(rar.alg_ruimte_key) FROM res_alg_ruimte rar WHERE rar.res_ruimte_key = rr.res_ruimte_key)
   AND      v.alg_verdieping_key = r.alg_verdieping_key
   AND      g.alg_gebouw_key = v.alg_gebouw_key
   AND      l.alg_locatie_key = g.alg_locatie_key
   AND      di.alg_district_key = l.alg_district_key
   AND      rg.alg_regio_key = di.alg_regio_key
UNION ALL
   SELECT   kto.mld_melding_key kto_key,
            'B',
            kto.mld_melding_kto_key,
            b.bes_bestelling_kto_verstuurd kto_uitnodiging_datum,
            fac.gettrackingdate('MLDNEW',kto.mld_melding_key) kto_invul_datum,
            fac.gettrackingdate('MLDNEW',kto.mld_melding_key) - b.bes_bestelling_kto_verstuurd kto_response_tijd,
            NULL ins_srtdiscipline_key,
            NULL res_activiteit_key,
            d.ins_discipline_key,
            b.bes_bestelling_key,
            NULL ins_srtdiscipline_omschrijving,
            NULL res_activiteit_omschrijving,
            NULL mld_vakgroep_omschrijving,
            NULL res_ruimtecategorie,
            d.ins_discipline_omschrijving bes_catalogus,
            NULL mld_stdmelding_omschrijving,
            r.alg_regio_omschrijving,
            di.alg_district_omschrijving,
            l.alg_locatie_code,
            l.alg_locatie_omschrijving,
            kto_a.cijfer1,
            kto_a.cijfer2,
            kto_a.cijfer3,
            kto_a.cijfer4,
            kto_a.cijfer5,
            kto_a.opm1,
            kto_a.opm2,
            kto_a.opm3,
            kto_a.opm4,
            kto_a.opm5
   FROM     mld_melding kto, bes_bestelling b, bes_bestelling_item bi, bes_srtdeel sd, bes_srtgroep sg, bes_discipline d,
            mld_adres ad, alg_locatie l, alg_district di, alg_regio r,
            mld_v_kto_antwoorden kto_a
   WHERE    b.bes_bestelling_kto_verstuurd IS NOT NULL
   AND      b.bes_bestelling_key = kto.mld_melding_kto_key(+)
   AND      kto.mld_melding_key = kto_a.mld_melding_key (+)
   AND      COALESCE(KTO.MLD_MELDING_KTO_TYPE,'B') = 'B'
   AND      b.bes_bestelling_key = bi.bes_bestelling_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
   AND      b.mld_adres_key_lev = ad.mld_adres_key
   AND      ad.alg_locatie_key = l.alg_locatie_key (+)
   AND      l.alg_district_key = di.alg_district_key (+)
   AND      di.alg_regio_key = r.alg_regio_key (+);

-----

-- KTO-Rapport 1: Algemeen overview/overzicht van ingevulde KTO's
CREATE_VIEW(mld_v_rap_kto_overview, 0)
(
  fclt_f_kto,
  fclt_f_jaar,
  fclt_f_kwartaal,
  fclt_f_maand,
  fclt_f_regio,
  fclt_f_district,
  fclt_f_locatie,
  fclt_f_vakgroeptype,
  fclt_f_activiteit,
  fclt_f_vakgroep,
  fclt_f_ruimtecategorie,
  fclt_f_bestelcatalogus,
  melding,
  fclt_f_beoordeling,
  cijfer1,
  opm1,
  cijfer2,
  opm2,
  cijfer3,
  opm3,
  cijfer4,
  opm4,
  cijfer5,
  opm5,
  hide_f_kto_key,
  hide_f_kto_refkey
)
AS
   SELECT
      decode(kto_type,'B','Bestellingen','M','Meldingen','R','Reserveringen'),
      to_char(kto_invul_datum,'yyyy'),
      'Q' || to_char(kto_invul_datum,'q'),
      to_char(kto_invul_datum,'mm'),
      alg_regio_omschrijving,
      alg_district_omschrijving,
      alg_locatie_code || '-' || alg_locatie_omschrijving,
      ins_srtdiscipline_omschrijving,
      res_activiteit_omschrijving,
      mld_vakgroep_omschrijving,
      res_ruimtecategorie,
      bes_catalogus,
      mld_stdmelding_omschrijving,
      CASE
         WHEN  COALESCE(cijfer1,10)<5.5 OR
               COALESCE(cijfer2,10)<5.5 OR
               COALESCE(cijfer3,10)<5.5 OR
               COALESCE(cijfer4,10)<5.5 OR
               COALESCE(cijfer5,10)<5.5 THEN 'Onvoldoende'
         ELSE 'Voldoende'
      END,
      cijfer1,
      opm1,
      cijfer2,
      opm2,
      cijfer3,
      opm3,
      cijfer4,
      opm4,
      cijfer5,
      opm5,
      kto_key,
      kto_refkey
  FROM mld_v_kto_geg
  WHERE kto_key IS NOT NULL;

-- KTO-Rapport 2: KTO Response: aantal KTO-uitnodigingen vs. KTO-ingediend + responsedagen,
-- gegroepeerd op ktosoort(BMR)+jaar+maand
CREATE_VIEW(mld_v_rap_kto_response_soort, 0)
(
  fclt_f_kto,
  fclt_f_jaar,
  fclt_f_maand,
  aantal_uitnodigingen,
  aantal_ontvangen,
  percentage,
  gemiddelde_response_in_dagen
)
AS
   SELECT
      decode(kto_type,'B','Bestellingen','M','Meldingen','R','Reserveringen'),
      to_char(kto_uitnodiging_datum,'yyyy'),
      to_char(kto_uitnodiging_datum,'mm'),
      COUNT(*),
      COUNT(kto_key),
      100* COUNT(kto_key)/DECODE(COUNT(*),0,1,COUNT(*)),
      AVG(round(kto_response_tijd-0.5))
   FROM mld_v_kto_geg
   GROUP BY kto_type, to_char(kto_uitnodiging_datum,'yyyy'), to_char(kto_uitnodiging_datum,'mm');

-- KTO-Rapport 3: KTO Response: aantal KTO-uitnodigingen vs. KTO-ingediend + responsedagen,
-- gegroepeerd op ktosoort(BMR) +jaar+maand+regio+district
CREATE_VIEW(mld_v_rap_kto_responsedistrict, 0)
(
  fclt_f_kto,
  fclt_f_jaar,
  fclt_f_maand,
  fclt_f_regio,
  fclt_f_district,
  aantal_uitnodigingen,
  aantal_ontvangen,
  percentage,
  gemiddelde_response_in_dagen
)
AS
   SELECT
      decode(kto_type,'B','Bestellingen','M','Meldingen','R','Reserveringen'),
      to_char(kto_uitnodiging_datum,'yyyy'),
      to_char(kto_uitnodiging_datum,'mm'),
      alg_regio_omschrijving,
      alg_district_omschrijving,
      COUNT(*),
      COUNT(kto_key),
      100* COUNT(kto_key)/DECODE(COUNT(*),0,1,COUNT(*)),
      AVG(round(kto_response_tijd-0.5))
   FROM mld_v_kto_geg
   GROUP BY kto_type, to_char(kto_uitnodiging_datum,'yyyy'), to_char(kto_uitnodiging_datum,'mm'),
            alg_regio_omschrijving, alg_district_omschrijving;

-- KTO-Rapport 4: KTO Response: aantal KTO-uitnodigingen vs. KTO-ingediend + responsedagen,
-- gegroepeerd op ktosoort(BMR) +jaar+maand+regio+district+locatie
CREATE_VIEW(mld_v_rap_kto_response_locatie, 0)
(
  fclt_f_kto,
  fclt_f_jaar,
  fclt_f_maand,
  fclt_f_regio,
  fclt_f_district,
  fclt_f_locatie,
  aantal_uitnodigingen,
  aantal_ontvangen,
  percentage,
  gemiddelde_response_in_dagen
)
AS
   SELECT
      decode(kto_type,'B','Bestellingen','M','Meldingen','R','Reserveringen'),
      to_char(kto_uitnodiging_datum,'yyyy'),
      to_char(kto_uitnodiging_datum,'mm'),
      alg_regio_omschrijving,
      alg_district_omschrijving,
      alg_locatie_code || '-' || alg_locatie_omschrijving,
      COUNT(*),
      COUNT(kto_key),
      100* COUNT(kto_key)/DECODE(COUNT(*),0,1,COUNT(*)),
      AVG(round(kto_response_tijd-0.5))
   FROM mld_v_kto_geg
   GROUP BY kto_type, to_char(kto_uitnodiging_datum,'yyyy'), to_char(kto_uitnodiging_datum,'mm'),
            alg_regio_omschrijving, alg_district_omschrijving, alg_locatie_code || '-' || alg_locatie_omschrijving;


-- KTO-Rapport 5: KTO Response: aantal KTO-uitnodigingen vs. KTO-ingediend + responsedagen,
-- gegroepeerd op ktosoort(BMR) +jaar+maand+discipline (disc=vakgroep of catalogus of ruimtecategorie)
CREATE_VIEW(mld_v_rap_kto_response_disc, 0)
(
  fclt_f_kto,
  fclt_f_jaar,
  fclt_f_maand,
  fclt_f_categorie,
  aantal_uitnodigingen,
  aantal_ontvangen,
  percentage,
  gemiddelde_response_in_dagen
)
AS
   SELECT
      decode(kto_type,'B','Bestellingen','M','Meldingen','R','Reserveringen'),
      to_char(kto_uitnodiging_datum,'yyyy'),
      to_char(kto_uitnodiging_datum,'mm'),
      COALESCE(mld_vakgroep_omschrijving, res_ruimtecategorie, bes_catalogus),
      COUNT(*),
      COUNT(kto_key),
      100* COUNT(kto_key)/DECODE(COUNT(*),0,1,COUNT(*)),
      AVG(round(kto_response_tijd-0.5))
   FROM mld_v_kto_geg
   GROUP BY kto_type, to_char(kto_uitnodiging_datum,'yyyy'), to_char(kto_uitnodiging_datum,'mm'),
            COALESCE(mld_vakgroep_omschrijving, res_ruimtecategorie, bes_catalogus);

-- Vooralsnog placeholder, moet aangepast worden
CREATE_VIEW(mld_v_api_meldingen, 1) AS SELECT * from mld_melding;
CREATE_VIEW(mld_v_api_opdrachten, 1) AS SELECT * from mld_opdr;


/* ROOT VIEWS for User defined Reports (UDR) */
/* since melding and opdracht are joined later on, the columns must be unique */
/* Note: als je kolommen toevoegt wil je dat zeer waarschijnlijk ook in mld_v_udr_meldingopdracht */
CREATE_VIEW(mld_v_udr_melding, 1)
(
   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,
   fclt_3d_discipline2_key,
   actieve_behandelgroep,
   actieve_behandelaar_key,
   actieve_behandelaar,
   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,
          stdm_ins_discipline_key,
          productgroep,
          subproductgroep,
          behandelgroep,
          behandelaar,
          behandelaar_key,
          subproductgroepgroep,
          mld_ins_discipline_key,
          actieve_behandelgroep,
          actieve_behandelaar_key,
          actieve_behandelaar,
          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,
          CAST (
            DECODE (x.t_doorlooptijd.eenheid,
                    'U', (acceptdatum - COALESCE (accepted, afgemeld)) * 24,
                    NULL)
           AS NUMBER(7,2)
          )
             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,
          CAST (
            DECODE (
               x.t_doorlooptijd.eenheid,
               'U',
               ( (mld.geteinddatum (mld_melding_key) - COALESCE (afgemeld, SYSDATE)) * 24)
               + COALESCE (sla_respijturen, 0),
               NULL)
           AS NUMBER(7,2)
          )
             uitvoering_sla_uren,
          DECODE (x.t_doorlooptijd.eenheid,
                  'D', einddatum - COALESCE (afgemeld, SYSDATE) + COALESCE (sla_respijtdgn, 0),
                  NULL)
             afspraak_sla_dagen,
          CAST (
            DECODE (
               x.t_doorlooptijd.eenheid,
               'U',
               ( (einddatum - COALESCE (afgemeld, SYSDATE)) * 24) + COALESCE (sla_respijtdgn, 0),
               NULL)
           AS NUMBER(7,2)
          )
             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 stdm_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,
                  m.mld_ins_discipline_key mld_ins_discipline_key,
                  (SELECT md2.ins_discipline_omschrijving
                     FROM mld_discipline md2
                    WHERE md2.ins_discipline_key = m.mld_ins_discipline_key) actieve_behandelgroep,
                  m.mld_melding_behandelaar2_key actieve_behandelaar_key,
                  (SELECT prs_perslid_naam_full
                     FROM prs_v_perslid_fullnames_all pf
                    WHERE pf.prs_perslid_key = m.mld_melding_behandelaar2_key)
                     actieve_behandelaar,
                  (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,
                  CASE WHEN s.mld_stdmelding_planbaar = 2
                    THEN TO_DATE(NULL)
                    ELSE m.mld_melding_einddatum
                  END 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)
(
   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_uitvoerende_contact,
   opdracht_behandelaar,
   opdracht_contract,
   opdracht_contract_versie,
   opdracht_contactpersoon,
   opdracht_uren,
   opdracht_correctie,
   opdracht_materiaal,
   opdracht_uurtarief,
   opdracht_kosten,
   opdracht_parent_key,
   opdracht_parent_nummer,
   opdracht_parent_volgnummer,
   opdracht_verstrektdatum,
   opdracht_lev_doorloopdagen,
   opdracht_lev_doorloopuren
)
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_uitvoerende_contact,
                 opdracht_behandelaar,
                 opdracht_contract,
                 opdracht_contract_versie,
                 opdracht_contactpersoon,
                 opdracht_uren,
                 opdracht_correctie,
                 opdracht_materiaal,
                 opdracht_uurtarief,
                 opdracht_kosten,
                 opdracht_parent_key,
                 CASE WHEN opdracht_parent_key IS NOT NULL
                      THEN ins_srtdiscipline_prefix || TO_CHAR (mld_melding_key) || '/' || opdracht_parent_volgnummer
                      ELSE NULL
                 END
                 opdracht_parent_nummer,
                 opdracht_parent_volgnummer,
                 opdracht_verstrektdatum,
                 MLD.getactualuitvoer ( opdracht_verstrektdatum
                                      , opdracht_afgemeld
                                      , mld_stdmelding_key
                                      , mld_melding_spoed
                                      , NULL
                                      , NULL
                                      , 'D'
                                      ).tijdsduur opdracht_lev_doorloopdagen,
                 MLD.getactualuitvoer ( opdracht_verstrektdatum
                                      , opdracht_afgemeld
                                      , mld_stdmelding_key
                                      , mld_melding_spoed
                                      , NULL
                                      , NULL
                                      , 'U'
                                      ).tijdsduur opdracht_lev_doorloopuren
            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,
                         (SELECT contact_naam
                            FROM (SELECT cp.prs_contactpersoon_key,
                                         pf.prs_perslid_naam_full contact_naam
                                    FROM prs_contactpersoon cp,
                                         prs_v_perslid_fullnames_all pf
                                   WHERE cp.prs_perslid_key = pf.prs_perslid_key
                                  UNION ALL
                                  SELECT cp.prs_contactpersoon_key,
                                         cp.prs_contactpersoon_naam
                                    FROM prs_contactpersoon cp,
                                         prs_v_perslid_fullnames_all pf
                                   WHERE cp.prs_perslid_key = pf.prs_perslid_key
                                         AND cp.prs_perslid_key IS NULL
                                 ) cpn
                           WHERE cpn.prs_contactpersoon_key = o.prs_contactpersoon_key
                         )
                         opdracht_uitvoerende_contact,
                         (SELECT prs_perslid_naam_full
                            FROM prs_v_perslid_fullnames_all pf
                           WHERE pf.prs_perslid_key = o.prs_perslid_key
                         )
                         opdracht_behandelaar,
                         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,
                         o.mld_opdr_parent_key opdracht_parent_key,
                         op.mld_opdr_bedrijfopdr_volgnr opdracht_parent_volgnummer,
                         verstrekt.verstrektdatum opdracht_verstrektdatum,
                         m.mld_stdmelding_key,
                         m.mld_melding_spoed,
                         DECODE (m.mld_melding_spoed,
                                 1, stdm.mld_stdmelding_t_uitvtijd_pr1.eenheid,
                                 2, stdm.mld_stdmelding_t_uitvtijd_pr2.eenheid,
                                 3, stdm.mld_stdmelding_t_uitvoertijd.eenheid,
                                    stdm.mld_stdmelding_t_uitvtijd_pr4.eenheid
                                )  eenheid
                    FROM alg_locatie l,
                         alg_district d,
                         alg_regio r,
                         alg_v_allonrgoed_gegevens og,
                         mld_opdr o,
                         mld_opdr op,
                         mld_typeopdr top,
                         mld_melding m,
                         mld_stdmelding stdm,
                         ins_tab_discipline di,
                         ins_srtdiscipline sdi,
                         cnt_contract c,
                         (SELECT t.fac_tracking_refkey  mld_opdr_key
                               , CASE WHEN MAX(t.fac_tracking_datum) < o.mld_opdr_datumbegin
                                      THEN o.mld_opdr_datumbegin
                                      ELSE MAX(t.fac_tracking_datum)
                                 END verstrektdatum
                            FROM fac_tracking t
                               , fac_srtnotificatie n
                               , mld_opdr o
                           WHERE t.fac_tracking_refkey = o.mld_opdr_key(+)
                             AND n.fac_srtnotificatie_key = t.fac_srtnotificatie_key
                             AND n.fac_srtnotificatie_code IN ('ORDNEW','ORDSNT')
                           GROUP BY t.fac_tracking_refkey
                                  , o.mld_opdr_datumbegin
                         ) verstrekt
                   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')
                     AND o.mld_opdr_parent_key = op.mld_opdr_key(+)
                     AND o.mld_opdr_key = verstrekt.mld_opdr_key(+)
                 ) x;

-- Noot: SELECT * is een slecht gebruik en leidt tot onoplosbare conflicten
CREATE_VIEW(mld_v_udr_meldingopdracht, 1)
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.fclt_3d_discipline2_key,
   m.actieve_behandelgroep,
   m.actieve_behandelaar_key,
   m.actieve_behandelaar,
   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_uitvoerende_contact,
   o.opdracht_behandelaar,
   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,
   o.opdracht_verstrektdatum,
   o.opdracht_lev_doorloopuren,
   o.opdracht_lev_doorloopdagen
 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)
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
             flx.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(+);


CREATE_VIEW(mld_v_udr_opdrachtkenmerk_cnd, 1)
AS
SELECT o.*,
       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
             flx.getdomeinwaarde (skm.fac_kenmerkdomein_key, ko.mld_kenmerkopdr_waarde)
          WHEN skm.mld_srtkenmerk_kenmerktype = 'C' OR skm.mld_srtkenmerk_kenmerktype = 'F'
          THEN
             ko.mld_kenmerkopdr_waarde
          ELSE
             NULL
       END
          waarde_c,
       CASE
          WHEN skm.mld_srtkenmerk_kenmerktype IN ('N', 'B')
          THEN TO_NUMBER (ko.mld_kenmerkopdr_waarde)
          ELSE TO_NUMBER (NULL)
       END
          waarde_n,
       CASE
          WHEN skm.mld_srtkenmerk_kenmerktype = 'D'
          THEN
             TO_DATE (ko.mld_kenmerkopdr_waarde, 'DD-MM-YYYY')
          ELSE
             TO_DATE (NULL)
       END
          waarde_d
  FROM mld_v_udr_opdracht o,
       mld_kenmerkopdr ko,
       mld_kenmerk k,
       mld_srtkenmerk skm
 WHERE     ko.mld_opdr_key = o.opdracht_key
       AND ko.mld_kenmerkopdr_verwijder IS NULL
       AND k.mld_kenmerk_verwijder IS NULL
       AND skm.mld_srtkenmerk_verwijder IS NULL
       AND ko.mld_kenmerk_key = k.mld_kenmerk_key(+)
       AND k.mld_srtkenmerk_key = skm.mld_srtkenmerk_key(+);

CREATE_VIEW(mld_v_udr_opdrachtmateriaal, 1)
AS
SELECT o.*,
       mld_opdr_materiaal_aantal aantal,
       mld_opdr_materiaal_eenheid eenheid,
       mld_opdr_materiaal_eenheidcode eenheidcode,
       COALESCE (mld_opdr_materiaal_omschr, fu.fac_usrdata_omschr) omschrijving,
       COALESCE (mld_opdr_materiaal_prijs, fu.fac_usrdata_prijs) prijs,
       mld_opdr_materiaal_code code,
       mld_opdr_materiaal_info info,
       mld_opdr_materiaal_groep groep,
       mld_opdr_materiaal_id id,
       mld_opdr_materiaal_extra1 extra1,
       mld_opdr_materiaal_extra2 extra2,
       mld_opdr_materiaal_extra3 extra3,
       mld_opdr_materiaal_extra4 extra4,
       fin_btwtabelwaarde_code btwcode,
       fin_btwtabelwaarde_oms btwomschrijving,
       fin_btwtabelwaarde_perc btw,
       fin_btwtabelwaarde_verlegd btwverlegd
  FROM mld_v_udr_opdracht o,
       mld_opdr_materiaal mo,
       fac_usrdata fu,
       fin_btwtabelwaarde btw
 WHERE     mo.mld_opdr_key = o.opdracht_key
       AND mo.fac_usrdata_key = fu.fac_usrdata_key(+)
       AND mo.fin_btwtabelwaarde_key = btw.fin_btwtabelwaarde_key(+);

CREATE_VIEW(mld_v_nettotijdsbesteding, 0)
(
   mld_opdr_key,
   prs_perslid_key,
   naam,
   ntb_prs
)
AS
SELECT o.mld_opdr_key,
       beh.prs_perslid_key,
       p.prs_perslid_naam_full,
       mld.getnettotijdsbesteding(o.mld_opdr_key, beh.prs_perslid_key) ntb_prs
  FROM mld_opdr o,
       (SELECT DISTINCT t.prs_perslid_key,
               fac_tracking_refkey
          FROM fac_tracking t,
               fac_srtnotificatie st
         WHERE t.fac_srtnotificatie_key = st.fac_srtnotificatie_key
           AND st.fac_srtnotificatie_code IN ('ORDACP','ORDRSM')) beh,
       prs_v_perslid_fullnames_all   p
 WHERE beh.fac_tracking_refkey = o.mld_opdr_key
   AND beh.prs_perslid_key = p.prs_perslid_key;

CREATE_VIEW(mld_v_mld_stdmelding_srtinst, 0)
AS
SELECT mss.mld_stdmelding_srtinst_key
     , mss.mld_stdmelding_key
     , mss.ins_srtinstallatie_niveau
     , mss.ins_srtinstallatie_key
     , insd.ins_deel_key
     , isd.ins_srtdeel_key
     , isg.ins_srtgroep_key
     , isg.ins_discipline_key
  FROM mld_stdmelding_srtinst mss
     , ins_srtgroep isg
     , ins_srtdeel isd
     , ins_deel insd
 WHERE isd.ins_srtdeel_key = insd.ins_srtdeel_key
   AND isg.ins_srtgroep_key = isd.ins_srtgroep_key
   AND (   mss.ins_srtinstallatie_niveau = 'S' AND mss.ins_srtinstallatie_key = insd.ins_srtdeel_key
        OR mss.ins_srtinstallatie_niveau = 'G' AND mss.ins_srtinstallatie_key = isg.ins_srtgroep_key
        OR mss.ins_srtinstallatie_niveau = 'D' AND mss.ins_srtinstallatie_key = isg.ins_discipline_key
       );


REGISTERRUN('$Id$')
#endif  // MLD
