chore: fix some bugs, refactor some functions, add proper notes
diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
index 85ed784..f470fe6 100644
--- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
+++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
@@ -1190,8 +1190,11 @@
 					else:
 						if asset.calculate_depreciation:
 							notes = _(
-								"This schedule was created when the Asset {0} was sold through Sales Invoice {1}."
-							).format(asset.name, self.get("name"))
+								"This schedule was created when Asset {0} was sold through Sales Invoice {1}."
+							).format(
+								get_link_to_form(asset.doctype, asset.name),
+								get_link_to_form(self.doctype, self.get("name")),
+							)
 							depreciate_asset(asset, self.posting_date, notes)
 
 						fixed_asset_gl_entries = get_gl_entries_on_asset_disposal(
diff --git a/erpnext/assets/doctype/asset/asset.py b/erpnext/assets/doctype/asset/asset.py
index 0b37b89..a9fed1c 100644
--- a/erpnext/assets/doctype/asset/asset.py
+++ b/erpnext/assets/doctype/asset/asset.py
@@ -14,6 +14,7 @@
 	flt,
 	get_datetime,
 	get_last_day,
+	get_link_to_form,
 	getdate,
 	is_last_day_of_the_month,
 	month_diff,
@@ -31,9 +32,10 @@
 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_doc_of_asset,
 	get_depr_schedule_from_asset_depr_schedule_of_asset,
 	make_draft_asset_depr_schedules,
-	make_new_active_asset_depr_schedules_and_cancel_current_ones,
+	set_draft_asset_depr_schedule_details,
 	update_draft_asset_depr_schedules,
 )
 from erpnext.controllers.accounts_controller import AccountsController
@@ -48,7 +50,6 @@
 		self.set_missing_values()
 		if not self.split_from:
 			self.prepare_depreciation_data()
-			update_draft_asset_depr_schedules(self)
 		self.validate_gross_and_purchase_amount()
 		self.validate_expected_value_after_useful_life()
 
@@ -97,6 +98,7 @@
 		if self.calculate_depreciation:
 			self.value_after_depreciation = 0
 			self.set_depreciation_rate()
+			update_draft_asset_depr_schedules(self)
 		else:
 			self.finance_books = []
 			self.value_after_depreciation = flt(self.gross_purchase_amount) - flt(
@@ -858,12 +860,12 @@
 	remaining_qty = asset.asset_quantity - split_qty
 
 	new_asset = create_new_asset_after_split(asset, split_qty)
-	update_existing_asset(asset, remaining_qty)
+	update_existing_asset(asset, remaining_qty, new_asset.name)
 
 	return new_asset
 
 
-def update_existing_asset(asset, remaining_qty):
+def update_existing_asset(asset, remaining_qty, new_asset_name):
 	remaining_gross_purchase_amount = flt(
 		(asset.gross_purchase_amount * remaining_qty) / asset.asset_quantity
 	)
@@ -898,18 +900,31 @@
 			expected_value_after_useful_life,
 		)
 
-		accumulated_depreciation = 0
-		depr_schedule = get_depr_schedule_from_asset_depr_schedule_of_asset(asset.name, row.finance_book)
+		current_asset_depr_schedule_doc = get_asset_depr_schedule_doc_of_asset(
+			asset.name, row.finance_book
+		)
+		new_asset_depr_schedule_doc = frappe.copy_doc(current_asset_depr_schedule_doc)
 
-		for term in depr_schedule:
+		set_draft_asset_depr_schedule_details(new_asset_depr_schedule_doc, asset, row)
+
+		accumulated_depreciation = 0
+
+		for term in new_asset_depr_schedule_doc.get("depreciation_schedule"):
 			depreciation_amount = flt((term.depreciation_amount * remaining_qty) / asset.asset_quantity)
-			frappe.db.set_value(
-				"Depreciation Schedule", term.name, "depreciation_amount", depreciation_amount
-			)
+			term.depreciation_amount = depreciation_amount
 			accumulated_depreciation += depreciation_amount
-			frappe.db.set_value(
-				"Depreciation Schedule", term.name, "accumulated_depreciation_amount", accumulated_depreciation
-			)
+			term.accumulated_depreciation_amount = accumulated_depreciation
+
+		notes = _(
+			"This schedule was created when Asset {0} was updated after being split into new Asset {1}."
+		).format(
+			get_link_to_form(asset.doctype, asset.name), get_link_to_form(asset.doctype, new_asset_name)
+		)
+		new_asset_depr_schedule_doc.notes = notes
+
+		current_asset_depr_schedule_doc.cancel()
+
+		new_asset_depr_schedule_doc.submit()
 
 
 def create_new_asset_after_split(asset, split_qty):
