From fa7bcf5968d2559915716151ae1656dc6d993b50 Mon Sep 17 00:00:00 2001 From: Maarten van der Heide Date: Thu, 21 Feb 2019 08:58:39 +0000 Subject: [PATCH] HOUT#56289 M2M-koppeling (tbv. icthelpdesk/helpdeskict) svn path=/Customer/trunk/; revision=41084 --- HOUT/hout.sql | 216 ++++++++++++++++++++++++++------------------------ 1 file changed, 111 insertions(+), 105 deletions(-) diff --git a/HOUT/hout.sql b/HOUT/hout.sql index 37611d5d5..e42353e6b 100644 --- a/HOUT/hout.sql +++ b/HOUT/hout.sql @@ -3541,119 +3541,125 @@ BEGIN VALUES (psessionid, 'maillog', 'Geregistreerd onder melding ' || v_melding_key); WHEN UPPER (pto) LIKE 'ICTHELPDESK@%' OR UPPER (pto) LIKE 'HELPDESKICT@%' THEN - -- Bepaal de melder op basis van e-mail adres zoals in pfrom? - v_errormsg := 'Fout bepalen melder ' || COALESCE (pfrom, '???'); - SELECT COUNT (*) - INTO v_count - FROM prs_v_aanwezigperslid - WHERE UPPER (prs_perslid_email) LIKE '%' || UPPER (pfrom) || '%'; - - IF v_count = 1 + IF INSTR (UPPER (pfrom), '@HOUTHOFF.COM') > 0 -- Vanaf elk ander adres negeren! THEN - SELECT p.prs_perslid_key, a.prs_kostenplaats_key, 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 (pfrom) || '%' - AND p.prs_perslid_key = pw.prs_perslid_key(+) - AND pw.prs_werkplek_key = wpg.prs_werkplek_key(+); - ELSE -- Melder kan niet 1-duidig worden bepaald, dus Onbekend en 21=A'dam! - SELECT p.prs_perslid_key, a.prs_kostenplaats_key, 21 - 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 melder op basis van e-mail adres zoals in pfrom? + v_errormsg := 'Fout bepalen melder ' || COALESCE (pfrom, '???'); + SELECT COUNT (*) + INTO v_count + FROM prs_v_aanwezigperslid + WHERE UPPER (prs_perslid_email) LIKE '%' || UPPER (pfrom) || '%'; - -- Bepaal de afgesproken soortmelding met key=3781=Automatische E-mail melding! - v_errormsg := 'Fout bepalen soortmelding'; - SELECT mld_stdmelding_key - INTO v_stdmelding_key - FROM mld_stdmelding - WHERE mld_stdmelding_key = 3781; + IF v_count = 1 + THEN + SELECT p.prs_perslid_key, a.prs_kostenplaats_key, 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 (pfrom) || '%' + AND p.prs_perslid_key = pw.prs_perslid_key(+) + AND pw.prs_werkplek_key = wpg.prs_werkplek_key(+); + ELSE -- Melder kan niet 1-duidig worden bepaald, dus Onbekend en 21=A'dam! + SELECT p.prs_perslid_key, a.prs_kostenplaats_key, 21 + 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; - -- 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) - VALUES ('MLD', - 4, -- email - v_locatie_key, --v_locatie_key, - NULL, --v_onrgoed_keys, - SYSDATE, - pfrom || CHR (13) || CHR (10) || 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)) - RETURNING mld_melding_key - INTO v_melding_key; + -- Bepaal de afgesproken soortmelding met key=3781=Automatische E-mail melding! + v_errormsg := 'Fout bepalen soortmelding'; + SELECT mld_stdmelding_key + INTO v_stdmelding_key + FROM mld_stdmelding + WHERE mld_stdmelding_key = 3781; - mld.setmeldingstatus (v_melding_key, 2, v_perslid_key); + -- 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) + VALUES ('MLD', + 4, -- email + v_locatie_key, --v_locatie_key, + NULL, --v_onrgoed_keys, + SYSDATE, + pfrom || CHR (13) || CHR (10) || 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)) + RETURNING mld_melding_key + INTO v_melding_key; - INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde) - VALUES (psessionid, 'maillog', 'Geregistreerd onder melding ' || v_melding_key); + mld.setmeldingstatus (v_melding_key, 2, v_perslid_key); - -- Find the lowest volgnummer of the Folder-flexfield. - 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; + VALUES (psessionid, 'maillog', 'Geregistreerd onder melding ' || v_melding_key); - -- Handle workflow actions for completion. - MLD.mld_nextworkflowstep (v_melding_key, -1); -- -1=Initial + -- Find the lowest volgnummer of the Folder-flexfield. + 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. + MLD.mld_nextworkflowstep (v_melding_key, -1); -- -1=Initial + ELSE + INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde) + VALUES (psessionid, 'maillog', 'Mail genegeerd van afzender ' || pfrom); + 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 ');