Validate Bank name in Setup wizard on the same slide (#12968)

* validate bank name before moving on to next slide

* Update setup_wizard.js
diff --git a/erpnext/accounts/doctype/account/chart_of_accounts/chart_of_accounts.py b/erpnext/accounts/doctype/account/chart_of_accounts/chart_of_accounts.py
index dc98db1..91db378 100644
--- a/erpnext/accounts/doctype/account/chart_of_accounts/chart_of_accounts.py
+++ b/erpnext/accounts/doctype/account/chart_of_accounts/chart_of_accounts.py
@@ -175,4 +175,22 @@
 			tree[child.account_name]["root_type"] = child.root_type
 			
 		# call recursively to build a subtree for current account
-		build_account_tree(tree[child.account_name], child, all_accounts)
\ No newline at end of file
+		build_account_tree(tree[child.account_name], child, all_accounts)
+
+@frappe.whitelist()
+def validate_bank_account(coa, bank_account):
+	accounts = []
+	chart = get_chart(coa)
+	
+	if chart:
+		def _get_account_names(account_master):
+			for account_name, child in account_master.items():
+				if account_name not in ["account_number", "account_type",
+					"root_type", "is_group", "tax_rate"]:
+					accounts.append(account_name)
+
+					_get_account_names(child)
+
+		_get_account_names(chart)
+
+	return (bank_account in accounts)
\ No newline at end of file
diff --git a/erpnext/public/js/setup_wizard.js b/erpnext/public/js/setup_wizard.js
index 2652f95..2e44857 100644
--- a/erpnext/public/js/setup_wizard.js
+++ b/erpnext/public/js/setup_wizard.js
@@ -137,11 +137,35 @@
 		},
 
 		validate: function () {
+			let me = this;
+			let exist;
+
 			// validate fiscal year start and end dates
 			if (this.values.fy_start_date == 'Invalid date' || this.values.fy_end_date == 'Invalid date') {
 				frappe.msgprint(__("Please enter valid Financial Year Start and End Dates"));
 				return false;
 			}
+
+			// Validate bank name
+			if(me.values.bank_account){
+				frappe.call({
+					async: false,
+					method: "erpnext.accounts.doctype.account.chart_of_accounts.chart_of_accounts.validate_bank_account",
+					args: {
+						"coa": me.values.chart_of_accounts,
+						"bank_account": me.values.bank_account
+					},
+					callback: function (r) {
+						if(r.message){
+							exist = r.message;
+							me.get_field("bank_account").set_value("");
+							frappe.msgprint(__(`Account ${me.values.bank_account} already exists, enter a different name for your bank account`));
+						}
+					}
+				});
+				return !exist; // Return False if exist = true
+			}
+
 			return true;
 		},