Files
Customer/MAAS/maas.sql
Sander Schepers dcad9019ac MAAS#61281 Koppeling Valuemation, afmeldnotificatie opdracht naar Valuemation
svn path=/Customer/trunk/; revision=47011
2020-05-29 09:13:12 +00:00

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