From d686ee3e85aeeb88276304090f9b24a3f39020b3 Mon Sep 17 00:00:00 2001 From: Alexis de Lattre Date: Sat, 30 Oct 2021 23:04:57 +0200 Subject: [PATCH] Add module partner_mobile_duplicate_warn --- partner_mobile_duplicate_warn/README.rst | 1 + partner_mobile_duplicate_warn/__init__.py | 1 + partner_mobile_duplicate_warn/__manifest__.py | 23 ++++++ .../models/__init__.py | 1 + .../models/res_partner.py | 40 ++++++++++ .../readme/CONFIGURE.rst | 1 + .../readme/CONTRIBUTORS.rst | 1 + .../readme/DESCRIPTION.rst | 8 ++ .../readme/USAGE.rst | 4 + .../description/partner_warn_banner.png | Bin 0 -> 76345 bytes .../tests/__init__.py | 1 + .../tests/test_mobile_duplicate.py | 74 ++++++++++++++++++ .../views/res_partner.xml | 25 ++++++ requirements.txt | 1 + .../odoo/addons/partner_mobile_duplicate_warn | 1 + setup/partner_mobile_duplicate_warn/setup.py | 6 ++ 16 files changed, 188 insertions(+) create mode 100644 partner_mobile_duplicate_warn/README.rst create mode 100644 partner_mobile_duplicate_warn/__init__.py create mode 100644 partner_mobile_duplicate_warn/__manifest__.py create mode 100644 partner_mobile_duplicate_warn/models/__init__.py create mode 100644 partner_mobile_duplicate_warn/models/res_partner.py create mode 100644 partner_mobile_duplicate_warn/readme/CONFIGURE.rst create mode 100644 partner_mobile_duplicate_warn/readme/CONTRIBUTORS.rst create mode 100644 partner_mobile_duplicate_warn/readme/DESCRIPTION.rst create mode 100644 partner_mobile_duplicate_warn/readme/USAGE.rst create mode 100644 partner_mobile_duplicate_warn/static/description/partner_warn_banner.png create mode 100644 partner_mobile_duplicate_warn/tests/__init__.py create mode 100644 partner_mobile_duplicate_warn/tests/test_mobile_duplicate.py create mode 100644 partner_mobile_duplicate_warn/views/res_partner.xml create mode 120000 setup/partner_mobile_duplicate_warn/odoo/addons/partner_mobile_duplicate_warn create mode 100644 setup/partner_mobile_duplicate_warn/setup.py diff --git a/partner_mobile_duplicate_warn/README.rst b/partner_mobile_duplicate_warn/README.rst new file mode 100644 index 000000000..d8c920736 --- /dev/null +++ b/partner_mobile_duplicate_warn/README.rst @@ -0,0 +1 @@ +Will be generated from the README subdir diff --git a/partner_mobile_duplicate_warn/__init__.py b/partner_mobile_duplicate_warn/__init__.py new file mode 100644 index 000000000..0650744f6 --- /dev/null +++ b/partner_mobile_duplicate_warn/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/partner_mobile_duplicate_warn/__manifest__.py b/partner_mobile_duplicate_warn/__manifest__.py new file mode 100644 index 000000000..ff0233767 --- /dev/null +++ b/partner_mobile_duplicate_warn/__manifest__.py @@ -0,0 +1,23 @@ +# Copyright 2021 Akretion France (http://www.akretion.com/) +# @author: Alexis de Lattre +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +{ + "name": "Partner Mobile Duplicate Warn", + "version": "14.0.1.0.0", + "category": "Partner Management", + "license": "AGPL-3", + "summary": "Warning banner on partner form if another partner has the same mobile", + "author": "Akretion,Odoo Community Association (OCA)", + "maintainers": ["alexis-via"], + "website": "https://github.com/OCA/partner-contact", + "depends": ["phone_validation"], + # I add phonenumbers in external_dependencies + # because the phone_validation module doesn't do it + # and it's needed for Travis + "external_dependencies": {"python": ["phonenumbers"]}, + "data": [ + "views/res_partner.xml", + ], + "installable": True, +} diff --git a/partner_mobile_duplicate_warn/models/__init__.py b/partner_mobile_duplicate_warn/models/__init__.py new file mode 100644 index 000000000..91fed54d4 --- /dev/null +++ b/partner_mobile_duplicate_warn/models/__init__.py @@ -0,0 +1 @@ +from . import res_partner diff --git a/partner_mobile_duplicate_warn/models/res_partner.py b/partner_mobile_duplicate_warn/models/res_partner.py new file mode 100644 index 000000000..687242961 --- /dev/null +++ b/partner_mobile_duplicate_warn/models/res_partner.py @@ -0,0 +1,40 @@ +# Copyright 2021 Akretion France (http://www.akretion.com/) +# @author: Alexis de Lattre +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import api, fields, models + + +class ResPartner(models.Model): + _inherit = "res.partner" + + same_mobile_partner_id = fields.Many2one( + "res.partner", + compute="_compute_same_mobile_partner_id", + string="Partner with same mobile", + compute_sudo=True, + ) + + @api.depends("mobile", "company_id") + def _compute_same_mobile_partner_id(self): + # With phone_validation, the "mobile" field should be + # clean in E.164 format, without any start/ending spaces + # So we search on the 'mobile' field with '=' ! + for partner in self: + same_mobile_partner_id = False + if partner.mobile: + domain = [("mobile", "=", partner.mobile)] + if partner.company_id: + domain += [ + "|", + ("company_id", "=", False), + ("company_id", "=", partner.company_id.id), + ] + partner_id = partner._origin.id + if partner_id: + domain.append(("id", "!=", partner_id)) + same_mobile_partner = self.with_context(active_test=False).search( + domain, limit=1 + ) + same_mobile_partner_id = same_mobile_partner.id or False + partner.same_mobile_partner_id = same_mobile_partner_id diff --git a/partner_mobile_duplicate_warn/readme/CONFIGURE.rst b/partner_mobile_duplicate_warn/readme/CONFIGURE.rst new file mode 100644 index 000000000..e7dc23597 --- /dev/null +++ b/partner_mobile_duplicate_warn/readme/CONFIGURE.rst @@ -0,0 +1 @@ +No configuration required. diff --git a/partner_mobile_duplicate_warn/readme/CONTRIBUTORS.rst b/partner_mobile_duplicate_warn/readme/CONTRIBUTORS.rst new file mode 100644 index 000000000..ff65d68ce --- /dev/null +++ b/partner_mobile_duplicate_warn/readme/CONTRIBUTORS.rst @@ -0,0 +1 @@ +* Alexis de Lattre diff --git a/partner_mobile_duplicate_warn/readme/DESCRIPTION.rst b/partner_mobile_duplicate_warn/readme/DESCRIPTION.rst new file mode 100644 index 000000000..4597dea57 --- /dev/null +++ b/partner_mobile_duplicate_warn/readme/DESCRIPTION.rst @@ -0,0 +1,8 @@ +This module adds a warning banner on the partner form view if another partner has the same mobile phone number. It helps spot duplicate partners. If the duplication is confirmed, the user can then use the native partner merge wizard available from the partner tree view (menu *Action > Merge*). + +.. figure:: static/description/partner_warn_banner.png + :alt: Warning banner on partner form + +This module depend on the module *phone_validation* from the official addons which handle the automatic reformatting of phone numbers to the E.164 format depending on the country of the partner. For exemple, for a French partner, if you write **06.23.45.67.78** in the *Mobile* field, it will be automatically reformatted to **+33 6 23 45 67 78** (via the onchange). Thanks to this reformatting, this module can easily find identical phone numbers on other partners. + +It is similar to the native warning banner when another partner has the same VAT number. This module has a twin brother named **partner_email_duplicate_warn** which adds a warning banner when another partner has the same email. diff --git a/partner_mobile_duplicate_warn/readme/USAGE.rst b/partner_mobile_duplicate_warn/readme/USAGE.rst new file mode 100644 index 000000000..78e6af38a --- /dev/null +++ b/partner_mobile_duplicate_warn/readme/USAGE.rst @@ -0,0 +1,4 @@ +The warning banner is displayed on the partner form view if another partner: +- has the same mobile phone number (the module *phone_validation* ensure that phone numbers are automatically formatted to the E.164 format), +- if the partner is attached to a specific company: is in the same company or is not attached to a specific company, +- if the partner is not attached to a specific company: is in any company or not attached to a specific company. diff --git a/partner_mobile_duplicate_warn/static/description/partner_warn_banner.png b/partner_mobile_duplicate_warn/static/description/partner_warn_banner.png new file mode 100644 index 0000000000000000000000000000000000000000..0bc5628d5eddbdf7ec0aa050c1a246dc9e23d69d GIT binary patch literal 76345 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 literal 0 HcmV?d00001 diff --git a/partner_mobile_duplicate_warn/tests/__init__.py b/partner_mobile_duplicate_warn/tests/__init__.py new file mode 100644 index 000000000..d8d7ecafe --- /dev/null +++ b/partner_mobile_duplicate_warn/tests/__init__.py @@ -0,0 +1 @@ +from . import test_mobile_duplicate diff --git a/partner_mobile_duplicate_warn/tests/test_mobile_duplicate.py b/partner_mobile_duplicate_warn/tests/test_mobile_duplicate.py new file mode 100644 index 000000000..1ec34a8a4 --- /dev/null +++ b/partner_mobile_duplicate_warn/tests/test_mobile_duplicate.py @@ -0,0 +1,74 @@ +# Copyright 2021 Akretion France (http://www.akretion.com/) +# @author: Alexis de Lattre +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from odoo.tests import tagged +from odoo.tests.common import TransactionCase + + +@tagged("post_install", "-at_install") +class TestResPartner(TransactionCase): + def setUp(self): + super().setUp() + self.fr_country_id = self.env.ref("base.fr").id + self.partner_simple = self.env["res.partner"].create( + { + "name": "Alexia Payet", + "mobile": " +33699887766 ", + "country_id": self.fr_country_id, + } + ) + self.partner_simple._onchange_mobile_validation() + self.company1_id = self.env.ref("base.main_company").id + partner_company = self.env["res.partner"].create( + { + "name": "Test Company", + "is_company": True, + "country_id": self.env.ref("base.fr").id, + } + ) + self.company2_id = ( + self.env["res.company"] + .create( + { + "name": "Test Company", + "partner_id": partner_company.id, + "currency_id": self.env.ref("base.EUR").id, + } + ) + .id + ) + + def test_partner_duplicate_simple(self): + partner1 = self.env["res.partner"].create( + { + "name": "Test regular", + "mobile": "06 99 88 77 65", + "country_id": self.fr_country_id, + } + ) + partner1._onchange_mobile_validation() + self.assertFalse(partner1.same_mobile_partner_id) + partner1.write({"mobile": " 06 99 88 77 66"}) + partner1._onchange_mobile_validation() + self.assertEqual(partner1.same_mobile_partner_id, self.partner_simple) + + def test_partner_duplicate_multi_company(self): + partner_company1 = self.env["res.partner"].create( + { + "name": "Toto", + "mobile": "+33 6 11 22 33 44", + "company_id": self.company1_id, + } + ) + partner_company2 = self.env["res.partner"].create( + { + "name": "Toto", + "mobile": "+33 6 11 22 33 44", + "company_id": self.company2_id, + } + ) + self.assertFalse(partner_company1.same_mobile_partner_id) + self.assertFalse(partner_company2.same_mobile_partner_id) + partner_company2.write({"company_id": False}) + self.assertEqual(partner_company2.same_mobile_partner_id, partner_company1) diff --git a/partner_mobile_duplicate_warn/views/res_partner.xml b/partner_mobile_duplicate_warn/views/res_partner.xml new file mode 100644 index 000000000..85b6370b4 --- /dev/null +++ b/partner_mobile_duplicate_warn/views/res_partner.xml @@ -0,0 +1,25 @@ + + + + + res.partner + + +
+ +
+
+
+ +
diff --git a/requirements.txt b/requirements.txt index bcfab71c0..41b756f38 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,2 +1,3 @@ # generated from manifests external_dependencies email-validator +phonenumbers diff --git a/setup/partner_mobile_duplicate_warn/odoo/addons/partner_mobile_duplicate_warn b/setup/partner_mobile_duplicate_warn/odoo/addons/partner_mobile_duplicate_warn new file mode 120000 index 000000000..1b8a0dbe5 --- /dev/null +++ b/setup/partner_mobile_duplicate_warn/odoo/addons/partner_mobile_duplicate_warn @@ -0,0 +1 @@ +../../../../partner_mobile_duplicate_warn \ No newline at end of file diff --git a/setup/partner_mobile_duplicate_warn/setup.py b/setup/partner_mobile_duplicate_warn/setup.py new file mode 100644 index 000000000..28c57bb64 --- /dev/null +++ b/setup/partner_mobile_duplicate_warn/setup.py @@ -0,0 +1,6 @@ +import setuptools + +setuptools.setup( + setup_requires=['setuptools-odoo'], + odoo_addon=True, +)