[FIX+IMP] account_asset_disposal: Avoid problems with negatives + avoid compute the same several times

This commit is contained in:
Pedro M. Baeza
2019-07-23 17:21:45 +02:00
parent d82d41c986
commit 20342768aa
2 changed files with 14 additions and 18 deletions

View File

@@ -7,7 +7,7 @@
{
"name": "Account asset disposal",
"summary": "Makes asset close account move automatically",
"version": "10.0.2.0.0",
"version": "10.0.2.0.1",
"category": "Accounting & Finance",
"website": "http://github.com/OCA/account-financial-tools",
"author": "Tecnativa, "

View File

@@ -5,7 +5,7 @@
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from odoo import models, fields, api, _
from odoo.tools import float_is_zero
from odoo.tools import float_compare
class AccountAssetAsset(models.Model):
@@ -30,12 +30,8 @@ class AccountAssetAsset(models.Model):
'credit': self.value,
}
def _disposal_line_depreciation_prepare(self, date):
def _disposal_line_depreciation_prepare(self, date, loss_value):
self.ensure_one()
loss_value = self.salvage_value
if not float_is_zero(self.value_residual,
precision_rounding=self.currency_id.rounding):
loss_value += self.value_residual
depreciation_value = self.value - loss_value
return {
'name': _('Asset depreciation'),
@@ -46,12 +42,8 @@ class AccountAssetAsset(models.Model):
'credit': 0.0,
}
def _disposal_line_loss_prepare(self, date, loss_account):
def _disposal_line_loss_prepare(self, date, loss_account, loss_value):
self.ensure_one()
loss_value = self.salvage_value
if not float_is_zero(self.value_residual,
precision_rounding=self.currency_id.rounding):
loss_value += self.value_residual
return {
'name': _('Asset loss'),
'journal_id': self.category_id.journal_id.id,
@@ -65,17 +57,21 @@ class AccountAssetAsset(models.Model):
def _disposal_move_prepare(self, date, loss_account):
self.ensure_one()
journal = self.category_id.journal_id
loss_value = self.salvage_value if self.salvage_value > 0 else 0.0
if float_compare(self.value_residual, 0,
precision_rounding=self.currency_id.rounding) == 1:
loss_value += self.value_residual
lines = [
(0, False, self._disposal_line_asset_prepare(date)),
(0, False, self._disposal_line_depreciation_prepare(date)),
(0, False, self._disposal_line_depreciation_prepare(
date, loss_value,
)),
]
loss_value = self.salvage_value
if not float_is_zero(self.value_residual,
precision_rounding=self.currency_id.rounding):
loss_value += self.value_residual
if loss_value:
lines.append((
0, False, self._disposal_line_loss_prepare(date, loss_account)
0, False, self._disposal_line_loss_prepare(
date, loss_account, loss_value,
),
))
return {
'journal_id': journal.id,