diff --git a/erpnext/assets/doctype/asset/asset.py b/erpnext/assets/doctype/asset/asset.py
index f55dced..5fe7568 100644
--- a/erpnext/assets/doctype/asset/asset.py
+++ b/erpnext/assets/doctype/asset/asset.py
@@ -31,6 +31,7 @@
 from erpnext.assets.doctype.asset_depreciation_schedule.asset_depreciation_schedule import (
 	make_draft_asset_depreciation_schedules,
 	modify_draft_asset_depreciation_schedules,
+	convert_draft_asset_depreciation_schedules_into_active,
 )
 from erpnext.assets.doctype.asset_category.asset_category import get_asset_category_account
 from erpnext.controllers.accounts_controller import AccountsController
@@ -58,6 +59,7 @@
 		self.make_asset_movement()
 		if not self.booked_fixed_asset and self.validate_make_gl_entry():
 			self.make_gl_entries()
+		convert_draft_asset_depreciation_schedules_into_active(self)
 
 	def on_cancel(self):
 		self.validate_cancellation()
@@ -407,45 +409,6 @@
 		if len(self.finance_books) == 1:
 			return True
 
-	def set_accumulated_depreciation(
-		self, date_of_sale=None, date_of_return=None, ignore_booked_entry=False
-	):
-		straight_line_idx = [
-			d.idx for d in self.get("schedules") if d.depreciation_method == "Straight Line"
-		]
-		finance_books = []
-
-		for i, d in enumerate(self.get("schedules")):
-			if ignore_booked_entry and d.journal_entry:
-				continue
-
-			if int(d.finance_book_id) not in finance_books:
-				accumulated_depreciation = flt(self.opening_accumulated_depreciation)
-				value_after_depreciation = flt(self.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)
-
-			# for the last row, if depreciation method = Straight Line
-			if (
-				straight_line_idx
-				and i == max(straight_line_idx) - 1
-				and not date_of_sale
-				and not date_of_return
-			):
-				book = self.get("finance_books")[cint(d.finance_book_id) - 1]
-				depreciation_amount += flt(
-					value_after_depreciation - flt(book.expected_value_after_useful_life),
-					d.precision("depreciation_amount"),
-				)
-
-			d.depreciation_amount = depreciation_amount
-			accumulated_depreciation += d.depreciation_amount
-			d.accumulated_depreciation_amount = flt(
-				accumulated_depreciation, d.precision("accumulated_depreciation_amount")
-			)
-
 	def get_value_after_depreciation(self, idx):
 		return flt(self.get("finance_books")[cint(idx) - 1].value_after_depreciation)
 
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 1a545dd..27920e3 100644
--- a/erpnext/assets/doctype/asset_depreciation_schedule/asset_depreciation_schedule.py
+++ b/erpnext/assets/doctype/asset_depreciation_schedule/asset_depreciation_schedule.py
@@ -29,7 +29,9 @@
 
 def modify_draft_asset_depreciation_schedules(asset):
 	for row in asset.get("finance_books"):
-		asset_depr_schedule_name = get_draft_asset_depreciation_schedule_name(asset.name, row)
+		asset_depr_schedule_name = get_draft_asset_depreciation_schedule_name(
+			asset.name, row.finance_book
+		)
 
 		if not asset_depr_schedule_name:
 			return
@@ -57,11 +59,29 @@
 	asset_depr_schedule.status = "Draft"
 
 
+def convert_draft_asset_depreciation_schedules_into_active(asset):
+	for row in asset.get("finance_books"):
+		asset_depr_schedule_name = get_draft_asset_depreciation_schedule_name(
+			asset.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.status = "Active"
+
+		asset_depr_schedule.submit()
+
+
 def make_new_active_asset_depreciation_schedules_from_existing(
 	asset, date_of_disposal=None, date_of_return=None
 ):
 	for row in asset.get("finance_books"):
-		old_asset_depr_schedule_name = get_active_asset_depreciation_schedule(asset.name, row)
+		old_asset_depr_schedule_name = get_active_asset_depreciation_schedule(
+			asset.name, row.finance_book
+		)
 
 		if not old_asset_depr_schedule_name:
 			return
@@ -79,7 +99,7 @@
 		asset_depr_schedule.save()
 
 
-def make_depreciation_schedule(asset_depr_schedule, asset, row, date_of_disposal):
+def make_depreciation_schedule(asset_depr_schedule, asset, row, date_of_disposal=None):
 	if row.depreciation_method != "Manual" and not asset_depr_schedule.get("depreciation_schedule"):
 		asset_depr_schedule.depreciation_schedule = []
 
@@ -293,7 +313,12 @@
 
 
 def set_accumulated_depreciation(
-	asset_depr_schedule, asset, row, date_of_disposal, date_of_return, ignore_booked_entry=False
+	asset_depr_schedule,
+	asset,
+	row,
+	date_of_disposal=None,
+	date_of_return=None,
+	ignore_booked_entry=False
 ):
 	straight_line_idx = [
 		d.idx for d in asset_depr_schedule.get("depreciation_schedule")
