--
-- $Id$
--

DEFINE thisfile = 'bvb1.SQL'
DEFINE dbuser   = 'BVB1'

SET ECHO ON
SET DEFINE ON
COLUMN fcltlogfile NEW_VALUE fcltlogfile NOPRINT;
COLUMN fcltcusttxt NEW_VALUE fcltcusttxt NOPRINT;
WHENEVER SQLERROR CONTINUE;
SELECT adm.getscriptspoolfile('&thisfile') AS fcltlogfile FROM DUAL;
SPOOL &fcltlogfile
WHENEVER SQLERROR EXIT;
SELECT adm.checkscriptcust('&dbuser') AS fcltcusttxt FROM DUAL;
WHENEVER SQLERROR CONTINUE;
---------------------------------------
PROMPT &fcltcusttxt
---------------------------------------
SET DEFINE OFF

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

CREATE OR REPLACE PACKAGE BVB1
AS
   PROCEDURE melding_after_save (p_melding_key IN NUMBER);

   PROCEDURE processemail (pfrom      IN VARCHAR2,
                           pto        IN VARCHAR2,
                           psubject   IN VARCHAR2,
                           pbody      IN VARCHAR2,
                           psessionid IN VARCHAR2,
                           pemailkey  IN NUMBER);

   PROCEDURE RM_update_folders;
   
   PROCEDURE RM_update_equipment;
END;
/

