1568 lines
63 KiB
SQL
1568 lines
63 KiB
SQL
-- Script containing customer specific configuration sql statements for MAASDELTA
|
|
-- $Revision$
|
|
-- $Id$
|
|
|
|
DEFINE thisfile = 'MAAS.SQL'
|
|
DEFINE dbuser = '^MAAS'
|
|
DEFINE custid = 'MAAS'
|
|
|
|
SET ECHO ON
|
|
SET DEFINE ON
|
|
COLUMN fcltlogfile NEW_VALUE fcltlogfile NOPRINT;
|
|
WHENEVER SQLERROR EXIT;
|
|
SELECT adm.scriptspoolfile('&dbuser', '&thisfile') AS fcltlogfile FROM DUAL;
|
|
WHENEVER SQLERROR CONTINUE;
|
|
SPOOL &fcltlogfile
|
|
SET DEFINE OFF
|
|
|
|
------ payload begin ------
|
|
|
|
CREATE OR REPLACE VIEW maas_v_noti_lgstartdvb
|
|
(
|
|
code,
|
|
sender,
|
|
receiver,
|
|
text,
|
|
key,
|
|
xkey
|
|
)
|
|
AS
|
|
SELECT DISTINCT 'CUST01' AS code,
|
|
NULL,
|
|
leidinggevende, -- Persoon "_Schoonmaak_Van_Vliet", voor de emailadressen
|
|
'Notificatie start indiensttreding ' || naam,
|
|
mld_melding_key,
|
|
NULL
|
|
FROM (SELECT m.mld_melding_key,
|
|
(SELECT mld_kenmerkmelding_waarde
|
|
FROM mld_kenmerkmelding km
|
|
WHERE m.mld_melding_key = km.mld_melding_key
|
|
AND mld_kenmerk_key = 22)
|
|
AS naam, --kenmerk_key voor kenmerk 'Volledige naam'
|
|
(SELECT mld_kenmerkmelding_waarde
|
|
FROM mld_kenmerkmelding km
|
|
WHERE m.mld_melding_key = km.mld_melding_key
|
|
AND mld_kenmerk_key = 343)
|
|
AS leidinggevende --kenmerk_key voor kenmerk 'leidinggevende'
|
|
FROM mld_melding m
|
|
WHERE TRUNC (m.mld_melding_datum) = TRUNC (SYSDATE)-1
|
|
AND m.mld_stdmelding_key = 262);
|
|
|
|
CREATE OR REPLACE VIEW maas_v_rap_inlog_als
|
|
(
|
|
trackingdatum,
|
|
datum,
|
|
tijdstip,
|
|
trackingomschrijving,
|
|
key_als,
|
|
inloggen_als,
|
|
key_door,
|
|
inloggen_door
|
|
)
|
|
AS
|
|
SELECT t.fac_tracking_datum, TRUNC (t.fac_tracking_datum),
|
|
TO_CHAR (t.fac_tracking_datum, 'hh24:mm:ss'),
|
|
t.fac_tracking_oms,
|
|
t.fac_tracking_refkey,
|
|
als.prs_perslid_naam_friendly AS als,
|
|
t.prs_perslid_key,
|
|
door.prs_perslid_naam_friendly AS door
|
|
FROM fac_tracking t,
|
|
fac_srtnotificatie sn,
|
|
prs_v_perslid_fullnames als,
|
|
prs_v_perslid_fullnames door
|
|
WHERE t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
|
|
AND t.fac_srtnotificatie_key = 101 -- PRSLOG
|
|
AND als.prs_perslid_key = t.fac_tracking_refkey
|
|
AND door.prs_perslid_key = t.prs_perslid_key
|
|
AND (t.fac_tracking_oms LIKE '%INLOGGEN ALS%'
|
|
OR t.fac_tracking_oms LIKE '%Inloggen door%')
|
|
ORDER BY t.fac_tracking_key DESC;
|
|
|
|
CREATE OR REPLACE FORCE VIEW maas_v_noti_inlogals
|
|
(
|
|
code,
|
|
sender,
|
|
receiver,
|
|
text,
|
|
key,
|
|
xkey
|
|
)
|
|
AS
|
|
SELECT DISTINCT
|
|
'CUST02' AS code,
|
|
NULL,
|
|
key_als,
|
|
inloggen_door || ' heeft op uw account in Facilitor ingelogd',
|
|
key_door,
|
|
NULL
|
|
FROM maas_v_rap_inlog_als
|
|
WHERE key_als <> key_door
|
|
AND key_door <> 3 -- Facilitor, inlogpogingen vanuit Facilitor hoeven niet genotificeerd te worden
|
|
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;
|
|
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_opdrextnr mld_melding.mld_melding_externnr%TYPE; --Huidig externnr
|
|
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_mldkey || psubject || v_actie;
|
|
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
|
|
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 gecorrigeerd naar een workflowstartmelding.
|
|
|
|
-- Obv onderwerpveld bepalen welke stdmelding aangemaakt moet worden.
|
|
CASE
|
|
WHEN UPPER (psubject) LIKE '%NIEUWE MEDEWERKER%'
|
|
THEN
|
|
stdmelding := 501;
|
|
WHEN UPPER (psubject) LIKE '%NIEUWE STAGIAIR%'
|
|
THEN
|
|
stdmelding := 501;
|
|
WHEN UPPER (psubject) LIKE '%NIEUWE INLEENKRACHT%'
|
|
THEN
|
|
stdmelding := 501;
|
|
WHEN UPPER (psubject) LIKE '%UIT DIENST%'
|
|
THEN
|
|
stdmelding := 522;
|
|
WHEN UPPER (psubject) LIKE '%ANDERE FUNCTIE%'
|
|
THEN
|
|
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 gecorrigeerd naar een workflowstartmelding.
|
|
END CASE;
|
|
|
|
-- Hier maken we de melding aan.
|
|
BEGIN
|
|
v_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;
|
|
|
|
v_errormsg := '(0x147)' || v_mldkey || psubject || v_actie;
|
|
|
|
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.
|
|
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 (REGEXP_REPLACE (psubject, '[^0-9]', ''), 0, 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 (
|
|
SUBSTR (psubject,
|
|
INSTR (psubject, 'Facilitor opdracht:') + 19),
|
|
0),
|
|
'/')
|
|
+ 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 :=
|
|
'Aanvullende info gevraagd, wacht op uw reactie';
|
|
WHEN UPPER (SUBSTR (psubject, 0, 14)) LIKE '%AFSTEMMING NAV%'
|
|
THEN
|
|
v_actie := 'ORDUPD';
|
|
v_kenmstatusoms :=
|
|
'Telefonisch contact leggen mislukt, wacht op uw reactie';
|
|
WHEN UPPER (SUBSTR (psubject, LENGTH (psubject) - 11, 12)) LIKE
|
|
'%IS OPGELOST%'
|
|
THEN
|
|
v_actie := 'ORDGOE';
|
|
v_kenmstatusoms :=
|
|
'Oplossing is aangereikt, bij akkoord kan de opdracht door u afgemeld worden. Akkoord graag ook versturen naar Valuemation via een opmerking.';
|
|
WHEN UPPER (SUBSTR (psubject, LENGTH (psubject) - 45, 46)) LIKE
|
|
'%IN VERBAND MET HET UITBLIJVEN VAN EEN REACTIE%'
|
|
THEN
|
|
v_actie := 'ORDAFM';
|
|
WHEN UPPER (SUBSTR (psubject, LENGTH (psubject) - 13, 14)) LIKE
|
|
'%IS BIJGEWERKT%'
|
|
THEN
|
|
v_actie := 'ORDUPD';
|
|
v_kenmstatusoms := 'De melding is bijgewerkt.';
|
|
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
|
|
SELECT mld_opdr_externnr
|
|
INTO v_opdrextnr
|
|
FROM mld_opdr
|
|
WHERE mld_opdr_key = v_opdrkey;
|
|
|
|
UPDATE mld_opdr
|
|
SET mld_opdr_externnr = v_vmnr
|
|
WHERE mld_opdr_key = v_opdrkey;
|
|
|
|
--Enkel tracking mbt nieuw (of aanpassing Externnr) toevoegen als er ook iets wijzigt.
|
|
IF v_opdrextnr <> v_vmnr
|
|
THEN
|
|
fac.trackaction (
|
|
'ORDUPD',
|
|
v_opdrkey,
|
|
sender,
|
|
NULL,
|
|
'#Valuemation nr vanuit confirmationbericht: '
|
|
|| v_opdrextnr
|
|
|| ' --> '
|
|
|| v_vmnr); -- # voorkomt notificatie
|
|
END IF;
|
|
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;
|
|
|
|
--Enkel tracking mbt nieuw (of aanpassing Externnr) toevoegen als er ook iets wijzigt.
|
|
IF v_opdrextnr <> v_vmnr
|
|
THEN
|
|
fac.trackaction (
|
|
'ORDUPD',
|
|
v_opdrkey,
|
|
sender,
|
|
NULL,
|
|
'#Valuemation nr vanuit confirmationbericht: '
|
|
|| v_opdrextnr
|
|
|| ' --> '
|
|
|| v_vmnr); -- # voorkomt notificatie
|
|
END IF; -- # 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 --Status geaccepteerd
|
|
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;
|
|
|
|
--Enkel tracking mbt nieuw (of aanpassing Externnr) toevoegen als er ook iets wijzigt.
|
|
IF v_opdrextnr <> v_vmnr
|
|
THEN
|
|
fac.trackaction (
|
|
'ORDUPD',
|
|
v_opdrkey,
|
|
sender,
|
|
NULL,
|
|
'#Valuemation nr vanuit confirmationbericht: '
|
|
|| v_opdrextnr
|
|
|| ' --> '
|
|
|| v_vmnr); -- # voorkomt notificatie
|
|
END IF;
|
|
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.
|
|
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 -- Geaccepteerd
|
|
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 = 602 -- Kenmerk 'Status valuemation' (601 in ACCP)
|
|
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 = 603 -- Kenmerk 'Status per' (623 in ACCP)
|
|
AND mld_opdr_key = v_opdrkey
|
|
AND mld_kenmerkopdr_verwijder IS NULL),
|
|
'leeg')
|
|
INTO v_kenmstatusper_cur
|
|
FROM DUAL;
|
|
|
|
-- Als de kenmerken 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, 602, 'Wacht op uw reactie'); -- Kenmerk 'Status valuemation' (601 in ACCP)
|
|
|
|
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 = 602 -- Kenmerk 'Status valuemation' (601 in ACCP)
|
|
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 :=
|
|
'(0x437)' || v_mldkey || psubject || v_actie;
|
|
|
|
INSERT INTO mld_kenmerkopdr (mld_opdr_key,
|
|
mld_kenmerk_key,
|
|
mld_kenmerkopdr_waarde)
|
|
VALUES (v_opdrkey,
|
|
603, -- -- Kenmerk 'Status per' (623 in ACCP)
|
|
TO_CHAR (SYSDATE,
|
|
'DD-MM-YYYY HH24:MI:SS'))
|
|
RETURNING mld_kenmerkopdr_waarde
|
|
INTO v_kenmstatusper;
|
|
|
|
fac.trackaction (
|
|
'ORDUPD',
|
|
v_opdrkey,
|
|
sender,
|
|
NULL,
|
|
'Status per: leeg --> ' || v_kenmstatusper); -- # voorkomt notificatie
|
|
ELSE
|
|
v_errormsg :=
|
|
'(0x438)' || 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 = 603 -- Kenmerk 'Status per' (623 in ACCP)
|
|
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 :=
|
|
'(0x439)' || 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 vanuit Valuemation ter goedkeuring in Facilitor wordt aangeboden.
|
|
--Op termijn ontvangen we hopelijk nog 2 url's in fac_result in de html-body om de oplossing te accepteren of af te wijzen.
|
|
IF v_actie = 'ORDGOE'
|
|
THEN
|
|
v_errormsg := '(0x440)' || v_mldkey || psubject || v_actie;
|
|
v_vmnr :=
|
|
SUBSTR (REGEXP_REPLACE (psubject, '[^0-9]', ''), 1, 12);
|
|
|
|
|
|
IF v_opdrkey IS NOT NULL
|
|
THEN
|
|
v_errormsg :=
|
|
'(0x441)' || 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 :=
|
|
'(0x442)' || 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;
|
|
|
|
--Enkel tracking mbt nieuw (of aanpassing Externnr) toevoegen als er ook iets wijzigt.
|
|
IF v_opdrextnr <> v_vmnr
|
|
THEN
|
|
fac.trackaction (
|
|
'ORDUPD',
|
|
v_opdrkey,
|
|
sender,
|
|
NULL,
|
|
'#Valuemation nr vanuit confirmationbericht: '
|
|
|| v_opdrextnr
|
|
|| ' --> '
|
|
|| v_vmnr); -- # voorkomt notificatie
|
|
END IF;
|
|
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.
|
|
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 :=
|
|
'(0x443)' || v_mldkey || psubject || v_actie;
|
|
|
|
UPDATE mld_opdr
|
|
SET mld_statusopdr_key = 8 -- Geaccepteerd
|
|
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 = 602 -- Kenmerk 'Status valuemation' (601 in ACCP)
|
|
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 = 603 -- Kenmerk 'Status per' (623 in ACCP)
|
|
AND mld_opdr_key = v_opdrkey
|
|
AND mld_kenmerkopdr_verwijder IS NULL),
|
|
'leeg')
|
|
INTO v_kenmstatusper_cur
|
|
FROM DUAL;
|
|
|
|
-- Als de kenmerken nog niet bestaan, dan toevoegen bij de opdracht, anders updaten indien gewijzigd.
|
|
IF v_kenmstatusoms_cur = 'leeg'
|
|
THEN
|
|
v_errormsg :=
|
|
'(0x444)' || v_mldkey || psubject || v_actie;
|
|
|
|
INSERT INTO mld_kenmerkopdr (mld_opdr_key,
|
|
mld_kenmerk_key,
|
|
mld_kenmerkopdr_waarde)
|
|
VALUES (v_opdrkey, 602, 'Oplossing is aangereikt'); -- Kenmerk 'Status valuemation' (601 in ACCP)
|
|
|
|
fac.trackaction (
|
|
'ORDUPD',
|
|
v_opdrkey,
|
|
sender,
|
|
NULL,
|
|
'Status Valuemation: leeg --> ' || v_kenmstatusoms); -- # voorkomt notificatie
|
|
ELSE
|
|
v_errormsg :=
|
|
'(0x445)' || 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 = 602 -- Kenmerk 'Status valuemation' (601 in ACCP)
|
|
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 :=
|
|
'(0x446)' || v_mldkey || psubject || v_actie;
|
|
END IF;
|
|
END IF;
|
|
|
|
IF v_kenmstatusper_cur = 'leeg'
|
|
THEN
|
|
v_errormsg :=
|
|
'(0x447)' || v_mldkey || psubject || v_actie;
|
|
|
|
INSERT INTO mld_kenmerkopdr (mld_opdr_key,
|
|
mld_kenmerk_key,
|
|
mld_kenmerkopdr_waarde)
|
|
VALUES (v_opdrkey,
|
|
603, -- -- Kenmerk 'Status per' (623 in ACCP)
|
|
TO_CHAR (SYSDATE,
|
|
'DD-MM-YYYY HH24:MI:SS'))
|
|
RETURNING mld_kenmerkopdr_waarde
|
|
INTO v_kenmstatusper;
|
|
|
|
fac.trackaction (
|
|
'ORDUPD',
|
|
v_opdrkey,
|
|
sender,
|
|
NULL,
|
|
'Status per: leeg --> ' || v_kenmstatusper); -- # voorkomt notificatie
|
|
ELSE
|
|
v_errormsg :=
|
|
'(0x448)' || 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 = 603 -- Kenmerk 'Status per' (623 in ACCP)
|
|
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 afhandeling meenemen
|
|
v_errormsg :=
|
|
'(0x449)' || v_mldkey || psubject || v_actie;
|
|
|
|
UPDATE mld_opdr
|
|
SET mld_opdr_opmerking =
|
|
SUBSTR (
|
|
REPLACE (
|
|
SUBSTR (pbody, 1, 4000),
|
|
CHR (13)
|
|
|| CHR (10)
|
|
|| CHR (13)
|
|
|| CHR (10),
|
|
CHR (13) || CHR (10)),
|
|
1,
|
|
4000)
|
|
WHERE mld_opdr_key = v_opdrkey;
|
|
|
|
fac.trackaction ('ORDUPD',
|
|
v_opdrkey,
|
|
sender,
|
|
NULL,
|
|
'Oplossing is aangereikt');
|
|
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;
|
|
|
|
--Enkel tracking mbt nieuw (of aanpassing Externnr) toevoegen als er ook iets wijzigt.
|
|
IF v_opdrextnr <> v_vmnr
|
|
THEN
|
|
fac.trackaction (
|
|
'ORDUPD',
|
|
v_opdrkey,
|
|
sender,
|
|
NULL,
|
|
'#Valuemation nr vanuit confirmationbericht: '
|
|
|| v_opdrextnr
|
|
|| ' --> '
|
|
|| v_vmnr); -- # voorkomt notificatie
|
|
END IF;
|
|
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 ('ORDUPD',
|
|
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;
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
INSERT INTO fac_result (fac_result_sessionid,
|
|
fac_result_naam,
|
|
fac_result_waarde)
|
|
VALUES (psessionid, 'maillog', v_errormsg);
|
|
|
|
fac.writelog (
|
|
'PROCESSEMAIL',
|
|
'E',
|
|
'Mail kon niet ingelezen worden afzender:'
|
|
|| 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,
|
|
to_char(m.mld_melding_key || '/' || o.mld_opdr_bedrijfopdr_volgnr) as opdrachtnummer,
|
|
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 = 383 --Kenmerksoort 'Opnieuw versturen' (checkbox) (421 in ACCP)
|
|
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, 382, 383) --Kenmerksoorten Status Valuemation, Status per en Opnieuw versturen' (resp. 381, 401, 421 in ACCP)
|
|
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_opdr_key = rec.mld_opdr_key;
|
|
END;
|
|
END LOOP;
|
|
|
|
fac.trackaction (
|
|
'ORDUPD',
|
|
rec.mld_opdr_key,
|
|
NULL,
|
|
NULL,
|
|
'Opdracht opnieuw klaarzetten voor verzending '
|
|
|| rec.opdrachtnummer);
|
|
END;
|
|
END LOOP;
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
fac.writelog (
|
|
'EXP_VALUEMATION',
|
|
'E',
|
|
'Export tbv opnieuw klaarzetten opdrachten'
|
|
|| '['
|
|
|| v_errorhint
|
|
|| ']',
|
|
'OTHERS (error '
|
|
|| SQLCODE
|
|
|| '/'
|
|
|| SUBSTR (SQLERRM, 1, 100)
|
|
|| ')');
|
|
END;
|
|
/
|
|
|
|
|
|
CREATE OR REPLACE FORCE VIEW maas_v_mldopdr
|
|
(
|
|
melding_key,
|
|
meldingnummer,
|
|
melding_start_key,
|
|
externnummer,
|
|
melding_regio,
|
|
melding_district,
|
|
melding_locatiecode,
|
|
melding_locatie,
|
|
melding_locatieplaats,
|
|
fclt_3d_locatie_key,
|
|
melding_gebouwcode,
|
|
melding_gebouw,
|
|
melding_verdieping,
|
|
melding_ruimtenr,
|
|
melding_ruimte,
|
|
melding_ordernr,
|
|
kostensoortgroep,
|
|
kostensoort,
|
|
kostenplaats,
|
|
kostenplaats_oms,
|
|
melder,
|
|
melder_key,
|
|
afdeling,
|
|
afdeling_omschrijving,
|
|
fclt_3d_afdeling_key,
|
|
bedrijf_key,
|
|
invoerder,
|
|
meldbron,
|
|
soortmelding,
|
|
fclt_3d_discipline_key,
|
|
productgroep,
|
|
subproductgroep,
|
|
behandelgroep,
|
|
behandelaar,
|
|
behandelaar_key,
|
|
subproductgroepgroep,
|
|
fclt_3d_discipline2_key,
|
|
actieve_behandelgroep,
|
|
actieve_behandelaar_key,
|
|
actieve_behandelaar,
|
|
melding_status,
|
|
sla_nvt,
|
|
sla_werkdgn,
|
|
sla_werkuren,
|
|
sla_respijtdgn,
|
|
sla_respijturen,
|
|
sla_accptdgn,
|
|
sla_accpturen,
|
|
plan_uitvoertijd_sla,
|
|
melding_datum,
|
|
melding_einddatum,
|
|
melding_einddatum_std,
|
|
melding_acceptdatum,
|
|
melding_afgemeld,
|
|
melding_accepted,
|
|
doorlooptijd_werkdgn,
|
|
doorlooptijd_werkuren,
|
|
onderwerp,
|
|
vomschrijving,
|
|
melding_opmerking,
|
|
prioriteit,
|
|
prioriteittxt,
|
|
rating,
|
|
rating_opmerking,
|
|
bolletje,
|
|
actiecode,
|
|
accept_sla_dagen,
|
|
accept_sla_uren,
|
|
uitvoering_sla_dagen,
|
|
uitvoering_sla_uren,
|
|
afspraak_sla_dagen,
|
|
afspraak_sla_uren,
|
|
accept_sla_optijd,
|
|
uitvoering_sla_optijd,
|
|
afspraak_sla_optijd,
|
|
selfservice,
|
|
opdracht_key,
|
|
opdracht_nummer,
|
|
opdracht_regio,
|
|
opdracht_district,
|
|
opdracht_locatie_code,
|
|
opdracht_locatie,
|
|
opdracht_locatieplaats,
|
|
opdracht_gebouwcode,
|
|
opdracht_gebouw,
|
|
opdracht_verdieping,
|
|
opdracht_ruimtenr,
|
|
opdracht_ruimte,
|
|
opdracht_kostenplaats,
|
|
opdracht_kostenplaats_oms,
|
|
opdracht_type,
|
|
opdracht_volgnummer,
|
|
opdracht_status,
|
|
opdracht_duur_gepland,
|
|
opdracht_datum,
|
|
opdracht_einddatum,
|
|
opdracht_plandatum,
|
|
opdracht_acceptdatum,
|
|
opdracht_afgemeld,
|
|
opdracht_doorlooptijd,
|
|
opdracht_accepttijd,
|
|
opdracht_omschrijving,
|
|
opdracht_opmerking,
|
|
opdracht_uitvoerende,
|
|
opdracht_uitvoerende_contact,
|
|
opdracht_behandelaar,
|
|
opdracht_contract,
|
|
opdracht_contract_versie,
|
|
opdracht_contactpersoon,
|
|
opdracht_uren,
|
|
opdracht_correctie,
|
|
opdracht_materiaal,
|
|
opdracht_uurtarief,
|
|
opdracht_kosten,
|
|
opdracht_verstrektdatum,
|
|
opdracht_lev_doorloopuren,
|
|
opdracht_lev_doorloopdagen,
|
|
status_valuemation,
|
|
status_per
|
|
)
|
|
AS
|
|
SELECT melding_key,
|
|
meldingnummer,
|
|
melding_start_key,
|
|
mo.mld_opdr_externnr,
|
|
melding_regio,
|
|
melding_district,
|
|
melding_locatiecode,
|
|
melding_locatie,
|
|
melding_locatieplaats,
|
|
fclt_3d_locatie_key,
|
|
melding_gebouwcode,
|
|
melding_gebouw,
|
|
melding_verdieping,
|
|
melding_ruimtenr,
|
|
melding_ruimte,
|
|
melding_ordernr,
|
|
kostensoortgroep,
|
|
kostensoort,
|
|
kostenplaats,
|
|
kostenplaats_oms,
|
|
melder,
|
|
melder_key,
|
|
afdeling,
|
|
afdeling_omschrijving,
|
|
fclt_3d_afdeling_key,
|
|
bedrijf_key,
|
|
invoerder,
|
|
meldbron,
|
|
soortmelding,
|
|
fclt_3d_discipline_key,
|
|
productgroep,
|
|
subproductgroep,
|
|
behandelgroep,
|
|
behandelaar,
|
|
behandelaar_key,
|
|
subproductgroepgroep,
|
|
fclt_3d_discipline2_key,
|
|
actieve_behandelgroep,
|
|
actieve_behandelaar_key,
|
|
actieve_behandelaar,
|
|
melding_status,
|
|
sla_nvt,
|
|
sla_werkdgn,
|
|
sla_werkuren,
|
|
sla_respijtdgn,
|
|
sla_respijturen,
|
|
sla_accptdgn,
|
|
sla_accpturen,
|
|
plan_uitvoertijd_sla,
|
|
melding_datum,
|
|
melding_einddatum,
|
|
melding_einddatum_std,
|
|
melding_acceptdatum,
|
|
melding_afgemeld,
|
|
melding_accepted,
|
|
doorlooptijd_werkdgn,
|
|
doorlooptijd_werkuren,
|
|
onderwerp,
|
|
vomschrijving,
|
|
melding_opmerking,
|
|
prioriteit,
|
|
prioriteittxt,
|
|
rating,
|
|
rating_opmerking,
|
|
bolletje,
|
|
actiecode,
|
|
accept_sla_dagen,
|
|
accept_sla_uren,
|
|
uitvoering_sla_dagen,
|
|
uitvoering_sla_uren,
|
|
afspraak_sla_dagen,
|
|
afspraak_sla_uren,
|
|
accept_sla_optijd,
|
|
uitvoering_sla_optijd,
|
|
afspraak_sla_optijd,
|
|
selfservice,
|
|
opdracht_key,
|
|
opdracht_nummer,
|
|
opdracht_regio,
|
|
opdracht_district,
|
|
opdracht_locatie_code,
|
|
opdracht_locatie,
|
|
opdracht_locatieplaats,
|
|
opdracht_gebouwcode,
|
|
opdracht_gebouw,
|
|
opdracht_verdieping,
|
|
opdracht_ruimtenr,
|
|
opdracht_ruimte,
|
|
opdracht_kostenplaats,
|
|
opdracht_kostenplaats_oms,
|
|
opdracht_type,
|
|
opdracht_volgnummer,
|
|
opdracht_status,
|
|
opdracht_duur_gepland,
|
|
opdracht_datum,
|
|
opdracht_einddatum,
|
|
opdracht_plandatum,
|
|
opdracht_acceptdatum,
|
|
opdracht_afgemeld,
|
|
opdracht_doorlooptijd,
|
|
opdracht_accepttijd,
|
|
opdracht_omschrijving,
|
|
opdracht_opmerking,
|
|
opdracht_uitvoerende,
|
|
opdracht_uitvoerende_contact,
|
|
opdracht_behandelaar,
|
|
opdracht_contract,
|
|
opdracht_contract_versie,
|
|
opdracht_contactpersoon,
|
|
opdracht_uren,
|
|
opdracht_correctie,
|
|
opdracht_materiaal,
|
|
opdracht_uurtarief,
|
|
opdracht_kosten,
|
|
opdracht_verstrektdatum,
|
|
opdracht_lev_doorloopuren,
|
|
opdracht_lev_doorloopdagen,
|
|
(SELECT DISTINCT mld_kenmerkopdr_waarde
|
|
FROM mld_v_aanwezigkenmerkopdr km1,
|
|
mld_srtkenmerk sk,
|
|
mld_kenmerk km
|
|
WHERE km1.mld_opdr_key = opdracht_key
|
|
AND sk.mld_srtkenmerk_key = 381 --Status Valuemation
|
|
AND km.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
|
|
AND km.mld_kenmerk_key = km1.mld_kenmerk_key
|
|
AND km1.mld_kenmerkopdr_verwijder IS NULL)
|
|
AS status_valuemation,
|
|
(SELECT DISTINCT mld_kenmerkopdr_waarde
|
|
FROM mld_v_aanwezigkenmerkopdr km1,
|
|
mld_srtkenmerk sk,
|
|
mld_kenmerk km
|
|
WHERE km1.mld_opdr_key = opdracht_key
|
|
AND sk.mld_srtkenmerk_key = 382 --Status per
|
|
AND km.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
|
|
AND km.mld_kenmerk_key = km1.mld_kenmerk_key
|
|
AND km1.mld_kenmerkopdr_verwijder IS NULL)
|
|
AS status_per
|
|
FROM mld_v_udr_meldingopdracht, mld_opdr mo
|
|
WHERE mo.mld_opdr_key = opdracht_key AND opdracht_key IS NOT NULL;
|
|
|
|
CREATE OR REPLACE VIEW maas_v_ordafm_vm
|
|
(
|
|
code,
|
|
sender,
|
|
receiver,
|
|
text,
|
|
key,
|
|
xkey,
|
|
xemail,
|
|
xmobile
|
|
)
|
|
AS
|
|
SELECT 'CUST03',
|
|
NULL,
|
|
NULL,
|
|
'Facilitor opdracht:'
|
|
|| mo.mld_melding_key
|
|
|| '/'
|
|
|| mo.mld_opdr_bedrijfopdr_volgnr
|
|
|| ' - Valuemation:'
|
|
|| mo.mld_opdr_externnr
|
|
|| ' is in Facilitor afgemeld, oplossing akkoord',
|
|
mo.mld_opdr_key,
|
|
NULL,
|
|
'servicedesk-nl@aareon.com',
|
|
NULL
|
|
FROM mld_opdr mo, fac_tracking t, fac_srtnotificatie sn
|
|
WHERE mo.prs_perslid_key IS NOT NULL
|
|
AND t.fac_tracking_refkey = mo.mld_opdr_key
|
|
AND sn.fac_srtnotificatie_key = t.fac_srtnotificatie_key
|
|
AND sn.fac_srtnotificatie_code = 'ORDAFM'
|
|
AND mo.mld_typeopdr_key = 481 --Aareon
|
|
AND mo.mld_opdr_key >= 11 --Dit om een aantal testopdrachten niet onnodig te sturen.
|
|
AND mo.mld_opdr_key NOT IN
|
|
(SELECT t2.fac_tracking_refkey
|
|
FROM fac_tracking t2, fac_srtnotificatie sn2
|
|
WHERE sn2.fac_srtnotificatie_key =
|
|
t2.fac_srtnotificatie_key
|
|
AND sn2.fac_srtnotificatie_code = 'CUST03');
|
|
|
|
------ payload end ------
|
|
|
|
SET DEFINE OFF
|
|
BEGIN adm.systrackscriptId ('$Id$', 0); END;
|
|
/
|
|
|
|
COMMIT;
|
|
SET ECHO OFF
|
|
SPOOL OFF
|
|
SET DEFINE ON
|
|
PROMPT Logfile of this upgrade is: &fcltlogfile |