Skip to content

Commit 0219fce

Browse files
committed
[IMP] base_edifact: Map PIA segment with product default_code
1 parent 9bd2a2e commit 0219fce

File tree

2 files changed

+39
-11
lines changed

2 files changed

+39
-11
lines changed

base_edifact/models/edifact.py

+15-6
Original file line numberDiff line numberDiff line change
@@ -195,16 +195,25 @@ def map2odoo_product(self, seg, pia=None):
195195
EN. International Article Numbering Association (EAN)
196196
UP. UPC (Universal product code)
197197
SRV. GTIN
198-
:product_info: PIA segment
198+
:pia: PIA segment
199199
['5', ['1276', 'SA', '', '9']]
200200
SA. Supplier's Article Number
201201
"""
202-
product = seg[2]
203-
pct = product[1]
202+
code = seg[2][0]
203+
product_tmp = self.env["product.template"]
204+
if code:
205+
field = "default_code" if seg[2][1] == "SRV" else "barcode"
206+
record = product_tmp.search([(field, "=", code)], limit=1)
207+
if record:
208+
if field == "default_code":
209+
field = "code"
210+
return {field: code}
204211
# Fallback on SA if no EAN given
205-
if not product[0] and pia[1][0]:
206-
return dict(code=pia[1][0])
207-
return dict(code=product[0]) if pct == "SRV" else dict(barcode=product[0])
212+
elif pia[1][0]:
213+
record = product_tmp.search([("default_code", "=", pia[1][0])], limit=1)
214+
if record:
215+
return {"code": pia[1][0]}
216+
return {}
208217

209218
@api.model
210219
def map2odoo_qty(self, seg):

base_edifact/tests/test_base_edifact.py

+24-5
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,9 @@ class TestBaseEdifact(TransactionCase):
1717
def setUpClass(cls):
1818
super().setUpClass()
1919
cls.base_edifact_model = cls.env["base.edifact"]
20+
cls.product = cls.env.ref("product.product_product_1")
21+
cls.product.barcode = "9783898"
22+
cls.product.default_code = "12767"
2023

2124
def test_pydifact_obj(self):
2225
edifact_docu = _get_file_content("Retail_EDIFACT_ORDERS_sample1.txt")
@@ -50,15 +53,31 @@ def test_map2odoo_currency(self):
5053
self.assertEqual(currency["symbol"], "€")
5154

5255
def test_map2odoo_product(self):
53-
seg = ("1", "", ["8885583503464", "EN"])
56+
seg = ("1", "", ["9783898", "EN"])
5457
product = self.base_edifact_model.map2odoo_product(seg)
55-
self.assertEqual(product["barcode"], "8885583503464")
58+
self.assertEqual(product["barcode"], "9783898")
5659

57-
def test_map2odoo_product_pia(self):
60+
def test_map2odoo_product_incorrect_barcode(self):
61+
seg = ("1", "", ["97838983075", "EN"])
62+
product = self.base_edifact_model.map2odoo_product(seg)
63+
self.assertEqual(product, {})
64+
65+
def test_map2odoo_product_srv(self):
66+
seg = ("1", "", ["12767", "SRV"])
67+
product = self.base_edifact_model.map2odoo_product(seg)
68+
self.assertEqual(product["code"], "12767")
69+
70+
def test_map2odoo_product_no_lin_has_pia(self):
5871
seg = ("1", "", ["", "EN"])
59-
pia = ["5", ["1276", "SA", "", "9"]]
72+
pia = ["5", ["12767", "SA", "", "9"]]
73+
product = self.base_edifact_model.map2odoo_product(seg, pia)
74+
self.assertEqual(product["code"], "12767")
75+
76+
def test_map2odoo_product_uncorrect_lin_and_pia(self):
77+
seg = ("1", "", ["97838983075", "EN"])
78+
pia = ["5", ["127678", "SA", "", "9"]]
6079
product = self.base_edifact_model.map2odoo_product(seg, pia)
61-
self.assertEqual(product["code"], "1276")
80+
self.assertEqual(product, {})
6281

6382
def test_map2odoo_qty(self):
6483
seg = (["21", "2"],)

0 commit comments

Comments
 (0)