--
-- $Id$
--
-- Vul de historische tabel met monitorings aan met detail informatie voor meldingen
-- die niet tot een korting geleid hebben maar wel een afwijking hadden.

DEFINE thisfile = 'PCHA#52977.sql'
DEFINE dbuser   = 'PCHW'


SET ECHO ON
SET DEFINE ON
COLUMN fcltlogfile NEW_VALUE fcltlogfile NOPRINT;
WHENEVER SQLERROR EXIT;
SELECT adm.scriptspoolfile('&dbuser', '&thisfile') AS fcltlogfile FROM DUAL;
WHENEVER SQLERROR CONTINUE;
SPOOL &fcltlogfile
SET DEFINE OFF

------ payload begin ------


 create or replace  FUNCTION pchw_get_first_melding (p_melding_key   IN NUMBER, p_export IN DATE,
                               p_index         IN NUMBER)
      RETURN NUMBER
   AS
      CURSOR ca
      IS
           SELECT m2.mld_melding_datum van, m2.mld_melding_key
             FROM mld_melding m1,
                  mld_stdmelding std1,
                  (select mld_melding_key, mld_kenmerkmelding_waarde from mld_kenmerkmelding
                  where mld_kenmerk_key = 241) km1,
                  mld_melding m2,
                  mld_stdmelding std2,
                  (select mld_melding_key, mld_kenmerkmelding_waarde from mld_kenmerkmelding
                  where mld_kenmerk_key = 241) km2
            WHERE     m1.mld_melding_key = p_melding_key
                  AND m1.mld_stdmelding_key = std1.mld_stdmelding_key
                  AND m1.mld_melding_key = km1.mld_melding_key(+)
                  AND km1.mld_kenmerkmelding_waarde IS NULL
                  AND m2.mld_melding_key = km2.mld_melding_key(+)
                  AND km2.mld_kenmerkmelding_waarde IS NULL
                  AND m2.mld_melding_parentkey IS NULL
                  AND EXISTS (SELECT 1
                                FROM pchx_monitoring
                               WHERE melding_key = m2.mld_melding_key
                                 AND export_datum = p_export)
                  AND m2.mld_stdmelding_key = std2.mld_stdmelding_key
                  AND  std1.mld_ins_discipline_key NOT IN (232,220)                           -- V-G en W-R koppelen we nooit
                  AND std1.mld_stdmeldinggroep_key = std2.mld_stdmeldinggroep_key            -- voor stdmeldinggroep
                  AND (
                         (     std1.mld_stdmeldinggroep_key = 161  -- FTRC
                           AND m1.mld_alg_onroerendgoed_keys = m2.mld_alg_onroerendgoed_keys)    -- op dezelfde ruimte
                       OR
                         (     std1.mld_stdmeldinggroep_key <> 161  -- FTRC
                           AND m1.mld_alg_onroerendgoed_keys = m2.mld_alg_onroerendgoed_keys)    -- op dezelfde ruimte
                           AND std1.mld_ins_discipline_key = std2.mld_ins_discipline_key         -- zelfde vakgroep.
                      )
                  AND m1.mld_melding_key <> m2.mld_melding_key
                  AND m2.mld_melding_indult <> 1
                  AND m1.mld_melding_indult <> 1
                  AND m2.mld_melding_status <> 1 -- Afgewezen
                  AND m1.mld_melding_datum BETWEEN m2.mld_melding_datum
                                               AND  COALESCE(fac.gettrackingdate ('MLDAFM', m2.mld_melding_key), SYSDATE)
         ORDER BY m2.mld_melding_datum;

      CURSOR cw
      IS
           SELECT m2.mld_melding_datum van, m2.mld_melding_key
             FROM mld_melding m1,
                  mld_stdmelding std1,
                  (select mld_melding_key, mld_kenmerkmelding_waarde from mld_kenmerkmelding
                  where mld_kenmerk_key = 221) km1,
                  mld_melding m2,
                  mld_stdmelding std2,
                  (select mld_melding_key, mld_kenmerkmelding_waarde from mld_kenmerkmelding
                  where mld_kenmerk_key = 221) km2
            WHERE     m1.mld_melding_key = p_melding_key
                  AND m1.mld_stdmelding_key = std1.mld_stdmelding_key
                  AND m1.mld_melding_key = km1.mld_melding_key(+)
                  AND km1.mld_kenmerkmelding_waarde IS NULL
                  AND m2.mld_melding_key = km2.mld_melding_key(+)
                  AND km2.mld_kenmerkmelding_waarde IS NULL
                  AND m2.mld_melding_parentkey IS NULL
                  AND EXISTS (SELECT 1
                                FROM pchx_monitoring
                               WHERE melding_key = m2.mld_melding_key
                                 AND export_datum = p_export)
                  AND m2.mld_stdmelding_key = std2.mld_stdmelding_key
                  AND std2.mld_stdmelding_malus IS NOT NULL -- alleen meldingen waarvoor een malus geldt
                  AND std1.mld_Stdmeldinggroep_key = std2.mld_stdmeldinggroep_key            -- voor stdmeldinggroep
                  AND (
                         (     std1.mld_stdmeldinggroep_key = 181  -- Prestatiekortingen
                           AND std1.mld_ins_discipline_key = std2.mld_ins_discipline_key)
                       OR
                         (     std1.mld_stdmeldinggroep_key <> 181  -- Prestatiekortingen
                           AND m1.mld_alg_onroerendgoed_keys = m2.mld_alg_onroerendgoed_keys)    -- op dezelfde ruimte
                      )
                  AND m1.mld_melding_key <> m2.mld_melding_key
                  AND m2.mld_melding_indult <> 1
                  AND m1.mld_melding_indult <> 1
                  AND m2.mld_melding_status <> 1 -- Afgewezen
                  AND m1.mld_melding_datum BETWEEN m2.mld_melding_datum
                                               AND  COALESCE(fac.gettrackingdate ('MLDAFM', m2.mld_melding_key), SYSDATE)
         ORDER BY m2.mld_melding_datum;

      v_melding_key   NUMBER;
      l_melding_key   NUMBER;
      v_datum_begin   DATE;
      l_datum_begin   DATE;
      v_loop_index    NUMBER;
      rec             ca%ROWTYPE; -- maakt niet uit welke cursor we hier kiezen. Ze hebben dezelfde structuur.
   BEGIN
      v_melding_key := p_melding_key;

      IF pchx_mon.klant_melding (p_melding_key) = 0 THEN
         RETURN p_melding_key;
      END IF;

      SELECT mld_melding_datum
        INTO v_datum_begin
        FROM mld_melding
       WHERE mld_melding_key = p_melding_key;

      v_loop_index := 1;

      IF pchx.get_user = 'PCHA' THEN
         OPEN ca;
      ELSE
         OPEN cw;
      END IF;

      LOOP
         IF pchx.get_user = 'PCHA' THEN
            FETCH ca INTO rec;
            EXIT WHEN ca%NOTFOUND;
         ELSE
            FETCH cw INTO rec;
            EXIT WHEN cw%NOTFOUND;
         END IF;


 --     FOR rec IN c
 --     LOOP

         -- door de sortering op de cursor hoeven we alleen het eerste record te gebruiken tenzij deze niet door de klant is ingediend.
         IF p_index < 10 AND v_loop_index = 1

         THEN
            -- DBMS_OUTPUT.put_line(p_melding_key || '-' || rec.mld_melding_key || '-' || p_index);
            -- DBMS_OUTPUT.put_line('Klant melding: ' || '-' || pchx_mon.klant_melding (rec.mld_melding_key));
            IF pchx_mon.klant_melding (rec.mld_melding_key) = 1
            THEN
               BEGIN
                  l_melding_key :=
                      PCHW_get_first_melding (rec.mld_melding_key, p_export, p_index + 1);
               END;
               --- DBMS_OUTPUT.put_line('Resultaat: ' || rec.mld_melding_key || '-' || l_melding_key);

               SELECT mld_melding_datum
                 INTO l_datum_begin
                 FROM mld_melding
                WHERE mld_melding_key = l_melding_key;

               IF l_datum_begin < v_datum_begin
               THEN
                  v_datum_begin := l_datum_begin;
                  v_melding_key := l_melding_key;
               END IF;
               v_loop_index := v_loop_index + 1;
            END IF;
         END IF;
      END LOOP;

      IF pchx_mon.klant_melding (v_melding_key) = 1
      THEN
         RETURN v_melding_key;
      ELSE
         RETURN p_melding_key;
      END IF;
   END;
