[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
This commit is contained in:
Olivier Dony 2013-06-12 11:53:00 +02:00
parent e532701d28
commit 8722e2a01e
1 changed files with 8 additions and 2 deletions

View File

@ -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)