MAAS#56991 Processemail tbv hr workflows
svn path=/Customer/trunk/; revision=45567
This commit is contained in:
168
MAAS/maas.sql
168
MAAS/maas.sql
@@ -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 ------
|
||||
|
||||
|
||||
Reference in New Issue
Block a user