From fd5eff0e490c046f2009d3d6802128d4a45c0a0c Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Thu, 4 Apr 2024 16:54:42 +0530 Subject: [PATCH 1/2] fix: Get default party bank account and company bank account for a party --- .../doctype/bank_account/bank_account.py | 52 ++++++++++++------- .../doctype/payment_entry/payment_entry.py | 3 +- 2 files changed, 33 insertions(+), 22 deletions(-) diff --git a/erpnext/accounts/doctype/bank_account/bank_account.py b/erpnext/accounts/doctype/bank_account/bank_account.py index c402d46c984..f35984aa761 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: @@ -106,20 +107,20 @@ class BankAccount(Document): if to_check % 97 != 1: frappe.throw(_("IBAN is not valid")) - def get_iban_details(self): - if not self.iban: - return - - try: - iban = IBAN(self.iban) - if iban.bic: - self.swift_number = iban.bic - if iban.bank_code: - self.branch_code = iban.bank_code - if iban.account_code: - self.bank_account_no = iban.account_code - 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() @@ -127,21 +128,32 @@ 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 8513e8f3eb0..1f670a7bea7 100644 --- a/erpnext/accounts/doctype/payment_entry/payment_entry.py +++ b/erpnext/accounts/doctype/payment_entry/payment_entry.py @@ -2027,8 +2027,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, -- GitLab From a845fec16c611ce47c0bfd5a59e4bd6564bff3c7 Mon Sep 17 00:00:00 2001 From: Charles-Henri Decultot Date: Thu, 11 Apr 2024 19:06:43 +0000 Subject: [PATCH 2/2] fix: merge conflict --- .../accounts/doctype/bank_account/bank_account.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/erpnext/accounts/doctype/bank_account/bank_account.py b/erpnext/accounts/doctype/bank_account/bank_account.py index f35984aa761..b6efdbfad60 100644 --- a/erpnext/accounts/doctype/bank_account/bank_account.py +++ b/erpnext/accounts/doctype/bank_account/bank_account.py @@ -107,6 +107,21 @@ class BankAccount(Document): if to_check % 97 != 1: frappe.throw(_("IBAN is not valid")) + def get_iban_details(self): + if not self.iban: + return + + try: + iban = IBAN(self.iban) + if iban.bic: + self.swift_number = iban.bic + if iban.bank_code: + self.branch_code = iban.bank_code + if iban.account_code: + self.bank_account_no = iban.account_code + except Exception: + pass + def update_default_bank_account(self): if self.is_default and not self.disabled: frappe.db.set_value( -- GitLab