Files
Customer/WELK/welk.sql
Sander Schepers 10030f5bb6 FCLT#84767 Overstap Aareon naar Zendesk en benodigde API-koppelingen
svn path=/Customer/trunk/; revision=67761
2025-01-28 10:18:53 +00:00

2438 lines
114 KiB
SQL

-- Script containing customer specific configuration sql statements Elkien (WELK)
-- $Revision$
-- $Id$
DEFINE thisfile = 'WELK.SQL'
DEFINE dbuser = 'WELK'
SET ECHO ON
SET DEFINE ON
COLUMN fcltlogfile NEW_VALUE fcltlogfile NOPRINT;
COLUMN fcltcusttxt NEW_VALUE fcltcusttxt NOPRINT;
WHENEVER SQLERROR CONTINUE;
SELECT adm.getscriptspoolfile('&thisfile') AS fcltlogfile FROM DUAL;
SPOOL &fcltlogfile
WHENEVER SQLERROR EXIT;
SELECT adm.checkscriptcust('&dbuser') AS fcltcusttxt FROM DUAL;
WHENEVER SQLERROR CONTINUE;
---------------------------------------
PROMPT &fcltcusttxt
---------------------------------------
SET DEFINE OFF
------ payload begin ------
-- Gebouw-key = 5 in onderstaande view om alle bezoekers van het hoofdkantoor in Heerenveen op te kunnen vragen
CREATE OR REPLACE VIEW welk_v_rapp_bezoekers_screen
AS
SELECT to_char(a.bez_afspraak_datum,'DD-MM-YYYY') bez_afspraak_datum,
to_char(a.bez_afspraak_datum,'YYYY-MM-DD') datum_yyyymmdd,
to_char(a.bez_afspraak_datum,'HH24:MI') starttijd,
a.bez_afspraak_key afspr_key,
b.bez_afspraak_naam,
b.bez_afspraak_bedrijf bez_bedrijf,
b.prs_contactpersoon_key,
p.prs_perslid_naam
|| CASE
WHEN p.prs_perslid_voorletters IS NULL THEN ''
ELSE ', ' || p.prs_perslid_voorletters
END
|| CASE
WHEN p.prs_perslid_tussenvoegsel IS NULL THEN ''
ELSE ' ' || p.prs_perslid_tussenvoegsel
END
|| CASE
WHEN p.prs_perslid_voornaam IS NULL THEN ''
ELSE ' (' || p.prs_perslid_voornaam || ')'
END
pers_naam,
a.bez_afspraak_gastheer gastheer,
COALESCE (a.bez_afspraak_telefoonnr,
p.prs_perslid_telefoonnr,
p.prs_perslid_mobiel
)
telf_nr,
(SELECT alg_verdieping_volgnr
FROM alg_verdieping
WHERE alg_verdieping_key = og.alg_verdieping_key)
verdieping,
a.bez_afspraak_ruimte ruimte,
a.bez_afspraak_opmerking,
a.bez_afspraak_eind,
to_char(a.bez_afspraak_eind,'HH24:MI') eindtijd,
t.bez_actie_omschrijving actie,
b.bez_bezoekers_done,
b.bez_bezoekers_out,
l.alg_locatie_omschrijving loc_omschr,
b.bez_bezoekers_key bez_key
FROM bez_afspraak a,
bez_bezoekers b,
bez_actie t,
prs_perslid p,
alg_locatie l,
alg_district d,
res_rsv_ruimte rrr,
res_ruimte_opstelling rro,
res_ruimte rr,
(SELECT alg_r.alg_ruimte_key alg_onroerendgoed_keys,
alg_r.alg_ruimte_key,
alg_r.alg_verdieping_key,
alg_v.alg_gebouw_key,
'R' alg_type
FROM alg_ruimte alg_r, alg_verdieping alg_v
WHERE alg_r.alg_verdieping_key = alg_v.alg_verdieping_key
UNION ALL
SELECT alg_v.alg_verdieping_key,
TO_NUMBER (NULL),
alg_v.alg_verdieping_key,
alg_v.alg_gebouw_key,
'V'
FROM alg_verdieping alg_v
UNION ALL
SELECT alg_g.alg_gebouw_key,
TO_NUMBER (NULL),
TO_NUMBER (NULL),
alg_g.alg_gebouw_key,
'G'
FROM alg_gebouw alg_g) og,
res_rsv_deel rd
WHERE a.bez_afspraak_key = b.bez_afspraak_key
AND l.alg_district_key = d.alg_district_key
AND t.bez_actie_key(+) = a.bez_actie_key
AND a.alg_locatie_key = l.alg_locatie_key
AND og.alg_onroerendgoed_keys(+) = a.alg_onrgoed_keys
AND b.bez_bezoekers_key = rd.bez_bezoekers_key(+)
AND p.prs_perslid_key = a.bez_afspraak_contact_key
AND a.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key(+)
AND rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key(+)
AND rro.res_ruimte_key = rr.res_ruimte_key(+)
AND a.bez_afspraak_datum BETWEEN TRUNC(SYSDATE) AND TRUNC(SYSDATE+1)
AND og.alg_gebouw_key = 5
AND bez_afspraak_naam not like '%*%';
-- res_discipline_key 101 = Catalogus "Lunch"
-- res_discipline_key 281 = Catalogus "Bakker"
CREATE OR REPLACE VIEW welk_v_res_lunches_en_bakker
(fclt_f_datum, tijd, fclt_f_locatie, res_discipline_key, ruimte, voorziening, aantal, aanvrager, gastheer, afdeling, activiteit, bezoekers, omschrijving, opmerking)
AS SELECT
TO_CHAR(DATUM,'YYYY-MM-DD') DATUM,
TO_CHAR(DATUM,'HH24:MI') TIJD,
LOCATIE,
res_ins_discipline_key,
ALG_RUIMTE_AANDUIDING RUIMTE,
RES_VOORZIENING,
AANTAL,
AANVRAGER,
GASTHEER,
ORGANISATIE,
RES_ACTIVITEIT_OMSCHRIJVING,
BEZOEKERS,
OMSCHRIJVING,
OPMERKING
FROM (WITH theperslid
AS (SELECT prs_perslid_key,
prs_perslid_telefoonnr,
prs_afdeling_key,
p.prs_perslid_naam
|| CASE
WHEN p.prs_perslid_voorletters IS NULL THEN ''
ELSE ', ' || p.prs_perslid_voorletters
END
|| CASE
WHEN p.prs_perslid_tussenvoegsel IS NULL THEN ''
ELSE ' ' || p.prs_perslid_tussenvoegsel
END
|| CASE
WHEN p.prs_perslid_voornaam IS NULL THEN ''
ELSE ' (' || p.prs_perslid_voornaam || ')'
END
naam
FROM prs_perslid p),
theresrsv
AS (SELECT *
FROM res_rsv_ruimte
)
SELECT rrr.res_reservering_key,
ruimte_geg.alg_locatie_key,
l.alg_locatie_omschrijving locatie,
ruimte_geg.alg_gebouw_key,
ruimte_geg.alg_verdieping_key,
ruimte_geg.alg_ruimte_key,
COALESCE (opstelalg.res_ruimte_nr,
ruimte_geg.alg_ruimte_aanduiding
)
res_ruimte_nr,
ruimte_geg.alg_ruimte_aanduiding,
res_geg.res_voorziening,
NULL,
res_geg.res_reservering_van num_datum_tijd,
res_geg.res_reservering_van datum,
res_geg.res_reservering_van tijd,
res_geg.res_reservering_tot tot,
pcontact.naam aanvrager,
res_geg.res_ins_discipline_key,
res_rsv_ruimte_omschrijving omschrijving,
res_rsv_ruimte_opmerking opmerking,
res_geg.res_rsv_ruimte_key rsv_ruimte_key,
res_geg.res_item_key,
res_geg.res_status_bo_key res_status_bo_key,
res_geg.res_type categorie,
rrr.res_rsv_ruimte_bezoekers bezoekers,
phost.naam gastheer,
pcontact.prs_perslid_telefoonnr,
COALESCE ( (SELECT k.prs_kostenplaats_nr
FROM prs_kostenplaats k
WHERE rrr.prs_kostenplaats_key =
k.prs_kostenplaats_key),
''
)
kostenplaats,
res_geg.aantal aantal,
res_geg.rsv_ruimte_aantal,
res_geg.prijs verwerkt_prijs,
l.alg_district_key,
rrr.res_activiteit_key,
ra.res_activiteit_omschrijving,
ra.res_activiteit_upper,
res_geg.stuks_prijs stuks_prijs,
phost.prs_afdeling_key,
(SELECT d.prs_afdeling_naam2
FROM prs_v_afdeling d
WHERE phost.prs_afdeling_key = d.prs_afdeling_key)
organisatie,
artikelnummer,
rrr.res_rsv_ruimte_noshow noshow,
artikel_groep,
res_geg.rcv_type rcv_type,
res_geg.res_type res_type,
res_geg.keycolumn keycolumn,
rrr.res_rsv_ruimte_volgnr,
rrr.res_rsv_ruimte_key,
res_geg.res_ruimte_key
FROM (SELECT 'C' AS res_type,
'CV' AS rcv_type,
rra.res_rsv_ruimte_key,
(SELECT rro.res_ruimte_key
FROM res_ruimte_opstelling rro
WHERE rrr.res_ruimte_opstel_key =
rro.res_ruimte_opstel_key)
AS res_ruimte_key,
res_rsv_artikel_key AS res_item_key,
rra.res_rsv_artikel_levering AS res_reservering_van,
res_rsv_ruimte_tot AS res_reservering_tot,
rra.res_rsv_artikel_aantal AS aantal,
LTRIM (ra.res_artikel_omschrijving)
|| CASE
WHEN ra.res_artikel_eenheid IS NULL THEN ''
ELSE ' (' || ra.res_artikel_eenheid || ')'
END
AS res_voorziening,
NULL,
ra.res_discipline_key AS res_ins_discipline_key,
rra.res_status_bo_key,
ra.res_artikel_key AS res_artikel_key,
rra.res_rsv_artikel_prijs AS prijs,
ra.res_artikel_prijs AS stuks_prijs,
TO_NUMBER (NULL) AS rsv_ruimte_aantal,
ra.res_artikel_nr AS artikelnummer,
ra.res_artikel_groep AS artikel_groep,
rra.res_rsv_artikel_key keycolumn
FROM res_v_aanwezigrsv_artikel rra, theresrsv rrr, res_artikel ra
WHERE rra.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
AND rra.res_rsv_artikel_dirtlevel = 0
AND rra.res_artikel_key = ra.res_artikel_key
AND ra.res_discipline_key IN (101, 281)) res_geg,
res_rsv_ruimte rrr,
res_activiteit ra,
theperslid phost,
theperslid pcontact,
alg_v_ruimte_gegevens ruimte_geg,
(SELECT res_ruimte_opstel_key,
res_ruimte_nr,
MIN (alg_ruimte_key) alg_ruimte_key
FROM res_ruimte_opstelling rro, res_alg_ruimte rar, res_ruimte rr
WHERE rro.res_ruimte_key = rar.res_ruimte_key
AND rr.res_ruimte_key = rar.res_ruimte_key
AND rar.res_alg_ruimte_verwijder IS NULL
GROUP BY res_ruimte_opstel_key, res_ruimte_nr) opstelalg,
alg_locatie l,
alg_district di,
prs_kostenplaats k
WHERE res_geg.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
AND rrr.res_rsv_ruimte_verwijder IS NULL
AND rrr.res_activiteit_key = ra.res_activiteit_key
AND res_rsv_ruimte_host_key = phost.prs_perslid_key
AND res_rsv_ruimte_contact_key = pcontact.prs_perslid_key
AND rrr.res_ruimte_opstel_key = opstelalg.res_ruimte_opstel_key(+)
AND rrr.prs_kostenplaats_key = k.prs_kostenplaats_key(+)
AND ruimte_geg.alg_ruimte_key =
COALESCE (rrr.alg_ruimte_key, opstelalg.alg_ruimte_key)
AND l.alg_locatie_key = ruimte_geg.alg_locatie_key
AND l.alg_district_key = di.alg_district_key
AND res_geg.res_status_bo_key < 5);
CREATE OR REPLACE VIEW welk_v_rapp_lunches
(fclt_f_datum, tijd, fclt_f_locatie, ruimte, voorziening, aantal, aanvrager, gastheer, afdeling, activiteit, bezoekers, omschrijving, opmerking)
AS SELECT fclt_f_datum, tijd, fclt_f_locatie, ruimte, voorziening, aantal, aanvrager, gastheer, afdeling, activiteit, bezoekers, omschrijving, opmerking
FROM welk_v_res_lunches_en_bakker
WHERE res_discipline_key = 101;
-- Overmorgen is standaard 2 dagen erbij optellen bij vandaag, alleen bij donderdag en vrijdag nogeens 2 extra dagen.
CREATE OR REPLACE VIEW welk_v_rap_lunches_overmorgen
(datum, tijd, fclt_f_locatie, ruimte, voorziening, aantal, aanvrager, gastheer, omschrijving, opmerking)
AS
SELECT fclt_f_datum, tijd, fclt_f_locatie, ruimte, voorziening, aantal, aanvrager, gastheer, omschrijving, opmerking
FROM welk_v_rapp_lunches
WHERE TO_DATE (fclt_f_datum, 'YYYY-MM-DD') = trunc(sysdate + 2 + decode(to_char(sysdate,'D'),5,2,6,2,0));
-- Bakker
CREATE OR REPLACE VIEW welk_v_rapp_bakker
(fclt_f_datum, tijd, fclt_f_locatie, ruimte, voorziening, aantal, aanvrager, gastheer, afdeling, activiteit, bezoekers, omschrijving, opmerking)
AS SELECT fclt_f_datum, tijd, fclt_f_locatie, ruimte, voorziening, aantal, aanvrager, gastheer, afdeling, activiteit, bezoekers, omschrijving, opmerking
FROM welk_v_res_lunches_en_bakker
WHERE res_discipline_key = 281;
-- Overmorgen is standaard 2 dagen erbij optellen bij vandaag, alleen bij donderdag en vrijdag nogeens 2 extra dagen.
CREATE OR REPLACE VIEW welk_v_rap_bakker_overmorgen
(datum, tijd, fclt_f_locatie, ruimte, voorziening, aantal, aanvrager, gastheer, omschrijving, opmerking)
AS
SELECT fclt_f_datum, tijd, fclt_f_locatie, ruimte, voorziening, aantal, aanvrager, gastheer, omschrijving, opmerking
FROM welk_v_rapp_bakker
WHERE TO_DATE (fclt_f_datum, 'YYYY-MM-DD') = trunc(sysdate + 2 + decode(to_char(sysdate,'D'),5,2,6,2,0));
-- fac_notificatie_job_key = 41 is de notifictaiejob die een mail stuurt naar receptie bij een nieuwe melding
-- 361 = vakgroep postkamer; 1541 = persoon postkamer; 1181 = persoon receptie
CREATE OR REPLACE VIEW welk_v_noti_receptie
(
code,
sender,
receiver,
text,
key,
par1,
par2,
xkey
)
AS
SELECT sn.fac_srtnotificatie_code,
fac.gettrackinguserkey ('MLDNEW', m.mld_melding_key),
DECODE (std.mld_ins_discipline_key, 361, 1541, 1181),
sn.fac_srtnotificatie_oms,
m.mld_melding_key,
m.mld_stdmelding_key,
m.mld_melding_omschrijving,
NULL
FROM mld_melding m,
mld_stdmelding std,
ins_tab_discipline d,
fac_notificatie_job nj,
fac_srtnotificatie sn
WHERE sn.fac_srtnotificatie_code = 'CUST01'
AND m.mld_stdmelding_key = std.mld_stdmelding_key
AND m.mld_melding_status = 2
AND nj.fac_notificatie_job_key = 41
AND d.ins_discipline_key = std.mld_ins_discipline_key
AND d.ins_srtdiscipline_key = 1
AND fac.gettrackingdate ('MLDNEW', m.mld_melding_key) >=
nj.fac_notificatie_job_nextrun
- (nj.fac_notificatie_job_interval / 24);
CREATE OR REPLACE PROCEDURE welk_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_kenmerk_key NUMBER (10);
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_vm_niet_akkoord VARCHAR2 (4000);
v_vm_niet_akkoord_cur VARCHAR2 (4000);
v_manager_email VARCHAR2 (4000);
v_kerngebruiker_email VARCHAR2 (4000);
v_manager_key prs_perslid.prs_perslid_key%TYPE;
v_lgkenmerk_key mld_kenmerk.mld_kenmerk_key%TYPE;
v_mailorigin mld_kenmerk.mld_kenmerk_key%TYPE;
v_attachorigin mld_kenmerk.mld_kenmerk_key%TYPE;
BEGIN
v_errormsg := '(0x143)' || v_mldkey || psubject || v_actie;
sender := 4; --Standaard de persoon Facilitor
v_mailorigin := 410; --Kenmerk_key originele mail-bijlage
v_attachorigin := 411; --Kenmerk_key bijlage
v_kerngebruiker_email := NULL;
-- 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 'HELPDESK_ELKIEN@%'
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) - 50, 51)) LIKE
'%WACHT INMIDDELS EEN WEEK OP AANVULLENDE INFORMATIE%'
THEN
v_actie := 'ORDUPD';
v_kenmstatusoms :=
'Wacht inmiddels een week 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;
-- Bepalen van emailadres(sen) van kerngebruikers bij de melding (in kenmerken) tbv notificatie.
v_errormsg :=
'(0x250)'
|| 'Kan kerngebruikers niet bepalen: '
|| v_mldkey
|| psubject;
-- 14-07-2022: Anton gaf aan dat 'kerngebruiker' toch niet uit de kenmerken moest worden bepaald, maar dit moest Behandelaar van de melding worden.
-- SELECT (SELECT LISTAGG (email, '; ')
-- WITHIN GROUP (ORDER BY email) AS email
-- FROM (SELECT p.prs_perslid_email AS email
-- FROM mld_kenmerkmelding kmm,
-- mld_kenmerk km,
-- prs_perslid p
-- WHERE kmm.mld_melding_key =
-- m.mld_melding_key
-- AND kmm.mld_kenmerk_key =
-- km.mld_kenmerk_key
-- AND km.mld_srtkenmerk_key = 363 -- Kenmerksoort Kerngebruikers
-- AND kmm.mld_kenmerkmelding_verwijder
-- IS NULL
-- AND p.prs_perslid_email IS NOT NULL
-- AND p.prs_perslid_verwijder IS NULL
-- AND fac.safe_to_number (
-- kmm.mld_kenmerkmelding_waarde) =
-- p.prs_perslid_key))
-- INTO v_kerngebruiker_email
-- FROM mld_melding m
-- WHERE m.mld_melding_key = v_mldkey;
SELECT (SELECT COALESCE (p.prs_perslid_email, NULL)
FROM prs_perslid p
WHERE p.prs_perslid_email IS NOT NULL
AND p.prs_perslid_verwijder IS NULL
AND p.prs_perslid_key = m.mld_melding_behandelaar_key)
INTO v_kerngebruiker_email
FROM mld_melding m
WHERE m.mld_melding_key = v_mldkey;
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
IF v_kerngebruiker_email IS NOT NULL
THEN
INSERT INTO fac_notificatie (
fac_srtnotificatie_key,
fac_notificatie_status,
fac_notificatie_receiver_email,
fac_notificatie_oms,
fac_notificatie_refkey,
fac_notificatie_prioriteit)
VALUES (
442, --MLDNOB
2,
v_kerngebruiker_email,
'Bij de opdracht bij melding '
|| v_mldkey
|| ' is een notitie binnengekomen vanuit Valuemation',
v_mldkey,
2);
END IF;
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 (5) 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 = 5 --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 = 5;
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 = 402 -- Kenmerk 'Status valuemation'
AND mld_opdr_key = v_opdrkey
AND mld_kenmerkopdr_verwijder
IS NULL),
'leeg')
INTO v_kenmstatusoms_cur
FROM DUAL;
SELECT COALESCE (
(SELECT mld_kenmerkopdr_waarde
FROM mld_kenmerkopdr
WHERE mld_kenmerk_key = 404 -- Kenmerk 'Status per'
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,
402,
'Wacht op uw reactie'); -- Kenmerk 'Status valuemation'
fac.trackaction (
'ORDUPD',
v_opdrkey,
sender,
NULL,
'Status Valuemation: leeg --> '
|| v_kenmstatusoms); -- # voorkomt notificatie
ELSE
v_errormsg :=
'(0x435)'
|| v_mldkey
|| psubject
|| v_actie;
UPDATE mld_kenmerkopdr
SET mld_kenmerkopdr_waarde =
v_kenmstatusoms
WHERE mld_opdr_key = v_opdrkey
AND mld_kenmerk_key = 402 -- Kenmerk 'Status valuemation'
AND mld_kenmerkopdr_verwijder IS NULL;
fac.trackaction (
'ORDUPD',
v_opdrkey,
sender,
NULL,
'Status Valuemation: '
|| v_kenmstatusoms_cur
|| ' --> '
|| v_kenmstatusoms); -- # voorkomt notificatie
v_errormsg :=
'(0x436)'
|| v_mldkey
|| psubject
|| v_actie;
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,
404, -- -- Kenmerk 'Status per'
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 = 404 -- Kenmerk 'Status per'
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 (
REPLACE (
SUBSTR (pbody,
1,
4000),
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
IF v_kerngebruiker_email IS NOT NULL
THEN
INSERT INTO fac_notificatie (
fac_srtnotificatie_key,
fac_notificatie_status,
fac_notificatie_receiver_email,
fac_notificatie_oms,
fac_notificatie_refkey,
fac_notificatie_prioriteit)
VALUES (
442, --MLDNOB
2,
v_kerngebruiker_email,
'Bij de opdracht bij melding '
|| v_mldkey
|| ' is een notitie binnengekomen vanuit Valuemation',
v_mldkey,
2);
END IF;
END IF;
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 (5) 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 = 5 --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;
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 = 402 -- Kenmerk 'Status valuemation'
AND mld_opdr_key = v_opdrkey
AND mld_kenmerkopdr_verwijder
IS NULL),
'leeg')
INTO v_kenmstatusoms_cur
FROM DUAL;
SELECT COALESCE (
(SELECT mld_kenmerkopdr_waarde
FROM mld_kenmerkopdr
WHERE mld_kenmerk_key = 404 -- Kenmerk 'Status per'
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,
402,
'Oplossing is aangereikt'); -- Kenmerk 'Status valuemation'
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 = 402 -- Kenmerk 'Status valuemation'
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,
404, -- -- Kenmerk 'Status per'
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 = 404 -- Kenmerk 'Status per'
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;
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),
SUBSTR (
SUBSTR (
SUBSTR (
fac_result_waarde,
INSTR (
SUBSTR (
fac_result_waarde,
(INSTR (
fac_result_waarde,
'https://support.aareon.com/vmwebprod/vmweb?task=runlink'))),
'"')),
(INSTR (
SUBSTR (
fac_result_waarde,
INSTR (
SUBSTR (
fac_result_waarde,
(INSTR (
fac_result_waarde,
'https://support.aareon.com/vmwebprod/vmweb?task=runlink'))),
'"')),
'https://support.aareon.com/vmwebprod/vmweb?task=runlink'))),
0,
INSTR (
SUBSTR (
SUBSTR (
fac_result_waarde,
INSTR (
SUBSTR (
fac_result_waarde,
(INSTR (
fac_result_waarde,
'https://support.aareon.com/vmwebprod/vmweb?task=runlink'))),
'"')),
(INSTR (
SUBSTR (
fac_result_waarde,
INSTR (
SUBSTR (
fac_result_waarde,
(INSTR (
fac_result_waarde,
'https://support.aareon.com/vmwebprod/vmweb?task=runlink'))),
'"')),
'https://support.aareon.com/vmwebprod/vmweb?task=runlink'))),
'"')
- 1)
INTO v_vm_oplossing, v_vm_niet_akkoord
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 = 407 -- 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 :=
'(0x452)'
|| v_mldkey
|| psubject
|| v_actie
|| v_vm_oplossing;
INSERT INTO mld_kenmerkopdr (
mld_opdr_key,
mld_kenmerk_key,
mld_kenmerkopdr_waarde)
VALUES (v_opdrkey, 407, 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 :=
'(0x453)'
|| 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 = 407 -- 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 :=
'(0x454)'
|| v_mldkey
|| psubject
|| v_actie;
END IF;
END IF;
v_errormsg :=
'(0x456)' || 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 = 408 -- Kenmerk 'Klik hier als de oplossing niet akkoord is'
AND mld_opdr_key = v_opdrkey
AND mld_kenmerkopdr_verwijder
IS NULL),
'leeg')
INTO v_vm_niet_akkoord_cur
FROM DUAL;
-- Als de kenmerken nog niet bestaan, dan toevoegen bij de opdracht, anders updaten indien gewijzigd.
IF v_vm_niet_akkoord_cur = 'leeg'
THEN
v_errormsg :=
'(0x457)'
|| v_mldkey
|| psubject
|| v_actie
|| v_vm_niet_akkoord;
INSERT INTO mld_kenmerkopdr (
mld_opdr_key,
mld_kenmerk_key,
mld_kenmerkopdr_waarde)
VALUES (v_opdrkey,
408,
v_vm_niet_akkoord); -- Kenmerk 'Klik hier als de oplossing niet akkoord is'
fac.trackaction (
'ORDUPD',
v_opdrkey,
sender,
NULL,
'Niet akkoord: leeg --> '
|| v_vm_niet_akkoord); -- # voorkomt notificatie
ELSE
v_errormsg :=
'(0x458)'
|| v_mldkey
|| psubject
|| v_actie;
IF v_vm_niet_akkoord <> v_vm_niet_akkoord_cur
THEN
UPDATE mld_kenmerkopdr
SET mld_kenmerkopdr_waarde =
v_vm_niet_akkoord
WHERE mld_opdr_key = v_opdrkey
AND mld_kenmerk_key = 408 -- Kenmerk 'Klik hier als de oplossing niet akkoord is'
AND mld_kenmerkopdr_verwijder
IS NULL;
fac.trackaction (
'ORDUPD',
v_opdrkey,
sender,
NULL,
'Niet akkoord: '
|| v_vm_niet_akkoord_cur
|| ' --> '
|| v_vm_niet_akkoord); -- # voorkomt notificatie
ELSE
v_errormsg :=
'(0x459)'
|| v_mldkey
|| psubject
|| v_actie;
END IF;
END IF;
END IF;
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 (
REPLACE (
SUBSTR (pbody,
1,
4000),
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
IF v_kerngebruiker_email IS NOT NULL
THEN
INSERT INTO fac_notificatie (
fac_srtnotificatie_key,
fac_notificatie_status,
fac_notificatie_receiver_email,
fac_notificatie_oms,
fac_notificatie_refkey,
fac_notificatie_prioriteit)
VALUES (
442, --MLDNOB
2,
v_kerngebruiker_email,
'Bij de opdracht bij melding '
|| v_mldkey
|| ' is een notitie binnengekomen vanuit Valuemation',
v_mldkey,
2);
END IF;
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;
-- -- Zoek het laagste bijlagen kenmerk om de bijlagen onder te stoppen
-- v_errormsg := 'Fout bij zoeken naar kenmerkbijlage';
--
-- SELECT MIN (mld_kenmerk_key)
-- INTO v_kenmerk_key
-- FROM mld_kenmerk k,
-- mld_srtkenmerk sk,
-- mld_stdmelding std,
-- ins_tab_discipline d
-- WHERE mld_srtkenmerk_kenmerktype = 'M'
-- AND sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key
-- AND std.mld_stdmelding_key = stdmelding
-- AND std.mld_ins_discipline_key = d.ins_discipline_key
-- AND ( (k.mld_stdmelding_key = std.mld_stdmelding_key
-- AND k.mld_kenmerk_niveau = 'S')
-- OR (k.mld_stdmelding_key = d.ins_discipline_key
-- AND k.mld_kenmerk_niveau = 'D')
-- OR (k.mld_stdmelding_key = d.ins_srtdiscipline_key
-- AND k.mld_kenmerk_niveau = 'T'))
-- AND k.mld_kenmerk_verwijder IS NULL
-- AND NOT EXISTS
-- (SELECT mld_kenmerk_volgnummer
-- FROM mld_kenmerk k1,
-- mld_srtkenmerk sk1,
-- mld_stdmelding std1,
-- ins_tab_discipline d1
-- WHERE sk1.mld_srtkenmerk_kenmerktype = 'M'
-- AND sk1.mld_srtkenmerk_key =
-- k1.mld_srtkenmerk_key
-- AND std1.mld_stdmelding_key = stdmelding
-- AND std1.mld_ins_discipline_key =
-- d1.ins_discipline_key
-- AND ( (k1.mld_stdmelding_key =
-- std1.mld_stdmelding_key
-- AND k1.mld_kenmerk_niveau = 'S')
-- OR (k1.mld_stdmelding_key =
-- d1.ins_discipline_key
-- AND k1.mld_kenmerk_niveau = 'D')
-- OR (k1.mld_stdmelding_key =
-- d1.ins_srtdiscipline_key
-- AND k1.mld_kenmerk_niveau = 'T'))
-- AND k1.mld_kenmerk_verwijder IS NULL
-- AND k1.mld_kenmerk_volgnummer >
-- k.mld_kenmerk_volgnummer);
IF v_opdrkey IS NOT NULL
THEN
-- Bijlagen toevoegen uit email
v_errormsg :=
'(0x601)' || v_mldkey || psubject || v_actie;
INSERT INTO fac_result (fac_result_sessionid,
fac_result_naam,
fac_result_waarde)
VALUES (
psessionid,
'kenmerkpath',
'MLD\O'
|| TO_CHAR (
TRUNC (v_opdrkey / 1000),
'FM0000')
|| '___\O'
|| v_opdrkey
|| '\'
|| v_attachorigin
|| '\');
-- Originele email wordt opgeslagen bij de opdracht
v_errormsg :=
'(0x602`)' || v_mldkey || psubject || v_actie;
INSERT INTO fac_result (fac_result_sessionid,
fac_result_naam,
fac_result_waarde)
VALUES (
psessionid,
'kenmerkorgmailpath',
'MLD\O'
|| TO_CHAR (
TRUNC (v_opdrkey / 1000),
'FM0000')
|| '___\O'
|| v_opdrkey
|| '\'
|| v_mailorigin
|| '\');
END IF;
END IF;
END;
ELSE
v_errormsg :=
'(0x900)'
|| v_mldkey
|| psubject
|| v_actie
|| ' - geen pto herkend';
INSERT INTO fac_result (fac_result_sessionid,
fac_result_naam,
fac_result_waarde)
VALUES (psessionid, 'maillog', 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 welk_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 = 341 --Aareon
AND note.prs_perslid_key <> 4 --Facilitor
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 = 341 --Aareon
AND opdr.mld_statusopdr_key IN (5, 8) -- Toegekend, geaccepteerd
AND fac_bijlagen_kenmerk_key = 409 -- 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 = t.fac_tracking_refkey
AND t.fac_srtnotificatie_key = 121 --ORDUPD
AND (t.fac_tracking_oms LIKE '%Impact: %'
OR t.fac_tracking_oms LIKE '%Urgentie: %')
AND opdr.mld_typeopdr_key = 341 --Aareon
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 (341, 342); --Kenmerksoorten Status Valuemation en Status per
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
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 PROCEDURE welk_update_zendesk
AS
v_errorhint VARCHAR2 (100);
--Bij een recente wijziging (toevoegen notitie / bijlage) moet Aareon een update krijgen via notificatie (ORDNOL)
CURSOR sendagain IS
SELECT DISTINCT (mld_opdr_key),
prs_perslid_email,
prs_perslid_key,
prs_bedrijfadres_url,
prs_bedrijfadres_key --Zelfde opdracht niet 2 maal
FROM (SELECT DISTINCT (opdr.mld_opdr_key),
p.prs_perslid_email,
p.prs_perslid_key,
ba.prs_bedrijfadres_url,
ba.prs_bedrijfadres_key --, opdr.mld_melding_key, opdr.mld_opdr_externsyncdate
FROM mld_opdr opdr,
mld_opdr_note note,
prs_perslid p,
prs_bedrijf b,
prs_bedrijfadres ba
WHERE note.mld_opdr_key = opdr.mld_opdr_key
AND opdr.prs_perslid_key = p.prs_perslid_key(+)
AND opdr.mld_typeopdr_key = 341 --Aareon
AND note.prs_perslid_key <> 4 --Facilitor
AND opdr.mld_uitvoerende_keys = b.prs_bedrijf_key(+)
AND ba.prs_bedrijf_key = b.prs_bedrijf_key
AND mld_statusopdr_key IN (5, 8) -- Toegekend, geaccepteerd
AND ba.prs_bedrijfadres_type = 'N'
AND note.mld_opdr_note_aanmaak >
(SELECT MAX (t.fac_tracking_datum)
FROM fac_tracking t, fac_srtnotificatie sn
WHERE sn.fac_srtnotificatie_key =
t.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_code = 'ORDSNT')
AND note.mld_opdr_note_aanmaak >
opdr.mld_opdr_externsyncdate
UNION ALL
SELECT DISTINCT (opdr.mld_opdr_key),
p.prs_perslid_email,
p.prs_perslid_key,
ba.prs_bedrijfadres_url,
ba.prs_bedrijfadres_key
FROM mld_opdr opdr,
fac_bijlagen att,
prs_perslid p,
prs_bedrijf b,
prs_bedrijfadres ba
WHERE opdr.mld_opdr_key = att.fac_bijlagen_refkey
AND opdr.prs_perslid_key = p.prs_perslid_key(+)
AND att.fac_bijlagen_module = 'MLD'
AND opdr.mld_uitvoerende_keys = b.prs_bedrijf_key(+)
AND ba.prs_bedrijf_key = b.prs_bedrijf_key
AND opdr.mld_typeopdr_key = 341 --Aareon
AND opdr.mld_statusopdr_key IN (5, 8) -- Toegekend, geaccepteerd
AND ba.prs_bedrijfadres_type = 'N'
AND fac_bijlagen_kenmerk_key = 409 -- Opdrachtkenmerk Bijlagen bij opdrachttype Aareon
AND att.fac_bijlagen_aanmaak >
(SELECT MAX (t.fac_tracking_datum)
FROM fac_tracking t, fac_srtnotificatie sn
WHERE sn.fac_srtnotificatie_key =
t.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_code = 'ORDSNT')
AND att.fac_bijlagen_aanmaak >
opdr.mld_opdr_externsyncdate);
BEGIN
v_errorhint := 'init';
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
INSERT INTO fac_notificatie (fac_srtnotificatie_key,
fac_notificatie_status,
fac_notificatie_refkey,
fac_notificatie_prioriteit,
fac_notificatie_datum,
fac_notificatie_lang,
fac_notificatie_sender_email,
prs_perslid_key_sender,
fac_notificatie_systeemadres,
prs_bedrijfadres_key)
VALUES ( (SELECT sn.fac_srtnotificatie_key
FROM fac_srtnotificatie sn
WHERE sn.fac_srtnotificatie_code = 'ORDNOL'),
0,
rec.mld_opdr_key,
2,
SYSDATE,
'NL',
rec.prs_perslid_email,
rec.prs_perslid_key,
rec.prs_bedrijfadres_url,
rec.prs_bedrijfadres_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;
END;
END LOOP;
EXCEPTION
WHEN OTHERS
THEN
fac.writelog (
'WELK_UPDATE_ZENDESK',
'E',
'Update sturen naar Zendesk' || '[' || v_errorhint || ']',
'OTHERS (error '
|| SQLCODE
|| '/'
|| SUBSTR (SQLERRM, 1, 100)
|| ')');
END;
/
CREATE OR REPLACE PROCEDURE welk_pre_putorders
AS
BEGIN
welk_update_zendesk;
END;
/
CREATE OR REPLACE VIEW welk_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 = 341 --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 = 342 --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 WELK_V_NOTI_KERNGEBR
(
CODE,
SENDER,
RECEIVER,
TEXT,
KEY,
XKEY
)
AS
SELECT 'CUST02' AS code,
NULL AS sender,
fac.safe_to_number (kmm.mld_kenmerkmelding_waarde) AS receiver,
'Er is een nieuwe melding: '
|| m.mld_melding_key
|| ' ('
|| COALESCE (m.mld_melding_onderwerp,
sm.mld_stdmelding_omschrijving)
|| ')' AS text,
m.mld_melding_key AS key,
NULL AS extra_key
FROM mld_melding m,
mld_stdmelding sm,
ins_tab_discipline d,
ins_srtdiscipline sd,
mld_kenmerkmelding kmm,
mld_kenmerk km
WHERE m.mld_melding_key NOT IN
(SELECT t.fac_tracking_refkey
FROM fac_tracking t
WHERE t.fac_tracking_oms LIKE '%CUST02%'
AND t.fac_tracking_refkey = m.mld_melding_key)
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.mld_ins_discipline_key = d.ins_discipline_key
AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
AND sd.ins_srtdiscipline_key IN (21, 41) -- IenA Probleem en IenA Wijzigingsverzoek
AND kmm.mld_melding_key = m.mld_melding_key
AND km.mld_kenmerk_key = kmm.mld_kenmerk_key
AND km.mld_srtkenmerk_key = 363 -- Kenmerksoort Personen (kerngebruikers)
ORDER BY m.mld_melding_key;
CREATE OR REPLACE VIEW WELK_V_NOTI_CATRES_DELETEEXCH
(
CODE,
SENDER,
RECEIVER,
TEXT,
KEY,
XKEY,
XSENDER,
XEMAIL,
XMOBILE
)
AS
SELECT DISTINCT
'CUST03',
NULL,
NULL,
'Reservering (met voorzieningen) '
|| rrr.res_reservering_key
|| '/'
|| rrr.res_rsv_ruimte_volgnr
|| ' op '
|| TO_CHAR (rrr.res_rsv_ruimte_van, 'DD-MM-YYYY HH24:MI')
|| ' is verwijderd op '
|| TO_CHAR (rrr.res_rsv_ruimte_verwijder, 'DD-MM-YYYY HH24:MI')
text,
rrr.res_reservering_key
key,
rrr.res_rsv_ruimte_key
xkey,
NULL,
'receptie@elkien.nl',
NULL
FROM res_rsv_ruimte rrr, res_rsv_artikel rra, fac_notificatie_job nj
WHERE rrr.res_rsv_ruimte_verwijder IS NOT NULL
AND rrr.res_rsv_ruimte_externnr IS NOT NULL -- Enkel reserveringen die gekoppeld zijn (Exchange)
AND rra.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
AND fac_notificatie_job_key = 141
AND rrr.res_rsv_ruimte_verwijder >=
nj.fac_notificatie_job_nextrun
- (nj.fac_notificatie_job_interval / 24);
------ 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