CREATE OR REPLACE PACKAGE BODY BVB1
AS
   PROCEDURE melding_after_save (p_melding_key IN NUMBER)
   AS

   CURSOR c IS
      SELECT mld_melding_key
        FROM mld_melding m, mld_stdmelding std, mld_discipline d
       WHERE m.mld_stdmelding_key = std.mld_stdmelding_key
         AND std.mld_ins_discipline_key = d.ins_discipline_key
         AND d.ins_srtdiscipline_key IN (2,3)  -- Storingen en interne actielijst
         AND BITAND(std.mld_stdmelding_planbaar,4) = 4
         AND m.mld_melding_status = 4
         AND mld_melding_actiedatum IS NULL AND 1=0;

   v_tijdsduur  NUMBER;
   v_eenheid    VARCHAR2(1);
   v_actiedatum DATE;
   v_status     MLD_MELDING.MLD_MELDING_STATUS%TYPE;
   BEGIN
      -- meldingen die binnen een dag afgehandeld moeten worden krijgen
      -- direct een actiedatum. Hierdoor komen ze in het planbord te staan.
      SELECT std.mld_stdmelding_t_uitvoertijd.tijdsduur tijdsduur,
             std.mld_stdmelding_t_uitvoertijd.eenheid eenheid,
             m.mld_melding_actiedatum,
             m.mld_melding_status
        INTO v_tijdsduur, v_eenheid, v_actiedatum, v_status
        FROM mld_stdmelding std, mld_melding m
       WHERE m.mld_stdmelding_key = std.mld_stdmelding_key
         AND m.mld_melding_key = p_melding_key;

       IF     v_actiedatum IS NULL
          AND (   v_eenheid = 'D' AND v_tijdsduur = 1
               OR v_eenheid = 'U' AND v_tijdsduur <= 8)
       THEN
          UPDATE mld_melding
             SET mld_melding_actiedatum = mld_melding_datum
           WHERE mld_melding_key = p_melding_key;
       END IF;

       -- Als de melding geaccepteerd wordt en de actiedatum is nog leeg dan gaan we de actiedatum
       -- vullen met de dag van vandaag zodat de melding ook op de kalender (rapportage) verschijnt.
       FOR rec IN c
       LOOP
          UPDATE mld_melding
             SET mld_melding_actiedatum = SYSDATE
           WHERE mld_melding_key = rec.mld_melding_key;
       END LOOP;

   END;

   PROCEDURE processemail (pfrom      IN VARCHAR2,
                           pto        IN VARCHAR2,
                           psubject   IN VARCHAR2,
                           pbody      IN VARCHAR2,
                           psessionid IN VARCHAR2,
                           pemailkey  IN NUMBER
                          )
   AS
      sender              prs_perslid.prs_perslid_key%TYPE;
      newkey              mld_melding.mld_melding_key%TYPE;
      defaultstdmelding   fac_setting.fac_setting_default%TYPE;
      kkey_att            mld_kenmerk.mld_kenmerk_key%TYPE;
      kkey_mail           mld_kenmerk.mld_kenmerk_key%TYPE;
      errormsg            fac_result.fac_result_waarde%TYPE;
   BEGIN
      BEGIN
         -- Valideer de sender in pfrom: kennen we deze?
         SELECT prs_perslid_key
           INTO sender
           FROM prs_perslid p, prs_afdeling d
          WHERE p.prs_afdeling_key = d.prs_afdeling_key
                AND UPPER (prs_perslid_email) = UPPER (pfrom);
      EXCEPTION WHEN NO_DATA_FOUND
      THEN
         sender := 4801;
      END;

      CASE
         WHEN UPPER (pto) LIKE 'HUURDER@%'
         THEN
            defaultstdmelding := 1861;
            kkey_att := 1;
            kkey_mail := 4661;
         WHEN UPPER (pto) LIKE 'OBJECTREGISTRATIE@%'
         THEN
            defaultstdmelding := 1981;
            kkey_att := 1;
            kkey_mail := 4661;
         ELSE
            NULL;
      END CASE;

      IF defaultstdmelding IS NOT NULL
      THEN
            -- suggested extensions:
            -- check for MLDUSE-write autorisations
            -- parse the subject to find an appropriate stdmelding, if uniquely possible
            -- append (as a note?) to an existing melding if #key is found in the subject
            BEGIN
               INSERT INTO mld_melding (mld_melding_module,
                                        mld_meldbron_key,
                                        mld_melding_datum,
                                        mld_melding_onderwerp,
                                        mld_melding_omschrijving,
                                        mld_melding_status,
                                        mld_stdmelding_key,
                                        mld_melding_email_ext,
                                        prs_perslid_key,
                                        prs_perslid_key_voor,
                                        prs_kostenplaats_key,
                                        mld_melding_spoed)
                   VALUES ('MLD',
                           4,                                            -- email
                           SYSDATE,
                           SUBSTR (psubject, 1, 80),
                           SUBSTR (REPLACE (SUBSTR (pbody, 1, 4000),
                                            CHR (13) || CHR (10) || CHR (13) || CHR (10),
                                            CHR (13) || CHR (10)),
                                   1,
                                   4000),              -- verwijder onnodige witregels
                           NULL,
                           defaultstdmelding,
                           pfrom,
                           sender,
                           sender,
                           NULL,
                           3)
                RETURNING mld_melding_key
                     INTO newkey;


               INSERT INTO fac_result (fac_result_sessionid,
                                       fac_result_naam,
                                       fac_result_waarde)
                               VALUES (psessionid,
                                       'kenmerkpath',
                                       'MLD\M' || to_char( TRUNC(newkey/1000), 'FM0000') || '___\M' || newkey || CHR(92) || kkey_att || CHR(92));

               INSERT INTO fac_result (fac_result_sessionid,
                                       fac_result_naam,
                                       fac_result_waarde)
                               VALUES (psessionid,
                                       'kenmerkorgmailpath',
                                       'MLD\M' || TO_CHAR (TRUNC (newkey / 1000), 'FM0000') || '___\M' || newkey || CHR(92) || kkey_mail || CHR(92));

               mld.setmeldingstatus (newkey, 2, sender);
            END;
      END IF;

      IF errormsg IS NOT NULL
      THEN
         INSERT INTO fac_result (fac_result_sessionid,
                                 fac_result_naam,
                                 fac_result_waarde)
             VALUES (psessionid, 'errormsg', errormsg);
      END IF;
   EXCEPTION
      WHEN OTHERS
      THEN
         fac.writelog (
                  'PROCESSEMAIL',
                  'W',
                     'Mail kon niet verwerkt worden afzender: '
                  || pfrom
                  || '['
                  || errormsg
                  || ']',
                     'OTHERS (error '
                  || SQLCODE
                  || '/'
                  || SUBSTR (SQLERRM, 1, 100)
                  || ')');
         INSERT INTO fac_result (fac_result_sessionid,
                                 fac_result_naam,
                                 fac_result_waarde)
             VALUES (psessionid,
                     'errormsg',
                     'Database fout - Neem contact op met uw systeembeheerder');
   END;

   PROCEDURE RM_update_folders
   AS
      -- We nemen alleen groepen over die ook objectsoorten bevatten.
      CURSOR c_srtgroep
      IS 
         SELECT *
           FROM bvb1_v_folder_structuur fs
          WHERE     fs.niveau = 1
                AND EXISTS
                       (SELECT 1
                          FROM bvb1_v_folder_structuur fs2
                         WHERE fs2.niveau = 2 AND fs2.parent1 = fs.id);

      CURSOR c_srtdeel (c_srtgroep_id VARCHAR2)
      IS
         SELECT *
           FROM bvb1_v_folder_structuur
          WHERE parent1 = c_srtgroep_id AND name IS NOT NULL;

      v_discipline_key   INS_TAB_DISCIPLINE.INS_DISCIPLINE_KEY%TYPE;
      v_srtgroep_key     INS_SRTGROEP.INS_SRTGROEP_KEY%TYPE;
      v_srtdeel_key      INS_SRTDEEL.INS_SRTDEEL_KEY%TYPE;
      v_aanduiding       VARCHAR2 (200);
   BEGIN
      SELECT ins_discipline_key
        INTO v_discipline_key
        FROM ins_discipline
       WHERE ins_discipline_omschrijving = 'AV';

      FOR rec IN c_srtgroep
      LOOP
         BEGIN
            SELECT ins_srtgroep_key
              INTO v_srtgroep_key
              FROM ins_srtgroep
             WHERE ins_srtgroep_verwijder IS NULL AND ins_srtgroep_externnr = rec.id;

            UPDATE ins_srtgroep
               SET ins_srtgroep_omschrijving = rec.name || ' (' || rec.id || ')'
             WHERE ins_srtgroep_key = v_srtgroep_key;
         EXCEPTION
            WHEN NO_DATA_FOUND
            THEN
               INSERT INTO ins_srtgroep (ins_discipline_key, ins_srtgroep_omschrijving, ins_srtgroep_externnr)
                    VALUES (v_discipline_key, rec.name || ' (' || rec.id || ')', rec.id)
                 RETURNING ins_srtgroep_key
                      INTO v_srtgroep_key;
         END;

         FOR rec_d IN c_srtdeel (rec.id)
         LOOP
            BEGIN
               DBMS_OUTPUT.put_line (rec_d.id || '- ' || rec_d.name);

               SELECT ins_srtdeel_key
                 INTO v_srtdeel_key
                 FROM ins_srtdeel
                WHERE ins_srtdeel_verwijder IS NULL AND ins_srtdeel_externnr = rec_d.id;

               UPDATE ins_srtdeel
                  SET ins_srtdeel_omschrijving = REPLACE (rec_d.PATH, rec.name || CHR (47), ''),
                      ins_srtgroep_key = v_srtgroep_key
                WHERE ins_srtdeel_key = v_srtdeel_key;
            EXCEPTION
               WHEN NO_DATA_FOUND
               THEN
                  INSERT INTO ins_srtdeel (ins_srtgroep_key,
                                           ins_srtdeel_code,
                                           ins_srtdeel_omschrijving,
                                           ins_srtdeel_externnr,
                                           ins_srtdeel_binding)
                       VALUES (v_srtgroep_key,
                               rec_d.id,
                               REPLACE (rec_d.PATH, rec.name || CHR (47), ''),
                               rec_d.id,
                               1)          -- ruimte koppeling
                    RETURNING ins_srtdeel_key
                         INTO v_srtdeel_key;
            END;
         END LOOP;
      END LOOP;
   END;
   
   PROCEDURE RM_update_equipment
   AS
      CURSOR c IS SELECT * FROM bvb1_imp_equipment;

      v_discipline_key        INS_TAB_DISCIPLINE.INS_DISCIPLINE_KEY%TYPE;
      v_srtgroep_key          INS_SRTGROEP.INS_SRTGROEP_KEY%TYPE;
      v_srtdeel_key           INS_SRTDEEL.INS_SRTDEEL_KEY%TYPE;
      v_deel_key              INS_DEEL.INS_DEEL_KEY%TYPE;
      v_kk_aanschafdatum      INS_KENMERK.INS_KENMERK_KEY%TYPE;
      v_kk_aanschafprijs      INS_KENMERK.INS_KENMERK_KEY%TYPE;
      v_kk_serienummer        INS_KENMERK.INS_KENMERK_KEY%TYPE;
      v_srtcontrole_key       INS_SRTCONTROLE.INS_SRTCONTROLE_KEY%TYPE;
      v_srtcontroledl_xcp_key INS_SRTCONTROLEDL_XCP.INS_SRTCONTROLEDL_XCP_KEY%TYPE;
      v_count                 NUMBER;
   BEGIN
   
      -- Eerst gaan we de kenmerk-keys opzoeken:
      SELECT ins_kenmerk_key
        INTO v_kk_aanschafdatum
        FROM ins_kenmerk 
       WHERE ins_kenmerk_verwijder IS NULL
         AND ins_kenmerk_code = 'AV_AANSCHAFDATUM';

      SELECT ins_kenmerk_key
        INTO v_kk_aanschafprijs
        FROM ins_kenmerk 
       WHERE ins_kenmerk_verwijder IS NULL
         AND ins_kenmerk_code = 'AV_AANSCHAFPRIJS';

      SELECT ins_kenmerk_key
        INTO v_kk_serienummer
        FROM ins_kenmerk 
       WHERE ins_kenmerk_verwijder IS NULL
         AND ins_kenmerk_code = 'AV_SERIENUMMER';

      FOR rec IN c
      LOOP
         BEGIN
            SELECT ins_srtdeel_key, ins_discipline_key
              INTO v_srtdeel_key, v_discipline_key
              FROM ins_srtdeel sd, ins_srtgroep sg
             WHERE     sd.ins_srtdeel_externnr = REPLACE (rec.folder, '/folders/')
                   AND sd.ins_srtgroep_key = sg.ins_srtgroep_key
                   AND ins_srtdeel_verwijder IS NULL;
         EXCEPTION
         WHEN NO_DATA_FOUND
         THEN
            DBMS_OUTPUT.put_line ('Srtdeel niet gevonden: ' || rec.folder);
            v_srtdeel_key := -1;
         END;
         IF v_srtdeel_key <> -1 
         THEN
            BEGIN
               SELECT ins_deel_key
                 INTO v_deel_key
                 FROM ins_deel
                WHERE ins_deel_verwijder IS NULL AND ins_deel_externnr = rec.serial_id;

                     UPDATE ins_deel SET   ins_srtdeel_key = v_srtdeel_key,
                                           ins_deel_omschrijving = SUBSTR ('AV_' || rec.serial_qrcodes, 1, 60),
                                           ins_deel_opmerking = SUBSTR (rec.name, 1, 320 - LENGTH (rec.serial_displayname) - 4),
                                           ins_deel_aanmaak = COALESCE (rec.serial_purchasedate, SYSDATE),
                                           ins_discipline_key = v_discipline_key
                                  WHERE ins_deel_key = v_deel_key;

            EXCEPTION
               WHEN NO_DATA_FOUND
               THEN
                  BEGIN
   --dbms_output.put_line ( SUBSTR (rec.name, 1, 60 - LENGTH (rec.serial_id) - 4) || ' (' || rec.serial_id || ')');
                     INSERT INTO ins_deel (ins_srtdeel_key,
                                           ins_alg_ruimte_key,
                                           ins_alg_ruimte_type,
                                           ins_deel_aantal,
                                           ins_deel_omschrijving,
                                           ins_deel_opmerking,
                                           ins_deel_aanmaak,
                                           ins_discipline_key,
                                           ins_deel_externnr)
                             VALUES (
                                v_srtdeel_key,
                                404,
                                'R',
                                1,
                                SUBSTR ('AV_' || rec.serial_qrcodes, 1, 60),
                                   SUBSTR (rec.name, 1, 320 - LENGTH (rec.serial_displayname) - 4)
                                || ' ('
                                || rec.serial_displayname
                                || ')',
                                COALESCE (rec.serial_purchasedate, SYSDATE),
                                v_discipline_key,
                                rec.serial_id)
                            RETURNING ins_deel_key INTO v_deel_key;
                  END;
              
            END;
            
            -- nu kijken of er een inspectie gekoppeld is aan het objectsoort
            BEGIN
               SELECT ins_srtcontrole_key
                 INTO v_srtcontrole_key
                 FROM ins_srtcontrole sc 
                WHERE     ins_srtinstallatie_key = v_srtdeel_key
                      AND ins_srtcontrole_niveau = 'S';
               
               BEGIN 
                  SELECT ins_srtcontroledl_xcp_key
                    INTO v_srtcontroledl_xcp_key
                    FROM ins_srtcontroledl_xcp
                   WHERE ins_deel_key = v_deel_key
                     AND ins_srtcontrole_key = v_srtcontrole_key;

                  IF COALESCE(rec.serial_purchase_costs,0) <> 0
                  THEN
                     UPDATE ins_srtcontroledl_xcp SET ins_srtcontroledl_xcp_kosten = rec.serial_purchase_costs WHERE ins_srtcontroledl_xcp_key = v_srtcontroledl_xcp_key;
                  ELSE
                     DELETE ins_srtcontroledl_xcp WHERE ins_srtcontroledl_xcp_key = v_srtcontroledl_xcp_key;
                  END IF;

                  EXCEPTION WHEN NO_DATA_FOUND
                  THEN 
                     -- Nieuwe uitzondering aanmaken om de prijs op te slaan
                     IF COALESCE(rec.serial_purchase_costs,0) <> 0
                     THEN 
                        INSERT INTO ins_srtcontroledl_xcp( ins_deel_key, ins_srtcontrole_key, ins_srtcontroledl_xcp_kosten)
                               VALUES (v_deel_key, v_srtcontrole_key, rec.serial_purchase_costs);
                     END IF;
                  END;
               EXCEPTION WHEN NO_DATA_FOUND 
               THEN 
                  --  Geen vervangingstaak gevonden. Misschien niet nodig of misschien een nieuw objectsoort.
                  fac.writelog ('IMPORT_AV', 'W', 'Vervangingstaak niet gevonden.', rec.folder);
               END;

            -- update kenmerken
            FLX.setflex('INS', v_kk_aanschafdatum, v_deel_key, TO_CHAR(rec.serial_purchasedate, 'dd-mm-yyyy'));
            FLX.setflex('INS', v_kk_aanschafprijs, v_deel_key, rec.serial_purchase_costs);
            FLX.setflex('INS', v_kk_serienummer, v_deel_key, rec.serial);
         END IF;
      END LOOP;
      
      SELECT count(*) INTO v_count FROM bvb1_imp_equipment;
      
      IF v_count > 500 
      THEN
         -- Verwijder objecten die niet meer voorkomen in de import
         UPDATE ins_deel
            SET ins_deel_verwijder = SYSDATE
          WHERE ins_deel_key IN (SELECT d.ins_deel_key
                                   FROM ins_v_deel_gegevens dg, ins_deel d
                                  WHERE     ins_discipline_omschrijving = 'AV'
                                        AND d.ins_deel_externnr IS NOT NULL
                                        AND dg.ins_deel_key = d.ins_deel_key
                                        AND NOT EXISTS
                                               (SELECT 1
                                                  FROM bvb1_imp_equipment i
                                                 WHERE d.ins_deel_externnr = i.serial_id));
      END IF;
      
   END;

