chore: more refactoring and adding test for duplicate asset_depr_schedule
diff --git a/erpnext/accounts/doctype/journal_entry/journal_entry.py b/erpnext/accounts/doctype/journal_entry/journal_entry.py
index 29f9892..af2f6b6 100644
--- a/erpnext/accounts/doctype/journal_entry/journal_entry.py
+++ b/erpnext/accounts/doctype/journal_entry/journal_entry.py
@@ -24,7 +24,7 @@
 	get_stock_and_account_balance,
 )
 from erpnext.assets.doctype.asset_depreciation_schedule.asset_depreciation_schedule import (
-	get_draft_or_active_depr_schedule,
+	get_depr_schedule,
 )
 from erpnext.controllers.accounts_controller import AccountsController
 
@@ -287,7 +287,7 @@
 			if d.reference_type == "Asset" and d.reference_name:
 				asset = frappe.get_doc("Asset", d.reference_name)
 				for row in asset.get("finance_books"):
-					depr_schedule = get_draft_or_active_depr_schedule(asset.name, row.finance_book)
+					depr_schedule = get_depr_schedule(asset.name, "Active", row.finance_book)
 
 					for s in depr_schedule or []:
 						if s.journal_entry == self.name:
diff --git a/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py b/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py
index 22a317c..e96847e 100644
--- a/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py
+++ b/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py
@@ -22,7 +22,7 @@
 from erpnext.assets.doctype.asset.depreciation import post_depreciation_entries
 from erpnext.assets.doctype.asset.test_asset import create_asset, create_asset_data
 from erpnext.assets.doctype.asset_depreciation_schedule.asset_depreciation_schedule import (
-	get_draft_or_active_depr_schedule,
+	get_depr_schedule,
 )
 from erpnext.controllers.accounts_controller import update_invoice_status
 from erpnext.controllers.taxes_and_totals import get_itemised_tax_breakup_data
@@ -2777,7 +2777,7 @@
 			["2021-09-30", 5041.1, 26407.22],
 		]
 
-		for i, schedule in enumerate(get_draft_or_active_depr_schedule(asset.name)):
+		for i, schedule in enumerate(get_depr_schedule(asset.name, "Active")):
 			self.assertEqual(getdate(expected_values[i][0]), schedule.schedule_date)
 			self.assertEqual(expected_values[i][1], schedule.depreciation_amount)
 			self.assertEqual(expected_values[i][2], schedule.accumulated_depreciation_amount)
@@ -2808,7 +2808,7 @@
 
 		expected_values = [["2020-12-31", 30000, 30000], ["2021-12-31", 30000, 60000]]
 
-		for i, schedule in enumerate(get_draft_or_active_depr_schedule(asset.name)):
+		for i, schedule in enumerate(get_depr_schedule(asset.name, "Active")):
 			self.assertEqual(getdate(expected_values[i][0]), schedule.schedule_date)
 			self.assertEqual(expected_values[i][1], schedule.depreciation_amount)
 			self.assertEqual(expected_values[i][2], schedule.accumulated_depreciation_amount)
@@ -2837,7 +2837,7 @@
 			["2025-06-06", 18633.88, 100000.0, False],
 		]
 
-		for i, schedule in enumerate(get_draft_or_active_depr_schedule(asset.name)):
+		for i, schedule in enumerate(get_depr_schedule(asset.name, "Active")):
 			self.assertEqual(getdate(expected_values[i][0]), schedule.schedule_date)
 			self.assertEqual(expected_values[i][1], schedule.depreciation_amount)
 			self.assertEqual(expected_values[i][2], schedule.accumulated_depreciation_amount)