/


CREATE OR REPLACE VIEW PCHX_V_STARTMELDING_GEG1
(
    M_START,
    MLD_ALG_ONROERENDGOED_KEYS,
    MLD_MELDING_STATUS,
    MLD_MELDING_AFGEROND,
    AANTAL,
    OVERLAPPEND,
    T_VAN,
    GEREED,
    MLD_MELDING_SPOED,
    MLD_STDMELDING_KEY,
    PRS_KOSTENPLAATS_KEY,
    MAX_T_ACTUAL,
    MIN_T_SLA,
    MAX_T_RESPIJT,
    MIN_THT_EINDDATUM_START,
    MLD_MELDING_INDULT,
    MLD_MELDING_EINDDATUM_STD,
    MLD_MELDING_EINDDATUM,
    MLD_MELDING_OMSCHRIJVING,
    MLD_MELDING_OPMERKING,
    KLANT_MELDING,
    PRS_BEDRIJF_KEY
)
AS
    SELECT m.m_start,
           x.mld_alg_onroerendgoed_keys,
           -- als één van de onderliggende meldingen "open", dan moet ook M_START status Uitgegeven krijgen
           DECODE (m.open, 0, x.mld_melding_status, 4)
               mld_melding_status,                     --- 4 = Geaccepteerd???
           x.mld_melding_afgerond,  -- mld_melding_afgerond van alleen M_START
           m.aantal,
           m.overlappend,
           m.t_van,                                       -- min_melding_datum
           DECODE (m.gereed,
                   TO_DATE ('20991231', 'YYYYMMDD'), TO_DATE (NULL),
                   m.gereed),                          -- max_actual_einddatum
           x.mld_melding_spoed,        -- mld_melding_spoed van alleen M_START
           x.mld_stdmelding_key,      -- mld_stdmelding_key van alleen M_START
           x.prs_kostenplaats_key,  -- prs_kostenplaats_key van alleen M_START
           mld.getactualuitvoer ( -- verschil tussen t_van en gereed/SYSDATE is de maximale - actuele - doorlooptijd!
               m.t_van,
               DECODE (m.gereed,
                       TO_DATE ('20991231', 'YYYYMMDD'), SYSDATE,
                       m.gereed),
               x.mld_stdmelding_key,
               x.mld_melding_spoed,
               x.mld_alg_onroerendgoed_keys,
               NULL)
               max_t_actual,
           mld_t_uitvoertijd (m.min_uitvoertijd, m.min_uitvoertijd_eenheid)
               min_t_sla,
           mld_t_uitvoertijd (COALESCE (m.max_respijt, 0),
                              m.max_respijt_eenheid)
               max_t_respijt,    -- altijd dezelfde eenheid als uitvoertijd???
           mld.geteinddatum (
               m.m_start,
               mld_t_uitvoertijd (m.min_uitvoertijd + m.max_respijt,
                                  m.min_uitvoertijd_eenheid),
               m.t_van)
               min_tht_einddatum_start, -- meest nabije tht-einddatum van overlappende meldingen (t_van + MIN SLA + MAX respijt)
           m.mld_melding_indult,                         -- max_melding_indult
           m.mld_melding_einddatum_std, -- min_melding_einddatum_std of min_tht_einddatum_start???
           m.mld_melding_einddatum,                   -- max_melding_einddatum
           x.mld_melding_omschrijving,  -- mld_melding_oms. van alleen M_START
           x.mld_melding_opmerking,     -- mld_melding_opm. van alleen M_START
           m.klant_melding,            -- melding gemeld door medewerker klant
           m.prs_bedrijf_key                      -- bedrijf key van de melder
      FROM (  SELECT m.m_start,
                     SUM (m.open)
                         open,
                     COUNT (m.mld_melding_key)
                         aantal,
                     LISTAGG (m.mld_melding_key, ',')
                         WITHIN GROUP (ORDER BY m.mld_melding_key)
                         AS overlappend,
                     MIN (m.mld_melding_datum)
                         t_van,                           -- min_melding_datum
                     MAX (m.gereed)
                         gereed,                       -- max_actual_einddatum
                     MIN (m.mld_melding_t_uitvoertijd.tijdsduur)
                         min_uitvoertijd,
                     MIN (m.mld_melding_t_uitvoertijd.eenheid)
                         min_uitvoertijd_eenheid,
                     MAX (m.mld_melding_t_respijt.tijdsduur)
                         max_respijt,
                     MAX (m.mld_melding_t_respijt.eenheid)
                         max_respijt_eenheid, -- altijd dezelfde eenheid als uitvoertijd???
                     MAX (m.mld_melding_indult)
                         mld_melding_indult,
                     MIN (m.mld_melding_einddatum_std)
                         mld_melding_einddatum_std, -- min_melding_einddatum_std of min_thtsla_einddatum_start???
                     MAX (m.mld_melding_einddatum)
                         mld_melding_einddatum,
                     MAX (m.klant_melding)
                         klant_melding,
                     MAX (m.prs_bedrijf_key)
                         prs_bedrijf_key
                FROM (SELECT PCHW_get_first_melding (m.mld_melding_key, export_datum, 1)
                                 m_start,
                             m.mld_melding_key,
                             DECODE (m.mld_melding_status, 4, 1, 0)
                                 open,               -- open = Geaccepteerd???
                             m.mld_melding_datum,
                             COALESCE (
                                 fac.gettrackingdate ('MLDAFM',
                                                      m.mld_melding_key),
                                 TO_DATE ('20991231', 'YYYYMMDD'))
                                 gereed,
                             m.mld_melding_t_uitvoertijd,
                             m.mld_melding_t_respijt,
                             m.mld_melding_indult,
                             m.mld_melding_einddatum_std,
                             m.mld_melding_einddatum,
                             a.prs_bedrijf_key,
                             pchx_mon.klant_melding (m.mld_melding_key)
                                 klant_melding
                        FROM mld_melding   m,
                             mld_stdmelding std,
                             prs_perslid   p,
                             prs_v_afdeling a,
                             pchx_monitoring mo
                       WHERE     m.mld_melding_key = mo.melding_key
                             AND m.mld_melding_parentkey IS NULL
                             AND m.prs_perslid_key = p.prs_perslid_key
                             AND p.prs_afdeling_key = a.prs_afdeling_key
                             AND m.mld_stdmelding_key = std.mld_stdmelding_key
                             AND std.mld_stdmelding_slabewaken = 1 -- alleen meldingen waarvoor een malus geldt
                                                                  ) m
            GROUP BY m.m_start) m,
           mld_melding  x -- gedefinieerde set gegevens bij M_START als referentie
     WHERE m.m_start = x.mld_melding_key;


