diff --git a/.gitignore b/.gitignore index bae558e0e5b9aef88358c3ded5c7ab786d7849b1..94c3bf76a2bd17f5f27d25e40d5b204bef6a1182 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,7 @@ /.metadata /.project /.settings +/.vscode atlassian* /nbproject /robots.txt diff --git a/app/code/Magento/GoogleAnalytics/Block/Ga.php b/app/code/Magento/GoogleAnalytics/Block/Ga.php index cda0f198d011bce27f2d8dfad38d29b6db0f5a63..0afd6c51e967f58854ae3484a40ad8b713f28636 100644 --- a/app/code/Magento/GoogleAnalytics/Block/Ga.php +++ b/app/code/Magento/GoogleAnalytics/Block/Ga.php @@ -121,6 +121,7 @@ class Ga extends \Magento\Framework\View\Element\Template $result[] = "ga('require', 'ec', 'ec.js');"; foreach ($collection as $order) { + $result[] = "ga('set', 'currencyCode', '" . $order->getOrderCurrencyCode() . "');"; foreach ($order->getAllVisibleItems() as $item) { $result[] = sprintf( "ga('ec:addProduct', { @@ -131,7 +132,7 @@ class Ga extends \Magento\Framework\View\Element\Template });", $this->escapeJs($item->getSku()), $this->escapeJs($item->getName()), - $item->getBasePrice(), + $item->getPrice(), $item->getQtyOrdered() ); } @@ -146,9 +147,9 @@ class Ga extends \Magento\Framework\View\Element\Template });", $order->getIncrementId(), $this->escapeJs($this->_storeManager->getStore()->getFrontendName()), - $order->getBaseGrandTotal(), - $order->getBaseTaxAmount(), - $order->getBaseShippingAmount() + $order->getGrandTotal(), + $order->getTaxAmount(), + $order->getShippingAmount() ); $result[] = "ga('send', 'pageview');"; @@ -237,17 +238,18 @@ class Ga extends \Magento\Framework\View\Element\Template $result['products'][] = [ 'id' => $this->escapeJs($item->getSku()), 'name' => $this->escapeJs($item->getName()), - 'price' => $item->getBasePrice(), + 'price' => $item->getPrice(), 'quantity' => $item->getQtyOrdered(), ]; } $result['orders'][] = [ 'id' => $order->getIncrementId(), 'affiliation' => $this->escapeJs($this->_storeManager->getStore()->getFrontendName()), - 'revenue' => $order->getBaseGrandTotal(), - 'tax' => $order->getBaseTaxAmount(), - 'shipping' => $order->getBaseShippingAmount(), + 'revenue' => $order->getGrandTotal(), + 'tax' => $order->getTaxAmount(), + 'shipping' => $order->getShippingAmount(), ]; + $result['currency'] = $order->getOrderCurrencyCode(); } return $result; } diff --git a/app/code/Magento/GoogleAnalytics/Test/Unit/Block/GaTest.php b/app/code/Magento/GoogleAnalytics/Test/Unit/Block/GaTest.php index df535946bbd32d50e7bc835dc73f98c3b476b02d..63a97b99c1e482d096fc97702aee05438b7c74e3 100644 --- a/app/code/Magento/GoogleAnalytics/Test/Unit/Block/GaTest.php +++ b/app/code/Magento/GoogleAnalytics/Test/Unit/Block/GaTest.php @@ -103,6 +103,7 @@ class GaTest extends \PHPUnit\Framework\TestCase $this->storeManagerMock->expects($this->once())->method('getStore')->willReturn($this->storeMock); $expectedCode = "ga('require', 'ec', 'ec.js'); + ga('set', 'currencyCode', 'USD'); ga('ec:addProduct', { 'id': 'sku0', 'name': 'testName0', @@ -165,7 +166,8 @@ class GaTest extends \PHPUnit\Framework\TestCase 'price' => 0.00, 'quantity' => 1 ] - ] + ], + 'currency' => 'USD' ]; $this->gaBlock->setOrderIds([1, 2]); @@ -202,7 +204,7 @@ class GaTest extends \PHPUnit\Framework\TestCase ->getMock(); $orderItemMock->expects($this->once())->method('getSku')->willReturn('sku' . $i); $orderItemMock->expects($this->once())->method('getName')->willReturn('testName' . $i); - $orderItemMock->expects($this->once())->method('getBasePrice')->willReturn($i . '.00'); + $orderItemMock->expects($this->once())->method('getPrice')->willReturn($i . '.00'); $orderItemMock->expects($this->once())->method('getQtyOrdered')->willReturn($i + 1); $orderItems[] = $orderItemMock; } @@ -210,9 +212,10 @@ class GaTest extends \PHPUnit\Framework\TestCase $orderMock = $this->getMockBuilder(Order::class)->disableOriginalConstructor()->getMock(); $orderMock->expects($this->once())->method('getIncrementId')->willReturn(100); $orderMock->expects($this->once())->method('getAllVisibleItems')->willReturn($orderItems); - $orderMock->expects($this->once())->method('getBaseGrandTotal')->willReturn(10); - $orderMock->expects($this->once())->method('getBaseTaxAmount')->willReturn(2); - $orderMock->expects($this->once())->method('getBaseShippingAmount')->willReturn($orderItemCount); + $orderMock->expects($this->once())->method('getGrandTotal')->willReturn(10); + $orderMock->expects($this->once())->method('getTaxAmount')->willReturn(2); + $orderMock->expects($this->once())->method('getShippingAmount')->willReturn($orderItemCount); + $orderMock->expects($this->once())->method('getOrderCurrencyCode')->willReturn('USD'); return $orderMock; } diff --git a/app/code/Magento/GoogleAnalytics/view/frontend/web/js/google-analytics.js b/app/code/Magento/GoogleAnalytics/view/frontend/web/js/google-analytics.js index ab00f81410287ee15ff523da55e22270ffc71fb5..324881cdc502821ea4251d43bc0ef24abce95d1c 100644 --- a/app/code/Magento/GoogleAnalytics/view/frontend/web/js/google-analytics.js +++ b/app/code/Magento/GoogleAnalytics/view/frontend/web/js/google-analytics.js @@ -57,6 +57,9 @@ define([ if (config.ordersTrackingData) { ga('require', 'ec', 'ec.js'); + //Set currency code + ga('set', 'currencyCode', config.ordersTrackingData.currency); + // Collect product data for GA if (config.ordersTrackingData.products) { $.each(config.ordersTrackingData.products, function (index, value) {