diff --git a/erpnext/assets/doctype/asset/asset.js b/erpnext/assets/doctype/asset/asset.js
index 9754ab3..b8185c9 100644
--- a/erpnext/assets/doctype/asset/asset.js
+++ b/erpnext/assets/doctype/asset/asset.js
@@ -209,9 +209,10 @@
 
 		if (frm.doc.finance_books.length == 1) {
 			depr_schedule = (await frappe.call(
-				"erpnext.assets.doctype.asset_depreciation_schedule.asset_depreciation_schedule.get_draft_or_active_depr_schedule",
+				"erpnext.assets.doctype.asset_depreciation_schedule.asset_depreciation_schedule.get_depr_schedule",
 				{
 					asset_name: frm.doc.name,
+					status: frm.doc.docstatus ? "Active" : "Draft",
 					finance_book: frm.doc.finance_books[0].finance_book || null
 				}
 			)).message;
diff --git a/erpnext/assets/doctype/asset/asset.py b/erpnext/assets/doctype/asset/asset.py
index c2bfb12..df05d5e 100644
--- a/erpnext/assets/doctype/asset/asset.py
+++ b/erpnext/assets/doctype/asset/asset.py
@@ -32,8 +32,8 @@
 from erpnext.assets.doctype.asset_depreciation_schedule.asset_depreciation_schedule import (
 	cancel_asset_depr_schedules,
 	convert_draft_asset_depr_schedules_into_active,
-	get_draft_or_active_asset_depr_schedule_doc,
-	get_draft_or_active_depr_schedule,
+	get_asset_depr_schedule_doc,
+	get_depr_schedule,
 	make_draft_asset_depr_schedules,
 	make_draft_asset_depr_schedules_if_not_present,
 	set_draft_asset_depr_schedule_details,
@@ -337,7 +337,7 @@
 
 	def validate_expected_value_after_useful_life(self):
 		for row in self.get("finance_books"):
-			depr_schedule = get_draft_or_active_depr_schedule(self.name, row.finance_book)
+			depr_schedule = get_depr_schedule(self.name, "Draft", row.finance_book)
 
 			if not depr_schedule:
 				continue
@@ -393,7 +393,7 @@
 
 	def delete_depreciation_entries(self):
 		for row in self.get("finance_books"):
-			depr_schedule = get_draft_or_active_depr_schedule(self.name, row.finance_book)
+			depr_schedule = get_depr_schedule(self.name, "Active", row.finance_book)
 
 			for d in depr_schedule or []:
 				if d.journal_entry:
@@ -881,8 +881,8 @@
 			expected_value_after_useful_life,
 		)
 
-		current_asset_depr_schedule_doc = get_draft_or_active_asset_depr_schedule_doc(
-			asset.name, row.finance_book
+		current_asset_depr_schedule_doc = get_asset_depr_schedule_doc(
+			asset.name, "Active", row.finance_book
 		)
 		new_asset_depr_schedule_doc = frappe.copy_doc(current_asset_depr_schedule_doc)
 
@@ -933,8 +933,8 @@
 	new_asset.set_status()
 
 	for row in new_asset.get("finance_books"):
-		current_asset_depr_schedule_doc = get_draft_or_active_asset_depr_schedule_doc(
-			asset.name, row.finance_book
+		current_asset_depr_schedule_doc = get_asset_depr_schedule_doc(
+			asset.name, "Active", row.finance_book
 		)
 		new_asset_depr_schedule_doc = frappe.copy_doc(current_asset_depr_schedule_doc)
 
@@ -956,7 +956,7 @@
 		new_asset_depr_schedule_doc.submit()
 
 	for row in new_asset.get("finance_books"):
-		depr_schedule = get_draft_or_active_depr_schedule(new_asset.name, row.finance_book)
+		depr_schedule = get_depr_schedule(new_asset.name, "Active", row.finance_book)
 		for term in depr_schedule:
 			# Update references in JV
 			if term.journal_entry:
diff --git a/erpnext/assets/doctype/asset/depreciation.py b/erpnext/assets/doctype/asset/depreciation.py
index 3a3123fb..7686c34 100644
--- a/erpnext/assets/doctype/asset/depreciation.py
+++ b/erpnext/assets/doctype/asset/depreciation.py
@@ -11,8 +11,8 @@
 )
 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_draft_or_active_asset_depr_schedule_doc,
-	get_draft_or_active_asset_depr_schedule_name,
+	get_asset_depr_schedule_doc,
+	get_asset_depr_schedule_name,
 	get_temp_asset_depr_schedule_doc,
 	make_new_active_asset_depr_schedules_and_cancel_current_ones,
 )
@@ -51,8 +51,8 @@
 
 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_draft_or_active_asset_depr_schedule_name(
-			asset_doc.name, row.finance_book
+		asset_depr_schedule_name = get_asset_depr_schedule_name(
+			asset_doc.name, "Active", row.finance_book
 		)
 		make_depreciation_entry(asset_depr_schedule_name, date)
 
@@ -318,9 +318,7 @@
 
 def reverse_depreciation_entry_made_after_disposal(asset, date):
 	for row in asset.get("finance_books"):
-		asset_depr_schedule_doc = get_draft_or_active_asset_depr_schedule_doc(
-			asset.name, row.finance_book
-		)
+		asset_depr_schedule_doc = get_asset_depr_schedule_doc(asset.name, "Active", row.finance_book)
 
 		for schedule_idx, schedule in enumerate(asset_depr_schedule_doc.get("depreciation_schedule")):
 			if schedule.schedule_date == date:
diff --git a/erpnext/assets/doctype/asset/test_asset.py b/erpnext/assets/doctype/asset/test_asset.py
index b0a8653..d61ef8e 100644
--- a/erpnext/assets/doctype/asset/test_asset.py
+++ b/erpnext/assets/doctype/asset/test_asset.py
@@ -29,8 +29,8 @@
 )
 from erpnext.assets.doctype.asset_depreciation_schedule.asset_depreciation_schedule import (
 	clear_depr_schedule,
-	get_draft_or_active_asset_depr_schedule_doc,
-	get_draft_or_active_depr_schedule,
+	get_asset_depr_schedule_doc,
+	get_depr_schedule,
 )
 from erpnext.stock.doctype.purchase_receipt.purchase_receipt import (
 	make_purchase_invoice as make_invoice,
@@ -210,7 +210,7 @@
 			submit=1,
 		)
 
-		first_asset_depr_schedule = get_draft_or_active_asset_depr_schedule_doc(asset.name)
+		first_asset_depr_schedule = get_asset_depr_schedule_doc(asset.name, "Active")
 		self.assertEquals(first_asset_depr_schedule.status, "Active")
 
 		post_depreciation_entries(date=add_months(purchase_date, 2))
@@ -226,7 +226,7 @@
 		asset.load_from_db()
 		first_asset_depr_schedule.load_from_db()
 
-		second_asset_depr_schedule = get_draft_or_active_asset_depr_schedule_doc(asset.name)
+		second_asset_depr_schedule = get_asset_depr_schedule_doc(asset.name, "Active")
 		self.assertEquals(second_asset_depr_schedule.status, "Active")
 		self.assertEquals(first_asset_depr_schedule.status, "Cancelled")
 
@@ -271,7 +271,7 @@
 		restore_asset(asset.name)
 		second_asset_depr_schedule.load_from_db()
 
-		third_asset_depr_schedule = get_draft_or_active_asset_depr_schedule_doc(asset.name)
+		third_asset_depr_schedule = get_asset_depr_schedule_doc(asset.name, "Active")
 		self.assertEquals(third_asset_depr_schedule.status, "Active")
 		self.assertEquals(second_asset_depr_schedule.status, "Cancelled")
 
@@ -301,7 +301,7 @@
 			submit=1,
 		)
 
