YAXX#61590 M2O-koppeling/Facilicom tbv. KFNS

svn path=/Customer/trunk/; revision=46227
This commit is contained in:
Maarten van der Heide
2020-03-13 14:30:20 +00:00
parent d53226cd7e
commit b6e5205d66

View File

@@ -10915,6 +10915,126 @@ AS
AND k.alg_onrgoedkenmerk_waarde = TO_CHAR (ud.fac_usrdata_key)
AND ud.fac_usrtab_key = 341;
-- YAXX#61590: M2O-koppeling tbv. Facilicom!
CREATE OR REPLACE PROCEDURE KFNS_processemail (
pfrom IN VARCHAR2,
pto IN VARCHAR2,
psubject IN VARCHAR2,
pbody IN VARCHAR2,
psessionid IN VARCHAR2,
pemailkey IN NUMBER)
AS
c_facilicom_key NUMBER (10) := 88481;
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_count NUMBER (10);
v_opdracht_id VARCHAR2 (30);
v_opdracht_key NUMBER (10);
v_kenmerk_key NUMBER (10);
v_kenmerkopdr_key NUMBER (10);
v_refnr_lev VARCHAR2 (30);
v_kosten NUMBER (9, 2);
BEGIN
CASE
WHEN UPPER (pto) LIKE 'FACILICOM@%'
THEN
-- Controleer bestaan afgesproken Facilicom-user!
v_errormsg := 'Fout bepalen Facilicom-user';
SELECT prs_perslid_key
INTO v_count
FROM prs_v_aanwezigperslid
WHERE prs_perslid_key = c_facilicom_key;
v_errormsg := 'Fout bepalen opdracht';
IF INSTR (psubject, '##FID:') > 0
THEN
v_opdracht_id := SUBSTR (TRIM (SUBSTR (psubject, INSTR (psubject, '##FID:') + 6)), 1, REGEXP_INSTR (TRIM (SUBSTR (psubject, INSTR (psubject, '##FID:') + 6)) || ' ', '\s') - 1);
ELSE
v_opdracht_id := '';
END IF;
SELECT o.mld_opdr_key, COALESCE (o2k.mld_kenmerk_key, -1)
INTO v_opdracht_key, v_kenmerk_key
FROM mld_opdr o,
(SELECT mld_typeopdr_key, mld_kenmerk_key
FROM mld_kenmerk
WHERE mld_kenmerk_verwijder IS NULL
AND mld_srtkenmerk_key = 41) o2k -- Refnr. leverancier
WHERE TO_CHAR (o.mld_melding_key) || '/' || TO_CHAR (o.mld_opdr_bedrijfopdr_volgnr) = SUBSTR (v_opdracht_id, REGEXP_INSTR (v_opdracht_id, '\d'))
AND o.mld_typeopdr_key = o2k.mld_typeopdr_key(+);
v_errormsg := 'Fout bepalen Facilicom-ref';
IF INSTR (pbody, '##AXX:') > 0 AND v_kenmerk_key IS NOT NULL
THEN
SELECT MAX (mld_kenmerkopdr_key)
INTO v_kenmerkopdr_key
FROM mld_v_aanwezigkenmerkopdr
WHERE mld_opdr_key = v_opdracht_key
AND mld_kenmerk_key = v_kenmerk_key;
v_refnr_lev := SUBSTR (TRIM (SUBSTR (pbody, INSTR (pbody, '##AXX:') + 6)), 1, REGEXP_INSTR (TRIM (SUBSTR (pbody, INSTR (pbody, '##AXX:') + 6)) || ' ', '\s') - 1);
IF v_kenmerkopdr_key IS NULL
THEN
v_errormsg := 'Fout toevoegen Facilicom-ref';
INSERT INTO mld_kenmerkopdr (mld_opdr_key, mld_kenmerk_key, mld_kenmerkopdr_waarde)
VALUES (v_opdracht_key, v_kenmerk_key, v_refnr_lev);
ELSE
v_errormsg := 'Fout bijwerken Facilicom-ref';
UPDATE mld_kenmerkopdr
SET mld_kenmerkopdr_waarde = v_refnr_lev
WHERE mld_kenmerkopdr_key = v_kenmerkopdr_key;
END IF;
END IF;
v_errormsg := 'Fout bijwerken kosten';
IF INSTR (pbody, '##KOSTEN:') > 0
THEN
v_kosten := SUBSTR (TRIM (SUBSTR (pbody, INSTR (pbody, '##KOSTEN:') + 9)), 1, REGEXP_INSTR (TRIM (SUBSTR (pbody, INSTR (pbody, '##KOSTEN:') + 9)) || ' ', '\s') - 1);
UPDATE mld_opdr
SET mld_opdr_kosten = COALESCE (v_kosten, mld_opdr_kosten)
WHERE mld_opdr_key = v_opdracht_key;
END IF;
v_errormsg := 'Fout bijwerken status';
IF INSTR (UPPER (psubject), '##AFMELDEN') > 0
THEN
-- TODO: Controleren nog niet afgewezen/afgemeld/afgerond/verwerkt?
MLD.setopdrachtstatus (v_opdracht_key, 6, c_facilicom_key); -- Afgemeld
ELSIF INSTR (UPPER (psubject), '##AFRONDEN') > 0
THEN
-- TODO: Controleren afgemeld?
MLD.setopdrachtstatus (v_opdracht_key, 6, c_facilicom_key); -- Afgerond
END IF;
v_errormsg := 'Fout toevoegen notitie';
IF 1 = 1 -- TODO: Alleen gedeelte uit body achter ##VOORTGANG?
THEN
INSERT INTO mld_opdr_note (mld_opdr_key, prs_perslid_key, mld_opdr_note_omschrijving)
VALUES (v_opdracht_key, c_facilicom_key, pfrom || CHR (13) || CHR (10) || psubject || CHR (13) || CHR (10) || SUBSTR (pbody, 1, 2000));
END IF;
INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde)
VALUES (psessionid, 'maillog', 'Status/voortgang bijgewerkt bij opdracht: ' || v_opdracht_id);
ELSE
INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde)
VALUES (psessionid, 'errormsg', 'Ontvanger ongeldig - Neem contact op met uw systeembeheerder ');
END CASE;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.writelog ('PROCESSEMAIL', 'E', 'KFNS_processemail afgebroken!', '[' || pfrom || '] ' || v_errormsg);
INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde)
VALUES (psessionid, 'errormsg', 'Database fout - Neem contact op met uw systeembeheerder ');
COMMIT;
END;
/
------ payload end ------
SET DEFINE OFF