From f7debac6de4b9de0af67ecd3e349ae034f21f0ef Mon Sep 17 00:00:00 2001 From: "Bhumika (OpenERP)" Date: Mon, 5 Mar 2012 10:03:59 +0530 Subject: [PATCH] [IMP] base/res: Improve the name_search of parnter bzr revid: sbh@tinyerp.com-20120305043359-he9ycxosp08cyyml --- openerp/addons/base/res/res_partner.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/openerp/addons/base/res/res_partner.py b/openerp/addons/base/res/res_partner.py index a8c1439c893..4d2842fc6be 100644 --- a/openerp/addons/base/res/res_partner.py +++ b/openerp/addons/base/res/res_partner.py @@ -313,6 +313,19 @@ class res_partner(osv.osv): # short-circuit ref match when possible if name and operator in ('=', 'ilike', '=ilike', 'like'): ids = self.search(cr, uid, [('ref', '=', name)] + args, limit=limit, context=context) + if not ids: + names=map(lambda i : i.strip(),name.split('(')) + for i in range(len(names)): + dom=[('name', operator, names[i])] + if i>0: + dom+=[('id','child_of',ids)] + ids = self.search(cr, uid, dom, limit=limit, context=context) + contact_ids = ids + while contact_ids: + contact_ids = self.search(cr, uid, [('parent_id', 'in', contact_ids)], limit=limit, context=context) + ids += contact_ids + if args: + ids = self.search(cr, uid, [('id', 'in', ids)] + args, limit=limit, context=context) if ids: return self.name_get(cr, uid, ids, context) return super(res_partner,self).name_search(cr, uid, name, args, operator=operator, context=context, limit=limit)