diff --git a/addons/event_sale/event_sale.py b/addons/event_sale/event_sale.py index 21682d18373..979d34060ed 100644 --- a/addons/event_sale/event_sale.py +++ b/addons/event_sale/event_sale.py @@ -47,7 +47,8 @@ class sale_order_line(osv.osv): def product_id_change(self, cr, uid, ids, pricelist, - product, qty=0, + product, + qty=0, uom=False, qty_uos=0, uos=False, @@ -88,7 +89,6 @@ class sale_order_line(osv.osv): 'event_id': order_line.event_id.id, 'event_ticket_id': order_line.event_ticket_id and order_line.event_ticket_id.id or None, } - print dic if order_line.event_ticket_id: if order_line.event_ticket_id.register_avail != 9999 and dic['nb_register'] > order_line.event_ticket_id.register_avail: diff --git a/addons/website_event/__openerp__.py b/addons/website_event/__openerp__.py index 3b763b51d20..9a697d6f7c4 100644 --- a/addons/website_event/__openerp__.py +++ b/addons/website_event/__openerp__.py @@ -15,6 +15,7 @@ OpenERP Blog 'views/website_event.xml', 'security/ir.model.access.csv', 'security/website_event.xml', + 'event_demo.xml', ], 'qweb': ['static/src/xml/*.xml'], 'demo': [], diff --git a/addons/website_event/event.py b/addons/website_event/event.py index a5ca4a05a5e..80dcb1971e9 100644 --- a/addons/website_event/event.py +++ b/addons/website_event/event.py @@ -17,9 +17,6 @@ class event(osv.osv): 'website_published': fields.boolean('Available in the website'), 'description_website': fields.html('Description for the website'), } - _defaults = { - 'website_published': True - } class event_event(osv.osv): _inherit = "event.event" @@ -33,3 +30,18 @@ class event_event(osv.osv): partner = self.browse(cr, uid, ids[0], context=context) if partner.address_id: return self.browse(cr, SUPERUSER_ID, ids[0], context=context).address_id.google_map_link() + +class sale_order_line(osv.osv): + _inherit = "sale.order.line" + + def _recalculate_product_values(self, cr, uid, ids, product_id=None, context=None): + if not ids: + return super(sale_order_line, self)._recalculate_product_values(cr, uid, ids, product_id, context=context) + + order_line = self.browse(cr, uid, ids[0], context=context) + product = product_id and self.pool.get('product.product').browse(cr, uid, product_id, context=context) or order_line.product_id + res = super(sale_order_line, self)._recalculate_product_values(cr, uid, ids, product.id, context=context) + if product.event_type_id and order_line.event_ticket_id and order_line.event_ticket_id.price != product.lst_price: + res.update({'price_unit': order_line.event_ticket_id.price}) + + return res diff --git a/addons/website_event/views/website_event.xml b/addons/website_event/views/website_event.xml index a4c120ffe81..8dcfb1dc794 100644 --- a/addons/website_event/views/website_event.xml +++ b/addons/website_event/views/website_event.xml @@ -15,7 +15,9 @@ diff --git a/addons/website_sale/controllers/main.py b/addons/website_sale/controllers/main.py index 569a6e724c9..675114b8cfa 100644 --- a/addons/website_sale/controllers/main.py +++ b/addons/website_sale/controllers/main.py @@ -146,13 +146,13 @@ class Ecommerce(http.Controller): values.update(order.onchange_pricelist_id(pricelist_id, None)['value']) order.write(values) for line in order.order_line: - self.add_product_to_cart(line.product_id.id, 0) + self.add_product_to_cart(order_line_id=line.id, number=0) - def add_product_to_cart(self, product_id=0, number=1, set_number=-1): + def add_product_to_cart(self, product_id=0, order_line_id=0, number=1, set_number=-1): order_line_obj = request.registry.get('sale.order.line') - user_obj = request.registry.get('res.users') product_id = product_id and int(product_id) or 0 + order = get_current_order() if not order: order = get_order() @@ -163,9 +163,18 @@ class Ecommerce(http.Controller): # values initialisation values = {} - order_line_ids = order_line_obj.search(request.cr, SUPERUSER_ID, [('order_id', '=', order.id), ('product_id', '=', product_id)], context=context) + + domain = [('order_id', '=', order.id)] + if order_line_id: + domain += [('id', '=', order_line_id)] + else: + domain += [('product_id', '=', product_id)] + + order_line_ids = order_line_obj.search(request.cr, SUPERUSER_ID, domain, context=context) if order_line_ids: order_line = order_line_obj.read(request.cr, SUPERUSER_ID, order_line_ids, [], context=context)[0] + if not product_id: + product_id = order_line['product_id'][0] if set_number >= 0: quantity = set_number else: @@ -178,10 +187,7 @@ class Ecommerce(http.Controller): quantity = 1 # change and record value - pricelist_id = order.pricelist_id and order.pricelist_id.id or False - vals = order_line_obj.product_id_change(request.cr, SUPERUSER_ID, [], pricelist_id, product_id, - partner_id=user_obj.browse(request.cr, SUPERUSER_ID, request.uid).partner_id.id, - context=context)['value'] + vals = order_line_obj._recalculate_product_values(request.cr, request.uid, order_line_ids, product_id, context=context) values.update(vals) values['product_uom_qty'] = quantity @@ -210,7 +216,7 @@ class Ecommerce(http.Controller): suggested_ids = [] if order: for line in order.order_line: - suggested_ids += [p.id for p in line.product_id.suggested_product_ids for line in order.order_line] + suggested_ids += [p.id for p in line.product_id and line.product_id.suggested_product_ids or [] for line in order.order_line] suggested_ids = prod_obj.search(request.cr, request.uid, [('id', 'in', suggested_ids)]) # select 3 random products suggested_products = [] @@ -224,21 +230,21 @@ class Ecommerce(http.Controller): }) return website.render("website_sale.mycart", values) - @http.route(['/shop//add_cart/', '/shop/add_cart/', '/shop/add_cart//', '/shop//add_cart//'], type='http', auth="public") - def add_cart(self, path=None, product_id=0, remove=None): - self.add_product_to_cart(product_id, number=(remove and -1 or 1)) + @http.route(['/shop//add_cart/', '/shop/add_cart/'], type='http', auth="public") + def add_cart(self, path=None, product_id=None, order_line_id=None, remove=None): + self.add_product_to_cart(product_id=product_id, order_line_id=order_line_id, number=(remove and -1 or 1)) if path: return werkzeug.utils.redirect("/shop/%s/" % path) else: return werkzeug.utils.redirect("/shop/") - @http.route(['/shop/remove_cart//', '/shop//remove_cart//'], type='http', auth="public") - def remove_cart(self, path=None, product_id=0): - return self.add_cart(product_id=product_id, path=path, remove=True) + @http.route(['/shop/remove_cart/', '/shop//remove_cart/'], type='http', auth="public") + def remove_cart(self, path=None, product_id=None, order_line_id=None): + return self.add_cart(product_id=product_id, order_line_id=order_line_id, path=path, remove=True) - @http.route(['/shop/set_cart///', '/shop//set_cart///'], type='http', auth="public") - def set_cart(self, path=None, product_id=0, set_number=0): - self.add_product_to_cart(product_id, set_number=set_number) + @http.route(['/shop/set_cart/', '/shop//set_cart/'], type='http', auth="public") + def set_cart(self, path=None, product_id=None, order_line_id=None, set_number=0): + self.add_product_to_cart(product_id=product_id, order_line_id=order_line_id, set_number=set_number) if path: return werkzeug.utils.redirect("/shop/%s/" % path) else: diff --git a/addons/website_sale/static/src/js/website_sale.js b/addons/website_sale/static/src/js/website_sale.js index e79b6a4341c..cf517314abe 100644 --- a/addons/website_sale/static/src/js/website_sale.js +++ b/addons/website_sale/static/src/js/website_sale.js @@ -6,7 +6,8 @@ $(document).ready(function () { $(".oe_website_sale .oe_mycart input.js_quantity").change(function () { var value = parseInt($(this).val()); if (!isNaN(value)) { - window.location.href = window.location.origin + window.location.pathname + 'set_cart/' + $(this).data('id') + '/' + value + '/'; + window.location.href = window.location.origin + window.location.pathname + + 'set_cart/?order_line_id=' + $(this).data('id') + '&set_number=' + value; } }); diff --git a/addons/website_sale/views/website_sale.xml b/addons/website_sale/views/website_sale.xml index 849109c33d9..0592054e23a 100644 --- a/addons/website_sale/views/website_sale.xml +++ b/addons/website_sale/views/website_sale.xml @@ -120,7 +120,7 @@ € @@ -147,7 +147,7 @@

- Add to cart + Add to cart