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;
},