fix: update salvage value after value adjustment (backport #48228) (#48248)

fix: update salvage value after value adjustment
This commit is contained in:
Khushi Rawat
2025-06-25 11:43:18 +05:30
committed by GitHub
parent 41d22d0255
commit ef202d7cd0
2 changed files with 45 additions and 0 deletions

View File

@@ -192,6 +192,10 @@ class AssetValueAdjustment(Document):
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()
@@ -208,6 +212,10 @@ class AssetValueAdjustment(Document):
asset.save()
asset.set_status()
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
return flt(salvage_value_adjustment if self.docstatus == 1 else -1 * salvage_value_adjustment)
@frappe.whitelist()
def get_value_of_accounting_dimensions(asset_name):

View File

@@ -292,6 +292,43 @@ class TestAssetValueAdjustment(unittest.TestCase):
asset_doc.load_from_db()
self.assertEqual(asset_doc.value_after_depreciation, 50000.0)
def test_expected_value_after_useful_life(self):
pr = make_purchase_receipt(item_code="Macbook Pro", qty=1, rate=100000.0, location="Test Location")
asset_name = frappe.db.get_value("Asset", {"purchase_receipt": pr.name}, "name")
asset_doc = frappe.get_doc("Asset", asset_name)
asset_doc.calculate_depreciation = 1
asset_doc.available_for_use_date = "2023-01-15"
asset_doc.purchase_date = "2023-01-15"
asset_doc.append(
"finance_books",
{
"expected_value_after_useful_life": 5000,
"salvage_value_percentage": 5,
"depreciation_method": "Straight Line",
"total_number_of_depreciations": 12,
"frequency_of_depreciation": 1,
"depreciation_start_date": "2023-01-31",
},
)
asset_doc.submit()
self.assertEqual(asset_doc.finance_books[0].expected_value_after_useful_life, 5000.0)
current_asset_value = get_asset_value_after_depreciation(asset_doc.name)
adj_doc = make_asset_value_adjustment(
asset=asset_doc.name,
current_asset_value=current_asset_value,
new_asset_value=40000,
date="2023-08-21",
)
adj_doc.submit()
difference_amount = adj_doc.new_asset_value - adj_doc.current_asset_value
self.assertEqual(difference_amount, -60000)
asset_doc.load_from_db()
self.assertEqual(asset_doc.finance_books[0].value_after_depreciation, 40000.0)
self.assertEqual(asset_doc.finance_books[0].expected_value_after_useful_life, 2000.0)
def make_asset_value_adjustment(**args):
args = frappe._dict(args)