pnbr#36004 Functie en procedure toegevoegd voor verwerken Choose Your Own Device aanvraag vanuit SAP
svn path=/Customer/trunk/; revision=29048
This commit is contained in:
226
PNBR/pnbr.sql
226
PNBR/pnbr.sql
@@ -3760,6 +3760,232 @@ AS
|
||||
AND tr.fac_tracking_refkey(+) = m.mld_melding_key
|
||||
AND tr2.fac_tracking_refkey(+) = m.mld_melding_key;
|
||||
|
||||
|
||||
--- PNBR#36004 Functie voor het 'uitlezen' van de mail body vanuit SAP voor een 'Choose Your Own Device' aanvraag
|
||||
CREATE OR REPLACE FUNCTION pnbr_get_html_value (p_text IN VARCHAR2,
|
||||
p_start IN VARCHAR2)
|
||||
RETURN VARCHAR2
|
||||
AS
|
||||
v_pos NUMBER;
|
||||
v_pos_begin NUMBER;
|
||||
v_pos_eind NUMBER;
|
||||
v_result VARCHAR2(4000);
|
||||
BEGIN
|
||||
|
||||
-- Controleer of de begintag aanwezig is. Zo nee, dan hebben we niets te tonen.
|
||||
-- Bepaal de positie waar de opgegeven start tekst begint
|
||||
v_pos := INSTR (p_text, p_start);
|
||||
|
||||
-- Als de opgegeven start tekst niet gevonden wordt dan is v_pos 0
|
||||
IF v_pos = 0
|
||||
THEN
|
||||
RETURN NULL;
|
||||
END IF;
|
||||
|
||||
-- Bij pnbr staat de beginpositie op dezelfde regel.
|
||||
-- De beginpositie wordt bepaald door startpositie van de opgegeven start tekst Personeelsnummer de lengte van de starttekst + carriage return (CHR13) + linefeed (CHR10)
|
||||
v_pos_begin :=
|
||||
INSTR (p_text, CHR (13) || CHR (10) || p_start )
|
||||
+ LENGTH (p_start)
|
||||
+ 2;
|
||||
|
||||
--- Eind positie is altijd einde van de regel
|
||||
v_pos_eind :=
|
||||
INSTR (p_text,
|
||||
CHR (13) || CHR (10),
|
||||
v_pos_begin,
|
||||
1);
|
||||
|
||||
-- v_result is alles vanaf de startpositie tot aan het einde
|
||||
v_result := SUBSTR (p_text, v_pos_begin, v_pos_eind - v_pos_begin);
|
||||
|
||||
-- Soms wordt een tag niet gevonden. Dan wordt de hele body inclusief CSS meegestuurd.
|
||||
-- Dat willen we natuurlijk niet. Daarom maken we daar maar een lege tag van.
|
||||
IF LENGTH(v_result) > 1000
|
||||
THEN
|
||||
v_result := p_start;
|
||||
END IF;
|
||||
|
||||
RETURN v_result;
|
||||
END;
|
||||
|
||||
|
||||
-- PNBR#36004 Procedure voor het verwerken van 'Choose Your Own Device' aanvraag vanuit SAP
|
||||
CREATE OR REPLACE PROCEDURE pnbr_processemail
|
||||
(pfrom IN VARCHAR2,
|
||||
pto IN VARCHAR2,
|
||||
psubject IN VARCHAR2,
|
||||
pbody IN VARCHAR2,
|
||||
psessionid IN VARCHAR2,
|
||||
puserkey IN NUMBER DEFAULT NULL)
|
||||
AS
|
||||
sender prs_perslid.prs_perslid_key%TYPE;
|
||||
persnr prs_perslid.prs_perslid_nr%type;
|
||||
kostenplaats prs_afdeling.prs_kostenplaats_key%TYPE;
|
||||
v_mldkey mld_melding.mld_melding_key%TYPE;
|
||||
defaultstdmelding fac_setting.fac_setting_default%TYPE;
|
||||
errormsg fac_result.fac_result_waarde%TYPE;
|
||||
v_soort_aanvraag VARCHAR2(50);
|
||||
v_model_omschrijving VARCHAR2(40);
|
||||
v_plus_standaard VARCHAR2(30);
|
||||
v_eigen_bijdrage VARCHAR2(8);
|
||||
v_from VARCHAR2 (1000);
|
||||
v_mld_meldbron_key NUMBER (10);
|
||||
|
||||
BEGIN
|
||||
|
||||
-- Choose Your Own Device aanvragen vanuit SAP naar mld_stdmelding_key 7441 (Tablet) of mld_stdmelding_key 7442 (Telefoon)
|
||||
v_soort_aanvraag := pnbr_get_html_value (pbody,'Soort Choose Your Own : ');
|
||||
|
||||
IF v_soort_aanvraag='Tablet'
|
||||
THEN
|
||||
defaultstdmelding := '7441';
|
||||
END IF;
|
||||
|
||||
IF v_soort_aanvraag='Telefoon'
|
||||
THEN
|
||||
defaultstdmelding := '7442';
|
||||
END IF;
|
||||
|
||||
-- Meldbron = SAP, dus systeem = 6
|
||||
v_mld_meldbron_key := 6;
|
||||
|
||||
-- Bij PNBR is de melder terug te halen uit de body van de email obv personeelsnummer aanvrager
|
||||
-- Op basis van dit personeelsnummer kan de melder en de kostenplaats bepaald worden
|
||||
persnr := pnbr_get_html_value (pbody,'Personeelsnummer aanvrager : ');
|
||||
|
||||
SELECT prs_perslid_key, d.prs_kostenplaats_key
|
||||
INTO sender, kostenplaats
|
||||
FROM prs_perslid p, prs_afdeling d
|
||||
WHERE p.prs_afdeling_key = d.prs_afdeling_key
|
||||
AND prs_perslid_nr = persnr
|
||||
AND prs_perslid_verwijder is null;
|
||||
|
||||
-- Bepaal de kenmerkwaarden die bij de melding moeten worden weggeschreven
|
||||
v_model_omschrijving := pnbr_get_html_value (pbody,'Model omschrijving : ');
|
||||
v_plus_standaard := pnbr_get_html_value (pbody,'Plus/standaard model : ');
|
||||
v_eigen_bijdrage := pnbr_get_html_value (pbody,'Eigen bijdrage : ');
|
||||
|
||||
-- Registreer de melding in Facilitor
|
||||
BEGIN
|
||||
INSERT INTO mld_melding (mld_melding_module,
|
||||
mld_meldbron_key,
|
||||
mld_melding_datum,
|
||||
mld_alg_locatie_key,
|
||||
mld_melding_omschrijving,
|
||||
mld_melding_status,
|
||||
mld_stdmelding_key,
|
||||
prs_perslid_key,
|
||||
prs_perslid_key_voor,
|
||||
prs_kostenplaats_key,
|
||||
mld_melding_spoed)
|
||||
VALUES ('MLD',
|
||||
v_mld_meldbron_key,
|
||||
SYSDATE,
|
||||
2, -- Provinciehuis Provincie Noord Brabant, alg_locatie_key=2
|
||||
SUBSTR (
|
||||
psubject || CHR (13)
|
||||
|| REPLACE (
|
||||
SUBSTR (pbody,
|
||||
1,
|
||||
4000 - (LENGTH (psubject) + 2)),
|
||||
CHR (13) || CHR (10) || CHR (13) || CHR (10),
|
||||
CHR (13) || CHR (10)),
|
||||
1,
|
||||
4000), -- verwijder onnodige witregels
|
||||
NULL,
|
||||
defaultstdmelding,
|
||||
sender,
|
||||
sender,
|
||||
kostenplaats,
|
||||
3)
|
||||
RETURNING mld_melding_key
|
||||
INTO v_mldkey;
|
||||
|
||||
-- Vullen van kenmerk Model omschrijving (key = 9161) voor CYO aanvraag tablet (mld_key 7441)
|
||||
IF v_model_omschrijving is not null and defaultstdmelding='7441'
|
||||
THEN
|
||||
INSERT INTO mld_kenmerkmelding (mld_melding_key, mld_kenmerk_key, mld_kenmerkmelding_waarde)
|
||||
VALUES (v_mldkey, 9161 , v_model_omschrijving);
|
||||
END IF;
|
||||
|
||||
-- Vullen van kenmerk Plus/standaard (key = 9162) voor CYO aanvraag tablet (mld_key 7441)
|
||||
IF v_plus_standaard is not null and defaultstdmelding='7441'
|
||||
THEN
|
||||
INSERT INTO mld_kenmerkmelding (mld_melding_key, mld_kenmerk_key, mld_kenmerkmelding_waarde)
|
||||
VALUES (v_mldkey, 9162 , v_plus_standaard);
|
||||
END IF;
|
||||
|
||||
-- Vullen van kenmerk Eigen bijdrag (key = 9163) voor CYO aanvraag tablet (mld_key 7441)
|
||||
IF v_eigen_bijdrage is not null and defaultstdmelding='7441'
|
||||
THEN
|
||||
INSERT INTO mld_kenmerkmelding (mld_melding_key, mld_kenmerk_key, mld_kenmerkmelding_waarde)
|
||||
VALUES (v_mldkey, 9163 , v_eigen_bijdrage);
|
||||
END IF;
|
||||
|
||||
-- Vullen van kenmerk Model omschrijving (key = 9164) voor CYO aanvraag telefoon (mld_key 7442)
|
||||
IF v_model_omschrijving is not null and defaultstdmelding='7442'
|
||||
THEN
|
||||
INSERT INTO mld_kenmerkmelding (mld_melding_key, mld_kenmerk_key, mld_kenmerkmelding_waarde)
|
||||
VALUES (v_mldkey, 9164 , v_model_omschrijving);
|
||||
END IF;
|
||||
|
||||
-- Vullen van kenmerk Plus/standaard (key = 9162) voor CYO aanvraag telefoon (mld_key 7442)
|
||||
IF v_plus_standaard is not null and defaultstdmelding='7442'
|
||||
THEN
|
||||
INSERT INTO mld_kenmerkmelding (mld_melding_key, mld_kenmerk_key, mld_kenmerkmelding_waarde)
|
||||
VALUES (v_mldkey, 9165 , v_plus_standaard);
|
||||
END IF;
|
||||
|
||||
-- Vullen van kenmerk Eigen bijdrag (key = 9163) voor CYO aanvraag telefoon (mld_key 7442)
|
||||
IF v_eigen_bijdrage is not null and defaultstdmelding='7442'
|
||||
THEN
|
||||
INSERT INTO mld_kenmerkmelding (mld_melding_key, mld_kenmerk_key, mld_kenmerkmelding_waarde)
|
||||
VALUES (v_mldkey, 9166 , v_eigen_bijdrage);
|
||||
END IF;
|
||||
|
||||
mld.setmeldingstatus (v_mldkey, 2, sender);
|
||||
|
||||
INSERT INTO fac_result (fac_result_sessionid,
|
||||
fac_result_naam,
|
||||
fac_result_waarde)
|
||||
VALUES (psessionid, 'maillog', 'Geregistreerd onder melding ' || v_mldkey);
|
||||
|
||||
END;
|
||||
|
||||
|
||||
IF errormsg IS NOT NULL
|
||||
THEN
|
||||
INSERT INTO fac_result (fac_result_sessionid,
|
||||
fac_result_naam,
|
||||
fac_result_waarde)
|
||||
VALUES (psessionid, 'errormsg', errormsg);
|
||||
END IF;
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
fac.writelog (
|
||||
'PROCESSEMAIL',
|
||||
'W',
|
||||
'Mail kon niet verwerkt worden afzender: '
|
||||
|| pfrom
|
||||
|| '['
|
||||
|| 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;
|
||||
/
|
||||
|
||||
BEGIN adm.systrackscriptId('$Id$', 0); END;
|
||||
/
|
||||
|
||||
|
||||
Reference in New Issue
Block a user