#ifdef CND
/*
 * $Revision$
 * $Id$
 */

-- CND_V_NEN2767_ALLE_GEBREKEN: hierin zitten alle meldingen (gebreken) die nu relevant voor de berekening kunnen zijn
-- dus gebreken die erkend zijn maar nog niet verwerkt of afgewezen.
-- Niet uit te sluiten valt dat er dubbele registraties zijn, dat wordt ontdubbeld in cnd_v_nen2767_per_srtgebrek
-- Het is daarmee niet aannemelijk dat je deze view nodig hebt, gebruik cnd_v_nen2767_per_srtgebrek.
-- Merk op: op alle 3 de aspecten in mld_kenmerkmelding zit geen outer join, omdat ze overal verplicht zijn;
-- zonder deze waarden is de conditiescore ook niet te berekenen overigens.

-- Full version, met ernst, intensiteit en omvang
CREATE_VIEW(cnd_v_nen2767_alle_gebreken_fl,0)
(
    ins_deel_key,
    mld_melding_key,
    mld_stdmelding_key,
    mld_melding_status,
    ernst,
    intensiteit,
    omvang
)
AS
    WITH
        w_srtdisc_key AS (SELECT fac.getsetting ('cnd_gebreken_srtdisc_key') sdk FROM DUAL)
    SELECT d.ins_deel_key,
           m.mld_melding_key,
           m.mld_stdmelding_key,
           m.mld_melding_status,
           km_ernst.mld_kenmerkmelding_waarde,
           km_intensiteit.mld_kenmerkmelding_waarde,
           ud_omvang.fac_usrdata_prijs
      FROM mld_melding         m,
           mld_stdmelding      sm,
           mld_discipline      disc,
           mld_melding_object  mo,
           ins_deel            d,
           mld_kenmerkmelding  km_ernst,
           mld_kenmerk         k_ernst,
           mld_srtkenmerk      sk_ernst,
           mld_kenmerkmelding  km_intensiteit,
           mld_kenmerk         k_intensiteit,
           mld_srtkenmerk      sk_intensiteit,
           mld_kenmerkmelding  km_omvang,
           mld_kenmerk         k_omvang,
           mld_srtkenmerk      sk_omvang,
           fac_usrdata         ud_omvang,
           w_srtdisc_key
     WHERE     disc.ins_srtdiscipline_key = w_srtdisc_key.sdk
           AND sm.mld_stdmelding_code <> 'GEEN'  
           AND disc.ins_discipline_verwijder IS NULL
           AND sm.mld_ins_discipline_key = disc.ins_discipline_key
           AND m.mld_stdmelding_key = sm.mld_stdmelding_key
           AND mo.mld_melding_key = m.mld_melding_key
           AND mo.mld_melding_object_verwijder IS NULL
           AND d.ins_deel_key = mo.ins_deel_key
           AND km_ernst.mld_melding_key = m.mld_melding_key
           AND k_ernst.mld_kenmerk_key = km_ernst.mld_kenmerk_key
           AND k_ernst.mld_srtkenmerk_key = sk_ernst.mld_srtkenmerk_key
           AND sk_ernst.mld_srtkenmerk_code = 'ERNST'
           AND km_intensiteit.mld_melding_key = m.mld_melding_key
           AND k_intensiteit.mld_kenmerk_key = km_intensiteit.mld_kenmerk_key
           AND k_intensiteit.mld_srtkenmerk_key = sk_intensiteit.mld_srtkenmerk_key
           AND sk_intensiteit.mld_srtkenmerk_code = 'INTENSITEIT'
           AND km_omvang.mld_melding_key = m.mld_melding_key
           AND k_omvang.mld_kenmerk_key = km_omvang.mld_kenmerk_key
           AND k_omvang.mld_srtkenmerk_key = sk_omvang.mld_srtkenmerk_key
           AND sk_omvang.mld_srtkenmerk_code = 'OMVANG'
           AND ud_omvang.fac_usrdata_key = fac.safe_to_number (km_omvang.mld_kenmerkmelding_waarde)
           AND m.mld_melding_status NOT IN (1, 6);

