From 20342768aa1e1bfe921a9a1b6ff5feab4e5b5036 Mon Sep 17 00:00:00 2001 From: "Pedro M. Baeza" Date: Tue, 23 Jul 2019 17:21:45 +0200 Subject: [PATCH] [FIX+IMP] account_asset_disposal: Avoid problems with negatives + avoid compute the same several times --- account_asset_disposal/__manifest__.py | 2 +- .../models/account_asset_asset.py | 30 ++++++++----------- 2 files changed, 14 insertions(+), 18 deletions(-) diff --git a/account_asset_disposal/__manifest__.py b/account_asset_disposal/__manifest__.py index ad4581f85..5ab23cd51 100644 --- a/account_asset_disposal/__manifest__.py +++ b/account_asset_disposal/__manifest__.py @@ -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, " diff --git a/account_asset_disposal/models/account_asset_asset.py b/account_asset_disposal/models/account_asset_asset.py index 7db0756f3..4edb3c243 100644 --- a/account_asset_disposal/models/account_asset_asset.py +++ b/account_asset_disposal/models/account_asset_asset.py @@ -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,