[FIX] account_asset: asset depreciation with refund

When an asset is created from a refund invoice, the negative amount
must be taken into account to create the depreciation moves.

opw:685630
This commit is contained in:
Goffin Simon 2016-08-10 17:05:35 +02:00
parent d32871570a
commit c844534f8a
2 changed files with 9 additions and 5 deletions

View File

@ -25,6 +25,7 @@ from dateutil.relativedelta import relativedelta
from openerp.osv import fields, osv from openerp.osv import fields, osv
import openerp.addons.decimal_precision as dp import openerp.addons.decimal_precision as dp
from openerp.tools import float_compare
from openerp.tools.translate import _ from openerp.tools.translate import _
class account_asset_category(osv.osv): class account_asset_category(osv.osv):
@ -408,13 +409,14 @@ class account_asset_depreciation_line(osv.osv):
move_id = move_obj.create(cr, uid, move_vals, context=context) move_id = move_obj.create(cr, uid, move_vals, context=context)
journal_id = line.asset_id.category_id.journal_id.id journal_id = line.asset_id.category_id.journal_id.id
partner_id = line.asset_id.partner_id.id partner_id = line.asset_id.partner_id.id
prec = self.pool['decimal.precision'].precision_get(cr, uid, 'Account')
move_line_obj.create(cr, uid, { move_line_obj.create(cr, uid, {
'name': asset_name, 'name': asset_name,
'ref': reference, 'ref': reference,
'move_id': move_id, 'move_id': move_id,
'account_id': line.asset_id.category_id.account_depreciation_id.id, 'account_id': line.asset_id.category_id.account_depreciation_id.id,
'debit': 0.0, 'debit': 0.0 if float_compare(amount, 0.0, precision_digits=prec) > 0 else -amount,
'credit': amount, 'credit': amount if float_compare(amount, 0.0, precision_digits=prec) > 0 else 0.0,
'period_id': period_ids and period_ids[0] or False, 'period_id': period_ids and period_ids[0] or False,
'journal_id': journal_id, 'journal_id': journal_id,
'partner_id': partner_id, 'partner_id': partner_id,
@ -427,8 +429,8 @@ class account_asset_depreciation_line(osv.osv):
'ref': reference, 'ref': reference,
'move_id': move_id, 'move_id': move_id,
'account_id': line.asset_id.category_id.account_expense_depreciation_id.id, 'account_id': line.asset_id.category_id.account_expense_depreciation_id.id,
'credit': 0.0, 'credit': 0.0 if float_compare(amount, 0.0, precision_digits=prec) > 0 else -amount,
'debit': amount, 'debit': amount if float_compare(amount, 0.0, precision_digits=prec) > 0 else 0.0,
'period_id': period_ids and period_ids[0] or False, 'period_id': period_ids and period_ids[0] or False,
'journal_id': journal_id, 'journal_id': journal_id,
'partner_id': partner_id, 'partner_id': partner_id,

View File

@ -55,11 +55,13 @@ class account_invoice_line(osv.osv):
asset_obj.write(cr, SUPERUSER_ID, asset_ids, {'active': False}) asset_obj.write(cr, SUPERUSER_ID, asset_ids, {'active': False})
for line in lines: for line in lines:
if line.asset_category_id: if line.asset_category_id:
#FORWARDPORT UP TO SAAS-6
sign = -1 if line.invoice_id.type in ("in_refund", 'out_refund') else 1
vals = { vals = {
'name': line.name, 'name': line.name,
'code': line.invoice_id.number or False, 'code': line.invoice_id.number or False,
'category_id': line.asset_category_id.id, 'category_id': line.asset_category_id.id,
'purchase_value': line.price_subtotal, 'purchase_value': sign * line.price_subtotal,
'partner_id': line.invoice_id.partner_id.id, 'partner_id': line.invoice_id.partner_id.id,
'company_id': line.invoice_id.company_id.id, 'company_id': line.invoice_id.company_id.id,
'currency_id': line.invoice_id.currency_id.id, 'currency_id': line.invoice_id.currency_id.id,