--
-- $Id$
--
-- Script containing customer specific sql statements for the VRTW database

DEFINE thisfile = 'VRTW.SQL'
DEFINE dbuser   = 'VRTW'

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 PROCEDURE vrtw_import_prs (p_import_key IN NUMBER)
AS
   oracle_err_num            NUMBER;
   oracle_err_mes            VARCHAR2 (200);
   v_errormsg                VARCHAR2 (400);
   v_errorhint               VARCHAR2 (400);
   v_newline                 FAC_IMP_FILE.FAC_IMP_FILE_LINE%TYPE;
BEGIN

   BEGIN
      SELECT fac_imp_file_line
        INTO v_newline
        FROM fac_imp_file
       WHERE fac_import_key = p_import_key
         AND fac_imp_file_index = 1;

      IF v_newline LIKE
                  CHR (TO_NUMBER ('EF', 'xx'))
               || CHR (TO_NUMBER ('BB', 'xx'))
               || CHR (TO_NUMBER ('BF', 'xx'))
               || '%'
      THEN
         -- EF BB BF aangetroffen
         fac.imp_writelog (p_import_key,
                           'W',
                           'Byte Order Mark aangetroffen',
                           'Bestand heeft onbehandeld UTF-8 formaat.'
                          );
         v_newline := SUBSTR (v_newline, 4);
      END IF;

      -- Verwijder de dubbele quotes
      v_newline := REPLACE (v_newline, '"');

      UPDATE fac_imp_file
         SET fac_imp_file_line = v_newline
       WHERE fac_import_key = p_import_key
         AND fac_imp_file_index = 1;


   EXCEPTION WHEN OTHERS
   THEN
      fac.imp_writelog (p_import_key,
                        'E',
                        'Fout bij controle op Byte Order Mark',
                        ''
                       );
   END;


   v_errorhint := 'Generieke update';
   -- de sequence array staat beschreven in PRS_PAC.SRC bij de prs.import_perslid proc
   prs.import_perslid (p_import_key,
                       '9;0;0;0;0;0;8;6;5;4;' ||
                       '0;0;0;0;0;0;10;2;0;0;' ||
                       '7;1;0;0;0;0;0;0;0;0;'||
                       '0;0;0;0;0;0;0;0;0;0;'||
                       '0;0;0;0;0;0',
                       'adfs_login;email;initialen;voornaam;tussenvoegsel;achternaam;functie;afdeling;locatie;mobiel%'
                       );                                       

 COMMIT;
 
 -- Tot dummyruimte nog even de import tabel vullen, voor de werkplektoekenning
 DECLARE
 CURSOR alg
 IS
 SELECT l.alg_locatie_code,
     g.alg_gebouw_code,
     v.alg_verdieping_volgnr,
     r.alg_ruimte_nr
 FROM alg_locatie l,
     alg_gebouw g,
     alg_verdieping v,
     alg_ruimte r
 WHERE     g.alg_locatie_key = l.alg_locatie_key
     AND v.alg_gebouw_key = g.alg_gebouw_key
     AND r.alg_verdieping_key = v.alg_verdieping_key
     AND r.alg_ruimte_nr = '_-'
     AND alg_gebouw_verwijder IS NULL;
     
 BEGIN  
   FOR rec IN alg
   LOOP
   BEGIN
   UPDATE fac_imp_perslid
   SET alg_gebouw_code = rec.alg_gebouw_code,
       alg_verdieping_volgnr = rec.alg_verdieping_volgnr,
       alg_ruimte_nr = rec.alg_ruimte_nr
   WHERE UPPER (alg_locatie_code) = UPPER (TRIM (rec.alg_locatie_code));
   END;
   END LOOP;
 END;
   
   COMMIT;
 
EXCEPTION
   WHEN OTHERS
   THEN
      oracle_err_num := SQLCODE;
      oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
      v_errormsg := 'Error ' || oracle_err_num || '/' || oracle_err_mes;
      fac.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint);
END vrtw_import_prs;
/

