MAAS#56991 Processemail tbv hr workflows

svn path=/Customer/trunk/; revision=45567
This commit is contained in:
Sander Schepers
2020-01-24 10:40:45 +00:00
parent 90fcabea0a
commit 9919b1b249

View File

@@ -102,6 +102,174 @@ AS
AND (SYSDATE - trackingdatum) * 24 BETWEEN 0 AND 1;
/
CREATE OR REPLACE PROCEDURE maas_processemail (pfrom IN VARCHAR2,
pto IN VARCHAR2,
psubject IN VARCHAR2,
pbody IN VARCHAR2,
psessionid IN VARCHAR2,
pemailkey IN NUMBER)
AS
sender prs_perslid.prs_perslid_key%TYPE;
mldkey mld_melding.mld_melding_key%TYPE;
mldstat mld_melding.mld_melding_status%TYPE;
stdmelding mld_stdmelding.mld_stdmelding_key%TYPE;
errormsg fac_result.fac_result_waarde%TYPE;
v_from VARCHAR2 (4000);
v_body VARCHAR2 (4000);
m_body VARCHAR2 (4000);
BEGIN
errormsg := '(0x143)';
sender := 3; --Standaard de persoon Facilitor
-- 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;
m_body := pbody;
CASE
WHEN UPPER (pto) LIKE 'HRM@%'
THEN
errormsg := '(0x145)';
stdmelding :=
fac.safe_to_number (fac.getsetting ('defaultstdmelding'));
mldstat := 4; -- Standaard de status in behandeling (4). Bij geen overeenkomend onderwerp, dan status Nieuw (2), zodat de melding kan worden doorgezet en er een workflow gaat starten na het doorzetten.
-- Obv onderwerpveld bepalen welke stdmelding aangemaakt moet worden.
CASE
WHEN UPPER (psubject) LIKE '%NIEUWE MEDEWERKER%'
THEN
stdmelding := 421;
WHEN UPPER (psubject) LIKE '%NIEUWE STAGIAIR%'
THEN
stdmelding := 422;
WHEN UPPER (psubject) LIKE '%NIEUWE INLEENKRACHT%'
THEN
stdmelding := 423;
WHEN UPPER (psubject) LIKE '%UIT DIENST%'
THEN
stdmelding := 425;
WHEN UPPER (psubject) LIKE '%ANDERE FUNCTIE%'
THEN
stdmelding := 426;
ELSE
stdmelding := 424; -- Dit is de verzamelbak van binnenkomende meldingen/mails waarvan niet de juiste stdmelding kan worden bepaald.
mldstat := 2; -- Standaard de status in behandeling (4). Bij geen overeenkomend onderwerp, dan status Nieuw (2), zodat de melding kan worden doorgezet en er een workflow gaat starten na het doorzetten.
END CASE;
-- Hier maken we de melding aan.
BEGIN
errormsg :=
'Melding kan niet worden aangemaakt ('
|| 'To: '
|| pto
|| 'Subject: '
|| psubject
|| 'From: '
|| pfrom
|| 'Body: '
|| SUBSTR (pbody, 1, 100)
|| ')';
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,
mld_melding_kto,
mld_melding_externnr,
prs_perslid_key,
prs_perslid_key_voor,
prs_kostenplaats_key,
mld_melding_spoed)
VALUES ('MLD',
4, -- email
SYSDATE,
psubject,
SUBSTR (
REPLACE (
SUBSTR (m_body, 1, 4000),
CHR (13) || CHR (10) || CHR (13) || CHR (10),
CHR (13) || CHR (10)),
1,
4000), -- verwijder onnodige witregels
mldstat,
mld_t_uitvoertijd (2, 'D'),
stdmelding,
0,
NULL,
3, --Persoon Facilitor
3, --Persoon Facilitor
NULL,
3)
RETURNING mld_melding_key
INTO mldkey;
-- DBMS_OUTPUT.PUT_LINE('Melding toegevoegd: ' || mldkey);
errormsg := '(0x147)';
INSERT INTO fac_result (fac_result_sessionid,
fac_result_naam,
fac_result_waarde)
VALUES (psessionid,
'maillog',
'Geregistreerd onder melding ' || mldkey);
-- Indien het een melding is die start is van een workflow, dan moet ook de eerstvolgende stap(pen) aangemaakt worden.
errormsg := '(0x146)';
mld.mld_nextworkflowstep (mldkey, -1);
END;
END CASE;
-- Log het binnenkomende bericht als dat nodig is.
-- Verwijder records uit de fac_rapport tabel omdat de key uniek moet zijn.
DELETE fac_rapport
WHERE fac_rapport_volgnr = mldkey;
INSERT INTO fac_rapport (fac_rapport_node,
fac_rapport_volgnr,
fac_rapport_regel,
fac_rapport_soort)
VALUES ('MELDING_MAIL',
mldkey,
SUBSTR (pbody, 1, 1990),
1);
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)
VALUES (psessionid,
'errormsg',
'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 ------