diff --git a/erpnext/assets/doctype/asset/depreciation.py b/erpnext/assets/doctype/asset/depreciation.py
index 9bc3a48..3530fbd 100644
--- a/erpnext/assets/doctype/asset/depreciation.py
+++ b/erpnext/assets/doctype/asset/depreciation.py
@@ -294,7 +294,7 @@
 		for schedule_idx, schedule in enumerate(depr_schedule):
 			if schedule.schedule_date == date:
 				if not disposal_was_made_on_original_schedule_date(
-					asset, schedule, schedule_idx, date
+					schedule_idx, row, date
 				) or disposal_happens_in_the_future(date):
 
 					reverse_journal_entry = make_reverse_journal_entry(schedule.journal_entry)
@@ -318,15 +318,14 @@
 
 
 # if the invoice had been posted on the date the depreciation was initially supposed to happen, the depreciation shouldn't be undone
-def disposal_was_made_on_original_schedule_date(asset, schedule, row, posting_date_of_disposal):
-	for finance_book in asset.get("finance_books"):
-		if schedule.finance_book == finance_book.finance_book:
-			orginal_schedule_date = add_months(
-				finance_book.depreciation_start_date, row * cint(finance_book.frequency_of_depreciation)
-			)
+def disposal_was_made_on_original_schedule_date(schedule_idx, row, posting_date_of_disposal):
+	orginal_schedule_date = add_months(
+		row.depreciation_start_date, schedule_idx * cint(row.frequency_of_depreciation)
+	)
 
-			if orginal_schedule_date == posting_date_of_disposal:
-				return True
+	if orginal_schedule_date == posting_date_of_disposal:
+		return True
+
 	return False
 
 
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 8d854dc..35c461a 100644
--- a/erpnext/assets/doctype/asset_depreciation_schedule/asset_depreciation_schedule.py
+++ b/erpnext/assets/doctype/asset_depreciation_schedule/asset_depreciation_schedule.py
@@ -50,17 +50,18 @@
 def prepare_draft_asset_depr_schedule_data(
 	asset_depr_schedule_doc, asset_doc, row, date_of_disposal, date_of_return
 ):
-	set_draft_asset_depr_schedule_details(asset_depr_schedule_doc, asset_doc.name, row)
+	set_draft_asset_depr_schedule_details(asset_depr_schedule_doc, asset_doc, row)
 	make_depr_schedule(asset_depr_schedule_doc, asset_doc, row, date_of_disposal)
-	set_accumulated_depreciation(
-		asset_depr_schedule_doc, asset_doc, row, date_of_disposal, date_of_return
-	)
+	set_accumulated_depreciation(asset_depr_schedule_doc, row, date_of_disposal, date_of_return)
 
 
-def set_draft_asset_depr_schedule_details(asset_depr_schedule_doc, asset_name, row):
-	asset_depr_schedule_doc.asset = asset_name
+def set_draft_asset_depr_schedule_details(asset_depr_schedule_doc, asset_doc, row):
+	asset_depr_schedule_doc.asset = asset_doc.name
 	asset_depr_schedule_doc.finance_book = row.finance_book
 	asset_depr_schedule_doc.finance_book_id = row.idx
+	asset_depr_schedule_doc.opening_accumulated_depreciation = (
+		asset_doc.opening_accumulated_depreciation
+	)
 	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
@@ -99,9 +100,7 @@
 		new_asset_depr_schedule_doc = frappe.copy_doc(current_asset_depr_schedule_doc)
 
 		make_depr_schedule(new_asset_depr_schedule_doc, asset_doc, row, date_of_disposal)
-		set_accumulated_depreciation(
-			new_asset_depr_schedule_doc, asset_doc, row, date_of_disposal, date_of_return
-		)
+		set_accumulated_depreciation(new_asset_depr_schedule_doc, row, date_of_disposal, date_of_return)
 
 		new_asset_depr_schedule_doc.notes = notes
 
@@ -243,8 +242,6 @@
 					date_of_disposal,
 					depreciation_amount,
 					row.depreciation_method,
-					row.finance_book,
-					row.idx,
 				)
 
 			break
@@ -309,8 +306,6 @@
 				schedule_date,
 				depreciation_amount,
 				row.depreciation_method,
