YAXX#61590 M2O-koppeling/Facilicom tbv. KFNS
svn path=/Customer/trunk/; revision=46227
This commit is contained in:
120
KFNS/kfns.sql
120
KFNS/kfns.sql
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user