From d9b24a30ebb6bf1a4d5e5d8f6902153972b13248 Mon Sep 17 00:00:00 2001 From: khushi8112 Date: Wed, 16 Jul 2025 13:12:51 +0530 Subject: [PATCH 1/5] fix: update asset value after revaluation cancellation --- .../asset_value_adjustment.py | 42 +++++++++---------- 1 file changed, 19 insertions(+), 23 deletions(-) diff --git a/erpnext/assets/doctype/asset_value_adjustment/asset_value_adjustment.py b/erpnext/assets/doctype/asset_value_adjustment/asset_value_adjustment.py index 2c1d7d9fcab..31fd62095df 100644 --- a/erpnext/assets/doctype/asset_value_adjustment/asset_value_adjustment.py +++ b/erpnext/assets/doctype/asset_value_adjustment/asset_value_adjustment.py @@ -48,7 +48,6 @@ class AssetValueAdjustment(Document): def on_submit(self): self.make_depreciation_entry() - self.set_value_after_depreciation() self.update_asset(self.new_asset_value) add_asset_activity( self.asset, @@ -80,9 +79,6 @@ class AssetValueAdjustment(Document): def set_difference_amount(self): self.difference_amount = flt(self.new_asset_value - self.current_asset_value) - def set_value_after_depreciation(self): - frappe.db.set_value("Asset", self.asset, "value_after_depreciation", self.new_asset_value) - def set_current_asset_value(self): if not self.current_asset_value and self.asset: self.current_asset_value = get_asset_value_after_depreciation(self.asset, self.finance_book) @@ -164,12 +160,8 @@ class AssetValueAdjustment(Document): self.db_set("journal_entry", je.name) def update_asset(self, asset_value=None): - asset = frappe.get_doc("Asset", self.asset) - - if not asset.calculate_depreciation: - asset.value_after_depreciation = asset_value - asset.save() - return + difference_amount = self.difference_amount if self.docstatus == 1 else -1 * self.difference_amount + asset = self.update_asset_value_after_depreciation(difference_amount) asset.flags.decrease_in_asset_value_due_to_value_adjustment = True @@ -188,19 +180,6 @@ class AssetValueAdjustment(Document): get_link_to_form(self.get("doctype"), self.get("name")), ) - difference_amount = self.difference_amount if self.docstatus == 1 else -1 * self.difference_amount - if asset.calculate_depreciation: - for row in asset.finance_books: - if cstr(row.finance_book) == cstr(self.finance_book): - salvage_value_adjustment = ( - self.get_adjusted_salvage_value_amount(row, difference_amount) or 0 - ) - row.expected_value_after_useful_life += salvage_value_adjustment - row.value_after_depreciation += flt(difference_amount) - row.db_update() - - asset.db_update() - make_new_active_asset_depr_schedules_and_cancel_current_ones( asset, notes, @@ -212,6 +191,23 @@ class AssetValueAdjustment(Document): asset.save() asset.set_status() + def update_asset_value_after_depreciation(self, difference_amount): + asset = frappe.get_doc("Asset", self.asset) + + if asset.calculate_depreciation: + for row in asset.finance_books: + if cstr(row.finance_book) == cstr(self.finance_book): + salvage_value_adjustment = ( + self.get_adjusted_salvage_value_amount(row, difference_amount) or 0 + ) + row.expected_value_after_useful_life += salvage_value_adjustment + row.value_after_depreciation = row.value_after_depreciation + flt(difference_amount) + row.db_update() + + asset.value_after_depreciation += flt(difference_amount) + asset.db_update() + return asset + def get_adjusted_salvage_value_amount(self, row, difference_amount): if row.expected_value_after_useful_life: salvage_value_adjustment = (difference_amount * row.salvage_value_percentage) / 100 From 3ab6a256e0a73637f1b5f22005553d86eeffb3a3 Mon Sep 17 00:00:00 2001 From: khushi8112 Date: Wed, 16 Jul 2025 13:33:31 +0530 Subject: [PATCH 2/5] test: updated test case --- .../asset_value_adjustment/test_asset_value_adjustment.py | 1 + 1 file changed, 1 insertion(+) diff --git a/erpnext/assets/doctype/asset_value_adjustment/test_asset_value_adjustment.py b/erpnext/assets/doctype/asset_value_adjustment/test_asset_value_adjustment.py index dfde9a7d885..23cdc25ecf8 100644 --- a/erpnext/assets/doctype/asset_value_adjustment/test_asset_value_adjustment.py +++ b/erpnext/assets/doctype/asset_value_adjustment/test_asset_value_adjustment.py @@ -267,6 +267,7 @@ class TestAssetValueAdjustment(unittest.TestCase): asset_doc.calculate_depreciation = 1 asset_doc.available_for_use_date = "2023-01-15" asset_doc.purchase_date = "2023-01-15" + asset_doc.value_after_depreciation = 54000.0 asset_doc.append( "finance_books", From 20bbfc504fbcf2708aa15341cedfe6ae5b7d0e65 Mon Sep 17 00:00:00 2001 From: khushi8112 Date: Wed, 16 Jul 2025 14:33:35 +0530 Subject: [PATCH 3/5] fix: do not set value after depreciation as zero --- erpnext/assets/doctype/asset/asset.py | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/erpnext/assets/doctype/asset/asset.py b/erpnext/assets/doctype/asset/asset.py index 019c97114fa..01a34a33177 100644 --- a/erpnext/assets/doctype/asset/asset.py +++ b/erpnext/assets/doctype/asset/asset.py @@ -249,14 +249,11 @@ class Asset(AccountsController): frappe.throw(_("Purchase Invoice cannot be made against an existing asset {0}").format(self.name)) def prepare_depreciation_data(self): + self.value_after_depreciation = flt(self.gross_purchase_amount) - flt( + self.opening_accumulated_depreciation + ) if self.calculate_depreciation: - self.value_after_depreciation = 0 self.set_depreciation_rate() - else: - self.finance_books = [] - self.value_after_depreciation = flt(self.gross_purchase_amount) - flt( - self.opening_accumulated_depreciation - ) def validate_item(self): item = frappe.get_cached_value( From c7dcbed16f92ad9d2e6f501f29a40e43fb65e7c0 Mon Sep 17 00:00:00 2001 From: khushi8112 Date: Wed, 16 Jul 2025 15:41:42 +0530 Subject: [PATCH 4/5] fix: test case --- .../asset_value_adjustment/test_asset_value_adjustment.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/erpnext/assets/doctype/asset_value_adjustment/test_asset_value_adjustment.py b/erpnext/assets/doctype/asset_value_adjustment/test_asset_value_adjustment.py index 23cdc25ecf8..fa292f73fa6 100644 --- a/erpnext/assets/doctype/asset_value_adjustment/test_asset_value_adjustment.py +++ b/erpnext/assets/doctype/asset_value_adjustment/test_asset_value_adjustment.py @@ -267,7 +267,6 @@ class TestAssetValueAdjustment(unittest.TestCase): asset_doc.calculate_depreciation = 1 asset_doc.available_for_use_date = "2023-01-15" asset_doc.purchase_date = "2023-01-15" - asset_doc.value_after_depreciation = 54000.0 asset_doc.append( "finance_books", @@ -283,13 +282,13 @@ class TestAssetValueAdjustment(unittest.TestCase): adj_doc = make_asset_value_adjustment( asset=asset_doc.name, - current_asset_value=54000, + current_asset_value=120000.0, new_asset_value=50000.0, date="2023-08-21", ) adj_doc.submit() difference_amount = adj_doc.new_asset_value - adj_doc.current_asset_value - self.assertEqual(difference_amount, -4000) + self.assertEqual(difference_amount, -70000) asset_doc.load_from_db() self.assertEqual(asset_doc.value_after_depreciation, 50000.0) From 9fe1e6d0bdf4197ccab26e3a6ca5a922902b496f Mon Sep 17 00:00:00 2001 From: khushi8112 Date: Wed, 16 Jul 2025 16:03:07 +0530 Subject: [PATCH 5/5] fix: test case --- erpnext/assets/doctype/asset/test_asset.py | 1 - 1 file changed, 1 deletion(-) diff --git a/erpnext/assets/doctype/asset/test_asset.py b/erpnext/assets/doctype/asset/test_asset.py index 9c8db82f41b..1ae96fe75dd 100644 --- a/erpnext/assets/doctype/asset/test_asset.py +++ b/erpnext/assets/doctype/asset/test_asset.py @@ -1492,7 +1492,6 @@ class TestDepreciationBasics(AssetSetup): ) self.assertSequenceEqual(gle, expected_gle) - self.assertEqual(asset.get("value_after_depreciation"), 0) def test_expected_value_change(self): """