-- Smaller/faster version, zonder ernst, intensiteit en omvang
CREATE_VIEW(cnd_v_nen2767_alle_gebreken,0)
(
    ins_deel_key,
    mld_melding_key,
    mld_stdmelding_key
)
AS
    WITH
        w_srtdisc_key AS (SELECT fac.getsetting ('cnd_gebreken_srtdisc_key') sdk FROM DUAL)
    SELECT d.ins_deel_key,
           m.mld_melding_key, 
           m.mld_stdmelding_key
  FROM mld_melding         m,
       mld_stdmelding      sm,
       mld_discipline      disc,
       mld_melding_object  mo,
       ins_deel            d,
       w_srtdisc_key
 WHERE     disc.ins_srtdiscipline_key = w_srtdisc_key.sdk
       AND sm.mld_stdmelding_code <> 'GEEN'
       AND disc.ins_discipline_verwijder IS NULL
       AND sm.mld_ins_discipline_key = disc.ins_discipline_key
       AND m.mld_stdmelding_key = sm.mld_stdmelding_key
       AND mo.mld_melding_key = m.mld_melding_key
       AND mo.mld_melding_object_verwijder IS NULL
       AND d.ins_deel_key = mo.ins_deel_key
       AND m.mld_melding_status NOT IN (1, 6);

-- Ontdubbel eventuele zelfde gebreken die op hetzelfde object zijn gemaakt, dus wanneer na elkaar
-- hetzelfde gebrek (stdmelding) is ingelegd, dan geldt de laatste (=hoogste melding_key)
CREATE_VIEW(cnd_v_nen2767_per_srtgebrek,0)
(
    ins_deel_key,
    mld_melding_key,
    mld_stdmelding_key,
    mld_melding_status,
    ernst,
    intensiteit,
    omvang
)
AS
    SELECT a.ins_deel_key,
           a.mld_melding_key,
           a.mld_stdmelding_key,
           a.mld_melding_status,
           a.ernst,
           a.intensiteit,
           a.omvang
      FROM cnd_v_nen2767_alle_gebreken_fl  a,
           (  SELECT a2.mld_stdmelding_key,
                     a2.ins_deel_key,
                     MAX (a2.mld_melding_key) AS mld_melding_key
                FROM cnd_v_nen2767_alle_gebreken a2
            GROUP BY a2.mld_stdmelding_key, a2.ins_deel_key) b
     WHERE     a.mld_melding_key = b.mld_melding_key
           AND a.ins_deel_key = b.ins_deel_key;


CREATE_VIEW(cnd_v_nen2767_gebrek,0)
AS
    WITH
        w_srtdisc_key AS (SELECT fac.getsetting ('cnd_gebreken_srtdisc_key') sdk FROM DUAL)
    SELECT mo.ins_deel_key,
           m.mld_melding_key,
           m.mld_stdmelding_key,
           m.mld_melding_status,
           m.mld_melding_datum
      FROM mld_melding         m,
           mld_stdmelding      sm,
           mld_discipline      disc,
           mld_melding_object  mo,
           w_srtdisc_key
     WHERE     disc.ins_srtdiscipline_key = w_srtdisc_key.sdk
           AND disc.ins_discipline_verwijder IS NULL
           AND sm.mld_ins_discipline_key = disc.ins_discipline_key
           AND m.mld_stdmelding_key = sm.mld_stdmelding_key
           AND mo.mld_melding_key = m.mld_melding_key
           AND mo.mld_melding_object_verwijder IS NULL
           AND m.mld_melding_status NOT IN (1,6);


CREATE_VIEW(cnd_v_nen2767_srtgebrek,0)
AS
    SELECT a.ins_deel_key,
           a.mld_melding_key,
           a.mld_stdmelding_key,
           a.mld_melding_status,
           a.mld_melding_datum
      FROM cnd_v_nen2767_gebrek  a,
           (  SELECT a2.mld_stdmelding_key,
                     a2.ins_deel_key,
                     MAX (a2.mld_melding_key) AS mld_melding_key
                FROM cnd_v_nen2767_gebrek a2
            GROUP BY a2.mld_stdmelding_key, a2.ins_deel_key) b
     WHERE     a.mld_melding_key = b.mld_melding_key
           AND a.ins_deel_key = b.ins_deel_key;

