Files
Customer/MAAS/maas.sql
Sander Schepers 53712c53d0 MAAS#61281 Valuemation Maasdelta, verbeterde logging en automatische updates versturen
svn path=/Customer/trunk/; revision=51144
2021-04-29 08:19:39 +00:00

1878 lines
78 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);
v_vm_oplossing VARCHAR2 (4000);
v_vm_oplossing_cur VARCHAR2 (4000);
v_manager_email VARCHAR2 (4000);
v_manager_key prs_perslid.prs_perslid_key%TYPE;
v_lgkenmerk_key mld_kenmerk.mld_kenmerk_key%TYPE;
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.
v_manager_key := NULL; --Standaard nog geen manager bepaald, dat doen we later en dit halen we dan uit m_body
v_lgkenmerk_key := NULL; --Standaard nog geen kenmerk bepaald, dat doen we later
-- 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;
--We halen het emailadres en dan de key van de manager op uit de body (altijd eindigend op @maasdelta.nl). En in body staat 'Email manager: '
v_errormsg :=
'(0x146)' || v_mldkey || psubject || v_actie || 'Bepalen manager';
v_manager_email :=
SUBSTR (
m_body,
INSTR (m_body, 'Email manager:') + 15,
INSTR (SUBSTR (m_body, INSTR (m_body, 'Email manager:')), '@')
- 3);
BEGIN
SELECT MAX (prs_perslid_key)
INTO v_manager_key
FROM prs_perslid
WHERE UPPER (prs_perslid_email) = UPPER (v_manager_email)
AND prs_perslid_verwijder IS NULL;
END;
-- 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;
-- Bepalen kenmerk_key obv stdmelding
BEGIN
SELECT km.mld_kenmerk_key
INTO v_lgkenmerk_key
FROM mld_kenmerk km
WHERE km.mld_srtkenmerk_key = 341 -- Kenmerksoort Leidinggevenden
AND stdmelding = km.mld_stdmelding_key;
END;
v_errormsg :=
'(0x147)'
|| v_mldkey
|| psubject
|| v_actie
|| 'Invoeren kenmerk Leidinggevende/manager';
--Hier proberen we bij de zojuist aangemaakte melding het kenmerk 'Leidinggevende' te vullen met de prs_perslid_key die hoort bij het manager-emailadres uit de body
CASE
WHEN v_lgkenmerk_key IS NOT NULL
THEN
INSERT INTO mld_kenmerkmelding (mld_melding_key,
mld_kenmerk_key,
mld_kenmerkmelding_waarde)
VALUES (mldkey, v_lgkenmerk_key, v_manager_key);
END CASE;
v_errormsg := '(0x148)' || 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 := '(0x149)' || 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 via de link in Facilitor. Bij geen akkoord, dit graag aangeven via de portal van Valuemation.';
WHEN UPPER (SUBSTR (psubject, LENGTH (psubject) - 12, 13)) LIKE
'%ACCORDERING%'
THEN
v_actie := 'ORDOPL';
v_kenmstatusoms :=
'Oplossing is aangereikt, bij akkoord kan de opdracht door u afgemeld worden via de link in Facilitor.';
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 := '(0x361)' || v_mldkey || psubject;
fac.writelog (
'PROCESSEMAIL',
'E',
'Onbekende actie, mail van: '
|| 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;
--Tracking toevoegen (externnr)
fac.trackaction (
'ORDUPD',
v_opdrkey,
sender,
NULL,
'Valuemation nr vanuit confirmationbericht: '
|| v_opdrextnr
|| ' --> '
|| v_vmnr);
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 <> 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
-- HIER TOCH GEEN LOGGING, ACTIE MAG ANDERS ZIJN DAN ORDUPD. DIT CREEERT TEVEEL ONNODIGE LOGGING.
-- 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. 1 url wordt al geboden (zie actie ORDOPL hieronder)
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 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
-- HIER TOCH GEEN LOGGING, ACTIE MAG ANDERS ZIJN DAN ORDGOE. DIT CREEERT TEVEEL ONNODIGE LOGGING.
-- 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. Er wordt een kenmerk gevuld met een url naar VM om de oplossing te accorderen
--Deze actie ORDOPL komt als 2e email met de email die hoort bij actie ORDGOE. Een aantal handelingen worden hier dus niet (dubbel) gedaan (dat gebeurt al bij ORDGOE)
IF v_actie = 'ORDOPL'
THEN
v_errormsg := '(0x450)' || v_mldkey || psubject || v_actie;
v_vmnr :=
SUBSTR (REGEXP_REPLACE (psubject, '[^0-9]', ''), 1, 12);
SELECT SUBSTR (
SUBSTR (
fac_result_waarde,
(INSTR (
fac_result_waarde,
'https://support.aareon.com/vmwebprod/vmweb?task=runlink'))),
0,
INSTR (
SUBSTR (
fac_result_waarde,
(INSTR (
fac_result_waarde,
'https://support.aareon.com/vmwebprod/vmweb?task=runlink'))),
'"')
- 1)
INTO v_vm_oplossing
FROM fac_result
WHERE fac_result_naam = 'htmlbody'
AND fac_result_sessionid = psessionid;
IF v_opdrkey IS NOT NULL
THEN
v_errormsg :=
'(0x451)' || v_mldkey || psubject || v_actie;
-- Hieronder bepalen of de opdracht al het kenmerk gevuld heeft.
SELECT COALESCE (
(SELECT mld_kenmerkopdr_waarde
FROM mld_kenmerkopdr
WHERE mld_kenmerk_key = 801 -- Kenmerk 'Klik hier als de oplossing akkoord is'
AND mld_opdr_key = v_opdrkey
AND mld_kenmerkopdr_verwijder IS NULL),
'leeg')
INTO v_vm_oplossing_cur
FROM DUAL;
-- Als de kenmerken nog niet bestaan, dan toevoegen bij de opdracht, anders updaten indien gewijzigd.
IF v_vm_oplossing_cur = 'leeg'
THEN
v_errormsg :=
'(0x454)' || v_mldkey || psubject || v_actie;
INSERT INTO mld_kenmerkopdr (mld_opdr_key,
mld_kenmerk_key,
mld_kenmerkopdr_waarde)
VALUES (v_opdrkey, 801, v_vm_oplossing); -- Kenmerk 'Klik hier als de oplossing akkoord is'
fac.trackaction (
'ORDUPD',
v_opdrkey,
sender,
NULL,
'Oplossing: leeg --> ' || v_vm_oplossing); -- # voorkomt notificatie
ELSE
v_errormsg :=
'(0x455)' || v_mldkey || psubject || v_actie;
IF v_vm_oplossing <> v_vm_oplossing_cur
THEN
UPDATE mld_kenmerkopdr
SET mld_kenmerkopdr_waarde = v_vm_oplossing
WHERE mld_opdr_key = v_opdrkey
AND mld_kenmerk_key = 801 -- Kenmerk 'Klik hier als de oplossing akkoord is'
AND mld_kenmerkopdr_verwijder IS NULL;
fac.trackaction (
'ORDUPD',
v_opdrkey,
sender,
NULL,
'Oplossing: '
|| v_vm_oplossing_cur
|| ' --> '
|| v_vm_oplossing); -- # voorkomt notificatie
ELSE
v_errormsg :=
'(0x456)' || v_mldkey || psubject || v_actie;
END IF;
END IF;
END IF;
-- ELSE
-- HIER TOCH GEEN LOGGING, ACTIE MAG ANDERS ZIJN DAN ORDOPL. DIT CREEERT TEVEEL ONNODIGE LOGGING.
-- fac.writelog (
-- 'PROCESSEMAIL',
-- 'E',
-- 'Melding kan niet bijgewerkt worden met de aangeboden oplossing'
-- || 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 := '(0x460)' || 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;
/
/* Formatted on 28-4-2021 16:01:59 (QP5 v5.136.908.31019) */
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 (mld_opdr_key) --Zelfde opdracht niet 2 maal
FROM (SELECT DISTINCT (opdr.mld_opdr_key) --, opdr.mld_melding_key, opdr.mld_opdr_externsyncdate
FROM mld_opdr opdr, mld_opdr_note note
WHERE note.mld_opdr_key = opdr.mld_opdr_key
AND opdr.mld_typeopdr_key = 481
AND mld_statusopdr_key IN (5, 8) -- Toegekend, geaccepteerd
AND (opdr.mld_opdr_externsyncdate IS NULL
OR opdr.mld_opdr_externsyncdate <
note.mld_opdr_note_aanmaak)
UNION ALL
SELECT DISTINCT (opdr.mld_opdr_key)
FROM mld_opdr opdr, fac_bijlagen att
WHERE opdr.mld_opdr_key = att.fac_bijlagen_refkey
AND att.fac_bijlagen_module = 'MLD'
AND opdr.mld_typeopdr_key = 481
AND opdr.mld_statusopdr_key IN (5, 8) -- Toegekend, geaccepteerd
AND fac_bijlagen_kenmerk_key = 601 -- Opdrachtkenmerk Bijlagen bij opdrachttype Aareon
AND (opdr.mld_opdr_externsyncdate IS NULL
OR opdr.mld_opdr_externsyncdate <
att.fac_bijlagen_aanmaak)
UNION ALL
SELECT opdr.mld_opdr_key
FROM mld_opdr opdr, fac_tracking t
WHERE opdr.mld_opdr_key = 128
AND opdr.mld_opdr_key = t.fac_tracking_refkey
AND t.fac_srtnotificatie_key = 75
AND (t.fac_tracking_oms LIKE '%Impact: %'
OR t.fac_tracking_oms LIKE '%Urgentie: %')
AND opdr.mld_typeopdr_key = 481
AND opdr.mld_statusopdr_key IN (5, 8) -- Toegekend, geaccepteerd
AND (opdr.mld_opdr_externsyncdate IS NULL
OR opdr.mld_opdr_externsyncdate <
t.fac_tracking_datum));
CURSOR kenmerken (
c_opdr_key NUMBER)
IS
SELECT ko.mld_kenmerkopdr_key AS kmkey
FROM mld_kenmerkopdr ko, mld_kenmerk k, mld_srtkenmerk skm
WHERE ko.mld_opdr_key = c_opdr_key
AND k.mld_kenmerk_key = ko.mld_kenmerk_key
AND skm.mld_srtkenmerk_key = k.mld_srtkenmerk_key
AND ko.mld_kenmerkopdr_verwijder IS NULL
AND skm.mld_srtkenmerk_key IN (381, 382, 383); --Kenmerksoorten Status Valuemation, Status per en Opnieuw versturen'
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;
v_errorhint :=
'Kenmerken opdracht legen bij opnieuw verzenden '
|| rec.mld_opdr_key;
--Daarna legen we de kenmerken bij de opdracht die we opnieuw klaar zetten om te verzenden
FOR rec1 IN kenmerken (rec.mld_opdr_key)
LOOP
BEGIN
v_errorhint := 'Kenmerken legen ' || rec.mld_opdr_key;
UPDATE mld_kenmerkopdr
SET mld_kenmerkopdr_verwijder = SYSDATE
WHERE mld_kenmerkopdr_key = rec1.kmkey;
EXCEPTION
WHEN OTHERS
THEN
fac.writelog (
'EXP_VALUEMATION',
'E',
'Export tbv opnieuw klaarzetten opdrachten'
|| '['
|| v_errorhint
|| ']',
'OTHERS (error '
|| SQLCODE
|| '/'
|| SUBSTR (SQLERRM, 1, 100)
|| ')');
END;
END LOOP;
v_errorhint :=
'Syncdatum instellen na opnieuw klaar zetten voor verzenden '
|| rec.mld_opdr_key;
--We updaten de syncdatum zodat de wijziging eenmalig wordt verstuurd.
UPDATE mld_opdr
SET mld_opdr_externsyncdate = SYSDATE
WHERE mld_opdr_key = rec.mld_opdr_key;
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
|| '/'
|| 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 FORCE VIEW maas_v_noti_hrwf_man_id
(
code,
sender,
receiver,
text,
key,
xkey
)
AS
SELECT DISTINCT 'CUST04' AS code,
NULL,
fac.safe_to_number (kmm.mld_kenmerkmelding_waarde), --prs_perslid_key manager. Manager is als email in processmail aangereikt
'Notificatie ivm medewerker in dienst',
m.mld_melding_key,
NULL
FROM mld_melding m, mld_kenmerkmelding kmm
WHERE kmm.mld_melding_key = m.mld_melding_key
AND kmm.mld_kenmerk_key = 821 --Kenmerk Leidinggevende bij de startmelding workflow In Dienst
AND m.mld_melding_key NOT IN
(SELECT t.fac_tracking_refkey
FROM fac_tracking t
WHERE t.fac_tracking_refkey = m.mld_melding_key
AND UPPER (t.fac_tracking_oms) LIKE
'%NOTIFICATIE CUST04 VERSTUURD%')
UNION ALL --Er moet op verzoek ook een mail naar Igor Zandee
SELECT DISTINCT 'CUST04' AS code,
NULL,
238, --prs_perslid_key van Igor Zandee
'Notificatie ivm medewerker in dienst',
m.mld_melding_key,
NULL
FROM mld_melding m, mld_kenmerkmelding kmm
WHERE kmm.mld_melding_key = m.mld_melding_key
AND m.mld_stdmelding_key = 501 --stdmelding Start in dienst (vanuit Visma)
AND m.mld_melding_key NOT IN
(SELECT t.fac_tracking_refkey
FROM fac_tracking t
WHERE t.fac_tracking_refkey = m.mld_melding_key
AND UPPER (t.fac_tracking_oms) LIKE
'%NOTIFICATIE CUST04 VERSTUURD%')
UNION ALL --Er moet op verzoek ook een mail naar Igor Zandee
SELECT DISTINCT 'CUST04' AS code,
NULL,
238, --prs_perslid_key van Igor Zandee
'Notificatie ivm medewerker uit dienst',
m.mld_melding_key,
NULL
FROM mld_melding m, mld_kenmerkmelding kmm
WHERE kmm.mld_melding_key = m.mld_melding_key
AND m.mld_stdmelding_key = 522 --stdmelding Start uit dienst (vanuit Visma)
AND m.mld_melding_key NOT IN
(SELECT t.fac_tracking_refkey
FROM fac_tracking t
WHERE t.fac_tracking_refkey = m.mld_melding_key
AND UPPER (t.fac_tracking_oms) LIKE
'%NOTIFICATIE CUST04 VERSTUURD%')
UNION ALL --Er moet op verzoek ook een mail naar Igor Zandee
SELECT DISTINCT 'CUST04' AS code,
NULL,
238, --prs_perslid_key van Igor Zandee
'Notificatie ivm functiewijziging medewerker',
m.mld_melding_key,
NULL
FROM mld_melding m, mld_kenmerkmelding kmm
WHERE kmm.mld_melding_key = m.mld_melding_key
AND m.mld_stdmelding_key = 564 --stdmelding functiewijziging (vanuit Visma)
AND m.mld_melding_key NOT IN
(SELECT t.fac_tracking_refkey
FROM fac_tracking t
WHERE t.fac_tracking_refkey = m.mld_melding_key
AND UPPER (t.fac_tracking_oms) LIKE
'%NOTIFICATIE CUST04 VERSTUURD%');
CREATE OR REPLACE VIEW maas_v_noti_hrwf_man_bm
(
code,
sender,
receiver,
text,
key,
xkey
)
AS
SELECT DISTINCT 'CUST05' AS code,
NULL,
kmm.mld_kenmerkmelding_waarde, --prs_perslid_key manager. Manager is als email in processmail aangereikt
'Notificatie bruikleenmiddelen voor nieuwe medewerker',
m.mld_melding_key,
NULL
FROM mld_melding m, mld_kenmerkmelding kmm
WHERE kmm.mld_melding_key = m.mld_melding_key
AND kmm.mld_kenmerk_key = 922 --Kenmerk Leidinggevende bij de melding Bruikleenmiddelen in orde maken (Servicedesk)
AND m.mld_melding_status IN (1, 5, 6, 99) -- Afgewezen, afgemeld, historie, niet opgelost.
AND m.mld_melding_key NOT IN
(SELECT t.fac_tracking_refkey
FROM fac_tracking t
WHERE t.fac_tracking_refkey = m.mld_melding_key
AND UPPER (t.fac_tracking_oms) LIKE
'%NOTIFICATIE CUST05 VERSTUURD%');
CREATE OR REPLACE VIEW maas_v_noti_noresponsevm
(
code,
sender,
receiver,
text,
key,
xkey,
xsender,
xemail,
xmobile
)
AS
SELECT DISTINCT
'CUST06' AS code,
NULL,
NULL,
'Opdracht '
|| mld_melding_key
|| '/'
|| mld_opdr_bedrijfopdr_volgnr
|| ' heeft nog geen ticketnummer van Valuemation ontvangen',
mld_opdr_key,
NULL,
'gerard.mensink@aareon.nl;c.stok@maasdelta.nl;s.schepers@facilitor.nl',
NULL,
NULL
FROM mld_opdr
WHERE mld_opdr_externnr IS NULL
AND mld_opdr_verzonden < SYSDATE - (30 / 1440) -- Enkel opdrachten van meer dan 30 minuten geleden
AND mld_opdr_key NOT IN
(SELECT t.fac_tracking_refkey
FROM fac_tracking t
WHERE t.fac_tracking_refkey = mld_opdr_key
AND UPPER (t.fac_tracking_oms) LIKE
'%NOTIFICATIE CUST06 VERSTUURD%');
CREATE OR REPLACE VIEW maas_v_maillog
(
key,
datum,
status,
omschrijving,
hinthint
)
AS
SELECT imp_log_key, imp_log_datum, imp_log_status, imp_log_omschrijving, imp_log_hint
FROM imp_log
WHERE imp_log_applicatie = 'PROCESSEMAIL'
ORDER BY imp_log_datum DESC;
------ 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