YKPN#84338 -- Mail2melindg evenement aanvraag ondersteuning

svn path=/Customer/trunk/; revision=69578
This commit is contained in:
Norbert Wassink
2025-06-30 07:18:52 +00:00
parent e285a91669
commit 912174f881

View File

@@ -26,7 +26,12 @@ SET DEFINE OFF
CREATE OR REPLACE PACKAGE YKPN
AS
PROCEDURE mail_evenementaanvraag(pfrom IN VARCHAR2,
pto IN VARCHAR2,
psubject IN VARCHAR2,
pbody IN VARCHAR2,
psessionid IN VARCHAR2,
pemailkey IN NUMBER);
PROCEDURE set_bez_pincode (p_bezoekers_key IN NUMBER);
@@ -135,10 +140,324 @@ END;
CREATE OR REPLACE PACKAGE BODY YKPN
AS
PROCEDURE mail_evenementaanvraag(pfrom IN VARCHAR2,
pto IN VARCHAR2,
psubject IN VARCHAR2,
pbody IN VARCHAR2,
psessionid IN VARCHAR2,
pemailkey IN NUMBER)
AS
CURSOR sel (p_table IN VARCHAR2)
is
SELECT fud.fac_usrdata_omschr Tekstlabel,
fud.fac_usrdata_omschr2 controle,
(SELECT mld_stdmelding_key
FROM mld_stdmelding sm
WHERE sm.mld_stdmelding_key = fud.FAC_USRDATA_PRIJS
AND sm.mld_stdmelding_verwijder IS NULL
AND ( sm.mld_stdmelding_vervaldatum IS NULL
OR sm.mld_stdmelding_vervaldatum > SYSDATE)) stdmelding_key
FROM fac_usrdata fud, fac_usrtab fut
WHERE UPPER (fut.fac_usrtab_naam) = UPPER ('EvenementAanvraa')
AND fud.fac_usrtab_key = fut.fac_usrtab_key
-- AND UPPER (fud.fac_usrdata_code) LIKE UPPER ('Formulier%')
AND fud.FAC_USRDATA_VERWIJDER IS NULL
AND ( fud.FAC_USRDATA_VERVALDATUM IS NULL
OR fud.FAC_USRDATA_VERVALDATUM > SYSDATE);
v_errormsg VARCHAR2 (1000);
v_errorhint VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_error NUMBER;
v_eigentabel VARCHAR2(20);
v_value VARCHAR2(4000);
v_kenmerk_key NUMBER;
v_reserveringnr_label VARCHAR2 (1000);
v_omschrijving_label VARCHAR2 (1000);
v_aanvrager_label VARCHAR2 (1000);
v_onderwerp_label VARCHAR2 (1000);
v_datum_label VARCHAR2 (1000);
v_starttijd_label VARCHAR2 (1000);
v_eindtijd_label VARCHAR2 (1000);
v_genodigden_label VARCHAR2 (1000);
v_stdmelding_key NUMBER;
v_melding_key NUMBER;
v_onrgoed_key NUMBER;
v_locatie_key NUMBER;
v_perslid_key NUMBER;
v_rrr_key NUMBER;
v_reservering_key NUMBER;
v_reservering_nr VARCHAR2(200);
v_aanvrager_email prs_perslid.prs_perslid_email%TYPE;
v_onderwerp mld_melding.mld_melding_onderwerp%type;
v_omschrijving VARCHAR2(4000);
v_alg_gebouw_key alg_gebouw.alg_gebouw_key%TYPE;
v_datum VARCHAR2(4000);
v_starttijd VARCHAR2(4000);
v_eindtijd VARCHAR2(4000);
v_genodigden VARCHAR2(4000);
v_stdmelding_uvt mld_stdmelding.mld_stdmelding_t_uitvoertijd%TYPE
:= MLD_T_UITVOERTIJD (NULL, NULL); -- constructor initialisatie
FUNCTION findstr (p_body IN VARCHAR2, p_begin IN VARCHAR2, p_eind IN VARCHAR2)
RETURN VARCHAR2
AS
BEGIN
RETURN SUBSTR (
p_body,
INSTR (p_body, p_begin) + LENGTH (p_begin),
INSTR (p_body, p_eind, INSTR (p_body, p_begin) + LENGTH (p_begin))
- (INSTR (p_body, p_begin) + LENGTH (p_begin)));
END;
FUNCTION getKenmerkKey (p_kenmerk_label IN VARCHAR2, p_stmelding_key IN NUMBER)
RETURN NUMBER
AS
v_kenmerk_key NUMBER;
BEGIN
v_kenmerk_key:=-1;
SELECT mld_kenmerk_key
INTO v_kenmerk_key
FROM mld_kenmerk k
WHERE UPPER(k.mld_kenmerk_omschrijving) = UPPER(p_kenmerk_label)
AND k.mld_kenmerk_verwijder IS NULL
AND k.MLD_STDMELDING_KEY=p_stmelding_key;
RETURN v_kenmerk_key;
END;
BEGIN
v_eigentabel:='EvenementAanvraa';
v_errorhint:='Ophalen eigen tabel met instellingen';
v_stdmelding_key:=3801; -- Ondersteuning evenementen
v_errormsg:='Ophalen standaardmelding mislukt';
SELECT mld_stdmelding_key
INTO v_stdmelding_key
from fac_usrdata fud, fac_usrtab fut, mld_stdmelding sm
WHERE UPPER(fut.FAC_USRTAB_NAAM)=UPPER(v_eigentabel)
AND fud.fac_usrtab_key = fut.fac_usrtab_key
AND UPPER(fud.fac_usrdata_code)='STDMELDING'
AND sm.mld_stdmelding_key=fac.safe_to_number(fud.fac_usrdata_omschr);
v_error:=0;
v_reserveringnr_label:= 'Reserveringsnummer:';
v_omschrijving_label:='Geef een omschrijving van het evenement:';
v_aanvrager_label:='Wie is de opdrachtgever?';
v_onderwerp_label:='Wat is de naam van het evenement?';
v_datum_label:='Datum evenement';
v_starttijd_label:='Begintijd';
v_eindtijd_label:='Eindtijd';
DELETE imp_log WHERE imp_log_applicatie = 'MAIL_EVENEMENTAANVRAAG'; -- AND imp_log_datum < SYSDATE - 14;
-- De bais velden inlezen
v_errorhint := 'Opzoeken velden in de mail';
v_reserveringnr_label:='Reserveringsnummer:';
v_reservering_nr := findstr(pbody, v_reserveringnr_label,CHR(10));
v_aanvrager_email := findstr(pbody, v_aanvrager_label|| CHR(10),CHR(10));
v_onderwerp := findstr(pbody, v_onderwerp_label|| CHR(10),CHR(10));
v_omschrijving := findstr(pbody, v_omschrijving_label|| CHR(10),CHR(10));
fac.writelog('MAIL_EVENEMENTAANVRAAG', 'I', 'v_reservering_nr='||v_reservering_nr ,'');
fac.writelog('MAIL_EVENEMENTAANVRAAG', 'I', 'v_aanvrager_email='||v_aanvrager_email, '');
fac.writelog('MAIL_EVENEMENTAANVRAAG', 'I', 'v_onderwerp='||v_onderwerp ,'');
fac.writelog('MAIL_EVENEMENTAANVRAAG', 'I', 'v_omschrijving='||v_omschrijving, '');
v_errormsg:='Ophalen aanvrager mislukt';
BEGIN
SELECT prs_perslid_key
INTO v_perslid_key
FROM prs_perslid
WHERE UPPER(prs_perslid_email) = UPPER(v_aanvrager_email)
AND prs_perslid_verwijder IS NULL
AND (prs_perslid_inactief IS NULL OR prs_perslid_inactief > SYSDATE);
EXCEPTION
WHEN NO_DATA_FOUND THEN
v_perslid_key:=3;
END;
fac.writelog('MAIL_EVENEMENTAANVRAAG', 'I', 'v_perslid_key='||v_perslid_key ,'');
IF LENGTH(v_reservering_nr)>1
THEN
BEGIN
SELECT DECODE(m.alg_onrgoed_niveau,
'L', a.alg_locatie_key,
'G', a.alg_gebouw_key,
'V', a.alg_verdieping_key,
'R', a.alg_ruimte_key,
'H', NULL,
NULL) v_onrgoed_key,
a.alg_locatie_key,
rrr.res_rsv_ruimte_key,
rrr.res_reservering_key
INTO v_onrgoed_key,
v_locatie_key,
v_rrr_key,
v_reservering_key
FROM mld_stdmelding m,
res_rsv_ruimte rrr,
res_ruimte_opstelling rro,
res_ruimte rr,
res_alg_ruimte rar,
alg_v_allonrgoed_gegevens a
WHERE rrr.res_reservering_key = fac.safe_to_number(v_reservering_nr)
AND rro.res_ruimte_opstel_key = rrr.res_ruimte_opstel_key
AND rr.res_ruimte_key = rro.res_ruimte_key
AND rar.res_ruimte_key = rr.res_ruimte_key
AND a.alg_ruimte_key = rar.alg_ruimte_key
AND m.mld_stdmelding_key=v_stdmelding_key;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
v_errormsg:='De reservering Nr is niet gevonden';
v_error:=1;
END;
fac.writelog('MAIL_EVENEMENTAANVRAAG', 'I', 'v_locatie_key='||v_locatie_key ,'');
fac.writelog('MAIL_EVENEMENTAANVRAAG', 'I', 'v_onrgoed_key='||v_onrgoed_key ,'');
fac.writelog('MAIL_EVENEMENTAANVRAAG', 'I', 'v_rrr_key='||v_rrr_key ,'');
ELSE
v_errormsg:='De reservering Nr niet in de email gevonden';
v_error:=1;
END IF;
IF v_error=0 THEN
INSERT INTO mld_melding (mld_melding_module,
mld_meldbron_key,
mld_alg_locatie_key,
mld_alg_onroerendgoed_keys,
mld_melding_datum,
mld_melding_onderwerp,
mld_melding_omschrijving,
mld_melding_status,
mld_melding_t_uitvoertijd,
mld_stdmelding_key,
prs_perslid_key,
prs_perslid_key_voor,
prs_kostenplaats_key,
mld_melding_spoed,
mld_melding_kto,
res_rsv_ruimte_key)
VALUES ('MLD',
4, -- email
v_locatie_key,
v_onrgoed_key,
SYSDATE,
v_onderwerp,
v_omschrijving,
2,
v_stdmelding_uvt,
v_stdmelding_key,
v_perslid_key,
v_perslid_key,
NULL,
3, -- prio normaal
0,
v_rrr_key)
RETURNING mld_melding_key
INTO v_melding_key;
fac.writelog('MAIL_EVENEMENTAANVRAAG', 'I', 'v_melding_key='||v_melding_key ,'');
-- Gaan we de reservereing updaten met de melding_key
v_errormsg := 'Fout bij updte reservering';
UPDATE res_reservering set mld_melding_key=v_melding_key WHERE res_reservering_key=v_reservering_key;
-- Mail in de notitie
v_errormsg := 'Fout bij toevoegen melding notitie';
INSERT INTO mld_melding_note(mld_melding_key,
mld_melding_note_aanmaak,
prs_perslid_key,
mld_melding_note_flag,
mld_melding_note_omschrijving)
VALUES(v_melding_key,
SYSDATE,
3,
0,
pbody);
-- update we nu de kenmerken
v_errormsg := 'Fout bij toevoegen toevoegen kenmerk';
FOR rec IN sel(v_eigentabel)
LOOP
v_errormsg := 'Fout bij opzoeken van label '||rec.Tekstlabel;
v_value:=findstr(pbody, rec.Tekstlabel|| CHR(10),CHR(10));
v_errormsg := 'Fout bij toevoegen toevoegen kenmerk '||rec.Tekstlabel;
v_kenmerk_key := getKenmerkKey(rec.Tekstlabel, v_stdmelding_key);
IF LENGTH(v_value)>0 AND v_kenmerk_key>0 THEN
mld.upsertmeldingkenmerk(v_kenmerk_key, v_melding_key, v_value);
fac.writelog('MAIL_EVENEMENTAANVRAAG', 'I', rec.Tekstlabel||'-'||v_value||'('||v_kenmerk_key||')', '');
END IF;
END LOOP;
-- Starten we nu de workflow
MLD.mld_nextworkflowstep (v_melding_key, -1);
fac.writelog('MAIL_EVENEMENTAANVRAAG', 'I', 'Workflow gestart', '');
COMMIT;
ELSE
fac.writelog('MAIL_EVENEMENTAANVRAAG', 'E', 'Melding niet aangemaakt ', '');
fac.writelog('MAIL_EVENEMENTAANVRAAG', 'E', 'Reden : '||v_errormsg, '');
END IF;
EXCEPTION
WHEN OTHERS
THEN
fac.writelog (
'PROCESSEMAIL',
'W',
'Mail kon niet verwerkt worden afzender: '
|| pfrom
|| '['
|| v_errormsg
|| ']',
'OTHERS (error '
|| SQLCODE
|| '/'
|| SUBSTR (SQLERRM, 1, 100)
|| ')');
INSERT INTO fac_result (fac_result_sessionid,
fac_result_naam,
fac_result_waarde)
VALUES (psessionid,
'errormsg',
'Database fout - Neem contact op met uw systeembeheerder');
END;
PROCEDURE set_bez_pincode (p_bezoekers_key IN NUMBER)