RWSN#83086 M2M-LEF+RWSN#86617 IDM_PRS-import/Toekennen WP+RWSN#87760 M2M/Afzender-controle

svn path=/Customer/trunk/; revision=68777
This commit is contained in:
Maarten van der Heide
2025-04-16 15:22:58 +00:00
parent 20cecfabec
commit 3ea6957714

View File

@@ -1200,17 +1200,17 @@ AS
- worden vervallen personen verwijderd
*/
-- Constanten
c_verdieping_omschr_default VARCHAR2 (16) := 'Begane grond';
c_srtruimte_default INTEGER := 1;
c_ruimte_code VARCHAR2 (3) := '001';
c_ruimte_omschr_default VARCHAR2 (16) := 'Onbekend';
c_werkplek_volgnr_default INTEGER := 1;
c_prs_werkplek_omschrijving VARCHAR2 (16) := '1';
c_default_profiel_key NUMBER (10) := 1;
c_rin_kkey NUMBER (10) := 1160;
c_commitbuffer NUMBER := 1000;
c_verdieping_omschr_default VARCHAR2 (16) := 'Begane grond';
c_srtruimte_default INTEGER := 1;
c_ruimte_code VARCHAR2 (3) := '001';
c_ruimte_omschr_default VARCHAR2 (16) := 'Onbekend';
c_werkplek_volgnr_default INTEGER := 1; -- Altijd werkplek met deze notatie!
c_prs_werkplek_omschrijving VARCHAR2 (16) := '1'; -- Altijd werkplek met deze notatie!
c_default_profiel_key NUMBER (10) := 1;
c_rin_kkey NUMBER (10) := 1160;
c_commitbuffer NUMBER := 1000;
-- om de zoveel committen
v_buffercount NUMBER := 0;
v_buffercount NUMBER := 0;
-- Personen die moeten vervallen zijn personen die:
-- - volgens de importregels zijn ingevoerd (ignore handmatige)
@@ -1442,8 +1442,8 @@ AS
RETURN rstr;
END;
-- Procedure die alles regelt voor de locatie van een persoon, varierend van
-- NIKS: als plaats ongeldig is of de huidige situatie al goed is
-- Procedure die alles regelt voor de locatie van persoon, varierend van:
-- NIKS (als plaats ongeldig is of huidige situatie al goed is)
-- ZETTEN OP EEN BESTAANDE WERKPLEK
-- VERDIEPING/RUIMTE/WERKPLEK AANMAKEN EN TOEKENNEN
PROCEDURE handle_location (pkey IN NUMBER, pgebouwkey IN VARCHAR2, prin IN VARCHAR2)
@@ -1451,13 +1451,11 @@ AS
lv_errormsg VARCHAR2 (1000);
lv_errorhint VARCHAR2 (1000);
lv_nr_werkplek NUMBER;
lv_current_gebouw_key NUMBER;
lv_verdieping_key NUMBER (10);
lv_ruimte_key NUMBER (10);
lv_werkplek_key NUMBER (10);
BEGIN
lv_errormsg := 'Toekennen van een plaats';
IF pgebouwkey = -1
THEN
lv_errorhint := 'Onbekend gebouw voor persoon/RIN: ' || prin;
@@ -1465,50 +1463,49 @@ AS
RETURN;
END IF;
-- komt de nieuwe werkplek al voor bij een van de bestaande werkplekken?
SELECT COUNT (*)
INTO lv_nr_werkplek
FROM prs_perslidwerkplek pw, prs_werkplek w, alg_ruimte r, alg_verdieping v
WHERE pw.prs_werkplek_key = w.prs_werkplek_key
AND nvl(w.prs_werkplek_virtueel, 0) <> 1
AND w.prs_alg_ruimte_key = r.alg_ruimte_key
AND r.alg_verdieping_key = v.alg_verdieping_key
AND prs_perslid_key = pkey
AND v.alg_gebouw_key = pgebouwkey;
-- komt nieuwe werkplek al voor bij bestaande werkplekken (virtueel of niet)?
-- heeft persoon al bestaande werkplek in gebouw (virtueel of niet)?
SELECT COUNT (*)
INTO lv_nr_werkplek
FROM prs_perslidwerkplek pw, prs_werkplek w, alg_ruimte r, alg_verdieping v
WHERE pw.prs_perslid_key = pkey
AND pw.prs_werkplek_key = w.prs_werkplek_key
--RWSN#8617:AND COALESCE (w.prs_werkplek_virtueel, 0) <> 1
AND w.prs_alg_ruimte_key = r.alg_ruimte_key
AND r.alg_verdieping_key = v.alg_verdieping_key
AND v.alg_gebouw_key = pgebouwkey;
IF lv_nr_werkplek > 0
THEN
-- nieuwe werkplek bestaat al als een van de werkplekken.
-- persoon heeft bestaande werkplek in gebouw (virtueel of niet)!
lv_errorhint := 'Ongewijzigd gebouw voor persoon/RIN: ' || prin;
fac.imp_writelog (p_import_key, 'I', lv_errormsg, lv_errorhint);
RETURN;
END IF;
-- verwijder de bestaande werkplekken.
-- HdZ (6-8-2009: werkplekken mogen nog niet verwijderd worden via de koppeling.
-- verwijder bestaande werkplekken.
-- HdZ (6-8-2009: werkplekken mogen niet worden verwijderd via koppeling.
-- werkplekken worden nog vaak handmatig aangemaakt.
--DELETE prs_perslidwerkplek WHERE prs_perslid_key = pkey;
-- Er moet wat gebeuren, plaatsen of verplaatsen
-- Vooralsnog even (bij)plaatsen
-- De gebouwkey is bekend, dus het gebouw ook.
-- Dan zoeken we naar de laagste verdieping en laagste ruimtenr
-- en dan maken we daarvoor een werkplek aan
-- Er moet wat gebeuren, plaatsen of verplaatsen.
-- Vooralsnog even (bij)plaatsen.
-- De gebouwkey is bekend, dus gebouw ook.
-- Dan zoeken we naar laagste verdieping en laagste ruimtenr.
-- En dan maken we daar werkplek aan.
IF lv_nr_werkplek = 0
THEN
-- persoon heeft geen werkplek(ken)
-- persoon heeft nog geen werkplek
BEGIN
lv_errormsg := 'Bepalen verdieping';
SELECT alg_verdieping_key
INTO lv_verdieping_key
FROM alg_verdieping
WHERE alg_gebouw_key = pgebouwkey AND alg_verdieping_verwijder IS NULL AND alg_verdieping_upper like '%BEGANE GROND%';
FROM alg_v_aanwezigverdieping
WHERE alg_gebouw_key = pgebouwkey AND alg_verdieping_upper like '%BEGANE GROND%';
EXCEPTION
WHEN NO_DATA_FOUND
THEN
v_errorhint := 'Begane grond toevoegen voor persoon/RIN: ' || prin;
INSERT INTO alg_verdieping
(alg_gebouw_key, alg_verdieping_omschrijving, alg_verdieping_volgnr, alg_verdieping_code)
VALUES (pgebouwkey, c_verdieping_omschr_default, 0, '0')
@@ -1518,21 +1515,19 @@ AS
-- lv_verdieping_key bekend
BEGIN
-- zoek de laagste ruimte op deze verdieping
-- zoek laagste=alfabetisch eerste ruimte op verdieping
SELECT alg_ruimte_key
INTO lv_ruimte_key
FROM alg_ruimte
FROM alg_v_aanwezigruimte
WHERE alg_verdieping_key = lv_verdieping_key
AND alg_ruimte_verwijder IS NULL
AND alg_ruimte_nr = (SELECT MIN (alg_ruimte_nr)
FROM alg_ruimte
WHERE alg_verdieping_key = lv_verdieping_key AND alg_ruimte_verwijder IS NULL);
AND alg_ruimte_nr = (SELECT MIN (alg_ruimte_nr)
FROM alg_v_aanwezigruimte
WHERE alg_verdieping_key = lv_verdieping_key);
EXCEPTION
WHEN NO_DATA_FOUND
THEN
v_errorhint := 'Ruimte toevoegen voor persoon/RIN: ' || prin;
-- Noot: de srtruimte 1 moet bestaan
-- AANNAME: srtruimte 1 moet bestaan
INSERT INTO alg_ruimte
(alg_verdieping_key, alg_srtruimte_key, alg_ruimte_nr, alg_ruimte_omschrijving)
VALUES (lv_verdieping_key, c_srtruimte_default, c_ruimte_code, c_ruimte_omschr_default)
@@ -1546,24 +1541,19 @@ AS
INTO lv_werkplek_key
FROM prs_werkplek
WHERE prs_alg_ruimte_key = lv_ruimte_key
AND prs_werkplek_volgnr = c_werkplek_volgnr_default;
-- Altijd werkplek met deze notatie!
AND prs_werkplek_volgnr = c_werkplek_volgnr_default;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
v_errorhint := 'Werkplek toevoegen voor persoon/RIN: ' || prin;
-- WEL/NIET VIRTUEEL?
INSERT INTO prs_werkplek
(prs_werkplek_volgnr, prs_werkplek_omschrijving, prs_alg_ruimte_key, prs_werkplek_virtueel)
VALUES (c_werkplek_volgnr_default, c_prs_werkplek_omschrijving, lv_ruimte_key, 0)
RETURNING prs_werkplek_key
INTO lv_werkplek_key;
-- Altijd werkplek met deze notatie!
END;
-- lv_werkplek_key bekend
-- 11-12-2009/MvdH - Unique constraint exception igv. virtuele werkplek? Volgens mij wel, maar niet opgelost!
INSERT INTO prs_perslidwerkplek
(prs_perslid_key, prs_werkplek_key, prs_perslidwerkplek_bezetting)
VALUES (pkey, lv_werkplek_key, 0);
@@ -20046,7 +20036,7 @@ BEGIN
END IF;
-- Verder geen foutdetectie; kan dus stricter?
SELECT DECODE (SUBSTR (TRIM (UPPER (v_reserveerbaar)), 1, 1),
SELECT DECODE (SUBSTR (UPPER (TRIM (v_reserveerbaar)), 1, 1),
'J', 1,
0)
INTO v_reserveerbaar_n
@@ -28418,7 +28408,9 @@ AS
LEFT JOIN mld_v_aanwezigkenmerkmelding km20
ON x.mld_melding_key = km20.mld_melding_key AND km20.mld_kenmerk_key = 29374;
-- RWSN#30975: Afhandelen printer-meldingen!
-- RWSN#30975: Printer-mails!
-- RWSN#83086: LEF-mails!
-- RWSN#87760: Afzender-controle via Eigen tabel met key=2502!
CREATE OR REPLACE PROCEDURE RWSN_processemail (
pfrom IN VARCHAR2,
pto IN VARCHAR2,
@@ -28427,82 +28419,95 @@ CREATE OR REPLACE PROCEDURE RWSN_processemail (
psessionid IN VARCHAR2,
pemailkey IN NUMBER)
AS
c_ext_melder_key NUMBER (10) := 13760; -- EXTERN Overig
c_fd_stdmld_key NUMBER (10) := 11961; -- Soortmelding=11961=E-mail Algemeen onder Vakgroep=681=MP-FI KCC onder Vakgroeptype=3=KCC [TODO:11761 in T-omgeving]!
c_esize_stdmld_key NUMBER (10) := 11962; -- Soortmelding=11962=E-mail Algemeen onder Vakgroep=941=MP-EBF Workforce onder Vakgroeptype=3=KCC!
c_digin_stdmld_key NUMBER (10) := 11963; -- Soortmelding=11963=E-mail Algemeen onder Vakgroep=3221=MP-EBF DigiInkoop onder Vakgroeptype=3=KCC!
-- Printer-Soortmelding=8357 onder Vakgroep=274 onder Vakgroeptype=1!
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_ci VARCHAR2 (255) := '';
v_perslid_key NUMBER (10) := NULL;
v_kostenplaats_key NUMBER (10) := NULL;
v_onderwerp VARCHAR2 (255) := '';
v_discipline_key NUMBER (10) := NULL;
v_stdmelding_key NUMBER (10) := NULL;
--v_stdmelding_uvt mld_stdmelding.mld_stdmelding_t_uitvoertijd%TYPE := MLD_T_UITVOERTIJD (NULL, NULL); -- constructor initialisatie
v_deel_key NUMBER (10) := NULL;
v_onrgoed_keys NUMBER (10) := NULL;
v_locatie_key NUMBER (10) := NULL;
v_melding_key NUMBER (10) := NULL;
v_email VARCHAR2 (255) := '';
v_bodypart VARCHAR2 (4000) := '';
v_email_kkey NUMBER (10) := NULL;
v_folder_kkey NUMBER (10) := NULL;
v_count NUMBER (10) := NULL;
c_fd_stdmld_key NUMBER (10) := 11961; -- Soortmelding=11961=E-mail Algemeen onder Vakgroep=681=MP-FI KCC onder Vakgroeptype=3=KCC!
c_esize_stdmld_key NUMBER (10) := 11962; -- Soortmelding=11962=E-mail Algemeen onder Vakgroep=941=MP-EBF Workforce onder Vakgroeptype=3=KCC!
c_digin_stdmld_key NUMBER (10) := 11963; -- Soortmelding=11963=E-mail Algemeen onder Vakgroep=3221=MP-EBF DigiInkoop onder Vakgroeptype=3=KCC!
c_lef_stdmld_key NUMBER (10) := 16861; -- Soortmelding=11963=E-mail Algemeen onder Vakgroep=3221=MP-EBF DigiInkoop onder Vakgroeptype=3=KCC!
c_ext_melder_key NUMBER (10) := 13760; -- EXTERN Overig
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_ci VARCHAR2 (255) := '';
v_perslid_key NUMBER (10) := NULL;
v_kostenplaats_key NUMBER (10) := NULL;
v_onderwerp VARCHAR2 (255) := '';
v_discipline_key NUMBER (10) := NULL;
v_stdmelding_key NUMBER (10) := NULL;
--v_stdmelding_uvt mld_stdmelding.mld_stdmelding_t_uitvoertijd%TYPE := MLD_T_UITVOERTIJD (NULL, NULL); -- constructor initialisatie
v_deel_key NUMBER (10) := NULL;
v_onrgoed_keys NUMBER (10) := NULL;
v_locatie_key NUMBER (10) := NULL;
v_melding_key NUMBER (10) := NULL;
v_email VARCHAR2 (255) := '';
v_bodypart VARCHAR2 (4000) := '';
v_email_kkey NUMBER (10) := NULL;
v_folder_kkey NUMBER (10) := NULL;
v_startnext VARCHAR2 (4000) := '';
v_nextpos NUMBER (10) := NULL;
v_aanvrager VARCHAR2 (4000) := '';
v_opdrachtgever VARCHAR2 (4000) := '';
v_organisatie VARCHAR2 (4000) := '';
v_email1 VARCHAR2 (4000) := '';
v_email2 VARCHAR2 (4000) := '';
v_telefoonnr VARCHAR2 (4000) := '';
v_vraagstuk VARCHAR2 (4000) := '';
v_doelstelling VARCHAR2 (4000) := '';
v_aantal VARCHAR2 (4000) := '';
v_datum VARCHAR2 (4000) := '';
v_srtkenmerk_type VARCHAR2 (255) := '';
v_srtkenmerk_lengte NUMBER (10) := NULL;
v_count NUMBER (10) := NULL;
BEGIN
CASE
WHEN UPPER (pto) LIKE 'PRINTER.FACILITOR@%'
THEN
v_errormsg := 'Fout bepalen printer';
v_ci := SUBSTR (psubject, INSTR (UPPER (psubject), 'EX')) || '#';
IF SUBSTR (UPPER (v_ci), 1, 2) = 'EX'
THEN
v_ci := SUBSTR (v_ci, 1, REGEXP_INSTR (SUBSTR (v_ci, 3), '\D') + 1); -- Gedeelte tot eerste niet-cijfer na 'EX'!
ELSE
v_ci := '';
END IF;
-- Bepaal persoon met loginnaam _HMAIL.
v_errormsg := 'Fout bepalen Printer-melder';
SELECT p.prs_perslid_key, a.prs_kostenplaats_key
INTO v_perslid_key, v_kostenplaats_key
FROM prs_v_aanwezigperslid p, prs_afdeling a
WHERE p.prs_perslid_oslogin = '_HMAIL'
AND p.prs_afdeling_key = a.prs_afdeling_key;
v_errormsg := 'Fout bepalen Printer-onderwerp';
v_onderwerp := psubject;
-- Bepaal de afgesproken soortmelding met key=5462 (was 8357).
v_errormsg := 'Fout bepalen Printer-soortmelding';
SELECT mld_ins_discipline_key, mld_stdmelding_key
INTO v_discipline_key, v_stdmelding_key
FROM mld_discipline md, mld_stdmelding sm
WHERE sm.mld_stdmelding_key = 5462 -- Bijvullen kopiëren/printen
AND sm.mld_ins_discipline_key = md.ins_discipline_key
--AND md.ins_srtdiscipline_key = 1 -- Facilitair
AND md.ins_discipline_verwijder IS NULL;
-- Bepaal evt. object met omschrijving zoals in pbody achter EX!
-- Alleen objecten onder disciplines met keys -1 t/m -1 worden beschouwd!
v_errormsg := 'Fout bepalen Printer-object ' || v_ci;
-- Afzender-controle obv. configuratie in Eigen tabel (met key=2502)!
v_errormsg := 'Fout bepalen afzender';
SELECT COUNT (*)
INTO v_count
FROM ins_v_aanwezigdeel d, ins_v_aanwezigsrtdeel sd, ins_v_aanwezigsrtgroep sg, ins_v_alg_onroerendgoed og
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 (-1)
AND d.ins_alg_ruimte_type = 'R'
AND d.ins_alg_ruimte_key = og.alg_onrgoed_keys;
FROM fac_usrdata
WHERE fac_usrtab_key = 2502
AND UPPER (TRIM (fac_usrdata_omschr)) = UPPER (SUBSTR (pto, 1, INSTR (pto, '@') - 1))
AND (fac_usrdata_omschr2 IS NULL OR UPPER (TRIM (fac_usrdata_omschr2)) = UPPER (pfrom));
IF v_count = 1
THEN
SELECT d.ins_deel_key, og.alg_onrgoed_keys, og.alg_locatie_key
INTO v_deel_key, v_onrgoed_keys, v_locatie_key
v_errormsg := 'Fout bepalen printer';
v_ci := SUBSTR (psubject, INSTR (UPPER (psubject), 'EX')) || '#';
IF SUBSTR (UPPER (v_ci), 1, 2) = 'EX'
THEN
v_ci := SUBSTR (v_ci, 1, REGEXP_INSTR (SUBSTR (v_ci, 3), '\D') + 1); -- Gedeelte tot eerste niet-cijfer na 'EX'!
ELSE
v_ci := '';
END IF;
-- Bepaal persoon met loginnaam _HMAIL.
v_errormsg := 'Fout bepalen Printer-melder';
SELECT p.prs_perslid_key, a.prs_kostenplaats_key
INTO v_perslid_key, v_kostenplaats_key
FROM prs_v_aanwezigperslid p, prs_afdeling a
WHERE p.prs_perslid_oslogin = '_HMAIL'
AND p.prs_afdeling_key = a.prs_afdeling_key;
v_errormsg := 'Fout bepalen Printer-onderwerp';
v_onderwerp := psubject;
-- Bepaal de afgesproken soortmelding met key=5462 (was 8357).
v_errormsg := 'Fout bepalen Printer-soortmelding';
SELECT mld_ins_discipline_key, mld_stdmelding_key
INTO v_discipline_key, v_stdmelding_key
FROM mld_discipline md, mld_stdmelding sm
WHERE sm.mld_stdmelding_key = 5462 -- Bijvullen kopi<70>ren/printen
AND sm.mld_ins_discipline_key = md.ins_discipline_key
--AND md.ins_srtdiscipline_key = 1 -- Facilitair
AND md.ins_discipline_verwijder IS NULL;
-- Bepaal evt. object met omschrijving zoals in pbody achter EX!
-- Alleen objecten onder disciplines met keys -1 t/m -1 worden beschouwd!
v_errormsg := 'Fout bepalen Printer-object ' || v_ci;
SELECT COUNT (*)
INTO v_count
FROM ins_v_aanwezigdeel d, ins_v_aanwezigsrtdeel sd, ins_v_aanwezigsrtgroep sg, ins_v_alg_onroerendgoed og
WHERE d.ins_deel_upper = UPPER (v_ci)
AND d.ins_deel_vervaldatum IS NULL
@@ -28511,64 +28516,91 @@ BEGIN
--AND sg.ins_discipline_key IN (-1)
AND d.ins_alg_ruimte_type = 'R'
AND d.ins_alg_ruimte_key = og.alg_onrgoed_keys;
ELSIF v_ci IS NOT NULL
THEN
fac.writelog ('PROCESSEMAIL', 'W', v_errormsg, '');
IF v_count = 1
THEN
SELECT d.ins_deel_key, og.alg_onrgoed_keys, og.alg_locatie_key
INTO v_deel_key, v_onrgoed_keys, v_locatie_key
FROM ins_v_aanwezigdeel d, ins_v_aanwezigsrtdeel sd, ins_v_aanwezigsrtgroep sg, ins_v_alg_onroerendgoed og
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 (-1)
AND d.ins_alg_ruimte_type = 'R'
AND d.ins_alg_ruimte_key = og.alg_onrgoed_keys;
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 Printer-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, -- TODO:TO_CLOB???
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
DECODE (v_count, 1, v_locatie_key, 82), -- TODO:Westraven als printer niet kan worden bepaald?
DECODE (v_count, 1, v_onrgoed_keys, NULL),
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 Printer-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
-- Ignore afzender.
INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde)
VALUES (psessionid, 'errormsg', 'Afzender [' || pfrom || '] ongeldig - Neem contact op met uw systeembeheerder');
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 Printer-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, -- TODO:TO_CLOB???
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
DECODE (v_count, 1, v_locatie_key, 82), -- TODO:Westraven als printer niet kan worden bepaald?
DECODE (v_count, 1, v_onrgoed_keys, NULL),
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 Printer-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 ('FD.FACILITOR@%') -- RWSN#55808/RWSN#62233: Eerst EBD, daarna FD
OR UPPER (pto) LIKE ('ESIZE.FACILITOR@%')
OR UPPER (pto) LIKE ('DIGIINKOOP.FACILITOR@%')
THEN
-- Negeer mails anders dan vanaf 'KCC@RWS.NL' (was 'MAILS.FD.EBFD@RWS.NL')!
IF INSTR (UPPER (pfrom), 'KCC@RWS.NL') > 0
-- VERVALLEN: Negeer mails anders dan vanaf 'KCC@RWS.NL' (was 'MAILS.FD.EBFD@RWS.NL')!
-- Afzender-controle obv. configuratie in Eigen tabel (met key=2502)!
v_errormsg := 'Fout bepalen afzender';
SELECT COUNT (*)
INTO v_count
FROM fac_usrdata
WHERE fac_usrtab_key = 2502
AND UPPER (TRIM (fac_usrdata_omschr)) = UPPER (SUBSTR (pto, 1, INSTR (pto, '@') - 1))
AND (fac_usrdata_omschr2 IS NULL OR UPPER (TRIM (fac_usrdata_omschr2)) = UPPER (pfrom));
IF v_count = 1
THEN
IF UPPER (pto) LIKE ('FD.FACILITOR@%')
THEN
@@ -28733,11 +28765,437 @@ BEGIN
ELSE
-- Ignore afzender.
INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde)
VALUES (psessionid, 'errormsg', 'Afzender ongeldig - Neem contact op met uw systeembeheerder ');
VALUES (psessionid, 'errormsg', 'Afzender [' || pfrom || '] ongeldig - Neem contact op met uw systeembeheerder');
END IF;
WHEN UPPER (pto) LIKE 'LEF@%'
THEN
-- Afzender-controle obv. configuratie in Eigen tabel (met key=2502)!
v_errormsg := 'Fout bepalen afzender';
SELECT COUNT (*)
INTO v_count
FROM fac_usrdata
WHERE fac_usrtab_key = 2502
AND UPPER (TRIM (fac_usrdata_omschr)) = UPPER (SUBSTR (pto, 1, INSTR (pto, '@') - 1))
AND (fac_usrdata_omschr2 IS NULL OR UPPER (TRIM (fac_usrdata_omschr2)) = UPPER (pfrom));
IF v_count = 1
THEN
-- Bepaal persoon met loginnaam _HMAIL_LEF.
v_errormsg := 'Fout bepalen LEF-melder';
SELECT p.prs_perslid_key, a.prs_kostenplaats_key
INTO v_perslid_key, v_kostenplaats_key
FROM prs_v_aanwezigperslid p, prs_afdeling a
WHERE p.prs_perslid_oslogin = '_HMAIL LEF'
AND p.prs_afdeling_key = a.prs_afdeling_key;
v_errormsg := 'Fout bepalen LEF-onderwerp';
v_onderwerp := psubject;
-- Bepaal de afgesproken soortmelding voor deze stroom.
v_errormsg := 'Fout bepalen LEF-soortmelding';
v_stdmelding_key := c_lef_stdmld_key;
SELECT mld_ins_discipline_key
INTO v_discipline_key
FROM mld_stdmelding
WHERE mld_stdmelding_key = v_stdmelding_key;
/*
Formuliervelden (letterlijk):
64608=Naam aanvrager
64609=Naam opdrachtgever
64628=Bedrijf/organisatie
64648=E-mail
64649=E-mail (opnieuw invullen)
64650=Telefoonnummer
64651=Vraagstuk
64652=Doelstelling (wat wil je bereiken)
64653=Aantal deelnemers (geschat)
64654=Gewenste datum voor de sessie (dd-mm-jjjj)
*/
v_startnext := REGEXP_REPLACE (pbody, '\s', ' ');
-- Bepaal 'Naam aanvrager' uit body ter vulling van kenmerk met key=64608!
v_errormsg := 'Fout bepalen Naam aanvrager';
IF INSTR (UPPER (v_startnext), 'NAAM AANVRAGER') = 0
OR INSTR (UPPER (v_startnext), 'NAAM OPDRACHTGEVER') = 0
OR INSTR (UPPER (v_startnext), 'NAAM OPDRACHTGEVER') < INSTR (UPPER (v_startnext), 'NAAM AANVRAGER')
THEN
RETURN;
ELSE
v_startnext := TRIM (SUBSTR (v_startnext, INSTR (UPPER (v_startnext), 'NAAM AANVRAGER') + 14));
v_aanvrager := TRIM (SUBSTR (v_startnext, 1, INSTR (UPPER (v_startnext), 'NAAM OPDRACHTGEVER') - 1));
END IF;
-- Bepaal 'Naam opdrachtgever' uit body ter vulling van kenmerk met key=64609!
v_errormsg := 'Fout bepalen Naam opdrachtgever';
IF INSTR (UPPER (v_startnext), 'NAAM OPDRACHTGEVER') = 0
OR INSTR (UPPER (v_startnext), 'BEDRIJF/ORGANISATIE') = 0
OR INSTR (UPPER (v_startnext), 'BEDRIJF/ORGANISATIE') < INSTR (UPPER (v_startnext), 'NAAM OPDRACHTGEVER')
THEN
RETURN;
ELSE
v_startnext := TRIM (SUBSTR (v_startnext, INSTR (UPPER (v_startnext), 'NAAM OPDRACHTGEVER') + 18));
v_opdrachtgever := TRIM (SUBSTR (v_startnext, 1, INSTR (UPPER (v_startnext), 'BEDRIJF/ORGANISATIE') - 1));
END IF;
-- Bepaal 'Bedrijf/organisatie' uit body ter vulling van kenmerk met key=64628!
v_errormsg := 'Fout bepalen Bedrijf/organisatie';
IF INSTR (UPPER (v_startnext), 'BEDRIJF/ORGANISATIE') = 0
OR INSTR (UPPER (v_startnext), 'E-MAIL') = 0
OR INSTR (UPPER (v_startnext), 'E-MAIL') < INSTR (UPPER (v_startnext), 'BEDRIJF/ORGANISATIE')
THEN
RETURN;
ELSE
v_startnext := TRIM (SUBSTR (v_startnext, INSTR (UPPER (v_startnext), 'BEDRIJF/ORGANISATIE') + 19));
v_organisatie := TRIM (SUBSTR (v_startnext, 1, INSTR (UPPER (v_startnext), 'E-MAIL') - 1));
END IF;
-- Bepaal 'E-mail' uit body ter vulling van kenmerk met key=64648!
v_errormsg := 'Fout bepalen E-mail';
IF INSTR (UPPER (v_startnext), 'E-MAIL') = 0
OR INSTR (UPPER (v_startnext), 'E-MAIL (OPNIEUW INVULLEN)') = 0
OR INSTR (UPPER (v_startnext), 'E-MAIL (OPNIEUW INVULLEN)') < INSTR (UPPER (v_startnext), 'E-MAIL')
THEN
RETURN;
ELSE
v_startnext := TRIM (SUBSTR (v_startnext, INSTR (UPPER (v_startnext), 'E-MAIL') + 6));
v_email1 := TRIM (SUBSTR (v_startnext, 1, INSTR (UPPER (v_startnext), 'E-MAIL (OPNIEUW INVULLEN)') - 1));
END IF;
-- Bepaal 'E-mail (opnieuw invullen)' uit body ter vulling van kenmerk met key=64649!
v_errormsg := 'Fout bepalen E-mail (opnieuw invullen)';
IF INSTR (UPPER (v_startnext), 'E-MAIL (OPNIEUW INVULLEN)') = 0
OR INSTR (UPPER (v_startnext), 'TELEFOONNUMMER') = 0
OR INSTR (UPPER (v_startnext), 'TELEFOONNUMMER') < INSTR (UPPER (v_startnext), 'E-MAIL (OPNIEUW INVULLEN)')
THEN
RETURN;
ELSE
v_startnext := TRIM (SUBSTR (v_startnext, INSTR (UPPER (v_startnext), 'E-MAIL (OPNIEUW INVULLEN)') + 25));
v_email2 := TRIM (SUBSTR (v_startnext, 1, INSTR (UPPER (v_startnext), 'TELEFOONNUMMER') - 1));
END IF;
-- Bepaal 'Telefoonnummer' uit body ter vulling van kenmerk met key=64650!
v_errormsg := 'Fout bepalen Telefoonnummer';
IF INSTR (UPPER (v_startnext), 'TELEFOONNUMMER') = 0
OR INSTR (UPPER (v_startnext), 'VRAAGSTUK') = 0
OR INSTR (UPPER (v_startnext), 'VRAAGSTUK') < INSTR (UPPER (v_startnext), 'TELEFOONNUMMER')
THEN
RETURN;
ELSE
v_startnext := TRIM (SUBSTR (v_startnext, INSTR (UPPER (v_startnext), 'TELEFOONNUMMER') + 14));
v_telefoonnr := TRIM (SUBSTR (v_startnext, 1, INSTR (UPPER (v_startnext), 'VRAAGSTUK') - 1));
END IF;
-- Bepaal 'Vraagstuk' uit body ter vulling van kenmerk met key=64651!
v_errormsg := 'Fout bepalen Vraagstuk';
v_startnext := TRIM (SUBSTR (v_startnext, INSTR (UPPER (v_startnext), 'VRAAGSTUK') + 9));
v_nextpos := LEAST (INSTR (UPPER (v_startnext), 'DOELSTELLING (WAT WIL JE BEREIKEN)'),
INSTR (UPPER (v_startnext), 'AANTAL DEELNEMERS (GESCHAT)'),
INSTR (UPPER (v_startnext), 'GEWENSTE DATUM VOOR DE SESSIE (DD-MM-JJJJ)'));
IF v_nextpos = 0
THEN
v_vraagstuk := TRIM (SUBSTR (v_startnext, 1));
ELSE -- v_nextpos > 0
v_vraagstuk := TRIM (SUBSTR (v_startnext, 1, v_nextpos - 1));
END IF;
-- Bepaal 'Optioneel1' uit body ter vulling van kenmerk met key=64652, 64653 of 64654!
v_errormsg := 'Fout bepalen Optioneel1';
v_startnext := TRIM (SUBSTR (v_startnext, v_nextpos));
IF UPPER (v_startnext) LIKE 'DOELSTELLING (WAT WIL JE BEREIKEN)%'
THEN
v_startnext := TRIM (SUBSTR (v_startnext, 34 + 1));
v_nextpos := LEAST (INSTR (UPPER (v_startnext), 'AANTAL DEELNEMERS (GESCHAT)'),
INSTR (UPPER (v_startnext), 'GEWENSTE DATUM VOOR DE SESSIE (DD-MM-JJJJ)'));
IF v_nextpos = 0
THEN
v_doelstelling := TRIM (SUBSTR (v_startnext, 1));
ELSE -- v_nextpos > 0
v_doelstelling := TRIM (SUBSTR (v_startnext, 1, v_nextpos - 1));
END IF;
ELSIF UPPER (v_startnext) LIKE 'AANTAL DEELNEMERS (GESCHAT)%'
THEN
v_startnext := TRIM (SUBSTR (v_startnext, 27 + 1));
v_nextpos := INSTR (UPPER (v_startnext), 'GEWENSTE DATUM VOOR DE SESSIE (DD-MM-JJJJ)');
IF v_nextpos = 0
THEN
v_aantal := TRIM (SUBSTR (v_startnext, 1));
ELSE -- v_nextpos > 0
v_aantal := TRIM (SUBSTR (v_startnext, 1, v_nextpos - 1));
END IF;
ELSIF UPPER (v_startnext) LIKE 'GEWENSTE DATUM VOOR DE SESSIE (DD-MM-JJJJ)%'
THEN
v_startnext := TRIM (SUBSTR (v_startnext, 42 + 1));
v_nextpos := 0;
v_datum := TRIM (SUBSTR (v_startnext, 1));
END IF;
-- Bepaal 'Optioneel2' uit body ter vulling van kenmerk met key=64653 of 64654!
v_errormsg := 'Fout bepalen Optioneel2';
v_startnext := TRIM (SUBSTR (v_startnext, v_nextpos));
IF UPPER (v_startnext) LIKE 'AANTAL DEELNEMERS (GESCHAT)%'
THEN
v_startnext := TRIM (SUBSTR (v_startnext, 27 + 1));
v_nextpos := INSTR (UPPER (v_startnext), 'GEWENSTE DATUM VOOR DE SESSIE (DD-MM-JJJJ)');
IF v_nextpos = 0
THEN
v_aantal := TRIM (SUBSTR (v_startnext, 1));
ELSE -- v_nextpos > 0
v_aantal := TRIM (SUBSTR (v_startnext, 1, v_nextpos - 1));
END IF;
ELSIF UPPER (v_startnext) LIKE 'GEWENSTE DATUM VOOR DE SESSIE (DD-MM-JJJJ)%'
THEN
v_startnext := TRIM (SUBSTR (v_startnext, 42 + 1));
v_nextpos := 0;
v_datum := TRIM (SUBSTR (v_startnext, 1));
END IF;
-- Bepaal 'Optioneel3' uit body ter vulling van kenmerk met key=64654!
v_errormsg := 'Fout bepalen Optioneel3';
v_startnext := TRIM (SUBSTR (v_startnext, v_nextpos));
IF UPPER (v_startnext) LIKE 'GEWENSTE DATUM VOOR DE SESSIE (DD-MM-JJJJ)%'
THEN
v_startnext := TRIM (SUBSTR (v_startnext, 42 + 1));
v_nextpos := 0;
v_datum := TRIM (SUBSTR (v_startnext, 1));
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 LEF-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, -- TODO:TO_CLOB???
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
NULL, -- TODO:Geen locatie?
NULL,
SYSDATE,
--SUBSTR (pfrom || CHR (13) || CHR (10) || pbody, 1, 4000),
SUBSTR (v_aanvrager
|| CHR (13) || CHR (10) || v_opdrachtgever
|| CHR (13) || CHR (10) || v_organisatie
|| CHR (13) || CHR (10) || v_email1
|| CHR (13) || CHR (10) || v_email2
|| CHR (13) || CHR (10) || v_telefoonnr
|| CHR (13) || CHR (10) || v_vraagstuk
|| CHR (13) || CHR (10) || v_doelstelling
|| CHR (13) || CHR (10) || v_aantal
|| CHR (13) || CHR (10) || v_datum,
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;
/*
Formuliervelden (letterlijk):
64608=Naam aanvrager
64609=Naam opdrachtgever
64628=Bedrijf/organisatie
64648=E-mail
64649=E-mail (opnieuw invullen)
64650=Telefoonnummer
64651=Vraagstuk
64652=Doelstelling (wat wil je bereiken)
64653=Aantal deelnemers (geschat)
64654=Gewenste datum voor de sessie (dd-mm-jjjj)
*/
-- Aanname dat kenmerken bestaan en verplichte waarden zijn bepaald!
v_errormsg := 'Fout toevoegen kenmerk Naam aanvrager';
SELECT MIN (sk.mld_srtkenmerk_kenmerktype), MIN (sk.mld_srtkenmerk_lengte)
INTO v_srtkenmerk_type, v_srtkenmerk_lengte
FROM mld_kenmerk k, mld_srtkenmerk sk
WHERE k.mld_kenmerk_verwijder IS NULL
AND k.mld_kenmerk_key = 64608
AND k.mld_stdmelding_key = v_stdmelding_key
AND k.mld_kenmerk_niveau = 'S'
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key;
IF v_srtkenmerk_type = 'C' AND v_aanvrager IS NOT NULL
THEN
INSERT INTO mld_kenmerkmelding (mld_melding_key, mld_kenmerk_key, mld_kenmerkmelding_waarde)
VALUES (v_melding_key, 64608, SUBSTR (v_aanvrager, 1, v_srtkenmerk_lengte));
END IF;
v_errormsg := 'Fout toevoegen kenmerk Naam opdrachtgever';
SELECT MIN (sk.mld_srtkenmerk_kenmerktype), MIN (sk.mld_srtkenmerk_lengte)
INTO v_srtkenmerk_type, v_srtkenmerk_lengte
FROM mld_kenmerk k, mld_srtkenmerk sk
WHERE k.mld_kenmerk_verwijder IS NULL
AND k.mld_kenmerk_key = 64609
AND k.mld_stdmelding_key = v_stdmelding_key
AND k.mld_kenmerk_niveau = 'S'
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key;
IF v_srtkenmerk_type = 'C' AND v_opdrachtgever IS NOT NULL
THEN
INSERT INTO mld_kenmerkmelding (mld_melding_key, mld_kenmerk_key, mld_kenmerkmelding_waarde)
VALUES (v_melding_key, 64609, SUBSTR (v_opdrachtgever, 1, v_srtkenmerk_lengte));
END IF;
v_errormsg := 'Fout toevoegen kenmerk Bedrijf/organisatie';
SELECT MIN (sk.mld_srtkenmerk_kenmerktype), MIN (sk.mld_srtkenmerk_lengte)
INTO v_srtkenmerk_type, v_srtkenmerk_lengte
FROM mld_kenmerk k, mld_srtkenmerk sk
WHERE k.mld_kenmerk_verwijder IS NULL
AND k.mld_kenmerk_key = 64628
AND k.mld_stdmelding_key = v_stdmelding_key
AND k.mld_kenmerk_niveau = 'S'
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key;
IF v_srtkenmerk_type = 'C' AND v_organisatie IS NOT NULL
THEN
INSERT INTO mld_kenmerkmelding (mld_melding_key, mld_kenmerk_key, mld_kenmerkmelding_waarde)
VALUES (v_melding_key, 64628, SUBSTR (v_organisatie, 1, v_srtkenmerk_lengte));
END IF;
v_errormsg := 'Fout toevoegen kenmerk E-mail';
SELECT MIN (sk.mld_srtkenmerk_kenmerktype), MIN (sk.mld_srtkenmerk_lengte)
INTO v_srtkenmerk_type, v_srtkenmerk_lengte
FROM mld_kenmerk k, mld_srtkenmerk sk
WHERE k.mld_kenmerk_verwijder IS NULL
AND k.mld_kenmerk_key = 64648
AND k.mld_stdmelding_key = v_stdmelding_key
AND k.mld_kenmerk_niveau = 'S'
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key;
IF v_srtkenmerk_type = 'C' AND v_email1 IS NOT NULL
THEN
INSERT INTO mld_kenmerkmelding (mld_melding_key, mld_kenmerk_key, mld_kenmerkmelding_waarde)
VALUES (v_melding_key, 64648, SUBSTR (v_email1, 1, v_srtkenmerk_lengte));
END IF;
v_errormsg := 'Fout toevoegen kenmerk E-mail (opnieuw invullen)';
SELECT MIN (sk.mld_srtkenmerk_kenmerktype), MIN (sk.mld_srtkenmerk_lengte)
INTO v_srtkenmerk_type, v_srtkenmerk_lengte
FROM mld_kenmerk k, mld_srtkenmerk sk
WHERE k.mld_kenmerk_verwijder IS NULL
AND k.mld_kenmerk_key = 64649
AND k.mld_stdmelding_key = v_stdmelding_key
AND k.mld_kenmerk_niveau = 'S'
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key;
IF v_srtkenmerk_type = 'C' AND v_email2 IS NOT NULL
THEN
INSERT INTO mld_kenmerkmelding (mld_melding_key, mld_kenmerk_key, mld_kenmerkmelding_waarde)
VALUES (v_melding_key, 64649, SUBSTR (v_email2, 1, v_srtkenmerk_lengte));
END IF;
v_errormsg := 'Fout toevoegen kenmerk Telefoonnummer';
SELECT MIN (sk.mld_srtkenmerk_kenmerktype), MIN (sk.mld_srtkenmerk_lengte)
INTO v_srtkenmerk_type, v_srtkenmerk_lengte
FROM mld_kenmerk k, mld_srtkenmerk sk
WHERE k.mld_kenmerk_verwijder IS NULL
AND k.mld_kenmerk_key = 64650
AND k.mld_stdmelding_key = v_stdmelding_key
AND k.mld_kenmerk_niveau = 'S'
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key;
IF v_srtkenmerk_type = 'C' AND v_telefoonnr IS NOT NULL
THEN
INSERT INTO mld_kenmerkmelding (mld_melding_key, mld_kenmerk_key, mld_kenmerkmelding_waarde)
VALUES (v_melding_key, 64650, SUBSTR (v_telefoonnr, 1, v_srtkenmerk_lengte));
END IF;
v_errormsg := 'Fout toevoegen kenmerk Vraagstuk';
SELECT MIN (sk.mld_srtkenmerk_kenmerktype), MIN (sk.mld_srtkenmerk_lengte)
INTO v_srtkenmerk_type, v_srtkenmerk_lengte
FROM mld_kenmerk k, mld_srtkenmerk sk
WHERE k.mld_kenmerk_verwijder IS NULL
AND k.mld_kenmerk_key = 64651
AND k.mld_stdmelding_key = v_stdmelding_key
AND k.mld_kenmerk_niveau = 'S'
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key;
IF v_srtkenmerk_type = 'C' AND v_vraagstuk IS NOT NULL
THEN
INSERT INTO mld_kenmerkmelding (mld_melding_key, mld_kenmerk_key, mld_kenmerkmelding_waarde)
VALUES (v_melding_key, 64651, SUBSTR (v_vraagstuk, 1, v_srtkenmerk_lengte));
END IF;
v_errormsg := 'Fout toevoegen kenmerk Doelstelling (wat wil je bereiken)';
SELECT MIN (sk.mld_srtkenmerk_kenmerktype), MIN (sk.mld_srtkenmerk_lengte)
INTO v_srtkenmerk_type, v_srtkenmerk_lengte
FROM mld_kenmerk k, mld_srtkenmerk sk
WHERE k.mld_kenmerk_verwijder IS NULL
AND k.mld_kenmerk_key = 64652
AND k.mld_stdmelding_key = v_stdmelding_key
AND k.mld_kenmerk_niveau = 'S'
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key;
IF v_srtkenmerk_type = 'C' AND v_doelstelling IS NOT NULL
THEN
INSERT INTO mld_kenmerkmelding (mld_melding_key, mld_kenmerk_key, mld_kenmerkmelding_waarde)
VALUES (v_melding_key, 64652, SUBSTR (v_doelstelling, 1, v_srtkenmerk_lengte));
END IF;
v_errormsg := 'Fout toevoegen kenmerk Aantal deelnemers (geschat)';
SELECT MIN (sk.mld_srtkenmerk_kenmerktype)
INTO v_srtkenmerk_type
FROM mld_kenmerk k, mld_srtkenmerk sk
WHERE k.mld_kenmerk_verwijder IS NULL
AND k.mld_kenmerk_key = 64653
AND k.mld_stdmelding_key = v_stdmelding_key
AND k.mld_kenmerk_niveau = 'S'
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key;
IF v_srtkenmerk_type = 'N' AND fac.safe_to_number (v_aantal) IS NOT NULL
THEN
INSERT INTO mld_kenmerkmelding (mld_melding_key, mld_kenmerk_key, mld_kenmerkmelding_waarde)
VALUES (v_melding_key, 64653, v_aantal);
END IF;
v_errormsg := 'Fout toevoegen kenmerk Gewenste datum voor de sessie (dd-mm-jjjj)';
SELECT MIN (sk.mld_srtkenmerk_kenmerktype), MIN (sk.mld_srtkenmerk_lengte)
INTO v_srtkenmerk_type, v_srtkenmerk_lengte
FROM mld_kenmerk k, mld_srtkenmerk sk
WHERE k.mld_kenmerk_verwijder IS NULL
AND k.mld_kenmerk_key = 64654
AND k.mld_stdmelding_key = v_stdmelding_key
AND k.mld_kenmerk_niveau = 'S'
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key;
IF v_srtkenmerk_type = 'C' AND v_datum IS NOT NULL
THEN
INSERT INTO mld_kenmerkmelding (mld_melding_key, mld_kenmerk_key, mld_kenmerkmelding_waarde)
VALUES (v_melding_key, 64654, SUBSTR (v_datum, 1, v_srtkenmerk_lengte));
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);
v_errormsg := 'Fout toevoegen originele mail';
SELECT MIN (sk.mld_srtkenmerk_kenmerktype)
INTO v_srtkenmerk_type
FROM mld_kenmerk k, mld_srtkenmerk sk
WHERE k.mld_kenmerk_verwijder IS NULL
AND k.mld_kenmerk_key = -1
AND k.mld_stdmelding_key = v_stdmelding_key
AND k.mld_kenmerk_niveau = 'S'
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key;
IF v_srtkenmerk_type = 'M'
THEN
INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde)
VALUES (psessionid, 'kenmerkorgmailpath', 'MLD\M' || TO_CHAR (TRUNC (v_melding_key / 1000), 'FM0000') || '___\M' || v_melding_key || '\' || 999 || '\');
END IF;
ELSE
-- Ignore afzender.
INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde)
VALUES (psessionid, 'errormsg', 'Afzender [' || pfrom || '] ongeldig - Neem contact op met uw systeembeheerder');
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 ');
VALUES (psessionid, 'errormsg', 'Ontvanger [' || pto || '] ongeldig - Neem contact op met uw systeembeheerder');
END CASE;
EXCEPTION
WHEN OTHERS
@@ -28747,7 +29205,7 @@ EXCEPTION
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.writelog ('PROCESSEMAIL', 'E', 'RWSN_processemail afgebroken!', '[' || pfrom || '] ' || 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 ');
VALUES (psessionid, 'errormsg', 'Database fout - Neem contact op met uw systeembeheerder');
COMMIT;
END;
/