[FIX] website_sale, website_sale_delivery, delivery: price computation on quantity change

bzr revid: dle@openerp.com-20140425152541-qiabb4sa7y2skgql
This commit is contained in:
Denis Ledoux 2014-04-25 17:25:41 +02:00
parent 22edf72dc1
commit b54e49b291
5 changed files with 16 additions and 11 deletions

View File

@ -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)

View File

@ -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):

View File

@ -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]);
});
});

View File

@ -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)

View File

@ -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