-		first_asset_depr_schedule = get_draft_or_active_asset_depr_schedule_doc(asset.name)
+		first_asset_depr_schedule = get_asset_depr_schedule_doc(asset.name, "Active")
 		self.assertEquals(first_asset_depr_schedule.status, "Active")
 
 		post_depreciation_entries(date=add_months(purchase_date, 2))
@@ -317,7 +317,7 @@
 
 		first_asset_depr_schedule.load_from_db()
 
-		second_asset_depr_schedule = get_draft_or_active_asset_depr_schedule_doc(asset.name)
+		second_asset_depr_schedule = get_asset_depr_schedule_doc(asset.name, "Active")
 		self.assertEquals(second_asset_depr_schedule.status, "Active")
 		self.assertEquals(first_asset_depr_schedule.status, "Cancelled")
 
@@ -397,7 +397,7 @@
 			submit=1,
 		)
 
-		first_asset_depr_schedule = get_draft_or_active_asset_depr_schedule_doc(asset.name)
+		first_asset_depr_schedule = get_asset_depr_schedule_doc(asset.name, "Active")
 		self.assertEquals(first_asset_depr_schedule.status, "Active")
 
 		post_depreciation_entries(date="2021-01-01")
@@ -410,10 +410,8 @@
 		asset.load_from_db()
 		first_asset_depr_schedule.load_from_db()
 
-		second_asset_depr_schedule = get_draft_or_active_asset_depr_schedule_doc(asset.name)
-		first_asset_depr_schedule_of_new_asset = get_draft_or_active_asset_depr_schedule_doc(
-			new_asset.name
-		)
+		second_asset_depr_schedule = get_asset_depr_schedule_doc(asset.name, "Active")
+		first_asset_depr_schedule_of_new_asset = get_asset_depr_schedule_doc(new_asset.name, "Active")
 		self.assertEquals(second_asset_depr_schedule.status, "Active")
 		self.assertEquals(first_asset_depr_schedule_of_new_asset.status, "Active")
 		self.assertEquals(first_asset_depr_schedule.status, "Cancelled")
@@ -671,7 +669,7 @@
 
 		schedules = [
 			[cstr(d.schedule_date), d.depreciation_amount, d.accumulated_depreciation_amount]
-			for d in get_draft_or_active_depr_schedule(asset.name)
+			for d in get_depr_schedule(asset.name, "Draft")
 		]
 
 		self.assertEqual(schedules, expected_schedules)
@@ -693,7 +691,7 @@
 		expected_schedules = [["2032-12-31", 30000.0, 77095.89], ["2033-06-06", 12904.11, 90000.0]]
 		schedules = [
 			[cstr(d.schedule_date), flt(d.depreciation_amount, 2), d.accumulated_depreciation_amount]
-			for d in get_draft_or_active_depr_schedule(asset.name)
+			for d in get_depr_schedule(asset.name, "Draft")
 		]
 
 		self.assertEqual(schedules, expected_schedules)
@@ -720,7 +718,7 @@
 
 		schedules = [
 			[cstr(d.schedule_date), d.depreciation_amount, d.accumulated_depreciation_amount]
-			for d in get_draft_or_active_depr_schedule(asset.name)
+			for d in get_depr_schedule(asset.name, "Draft")
 		]
 
 		self.assertEqual(schedules, expected_schedules)
@@ -745,7 +743,7 @@
 
 		schedules = [
 			[cstr(d.schedule_date), d.depreciation_amount, d.accumulated_depreciation_amount]
-			for d in get_draft_or_active_depr_schedule(asset.name)
+			for d in get_depr_schedule(asset.name, "Draft")
 		]
 
 		self.assertEqual(schedules, expected_schedules)
@@ -775,7 +773,7 @@
 				flt(d.depreciation_amount, 2),
 				flt(d.accumulated_depreciation_amount, 2),
 			]
-			for d in get_draft_or_active_depr_schedule(asset.name)
+			for d in get_depr_schedule(asset.name, "Draft")
 		]
 
 		self.assertEqual(schedules, expected_schedules)
@@ -807,7 +805,7 @@
 				flt(d.depreciation_amount, 2),
 				flt(d.accumulated_depreciation_amount, 2),
 			]
-			for d in get_draft_or_active_depr_schedule(asset.name)
+			for d in get_depr_schedule(asset.name, "Draft")
 		]
 
 		self.assertEqual(schedules, expected_schedules)
@@ -840,7 +838,7 @@
 				flt(d.depreciation_amount, 2),
 				flt(d.accumulated_depreciation_amount, 2),
 			]