CREATE_VIEW(cnd_v_aggr_cond_score,0)
(
    alg_locatie_key,
    alg_gebouw_key,
    ins_deel_key,
    ins_deel_aantal,
    ins_deel_mjb_score1,
    kosten,
    correctiefactor,
    totale_vervangingswaarde,
    correctie_vervangingswaarde
)
AS
      SELECT l.alg_locatie_key,
             g.alg_gebouw_key,
             d.ins_deel_key,
             MAX (d.ins_deel_aantal),
             MAX (d.ins_deel_mjb_score1),
             MAX (
                   COALESCE (sc.INS_SRTCONTROLE_KOSTEN, 0)
                 + COALESCE (sc.INS_SRTCONTROLE_KOSTEN2, 0)
                 + COALESCE (sc.INS_SRTCONTROLE_KOSTEN3, 0)
                 + COALESCE (sc.INS_SRTCONTROLE_MATERIAAL, 0))
                 kosten,
             cnd.nen2767_corr_cond_score (MAX (d.ins_deel_mjb_score1))
                 correctiefactor,
               MAX (d.ins_deel_aantal)
             * MAX (
                     COALESCE (sc.INS_SRTCONTROLE_KOSTEN, 0)
                   + COALESCE (sc.INS_SRTCONTROLE_KOSTEN2, 0)
                   + COALESCE (sc.INS_SRTCONTROLE_KOSTEN3, 0)
                   + COALESCE (sc.INS_SRTCONTROLE_MATERIAAL, 0))
                 totale_vervangingswaarde,
               MAX (d.ins_deel_aantal)
             * MAX (
                     COALESCE (sc.INS_SRTCONTROLE_KOSTEN, 0)
                   + COALESCE (sc.INS_SRTCONTROLE_KOSTEN2, 0)
                   + COALESCE (sc.INS_SRTCONTROLE_KOSTEN3, 0)
                   + COALESCE (sc.INS_SRTCONTROLE_MATERIAAL, 0))
             * cnd.nen2767_corr_cond_score (MAX (d.ins_deel_mjb_score1))
                 correctie_vervangingswaarde
        FROM ins_deel       d,
             ins_v_defined_inspect_xcp sc,
             alg_ruimte     r,
             alg_verdieping v,
             alg_gebouw     g,
             alg_locatie    l
       WHERE     d.ins_deel_verwijder IS NULL
             AND ins_deel_mjb_score1 IS NOT NULL
             AND sc.ins_deel_key = d.ins_deel_key
             AND d.ins_alg_ruimte_type = 'R'
             AND d.ins_alg_ruimte_key = r.alg_ruimte_key
             AND r.alg_verdieping_key = v.alg_verdieping_key
             AND v.alg_gebouw_key = g.alg_gebouw_key
             AND g.alg_locatie_key = l.alg_locatie_key
             AND ins_scenario_key = 1
             AND ctr_ismjob = 1
    GROUP BY d.ins_deel_key, l.alg_locatie_key, g.alg_gebouw_key;

