[FIX]account: fix _balance func field on account.move.line to always return a result...
authorDenis Ledoux <dle@openerp.com>
Wed, 20 Nov 2013 14:21:31 +0000 (15:21 +0100)
committerDenis Ledoux <dle@openerp.com>
Wed, 20 Nov 2013 14:21:31 +0000 (15:21 +0100)
bzr revid: dle@openerp.com-20131120142131-s333lyva85cyn41o

addons/account/account_move_line.py

index cd7ba04..3282609 100644 (file)
@@ -311,13 +311,13 @@ class account_move_line(osv.osv):
             context = {}
         c = context.copy()
         c['initital_bal'] = True
-        sql = """SELECT l2.id, SUM(l1.debit-l1.credit)
-                    FROM account_move_line l1, account_move_line l2
-                    WHERE l2.account_id = l1.account_id
-                      AND l1.id <= l2.id
-                      AND l2.id IN %s AND """ + \
-                self._query_get(cr, uid, obj='l1', context=c) + \
-                " GROUP BY l2.id"
+        sql = """SELECT l1.id, COALESCE(SUM(l2.debit-l2.credit), 0)
+                    FROM account_move_line l1 LEFT JOIN account_move_line l2
+                    ON (l1.account_id = l2.account_id
+                      AND l2.id <= l1.id
+                      AND """ + \
+                self._query_get(cr, uid, obj='l2', context=c) + \
+                ") WHERE l1.id IN %s GROUP BY l1.id"
 
         cr.execute(sql, [tuple(ids)])
         return dict(cr.fetchall())