Show qty in Shopping Cart
diff --git a/erpnext/public/css/erpnext.css b/erpnext/public/css/erpnext.css
index 697c078..a51472f 100644
--- a/erpnext/public/css/erpnext.css
+++ b/erpnext/public/css/erpnext.css
@@ -327,4 +327,3 @@
body[data-route="pos"] .collapse-btn {
cursor: pointer;
}
-
diff --git a/erpnext/shopping_cart/doctype/shopping_cart_settings/shopping_cart_settings.json b/erpnext/shopping_cart/doctype/shopping_cart_settings/shopping_cart_settings.json
index 75880ad..c5efdf8 100644
--- a/erpnext/shopping_cart/doctype/shopping_cart_settings/shopping_cart_settings.json
+++ b/erpnext/shopping_cart/doctype/shopping_cart_settings/shopping_cart_settings.json
@@ -1,5 +1,6 @@
{
"allow_copy": 0,
+ "allow_guest_to_view": 0,
"allow_import": 0,
"allow_rename": 0,
"beta": 0,
@@ -22,6 +23,7 @@
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
+ "in_global_search": 0,
"in_list_view": 1,
"in_standard_filter": 0,
"label": "Enable Shopping Cart",
@@ -49,6 +51,7 @@
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
+ "in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"length": 0,
@@ -75,6 +78,7 @@
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
+ "in_global_search": 0,
"in_list_view": 1,
"in_standard_filter": 0,
"label": "Company",
@@ -104,6 +108,7 @@
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
+ "in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"label": "Price List",
@@ -127,12 +132,42 @@
"bold": 0,
"collapsible": 0,
"columns": 0,
+ "fieldname": "show_quantity_in_website",
+ "fieldtype": "Check",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 0,
+ "in_standard_filter": 0,
+ "label": "Show Quantity in Website",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ },
+ {
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
"fieldname": "column_break_4",
"fieldtype": "Column Break",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
+ "in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"length": 0,
@@ -160,6 +195,7 @@
"ignore_user_permissions": 1,
"ignore_xss_filter": 0,
"in_filter": 0,
+ "in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"label": "Default Customer Group",
@@ -188,6 +224,7 @@
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
+ "in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"label": "Quotation Series",
@@ -216,6 +253,7 @@
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
+ "in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"label": "Checkout Settings",
@@ -244,6 +282,7 @@
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
+ "in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"label": "Enable Checkout",
@@ -274,6 +313,7 @@
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
+ "in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"label": "Payment Success Url",
@@ -303,6 +343,7 @@
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
+ "in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"length": 0,
@@ -330,6 +371,7 @@
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
+ "in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"label": "Payment Gateway Account",
@@ -349,18 +391,18 @@
"unique": 0
}
],
+ "has_web_view": 0,
"hide_heading": 0,
"hide_toolbar": 0,
"icon": "fa fa-shopping-cart",
"idx": 1,
"image_view": 0,
"in_create": 0,
- "in_dialog": 0,
"is_submittable": 0,
"issingle": 1,
"istable": 0,
"max_attachments": 0,
- "modified": "2017-01-17 05:30:29.333104",
+ "modified": "2017-03-21 15:42:08.574497",
"modified_by": "Administrator",
"module": "Shopping Cart",
"name": "Shopping Cart Settings",
@@ -376,7 +418,6 @@
"export": 0,
"if_owner": 0,
"import": 0,
- "is_custom": 0,
"permlevel": 0,
"print": 1,
"read": 1,
@@ -391,6 +432,7 @@
"quick_entry": 0,
"read_only": 0,
"read_only_onload": 0,
+ "show_name_in_global_search": 0,
"sort_order": "ASC",
"track_changes": 0,
"track_seen": 0
diff --git a/erpnext/shopping_cart/doctype/shopping_cart_settings/shopping_cart_settings.py b/erpnext/shopping_cart/doctype/shopping_cart_settings/shopping_cart_settings.py
index 6915ef5..4e24d2e 100644
--- a/erpnext/shopping_cart/doctype/shopping_cart_settings/shopping_cart_settings.py
+++ b/erpnext/shopping_cart/doctype/shopping_cart_settings/shopping_cart_settings.py
@@ -82,6 +82,9 @@
def is_cart_enabled():
return get_shopping_cart_settings().enabled
+def show_quantity_in_website():
+ return get_shopping_cart_settings().show_quantity_in_website
+
def check_shopping_cart_enabled():
if not get_shopping_cart_settings().enabled:
frappe.throw(_("You need to enable Shopping Cart"), ShoppingCartSetupError)
diff --git a/erpnext/shopping_cart/product.py b/erpnext/shopping_cart/product.py
index 24e4d42..d7afc3b 100644
--- a/erpnext/shopping_cart/product.py
+++ b/erpnext/shopping_cart/product.py
@@ -7,7 +7,7 @@
from frappe.utils import cint, fmt_money, flt
from erpnext.shopping_cart.cart import _get_cart_quotation
from erpnext.shopping_cart.doctype.shopping_cart_settings.shopping_cart_settings \
- import is_cart_enabled, get_shopping_cart_settings
+ import is_cart_enabled, get_shopping_cart_settings, show_quantity_in_website
from erpnext.accounts.doctype.pricing_rule.pricing_rule import get_pricing_rule_for_item
@frappe.whitelist(allow_guest=True)
@@ -19,7 +19,9 @@
qty = 0
cart_quotation = _get_cart_quotation()
template_item_code = frappe.db.get_value("Item", item_code, "variant_of")
- in_stock = get_qty_in_stock(item_code, template_item_code)
+ stock_status = get_qty_in_stock(item_code, template_item_code)
+ in_stock = stock_status.in_stock
+ stock_qty = stock_status.stock_qty
price = get_price(item_code, template_item_code, cart_quotation.selling_price_list)
if price:
@@ -36,9 +38,11 @@
return {
"price": price,
- "stock": in_stock,
+ "stock_qty": stock_qty,
+ "in_stock": in_stock,
"uom": frappe.db.get_value("Item", item_code, "stock_uom"),
- "qty": qty
+ "qty": qty,
+ "show_stock_qty": show_quantity_in_website()
}
def get_qty_in_stock(item_code, template_item_code):
@@ -47,15 +51,14 @@
warehouse = frappe.db.get_value("Item", template_item_code, "website_warehouse")
if warehouse:
- in_stock = frappe.db.sql("""select actual_qty from tabBin where
+ stock_qty = frappe.db.sql("""select actual_qty from tabBin where
item_code=%s and warehouse=%s""", (item_code, warehouse))
- if in_stock:
- in_stock = in_stock[0][0] > 0 and 1 or 0
+ if stock_qty:
+ in_stock = stock_qty[0][0] > 0 and 1 or 0
+ else:
+ in_stock = 0
- else:
- in_stock = 0
-
- return in_stock
+ return frappe._dict({"in_stock": in_stock, "stock_qty": stock_qty})
def get_price(item_code, template_item_code, price_list, qty=1):
if price_list:
diff --git a/erpnext/templates/includes/product_page.js b/erpnext/templates/includes/product_page.js
index 4b23d5e..b37f7aa 100644
--- a/erpnext/templates/includes/product_page.js
+++ b/erpnext/templates/includes/product_page.js
@@ -17,12 +17,16 @@
$(".item-price")
.html(r.message.price.formatted_price + " per " + r.message.uom);
- if(r.message.stock==0) {
- $(".item-stock").html("<div style='color: red'>Not in stock</div>");
+ if(r.message.in_stock==0) {
+ $(".item-stock").html("<div style='color: red'> <i class='fa fa-close'></i> Not in stock</div>");
}
- else if(r.message.stock==1) {
+ else if(r.message.in_stock==1) {
+ qty_display = "In stock"
+ if (r.message.show_stock_qty) {
+ qty_display = "Available ("+r.message.stock_qty+ " in stock)"
+ }
$(".item-stock").html("<div style='color: green'>\
- <i class='fa fa-check'></i> Available (in stock)</div>");
+ <i class='fa fa-check'></i> "+__(qty_display)+"</div>");
}
if(r.message.qty) {