MAAS#61281 Koppeling Valuemation

svn path=/Customer/trunk/; revision=46779
This commit is contained in:
Sander Schepers
2020-05-12 22:37:22 +00:00
parent e968d7f02b
commit 1d1b054875

View File

@@ -251,7 +251,7 @@ BEGIN
-- 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);
v_vmnr := SUBSTR (REGEXP_REPLACE (psubject, '[^0-9]', ''), 0, 12);
-- Bepalen van mld_melding_key
v_errormsg := '(0x247)' || v_mldkey || psubject || v_actie;
@@ -283,18 +283,19 @@ BEGIN
-- 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);
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
@@ -332,7 +333,7 @@ BEGIN
WHEN UPPER (SUBSTR (psubject, LENGTH (psubject) - 11, 12)) LIKE
'%IS OPGELOST%'
THEN
v_actie := 'ORDUPD';
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
@@ -343,8 +344,7 @@ BEGIN
'%IS BIJGEWERKT%'
THEN
v_actie := 'ORDUPD';
v_kenmstatusoms :=
'De melding is bijgewerkt.';
v_kenmstatusoms := 'De melding is bijgewerkt.';
ELSE
v_actie := NULL;
END CASE;
@@ -478,7 +478,7 @@ BEGIN
END IF;
UPDATE mld_opdr
SET mld_statusopdr_key = 8 --Status geaccepteerd
SET mld_statusopdr_key = 8 --Status geaccepteerd
WHERE mld_opdr_key = v_opdrkey;
fac.trackaction ('ORDACP',
@@ -597,7 +597,7 @@ BEGIN
'(0x433)' || v_mldkey || psubject || v_actie;
UPDATE mld_opdr
SET mld_statusopdr_key = 8 -- Geaccepteerd
SET mld_statusopdr_key = 8 -- Geaccepteerd
WHERE mld_opdr_key = v_opdrkey AND v_status = 6;
fac.trackaction (
@@ -655,7 +655,7 @@ BEGIN
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_kenmerk_key = 602 -- Kenmerk 'Status valuemation' (601 in ACCP)
AND mld_kenmerkopdr_verwijder IS NULL;
fac.trackaction (
@@ -676,7 +676,7 @@ BEGIN
IF v_kenmstatusper_cur = 'leeg'
THEN
v_errormsg :=
'(0x440)' || v_mldkey || psubject || v_actie;
'(0x437)' || v_mldkey || psubject || v_actie;
INSERT INTO mld_kenmerkopdr (mld_opdr_key,
mld_kenmerk_key,
@@ -696,7 +696,7 @@ BEGIN
'Status per: leeg --> ' || v_kenmstatusper); -- # voorkomt notificatie
ELSE
v_errormsg :=
'(0x441)' || v_mldkey || psubject || v_actie;
'(0x438)' || v_mldkey || psubject || v_actie;
UPDATE mld_kenmerkopdr
SET mld_kenmerkopdr_waarde =
@@ -720,7 +720,7 @@ BEGIN
-- Als er een opdracht_key gevonden kan worden, dan ook de body als notitie meenemen
v_errormsg :=
'(0x442)' || v_mldkey || psubject || v_actie;
'(0x439)' || v_mldkey || psubject || v_actie;
INSERT INTO mld_opdr_note (mld_opdr_key,
mld_opdr_note_omschrijving,
@@ -764,6 +764,236 @@ BEGIN
|| ')');
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
@@ -1021,6 +1251,149 @@ EXCEPTION
END;
/
CREATE OR REPLACE VIEW maas_v_mldopdr
AS
SELECT 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,
(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
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 = 401
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
WHERE opdracht_key IS NOT NULL;
------ payload end ------
SET DEFINE OFF