diff --git a/erpnext/accounts/doctype/bank_account/bank_account.py b/erpnext/accounts/doctype/bank_account/bank_account.py index c402d46c984f0d79b885eff059ed16a23016857f..b6efdbfad60de1870ec0fe8cbe7d9e188baa2bb0 100644 --- a/erpnext/accounts/doctype/bank_account/bank_account.py +++ b/erpnext/accounts/doctype/bank_account/bank_account.py @@ -60,6 +60,7 @@ class BankAccount(Document): self.validate_iban() self.get_iban_details() self.validate_account() + self.update_default_bank_account() def validate_account(self): if self.account: @@ -121,27 +122,53 @@ class BankAccount(Document): except Exception: pass + def update_default_bank_account(self): + if self.is_default and not self.disabled: + frappe.db.set_value( + "Bank Account", + { + "party_type": self.party_type, + "party": self.party, + "is_company_account": self.is_company_account, + "is_default": 1, + "disabled": 0, + }, + "is_default", + 0, + ) + @frappe.whitelist() def make_bank_account(doctype, docname): doc = frappe.new_doc("Bank Account") doc.party_type = doctype doc.party = docname - doc.is_default = 1 return doc def get_party_bank_account(party_type, party): - return frappe.db.get_value(party_type, party, "default_bank_account") - - -def get_default_company_bank_account(company): return frappe.db.get_value( - "Bank Account", {"company": company, "is_company_account": 1, "is_default": 1} + "Bank Account", + {"party_type": party_type, "party": party, "is_default": 1, "disabled": 0}, + "name", ) +def get_default_company_bank_account(company, party_type, party): + default_company_bank_account = frappe.db.get_value(party_type, party, "default_bank_account") + if default_company_bank_account: + if company != frappe.get_cached_value("Bank Account", default_company_bank_account, "company"): + default_company_bank_account = None + + if not default_company_bank_account: + default_company_bank_account = frappe.db.get_value( + "Bank Account", {"company": company, "is_company_account": 1, "is_default": 1} + ) + + return default_company_bank_account + + @frappe.whitelist() def get_bank_account_details(bank_account): return frappe.get_cached_value( diff --git a/erpnext/accounts/doctype/payment_entry/payment_entry.py b/erpnext/accounts/doctype/payment_entry/payment_entry.py index 54218f80f10aa7bf88ed165fbe9c759abb49f221..1a274c0a387855f392ef719a1a8944608bebd617 100644 --- a/erpnext/accounts/doctype/payment_entry/payment_entry.py +++ b/erpnext/accounts/doctype/payment_entry/payment_entry.py @@ -2047,8 +2047,7 @@ def get_party_details(company, party_type, party, date, cost_center=None, down_p if party_type in ["Customer", "Supplier"]: party_bank_account = get_party_bank_account(party_type, party) - bank_account = get_default_company_bank_account(company) - + bank_account = get_default_company_bank_account(company, party_type, party) return { "party_account": party_account, "party_name": party_name,