diff --git a/modules/ganalytics/header.tpl b/modules/ganalytics/header.tpl index a0922141..12bd4841 100755 --- a/modules/ganalytics/header.tpl +++ b/modules/ganalytics/header.tpl @@ -4,21 +4,21 @@ ga('require', 'ecommerce', 'ecommerce.js'); ga('ecommerce:addTransaction', { - 'id': '{$trans.id}', // Transaction ID. Required - 'affiliation': '{$trans.store}', // Affiliation or store name. - 'revenue': '{$trans.total}', // Grand Total. - 'shipping': '{$trans.shipping}', // Shipping. - 'tax': '{$trans.tax}' // Tax. + 'id': '{$trans.id}', // Transaction ID. Required + 'affiliation': '{$trans.store}', // Affiliation or store name. + 'revenue': '{$trans.total}', // Grand Total. + 'shipping': '{$trans.shipping}', // Shipping. + 'tax': '{$trans.tax}' // Tax. }); {foreach from=$items item=item} ga('ecommerce:addItem', { - 'id': '{$item.OrderId}', // Transaction ID. Required. - 'name': '{$item.Product}', // Product name. Required. - 'sku': 'DD23444', // SKU/code. - 'category': '{$item.Category}', // Category or variation. - 'price': '{$item.Price}', // Unit price. - 'quantity': '{$item.Quantity}' // Quantity. + 'id': '{$item.OrderId}', // Transaction ID. Required. + 'name': '{$item.Product}', // Product name. Required. + 'sku': 'DD23444', // SKU/code. + 'category': '{$item.Category}', // Category or variation. + 'price': '{$item.Price}', // Unit price. + 'quantity': '{$item.Quantity}' // Quantity. }); {/foreach} @@ -26,25 +26,27 @@ ga('ecommerce:clear'); {else} ga('require', 'ec'); - + {foreach from=$items item=item} - ga('ec:addProduct', { // Provide product details in an productFieldObject. - 'id': '{$item.SKU}', // Product ID (string). - 'name': '{$item.Product}', // Product name (string). - 'category': '{$item.Category}', // Product category (string). - 'brand': '{$item.Category}', // Product brand (string). - 'price': '{$item.Price}', // Product price (currency). - 'quantity': {$item.Quantity} // Product quantity (number). - }); + ga('ec:addProduct', { // Provide product details in an productFieldObject. + 'id': '{$item.SKU}', // Product ID (string). + 'name': '{$item.Product}', // Product name (string). + 'category': '{$item.Category}', // Product category (string). + 'brand': '{$item.Category}', // Product brand (string). + 'price': '{$item.Price}', // Product price (currency). + 'quantity': {$item.Quantity} // Product quantity (number). + }); {/foreach} - - ga('ec:setAction', 'purchase', { // Transaction details are provided in an actionFieldObject. - 'id': '{$trans.id}', // (Required) Transaction id (string). - 'affiliation': '{$trans.store}', // Affiliation (string). - 'revenue': '{$trans.total}', // Revenue (currency). - 'tax': '{$trans.tax}', // Tax (currency). - 'shipping': '{$trans.shipping}', // Shipping (currency). - }); + + {if $cookie->transCpt < 2} + ga('ec:setAction', 'purchase', { // Transaction details are provided in an actionFieldObject. + 'id': '{$trans.id}', // (Required) Transaction id (string). + 'affiliation': '{$trans.store}', // Affiliation (string). + 'revenue': '{$trans.total}', // Revenue (currency). + 'tax': '{$trans.tax}', // Tax (currency). + 'shipping': '{$trans.shipping}', // Shipping (currency). + }); + {/if} {literal} var re = new RegExp("([?&])(email=)[^&#]*", "g"); diff --git a/override/controllers/OrderConfirmationController.php b/override/controllers/OrderConfirmationController.php index 7ad5dd2b..d7bf25a8 100755 --- a/override/controllers/OrderConfirmationController.php +++ b/override/controllers/OrderConfirmationController.php @@ -42,6 +42,42 @@ class OrderConfirmationController extends OrderConfirmationControllerCore require_once _PS_ROOT_DIR_.'/modules/privatesales_delay/saledelay.php'; $products = SaleDelay::associateDelay($products); } + + $analytics_timeover = 0; + $transCpt = 0; + + // Cookie + global $cookie; + // Reset + if (isset($cookie->id_transaction)) { + if ($cookie->id_transaction != $order->id) { + unset($cookie->id_transaction); + unset($cookie->transCpt); + } + } + // Set counter + if (isset($cookie->transCpt)) { + $transCpt = (int) $cookie->transCpt; + } + $transCpt++; + if ($transCpt > 1) { + $analytics_timeover = 1; + } + // Check date order if page is refresh and not affect analytics + if ($analytics_timeover == 0) { + $timestamp_check = new DateTime(); + $timestamp_check->createFromFormat('Y-m-d H:i:s', $order->date_add); + $timestamp_check->add(new DateInterval('PT10M')); + $timestamp = $timestamp_check->getTimestamp(); + if (time() > $timestamp) { + $analytics_timeover = 1; + $transCpt++; + } + } + // Write cookie + $cookie->transCpt = $transCpt; + $cookie->id_transaction = $order->id; + $cookie->write(); self::$smarty->assign( array( @@ -49,7 +85,8 @@ class OrderConfirmationController extends OrderConfirmationControllerCore 'order' => $order, 'address_delivery' => $address_delivery, 'address_invoice' => $address_invoice, - 'products' => $products + 'products' => $products, + 'analytics_timeover' => $analytics_timeover, ) ); self::$smarty->display(_PS_THEME_DIR_.'order-confirmation.tpl');