[FIX] website_sale: promo code
authorChristophe Matthieu <chm@openerp.com>
Wed, 22 Jan 2014 12:48:09 +0000 (13:48 +0100)
committerChristophe Matthieu <chm@openerp.com>
Wed, 22 Jan 2014 12:48:09 +0000 (13:48 +0100)
bzr revid: chm@openerp.com-20140122124809-9xha1jsnnxaod65z

addons/website_sale/controllers/main.py
addons/website_sale/models/website.py
addons/website_sale/tests/test_ui.py
addons/website_sale/views/website_sale.xml

index caa9aad..a54fa2a 100644 (file)
@@ -191,10 +191,9 @@ class Ecommerce(http.Controller):
         return [r["product_tmpl_id"][0] for r in att]
 
     @http.route(['/shop/pricelist'], type='http', auth="public", website=True, multilang=True)
-    def shop_promo(self, code, **post):
-        assert code, 'No pricelist code provided'
-        request.registry['website']._ecommerce_change_pricelist(request.cr, request.uid, code=code, context=request.context)
-        return request.redirect("/shop")
+    def shop_promo(self, promo=None, **post):
+        request.registry['website']._ecommerce_change_pricelist(request.cr, request.uid, code=promo, context=request.context)
+        return request.redirect("/shop/mycart/")
 
     @http.route([
         '/shop/',
@@ -708,6 +707,8 @@ class Ecommerce(http.Controller):
         order = request.registry['sale.order'].browse(cr, SUPERUSER_ID, sale_order_id, context=context)
         assert order.website_session_id == request.httprequest.session['website_session_id']
 
+        self._ecommerce_change_pricelist(cr, uid, None, context=None)
+
         return request.website.render("website_sale.confirmation", {'order': order})
 
     @http.route(['/shop/change_sequence/'], type='json', auth="public", website=True)
index 55ec48a..178cf6c 100644 (file)
@@ -51,7 +51,7 @@ class Website(orm.Model):
             values.update(order.onchange_pricelist_id(pricelist_id, None)['value'])
             order.write(values)
             for line in order.order_line:
-                self.add_product_to_cart(order_line_id=line.id, number=0)
+                self._ecommerce_add_product_to_cart(cr, uid, order_line_id=line.id, number=0)
 
     # ************************************************************
     # Ecommerce quotation management
@@ -65,7 +65,7 @@ class Website(orm.Model):
         order_line_obj = self.pool.get('sale.order.line')
         order_obj = self.pool.get('sale.order')
 
-        context = dict(context, pricelist=self.ecommerce_get_pricelist_id(cr, uid, None, context=context))
+        context = dict(context or {}, pricelist=self.ecommerce_get_pricelist_id(cr, uid, None, context=context))
 
         # set order_line_id and product_id
         if order_line_id:
@@ -122,6 +122,11 @@ class Website(orm.Model):
         else:
             order_line_id = order_line_obj.create(cr, SUPERUSER_ID, values, context=context)
             order_obj.write(cr, SUPERUSER_ID, [order.id], {'order_line': [(4, order_line_id)]}, context=context)
+
+        order = self.ecommerce_get_current_order(cr, uid, context=context)
+        if not order or not order.order_line:
+            self._ecommerce_change_pricelist(cr, uid, None, context=context)
+
         return quantity
 
     def _ecommerce_get_quotation_values(self, cr, uid, context=None):
index 68ba5dc..bda42eb 100644 (file)
@@ -2,5 +2,5 @@ import openerp.addons.website.tests.test_ui as test_ui
 
 def load_tests(loader, base, _):
     base.addTest(test_ui.WebsiteUiSuite(test_ui.full_path(__file__,'website_sale-sale_process-test.js'),
-        { 'action': 'website.action_website_homepage' }, 60.0))
+        { 'action': 'website.action_website_homepage' }, 120.0))
     return base
\ No newline at end of file
index 2c08a48..096d554 100644 (file)
                                   <div class="text-muted" t-field="line.product_id.description_sale"/>
                               </td>
                               <td class="text-center">
-                                 <del class="text-danger" t-if="line.product_id.lst_price &gt; line.price_unit">
-                                     <span t-field="line.product_id.lst_price" t-field-options='{
+                                <t t-if="abs(line.product_id.lst_price - line.price_unit) &gt; 0.2">
+                                  <del class="text-danger"
+                                    t-field="line.product_id.lst_price" t-field-options='{
                                          "widget": "monetary",
                                          "display_currency": "website.pricelist_id.currency_id"
-                                     }'/>
-                                 </del>
-                                 <span t-field="line.price_unit" t-field-options='{
+                                    }'/>&amp;nbsp;
+                                </t>
+                                <span t-field="line.price_unit"  t-field-options='{
                                      "widget": "monetary",
                                      "display_currency": "website.pricelist_id.currency_id"
                                  }'/>
                       <div class="text-muted" t-field="product.description_sale"/>
                   </td>
                   <td>
-                      <span t-field="product.lst_price" t-field-options='{
-                          "widget": "monetary",
-                          "display_currency": "website.pricelist_id.currency_id"
-                      }'/>
+                      <t t-if="abs(product.lst_price - product.price) &gt; 0.2">
+                        <del class="text-danger"
+                          t-field="product.lst_price" t-field-options='{
+                               "widget": "monetary",
+                               "display_currency": "website.pricelist_id.currency_id"
+                          }'/>&amp;nbsp;
+                      </t>
+                      <span t-field="product.price"  t-field-options='{
+                           "widget": "monetary",
+                           "display_currency": "website.pricelist_id.currency_id"
+                       }'/>
                   </td>
                   <td class="text-center">
                       <form action="/shop/add_cart/" method="post">
       <p>
           Have a coupon code? Fill in this field and apply.
       </p>
-      <form t-if="website_sale_order and website_sale_order.website_order_line" action="/shop/mycart/" method="post" class="mb32">
+      <form t-if="website_sale_order and website_sale_order.website_order_line" action="/shop/pricelist/" method="post" class="mb32">
           <div class="input-group">
               <input name="promo" class='form-control' type="text" placeholder="code..." t-att-value="website_sale_order.pricelist_id.code or ''"/>
               <div class="input-group-btn">