chore: fix validation and add make_schedules_editable
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 fdebbb1..c28b2b3 100644
--- a/erpnext/assets/doctype/asset_depreciation_schedule/asset_depreciation_schedule.js
+++ b/erpnext/assets/doctype/asset_depreciation_schedule/asset_depreciation_schedule.js
@@ -2,6 +2,20 @@
 // For license information, please see license.txt
 frappe.provide("erpnext.asset");
 
+frappe.ui.form.on('Asset Depreciation Schedule', {
+	onload: function(frm) {
+		frm.events.make_schedules_editable(frm);
+	},
+
+	make_schedules_editable: function(frm) {
+		var is_editable = frm.doc.depreciation_method == "Manual" ? true : false;
+
+		frm.toggle_enable("depreciation_schedule", is_editable);
+		frm.fields_dict["depreciation_schedule"].grid.toggle_enable("schedule_date", is_editable);
+		frm.fields_dict["depreciation_schedule"].grid.toggle_enable("depreciation_amount", is_editable);
+	}
+});
+
 frappe.ui.form.on('Depreciation Schedule', {
 	make_depreciation_entry: function(frm, cdt, cdn) {
 		var row = locals[cdt][cdn];
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 b01f239..2cdea57 100644
--- a/erpnext/assets/doctype/asset_depreciation_schedule/asset_depreciation_schedule.py
+++ b/erpnext/assets/doctype/asset_depreciation_schedule/asset_depreciation_schedule.py
@@ -22,14 +22,28 @@
 		self.validate_another_asset_depr_schedule_does_not_exist()
 
 	def validate_another_asset_depr_schedule_does_not_exist(self):
-		asset_depr_schedule_name = get_asset_depr_schedule_name(self.asset, self.finance_book)
+		finance_book_filter = ["finance_book", "is", "not set"]
+		if self.finance_book:
+			finance_book_filter = ["finance_book", "=", self.finance_book]
 
-		if asset_depr_schedule_name:
-			frappe.throw(
-				_("Asset Depreciation Schedule for Asset {0} and Finance Book {1} already exists.").format(
-					self.asset, self.finance_book
+		num_asset_depr_schedules = frappe.db.count(
+			"Asset Depreciation Schedule",
+			[
+				["asset", "=", self.asset],
+				finance_book_filter,
+				["docstatus", "<", 2],
+			],
+		)
+
+		if num_asset_depr_schedules == 1:
+			asset_depr_schedule_name = get_asset_depr_schedule_name(self.asset, self.finance_book)
+
+			if self.name != asset_depr_schedule_name:
+				frappe.throw(
+					_("Asset Depreciation Schedule for Asset {0} and Finance Book {1} already exists.").format(
+						self.asset, self.finance_book
+					)
 				)
-			)
 
 
 def make_draft_asset_depr_schedules(asset_doc, date_of_disposal=None, date_of_return=None):