From bb0be1699b994b415d10b5ef9690f402e848e939 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 (cherry picked from commit 9ace7d606cb5a63da8434200e9811d550de5cb5a) --- 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 907964720ff..f1862b31e7e 100644 --- a/erpnext/accounts/party.py +++ b/erpnext/accounts/party.py @@ -152,7 +152,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"] @@ -171,12 +171,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 3f0a4d9921855f2dc51e6236e81373ea8f501168 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 (cherry picked from commit e5fb871ef4a9e738e3a5ddc6d0e8eb2dfdd2ea16) --- 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 f1862b31e7e..de34a879db7 100644 --- a/erpnext/accounts/party.py +++ b/erpnext/accounts/party.py @@ -171,10 +171,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):