@@ -932,33 +947,42 @@
 			(row.expected_value_after_useful_life * split_qty) / asset.asset_quantity
 		)
 
-	new_asset.submit()
+		current_asset_depr_schedule_doc = get_asset_depr_schedule_doc_of_asset(
+			asset.name, row.finance_book
+		)
+		new_asset_depr_schedule_doc = frappe.copy_doc(current_asset_depr_schedule_doc)
 
-	make_new_active_asset_depr_schedules_and_cancel_current_ones(
-		new_asset, "create_new_asset_after_split TODO", submit=False
-	)
+		set_draft_asset_depr_schedule_details(new_asset_depr_schedule_doc, new_asset, row)
 
-	for row in new_asset.get("finance_books"):
 		accumulated_depreciation = 0
 
-		depr_schedule = get_depr_schedule_from_asset_depr_schedule_of_asset(
-			new_asset.name, row.finance_book
-		)
-
-		for term in depr_schedule:
+		for term in new_asset_depr_schedule_doc.get("depreciation_schedule"):
 			depreciation_amount = flt((term.depreciation_amount * split_qty) / asset.asset_quantity)
 			term.depreciation_amount = depreciation_amount
 			accumulated_depreciation += depreciation_amount
 			term.accumulated_depreciation_amount = accumulated_depreciation
 
+		notes = _("This schedule was created when new Asset {0} was split from Asset {1}.").format(
+			get_link_to_form(new_asset.doctype, new_asset.name), get_link_to_form(asset.doctype, asset.name)
+		)
+		new_asset_depr_schedule_doc.notes = notes
+
+		new_asset_depr_schedule_doc.insert()
+
+	new_asset.submit()
+	new_asset.set_status()
+
+	for row in new_asset.get("finance_books"):
+		depr_schedule = get_depr_schedule_from_asset_depr_schedule_of_asset(
+			new_asset.name, row.finance_book
+		)
+		for term in depr_schedule:
 			# Update references in JV
 			if term.journal_entry:
 				add_reference_in_jv_on_split(
 					term.journal_entry, new_asset.name, asset.name, term.depreciation_amount
 				)
 
-	new_asset.set_status()
-
 	return new_asset
 
 
diff --git a/erpnext/assets/doctype/asset/depreciation.py b/erpnext/assets/doctype/asset/depreciation.py
index 22c65fd..b7d5511 100644
--- a/erpnext/assets/doctype/asset/depreciation.py
+++ b/erpnext/assets/doctype/asset/depreciation.py
@@ -4,7 +4,7 @@
 
 import frappe
 from frappe import _
-from frappe.utils import add_months, cint, flt, getdate, nowdate, today
+from frappe.utils import add_months, cint, flt, get_link_to_form, getdate, nowdate, today
 
 from erpnext.accounts.doctype.accounting_dimension.accounting_dimension import (
 	get_checks_for_pl_and_bs_accounts,
@@ -238,8 +238,8 @@
 	je.submit()
 
 	notes = _(
-		"This schedule was created when the Asset {0} was scrapped through Journal Entry {1}."
-	).format(asset.name, je.name)
+		"This schedule was created when Asset {0} was scrapped through Journal Entry {1}."
+	).format(get_link_to_form(asset.doctype, asset.name), get_link_to_form(je.doctype, je.name))
 	depreciate_asset(asset, date, notes)
 
 	frappe.db.set_value("Asset", asset_name, "disposal_date", date)
@@ -291,9 +291,10 @@
 		if repair.increase_in_asset_life:
 			asset_repair = frappe.get_doc("Asset Repair", repair.name)
 			asset_repair.modify_depreciation_schedule()
-			notes = _(
-				"This schedule was created when the Asset {0} went through the Asset Repair {1}."
-			).format(asset.name, repair.name)
+			notes = _("This schedule was created when Asset {0} went through Asset Repair {1}.").format(
+				get_link_to_form(asset.doctype, asset.name),
+				get_link_to_form(asset_repair.doctype, asset_repair.name),
+			)
 			make_new_active_asset_depr_schedules_and_cancel_current_ones(asset, notes)
 
 
