MNNL#53176 Mail2Existing ticket+MNNL#54328 NACHTWERK-export/verwerken meldingen.

svn path=/Customer/trunk/; revision=38833
This commit is contained in:
Maarten van der Heide
2018-08-16 08:36:47 +00:00
parent b35319435a
commit 1d5c835c09

View File

@@ -3606,6 +3606,8 @@ END mnnl_update_eua;
/
-- MNNL#41653: Mail2Melding voor 2 stromen (Nimbus + HR).
-- MNNL#53176: Mail2Existing ticket.
CREATE OR REPLACE PROCEDURE MNNL_processemail (
pfrom IN VARCHAR2,
pto IN VARCHAR2,
@@ -3618,6 +3620,7 @@ AS
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_exist_ticket VARCHAR2 (255) := '';
v_message VARCHAR2 (255) := '';
v_vakgroep VARCHAR2 (255) := '';
v_ci VARCHAR2 (255) := '';
@@ -3637,21 +3640,30 @@ AS
v_onrgoed_type VARCHAR2 (1);
--v_locatie_key NUMBER (10);
v_melding_key NUMBER (10);
v_melding_status NUMBER (10);
v_count NUMBER (10);
BEGIN
CASE
WHEN UPPER (pto) LIKE 'NIMBUS@%'
THEN
v_errormsg := 'Fout bepalen existing ticket';
v_exist_ticket := SUBSTR (TRIM (SUBSTR (psubject, INSTR (UPPER (psubject), 'MELDING') + 7)) || ' ',
REGEXP_INSTR (TRIM (SUBSTR (psubject, INSTR (UPPER (psubject), 'MELDING') + 7)) || ' ', '\d'),
INSTR (TRIM (SUBSTR (psubject, INSTR (UPPER (psubject), 'MELDING') + 7)) || ' ', ' '));
v_errormsg := 'Fout bepalen Nimbus-message';
v_message := TRIM (SUBSTR (pbody, INSTR (pbody, '@MESSAGE:') + 9,
v_message := TRIM (SUBSTR (pbody,
INSTR (pbody, '@MESSAGE:') + 9,
INSTR (SUBSTR (REPLACE (REPLACE (pbody, CHR(13), '#'), CHR(10), '#'), INSTR (pbody, '@MESSAGE:') + 9), '#') - 1));
v_errormsg := 'Fout bepalen Nimbus-vakgroep';
v_vakgroep := TRIM (SUBSTR (pbody, INSTR (pbody, '@VAKGROEP:') + 10,
v_vakgroep := TRIM (SUBSTR (pbody,
INSTR (pbody, '@VAKGROEP:') + 10,
INSTR (SUBSTR (REPLACE (REPLACE (pbody, CHR(13), '#'), CHR(10), '#'), INSTR (pbody, '@VAKGROEP:') + 10), '#') - 1));
v_errormsg := 'Fout bepalen Nimbus-CI';
v_ci := TRIM (SUBSTR (pbody, INSTR (pbody, '@CI:') + 4,
v_ci := TRIM (SUBSTR (pbody,
INSTR (pbody, '@CI:') + 4,
INSTR (SUBSTR (REPLACE (REPLACE (pbody, CHR(13), '#'), CHR(10), '#'), INSTR (pbody, '@CI:') + 4), '#') - 1));
-- Bepaal persoon met key=12784 (Monitoring NimBUS)?
@@ -3662,112 +3674,149 @@ BEGIN
WHERE p.prs_perslid_key = 12784
AND p.prs_afdeling_key = a.prs_afdeling_key;
v_errormsg := 'Fout bepalen Nimbus-onderwerp';
v_onderwerp := v_message;
-- Bepaal MIN (soortmelding) onder vakgroep met omschrijving zoals in
-- pbody achter @VAKGROEP!
v_errormsg := 'Fout bepalen Nimbus-soortmelding ' || v_vakgroep;
SELECT sm.mld_ins_discipline_key, MIN (sm.mld_stdmelding_key)
INTO v_discipline_key, v_stdmelding_key
FROM mld_discipline md, mld_stdmelding sm
WHERE md.ins_discipline_verwijder IS NULL
AND md.ins_srtdiscipline_key = 81 -- Event
AND UPPER (md.ins_discipline_omschrijving) LIKE UPPER (v_vakgroep) || '%'
AND md.ins_discipline_key = sm.mld_ins_discipline_key
GROUP BY sm.mld_ins_discipline_key;
-- Bepaal evt. object met omschrijving zoals in pbody achter @CI!
-- Alleen objecten onder Applicatie/Server/Database/EndUser Asset met
-- keys 1101 t/m 1104 worden beschouwd!
v_errormsg := 'Fout bepalen Nimbus-object ' || v_ci;
-- Bepaal NEW or EXISTING ticket?
v_errormsg := 'Fout bepalen new or existing';
SELECT COUNT (*)
INTO v_count
FROM ins_v_aanwezigdeel d, ins_v_aanwezigsrtdeel sd, ins_v_aanwezigsrtgroep sg
WHERE d.ins_deel_upper = UPPER (v_ci)
AND d.ins_deel_vervaldatum IS NULL
AND d.ins_srtdeel_key = sd.ins_srtdeel_key
AND sd.ins_srtgroep_key = sg.ins_srtgroep_key
AND sg.ins_discipline_key IN (1101, 1102, 1103, 1104);
FROM mld_melding m, mld_stdmelding sm, mld_discipline md
WHERE m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.mld_ins_discipline_key = md.ins_discipline_key
AND md.ins_srtdiscipline_key = 81 -- Event
AND TO_CHAR (m.mld_melding_key) = v_exist_ticket;
IF v_count = 1
IF v_count = 0 -- NEW
THEN
SELECT d.ins_deel_key, d.ins_alg_ruimte_key, d.ins_alg_ruimte_type
INTO v_deel_key, v_onrgoed_keys, v_onrgoed_type
v_errormsg := 'Fout bepalen Nimbus-onderwerp';
v_onderwerp := v_message;
-- Bepaal MIN (soortmelding) onder vakgroep met omschrijving zoals
-- in pbody achter @VAKGROEP!
v_errormsg := 'Fout bepalen Nimbus-soortmelding ' || v_vakgroep;
SELECT sm.mld_ins_discipline_key, MIN (sm.mld_stdmelding_key)
INTO v_discipline_key, v_stdmelding_key
FROM mld_discipline md, mld_stdmelding sm
WHERE md.ins_discipline_verwijder IS NULL
AND md.ins_srtdiscipline_key = 81 -- Event
AND md.ins_discipline_key = sm.mld_ins_discipline_key
AND UPPER (md.ins_discipline_omschrijving) LIKE UPPER (v_vakgroep) || '%'
GROUP BY sm.mld_ins_discipline_key;
-- Bepaal evt. object met omschrijving zoals in pbody achter @CI!
-- Alleen objecten onder Applicatie/Server/Database/EndUser Asset
-- met keys 1101 t/m 1104 worden beschouwd!
v_errormsg := 'Fout bepalen Nimbus-object ' || v_ci;
SELECT COUNT (*)
INTO v_count
FROM ins_v_aanwezigdeel d, ins_v_aanwezigsrtdeel sd, ins_v_aanwezigsrtgroep sg
WHERE d.ins_deel_upper = UPPER (v_ci)
AND d.ins_deel_vervaldatum IS NULL
WHERE d.ins_deel_vervaldatum IS NULL
AND d.ins_srtdeel_key = sd.ins_srtdeel_key
AND sd.ins_srtgroep_key = sg.ins_srtgroep_key
AND sg.ins_discipline_key IN (1101, 1102, 1103, 1104);
ELSIF v_ci IS NOT NULL
THEN
fac.writelog ('PROCESSEMAIL', 'W', v_errormsg, '');
AND sg.ins_discipline_key IN (1101, 1102, 1103, 1104)
AND d.ins_deel_upper = UPPER (v_ci);
IF v_count = 1
THEN
SELECT d.ins_deel_key, d.ins_alg_ruimte_key, d.ins_alg_ruimte_type
INTO v_deel_key, v_onrgoed_keys, v_onrgoed_type
FROM ins_v_aanwezigdeel d, ins_v_aanwezigsrtdeel sd, ins_v_aanwezigsrtgroep sg
WHERE d.ins_deel_vervaldatum IS NULL
AND d.ins_srtdeel_key = sd.ins_srtdeel_key
AND sd.ins_srtgroep_key = sg.ins_srtgroep_key
AND sg.ins_discipline_key IN (1101, 1102, 1103, 1104)
AND d.ins_deel_upper = UPPER (v_ci);
ELSIF v_ci IS NOT NULL
THEN
fac.writelog ('PROCESSEMAIL', 'W', v_errormsg, '');
END IF;
-- 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 Nimbus-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)
VALUES ('MLD',
4, -- email
2, --v_locatie_key,
NULL, --v_onrgoed_keys,
SYSDATE,
SUBSTR (pfrom || CHR (13) || CHR (10) || pbody, 1, 4000),
v_stdmelding_key,
NULL, --v_stdmelding_uvt,
v_kostenplaats_key,
v_perslid_key,
v_perslid_key,
NULL,
3, -- prio normaal
SUBSTR (v_onderwerp, 1, 80))
RETURNING mld_melding_key
INTO v_melding_key;
IF v_deel_key IS NOT NULL
THEN
v_errormsg := 'Fout toevoegen Nimbus-object';
INSERT INTO mld_melding_object (mld_melding_key, ins_deel_key)
VALUES (v_melding_key, v_deel_key);
END IF;
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);
ELSE -- EXISTING!
SELECT m.mld_melding_key, m.mld_melding_status
INTO v_melding_key, v_melding_status
FROM mld_melding m, mld_stdmelding sm, mld_discipline md
WHERE m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.mld_ins_discipline_key = md.ins_discipline_key
AND md.ins_srtdiscipline_key = 81 -- Event
AND TO_CHAR (m.mld_melding_key) = v_exist_ticket;
INSERT INTO mld_melding_note (mld_melding_key,
prs_perslid_key,
mld_melding_note_omschrijving,
mld_melding_note_flag)
VALUES (v_melding_key,
v_perslid_key,
SUBSTR (psubject || CHR (13) || CHR (10) || pbody, 1, 4000),
0);
INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde)
VALUES (psessionid, 'maillog', 'Notitie onder exist-melding ' || v_melding_key);
END IF;
-- 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 Nimbus-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)
VALUES ('MLD',
4, -- email
2, --v_locatie_key,
NULL, --v_onrgoed_keys,
SYSDATE,
SUBSTR (pfrom || CHR (13) || CHR (10) || pbody, 1, 4000),
v_stdmelding_key,
NULL, --v_stdmelding_uvt,
v_kostenplaats_key,
v_perslid_key,
v_perslid_key,
NULL,
3, -- prio normaal
SUBSTR (v_onderwerp, 1, 80))
RETURNING mld_melding_key
INTO v_melding_key;
IF v_deel_key IS NOT NULL
THEN
v_errormsg := 'Fout toevoegen Nimbus-object';
INSERT INTO mld_melding_object (mld_melding_key, ins_deel_key)
VALUES (v_melding_key, v_deel_key);
END IF;
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);
WHEN UPPER (pto) LIKE 'HR@%'
THEN
v_errormsg := 'Fout bepalen HR-leidinggevende';
v_leidinggevende := TRIM (SUBSTR (pbody, INSTR (pbody, '@LEIDINGGEVENDE:') + 16,
v_leidinggevende := TRIM (SUBSTR (pbody,
INSTR (pbody, '@LEIDINGGEVENDE:') + 16,
INSTR (SUBSTR (REPLACE (REPLACE (pbody, CHR(13), '#'), CHR(10), '#'), INSTR (pbody, '@LEIDINGGEVENDE:') + 16), '#') - 1));
v_errormsg := 'Fout bepalen HR-melding';
v_melding := TRIM (SUBSTR (pbody, INSTR (pbody, '@MELDING:') + 9,
v_melding := TRIM (SUBSTR (pbody,
INSTR (pbody, '@MELDING:') + 9,
INSTR (SUBSTR (REPLACE (REPLACE (pbody, CHR(13), '#'), CHR(10), '#'), INSTR (pbody, '@MELDING:') + 9), '#') - 1));
v_errormsg := 'Fout bepalen HR-medewerker';
v_medewerker := TRIM (SUBSTR (pbody, INSTR (pbody, '@MEDEWERKER:') + 12,
v_medewerker := TRIM (SUBSTR (pbody,
INSTR (pbody, '@MEDEWERKER:') + 12,
INSTR (SUBSTR (REPLACE (REPLACE (pbody, CHR(13), '#'), CHR(10), '#'), INSTR (pbody, '@MEDEWERKER:') + 12), '#') - 1));
v_errormsg := 'Fout bepalen HR-ingangsdatum';
v_ingangsdatum := TRIM (SUBSTR (pbody, INSTR (pbody, '@INGANGSDATUM:') + 14,
v_ingangsdatum := TRIM (SUBSTR (pbody,
INSTR (pbody, '@INGANGSDATUM:') + 14,
INSTR (SUBSTR (REPLACE (REPLACE (pbody, CHR(13), '#'), CHR(10), '#'), INSTR (pbody, '@INGANGSDATUM:') + 14), '#') - 1));
-- Bepaal de melder op basis van loginnaam zoals in pbody achter
@@ -3776,9 +3825,9 @@ BEGIN
SELECT p.prs_perslid_key, pf.prs_perslid_naam_friendly, a.prs_kostenplaats_key
INTO v_perslid_key, v_perslid_naam_friendly, v_kostenplaats_key
FROM prs_v_aanwezigperslid p, prs_v_perslid_fullnames_all pf, prs_afdeling a
WHERE p.prs_perslid_oslogin = UPPER (v_leidinggevende)
AND p.prs_perslid_key = pf.prs_perslid_key
AND p.prs_afdeling_key = a.prs_afdeling_key;
WHERE p.prs_perslid_key = pf.prs_perslid_key
AND p.prs_afdeling_key = a.prs_afdeling_key
AND p.prs_perslid_oslogin = UPPER (v_leidinggevende);
v_errormsg := 'Fout bepalen HR-onderwerp';
v_onderwerp := v_melding || ': ' || v_medewerker || ' per ' || v_ingangsdatum;
@@ -4807,7 +4856,59 @@ AS
AND r.alg_srtruimte_key = sr.alg_srtruimte_key
AND x.alg_locatie_key = l.alg_locatie_key
AND l.alg_district_key = di.alg_district_key;
-- Dummy export NACHTWERK!
-- MNNL#54328: Automatisch verwerken alle afgemelde meldingen.
CREATE OR REPLACE PROCEDURE mnnl_select_nachtwerk (p_applname IN VARCHAR2,
p_applrun IN VARCHAR2)
AS
-- Auto-afmelden alle afgemelde meldingen in de nacht na afmelden!
CURSOR c_mldver
IS
SELECT '[' || TO_CHAR (m.mld_melding_key) || '] ' aanduiding,
m.mld_melding_key
FROM mld_melding m
WHERE m.mld_melding_status = 5 -- Afgemeld
ORDER BY m.mld_melding_key;
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_bedrijf_key NUMBER;
v_count NUMBER;
BEGIN
v_count := 0;
-- Auto-verwerken alle afgemelde meldingen in de nacht na afmelden!
FOR rec IN c_mldver
LOOP
BEGIN
v_errormsg := 'Fout auto-verwerken';
MLD.setmeldingstatus (rec.mld_melding_key, 6, NULL);
v_count := v_count + 1;
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 (p_applname, 'W', rec.aanduiding || v_errormsg, '');
COMMIT;
END;
END LOOP;
fac.writelog (p_applname, 'S', 'Meldingen/#verwerk: ' || TO_CHAR (v_count), '');
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := 'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.writelog (p_applname, 'E', 'Proces NACHTWERK afgebroken!', v_errormsg);
END mnnl_select_nachtwerk;
/
------ payload end ------
SET DEFINE OFF