DIAN#51429 EXACT-import

svn path=/Customer/trunk/; revision=40151
This commit is contained in:
Maarten van der Heide
2018-12-10 10:26:49 +00:00
parent 8fad3c05d7
commit 859de3aec9

View File

@@ -361,15 +361,16 @@ AS
v_count_import NUMBER (10);
-- De importvelden:
v_clientid VARCHAR2 (255); -- C16
v_clientachternaam VARCHAR2 (255); -- C60
v_clientnaam VARCHAR2 (255); -- C60
v_clientvoorletters VARCHAR2 (255); -- C15
v_clientgeslacht VARCHAR2 (255); -- N1
v_clienttelefoon VARCHAR2 (255); -- C15
v_clientemail VARCHAR2 (255); -- C200
v_artikelnr VARCHAR2 (255); -- C32
v_omschrijving VARCHAR2 (255); -- C100
v_prijs VARCHAR2 (255); -- N8.2
v_eenheid VARCHAR2 (255); -- C30
v_artnr VARCHAR2 (255); -- C32
v_artikelomschrijving VARCHAR2 (255); -- C100
v_artikelprijs VARCHAR2 (255); -- N8.2
v_artikeleenheid VARCHAR2 (255); -- C30
v_aantal_ce VARCHAR2 (255); -- Nx
CURSOR c1
IS
@@ -395,18 +396,20 @@ BEGIN
v_newline := rec1.fac_imp_file_line;
-- Lees alle veldwaarden
-- ClientId;ClientAchternaam;ClientVoorletters;ClientGeslacht;ClientTelefoon;ClientEmail;Artikelnr;Omschrijving;Prijs;Eenheid
-- ClientID;ClientNaam;ClientVoorletters;ClientGeslacht;ClientTelefoon;ClientEmail;Artnr;ArtikelOmschrijving;ArtikelPrijs;ArtikelEenheid;aantal_ce
fac.imp_getfield (v_newline, c_delim, v_clientid);
fac.imp_getfield (v_newline, c_delim, v_clientachternaam);
fac.imp_getfield (v_newline, c_delim, v_clientnaam);
fac.imp_getfield (v_newline, c_delim, v_clientvoorletters);
fac.imp_getfield (v_newline, c_delim, v_clientgeslacht);
fac.imp_getfield (v_newline, c_delim, v_clienttelefoon);
fac.imp_getfield (v_newline, c_delim, v_clientemail);
fac.imp_getfield (v_newline, c_delim, v_artikelnr);
fac.imp_getfield (v_newline, c_delim, v_omschrijving);
fac.imp_getfield (v_newline, c_delim, v_prijs);
fac.imp_getfield (v_newline, c_delim, v_eenheid);
fac.imp_getfield (v_newline, c_delim, v_artnr);
fac.imp_getfield (v_newline, c_delim, v_artikelomschrijving);
fac.imp_getfield (v_newline, c_delim, v_artikelprijs);
fac.imp_getfield (v_newline, c_delim, v_artikeleenheid);
fac.imp_getfield (v_newline, c_delim, v_aantal_ce);
v_aanduiding := '[' || v_clientid || '|' || v_artikelnr || '] ';
v_aanduiding := '[' || v_clientid || '|' || v_artnr || '] ';
-- Ik controleer of ik een geldige header heb, dat is: in de juiste kolommen
-- de juiste kolomkop. Ik controleer daarbij ALLE kolommen!
@@ -414,15 +417,16 @@ BEGIN
IF (header_is_valid = 0)
THEN
IF UPPER (v_clientid) = 'CLIENTID'
AND UPPER (v_clientachternaam) = 'CLIENTACHTERNAAM'
AND UPPER (v_clientnaam) = 'CLIENTNAAM'
AND UPPER (v_clientvoorletters) = 'CLIENTVOORLETTERS'
AND UPPER (v_clientgeslacht) = 'CLIENTGESLACHT'
AND UPPER (v_clienttelefoon) = 'CLIENTTELEFOON'
AND UPPER (v_clientemail) = 'CLIENTEMAIL'
AND UPPER (v_artikelnr) = 'ARTIKELNR'
AND UPPER (v_omschrijving) = 'OMSCHRIJVING'
AND UPPER (v_prijs) = 'PRIJS'
AND UPPER (v_eenheid) = 'EENHEID'
AND UPPER (v_artnr) = 'ARTNR'
AND UPPER (v_artikelomschrijving) = 'ARTIKELOMSCHRIJVING'
AND UPPER (v_artikelprijs) = 'ARTIKELPRIJS'
AND UPPER (v_artikeleenheid) = 'ARTIKELEENHEID'
AND UPPER (v_aantal_ce) = 'AANTAL_CE'
THEN
header_is_valid := 1;
END IF;
@@ -439,10 +443,10 @@ BEGIN
END IF;
--
v_errormsg := 'ClientAchternaam ongeldig; ongedefinieerd of te lang';
v_clientachternaam := TRIM (v_clientachternaam);
v_errormsg := 'ClientNaam ongeldig; ongedefinieerd of te lang';
v_clientnaam := TRIM (v_clientnaam);
IF v_clientachternaam IS NULL OR LENGTH (v_clientachternaam) > 60
IF v_clientnaam IS NULL OR LENGTH (v_clientnaam) > 60
THEN
v_ongeldig := 1;
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, 'Regel overgeslagen!');
@@ -489,10 +493,10 @@ BEGIN
END IF;
--
v_errormsg := 'ArtikelNr ongeldig; ongedefinieerd of te lang';
v_artikelnr := TRIM (v_artikelnr);
v_errormsg := 'ArtNr ongeldig; ongedefinieerd of te lang';
v_artnr := TRIM (v_artnr);
IF v_artikelnr IS NULL OR LENGTH (v_artikelnr) > 32
IF v_artnr IS NULL OR LENGTH (v_artnr) > 32
THEN
v_ongeldig := 1;
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, 'Regel overgeslagen!');
@@ -500,9 +504,9 @@ BEGIN
--
v_errormsg := 'ArtikelOmschrijving ongeldig; ongedefinieerd of te lang';
v_omschrijving := TRIM (v_omschrijving);
v_artikelomschrijving := TRIM (v_artikelomschrijving);
IF v_omschrijving IS NULL OR LENGTH (v_omschrijving) > 100
IF v_artikelomschrijving IS NULL OR LENGTH (v_artikelomschrijving) > 100
THEN
v_ongeldig := 1;
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, 'Regel overgeslagen!');
@@ -510,10 +514,10 @@ BEGIN
--
v_errormsg := 'ArtikelPrijs ongeldig';
v_prijs := TRIM (v_prijs);
v_artikelprijs := TRIM (v_artikelprijs);
--IF v_prijs IS NOT NULL AND fac.safe_to_number (v_prijs) IS NULL
IF fac.safe_to_number (v_prijs) IS NULL
--IF fac.safe_to_number (v_artikelprijs) IS NULL
IF v_artikelprijs IS NOT NULL AND fac.safe_to_number (v_artikelprijs) IS NULL
THEN
v_ongeldig := 1;
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, 'Regel overgeslagen!');
@@ -521,14 +525,25 @@ BEGIN
--
v_errormsg := 'ArtikelEenheid te lang';
v_eenheid := TRIM (v_eenheid);
v_artikeleenheid := TRIM (v_artikeleenheid);
IF LENGTH (v_eenheid) > 30
IF LENGTH (v_artikeleenheid) > 30
THEN
v_eenheid := SUBSTR (v_eenheid, 1, 30);
v_artikeleenheid := SUBSTR (v_artikeleenheid, 1, 30);
fac.imp_writelog (p_import_key, 'I', v_aanduiding || v_errormsg, 'ArtikelEenheid afgekapt!');
END IF;
--
v_errormsg := 'aantal_ce ongeldig';
v_aantal_ce := TRIM (v_aantal_ce);
--IF fac.safe_to_number (v_aantal_ce) IS NULL
IF v_aantal_ce IS NOT NULL AND fac.safe_to_number (v_aantal_ce) IS NULL
THEN
v_ongeldig := 1;
fac.imp_writelog (p_import_key, 'I', v_aanduiding || v_errormsg, 'Regel overgeslagen!');
END IF;
-- Insert geformatteerde import record
IF v_ongeldig = 0
THEN
@@ -546,7 +561,7 @@ BEGIN
prs_srtperslid_omschrijving)
SELECT p_import_key,
v_clientid,
v_clientachternaam,
v_clientnaam,
v_clientvoorletters,
DECODE (v_clientgeslacht, 'M', 1, 'V', 0, NULL),
v_clienttelefoon,
@@ -583,12 +598,14 @@ BEGIN
NULL,
NULL,
TRUNC (SYSDATE),
v_artikelnr,
v_artnr,
v_clientid,
v_omschrijving,
fac.safe_to_number (v_prijs),
v_artikelomschrijving,
0,
NULL,
v_eenheid,
DECODE (UPPER (v_artikeleenheid),
'STUKS', DECODE (v_aantal_ce, 1, 'stuks', 'per ' || v_aantal_ce || ' stuks'),
LOWER (v_artikeleenheid) || ' <20> ' || v_aantal_ce),
NULL,
NULL,
NULL,
@@ -640,7 +657,7 @@ AS
c_client_anaam VARCHAR2(4) := 'EXTB';
c_exact_bkey NUMBER (10) := 481; -- Exact/D641/A481/P641
c_default_gkey NUMBER (10) := 1; -- _Default-groep
c_clientbeheer_gkey NUMBER (10) := 62; -- Cli<6C>ntBeheer-groep/D61/A62/P61
c_clientbeheer_gkey NUMBER (10) := 61; -- Cli<6C>ntBeheer-groep
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
@@ -762,8 +779,9 @@ BEGIN
bes_disc_params_leverdagen,
bes_disc_params_module,
bes_disc_params_bonotify,
bes_disc_params_bestelmode)
VALUES (v_discipline_key, 1, 1, 10, 'BES', 0, 2);
bes_disc_params_bestelmode,
bes_disc_params_hide_cost_fe)
VALUES (v_discipline_key, 1, 1, 0, 'BES', 0, 2, 1);
ELSE -- Exception als v_count > 1!
SELECT td.ins_discipline_key
INTO v_discipline_key
@@ -884,6 +902,12 @@ EXCEPTION
END dian_update_exact;
/
/*
DELETE FROM bes_srtdeel;
DELETE FROM bes_srtgroep;
DELETE FROM bes_disc_params;
DELETE FROM ins_tab_discipline td WHERE TD.INS_DISCIPLINE_MODULE = 'BES';
*/
------ payload end ------
SET DEFINE OFF