VLKC#65151 Rap/Uitrijkaarten
svn path=/Customer/trunk/; revision=49292
This commit is contained in:
357
VLKC/vlkc.sql
357
VLKC/vlkc.sql
@@ -5373,6 +5373,363 @@ AS
|
||||
AND ba.alg_district_key = d.alg_district_key(+)
|
||||
AND ba.alg_locatie_key = l.alg_locatie_key(+);
|
||||
|
||||
-- VLKC#74776: Mail2Melding + Mail2Opdracht. Twee stromen:
|
||||
-- - NIEUWEMELDING -: Registreren nieuwe melding van Soortmelding=1401
|
||||
-- (Mailmelding) onder Vakgroep=306 (Algemeen) onder
|
||||
-- Vakgroeptype=23 (Melding)!
|
||||
-- - OPDRACHTNOTITIE -: Toevoegen opdrachtnotitie!
|
||||
CREATE OR REPLACE PROCEDURE VLKC_processemail (
|
||||
pfrom IN VARCHAR2,
|
||||
pto IN VARCHAR2,
|
||||
psubject IN VARCHAR2,
|
||||
pbody IN VARCHAR2,
|
||||
psessionid IN VARCHAR2,
|
||||
pemailkey IN NUMBER)
|
||||
AS
|
||||
c_onbekend_key NUMBER (10) := 34940; -- Facilitydesk
|
||||
v_errormsg VARCHAR2 (1000);
|
||||
oracle_err_num NUMBER;
|
||||
oracle_err_mes VARCHAR2 (200);
|
||||
v_van_regel VARCHAR2 (255) := '';
|
||||
v_van_email VARCHAR2 (255) := '';
|
||||
v_perslid_key NUMBER (10);
|
||||
v_kostenplaats_key NUMBER (10);
|
||||
v_locatie_key NUMBER (10);
|
||||
v_discipline_key NUMBER (10);
|
||||
v_stdmelding_key NUMBER (10);
|
||||
v_melding_key NUMBER (10);
|
||||
v_folder_kkey NUMBER (10);
|
||||
v_opdracht_id VARCHAR2 (255);
|
||||
v_opdracht_key NUMBER (10);
|
||||
v_typeopdr_key NUMBER (10);
|
||||
v_count NUMBER (10);
|
||||
BEGIN
|
||||
CASE
|
||||
--WHEN INSTR (UPPER (pfrom), 'FACILITYDESK@VANLANSCHOTKEMPEN.COM') > 0 AND UPPER (pto) LIKE 'NIEUWEMELDING@%'
|
||||
WHEN UPPER (pto) LIKE 'NIEUWEMELDING@%'
|
||||
THEN
|
||||
-- Probeer melder te bepalen op basis van e-mail adres tussen '<>' na eerste voorkomen 'Van:'!
|
||||
v_errormsg := 'Fout bepalen melder';
|
||||
IF INSTR (UPPER (pbody), 'VAN:') > 0
|
||||
THEN
|
||||
v_van_regel := TRIM (SUBSTR (pbody,
|
||||
INSTR (UPPER (pbody), 'VAN:') + 4,
|
||||
INSTR (SUBSTR (REPLACE (REPLACE (pbody, CHR (13), '#'), CHR (10), '#') || '#', INSTR (pbody, 'VAN:') + 4), '#') - 1));
|
||||
|
||||
IF INSTR (v_van_regel, '<') > 0 AND INSTR (v_van_regel, '<') < INSTR (v_van_regel, '>')
|
||||
THEN
|
||||
v_van_email := SUBSTR (v_van_regel, INSTR (v_van_regel, '<') + 1, INSTR (v_van_regel, '>') - INSTR (v_van_regel, '<') - 1);
|
||||
END IF;
|
||||
END IF;
|
||||
|
||||
SELECT COUNT (*)
|
||||
INTO v_count
|
||||
FROM prs_v_aanwezigperslid
|
||||
WHERE UPPER (prs_perslid_email) LIKE UPPER (v_van_email) || '%';
|
||||
|
||||
IF v_count = 1
|
||||
THEN
|
||||
SELECT p.prs_perslid_key, a.prs_kostenplaats_key, MIN (wpg.alg_locatie_key)
|
||||
INTO v_perslid_key, v_kostenplaats_key, v_locatie_key
|
||||
FROM prs_v_aanwezigperslid p, prs_afdeling a,
|
||||
(SELECT pw.prs_perslid_key, pw.prs_werkplek_key
|
||||
FROM prs_perslidwerkplek pw
|
||||
WHERE NOT EXISTS
|
||||
(SELECT 1
|
||||
FROM prs_perslidwerkplek
|
||||
WHERE prs_perslid_key = pw.prs_perslid_key
|
||||
AND prs_perslidwerkplek_key > pw.prs_perslidwerkplek_key)) pw,
|
||||
prs_v_werkplekperslid_gegevens wpg
|
||||
WHERE p.prs_afdeling_key = a.prs_afdeling_key
|
||||
AND UPPER (p.prs_perslid_email) LIKE UPPER (v_van_email) || '%'
|
||||
AND p.prs_perslid_key = pw.prs_perslid_key(+)
|
||||
AND pw.prs_werkplek_key = wpg.prs_werkplek_key(+)
|
||||
GROUP BY p.prs_perslid_key, a.prs_kostenplaats_key;
|
||||
ELSE -- Melder kan niet 1-duidig worden bepaald, dus Onbekend en 1=AMS-WTC!
|
||||
SELECT p.prs_perslid_key, a.prs_kostenplaats_key, 1
|
||||
INTO v_perslid_key, v_kostenplaats_key, v_locatie_key
|
||||
FROM prs_v_aanwezigperslid p, prs_afdeling a
|
||||
WHERE p.prs_afdeling_key = a.prs_afdeling_key
|
||||
AND p.prs_perslid_key = c_onbekend_key;
|
||||
END IF;
|
||||
|
||||
-- Bepaal de afgesproken soortmelding met key=1401=Mailmelding!
|
||||
v_errormsg := 'Fout bepalen soortmelding';
|
||||
SELECT mld_ins_discipline_key, mld_stdmelding_key
|
||||
INTO v_discipline_key, v_stdmelding_key
|
||||
FROM mld_stdmelding
|
||||
WHERE mld_stdmelding_key = 1401;
|
||||
|
||||
-- Suggested extensions:
|
||||
-- - Check for MLDUSE-write autorisations
|
||||
-- - Parse the subject to find the appropriate stdmelding, if uniquely possible
|
||||
-- - Append (as a note?) to an existing melding if #key is found in the subject
|
||||
v_errormsg := 'Fout toevoegen melding';
|
||||
INSERT INTO mld_melding (mld_melding_module,
|
||||
mld_meldbron_key,
|
||||
mld_alg_locatie_key,
|
||||
mld_alg_onroerendgoed_keys,
|
||||
mld_melding_datum,
|
||||
mld_melding_omschrijving,
|
||||
mld_stdmelding_key,
|
||||
mld_melding_t_uitvoertijd,
|
||||
prs_kostenplaats_key,
|
||||
prs_perslid_key,
|
||||
prs_perslid_key_voor,
|
||||
mld_melding_status,
|
||||
mld_melding_spoed,
|
||||
mld_melding_onderwerp,
|
||||
mld_melding_behandelaar2_key,
|
||||
mld_ins_discipline_key)
|
||||
VALUES ('MLD',
|
||||
4, -- Email
|
||||
COALESCE (v_locatie_key, 1), -- Fallback op 1=AMS-WTC
|
||||
NULL, --v_onrgoed_keys,
|
||||
SYSDATE,
|
||||
SUBSTR (pbody, 1, 2000),
|
||||
v_stdmelding_key,
|
||||
NULL,
|
||||
v_kostenplaats_key,
|
||||
v_perslid_key,
|
||||
v_perslid_key,
|
||||
NULL,
|
||||
3, -- Prio normaal
|
||||
SUBSTR (psubject, 1, 80),
|
||||
NULL,
|
||||
NULL) -- BT?
|
||||
RETURNING mld_melding_key
|
||||
INTO v_melding_key;
|
||||
|
||||
mld.setmeldingstatus (v_melding_key, 2, v_perslid_key);
|
||||
|
||||
INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde)
|
||||
VALUES (psessionid, 'maillog', 'Geregistreerd onder melding ' || v_melding_key);
|
||||
|
||||
-- Find the lowest volgnummer of the Folder-flexfield.
|
||||
v_errormsg := 'Fout toevoegen melding-bijlage';
|
||||
SELECT MIN (k1.mld_kenmerk_key)
|
||||
INTO v_folder_kkey
|
||||
FROM mld_stdmelding sm1, ins_tab_discipline td1, mld_kenmerk k1, mld_srtkenmerk sk1
|
||||
WHERE sm1.mld_stdmelding_key = v_stdmelding_key
|
||||
AND sm1.mld_ins_discipline_key = td1.ins_discipline_key
|
||||
AND k1.mld_kenmerk_verwijder IS NULL
|
||||
AND k1.mld_srtkenmerk_key = sk1.mld_srtkenmerk_key
|
||||
AND sk1.mld_srtkenmerk_kenmerktype = 'M'
|
||||
AND ((k1.mld_stdmelding_key = sm1.mld_stdmelding_key AND k1.mld_kenmerk_niveau = 'S')
|
||||
OR (k1.mld_stdmelding_key = td1.ins_discipline_key AND k1.mld_kenmerk_niveau = 'D')
|
||||
OR (k1.mld_stdmelding_key = td1.ins_srtdiscipline_key AND k1.mld_kenmerk_niveau = 'T'))
|
||||
AND NOT EXISTS
|
||||
(SELECT 1
|
||||
FROM mld_stdmelding sm2, ins_tab_discipline td2, mld_kenmerk k2, mld_srtkenmerk sk2
|
||||
WHERE sm2.mld_stdmelding_key = v_stdmelding_key
|
||||
AND sm2.mld_ins_discipline_key = td2.ins_discipline_key
|
||||
AND k2.mld_kenmerk_verwijder IS NULL
|
||||
AND k2.mld_srtkenmerk_key = sk2.mld_srtkenmerk_key
|
||||
AND sk2.mld_srtkenmerk_kenmerktype = 'M'
|
||||
AND ((k2.mld_stdmelding_key = sm2.mld_stdmelding_key AND k2.mld_kenmerk_niveau = 'S')
|
||||
OR (k2.mld_stdmelding_key = td2.ins_discipline_key AND k2.mld_kenmerk_niveau = 'D')
|
||||
OR (k2.mld_stdmelding_key = td2.ins_srtdiscipline_key AND k2.mld_kenmerk_niveau = 'T'))
|
||||
AND k2.mld_kenmerk_volgnummer < k1.mld_kenmerk_volgnummer);
|
||||
|
||||
IF v_folder_kkey IS NOT NULL
|
||||
THEN
|
||||
INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde)
|
||||
VALUES (psessionid, 'kenmerkpath', 'MLD\M' || TO_CHAR (TRUNC (v_melding_key / 1000), 'FM0000') || '___\M' || v_melding_key || '\' || v_folder_kkey || '\');
|
||||
END IF;
|
||||
|
||||
-- Handle workflow actions for completion (in case of new melding).
|
||||
IF v_count = 0
|
||||
THEN
|
||||
MLD.mld_nextworkflowstep (v_melding_key, -1); -- -1=Initial
|
||||
END IF;
|
||||
--WHEN INSTR (UPPER (pfrom), 'FACILITYDESK@VANLANSCHOTKEMPEN.COM') > 0 AND UPPER (pto) LIKE 'OPDRACHTNOTITIE@%'
|
||||
WHEN UPPER (pto) LIKE 'OPDRACHTNOTITIE@%'
|
||||
THEN
|
||||
-- Probeer noteur te bepalen op basis van e-mail adres tussen '<>' na eerste voorkomen 'Van:'!
|
||||
v_errormsg := 'Fout bepalen noteur';
|
||||
IF INSTR (UPPER (pbody), 'VAN:') > 0
|
||||
THEN
|
||||
v_van_regel := TRIM (SUBSTR (pbody,
|
||||
INSTR (UPPER (pbody), 'VAN:') + 4,
|
||||
INSTR (SUBSTR (REPLACE (REPLACE (pbody, CHR (13), '#'), CHR (10), '#') || '#', INSTR (pbody, 'VAN:') + 4), '#') - 1));
|
||||
|
||||
IF INSTR (v_van_regel, '<') > 0 AND INSTR (v_van_regel, '<') < INSTR (v_van_regel, '>')
|
||||
THEN
|
||||
v_van_email := SUBSTR (v_van_regel, INSTR (v_van_regel, '<') + 1, INSTR (v_van_regel, '>') - INSTR (v_van_regel, '<') - 1);
|
||||
END IF;
|
||||
END IF;
|
||||
|
||||
SELECT COUNT (*)
|
||||
INTO v_count
|
||||
FROM prs_contactpersoon
|
||||
WHERE prs_contactpersoon_email IS NULL
|
||||
AND prs_perslid_key IS NOT NULL
|
||||
AND UPPER (prs_contactpersoon_email) LIKE UPPER (v_van_email) || '%';
|
||||
|
||||
IF v_count = 1
|
||||
THEN
|
||||
SELECT prs_perslid_key
|
||||
INTO v_perslid_key
|
||||
FROM prs_contactpersoon
|
||||
WHERE prs_contactpersoon_email IS NULL
|
||||
AND prs_perslid_key IS NOT NULL
|
||||
AND UPPER (prs_contactpersoon_email) LIKE UPPER (v_van_email) || '%';
|
||||
ELSE -- Noteur kan niet 1-duidig worden bepaald, dus Onbekend!
|
||||
SELECT prs_perslid_key
|
||||
INTO v_perslid_key
|
||||
FROM prs_v_aanwezigperslid
|
||||
WHERE prs_perslid_key = c_onbekend_key;
|
||||
END IF;
|
||||
|
||||
v_errormsg := 'Fout bepalen opdracht';
|
||||
v_opdracht_id := psubject;
|
||||
IF REGEXP_INSTR (v_opdracht_id, '\d') > 0
|
||||
THEN
|
||||
v_opdracht_id := SUBSTR (v_opdracht_id, REGEXP_INSTR (v_opdracht_id, '\d')) || ' '; -- Gedeelte vanaf eerste cijfer in v_exist_ticket plus ' '!
|
||||
v_opdracht_id := SUBSTR (v_opdracht_id, 1, REGEXP_INSTR (v_opdracht_id, '\s') - 1); -- Gedeelte tot eerste white space in v_exist_ticket!
|
||||
END IF;
|
||||
|
||||
v_errormsg := 'Fout bepalen opdracht ' || v_opdracht_id;
|
||||
SELECT mld_opdr_key, mld_typeopdr_key
|
||||
INTO v_opdracht_key, v_typeopdr_key
|
||||
FROM mld_opdr
|
||||
WHERE TO_CHAR (mld_melding_key) || '/' || TO_CHAR (mld_opdr_bedrijfopdr_volgnr) = SUBSTR (v_opdracht_id, REGEXP_INSTR (v_opdracht_id, '\d'));
|
||||
|
||||
v_errormsg := 'Fout toevoegen opdracht-notitie';
|
||||
INSERT INTO mld_opdr_note (mld_opdr_key, prs_perslid_key, mld_opdr_note_omschrijving)
|
||||
VALUES (v_opdracht_key, v_perslid_key, pfrom || CHR (13) || CHR (10) || psubject || CHR (13) || CHR (10) || SUBSTR (pbody, 1, 2000));
|
||||
|
||||
v_errormsg := 'Fout bijwerken opdracht-kleurbolletje';
|
||||
UPDATE mld_opdr
|
||||
SET mld_opdr_flag = 1 -- Zwart
|
||||
WHERE mld_opdr_key = v_opdracht_key;
|
||||
|
||||
-- Find the lowest volgnummer of the Folder-flexfield.
|
||||
v_errormsg := 'Fout toevoegen opdracht-bijlage';
|
||||
SELECT MIN (k1.mld_kenmerk_key)
|
||||
INTO v_folder_kkey
|
||||
FROM mld_kenmerk k1, mld_srtkenmerk sk1
|
||||
WHERE k1.mld_typeopdr_key = v_typeopdr_key
|
||||
AND k1.mld_kenmerk_verwijder IS NULL
|
||||
AND k1.mld_kenmerk_niveau = 'O'
|
||||
AND k1.mld_srtkenmerk_key = sk1.mld_srtkenmerk_key
|
||||
AND sk1.mld_srtkenmerk_kenmerktype = 'M'
|
||||
AND NOT EXISTS
|
||||
(SELECT 1
|
||||
FROM mld_kenmerk k2, mld_srtkenmerk sk2
|
||||
WHERE k2.mld_typeopdr_key = v_typeopdr_key
|
||||
AND k2.mld_kenmerk_verwijder IS NULL
|
||||
AND k2.mld_kenmerk_niveau = 'O'
|
||||
AND k2.mld_srtkenmerk_key = sk2.mld_srtkenmerk_key
|
||||
AND sk2.mld_srtkenmerk_kenmerktype = 'M'
|
||||
AND k2.mld_kenmerk_volgnummer < k1.mld_kenmerk_volgnummer);
|
||||
|
||||
IF v_folder_kkey IS NOT NULL
|
||||
THEN
|
||||
INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde)
|
||||
VALUES (psessionid, 'kenmerkpath', 'MLD\O' || TO_CHAR (TRUNC (v_opdracht_key / 1000), 'FM0000') || '___\O' || v_opdracht_key || '\' || v_folder_kkey || '\');
|
||||
END IF;
|
||||
ELSE
|
||||
INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde)
|
||||
VALUES (psessionid, 'errormsg', 'Ontvanger ongeldig - Neem contact op met uw systeembeheerder ');
|
||||
END CASE;
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
oracle_err_num := SQLCODE;
|
||||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||||
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||||
fac.writelog ('PROCESSEMAIL', 'E', 'VLKC_processemail afgebroken!', '[' || v_van_email || '] ' || v_errormsg);
|
||||
INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde)
|
||||
VALUES (psessionid, 'errormsg', 'Database fout - Neem contact op met uw systeembeheerder ');
|
||||
COMMIT;
|
||||
END;
|
||||
/
|
||||
|
||||
-- VLKC#65151: Uitrijkaarten
|
||||
CREATE OR REPLACE VIEW vlkc_v_rap_uitrijkaarten
|
||||
(
|
||||
afspraakmaand,
|
||||
afspraakdatum,
|
||||
afspraakdatum_van,
|
||||
afspraakdatum_tot,
|
||||
afspraaknr, -- Niet gevraagd
|
||||
parkeerpasnummer, -- 23-cijferig
|
||||
uitrijkaart,
|
||||
uitrijkaartprijs,
|
||||
contactpersoon, -- Niet gevraagd
|
||||
gastheer, -- Niet gevraagd
|
||||
bezoeker,
|
||||
opmerking, -- Niet gevraagd
|
||||
kostenplaats,
|
||||
kostenplaats_bezoeker,
|
||||
kostenplaats_gastheer,
|
||||
locatie,
|
||||
bez_afspraak_key
|
||||
)
|
||||
AS
|
||||
SELECT TO_CHAR (x.bez_afspraak_datum, 'yyyy-mm') maand,
|
||||
x.bez_afspraak_datum,
|
||||
x.bez_afspraak_datum van,
|
||||
x.bez_afspraak_eind tot,
|
||||
TO_CHAR (x.bez_afspraak_key) afspraaknr,
|
||||
pp.bez_kenmerkwaarde_waarde parkeerpasnummer,
|
||||
uk_ud.fac_usrdata_omschr uitrijkaart,
|
||||
uk_ud.fac_usrdata_prijs uitrijkaartprijs,
|
||||
x.contactpersoon,
|
||||
x.gastheer,
|
||||
x.bez_afspraak_naam,
|
||||
x.bez_afspraak_opmerking,
|
||||
COALESCE (kpb.prs_kostenplaats_nr, kph.prs_kostenplaats_nr) kp,
|
||||
kpb.prs_kostenplaats_nr kp_bezoeker,
|
||||
DECODE (pb.prs_perslid_key, NULL, kph.prs_kostenplaats_nr, NULL) kp_gastheer,
|
||||
l.alg_locatie_omschrijving || ' (' || l.alg_locatie_code || ')',
|
||||
x.bez_afspraak_key
|
||||
FROM (SELECT a.bez_afspraak_key,
|
||||
a.bez_afspraak_datum,
|
||||
a.bez_afspraak_eind,
|
||||
a.bez_afspraak_opmerking,
|
||||
a.bez_afspraak_host_key,
|
||||
a.alg_locatie_key,
|
||||
b.bez_bezoekers_key,
|
||||
b.bez_afspraak_naam,
|
||||
b.prs_perslid_key,
|
||||
pc.prs_perslid_naam_full contactpersoon,
|
||||
ph.prs_perslid_naam_full gastheer
|
||||
FROM bez_afspraak a,
|
||||
bez_bezoekers b,
|
||||
prs_v_perslid_fullnames_all pc,
|
||||
prs_v_perslid_fullnames_all ph
|
||||
WHERE a.bez_afspraak_key = b.bez_afspraak_key
|
||||
AND a.bez_afspraak_contact_key = pc.prs_perslid_key
|
||||
AND a.bez_afspraak_host_key = ph.prs_perslid_key) x
|
||||
LEFT JOIN prs_perslid pb
|
||||
ON x.prs_perslid_key = pb.prs_perslid_key
|
||||
LEFT JOIN prs_afdeling ab
|
||||
ON pb.prs_afdeling_key = ab.prs_afdeling_key
|
||||
LEFT JOIN prs_kostenplaats kpb
|
||||
ON ab.prs_kostenplaats_key = kpb.prs_kostenplaats_key
|
||||
LEFT JOIN prs_perslid ph
|
||||
ON x.bez_afspraak_host_key = ph.prs_perslid_key
|
||||
LEFT JOIN prs_afdeling ah
|
||||
ON ph.prs_afdeling_key = ah.prs_afdeling_key
|
||||
LEFT JOIN prs_kostenplaats kph
|
||||
ON ah.prs_kostenplaats_key = kph.prs_kostenplaats_key
|
||||
LEFT JOIN bez_kenmerkwaarde pp
|
||||
ON x.bez_bezoekers_key = pp.bez_bezoekers_key
|
||||
AND pp.bez_kenmerkwaarde_verwijder IS NULL
|
||||
AND pp.bez_kenmerk_key = 1040 -- Parkeerpasnummer
|
||||
LEFT JOIN bez_kenmerkwaarde uk
|
||||
ON x.bez_bezoekers_key = uk.bez_bezoekers_key
|
||||
AND uk.bez_kenmerkwaarde_verwijder IS NULL
|
||||
AND uk.bez_kenmerk_key = 1060 -- Uitrijkaart
|
||||
LEFT JOIN fac_v_aanwezigusrdata uk_ud
|
||||
ON fac.safe_to_number (uk.bez_kenmerkwaarde_waarde) = uk_ud.fac_usrdata_key
|
||||
LEFT JOIN alg_locatie l
|
||||
ON x.alg_locatie_key = l.alg_locatie_key
|
||||
WHERE x.bez_afspraak_datum > TO_DATE ('01-01-2020', 'dd-mm-yyyy')
|
||||
AND x.bez_afspraak_datum > TRUNC (ADD_MONTHS (SYSDATE, -12), 'yyyy');
|
||||
|
||||
------ payload end ------
|
||||
|
||||
SET DEFINE OFF
|
||||
|
||||
Reference in New Issue
Block a user