From 5e2ce8b709528f8bcf9376c84c49cb90d3422c2a Mon Sep 17 00:00:00 2001 From: Olivier Dony Date: Fri, 19 Apr 2013 18:52:39 +0200 Subject: [PATCH] [IMP] account_report_company: add extra stored function field `display_name` on res.partner and use it for sorting This makes name_search() results, group_by, etc. all behave as expected bzr revid: odo@openerp.com-20130419165239-15szgi0e686k6mh9 --- .../account_report_company.py | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/addons/account_report_company/account_report_company.py b/addons/account_report_company/account_report_company.py index d643acd0c95..22719440dec 100644 --- a/addons/account_report_company/account_report_company.py +++ b/addons/account_report_company/account_report_company.py @@ -23,19 +23,27 @@ from openerp.osv import osv, fields class res_partner(osv.Model): _inherit = 'res.partner' - - # indirection to avoid passing a copy of the overridable method when declaring the function field - _commercial_partner_id = lambda self, *args, **kwargs: self._commercial_partner_compute(*args, **kwargs) + _order = 'display_name' + + def _display_name_compute(self, cr, uid, ids, name, args, context=None): + return dict(self.name_get(cr, uid, ids, context=context)) _commercial_partner_id_store_triggers = { 'res.partner': (lambda self,cr,uid,ids,context=None: self.search(cr, uid, [('id','child_of',ids)]), ['parent_id', 'is_company'], 10) } + # indirections to avoid passing a copy of the overridable method when declaring the function field + _commercial_partner_id = lambda self, *args, **kwargs: self._commercial_partner_compute(*args, **kwargs) + _display_name = lambda self, *args, **kwargs: self._display_name_compute(*args, **kwargs) + _columns = { # make the original field stored, in case it's needed for reporting purposes 'commercial_partner_id': fields.function(_commercial_partner_id, type='many2one', relation='res.partner', string='Commercial Entity', - store=_commercial_partner_id_store_triggers) + store=_commercial_partner_id_store_triggers), + + # extra field to allow ORDER BY to match visible names + 'display_name': fields.function(_display_name, type='char', string='Name', store=_commercial_partner_id_store_triggers), } class account_invoice(osv.Model):