refactor: chained callback
diff --git a/erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.py b/erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.py
index 96e5bf9..9911d44 100644
--- a/erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.py
+++ b/erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.py
@@ -75,22 +75,37 @@
 	def on_cancel(self):
 		self.db_set("status", "Cancelled")
 
+	def chain_callback(self, method):
+		frappe.enqueue(
+			"frappe.utils.background_jobs.run_doc_method",
+			doctype=self.doctype,
+			name=self.name,
+			doc_method=method,
+			queue="long",
+			enqueue_after_commit=True,
+		)
+
 	@frappe.whitelist()
 	def start_deletion_process(self):
 		self.delete_bins()
 		self.delete_lead_addresses()
 		self.reset_company_values()
+		self.delete_notifications()
+		self.initialize_doctypes_to_be_deleted_table()
+		self.delete_company_transactions()
+
+	def delete_notifications(self):
 		if not self.clear_notifications:
 			clear_notifications()
 			self.db_set("clear_notifications", 1)
-		self.initialize_doctypes_to_be_deleted_table()
-		self.delete_company_transactions()
+		self.chain_callback("initialize_doctypes_to_be_deleted_table")
 
 	def populate_doctypes_to_be_ignored_table(self):
 		doctypes_to_be_ignored_list = get_doctypes_to_be_ignored()
 		for doctype in doctypes_to_be_ignored_list:
 			self.append("doctypes_to_be_ignored", {"doctype_name": doctype})
 
+	@frappe.whitelist()
 	def delete_bins(self):
 		if not self.delete_bin_data:
 			frappe.db.sql(
@@ -99,6 +114,7 @@
 				self.company,
 			)
 			self.db_set("delete_bin_data", 1)
+		self.chain_callback(method="delete_lead_addresses")
 
 	def delete_lead_addresses(self):
 		"""Delete addresses to which leads are linked"""
@@ -139,6 +155,7 @@
 					)
 				)
 			self.db_set("delete_leads_and_addresses", 1)
+		self.chain_callback(method="reset_company_values")
 
 	def reset_company_values(self):
 		if not self.reset_company_default_values:
@@ -147,6 +164,7 @@
 			company_obj.sales_monthly_history = None
 			company_obj.save()
 			self.db_set("reset_company_default_values", 1)
+		self.chain_callback(method="delete_notifications")
 
 	def initialize_doctypes_to_be_deleted_table(self):
 		if not self.initialize_doctypes_table:
@@ -162,6 +180,7 @@
 						# Initialize
 						self.populate_doctypes_table(tables, docfield["parent"], docfield["fieldname"], 0)
 			self.db_set("initialize_doctypes_table", 1)
+		self.chain_callback(method="delete_company_transactions")
 
 	def delete_company_transactions(self):
 		if not self.delete_transactions:
@@ -194,6 +213,7 @@
 							if "#" in naming_series:
 								self.update_naming_series(naming_series, docfield.doctype_name)
 
+						self.chain_callback(method="delete_company_transactions")
 					else:
 						frappe.db.set_value(docfield.doctype, docfield.name, "done", 1)
 			self.db_set("delete_transactions", 1)