CREATE OR REPLACE PROCEDURE vrtw_update_prs (
   p_import_key IN NUMBER
) IS
  -- Alle personen verwijderen die niet meer in import bestand voorkomen.
  CURSOR c_del
  IS
      SELECT p.prs_perslid_key, p.prs_perslid_oslogin, pf.prs_perslid_naam_full
        FROM fac_imp_perslid i, prs_perslid p, prs_v_perslid_fullnames_all pf
       WHERE UPPER (p.prs_perslid_oslogin) = UPPER (i.prs_perslid_oslogin(+))
         AND pf.prs_perslid_key = p.prs_perslid_key
         AND p.prs_perslid_oslogin IS NOT NULL
         AND i.prs_perslid_oslogin IS NULL
         AND p.prs_perslid_verwijder IS NULL
         AND substr(p.prs_perslid_oslogin, 1, 1) != '_'
    ORDER BY 2;

  v_count           NUMBER;

BEGIN
    -- generic update

    SELECT count(*)
      INTO v_count
      FROM fac_imp_perslid;

    IF v_count < 150
    THEN
      fac.imp_writelog (p_import_key,
                        'E',
                        'Het aantal te importeren personen is te klein ('
                        || TO_CHAR (v_count) || ')',
                        'Zie Specificatie'
      );
      RETURN;
    END IF;

  -- 'LOGIN' betekent dat op basis van oslogin wordt gematched.
  -- 'A' betekent altijd alle (andere/overige) werkplekken verwijderen
  prs.update_perslid (p_import_key, 'LOGIN', 'A');

  -- Verwijder personen die niet meer in de import voorkomen.
  FOR rec IN c_del
  LOOP
     BEGIN
       prs.delete_perslid (p_import_key, rec.prs_perslid_key);
     END;
  END LOOP;

END vrtw_update_prs;
/

-- Vanaf hier volgen rapportages

-- Rapport voor de brandmeester van dienst om zo makkelijk in te zien wat er speelt op een locatie (beperkt tot Almelo, Hengelo, Enschede)
CREATE OR REPLACE VIEW vrtw_v_rap_bmvd
(
   melding_datum,
   locatie,
   type_melding,
   vakgroep,
   specifieke_melding,
   melding_nummer,
   onderwerp,
   omschrijving,
   aangemeld_door,
   status
)
AS
   SELECT m.mld_melding_datum,
          l.alg_locatie_omschrijving,
          sd.ins_srtdiscipline_omschrijving,
          md.ins_discipline_omschrijving,
          std.mld_stdmelding_omschrijving,
          m.mld_melding_key,
          COALESCE (m.mld_melding_onderwerp, 'leeg'),
          COALESCE (TO_CHAR(SUBSTR(m.mld_melding_omschrijving,1,4000)), 'leeg'),
          pf.prs_perslid_naam_friendly,
          mld_statuses_omschrijving
     FROM mld_melding m,
          mld_stdmelding std,
          mld_discipline md,
          ins_srtdiscipline sd,
          prs_v_perslid_fullnames pf,
          mld_statuses ms,
          alg_locatie l
    WHERE     m.mld_alg_locatie_key = l.alg_locatie_key
          AND m.mld_melding_status = ms.mld_statuses_key
          AND m.mld_alg_locatie_key IN (55, 52, 65, 57, 64) -- Enschede Centrum en Noord, Almelo Centrum, Hengelo Centrum, Almelo tijdelijk
          AND m.mld_stdmelding_key = std.mld_stdmelding_key
          AND std.mld_ins_discipline_key IN (52, 70, 60) -- Gebouwgerelateerd, Voertuigen, Operationeel
          AND std.mld_ins_discipline_key = md.ins_discipline_key
          AND md.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
          AND m.prs_perslid_key = pf.prs_perslid_key
          AND NOT EXISTS
                (SELECT 'X'
                   FROM fac_tracking f
                  WHERE     fac_srtnotificatie_key = 47 -- MLDAFM
                        AND fac_tracking_refkey = m.mld_melding_key
                        AND f.fac_tracking_datum < SYSDATE - 10);
          
