fix: Item Price and Add to Cart not showing on Website (#21903)
* fix: Item Price and Add to Cart not showing on Website
* fix: Use None as default argument
diff --git a/erpnext/shopping_cart/cart.py b/erpnext/shopping_cart/cart.py
index 4ac546e..d04c8c2 100644
--- a/erpnext/shopping_cart/cart.py
+++ b/erpnext/shopping_cart/cart.py
@@ -319,7 +319,7 @@
def set_price_list_and_rate(quotation, cart_settings):
"""set price list based on billing territory"""
- _set_price_list(quotation, cart_settings)
+ _set_price_list(cart_settings, quotation)
# reset values
quotation.price_list_currency = quotation.currency = \
@@ -334,23 +334,28 @@
# set it in cookies for using in product page
frappe.local.cookie_manager.set_cookie("selling_price_list", quotation.selling_price_list)
-def _set_price_list(quotation, cart_settings):
+def _set_price_list(cart_settings, quotation=None):
"""Set price list based on customer or shopping cart default"""
from erpnext.accounts.party import get_default_price_list
# check if customer price list exists
selling_price_list = None
- if quotation.party_name:
- selling_price_list = frappe.db.get_value('Customer', quotation.party_name, 'default_price_list')
+ if quotation and quotation.get("party_name"):
+ selling_price_list = frappe.db.get_value('Customer', quotation.get("party_name"), 'default_price_list')
# else check for territory based price list
if not selling_price_list:
selling_price_list = cart_settings.price_list
- if not selling_price_list and quotation.party_name:
- selling_price_list = get_default_price_list(frappe.get_doc("Customer", quotation.party_name))
+ party_name = quotation.get("party_name") if quotation else get_party().get("name")
- quotation.selling_price_list = selling_price_list
+ if not selling_price_list and party_name:
+ selling_price_list = get_default_price_list(frappe.get_doc("Customer", party_name))
+
+ if quotation:
+ quotation.selling_price_list = selling_price_list
+
+ return selling_price_list
def set_taxes(quotation, cart_settings):
"""set taxes based on billing territory"""
diff --git a/erpnext/shopping_cart/product_info.py b/erpnext/shopping_cart/product_info.py
index 21ee335..7c08f5b 100644
--- a/erpnext/shopping_cart/product_info.py
+++ b/erpnext/shopping_cart/product_info.py
@@ -4,7 +4,7 @@
from __future__ import unicode_literals
import frappe
-from erpnext.shopping_cart.cart import _get_cart_quotation
+from erpnext.shopping_cart.cart import _get_cart_quotation, _set_price_list
from erpnext.shopping_cart.doctype.shopping_cart_settings.shopping_cart_settings \
import get_shopping_cart_settings, show_quantity_in_website
from erpnext.utilities.product import get_price, get_qty_in_stock, get_non_stock_item_status
@@ -21,9 +21,11 @@
if not skip_quotation_creation:
cart_quotation = _get_cart_quotation()
+ selling_price_list = cart_quotation.get("selling_price_list") if cart_quotation else _set_price_list(cart_settings, None)
+
price = get_price(
item_code,
- cart_quotation.selling_price_list,
+ selling_price_list,
cart_settings.default_customer_group,
cart_settings.company
)
@@ -42,7 +44,7 @@
if product_info["price"]:
if frappe.session.user != "Guest":
- item = cart_quotation.get({"item_code": item_code})
+ item = cart_quotation.get({"item_code": item_code}) if cart_quotation else None
if item:
product_info["qty"] = item[0].qty