END;
/


-- view om overzicht van de geplande acties te krijgen.
CREATE OR REPLACE VIEW bvb1_v_rap_gepl_acties
AS
SELECT o.mld_opdr_key,
       pf.prs_perslid_naam_full,
       o.mld_melding_key,
       fac_activiteit_omschrijving,
       fac_activiteit_periode,
       DECODE (fac_activiteit_eenheid,
               4, 'jaarlijks',
               3, 'maandelijks',
               2, 'wekelijks',
               1, 'dagelijks')                          fac_activiteit_eenheid,
       o.mld_opdr_datumbegin,
       mld.getopdrachtstatusdate (o.mld_opdr_key, 6)    mld_opdr_afgemeld
  FROM fac_activiteit               a,
       mld_opdr                     ao,
       mld_melding                  m,
       mld_opdr                     o,
       prs_v_perslid_fullnames_all  pf
 WHERE     a.fac_activiteit_key = ao.fac_activiteit_key
       AND ao.mld_melding_key = m.mld_melding_key
       AND m.mld_melding_key = o.mld_melding_key
       AND o.mld_uitvoerende_keys = pf.prs_perslid_key;

-- rapport om de opmerkingen van de inspecteur te zien
CREATE OR REPLACE VIEW bvb1_v_rap_deel_notities
AS
    SELECT n.ins_deel_note_aanmaak,
           n.ins_deel_note_omschrijving,
           pf.prs_perslid_naam_full,
           dg.ins_discipline_omschrijving,
           dg.ins_srtgroep_omschrijving,
           dg.ins_srtdeel_omschrijving,
           dg.ins_srtdeel_upper,
           dg.alg_gebouw_omschrijving,
           dg.alg_gebouw_upper,
           dg.alg_verdieping_omschrijving,
           dg.alg_verdieping_code,
           dg.alg_ruimte_nr,
           dg.ins_deel_omschrijving,
           dg.ins_deel_aantal,
           dg.ins_deel_opmerking,
           dg.ins_deel_vervaldatum
      FROM ins_deel_note n,
           ins_v_deel_gegevens dg,
           prs_v_perslid_fullnames_all pf
     WHERE n.ins_deel_key = dg.ins_deel_key
       AND n.prs_perslid_key = pf.prs_perslid_key;

CREATE OR REPLACE VIEW bvb1_v_rap_conditiemetingen
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                                                                         gebouwgroep,
           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(m.MLD_MELDING_ACTIEDATUM, 'YYYY')                                                    uitvoerjaar,
           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 mld_kenmerkmelding_waarde
              FROM mld_kenmerkmelding  mk,
                   mld_kenmerk         k,
                   mld_srtkenmerk      sk
             WHERE     sk.mld_srtkenmerk_code = 'KOSTEN'
                   AND sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key
                   AND k.mld_kenmerk_key = mk.mld_kenmerk_key
                   AND mk.mld_melding_key = m.mld_melding_key)                                         kosten,
           (SELECT mld_kenmerkmelding_waarde
              FROM mld_kenmerkmelding  mk,
                   mld_kenmerk         k,
                   mld_srtkenmerk      sk
             WHERE     sk.mld_srtkenmerk_code = 'EENHEID'
                   AND sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key
                   AND k.mld_kenmerk_key = mk.mld_kenmerk_key
                   AND mk.mld_melding_key = m.mld_melding_key)                                          eenheid,
           (SELECT mld_kenmerkmelding_waarde
              FROM mld_kenmerkmelding  mk,
                   mld_kenmerk         k,
                   mld_srtkenmerk      sk
             WHERE     sk.mld_srtkenmerk_code = 'TAAKGROEP'
                   AND sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key
                   AND k.mld_kenmerk_key = mk.mld_kenmerk_key
                   AND mk.mld_melding_key = m.mld_melding_key)                                          taakgroep,
           (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,
           mld_discipline               md
     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
           AND std.mld_ins_discipline_key = md.ins_discipline_key
           AND FAC.getsetting('cnd_gebreken_srtdisc_key') = md.ins_srtdiscipline_key;

-- RTM views
-- RTM voor openstaande meldingen.
CREATE OR REPLACE VIEW bvb1_v_rtm_meldingen
AS
   WITH
        datums
        AS
            (    SELECT TRUNC (SYSDATE) - LEVEL + 1 datum
                   FROM DUAL
             CONNECT BY LEVEL <= 30)
      SELECT datum
                 fclt_f_datum,
             mld_melding_key,
             mld_stdmelding_omschrijving,
             ins_discipline_omschrijving,
             ins_discipline_key fclt_3d_discipline_key,
             ins_srtdiscipline_omschrijving
        FROM (SELECT datums.datum,
                     m.mld_melding_key,
                     std.mld_stdmelding_omschrijving,
                     d.ins_discipline_omschrijving,
                     d.ins_discipline_key,
                     ins_srtdiscipline_omschrijving
                FROM mld_melding m, datums, mld_stdmelding std, ins_tab_discipline d, ins_srtdiscipline sd
               WHERE 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 m.mld_melding_status NOT IN (1) -- Afgewezen
                 AND datums.datum BETWEEN mld_melding_datum AND COALESCE(MLD.getmeldingstatusdate(m.mld_melding_key, 5), SYSDATE +1));

-- KPI views voor meldingen
CREATE OR REPLACE VIEW bvb1_v_rap_meldingen_per_maand
AS
    WITH
        mld_melding_freezes
        AS
            (SELECT mld_melding_key,
                    mld_melding_datum,
                    COALESCE (mld.getmeldingstatusdate (m.mld_melding_key, 5), COALESCE(mld.getmeldingstatusdate (m.mld_melding_key, 1), SYSDATE + 600))    mld_melding_afgemeld,
                    mld_melding_einddatum_std,
                    ins_srtdiscipline_omschrijving,
                    mld_behandelgroep_naam
               FROM mld_melding        m,
                    mld_stdmelding     std,
                    mld_discipline     d,
                    mld_disc_params    dp,
                    ins_srtdiscipline  sd,
                    mld_behandelgroep  bhg
              WHERE     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 d.ins_discipline_key = dp.mld_ins_discipline_key
                    AND dp.MLD_BEHANDELGROEP_KEY = bhg.MLD_BEHANDELGROEP_KEY
                    AND m.fac_activiteit_key IS NULL),
        maanden
        AS
            (    SELECT LEVEL     lvl
                   FROM DUAL
             CONNECT BY LEVEL <= 12),
        startdatum AS (SELECT ADD_MONTHS (TRUNC (SYSDATE, 'MM'), -12) datum FROM DUAL)
    SELECT ADD_MONTHS (sd.datum, maanden.lvl - 1)     maand,
           'aangemaakt'                               status,
           ins_srtdiscipline_omschrijving             soortdisc,
           mld_behandelgroep_naam                     behandelgroep,
           m.mld_melding_key
      FROM mld_melding_freezes m, maanden, startdatum sd
     WHERE mld_melding_datum BETWEEN ADD_MONTHS (sd.datum, maanden.lvl - 1) AND ADD_MONTHS (sd.datum, maanden.lvl)
    UNION ALL
    SELECT ADD_MONTHS (sd.datum, maanden.lvl - 1)     maand,
           'afgemeld op tijd',
           ins_srtdiscipline_omschrijving             soortdisc,
           mld_behandelgroep_naam                     behandelgroep,
           m.mld_melding_key
      FROM mld_melding_freezes m, maanden, startdatum sd
     WHERE     m.mld_melding_afgemeld BETWEEN ADD_MONTHS (sd.datum, maanden.lvl - 1)
                                          AND ADD_MONTHS (sd.datum, maanden.lvl)
           AND mld_melding_afgemeld < mld_melding_einddatum_std
    UNION ALL
    SELECT ADD_MONTHS (sd.datum, maanden.lvl - 1)     maand,
           'afgemeld te laat',
           ins_srtdiscipline_omschrijving             soortdisc,
           mld_behandelgroep_naam                     behandelgroep,
           m.mld_melding_key
      FROM mld_melding_freezes m, maanden, startdatum sd
     WHERE     m.mld_melding_afgemeld BETWEEN ADD_MONTHS (sd.datum, maanden.lvl - 1)
                                          AND ADD_MONTHS (sd.datum, maanden.lvl)
           AND mld_melding_afgemeld > mld_melding_einddatum_std
    UNION ALL
    SELECT ADD_MONTHS (sd.datum, maanden.lvl - 1)     maand,
           'afgemeld',
           ins_srtdiscipline_omschrijving             soortdisc,
           mld_behandelgroep_naam                     behandelgroep,
           m.mld_melding_key
      FROM mld_melding_freezes m, maanden, startdatum sd
     WHERE m.mld_melding_afgemeld BETWEEN ADD_MONTHS (sd.datum, maanden.lvl - 1) AND ADD_MONTHS (sd.datum, maanden.lvl)
    UNION ALL
    SELECT ADD_MONTHS (sd.datum, maanden.lvl - 1)     maand,
           'open',
           ins_srtdiscipline_omschrijving             soortdisc,
           mld_behandelgroep_naam                     behandelgroep,
           m.mld_melding_key
      FROM mld_melding_freezes m, maanden, startdatum sd
     WHERE     m.mld_melding_datum < ADD_MONTHS (sd.datum, maanden.lvl)
           AND m.mld_melding_afgemeld > ADD_MONTHS (sd.datum, maanden.lvl);

-- View om QR-codes bij objecten te tonen.
CREATE OR REPLACE VIEW bvb1_v_rap_qr_deel
AS
SELECT fac_bookmark_naam,
       fac_bookmark_id,
       ins_discipline_omschrijving,
       ins_srtgroep_omschrijving,
       ins_srtdeel_omschrijving,
       ins_deel_omschrijving,
       alg_locatie_key,
       alg_gebouw_omschrijving,
       ins_deel_aanmaak,
       ins_deel_key
  FROM fac_bookmark b, ins_v_deel_gegevens d
 WHERE fac_bookmark_expire IS NULL
       AND fac_bookmark_id = '5XaFlgljfYX2_ta-';

CREATE OR REPLACE VIEW bvb1_rap_cal_planning
AS
    SELECT m.mld_melding_behandelaar_key                            xuser_key,
           pf.prs_perslid_naam_full                                 behandelaar,
           m.mld_melding_key || ' ' ||
             SUBSTR(p.prs_perslid_voornaam, 1,1) ||
             SUBSTR(p.prs_perslid_naam, 1,1) || ' ' ||
             mld_melding_onderwerp                                  title,
           mld_melding_actiedatum                                   tot,
           mld_melding_actiedatum                                   van,
           m.mld_melding_key                                        item_key,
           SUBSTR (FLX.getflex ('PRS', 1000, m.mld_melding_behandelaar_key, 'P'), 1, 7) color,
           SUBSTR (FLX.getflex ('PRS', 1000, m.mld_melding_behandelaar_key, 'P'), 9, 7) textcolor,
           '?u=melding' || CHR (38) || 'k=' || m.mld_melding_key    url
      FROM mld_melding m, prs_v_perslid_fullnames_all pf, prs_perslid p
     WHERE     mld_melding_actiedatum IS NOT NULL
           AND m.mld_melding_behandelaar_key = p.prs_perslid_key
           AND m.mld_melding_behandelaar_key = pf.prs_perslid_key
           AND mld_melding_status not in (1, 5, 6)   -- Afgewezen, afgemeld, historie
    UNION ALL
    SELECT NULL                            xuser_key,
           '<geen behandelaar>'                                     behandelaar,
           m.mld_melding_key || ' ' || mld_melding_onderwerp        title,
           mld_melding_actiedatum                                   tot,
           mld_melding_actiedatum                                   van,
           m.mld_melding_key                                        item_key,
           '#FF0000',
           '#FFFFFF',
           '?u=melding' || CHR (38) || 'k=' || m.mld_melding_key    url
      FROM mld_melding m
     WHERE     mld_melding_actiedatum IS NOT NULL
           AND mld_melding_status not in (1, 5, 6)   -- Afgewezen, afgemeld, historie
           AND m.mld_melding_behandelaar_key IS NULL;

-- Overzicht naast de kalender om nieuwe meldingen te tonen.
CREATE OR REPLACE VIEW bvb1_v_mld_zonder_actiedat
AS
   SELECT m.mld_melding_key || '-' || m.mld_melding_onderwerp    title,
          m.mld_melding_key,
          sd.ins_srtdiscipline_prefix,
          sd.ins_srtdiscipline_omschrijving
     FROM mld_melding        m,
          mld_stdmelding     std,
          mld_discipline     d,
          ins_srtdiscipline  sd
    WHERE     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 mld_melding_status NOT IN (1, 5, 6)                                       -- Afgewezen, afgemeld, historie
          AND mld_melding_actiedatum IS NULL;

-- View om de relatie tussen standaardmeldingen en objectstructuur aan te geven.
CREATE OR REPLACE VIEW bvb1_v_rap_stdmelding_srtinst
AS
    SELECT mss.mld_stdmelding_srtinst_key,
           sd.ins_srtdiscipline_omschrijving,
           md.ins_discipline_omschrijving vakgroep,
           std.mld_stdmelding_omschrijving,
           mss.ins_srtinstallatie_niveau,
           isd.ins_srtdeel_omschrijving,
           isg.ins_srtgroep_omschrijving,
           id.ins_discipline_omschrijving
      FROM mld_stdmelding_srtinst  mss,
           ins_srtgroep            isg,
           ins_srtdeel             isd,
           mld_stdmelding          std,
           ins_discipline          id,
           mld_discipline          md,
           ins_srtdiscipline       sd
     WHERE     isg.ins_srtgroep_key = isd.ins_srtgroep_key
           AND isg.ins_discipline_key = id.ins_discipline_key
           AND mss.mld_stdmelding_key = std.mld_stdmelding_key
           AND std.mld_ins_discipline_key = md.ins_discipline_key
           AND md.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
           AND (   mss.ins_srtinstallatie_niveau = 'S' AND mss.ins_srtinstallatie_key = isd.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);

-- RentMan view om de folderstructuur uit RentMan te vertalen naar een boomstructuur.
CREATE OR REPLACE VIEW bvb1_v_folder_structuur
AS
   SELECT 1       niveau,
          id,
          displayname,
          name,
          itemtype,
          PATH,
          NULL    parent1,
          NULL    parent2,
          NULL    parent3
     FROM bvb1_imp_folder
    WHERE parent IS NULL AND itemtype = 'equipment'
   UNION ALL
   SELECT 2                                   niveau,
          f2.id,
          f2.displayname,
          f2.name,
          f2.itemtype,
          f2.PATH,
          REPLACE (f2.parent, '/folders/')    parent1,
          NULL                                parent2,
          NULL                                parent3
     FROM bvb1_imp_folder f1, bvb1_imp_folder f2
    WHERE f1.parent IS NULL AND f1.itemtype = 'equipment' AND REPLACE (f2.parent, '/folders/') = f1.id
   UNION ALL
   SELECT 3                                   niveau,
          f3.id,
          f3.displayname,
          f3.name,
          f3.itemtype,
          f3.PATH,
          REPLACE (f2.parent, '/folders/')    parent1,
          REPLACE (f3.parent, '/folders/')    parent2,
          NULL                                parent3
     FROM bvb1_imp_folder f1, bvb1_imp_folder f2, bvb1_imp_folder f3
    WHERE     f1.parent IS NULL
          AND f2.itemtype = 'equipment'
          AND REPLACE (f2.parent, '/folders/') = f1.id
          AND REPLACE (f3.parent, '/folders/') = f2.id
   UNION ALL
   SELECT 4                                   niveau,
          f4.id,
          f4.displayname,
          f4.name,
          f4.itemtype,
          f4.PATH,
          REPLACE (f2.parent, '/folders/')    parent1,
          REPLACE (f3.parent, '/folders/')    parent2,
          REPLACE (f3.parent, '/folders/')    parent3
     FROM bvb1_imp_folder  f1,
          bvb1_imp_folder  f2,
          bvb1_imp_folder  f3,
          bvb1_imp_folder  f4
    WHERE     f1.parent IS NULL
          AND f4.itemtype = 'equipment'
          AND REPLACE (f2.parent, '/folders/') = f1.id
          AND REPLACE (f3.parent, '/folders/') = f2.id
          AND REPLACE (f4.parent, '/folders/') = f3.id;

-- Rapportage om te controleren of de bedragen vanuit Rentman goed overkomen in Facilitor en of de taak wel aangemaakt wordt.
CREATE OR REPLACE VIEW bvb1_v_rap_rentman_imp_check
AS
SELECT dg.ins_discipline_omschrijving,
       dg.ins_srtgroep_omschrijving,
       dg.ins_srtdeel_omschrijving,
       dg.ins_deel_omschrijving,
       dg.ins_deel_opmerking,
       FLX.getflex ('INS', ak.ins_kenmerk_key, dg.ins_deel_key)    object_vervanging,
       sc.ins_srtcontrole_omschrijving,
       sc.ins_srtcontrole_periode,
       x.ins_srtcontroledl_xcp_kosten
  FROM ins_v_deel_gegevens    dg,
       ins_srtcontrole        sc,
       ins_srtcontroledl_xcp  x,
       (SELECT k.ins_srtinstallatie_key, k.ins_kenmerk_key
          FROM ins_kenmerk k, ins_srtkenmerk sk
         WHERE k.ins_srtkenmerk_key = sk.ins_srtkenmerk_key AND sk.ins_srtkenmerk_code = 'AANSCHAFPRIJS') ak
 WHERE     dg.ins_srtdeel_key = sc.ins_srtinstallatie_key(+)
       AND dg.ins_deel_key = x.ins_deel_key(+)
       --AND ins_discipline_omschrijving = 'AV'
       AND dg.ins_discipline_key = ak.ins_srtinstallatie_key(+);

CREATE OR REPLACE PROCEDURE bvb1_daily
AS
   -- accepteer de meldingen die aangemaakt zijn met de geplande acties. Anders komen ze niet in de kalender te staan.
   CURSOR c IS
     SELECT mld_melding_key
       FROM mld_melding
      WHERE mld_melding_opmerking LIKE 'Automatisch gegenereerd door activiteit%' AND mld_melding_status = 2;

BEGIN
   FOR rec IN c
   LOOP
      MLD.setmeldingstatus (rec.mld_melding_key, 4, NULL);
      UPDATE mld_melding
         SET mld_melding_actiedatum = SYSDATE
       WHERE mld_melding_key = rec.mld_melding_key;

   END LOOP;
END;
/

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

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

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