From 9ace7d606cb5a63da8434200e9811d550de5cb5a Mon Sep 17 00:00:00 2001 From: ChillarAnand Date: Mon, 7 Mar 2022 16:53:59 +0530 Subject: [PATCH 1/2] fix: Ignore missing customer group while fetching price list --- erpnext/accounts/party.py | 11 +++++------ erpnext/accounts/test_party.py | 16 ++++++++++++++++ 2 files changed, 21 insertions(+), 6 deletions(-) create mode 100644 erpnext/accounts/test_party.py diff --git a/erpnext/accounts/party.py b/erpnext/accounts/party.py index d6f6c5bcb69..b4438527158 100644 --- a/erpnext/accounts/party.py +++ b/erpnext/accounts/party.py @@ -151,7 +151,7 @@ def set_contact_details(party_details, party, party_type): def set_other_values(party_details, party, party_type): # copy - if party_type=="Customer": + if party_type == "Customer": to_copy = ["customer_name", "customer_group", "territory", "language"] else: to_copy = ["supplier_name", "supplier_group", "language"] @@ -170,12 +170,11 @@ def get_default_price_list(party): return party.default_price_list if party.doctype == "Customer": - price_list = frappe.get_cached_value("Customer Group", - party.customer_group, "default_price_list") - if price_list: - return price_list + try: + return frappe.get_cached_value("Customer Group", party.customer_group, "default_price_list") + except frappe.exceptions.DoesNotExistError: + return - return None def set_price_list(party_details, party, party_type, given_price_list, pos=None): # price list diff --git a/erpnext/accounts/test_party.py b/erpnext/accounts/test_party.py new file mode 100644 index 00000000000..f7a1a858ab8 --- /dev/null +++ b/erpnext/accounts/test_party.py @@ -0,0 +1,16 @@ +import frappe +from frappe.tests.utils import FrappeTestCase + +from erpnext.accounts.party import get_default_price_list + + +class PartyTestCase(FrappeTestCase): + def test_get_default_price_list_should_return_none_for_invalid_group(self): + customer = frappe.get_doc({ + 'doctype': 'Customer', + 'customer_name': 'test customer', + }).insert(ignore_permissions=True, ignore_mandatory=True) + customer.customer_group = None + customer.save() + price_list = get_default_price_list(customer) + assert price_list is None From e5fb871ef4a9e738e3a5ddc6d0e8eb2dfdd2ea16 Mon Sep 17 00:00:00 2001 From: Saqib Ansari Date: Thu, 10 Mar 2022 13:54:43 +0530 Subject: [PATCH 2/2] fix: Ignore missing customer group while fetching price list --- erpnext/accounts/party.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/erpnext/accounts/party.py b/erpnext/accounts/party.py index b4438527158..791cd1d5e99 100644 --- a/erpnext/accounts/party.py +++ b/erpnext/accounts/party.py @@ -170,10 +170,7 @@ def get_default_price_list(party): return party.default_price_list if party.doctype == "Customer": - try: - return frappe.get_cached_value("Customer Group", party.customer_group, "default_price_list") - except frappe.exceptions.DoesNotExistError: - return + return frappe.db.get_value("Customer Group", party.customer_group, "default_price_list") def set_price_list(party_details, party, party_type, given_price_list, pos=None):