From b627adc62a67f90e9cecee1cba5ae8d3db6f28e4 Mon Sep 17 00:00:00 2001 From: Erik Groener Date: Wed, 14 Jun 2017 07:36:50 +0000 Subject: [PATCH] FSN#40517 Klantspecifieke leveranciers imports werken in 2017.1 mogelijk niet svn path=/Customer/trunk/; revision=34255 --- MDUX/mdux.sql | 262 +++++++++++++++++++++++++------------------------- VGLD/vgld.sql | 66 ++++++------- 2 files changed, 164 insertions(+), 164 deletions(-) diff --git a/MDUX/mdux.sql b/MDUX/mdux.sql index 0ae3d3761..bd887d4d4 100644 --- a/MDUX/mdux.sql +++ b/MDUX/mdux.sql @@ -25,13 +25,13 @@ SET DEFINE OFF CREATE OR REPLACE PROCEDURE mdux_post_import_perslid (p_import_key IN NUMBER) AS BEGIN - + UPDATE fac_imp_perslid SET prs_afdeling_naam = prs_afdeling_naam || prs_kenmerk1 WHERE fac_import_key = p_import_key AND LENGTH(prs_afdeling_naam || prs_kenmerk1) <= 10; -- lengte-conditie omdat afdelingsnaam max. 10 lang mag zijn. Ongeldige perslid-records worden zo op voorhand uitgesloten, en niet geupdate. - + END; / @@ -44,30 +44,30 @@ AS v_errorhint VARCHAR2 (400); BEGIN - + v_errorhint := 'Generieke update'; -- de sequence array staat beschreven in PRS_PAC.SRC bij de prs.import_perslid proc - + -- Let op: afdelingcode (kolomnaam Afdnr.) is nog NIET het afdelingscode, maar het 1e gedeelte ervan. -- De kolom erna (Kostendrager) moet erachter worden geplakt, in AFAS zijn dat bij MDUX 2 velden, die tezamen het afdelingscode vormen. -- Dat gebeurt in de post_import functie, die de afdelingscode (afdnr + kostendrager) alsnog korrekt vult. -- Daarom gaat kostendrager (kolom 7) in kenmerkenveld 1 (positie 27). -- Dus hier wordt afdelingscode (plaats nummer 7 in de string '0;0;0;0;0;0;6;4;3;1;' voor een deel gevuld (het moet gevuld zijn, records zonde afd.nr komen anders niet in de import tabel terecht. - + prs.import_perslid (p_import_key, '0;0;0;0;0;0;6;4;3;1;' || - '2;0;0;0;0;11;10;9;0;5;' || + '2;0;0;0;0;11;10;9;0;5;' || '8;12;0;0;0;0;7;0;0;0;'|| '0;0;0;0;0;0;0;0;0;0;'|| - '0;0;0;0;0;0', + '0;0;0;0;0;0', 'Roepnaam;Voorletters;Voorvoegsel;Achternaam;Persnr.;Afdnr.;Kostendrager;Functie;Email;Mobile;Telefoon;Loginnaam%' - ); + ); COMMIT; -- Korrektie van de afdelingscode gebeurt nu... mdux_post_import_perslid(p_import_key); - - + + EXCEPTION WHEN OTHERS THEN @@ -95,7 +95,7 @@ CREATE OR REPLACE PROCEDURE mdux_update_perslid ( AND i.prs_perslid_nr IS NULL AND p.prs_perslid_verwijder IS NULL ORDER BY 2; - + v_count NUMBER; BEGIN @@ -127,8 +127,8 @@ BEGIN prs.delete_perslid (p_import_key, rec.prs_perslid_key); END; END LOOP; - - + + END mdux_update_perslid; / @@ -140,7 +140,7 @@ END mdux_update_perslid; CREATE OR REPLACE PROCEDURE mdux_import_budget (p_import_key IN NUMBER) AS - + v_newline VARCHAR2 (1000); -- Input line v_aanduiding VARCHAR2 (200); v_errorhint VARCHAR2 (1000); @@ -153,17 +153,17 @@ AS v_count_import NUMBER (10); v_count NUMBER; - - + + c_fielddelimitor VARCHAR2 (1) := ';'; -- De importvelden: v_prs_kostenplaats_nr VARCHAR2 (256); v_prs_kostenplaats_limiet VARCHAR2 (256); - + v_prs_kostenplaats_bh VARCHAR2 (256); v_prs_kostenplaatsgrp_oms VARCHAR2 (256); - - + + CURSOR c1 IS SELECT * @@ -192,7 +192,7 @@ BEGIN fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_kostenplaats_limiet); fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_kostenplaats_bh); fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_kostenplaatsgrp_oms); - + v_aanduiding := '[' || v_prs_kostenplaats_nr @@ -246,7 +246,7 @@ BEGIN ); END IF; END IF; - + IF LENGTH (v_prs_kostenplaats_limiet) > 8 THEN v_prs_kostenplaats_limiet := SUBSTR (v_prs_kostenplaats_limiet, 1, 8); @@ -270,7 +270,7 @@ BEGIN END IF; END IF; COMMIT; - + -- v_errorhint := 'Ongeldige loginnaam budgethouder'; v_prs_kostenplaats_bh := TRIM (v_prs_kostenplaats_bh); @@ -286,7 +286,7 @@ BEGIN || ']' ); END IF; - + -- v_errorhint := 'Ongeldige kostenplaatsgroep'; v_prs_kostenplaatsgrp_oms := TRIM (v_prs_kostenplaatsgrp_oms); @@ -302,8 +302,8 @@ BEGIN || ']' ); END IF; - - + + -- Insert geformatteerde import record IF v_ongeldig = 0 THEN @@ -378,7 +378,7 @@ EXCEPTION COMMIT; END mdux_import_budget; / - + CREATE OR REPLACE PROCEDURE mdux_update_budget ( p_import_key IN NUMBER ) @@ -392,8 +392,8 @@ IS v_count_tot NUMBER (10); v_count_error NUMBER (10); v_count NUMBER (10); - - + + v_prs_kostenplaats_key NUMBER (10); v_prs_perslid_key NUMBER(10); v_prs_kostenplaatsgrp_key NUMBER(10); @@ -406,27 +406,27 @@ IS BEGIN v_count_tot := 0; - v_count_error := 0; - - + v_count_error := 0; + + v_aanduiding := ''; - - + + -- Alle bugetten verwerken... FOR rc IN c_kpn LOOP BEGIN v_count_tot := v_count_tot + 1; - + v_errorhint := 'Fout bij bepalen kostenplaats [' || rc.prs_kostenplaats_nr || ']'; - + SELECT prs_kostenplaats_key INTO v_prs_kostenplaats_key FROM prs_kostenplaats WHERE prs_kostenplaats_upper = UPPER(rc.prs_kostenplaats_nr) AND prs_kostenplaats_verwijder IS NULL; - - + + v_errorhint := 'Fout bij bepalen budgethouder [' || rc.prs_kostenplaats_bh || ']'; v_prs_perslid_key := NULL; IF rc.prs_kostenplaats_bh IS NOT NULL @@ -437,7 +437,7 @@ IS WHERE prs_perslid_oslogin = UPPER(rc.prs_kostenplaats_bh) AND prs_perslid_verwijder IS NULL; END IF; - + v_errorhint := 'Fout bij bepalen kostenplaatsgroep [' || rc.prs_kostenplaatsgrp_oms || ']'; v_prs_kostenplaatsgrp_key := NULL; IF rc.prs_kostenplaatsgrp_oms IS NOT NULL @@ -447,18 +447,18 @@ IS FROM prs_kostenplaatsgrp WHERE UPPER(prs_kostenplaatsgrp_oms) = UPPER(rc.prs_kostenplaatsgrp_oms); END IF; - - + + v_errorhint := 'Fout bij update budget bij kostenplaats [' || rc.prs_kostenplaats_nr || ']'; - + UPDATE prs_kostenplaats SET prs_kostenplaats_limiet = rc.prs_kostenplaats_limiet, prs_perslid_key = v_prs_perslid_key, prs_kostenplaatsgrp_key = v_prs_kostenplaatsgrp_key WHERE prs_kostenplaats_key = v_prs_kostenplaats_key; - + COMMIT; - + EXCEPTION WHEN OTHERS THEN @@ -479,10 +479,10 @@ IS COMMIT; END; END LOOP; - - - - + + + + fac.imp_writelog (p_import_key, 'S', 'Budget: verwerkte regels zonder foutmelding: ' @@ -496,8 +496,8 @@ IS '' ); COMMIT; - - + + END mdux_update_budget; / @@ -515,7 +515,7 @@ BEGIN SET ordernr = SUBSTR(ordernr,4) WHERE UPPER(ordernr) LIKE 'FCC%' AND fac_import_key = p_import_key; - + END; / @@ -562,7 +562,7 @@ BEGIN -- v_kenmerk10: 26 -- v_kenmerk11: 27 -- v_kenmerk12: 28 - + fac_import_factuur_body(p_import_key, v_seq_of_columns); mdux_post_fin_factuur_navision (p_import_key); END; @@ -581,8 +581,8 @@ AS -- Key van het kenmerk 'navision nummer ' bij de factuur c_kenmerk_key_navision_nr NUMBER(10) := 2; - - + + BEGIN @@ -699,16 +699,16 @@ AS nav.fin_factuur_navision_nr, f.fin_factuur_totaal, f.fin_factuur_totaal_btw, - CASE + CASE WHEN ROUND(f.fin_factuur_totaal + f.fin_factuur_totaal_btw,2) > 0 - THEN LPAD(TO_CHAR(100 * ROUND(f.fin_factuur_totaal + f.fin_factuur_totaal_btw,2)), 10, '0') || '-' + THEN LPAD(TO_CHAR(100 * ROUND(f.fin_factuur_totaal + f.fin_factuur_totaal_btw,2)), 10, '0') || '-' ELSE LPAD(TO_CHAR(100 * ROUND(ABS(f.fin_factuur_totaal + f.fin_factuur_totaal_btw),2)), 10, '0') || '+' END fin_factuur_totaal_inclbtw, COALESCE (b_c.prs_bedrijf_key, b_o.prs_bedrijf_key) prs_bedrijf_key, COALESCE (b_c.prs_leverancier_nr, b_o.prs_leverancier_nr) prs_leverancier_nr, fr.fin_factuurregel_totaal, fr.fin_factuurregel_btw, - CASE + CASE WHEN ROUND(fr.fin_factuurregel_totaal + fr.fin_factuurregel_btw,2) > 0 THEN LPAD(TO_CHAR(100 * ROUND(fr.fin_factuurregel_totaal + fr.fin_factuurregel_btw,2)), 10, '0') || LPAD('0',10,'0') ELSE LPAD('0',10,'0') || LPAD(TO_CHAR(100 * ROUND(ABS(fr.fin_factuurregel_totaal + fr.fin_factuurregel_btw),2)), 10, '0') @@ -727,7 +727,7 @@ AS c.cnt_contract_key, f.fin_factuur_statuses_key FROM fin_factuur f, - mdux_v_factuur_navision_nr nav, + mdux_v_factuur_navision_nr nav, fin_factuurregel fr, fin_btwtabelwaarde btw, mld_opdr o, @@ -792,16 +792,16 @@ AS nav.fin_factuur_navision_nr, f.fin_factuur_totaal, f.fin_factuur_totaal_btw, - CASE + CASE WHEN ROUND(f.fin_factuur_totaal + f.fin_factuur_totaal_btw,2) > 0 - THEN LPAD(TO_CHAR(100 * ROUND(f.fin_factuur_totaal + f.fin_factuur_totaal_btw,2)), 10, '0') || '-' + THEN LPAD(TO_CHAR(100 * ROUND(f.fin_factuur_totaal + f.fin_factuur_totaal_btw,2)), 10, '0') || '-' ELSE LPAD(TO_CHAR(100 * ROUND(ABS(f.fin_factuur_totaal + f.fin_factuur_totaal_btw),2)), 10, '0') || '+' END fin_factuur_totaal_inclbtw, b.prs_bedrijf_key, b.prs_leverancier_nr, fr.fin_factuurregel_totaal, fr.fin_factuurregel_btw, - CASE + CASE WHEN ROUND(fr.fin_factuurregel_totaal + fr.fin_factuurregel_btw,2) > 0 THEN LPAD(TO_CHAR(100 * ROUND(fr.fin_factuurregel_totaal + fr.fin_factuurregel_btw,2)), 10, '0') || LPAD('0',10,'0') ELSE LPAD('0',10,'0') || LPAD(TO_CHAR(100 * ROUND(ABS(fr.fin_factuurregel_totaal + fr.fin_factuurregel_btw),2)), 10, '0') @@ -866,7 +866,7 @@ CREATE OR REPLACE VIEW mdux_v_exp_navision_body (result, result_order) AS SELECT '' || fin_factuur_navision_nr || '' || - DECODE(fin_factuur_statuses_key, 1, '0','1') || '' + DECODE(fin_factuur_statuses_key, 1, '0','1') || '' , fin_factuur_key FROM mdux_v_factuur_geg_2_navision; @@ -905,10 +905,10 @@ BEGIN -- DE EXPORT IS OP BASIS VAN EEN VIEW GEREALISEERD, WAARNA NU ALS LAATSTE STAP NOG WAT ADMINISTRATIE VOLGT... FOR cfact IN cfactuur LOOP - + -- Zowel de factuur in tracking zetten als de status op verwerkt (=7) zetten IF cfact.fin_factuur_statuses_key = 6 - THEN + THEN -- Status akkoord kan op reguliere wijze naar verwerkt... fin.setfactuurstatus (cfact.fin_factuur_key, 7, NULL); ELSE @@ -919,7 +919,7 @@ BEGIN INTO v_count FROM mdux_v_factuur_afgewezen WHERE fin_factuur_key = cfact.fin_factuur_key; - + IF v_count = 1 THEN UPDATE fin_kenmerkfactuur @@ -930,8 +930,8 @@ BEGIN INSERT INTO fin_kenmerkfactuur (fin_factuur_key, fin_kenmerk_key, fin_kenmerkfactuur_waarde) VALUES (cfact.fin_factuur_key, c_kenmerk_key_afgewezen, '1'); END IF; - END IF; - + END IF; + fac.trackaction ('FINVER', cfact.fin_factuur_key, NULL, NULL, 'Factuur van afgewezen naar verwerkt'); UPDATE fin_factuur SET fin_factuur_statuses_key = 7 @@ -1024,15 +1024,15 @@ AS v_errormsg VARCHAR (200); oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); - + c_kenmerk_key_afgewezen NUMBER(10) := 3; - + BEGIN v_errormsg := 'Geen akties'; FOR cfact IN cfactuur LOOP - + SELECT MAX(t.fac_tracking_datum) INTO v_fac_tracking_datum_akkoord FROM fac_tracking t, fin_factuur f, fac_srtnotificatie sn @@ -1040,7 +1040,7 @@ BEGIN AND f.fin_factuur_key = cfact.fin_factuur_key AND sn.fac_srtnotificatie_key = t.fac_srtnotificatie_key AND sn.fac_srtnotificatie_code = 'FINFOK'; - + SELECT MAX(t.fac_tracking_datum) INTO v_fac_tracking_datum_afgewezen FROM fac_tracking t, fin_factuur f, fac_srtnotificatie sn @@ -1048,16 +1048,16 @@ BEGIN AND f.fin_factuur_key = cfact.fin_factuur_key AND sn.fac_srtnotificatie_key = t.fac_srtnotificatie_key AND sn.fac_srtnotificatie_code = 'FINFNO'; - + IF v_fac_tracking_datum_afgewezen IS NULL THEN IF v_fac_tracking_datum_akkoord IS NOT NULL THEN -- Factuur was oorspronkelijk akkoord, DUS weer terug op akkoord zetten. - + -- Eerst de factuur in tracking zetten... -- Omdat van 7 naar 6 niet mag/geoorloofd is, lukt het niet via -- de reguliere functie fin.setfactuurstatus (cfact.fin_factuur_key, 6, NULL); - + -- Dan maar zelf en custom-made: fac.trackaction ('FINFOK', cfact.fin_factuur_key, NULL, NULL, 'Factuur uit archief teruggezet'); UPDATE fin_factuur @@ -1065,7 +1065,7 @@ BEGIN WHERE fin_factuur_key = cfact.fin_factuur_key; END IF; -- Als beiden null zijn, dan GEEN actie (deze situatie zou niet voor mogen komen) - ELSE + ELSE IF v_fac_tracking_datum_akkoord IS NOT NULL THEN -- Factuur had kennelijk beide statussen, dus akkoord en afgewezen. @@ -1083,11 +1083,11 @@ BEGIN UPDATE fin_factuur SET fin_factuur_statuses_key = 1 WHERE fin_factuur_key = cfact.fin_factuur_key; - + DELETE FROM fin_kenmerkfactuur WHERE fin_factuur_key = cfact.fin_factuur_key AND fin_kenmerk_key = c_kenmerk_key_afgewezen; - + END IF; ELSE -- Factuur was oorspronkelijk afgewezen, DUS weer terug op afgewezen zetten. @@ -1095,11 +1095,11 @@ BEGIN UPDATE fin_factuur SET fin_factuur_statuses_key = 1 WHERE fin_factuur_key = cfact.fin_factuur_key; - + DELETE FROM fin_kenmerkfactuur WHERE fin_factuur_key = cfact.fin_factuur_key AND fin_kenmerk_key = c_kenmerk_key_afgewezen; - + END IF; END IF; END LOOP; @@ -1109,26 +1109,26 @@ END; --- Mdux stuurt geen LUC mee, afgesproken dat wanneer een externe bedrijf een url (p_bedrijfadres_url) heeft, +-- Mdux stuurt geen LUC mee, afgesproken dat wanneer een externe bedrijf een url (p_bedrijfadres_url) heeft, -- dan het bedrijf een L (Leverancier) is waar in Facilitor (bij vrije bestelaanvragen) uit gekozen kan worden.... --- Daarom in deze post-import alle bedrijven in de import met p_import_key een L markeren die een technisch adres hebben... +-- Daarom in deze post-import alle bedrijven in de import met p_import_key een L markeren die een technisch adres hebben... CREATE OR REPLACE PROCEDURE mdux_post_import_bedrijf (p_import_key IN NUMBER) AS BEGIN - + UPDATE fac_imp_ext_bedrijf SET prs_bedrijf_leverancier = 1 WHERE prs_bedrijf_order_adres IS NOT NULL; - + -- MDUX#32101: Alle leveranciers als "uitvoerende" markeren, deze gelijkgetrokken aan "Leverancier" (had ook in 1 query gekund). UPDATE fac_imp_ext_bedrijf SET prs_bedrijf_uitvoerende = 1 WHERE prs_bedrijf_order_adres IS NOT NULL; - + -- MDUX#37363: Alle leveranciers als potentieel "contractant" markeren UPDATE fac_imp_ext_bedrijf SET prs_bedrijf_contract = 1; - + END; / @@ -1138,15 +1138,15 @@ AS v_errormsg VARCHAR2 (1000); oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); - v_seq_of_columns VARCHAR(255); + v_seq_of_columns VARCHAR(255); BEGIN - -- hulpje 1;2;3;4;5;6;7;8;9;0;1;2;3;4;5;6;7;18;9;0;1;2;3;4;5;6;27;8;9;0;1;2;3 - v_seq_of_columns := '2;1;3;4;5;6;0;0;0;0;7;8;11;0;0;0;0;9;0;0;0;0;0;0;0;0;10;0;0;0;0;0;0'; + -- hulpje 1;2;3;4;5;6;7;8;9;0;1;2;3;4;5;6;7;18;9;0;1;2;3;4;5;6;27;8;9;0;1;2;3;34 + v_seq_of_columns := '2;1;3;4;5;6;0;0;0;0;7;8;11;0;0;0;0;9;0;0;0;0;0;0;0;0;10;0;0;0;0;0;0;0'; fac_import_bedrijf_body (p_import_key, v_seq_of_columns, 1); - -- Mdux stuurt geen LUC mee, afgesproken dat wanneer een externe bedrijf een url (p_bedrijfadres_url) heeft, + -- Mdux stuurt geen LUC mee, afgesproken dat wanneer een externe bedrijf een url (p_bedrijfadres_url) heeft, -- dan het bedrijf een L (Leverancier) is waar in Facilitor (bij vrije bestelaanvragen) uit gekozen kan worden.... mdux_post_import_bedrijf (p_import_key); - + EXCEPTION WHEN OTHERS THEN @@ -1164,42 +1164,42 @@ END mdux_import_bedrijf; -- Werkt de technische adres(sen) van bedrijf 'p_bedrijf_key' bij. --- Parameters: +-- Parameters: -- p_bedrijf_key (id van prs_bedrijf) -- p_bedrijfadres_url (technisch adres, b.v. mailadres. URL, FTP, ..) -- p_bedrijf_broc (1 of NULL, indien 1 dan is bedrijf als zodanig geregistreerd als p_kanaal (volgende param). -- -- Dus b.v. 1 en p_kanaal = 'B', dan is bedrijf een leverancier in Facilitor -- -- En b.v. NULL en p_kanaal = 'O', dan is bedrijf geen uitvoerende in Facilitor. -- p_kanaal is "B" (bestelopdracht), "O" (meldingpdracht) of "C" (contract) - + CREATE OR REPLACE PROCEDURE mdux_delupsert_bedrijfadres (p_bedrijf_key IN NUMBER, p_bedrijfadres_url IN VARCHAR2, p_bedrijfadres_xsl IN VARCHAR2, p_bedrijf_broc IN NUMBER, p_kanaal IN VARCHAR) AS v_count NUMBER (10); v_bedrijfadres_url prs_bedrijfadres.prs_bedrijfadres_url%TYPE; BEGIN -- In beide gevallen (insert of update) moet het Technisch adres worden bijgewerkt. - -- Als kolom p_bedrijfadres_url gevuld is (met een technisch adres), dan zal deze ook geinsert of bijgewerkt moeten worden als kanaal "p_kanaal", + -- Als kolom p_bedrijfadres_url gevuld is (met een technisch adres), dan zal deze ook geinsert of bijgewerkt moeten worden als kanaal "p_kanaal", -- en wordt deze relatie een "L" (Leverancier). -- Indien de kolom p_bedrijfadres_url niet (meer) gevuld is, en het technisich adres met "broc"-kanaal bestaat, dan wordt deze verwijderd. -- en wordt deze relatie niet langer een "L" (Leverancier). - + SELECT COUNT (*) INTO v_count FROM prs_bedrijfadres WHERE prs_bedrijf_key = p_bedrijf_key AND prs_bedrijfadres_type = p_kanaal; - + v_bedrijfadres_url := TRIM(p_bedrijfadres_url); IF v_bedrijfadres_url IS NOT NULL THEN -- We doen een soort can correctieslagje, door ff de prefix mailto: ervoor zetten als die dat nog niet heeft er er een @ in dit veld aanwezig is -- NB: @ betekent hier maar eens dat het een mailadres betreft en geen URL. O ja? Ja, laten we daar maar 'ns van uitgaan.... - + IF SUBSTR(v_bedrijfadres_url, 1, 7) <> 'mailto:' AND INSTR(v_bedrijfadres_url,'@') > 0 THEN v_bedrijfadres_url := 'mailto:' || v_bedrijfadres_url; END IF; - + -- Dit externe bedrijf heeft een technisch adres in het BRONsysteem! IF v_count = 0 THEN @@ -1223,7 +1223,7 @@ BEGIN DELETE prs_bedrijfadres WHERE prs_bedrijf_key = p_bedrijf_key AND prs_bedrijfadres_type = p_kanaal; - END IF; + END IF; END IF; ELSE -- Dit externe bedrijf heeft geen technisch adres (bij kanaal bestelopdrachten) in RBT geregistreerd @@ -1244,18 +1244,18 @@ CREATE OR REPLACE PROCEDURE mdux_post_update_bedrijf (p_import_key IN NUMBER) CURSOR c1 IS SELECT * FROM fac_imp_ext_bedrijf ib; - + v_errormsg VARCHAR2 (1000) := '-'; v_errorhint VARCHAR2 (1000) := '-'; oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); - + v_aanduiding VARCHAR2 (200) := '-'; v_bedrijf_key NUMBER (10); v_aantal_bedrijfadres_url NUMBER (10); BEGIN - + SELECT count(*) INTO v_aantal_bedrijfadres_url @@ -1263,42 +1263,42 @@ BEGIN WHERE prs_bedrijf_order_adres IS NOT NULL; -- Worden de technische adressen elders beheerd, dan bijwerken, en anders met rust laten (dan beheer in Facilitor, zal de defeault zijn) - + -- Wij gaan conclusie beheer in Facilitor of bron hier als volgt bepalen: -- indien er GEEN bedrijfsadres_url's in de bron staan, dan beheer in Facilitor. -- indien er minimaal 1 bedrijfsadres_url's in de bron staat, dan beheer in bronsysteem - + IF v_aantal_bedrijfadres_url > 0 THEN -- Beheer van technische adressen in bronsysteem, dus we gaan hier de technische adressen bijweken op basis van leveranciernummer (add/upd/del). - + FOR rec IN c1 LOOP BEGIN - + v_aanduiding := '[' || rec.prs_bedrijf_naam || '|' || rec.prs_leverancier_nr || '] '; - + v_errorhint := 'Fout bepalen bedrijf'; - + IF rec.prs_leverancier_nr IS NOT NULL THEN - + SELECT prs_bedrijf_key INTO v_bedrijf_key FROM prs_v_aanwezigbedrijf WHERE UPPER (prs_leverancier_nr) = UPPER (rec.prs_leverancier_nr); - + mdux_delupsert_bedrijfadres(v_bedrijf_key, rec.prs_bedrijf_order_adres, rec.prs_bedrijf_xsl, rec.prs_bedrijf_leverancier, 'B'); -- MDUX#32101: Voor mldopdrachten (en contracten ook maar) geen technisch adres instellen, MDUX wil dat vooralsnog handmatig versturen. -- mdux_delupsert_bedrijfadres(v_bedrijf_key, rec.prs_bedrijf_order_adres, rec.prs_bedrijf_xsl, rec.prs_bedrijf_uitvoerende, 'O'); -- mdux_delupsert_bedrijfadres(v_bedrijf_key, rec.prs_bedrijf_order_adres, rec.prs_bedrijf_xsl, rec.prs_bedrijf_contract, 'C'); - + END IF; -- rec.prs_leverancier_nr IS NULL EXCEPTION WHEN OTHERS @@ -1322,7 +1322,7 @@ BEGIN COMMIT; END; / - + CREATE OR REPLACE PROCEDURE mdux_update_bedrijf (p_import_key IN NUMBER) AS @@ -1350,7 +1350,7 @@ SELECT prs_perslid_key, || '(pers.nr: ' || prs_perslid_nr || ')', - prs_perslid_verwijder + prs_perslid_verwijder FROM prs_perslid p WHERE prs_perslid_nr IS NOT NULL; @@ -1604,8 +1604,8 @@ AS bes_bestelling_leverdatum, bdr.prs_bedrijf_naam, p1.prs_perslid_key - ORDER BY 2; - + ORDER BY 2; + CREATE OR REPLACE VIEW MDUX_V_NOTI_BES_LEV_REMINDER ( CODE, @@ -1627,7 +1627,7 @@ AS WHERE fac_usrrap_view_name = 'MDUX_V_RAP_BES_OPEN_LEV'), extra_key FROM MDUX_V_RAP_BES_OPEN_LEV - GROUP BY extra_key; + GROUP BY extra_key; -- MDUX#35089 rapport tbv bestellers inzage in bestelde artikelen CREATE OR REPLACE VIEW MDUX_V_RAP_BES_ARTIKEL_VOOR @@ -1706,13 +1706,13 @@ AS FROM bes_bestelling b1 WHERE bes_bestelling_parentkey = b.bes_bestelling_key) AND b.bes_bestelling_status NOT IN (8) - ORDER BY bes_bestelling_key; + ORDER BY bes_bestelling_key; -- MDUX#37895: Factuurmatching in financieel pakket laten plaatsvinden -> hiervoor stellen we via API onderstaande view beschikbaar... CREATE OR REPLACE VIEW mdux_bes_4_ax AS -SELECT +SELECT 'FCC' || TO_CHAR (bo.bes_bestelopdr_id) opdracht_id, b.prs_bedrijf_key, b.prs_leverancier_nr, @@ -1722,7 +1722,7 @@ SELECT NULL cnt_contract_key, BO.BES_BESTELOPDR_LEVKOSTEN, BO.BES_BESTELOPDR_KORTING, - BO.BES_BESTELOPDR_STATUS, + BO.BES_BESTELOPDR_STATUS, fac.gettrackingdate('BESOTV', bo.BES_BESTELOPDR_KEY) bes_besotv_datum, BOI.BES_BESTELOPDR_ITEM_POSNR, BOI.BES_BESTELOPDR_ITEM_OMSCHRIJV, @@ -1735,7 +1735,7 @@ SELECT prs_bedrijf b, bes_bestelling bes, bes_bestelopdr_item boi, - bes_bestelling_item bi, + bes_bestelling_item bi, prs_kostenplaats kp WHERE b.prs_bedrijf_key = bo.prs_bedrijf_key AND bo.bes_bestelopdr_key = boi.bes_bestelopdr_key @@ -1748,7 +1748,7 @@ SELECT CREATE OR REPLACE VIEW mdux_v_noti_cntreminder (code, sender, receiver, text, key, par1, par2, xkey, xemail, xmobile) -AS +AS SELECT '', '', c.prs_perslid_key_beh, 'Rappèl: Contract ' || c.cnt_contract_nummer_intern||DECODE(cnt_contract_versie, NULL, '', '.'||cnt_contract_versie) @@ -1894,12 +1894,12 @@ AS cnt_termijn ct, prs_v_perslid_fullnames_all p1, prs_bedrijf b, - cnt_contract_plaats cp1 + cnt_contract_plaats cp1 WHERE b.prs_bedrijf_key = c1.cnt_prs_bedrijf_key AND c1.ins_discipline_key = 301 AND c1.cnt_contract_termijntermijn = ct.cnt_termijn_key(+) AND c1.cnt_contract_key = cp1.cnt_contract_key (+) - AND c1.prs_perslid_key_eig = p1.prs_perslid_key(+) + AND c1.prs_perslid_key_eig = p1.prs_perslid_key(+) AND COALESCE (c1.cnt_contract_versie, '0') = (SELECT COALESCE (MAX (cnt_contract_versie), '0') FROM cnt_v_aanwezigcontract c2 @@ -2057,7 +2057,7 @@ AS cnt_alg_plaats_code, alg_gebouw_code, alg_gebouw_naam, - alg_gebouw_omschrijving + alg_gebouw_omschrijving FROM mdux_huurcontracten_tmp, alg_gebouw g, alg_locatie l WHERE l.alg_locatie_key (+) = cnt_alg_plaats_key AND COALESCE(cnt_alg_plaats_code,'L') = 'L' @@ -2132,7 +2132,7 @@ cnt_interne_doorbelasting, cnt_interne_doorbelasting_mnd ) AS -SELECT +SELECT cnt_contract_key, hc.prs_bedrijf_key, hc.alg_gebouw_key, @@ -2200,17 +2200,17 @@ SELECT AND v2.alg_verdieping_verwijder IS NULL AND r2.alg_verdieping_key = v2.alg_verdieping_key AND r2.alg_ruimte_verwijder IS NULL - AND ra2.alg_ruimte_key = r2.alg_ruimte_key + AND ra2.alg_ruimte_key = r2.alg_ruimte_key AND ra2.prs_afdeling_key = a.prs_afdeling_key AND ra2.prs_ruimteafdeling_verwijder IS NULL) / (SELECT COALESCE(SUM(prs_ruimteafdeling_bezetting),100) FROM prs_ruimteafdeling ra2, alg_verdieping v2, alg_ruimte r2, mdux_huurcontracten_gebouwen hc2 WHERE hc2.cnt_contract_key = hc.cnt_contract_key - AND v2.alg_gebouw_key = hc2.alg_gebouw_key + AND v2.alg_gebouw_key = hc2.alg_gebouw_key AND v2.alg_verdieping_verwijder IS NULL AND r2.alg_verdieping_key = v2.alg_verdieping_key AND r2.alg_ruimte_verwijder IS NULL - AND ra2.alg_ruimte_key = r2.alg_ruimte_key + AND ra2.alg_ruimte_key = r2.alg_ruimte_key AND ra2.prs_ruimteafdeling_verwijder IS NULL) ),2) mdux_interne_doorbelasting, ROUND(cnt_contract_termijnkosten_mnd * @@ -2222,17 +2222,17 @@ SELECT AND v2.alg_verdieping_verwijder IS NULL AND r2.alg_verdieping_key = v2.alg_verdieping_key AND r2.alg_ruimte_verwijder IS NULL - AND ra2.alg_ruimte_key = r2.alg_ruimte_key + AND ra2.alg_ruimte_key = r2.alg_ruimte_key AND ra2.prs_afdeling_key = a.prs_afdeling_key AND ra2.prs_ruimteafdeling_verwijder IS NULL) / (SELECT COALESCE(SUM(prs_ruimteafdeling_bezetting),100) FROM prs_ruimteafdeling ra2, alg_verdieping v2, alg_ruimte r2, mdux_huurcontracten_gebouwen hc2 WHERE hc2.cnt_contract_key = hc.cnt_contract_key - AND v2.alg_gebouw_key = hc2.alg_gebouw_key + AND v2.alg_gebouw_key = hc2.alg_gebouw_key AND v2.alg_verdieping_verwijder IS NULL AND r2.alg_verdieping_key = v2.alg_verdieping_key AND r2.alg_ruimte_verwijder IS NULL - AND ra2.alg_ruimte_key = r2.alg_ruimte_key + AND ra2.alg_ruimte_key = r2.alg_ruimte_key AND ra2.prs_ruimteafdeling_verwijder IS NULL) ),2) mdux_interne_doorbelasting_mnd FROM mdux_huurcontracten_gebouwen hc, alg_verdieping v, alg_ruimte r, prs_ruimteafdeling ra, prs_afdeling a, prs_kostenplaats k @@ -2289,7 +2289,7 @@ AS AND i.ins_alg_locatie_key = l.alg_locatie_key AND l.alg_district_key = di.alg_district_key AND s.ins_srtdeel_key = i.ins_srtdeel_key; - + CREATE OR REPLACE VIEW mdux_v_rap_keyvsfe ( soort_gebruiker, @@ -2385,7 +2385,7 @@ AS AND UPPER (oslogin) != '_FACILITOR' AND p.prs_perslid_key = st.prs_key AND pf.prs_perslid_key = p.prs_perslid_key; - + ------ payload end ------ SET DEFINE OFF diff --git a/VGLD/vgld.sql b/VGLD/vgld.sql index 875bcfeee..e696328b0 100644 --- a/VGLD/vgld.sql +++ b/VGLD/vgld.sql @@ -2038,11 +2038,11 @@ CREATE OR REPLACE PROCEDURE vgld_import_fin_factuur_delixl (p_import_key IN NUMB AS v_seq_of_columns VARCHAR(50); BEGIN - + --In de XSL: factuurnr(1);factuurdatum(2);opdrachtnr(3);omschrijving(4);bedrag(5);btwperc(6);btwbedrag(7);document(8);debiteurnr(9);opmerking(10);btw_verlegd(11);betaalkenmerk(12) --hulp voor pos : '1;2;3;4;5;6;7;8;9;0;1;2;3;14;15;16;7;8;9;0' v_seq_of_columns := '0;1;2;3;0;0;4;0;5;7;6;8;0;0;0;9;0;0;0;0'; - + -- Variabelelijst -- v_leveranciernr: 1 -- v_factuurnr: 2 (VERPLICHT, anders zet Facilitor '-' in factuurnr, en is status van factuur "Incompleet") @@ -2065,67 +2065,67 @@ BEGIN -- v_kenmerk1: 19 -- v_kenmerk1: 20 -- v_boekmaand: 21 - + fac_import_factuur_body(p_import_key, v_seq_of_columns); vgld_post_fin_factuur_delixl (p_import_key); END; / --- +-- -- CUST: post processing van: -- 1) Factuurregelnummers conform de bestelopdracht-regelnummers (want die krijgen we van DeliXML weer mee terug, en da's handig om te vergelijken indien dat nodig mocht zijn) -- Deze had wat mij betreft ook in standaard fac_update_factuur gemogen, echter daar ontbreekt de sortering daarop, en is de sortering DESC (had ASC gemogen). -- 2) voor verwerking van kenmerk 'kostensoort' (grootboekrekening) - + CREATE OR REPLACE PROCEDURE vgld_post_update_factuur_deli (p_import_key IN NUMBER) AS v_fac_usrtab_key fac_usrtab.fac_usrtab_key%TYPE; v_fac_usrdata_omschr fac_usrdata.fac_usrdata_omschr%TYPE; v_prs_kostensoort_key prs_kostensoort.prs_kostensoort_key%TYPE; v_fin_kostensoort_key prs_kostensoort.prs_kostensoort_key%TYPE; - + CURSOR cfactuurregel_kostensoort IS SELECT DISTINCT fin_factuur_key, factuurnr, fin_factuurregel_key, kenmerk1, fac_imp_file_index FROM fac_imp_factuur WHERE fac_import_key = p_import_key; BEGIN - + -- In productie is de key van eigen tabel '$DeliXL' 101 v_fac_usrtab_key := 101; - - + + -- De betaalreferentie wordt in kenmerk 1 van fac_imp_factuur gezet, dus alle fac_imp_factuur langsgaan en verwerken - + FOR rc IN cfactuurregel_kostensoort LOOP BEGIN UPDATE fin_factuurregel SET fin_factuurregel_nr = rc.fac_imp_file_index WHERE fin_factuurregel_key = rc.fin_factuurregel_key; - + -- Kostensoorten van DeliXL (KS-D) als volgt omgezet naar kostensoort van Vogellanden (KS-V): - -- Stap a) uit VGLD#28993, via eigen tabel $DeliXL - + -- Stap a) uit VGLD#28993, via eigen tabel $DeliXL + SELECT MAX(ud.fac_usrdata_omschr) INTO v_fac_usrdata_omschr FROM fac_usrdata ud WHERE fac_usrtab_key = v_fac_usrtab_key AND ud.fac_usrdata_verwijder IS NULL AND rc.kenmerk1 LIKE ud.fac_usrdata_code; - + IF v_fac_usrdata_omschr IS NULL THEN -- We hebben nog GEEN match gevonden in de eigen tabel '$DeliXL', verder op zoek naar de kostensoort: -- Stap b) uit VGLD#28993, voorloopnul van KS-D erachter gezet (b.v. 0123 wordt 1230) - + IF SUBSTR(rc.kenmerk1,1,1) = '0' THEN -- 1e cijfer van kostensoort Deli is een 0, dus voorloopnul erachter zetten. v_fac_usrdata_omschr := SUBSTR(rc.kenmerk1,2) || SUBSTR(rc.kenmerk1,1,1); END IF; END IF; - + IF v_fac_usrdata_omschr IS NOT NULL THEN -- Dan gaan we op zoek of de kostensoort volgens stap a) of stap b) wel bestaat. @@ -2133,28 +2133,28 @@ BEGIN INTO v_prs_kostensoort_key FROM prs_kostensoort WHERE prs_kostensoort_upper = UPPER(v_fac_usrdata_omschr); - + IF v_prs_kostensoort_key IS NOT NULL THEN -- We hebben een geldige vertaling van kostensoort van Deli -> kostensoort Vogellanden. -- Nu nog ff checken of deze kostensoort al bij factuur staat, want dan hoeven we dit op factuurregel niet te zetten (dan neemt die de kostensoort van factuur 'over') - + SELECT COALESCE(f.prs_kostensoort_key,-1) INTO v_fin_kostensoort_key FROM fin_factuur f, fin_factuurregel fr WHERE f.fin_factuur_key = fr.fin_factuur_key AND fr.fin_factuurregel_key = rc.fin_factuurregel_key; - + IF v_fin_kostensoort_key <> v_prs_kostensoort_key THEN -- De kostensoort is NIET dezelfde als bij factuur, dus we gaan hem op factuurregel nivo zetten. UPDATE fin_factuurregel SET prs_kostensoort_key = v_prs_kostensoort_key - WHERE fin_factuurregel_key = rc.fin_factuurregel_key; + WHERE fin_factuurregel_key = rc.fin_factuurregel_key; END IF; END IF; END IF; - + EXCEPTION WHEN OTHERS THEN @@ -2173,7 +2173,7 @@ CREATE OR REPLACE PROCEDURE vgld_update_fin_factuur_delixl (p_import_key IN NUMB AS BEGIN -- Standaard FCLT verwerk import facturen - + fac_update_factuur (p_import_key); -- CUST: post processing van: -- 1) Factuurregelnummers conform de bestelopdracht-regelnummers (want die krijgen we van DeliXML weer mee terug, en da's handig om te vergelijken indien dat nodig mocht zijn) @@ -2197,11 +2197,11 @@ CREATE OR REPLACE PROCEDURE vgld_import_fin_factuur_od (p_import_key IN NUMBER) AS v_seq_of_columns VARCHAR(50); BEGIN - + --In de XSL: factuurnr(1);factuurdatum(2);opdrachtnr(3);omschrijving(4);bedrag(5);btwperc(6);btwbedrag(7);document(8);debiteurnr(9);opmerking(10);btw_verlegd(11);betaalkenmerk(12) --hulp voor pos : '1;2;3;4;5;6;7;8;9;0;1;2;3;14;15;16;7;8;9;0' v_seq_of_columns := '0;1;2;3;0;0;4;0;5;7;6;0;0;0;0;0;0;0;0;0'; - + -- Variabelelijst -- v_leveranciernr: 1 -- v_factuurnr: 2 (VERPLICHT, anders zet Facilitor '-' in factuurnr, en is status van factuur "Incompleet") @@ -2224,7 +2224,7 @@ BEGIN -- v_kenmerk1: 19 -- v_kenmerk1: 20 -- v_boekmaand: 21 - + fac_import_factuur_body(p_import_key, v_seq_of_columns); END; / @@ -2250,16 +2250,16 @@ AS BEGIN -- VGLD stuurt geen LUC mee, afgesproken dat elke leverancier LUC gaat zijn (leverancier, uitvoerende en contractant). -- Daarom in deze post-import alle bedrijven in de import met p_import_key een LUC markeren. - + UPDATE fac_imp_ext_bedrijf SET prs_bedrijf_leverancier = 1, prs_bedrijf_uitvoerende = 1, prs_bedrijf_contract = 1; - - -- Alle @@ (deze worden in de XSL geplaatst) worden door CR/LF vervangen. + + -- Alle @@ (deze worden in de XSL geplaatst) worden door CR/LF vervangen. UPDATE fac_imp_ext_bedrijf SET prs_bedrijf_opmerking = replace(prs_bedrijf_opmerking, '@@',CHR (10)); - + END; / @@ -2269,13 +2269,13 @@ AS v_errormsg VARCHAR2 (1000); oracle_err_num NUMBER; oracle_err_mes VARCHAR2 (200); - v_seq_of_columns VARCHAR(255); + v_seq_of_columns VARCHAR(255); BEGIN - -- hulpje 1;2;3;4;5;6;7;8;9;0;1;2;3;4;5;6;7;8;9;0;1;2;3;4;5;6;7;8;9;0;1;2;3 - v_seq_of_columns := '2;1;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;3;0;0;0;4;0;0'; + -- hulpje 1;2;3;4;5;6;7;8;9;0;1;2;3;4;5;6;7;8;9;0;1;2;3;4;5;6;7;8;9;0;1;2;3;4 + v_seq_of_columns := '2;1;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;3;0;0;0;0;4;0;0'; fac_import_bedrijf_body (p_import_key, v_seq_of_columns, 0); vgld_post_import_ext_bedrijf (p_import_key); - + EXCEPTION WHEN OTHERS THEN