details: https://code.tryton.org/tryton/commit/70ac0802a8b4
branch: default
user: Cédric Krier <[email protected]>
date: Thu Oct 23 19:23:09 2025 +0200
description:
Use revenue account when the asset value increases or residual value is
positive
Closes #14311 #14312
diffstat:
modules/account_asset/asset.py | 25
++++++-
modules/account_asset/tests/scenario_account_asset.rst | 30
+++++++--
modules/account_asset/tests/scenario_account_asset_depreciated.rst | 7 ++-
3 files changed, 49 insertions(+), 13 deletions(-)
diffs (139 lines):
diff -r 4c90378c6f7b -r 70ac0802a8b4 modules/account_asset/asset.py
--- a/modules/account_asset/asset.py Thu Oct 23 18:24:26 2025 +0200
+++ b/modules/account_asset/asset.py Thu Oct 23 19:23:09 2025 +0200
@@ -606,7 +606,10 @@
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 @@
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),
diff -r 4c90378c6f7b -r 70ac0802a8b4
modules/account_asset/tests/scenario_account_asset.rst
--- a/modules/account_asset/tests/scenario_account_asset.rst Thu Oct 23
18:24:26 2025 +0200
+++ b/modules/account_asset/tests/scenario_account_asset.rst Thu Oct 23
19:23:09 2025 +0200
@@ -191,14 +191,24 @@
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.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 @@
'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')
diff -r 4c90378c6f7b -r 70ac0802a8b4
modules/account_asset/tests/scenario_account_asset_depreciated.rst
--- a/modules/account_asset/tests/scenario_account_asset_depreciated.rst
Thu Oct 23 18:24:26 2025 +0200
+++ b/modules/account_asset/tests/scenario_account_asset_depreciated.rst
Thu Oct 23 19:23:09 2025 +0200
@@ -128,8 +128,13 @@
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')