From 4cd39aa14722f7a1c0584ef3c95459a404dafff3 Mon Sep 17 00:00:00 2001 From: Shllokkk <140623894+Shllokkk@users.noreply.github.com> Date: Wed, 3 Jun 2026 10:51:44 +0530 Subject: [PATCH 1/2] fix: remove ignore_permissions from get_party_details signature (#55491) (cherry picked from commit efb8336bf89b6bbf89d22e3e786e32571c798b1a) # Conflicts: # erpnext/accounts/doctype/sales_invoice/sales_invoice.py # erpnext/accounts/party.py --- .../doctype/sales_invoice/sales_invoice.py | 6 ++++- erpnext/accounts/party.py | 22 ++++++++++++++++--- .../request_for_quotation.py | 4 ++-- .../buying/doctype/supplier/test_supplier.py | 6 ++--- erpnext/controllers/buying_controller.py | 4 ++-- .../selling/doctype/customer/test_customer.py | 12 +++++----- .../customer_wise_item_price.py | 4 ++-- 7 files changed, 39 insertions(+), 19 deletions(-) diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py index 53e35e7407f..1041ee7172b 100644 --- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py +++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py @@ -23,12 +23,16 @@ from erpnext.accounts.doctype.tax_withholding_category.tax_withholding_category get_party_tax_withholding_details, ) from erpnext.accounts.general_ledger import get_round_off_account_and_cost_center +<<<<<<< HEAD from erpnext.accounts.party import ( CROSS_PARTY_FIELD_NO_MAP, get_due_date, get_party_account, get_party_details, ) +======= +from erpnext.accounts.party import _get_party_details, get_due_date, get_party_account +>>>>>>> efb8336bf8 (fix: remove ignore_permissions from get_party_details signature (#55491)) from erpnext.accounts.utils import ( cancel_exchange_gain_loss_journal, get_account_currency, @@ -2737,7 +2741,7 @@ def update_taxes( master_doctype=None, ): # Update Party Details - party_details = get_party_details( + party_details = _get_party_details( party=party, party_type=party_type, company=company, diff --git a/erpnext/accounts/party.py b/erpnext/accounts/party.py index 170a39582af..2192e40d637 100644 --- a/erpnext/accounts/party.py +++ b/erpnext/accounts/party.py @@ -74,6 +74,7 @@ class DuplicatePartyAccountError(frappe.ValidationError): @frappe.whitelist() def get_party_details( +<<<<<<< HEAD party=None, account=None, party_type="Customer", @@ -90,11 +91,26 @@ def get_party_details( shipping_address=None, dispatch_address=None, pos_profile=None, +======= + party: str | None = None, + account: str | None = None, + party_type: str = "Customer", + company: str | None = None, + posting_date: str | None = None, + bill_date: str | None = None, + price_list: str | None = None, + currency: str | None = None, + doctype: str | None = None, + fetch_payment_terms_template: bool = True, + party_address: str | None = None, + company_address: str | None = None, + shipping_address: str | None = None, + dispatch_address: str | None = None, + pos_profile: str | None = None, +>>>>>>> efb8336bf8 (fix: remove ignore_permissions from get_party_details signature (#55491)) ): if not party: return frappe._dict() - if not frappe.db.exists(party_type, party): - frappe.throw(_("{0}: {1} does not exists").format(party_type, party)) return _get_party_details( party, account, @@ -105,7 +121,7 @@ def get_party_details( price_list, currency, doctype, - ignore_permissions, + False, fetch_payment_terms_template, party_address, company_address, diff --git a/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py b/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py index c4ada801cd2..cc1919afd57 100644 --- a/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py +++ b/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py @@ -15,7 +15,7 @@ from frappe.utils import get_url from frappe.utils.print_format import download_pdf from frappe.utils.user import get_user_fullname -from erpnext.accounts.party import get_party_account_currency, get_party_details +from erpnext.accounts.party import _get_party_details, get_party_account_currency from erpnext.buying.utils import validate_for_items from erpnext.controllers.buying_controller import BuyingController from erpnext.stock.doctype.material_request.material_request import set_missing_values @@ -443,7 +443,7 @@ def make_supplier_quotation_from_rfq(source_name, target_doc=None, for_supplier= def postprocess(source, target_doc): if for_supplier: target_doc.supplier = for_supplier - args = get_party_details(for_supplier, party_type="Supplier", ignore_permissions=True) + args = _get_party_details(for_supplier, party_type="Supplier", ignore_permissions=True) target_doc.currency = args.currency or get_party_account_currency( "Supplier", for_supplier, source.company ) diff --git a/erpnext/buying/doctype/supplier/test_supplier.py b/erpnext/buying/doctype/supplier/test_supplier.py index e0a2a379ed8..69c81eb2e80 100644 --- a/erpnext/buying/doctype/supplier/test_supplier.py +++ b/erpnext/buying/doctype/supplier/test_supplier.py @@ -125,12 +125,12 @@ class TestSupplier(FrappeTestCase): self.assertEqual(supplier.country, "Greece") def test_party_details_tax_category(self): - from erpnext.accounts.party import get_party_details + from erpnext.accounts.party import _get_party_details frappe.delete_doc_if_exists("Address", "_Test Address With Tax Category-Billing") # Tax Category without Address - details = get_party_details("_Test Supplier With Tax Category", party_type="Supplier") + details = _get_party_details("_Test Supplier With Tax Category", party_type="Supplier") self.assertEqual(details.tax_category, "_Test Tax Category 1") address = frappe.get_doc( @@ -147,7 +147,7 @@ class TestSupplier(FrappeTestCase): ).insert() # Tax Category with Address - details = get_party_details("_Test Supplier With Tax Category", party_type="Supplier") + details = _get_party_details("_Test Supplier With Tax Category", party_type="Supplier") self.assertEqual(details.tax_category, "_Test Tax Category 2") # Rollback diff --git a/erpnext/controllers/buying_controller.py b/erpnext/controllers/buying_controller.py index 5b8df2cf767..1bbec4b5196 100644 --- a/erpnext/controllers/buying_controller.py +++ b/erpnext/controllers/buying_controller.py @@ -11,7 +11,7 @@ from frappe.utils.data import nowtime import erpnext from erpnext.accounts.doctype.accounting_dimension.accounting_dimension import get_dimensions from erpnext.accounts.doctype.budget.budget import validate_expense_against_budget -from erpnext.accounts.party import get_party_details +from erpnext.accounts.party import _get_party_details from erpnext.buying.utils import update_last_purchase_rate, validate_for_items from erpnext.controllers.accounts_controller import get_taxes_and_charges from erpnext.controllers.sales_and_purchase_return import get_rate_for_return @@ -165,7 +165,7 @@ class BuyingController(SubcontractingController): # set contact and address details for supplier, if they are not mentioned if getattr(self, "supplier", None): self.update_if_missing( - get_party_details( + _get_party_details( self.supplier, party_type="Supplier", doctype=self.doctype, diff --git a/erpnext/selling/doctype/customer/test_customer.py b/erpnext/selling/doctype/customer/test_customer.py index e6ed7acb508..cc6c55a37f1 100644 --- a/erpnext/selling/doctype/customer/test_customer.py +++ b/erpnext/selling/doctype/customer/test_customer.py @@ -67,7 +67,7 @@ class TestCustomer(FrappeTestCase): doc.delete() def test_party_details(self): - from erpnext.accounts.party import get_party_details + from erpnext.accounts.party import _get_party_details to_check = { "selling_price_list": None, @@ -91,7 +91,7 @@ class TestCustomer(FrappeTestCase): "Contact", "_Test Contact for _Test Customer-_Test Customer", "is_primary_contact", 1 ) - details = get_party_details("_Test Customer") + details = _get_party_details("_Test Customer") for key, value in to_check.items(): val = details.get(key) @@ -101,13 +101,13 @@ class TestCustomer(FrappeTestCase): self.assertEqual(value, val) def test_party_details_tax_category(self): - from erpnext.accounts.party import get_party_details + from erpnext.accounts.party import _get_party_details frappe.delete_doc_if_exists("Address", "_Test Address With Tax Category-Billing") frappe.delete_doc_if_exists("Address", "_Test Address With Tax Category-Shipping") # Tax Category without Address - details = get_party_details("_Test Customer With Tax Category") + details = _get_party_details("_Test Customer With Tax Category") self.assertEqual(details.tax_category, "_Test Tax Category 1") billing_address = frappe.get_doc( @@ -141,13 +141,13 @@ class TestCustomer(FrappeTestCase): # Tax Category from Billing Address settings.determine_address_tax_category_from = "Billing Address" settings.save() - details = get_party_details("_Test Customer With Tax Category") + details = _get_party_details("_Test Customer With Tax Category") self.assertEqual(details.tax_category, "_Test Tax Category 2") # Tax Category from Shipping Address settings.determine_address_tax_category_from = "Shipping Address" settings.save() - details = get_party_details("_Test Customer With Tax Category") + details = _get_party_details("_Test Customer With Tax Category") self.assertEqual(details.tax_category, "_Test Tax Category 3") # Rollback diff --git a/erpnext/selling/report/customer_wise_item_price/customer_wise_item_price.py b/erpnext/selling/report/customer_wise_item_price/customer_wise_item_price.py index 84da765d930..46056c94129 100644 --- a/erpnext/selling/report/customer_wise_item_price/customer_wise_item_price.py +++ b/erpnext/selling/report/customer_wise_item_price/customer_wise_item_price.py @@ -7,7 +7,7 @@ from frappe import _, qb from frappe.query_builder import Criterion from erpnext import get_default_company -from erpnext.accounts.party import get_party_details +from erpnext.accounts.party import _get_party_details def execute(filters=None): @@ -125,7 +125,7 @@ def get_data(filters=None): def get_customer_details(filters): - customer_details = get_party_details(party=filters.get("customer"), party_type="Customer") + customer_details = _get_party_details(party=filters.get("customer"), party_type="Customer") customer_details.update( {"company": get_default_company(), "price_list": customer_details.get("selling_price_list")} ) From 23919967f69ad94e0a9c35b8de6c66b9eb6297f9 Mon Sep 17 00:00:00 2001 From: diptanilsaha Date: Thu, 13 Aug 2026 13:01:53 +0530 Subject: [PATCH 2/2] chore: resolve conflicts --- .../doctype/sales_invoice/sales_invoice.py | 12 ++++-------- erpnext/accounts/party.py | 19 ------------------- 2 files changed, 4 insertions(+), 27 deletions(-) diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py index 1041ee7172b..59e72ced503 100644 --- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py +++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py @@ -23,16 +23,12 @@ from erpnext.accounts.doctype.tax_withholding_category.tax_withholding_category get_party_tax_withholding_details, ) from erpnext.accounts.general_ledger import get_round_off_account_and_cost_center -<<<<<<< HEAD from erpnext.accounts.party import ( CROSS_PARTY_FIELD_NO_MAP, + _get_party_details, get_due_date, get_party_account, - get_party_details, ) -======= -from erpnext.accounts.party import _get_party_details, get_due_date, get_party_account ->>>>>>> efb8336bf8 (fix: remove ignore_permissions from get_party_details signature (#55491)) from erpnext.accounts.utils import ( cancel_exchange_gain_loss_journal, get_account_currency, @@ -2270,9 +2266,9 @@ def make_delivery_note(source_name, target_doc=None): "cost_center": "cost_center", }, "postprocess": update_item, - "condition": lambda doc: doc.delivered_by_supplier != 1 - and not doc.dn_detail - and doc.qty - doc.delivered_qty > 0, + "condition": lambda doc: ( + doc.delivered_by_supplier != 1 and not doc.dn_detail and doc.qty - doc.delivered_qty > 0 + ), }, "Sales Taxes and Charges": {"doctype": "Sales Taxes and Charges", "reset_value": True}, "Sales Team": { diff --git a/erpnext/accounts/party.py b/erpnext/accounts/party.py index 2192e40d637..1747fe63480 100644 --- a/erpnext/accounts/party.py +++ b/erpnext/accounts/party.py @@ -74,7 +74,6 @@ class DuplicatePartyAccountError(frappe.ValidationError): @frappe.whitelist() def get_party_details( -<<<<<<< HEAD party=None, account=None, party_type="Customer", @@ -84,30 +83,12 @@ def get_party_details( price_list=None, currency=None, doctype=None, - ignore_permissions=False, fetch_payment_terms_template=True, party_address=None, company_address=None, shipping_address=None, dispatch_address=None, pos_profile=None, -======= - party: str | None = None, - account: str | None = None, - party_type: str = "Customer", - company: str | None = None, - posting_date: str | None = None, - bill_date: str | None = None, - price_list: str | None = None, - currency: str | None = None, - doctype: str | None = None, - fetch_payment_terms_template: bool = True, - party_address: str | None = None, - company_address: str | None = None, - shipping_address: str | None = None, - dispatch_address: str | None = None, - pos_profile: str | None = None, ->>>>>>> efb8336bf8 (fix: remove ignore_permissions from get_party_details signature (#55491)) ): if not party: return frappe._dict()