From 83ed93fbb61e9888cd2b6e7d5820b6bc284abb69 Mon Sep 17 00:00:00 2001 From: anandbaburajan Date: Sun, 4 Dec 2022 22:45:48 +0530 Subject: [PATCH] chore: refactor chart and manual set_accumulated_depreciation logic --- erpnext/assets/doctype/asset/asset.js | 35 ++++++++++--------- .../asset_depreciation_schedule.js | 14 +++++++- .../asset_depreciation_schedule.json | 11 +++++- .../asset_depreciation_schedule.py | 1 + 4 files changed, 42 insertions(+), 19 deletions(-) diff --git a/erpnext/assets/doctype/asset/asset.js b/erpnext/assets/doctype/asset/asset.js index 4c393f0d4b..f937993f41 100644 --- a/erpnext/assets/doctype/asset/asset.js +++ b/erpnext/assets/doctype/asset/asset.js @@ -187,7 +187,11 @@ frappe.ui.form.on('Asset', { }) }, - setup_chart: function(frm) { + setup_chart: async 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; @@ -201,7 +205,19 @@ frappe.ui.form.on('Asset', { flt(frm.doc.opening_accumulated_depreciation)); } - $.each(frm.doc.schedules || [], function(i, v) { + let depr_schedule = []; + + if (frm.doc.finance_books.length == 1) { + depr_schedule = (await frappe.call( + "erpnext.assets.doctype.asset_depreciation_schedule.asset_depreciation_schedule.get_depr_schedule_from_asset_depr_schedule_of_asset", + { + asset_name: frm.doc.name, + finance_book: frm.doc.finance_books[0].finance_book || null + } + )).message; + } + + $.each(depr_schedule || [], function(i, v) { x_intervals.push(v.schedule_date); var asset_value = flt(frm.doc.gross_purchase_amount) - flt(v.accumulated_depreciation_amount); if(v.journal_entry) { @@ -265,10 +281,6 @@ frappe.ui.form.on('Asset', { // frm.toggle_reqd("next_depreciation_date", (!frm.doc.is_existing_asset && frm.doc.calculate_depreciation)); }, - opening_accumulated_depreciation: function(frm) { - erpnext.asset.set_accumulated_depreciation(frm); - }, - make_schedules_editable: function(frm) { if (frm.doc.finance_books) { var is_editable = frm.doc.finance_books.filter(d => d.depreciation_method == "Manual").length > 0 @@ -511,17 +523,6 @@ frappe.ui.form.on('Asset Finance Book', { } }); -erpnext.asset.set_accumulated_depreciation = function(frm) { - if(frm.doc.depreciation_method != "Manual") return; - - var accumulated_depreciation = flt(frm.doc.opening_accumulated_depreciation); - $.each(frm.doc.schedules || [], function(i, row) { - accumulated_depreciation += flt(row.depreciation_amount); - frappe.model.set_value(row.doctype, row.name, - "accumulated_depreciation_amount", accumulated_depreciation); - }) -}; - erpnext.asset.scrap_asset = function(frm) { frappe.confirm(__("Do you really want to scrap this asset?"), function () { frappe.call({ diff --git a/erpnext/assets/doctype/asset_depreciation_schedule/asset_depreciation_schedule.js b/erpnext/assets/doctype/asset_depreciation_schedule/asset_depreciation_schedule.js index 15e06e9a6f..fdebbb17c3 100644 --- a/erpnext/assets/doctype/asset_depreciation_schedule/asset_depreciation_schedule.js +++ b/erpnext/assets/doctype/asset_depreciation_schedule/asset_depreciation_schedule.js @@ -1,5 +1,6 @@ // Copyright (c) 2022, Frappe Technologies Pvt. Ltd. and contributors // For license information, please see license.txt +frappe.provide("erpnext.asset"); frappe.ui.form.on('Depreciation Schedule', { make_depreciation_entry: function(frm, cdt, cdn) { @@ -22,4 +23,15 @@ frappe.ui.form.on('Depreciation Schedule', { depreciation_amount: function(frm, cdt, cdn) { erpnext.asset.set_accumulated_depreciation(frm); } -}) \ No newline at end of file +}); + +erpnext.asset.set_accumulated_depreciation = function(frm) { + if(frm.doc.depreciation_method != "Manual") return; + + var accumulated_depreciation = flt(frm.doc.opening_accumulated_depreciation); + $.each(frm.doc.schedules || [], function(i, row) { + accumulated_depreciation += flt(row.depreciation_amount); + frappe.model.set_value(row.doctype, row.name, + "accumulated_depreciation_amount", accumulated_depreciation); + }) +}; diff --git a/erpnext/assets/doctype/asset_depreciation_schedule/asset_depreciation_schedule.json b/erpnext/assets/doctype/asset_depreciation_schedule/asset_depreciation_schedule.json index c5f7ca67b6..d39f30f943 100644 --- a/erpnext/assets/doctype/asset_depreciation_schedule/asset_depreciation_schedule.json +++ b/erpnext/assets/doctype/asset_depreciation_schedule/asset_depreciation_schedule.json @@ -10,6 +10,7 @@ "asset", "naming_series", "column_break_2", + "opening_accumulated_depreciation", "finance_book", "finance_book_id", "depreciation_details_section", @@ -151,7 +152,15 @@ "label": "Finance Book Id", "print_hide": 1, "read_only": 1 - } + }, + { + "depends_on": "opening_accumulated_depreciation", + "fieldname": "opening_accumulated_depreciation", + "fieldtype": "Currency", + "label": "Opening Accumulated Depreciation", + "read_only": 1, + "options": "Company:company:default_currency" + } ], "in_create": 1, "index_web_pages_for_search": 1, diff --git a/erpnext/assets/doctype/asset_depreciation_schedule/asset_depreciation_schedule.py b/erpnext/assets/doctype/asset_depreciation_schedule/asset_depreciation_schedule.py index 89c9c1a84f..8d854dcad9 100644 --- a/erpnext/assets/doctype/asset_depreciation_schedule/asset_depreciation_schedule.py +++ b/erpnext/assets/doctype/asset_depreciation_schedule/asset_depreciation_schedule.py @@ -150,6 +150,7 @@ def get_asset_depr_schedule_name(asset_name, finance_book): ) +@frappe.whitelist() def get_depr_schedule_from_asset_depr_schedule_of_asset(asset_name, finance_book): asset_depr_schedule_name = get_asset_depr_schedule_name(asset_name, finance_book)