diff --git a/erpnext/assets/doctype/asset_capitalization/asset_capitalization.py b/erpnext/assets/doctype/asset_capitalization/asset_capitalization.py
index 96c01a5..26bac86 100644
--- a/erpnext/assets/doctype/asset_capitalization/asset_capitalization.py
+++ b/erpnext/assets/doctype/asset_capitalization/asset_capitalization.py
@@ -7,7 +7,7 @@
 
 # import erpnext
 from frappe import _
-from frappe.utils import cint, flt
+from frappe.utils import cint, flt, get_link_to_form
 from six import string_types
 
 import erpnext
@@ -431,8 +431,10 @@
 
 			if asset.calculate_depreciation:
 				notes = _(
-					"This schedule was created when the Asset {0} was consumed through Asset Capitalization {1}."
-				).format(asset.name, self.get("name"))
+					"This schedule was created when Asset {0} was consumed when Asset Capitalization {1} was submitted."
+				).format(
+					get_link_to_form(asset.doctype, asset.name), get_link_to_form(self.doctype, self.get("name"))
+				)
 				depreciate_asset(asset, self.posting_date, notes)
 				asset.reload()
 
@@ -519,8 +521,10 @@
 			asset_doc.purchase_date = self.posting_date
 			asset_doc.gross_purchase_amount = total_target_asset_value
 			asset_doc.purchase_receipt_amount = total_target_asset_value
-			notes = _("This schedule was created when the Asset Capitalization {0} was submitted.").format(
-				self.name
+			notes = _(
+				"This schedule was created when target Asset {0} was updated when Asset Capitalization {1} was submitted."
+			).format(
+				get_link_to_form(asset_doc.doctype, asset_doc.name), get_link_to_form(self.doctype, self.name)
 			)
 			make_new_active_asset_depr_schedules_and_cancel_current_ones(asset_doc, notes)
 		elif self.docstatus == 2:
@@ -532,8 +536,10 @@
 				if asset.calculate_depreciation:
 					reverse_depreciation_entry_made_after_disposal(asset, self.posting_date)
 					notes = _(
-						"This schedule was created when the Asset Capitalization {0} was cancelled."
-					).format(self.name)
+						"This schedule was created when Asset {0} was restored when Asset Capitalization {1} was cancelled."
+					).format(
+						get_link_to_form(asset.doctype, asset.name), get_link_to_form(self.doctype, self.name)
+					)
 					reset_depreciation_schedule(asset, self.posting_date, notes)
 
 	def get_asset(self, item):
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 9f4047d..61e8ba2 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,7 @@
 
 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_name = get_asset_depr_schedule_name(asset_doc.name, row.finance_book)