CREATE OR REPLACE VIEW PCHX_V_MONITORING1
(
    MELDING_KEY,
    AFW,
    INDULT,
    RESPIJT,
    KOSTENPLAATS,
    LOCATIE,
    GEBOUW,
    VERDIEPING,
    RUIMTE,
    OMSCHRIJVING,
    BEGIN,
    GEREED,
    THTIJDSTIP,
    VERWERKT,
    EENHEID,
    THT,
    WHT,
    REGIME,
    GROEP,
    BASISKORTING,
    VARIABELEKORTING,
    WHT_THT,
    TOTAAL,
    TOTAAL_Z_RESPIJT,
    TOTAAL_INDEX,
    STATUS,
    AFGEROND,
    DIENST,
    STDMELDING_KEY,
    DISCIPLINE_KEY,
    OVERLAPPEND,
    GEKOPPELD,
    WEGINGSFACTOR,
    MELDING_OMSCHRIJVING,
    MELDING_OPMERKING,
    KLANT_MELDING,
    BEDRIJF_NAAM,
    OG,
    BEDRIJF_MALUS,
    PREFIX
)
AS
    SELECT m_start,                                         --mld_melding_key,
              DECODE (antedateren, 0, '', 'T') -- de begintijd of eindtijd van de melding is aangepast
           || DECODE (g.respijt.tijdsduur, 0, '', 'R') -- er is een respijt ingevuld
           || DECODE (mld_melding_indult, 1, 'I', '') -- indult is aangevinkt dus melding doet niet mee
           || DECODE (niet_overlappen, 1, 'O', '') -- melding is gemarkeerd als zijnde niet te overlappen met een andere melding
           || DECODE (aantal_beschikb, 0, '', 'B'), -- binnen de looptijd van de melding is er ook een beschikbaarheidsmelding in dezelfde ruimte
           DECODE (COALESCE (mld_melding_indult, 0), 0, 'Nee', 'Ja'),
           DECODE (g.respijt.tijdsduur,
                   0, NULL,
                   TO_CHAR (ROUND (g.respijt.tijdsduur, 2)))
               respijt,
           prs_kostenplaats_nr,
           alg_locatie_code,
           alg_gebouw_upper,
           alg_verdieping_volgnr,
           ruimte,
           mld_stdmelding_omschrijving,
           t_van,
           gereed,
           thtijdstip,
           (SELECT MAX (fac_tracking_datum)
              FROM fac_tracking
             WHERE     fac_tracking_refkey = m_start         --mld_melding_key
                   AND fac_srtnotificatie_key = 46)
               verwerkt,
           eenheid,
           ROUND (g.tht.tijdsduur, 2)
               tht,
           ROUND (g.actual.tijdsduur, 2)
               wht,
           regime,
           mld_stdmeldinggroep_naam
               groep,
           bk
               basiskorting,
           vk
               variabelekorting,
           DECODE (telaat, 1, ROUND (g.uitloop.tijdsduur, 2))
               wht_tht,
           DECODE (
               telaat,
               1, -- Westland rond de breuk af op 1 decimaal en HGH rond af op gehele getallen.
                    COALESCE (bk, 0)
                  + DECODE (
                        vk,
                        NULL, 0,
                        (  ROUND (
                                 g.uitloop.tijdsduur
                               / DECODE (g.thtsla.tijdsduur,
                                         0, 0.1,
                                         g.thtsla.tijdsduur),
                               DECODE (pchx.get_user, 'PCHW', 1, 0))
                         * vk)),                      -- Alleen als dagen x24!
               NULL)
               totaal,
           DECODE (
               telaat_z_respijt,
               1, -- Westland rond de breuk af op 1 decimaal en HGH rond af op gehele getallen.
                    COALESCE (bk, 0)
                  + DECODE (
                        vk,
                        NULL, 0,
                        (  ROUND (
                                 g.uitloop_z_respijt.tijdsduur
                               / DECODE (g.thtsla.tijdsduur,
                                         0, 0.1,
                                         g.thtsla.tijdsduur),
                               DECODE (pchx.get_user, 'PCHW', 1, 0))
                         * vk)),                      -- Alleen als dagen x24!
               NULL)
               totaal_z_respijt,
             DECODE (
                 telaat,
                 1,   COALESCE (bk, 0)
                    + DECODE (
                          vk,
                          NULL, 0,
                          (  ROUND (
                                   g.uitloop.tijdsduur
                                 / DECODE (g.thtsla.tijdsduur,
                                           0, 0.1,
                                           g.thtsla.tijdsduur),
                                 DECODE (pchx.get_user, 'PCHW', 1, 0))
                           * vk)),                    -- Alleen als dagen x24!
                 NULL)
           * PCHX_MON.get_index_value (t_van, 'MON')
               totaal_index,
           (SELECT mld_statuses_omschrijving
              FROM mld_statuses
             WHERE mld_statuses_key = mld_melding_status),
           DECODE (mld_melding_afgerond, 1, 'x'),
           (SELECT prs_dienst_omschrijving
              FROM prs_dienst
             WHERE prs_dienst_key = g.prs_dienst_key),
           mld_stdmelding_key,
           mld_ins_discipline_key,
           overlappend,
           (SELECT LISTAGG (m2.mld_melding_key, ',')
                       WITHIN GROUP (ORDER BY m2.mld_melding_key)
                       AS gekoppeld
              FROM mld_melding m2
             WHERE m2.mld_melding_parentkey = m_start
             GROUP BY m2.mld_melding_parentkey)
               gekoppeld,
           wegingsfactor,
           mld_melding_omschrijving,
           mld_melding_opmerking,
           klant_melding,
           (SELECT prs_bedrijf_naam
              FROM prs_bedrijf b
             WHERE b.prs_bedrijf_key = g.prs_bedrijf_key)
               prs_bedrijf_naam,
           DECODE (
                 antedateren
               + g.respijt.tijdsduur
               + mld_melding_indult
               + mld_melding_afgerond,
               0, 0,
               1),
           PCHX.get_kenmerk ('MLD',
                             DECODE (PCHX.get_user, 'PCHA', 61, 121),
                             m_start),
           ins_srtdiscipline_prefix
      FROM (SELECT m.m_start,
                   m.aantal,
                   DECODE (m.aantal, 1, NULL, m.overlappend)
                       overlappend,
                   (SELECT COUNT (*)
                      FROM mld_kenmerkmelding km
                     WHERE     mld_kenmerk_key =
                               DECODE (PCHX.get_user, 'PCHA', 241, 221)
                           AND km.mld_melding_key = m_start)
                       niet_overlappen,
                   m.mld_melding_status,
                   m.mld_melding_afgerond,
                   m.mld_melding_indult,
                   m.mld_melding_omschrijving,
                   m.mld_melding_opmerking,
                   std.prs_dienst_key,
                   std.mld_stdmelding_key,
                   std.mld_ins_discipline_key,
                   std.mld_stdmelding_omschrijving,
                   std.mld_stdmelding_malus,
                   m.t_van,
                   m.gereed,
                   m.mld_melding_einddatum_std
                       thtijdstip,
                   stdg.mld_stdmeldinggroep_naam,
                   PCHX_MON.get_regime (std.mld_stdmelding_key,
                                        m.mld_alg_onroerendgoed_keys,
                                        NULL)
                       regime,                      -- aantal werkuren per dag
                   UPPER (SUBSTR (stdg.mld_stdmeldinggroep_naam, 1, 1))
                       kortingtype, -- de meldingsgroep bevat het type storing
                   kp.prs_kostenplaats_nr,
                   rg.alg_locatie_code,
                   rg.alg_gebouw_upper,
                   rg.alg_verdieping_volgnr,
                   rg.alg_ruimte_nr || '-' || rg.alg_ruimte_omschrijving
                       ruimte,
                   COALESCE (
                       (SELECT stsr.mld_stdmsrtruimte_malusbasis
                          FROM mld_stdmsrtruimte stsr
                         WHERE     stsr.mld_stdmelding_key =
                                   std.mld_stdmelding_key
                               AND stsr.alg_srtruimte_key =
                                   rg.alg_srtruimte_key),
                       std.mld_stdmelding_malusbasis)
                       bk,
                   COALESCE (
                       (SELECT stsr.mld_stdmsrtruimte_malus
                          FROM mld_stdmsrtruimte stsr
                         WHERE     stsr.mld_stdmelding_key =
                                   std.mld_stdmelding_key
                               AND stsr.alg_srtruimte_key =
                                   rg.alg_srtruimte_key),
                       std.mld_stdmelding_malus)
                       vk,
                   (SELECT COUNT (mb.mld_melding_key) aantal -- kijk of er op het moment van de melding er een beschikbaarheidsstoring was
                      FROM mld_melding mb, mld_stdmelding std_b
                     WHERE     (   mb.mld_melding_datum BETWEEN m.t_van
                                                            AND COALESCE (
                                                                    m.gereed,
                                                                    SYSDATE)
                                OR fac.gettrackingdate ('MLDAFM',
                                                        mb.mld_melding_key) BETWEEN m.t_van
                                                                                AND COALESCE (
                                                                                        m.gereed,
                                                                                        SYSDATE))
                           AND mb.mld_alg_onroerendgoed_keys =
                               m.mld_alg_onroerendgoed_keys
                           AND mb.mld_stdmelding_key =
                               std_b.mld_stdmelding_key
                           AND std_b.mld_stdmeldinggroep_key = 63 -- beschikbaarheid
                           AND std.mld_stdmeldinggroep_key <> 63)
                       aantal_beschikb,                     -- beschikbaarheid
                   -- vervolgmelding op een inspectie zijn per definitie te laat
                   -- inspecties zelf zijn te laat als de geplande einddatum verstreken is.
                   -- anders geldt de normale formule
                   SIGN (
                         m.max_t_actual.tijdsduur
                       - m.min_t_sla.tijdsduur
                       - m.max_t_respijt.tijdsduur)   -- positief, dan te laat
                       telaat,
                   SIGN (m.max_t_actual.tijdsduur - m.min_t_sla.tijdsduur) -- positief, dan te laat
                       telaat_z_respijt,
                   m.max_t_actual
                       actual,                     -- MAX actuele doorlooptijd
                   m.min_t_sla
                       thtsla,                                      -- MIN SLA
                   m.min_t_sla.eenheid
                       eenheid,
                   m.max_t_respijt
                       respijt,                                 -- MAX respijt
                   mld_t_uitvoertijd (
                       m.min_t_sla.tijdsduur + m.max_t_respijt.tijdsduur,
                       m.min_t_sla.eenheid)
                       tht,                           -- MIN SLA + MAX respijt
                   mld_t_uitvoertijd (
                         m.max_t_actual.tijdsduur
                       - m.min_t_sla.tijdsduur
                       - m.max_t_respijt.tijdsduur,
                       m.max_t_actual.eenheid)
                       uitloop,                             -- hoeveel te laat
                   mld_t_uitvoertijd (
                       m.max_t_actual.tijdsduur - m.min_t_sla.tijdsduur,
                       m.max_t_actual.eenheid)
                       uitloop_z_respijt,                   -- hoeveel te laat
                   sr.alg_srtruimte_prijs4
                       wegingsfactor,         -- wegingsfactor bij soortruimte
                   -- is de tijd van de melding aangepast?
                   (SELECT COUNT (*)
                      FROM fac_tracking t, fac_srtnotificatie sn
                     WHERE     t.fac_tracking_refkey = m.m_start -- mld_melding_key VAN MELDING MET LAAGSTE KEY???
                           AND t.fac_srtnotificatie_key =
                               sn.fac_srtnotificatie_key
                           AND sn.fac_srtnotificatie_code = 'MLDUPD'
                           AND (   t.fac_tracking_oms LIKE '%Start :%'
                                OR t.fac_tracking_oms LIKE '%Afgemeld:%'))
                       antedateren,
                   klant_melding,
                   prs_bedrijf_key,
                   ins_srtdiscipline_prefix
              FROM pchx_v_startmelding_geg1  m,
                   mld_stdmelding           std,
                   ins_tab_discipline       d,
                   ins_srtdiscipline        sd,
                   mld_stdmeldinggroep      stdg,
                   prs_kostenplaats         kp,
                   alg_v_ruimte_gegevens    rg,
                   alg_srtruimte            sr
             WHERE     m.mld_melding_status IN (0,
                                                2,
                                                3,
                                                4,
                                                5,
                                                6,
                                                7,
                                                99) -- alles behalve 1=Afgewezen
                   AND m.mld_stdmelding_key = std.mld_stdmelding_key
                   AND std.mld_ins_discipline_key = d.ins_discipline_key
                   AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
                   AND std.mld_stdmeldinggroep_key =
                       stdg.mld_stdmeldinggroep_key(+)
                   AND m.prs_kostenplaats_key = kp.prs_kostenplaats_key(+)
                   AND m.mld_alg_onroerendgoed_keys = rg.alg_ruimte_key(+)
                   AND rg.alg_srtruimte_key = sr.alg_srtruimte_key(+)
                   AND (   UPPER (SUBSTR (sd.ins_srtdiscipline_prefix, 1, 1)) =
                           'Q'
                        OR (    PCHX.get_user = 'PCHA'
                            AND d.ins_discipline_key IN (232, 220)) -- V en G, W en R
                        OR klant_melding = 1)
                   -- meldingen op inspecties worden altijd getoond (Kq)
                   -- anders alleen storingen ingelegd door klant medewerkers
                   -- alleen meldingen waarvoor een malus geldt
                   AND (   std.mld_stdmelding_malus IS NOT NULL
                        OR EXISTS
                               (SELECT mld_stdmsrtruimte_key
                                  FROM mld_stdmsrtruimte stdsr
                                 WHERE stdsr.mld_stdmelding_key =
                                       std.mld_stdmelding_key))) g;



