diff --git a/erpnext/e_commerce/doctype/e_commerce_settings/e_commerce_settings.py b/erpnext/e_commerce/doctype/e_commerce_settings/e_commerce_settings.py index cb61de1feef..9d3ca37abbf 100644 --- a/erpnext/e_commerce/doctype/e_commerce_settings/e_commerce_settings.py +++ b/erpnext/e_commerce/doctype/e_commerce_settings/e_commerce_settings.py @@ -4,7 +4,7 @@ from __future__ import unicode_literals import frappe -from frappe.utils import cint +from frappe.utils import cint, comma_and from frappe import _, msgprint from frappe.model.document import Document from frappe.utils import get_datetime, get_datetime_str, now_datetime diff --git a/erpnext/e_commerce/product_configurator/test_product_configurator.py b/erpnext/e_commerce/product_configurator/test_product_configurator.py index 0f619b5c67b..87f449fa50a 100644 --- a/erpnext/e_commerce/product_configurator/test_product_configurator.py +++ b/erpnext/e_commerce/product_configurator/test_product_configurator.py @@ -1,7 +1,8 @@ from __future__ import unicode_literals from bs4 import BeautifulSoup -import frappe, unittest +import frappe +import unittest from frappe.utils import get_html_for_route from erpnext.e_commerce.product_query import ProductQuery from erpnext.e_commerce.doctype.website_item.website_item import make_website_item diff --git a/erpnext/e_commerce/product_query.py b/erpnext/e_commerce/product_query.py index 9fb3c3a6d70..2c91a72c97c 100644 --- a/erpnext/e_commerce/product_query.py +++ b/erpnext/e_commerce/product_query.py @@ -56,9 +56,13 @@ class ProductQuery: # add price and availability info in results for item in result: product_info = get_product_info_for_website(item.item_code, skip_quotation_creation=True).get('product_info') - if product_info: - item.formatted_price = product_info['price'].get('formatted_price') if product_info['price'] else None - item.price = product_info['price'].get('price_list_rate') if product_info['price'] else None + if product_info and product_info['price']: + item.formatted_mrp = product_info['price'].get('formatted_mrp') + item.formatted_price = product_info['price'].get('formatted_price') + if item.formatted_mrp: + item.discount = product_info['price'].get('formatted_discount_percent') or \ + product_info['price'].get('formatted_discount_rate') + item.price = product_info['price'].get('price_list_rate') if self.settings.show_stock_availability: if item.get("website_warehouse"): diff --git a/erpnext/e_commerce/shopping_cart/cart.py b/erpnext/e_commerce/shopping_cart/cart.py index d10920d9364..1a1cbd707d2 100644 --- a/erpnext/e_commerce/shopping_cart/cart.py +++ b/erpnext/e_commerce/shopping_cart/cart.py @@ -10,7 +10,7 @@ from frappe.contacts.doctype.address.address import get_address_display from erpnext.e_commerce.doctype.e_commerce_settings.e_commerce_settings import get_shopping_cart_settings from frappe.utils.nestedset import get_root_of from erpnext.accounts.utils import get_account_name -from erpnext.utilities.product import get_qty_in_stock +from erpnext.utilities.product import get_web_item_qty_in_stock from frappe.contacts.doctype.contact.contact import get_contact_name @@ -93,7 +93,7 @@ def place_order(): item.item_code, ["website_warehouse", "is_stock_item"]) if is_stock_item: - item_stock = get_qty_in_stock(item.item_code, "website_warehouse") + item_stock = get_web_item_qty_in_stock(item.item_code, "website_warehouse") if not cint(item_stock.in_stock): throw(_("{1} Not in Stock").format(item.item_code)) if item.qty > item_stock.stock_qty[0][0]: diff --git a/erpnext/e_commerce/shopping_cart/product_info.py b/erpnext/e_commerce/shopping_cart/product_info.py index 6f6379b279a..1aeed199e5b 100644 --- a/erpnext/e_commerce/shopping_cart/product_info.py +++ b/erpnext/e_commerce/shopping_cart/product_info.py @@ -7,7 +7,7 @@ import frappe from erpnext.e_commerce.shopping_cart.cart import _get_cart_quotation, _set_price_list from erpnext.e_commerce.doctype.e_commerce_settings.e_commerce_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 +from erpnext.utilities.product import get_price, get_web_item_qty_in_stock, get_non_stock_item_status @frappe.whitelist(allow_guest=True) def get_product_info_for_website(item_code, skip_quotation_creation=False): @@ -29,8 +29,7 @@ def get_product_info_for_website(item_code, skip_quotation_creation=False): cart_settings.default_customer_group, cart_settings.company ) - - stock_status = get_qty_in_stock(item_code, "website_warehouse") + stock_status = get_web_item_qty_in_stock(item_code, "website_warehouse") product_info = { "price": price, diff --git a/erpnext/hub_node/doctype/marketplace_settings/marketplace_settings.py b/erpnext/hub_node/doctype/marketplace_settings/marketplace_settings.py index 91c7bf5850a..64bc49a7e9c 100644 --- a/erpnext/hub_node/doctype/marketplace_settings/marketplace_settings.py +++ b/erpnext/hub_node/doctype/marketplace_settings/marketplace_settings.py @@ -8,7 +8,6 @@ from frappe.model.document import Document from frappe.utils import add_years, now, get_datetime, get_datetime_str, cint from frappe import _ from frappe.frappeclient import FrappeClient -from erpnext.utilities.product import get_price, get_qty_in_stock from six import string_types class MarketplaceSettings(Document): diff --git a/erpnext/public/scss/shopping_cart.scss b/erpnext/public/scss/shopping_cart.scss index 1edfb81467e..719eceea264 100644 --- a/erpnext/public/scss/shopping_cart.scss +++ b/erpnext/public/scss/shopping_cart.scss @@ -59,7 +59,7 @@ body.product-page { .item-card-group-section { .card { - height: 360px; + height: 400px; align-items: center; justify-content: center; @@ -134,6 +134,11 @@ body.product-page { } .item-card { + padding: var(--padding-sm); + min-width: 300px; + } + + .wishlist-card { padding: var(--padding-sm); min-width: 260px; } @@ -624,8 +629,7 @@ body.product-page { .btn-explore-variants { box-shadow: none; margin: var(--margin-sm) 0; - margin-left: 18px; - max-height: 30px; // to avoid resizing on window resize + max-height: 50px; // to avoid resizing on window resize flex: none; transition: 0.3s ease; color: var(--orange-500); @@ -641,13 +645,12 @@ body.product-page { .btn-add-to-cart-list{ box-shadow: none; margin: var(--margin-sm) 0; - max-height: 30px; // to avoid resizing on window resize + max-height: 50px; // to avoid resizing on window resize flex: none; transition: 0.3s ease; } .not-added { - margin-left: 18px; color: var(--blue-500); background-color: white; border: 1px solid var(--blue-500); @@ -659,7 +662,6 @@ body.product-page { } .added-to-cart { - margin-left: 18px; background-color: var(--dark-green-400); color: white; border: 2px solid var(--green-300); diff --git a/erpnext/setup/doctype/item_group/item_group.py b/erpnext/setup/doctype/item_group/item_group.py index 5332ba18847..fc805a36303 100644 --- a/erpnext/setup/doctype/item_group/item_group.py +++ b/erpnext/setup/doctype/item_group/item_group.py @@ -10,7 +10,6 @@ from frappe.utils.nestedset import NestedSet from frappe.website.website_generator import WebsiteGenerator from frappe.website.render import clear_cache from frappe.website.doctype.website_slideshow.website_slideshow import get_slideshow -from erpnext.utilities.product import get_qty_in_stock from six.moves.urllib.parse import quote from erpnext.e_commerce.product_query import ProductQuery from erpnext.e_commerce.filters import ProductFiltersBuilder diff --git a/erpnext/templates/generators/item/item.html b/erpnext/templates/generators/item/item.html index b3e9eded1ac..bfcb4f340eb 100644 --- a/erpnext/templates/generators/item/item.html +++ b/erpnext/templates/generators/item/item.html @@ -39,7 +39,7 @@ {{ doc.website_content or '' }} - {% if shopping_cart.cart_settings.enable_reviews %} + {% if shopping_cart.cart_settings.enable_reviews and not doc.has_variants %} {% include "templates/generators/item/item_reviews.html"%} {% endif %} diff --git a/erpnext/templates/generators/item/item_add_to_cart.html b/erpnext/templates/generators/item/item_add_to_cart.html index 4c426d89301..4fd79ea4fc9 100644 --- a/erpnext/templates/generators/item/item_add_to_cart.html +++ b/erpnext/templates/generators/item/item_add_to_cart.html @@ -7,9 +7,21 @@