From 162ee61d4fd81cbe28d3779f086e2f9e277d21dd Mon Sep 17 00:00:00 2001 From: Christophe Matthieu Date: Mon, 30 Jun 2014 13:53:25 +0200 Subject: [PATCH 01/59] [FIX] website_sale: discount price is never hide --- addons/website_sale/static/src/css/website_sale.css | 8 ++++++++ addons/website_sale/static/src/css/website_sale.sass | 5 +++++ addons/website_sale/static/src/js/website_sale.js | 6 +++++- addons/website_sale/views/templates.xml | 4 ++-- 4 files changed, 20 insertions(+), 3 deletions(-) diff --git a/addons/website_sale/static/src/css/website_sale.css b/addons/website_sale/static/src/css/website_sale.css index 8055d0ad310..503c409cb0a 100644 --- a/addons/website_sale/static/src/css/website_sale.css +++ b/addons/website_sale/static/src/css/website_sale.css @@ -333,6 +333,14 @@ label.css_attribute_color.css_not_available { max-height: 500px; } +.oe_default_price { + display: none; +} + +.discount .oe_default_price { + display: block; +} + /* ---- Publish managment and options ---- */ #products_grid .css_options { display: none; diff --git a/addons/website_sale/static/src/css/website_sale.sass b/addons/website_sale/static/src/css/website_sale.sass index f08b635124c..b5726536955 100644 --- a/addons/website_sale/static/src/css/website_sale.sass +++ b/addons/website_sale/static/src/css/website_sale.sass @@ -282,6 +282,11 @@ label.css_attribute_color.css_not_available display: block max-height: 500px +.oe_default_price + display: none +.discount .oe_default_price + display: block + /* ---- Publish managment and options ---- */ #products_grid .css_options diff --git a/addons/website_sale/static/src/js/website_sale.js b/addons/website_sale/static/src/js/website_sale.js index ad7823ca6bb..642d5724a42 100644 --- a/addons/website_sale/static/src/js/website_sale.js +++ b/addons/website_sale/static/src/js/website_sale.js @@ -102,7 +102,11 @@ $('.oe_website_sale').each(function () { if (_.isEqual(variant_ids[k][1], values)) { $price.html(price_to_str(variant_ids[k][2])); $default_price.html(price_to_str(variant_ids[k][3])); - $default_price.parent().toggle(variant_ids[k][3]-variant_ids[k][2]>0.2); + if (variant_ids[k][3]-variant_ids[k][2]>0.2) { + $default_price.closest('.oe_website_sale').addClass("discount"); + } else { + $default_price.closest('.oe_website_sale').removeClass("discount"); + } product_id = variant_ids[k][0]; break; } diff --git a/addons/website_sale/views/templates.xml b/addons/website_sale/views/templates.xml index 2f7a248f8f6..daf6ac0e628 100644 --- a/addons/website_sale/views/templates.xml +++ b/addons/website_sale/views/templates.xml @@ -371,7 +371,7 @@ -
+
@@ -435,7 +435,7 @@ diff --git a/addons/website_sale/controllers/main.py b/addons/website_sale/controllers/main.py index a6bcd15f9e5..525530fca79 100644 --- a/addons/website_sale/controllers/main.py +++ b/addons/website_sale/controllers/main.py @@ -759,5 +759,30 @@ class website_sale(http.Controller): product = product_obj.browse(request.cr, request.uid, id, context=request.context) return product.write({'website_size_x': x, 'website_size_y': y}) + @http.route(['/shop/tracking_last_order'], type='json', auth="public") + def tracking_cart(self, **post): + """ return JS code for google analytics""" + cr, uid, context = request.cr, request.uid, request.context + ret = {} + sale_order_id = request.session.get('sale_last_order_id') + if sale_order_id: + order = request.registry['sale.order'].browse(cr, SUPERUSER_ID, sale_order_id, context=context) + ret['transaction'] = { + 'id': sale_order_id, + 'affiliation': order.company_id.name, + 'revenue': order.amount_total, + 'currency': order.currency_id.name + } + ret['lines'] = [] + for line in order.order_line: + if not line.is_delivery: + ret['lines'].append({ + 'id': line.order_id and line.order_id.id, + 'name': line.product_id.categ_id and line.product_id.categ_id.name or '-', + 'sku': line.product_id.id, + 'quantity': line.product_uom_qty, + 'price': line.price_unit, + }) + return ret # vim:expandtab:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/website_sale/static/src/js/website_sale_tracking.js b/addons/website_sale/static/src/js/website_sale_tracking.js new file mode 100644 index 00000000000..8ff5a5ac789 --- /dev/null +++ b/addons/website_sale/static/src/js/website_sale_tracking.js @@ -0,0 +1,67 @@ +$(document).ready(function () { + + // Watching a product + if ($("#product_detail.oe_website_sale").length) { + prod_id = $("input[name='product_id']").attr('value'); + vpv("/stats/ecom/product_view/" + prod_id); + } + + // Add a product into the cart + $(".oe_website_sale form[action='/shop/cart/update'] a.a-submit").on('click', function(o) { + prod_id = $("input[name='product_id']").attr('value'); + vpv("/stats/ecom/product_add_to_cart/" + prod_id); + }); + + // Start checkout + $(".oe_website_sale a[href='/shop/checkout']").on('click', function(o) { + vpv("/stats/ecom/customer_checkout"); + }); + + $(".oe_website_sale div.oe_cart a[href^='/web?redirect'][href$='/shop/checkout']").on('click', function(o) { + vpv("/stats/ecom/customer_signin"); + }); + + $(".oe_website_sale form[action='/shop/confirm_order'] a.a-submit").on('click', function(o) { + if ($("#top_menu > li > a[href='/web/login']").length){ + vpv("/stats/ecom/customer_signup"); + } + vpv("/stats/ecom/order_checkout"); + }); + + $(".oe_website_sale form[target='_self'] button[type=submit]").on('click', function(o) { + var method = $("#payment_method input[name=acquirer]:checked").nextAll("span:first").text(); + vpv("/stats/ecom/order_payment/" + method); + }); + + if ($(".oe_website_sale div.oe_cart div.oe_website_sale_tx_status").length) { + track_ga('require', 'ecommerce'); + + order_id = $(".oe_website_sale div.oe_cart div.oe_website_sale_tx_status").data("order-id"); + vpv("/stats/ecom/order_confirmed/" + order_id); + + openerp.jsonRpc("/shop/tracking_last_order/").then(function(o) { + track_ga('ecommerce:clear'); + + if (o.transaction && o.lines) { + track_ga('ecommerce:addTransaction', o.transaction); + _.forEach(o.lines, function(line) { + track_ga('ecommerce:addItem', line); + }); + } + track_ga('ecommerce:send'); + }); + } + + function vpv(page){ //virtual page view + track_ga('send', 'pageview', { + 'page': page, + 'title': document.title, + }); + } + + function track_ga() { + website_ga = this._gaw || function(){}; + website_ga.apply(this, arguments); + } + +}); diff --git a/addons/website_sale/views/templates.xml b/addons/website_sale/views/templates.xml index 28f4d3e2418..d36951ec8e6 100644 --- a/addons/website_sale/views/templates.xml +++ b/addons/website_sale/views/templates.xml @@ -335,6 +335,7 @@