-			for d in get_draft_or_active_depr_schedule(asset.name)
+			for d in get_depr_schedule(asset.name, "Draft")
 		]
 
 		self.assertEqual(schedules, expected_schedules)
@@ -873,7 +871,7 @@
 				flt(d.depreciation_amount, 2),
 				flt(d.accumulated_depreciation_amount, 2),
 			]
-			for d in get_draft_or_active_depr_schedule(asset.name)
+			for d in get_depr_schedule(asset.name, "Draft")
 		]
 		self.assertEqual(schedules, expected_schedules)
 
@@ -896,7 +894,7 @@
 			["2022-12-31", 30000, 90000],
 		]
 
-		for i, schedule in enumerate(get_draft_or_active_depr_schedule(asset.name)):
+		for i, schedule in enumerate(get_depr_schedule(asset.name, "Active")):
 			self.assertEqual(getdate(expected_values[i][0]), schedule.schedule_date)
 			self.assertEqual(expected_values[i][1], schedule.depreciation_amount)
 			self.assertEqual(expected_values[i][2], schedule.accumulated_depreciation_amount)
@@ -919,7 +917,7 @@
 			["2023-01-01", 15000, 90000],
 		]
 
-		for i, schedule in enumerate(get_draft_or_active_depr_schedule(asset.name)):
+		for i, schedule in enumerate(get_depr_schedule(asset.name, "Active")):
 			self.assertEqual(getdate(expected_values[i][0]), schedule.schedule_date)
 			self.assertEqual(expected_values[i][1], schedule.depreciation_amount)
 			self.assertEqual(expected_values[i][2], schedule.accumulated_depreciation_amount)
@@ -964,7 +962,7 @@
 
 		expected_values = [["2020-12-31", 30000.0], ["2021-12-31", 30000.0], ["2022-12-31", 30000.0]]
 
-		for i, schedule in enumerate(get_draft_or_active_depr_schedule(asset.name)):
+		for i, schedule in enumerate(get_depr_schedule(asset.name, "Draft")):
 			self.assertEqual(getdate(expected_values[i][0]), schedule.schedule_date)
 			self.assertEqual(expected_values[i][1], schedule.depreciation_amount)
 
@@ -984,7 +982,7 @@
 
 		expected_values = [30000.0, 60000.0, 90000.0]
 
-		for i, schedule in enumerate(get_draft_or_active_depr_schedule(asset.name)):
+		for i, schedule in enumerate(get_depr_schedule(asset.name, "Draft")):
 			self.assertEqual(expected_values[i], schedule.accumulated_depreciation_amount)
 
 	def test_check_is_pro_rata(self):
@@ -1164,9 +1162,11 @@
 		post_depreciation_entries(date="2021-06-01")
 		asset.load_from_db()
 
-		self.assertTrue(get_draft_or_active_depr_schedule(asset.name)[0].journal_entry)
-		self.assertFalse(get_draft_or_active_depr_schedule(asset.name)[1].journal_entry)
-		self.assertFalse(get_draft_or_active_depr_schedule(asset.name)[2].journal_entry)
+		depr_schedule = get_depr_schedule(asset.name, "Active")
+
+		self.assertTrue(depr_schedule[0].journal_entry)
+		self.assertFalse(depr_schedule[1].journal_entry)
+		self.assertFalse(depr_schedule[2].journal_entry)
 
 	def test_depr_entry_posting_when_depr_expense_account_is_an_expense_account(self):
 		"""Tests if the Depreciation Expense Account gets debited and the Accumulated Depreciation Account gets credited when the former's an Expense Account."""
@@ -1185,9 +1185,7 @@
 		post_depreciation_entries(date="2021-06-01")
 		asset.load_from_db()
 
