MAAS#61281 Koppeling Valuemation
svn path=/Customer/trunk/; revision=45962
This commit is contained in:
782
MAAS/maas.sql
782
MAAS/maas.sql
@@ -109,16 +109,26 @@ CREATE OR REPLACE PROCEDURE maas_processemail (pfrom 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;
|
||||
v_errormsg fac_result.fac_result_waarde%TYPE;
|
||||
v_from VARCHAR2 (4000);
|
||||
v_body VARCHAR2 (4000);
|
||||
m_body VARCHAR2 (4000);
|
||||
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;
|
||||
v_errormsg fac_result.fac_result_waarde%TYPE;
|
||||
v_from VARCHAR2 (4000);
|
||||
v_body VARCHAR2 (4000);
|
||||
m_body VARCHAR2 (4000);
|
||||
v_actie VARCHAR2 (4000);
|
||||
v_vmnr mld_melding.mld_melding_externnr%TYPE; --Ticketnr Valuemation
|
||||
v_mldkey mld_melding.mld_melding_key%TYPE; --bestaande mld_melding_key
|
||||
v_opdrkey mld_opdr.mld_opdr_key%TYPE; --bestaande mld_opdr_key
|
||||
v_opdrvolgnr mld_opdr.mld_opdr_bedrijfopdr_volgnr%TYPE; --bestaande volgnr
|
||||
v_status mld_opdr.mld_statusopdr_key%TYPE; -- status opdracht
|
||||
v_kenmstatusoms VARCHAR2 (4000);
|
||||
v_kenmstatusper VARCHAR2 (4000);
|
||||
v_kenmstatusoms_cur VARCHAR2 (4000);
|
||||
v_kenmstatusper_cur VARCHAR2 (4000);
|
||||
BEGIN
|
||||
v_errormsg := '(0x143)';
|
||||
v_errormsg := '(0x143)' || v_mldkey || psubject || v_actie;
|
||||
sender := 3; --Standaard de persoon Facilitor
|
||||
|
||||
-- Verwijder de Bounce Address Tag Validation
|
||||
@@ -135,11 +145,11 @@ BEGIN
|
||||
CASE
|
||||
WHEN UPPER (pto) LIKE 'HRM@%'
|
||||
THEN
|
||||
v_errormsg := '(0x145)';
|
||||
v_errormsg := '(0x145)' || v_mldkey || psubject || v_actie;
|
||||
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.
|
||||
mldstat := 4; -- Standaard de status in behandeling (4). Bij geen overeenkomend onderwerp, dan status Nieuw (2), zodat de melding kan worden gecorrigeerd naar een workflowstartmelding.
|
||||
|
||||
-- Obv onderwerpveld bepalen welke stdmelding aangemaakt moet worden.
|
||||
CASE
|
||||
@@ -160,7 +170,7 @@ BEGIN
|
||||
stdmelding := 564;
|
||||
ELSE
|
||||
stdmelding := 581; -- 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.
|
||||
mldstat := 2; -- Standaard de status in behandeling (4). Bij geen overeenkomend onderwerp, dan status Nieuw (2), zodat de melding kan worden gecorrigeerd naar een workflowstartmelding.
|
||||
END CASE;
|
||||
|
||||
-- Hier maken we de melding aan.
|
||||
@@ -214,8 +224,7 @@ BEGIN
|
||||
RETURNING mld_melding_key
|
||||
INTO mldkey;
|
||||
|
||||
-- DBMS_OUTPUT.PUT_LINE('Melding toegevoegd: ' || mldkey);
|
||||
v_errormsg := '(0x147)';
|
||||
v_errormsg := '(0x147)' || v_mldkey || psubject || v_actie;
|
||||
|
||||
INSERT INTO fac_result (fac_result_sessionid,
|
||||
fac_result_naam,
|
||||
@@ -225,24 +234,628 @@ BEGIN
|
||||
'Geregistreerd onder melding ' || mldkey);
|
||||
|
||||
-- Indien het een melding is die start is van een workflow, dan moet ook de eerstvolgende stap(pen) aangemaakt worden.
|
||||
v_errormsg := '(0x146)';
|
||||
v_errormsg := '(0x146)' || v_mldkey || psubject || v_actie;
|
||||
mld.mld_nextworkflowstep (mldkey, -1);
|
||||
END;
|
||||
-- Eerst hanteerde ik een End case en End om de twee kanalen te scheiden. Daarop liep het tweede kanaal (pto: helpdesk_maasdelta@) niet, vreemd genoeg. Door de End case en End uit te commentarieren liep de procedure wel.
|
||||
-- Wellicht wat vreemd en onverwacht gedrag, maar met die wetenschap, dit maar zo laten.
|
||||
-- END CASE;
|
||||
-- CASE
|
||||
WHEN UPPER (pto) LIKE 'HELPDESK_MAASDELTA@%'
|
||||
THEN
|
||||
v_errormsg := '(0x245)' || v_mldkey || psubject || v_actie;
|
||||
stdmelding :=
|
||||
fac.safe_to_number (fac.getsetting ('defaultstdmelding'));
|
||||
mldstat := 2; -- Standaard de status in Nieuw (2). Bij geen overeenkomend onderwerp, dan status Nieuw (2), zodat de melding kan worden doorgezet en er een workflow gaat starten na het doorzetten.
|
||||
|
||||
-- Bepalen van het ticknr. uit Valuemation, deze is vooral van belang bij het confirmation bericht
|
||||
v_errormsg := '(0x246)' || v_mldkey || psubject || v_actie;
|
||||
v_vmnr := SUBSTR (psubject, 11, 12);
|
||||
|
||||
-- Bepalen van mld_melding_key
|
||||
v_errormsg := '(0x247)' || v_mldkey || psubject || v_actie;
|
||||
v_mldkey :=
|
||||
SUBSTR (
|
||||
SUBSTR (
|
||||
SUBSTR (psubject,
|
||||
INSTR (psubject, 'Facilitor opdracht:') + 19),
|
||||
0,
|
||||
INSTR (
|
||||
SUBSTR (psubject,
|
||||
INSTR (psubject, 'Facilitor opdracht:') + 19),
|
||||
'"')
|
||||
- 1),
|
||||
0,
|
||||
INSTR (
|
||||
SUBSTR (
|
||||
SUBSTR (psubject,
|
||||
INSTR (psubject, 'Facilitor opdracht:') + 19),
|
||||
0,
|
||||
INSTR (
|
||||
SUBSTR (psubject,
|
||||
INSTR (psubject, 'Facilitor opdracht:') + 19),
|
||||
'"')
|
||||
- 1),
|
||||
'/')
|
||||
- 1);
|
||||
|
||||
-- Bepalen van opdrachtvolgnr
|
||||
v_errormsg := '(0x248)' || v_mldkey || psubject || v_actie;
|
||||
v_opdrvolgnr :=
|
||||
SUBSTR (
|
||||
SUBSTR (
|
||||
SUBSTR (psubject,
|
||||
INSTR (psubject, 'Facilitor opdracht:') + 19),
|
||||
0,
|
||||
INSTR (
|
||||
SUBSTR (psubject,
|
||||
INSTR (psubject, 'Facilitor opdracht:') + 19),
|
||||
'"')
|
||||
- 1),
|
||||
INSTR (
|
||||
SUBSTR (
|
||||
SUBSTR (psubject,
|
||||
INSTR (psubject, 'Facilitor opdracht:') + 19),
|
||||
0,
|
||||
INSTR (
|
||||
SUBSTR (psubject,
|
||||
INSTR (psubject, 'Facilitor opdracht:') + 19),
|
||||
'"')
|
||||
- 1),
|
||||
'/')
|
||||
+ 1);
|
||||
|
||||
|
||||
-- Bepalen van de mld_opdr_key
|
||||
-- Uitgangspunt is 1 opdracht per melding
|
||||
v_errormsg := '(0x249)' || v_mldkey || psubject || v_actie;
|
||||
|
||||
SELECT MIN (mld_opdr_key)
|
||||
INTO v_opdrkey
|
||||
FROM mld_opdr
|
||||
WHERE mld_melding_key = v_mldkey
|
||||
AND mld_opdr_bedrijfopdr_volgnr = v_opdrvolgnr;
|
||||
|
||||
--Hier gaan we obv het onderwerpveld bepalen wat de actie in Facilitor moet zijn
|
||||
v_errormsg := 'Kan actie niet bepalen: ' || psubject || v_mldkey;
|
||||
|
||||
CASE
|
||||
WHEN UPPER (SUBSTR (psubject, LENGTH (psubject) - 13, 14)) LIKE
|
||||
'%IS AANGEMAAKT%'
|
||||
THEN
|
||||
v_actie := 'ORDVAL';
|
||||
WHEN UPPER (SUBSTR (psubject, LENGTH (psubject) - 22, 23)) LIKE
|
||||
'%IS DOOR ONS GEVALIDEERD%'
|
||||
THEN
|
||||
v_actie := 'ORDACP';
|
||||
WHEN UPPER (SUBSTR (psubject, LENGTH (psubject) - 22, 23)) LIKE
|
||||
'%WACHT OP UW REACTIE%'
|
||||
THEN
|
||||
v_actie := 'ORDUPD';
|
||||
v_kenmstatusoms := 'Wacht op uw reactie';
|
||||
WHEN UPPER (SUBSTR (psubject, 0, 14)) LIKE '%AFSTEMMING NAV%'
|
||||
THEN
|
||||
v_actie := 'ORDUPD';
|
||||
v_kenmstatusoms := 'Telefonisch contact leggen is mislukt';
|
||||
WHEN UPPER (SUBSTR (psubject, LENGTH (psubject) - 11, 12)) LIKE
|
||||
'%IS OPGELOST%'
|
||||
THEN
|
||||
v_actie := 'ORDAFM';
|
||||
WHEN UPPER (SUBSTR (psubject, LENGTH (psubject) - 45, 46)) LIKE
|
||||
'%IN VERBAND MET HET UITBLIJVEN VAN EEN REACTIE%'
|
||||
THEN
|
||||
v_actie := 'ORDAFM';
|
||||
ELSE
|
||||
v_actie := NULL;
|
||||
END CASE;
|
||||
|
||||
|
||||
BEGIN
|
||||
--Hieronder de acties die gedaan moeten worden.
|
||||
|
||||
--Bevestigingsmail vanuit Valuemation, vult externnr bij de melding
|
||||
v_errormsg := '(0x350)' || v_mldkey || psubject || v_actie;
|
||||
|
||||
--Als de actie niet bepaald kan worden obv het onderwerp van de mail uit Valuemation, dan doen we niets met de mail.
|
||||
IF v_actie = NULL
|
||||
THEN
|
||||
v_errormsg := '(0x360)' || v_mldkey || psubject;
|
||||
|
||||
fac.writelog (
|
||||
'PROCESSEMAIL',
|
||||
'E',
|
||||
'Mail kon niet ingelezen worden afzender:'
|
||||
|| pfrom
|
||||
|| '['
|
||||
|| v_errormsg
|
||||
|| ']',
|
||||
'OTHERS (error '
|
||||
|| SQLCODE
|
||||
|| '/'
|
||||
|| SUBSTR (SQLERRM, 1, 100)
|
||||
|| ')');
|
||||
ELSE
|
||||
--Bij een confirmationbericht uit Valuemation, wordt het ticketnr vanuit Valuemation doorgegeven.
|
||||
IF v_actie = 'ORDVAL'
|
||||
THEN
|
||||
v_errormsg :=
|
||||
'(0x410)'
|
||||
|| v_mldkey
|
||||
|| psubject
|
||||
|| v_actie
|
||||
|| 'vmnr: '
|
||||
|| v_vmnr
|
||||
|| 'opdrkey: '
|
||||
|| v_opdrkey;
|
||||
|
||||
IF v_vmnr IS NOT NULL AND v_opdrkey IS NOT NULL
|
||||
THEN
|
||||
UPDATE mld_opdr
|
||||
SET mld_opdr_externnr = v_vmnr
|
||||
WHERE mld_opdr_key = v_opdrkey;
|
||||
|
||||
fac.trackaction (
|
||||
'ORDUPD',
|
||||
v_opdrkey,
|
||||
sender,
|
||||
NULL,
|
||||
'#Valuemation nr vanuit confirmationbericht: --> '
|
||||
|| v_vmnr); -- # voorkomt notificatie
|
||||
ELSE
|
||||
fac.writelog (
|
||||
'PROCESSEMAIL',
|
||||
'E',
|
||||
'Valuemation nr kon niet worden gevuld:'
|
||||
|| pfrom
|
||||
|| '['
|
||||
|| v_errormsg
|
||||
|| v_vmnr
|
||||
|| ']',
|
||||
'OTHERS (error '
|
||||
|| SQLCODE
|
||||
|| '/'
|
||||
|| SUBSTR (SQLERRM, 1, 100)
|
||||
|| ')');
|
||||
END IF;
|
||||
END IF;
|
||||
|
||||
--Hieronder de afhandeling van het bericht wanneer de melding wordt gevalideerd in Valuemation.
|
||||
IF v_actie = 'ORDACP'
|
||||
THEN
|
||||
v_errormsg := '(0x420)' || v_mldkey || psubject || v_actie;
|
||||
v_vmnr :=
|
||||
SUBSTR (REGEXP_REPLACE (psubject, '[^0-9]', ''), 1, 12);
|
||||
|
||||
IF v_opdrkey IS NOT NULL
|
||||
THEN
|
||||
--Normaal zouden we het ticketnummer vanuit Valuemation al moeten hebben vanuit confirmationbericht. Maar als dit bericht niet goed ontvangen is, dan proberen we het ticketnummer alsnog te vullen
|
||||
IF v_vmnr IS NOT NULL AND v_opdrkey IS NOT NULL
|
||||
THEN
|
||||
UPDATE mld_opdr
|
||||
SET mld_opdr_externnr = v_vmnr
|
||||
WHERE mld_opdr_key = v_opdrkey
|
||||
AND mld_opdr_externnr IS NULL;
|
||||
|
||||
fac.trackaction (
|
||||
'ORDUPD',
|
||||
v_opdrkey,
|
||||
sender,
|
||||
NULL,
|
||||
'#Valuemation nr vanuit confirmationbericht: --> '
|
||||
|| v_vmnr); -- # voorkomt notificatie
|
||||
ELSE
|
||||
fac.writelog (
|
||||
'PROCESSEMAIL',
|
||||
'E',
|
||||
'Valuemation nr kon niet worden gevuld:'
|
||||
|| pfrom
|
||||
|| '['
|
||||
|| v_errormsg
|
||||
|| v_vmnr
|
||||
|| ']',
|
||||
'OTHERS (error '
|
||||
|| SQLCODE
|
||||
|| '/'
|
||||
|| SUBSTR (SQLERRM, 1, 100)
|
||||
|| ')');
|
||||
END IF;
|
||||
|
||||
UPDATE mld_opdr
|
||||
SET mld_statusopdr_key = 8
|
||||
WHERE mld_opdr_key = v_opdrkey;
|
||||
|
||||
fac.trackaction ('ORDACP',
|
||||
v_opdrkey,
|
||||
sender,
|
||||
NULL,
|
||||
'#Melding gevalideerd in Valuemation'); -- # voorkomt notificatie
|
||||
|
||||
INSERT INTO mld_opdr_note (mld_opdr_key,
|
||||
mld_opdr_note_omschrijving,
|
||||
prs_perslid_key)
|
||||
VALUES (v_opdrkey,
|
||||
SUBSTR (
|
||||
psubject || CHR (13) || CHR (10)
|
||||
|| REPLACE (
|
||||
SUBSTR (
|
||||
pbody,
|
||||
1,
|
||||
4000 - (LENGTH (psubject) + 2)),
|
||||
CHR (13)
|
||||
|| CHR (10)
|
||||
|| CHR (13)
|
||||
|| CHR (10),
|
||||
CHR (13) || CHR (10)),
|
||||
1,
|
||||
4000), -- Verwijder onnodige witregels
|
||||
sender);
|
||||
|
||||
fac.trackaction ('ORDUPD',
|
||||
v_opdrkey,
|
||||
sender,
|
||||
NULL,
|
||||
'#Notitie toegevoegd vanuit e-mail'); -- # voorkomt notificatie
|
||||
ELSE
|
||||
fac.writelog (
|
||||
'PROCESSEMAIL',
|
||||
'E',
|
||||
'Melding kan niet geaccepteerd worden, onbekende opdrachtkey'
|
||||
|| pfrom
|
||||
|| '['
|
||||
|| v_errormsg
|
||||
|| ']',
|
||||
'OTHERS (error '
|
||||
|| SQLCODE
|
||||
|| '/'
|
||||
|| SUBSTR (SQLERRM, 1, 100)
|
||||
|| ')');
|
||||
END IF;
|
||||
END IF;
|
||||
|
||||
--Hieronder de afhandeling van het bericht wanneer de melding moet worden bijgewerkt en een reactie wordt verwacht
|
||||
IF v_actie = 'ORDUPD'
|
||||
THEN
|
||||
v_errormsg := '(0x430)' || v_mldkey || psubject || v_actie;
|
||||
v_vmnr :=
|
||||
SUBSTR (REGEXP_REPLACE (psubject, '[^0-9]', ''), 1, 12);
|
||||
|
||||
|
||||
IF v_opdrkey IS NOT NULL
|
||||
THEN
|
||||
v_errormsg :=
|
||||
'(0x431)' || v_mldkey || psubject || v_actie;
|
||||
|
||||
SELECT mld_statusopdr_key
|
||||
INTO v_status
|
||||
FROM mld_opdr
|
||||
WHERE mld_opdr_key = v_opdrkey;
|
||||
|
||||
--Normaal zouden we het ticketnummer vanuit Valuemation al moeten hebben vanuit confirmationbericht. Maar als dit bericht niet goed ontvangen is, dan proberen we het ticketnummer alsnog te vullen
|
||||
IF v_vmnr IS NOT NULL AND v_opdrkey IS NOT NULL
|
||||
THEN
|
||||
v_errormsg :=
|
||||
'(0x432)' || v_mldkey || psubject || v_actie;
|
||||
|
||||
UPDATE mld_opdr
|
||||
SET mld_opdr_externnr = v_vmnr
|
||||
WHERE mld_opdr_key = v_opdrkey
|
||||
AND mld_opdr_externnr IS NULL;
|
||||
|
||||
fac.trackaction (
|
||||
'ORDUPD',
|
||||
v_opdrkey,
|
||||
sender,
|
||||
NULL,
|
||||
'#Valuemation nr vanuit confirmationbericht: --> '
|
||||
|| v_vmnr); -- # voorkomt notificatie
|
||||
ELSE
|
||||
fac.writelog (
|
||||
'PROCESSEMAIL',
|
||||
'E',
|
||||
'Valuemation nr kon niet worden gevuld:'
|
||||
|| pfrom
|
||||
|| '['
|
||||
|| v_errormsg
|
||||
|| v_vmnr
|
||||
|| ']',
|
||||
'OTHERS (error '
|
||||
|| SQLCODE
|
||||
|| '/'
|
||||
|| SUBSTR (SQLERRM, 1, 100)
|
||||
|| ')');
|
||||
END IF;
|
||||
|
||||
--Wanneer confirmationbericht niet binnen is gekomen, dan is de status nog Toegekend (6) en niet Geaccepteerd (8). Dat kunnen we nu ook omzetten, zodra er een
|
||||
IF v_vmnr IS NOT NULL
|
||||
AND v_opdrkey IS NOT NULL
|
||||
AND v_status = 6 --Toegekend (en dus nog niet geaccepteerd)
|
||||
THEN
|
||||
v_errormsg :=
|
||||
'(0x433)' || v_mldkey || psubject || v_actie;
|
||||
|
||||
UPDATE mld_opdr
|
||||
SET mld_statusopdr_key = 8
|
||||
WHERE mld_opdr_key = v_opdrkey AND v_status = 6;
|
||||
|
||||
fac.trackaction (
|
||||
'ORDACP',
|
||||
v_opdrkey,
|
||||
sender,
|
||||
NULL,
|
||||
'#Melding gevalideerd in Valuemation'); -- # voorkomt notificatie
|
||||
END IF;
|
||||
|
||||
-- Hieronder bepalen of de opdracht al de kenmerken mbt status Valuemation gevuld heeft.
|
||||
SELECT COALESCE (
|
||||
(SELECT mld_kenmerkopdr_waarde
|
||||
FROM mld_kenmerkopdr
|
||||
WHERE mld_kenmerk_key = 601 -- Kenmerk 'Status valuemation'
|
||||
AND mld_opdr_key = v_opdrkey
|
||||
AND mld_kenmerkopdr_verwijder IS NULL),
|
||||
'leeg')
|
||||
INTO v_kenmstatusoms_cur
|
||||
FROM DUAL;
|
||||
|
||||
SELECT COALESCE (
|
||||
(SELECT mld_kenmerkopdr_waarde
|
||||
FROM mld_kenmerkopdr
|
||||
WHERE mld_kenmerk_key = 623 -- Kenmerk 'Status per'
|
||||
AND mld_opdr_key = v_opdrkey
|
||||
AND mld_kenmerkopdr_verwijder IS NULL),
|
||||
'leeg')
|
||||
INTO v_kenmstatusper_cur
|
||||
FROM DUAL;
|
||||
|
||||
-- Als de kenmkerken nog niet bestaan, dan toevoegen bij de opdracht, anders updaten indien gewijzigd.
|
||||
IF v_kenmstatusoms_cur = 'leeg'
|
||||
THEN
|
||||
v_errormsg :=
|
||||
'(0x434)' || v_mldkey || psubject || v_actie;
|
||||
|
||||
INSERT INTO mld_kenmerkopdr (mld_opdr_key,
|
||||
mld_kenmerk_key,
|
||||
mld_kenmerkopdr_waarde)
|
||||
VALUES (v_opdrkey, 601, 'Wacht op uw reactie'); -- Kenmerk 'Status valuemation'
|
||||
|
||||
fac.trackaction (
|
||||
'ORDUPD',
|
||||
v_opdrkey,
|
||||
sender,
|
||||
NULL,
|
||||
'Status Valuemation: leeg --> ' || v_kenmstatusoms); -- # voorkomt notificatie
|
||||
ELSE
|
||||
v_errormsg :=
|
||||
'(0x435)' || v_mldkey || psubject || v_actie;
|
||||
|
||||
IF v_kenmstatusoms_cur <> v_kenmstatusoms_cur
|
||||
THEN
|
||||
UPDATE mld_kenmerkopdr
|
||||
SET mld_kenmerkopdr_waarde = v_kenmstatusoms
|
||||
WHERE mld_opdr_key = v_opdrkey
|
||||
AND mld_kenmerk_key = 601
|
||||
AND mld_kenmerkopdr_verwijder IS NULL;
|
||||
|
||||
fac.trackaction (
|
||||
'ORDUPD',
|
||||
v_opdrkey,
|
||||
sender,
|
||||
NULL,
|
||||
'Status Valuemation: '
|
||||
|| v_kenmstatusoms_cur
|
||||
|| ' --> '
|
||||
|| v_kenmstatusoms); -- # voorkomt notificatie
|
||||
ELSE
|
||||
v_errormsg :=
|
||||
'(0x436)' || v_mldkey || psubject || v_actie;
|
||||
END IF;
|
||||
END IF;
|
||||
|
||||
IF v_kenmstatusper_cur = 'leeg'
|
||||
THEN
|
||||
v_errormsg :=
|
||||
'(0x440)' || v_mldkey || psubject || v_actie;
|
||||
|
||||
INSERT INTO mld_kenmerkopdr (mld_opdr_key,
|
||||
mld_kenmerk_key,
|
||||
mld_kenmerkopdr_waarde)
|
||||
VALUES (v_opdrkey,
|
||||
623,
|
||||
TO_CHAR (SYSDATE,
|
||||
'DD-MM-YYYY HH24:MI:SS')) -- Kenmerk 'Status per'
|
||||
RETURNING mld_kenmerkopdr_waarde
|
||||
INTO v_kenmstatusper;
|
||||
|
||||
fac.trackaction (
|
||||
'ORDUPD',
|
||||
v_opdrkey,
|
||||
sender,
|
||||
NULL,
|
||||
'Status per: leeg --> ' || v_kenmstatusper); -- # voorkomt notificatie
|
||||
ELSE
|
||||
v_errormsg :=
|
||||
'(0x441)' || v_mldkey || psubject || v_actie;
|
||||
|
||||
UPDATE mld_kenmerkopdr
|
||||
SET mld_kenmerkopdr_waarde =
|
||||
TO_CHAR (SYSDATE, 'DD-MM-YYYY HH24:MI:SS')
|
||||
WHERE mld_opdr_key = v_opdrkey
|
||||
AND mld_kenmerk_key = 623
|
||||
AND mld_kenmerkopdr_verwijder IS NULL
|
||||
RETURNING mld_kenmerkopdr_waarde
|
||||
INTO v_kenmstatusper;
|
||||
|
||||
fac.trackaction (
|
||||
'ORDUPD',
|
||||
v_opdrkey,
|
||||
sender,
|
||||
NULL,
|
||||
'Status per:'
|
||||
|| v_kenmstatusper_cur
|
||||
|| ' --> '
|
||||
|| v_kenmstatusper); -- # voorkomt notificatie
|
||||
END IF;
|
||||
|
||||
-- Als er een opdracht_key gevonden kan worden, dan ook de body als notitie meenemen
|
||||
v_errormsg :=
|
||||
'(0x442)' || v_mldkey || psubject || v_actie;
|
||||
|
||||
INSERT INTO mld_opdr_note (mld_opdr_key,
|
||||
mld_opdr_note_omschrijving,
|
||||
prs_perslid_key)
|
||||
VALUES (v_opdrkey,
|
||||
SUBSTR (
|
||||
psubject || CHR (13) || CHR (10)
|
||||
|| REPLACE (
|
||||
SUBSTR (
|
||||
pbody,
|
||||
1,
|
||||
4000 - (LENGTH (psubject) + 2)),
|
||||
CHR (13)
|
||||
|| CHR (10)
|
||||
|| CHR (13)
|
||||
|| CHR (10),
|
||||
CHR (13) || CHR (10)),
|
||||
1,
|
||||
4000), -- Verwijder onnodige witregels
|
||||
sender);
|
||||
|
||||
fac.trackaction ('ORDUPD',
|
||||
v_opdrkey,
|
||||
sender,
|
||||
NULL,
|
||||
'#Notitie toegevoegd vanuit e-mail'); -- # voorkomt notificatie
|
||||
END IF;
|
||||
ELSE
|
||||
fac.writelog (
|
||||
'PROCESSEMAIL',
|
||||
'E',
|
||||
'Melding kan niet bijgewerkt worden, onbekende opdrachtkey'
|
||||
|| pfrom
|
||||
|| '['
|
||||
|| v_errormsg
|
||||
|| ']',
|
||||
'OTHERS (error '
|
||||
|| SQLCODE
|
||||
|| '/'
|
||||
|| SUBSTR (SQLERRM, 1, 100)
|
||||
|| ')');
|
||||
END IF;
|
||||
|
||||
--Hieronder de afhandeling van het bericht wanneer de melding is opgelost in Valuemation.
|
||||
IF v_actie = 'ORDAFM'
|
||||
THEN
|
||||
v_errormsg := '(0x450)' || v_mldkey || psubject || v_actie;
|
||||
v_vmnr :=
|
||||
SUBSTR (REGEXP_REPLACE (psubject, '[^0-9]', ''), 1, 12);
|
||||
|
||||
IF v_opdrkey IS NOT NULL
|
||||
THEN
|
||||
--Normaal zouden we het ticketnummer vanuit Valuemation al moeten hebben vanuit confirmationbericht. Maar als dit bericht niet goed ontvangen is, dan proberen we het ticketnummer alsnog te vullen
|
||||
IF v_vmnr IS NOT NULL AND v_opdrkey IS NOT NULL
|
||||
THEN
|
||||
UPDATE mld_opdr
|
||||
SET mld_opdr_externnr = v_vmnr
|
||||
WHERE mld_opdr_key = v_opdrkey
|
||||
AND mld_opdr_externnr IS NULL;
|
||||
|
||||
fac.trackaction (
|
||||
'ORDUPD',
|
||||
v_opdrkey,
|
||||
sender,
|
||||
NULL,
|
||||
'#Valuemation nr vanuit confirmationbericht: --> '
|
||||
|| v_vmnr); -- # voorkomt notificatie
|
||||
ELSE
|
||||
fac.writelog (
|
||||
'PROCESSEMAIL',
|
||||
'E',
|
||||
'Valuemation nr kon niet worden gevuld:'
|
||||
|| pfrom
|
||||
|| '['
|
||||
|| v_errormsg
|
||||
|| v_vmnr
|
||||
|| ']',
|
||||
'OTHERS (error '
|
||||
|| SQLCODE
|
||||
|| '/'
|
||||
|| SUBSTR (SQLERRM, 1, 100)
|
||||
|| ')');
|
||||
END IF;
|
||||
|
||||
UPDATE mld_opdr
|
||||
SET mld_statusopdr_key = 6, -- Afgemeld
|
||||
mld_opdr_opmerking =
|
||||
SUBSTR (
|
||||
psubject || CHR (13) || CHR (10)
|
||||
|| REPLACE (
|
||||
SUBSTR (
|
||||
pbody,
|
||||
1,
|
||||
4000 - (LENGTH (psubject) + 2)),
|
||||
CHR (13)
|
||||
|| CHR (10)
|
||||
|| CHR (13)
|
||||
|| CHR (10),
|
||||
CHR (13) || CHR (10)),
|
||||
1,
|
||||
4000) -- Verwijder onnodige witregels
|
||||
WHERE mld_opdr_key = v_opdrkey;
|
||||
|
||||
fac.trackaction ('ORDAFM',
|
||||
v_opdrkey,
|
||||
sender,
|
||||
NULL,
|
||||
'Melding gereed gemeld in Valuemation'); -- # voorkomt notificatie
|
||||
|
||||
INSERT INTO mld_opdr_note (mld_opdr_key,
|
||||
mld_opdr_note_omschrijving,
|
||||
prs_perslid_key)
|
||||
VALUES (v_opdrkey,
|
||||
SUBSTR (
|
||||
psubject || CHR (13) || CHR (10)
|
||||
|| REPLACE (
|
||||
SUBSTR (
|
||||
pbody,
|
||||
1,
|
||||
4000 - (LENGTH (psubject) + 2)),
|
||||
CHR (13)
|
||||
|| CHR (10)
|
||||
|| CHR (13)
|
||||
|| CHR (10),
|
||||
CHR (13) || CHR (10)),
|
||||
1,
|
||||
4000), -- Verwijder onnodige witregels
|
||||
sender);
|
||||
|
||||
fac.trackaction ('ORDUPD',
|
||||
v_opdrkey,
|
||||
sender,
|
||||
NULL,
|
||||
'#Notitie toegevoegd vanuit e-mail'); -- # voorkomt notificatie
|
||||
ELSE
|
||||
fac.writelog (
|
||||
'PROCESSEMAIL',
|
||||
'E',
|
||||
'Melding kan niet geaccepteerd worden, onbekende opdrachtkey'
|
||||
|| pfrom
|
||||
|| '['
|
||||
|| v_errormsg
|
||||
|| ']',
|
||||
'OTHERS (error '
|
||||
|| SQLCODE
|
||||
|| '/'
|
||||
|| SUBSTR (SQLERRM, 1, 100)
|
||||
|| ')');
|
||||
END IF;
|
||||
END IF;
|
||||
END IF;
|
||||
END;
|
||||
ELSE
|
||||
INSERT INTO fac_result (fac_result_sessionid,
|
||||
fac_result_naam,
|
||||
fac_result_waarde)
|
||||
VALUES (psessionid, 'maillog - geen pto herkend', v_errormsg);
|
||||
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
|
||||
@@ -258,6 +871,117 @@ EXCEPTION
|
||||
|| pfrom
|
||||
|| '['
|
||||
|| v_errormsg
|
||||
|| v_mldkey
|
||||
|| psubject
|
||||
|| v_actie
|
||||
|| ']',
|
||||
'OTHERS (error '
|
||||
|| SQLCODE
|
||||
|| '/'
|
||||
|| SUBSTR (SQLERRM, 1, 100)
|
||||
|| ')');
|
||||
END;
|
||||
/
|
||||
|
||||
CREATE OR REPLACE PROCEDURE maas_export_valuemation (
|
||||
p_applname IN VARCHAR2,
|
||||
p_applrun IN VARCHAR2,
|
||||
p_filedir IN VARCHAR2,
|
||||
p_filename IN VARCHAR2)
|
||||
AS
|
||||
oracle_err_num NUMBER;
|
||||
oracle_err_mes VARCHAR2 (200);
|
||||
v_errorhint VARCHAR2 (100);
|
||||
|
||||
-- Dit haalt het externnummer op van een opdrachtkenmerk indien externnr bij de melding nog leeg is
|
||||
CURSOR sendagain
|
||||
IS
|
||||
SELECT DISTINCT
|
||||
m.mld_melding_key,
|
||||
o.mld_opdr_key,
|
||||
o.mld_opdr_externnr AS externnr
|
||||
FROM mld_melding m,
|
||||
mld_opdr o,
|
||||
mld_kenmerkopdr ko,
|
||||
mld_kenmerk km,
|
||||
mld_srtkenmerk skm
|
||||
WHERE m.mld_melding_key = o.mld_melding_key
|
||||
AND o.mld_typeopdr_key = 481 --Opdrachttype Aareon.
|
||||
AND o.mld_opdr_externnr IS NOT NULL
|
||||
AND o.mld_opdr_key = ko.mld_opdr_key
|
||||
AND km.mld_kenmerk_key = ko.mld_kenmerk_key
|
||||
AND skm.mld_srtkenmerk_key = km.mld_srtkenmerk_key
|
||||
AND skm.mld_srtkenmerk_key = 421 --Kenmerksoort 'Opnieuw versturen' (checkbox)
|
||||
AND o.mld_statusopdr_key NOT IN (1, 6, 7, 9) --Afgewezen, afgemeld, verwerkt, afgerond
|
||||
AND ko.mld_kenmerkopdr_verwijder IS NULL;
|
||||
|
||||
|
||||
CURSOR kenmerken
|
||||
IS
|
||||
SELECT ko.mld_kenmerkopdr_key AS kmkey
|
||||
FROM mld_melding m,
|
||||
mld_opdr o,
|
||||
mld_kenmerkopdr ko,
|
||||
mld_kenmerk km,
|
||||
mld_srtkenmerk skm
|
||||
WHERE m.mld_melding_key = o.mld_melding_key
|
||||
AND o.mld_typeopdr_key = 481 --Opdrachttype Aareon.
|
||||
AND o.mld_opdr_externnr IS NOT NULL
|
||||
AND o.mld_opdr_key = ko.mld_opdr_key
|
||||
AND km.mld_kenmerk_key = ko.mld_kenmerk_key
|
||||
AND skm.mld_srtkenmerk_key = km.mld_srtkenmerk_key
|
||||
AND skm.mld_srtkenmerk_key IN (381, 401, 421) --Kenmerksoorten Status Valuemation, Status per en Opnieuw versturen'
|
||||
AND o.mld_statusopdr_key NOT IN (1, 6, 7, 9); --Afgewezen, afgemeld, verwerkt, afgerond;
|
||||
BEGIN
|
||||
v_errorhint := 'init';
|
||||
|
||||
-- We zetten de opdracht opnieuw in de wachtrij voor putorder.
|
||||
-- Ook halen we de kenmerken leeg mbt de status in Valuemation (3 stuks).
|
||||
FOR rec IN sendagain
|
||||
LOOP
|
||||
BEGIN
|
||||
v_errorhint :=
|
||||
'Opdracht opnieuw klaar zetten voor verzenden '
|
||||
|| rec.mld_opdr_key;
|
||||
|
||||
-- Eerst zetten we de opdracht opnieuw klaar om te verzenden
|
||||
UPDATE mld_opdr
|
||||
SET mld_opdr_teverzenden = 2, mld_opdr_verzonden = NULL
|
||||
WHERE mld_opdr_key = rec.mld_opdr_key;
|
||||
|
||||
--Daarna legen we de kenmerken bij de opdracht die we opnieuw klaar zetten om te verzenden
|
||||
|
||||
|
||||
FOR rec1 IN kenmerken
|
||||
LOOP
|
||||
BEGIN
|
||||
v_errorhint := 'Kenmerken legen ' || rec.mld_opdr_key;
|
||||
|
||||
UPDATE mld_kenmerkopdr
|
||||
SET mld_kenmerkopdr_verwijder = SYSDATE
|
||||
WHERE mld_kenmerkopdr_key = rec1.kmkey
|
||||
AND mld_kenmerkopdr_key = rec.mld_opdr_key;
|
||||
END;
|
||||
END LOOP;
|
||||
|
||||
fac.trackaction (
|
||||
'ORDUPD',
|
||||
rec.mld_opdr_key,
|
||||
NULL,
|
||||
NULL,
|
||||
'Opdracht opnieuw klaarzetten voor verzending '
|
||||
|| rec.mld_opdr_key);
|
||||
END;
|
||||
END LOOP;
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
fac.writelog (
|
||||
'EXP_VALUEMATION',
|
||||
'E',
|
||||
'Export tbv opnieuw klaarzetten opdrachten'
|
||||
|| '['
|
||||
|| v_errorhint
|
||||
|| ']',
|
||||
'OTHERS (error '
|
||||
|| SQLCODE
|
||||
|
||||
Reference in New Issue
Block a user