PCHW#41853 -- Automatisch mail inlezen voor meldingen buiten kantoortijden.
svn path=/Customer/trunk/; revision=35421
This commit is contained in:
114
PCHW/pchw.sql
114
PCHW/pchw.sql
@@ -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 ------
|
||||
|
||||
|
||||
Reference in New Issue
Block a user