From ecc305dd5929fbe1624e499cc355dd6058e21102 Mon Sep 17 00:00:00 2001 From: ViralKansodiya <141210323+viralkansodiya@users.noreply.github.com> Date: Sun, 12 Nov 2023 17:48:37 +0530 Subject: [PATCH] fix: add customer name and supplier name columns (#37557) fix: add customer name and supplier name columns --- .../address_and_contacts.py | 33 ++++++++++++++----- 1 file changed, 25 insertions(+), 8 deletions(-) diff --git a/erpnext/selling/report/address_and_contacts/address_and_contacts.py b/erpnext/selling/report/address_and_contacts/address_and_contacts.py index 4542bdff43..0a29d435a4 100644 --- a/erpnext/selling/report/address_and_contacts/address_and_contacts.py +++ b/erpnext/selling/report/address_and_contacts/address_and_contacts.py @@ -26,7 +26,7 @@ def execute(filters=None): def get_columns(filters): party_type = filters.get("party_type") party_type_value = get_party_group(party_type) - return [ + columns = [ "{party_type}:Link/{party_type}".format(party_type=party_type), "{party_value_type}::150".format(party_value_type=frappe.unscrub(str(party_type_value))), "Address Line 1", @@ -43,6 +43,15 @@ def get_columns(filters): "Email Id", "Is Primary Contact:Check", ] + if filters.get("party_type") == "Supplier" and frappe.db.get_single_value( + "Buying Settings", "supp_master_name" + ) == ["Naming Series", "Auto Name"]: + columns.insert(1, "Supplier Name:Data:150") + if filters.get("party_type") == "Customer" and frappe.db.get_single_value( + "Selling Settings", "cust_master_name" + ) == ["Naming Series", "Auto Name"]: + columns.insert(1, "Customer Name:Data:150") + return columns def get_data(filters): @@ -50,27 +59,33 @@ def get_data(filters): party = filters.get("party_name") party_group = get_party_group(party_type) - return get_party_addresses_and_contact(party_type, party, party_group) + return get_party_addresses_and_contact(party_type, party, party_group, filters) -def get_party_addresses_and_contact(party_type, party, party_group): +def get_party_addresses_and_contact(party_type, party, party_group, filters): data = [] - filters = None + query_filters = None party_details = frappe._dict() if not party_type: return [] if party: - filters = {"name": party} + query_filters = {"name": party} + if filters.get("party_type") in ["Customer", "Supplier"]: + field = filters.get("party_type").lower() + "_name" + else: + field = "partner_name" fetch_party_list = frappe.get_list( - party_type, filters=filters, fields=["name", party_group], as_list=True + party_type, filters=query_filters, fields=["name", party_group, field], as_list=True ) party_list = [d[0] for d in fetch_party_list] party_groups = {} + party_name_map = {} for d in fetch_party_list: party_groups[d[0]] = d[1] + party_name_map[d[0]] = d[2] for d in party_list: party_details.setdefault(d, frappe._dict()) @@ -84,6 +99,8 @@ def get_party_addresses_and_contact(party_type, party, party_group): if not any([addresses, contacts]): result = [party] result.append(party_groups[party]) + if filters.get("party_type") in ["Customer", "Supplier"]: + result.append(party_name_map[party]) result.extend(add_blank_columns_for("Contact")) result.extend(add_blank_columns_for("Address")) data.append(result) @@ -95,11 +112,12 @@ def get_party_addresses_and_contact(party_type, party, party_group): for idx in range(0, max_length): result = [party] result.append(party_groups[party]) + if filters.get("party_type") in ["Customer", "Supplier"]: + result.append(party_name_map[party]) address = addresses[idx] if idx < len(addresses) else add_blank_columns_for("Address") contact = contacts[idx] if idx < len(contacts) else add_blank_columns_for("Contact") result.extend(address) result.extend(contact) - data.append(result) return data @@ -115,7 +133,6 @@ def get_party_details(party_type, party_list, doctype, party_details): for d in records: details = party_details.get(d[0]) details.setdefault(frappe.scrub(doctype), []).append(d[1:]) - return party_details