MNNL#53176 Mail2Existing ticket+MNNL#54328 NACHTWERK-export/verwerken meldingen.
svn path=/Customer/trunk/; revision=38833
This commit is contained in:
287
MNNL/mnnl.sql
287
MNNL/mnnl.sql
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user