mirror of
https://github.com/frappe/erpnext.git
synced 2026-06-02 03:39:11 +00:00
Merge pull request #48629 from khushi8112/update-value-after-depreciation-after-revaluation
fix: update asset value after revaluation cancellation
This commit is contained in:
@@ -249,14 +249,11 @@ class Asset(AccountsController):
|
|||||||
frappe.throw(_("Purchase Invoice cannot be made against an existing asset {0}").format(self.name))
|
frappe.throw(_("Purchase Invoice cannot be made against an existing asset {0}").format(self.name))
|
||||||
|
|
||||||
def prepare_depreciation_data(self):
|
def prepare_depreciation_data(self):
|
||||||
|
self.value_after_depreciation = flt(self.gross_purchase_amount) - flt(
|
||||||
|
self.opening_accumulated_depreciation
|
||||||
|
)
|
||||||
if self.calculate_depreciation:
|
if self.calculate_depreciation:
|
||||||
self.value_after_depreciation = 0
|
|
||||||
self.set_depreciation_rate()
|
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):
|
def validate_item(self):
|
||||||
item = frappe.get_cached_value(
|
item = frappe.get_cached_value(
|
||||||
|
|||||||
@@ -1492,7 +1492,6 @@ class TestDepreciationBasics(AssetSetup):
|
|||||||
)
|
)
|
||||||
|
|
||||||
self.assertSequenceEqual(gle, expected_gle)
|
self.assertSequenceEqual(gle, expected_gle)
|
||||||
self.assertEqual(asset.get("value_after_depreciation"), 0)
|
|
||||||
|
|
||||||
def test_expected_value_change(self):
|
def test_expected_value_change(self):
|
||||||
"""
|
"""
|
||||||
|
|||||||
@@ -48,7 +48,6 @@ class AssetValueAdjustment(Document):
|
|||||||
|
|
||||||
def on_submit(self):
|
def on_submit(self):
|
||||||
self.make_depreciation_entry()
|
self.make_depreciation_entry()
|
||||||
self.set_value_after_depreciation()
|
|
||||||
self.update_asset(self.new_asset_value)
|
self.update_asset(self.new_asset_value)
|
||||||
add_asset_activity(
|
add_asset_activity(
|
||||||
self.asset,
|
self.asset,
|
||||||
@@ -80,9 +79,6 @@ class AssetValueAdjustment(Document):
|
|||||||
def set_difference_amount(self):
|
def set_difference_amount(self):
|
||||||
self.difference_amount = flt(self.new_asset_value - self.current_asset_value)
|
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):
|
def set_current_asset_value(self):
|
||||||
if not self.current_asset_value and self.asset:
|
if not self.current_asset_value and self.asset:
|
||||||
self.current_asset_value = get_asset_value_after_depreciation(self.asset, self.finance_book)
|
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)
|
self.db_set("journal_entry", je.name)
|
||||||
|
|
||||||
def update_asset(self, asset_value=None):
|
def update_asset(self, asset_value=None):
|
||||||
asset = frappe.get_doc("Asset", self.asset)
|
difference_amount = self.difference_amount if self.docstatus == 1 else -1 * self.difference_amount
|
||||||
|
asset = self.update_asset_value_after_depreciation(difference_amount)
|
||||||
if not asset.calculate_depreciation:
|
|
||||||
asset.value_after_depreciation = asset_value
|
|
||||||
asset.save()
|
|
||||||
return
|
|
||||||
|
|
||||||
asset.flags.decrease_in_asset_value_due_to_value_adjustment = True
|
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")),
|
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(
|
make_new_active_asset_depr_schedules_and_cancel_current_ones(
|
||||||
asset,
|
asset,
|
||||||
notes,
|
notes,
|
||||||
@@ -212,6 +191,23 @@ class AssetValueAdjustment(Document):
|
|||||||
asset.save()
|
asset.save()
|
||||||
asset.set_status()
|
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):
|
def get_adjusted_salvage_value_amount(self, row, difference_amount):
|
||||||
if row.expected_value_after_useful_life:
|
if row.expected_value_after_useful_life:
|
||||||
salvage_value_adjustment = (difference_amount * row.salvage_value_percentage) / 100
|
salvage_value_adjustment = (difference_amount * row.salvage_value_percentage) / 100
|
||||||
|
|||||||
@@ -282,13 +282,13 @@ class TestAssetValueAdjustment(unittest.TestCase):
|
|||||||
|
|
||||||
adj_doc = make_asset_value_adjustment(
|
adj_doc = make_asset_value_adjustment(
|
||||||
asset=asset_doc.name,
|
asset=asset_doc.name,
|
||||||
current_asset_value=54000,
|
current_asset_value=120000.0,
|
||||||
new_asset_value=50000.0,
|
new_asset_value=50000.0,
|
||||||
date="2023-08-21",
|
date="2023-08-21",
|
||||||
)
|
)
|
||||||
adj_doc.submit()
|
adj_doc.submit()
|
||||||
difference_amount = adj_doc.new_asset_value - adj_doc.current_asset_value
|
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()
|
asset_doc.load_from_db()
|
||||||
self.assertEqual(asset_doc.value_after_depreciation, 50000.0)
|
self.assertEqual(asset_doc.value_after_depreciation, 50000.0)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user