diff --git a/addons/account_voucher/account_voucher.py b/addons/account_voucher/account_voucher.py index 4a4a84dee71..ce080d9e446 100644 --- a/addons/account_voucher/account_voucher.py +++ b/addons/account_voucher/account_voucher.py @@ -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: diff --git a/addons/account_voucher/test/sales_payment.yml b/addons/account_voucher/test/sales_payment.yml index b71e42add0b..cdef3cf6c9d 100644 --- a/addons/account_voucher/test/sales_payment.yml +++ b/addons/account_voucher/test/sales_payment.yml @@ -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)