From 1576bc98919c1ae93e66f902fb5c700c61c2b6cf Mon Sep 17 00:00:00 2001 From: Olivier Dony Date: Thu, 9 Jul 2015 11:28:14 +0200 Subject: [PATCH] [FIX] analytic: name_search match multi-level account names even with domain When name_search is called with an extra domain filter (args) and a pattern (name) containing multi-level accounts, such as `A / B / C`, only the last account (`C`) has to match the domain. The intermediary parent accounts do not have to match. The domain was previously applied for each parent in the lookup. This prevented searching for multi-level accounts or copy-pasting full account names whenever a domain was present and did not match every account in the hierarchy. --- addons/analytic/analytic.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/addons/analytic/analytic.py b/addons/analytic/analytic.py index 7e38ea1347f..7bb6c1642ff 100644 --- a/addons/analytic/analytic.py +++ b/addons/analytic/analytic.py @@ -310,9 +310,12 @@ class account_analytic_account(osv.osv): dom = [] for name2 in name.split('/'): name = name2.strip() - account_ids = self.search(cr, uid, dom + [('name', operator, name)] + args, limit=limit, context=context) + account_ids = self.search(cr, uid, dom + [('name', operator, name)], limit=limit, context=context) if not account_ids: break dom = [('parent_id','in',account_ids)] + if account_ids and args: + # final filtering according to domain (args) + account_ids = self.search(cr, uid, [('id', 'in', account_ids)] + args, limit=limit, context=context) else: account_ids = self.search(cr, uid, args, limit=limit, context=context) return self.name_get(cr, uid, account_ids, context=context)