diff --git a/BAUS/baus.sql b/BAUS/baus.sql index 6832d58f2..acceca396 100644 --- a/BAUS/baus.sql +++ b/BAUS/baus.sql @@ -33,233 +33,6 @@ SET DEFINE OFF ------ payload begin ------ -CREATE OR REPLACE PROCEDURE baus_processemail (pfrom IN VARCHAR2, - pto IN VARCHAR2, - psubject IN VARCHAR2, - pbody IN VARCHAR2, - psessionid IN VARCHAR2, - pemailkey IN NUMBER) -AS - v_count NUMBER; - defaultstdmelding fac_setting.fac_setting_default%TYPE; - subject_regexp fac_setting.fac_setting_default%TYPE; - v_newkey mld_melding.mld_melding_key%TYPE; - v_mldnum VARCHAR2 (4000); - v_mldkey mld_melding.mld_melding_key%TYPE; - v_email fac_notificatie.fac_notificatie_receiver_email%TYPE; - v_check NUMBER; - v_pbody VARCHAR2 (4000); - v_folder_kkey mld_kenmerk.mld_kenmerk_key%TYPE; - -- kkey mld_kenmerk.mld_kenmerk_key%TYPE; - errormsg fac_result.fac_result_waarde%TYPE; -BEGIN - -- Check of de afzender een reply op een bestaande melding doet, in dat geval wordt dat in notities genoteerd. - -- 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. - subject_regexp := '[[:digit:]]{1,}'; - - v_pbody := pbody; - - v_mldnum := - REGEXP_SUBSTR (psubject, - subject_regexp, - 1, - 1, - 'i'); - - v_mldkey := fac.safe_to_number (v_mldnum); - - --- kijken of er inderdaad een melding bestaat met het gevonden nummer - SELECT COUNT (m.mld_melding_key) - INTO v_check - FROM mld_melding m - WHERE m.mld_melding_key = v_mldkey; - - IF v_check = 1 - THEN - -- Bestaande melding gevonden dus we zetten de mail als notitie bij deze melding - BEGIN - INSERT INTO mld_melding_note (mld_melding_key, - mld_melding_note_omschrijving, - mld_melding_note_flag, - prs_perslid_key) - VALUES ( - v_mldkey, - SUBSTR ( - psubject - || CHR (13) - || CHR (10) - || REPLACE ( - SUBSTR (v_pbody, - 1, - 4000 - (LENGTH (v_pbody) + 2)), - CHR (13) - || CHR (10) - || CHR (13) - || CHR (10), - CHR (13) || CHR (10)), - 1, - 4000), -- verwijder onnodige witregels - 1, - 3); - - --- belletje bij de melding zetten - UPDATE mld_melding - SET mld_melding_actiecode = 129 - WHERE mld_melding_key = v_mldkey; - - --- de huidige behandelaar krijgt een notificatie - SELECT mld_melding_behandelaar_key - INTO v_email - FROM mld_melding - WHERE mld_melding_key = v_mldkey; - - IF v_email IS NOT NULL - THEN - INSERT INTO fac_notificatie (fac_srtnotificatie_key, - fac_notificatie_status, - prs_perslid_key_receiver, - fac_notificatie_receiver_email, - fac_notificatie_oms, - fac_notificatie_refkey, - fac_notificatie_prioriteit) - VALUES ( - 70, --- mldnob - 2, - v_email, - NULL, - 'Er is een opmerking geplaatst bij melding ' - || TO_CHAR (v_mldkey), - v_mldkey, - 2); - END IF; - - -- 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, - mld_melding m - WHERE m.mld_stdmelding_key = sm1.mld_stdmelding_key - AND m.mld_melding_key = v_mldkey - AND sm1.mld_ins_discipline_key = td1.ins_discipline_key - AND k1.mld_kenmerk_verwijder IS NULL - AND k1.mld_srtkenmerk_key = sk1.mld_srtkenmerk_key - AND sk1.mld_srtkenmerk_kenmerktype = 'M' - 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')); - - IF v_folder_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 - || '\' - || v_folder_kkey - || '\'); - END IF; - - fac.trackaction ('MLDTRK', - v_mldkey, - NULL, - NULL, - 'Nieuwe notitie via Mail2melding'); - END; - ELSE - --- geen bestaande melding kunnen vinden dus dan een nieuwe aanmaken - 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, - prs_perslid_key, - prs_perslid_key_voor, - mld_melding_email_ext, - mld_melding_spoed) - VALUES ( - 'MLD', - 4, -- email - SYSDATE, - SUBSTR (psubject, 1, 60), - SUBSTR ( - REPLACE ( - SUBSTR (pbody, 1, 4000), - CHR (13) || CHR (10) || CHR (13) || CHR (10), - CHR (13) || CHR (10)), - 1, - 4000), -- verwijder onnodige witregels - 2, - 1, - 3, - 3, - pfrom, - 3) - RETURNING mld_melding_key - INTO v_newkey; - - INSERT INTO fac_result (fac_result_sessionid, - fac_result_naam, - fac_result_waarde) - VALUES (psessionid, - 'maillog', - 'Geregistreerd onder melding ' || v_newkey); - END; - - 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; - 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 baus_processemail; -/ - CREATE OR REPLACE VIEW BAUS_V_RAP_TAKEN ( ins_deel_key,