CREATE_VIEW(cnd_v_rap_conditiemetingen, 0)
(
   mld_melding_key,
   complexnummer,
   complexnaam,
   clusternummer,
   clusternaam,
   gebouwgroep,
   hoofdrecept,
   groeprecept,
   subrecept,
   identificatie,
   gebreknr,
   datum_tijd,
   datum,
   inspecteur,
   status,
   gebrek,
   omschrijving,
   ernst,
   omvang,
   intensiteit,
   veiligheid_gezondheid,
   cultuurhistorische_waarde,
   gebruik_en_bedrijfsproces,
   technische_vervolgschade,
   toename_klachtenonderhoud,
   beleving_esthetica,
   foto
)
AS
   SELECT m.mld_melding_key,
          l.alg_locatie_code complexnummer,
          l.alg_locatie_omschrijving complexnaam,
          aog.alg_gebouw_code clusternummer,
          aog.alg_gebouw_naam clusternaam,
          aog.alg_gebouw_groep groep,
          id.ins_discipline_omschrijving hoofdrecept,
          isg.ins_srtgroep_omschrijving groeprecept,
          isd.ins_srtdeel_omschrijving || ' (' || isd.ins_srtdeel_code || ')'
             subrecept,
          d.ins_deel_omschrijving identificatie,
          m.mld_melding_key gebreknummer,
          m.mld_melding_datum datum_tijd,
          TO_CHAR (mld_melding_datum, 'DD-MM-YYYY') datum,
          pf.prs_perslid_naam_full inspecteur,
          s.mld_statuses_omschrijving status,
          std.mld_stdmelding_omschrijving gebrek,
          m.mld_melding_omschrijving omschrijving,
           (SELECT fac_usrdata_omschr
              FROM mld_kenmerkmelding  mk,
                   mld_kenmerk         k,
                   mld_srtkenmerk      sk,
                   fac_kenmerkdomein   kd,
                   fac_usrtab          ut,
                   fac_usrdata         ud
             WHERE     sk.mld_srtkenmerk_code = 'ERNST'
                   AND sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key
                   AND k.mld_kenmerk_key = mk.mld_kenmerk_key
                   AND sk.fac_kenmerkdomein_key = kd.fac_kenmerkdomein_key
                   AND ut.fac_usrtab_key = kd.fac_usrtab_key
                   AND ud.fac_usrtab_key = ut.fac_usrtab_key
                   AND TO_CHAR (fac_usrdata_key) = mld_kenmerkmelding_waarde
                   AND mk.mld_melding_key = m.mld_melding_key)
               ernst,
           (SELECT fac_usrdata_omschr
              FROM mld_kenmerkmelding  mk,
                   mld_kenmerk         k,
                   mld_srtkenmerk      sk,
                   fac_kenmerkdomein   kd,
                   fac_usrtab          ut,
                   fac_usrdata         ud
             WHERE     sk.mld_srtkenmerk_code = 'OMVANG'
                   AND sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key
                   AND k.mld_kenmerk_key = mk.mld_kenmerk_key
                   AND sk.fac_kenmerkdomein_key = kd.fac_kenmerkdomein_key
                   AND ut.fac_usrtab_key = kd.fac_usrtab_key
                   AND ud.fac_usrtab_key = ut.fac_usrtab_key
                   AND TO_CHAR (fac_usrdata_key) = mld_kenmerkmelding_waarde
                   AND mk.mld_melding_key = m.mld_melding_key)
               omvang,
           (SELECT fac_usrdata_omschr
              FROM mld_kenmerkmelding  mk,
                   mld_kenmerk         k,
                   mld_srtkenmerk      sk,
                   fac_kenmerkdomein   kd,
                   fac_usrtab          ut,
                   fac_usrdata         ud
             WHERE     sk.mld_srtkenmerk_code = 'INTENSITEIT'
                   AND sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key
                   AND k.mld_kenmerk_key = mk.mld_kenmerk_key
                   AND sk.fac_kenmerkdomein_key = kd.fac_kenmerkdomein_key
                   AND ut.fac_usrtab_key = kd.fac_usrtab_key
                   AND ud.fac_usrtab_key = ut.fac_usrtab_key
                   AND TO_CHAR (fac_usrdata_key) = mld_kenmerkmelding_waarde
                   AND mk.mld_melding_key = m.mld_melding_key)
               intensiteit,
           (SELECT fac_usrdata_omschr
              FROM mld_kenmerkmelding  mk,
                   mld_kenmerk         k,
                   mld_srtkenmerk      sk,
                   fac_kenmerkdomein   kd,
                   fac_usrtab          ut,
                   fac_usrdata         ud
             WHERE     sk.mld_srtkenmerk_code = 'ASPECT1'
                   AND sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key
                   AND k.mld_kenmerk_key = mk.mld_kenmerk_key
                   AND sk.fac_kenmerkdomein_key = kd.fac_kenmerkdomein_key
                   AND ut.fac_usrtab_key = kd.fac_usrtab_key
                   AND ud.fac_usrtab_key = ut.fac_usrtab_key
                   AND TO_CHAR (fac_usrdata_key) = mld_kenmerkmelding_waarde
                   AND mk.mld_melding_key = m.mld_melding_key)
               veiligheid_gezondheid,
           (SELECT fac_usrdata_omschr
              FROM mld_kenmerkmelding  mk,
                   mld_kenmerk         k,
                   mld_srtkenmerk      sk,
                   fac_kenmerkdomein   kd,
                   fac_usrtab          ut,
                   fac_usrdata         ud
             WHERE     sk.mld_srtkenmerk_code = 'ASPECT2'
                   AND sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key
                   AND k.mld_kenmerk_key = mk.mld_kenmerk_key
                   AND sk.fac_kenmerkdomein_key = kd.fac_kenmerkdomein_key
                   AND ut.fac_usrtab_key = kd.fac_usrtab_key
                   AND ud.fac_usrtab_key = ut.fac_usrtab_key
                   AND TO_CHAR (fac_usrdata_key) = mld_kenmerkmelding_waarde
                   AND mk.mld_melding_key = m.mld_melding_key)
               cultuurhistorische_waarde,
           (SELECT fac_usrdata_omschr
              FROM mld_kenmerkmelding  mk,
                   mld_kenmerk         k,
                   mld_srtkenmerk      sk,
                   fac_kenmerkdomein   kd,
                   fac_usrtab          ut,
                   fac_usrdata         ud
             WHERE     sk.mld_srtkenmerk_code = 'ASPECT3'
                   AND sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key
                   AND k.mld_kenmerk_key = mk.mld_kenmerk_key
                   AND sk.fac_kenmerkdomein_key = kd.fac_kenmerkdomein_key
                   AND ut.fac_usrtab_key = kd.fac_usrtab_key
                   AND ud.fac_usrtab_key = ut.fac_usrtab_key
                   AND TO_CHAR (fac_usrdata_key) = mld_kenmerkmelding_waarde
                   AND mk.mld_melding_key = m.mld_melding_key)
               gebruik_en_bedrijfsproces,
           (SELECT fac_usrdata_omschr
              FROM mld_kenmerkmelding  mk,
                   mld_kenmerk         k,
                   mld_srtkenmerk      sk,
                   fac_kenmerkdomein   kd,
                   fac_usrtab          ut,
                   fac_usrdata         ud
             WHERE     sk.mld_srtkenmerk_code = 'ASPECT4'
                   AND sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key
                   AND k.mld_kenmerk_key = mk.mld_kenmerk_key
                   AND sk.fac_kenmerkdomein_key = kd.fac_kenmerkdomein_key
                   AND ut.fac_usrtab_key = kd.fac_usrtab_key
                   AND ud.fac_usrtab_key = ut.fac_usrtab_key
                   AND TO_CHAR (fac_usrdata_key) = mld_kenmerkmelding_waarde
                   AND mk.mld_melding_key = m.mld_melding_key)
               technische_vervolgschade,
           (SELECT fac_usrdata_omschr
              FROM mld_kenmerkmelding  mk,
                   mld_kenmerk         k,
                   mld_srtkenmerk      sk,
                   fac_kenmerkdomein   kd,
                   fac_usrtab          ut,
                   fac_usrdata         ud
             WHERE     sk.mld_srtkenmerk_code = 'ASPECT5'
                   AND sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key
                   AND k.mld_kenmerk_key = mk.mld_kenmerk_key
                   AND sk.fac_kenmerkdomein_key = kd.fac_kenmerkdomein_key
                   AND ut.fac_usrtab_key = kd.fac_usrtab_key
                   AND ud.fac_usrtab_key = ut.fac_usrtab_key
                   AND TO_CHAR (fac_usrdata_key) = mld_kenmerkmelding_waarde
                   AND mk.mld_melding_key = m.mld_melding_key)
               toename_klachtenonderhoud,
           (SELECT fac_usrdata_omschr
              FROM mld_kenmerkmelding  mk,
                   mld_kenmerk         k,
                   mld_srtkenmerk      sk,
                   fac_kenmerkdomein   kd,
                   fac_usrtab          ut,
                   fac_usrdata         ud
             WHERE     sk.mld_srtkenmerk_code = 'ASPECT6'
                   AND sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key
                   AND k.mld_kenmerk_key = mk.mld_kenmerk_key
                   AND sk.fac_kenmerkdomein_key = kd.fac_kenmerkdomein_key
                   AND ut.fac_usrtab_key = kd.fac_usrtab_key
                   AND ud.fac_usrtab_key = ut.fac_usrtab_key
                   AND TO_CHAR (fac_usrdata_key) = mld_kenmerkmelding_waarde
                   AND mk.mld_melding_key = m.mld_melding_key)
               beleving_esthetica,
           (SELECT k.mld_kenmerk_key
              FROM mld_kenmerk k, mld_srtkenmerk sk
             WHERE sk.mld_srtkenmerk_code = 'FOTO' AND sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key)
               foto
     FROM mld_melding m,
          mld_melding_object mo,
          ins_deel d,
          ins_srtdeel isd,
          ins_srtgroep isg,
          ins_discipline id,
          alg_v_allonrgoed_gegevens aog,
          alg_locatie l,
          mld_statuses s,
          prs_v_perslid_fullnames_all pf,
          mld_stdmelding std
    WHERE     m.mld_melding_key = mo.mld_melding_key
          AND d.ins_deel_key = mo.ins_deel_key
          AND d.ins_srtdeel_key = isd.ins_srtdeel_key
          AND isd.ins_srtgroep_key = isg.ins_srtgroep_key
          AND isg.ins_discipline_key = id.ins_discipline_key
          AND m.mld_alg_onroerendgoed_keys = aog.alg_onroerendgoed_keys
          AND l.alg_locatie_key = aog.alg_locatie_key
          AND s.mld_statuses_key = m.mld_melding_status
          AND m.prs_perslid_key = pf.prs_perslid_key
          AND m.mld_stdmelding_key = std.mld_stdmelding_key;

REGISTERRUN('$Id$')

#endif // CND
