AAAH#35551 -- Uitbreiding Absoluta koppeling

svn path=/Customer/trunk/; revision=29394
This commit is contained in:
Arthur Egberink
2016-05-13 09:50:11 +00:00
parent 101e3c90bf
commit 3e4259bc39

View File

@@ -189,6 +189,8 @@ AS
v_supplier_ref VARCHAR2(1000); -- VARCHAR2(30)
v_aflever_postcode VARCHAR2(1000); -- VARCHAR2(15)
v_aflever_adres VARCHAR2(1000); -- VARCHAR2(50)
v_kostenplaats_nr VARCHAR2(1000); -- VARCHAR2(30)
v_catalogus VARCHAR2(1000); -- VARCHAR2(50)
-- Overige velden:
CURSOR c1
@@ -224,6 +226,8 @@ BEGIN
fac.imp_getfield (v_newline, c_delim, v_supplier_ref);
fac.imp_getfield (v_newline, c_delim, v_aflever_postcode);
fac.imp_getfield (v_newline, c_delim, v_aflever_adres);
fac.imp_getfield (v_newline, c_delim, v_catalogus);
fac.imp_getfield (v_newline, c_delim, v_kostenplaats_nr);
v_aanduiding :=
'['
|| v_bestelopdr_id
@@ -236,7 +240,7 @@ BEGIN
-- Ik negeer alles totdat ik een geldige header ben gepasseerd.
IF (header_is_valid = 0)
THEN
IF rec1.fac_imp_file_line = 'referenceID;dateTime;lineNumber;itemId;description;quantity;itemPrice;itemTax;deliveryDate;supplierRef;postcode;adres'
IF rec1.fac_imp_file_line = 'referenceID;dateTime;lineNumber;itemId;description;quantity;itemPrice;itemTax;deliveryDate;supplierRef;postcode;adres;catalogus;kostenplaats'
THEN
header_is_valid := 1;
END IF;
@@ -256,7 +260,9 @@ BEGIN
bes_bestelling_leverdatum,
supplier_ref,
aflever_postcode,
aflever_adres)
aflever_adres,
catalogus,
prs_kostenplaats_nr)
VALUES (SUBSTR(v_bestelopdr_id,1,30),
TO_DATE(v_datum_tijd, 'yyyy-mm-dd hh24:mi:ss'),
TO_NUMBER(v_line_number),
@@ -269,7 +275,9 @@ BEGIN
TO_DATE(v_bestelling_leverdatum, 'yyyy-mm-dd hh24:mi:ss'),
SUBSTR(v_supplier_ref,1,30),
SUBSTR(v_aflever_postcode,1,15),
SUBSTR(v_aflever_adres,1,50));
SUBSTR(v_aflever_adres,1,50),
SUBSTR(v_catalogus,1,50),
SUBSTR(v_kostenplaats_nr,1,30));
END IF;
EXCEPTION
@@ -367,12 +375,15 @@ AS
v_bestelopdr_status BES_BESTELOPDR.BES_BESTELOPDR_STATUS%TYPE;
v_adres_key_lev MLD_ADRES.MLD_ADRES_KEY%TYPE;
v_adres_key_lev2 MLD_ADRES.MLD_ADRES_KEY%TYPE;
v_srtgroep_key BES_SRTGROEP.BES_SRTGROEP_KEY%TYPE; -- Groep waar producten van Absoluta onder vallen.
v_kostenplaats_key PRS_KOSTENPLAATS.PRS_KOSTENPLAATS_KEY%TYPE;
c_adres_key_lev MLD_ADRES.MLD_ADRES_KEY%TYPE := 40; -- Hoofdkantoor
c_perslid_key PRS_PERSLID.PRS_PERSLID_KEY%TYPE := 62; -- Absoluta API user
c_kostenplaats_key PRS_KOSTENPLAATS.PRS_KOSTENPLAATS_KEY%TYPE := 32; -- General management
c_bedrijf_key PRS_BEDRIJF.PRS_BEDRIJF_KEY%TYPE := 941; -- Absoluta
c_srtgroep_key INS_SRTGROEP.INS_SRTGROEP_KEY%TYPE := 41; -- Groep waar producten van Absoluta onder vallen.
c_srtgroep_key BES_SRTGROEP.BES_SRTGROEP_KEY%TYPE := 41; -- Groep waar producten van Absoluta onder vallen.
BEGIN
-- Loop door alle geimporteerde bestelregels en verwerk deze.
FOR rec IN c
@@ -431,6 +442,7 @@ AS
'Fout bij verwerken update Absoluta.');
END;
IF v_bestelling_key IS NULL
THEN
IF rec.bes_bestelopdr_id IS NULL
@@ -469,6 +481,20 @@ AS
'Fout bij verwerken update Absoluta.');
END;
-- We gaan een nieuwe bestelling aanmaken die vanuit Absoluta geiniteerd is.
-- We hebben dan geen kostenplaats, dus zoeken we deze op in FACILITOR.
BEGIN
SELECT prs_kostenplaats_key
INTO v_kostenplaats_key
FROM prs_kostenplaats
WHERE prs_kostenplaats_verwijder IS NULL
AND prs_kostenplaats_nr = rec.prs_kostenplaats_nr;
EXCEPTION WHEN NO_DATA_FOUND
THEN
v_kostenplaats_key := c_kostenplaats_key;
END;
IF v_bestelling_key IS NULL
THEN
-- maak nieuwe bestelling aan
@@ -485,7 +511,7 @@ AS
'BES',
rec.bes_bestelling_leverdatum,
c_perslid_key,
c_kostenplaats_key,
v_kostenplaats_key,
v_adres_key_lev,
0,
0,
@@ -533,6 +559,31 @@ AS
END IF;
END IF;
-- Nu gaan we de catalogus achterhalen. Er zijn namelijk drie verschillende catalogi die door Aliance gebruikt worden.
-- Allereerst zoeken we bij bestaande artikelen onder welke catalogus deze vallen.
SELECT MAX(bes_srtgroep_key)
INTO v_srtgroep_key
FROM bes_bestelling_item bi, bes_srtdeel sd
WHERE bi.bes_bestelling_key = v_bestelling_key
AND bi.bes_srtdeel_key = sd.bes_srtdeel_key;
-- Als dit niet lukt (bijvoorbeeld bij een nieuwe bestelling), dan gebruiken we de catalogus tag (accounthash) uit de xml.
IF v_srtgroep_key IS NULL
THEN
SELECT MAX(bes_srtgroep_key)
INTO v_srtgroep_key
FROM bes_disc_params bdp, bes_srtgroep sg
WHERE bdp.bes_disc_params_punchouturl LIKE '%' || rec.catalogus || '%'
AND bdp.bes_ins_discipline_key = sg.ins_discipline_key
AND sg.bes_srtgroep_verwijder IS NULL;
END IF;
-- kunnen we helemaal niets vinden dan vallen we terug op de default.
IF v_srtgroep_key IS NULL
THEN
v_srtgroep_key := c_srtgroep_key;
END IF;
-- En nu op zoek naar het bestelling_item (als die gevonden kan worden)
BEGIN
v_errormsg := 'Zoek bestelingitem';
@@ -587,7 +638,7 @@ AS
prs_bedrijf_key,
bes_srtdeel_veelvoud,
bes_srtdeel_notitie)
VALUES (c_srtgroep_key,
VALUES (v_srtgroep_key,
rec.bes_srtdeel_omschrijving,
rec.bes_srtdeel_opmerking,
sysdate,
@@ -709,7 +760,7 @@ BEGIN adm.systrackscriptId('$Id$', 0); END;
/
BEGIN fac.registercustversion('aaah', 2); END;
BEGIN fac.registercustversion('aaah', 3); END;
/
COMMIT;