mirror of
https://github.com/frappe/erpnext.git
synced 2026-06-02 03:39:11 +00:00
Merge pull request #8076 from KanchanChauhan/qty-in-shopping-cart
Show qty in Shopping Cart
This commit is contained in:
@@ -1,5 +1,6 @@
|
|||||||
{
|
{
|
||||||
"allow_copy": 0,
|
"allow_copy": 0,
|
||||||
|
"allow_guest_to_view": 0,
|
||||||
"allow_import": 0,
|
"allow_import": 0,
|
||||||
"allow_rename": 0,
|
"allow_rename": 0,
|
||||||
"beta": 0,
|
"beta": 0,
|
||||||
@@ -22,6 +23,7 @@
|
|||||||
"ignore_user_permissions": 0,
|
"ignore_user_permissions": 0,
|
||||||
"ignore_xss_filter": 0,
|
"ignore_xss_filter": 0,
|
||||||
"in_filter": 0,
|
"in_filter": 0,
|
||||||
|
"in_global_search": 0,
|
||||||
"in_list_view": 1,
|
"in_list_view": 1,
|
||||||
"in_standard_filter": 0,
|
"in_standard_filter": 0,
|
||||||
"label": "Enable Shopping Cart",
|
"label": "Enable Shopping Cart",
|
||||||
@@ -49,6 +51,7 @@
|
|||||||
"ignore_user_permissions": 0,
|
"ignore_user_permissions": 0,
|
||||||
"ignore_xss_filter": 0,
|
"ignore_xss_filter": 0,
|
||||||
"in_filter": 0,
|
"in_filter": 0,
|
||||||
|
"in_global_search": 0,
|
||||||
"in_list_view": 0,
|
"in_list_view": 0,
|
||||||
"in_standard_filter": 0,
|
"in_standard_filter": 0,
|
||||||
"length": 0,
|
"length": 0,
|
||||||
@@ -75,6 +78,7 @@
|
|||||||
"ignore_user_permissions": 0,
|
"ignore_user_permissions": 0,
|
||||||
"ignore_xss_filter": 0,
|
"ignore_xss_filter": 0,
|
||||||
"in_filter": 0,
|
"in_filter": 0,
|
||||||
|
"in_global_search": 0,
|
||||||
"in_list_view": 1,
|
"in_list_view": 1,
|
||||||
"in_standard_filter": 0,
|
"in_standard_filter": 0,
|
||||||
"label": "Company",
|
"label": "Company",
|
||||||
@@ -104,6 +108,7 @@
|
|||||||
"ignore_user_permissions": 0,
|
"ignore_user_permissions": 0,
|
||||||
"ignore_xss_filter": 0,
|
"ignore_xss_filter": 0,
|
||||||
"in_filter": 0,
|
"in_filter": 0,
|
||||||
|
"in_global_search": 0,
|
||||||
"in_list_view": 0,
|
"in_list_view": 0,
|
||||||
"in_standard_filter": 0,
|
"in_standard_filter": 0,
|
||||||
"label": "Price List",
|
"label": "Price List",
|
||||||
@@ -122,6 +127,35 @@
|
|||||||
"set_only_once": 0,
|
"set_only_once": 0,
|
||||||
"unique": 0
|
"unique": 0
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"allow_on_submit": 0,
|
||||||
|
"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,
|
"allow_on_submit": 0,
|
||||||
"bold": 0,
|
"bold": 0,
|
||||||
@@ -133,6 +167,7 @@
|
|||||||
"ignore_user_permissions": 0,
|
"ignore_user_permissions": 0,
|
||||||
"ignore_xss_filter": 0,
|
"ignore_xss_filter": 0,
|
||||||
"in_filter": 0,
|
"in_filter": 0,
|
||||||
|
"in_global_search": 0,
|
||||||
"in_list_view": 0,
|
"in_list_view": 0,
|
||||||
"in_standard_filter": 0,
|
"in_standard_filter": 0,
|
||||||
"length": 0,
|
"length": 0,
|
||||||
@@ -160,6 +195,7 @@
|
|||||||
"ignore_user_permissions": 1,
|
"ignore_user_permissions": 1,
|
||||||
"ignore_xss_filter": 0,
|
"ignore_xss_filter": 0,
|
||||||
"in_filter": 0,
|
"in_filter": 0,
|
||||||
|
"in_global_search": 0,
|
||||||
"in_list_view": 0,
|
"in_list_view": 0,
|
||||||
"in_standard_filter": 0,
|
"in_standard_filter": 0,
|
||||||
"label": "Default Customer Group",
|
"label": "Default Customer Group",
|
||||||
@@ -188,6 +224,7 @@
|
|||||||
"ignore_user_permissions": 0,
|
"ignore_user_permissions": 0,
|
||||||
"ignore_xss_filter": 0,
|
"ignore_xss_filter": 0,
|
||||||
"in_filter": 0,
|
"in_filter": 0,
|
||||||
|
"in_global_search": 0,
|
||||||
"in_list_view": 0,
|
"in_list_view": 0,
|
||||||
"in_standard_filter": 0,
|
"in_standard_filter": 0,
|
||||||
"label": "Quotation Series",
|
"label": "Quotation Series",
|
||||||
@@ -216,6 +253,7 @@
|
|||||||
"ignore_user_permissions": 0,
|
"ignore_user_permissions": 0,
|
||||||
"ignore_xss_filter": 0,
|
"ignore_xss_filter": 0,
|
||||||
"in_filter": 0,
|
"in_filter": 0,
|
||||||
|
"in_global_search": 0,
|
||||||
"in_list_view": 0,
|
"in_list_view": 0,
|
||||||
"in_standard_filter": 0,
|
"in_standard_filter": 0,
|
||||||
"label": "Checkout Settings",
|
"label": "Checkout Settings",
|
||||||
@@ -244,6 +282,7 @@
|
|||||||
"ignore_user_permissions": 0,
|
"ignore_user_permissions": 0,
|
||||||
"ignore_xss_filter": 0,
|
"ignore_xss_filter": 0,
|
||||||
"in_filter": 0,
|
"in_filter": 0,
|
||||||
|
"in_global_search": 0,
|
||||||
"in_list_view": 0,
|
"in_list_view": 0,
|
||||||
"in_standard_filter": 0,
|
"in_standard_filter": 0,
|
||||||
"label": "Enable Checkout",
|
"label": "Enable Checkout",
|
||||||
@@ -274,6 +313,7 @@
|
|||||||
"ignore_user_permissions": 0,
|
"ignore_user_permissions": 0,
|
||||||
"ignore_xss_filter": 0,
|
"ignore_xss_filter": 0,
|
||||||
"in_filter": 0,
|
"in_filter": 0,
|
||||||
|
"in_global_search": 0,
|
||||||
"in_list_view": 0,
|
"in_list_view": 0,
|
||||||
"in_standard_filter": 0,
|
"in_standard_filter": 0,
|
||||||
"label": "Payment Success Url",
|
"label": "Payment Success Url",
|
||||||
@@ -303,6 +343,7 @@
|
|||||||
"ignore_user_permissions": 0,
|
"ignore_user_permissions": 0,
|
||||||
"ignore_xss_filter": 0,
|
"ignore_xss_filter": 0,
|
||||||
"in_filter": 0,
|
"in_filter": 0,
|
||||||
|
"in_global_search": 0,
|
||||||
"in_list_view": 0,
|
"in_list_view": 0,
|
||||||
"in_standard_filter": 0,
|
"in_standard_filter": 0,
|
||||||
"length": 0,
|
"length": 0,
|
||||||
@@ -330,6 +371,7 @@
|
|||||||
"ignore_user_permissions": 0,
|
"ignore_user_permissions": 0,
|
||||||
"ignore_xss_filter": 0,
|
"ignore_xss_filter": 0,
|
||||||
"in_filter": 0,
|
"in_filter": 0,
|
||||||
|
"in_global_search": 0,
|
||||||
"in_list_view": 0,
|
"in_list_view": 0,
|
||||||
"in_standard_filter": 0,
|
"in_standard_filter": 0,
|
||||||
"label": "Payment Gateway Account",
|
"label": "Payment Gateway Account",
|
||||||
@@ -349,18 +391,18 @@
|
|||||||
"unique": 0
|
"unique": 0
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
"has_web_view": 0,
|
||||||
"hide_heading": 0,
|
"hide_heading": 0,
|
||||||
"hide_toolbar": 0,
|
"hide_toolbar": 0,
|
||||||
"icon": "fa fa-shopping-cart",
|
"icon": "fa fa-shopping-cart",
|
||||||
"idx": 1,
|
"idx": 1,
|
||||||
"image_view": 0,
|
"image_view": 0,
|
||||||
"in_create": 0,
|
"in_create": 0,
|
||||||
"in_dialog": 0,
|
|
||||||
"is_submittable": 0,
|
"is_submittable": 0,
|
||||||
"issingle": 1,
|
"issingle": 1,
|
||||||
"istable": 0,
|
"istable": 0,
|
||||||
"max_attachments": 0,
|
"max_attachments": 0,
|
||||||
"modified": "2017-01-17 05:30:29.333104",
|
"modified": "2017-03-21 15:42:08.574497",
|
||||||
"modified_by": "Administrator",
|
"modified_by": "Administrator",
|
||||||
"module": "Shopping Cart",
|
"module": "Shopping Cart",
|
||||||
"name": "Shopping Cart Settings",
|
"name": "Shopping Cart Settings",
|
||||||
@@ -376,7 +418,6 @@
|
|||||||
"export": 0,
|
"export": 0,
|
||||||
"if_owner": 0,
|
"if_owner": 0,
|
||||||
"import": 0,
|
"import": 0,
|
||||||
"is_custom": 0,
|
|
||||||
"permlevel": 0,
|
"permlevel": 0,
|
||||||
"print": 1,
|
"print": 1,
|
||||||
"read": 1,
|
"read": 1,
|
||||||
@@ -391,6 +432,7 @@
|
|||||||
"quick_entry": 0,
|
"quick_entry": 0,
|
||||||
"read_only": 0,
|
"read_only": 0,
|
||||||
"read_only_onload": 0,
|
"read_only_onload": 0,
|
||||||
|
"show_name_in_global_search": 0,
|
||||||
"sort_order": "ASC",
|
"sort_order": "ASC",
|
||||||
"track_changes": 0,
|
"track_changes": 0,
|
||||||
"track_seen": 0
|
"track_seen": 0
|
||||||
|
|||||||
@@ -82,6 +82,9 @@ def get_shopping_cart_settings():
|
|||||||
def is_cart_enabled():
|
def is_cart_enabled():
|
||||||
return get_shopping_cart_settings().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():
|
def check_shopping_cart_enabled():
|
||||||
if not get_shopping_cart_settings().enabled:
|
if not get_shopping_cart_settings().enabled:
|
||||||
frappe.throw(_("You need to enable Shopping Cart"), ShoppingCartSetupError)
|
frappe.throw(_("You need to enable Shopping Cart"), ShoppingCartSetupError)
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import frappe
|
|||||||
from frappe.utils import cint, fmt_money, flt
|
from frappe.utils import cint, fmt_money, flt
|
||||||
from erpnext.shopping_cart.cart import _get_cart_quotation
|
from erpnext.shopping_cart.cart import _get_cart_quotation
|
||||||
from erpnext.shopping_cart.doctype.shopping_cart_settings.shopping_cart_settings \
|
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
|
from erpnext.accounts.doctype.pricing_rule.pricing_rule import get_pricing_rule_for_item
|
||||||
|
|
||||||
@frappe.whitelist(allow_guest=True)
|
@frappe.whitelist(allow_guest=True)
|
||||||
@@ -19,7 +19,9 @@ def get_product_info(item_code):
|
|||||||
qty = 0
|
qty = 0
|
||||||
cart_quotation = _get_cart_quotation()
|
cart_quotation = _get_cart_quotation()
|
||||||
template_item_code = frappe.db.get_value("Item", item_code, "variant_of")
|
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)
|
price = get_price(item_code, template_item_code, cart_quotation.selling_price_list)
|
||||||
|
|
||||||
if price:
|
if price:
|
||||||
@@ -36,9 +38,11 @@ def get_product_info(item_code):
|
|||||||
|
|
||||||
return {
|
return {
|
||||||
"price": price,
|
"price": price,
|
||||||
"stock": in_stock,
|
"stock_qty": stock_qty,
|
||||||
|
"in_stock": in_stock,
|
||||||
"uom": frappe.db.get_value("Item", item_code, "stock_uom"),
|
"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):
|
def get_qty_in_stock(item_code, template_item_code):
|
||||||
@@ -47,15 +51,14 @@ def get_qty_in_stock(item_code, template_item_code):
|
|||||||
warehouse = frappe.db.get_value("Item", template_item_code, "website_warehouse")
|
warehouse = frappe.db.get_value("Item", template_item_code, "website_warehouse")
|
||||||
|
|
||||||
if 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))
|
item_code=%s and warehouse=%s""", (item_code, warehouse))
|
||||||
if in_stock:
|
if stock_qty:
|
||||||
in_stock = in_stock[0][0] > 0 and 1 or 0
|
in_stock = stock_qty[0][0] > 0 and 1 or 0
|
||||||
|
else:
|
||||||
|
in_stock = 0
|
||||||
|
|
||||||
else:
|
return frappe._dict({"in_stock": in_stock, "stock_qty": stock_qty})
|
||||||
in_stock = 0
|
|
||||||
|
|
||||||
return in_stock
|
|
||||||
|
|
||||||
def get_price(item_code, template_item_code, price_list, qty=1):
|
def get_price(item_code, template_item_code, price_list, qty=1):
|
||||||
if price_list:
|
if price_list:
|
||||||
|
|||||||
@@ -17,12 +17,16 @@ frappe.ready(function() {
|
|||||||
$(".item-price")
|
$(".item-price")
|
||||||
.html(r.message.price.formatted_price + " per " + r.message.uom);
|
.html(r.message.price.formatted_price + " per " + r.message.uom);
|
||||||
|
|
||||||
if(r.message.stock==0) {
|
if(r.message.in_stock==0) {
|
||||||
$(".item-stock").html("<div style='color: red'>Not in stock</div>");
|
$(".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'>\
|
$(".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) {
|
if(r.message.qty) {
|
||||||
|
|||||||
Reference in New Issue
Block a user