mirror of
https://github.com/OCA/account-financial-tools.git
synced 2025-02-02 12:47:26 +02:00
[FIX+IMP] account_asset_disposal: Avoid problems with negatives + avoid compute the same several times
This commit is contained in:
@@ -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, "
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user