From ac3b2ba0032eb40e61bb7cdc3eee398bb6563874 Mon Sep 17 00:00:00 2001 From: Karm Soni Date: Fri, 18 Apr 2025 13:24:47 +0530 Subject: [PATCH] fix: correct query for dispatch_address; remove unnecessary code; increase reusability; (cherry picked from commit 999ffe86a7ef3ca3227290817d5ee6d57ffb8819) --- erpnext/accounts/party.py | 69 ++++++++++--------------- erpnext/public/js/controllers/buying.js | 6 +-- erpnext/public/js/queries.js | 17 ------ 3 files changed, 27 insertions(+), 65 deletions(-) diff --git a/erpnext/accounts/party.py b/erpnext/accounts/party.py index ca63abeb282..ab00097e426 100644 --- a/erpnext/accounts/party.py +++ b/erpnext/accounts/party.py @@ -202,43 +202,44 @@ def set_address_details( billing_address_field = ( "customer_address" if party_type in ["Lead", "Prospect"] else party_type.lower() + "_address" ) + party_details[billing_address_field] = party_address or get_default_address(party_type, party.name) if doctype: party_details.update( get_fetch_values(doctype, billing_address_field, party_details[billing_address_field]) ) + # address display party_details.address_display = render_address( party_details[billing_address_field], check_permissions=not ignore_permissions ) - # shipping address + + # Initialize shipping address fields based on party type if party_type in ["Customer", "Lead"]: - party_details.shipping_address_name = shipping_address or get_party_shipping_address( - party_type, party.name - ) - party_details.shipping_address = render_address( - party_details["shipping_address_name"], check_permissions=not ignore_permissions - ) - if doctype: - party_details.update( - get_fetch_values(doctype, "shipping_address_name", party_details.shipping_address_name) + party_shipping_address_field = "shipping_address_name" + party_shipping_address_display_field = "shipping_address" + is_party_type_supplier = False + + else: # Default to Supplier + party_shipping_address_field = "dispatch_address" + party_shipping_address_display_field = "dispatch_address_display" + is_party_type_supplier = True + + party_details[party_shipping_address_field] = ( + dispatch_address if is_party_type_supplier else shipping_address + ) or get_party_shipping_address(party_type, party.name) + + party_details[party_shipping_address_display_field] = render_address( + party_details[party_shipping_address_field], check_permissions=not ignore_permissions + ) + + if doctype: + party_details.update( + get_fetch_values( + doctype, party_shipping_address_field, party_details[party_shipping_address_field] ) - - # dispatch address - elif party_type == "Supplier": - party_details.dispatch_address = dispatch_address or get_party_shipping_address( - party_type, party.name ) - party_details.dispatch_address_display = render_address( - party_details["dispatch_address"], check_permissions=not ignore_permissions - ) - - if doctype: - party_details.update( - get_fetch_values(doctype, "dispatch_address", party_details.dispatch_address) - ) - if company_address: party_details.company_address = company_address else: @@ -276,27 +277,9 @@ def set_address_details( **get_fetch_values(doctype, "shipping_address", party_details.billing_address), ) - if doctype != "Supplier Quotation": - if dispatch_address: - party_details.update( - dispatch_address=dispatch_address, - dispatch_address_display=render_address( - dispatch_address, check_permissions=not ignore_permissions - ), - **get_fetch_values(doctype, "dispatch_address", dispatch_address), - ) - - # dispatch address - if not already set - if not party_details.dispatch_address: - party_details.update( - dispatch_address=party_details.supplier_address, - dispatch_address_display=party_details.address_display, - **get_fetch_values(doctype, "dispatch_address", party_details.supplier_address), - ) - party_address, shipping_address = ( party_details.get(billing_address_field), - party_details.shipping_address_name, + party_details.get(party_shipping_address_field), ) party_details["tax_category"] = get_address_tax_category( diff --git a/erpnext/public/js/controllers/buying.js b/erpnext/public/js/controllers/buying.js index c14a0d0cdc2..2b854d649d8 100644 --- a/erpnext/public/js/controllers/buying.js +++ b/erpnext/public/js/controllers/buying.js @@ -57,11 +57,7 @@ erpnext.buying = { if(this.frm.get_field('dispatch_address')) { this.frm.set_query("dispatch_address", () => { - if(this.frm.doc.is_return){ - return erpnext.queries.company_address_query(this.frm.doc); - } - - return erpnext.queries.supplier_address_query(this.frm); + return erpnext.queries.address_query(this.frm.doc); }); } } diff --git a/erpnext/public/js/queries.js b/erpnext/public/js/queries.js index 801a78dad6a..63651ec8759 100644 --- a/erpnext/public/js/queries.js +++ b/erpnext/public/js/queries.js @@ -112,23 +112,6 @@ $.extend(erpnext.queries, { }; }, - supplier_address_query: function (frm) { - if (!frm.doc.supplier) { - frm.scroll_to_field("supplier"); - frappe.show_alert({ - message: __("Please set {0} first.", [ - __(frappe.meta.get_label(frm.doc.doctype, "supplier", frm.doc.name)), - ]), - indicator: "orange", - }); - } - - return { - query: "frappe.contacts.doctype.address.address.address_query", - filters: { link_doctype: "Supplier", link_name: frm.doc.supplier }, - }; - }, - dispatch_address_query: function (doc) { var filters = { link_doctype: "Company", link_name: doc.company || "" }; var is_drop_ship = doc.items.some((item) => item.delivered_by_supplier);