-- Rapport tbv QR codes
CREATE OR REPLACE VIEW vrtw_v_ins_qrc_mld
  AS
   SELECT i.ins_deel_omschrijving hide_f_sort,
          l.alg_locatie_code || ' ' || l.alg_locatie_omschrijving
             fclt_f_locatie,
          o.alg_gebouw_omschrijving fclt_f_gebouw,
          o.alg_plaatsaanduiding fclt_f_plaats,
          d.ins_discipline_omschrijving fclt_f_discipline,
          g.ins_srtgroep_omschrijving fclt_f_objectgroep,
          s.ins_srtdeel_omschrijving fclt_f_objectsoort,
          i.ins_deel_omschrijving fclt_f_identificatie,
          i.ins_deel_key,
          s.ins_srtdeel_key,
          o.alg_gebouw_code,
          o.alg_verdieping_code,
          i.ins_discipline_key fclt_3d_discipline_key,
          l.alg_locatie_key fclt_3d_locatie_key,
          i.ins_alg_ruimte_type,
          i.ins_alg_ruimte_key,
          CASE
             WHEN d.ins_discipline_key = 81 -- ICT
             THEN
                (SELECT k.ins_kenmerkdeel_waarde
                   FROM ins_kenmerkdeel k
                  WHERE k.ins_deel_key = i.ins_deel_key
                        AND k.ins_kenmerk_key = 1)
             ELSE
                NULL
          END
             serienummer,
          CASE
             WHEN d.ins_discipline_key = 81 -- ICT
             THEN
                (SELECT k.ins_kenmerkdeel_waarde
                   FROM ins_kenmerkdeel k
                  WHERE k.ins_deel_key = i.ins_deel_key
                        AND k.ins_kenmerk_key = 2)
             ELSE
                NULL
          END
             model,
          b.fac_bookmark_id hide_f_bookmark_id
     FROM ins_deel i,
          ins_v_alg_overzicht o,
          ins_srtdeel s,
          ins_srtgroep g,
          ins_discipline d,
          alg_locatie l,
          fac_bookmark b
    WHERE b.fac_bookmark_naam = 'QRC_MELDING'
          AND (b.fac_bookmark_expire IS NULL
               OR b.fac_bookmark_expire > SYSDATE)
          AND ins_deel_verwijder IS NULL
          AND i.ins_deel_module = 'INS'
          AND i.ins_deel_parent_key IS NULL
          AND s.ins_srtdeel_key = i.ins_srtdeel_key
          AND g.ins_srtgroep_key = s.ins_srtgroep_key
          AND d.ins_discipline_key = g.ins_discipline_key
          AND o.alg_onroerendgoed_keys = i.ins_alg_ruimte_key
          AND o.alg_onroerendgoed_type = i.ins_alg_ruimte_type
          AND i.ins_alg_ruimte_type IN ('T', 'R', 'W')
          AND o.alg_locatie_key = i.ins_alg_locatie_key
          AND i.ins_alg_locatie_key = l.alg_locatie_key;
          
CREATE OR REPLACE VIEW vrtw_v_noti_mailer
(
   sender,
   receiver,
   text,
   code,
   key,
   xkey,
   xemail,
   xmobile,
   fac_srtnotificatie_key,
   attachments,
   xsender
)
AS
   SELECT NULL,
          NULL,
             'Uw melding met nummer '
          || m.mld_melding_key
          || ' is geregistreerd.',
          'CUST01' code,
          m.mld_melding_key,
          NULL,
          (SELECT mld_kenmerkmelding_waarde
             FROM mld_kenmerkmelding km
            WHERE     km.mld_melding_key = m.mld_melding_key
                  AND mld_kenmerk_key = 9
                  AND UPPER (mld_kenmerkmelding_waarde) NOT LIKE '%BOUNCE%')
             xemail,
          NULL,
          NULL,
          NULL,
          NULL
     FROM mld_melding m, fac_tracking f
    WHERE m.mld_melding_key = f.fac_tracking_refkey
          AND f.fac_srtnotificatie_key = 52                          -- MLDNEW
          AND f.fac_tracking_datum BETWEEN (SELECT fac_notificatie_job_nextrun
                                                   - fac_notificatie_job_interval
                                                     / 24
                                              FROM fac_notificatie_job
                                             WHERE UPPER(fac_notificatie_job_view) =
                                                      'VRTW_V_NOTI_MAILER')
                                       AND  (SELECT fac_notificatie_job_nextrun
                                               FROM fac_notificatie_job
                                              WHERE UPPER(fac_notificatie_job_view) =
                                                       'VRTW_V_NOTI_MAILER');

CREATE OR REPLACE PROCEDURE vrtw_processemail
                      (pfrom      IN VARCHAR2,
                       pto        IN VARCHAR2,
                       psubject   IN VARCHAR2,
                       pbody      IN VARCHAR2,
                       psessionid IN VARCHAR2,
                       puserkey   IN NUMBER DEFAULT NULL
                      )
AS
    -- puserkey is alvast een nieuwe parameter die per release 2015.2 er gaat komen (FSN#33503), als gevuld, dan deze als aanvrager van melding gebruiken.
  sender                          prs_perslid.prs_perslid_key%TYPE;
  kostenplaats                    prs_afdeling.prs_kostenplaats_key%TYPE;
  v_mldkey                        mld_melding.mld_melding_key%TYPE;
  defaultstdmelding               fac_setting.fac_setting_default%TYPE;
  kkey                            mld_kenmerk.mld_kenmerk_key%TYPE;
  errormsg                        fac_result.fac_result_waarde%TYPE;
  v_mailadres_kenmerk_key         mld_kenmerk.mld_kenmerk_key%TYPE;
  v_flexprop_mail                 VARCHAR2(1000);
  v_from                          VARCHAR2 (1000);

  subject_regexp                 fac_setting.fac_setting_default%TYPE;
  v_behandelaar_key              mld_melding.mld_melding_behandelaar_key%TYPE;
  v_mldnum                       VARCHAR2 (4000);
  v_srtdisc                      VARCHAR2 (4000);
  v_flag_on_fenote               NUMBER (10);
  v_flag_on_bonote               NUMBER (10);
  v_automailkey                  NUMBER (10);
  v_email                        prs_perslid.prs_perslid_email%TYPE;
  v_negeer                       NUMBER (10);

BEGIN
  -- Niet alle mails komen van te herleiden personen, dus als sender leeg is dan gebruiken we het generieke account.
  
    SELECT x.prs_perslid_key
    INTO sender
    FROM
    (SELECT p.prs_perslid_key
    FROM prs_perslid p
    WHERE UPPER (p.prs_perslid_email) = UPPER (pfrom)
    AND p.prs_perslid_verwijder IS NULL
    UNION ALL
    SELECT prs_perslid_key
        FROM prs_perslid p, prs_afdeling d
        WHERE p.prs_afdeling_key = d.prs_afdeling_key
        AND prs_perslid_oslogin = '_HMAIL'
        AND NOT EXISTS (SELECT p.prs_perslid_key
                       FROM prs_perslid p
                      WHERE UPPER (p.prs_perslid_email) = UPPER (pfrom)
                           AND p.prs_perslid_verwijder IS NULL)) x;

IF sender IS NULL
THEN
     
     SELECT prs_perslid_key, d.prs_kostenplaats_key
        INTO sender, kostenplaats
        FROM prs_perslid p, prs_afdeling d
        WHERE p.prs_afdeling_key = d.prs_afdeling_key
        AND prs_perslid_oslogin = '_HMAIL'; 
END IF; 
    

-- Geautomatiseerde mails hebben altijd hetzelfde onderwerp, zo kan via een eigen tabel de melding achterhaald worden.
   SELECT fac.safe_to_number (MIN(fac_usrdata_prijs))
   INTO v_automailkey
   FROM fac_usrdata
   WHERE UPPER (psubject) LIKE  '%'||UPPER (fac_usrdata_omschr)||'%'
   AND fac_usrtab_key = 5;
   
      
   IF v_automailkey IS NOT NULL
   THEN
   defaultstdmelding := v_automailkey;
   v_mailadres_kenmerk_key := 9;
   END IF;
   
   
   IF defaultstdmelding IS NULL
   THEN 
   defaultstdmelding := fac.getsetting ('defaultstdmelding');
   v_mailadres_kenmerk_key := 9;
   END IF;

   IF UPPER (psubject) LIKE '%AUTOMATISCH ANTWOORD%'
   THEN 
   v_negeer := 1;
   ELSE
   v_negeer := 0;
   END IF;
  -------------------------------------------------

  -- Check of de afzender pfrom een reply op een bestaande melding doet, in dat geval wordt dat in notities genoteerd.
  -- Wat is een bestaande melding:
  -- 1) Eerst uit het onderwerp het meldingnummer proberen te onderscheppen, uitgangspunt dat in het onderwerp het meldingnummer '1234' kan worden opgevist, met ervoor en erna een spatie
  -- 2) Het 1e nummer dat in het onderwerp staat wordt gezien als meldingnummer, eventuele andere nummers later in het onderwerp worden genegeerd.
  -- 3) Het mailadres van de afzender is dezelfde als die van dat gevonden meldingnummer '1234' in het onderwerp, deze afzender (mailadres) staat in flexprop (zie verderop hieronder)

  subject_regexp := '[[:digit:]]{1,}';
  v_mldnum :=
      REGEXP_SUBSTR (psubject,
                     subject_regexp,
                     1,
                     1,
                     'i');                                    -- 1234, of 12345, of 12, of 1 etc.
  