-		je = frappe.get_doc(
-			"Journal Entry", get_draft_or_active_depr_schedule(asset.name)[0].journal_entry
-		)
+		je = frappe.get_doc("Journal Entry", get_depr_schedule(asset.name, "Active")[0].journal_entry)
 		accounting_entries = [
 			{"account": entry.account, "debit": entry.debit, "credit": entry.credit}
 			for entry in je.accounts
@@ -1223,9 +1221,7 @@
 		post_depreciation_entries(date="2021-06-01")
 		asset.load_from_db()
 
-		je = frappe.get_doc(
-			"Journal Entry", get_draft_or_active_depr_schedule(asset.name)[0].journal_entry
-		)
+		je = frappe.get_doc("Journal Entry", get_depr_schedule(asset.name, "Active")[0].journal_entry)
 		accounting_entries = [
 			{"account": entry.account, "debit": entry.debit, "credit": entry.credit}
 			for entry in je.accounts
@@ -1261,7 +1257,7 @@
 		post_depreciation_entries(date="2021-06-01")
 		asset.load_from_db()
 
-		asset_depr_schedule_doc = get_draft_or_active_asset_depr_schedule_doc(asset.name)
+		asset_depr_schedule_doc = get_asset_depr_schedule_doc(asset.name, "Active")
 
 		clear_depr_schedule(asset_depr_schedule_doc)
 
@@ -1309,20 +1305,20 @@
 		post_depreciation_entries(date="2020-04-01")
 		asset.load_from_db()
 
-		asset_depr_schedule_doc_1 = get_draft_or_active_asset_depr_schedule_doc(
-			asset.name, "Test Finance Book 1"
+		asset_depr_schedule_doc_1 = get_asset_depr_schedule_doc(
+			asset.name, "Active", "Test Finance Book 1"
 		)
 		clear_depr_schedule(asset_depr_schedule_doc_1)
 		self.assertEqual(len(asset_depr_schedule_doc_1.get("depreciation_schedule")), 3)
 
-		asset_depr_schedule_doc_2 = get_draft_or_active_asset_depr_schedule_doc(
-			asset.name, "Test Finance Book 2"
+		asset_depr_schedule_doc_2 = get_asset_depr_schedule_doc(
+			asset.name, "Active", "Test Finance Book 2"
 		)
 		clear_depr_schedule(asset_depr_schedule_doc_2)
 		self.assertEqual(len(asset_depr_schedule_doc_2.get("depreciation_schedule")), 3)
 
-		asset_depr_schedule_doc_3 = get_draft_or_active_asset_depr_schedule_doc(
-			asset.name, "Test Finance Book 3"
+		asset_depr_schedule_doc_3 = get_asset_depr_schedule_doc(
+			asset.name, "Active", "Test Finance Book 3"
 		)
 		clear_depr_schedule(asset_depr_schedule_doc_3)
 		self.assertEqual(len(asset_depr_schedule_doc_3.get("depreciation_schedule")), 0)
@@ -1355,13 +1351,13 @@
 		)
 		asset.save()
 
-		asset_depr_schedule_doc_1 = get_draft_or_active_asset_depr_schedule_doc(
-			asset.name, "Test Finance Book 1"
+		asset_depr_schedule_doc_1 = get_asset_depr_schedule_doc(
+			asset.name, "Draft", "Test Finance Book 1"
 		)
 		self.assertEqual(len(asset_depr_schedule_doc_1.get("depreciation_schedule")), 3)
 
-		asset_depr_schedule_doc_2 = get_draft_or_active_asset_depr_schedule_doc(
-			asset.name, "Test Finance Book 2"
+		asset_depr_schedule_doc_2 = get_asset_depr_schedule_doc(
+			asset.name, "Draft", "Test Finance Book 2"
 		)
 		self.assertEqual(len(asset_depr_schedule_doc_2.get("depreciation_schedule")), 6)
 
@@ -1383,12 +1379,12 @@
 		asset.load_from_db()
 
 		# cancel depreciation entry
-		depr_entry = get_draft_or_active_depr_schedule(asset.name)[0].journal_entry
+		depr_entry = get_depr_schedule(asset.name, "Active")[0].journal_entry
 		self.assertTrue(depr_entry)
 
 		frappe.get_doc("Journal Entry", depr_entry).cancel()
 
-		depr_entry = get_draft_or_active_depr_schedule(asset.name)[0].journal_entry
+		depr_entry = get_depr_schedule(asset.name, "Active")[0].journal_entry
 		self.assertFalse(depr_entry)
 
 	def test_asset_expected_value_after_useful_life(self):
@@ -1403,7 +1399,7 @@
 		)
 
 		accumulated_depreciation_after_full_schedule = max(
-			d.accumulated_depreciation_amount for d in get_draft_or_active_depr_schedule(asset.name)
+			d.accumulated_depreciation_amount for d in get_depr_schedule(asset.name, "Draft")
 		)
 
 		asset_value_after_full_schedule = flt(asset.gross_purchase_amount) - flt(
@@ -1434,7 +1430,7 @@
 		asset.load_from_db()
 
 		# check depreciation entry series
-		self.assertEqual(get_draft_or_active_depr_schedule(asset.name)[0].journal_entry[:4], "DEPR")
+		self.assertEqual(get_depr_schedule(asset.name, "Active")[0].journal_entry[:4], "DEPR")
 
 		expected_gle = (
 			("_Test Accumulated Depreciations - _TC", 0.0, 30000.0),
@@ -1504,7 +1500,7 @@
 			"2020-07-15",
 		]
 
-		for i, schedule in enumerate(get_draft_or_active_depr_schedule(asset.name)):
+		for i, schedule in enumerate(get_depr_schedule(asset.name, "Active")):
 			self.assertEqual(getdate(expected_dates[i]), getdate(schedule.schedule_date))
 
 
diff --git a/erpnext/assets/doctype/asset_capitalization/test_asset_capitalization.py b/erpnext/assets/doctype/asset_capitalization/test_asset_capitalization.py
index 897c678..4d519a6 100644
--- a/erpnext/assets/doctype/asset_capitalization/test_asset_capitalization.py
+++ b/erpnext/assets/doctype/asset_capitalization/test_asset_capitalization.py
@@ -13,7 +13,7 @@
 	set_depreciation_settings_in_company,
 )
 from erpnext.assets.doctype.asset_depreciation_schedule.asset_depreciation_schedule import (
-	get_draft_or_active_asset_depr_schedule_doc,
+	get_asset_depr_schedule_doc,
 )
 from erpnext.stock.doctype.item.test_item import create_item
 
@@ -256,7 +256,7 @@
 			submit=1,
 		)
 
-		first_asset_depr_schedule = get_draft_or_active_asset_depr_schedule_doc(consumed_asset.name)
+		first_asset_depr_schedule = get_asset_depr_schedule_doc(consumed_asset.name, "Active")
 		self.assertEquals(first_asset_depr_schedule.status, "Active")
 
 		# Create and submit Asset Captitalization
@@ -290,7 +290,7 @@
 
 		first_asset_depr_schedule.load_from_db()
 
-		second_asset_depr_schedule = get_draft_or_active_asset_depr_schedule_doc(consumed_asset.name)
+		second_asset_depr_schedule = get_asset_depr_schedule_doc(consumed_asset.name, "Active")
 		self.assertEquals(second_asset_depr_schedule.status, "Active")
 		self.assertEquals(first_asset_depr_schedule.status, "Cancelled")
 
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 2076976..1446a6e 100644
--- a/erpnext/assets/doctype/asset_depreciation_schedule/asset_depreciation_schedule.py
+++ b/erpnext/assets/doctype/asset_depreciation_schedule/asset_depreciation_schedule.py
@@ -32,7 +32,7 @@
 		if self.finance_book:
 			finance_book_filter = ["finance_book", "=", self.finance_book]
 
-		num_asset_depr_schedules = frappe.db.count(
+		asset_depr_schedule = frappe.db.exists(
 			"Asset Depreciation Schedule",
 			[
 				["asset", "=", self.asset],
@@ -41,12 +41,19 @@
 			],
 		)
 
-		if num_asset_depr_schedules > 1:
-			frappe.throw(
-				_("Asset Depreciation Schedule for Asset {0} and Finance Book {1} already exists.").format(
-					self.asset, self.finance_book
+		if asset_depr_schedule and asset_depr_schedule != self.name:
+			if self.finance_book:
+				frappe.throw(
+					_(
+						"Asset Depreciation Schedule {0} for Asset {1} and Finance Book {2} already exists."
+					).format(asset_depr_schedule, self.asset, self.finance_book)
 				)
-			)
+			else:
+				frappe.throw(
+					_("Asset Depreciation Schedule {0} for Asset {1} already exists.").format(
+						asset_depr_schedule, self.asset
+					)
+				)
 
 	def on_submit(self):
 		self.db_set("status", "Active")
@@ -81,11 +88,15 @@
 
 def make_draft_asset_depr_schedules_if_not_present(asset_doc):
 	for row in asset_doc.get("finance_books"):
-		asset_depr_schedule_name = get_draft_or_active_asset_depr_schedule_name(
-			asset_doc.name, row.finance_book
+		draft_asset_depr_schedule_name = get_asset_depr_schedule_name(
+			asset_doc.name, "Draft", row.finance_book
 		)
 
-		if not asset_depr_schedule_name:
+		active_asset_depr_schedule_name = get_asset_depr_schedule_name(
+			asset_doc.name, "Active", row.finance_book
+		)
+
+		if not draft_asset_depr_schedule_name and not active_asset_depr_schedule_name:
 			make_draft_asset_depr_schedule(asset_doc, row)
 
 
@@ -104,9 +115,7 @@
 
 def update_draft_asset_depr_schedules(asset_doc):
 	for row in asset_doc.get("finance_books"):
-		asset_depr_schedule_doc = get_draft_or_active_asset_depr_schedule_doc(
-			asset_doc.name, row.finance_book
-		)
+		asset_depr_schedule_doc = get_asset_depr_schedule_doc(asset_doc.name, "Draft", row.finance_book)
 
 		if not asset_depr_schedule_doc:
 			continue
@@ -148,36 +157,30 @@
 
 def convert_draft_asset_depr_schedules_into_active(asset_doc):
 	for row in asset_doc.get("finance_books"):
-		asset_depr_schedule_doc = get_draft_or_active_asset_depr_schedule_doc(
-			asset_doc.name, row.finance_book
-		)
+		asset_depr_schedule_doc = get_asset_depr_schedule_doc(asset_doc.name, "Draft", row.finance_book)
 
 		if not asset_depr_schedule_doc:
 			continue
 
-		if asset_depr_schedule_doc.status == "Draft":
-			asset_depr_schedule_doc.submit()
+		asset_depr_schedule_doc.submit()
 
 
 def cancel_asset_depr_schedules(asset_doc):
 	for row in asset_doc.get("finance_books"):
-		asset_depr_schedule_doc = get_draft_or_active_asset_depr_schedule_doc(
-			asset_doc.name, row.finance_book
-		)
+		asset_depr_schedule_doc = get_asset_depr_schedule_doc(asset_doc.name, "Active", row.finance_book)
 
 		if not asset_depr_schedule_doc:
 			continue
 
-		if asset_depr_schedule_doc.status == "Active":
-			asset_depr_schedule_doc.cancel()
+		asset_depr_schedule_doc.cancel()
 
 
 def make_new_active_asset_depr_schedules_and_cancel_current_ones(
 	asset_doc, notes, date_of_disposal=None, date_of_return=None
 ):
 	for row in asset_doc.get("finance_books"):
-		current_asset_depr_schedule_doc = get_draft_or_active_asset_depr_schedule_doc(
-			asset_doc.name, row.finance_book
+		current_asset_depr_schedule_doc = get_asset_depr_schedule_doc(
+			asset_doc.name, "Active", row.finance_book
 		)
 
 		if not current_asset_depr_schedule_doc:
@@ -217,7 +220,7 @@
 	return asset_depr_schedule_doc
 
 
-def get_draft_or_active_asset_depr_schedule_name(asset_name, finance_book=None):
+def get_asset_depr_schedule_name(asset_name, status, finance_book=None):
 	finance_book_filter = ["finance_book", "is", "not set"]
 	if finance_book:
 		finance_book_filter = ["finance_book", "=", finance_book]
@@ -227,37 +230,14 @@
 		filters=[
 			["asset", "=", asset_name],
 			finance_book_filter,
-			["status", "in", ["Draft", "Active"]],
+			["status", "=", status],
 		],
 	)
 
 
-def get_cancelled_asset_depr_schedule_name(asset_name, finance_book=None):
-	finance_book_filter = ["finance_book", "is", "not set"]
-	if finance_book:
-		finance_book_filter = ["finance_book", "=", finance_book]
-
-	cancelled_asset_depr_schedule_names = frappe.db.get_all(
-		doctype="Asset Depreciation Schedule",
-		filters=[
-			["asset", "=", asset_name],
-			finance_book_filter,
-			["status", "=", "Cancelled"],
-		],
-		order_by="creation desc",
-		limit=1,
-		pluck="name",
-	)
-
-	if cancelled_asset_depr_schedule_names:
-		return cancelled_asset_depr_schedule_names[0]
-
-	return
-
-
 @frappe.whitelist()
-def get_draft_or_active_depr_schedule(asset_name, finance_book=None):
-	asset_depr_schedule_doc = get_draft_or_active_asset_depr_schedule_doc(asset_name, finance_book)
+def get_depr_schedule(asset_name, status, finance_book=None):
+	asset_depr_schedule_doc = get_asset_depr_schedule_doc(asset_name, status, finance_book)
 
 	if not asset_depr_schedule_doc:
 		return
@@ -265,28 +245,8 @@
 	return asset_depr_schedule_doc.get("depreciation_schedule")
 
 
-def get_cancelled_depr_schedule(asset_name, finance_book=None):
-	asset_depr_schedule_doc = get_cancelled_asset_depr_schedule_doc(asset_name, finance_book)
-
-	if not asset_depr_schedule_doc:
-		return
-
-	return asset_depr_schedule_doc.get("depreciation_schedule")
-
-
-def get_draft_or_active_asset_depr_schedule_doc(asset_name, finance_book=None):
-	asset_depr_schedule_name = get_draft_or_active_asset_depr_schedule_name(asset_name, finance_book)
-
-	if not asset_depr_schedule_name:
-		return
-
-	asset_depr_schedule_doc = frappe.get_doc("Asset Depreciation Schedule", asset_depr_schedule_name)
-
-	return asset_depr_schedule_doc
-
-
-def get_cancelled_asset_depr_schedule_doc(asset_name, finance_book=None):
-	asset_depr_schedule_name = get_cancelled_asset_depr_schedule_name(asset_name, finance_book)
+def get_asset_depr_schedule_doc(asset_name, status, finance_book=None):
+	asset_depr_schedule_name = get_asset_depr_schedule_name(asset_name, status, finance_book)
 
 	if not asset_depr_schedule_name:
 		return
diff --git a/erpnext/assets/doctype/asset_depreciation_schedule/test_asset_depreciation_schedule.py b/erpnext/assets/doctype/asset_depreciation_schedule/test_asset_depreciation_schedule.py
index 21de8cd..024121d 100644
--- a/erpnext/assets/doctype/asset_depreciation_schedule/test_asset_depreciation_schedule.py
+++ b/erpnext/assets/doctype/asset_depreciation_schedule/test_asset_depreciation_schedule.py
@@ -1,9 +1,27 @@
 # Copyright (c) 2022, Frappe Technologies Pvt. Ltd. and Contributors
 # See license.txt
 
-# import frappe
+import frappe
 from frappe.tests.utils import FrappeTestCase
 
+from erpnext.assets.doctype.asset.test_asset import create_asset, create_asset_data
+from erpnext.assets.doctype.asset_depreciation_schedule.asset_depreciation_schedule import (
+	get_asset_depr_schedule_doc,
+)
+
 
 class TestAssetDepreciationSchedule(FrappeTestCase):
-	pass
+	def setUp(self):
+		create_asset_data()
+
+	def test_throw_error_if_another_asset_depr_schedule_exist(self):
+		asset = create_asset(item_code="Macbook Pro", calculate_depreciation=1, submit=1)
+
+		first_asset_depr_schedule = get_asset_depr_schedule_doc(asset.name, "Active")
+		self.assertEquals(first_asset_depr_schedule.status, "Active")
+
+		second_asset_depr_schedule = frappe.get_doc(
+			{"doctype": "Asset Depreciation Schedule", "asset": asset.name, "finance_book": None}
+		)
+
+		self.assertRaises(frappe.ValidationError, second_asset_depr_schedule.insert)
diff --git a/erpnext/assets/doctype/asset_repair/asset_repair.py b/erpnext/assets/doctype/asset_repair/asset_repair.py
index c5036fa..b8cd115 100644
--- a/erpnext/assets/doctype/asset_repair/asset_repair.py
+++ b/erpnext/assets/doctype/asset_repair/asset_repair.py
@@ -9,7 +9,7 @@
 from erpnext.accounts.general_ledger import make_gl_entries
 from erpnext.assets.doctype.asset.asset import get_asset_account
 from erpnext.assets.doctype.asset_depreciation_schedule.asset_depreciation_schedule import (
-	get_draft_or_active_depr_schedule,
+	get_depr_schedule,
 	make_new_active_asset_depr_schedules_and_cancel_current_ones,
 )
 from erpnext.controllers.accounts_controller import AccountsController
@@ -289,7 +289,7 @@
 			asset.number_of_depreciations_booked
 		)
 
-		depr_schedule = get_draft_or_active_depr_schedule(asset.name, row.finance_book)
+		depr_schedule = get_depr_schedule(asset.name, "Active", row.finance_book)
 
 		# the Schedule Date in the final row of the old Depreciation Schedule
 		last_schedule_date = depr_schedule[len(depr_schedule) - 1].schedule_date
@@ -322,7 +322,7 @@
 			asset.number_of_depreciations_booked
 		)
 
-		depr_schedule = get_draft_or_active_depr_schedule(asset.name, row.finance_book)
+		depr_schedule = get_depr_schedule(asset.name, "Active", row.finance_book)
 
 		# the Schedule Date in the final row of the modified Depreciation Schedule
 		last_schedule_date = depr_schedule[len(depr_schedule) - 1].schedule_date
diff --git a/erpnext/assets/doctype/asset_repair/test_asset_repair.py b/erpnext/assets/doctype/asset_repair/test_asset_repair.py
index 8618392..ff72aa9 100644
--- a/erpnext/assets/doctype/asset_repair/test_asset_repair.py
+++ b/erpnext/assets/doctype/asset_repair/test_asset_repair.py
@@ -13,7 +13,7 @@
 	set_depreciation_settings_in_company,
 )
 from erpnext.assets.doctype.asset_depreciation_schedule.asset_depreciation_schedule import (
-	get_draft_or_active_asset_depr_schedule_doc,
+	get_asset_depr_schedule_doc,
 )
 from erpnext.stock.doctype.item.test_item import create_item
 
@@ -236,7 +236,7 @@
 	def test_increase_in_asset_life(self):
 		asset = create_asset(calculate_depreciation=1, submit=1)
 
-		first_asset_depr_schedule = get_draft_or_active_asset_depr_schedule_doc(asset.name)
+		first_asset_depr_schedule = get_asset_depr_schedule_doc(asset.name, "Active")
 		self.assertEquals(first_asset_depr_schedule.status, "Active")
 
 		initial_num_of_depreciations = num_of_depreciations(asset)
@@ -245,7 +245,7 @@
 		asset.reload()
 		first_asset_depr_schedule.load_from_db()
 
-		second_asset_depr_schedule = get_draft_or_active_asset_depr_schedule_doc(asset.name)
+		second_asset_depr_schedule = get_asset_depr_schedule_doc(asset.name, "Active")
 		self.assertEquals(second_asset_depr_schedule.status, "Active")
 		self.assertEquals(first_asset_depr_schedule.status, "Cancelled")
 
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 fe4b7f9..262d552 100644
--- a/erpnext/assets/doctype/asset_value_adjustment/asset_value_adjustment.py
+++ b/erpnext/assets/doctype/asset_value_adjustment/asset_value_adjustment.py
@@ -12,8 +12,8 @@
 )
 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_doc,
 	get_depreciation_amount,
-	get_draft_or_active_asset_depr_schedule_doc,
 	set_accumulated_depreciation,
 )
 
@@ -116,8 +116,8 @@
 		for d in asset.finance_books:
 			d.value_after_depreciation = asset_value
 
-			current_asset_depr_schedule_doc = get_draft_or_active_asset_depr_schedule_doc(
-				asset.name, d.finance_book
+			current_asset_depr_schedule_doc = get_asset_depr_schedule_doc(
+				asset.name, "Active", d.finance_book
 			)
 
 			new_asset_depr_schedule_doc = frappe.copy_doc(current_asset_depr_schedule_doc)
diff --git a/erpnext/assets/doctype/asset_value_adjustment/test_asset_value_adjustment.py b/erpnext/assets/doctype/asset_value_adjustment/test_asset_value_adjustment.py
index 780c9db..03dcea9 100644
--- a/erpnext/assets/doctype/asset_value_adjustment/test_asset_value_adjustment.py
+++ b/erpnext/assets/doctype/asset_value_adjustment/test_asset_value_adjustment.py
@@ -8,7 +8,7 @@
 
 from erpnext.assets.doctype.asset.test_asset import create_asset_data
 from erpnext.assets.doctype.asset_depreciation_schedule.asset_depreciation_schedule import (
-	get_draft_or_active_asset_depr_schedule_doc,
+	get_asset_depr_schedule_doc,
 )
 from erpnext.assets.doctype.asset_value_adjustment.asset_value_adjustment import (
 	get_current_asset_value,
@@ -76,7 +76,7 @@
 		)
 		asset_doc.submit()
 
-		first_asset_depr_schedule = get_draft_or_active_asset_depr_schedule_doc(asset_doc.name)
+		first_asset_depr_schedule = get_asset_depr_schedule_doc(asset_doc.name, "Active")
 		self.assertEquals(first_asset_depr_schedule.status, "Active")
 
 		current_value = get_current_asset_value(asset_doc.name)
@@ -87,7 +87,7 @@
 
 		first_asset_depr_schedule.load_from_db()
 
-		second_asset_depr_schedule = get_draft_or_active_asset_depr_schedule_doc(asset_doc.name)
+		second_asset_depr_schedule = get_asset_depr_schedule_doc(asset_doc.name, "Active")
 		self.assertEquals(second_asset_depr_schedule.status, "Active")
 		self.assertEquals(first_asset_depr_schedule.status, "Cancelled")