CSUN#25916 -- Mail reply linken aan bestaande melding
svn path=/Customer/trunk/; revision=17709
This commit is contained in:
184
CSUN/CSUN.sql
184
CSUN/CSUN.sql
@@ -9,9 +9,9 @@ SET ECHO ON
|
||||
--------------
|
||||
CREATE OR REPLACE PROCEDURE csun_imp_writelog (
|
||||
p_import_key IN NUMBER,
|
||||
p_severity IN VARCHAR2,
|
||||
p_errormsg IN VARCHAR2,
|
||||
p_errorhint IN VARCHAR2)
|
||||
p_severity IN VARCHAR2,
|
||||
p_errormsg IN VARCHAR2,
|
||||
p_errorhint IN VARCHAR2)
|
||||
AS
|
||||
PRAGMA AUTONOMOUS_TRANSACTION;
|
||||
BEGIN
|
||||
@@ -322,10 +322,14 @@ CREATE OR REPLACE PROCEDURE CSUN_processemail (pfrom IN VARCHAR2,
|
||||
AS
|
||||
sender prs_perslid.prs_perslid_key%TYPE;
|
||||
kostenplaats prs_afdeling.prs_kostenplaats_key%TYPE;
|
||||
newkey mld_melding.mld_melding_key%TYPE;
|
||||
defaultstdmelding fac_setting.fac_setting_default%TYPE;
|
||||
mldkey mld_melding.mld_melding_key%TYPE;
|
||||
stdmelding mld_stdmelding.mld_stdmelding_key%TYPE;
|
||||
subject_regexp fac_setting.fac_setting_default%TYPE;
|
||||
kkey mld_kenmerk.mld_kenmerk_key%TYPE;
|
||||
errormsg fac_result.fac_result_waarde%TYPE;
|
||||
mldnum VARCHAR2(4000);
|
||||
srtdisc VARCHAR2(4000);
|
||||
cnt NUMBER(10);
|
||||
|
||||
BEGIN
|
||||
errormsg := '(0x143)';
|
||||
@@ -348,46 +352,91 @@ BEGIN
|
||||
WHEN UPPER (pto) LIKE 'SERVICEDESK@%'
|
||||
THEN
|
||||
errormsg := '(0x145)';
|
||||
defaultstdmelding := fac.getsetting ('defaultstdmelding');
|
||||
|
||||
-- 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
|
||||
errormsg := '(0x148)';
|
||||
BEGIN
|
||||
INSERT INTO mld_melding (mld_melding_module,
|
||||
mld_meldbron_key,
|
||||
mld_melding_datum,
|
||||
mld_melding_omschrijving,
|
||||
mld_melding_status,
|
||||
mld_melding_uitvoertijd,
|
||||
mld_stdmelding_key,
|
||||
prs_perslid_key,
|
||||
prs_perslid_key_voor,
|
||||
prs_kostenplaats_key,
|
||||
mld_melding_spoed)
|
||||
VALUES ('MLD',
|
||||
4, -- email
|
||||
SYSDATE,
|
||||
SUBSTR (
|
||||
psubject || CHR (13)
|
||||
|| REPLACE (
|
||||
SUBSTR(pbody, 1, 4000 - (LENGTH(psubject)+1)),
|
||||
CHR (13) || CHR (10) || CHR (13) || CHR (10),
|
||||
CHR (13) || CHR (10)),
|
||||
1,
|
||||
4000), -- verwijder onnodige witregels
|
||||
NULL,
|
||||
2,
|
||||
defaultstdmelding,
|
||||
sender,
|
||||
sender,
|
||||
kostenplaats,
|
||||
3)
|
||||
RETURNING mld_melding_key
|
||||
INTO newkey;
|
||||
-- Alternatief was: scannen van fac_srtnotificatie_oms maar dat voelt ook niet echt lekker
|
||||
-- subject_regexp := fac.getsetting ('mld_reply_subject_regexp'); -- [[:alpha:]]*[[:digit:]]{3,}
|
||||
subject_regexp := '[[:alpha:]]*[[:digit:]]{3,}';
|
||||
mldnum := REGEXP_SUBSTR(psubject, subject_regexp, 1, 1, 'i'); -- MA12345
|
||||
srtdisc := REGEXP_SUBSTR(mldnum, '[[:alpha:]]', 1, 1, 'i'); -- MA
|
||||
mldkey := fac.safe_to_number(substr(mldnum, length(srtdisc) + 1));
|
||||
DBMS_OUTPUT.PUT_LINE('mldnum: ' || mldnum);
|
||||
DBMS_OUTPUT.PUT_LINE('srtdisc: ' || srtdisc);
|
||||
DBMS_OUTPUT.PUT_LINE('mldkey: ' || mldkey);
|
||||
-- We eisen
|
||||
-- - Goed meldingnummer
|
||||
-- - Goede srtdiscipline
|
||||
-- - Afzender is degene voor wie de melding was
|
||||
-- suggested extensions: ook collega's toestaan?
|
||||
SELECT MIN(mm.mld_stdmelding_key)
|
||||
INTO stdmelding
|
||||
FROM mld_melding mm, mld_stdmelding msm, ins_tab_discipline insd, ins_srtdiscipline isd
|
||||
WHERE mm.mld_melding_key = mldkey
|
||||
AND mm.mld_stdmelding_key = msm.mld_stdmelding_key
|
||||
AND msm.mld_ins_discipline_key = insd.ins_discipline_key
|
||||
AND insd.ins_srtdiscipline_key = isd.ins_srtdiscipline_key
|
||||
-- Controle op srtdisc werkt niet goed. Mails worden na binnenkomst namelijk doorgezet
|
||||
-- naar de definitieve stdmelding(/discipline/srtdiscpline) en daarmee verandert de
|
||||
-- prefix letter
|
||||
--AND isd.ins_srtdiscipline_prefix = srtdisc
|
||||
AND mm.prs_perslid_key_voor = sender;
|
||||
DBMS_OUTPUT.PUT_LINE('mld_stdmelding_key: ' || TO_CHAR(stdmelding));
|
||||
|
||||
IF (stdmelding IS NOT NULL) THEN -- Bestaande melding
|
||||
INSERT INTO mld_melding_note (mld_melding_key,
|
||||
mld_melding_note_omschrijving,
|
||||
prs_perslid_key,
|
||||
mld_melding_note_flag)
|
||||
VALUES(mldkey, pbody, sender, 1); -- 1 is zichtbaar FE want zelf ingevoerd.
|
||||
-- Default tracking is even goed genoeg
|
||||
fac.trackaction('MLDNOT', mldkey, sender, NULL, '#Notitie toegevoegd vanuit e-mail'); -- # voorkomt notificatie
|
||||
-- suggested extensions:
|
||||
-- Vlaggetjes zetten zoals mld_edit_note.asp dat doet?
|
||||
DBMS_OUTPUT.PUT_LINE('Notitie toegevoegd.');
|
||||
ELSE
|
||||
-- suggested extensions:
|
||||
-- check for MLDUSE-write autorisations
|
||||
-- parse the subject to find an appropriate stdmelding, if uniquely possible
|
||||
errormsg := '(0x148)';
|
||||
BEGIN
|
||||
stdmelding := fac.safe_to_number(fac.getsetting ('defaultstdmelding'));
|
||||
INSERT INTO mld_melding (mld_melding_module,
|
||||
mld_meldbron_key,
|
||||
mld_melding_datum,
|
||||
mld_melding_omschrijving,
|
||||
mld_melding_status,
|
||||
mld_melding_uitvoertijd,
|
||||
mld_stdmelding_key,
|
||||
prs_perslid_key,
|
||||
prs_perslid_key_voor,
|
||||
prs_kostenplaats_key,
|
||||
mld_melding_spoed)
|
||||
VALUES ('MLD',
|
||||
4, -- email
|
||||
SYSDATE,
|
||||
SUBSTR (
|
||||
psubject || CHR (13)
|
||||
|| REPLACE (
|
||||
SUBSTR(pbody, 1, 4000 - (LENGTH(psubject)+1)),
|
||||
CHR (13) || CHR (10) || CHR (13) || CHR (10),
|
||||
CHR (13) || CHR (10)),
|
||||
1,
|
||||
4000), -- verwijder onnodige witregels
|
||||
NULL,
|
||||
2,
|
||||
stdmelding,
|
||||
sender,
|
||||
sender,
|
||||
kostenplaats,
|
||||
3)
|
||||
RETURNING mld_melding_key
|
||||
INTO mldkey;
|
||||
DBMS_OUTPUT.PUT_LINE('Melding toegevoegd: ' || mldkey);
|
||||
errormsg := '(0x165)';
|
||||
mld.setmeldingstatus (mldkey, 2, sender);
|
||||
END;
|
||||
|
||||
-- Zoek het laagste bijlagen kenmerk om de bijlagen onder te stoppen
|
||||
errormsg := '(0x151)';
|
||||
SELECT MIN (mld_kenmerk_key)
|
||||
INTO kkey
|
||||
@@ -397,7 +446,7 @@ BEGIN
|
||||
ins_tab_discipline d
|
||||
WHERE mld_srtkenmerk_kenmerktype = 'M'
|
||||
AND sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key
|
||||
AND std.mld_stdmelding_key = defaultstdmelding
|
||||
AND std.mld_stdmelding_key = stdmelding
|
||||
AND std.mld_ins_discipline_key = d.ins_discipline_key
|
||||
AND ( (k.mld_stdmelding_key = std.mld_stdmelding_key
|
||||
AND k.mld_kenmerk_niveau = 'S')
|
||||
@@ -416,7 +465,7 @@ BEGIN
|
||||
AND sk1.mld_srtkenmerk_key =
|
||||
k1.mld_srtkenmerk_key
|
||||
AND std1.mld_stdmelding_key =
|
||||
defaultstdmelding
|
||||
stdmelding
|
||||
AND std1.mld_ins_discipline_key =
|
||||
d1.ins_discipline_key
|
||||
AND ( (k1.mld_stdmelding_key =
|
||||
@@ -435,18 +484,16 @@ BEGIN
|
||||
errormsg := '(0x153)';
|
||||
IF kkey IS NOT NULL
|
||||
THEN
|
||||
DBMS_OUTPUT.PUT_LINE('Bijlagen kenmerk: ' || kkey);
|
||||
errormsg := '(0x157)';
|
||||
INSERT INTO fac_result (fac_result_sessionid,
|
||||
fac_result_naam,
|
||||
fac_result_waarde)
|
||||
VALUES ('hMailServer',
|
||||
'kenmerkpath',
|
||||
'MLD\M' || to_char(TRUNC(newkey/1000), 'FM0000') || '___\M' || newkey || '\' || kkey || '\');
|
||||
'MLD\M' || to_char(TRUNC(mldkey/1000), 'FM0000') || '___\M' || mldkey || '\' || kkey || '\');
|
||||
END IF;
|
||||
|
||||
errormsg := '(0x165)';
|
||||
mld.setmeldingstatus (newkey, 2, sender);
|
||||
END;
|
||||
END IF;
|
||||
ELSE
|
||||
errormsg := '(0x187)';
|
||||
INSERT INTO fac_result (fac_result_sessionid,
|
||||
@@ -458,6 +505,7 @@ BEGIN
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
DBMS_OUTPUT.PUT_LINE('Mail niet geaccepteerd: ' || 'OTHERS (error ' || SQLCODE || '/' || SUBSTR (SQLERRM, 1, 100) || ')');
|
||||
INSERT INTO fac_result (fac_result_sessionid,
|
||||
fac_result_naam,
|
||||
fac_result_waarde)
|
||||
@@ -469,8 +517,6 @@ EXCEPTION
|
||||
'E',
|
||||
'OTHERS (error ' || SQLCODE || '/' || SUBSTR (SQLERRM, 1, 100) || ')',
|
||||
errormsg || ' afzender:' || pfrom);
|
||||
|
||||
|
||||
END;
|
||||
/
|
||||
|
||||
@@ -489,8 +535,8 @@ AS
|
||||
FROM imp_log
|
||||
WHERE imp_log_applicatie = 'PROCESSEMAIL'
|
||||
AND imp_log_datum > SYSDATE - 30;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
CREATE OR REPLACE VIEW csun_v_rap_melding
|
||||
(
|
||||
@@ -684,6 +730,7 @@ AS
|
||||
|
||||
CREATE OR REPLACE VIEW csun_v_rap_locatiegegevens
|
||||
(
|
||||
prjnr,
|
||||
fclt_f_regioomschrijving,
|
||||
fclt_f_districtomschrijving,
|
||||
locatiecode,
|
||||
@@ -696,7 +743,12 @@ CREATE OR REPLACE VIEW csun_v_rap_locatiegegevens
|
||||
bb
|
||||
)
|
||||
AS
|
||||
SELECT alg_regio_omschrijving,
|
||||
SELECT (SELECT alg_onrgoedkenmerk_waarde
|
||||
FROM alg_onrgoedkenmerk ogk
|
||||
WHERE alg_kenmerk_key = 1040
|
||||
AND ogk.alg_onrgoed_key = l.alg_locatie_key)
|
||||
prjnr,
|
||||
alg_regio_omschrijving,
|
||||
alg_district_omschrijving,
|
||||
l.alg_locatie_code,
|
||||
l.alg_locatie_omschrijving,
|
||||
@@ -829,7 +881,7 @@ BEGIN
|
||||
p_kenmerk_waarde);
|
||||
END IF;
|
||||
END IF;
|
||||
|
||||
|
||||
WHEN 'MLD'
|
||||
THEN
|
||||
-- melding- of opdrachtkenmerk?
|
||||
@@ -915,7 +967,7 @@ END;
|
||||
/
|
||||
|
||||
|
||||
|
||||
-- TODO: Projectnummer toevoegen aan import en imp tabel. !!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||
CREATE OR REPLACE PROCEDURE csun_import_onrgoed (p_import_key IN NUMBER)
|
||||
AS
|
||||
c_fielddelimitor VARCHAR2 (1) := ';';
|
||||
@@ -928,6 +980,7 @@ AS
|
||||
v_error NUMBER (1);
|
||||
v_aanduiding VARCHAR2 (200);
|
||||
-- De importvelden:
|
||||
v_prjnr VARCHAR2 (10);
|
||||
v_regio_omschrijving VARCHAR2 (255); -- 30
|
||||
v_regio_key NUMBER (10);
|
||||
v_district_omschrijving VARCHAR2 (255); -- 30
|
||||
@@ -976,6 +1029,7 @@ BEGIN
|
||||
v_aanduiding := '';
|
||||
v_error := 0;
|
||||
-- Lees alle veldwaarden
|
||||
fac.imp_getfield (v_newline, c_fielddelimitor, v_prjnr);
|
||||
fac.imp_getfield (v_newline, c_fielddelimitor, v_regio_omschrijving);
|
||||
fac.imp_getfield (v_newline,
|
||||
c_fielddelimitor,
|
||||
@@ -1161,7 +1215,7 @@ BEGIN
|
||||
'Aanduiding wordt afgebroken tot <' || v_client || '>');
|
||||
END IF;
|
||||
|
||||
IF v_client IS NOT NULL
|
||||
IF v_client IS NOT NULL
|
||||
THEN
|
||||
BEGIN
|
||||
SELECT fac_usrdata_key
|
||||
@@ -1173,8 +1227,8 @@ BEGIN
|
||||
EXCEPTION
|
||||
WHEN NO_DATA_FOUND
|
||||
THEN
|
||||
INSERT INTO fac_usrdata (fac_usrtab_key,
|
||||
fac_usrdata_code,
|
||||
INSERT INTO fac_usrdata (fac_usrtab_key,
|
||||
fac_usrdata_code,
|
||||
fac_usrdata_omschr)
|
||||
VALUES (1,
|
||||
SUBSTR (v_client, 1, 40),
|
||||
@@ -1187,7 +1241,7 @@ BEGIN
|
||||
'<' || v_client || '>');
|
||||
END;
|
||||
END IF;
|
||||
|
||||
|
||||
--
|
||||
IF v_bud IS NOT NULL
|
||||
THEN
|
||||
@@ -1252,14 +1306,14 @@ BEGIN
|
||||
--
|
||||
|
||||
-- Insert geformatteerde import record
|
||||
IF v_error = 0
|
||||
IF v_error = 0
|
||||
THEN
|
||||
|
||||
v_errormsg :=
|
||||
'Fout bij toevoegen te impoteren locatie ['
|
||||
|| v_locatie_code
|
||||
|| ']';
|
||||
|
||||
|
||||
INSERT INTO csun_imp_onrgoed (alg_regio_omschrijving,
|
||||
alg_regio_key,
|
||||
alg_district_omschrijving,
|
||||
@@ -1675,7 +1729,7 @@ INSERT INTO alg_ruimte (alg_verdieping_key,
|
||||
FROM alg_ruimte r
|
||||
WHERE r.alg_verdieping_key = v.alg_verdieping_key);
|
||||
|
||||
-- toevoegen werkplekken
|
||||
-- toevoegen werkplekken
|
||||
INSERT INTO prs_werkplek (prs_werkplek_volgnr, prs_werkplek_virtueel, prs_alg_ruimte_key)
|
||||
SELECT 1, 0, alg_ruimte_key
|
||||
FROM alg_v_aanwezigruimte r
|
||||
@@ -1684,7 +1738,7 @@ INSERT INTO prs_werkplek (prs_werkplek_volgnr, prs_werkplek_virtueel, prs_alg_ru
|
||||
FROM prs_v_aanwezigwerkplek wp
|
||||
WHERE r.alg_ruimte_key = wp.prs_alg_ruimte_key
|
||||
AND prs_werkplek_volgnr = 1);
|
||||
|
||||
|
||||
-- toevoegen prs_perslidwerkplekken
|
||||
INSERT INTO prs_perslidwerkplek (prs_perslid_key, prs_perslidwerkplek_bezetting, prs_werkplek_key)
|
||||
SELECT prs_perslid_key, 100, prs_werkplek_key
|
||||
@@ -1724,7 +1778,7 @@ END;
|
||||
|
||||
BEGIN adm.systrackscript('$Workfile: csun.sql $', '$Revision$', 0); END;
|
||||
/
|
||||
BEGIN fac.registercustversion('CSUN', 6); END;
|
||||
BEGIN fac.registercustversion('CSUN', 7); END;
|
||||
/
|
||||
COMMIT;
|
||||
spool off
|
||||
|
||||
Reference in New Issue
Block a user