chore: more refactoring
diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
index 62cf0dc..a99e92d 100644
--- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
+++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
@@ -1189,8 +1189,7 @@
else:
if asset.calculate_depreciation:
- depreciate_asset(asset, self.posting_date)
- asset.reload()
+ depreciate_asset(asset, self.posting_date, notes="Sell asset")
fixed_asset_gl_entries = get_gl_entries_on_asset_disposal(
asset, item.base_net_amount, item.finance_book, self.get("doctype"), self.get("name")
diff --git a/erpnext/assets/doctype/asset/asset.js b/erpnext/assets/doctype/asset/asset.js
index 7e54219..4c393f0 100644
--- a/erpnext/assets/doctype/asset/asset.js
+++ b/erpnext/assets/doctype/asset/asset.js
@@ -76,7 +76,6 @@
refresh: function(frm) {
frappe.ui.form.trigger("Asset", "is_existing_asset");
frm.toggle_display("next_depreciation_date", frm.doc.docstatus < 1);
- frm.events.make_schedules_editable(frm);
if (frm.doc.docstatus==1) {
if (in_list(["Submitted", "Partially Depreciated", "Fully Depreciated"], frm.doc.status)) {
@@ -512,30 +511,6 @@
}
});
-frappe.ui.form.on('Depreciation Schedule', {
- make_depreciation_entry: function(frm, cdt, cdn) {
- var row = locals[cdt][cdn];
- if (!row.journal_entry) {
- frappe.call({
- method: "erpnext.assets.doctype.asset.depreciation.make_depreciation_entry",
- args: {
- "asset_name": frm.doc.name,
- "date": row.schedule_date
- },
- callback: function(r) {
- frappe.model.sync(r.message);
- frm.refresh();
- }
- })
- }
- },
-
- depreciation_amount: function(frm, cdt, cdn) {
- erpnext.asset.set_accumulated_depreciation(frm);
- }
-
-})
-
erpnext.asset.set_accumulated_depreciation = function(frm) {
if(frm.doc.depreciation_method != "Manual") return;
diff --git a/erpnext/assets/doctype/asset/asset.json b/erpnext/assets/doctype/asset/asset.json
index 9af03ca..4bac303 100644
--- a/erpnext/assets/doctype/asset/asset.json
+++ b/erpnext/assets/doctype/asset/asset.json
@@ -52,8 +52,6 @@
"column_break_24",
"frequency_of_depreciation",
"next_depreciation_date",
- "section_break_14",
- "schedules",
"insurance_details",
"policy_number",
"insurer",
@@ -308,19 +306,6 @@
"no_copy": 1
},
{
- "depends_on": "calculate_depreciation",
- "fieldname": "section_break_14",
- "fieldtype": "Section Break",
- "label": "Depreciation Schedule"
- },
- {
- "fieldname": "schedules",
- "fieldtype": "Table",
- "label": "Depreciation Schedule",
- "no_copy": 1,
- "options": "Depreciation Schedule"
- },
- {
"collapsible": 1,
"fieldname": "insurance_details",
"fieldtype": "Section Break",
@@ -515,7 +500,7 @@
"link_fieldname": "asset"
}
],
- "modified": "2022-11-01 15:25:27.669803",
+ "modified": "2022-11-25 12:47:19.689702",
"modified_by": "Administrator",
"module": "Assets",
"name": "Asset",
diff --git a/erpnext/assets/doctype/asset/asset.py b/erpnext/assets/doctype/asset/asset.py
index 3955784..75c4809 100644
--- a/erpnext/assets/doctype/asset/asset.py
+++ b/erpnext/assets/doctype/asset/asset.py
@@ -31,7 +31,7 @@
from erpnext.assets.doctype.asset_depreciation_schedule.asset_depreciation_schedule import (
cancel_asset_depr_schedules,
convert_draft_asset_depr_schedules_into_active,
- get_asset_depr_schedule,
+ get_asset_depr_schedule_name,
get_depr_schedule_from_asset_depr_schedule_of_asset,
make_draft_asset_depr_schedules,
update_draft_asset_depr_schedules,
@@ -247,12 +247,12 @@
return value_after_depreciation
def get_from_date(self, finance_book):
- asset_depr_schedule = get_asset_depr_schedule(self.name, finance_book)
+ asset_depr_schedule_name = get_asset_depr_schedule_name(self.name, finance_book)
- if not asset_depr_schedule:
+ if not asset_depr_schedule_name:
return self.available_for_use_date
- asset_depr_schedule_doc = frappe.get_doc("Asset Depreciation Schedule", asset_depr_schedule)
+ asset_depr_schedule_doc = frappe.get_doc("Asset Depreciation Schedule", asset_depr_schedule_name)
return asset_depr_schedule_doc.get("depreciation_schedule")[-1].schedule_date
@@ -367,12 +367,14 @@
def validate_expected_value_after_useful_life(self):
for row in self.get("finance_books"):
- asset_depr_schedule = get_asset_depr_schedule(self.name, row.finance_book)
+ asset_depr_schedule_name = get_asset_depr_schedule_name(self.name, row.finance_book)
- if not asset_depr_schedule:
+ if not asset_depr_schedule_name:
return
- asset_depr_schedule_doc = frappe.get_doc("Asset Depreciation Schedule", asset_depr_schedule)
+ asset_depr_schedule_doc = frappe.get_doc(
+ "Asset Depreciation Schedule", asset_depr_schedule_name
+ )
accumulated_depreciation_after_full_schedule = [
d.accumulated_depreciation_amount for d in asset_depr_schedule_doc.get("depreciation_schedule")
@@ -425,12 +427,14 @@
def delete_depreciation_entries(self):
for row in self.get("finance_books"):
- asset_depr_schedule = get_asset_depr_schedule(self.name, row.finance_book)
+ asset_depr_schedule_name = get_asset_depr_schedule_name(self.name, row.finance_book)
- if not asset_depr_schedule:
+ if not asset_depr_schedule_name:
return
- asset_depr_schedule_doc = frappe.get_doc("Asset Depreciation Schedule", asset_depr_schedule)
+ asset_depr_schedule_doc = frappe.get_doc(
+ "Asset Depreciation Schedule", asset_depr_schedule_name
+ )
for d in asset_depr_schedule_doc.get("depreciation_schedule"):
if d.journal_entry:
diff --git a/erpnext/assets/doctype/asset/depreciation.py b/erpnext/assets/doctype/asset/depreciation.py
index 39ebc8d..a912a93 100644
--- a/erpnext/assets/doctype/asset/depreciation.py
+++ b/erpnext/assets/doctype/asset/depreciation.py
@@ -11,7 +11,9 @@
)
from erpnext.accounts.doctype.journal_entry.journal_entry import make_reverse_journal_entry
from erpnext.assets.doctype.asset_depreciation_schedule.asset_depreciation_schedule import (
+ get_asset_depr_schedule_name,
get_temp_asset_depr_schedule_doc,
+ make_new_active_asset_depr_schedules_and_cancel_current_ones,
)
@@ -25,7 +27,7 @@
if not date:
date = today()
for asset in get_depreciable_assets(date):
- make_depreciation_entry(asset, date)
+ make_depreciation_entry_for_all_asset_depr_schedules(asset, date)
if commit:
frappe.db.commit()
@@ -41,13 +43,23 @@
)
+def make_depreciation_entry_for_all_asset_depr_schedules(asset_doc, date=None):
+ for row in asset_doc.get("finance_books"):
+ asset_depr_schedule_name = get_asset_depr_schedule_name(asset_doc.name, row.finance_book)
+ make_depreciation_entry(asset_depr_schedule_name, date)
+
+
@frappe.whitelist()
-def make_depreciation_entry(asset_name, date=None):
+def make_depreciation_entry(asset_depr_schedule_name, date=None):
frappe.has_permission("Journal Entry", throw=True)
if not date:
date = today()
+ asset_depr_schedule_doc = frappe.get_doc("Asset Depreciation Schedule", asset_depr_schedule_name)
+
+ asset_name = asset_depr_schedule_doc.asset
+
asset = frappe.get_doc("Asset", asset_name)
(
fixed_asset_account,
@@ -63,14 +75,14 @@
accounting_dimensions = get_checks_for_pl_and_bs_accounts()
- for d in asset.get("schedules"):
+ for d in asset_depr_schedule_doc.get("depreciation_schedule"):
if not d.journal_entry and getdate(d.schedule_date) <= getdate(date):
je = frappe.new_doc("Journal Entry")
je.voucher_type = "Depreciation Entry"
je.naming_series = depreciation_series
je.posting_date = d.schedule_date
je.company = asset.company
- je.finance_book = d.finance_book
+ je.finance_book = asset_depr_schedule_doc.finance_book
je.remark = "Depreciation Entry against {0} worth {1}".format(asset_name, d.depreciation_amount)
credit_account, debit_account = get_credit_and_debit_accounts(
@@ -121,14 +133,14 @@
d.db_set("journal_entry", je.name)
- idx = cint(d.finance_book_id)
- finance_books = asset.get("finance_books")[idx - 1]
- finance_books.value_after_depreciation -= d.depreciation_amount
- finance_books.db_update()
+ idx = cint(asset_depr_schedule_doc.finance_book_id)
+ row = asset.get("finance_books")[idx - 1]
+ row.value_after_depreciation -= d.depreciation_amount
+ row.db_update()
asset.set_status()
- return asset
+ return asset_depr_schedule_doc
def get_depreciation_accounts(asset):
@@ -202,8 +214,7 @@
date = today()
- depreciate_asset(asset, date)
- asset.reload()
+ depreciate_asset(asset, date, notes="Scrap asset")
depreciation_series = frappe.get_cached_value(
"Company", asset.company, "series_for_depreciation_entry"
@@ -247,22 +258,20 @@
asset.set_status()
-def depreciate_asset(asset, date):
- asset.flags.ignore_validate_update_after_submit = True
- asset.prepare_depreciation_data(date_of_disposal=date)
- asset.save()
+def depreciate_asset(asset, date, notes):
+ make_new_active_asset_depr_schedules_and_cancel_current_ones(
+ asset, date_of_disposal=date, notes=notes
+ )
- make_depreciation_entry(asset.name, date)
+ make_depreciation_entry_for_all_asset_depr_schedules(asset, date)
-def reset_depreciation_schedule(asset, date):
- asset.flags.ignore_validate_update_after_submit = True
-
- # recreate original depreciation schedule of the asset
- asset.prepare_depreciation_data(date_of_return=date)
+def reset_depreciation_schedule(asset, date, notes):
+ make_new_active_asset_depr_schedules_and_cancel_current_ones(
+ asset, date_of_return=date, notes=notes
+ )
modify_depreciation_schedule_for_asset_repairs(asset)
- asset.save()
def modify_depreciation_schedule_for_asset_repairs(asset):
diff --git a/erpnext/assets/doctype/asset_capitalization/asset_capitalization.py b/erpnext/assets/doctype/asset_capitalization/asset_capitalization.py
index 08355f0..0787894 100644
--- a/erpnext/assets/doctype/asset_capitalization/asset_capitalization.py
+++ b/erpnext/assets/doctype/asset_capitalization/asset_capitalization.py
@@ -427,8 +427,7 @@
asset = self.get_asset(item)
if asset.calculate_depreciation:
- depreciate_asset(asset, self.posting_date)
- asset.reload()
+ depreciate_asset(asset, self.posting_date, notes="TODO")
fixed_asset_gl_entries = get_gl_entries_on_asset_disposal(
asset,
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 9d41de3..15e06e9 100644
--- a/erpnext/assets/doctype/asset_depreciation_schedule/asset_depreciation_schedule.js
+++ b/erpnext/assets/doctype/asset_depreciation_schedule/asset_depreciation_schedule.js
@@ -1,8 +1,25 @@
// Copyright (c) 2022, Frappe Technologies Pvt. Ltd. and contributors
// For license information, please see license.txt
-frappe.ui.form.on('Asset Depreciation Schedule', {
- // refresh: function(frm) {
+frappe.ui.form.on('Depreciation Schedule', {
+ make_depreciation_entry: function(frm, cdt, cdn) {
+ var row = locals[cdt][cdn];
+ if (!row.journal_entry) {
+ frappe.call({
+ method: "erpnext.assets.doctype.asset.depreciation.make_depreciation_entry",
+ args: {
+ "asset_depr_schedule_name": frm.doc.name,
+ "date": row.schedule_date
+ },
+ callback: function(r) {
+ frappe.model.sync(r.message);
+ frm.refresh();
+ }
+ })
+ }
+ },
- // }
-});
+ depreciation_amount: function(frm, cdt, cdn) {
+ erpnext.asset.set_accumulated_depreciation(frm);
+ }
+})
\ No newline at end of file
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 83ed089..c5f7ca6 100644
--- a/erpnext/assets/doctype/asset_depreciation_schedule/asset_depreciation_schedule.json
+++ b/erpnext/assets/doctype/asset_depreciation_schedule/asset_depreciation_schedule.json
@@ -11,6 +11,7 @@
"naming_series",
"column_break_2",
"finance_book",
+ "finance_book_id",
"depreciation_details_section",
"depreciation_method",
"total_number_of_depreciations",
@@ -142,13 +143,21 @@
"label": "Expected Value After Useful Life",
"options": "Company:company:default_currency",
"read_only": 1
+ },
+ {
+ "fieldname": "finance_book_id",
+ "fieldtype": "Data",
+ "hidden": 1,
+ "label": "Finance Book Id",
+ "print_hide": 1,
+ "read_only": 1
}
],
"in_create": 1,
"index_web_pages_for_search": 1,
"is_submittable": 1,
"links": [],
- "modified": "2022-11-14 14:33:53.360643",
+ "modified": "2022-11-25 14:31:52.668821",
"modified_by": "Administrator",
"module": "Assets",
"name": "Asset Depreciation Schedule",
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 43f7b4a..6e78d71 100644
--- a/erpnext/assets/doctype/asset_depreciation_schedule/asset_depreciation_schedule.py
+++ b/erpnext/assets/doctype/asset_depreciation_schedule/asset_depreciation_schedule.py
@@ -33,12 +33,12 @@
def update_draft_asset_depr_schedules(asset_doc, date_of_disposal=None, date_of_return=None):
for row in asset_doc.get("finance_books"):
- asset_depr_schedule = get_asset_depr_schedule(asset_doc.name, row.finance_book)
+ asset_depr_schedule_name = get_asset_depr_schedule_name(asset_doc.name, row.finance_book)
- if not asset_depr_schedule:
+ if not asset_depr_schedule_name:
return
- asset_depr_schedule_doc = frappe.get_doc("Asset Depreciation Schedule", asset_depr_schedule)
+ asset_depr_schedule_doc = frappe.get_doc("Asset Depreciation Schedule", asset_depr_schedule_name)
prepare_draft_asset_depr_schedule_data(
asset_depr_schedule_doc, asset_doc, row, date_of_disposal, date_of_return
@@ -57,9 +57,10 @@
)
-def set_draft_asset_depr_schedule_details(asset_depr_schedule_doc, asset, row):
- asset_depr_schedule_doc.asset = asset
+def set_draft_asset_depr_schedule_details(asset_depr_schedule_doc, asset_name, row):
+ asset_depr_schedule_doc.asset = asset_name
asset_depr_schedule_doc.finance_book = row.finance_book
+ asset_depr_schedule_doc.finance_book_id = row.idx
asset_depr_schedule_doc.depreciation_method = row.depreciation_method
asset_depr_schedule_doc.total_number_of_depreciations = row.total_number_of_depreciations
asset_depr_schedule_doc.frequency_of_depreciation = row.frequency_of_depreciation
@@ -70,29 +71,29 @@
def convert_draft_asset_depr_schedules_into_active(asset_doc):
for row in asset_doc.get("finance_books"):
- asset_depr_schedule_name = get_asset_depr_schedule(asset_doc.name, row.finance_book)
+ asset_depr_schedule_name = get_asset_depr_schedule_name(asset_doc.name, row.finance_book)
if not asset_depr_schedule_name:
return
- asset_depr_schedule = frappe.get_doc("Asset Depreciation Schedule", asset_depr_schedule_name)
+ asset_depr_schedule_doc = frappe.get_doc("Asset Depreciation Schedule", asset_depr_schedule_name)
- asset_depr_schedule.status = "Active"
+ asset_depr_schedule_doc.status = "Active"
- asset_depr_schedule.submit()
+ asset_depr_schedule_doc.submit()
def make_new_active_asset_depr_schedules_and_cancel_current_ones(
asset_doc, date_of_disposal=None, date_of_return=None, notes=None
):
for row in asset_doc.get("finance_books"):
- current_asset_depr_schedule = get_asset_depr_schedule(asset_doc.name, row.finance_book)
+ current_asset_depr_schedule_name = get_asset_depr_schedule_name(asset_doc.name, row.finance_book)
- if not current_asset_depr_schedule:
+ if not current_asset_depr_schedule_name:
return
current_asset_depr_schedule_doc = frappe.get_doc(
- "Asset Depreciation Schedule", current_asset_depr_schedule
+ "Asset Depreciation Schedule", current_asset_depr_schedule_name
)
new_asset_depr_schedule_doc = frappe.copy_doc(
@@ -123,30 +124,34 @@
def cancel_asset_depr_schedules(asset_doc):
for row in asset_doc.get("finance_books"):
- asset_depr_schedule = get_asset_depr_schedule(asset_doc.name, row.finance_book)
+ asset_depr_schedule_name = get_asset_depr_schedule_name(asset_doc.name, row.finance_book)
- if not asset_depr_schedule:
+ if not asset_depr_schedule_name:
return
- asset_depr_schedule_doc = frappe.get_doc("Asset Depreciation Schedule", asset_depr_schedule)
+ asset_depr_schedule_doc = frappe.get_doc("Asset Depreciation Schedule", asset_depr_schedule_name)
asset_depr_schedule_doc.cancel()
-def get_asset_depr_schedule(asset, finance_book):
+def get_asset_depr_schedule_name(asset_name, finance_book):
+ finance_book_filter = ["finance_book", "is", "not set"]
+ if finance_book:
+ finance_book_filter = ["finance_book", "=", finance_book]
+
return frappe.db.get_value(
doctype="Asset Depreciation Schedule",
filters=[
- ["asset", "=", asset],
- ["finance_book", "=", finance_book],
+ ["asset", "=", asset_name],
+ finance_book_filter,
["docstatus", "<", 2],
],
)
-def get_depr_schedule_from_asset_depr_schedule_of_asset(asset, finance_book):
- asset_depr_schedule = get_asset_depr_schedule(asset, finance_book)
- asset_depr_schedule_doc = frappe.get_doc("Asset Depreciation Schedule", asset_depr_schedule)
+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)
+ asset_depr_schedule_doc = frappe.get_doc("Asset Depreciation Schedule", asset_depr_schedule_name)
return asset_depr_schedule_doc.get("depreciation_schedule")
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 b6c4a3d..4783565 100644
--- a/erpnext/assets/doctype/asset_value_adjustment/asset_value_adjustment.py
+++ b/erpnext/assets/doctype/asset_value_adjustment/asset_value_adjustment.py
@@ -12,7 +12,7 @@
)
from erpnext.assets.doctype.asset.depreciation import get_depreciation_accounts
from erpnext.assets.doctype.asset_depreciation_schedule.asset_depreciation_schedule import (
- get_asset_depr_schedule,
+ get_asset_depr_schedule_name,
get_depreciation_amount,
set_accumulated_depreciation,
)
@@ -116,9 +116,9 @@
for d in asset.finance_books:
d.value_after_depreciation = asset_value
- current_asset_depr_schedule = get_asset_depr_schedule(asset.name, d.finance_book)
+ current_asset_depr_schedule_name = get_asset_depr_schedule_name(asset.name, d.finance_book)
current_asset_depr_schedule_doc = frappe.get_doc(
- "Asset Depreciation Schedule", current_asset_depr_schedule
+ "Asset Depreciation Schedule", current_asset_depr_schedule_name
)
new_asset_depr_schedule_doc = frappe.copy_doc(