fix: Set right party name in bank transaction

- If party name and docname are different, set the docname in Bank Transaction

(cherry picked from commit ff1dc72d74)
This commit is contained in:
marination
2023-09-29 15:19:09 +05:30
committed by Mergify
parent 65dfef021a
commit 21b430a575

View File

@@ -1,6 +1,7 @@
from typing import Tuple, Union from typing import Tuple, Union
import frappe import frappe
from frappe.core.utils import find
from frappe.utils import flt from frappe.utils import flt
from rapidfuzz import fuzz, process from rapidfuzz import fuzz, process
@@ -112,7 +113,8 @@ class AutoMatchbyPartyNameDescription:
for party in parties: for party in parties:
filters = {"status": "Active"} if party == "Employee" else {"disabled": 0} filters = {"status": "Active"} if party == "Employee" else {"disabled": 0}
names = frappe.get_all(party, filters=filters, pluck=party.lower() + "_name") field = party.lower() + "_name"
names = frappe.get_all(party, filters=filters, fields=[f"{field} as party_name", "name"])
for field in ["bank_party_name", "description"]: for field in ["bank_party_name", "description"]:
if not self.get(field): if not self.get(field):
@@ -131,12 +133,18 @@ class AutoMatchbyPartyNameDescription:
def fuzzy_search_and_return_result(self, party, names, field) -> Union[Tuple, None]: def fuzzy_search_and_return_result(self, party, names, field) -> Union[Tuple, None]:
skip = False skip = False
result = process.extract(query=self.get(field), choices=names, scorer=fuzz.token_set_ratio) result = process.extract(
query=self.get(field),
choices=[name.get("party_name") for name in names],
scorer=fuzz.token_set_ratio,
)
party_name, skip = self.process_fuzzy_result(result) party_name, skip = self.process_fuzzy_result(result)
if not party_name: if not party_name:
return None, skip return None, skip
# Get Party Docname from the list of dicts
party_name = find(names, lambda x: x["party_name"] == party_name).get("name")
return ( return (
party, party,
party_name, party_name,