--  v_srtdisc :=
--        REGEXP_SUBSTR (v_mldnum,
--                     '[[:alpha:]]',
--                     1,
--                     1,
--                     'i');                     -- M
    
--    v_mldkey := fac.safe_to_number (SUBSTR (v_mldnum, LENGTH (v_srtdisc) + 1)); -- 123, of 12345, of 12, of 1
      
      v_mldkey := fac.safe_to_number (v_mldnum);

    --  Uit onderwerp is de vermoedelijke juiste v_mldkey geparsed.
    -- Final check: is de afzender van de mail dezelfde als die van v_mldkey, deze afzender (mailadres) staat in flexprop (zie verderop hieronder in gedeelte bij insert melding).

    SELECT MAX(SUBSTR(TRIM(km.mld_kenmerkmelding_waarde),1,50))
    INTO v_flexprop_mail
    FROM mld_kenmerkmelding km
    WHERE mld_melding_key = v_mldkey
    AND mld_kenmerk_key = v_mailadres_kenmerk_key
    AND mld_kenmerkmelding_verwijder IS NULL;
    
    SELECT MAX (p.prs_perslid_email)
    INTO v_email
    FROM prs_perslid p, mld_melding m
    WHERE m.mld_melding_key = v_mldkey
    AND m.prs_perslid_key = p.prs_perslid_key;

    v_from := SUBSTR(TRIM(pfrom),1,50);

    IF v_flexprop_mail = v_from OR v_email = v_from
    THEN

          -- Gotcha: bestaande melding gevonden
          -- Van deze afzender is een eerdere melding geregistreerd, die  we plakken de subject en body nu als notitie toe (als perslid system-api user).

          INSERT INTO mld_melding_note (mld_melding_key,
                                    mld_melding_note_omschrijving,
                                    prs_perslid_key,
                                    mld_melding_note_flag)
              VALUES (v_mldkey,
                      fac.safe_concat (
                           psubject || CHR (10) || CHR (13),
                           REPLACE (pbody, 
                    CHR (13) || CHR (10) || CHR (13) || CHR (10), 
                    CHR (13) || CHR (10))),              -- verwijder onnodige witregels
                      sender,
                      0);          -- 0 is NIET zichtbaar FE (want is system-user, zinloos).

            -- Vlaggetjes zetten zoals mld_edit_note.asp dat doet
            IF 1=0 -- vrtw heeft geen melding valggetjes, dus onderstaande kan voor nu weg.
            THEN
             BEGIN
            v_flag_on_fenote := fac.getsetting('mld_flag_on_fenote');
            v_flag_on_bonote := fac.getsetting('mld_flag_on_bonote');

                IF v_flag_on_bonote <> 0 AND v_flag_on_bonote IS NOT NULL
                THEN
                   UPDATE mld_melding
                      SET mld_melding_flag = v_flag_on_bonote
                    WHERE mld_melding_key = v_mldkey
                      AND ( (mld_melding_flag = v_flag_on_fenote)
                        OR (mld_melding_flag = 0 OR mld_melding_flag IS NULL));

                END IF;
             EXCEPTION
                WHEN OTHERS
                THEN
                   DBMS_OUTPUT.put_line(   'Niet gelukt om flag '
                                        || v_flag_on_bonote
                                        || ' te zetten.');
             END;
          END IF; -- vrtw heef geen vlaggetjes

            -- Default tracking is even goed genoeg
      fac.trackaction ('MLDNOT',
                       v_mldkey,
                       sender,
                       NULL,
                       '#Notitie toegevoegd vanuit e-mail'); -- # voorkomt notificatie

         INSERT INTO fac_result (fac_result_sessionid,
                                fac_result_naam,
                                fac_result_waarde)
            VALUES (psessionid, 'maillog', 'Als notitie toegevoegd aan melding ' || v_mldkey);

          -- Bepalen van de behandelaar van deze melding
            BEGIN
            SELECT mld_melding_behandelaar_key
              INTO v_behandelaar_key
              FROM mld_melding m, prs_perslid p
             WHERE mld_melding_key = v_mldkey
               AND mld_melding_behandelaar_key = p.prs_perslid_key
               AND p.prs_perslid_email IS NOT NULL
               AND p.prs_perslid_verwijder IS NULL;
         EXCEPTION
            WHEN OTHERS
            THEN
               v_behandelaar_key := NULL;
         END;

         IF v_behandelaar_key IS NOT NULL
         THEN
          -- Bestaande melding en behandelaar is bekend.

        -- Notificatie naar behandelaar
        fac.putnotificationsrtprio (
           NULL,
           v_behandelaar_key,
           'MLDNOB',
           v_mldkey,
           'Melding ' || v_mldkey || ' is door de melder aangepast.',
           2,
           NULL,
           NULL,
           NULL,
           2,
           NULL);
            END IF; -- Bestaande melding en behandelaar is bekend.
  ELSE
        -- GEEN bestaande melding gevonden, we gaan een nieuwe mnelding toevoegen....

      IF defaultstdmelding IS NOT NULL AND v_negeer = 0
      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_alg_locatie_key,
                                      mld_melding_onderwerp,
                                      mld_melding_omschrijving,
                                      mld_melding_status,
                                      mld_stdmelding_key,
                                      prs_perslid_key,
                                      prs_perslid_key_voor,
                                      prs_kostenplaats_key,
                                      mld_melding_spoed)
                 VALUES ('MLD',
                         4,                                            -- email
                         SYSDATE,
                         301,                                          -- fictief
                         SUBSTR (psubject, 1, 75),                     -- onderwerp is max 80 posities
                         fac.safe_concat (
                           CASE WHEN LENGTH (psubject) > 75 
                           THEN 'Volledig onderwerp: ' || psubject || CHR (10) || CHR (13) 
                           ELSE psubject || CHR (10) || CHR (13) 
                           END,
                           REPLACE (pbody, 
                    CHR (13) || CHR (10) || CHR (13) || CHR (10), 
                    CHR (13) || CHR (10))),              -- verwijder onnodige witregels
                         NULL,
                         defaultstdmelding,
                         sender,
                         sender,
                         kostenplaats,
                         3)
              RETURNING mld_melding_key
                   INTO v_mldkey;

                    -- Vullen van kenmerkwaarde "e-mail adres"
                    IF pfrom IS NOT NULL AND v_mailadres_kenmerk_key IS NOT NULL
                    THEN
                        -- Kenmerk mailadres heeft max. 50 tekens, afkappen dus...


                        -- zet v_from met maximaal 50 tekens als kenmerk bij de zojuist aangemaakte melding.
                        INSERT INTO mld_kenmerkmelding (mld_melding_key, mld_kenmerk_key, mld_kenmerkmelding_waarde)
                        VALUES (v_mldkey, v_mailadres_kenmerk_key, v_from);
                    END IF;

            mld.setmeldingstatus (v_mldkey, 2, sender);
            INSERT INTO fac_result (fac_result_sessionid,
                                    fac_result_naam,
                                    fac_result_waarde)
               VALUES (psessionid, 'maillog', 'Geregistreerd onder melding ' || v_mldkey);

          END;
         END IF; -- defaultstdmelding IS NOT NULL
    END IF;    -- v_flexprop_mail = v_from

    -- Bijlage toevoegen, aangezien VRTW hetzelfde bijlage kenmerk gebruikt over alle vakgroeptypen kan de key gewoon hard worden meegegeven.
    
    kkey := 1041;

     IF kkey IS NOT NULL
     THEN
    INSERT INTO fac_result (fac_result_sessionid,
                            fac_result_naam,
                            fac_result_waarde)
        VALUES (psessionid,
                'kenmerkpath',
                'MLD\M' || to_char( TRUNC(v_mldkey/1000), 'FM0000') || '___\M' || v_mldkey || '\' || kkey || '\');
     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;
/

------ 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