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')

Reply via email to