[FIX] account_voucher: Fixed wrong writeoff(Payment Difference) calculation by recomp...
authorRavi Gohil (OpenERP) <rgo@tinyerp.com>
Wed, 23 Apr 2014 07:01:39 +0000 (12:31 +0530)
committerRavi Gohil (OpenERP) <rgo@tinyerp.com>
Wed, 23 Apr 2014 07:01:39 +0000 (12:31 +0530)
bzr revid: rgo@tinyerp.com-20140423070139-ielwafap3zcupglx

addons/account_voucher/account_voucher.py
addons/account_voucher/test/sales_payment.yml

index 4a4a84d..ce080d9 100644 (file)
@@ -792,6 +792,7 @@ class account_voucher(osv.osv):
                 total_credit += line.credit and line.amount_currency or 0.0
                 total_debit += line.debit and line.amount_currency or 0.0
 
+        remaining_amount = price
         #voucher line creation
         for line in account_move_lines:
 
@@ -812,13 +813,13 @@ class account_voucher(osv.osv):
                 'move_line_id':line.id,
                 'account_id':line.account_id.id,
                 'amount_original': amount_original,
-                'amount': (line.id in move_lines_found) and min(abs(price), amount_unreconciled) or 0.0,
+                'amount': (line.id in move_lines_found) and min(abs(remaining_amount), amount_unreconciled) or 0.0,
                 'date_original':line.date,
                 'date_due':line.date_maturity,
                 'amount_unreconciled': amount_unreconciled,
                 'currency_id': line_currency_id,
             }
-            price -= rs['amount']
+            remaining_amount -= rs['amount']
             #in case a corresponding move_line hasn't been found, we now try to assign the voucher amount
             #on existing invoices: we split voucher amount by most old first, but only for lines in the same currency
             if not move_lines_found:
index b71e42a..cdef3cf 100644 (file)
@@ -40,6 +40,8 @@
     import netsvc
     vals = {}
     journal_id = self.default_get(cr, uid, ['journal_id']).get('journal_id',None)
+    voucher = self.recompute_voucher_lines(cr, uid, [], ref("base.res_partner_19"), journal_id, 450.0, ref('base.EUR'), 'receipt', False)
+    assert (voucher['value'].get('writeoff_amount') == 0.0), "Writeoff amount calculated by recompute_voucher_lines() is not 0.0"
     res = self.onchange_partner_id(cr, uid, [], ref("base.res_partner_19"), journal_id, 0.0, 1, ttype='receipt', date=False)
     vals = {
         'account_id': ref('account.cash'),
@@ -60,6 +62,7 @@
     vals['line_cr_ids'] = [(0,0,i) for i in res['value']['line_cr_ids']]
     id = self.create(cr, uid, vals)
     voucher_id = self.browse(cr, uid, id)
+    assert (voucher_id.writeoff_amount == 0.0), "Writeoff amount is not 0.0"
     assert (voucher_id.state=='draft'), "Voucher is not in draft state"
     wf_service = netsvc.LocalService("workflow")
     wf_service.trg_validate(uid, 'account.voucher', voucher_id.id, 'proforma_voucher', cr)