[FIX] res.partner: name_search() should match complete contact names in the format...
authorOlivier Dony <odo@openerp.com>
Wed, 12 Jun 2013 09:53:00 +0000 (11:53 +0200)
committerOlivier Dony <odo@openerp.com>
Wed, 12 Jun 2013 09:53:00 +0000 (11:53 +0200)
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

index 0c9c1f5..92414e7 100644 (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)