-				row.finance_book,
-				row.idx,
 			)
 
 
@@ -339,8 +334,6 @@
 	schedule_date,
 	depreciation_amount,
 	depreciation_method,
-	finance_book,
-	finance_book_id,
 ):
 	asset_depr_schedule_doc.append(
 		"depreciation_schedule",
@@ -348,15 +341,12 @@
 			"schedule_date": schedule_date,
 			"depreciation_amount": depreciation_amount,
 			"depreciation_method": depreciation_method,
-			"finance_book": finance_book,
-			"finance_book_id": finance_book_id,
 		},
 	)
 
 
 def set_accumulated_depreciation(
 	asset_depr_schedule_doc,
-	asset_doc,
 	row,
 	date_of_disposal=None,
 	date_of_return=None,
@@ -367,17 +357,14 @@
 		for d in asset_depr_schedule_doc.get("depreciation_schedule")
 		if d.depreciation_method == "Straight Line"
 	]
-	finance_books = []
+
+	accumulated_depreciation = flt(asset_depr_schedule_doc.opening_accumulated_depreciation)
+	value_after_depreciation = flt(row.value_after_depreciation)
 
 	for i, d in enumerate(asset_depr_schedule_doc.get("depreciation_schedule")):
 		if ignore_booked_entry and d.journal_entry:
 			continue
 
-		if int(d.finance_book_id) not in finance_books:
-			accumulated_depreciation = flt(asset_doc.opening_accumulated_depreciation)
-			value_after_depreciation = flt(asset_doc.get_value_after_depreciation(d.finance_book_id))
-			finance_books.append(int(d.finance_book_id))
-
 		depreciation_amount = flt(d.depreciation_amount, d.precision("depreciation_amount"))
 		value_after_depreciation -= flt(depreciation_amount)
 
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 4783565..d153809 100644
--- a/erpnext/assets/doctype/asset_value_adjustment/asset_value_adjustment.py
+++ b/erpnext/assets/doctype/asset_value_adjustment/asset_value_adjustment.py
@@ -155,7 +155,7 @@
 
 			d.db_update()
 
-			set_accumulated_depreciation(new_asset_depr_schedule_doc, asset, d, ignore_booked_entry=True)
+			set_accumulated_depreciation(new_asset_depr_schedule_doc, d, ignore_booked_entry=True)
 			for asset_data in depr_schedule:
 				if not asset_data.journal_entry:
 					asset_data.db_update()
diff --git a/erpnext/assets/doctype/depreciation_schedule/depreciation_schedule.json b/erpnext/assets/doctype/depreciation_schedule/depreciation_schedule.json
index 1a669f9..882c4bf 100644
--- a/erpnext/assets/doctype/depreciation_schedule/depreciation_schedule.json
+++ b/erpnext/assets/doctype/depreciation_schedule/depreciation_schedule.json
@@ -7,26 +7,16 @@
  "editable_grid": 1,
  "engine": "InnoDB",
  "field_order": [
-  "finance_book",
   "schedule_date",
   "depreciation_amount",
   "column_break_3",
   "accumulated_depreciation_amount",
   "journal_entry",
   "make_depreciation_entry",
-  "finance_book_id",
   "depreciation_method"
  ],
  "fields": [
   {
-   "fieldname": "finance_book",
-   "fieldtype": "Link",
-   "in_list_view": 1,
-   "label": "Finance Book",
-   "options": "Finance Book",
-   "read_only": 1
-  },
-  {
    "fieldname": "schedule_date",
    "fieldtype": "Date",
    "in_list_view": 1,
@@ -70,14 +60,6 @@
    "label": "Make Depreciation Entry"
   },
   {
-   "fieldname": "finance_book_id",
-   "fieldtype": "Data",
-   "hidden": 1,
-   "label": "Finance Book Id",
-   "print_hide": 1,
-   "read_only": 1
-  },
-  {
    "fieldname": "depreciation_method",
    "fieldtype": "Select",
    "hidden": 1,
@@ -89,7 +71,7 @@
  ],
  "istable": 1,
  "links": [],
- "modified": "2022-11-29 18:27:05.748012",
+ "modified": "2022-12-06 20:35:50.264281",
  "modified_by": "Administrator",
  "module": "Assets",
  "name": "Depreciation Schedule",
