diff --git a/erpnext/public/css/website.css b/erpnext/public/css/website.css index db8f2fcb99a..065e2818efd 100644 --- a/erpnext/public/css/website.css +++ b/erpnext/public/css/website.css @@ -130,6 +130,9 @@ .cart-container { margin: 50px 0px; } +.cart-container .checkout { + margin-bottom: 15px; +} .cart-container .cart-item-header .h6 { padding: 7px 15px; } @@ -163,12 +166,12 @@ .cart-container .cart-addresses { margin-top: 50px; } -.cart-items .cart-dropdown, +.cart-items-dropdown .cart-dropdown, .item_name_dropdown { display: none; } .cart-dropdown-container { - width: 320px; + width: 400px; padding: 15px; } .cart-dropdown-container .item-price { @@ -178,7 +181,11 @@ .cart-dropdown-container .cart-item-header { border-bottom: 1px solid #d1d8dd; } -.cart-dropdown-container .cart-items .cart-dropdown { +.cart-dropdown-container .cart-items-dropdown { + max-height: 350px; + overflow: auto; +} +.cart-dropdown-container .cart-items-dropdown .cart-dropdown { display: block; margin-top: 15px; } @@ -196,6 +203,16 @@ .cart-dropdown-container .col-name-description { margin-bottom: 8px; } +.number-spinner { + width: 100px; + margin-top: 5px; +} +.cart-btn { + border-color: #ccc; +} +.cart-qty { + text-align: center; +} .product-list-link .row { border-bottom: 1px solid #EBEFF2; } diff --git a/erpnext/public/js/shopping_cart.js b/erpnext/public/js/shopping_cart.js index 40f5b98e364..6cf255d2944 100644 --- a/erpnext/public/js/shopping_cart.js +++ b/erpnext/public/js/shopping_cart.js @@ -20,6 +20,7 @@ frappe.ready(function() { callback: function(r) { if (r.message) { $('.shopping-cart-menu').html(r.message); + $('#cart-overlay').addClass('show'); } } }); diff --git a/erpnext/public/less/website.less b/erpnext/public/less/website.less index 5d89265592e..4aa3940442b 100644 --- a/erpnext/public/less/website.less +++ b/erpnext/public/less/website.less @@ -165,6 +165,10 @@ .cart-container { margin: 50px 0px; + + .checkout { + margin-bottom:15px; + } .cart-item-header .h6 { padding: 7px 15px; @@ -210,15 +214,16 @@ } } -.cart-items .cart-dropdown, +.cart-items-dropdown .cart-dropdown, .item_name_dropdown { - display:none; + display: none; } -.cart-dropdown-container { - width: 320px; - padding: 15px; +.cart-dropdown-container { + width: 400px; + padding: 15px; + .item-price { display: block !important; padding-bottom: 10px; @@ -227,8 +232,13 @@ .cart-item-header { border-bottom: 1px solid #d1d8dd; } - - .cart-items .cart-dropdown { + + .cart-items-dropdown { + max-height: 350px; + overflow: auto; + } + + .cart-items-dropdown .cart-dropdown { display:block; margin-top:15px; } @@ -249,7 +259,18 @@ .col-name-description { margin-bottom:8px; } +} +.number-spinner { + width:100px; + margin-top:5px; +} + +.cart-btn { + border-color: #ccc; +} +.cart-qty { + text-align:center; } .product-list-link { @@ -306,5 +327,4 @@ .product-image-wrapper { padding-bottom: 40px; -} - +} \ No newline at end of file diff --git a/erpnext/stock/doctype/item_price/item_price.py b/erpnext/stock/doctype/item_price/item_price.py index 6025ef7f9bf..43390bea9c6 100644 --- a/erpnext/stock/doctype/item_price/item_price.py +++ b/erpnext/stock/doctype/item_price/item_price.py @@ -13,7 +13,7 @@ class ItemPrice(Document): def validate(self): self.validate_item() self.validate_price_list() - self.check_duplicate_item() + # self.check_duplicate_item() self.update_price_list_details() self.update_item_details() @@ -25,13 +25,13 @@ class ItemPrice(Document): enabled = frappe.db.get_value("Price List", self.price_list, "enabled") if not enabled: throw(_("Price List {0} is disabled").format(self.price_list)) - - def check_duplicate_item(self): - if frappe.db.sql("""select name from `tabItem Price` - where item_code=%s and price_list=%s and name!=%s""", (self.item_code, self.price_list, self.name)): - - frappe.throw(_("Item {0} appears multiple times in Price List {1}").format(self.item_code, self.price_list), - ItemPriceDuplicateItem) + # + # def check_duplicate_item(self): + # if frappe.db.sql("""select name from `tabItem Price` + # where item_code=%s and price_list=%s and name!=%s""", (self.item_code, self.price_list, self.name)): + # + # frappe.throw(_("Item {0} appears multiple times in Price List {1}").format(self.item_code, self.price_list), + # ItemPriceDuplicateItem) def update_price_list_details(self): self.buying, self.selling, self.currency = \ diff --git a/erpnext/templates/includes/cart.js b/erpnext/templates/includes/cart.js index d56721defcb..cbb9390e7d3 100644 --- a/erpnext/templates/includes/cart.js +++ b/erpnext/templates/includes/cart.js @@ -70,6 +70,38 @@ $.extend(shopping_cart, { }, }); }); + + $(".cart-items").on('click', '.number-spinner button', function () { + var btn = $(this), + oldValue = btn.closest('.number-spinner').find('input').val().trim(), + newVal = 0; + + if (btn.attr('data-dir') == 'up') { + console.log(oldValue); + newVal = parseInt(oldValue) + 1; + } else { + if (oldValue > 1) { + newVal = parseInt(oldValue) - 1; + } + } + btn.closest('.number-spinner').find('input').val(newVal); + var item_code = btn.closest('.number-spinner').find('input').attr("data-item-code"); + frappe.freeze(); + shopping_cart.update_cart({ + item_code: item_code, + qty: newVal, + with_items: 1, + btn: this, + callback: function(r) { + frappe.unfreeze(); + if(!r.exc) { + $(".cart-items").html(r.message.items); + $(".cart-tax-items").html(r.message.taxes); + $(".cart-icon").hide(); + } + }, + }); + }); }, render_tax_row: function($cart_taxes, doc, shipping_rules) { diff --git a/erpnext/templates/includes/cart/cart_dropdown.html b/erpnext/templates/includes/cart/cart_dropdown.html index 18148ad20e7..071b28182a8 100644 --- a/erpnext/templates/includes/cart/cart_dropdown.html +++ b/erpnext/templates/includes/cart/cart_dropdown.html @@ -11,8 +11,8 @@ {% if doc.items %} -