From dffdc67455ac07ebb4f66bc85c3274acb6290d0b Mon Sep 17 00:00:00 2001 From: anandbaburajan Date: Fri, 20 Jan 2023 15:38:26 +0530 Subject: [PATCH] fix: fb issue in asset chart, asset split and reverse_depreciation_entry_made_after_disposal --- erpnext/assets/doctype/asset/asset.js | 4 ++++ erpnext/assets/doctype/asset/asset.py | 13 +++++++++++-- erpnext/assets/doctype/asset/depreciation.py | 5 ++++- 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/erpnext/assets/doctype/asset/asset.js b/erpnext/assets/doctype/asset/asset.js index 7791b117444..8940b28ca6c 100644 --- a/erpnext/assets/doctype/asset/asset.js +++ b/erpnext/assets/doctype/asset/asset.js @@ -206,6 +206,10 @@ frappe.ui.form.on('Asset', { }, setup_chart: function(frm) { + if(frm.doc.finance_books.length > 1) { + return + } + var x_intervals = [frm.doc.purchase_date]; var asset_values = [frm.doc.gross_purchase_amount]; var last_depreciation_date = frm.doc.purchase_date; diff --git a/erpnext/assets/doctype/asset/asset.py b/erpnext/assets/doctype/asset/asset.py index ca6be9b57b2..969689727ab 100644 --- a/erpnext/assets/doctype/asset/asset.py +++ b/erpnext/assets/doctype/asset/asset.py @@ -1149,9 +1149,13 @@ def update_existing_asset(asset, remaining_qty): expected_value_after_useful_life, ) - accumulated_depreciation = 0 + processed_finance_books = [] for term in asset.get("schedules"): + if int(term.finance_book_id) not in processed_finance_books: + accumulated_depreciation = 0 + processed_finance_books.append(int(term.finance_book_id)) + depreciation_amount = flt((term.depreciation_amount * remaining_qty) / asset.asset_quantity) frappe.db.set_value( "Depreciation Schedule", term.name, "depreciation_amount", depreciation_amount @@ -1173,7 +1177,6 @@ def create_new_asset_after_split(asset, split_qty): new_asset.opening_accumulated_depreciation = opening_accumulated_depreciation new_asset.asset_quantity = split_qty new_asset.split_from = asset.name - accumulated_depreciation = 0 for finance_book in new_asset.get("finance_books"): finance_book.value_after_depreciation = flt( @@ -1183,7 +1186,13 @@ def create_new_asset_after_split(asset, split_qty): (finance_book.expected_value_after_useful_life * split_qty) / asset.asset_quantity ) + processed_finance_books = [] + for term in new_asset.get("schedules"): + if int(term.finance_book_id) not in processed_finance_books: + accumulated_depreciation = 0 + processed_finance_books.append(int(term.finance_book_id)) + depreciation_amount = flt((term.depreciation_amount * split_qty) / asset.asset_quantity) term.depreciation_amount = depreciation_amount accumulated_depreciation += depreciation_amount diff --git a/erpnext/assets/doctype/asset/depreciation.py b/erpnext/assets/doctype/asset/depreciation.py index c6daccc9728..92d040d4ebb 100644 --- a/erpnext/assets/doctype/asset/depreciation.py +++ b/erpnext/assets/doctype/asset/depreciation.py @@ -350,7 +350,10 @@ def reverse_depreciation_entry_made_after_disposal(asset, date): asset.flags.ignore_validate_update_after_submit = True schedule.journal_entry = None depreciation_amount = get_depreciation_amount_in_je(reverse_journal_entry) - asset.finance_books[0].value_after_depreciation += depreciation_amount + + idx = cint(schedule.finance_book_id) + asset.finance_books[idx - 1].value_after_depreciation += depreciation_amount + asset.save()