diff --git a/base_partner_ref/__init__.py b/base_partner_ref/__init__.py index 0650744..042dc3d 100644 --- a/base_partner_ref/__init__.py +++ b/base_partner_ref/__init__.py @@ -1 +1,2 @@ from . import models +from .post_install import update_partner_display_name diff --git a/base_partner_ref/__manifest__.py b/base_partner_ref/__manifest__.py index 45ff5a0..87acee5 100644 --- a/base_partner_ref/__manifest__.py +++ b/base_partner_ref/__manifest__.py @@ -1,10 +1,10 @@ -# Copyright 2017-2021 Akretion (http://www.akretion.com) +# Copyright 2017-2023 Akretion France (https://www.akretion.com) # @author Alexis de Lattre # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). { 'name': 'Base Partner Reference', - 'version': '14.0.1.0.0', + 'version': '16.0.1.0.0', 'category': 'Partner', 'license': 'AGPL-3', 'summary': "Improve usage of partner's Internal Reference", @@ -19,8 +19,9 @@ Base Partner Reference * Adds unicity constraint on Internal Reference """, 'author': 'Akretion', - 'website': 'http://www.akretion.com', + 'website': 'https://github.com/akretion/odoo-usability', 'depends': ['base'], 'data': ['views/res_partner.xml'], - 'installable': False, + 'post_init_hook': 'update_partner_display_name', + 'installable': True, } diff --git a/base_partner_ref/models/res_partner.py b/base_partner_ref/models/res_partner.py index 2460c27..4321026 100644 --- a/base_partner_ref/models/res_partner.py +++ b/base_partner_ref/models/res_partner.py @@ -1,8 +1,9 @@ -# Copyright 2017-2021 Akretion +# Copyright 2017-2023 Akretion France (https://akretion.com/) # @author: Alexis de Lattre # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). from odoo import api, fields, models +import re class ResPartner(models.Model): @@ -36,7 +37,8 @@ class ResPartner(models.Model): ['type'])['type']['selection'])[partner.type] if not partner.is_company: # START modif of native name_get() method - company_name = partner.commercial_company_name or partner.parent_id.name + company_name = partner.commercial_company_name or\ + partner.sudo().parent_id.name if partner.parent_id.ref: company_name = "[%s] %s" % (partner.parent_id.ref, company_name) name = "%s, %s" % (company_name, name) @@ -45,8 +47,9 @@ class ResPartner(models.Model): name = partner._display_address(without_company=True) if self._context.get('show_address'): name = name + "\n" + partner._display_address(without_company=True) - name = name.replace('\n\n', '\n') - name = name.replace('\n\n', '\n') + name = re.sub(r'\s+\n', '\n', name) + if self._context.get('partner_show_db_id'): + name = "%s (%s)" % (name, partner.id) if self._context.get('address_inline'): splitted_names = name.split("\n") name = ", ".join([n for n in splitted_names if n.strip()]) @@ -56,7 +59,7 @@ class ResPartner(models.Model): name = name.replace('\n', '
') if self._context.get('show_vat') and partner.vat: name = "%s ‒ %s" % (name, partner.vat) - return name + return name.strip() @api.model def name_search(self, name='', args=None, operator='ilike', limit=100): diff --git a/base_partner_ref/post_install.py b/base_partner_ref/post_install.py new file mode 100644 index 0000000..662b5e4 --- /dev/null +++ b/base_partner_ref/post_install.py @@ -0,0 +1,12 @@ +# Copyright 2023 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, SUPERUSER_ID + + +def update_partner_display_name(cr, registry): + env = api.Environment(cr, SUPERUSER_ID, {}) + partners = env['res.partner'].with_context(active_test=False).search( + [('ref', '!=', False)]) + partners.write({'invalidate_display_name': True}) diff --git a/base_partner_ref/views/res_partner.xml b/base_partner_ref/views/res_partner.xml index 6f5daa8..2bbe4fb 100644 --- a/base_partner_ref/views/res_partner.xml +++ b/base_partner_ref/views/res_partner.xml @@ -1,6 +1,6 @@ @@ -13,7 +13,7 @@ 1000 - + @@ -40,6 +40,9 @@ --> +