From 8722e2a01e29c36848a8bba84ae6ed71ccb97abc Mon Sep 17 00:00:00 2001 From: Olivier Dony Date: Wed, 12 Jun 2013 11:53:00 +0200 Subject: [PATCH] [FIX] res.partner: name_search() should match complete contact names in the format returned by name_get() This was missed during the change of the name_get() format at revision 4923.1.12 revid:odo@openerp.com-20130416093121-t5soophs2aui8rzq lp bug: https://launchpad.net/bugs/1188300 fixed bzr revid: odo@openerp.com-20130612095300-pcr3ly5g7bv656i1 --- openerp/addons/base/res/res_partner.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/openerp/addons/base/res/res_partner.py b/openerp/addons/base/res/res_partner.py index 0c9c1f5ed45..92414e764f3 100644 --- a/openerp/addons/base/res/res_partner.py +++ b/openerp/addons/base/res/res_partner.py @@ -593,10 +593,16 @@ class res_partner(osv.osv, format_address): if limit: limit_str = ' limit %(limit)s' query_args['limit'] = limit + # TODO: simplify this in trunk with _rec_name='display_name', once display_name + # becomes a stored field cr.execute('''SELECT partner.id FROM res_partner partner LEFT JOIN res_partner company ON partner.parent_id = company.id - WHERE partner.email ''' + operator +''' %(name)s - OR partner.name || ' (' || COALESCE(company.name,'') || ')' + WHERE partner.email ''' + operator +''' %(name)s OR + CASE WHEN company.id IS NULL OR partner.is_company + THEN partner.name + ELSE + company.name || ', ' || partner.name + END ''' + operator + ' %(name)s ' + limit_str, query_args) ids = map(lambda x: x[0], cr.fetchall()) ids = self.search(cr, uid, [('id', 'in', ids)] + args, limit=limit, context=context)