the formula as programmed only works if called as function field from res_partner.
if called "stand alone" it returns wrong values as described
def _credit_debit_get(self, cr, uid, ids, field_names, arg, context=None):
query = self.pool.get('account.move.line')._query_get(cr, uid, context=context) cr.execute("""SELECT l.partner_id, a.type, SUM(l.debit-l.credit) FROM account_move_line l LEFT JOIN account_account a ON (l.account_id=a.id) WHERE a.type IN ('receivable','payable') AND l.partner_id IN %s AND l.reconcile_id IS NULL AND """ + query + """ GROUP BY l.partner_id, a.type """, (tuple(ids),))
maps = {'receivable':'credit', 'payable':'debit' }
res = {}
for id in ids:
res[id] = {}.fromkeys(field_names, 0)
for pid,type,val in cr.fetchall():
if val is None: val=0 res[pid][maps[type]] = (type=='receivable') and val or -val
return res
the formula as programmed only works if called as function field from res_partner.
if called "stand alone" it returns wrong values as described
def _credit_ debit_get( self, cr, uid, ids, field_names, arg, context=None): get('account. move.line' )._query_ get(cr, uid, context=context)
cr.execute( """SELECT l.partner_id, a.type, SUM(l.debit- l.credit)
FROM account_move_line l
LEFT JOIN account_account a ON (l.account_id=a.id)
WHERE a.type IN ('receivable' ,'payable' )
AND l.partner_id IN %s
AND l.reconcile_id IS NULL
AND """ + query + """
GROUP BY l.partner_id, a.type
""",
(tuple( ids),)) :'credit' , 'payable':'debit' } field_names, 0)
res[ pid][maps[ type]] = (type== 'receivable' ) and val or -val
query = self.pool.
maps = {'receivable'
res = {}
for id in ids:
res[id] = {}.fromkeys(
for pid,type,val in cr.fetchall():
if val is None: val=0
return res