YKPN#84338 -- Mail2melindg evenement aanvraag ondersteuning
svn path=/Customer/trunk/; revision=69578
This commit is contained in:
321
YKPN/ykpn.sql
321
YKPN/ykpn.sql
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user