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:
Suzan Wiegerinck
2016-04-20 07:08:28 +00:00
parent af70b82e97
commit fe125c2a8a

View File

@@ -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;
/