1167 lines
55 KiB
SQL
1167 lines
55 KiB
SQL
--
|
|
-- $Id$
|
|
--
|
|
-- Script containing customer specific sql statements for the FACILITOR database
|
|
-- Voor dbuser invullen: - indien script voor 1 klant is: 'MARX' (de klantcode, zoals vermeld in fac_version_cust)
|
|
-- - script is voor meerdere klanten: 'AAXX' (de groepcode, zoals vermeld in fac_version_group)
|
|
-- - script is voor meerdere klanten met naam volgens een bepaald patroon: '^AA|^ASMS|^GULU|^NMMS|^RABO|^ZKHM'
|
|
-- Ook als het script gedraaid wordt voor de verkeerde cust wordt er een logfile gemaakt.
|
|
-- (dit in tegenstelling tot sample_xxxx.sql)
|
|
|
|
DEFINE thisfile = 'MAREON_BES.SQL'
|
|
DEFINE dbuser = '^MARX'
|
|
|
|
SET ECHO ON
|
|
SET DEFINE ON
|
|
COLUMN fcltlogfile NEW_VALUE fcltlogfile NOPRINT;
|
|
COLUMN fcltcusttxt NEW_VALUE fcltcusttxt NOPRINT;
|
|
WHENEVER SQLERROR CONTINUE;
|
|
SELECT adm.getscriptspoolfile('&thisfile') AS fcltlogfile FROM DUAL;
|
|
SPOOL &fcltlogfile
|
|
WHENEVER SQLERROR EXIT;
|
|
SELECT adm.checkscriptcust('&dbuser') AS fcltcusttxt FROM DUAL;
|
|
WHENEVER SQLERROR CONTINUE;
|
|
---------------------------------------
|
|
PROMPT &fcltcusttxt
|
|
---------------------------------------
|
|
SET DEFINE OFF
|
|
|
|
------ payload begin ------
|
|
|
|
|
|
--------------------- MAREON BESTELLINGEN --------------------- MAREON BESTELLINGEN --------------------- MAREON BESTELLINGEN ---------------------
|
|
|
|
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
|
---- BESTELLINGEN -- BESTELLINGEN -- BESTELLINGEN -- BESTELLINGEN -- BESTELLINGEN -- BESTELLINGEN -- BESTELLINGEN -- BESTELLINGEN -- BESTELLINGEN -- BESTELLINGEN ----
|
|
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
|
|
|
|
|
----------------------------------------------------------- Idem voor de leveranciers bestelopdrachten -----------------------------------------------------------------------
|
|
|
|
CREATE OR REPLACE PROCEDURE marx_import_bes_leveranciers (p_import_key IN NUMBER)
|
|
AS
|
|
v_errormsg VARCHAR2 (1000);
|
|
oracle_err_num NUMBER;
|
|
oracle_err_mes VARCHAR2 (200);
|
|
v_seq_of_columns VARCHAR (255);
|
|
BEGIN
|
|
-- 1 2 31 32 25 3 4 5 6 7 8 9 10 11 12 13 14 15 16 33
|
|
-- 1.bedrijfsnaam 2.leveranciernummer 3.IBAN 4.IBAN G-rekening 5.AX-id 6.bezoek_adres 7.bezoek_postcode 8.bezoek_plaats 9.bezoek_land 10.post_adres 11.post_postcode 12.post_plaats 13.post_land 14.bedrijf_telefoon 15.bedrijf_fax 16.bedrijf_email 17.contactpersoon 18.contact_telefoon 19.contact_fax 20. login
|
|
|
|
-- hulpje 1;2;3;4;5;6; 7; 8; 9;10;11;12;13;14;15;16;7;8;9;0;1;2;3;4;5;6;7;8;9;0;1;2;3;34
|
|
v_seq_of_columns := '1;2;6;7;8;9;10;11;12;13;14;15;16;17;18;19;0;0;0;0;0;0;0;0;5;0;0;0;0;0;0;3;4;20';
|
|
fac_import_bedrijf_body (p_import_key, v_seq_of_columns, 0);
|
|
marx_post_import_leveranciers (p_import_key, 'L');
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
|
v_errormsg := 'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
|
fac.imp_writelog (p_import_key,
|
|
'E',
|
|
v_errormsg,
|
|
'Inleesproces relaties afgebroken!');
|
|
END;
|
|
/
|
|
|
|
CREATE OR REPLACE PROCEDURE marx_update_bes_leveranciers (p_import_key IN NUMBER)
|
|
AS
|
|
BEGIN
|
|
-- Parameter p_sync = 0 of 1:
|
|
-- 0 = er wordt niet gesynchroniseerd (op leveranciersnummer), maar gewoon (ala FIP) aangevuld. Elke leverancier wordt toegevoegd.
|
|
-- 1 = er wel wel gesynchroniseerd (op leveranciernummer), dus add + update + delete
|
|
fac_update_bedrijf_body (p_import_key, 0);
|
|
marx_post_update_leveranciers (p_import_key, 'BES');
|
|
END;
|
|
/
|
|
|
|
|
|
-- 3c Import tbv AX-bestellingen
|
|
|
|
|
|
CREATE OR REPLACE PROCEDURE mar_import_gen_bes_opdrachten (p_import_key IN NUMBER)
|
|
IS
|
|
c_fielddelimitor VARCHAR2 (1) := ';';
|
|
v_newline VARCHAR2 (4096); -- Input line
|
|
v_aanduiding VARCHAR2 (2000);
|
|
v_errorhint VARCHAR2 (1000);
|
|
v_errormsg VARCHAR2 (1000);
|
|
oracle_err_num NUMBER;
|
|
oracle_err_mes VARCHAR2 (200);
|
|
header_is_valid NUMBER := 0;
|
|
v_ongeldig NUMBER (1);
|
|
v_count_tot NUMBER (10);
|
|
v_count_import NUMBER (10);
|
|
v_count NUMBER;
|
|
|
|
-- De importvelden:
|
|
gln_supplier VARCHAR2 (256);
|
|
gln_buyer VARCHAR2 (256);
|
|
bes_afleveradres_code VARCHAR2 (256);
|
|
bes_afleveradres_naam VARCHAR2 (256);
|
|
bes_afleveradres_straat_huisnr VARCHAR2 (256);
|
|
bes_afleveradres_postcode VARCHAR2 (256);
|
|
bes_afleveradres_plaats VARCHAR2 (256);
|
|
bes_bestelling_memo VARCHAR2 (1024);
|
|
bes_ordernr VARCHAR2 (256);
|
|
bes_aflever_datum VARCHAR2 (256);
|
|
bes_orderline_nr VARCHAR2 (256);
|
|
bes_orderline_gtin VARCHAR2 (256);
|
|
bes_orderline_art_code VARCHAR2 (256);
|
|
bes_orderline_art_descr VARCHAR2 (2048);
|
|
bes_orderline_art_eenheid VARCHAR2 (256);
|
|
bes_orderline_art_aantal VARCHAR2 (256);
|
|
bes_orderline_art_prijs VARCHAR2 (256);
|
|
bes_orderline_art_btw VARCHAR2 (256);
|
|
|
|
|
|
CURSOR c1
|
|
IS
|
|
SELECT *
|
|
FROM fac_imp_file
|
|
WHERE fac_import_key = p_import_key
|
|
ORDER BY fac_imp_file_index;
|
|
BEGIN
|
|
DELETE FROM mar_imp_ax_bestelling
|
|
WHERE fac_import_key = p_import_key;
|
|
|
|
COMMIT;
|
|
|
|
v_count_tot := 0;
|
|
v_count_import := 0;
|
|
v_ongeldig := 0;
|
|
FOR rec1 IN c1
|
|
LOOP
|
|
BEGIN
|
|
v_newline := rec1.fac_imp_file_line;
|
|
v_aanduiding := '';
|
|
v_errorhint := 'Fout bij opvragen te importeren rij';
|
|
|
|
-- Lees alle veldwaarden
|
|
|
|
|
|
-- 01 - GLN Supplier
|
|
v_aanduiding := 'Probleem bij gln_supplier: ';
|
|
fac.imp_getfield_nr (v_newline,
|
|
c_fielddelimitor,
|
|
1,
|
|
gln_supplier);
|
|
|
|
-- 02 - GLN Buyer
|
|
v_aanduiding := 'Probleem bij gln_buyer: ';
|
|
fac.imp_getfield_nr (v_newline,
|
|
c_fielddelimitor,
|
|
2,
|
|
gln_buyer);
|
|
|
|
-- 03 - bes_afleveradres_code
|
|
v_aanduiding := 'Probleem bij bes_afleveradres_code: ';
|
|
fac.imp_getfield_nr (v_newline,
|
|
c_fielddelimitor,
|
|
3,
|
|
bes_afleveradres_code);
|
|
|
|
-- 04 - bes_afleveradres_naam
|
|
v_aanduiding := 'Probleem bij bes_afleveradres_naam: ';
|
|
fac.imp_getfield_nr (v_newline,
|
|
c_fielddelimitor,
|
|
4,
|
|
bes_afleveradres_naam);
|
|
|
|
|
|
-- 05 - bes_afleveradres_straat_huisnr
|
|
v_aanduiding := 'Probleem bij bes_afleveradres_straat_huisnr: ';
|
|
fac.imp_getfield_nr (v_newline,
|
|
c_fielddelimitor,
|
|
5,
|
|
bes_afleveradres_straat_huisnr);
|
|
|
|
-- 06 - bes_afleveradres_postcode
|
|
v_aanduiding := 'Probleem bij bes_afleveradres_postcode: ';
|
|
fac.imp_getfield_nr (v_newline,
|
|
c_fielddelimitor,
|
|
6,
|
|
bes_afleveradres_postcode);
|
|
|
|
-- 07 - bes_afleveradres_plaats
|
|
v_aanduiding := 'Probleem bij bes_afleveradres_plaats: ';
|
|
fac.imp_getfield_nr (v_newline,
|
|
c_fielddelimitor,
|
|
7,
|
|
bes_afleveradres_plaats);
|
|
|
|
-- 08 - bes_bestelling_memo
|
|
v_aanduiding := 'Probleem bij bes_bestelling_memo: ';
|
|
fac.imp_getfield_nr (v_newline,
|
|
c_fielddelimitor,
|
|
8,
|
|
bes_bestelling_memo);
|
|
|
|
-- 09 - bes_ordernr
|
|
v_aanduiding := 'Probleem bij bes_ordernr: ';
|
|
fac.imp_getfield_nr (v_newline,
|
|
c_fielddelimitor,
|
|
9,
|
|
bes_ordernr);
|
|
|
|
-- 10 - bes_aflever_datum
|
|
v_aanduiding := 'Probleem bij bes_aflever_datum: ';
|
|
fac.imp_getfield_nr (v_newline,
|
|
c_fielddelimitor,
|
|
10,
|
|
bes_aflever_datum);
|
|
|
|
-- 11 - bes_orderline_nr
|
|
v_aanduiding := 'Probleem bij bes_orderline_nr: ';
|
|
fac.imp_getfield_nr (v_newline,
|
|
c_fielddelimitor,
|
|
11,
|
|
bes_orderline_nr);
|
|
|
|
-- 12 - bes_orderline_gtin
|
|
v_aanduiding := 'Probleem bij bes_orderline_gtin: ';
|
|
fac.imp_getfield_nr (v_newline,
|
|
c_fielddelimitor,
|
|
12,
|
|
bes_orderline_gtin);
|
|
|
|
-- 13 - bes_orderline_art_code
|
|
v_aanduiding := 'Probleem bij bes_orderline_art_code: ';
|
|
fac.imp_getfield_nr (v_newline,
|
|
c_fielddelimitor,
|
|
13,
|
|
bes_orderline_art_code);
|
|
|
|
-- 14 - bes_orderline_art_descr
|
|
v_aanduiding := 'Probleem bij bes_orderline_art_descr: ';
|
|
fac.imp_getfield_nr (v_newline,
|
|
c_fielddelimitor,
|
|
14,
|
|
bes_orderline_art_descr);
|
|
|
|
-- 15 - bes_orderline_art_eenheid
|
|
v_aanduiding := 'Probleem bij bes_orderline_art_eenheid: ';
|
|
fac.imp_getfield_nr (v_newline,
|
|
c_fielddelimitor,
|
|
15,
|
|
bes_orderline_art_eenheid);
|
|
|
|
-- 16 - bes_orderline_art_aantal
|
|
v_aanduiding := 'Probleem bij bes_orderline_art_aantal: ';
|
|
fac.imp_getfield_nr (v_newline,
|
|
c_fielddelimitor,
|
|
16,
|
|
bes_orderline_art_aantal);
|
|
|
|
-- 17 - bes_orderline_art_prijs
|
|
v_aanduiding := 'Probleem bij bes_orderline_art_prijs: ';
|
|
fac.imp_getfield_nr (v_newline,
|
|
c_fielddelimitor,
|
|
17,
|
|
bes_orderline_art_prijs);
|
|
|
|
-- 18 - bes_orderline_art_btw
|
|
v_aanduiding := 'Probleem bij bes_orderline_art_btw: ';
|
|
fac.imp_getfield_nr (v_newline,
|
|
c_fielddelimitor,
|
|
18,
|
|
bes_orderline_art_btw);
|
|
|
|
|
|
--
|
|
|
|
|
|
v_aanduiding :=
|
|
SUBSTR (
|
|
'['
|
|
|| gln_supplier
|
|
|| '|'
|
|
|| gln_buyer
|
|
|| '|'
|
|
|| bes_ordernr
|
|
|| '|'
|
|
|| bes_orderline_nr
|
|
|| '|'
|
|
|| bes_orderline_gtin
|
|
|| '|'
|
|
|| bes_orderline_art_code
|
|
|| '|'
|
|
|| bes_orderline_art_aantal
|
|
|| '] ',
|
|
1,
|
|
1000);
|
|
|
|
-- Ik controleer of ik een geldige header heb, dat is: in de juiste kolommen
|
|
-- de juiste kolomkop. Ik controleer daarbij ALLE kolommen!
|
|
-- Ik negeer alles totdat ik een geldige header ben gepasseerd.
|
|
IF (header_is_valid = 0)
|
|
THEN
|
|
IF UPPER (gln_supplier) = 'GLN_SUPPLIER'
|
|
AND UPPER (gln_buyer) = 'GLN_BUYER'
|
|
AND UPPER (bes_afleveradres_code) = 'BES_AFLEVERADRES_CODE'
|
|
AND UPPER (bes_ordernr) = 'BES_ORDERNR'
|
|
THEN
|
|
header_is_valid := 1;
|
|
END IF;
|
|
ELSE
|
|
v_count_tot := v_count_tot + 1;
|
|
-- Controleer alle veldwaarden
|
|
|
|
|
|
--
|
|
v_errorhint := 'Ongeldig gln_supplier';
|
|
gln_supplier := TRIM (gln_supplier);
|
|
|
|
IF (gln_supplier IS NOT NULL)
|
|
THEN
|
|
IF LENGTH (gln_supplier) > 20
|
|
THEN
|
|
gln_supplier := SUBSTR (gln_supplier, 1, 20);
|
|
fac.imp_writelog (p_import_key,
|
|
'W',
|
|
v_aanduiding || 'gln_supplier te lang',
|
|
'Afgebroken tot [' || gln_supplier || ']');
|
|
END IF;
|
|
ELSE
|
|
fac.imp_writelog (p_import_key,
|
|
'E',
|
|
v_aanduiding,
|
|
v_errorhint || ' - Opdracht wordt overgeslagen');
|
|
v_ongeldig := 1;
|
|
END IF;
|
|
|
|
--
|
|
v_errorhint := 'Ongeldig gln_buyer';
|
|
gln_buyer := TRIM (gln_buyer);
|
|
|
|
IF (gln_buyer IS NOT NULL)
|
|
THEN
|
|
IF LENGTH (gln_buyer) > 20
|
|
THEN
|
|
gln_buyer := SUBSTR (gln_buyer, 1, 20);
|
|
fac.imp_writelog (p_import_key,
|
|
'W',
|
|
v_aanduiding || 'gln_buyer te lang',
|
|
'Afgebroken tot [' || gln_buyer || ']');
|
|
END IF;
|
|
ELSE
|
|
-- GLN Opdrachtgever is niet perse verplicht om mee te geven (staat ook in Mareon geregistreerd namelijk, deze nemen we over.
|
|
fac.imp_writelog (p_import_key,
|
|
'W',
|
|
v_aanduiding,
|
|
v_errorhint || ' - GLN opdrachtgever ontbreekt.');
|
|
END IF;
|
|
|
|
--
|
|
--
|
|
v_errorhint := 'Ongeldig bes_afleveradres_code';
|
|
bes_afleveradres_code := TRIM (bes_afleveradres_code);
|
|
|
|
IF (bes_afleveradres_code IS NOT NULL)
|
|
THEN
|
|
IF LENGTH (bes_afleveradres_code) > 50
|
|
THEN
|
|
bes_afleveradres_code := SUBSTR (bes_afleveradres_code, 1, 50);
|
|
fac.imp_writelog (p_import_key,
|
|
'W',
|
|
v_aanduiding || 'bes_afleveradres_code te lang',
|
|
'Afgebroken tot [' || bes_afleveradres_code || ']');
|
|
END IF;
|
|
END IF;
|
|
|
|
v_errorhint := 'Ongeldig bes_afleveradres_naam';
|
|
bes_afleveradres_naam := TRIM (bes_afleveradres_naam);
|
|
|
|
IF (bes_afleveradres_naam IS NOT NULL)
|
|
THEN
|
|
IF LENGTH (bes_afleveradres_naam) > 50
|
|
THEN
|
|
bes_afleveradres_naam := SUBSTR (bes_afleveradres_naam, 1, 50);
|
|
fac.imp_writelog (p_import_key,
|
|
'W',
|
|
v_aanduiding || 'bes_afleveradres_naam te lang',
|
|
'Afgebroken tot [' || bes_afleveradres_naam || ']');
|
|
END IF;
|
|
END IF;
|
|
|
|
v_errorhint := 'Ongeldig bes_afleveradres_straat_huisnr';
|
|
|
|
IF (bes_afleveradres_straat_huisnr IS NOT NULL)
|
|
THEN
|
|
IF LENGTH (bes_afleveradres_straat_huisnr) > 50
|
|
THEN
|
|
bes_afleveradres_straat_huisnr := SUBSTR (bes_afleveradres_straat_huisnr, 1, 50);
|
|
fac.imp_writelog (p_import_key,
|
|
'W',
|
|
v_aanduiding || 'bes_afleveradres_straat_huisnr te lang',
|
|
'Afgebroken tot [' || bes_afleveradres_straat_huisnr || ']');
|
|
END IF;
|
|
END IF;
|
|
|
|
v_errorhint := 'Ongeldig bes_afleveradres_postcode';
|
|
|
|
IF (bes_afleveradres_postcode IS NOT NULL)
|
|
THEN
|
|
IF LENGTH (bes_afleveradres_postcode) > 10
|
|
THEN
|
|
bes_afleveradres_postcode := SUBSTR (bes_afleveradres_postcode, 1, 10);
|
|
fac.imp_writelog (p_import_key,
|
|
'W',
|
|
v_aanduiding || 'bes_afleveradres_postcode te lang',
|
|
'Afgebroken tot [' || bes_afleveradres_postcode || ']');
|
|
END IF;
|
|
END IF;
|
|
|
|
v_errorhint := 'Ongeldig bes_afleveradres_plaats';
|
|
|
|
IF (bes_afleveradres_plaats IS NOT NULL)
|
|
THEN
|
|
IF LENGTH (bes_afleveradres_plaats) > 50
|
|
THEN
|
|
bes_afleveradres_plaats := SUBSTR (bes_afleveradres_plaats, 1, 50);
|
|
fac.imp_writelog (p_import_key,
|
|
'W',
|
|
v_aanduiding || 'bes_afleveradres_plaats te lang',
|
|
'Afgebroken tot [' || bes_afleveradres_plaats || ']');
|
|
END IF;
|
|
END IF;
|
|
|
|
v_errorhint := 'Ongeldig bes_bestelling_memo';
|
|
|
|
IF (bes_bestelling_memo IS NOT NULL)
|
|
THEN
|
|
bes_bestelling_memo := REPLACE (bes_bestelling_memo, '@@', CHR (10) || CHR (13));
|
|
|
|
IF LENGTH (bes_bestelling_memo) > 320
|
|
THEN
|
|
bes_bestelling_memo := SUBSTR (bes_bestelling_memo, 1, 320);
|
|
fac.imp_writelog (p_import_key,
|
|
'W',
|
|
v_aanduiding || 'Memo omschrijving te lang',
|
|
'memo wordt afgebroken tot 320 tekens');
|
|
END IF;
|
|
END IF;
|
|
|
|
v_errorhint := 'Ongeldig bes_ordernr';
|
|
|
|
IF (bes_ordernr IS NOT NULL)
|
|
THEN
|
|
IF LENGTH (bes_ordernr) > 50
|
|
THEN
|
|
bes_ordernr := SUBSTR (bes_ordernr, 1, 50);
|
|
fac.imp_writelog (p_import_key,
|
|
'W',
|
|
v_aanduiding || 'bes_ordernr te lang',
|
|
'Afgebroken tot [' || bes_ordernr || ']');
|
|
END IF;
|
|
END IF;
|
|
|
|
v_errorhint := 'Ongeldig bes_aflever_datum';
|
|
|
|
IF (bes_aflever_datum IS NOT NULL)
|
|
THEN
|
|
IF LENGTH (bes_aflever_datum) > 20
|
|
THEN
|
|
bes_aflever_datum := SUBSTR (bes_aflever_datum, 1, 20);
|
|
fac.imp_writelog (p_import_key,
|
|
'W',
|
|
v_aanduiding || 'bes_aflever_datum te lang',
|
|
'Afgebroken tot [' || bes_aflever_datum || ']');
|
|
END IF;
|
|
END IF;
|
|
|
|
v_errorhint := 'Ongeldig bes_orderline_nr';
|
|
|
|
IF (bes_orderline_nr IS NOT NULL)
|
|
THEN
|
|
IF LENGTH (bes_orderline_nr) > 10
|
|
THEN
|
|
bes_orderline_nr := SUBSTR (bes_orderline_nr, 1, 10);
|
|
fac.imp_writelog (p_import_key,
|
|
'W',
|
|
v_aanduiding || 'bes_orderline_nr te lang',
|
|
'Afgebroken tot [' || bes_orderline_nr || ']');
|
|
END IF;
|
|
END IF;
|
|
|
|
v_errorhint := 'Ongeldig bes_orderline_gtin';
|
|
|
|
IF (bes_orderline_gtin IS NOT NULL)
|
|
THEN
|
|
IF LENGTH (bes_orderline_gtin) > 32
|
|
THEN
|
|
bes_orderline_gtin := SUBSTR (bes_orderline_gtin, 1, 32);
|
|
fac.imp_writelog (p_import_key,
|
|
'W',
|
|
v_aanduiding || 'bes_orderline_gtin te lang',
|
|
'Afgebroken tot [' || bes_orderline_gtin || ']');
|
|
END IF;
|
|
END IF;
|
|
|
|
v_errorhint := 'Ongeldig bes_orderline_art_code';
|
|
|
|
IF (bes_orderline_art_code IS NOT NULL)
|
|
THEN
|
|
IF LENGTH (bes_orderline_art_code) > 32
|
|
THEN
|
|
bes_orderline_art_code := SUBSTR (bes_orderline_art_code, 1, 32);
|
|
fac.imp_writelog (p_import_key,
|
|
'W',
|
|
v_aanduiding || 'bes_orderline_art_code te lang',
|
|
'Afgebroken tot [' || bes_orderline_art_code || ']');
|
|
END IF;
|
|
END IF;
|
|
|
|
v_errorhint := 'Zowel bes_orderline_gtin als bes_orderline_art_code ontbreekt: mag niet';
|
|
|
|
-- Maar dit komt niet voor, want AX stuurt altijd een GTIN code mee, als die niet is ingevuld in TobiasAX wordt 14x0 (00000000000000) gestuurd. Betekent iets als leeg/onbekend.
|
|
-- Er is met Emmen afgesproken dat of GTIN (<>14x0) of artikelcode v.d. leverancier gevuld moet zijn voor een juiste werking.
|
|
IF (bes_orderline_gtin IS NULL AND bes_orderline_art_code IS NULL)
|
|
THEN
|
|
fac.imp_writelog (p_import_key,
|
|
'E',
|
|
v_aanduiding,
|
|
v_errorhint || ' - Opdracht wordt overgeslagen');
|
|
v_ongeldig := 1;
|
|
END IF;
|
|
|
|
v_errorhint := 'Ongeldig bes_orderline_art_descr';
|
|
|
|
IF (bes_orderline_art_descr IS NOT NULL)
|
|
THEN
|
|
IF LENGTH (bes_orderline_art_descr) > 100
|
|
THEN
|
|
bes_orderline_art_descr := SUBSTR (bes_orderline_art_descr, 1, 100);
|
|
fac.imp_writelog (p_import_key,
|
|
'W',
|
|
v_aanduiding || 'bes_orderline_art_descr te lang',
|
|
'Afgebroken tot [' || bes_orderline_art_descr || ']');
|
|
END IF;
|
|
END IF;
|
|
|
|
v_errorhint := 'Ongeldig bes_orderline_art_eenheid';
|
|
|
|
IF (bes_orderline_art_eenheid IS NOT NULL)
|
|
THEN
|
|
IF LENGTH (bes_orderline_art_eenheid) > 30
|
|
THEN
|
|
bes_orderline_art_eenheid := SUBSTR (bes_orderline_art_eenheid, 1, 30);
|
|
fac.imp_writelog (p_import_key,
|
|
'W',
|
|
v_aanduiding || 'bes_orderline_art_eenheid te lang',
|
|
'Afgebroken tot [' || bes_orderline_art_eenheid || ']');
|
|
END IF;
|
|
END IF;
|
|
|
|
v_errorhint := 'Ongeldig bes_orderline_art_aantal';
|
|
|
|
IF (COALESCE (bes_orderline_art_aantal, 0) <> 0)
|
|
THEN
|
|
IF LENGTH (bes_orderline_art_aantal) > 15
|
|
THEN
|
|
bes_orderline_art_aantal := SUBSTR (bes_orderline_art_aantal, 1, 15);
|
|
fac.imp_writelog (p_import_key,
|
|
'W',
|
|
v_aanduiding || 'bes_orderline_art_aantal te lang',
|
|
'Afgebroken tot [' || bes_orderline_art_aantal || ']');
|
|
END IF;
|
|
ELSE
|
|
fac.imp_writelog (p_import_key,
|
|
'E',
|
|
v_aanduiding,
|
|
v_errorhint || ' - Aantal is leeg of 0. Opdracht wordt overgeslagen');
|
|
v_ongeldig := 1;
|
|
END IF;
|
|
|
|
v_errorhint := 'Ongeldig bes_orderline_art_prijs';
|
|
|
|
IF (bes_orderline_art_prijs IS NOT NULL)
|
|
THEN
|
|
IF LENGTH (bes_orderline_art_prijs) > 8
|
|
THEN
|
|
bes_orderline_art_prijs := SUBSTR (bes_orderline_art_prijs, 1, 8);
|
|
fac.imp_writelog (p_import_key,
|
|
'W',
|
|
v_aanduiding || 'bes_orderline_art_prijs te lang',
|
|
'Afgebroken tot [' || bes_orderline_art_prijs || ']');
|
|
END IF;
|
|
END IF;
|
|
|
|
v_errorhint := 'Ongeldig bes_orderline_art_btw';
|
|
|
|
IF (bes_orderline_art_btw IS NOT NULL)
|
|
THEN
|
|
IF LENGTH (bes_orderline_art_btw) > 3
|
|
THEN
|
|
bes_orderline_art_btw := SUBSTR (bes_orderline_art_btw, 1, 3);
|
|
fac.imp_writelog (p_import_key,
|
|
'W',
|
|
v_aanduiding || 'bes_orderline_art_btw te lang',
|
|
'Afgebroken tot [' || bes_orderline_art_btw || ']');
|
|
END IF;
|
|
END IF;
|
|
|
|
-- Insert geformatteerde import record
|
|
IF (v_ongeldig = 0)
|
|
THEN
|
|
BEGIN
|
|
v_errorhint := 'Fout bij toevoegen regel aan importtabel mar_imp_ax_bestelling';
|
|
|
|
INSERT INTO mar_imp_ax_bestelling (fac_import_key,
|
|
mar_imp_ax_bestelling_datum,
|
|
gln_supplier,
|
|
gln_buyer,
|
|
bes_afleveradres_code,
|
|
bes_afleveradres_naam,
|
|
bes_afleveradres_straat_huisnr,
|
|
bes_afleveradres_postcode,
|
|
bes_afleveradres_plaats,
|
|
bes_bestelling_memo,
|
|
bes_ordernr,
|
|
bes_aflever_datum,
|
|
bes_orderline_nr,
|
|
bes_orderline_gtin,
|
|
bes_orderline_art_code,
|
|
bes_orderline_art_descr,
|
|
bes_orderline_art_eenheid,
|
|
bes_orderline_art_aantal,
|
|
bes_orderline_art_prijs,
|
|
bes_orderline_art_btw)
|
|
VALUES (p_import_key,
|
|
SYSDATE,
|
|
gln_supplier,
|
|
gln_buyer,
|
|
bes_afleveradres_code,
|
|
bes_afleveradres_naam,
|
|
bes_afleveradres_straat_huisnr,
|
|
bes_afleveradres_postcode,
|
|
bes_afleveradres_plaats,
|
|
bes_bestelling_memo,
|
|
bes_ordernr,
|
|
bes_aflever_datum,
|
|
bes_orderline_nr,
|
|
bes_orderline_gtin,
|
|
bes_orderline_art_code,
|
|
bes_orderline_art_descr,
|
|
bes_orderline_art_eenheid,
|
|
bes_orderline_art_aantal,
|
|
bes_orderline_art_prijs,
|
|
bes_orderline_art_btw);
|
|
|
|
COMMIT;
|
|
v_count_import := v_count_import + 1;
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
|
v_errormsg := v_errorhint || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
|
fac.imp_writelog (p_import_key,
|
|
'E',
|
|
v_aanduiding || v_errormsg,
|
|
'Ingelezen regel kan niet worden weggeschreven!');
|
|
COMMIT;
|
|
END;
|
|
END IF;
|
|
END IF;
|
|
END;
|
|
END LOOP;
|
|
IF v_ongeldig = 1
|
|
-- Het kan zijn dat de i-de bestelregel een fout heeft, dan moeten alle bestelregels ervoor, die wel goed zijn gegaan, alsnog worden verwijderd.
|
|
THEN DELETE FROM mar_imp_ax_bestelling WHERE fac_import_key = p_import_key;
|
|
END IF;
|
|
|
|
IF (header_is_valid = 0)
|
|
THEN
|
|
fac.imp_writelog (p_import_key,
|
|
'E',
|
|
'Ongeldig importbestand',
|
|
'Geen header of header niet volgens specificatie!');
|
|
ELSE
|
|
fac.imp_writelog (p_import_key,
|
|
'S',
|
|
'AX bestelopdrachten: aantal ingelezen regels: ' || TO_CHAR (v_count_tot),
|
|
'');
|
|
|
|
fac.imp_writelog (p_import_key,
|
|
'S',
|
|
'AX bestelopdrachten: aantal geldige regels: ' || TO_CHAR (v_count_import),
|
|
'');
|
|
END IF;
|
|
|
|
COMMIT;
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
|
v_errormsg := 'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
|
fac.imp_writelog (p_import_key,
|
|
'E',
|
|
v_aanduiding || v_errormsg,
|
|
v_errorhint);
|
|
COMMIT;
|
|
END mar_import_gen_bes_opdrachten;
|
|
/
|
|
|
|
|
|
|
|
CREATE OR REPLACE PROCEDURE mar_update_gen_bes_opdrachten (p_import_key IN NUMBER)
|
|
IS
|
|
v_aanduiding VARCHAR2 (2000);
|
|
v_errorhint VARCHAR2 (1000);
|
|
v_errormsg VARCHAR2 (1000);
|
|
oracle_err_num NUMBER;
|
|
oracle_err_mes VARCHAR2 (200);
|
|
v_count_tot NUMBER (10);
|
|
v_count_materiaal_tot NUMBER (10);
|
|
v_count_error NUMBER (10);
|
|
v_count_mat_error NUMBER (10);
|
|
v_count NUMBER (10);
|
|
|
|
v_ongeldig NUMBER (1);
|
|
|
|
v_bes_discipline_key NUMBER (10);
|
|
v_bes_srtgroep_key NUMBER (10);
|
|
v_bes_srtgroep_omschrijving VARCHAR2 (100);
|
|
mld_adres_key NUMBER (10);
|
|
|
|
v_bes_bestelling_key NUMBER (10);
|
|
v_bes_bestelopdr_key NUMBER (10);
|
|
bes_bestelling_status NUMBER (10);
|
|
bes_bestell_key NUMBER (10);
|
|
v_bes_srtdeel_key NUMBER (10);
|
|
bes_bestelling_item_key NUMBER (10);
|
|
|
|
v_prs_perslid_key NUMBER (10);
|
|
v_prs_bedrijf_key NUMBER (10);
|
|
v_prs_woco_key NUMBER (10);
|
|
v_ax_company_id prs_bedrijf.prs_overeenkomst_nr%TYPE;
|
|
|
|
c_kenmerk_key_bestel_ionr NUMBER (10);
|
|
--
|
|
c_kenmerk_key_aflevercode NUMBER (10);
|
|
c_kenmerk_key_aflevernaam NUMBER (10);
|
|
c_kenmerk_key_afleveradres NUMBER (10);
|
|
c_kenmerk_key_afleverpostcode NUMBER (10);
|
|
c_kenmerk_key_afleverplaats NUMBER (10);
|
|
--
|
|
c_kenmerk_key_bestelline_nr NUMBER (10);
|
|
c_kenmerk_key_artikelnr NUMBER (10);
|
|
c_kenmerk_key_artikelomschr NUMBER (10);
|
|
c_kenmerk_key_eenheid NUMBER (10);
|
|
|
|
v_overrule_success NUMBER (10);
|
|
|
|
CURSOR c_ax_bestelling
|
|
IS
|
|
SELECT gln_supplier,
|
|
bes_ordernr,
|
|
bes_aflever_datum,
|
|
bes_afleveradres_code,
|
|
bes_afleveradres_naam,
|
|
bes_afleveradres_straat_huisnr,
|
|
bes_afleveradres_postcode,
|
|
bes_afleveradres_plaats,
|
|
bes_bestelling_memo
|
|
FROM mar_imp_ax_bestelling
|
|
WHERE fac_import_key = p_import_key
|
|
GROUP BY gln_supplier,
|
|
bes_ordernr,
|
|
bes_aflever_datum,
|
|
bes_afleveradres_code,
|
|
bes_afleveradres_naam,
|
|
bes_afleveradres_straat_huisnr,
|
|
bes_afleveradres_postcode,
|
|
bes_afleveradres_plaats,
|
|
bes_bestelling_memo;
|
|
|
|
CURSOR c_ax_bestelling_lines (p_gln_supplier VARCHAR2, p_bes_ordernr VARCHAR2)
|
|
IS
|
|
SELECT *
|
|
FROM mar_imp_ax_bestelling
|
|
WHERE fac_import_key = p_import_key AND gln_supplier = p_gln_supplier AND bes_ordernr = p_bes_ordernr
|
|
ORDER BY bes_orderline_nr;
|
|
BEGIN
|
|
v_count_tot := 0;
|
|
v_count_materiaal_tot := 0;
|
|
v_count_error := 0;
|
|
v_count_mat_error := 0;
|
|
|
|
--Standaard catalogus (key 4), en daarbinnen de soortgroep (key 2) waar de artikelen van de bestelling in geplaatst worden, zie marx11.sql
|
|
v_bes_discipline_key := 4;
|
|
v_bes_srtgroep_key := 2;
|
|
--Standaard afleveradres (key 2) wat we hier gebruiken, zie marx11.sql
|
|
mld_adres_key := 2;
|
|
-- bes_bestelling_status zetten we meteen hard op 5 (omdat we de bestelopdracht ook hard aanmaken, dus ongeacht of de catalogus instelling 'autoorder'.
|
|
bes_bestelling_status := 5;
|
|
|
|
-- Standaard kenmerk-keys, zie marx11.sql
|
|
c_kenmerk_key_bestel_ionr := 6;
|
|
c_kenmerk_key_aflevercode := 1;
|
|
c_kenmerk_key_aflevernaam := 10;
|
|
c_kenmerk_key_afleveradres := 3;
|
|
c_kenmerk_key_afleverpostcode := 4;
|
|
c_kenmerk_key_afleverplaats := 5;
|
|
c_kenmerk_key_bestelline_nr := 8;
|
|
c_kenmerk_key_artikelnr := 9;
|
|
c_kenmerk_key_artikelomschr := 11;
|
|
c_kenmerk_key_eenheid := 12;
|
|
|
|
v_overrule_success := 0; -- Neutraal (geen overrule).
|
|
|
|
--------------------------
|
|
v_aanduiding := '';
|
|
|
|
-- Elke opdracht verwerken tot eventuele nieuwe srtdeel-records (via nativefunctie upsert_deel), bestelling, bestelling-items, bestelopdracht, bestelopdracht-items
|
|
|
|
|
|
v_errorhint := 'Naam van de soortgroep binnen catalogus niet gevonden, er is geen bestelopdracht aangemaakt';
|
|
|
|
-- Naam van de groep (binnen de catalogus) hebben we straks nodig bij aanmaken van artikelen (verderop)...
|
|
SELECT bes_srtgroep_omschrijving
|
|
INTO v_bes_srtgroep_omschrijving
|
|
FROM bes_srtgroep
|
|
WHERE bes_srtgroep_key = v_bes_srtgroep_key;
|
|
|
|
v_errorhint := 'SYSTEM API user van import ' || p_import_key || ' niet gevonden, er is geen bestel/opdracht aangemaakt';
|
|
|
|
SELECT prs_perslid_key
|
|
INTO v_prs_perslid_key
|
|
FROM fac_import
|
|
WHERE fac_import_key = p_import_key;
|
|
|
|
v_errorhint :=
|
|
'prs_bedrijf van SYSTEM API user van import ' || p_import_key || ' niet gevonden, er is geen melding/opdracht aangemaakt';
|
|
|
|
SELECT prs_bedrijf_key, COALESCE (prs_overeenkomst_nr, '1')
|
|
INTO v_prs_woco_key, v_ax_company_id
|
|
FROM mar_v_woco_perslid
|
|
WHERE prs_perslid_key = v_prs_perslid_key;
|
|
|
|
|
|
FOR rec_ax IN c_ax_bestelling
|
|
LOOP
|
|
BEGIN
|
|
v_ongeldig := 0;
|
|
v_count_tot := v_count_tot + 1;
|
|
|
|
v_aanduiding :=
|
|
SUBSTR ('[' || rec_ax.gln_supplier || '|' || rec_ax.bes_ordernr || '|' || rec_ax.bes_aflever_datum || '] ',
|
|
1,
|
|
1000);
|
|
|
|
-- Bestaat de leverancier obv meegegeven GLN in Mareon? Zo nee, dan kunnen deze hele bestelling overslaan...
|
|
SELECT MAX (prs_bedrijf_key)
|
|
INTO v_prs_bedrijf_key
|
|
FROM prs_bedrijf
|
|
WHERE prs_bedrijf_intern IS NULL
|
|
AND prs_bedrijf_leverancier = 1
|
|
AND prs_bedrijf_verwijder IS NULL
|
|
AND prs_leverancier_nr = rec_ax.gln_supplier;
|
|
|
|
IF (v_prs_bedrijf_key IS NULL)
|
|
THEN
|
|
-- Geen leverancier gevonden, deze bestelling gaan we skippen
|
|
-- Maar doen nog 1 poging, en we kijken of prs_bedrijf_bedrijf kan worden gevonden
|
|
|
|
SELECT prs_bedrijf_key2
|
|
INTO v_prs_bedrijf_key
|
|
FROM prs_bedrijf_bedrijf
|
|
WHERE prs_bedrijf_key1 = v_prs_woco_key
|
|
AND prs_bedrijf_externid2 = rec_ax.gln_supplier;
|
|
|
|
IF (v_prs_bedrijf_key IS NULL)
|
|
THEN
|
|
-- Nog steeds is leverancier niet gevonden, nu gaan we de bestelling skippen
|
|
fac.imp_writelog (p_import_key,
|
|
'E',
|
|
v_aanduiding || 'Leverancier is niet gevonden',
|
|
'Bestelling wordt overgeslagen');
|
|
v_ongeldig := 1;
|
|
END IF;
|
|
END IF;
|
|
|
|
-- Checken of de bestelling met het IOR voor de WOCO al bestaat, want dan niet aanmaken en updaten doen we (eerst maar eens) ook niet
|
|
SELECT MAX (b.bes_bestelling_key)
|
|
INTO v_bes_bestelling_key
|
|
FROM bes_bestelling b,
|
|
bes_kenmerkbestell k,
|
|
mar_v_woco_perslid woco1,
|
|
mar_v_woco_perslid woco2
|
|
WHERE b.bes_bestelling_key = k.bes_bestelling_key
|
|
AND k.bes_kenmerkbestell_waarde = rec_ax.bes_ordernr
|
|
AND b.prs_perslid_key = woco1.prs_perslid_key
|
|
AND woco1.prs_bedrijf_key = woco2.prs_bedrijf_key
|
|
AND woco2.prs_perslid_key = v_prs_perslid_key;
|
|
|
|
IF (v_bes_bestelling_key IS NOT NULL)
|
|
THEN
|
|
-- Bestelopdracht voor woco bestaat al, die gaan we niet nog eens aanmaken, dus overslaan.
|
|
fac.imp_writelog (p_import_key,
|
|
'W',
|
|
v_aanduiding || 'Bestelopdracht bij opdrachtgever bestaat al',
|
|
'Bestelling wordt overgeslagen');
|
|
v_ongeldig := 1;
|
|
END IF;
|
|
|
|
IF (v_ongeldig = 0)
|
|
THEN
|
|
-- Het is geldig: Bestelling is nieuw, en leverancier is gevonden, dus we kunnen de bestelling inserten...
|
|
-- We gaan nu (eenmalig) de bestelling aanmaken, voor deze bestelregel (waarop alle andere bestelregels ook aan worden gehangen).
|
|
v_errorhint := 'bes_bestelling van import ' || p_import_key || ' kan niet worden aangemaakt';
|
|
INSERT INTO bes_bestelling (bes_bestelling_module,
|
|
bes_bestelling_leverdatum,
|
|
bes_bestelling_status,
|
|
prs_perslid_key,
|
|
prs_perslid_key_voor,
|
|
bes_bestelling_opmerking,
|
|
bes_bestelling_kosten_klant,
|
|
mld_adres_key_lev,
|
|
bes_bestelling_levkosten,
|
|
bes_bestelling_korting)
|
|
VALUES ('BES',
|
|
COALESCE (fac.safe_to_date (rec_ax.bes_aflever_datum, 'yyyy-mm-dd'), TRUNC (SYSDATE)),
|
|
bes_bestelling_status,
|
|
v_prs_perslid_key,
|
|
v_prs_perslid_key,
|
|
rec_ax.bes_bestelling_memo,
|
|
1,
|
|
mld_adres_key,
|
|
0,
|
|
0)
|
|
RETURNING bes_bestelling_key
|
|
INTO v_bes_bestelling_key;
|
|
|
|
-- Nu nog wat kenmerken bij de bestelling
|
|
--
|
|
-- IONR uit AX
|
|
v_errorhint := 'externe bestel-opdrachtnummer van import ' || p_import_key || ' kan niet worden aangemaakt';
|
|
INSERT INTO bes_kenmerkbestell (bes_bestelling_key, bes_kenmerk_key, bes_kenmerkbestell_waarde)
|
|
VALUES (v_bes_bestelling_key, c_kenmerk_key_bestel_ionr, rec_ax.bes_ordernr);
|
|
v_errorhint := 'adres van import ' || p_import_key || ' kan niet worden aangemaakt';
|
|
-- Afleveradres-gegevens
|
|
INSERT INTO bes_kenmerkbestell (bes_bestelling_key, bes_kenmerk_key, bes_kenmerkbestell_waarde)
|
|
VALUES (v_bes_bestelling_key, c_kenmerk_key_aflevercode, rec_ax.bes_afleveradres_code);
|
|
|
|
INSERT INTO bes_kenmerkbestell (bes_bestelling_key, bes_kenmerk_key, bes_kenmerkbestell_waarde)
|
|
VALUES (v_bes_bestelling_key, c_kenmerk_key_aflevernaam, rec_ax.bes_afleveradres_naam);
|
|
|
|
INSERT INTO bes_kenmerkbestell (bes_bestelling_key, bes_kenmerk_key, bes_kenmerkbestell_waarde)
|
|
VALUES (v_bes_bestelling_key, c_kenmerk_key_afleveradres, rec_ax.bes_afleveradres_straat_huisnr);
|
|
|
|
INSERT INTO bes_kenmerkbestell (bes_bestelling_key, bes_kenmerk_key, bes_kenmerkbestell_waarde)
|
|
VALUES (v_bes_bestelling_key, c_kenmerk_key_afleverpostcode, rec_ax.bes_afleveradres_postcode);
|
|
|
|
INSERT INTO bes_kenmerkbestell (bes_bestelling_key, bes_kenmerk_key, bes_kenmerkbestell_waarde)
|
|
VALUES (v_bes_bestelling_key, c_kenmerk_key_afleverplaats, rec_ax.bes_afleveradres_plaats);
|
|
|
|
|
|
FOR rec2_ax IN c_ax_bestelling_lines (rec_ax.gln_supplier, rec_ax.bes_ordernr)
|
|
LOOP
|
|
BEGIN
|
|
v_count_materiaal_tot := v_count_materiaal_tot + 1;
|
|
-- Eerst maar eens het artikel obv standaard functie...
|
|
v_errorhint := 'Soort deel ' || rec2_ax.bes_orderline_art_descr || ' bij import ' || p_import_key || ' kan niet worden aangemaakt';
|
|
-- Meer soort van dummy srtdeel, zodat we een referentie hebben (die is nodig).
|
|
bes.upsert_srtdeel (v_bes_discipline_key,
|
|
v_bes_srtgroep_omschrijving,
|
|
'-',
|
|
0,
|
|
21,
|
|
'PCE',
|
|
COALESCE (rec2_ax.bes_orderline_gtin, '00000000000000'),
|
|
v_prs_bedrijf_key,
|
|
NULL,
|
|
NULL,
|
|
1,
|
|
NULL,
|
|
NULL,
|
|
v_bes_srtdeel_key);
|
|
|
|
|
|
v_errorhint := 'bes_bestelling_item met bes_srtdeel_key ' || v_bes_srtdeel_key || ' bij import ' || p_import_key || ' kan niet worden aangemaakt';
|
|
-- bes_orderline_art_aantal is hier > 0 (in het inlees-gedeelte van de import worden deze regels geskipped namelijk).
|
|
INSERT INTO bes_bestelling_item (bes_bestelling_key,
|
|
bes_srtdeel_key,
|
|
bes_bestelling_item_aantal,
|
|
bes_bestelling_item_brutoprijs,
|
|
bes_bestelling_item_prijs,
|
|
bes_bestelling_item_status)
|
|
VALUES (v_bes_bestelling_key,
|
|
v_bes_srtdeel_key,
|
|
rec2_ax.bes_orderline_art_aantal,
|
|
rec2_ax.bes_orderline_art_prijs,
|
|
rec2_ax.bes_orderline_art_prijs,
|
|
bes_bestelling_status)
|
|
RETURNING bes_bestelling_item_key
|
|
INTO bes_bestelling_item_key;
|
|
|
|
-- Het bestelregelnummer uit AX stoppen we in een flexprop (er is hier geen standaard veld voorhanden in bes_bestelling_item).
|
|
v_errorhint := 'Bestelregelnummer ' || rec2_ax.bes_orderline_nr || ' bij import ' || p_import_key || ' kan niet worden aangemaakt';
|
|
INSERT INTO bes_kenmerkbesteli (bes_bestelling_item_key, bes_kenmerk_key, bes_kenmerkbesteli_waarde)
|
|
VALUES (bes_bestelling_item_key, c_kenmerk_key_bestelline_nr, rec2_ax.bes_orderline_nr);
|
|
|
|
-- Het artikelnummer uit AX stoppen we in een flexprop (het standaard veld bes_srtdeel_nr wordt al gebruikt/gevuld door GTIN, die altijd zeker wordt gestuurd (deze wordt optioneel gestuurd, afh. van de inrichting in AX).
|
|
v_errorhint := 'Artikelnummer ' || rec2_ax.bes_orderline_art_code || ' bij import ' || p_import_key || ' kan niet worden aangemaakt';
|
|
INSERT INTO bes_kenmerkbesteli (bes_bestelling_item_key, bes_kenmerk_key, bes_kenmerkbesteli_waarde)
|
|
VALUES (bes_bestelling_item_key, c_kenmerk_key_artikelnr, rec2_ax.bes_orderline_art_code);
|
|
|
|
-- De artikelomschrijving uit stoppen we in een flexprop, omdat in srtdeel stoppen niet goed gaat als we gebruik maken van GTIN als bes_srtdeel_nr indien GTIN onbekend is (00000000000000)
|
|
v_errorhint := 'Artikelomschrijving ' || rec2_ax.bes_orderline_art_descr || ' bij import ' || p_import_key || ' kan niet worden aangemaakt';
|
|
INSERT INTO bes_kenmerkbesteli (bes_bestelling_item_key, bes_kenmerk_key, bes_kenmerkbesteli_waarde)
|
|
VALUES (bes_bestelling_item_key, c_kenmerk_key_artikelomschr, rec2_ax.bes_orderline_art_descr);
|
|
|
|
-- De artikeleenheid stoppen we in een flexprop, omdat in srtdeel stoppen niet goed gaat als we gebruik maken van GTIN als bes_srtdeel_nr indien GTIN onbekend is (00000000000000)
|
|
v_errorhint := 'Artikeleenheid ' || rec2_ax.bes_orderline_art_eenheid || ' bij import ' || p_import_key || ' kan niet worden aangemaakt';
|
|
INSERT INTO bes_kenmerkbesteli (bes_bestelling_item_key, bes_kenmerk_key, bes_kenmerkbesteli_waarde)
|
|
VALUES (bes_bestelling_item_key, c_kenmerk_key_eenheid, rec2_ax.bes_orderline_art_eenheid);
|
|
|
|
COMMIT;
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
v_count_mat_error := v_count_mat_error + 1;
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
|
v_errormsg := 'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
|
fac.imp_writelog (p_import_key,
|
|
'E',
|
|
v_aanduiding || v_errormsg,
|
|
v_errorhint);
|
|
COMMIT;
|
|
END;
|
|
END LOOP;
|
|
-- En nu: de bestelopdracht aanmaken (bes_bestelopdr en bes_bestelopdr_item), die doen we via standaard functie...
|
|
v_errorhint := 'Bes.makeorders van bestelling ' || v_bes_bestelling_key || ' bij import ' || p_import_key || ' kan niet worden uitgevoerd';
|
|
bes.makeorders (v_prs_perslid_key, v_bes_bestelling_key);
|
|
|
|
-- MARX#66923: AX365 Bestelopdracht met response bericht succes/failure
|
|
-- Nog iets rubuuster, indien geen bestelopdracht aangemaakt kan worden, dan geen bes_opdr_key en wordt geen node teruggestuurd
|
|
IF v_bes_bestelling_key IS NOT NULL AND rec_ax.bes_ordernr IS NOT NULL
|
|
THEN
|
|
v_errorhint := 'Het bepalen van bestelopdrachtkey van ' || v_bes_bestelling_key || ' bij import ' || p_import_key || ' gaat fout';
|
|
SELECT DISTINCT bo.bes_bestelopdr_key
|
|
INTO v_bes_bestelopdr_key
|
|
FROM bes_bestelopdr bo, bes_bestelopdr_item boi, bes_bestelling_item bi
|
|
WHERE bo.bes_bestelopdr_key = boi.bes_bestelopdr_key
|
|
AND bi.bes_bestelopdr_item_key = boi.bes_bestelopdr_item_key
|
|
AND bi.bes_bestelling_key = v_bes_bestelling_key;
|
|
|
|
v_errorhint := 'Het toevoegen van fac_result/bes_opdr_externnr bij import ' || p_import_key || ' gaat fout';
|
|
INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde)
|
|
VALUES ('IMPORT_' || TO_CHAR (p_import_key), 'bes_opdr_externnr', rec_ax.bes_ordernr);
|
|
|
|
v_errorhint := 'Het toevoegen van fac_result/bes_opdr_key bij import ' || p_import_key || ' gaat fout';
|
|
INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde)
|
|
VALUES ('IMPORT_' || TO_CHAR (p_import_key), 'bes_opdr_key', TO_CHAR (v_bes_bestelopdr_key));
|
|
ELSE
|
|
v_overrule_success := -1; -- Hier is bij aanmaak opdracht echt wat fout gegaan, overrule van keiharde failure (-1).
|
|
END IF;
|
|
|
|
END IF; -- v_ongeldig = 0
|
|
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
v_count_error := v_count_error + 1;
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
|
v_errormsg := 'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
|
fac.imp_writelog (p_import_key,
|
|
'E',
|
|
v_aanduiding || v_errormsg,
|
|
v_errorhint);
|
|
COMMIT;
|
|
END;
|
|
END LOOP;
|
|
|
|
fac.imp_writelog (p_import_key,
|
|
'S',
|
|
'Bestelopdrachten: verwerkte regels zonder foutmelding: ' || TO_CHAR (v_count_tot - v_count_error),
|
|
'');
|
|
IF v_count_error > 0
|
|
THEN
|
|
fac.imp_writelog (p_import_key,
|
|
'S',
|
|
'Bestelopdrachten: verwerkte regels met foutmelding: ' || TO_CHAR (v_count_error),
|
|
'');
|
|
END IF;
|
|
fac.imp_writelog (
|
|
p_import_key,
|
|
'S',
|
|
'Bestel regels: verwerkte regels zonder foutmelding: ' || TO_CHAR (v_count_materiaal_tot - v_count_mat_error),
|
|
'');
|
|
IF v_count_mat_error > 0
|
|
THEN
|
|
fac.imp_writelog (p_import_key,
|
|
'S',
|
|
'Bestel regels: verwerkte regels met foutmelding: ' || TO_CHAR (v_count_mat_error),
|
|
'');
|
|
END IF;
|
|
-- MARX#66923: AX365 Bestelopdracht met response bericht succes/failure: XML met result retour
|
|
mar_response_API_Import (p_import_key, v_overrule_success);
|
|
COMMIT;
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
|
v_errormsg := 'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
|
fac.imp_writelog (p_import_key,
|
|
'E',
|
|
v_aanduiding || v_errormsg,
|
|
v_errorhint);
|
|
mar_response_API_Import (p_import_key, -1);
|
|
COMMIT;
|
|
END mar_update_gen_bes_opdrachten;
|
|
/
|
|
|
|
|
|
-- Import tbv Tobias-bestellingen
|
|
CREATE OR REPLACE PROCEDURE mar_import_ax_bestelling (p_import_key IN NUMBER)
|
|
AS
|
|
BEGIN
|
|
mar_import_gen_bes_opdrachten (p_import_key);
|
|
END;
|
|
/
|
|
|
|
CREATE OR REPLACE PROCEDURE mar_update_ax_bestelling (p_import_key IN NUMBER)
|
|
AS
|
|
BEGIN
|
|
mar_update_gen_bes_opdrachten (p_import_key);
|
|
END;
|
|
/
|
|
|
|
|
|
-- Import tbv Facilitor-bestellingen
|
|
CREATE OR REPLACE PROCEDURE mar_import_fclt_bestelling (p_import_key IN NUMBER)
|
|
AS
|
|
BEGIN
|
|
mar_import_gen_bes_opdrachten (p_import_key);
|
|
END;
|
|
/
|
|
|
|
CREATE OR REPLACE PROCEDURE mar_update_fclt_bestelling (p_import_key IN NUMBER)
|
|
AS
|
|
BEGIN
|
|
mar_update_gen_bes_opdrachten (p_import_key);
|
|
END;
|
|
/
|
|
|
|
|
|
|
|
|
|
------ payload end ------
|
|
|
|
SET DEFINE OFF
|
|
BEGIN adm.systrackscriptId ('$Id$', 1); END;
|
|
/
|
|
|
|
COMMIT;
|
|
SET ECHO OFF
|
|
SPOOL OFF
|
|
SET DEFINE ON
|
|
PROMPT Logfile of this upgrade is: &fcltlogfile
|