diff --git a/erpnext/accounts/doctype/bank_transaction/auto_match_party.py b/erpnext/accounts/doctype/bank_transaction/auto_match_party.py index 7354fa0928a..01b674340a2 100644 --- a/erpnext/accounts/doctype/bank_transaction/auto_match_party.py +++ b/erpnext/accounts/doctype/bank_transaction/auto_match_party.py @@ -1,4 +1,5 @@ import frappe +from frappe.utils import flt from rapidfuzz import fuzz, process @@ -65,7 +66,7 @@ class AutoMatchbyAccountIBAN: result = None parties = ["Supplier", "Employee", "Customer"] # most -> least likely to receive - if self.deposit > 0: + if flt(self.deposit) > 0: parties = ["Customer", "Supplier", "Employee"] # most -> least likely to pay for party in parties: @@ -103,22 +104,27 @@ class AutoMatchbyPartyDescription: def match_party_name_desc_in_bank_party_mapper(self): """Check if match exists for party name or description in Bank Party Mapper""" result = None - # TODO: or filters + or_filters = [] + if self.bank_party_name: - result = frappe.db.get_value( - "Bank Party Mapper", - filters={"bank_party_name_desc": self.bank_party_name}, - fieldname=["party_type", "party"], - ) + or_filters.append(["bank_party_name_desc", self.bank_party_name]) - if not result and self.description: - result = frappe.db.get_value( - "Bank Party Mapper", - filters={"bank_party_name_desc": self.description}, - fieldname=["party_type", "party"], - ) + if self.description: + or_filters.append(["bank_party_name_desc", self.description]) - result = result + (None,) if result else result + mapper_res = frappe.get_all( + "Bank Party Mapper", + or_filters=or_filters, + fields=["party_type", "party"], + limit_page_length=1, + ) + if mapper_res: + mapper_res = mapper_res[0] + result = ( + mapper_res["party_type"], + mapper_res["party"], + None, + ) return result @@ -127,7 +133,7 @@ class AutoMatchbyPartyDescription: result = None parties = ["Supplier", "Employee", "Customer"] # most-least likely to receive - if frappe.utils.flt(self.deposit) > 0.0: + if flt(self.deposit) > 0.0: parties = ["Customer", "Supplier", "Employee"] # most-least likely to pay for party in parties: