diff --git a/addons/delivery/delivery.py b/addons/delivery/delivery.py index 8f474461cf7..3827baaf1c5 100644 --- a/addons/delivery/delivery.py +++ b/addons/delivery/delivery.py @@ -194,9 +194,9 @@ class delivery_grid(osv.osv): for line in order.order_line: if not line.product_id or line.is_delivery: continue - total += line.price_subtotal or 0.0 weight += (line.product_id.weight or 0.0) * line.product_uom_qty volume += (line.product_id.volume or 0.0) * line.product_uom_qty + total = order.amount_total or 0.0 return self.get_price_from_picking(cr, uid, id, total,weight, volume, context=context) diff --git a/addons/website_sale/controllers/main.py b/addons/website_sale/controllers/main.py index ce23c38fa73..f258d142a4f 100644 --- a/addons/website_sale/controllers/main.py +++ b/addons/website_sale/controllers/main.py @@ -406,14 +406,16 @@ class Ecommerce(http.Controller): order.amount_total, request.website._render("website_sale.total", {'website_sale_order': order})] - @http.route(['/shop/set_cart_json/'], type='json', auth="public") + @http.route(['/shop/set_cart_json/'], type='json', auth="public", website=True, multilang=True) def set_cart_json(self, path=None, product_id=None, order_line_id=None, set_number=0, json=None): quantity = request.registry['website']._ecommerce_add_product_to_cart(request.cr, request.uid, product_id=product_id, order_line_id=order_line_id, set_number=set_number, context=request.context) order = self.get_order() return [quantity, - order.get_number_of_products()] + order.get_number_of_products(), + order.amount_total, + request.website._render("website_sale.total", {'website_sale_order': order})] @http.route(['/shop/checkout/'], type='http', auth="public", website=True, multilang=True) def checkout(self, **post): diff --git a/addons/website_sale/static/src/js/website_sale.js b/addons/website_sale/static/src/js/website_sale.js index 8298f6b22c0..f3ec024ca2a 100644 --- a/addons/website_sale/static/src/js/website_sale.js +++ b/addons/website_sale/static/src/js/website_sale.js @@ -20,18 +20,20 @@ $(document).ready(function () { .fadeIn(600); } - $(".oe_website_sale .oe_mycart input.js_quantity").change(function () { + $(".oe_website_sale .oe_mycart input.js_quantity").change(function (ev) { var $input = $(this); + var $link = $(ev.currentTarget); var value = parseInt($input.val(), 10); if (isNaN(value)) value = 0; openerp.jsonRpc("/shop/set_cart_json/", 'call', {'order_line_id': $input.data('id'), 'set_number': value}) .then(function (data) { - if (!data) { + if (!data[0]) { location.reload(); return; } set_my_cart_quantity(data[1]); - $input.val(data[0]); + $link.parents(".input-group:first").find(".js_quantity").val(data[0]); + $('#mycart_total').replaceWith(data[3]); }); }); diff --git a/addons/website_sale_delivery/models/sale_order.py b/addons/website_sale_delivery/models/sale_order.py index c6ac851d9d4..029190d35c8 100644 --- a/addons/website_sale_delivery/models/sale_order.py +++ b/addons/website_sale_delivery/models/sale_order.py @@ -82,10 +82,10 @@ class SaleOrder(orm.Model): carrier_id = delivery_id break order.write({'carrier_id': carrier_id}, context=context) - if carrier_id: - order.delivery_set(context=context) - else: - order._delivery_unset(context=context) + if carrier_id: + order.delivery_set(context=context) + else: + order._delivery_unset(context=context) return bool(carrier_id) diff --git a/addons/website_sale_delivery/models/website.py b/addons/website_sale_delivery/models/website.py index efd8b2233d2..0de2506d3dc 100644 --- a/addons/website_sale_delivery/models/website.py +++ b/addons/website_sale_delivery/models/website.py @@ -17,4 +17,5 @@ class Website(orm.Model): product_id=product_id, order_line_id=order_line_id, number=number, set_number=set_number, context=context) order = self.ecommerce_get_current_order(cr, uid, context=context) - return self.pool['sale.order']._check_carrier_quotation(cr, uid, order, force_carrier_id=None, context=context) and quantity or None + self.pool['sale.order']._check_carrier_quotation(cr, uid, order, force_carrier_id=None, context=context) and quantity or None + return quantity