-
-		if not asset_depr_schedule_name:
-			return
-
-		asset_depr_schedule_doc = frappe.get_doc("Asset Depreciation Schedule", asset_depr_schedule_name)
+		asset_depr_schedule_doc = get_asset_depr_schedule_doc_of_asset(asset_doc.name, row.finance_book)
 
 		prepare_draft_asset_depr_schedule_data(
 			asset_depr_schedule_doc, asset_doc, row, date_of_disposal, date_of_return
@@ -72,12 +67,7 @@
 
 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_name(asset_doc.name, row.finance_book)
-
-		if not asset_depr_schedule_name:
-			return
-
-		asset_depr_schedule_doc = frappe.get_doc("Asset Depreciation Schedule", asset_depr_schedule_name)
+		asset_depr_schedule_doc = get_asset_depr_schedule_doc_of_asset(asset_doc.name, row.finance_book)
 
 		asset_depr_schedule_doc.status = "Active"
 
@@ -85,16 +75,11 @@
 
 
 def make_new_active_asset_depr_schedules_and_cancel_current_ones(
-	asset_doc, notes, submit=True, date_of_disposal=None, date_of_return=None
+	asset_doc, notes, date_of_disposal=None, date_of_return=None
 ):
 	for row in asset_doc.get("finance_books"):
-		current_asset_depr_schedule_name = get_asset_depr_schedule_name(asset_doc.name, row.finance_book)
-
-		if not current_asset_depr_schedule_name:
-			return
-
-		current_asset_depr_schedule_doc = frappe.get_doc(
-			"Asset Depreciation Schedule", current_asset_depr_schedule_name
+		current_asset_depr_schedule_doc = get_asset_depr_schedule_doc_of_asset(
+			asset_doc.name, row.finance_book
 		)
 
 		new_asset_depr_schedule_doc = frappe.copy_doc(current_asset_depr_schedule_doc)
@@ -106,10 +91,7 @@
 
 		current_asset_depr_schedule_doc.cancel()
 
-		new_asset_depr_schedule_doc.insert()
-
-		if submit:
-			new_asset_depr_schedule_doc.submit()
+		new_asset_depr_schedule_doc.submit()
 
 
 def get_temp_asset_depr_schedule_doc(asset_doc, row, date_of_disposal=None, date_of_return=None):
@@ -124,12 +106,9 @@
 
 def cancel_asset_depr_schedules(asset_doc):
 	for row in asset_doc.get("finance_books"):
-		asset_depr_schedule_name = get_asset_depr_schedule_name(asset_doc.name, row.finance_book)
+		asset_depr_schedule_doc = get_asset_depr_schedule_doc_of_asset(asset_doc.name, row.finance_book)
 
-		if not asset_depr_schedule_name:
-			return
-
-		asset_depr_schedule_doc = frappe.get_doc("Asset Depreciation Schedule", asset_depr_schedule_name)
+		asset_depr_schedule_doc.status = "Cancelled"
 
 		asset_depr_schedule_doc.cancel()
 
@@ -151,6 +130,12 @@
 
 @frappe.whitelist()
 def get_depr_schedule_from_asset_depr_schedule_of_asset(asset_name, finance_book):
+	asset_depr_schedule_doc = get_asset_depr_schedule_doc_of_asset(asset_name, finance_book)
+
+	return asset_depr_schedule_doc.get("depreciation_schedule")
+
+
+def get_asset_depr_schedule_doc_of_asset(asset_name, finance_book):
 	asset_depr_schedule_name = get_asset_depr_schedule_name(asset_name, finance_book)
 
 	if not asset_depr_schedule_name:
@@ -158,7 +143,7 @@
 
 	asset_depr_schedule_doc = frappe.get_doc("Asset Depreciation Schedule", asset_depr_schedule_name)
 
-	return asset_depr_schedule_doc.get("depreciation_schedule")
+	return asset_depr_schedule_doc
 
 
 def make_depr_schedule(asset_depr_schedule_doc, asset_doc, row, date_of_disposal):
diff --git a/erpnext/assets/doctype/asset_repair/asset_repair.py b/erpnext/assets/doctype/asset_repair/asset_repair.py
index d3f74b0..31fd0f6 100644
--- a/erpnext/assets/doctype/asset_repair/asset_repair.py
+++ b/erpnext/assets/doctype/asset_repair/asset_repair.py
@@ -3,7 +3,7 @@
 
 import frappe
 from frappe import _
-from frappe.utils import add_months, cint, flt, getdate, time_diff_in_hours
+from frappe.utils import add_months, cint, flt, get_link_to_form, getdate, time_diff_in_hours
 
 import erpnext
 from erpnext.accounts.general_ledger import make_gl_entries
@@ -55,10 +55,11 @@
 				and self.increase_in_asset_life
 			):
 				self.modify_depreciation_schedule()
-				notes = _("This schedule was created when the Asset Repair {0} was submitted.").format(
-					self.name
-				)
-				make_new_active_asset_depr_schedules_and_cancel_current_ones(self.asset_doc, notes)
+
+		notes = _("This schedule was created when Asset Repair {0} was submitted.").format(
+			get_link_to_form(self.doctype, self.name)
+		)
+		make_new_active_asset_depr_schedules_and_cancel_current_ones(self.asset_doc, notes)
 
 	def before_cancel(self):
 		self.asset_doc = frappe.get_doc("Asset", self.asset)
@@ -76,10 +77,11 @@
 				and self.increase_in_asset_life
 			):
 				self.revert_depreciation_schedule_on_cancellation()
-				notes = _("This schedule was created when the Asset Repair {0} was cancelled.").format(
-					self.name
-				)
-				make_new_active_asset_depr_schedules_and_cancel_current_ones(self.asset_doc, notes)
+
+		notes = _("This schedule was created when Asset Repair {0} was cancelled.").format(
+			get_link_to_form(self.doctype, self.name)
+		)
+		make_new_active_asset_depr_schedules_and_cancel_current_ones(self.asset_doc, notes)
 
 	def check_repair_status(self):
 		if self.repair_status == "Pending":