DECLARE
    CURSOR c
    IS
SELECT  mo.melding_key,
               mo.afw,
               mo.indult,
               mo.respijt,
               mo.locatie,
               mo.gebouw,
               mo.verdieping,
               mo.ruimte,
               mo.omschrijving,
               mo.begin,
               mo.gereed,
               mo.thtijdstip,
               mo.verwerkt,
               mo.eenheid,
               mo.tht,
               mo.wht,
               mo.wht_tht,
               mo.regime,
               mo.groep,
            --   mo.typekorting ,
               mo.basiskorting,
               mo.variabelekorting,
               mo.wegingsfactor,
               mo.dienst,
               mo.stdmelding_key,
               mo.totaal,
               mo.totaal_index,
               mo.overlappend,
               mo.gekoppeld,
               mo.bedrijf_naam ,
               mo.klant_melding ,
               mo.melding_omschrijving ,
               mo.melding_opmerking,
               mo.bedrijf_malus ,
               mo.prefix
          FROM pchx_v_monitoring1 mo, pchx_monitoring m
         WHERE     mo.melding_key = m.melding_key
               AND m.omschrijving IS NULL
               AND mo.afw IS NOT NULL;
   v_count NUMBER;
BEGIN
    FOR rec IN c
    LOOP
       SELECT count(*)
         INTO v_count
         FROM pchx_monitoring mo
        WHERE ',' || mo.overlappend || ',' like '%,' || rec.melding_key || ',%'
          AND mo.melding_key <> rec.melding_key;

        IF v_count = 0
        THEN
           UPDATE pchx_monitoring
              SET afw = rec.afw,
                  indult = rec.indult,
                  respijt = rec.respijt,
                  locatie = rec.locatie,
                  gebouw = rec.gebouw,
                  verdieping = rec.verdieping,
                  ruimte = rec.ruimte,
                  omschrijving = rec.omschrijving,
                  begin = rec.begin,
                  gereed = rec.gereed,
                  thtijdstip = rec.thtijdstip,
                  verwerkt = rec.verwerkt,
                  eenheid = rec.eenheid,
                  tht = rec.tht,
                  wht = rec.wht,
                  wht_tht = rec.wht_tht,
                  regime = rec.regime,
                  groep = rec.groep,
                  typekorting = 'Cor',
                  basiskorting = rec.basiskorting,
                  variabelekorting = rec.variabelekorting,
                  wegingsfactor = rec.wegingsfactor,
                  dienst = rec.dienst,
                  stdmelding_key = rec.stdmelding_key,
                  totaal = 0,
                  totaal_index = 0,
                  overlappend = rec.overlappend,
                  gekoppeld = rec.gekoppeld,
               --   kinderen = rec.kinderen,
                  prs_bedrijf_naam = rec.bedrijf_naam,
                  klant_melding = rec.klant_melding,
                  melding_omschrijving = rec.melding_omschrijving,
                  melding_opmerking = rec.melding_opmerking,
                  bedrijf_malus = rec.bedrijf_malus,
                  prefix = rec.prefix
            WHERE melding_key = rec.melding_key;
       END IF;
    END LOOP;

    COMMIT;
END;
/

drop view PCHX_V_MONITORING1;

drop view PCHX_V_STARTMELDING_GEG1;

drop function pchw_get_first_melding;

------ payload end   ------

SET DEFINE OFF
BEGIN adm.systrackscriptId ('$Id$', 1); END;
/

COMMIT;
SET ECHO OFF
SPOOL OFF
SET DEFINE ON
PROMPT Logfile of this upgrade is: &fcltlogfile