From 0af5c20727101ec3958fc95d6c27442baf1b422b Mon Sep 17 00:00:00 2001 From: Alexis de Lattre Date: Fri, 24 Mar 2017 18:01:20 +0100 Subject: [PATCH] Add module base_partner_ref for better use of 'ref' field on partners --- base_partner_ref/__init__.py | 3 ++ base_partner_ref/__manifest__.py | 27 ++++++++++++++++++ base_partner_ref/partner.py | 47 +++++++++++++++++++++++++++++++ base_partner_ref/partner_view.xml | 47 +++++++++++++++++++++++++++++++ 4 files changed, 124 insertions(+) create mode 100644 base_partner_ref/__init__.py create mode 100644 base_partner_ref/__manifest__.py create mode 100644 base_partner_ref/partner.py create mode 100644 base_partner_ref/partner_view.xml diff --git a/base_partner_ref/__init__.py b/base_partner_ref/__init__.py new file mode 100644 index 0000000..61cf8b2 --- /dev/null +++ b/base_partner_ref/__init__.py @@ -0,0 +1,3 @@ +# -*- coding: utf-8 -*- + +from . import partner diff --git a/base_partner_ref/__manifest__.py b/base_partner_ref/__manifest__.py new file mode 100644 index 0000000..84d78be --- /dev/null +++ b/base_partner_ref/__manifest__.py @@ -0,0 +1,27 @@ +# -*- coding: utf-8 -*- +# © 2017 Akretion (http://www.akretion.com) +# @author Alexis de Lattre +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +{ + 'name': 'Base Partner Reference', + 'version': '10.0.1.0.0', + 'category': 'Partner', + 'license': 'AGPL-3', + 'summary': "Improve usage of partner's Internal Reference", + 'description': """ +Base Partner Reference +====================== + +* Adds Internal Reference in partner tree view + +* Adds Internal Reference in name_get() + +* Adds unicity constraint on Internal Reference + """, + 'author': 'Akretion', + 'website': 'http://www.akretion.com', + 'depends': ['base'], + 'data': ['partner_view.xml'], + 'installable': True, +} diff --git a/base_partner_ref/partner.py b/base_partner_ref/partner.py new file mode 100644 index 0000000..93a598f --- /dev/null +++ b/base_partner_ref/partner.py @@ -0,0 +1,47 @@ +# -*- coding: utf-8 -*- +# © 2017 Akretion (Alexis de Lattre ) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import models, fields, api, _ + + +class ResPartner(models.Model): + _inherit = 'res.partner' + + _sql_constraints = [( + 'ref_unique', + 'unique(ref)', + 'A partner already exists with this internal reference!' + )] + + @api.multi + def name_get(self): + res = [] + for partner in self: + name = partner.name or '' + # START modif of native name_get() method + if partner.ref: + name = u"[%s] %s" % (partner.ref, name) + # END modif of native name_get() method + if partner.company_name or partner.parent_id: + if not name and partner.type in ['invoice', 'delivery', 'other']: + name = dict(self.fields_get(['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 + if partner.parent_id.ref: + company_name = u"[%s] %s" % (partner.parent_id.ref, company_name) + name = "%s, %s" % (company_name, name) + # END modif of native name_get() method + if self._context.get('show_address_only'): + 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') + if self._context.get('show_email') and partner.email: + name = "%s <%s>" % (name, partner.email) + if self._context.get('html_format'): + name = name.replace('\n', '
') + res.append((partner.id, name)) + return res diff --git a/base_partner_ref/partner_view.xml b/base_partner_ref/partner_view.xml new file mode 100644 index 0000000..8b8cd97 --- /dev/null +++ b/base_partner_ref/partner_view.xml @@ -0,0 +1,47 @@ + + + + + + + Move ref in partner form to make it more visible + res.partner + + + + + + + + + + + Add ref in partner tree view + res.partner + + + + + + + + + + Add ref in partner kanban view + res.partner + + + + + +
  • +
  • Ref:
  • + +
    +
    + +