diff --git a/partner_address_two_lines/README.rst b/partner_address_two_lines/README.rst index 594cc659217e..ae09a5a8c80b 100644 --- a/partner_address_two_lines/README.rst +++ b/partner_address_two_lines/README.rst @@ -59,6 +59,16 @@ Contributors - Thomas Nowicki - Akim Juillerat +- Juan Miguel Sánchez Arce juan.sanchez@camptocamp.com +- `Trobz `__: + + - Tris Doan + +Other credits +------------- + +The migration of this module from 16.0 to 17.0 was financially supported +by Camptocamp Maintainers ----------- diff --git a/partner_address_two_lines/__manifest__.py b/partner_address_two_lines/__manifest__.py index b2dabd867111..a22ccd4a4ec7 100644 --- a/partner_address_two_lines/__manifest__.py +++ b/partner_address_two_lines/__manifest__.py @@ -2,7 +2,7 @@ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). { "name": "Partner address in two lines", - "version": "16.0.1.0.0", + "version": "17.0.1.0.0", "summary": "The company and the partner name are on two different lines", "author": "Camptocamp," "Odoo Community Association (OCA)", "license": "AGPL-3", diff --git a/partner_address_two_lines/models/res_partner.py b/partner_address_two_lines/models/res_partner.py index bc683cd83a5e..074400ad3c9d 100644 --- a/partner_address_two_lines/models/res_partner.py +++ b/partner_address_two_lines/models/res_partner.py @@ -1,16 +1,51 @@ # Copyright 2020 Camptocamp SA # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). -from odoo import models +from odoo import api, models class ResPartner(models.Model): _inherit = "res.partner" - def _get_contact_name(self, partner, name): + def _get_complete_name(self): + res = super()._get_complete_name() if self.env.context.get("_two_lines_partner_address"): - return "{}\n {}".format( - partner.commercial_company_name or partner.sudo().parent_id.name, name + displayed_types = self._complete_name_displayed_types + type_description = dict( + self._fields["type"]._description_selection(self.env) ) + + name = self.name or "" + if not name and self.type in displayed_types: + name = type_description[self.type] + name = ( + f"{self.commercial_company_name or self.sudo().parent_id.name}\n{name}" + ) + res = name.strip() + return res + + @api.depends( + "complete_name", + "email", + "vat", + "state_id", + "country_id", + "commercial_company_name", + ) + @api.depends_context( + "show_address", + "partner_show_db_id", + "address_inline", + "show_email", + "show_vat", + "lang", + "_two_lines_partner_address", + ) + def _compute_display_name(self): # pylint: disable=W8110 + super()._compute_display_name() + if self.env.context.get("_two_lines_partner_address"): + for rec in self: + name = rec._get_complete_name() + rec.display_name = name.strip() else: - return super()._get_contact_name(partner, name) + super()._compute_display_name() diff --git a/partner_address_two_lines/readme/CONTRIBUTORS.md b/partner_address_two_lines/readme/CONTRIBUTORS.md index 3feaa04d56c3..6654db9687b0 100644 --- a/partner_address_two_lines/readme/CONTRIBUTORS.md +++ b/partner_address_two_lines/readme/CONTRIBUTORS.md @@ -1,2 +1,5 @@ - Thomas Nowicki \<\> - Akim Juillerat \<\> +- Juan Miguel Sánchez Arce +- [Trobz](https://www.trobz.com): + - Tris Doan \<\> diff --git a/partner_address_two_lines/readme/CREDITS.md b/partner_address_two_lines/readme/CREDITS.md new file mode 100644 index 000000000000..7c48f8e03fc2 --- /dev/null +++ b/partner_address_two_lines/readme/CREDITS.md @@ -0,0 +1,2 @@ +The migration of this module from 16.0 to 17.0 was financially supported +by Camptocamp diff --git a/partner_address_two_lines/static/description/index.html b/partner_address_two_lines/static/description/index.html index 5bcbed69d2c5..2e98544e58e0 100644 --- a/partner_address_two_lines/static/description/index.html +++ b/partner_address_two_lines/static/description/index.html @@ -378,7 +378,8 @@

Partner address in two lines

  • Credits
  • @@ -404,10 +405,20 @@

    Contributors

    + +
    +

    Other credits

    +

    The migration of this module from 16.0 to 17.0 was financially supported +by Camptocamp

    -

    Maintainers

    +

    Maintainers

    This module is maintained by the OCA.

    Odoo Community Association

    OCA, or the Odoo Community Association, is a nonprofit organization whose diff --git a/partner_address_two_lines/tests/__init__.py b/partner_address_two_lines/tests/__init__.py new file mode 100644 index 000000000000..d57d215f9086 --- /dev/null +++ b/partner_address_two_lines/tests/__init__.py @@ -0,0 +1 @@ +from . import test_res_partner diff --git a/partner_address_two_lines/tests/test_res_partner.py b/partner_address_two_lines/tests/test_res_partner.py new file mode 100644 index 000000000000..6c1f5de229d8 --- /dev/null +++ b/partner_address_two_lines/tests/test_res_partner.py @@ -0,0 +1,63 @@ +# Copyright 2023 Camptocamp SA +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo.tests.common import TransactionCase + +VALID_HASHES = { + "base.partner:_get_complete_name": ["bcff3ffbe5ffeaa8f71d1563f8dbd108"], +} + + +class TestBasePartnerTwoLine(TransactionCase): + @classmethod + def setUpClass(cls): + super().setUpClass() + partner_model = cls.env["res.partner"].with_context( + _two_lines_partner_address=True + ) + partner = partner_model.create( + {"name": "Test Company Name", "company_type": "company"} + ) + cls.child_partner_name = partner_model.create( + { + "name": "Test Partner Name", + "type": "invoice", + "parent_id": partner.id, + } + ) + cls.child_partner_no_name = partner_model.create( + { + "name": "", + "type": "invoice", + "parent_id": partner.id, + } + ) + + partner_2 = partner_model.create( + {"name": "Test Company, LTD", "company_type": "company"} + ) + + cls.child_partner_name_2 = partner_model.create( + { + "name": "Test Partner Name 2", + "type": "invoice", + "parent_id": partner_2.id, + } + ) + + def test_get_name(self): + # Partner with name. + self.assertEqual( + self.child_partner_name.display_name, "Test Company Name\nTest Partner Name" + ) + + self.assertEqual( + self.child_partner_name_2.display_name, + "Test Company, LTD\nTest Partner Name 2", + ) + + # Partner without a name. + self.assertEqual( + self.child_partner_no_name.display_name, + "Test Company Name\nInvoice Address", + )