[FIX]
authorFabien Pinckaers <fp@tinyerp.com>
Sat, 17 Sep 2011 14:00:00 +0000 (16:00 +0200)
committerFabien Pinckaers <fp@tinyerp.com>
Sat, 17 Sep 2011 14:00:00 +0000 (16:00 +0200)
lp bug: https://launchpad.net/bugs/708073 fixed

bzr revid: fp@tinyerp.com-20110917140000-aauewkbahflkd5ng

addons/analytic/analytic.py

index a155352..d60efd2 100644 (file)
@@ -30,22 +30,22 @@ class account_analytic_account(osv.osv):
     _description = 'Analytic Account'
 
     def _compute_level_tree(self, cr, uid, ids, child_ids, res, field_names, context=None):
-        def recursive_computation(account_id, res):
-            currency_obj = self.pool.get('res.currency')
-            account = self.browse(cr, uid, account_id)
+        currency_obj = self.pool.get('res.currency')
+        recres = {}
+        def recursive_computation(account):
+            result2 = res[account.id].copy()
             for son in account.child_ids:
-                res = recursive_computation(son.id, res)
+                result = recursive_computation(son)
                 for field in field_names:
-                    if account.currency_id.id == son.currency_id.id or field=='quantity':
-                        res[account.id][field] += res[son.id][field]
-                    else:
-                        res[account.id][field] += currency_obj.compute(cr, uid, son.currency_id.id, account.currency_id.id, res[son.id][field], context=context)
-            return res
+                    if (account.currency_id.id != son.currency_id.id) and (field!='quantity'):
+                        result[field] = currency_obj.compute(cr, uid, son.currency_id.id, account.currency_id.id, result[field], context=context)
+                    result2[field] += result[field]
+            return result2
         for account in self.browse(cr, uid, ids, context=context):
             if account.id not in child_ids:
                 continue
-            res = recursive_computation(account.id, res)
-        return res
+            recres[account.id] = recursive_computation(account)
+        return recres
 
     def _debit_credit_bal_qtty(self, cr, uid, ids, name, arg, context=None):
         res = {}