Use revenue account when the asset value increases or residual value is positive

Closes #14311 #14312
This commit is contained in:
Cédric Krier
2025-10-23 19:23:09 +02:00
parent 07fc626588
commit 1f6403ba78
3 changed files with 49 additions and 13 deletions
+20 -5
View File
@@ -606,7 +606,10 @@ class Asset(Workflow, ModelSQL, ModelView):
square_amount = asset_line.credit - depreciation_line.debit
if square_amount:
if not account:
account = self.product.account_revenue_used
if square_amount < 0:
account = self.product.account_revenue_used
else:
account = self.product.account_expense_used
counter_part_line = MoveLine(
debit=square_amount if square_amount > 0 else 0,
credit=-square_amount if square_amount < 0 else 0,
@@ -860,12 +863,24 @@ class UpdateAsset(Wizard):
return min(next_dates)
def default_show_move(self, fields):
amount = self.start.value - self.record.value
if amount <= 0:
depreciation_account = (
self.record.product.account_depreciation_used)
counterpart_account = self.record.product.account_expense_used
else:
if self.record.supplier_invoice_line:
account_asset = (
self.record.supplier_invoice_line.account.current())
else:
account_asset = self.record.product.account_asset_used
depreciation_account = account_asset
counterpart_account = self.record.product.account_revenue_used
return {
'amount': self.start.value - self.record.value,
'amount': amount,
'date': datetime.date.today(),
'depreciation_account': (
self.record.product.account_depreciation_used.id),
'counterpart_account': self.record.product.account_expense_used.id,
'depreciation_account': depreciation_account,
'counterpart_account': counterpart_account,
'latest_move_date': self.get_latest_move_date(self.record),
'next_depreciation_date': self.get_next_depreciation_date(
self.record),
@@ -191,14 +191,24 @@ Update the asset::
Decimal('42.30')
>>> depreciation_account.reload()
>>> depreciation_account.debit
Decimal('100.00')
Decimal('0.00')
>>> depreciation_account.credit
Decimal('112.50')
>>> asset_account.reload()
>>> asset_account.debit
Decimal('1100.00')
>>> asset_account.credit
Decimal('0.00')
>>> revenue.reload()
>>> revenue.debit
Decimal('0.00')
>>> revenue.credit
Decimal('100.00')
>>> expense.reload()
>>> expense.debit
Decimal('112.50')
>>> expense.credit
Decimal('100.00')
Decimal('0.00')
Create Moves for 3 other months::
@@ -206,16 +216,21 @@ Create Moves for 3 other months::
>>> create_moves.form.date = (supplier_invoice.invoice_date
... + relativedelta(months=6))
>>> create_moves.execute('create_moves')
>>> asset_account.reload()
>>> asset_account.debit
Decimal('1100.00')
>>> asset_account.credit
Decimal('0.00')
>>> depreciation_account.reload()
>>> depreciation_account.debit
Decimal('100.00')
Decimal('0.00')
>>> depreciation_account.credit
Decimal('239.28')
>>> expense.reload()
>>> expense.debit
Decimal('239.28')
>>> expense.credit
Decimal('100.00')
Decimal('0.00')
Sale the asset::
@@ -233,18 +248,19 @@ Sale the asset::
'posted'
>>> asset.reload()
>>> assertEqual(asset.customer_invoice_line, customer_invoice.lines[0])
>>> revenue.reload()
>>> revenue.debit
Decimal('860.72')
>>> revenue.credit
Decimal('600.00')
Decimal('700.00')
>>> asset_account.reload()
>>> asset_account.debit
Decimal('1000.00')
Decimal('1100.00')
>>> asset_account.credit
Decimal('1100.00')
>>> depreciation_account.reload()
>>> depreciation_account.debit
Decimal('339.28')
Decimal('239.28')
>>> depreciation_account.credit
Decimal('239.28')
@@ -128,8 +128,13 @@ Close the asset::
Decimal('612.50')
>>> depreciation_account.credit
Decimal('112.50')
>>> expense.reload()
>>> expense.debit
Decimal('1000.00')
>>> expense.credit
Decimal('0.00')
>>> revenue.reload()
>>> revenue.debit
Decimal('887.50')
Decimal('0.00')
>>> revenue.credit
Decimal('0.00')