diff --git a/base_import_match/__manifest__.py b/base_import_match/__manifest__.py
index fb233d13..2aeaee3c 100644
--- a/base_import_match/__manifest__.py
+++ b/base_import_match/__manifest__.py
@@ -4,7 +4,7 @@
{
"name": "Base Import Match",
"summary": "Try to avoid duplicates before importing",
- "version": "14.0.1.0.0",
+ "version": "15.0.1.0.0",
"category": "Tools",
"website": "https://github.com/OCA/server-backend",
"author": "Tecnativa, " "Odoo Community Association (OCA)",
diff --git a/base_import_match/models/base.py b/base_import_match/models/base.py
index e6ab2086..23823cb6 100644
--- a/base_import_match/models/base.py
+++ b/base_import_match/models/base.py
@@ -18,6 +18,14 @@ class Base(models.AbstractModel):
# We only need to patch this call if there are usable rules for it
if self.env["base_import.match"]._usable_rules(self._name, fields):
newdata = list()
+ # Change .id (dbid) by id (xmlid)
+ if ".id" in fields:
+ column = fields.index(".id")
+ fields[column] = "id"
+ # data[0][column] = "id"
+ for values in data:
+ dbid = int(values[column])
+ values[column] = self.browse(dbid).get_external_id().get(dbid)
# Data conversion to ORM format
import_fields = list(map(models.fix_import_export_id_paths, fields))
converted_data = self._convert_records(
diff --git a/base_import_match/tests/import_data/res_partner_dbid.csv b/base_import_match/tests/import_data/res_partner_dbid.csv
index b150ad4e..be9c5a82 100644
--- a/base_import_match/tests/import_data/res_partner_dbid.csv
+++ b/base_import_match/tests/import_data/res_partner_dbid.csv
@@ -1,2 +1,2 @@
-.id,vat,name
-10,BE099999999,Deco Addict External DBID Changed
+10,BE0999999999,Deco Addict External DBID Changed
+11,BE0888888888,Gemini Furniture External DBID Changed
diff --git a/base_import_match/tests/import_data/res_partner_email.csv b/base_import_match/tests/import_data/res_partner_email.csv
index c4564a51..e44dc570 100644
--- a/base_import_match/tests/import_data/res_partner_email.csv
+++ b/base_import_match/tests/import_data/res_partner_email.csv
@@ -1,2 +1 @@
-email,name
floyd.steward34@example.com,Floyd Steward Changed
diff --git a/base_import_match/tests/import_data/res_partner_external_id.csv b/base_import_match/tests/import_data/res_partner_external_id.csv
index 4ef0a4b6..2ea6a905 100644
--- a/base_import_match/tests/import_data/res_partner_external_id.csv
+++ b/base_import_match/tests/import_data/res_partner_external_id.csv
@@ -1,2 +1 @@
-id,vat,name
base.res_partner_2,BE077777777,Deco Addict External ID Changed
diff --git a/base_import_match/tests/import_data/res_partner_invalid_combination_vat.csv b/base_import_match/tests/import_data/res_partner_invalid_combination_vat.csv
index 90fabf2c..fe2d1122 100644
--- a/base_import_match/tests/import_data/res_partner_invalid_combination_vat.csv
+++ b/base_import_match/tests/import_data/res_partner_invalid_combination_vat.csv
@@ -1,2 +1 @@
-name,vat,is_company
Deco Addict Changed,BE0477472701,False
diff --git a/base_import_match/tests/import_data/res_partner_name.csv b/base_import_match/tests/import_data/res_partner_name.csv
index 82327b9c..ff541206 100644
--- a/base_import_match/tests/import_data/res_partner_name.csv
+++ b/base_import_match/tests/import_data/res_partner_name.csv
@@ -1,2 +1 @@
-function,name
Function Changed,Floyd Steward
diff --git a/base_import_match/tests/import_data/res_partner_parent_name_is_company.csv b/base_import_match/tests/import_data/res_partner_parent_name_is_company.csv
index 8487e0b9..e71a9b38 100644
--- a/base_import_match/tests/import_data/res_partner_parent_name_is_company.csv
+++ b/base_import_match/tests/import_data/res_partner_parent_name_is_company.csv
@@ -1,2 +1 @@
-name,is_company,parent_id/id,email
Floyd Steward,False,base.res_partner_2,floyd.steward34.changed@example.com
diff --git a/base_import_match/tests/import_data/res_partner_vat.csv b/base_import_match/tests/import_data/res_partner_vat.csv
index a4b25ad2..58df477e 100644
--- a/base_import_match/tests/import_data/res_partner_vat.csv
+++ b/base_import_match/tests/import_data/res_partner_vat.csv
@@ -1,2 +1 @@
-name,vat,is_company
Deco Addict Changed,BE0477472701,True
diff --git a/base_import_match/tests/import_data/res_users_login.csv b/base_import_match/tests/import_data/res_users_login.csv
index e91cccad..67143930 100644
--- a/base_import_match/tests/import_data/res_users_login.csv
+++ b/base_import_match/tests/import_data/res_users_login.csv
@@ -1,2 +1 @@
-login,name
demo,Demo User Changed
diff --git a/base_import_match/tests/test_import.py b/base_import_match/tests/test_import.py
index b234e8b6..4285167f 100644
--- a/base_import_match/tests/test_import.py
+++ b/base_import_match/tests/test_import.py
@@ -31,24 +31,28 @@ class ImportCase(TransactionCase):
"""Change name based on External ID."""
deco_addict = self.env.ref("base.res_partner_2")
record = self._base_import_record("res.partner", "res_partner_external_id")
- record.do(["id", "vat", "name"], [], OPTIONS)
+ record.execute_import(["id", "vat", "name"], [], OPTIONS)
deco_addict.env.cache.invalidate()
self.assertEqual(deco_addict.name, "Deco Addict External ID Changed")
def test_res_partner_dbid(self):
"""Change name based on DB ID."""
deco_addict = self.env.ref("base.res_partner_2")
+ gemini_furniture = self.env.ref("base.res_partner_3")
record = self._base_import_record("res.partner", "res_partner_dbid")
- record.do([".id", "vat", "name"], [], OPTIONS)
+ record.execute_import([".id", "vat", "name"], [], OPTIONS)
deco_addict.env.cache.invalidate()
self.assertEqual(deco_addict.name, "Deco Addict External DBID Changed")
+ self.assertEqual(
+ gemini_furniture.name, "Gemini Furniture External DBID Changed"
+ )
def test_res_partner_vat(self):
"""Change name based on VAT."""
deco_addict = self.env.ref("base.res_partner_2")
deco_addict.vat = "BE0477472701"
record = self._base_import_record("res.partner", "res_partner_vat")
- record.do(["name", "vat", "is_company"], [], OPTIONS)
+ record.execute_import(["name", "vat", "is_company"], [], OPTIONS)
deco_addict.env.cache.invalidate()
self.assertEqual(deco_addict.name, "Deco Addict Changed")
@@ -59,7 +63,7 @@ class ImportCase(TransactionCase):
record = self._base_import_record(
"res.partner", "res_partner_invalid_combination_vat"
)
- record.do(["name", "vat", "is_company"], [], OPTIONS)
+ record.execute_import(["name", "vat", "is_company"], [], OPTIONS)
deco_addict.env.cache.invalidate()
self.assertEqual(deco_addict.name, deco_addict.name)
@@ -68,7 +72,9 @@ class ImportCase(TransactionCase):
record = self._base_import_record(
"res.partner", "res_partner_parent_name_is_company"
)
- record.do(["name", "is_company", "parent_id/id", "email"], [], OPTIONS)
+ record.execute_import(
+ ["name", "is_company", "parent_id/id", "email"], [], OPTIONS
+ )
self.assertEqual(
self.env.ref("base.res_partner_address_4").email,
"floyd.steward34.changed@example.com",
@@ -77,7 +83,7 @@ class ImportCase(TransactionCase):
def test_res_partner_email(self):
"""Change name based on email."""
record = self._base_import_record("res.partner", "res_partner_email")
- record.do(["email", "name"], [], OPTIONS)
+ record.execute_import(["email", "name"], [], OPTIONS)
self.assertEqual(
self.env.ref("base.res_partner_address_4").name, "Floyd Steward Changed"
)
@@ -85,7 +91,7 @@ class ImportCase(TransactionCase):
def test_res_partner_name(self):
"""Change function based on name."""
record = self._base_import_record("res.partner", "res_partner_name")
- record.do(["function", "name"], [], OPTIONS)
+ record.execute_import(["function", "name"], [], OPTIONS)
self.assertEqual(
self.env.ref("base.res_partner_address_4").function, "Function Changed"
)
@@ -97,11 +103,11 @@ class ImportCase(TransactionCase):
partner_2 = self.env.ref("base.res_partner_2")
function = partner_1.function
partner_2.name = partner_1.name
- record.do(["function", "name"], [], OPTIONS)
+ record.execute_import(["function", "name"], [], OPTIONS)
self.assertEqual(self.env.ref("base.res_partner_address_4").function, function)
def test_res_users_login(self):
"""Change name based on login."""
record = self._base_import_record("res.users", "res_users_login")
- record.do(["login", "name"], [], OPTIONS)
+ record.execute_import(["login", "name"], [], OPTIONS)
self.assertEqual(self.env.ref("base.user_demo").name, "Demo User Changed")
diff --git a/base_import_match/views/base_import_match_view.xml b/base_import_match/views/base_import_match_view.xml
index e32abcf3..87ce73e0 100644
--- a/base_import_match/views/base_import_match_view.xml
+++ b/base_import_match/views/base_import_match_view.xml
@@ -44,7 +44,7 @@
Import match tree view
base_import.match
-
+