PCHW#41853 -- Automatisch mail inlezen voor meldingen buiten kantoortijden.

svn path=/Customer/trunk/; revision=35421
This commit is contained in:
Arthur Egberink
2017-09-25 11:40:14 +00:00
parent 31b4475f03
commit f8d39c2c54

View File

@@ -1571,6 +1571,120 @@ FROM (SELECT ins_discipline_omschrijving,
AND mld_melding_datum > ADD_MONTHS (SYSDATE, -1))
GROUP BY onderwerp;
-- Procedure om mailberichten van meldingen buiten kantooruren toch in een melding op te kunnen slaan.
CREATE OR REPLACE PROCEDURE pchw_processemail (pfrom IN VARCHAR2,
pto IN VARCHAR2,
psubject IN VARCHAR2,
pbody IN VARCHAR2,
psessionid IN VARCHAR2,
puserkey IN NUMBER DEFAULT NULL)
AS
v_sender prs_perslid.prs_perslid_key%TYPE;
v_melding_key mld_melding.mld_melding_key%TYPE;
v_stdmelding_key mld_stdmelding.mld_stdmelding_key%TYPE;
errormsg fac_result.fac_result_waarde%TYPE;
v_uitvoertijd mld_stdmelding.mld_stdmelding_t_uitvoertijd%TYPE;
v_ruimte_key alg_ruimte.alg_ruimte_key%TYPE;
v_locatie_key alg_locatie.alg_locatie_key%TYPE;
v_count NUMBER;
v_error NUMBER;
v_errormsg VARCHAR2 (100);
v_from VARCHAR2 (4000);
v_body VARCHAR2 (4000);
BEGIN
errormsg := '(0x143)';
v_error := 0;
v_errormsg := '';
v_locatie_key := 41; -- LGS
v_ruimte_key := 8392; -- L.002 Entreehal incl.wachtruimte
-- 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_body := pbody;
-- afzender van een gbs bericht is altijd 4881 (Key van gebruiker Calamiteiten servicedesk)
v_sender := 4881;
CASE
WHEN UPPER (pto) LIKE 'DEGROENESCHAKEL@%'
THEN
errormsg := '(0x145)';
-- filter nu de essentiele velden uit de mailbody
-- vervang cr door lf
v_stdmelding_key := fac.safe_to_number (fac.getsetting ('defaultstdmelding'));
v_body := REPLACE (v_body, CHR (13), CHR (10));
-- verwijder dubbele lf's
v_body := REPLACE (v_body, CHR (10) || CHR (10), CHR (10));
errormsg := '(0x1451)';
-- vind de uitvoertijd bij de stdmelding
SELECT mld_stdmelding_t_uitvoertijd
INTO v_uitvoertijd
FROM mld_stdmelding
WHERE mld_stdmelding_key = v_stdmelding_key;
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',
4, -- email
SYSDATE,
psubject,
v_body,
NULL,
v_uitvoertijd,
v_stdmelding_key,
v_sender,
v_sender,
NULL,
3,
v_locatie_key,
v_ruimte_key)
RETURNING mld_melding_key
INTO v_melding_key;
errormsg := '(0x165)';
mld.setmeldingstatus (v_melding_key, 2, v_sender);
END CASE;
EXCEPTION
WHEN OTHERS
THEN
INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde)
VALUES (psessionid,
'maillog',
'Database fout - Neem contact op met uw systeembeheerder ' || errormsg);
fac.writelog ('PROCESSEMAIL',
'E',
'Mail kon niet ingelezen worden afzender:' || pfrom || '[' || errormsg || ']',
'OTHERS (error ' || SQLCODE || '/' || SUBSTR (SQLERRM, 1, 100) || ')');
END;
/
------ payload end ------