UBRH#61272 -- Mail to melding - Paar verbeterpunt doorgevoerd incl. mldnot en mldnob

svn path=/Customer/trunk/; revision=46591
This commit is contained in:
Jos Migo
2020-04-17 13:59:48 +00:00
parent 6b889c404d
commit d79f261cd6

View File

@@ -50,30 +50,40 @@ AS
v_melding_key NUMBER (10);
v_folder_kkey NUMBER (10);
v_count NUMBER (10);
v_behandelaar_key mld_melding.mld_melding_behandelaar_key%TYPE;
v_mldprefix VARCHAR2 (10);
BEGIN
CASE
WHEN UPPER (pto) LIKE 'CONTACTUBRHIS@%'
THEN
v_errormsg := 'Fout bepalen afzenderadres in geval doorsturen';
-- Bepaal de afgesproken soortmelding met key=321=Melding via mail - Nog te rubriceren
v_errormsg := 'Fout bepalen soortmelding';
SELECT mld_ins_discipline_key, mld_stdmelding_key
INTO v_discipline_key, v_stdmelding_key
FROM mld_stdmelding
WHERE mld_stdmelding_key = 321;
-- Twee varianten waarop MAIL bij UBR op hmail-server terecht kan komen:
-- 1. HANDMATIG doorgestuurd: die bij handmatig doorsturen kunnen voorkomen:
--- Bij HANDMATIG via outlook doorsturen van de mail naar contactubrhis@ubrh.facilitor-test.nl met mode SMTP worden de pfrom en pfromadrr gevuld met algemene postbus UBR van waaruit doorgestuurd wordt.
--- Deze zijn dus niet bruikbaar om oorspronkelijke pfrom eruit te halen. Daarom onderstaande procedure om deze uit pbody te halen.
--- 1.1. Van: Jos Migo <j.migo1973@gmail.com>
--- 1.2. Van: j.migo1973@gmail.com
-- 2. AUTOMATISCH via ingestelde OUTLOOK-regels doorsturen
--- Bij automatisch via outlook doorsturen van de mail naar contactubrhis@ubrh.facilitor-test.nl met mode SMTP wordt het oorspronkelijk afzenderadres in de pfrom meegegeven.
--- From: <j.migo1973@gmail.com>
v_errormsg := 'Fout bepalen afzenderadres in geval doorsturen';
-- Twee varianten waarop MAIL bij UBR op hmail-server terecht kan komen:
-- 1. HANDMATIG doorgestuurd: die bij handmatig doorsturen kunnen voorkomen:
--- Bij HANDMATIG via outlook doorsturen van de mail naar contactubrhis@ubrh.facilitor-test.nl met mode SMTP worden de pfrom en pfromadrr gevuld met algemene postbus UBR van waaruit doorgestuurd wordt.
--- Deze zijn dus niet bruikbaar om oorspronkelijke pfrom eruit te halen. Daarom onderstaande procedure om deze uit pbody te halen.
--- 1.1. Van: Jos Migo <j.migo1973@gmail.com>
--- 1.2. Van: j.migo1973@gmail.com
-- 2. AUTOMATISCH via ingestelde OUTLOOK-regels doorsturen
--- Bij automatisch via outlook doorsturen van de mail naar contactubrhis@ubrh.facilitor-test.nl met mode SMTP wordt het oorspronkelijk afzenderadres in de pfrom meegegeven.
--- From: <j.migo1973@gmail.com>
-- 1. HANDMATIG doorgestuurd - gaan eerst de van-regel eruit halen
IF INSTR (pbody, '@',1,1)>0 AND REGEXP_INSTR(pbody,'Van:|From:',1,1)>0 AND (INSTR (pbody, '@',1,1)-REGEXP_INSTR(pbody,'Van:|From:',1,1)) >0 -- Er moet een Van-regel inclusief een @ in staan
IF INSTR (pbody, '@',1,1)>0 AND REGEXP_INSTR(pbody,'Van:|From:|E-mail:',1,1)>0 AND (INSTR (pbody, '@',1,1)-REGEXP_INSTR(pbody,'Van:|From:|E-mail:',1,1)) >0 -- Er moet een Van-regel inclusief een @ in staan
THEN
v_from_string :=
SUBSTR(pbody,
REGEXP_INSTR(pbody,'Van:|From:',1,1),
INSTR(pbody,CHR(10),REGEXP_INSTR(pbody,'Van:|From:',1,1),1)-REGEXP_INSTR(pbody,'Van:|From:',1,1)) ;
REGEXP_INSTR(pbody,'Van:|From:|E-mail:',1,1),
INSTR(pbody,CHR(10),REGEXP_INSTR(pbody,'Van:|From:|E-mail:',1,1),1)-REGEXP_INSTR(pbody,'Van:|From:|E-mail:',1,1)) ;
IF INSTR(v_from_string, '>',1,1)>0
THEN
@@ -171,8 +181,8 @@ END IF;
-- toevoegen van Notities, dit alleen doen voor nummers > 16000!
IF v_count = 1 AND fac.safe_to_number (v_exist_ticket) > 16000 -- Bij aanvang mail-to-melding staat voor UBRH de meldingsteller op 78635
THEN -- Notitie bij bestaande melding!
SELECT mld_stdmelding_key, mld_melding_key
INTO v_stdmelding_key, v_melding_key
SELECT mld_stdmelding_key, mld_melding_key, COALESCE(mld_melding_behandelaar2_key,mld_melding_behandelaar_key,NULL)
INTO v_stdmelding_key, v_melding_key, v_behandelaar_key
FROM mld_melding
WHERE mld_melding_key = fac.safe_to_number (v_exist_ticket);
@@ -183,7 +193,7 @@ END IF;
mld_melding_note_flag)
VALUES (v_melding_key,
v_perslid_key,
pfrom || CHR (13) || CHR (10) || psubject || CHR (13) || CHR (10) || SUBSTR (pbody, 1, 2000),
v_fw_from || CHR (13) || CHR (10) || psubject || CHR (13) || CHR (10) || SUBSTR (pbody, 1, 2000),
0);
INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde)
@@ -196,14 +206,50 @@ END IF;
SET mld_melding_actiecode = 1 + 128 -- BO + Attentie
WHERE mld_melding_key = v_melding_key;
END IF;
ELSE -- Geen notitie, dus gaan een Nieuwe melding aanmaken!
-- Bepaal de afgesproken soortmelding met key=321=Melding via mail - Nog te rubriceren
v_errormsg := 'Fout bepalen soortmelding';
SELECT mld_ins_discipline_key, mld_stdmelding_key
INTO v_discipline_key, v_stdmelding_key
FROM mld_stdmelding
WHERE mld_stdmelding_key = 321;
-- Default tracking dat aanvrager iets gemdeld heeft
fac.trackaction ('MLDNOT',
v_melding_key,
NULL,
NULL,
'#Notitie toegevoegd vanuit e-mail'); -- met een # ervoor voorkomt de notificatie
-- Indien behandelaar bekend is, deze wel een notificatie MLDNOB sturen...
IF v_behandelaar_key IS NOT NULL
THEN
-- Bestaande melding en behandelaar is bekend.
-- bepalen vakgroeptype prefix
SELECT srt.ins_srtdiscipline_prefix
INTO v_mldprefix
FROM mld_melding m,
mld_stdmelding std,
mld_discipline d,
ins_srtdiscipline srt
WHERE m.mld_stdmelding_key = std.mld_stdmelding_key
AND std.mld_ins_discipline_key = d.ins_discipline_key
AND d.ins_srtdiscipline_key = srt.ins_srtdiscipline_key
AND m.mld_melding_key = v_melding_key;
-- Notificatie naar behandelaar
fac.putnotificationsrtprio (
NULL,
v_behandelaar_key,
'MLDNOB',
v_melding_key,
'Melding '
|| v_mldprefix
|| v_melding_key
|| ' is door de klant aangepast.',
2,
NULL,
NULL,
NULL,
2,
NULL);
END IF;
ELSE -- Geen notitie, dus gaan een Nieuwe melding aanmaken!
-- Suggested extensions:
-- - Check for MLDUSE-write autorisations
@@ -251,7 +297,11 @@ END IF;
INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde)
VALUES (psessionid, 'maillog', 'Geregistreerd onder melding ' || v_melding_key);
END IF;
-- Voor zowel nieuwe meldingen als notities kijken of er bijlagen toegevoegd moeten worden
-- Find the lowest volgnummer of the Folder-flexfield.
SELECT MIN (k1.mld_kenmerk_key)
INTO v_folder_kkey
FROM mld_stdmelding sm1, ins_tab_discipline td1, mld_kenmerk k1, mld_srtkenmerk sk1
@@ -263,7 +313,7 @@ END IF;
AND ((k1.mld_stdmelding_key = sm1.mld_stdmelding_key AND k1.mld_kenmerk_niveau = 'S')
OR (k1.mld_stdmelding_key = td1.ins_discipline_key AND k1.mld_kenmerk_niveau = 'D')
OR (k1.mld_stdmelding_key = td1.ins_srtdiscipline_key AND k1.mld_kenmerk_niveau = 'T')
OR (k1.mld_kenmerk_niveau = 'A')
OR (k1.mld_kenmerk_niveau = 'A')
)
AND NOT EXISTS
(SELECT 1
@@ -276,7 +326,7 @@ END IF;
AND ((k2.mld_stdmelding_key = sm2.mld_stdmelding_key AND k2.mld_kenmerk_niveau = 'S')
OR (k2.mld_stdmelding_key = td2.ins_discipline_key AND k2.mld_kenmerk_niveau = 'D')
OR (k2.mld_stdmelding_key = td2.ins_srtdiscipline_key AND k2.mld_kenmerk_niveau = 'T')
OR (k1.mld_kenmerk_niveau = 'A')
OR (k1.mld_kenmerk_niveau = 'A')
)
AND k2.mld_kenmerk_volgnummer < k1.mld_kenmerk_volgnummer);
@@ -286,8 +336,6 @@ END IF;
VALUES (psessionid, 'kenmerkpath', 'MLD\M' || TO_CHAR (TRUNC (v_melding_key / 1000), 'FM0000') || '___\M' || v_melding_key || '\' || v_folder_kkey || '\');
END IF;
END IF;
ELSE
INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde)
VALUES (psessionid, 'errormsg', 'Ontvanger ongeldig - Neem contact op met uw systeembeheerder ');