From b29771c60666af7bc109caa82316446fa4d4bbeb Mon Sep 17 00:00:00 2001 From: Arthur Egberink Date: Thu, 16 Nov 2017 16:27:10 +0000 Subject: [PATCH] CSUN#40729 -- Automatisering Facilitor koppelingen (ABN AMRO e.v.a.) svn path=/Customer/trunk/; revision=36029 --- CSUN/CSUN.sql | 89 +++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 83 insertions(+), 6 deletions(-) diff --git a/CSUN/CSUN.sql b/CSUN/CSUN.sql index 89a4ec318..f737b6d81 100644 --- a/CSUN/CSUN.sql +++ b/CSUN/CSUN.sql @@ -676,6 +676,10 @@ AS OR v_client = 241 -- Arcadis OR v_client = 801 -- PostNL Pakket OR v_client = 344 -- ABN Amro + OR v_client = 381 -- Mayfield + OR v_client = 301 -- Humanitas + OR v_client = 382 -- KPN Retail + OR v_client = 321 -- Tennet THEN SELECT alg_locatie_key INTO v_locatie_key @@ -697,6 +701,7 @@ AS AND aogkc.alg_kenmerk_key = 1000; -- Client ELSIF v_client = 621 -- DB Schenker OR v_client = 641 -- Alliance + OR v_client = 841 -- KPN (Yask) THEN SELECT alg_locatie_key INTO v_locatie_key @@ -828,10 +833,12 @@ AS v_flag_on_bonote NUMBER (10); v_from VARCHAR2 (4000); v_body VARCHAR2 (4000); + m_body VARCHAR2 (4000); v_locatie_code VARCHAR2 (1000); -- om te voorkomen dat we foutmeldingen krijgen als de locatie niet bepaald kan worden. v_pos NUMBER; v_externnr VARCHAR2 (1000); v_omschrijving_ruimte VARCHAR2(1000); + v_client NUMBER; BEGIN errormsg := '(0x143)'; v_externnr := NULL; @@ -845,6 +852,7 @@ BEGIN END IF; v_body := pbody; + m_body := pbody; -- DBMS_OUTPUT.PUT_LINE('v_from: '||v_from); @@ -862,6 +870,17 @@ BEGIN AND prs_link_key = p.prs_perslid_key AND UPPER (kl.prs_kenmerklink_waarde) = UPPER (v_from))); + BEGIN + SELECT fac.safe_to_number (prs_kenmerklink_waarde) + INTO v_client + FROM prs_kenmerklink + WHERE prs_kenmerk_key = 1080 AND prs_link_key = sender; + EXCEPTION WHEN NO_DATA_FOUND + THEN + v_client := NULL; + END; + + CASE WHEN UPPER (pto) LIKE 'SERVICEDESK@%' OR UPPER (pto) LIKE 'DJI@%' THEN @@ -887,6 +906,8 @@ BEGIN v_body := REPLACE(v_body, ',', ','); -- komma v_body := REPLACE(v_body, '-', '-'); -- min teken v_body := REPLACE(v_body, '.', '.'); -- punt + v_body := REPLACE(v_body, '/', '/'); + v_body := REPLACE(v_body, ':', ':'); -- dubbele punt v_body := REPLACE(v_body, ' ' || CHR (10) || CHR (13), CHR (10) || CHR (13)); -- soms komt er ineens een een spatie achter de tag. -- gaat het om een normale werkbon, dan is v_pos > 0; anders gaat het om een klacht. v_pos := INSTR (v_body, '--> Werkbon'); @@ -905,7 +926,7 @@ BEGIN v_externnr := csun_get_html_valuepair (v_body, 'Aanvraagnr.', 'Omschrijving aanvraag'); - v_body := + m_body := csun_get_html_valuepair (v_body, 'Naam', 'Telefoonnr.') @@ -954,8 +975,63 @@ BEGIN -- zoek de locatie v_locatie_code := csun_get_html_valuepair (v_body, 'Object', 'Postcode'); - v_locatie_code := SUBSTR(v_locatie_code, 8, INSTR(v_locatie_code, ' ')); + v_locatie_code := SUBSTR(v_locatie_code, 9, INSTR(v_locatie_code, ' ',1,2)-9); END IF; + + -- Humanitas heeft de locatiecode in het onderwerp staan + IF v_client = 301 + THEN + BEGIN + SELECT lc.alg_onrgoedkenmerk_waarde + INTO v_locatie_code + FROM alg_onrgoedkenmerk lc, + alg_onrgoedkenmerk cl + WHERE lc.alg_onrgoed_key = cl.alg_onrgoed_key + AND lc.alg_kenmerk_key = 1203 -- Klant locatiecode + AND fac.safe_to_number (cl.alg_onrgoedkenmerk_waarde) = v_client + AND cl.alg_kenmerk_key = 1000 -- Client + AND psubject LIKE '%' || lc.alg_onrgoedkenmerk_waarde || '%'; + EXCEPTION WHEN OTHERS + THEN + v_locatie_code := NULL; + END; + END IF; + + -- Mayfield bericht bevat een regel als: Betreft locatie : Apeldoorn, Wapenrustlaan 11-31 (NLV03001) + IF v_client = 381 -- Mayfield + THEN + -- eerst de regel vinden + v_locatie_code := SUBSTR(v_body, INSTR(v_body, 'Betreft locatie'), -- start vd regel + INSTR(v_body, CHR(13), -- op zoek naar het einde vd regel + INSTR(v_body, 'Betreft locatie') -- waarbij we beginnen te zoeken aan het begin vd regel + )- + INSTR(v_body, 'Betreft locatie')); -- verminderd met het begin vd regel omdat we alleen het verschil mee moeten geven. + -- nu de locatiecode + v_locatie_code := SUBSTR(v_locatie_code, INSTR(v_locatie_code, '(')+1, INSTR(v_locatie_code, ')')-1 - (INSTR(v_locatie_code, '(')+1)); + END IF; + + -- KPN Retail geeft de locatie aan op de regel: Filiaalnummer: 702 + IF v_client = 382 -- KPN Retail + THEN + -- eerst de regel vinden + v_locatie_code := SUBSTR(v_body, INSTR(v_body, 'Filiaalnummer: ') + LENGTH ('Filiaalnummer: '), -- start vd regel + INSTR(v_body, CHR(13), -- op zoek naar het einde vd regel + INSTR(v_body, 'Filiaalnummer:') -- waarbij we beginnen te zoeken aan het begin vd regel + )- + (INSTR(v_body, 'Filiaalnummer: ') + LENGTH ('Filiaalnummer: '))); -- verminderd met het begin vd regel omdat we alleen het verschil mee moeten geven. + + END IF; + + -- Tennet + -- Afleveradres: TenneT TSO B.V. + -- Frankeneng 116 + -- 6716 AA EDE + IF v_client = 321 -- Tennet + THEN + v_pos := INSTR(v_body, 'Afleveradres: TenneT TSO B.V.'); -- We zoeken de postcode onder het afleveradres + v_pos := INSTR(v_body, CHR(10), v_pos, 2); -- Vervolgens zoeken we de tweede line feed vanaf het afleveradres + v_locatie_code := UPPER(SUBSTR(v_body, v_pos +1, 7)); + END IF; EXCEPTION WHEN OTHERS THEN @@ -1142,6 +1218,7 @@ BEGIN mld_melding_status, mld_melding_t_uitvoertijd, mld_stdmelding_key, + mld_alg_locatie_key, mld_melding_externnr, prs_perslid_key, prs_perslid_key_voor, @@ -1153,7 +1230,7 @@ BEGIN SUBSTR ( psubject || CHR (13) || REPLACE ( - SUBSTR (v_body, + SUBSTR (m_body, 1, 4000 - (LENGTH (psubject) + 1)), CHR (13) @@ -1166,6 +1243,7 @@ BEGIN NULL, MLD_T_UITVOERTIJD (2, 'D'), stdmelding, + 28581, -- Locatie onbekend. SUBSTR(v_externnr,1,30), sender, sender, @@ -1263,7 +1341,7 @@ BEGIN IF v_locatie_code IS NOT NULL THEN - csun_set_kenmerk('MLD',181, mldkey, v_locatie_code, 0); -- locatie_code klant kenmerk + csun_set_kenmerk('MLD',281, mldkey, v_locatie_code, 0); -- locatie_code klant kenmerk CSUN.mld_after_insert (mldkey); END IF; -- Log het binnenkomende bericht als dat nodig is. @@ -1759,8 +1837,7 @@ BEGIN p_kenmerk_waarde); END IF; END IF; - WHEN 'S' - THEN + ELSE SELECT COUNT ( * ) INTO v_count FROM mld_kenmerkmelding