From 9d183889e0ccbe52ad25c8bf9d6d9b5c904f68ae Mon Sep 17 00:00:00 2001 From: Sander Schepers Date: Thu, 23 Dec 2021 15:22:58 +0000 Subject: [PATCH] SUTF#70194 Module Mail2Melding svn path=/Customer/trunk/; revision=54287 --- SUTF/sutf.sql | 235 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 235 insertions(+) diff --git a/SUTF/sutf.sql b/SUTF/sutf.sql index 9d9b16dc0..6a2213ba9 100644 --- a/SUTF/sutf.sql +++ b/SUTF/sutf.sql @@ -2244,6 +2244,241 @@ AS AND ins_kenmerkdeel_waarde = TO_CHAR (SYSDATE - 1, 'DD-MM-YYYY') AND ins_alg_ruimte_key_org IS NOT NULL; +CREATE OR REPLACE PACKAGE SUTF +AS + PROCEDURE mail_supportdesk (pfrom IN VARCHAR2, + pto IN VARCHAR2, + psubject IN VARCHAR2, + pbody IN VARCHAR2, + psessionid IN VARCHAR2, + pemailkey IN NUMBER); +END; +/ + +CREATE OR REPLACE PACKAGE BODY SUTF +AS + PROCEDURE mail_supportdesk (pfrom IN VARCHAR2, + pto IN VARCHAR2, + psubject IN VARCHAR2, + pbody IN VARCHAR2, + psessionid IN VARCHAR2, + pemailkey IN NUMBER) + AS + v_sender prs_perslid.prs_perslid_key%TYPE; + v_from VARCHAR2 (4000); + v_body VARCHAR2 (4000); + v_count NUMBER; + + v_onderwerp mld_melding.mld_melding_onderwerp%TYPE; + v_omschrijving mld_melding.mld_melding_omschrijving%TYPE; + v_melding_key mld_melding.mld_melding_key%TYPE; + v_stdmelding_key mld_stdmelding.mld_stdmelding_key%TYPE; + v_uitvoertijd mld_stdmelding.mld_stdmelding_t_uitvoertijd%TYPE; + v_melding_status mld_melding.mld_melding_status%TYPE; + v_volgnr NUMBER; + v_locatie_key alg_locatie.alg_locatie_key%TYPE; + v_kkey mld_kenmerk.mld_kenmerk_key%TYPE; + v_mailorigin mld_kenmerk.mld_kenmerk_key%TYPE; + + v_errorhint VARCHAR2 (1000); + v_errormsg fac_result.fac_result_waarde%TYPE; + oracle_err_num NUMBER; + oracle_err_mes VARCHAR2 (200); + BEGIN + -- Verwijder de Bounce Address Tag Validation + IF pfrom LIKE 'prvs=%' + THEN + v_from := SUBSTR (pfrom, INSTR (pfrom, '=', -1) + 1); + ELSE + v_from := pfrom; + END IF; + + v_stdmelding_key := + fac.safe_to_number (fac.getsetting ('defaultstdmelding')); + v_locatie_key := 261; --Locatie nvt + v_sender := 4; --4 = Facilitor + v_kkey := 1121; --Kenmerk_key bijlagen email + v_mailorigin := 1101; --Kenmerk_key originele mail-bijlage + + --ACCEPT: + --v_locatie_key := 241; --Locatie nvt + --v_sender := 4; --4 = Facilitor + --v_kkey := 1145; --Kenmerk_key bijlagen email + --v_mailorigin := 1146; --Kenmerk_key originele mail-bijlage + + -- filter nu de essentiele velden uit de mailbody + -- vervang cr door lf + v_body := pbody; + v_body := REPLACE (v_body, CHR (13), CHR (10)); + -- verwijder dubbele lf's + v_body := REPLACE (v_body, CHR (10) || CHR (10), CHR (10)); + v_omschrijving := v_body; + v_onderwerp := psubject; + -- + v_errorhint := 'Bepaal volgnummer'; + + SELECT COALESCE (MAX (fac_rapport_volgnr), 0) + INTO v_volgnr + FROM fac_rapport + WHERE fac_rapport_node = 'SUPPORTDESK'; + + v_errorhint := 'Bewaar mail ' || v_volgnr; + v_errormsg := '(0x110)'; + + INSERT INTO fac_rapport (fac_rapport_node, + fac_rapport_volgnr, + fac_rapport_regel) + VALUES ( + 'SUPPORTDESK', + v_volgnr + 1, + pfrom + || CHR (10) + || psubject + || CHR (10) + || v_omschrijving); + + -- nu gaan we de uitvoertijd bepalen + v_errorhint := 'Bepaal uitvoertijd ' || v_volgnr; + v_errormsg := '(0x120)'; + + SELECT mld_stdmelding_t_uitvoertijd + INTO v_uitvoertijd + FROM mld_stdmelding + WHERE mld_stdmelding_key = v_stdmelding_key; + + -- nu gaan we de melding aanmaken + v_errorhint := 'Melding aanmaken ' || v_volgnr; + v_errormsg := 'Melding kan niet aangemaakt worden (0x150)'; + + INSERT INTO mld_melding (mld_melding_module, + mld_meldbron_key, + mld_melding_datum, + mld_melding_onderwerp, + mld_melding_omschrijving, + mld_melding_status, + mld_melding_t_uitvoertijd, + mld_stdmelding_key, + prs_perslid_key, + prs_perslid_key_voor, + prs_kostenplaats_key, + mld_melding_spoed, + mld_alg_locatie_key, + mld_alg_onroerendgoed_keys) + VALUES ('MLD', + 6, -- system + SYSDATE, + v_onderwerp, + v_omschrijving, + NULL, + v_uitvoertijd, + v_stdmelding_key, + v_sender, + v_sender, + NULL, + 3, + v_locatie_key, + NULL) + RETURNING mld_melding_key + INTO v_melding_key; + + v_errormsg := '(0x180)'; + mld.setmeldingstatus (v_melding_key, 2, v_sender); + + INSERT INTO fac_result (fac_result_sessionid, + fac_result_naam, + fac_result_waarde) + VALUES (psessionid, + 'maillog', + 'Geregistreerd onder melding ' || v_melding_key); + + IF v_melding_key = NULL + THEN + -- foutafhandeling + v_errorhint := 'Geen melding key ' || v_volgnr; + v_errormsg := 'Melding kan niet aangemaakt worden (0x910)'; + fac.writelog ('MAIL_SUPPORTDESK', + 'E', + v_errormsg, + SUBSTR (pbody, 1, 1000)); + + INSERT INTO fac_result (fac_result_sessionid, + fac_result_naam, + fac_result_waarde) + VALUES ( + psessionid, + 'errormsg', + 'Fout bij verwerken mail Supportdesk ' + || psubject); + ELSE + -- nu gaan we de bijlagen toevoegen + v_errorhint := 'Bijlagen toevoegen ' || v_volgnr; + v_errormsg := 'Bijlagen toevoegen lukt niet (0x210)'; + + IF v_kkey IS NOT NULL + THEN + v_errormsg := '(0x230)'; + + INSERT INTO fac_result (fac_result_sessionid, + fac_result_naam, + fac_result_waarde) + VALUES ( + psessionid, + 'kenmerkpath', + 'MLD\M' + || TO_CHAR (TRUNC (v_melding_key / 1000), + 'FM0000') + || '___\M' + || v_melding_key + || '\' + || v_kkey + || '\'); + END IF; + + -- originele email wordt opgeslagen bij de melding + INSERT INTO fac_result (fac_result_sessionid, + fac_result_naam, + fac_result_waarde) + VALUES ( + psessionid, + 'kenmerkorgmailpath', + 'MLD\M' + || TO_CHAR (TRUNC (v_melding_key / 1000), + 'FM0000') + || '___\M' + || v_melding_key + || '\' + || v_mailorigin + || '\'); + END IF; + EXCEPTION + WHEN OTHERS + THEN + oracle_err_num := SQLCODE; + oracle_err_mes := SUBSTR (SQLERRM, 1, 200); + v_errormsg := + v_errormsg + || ' ORACLE (error ' + || oracle_err_num + || '/' + || oracle_err_mes + || ')'; + fac.writelog ('MAIL_SUPPORTDESK', + 'E', + v_errormsg, + v_errorhint); + + INSERT INTO fac_result (fac_result_sessionid, + fac_result_naam, + fac_result_waarde) + VALUES ( + psessionid, + 'errormsg', + 'Fout bij verwerken mail Supportdesk: ' + || psubject); + END; +END; +/ + ------ payload end ------ SET DEFINE OFF