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(
