From 7f0575c97422c40b76987b58e2bcf8e7b0f1652a Mon Sep 17 00:00:00 2001
From: diosmosis <benaka@piwik.pro>
Date: Tue, 2 Dec 2014 20:15:45 -0800
Subject: [PATCH] Make sure ecommerce item report visualizations set
 abandonedCart correctly as custom parameter AND in API request parameter.

---
 plugins/Goals/Reports/BaseEcommerceItem.php | 27 ++++++++++++---------
 1 file changed, 15 insertions(+), 12 deletions(-)

diff --git a/plugins/Goals/Reports/BaseEcommerceItem.php b/plugins/Goals/Reports/BaseEcommerceItem.php
index c2cf4c5639..bfc93fcdd5 100644
--- a/plugins/Goals/Reports/BaseEcommerceItem.php
+++ b/plugins/Goals/Reports/BaseEcommerceItem.php
@@ -88,7 +88,19 @@ abstract class BaseEcommerceItem extends BaseEcommerce
         $columnsOrdered = array('label', 'revenue', 'quantity', 'orders', 'avg_price', 'avg_quantity',
                                 'nb_visits', 'conversion_rate');
 
-        $abandonedCart = $this->isAbandonedCart();
+        // handle old case where viewDataTable is set to ecommerceOrder/ecommerceAbandonedCart. in this case, we
+        // set abandonedCarts accordingly and remove the ecommerceOrder/ecommerceAbandonedCart as viewDataTable.
+        $viewDataTable = Common::getRequestVar('viewDataTable', '');
+        if ($viewDataTable == 'ecommerceOrder') {
+            $view->config->custom_parameters['viewDataTable'] = 'table';
+            $abandonedCart = false;
+        } else if ($viewDataTable == 'ecommerceAbandonedCart') {
+            $view->config->custom_parameters['viewDataTable'] = 'table';
+            $abandonedCart = true;
+        } else {
+            $abandonedCart = $this->isAbandonedCart();
+        }
+
         if ($abandonedCart) {
             $columns['abandoned_carts'] = Piwik::translate('General_AbandonedCarts');
             $columns['revenue'] = Piwik::translate('Goals_LeftInCart', $columns['revenue']);
@@ -105,21 +117,12 @@ abstract class BaseEcommerceItem extends BaseEcommerce
             $view->config->custom_parameters['abandonedCarts'] = '0';
         }
 
+        $view->requestConfig->request_parameters_to_modify['abandonedCarts'] = $view->config->custom_parameters['abandonedCarts'];
+
         $translations = array_merge(array('label' => $this->name), $columns);
 
         $view->config->addTranslations($translations);
         $view->config->columns_to_display = $columnsOrdered;
-
-        // handle old case where viewDataTable is set to ecommerceOrder/ecommerceAbandonedCart. in this case, we
-        // set abandonedCarts accordingly and remove the ecommerceOrder/ecommerceAbandonedCart as viewDataTable.
-        $viewDataTable = Common::getRequestVar('viewDataTable', '');
-        if ($viewDataTable == 'ecommerceOrder') {
-            $view->config->custom_parameters['abandonedCarts'] = '0';
-            $view->config->custom_parameters['viewDataTable'] = 'table';
-        } else if ($viewDataTable == 'ecommerceAbandonedCart') {
-            $view->config->custom_parameters['abandonedCarts'] = '1';
-            $view->config->custom_parameters['viewDataTable'] = 'table';
-        }
     }
 
     private function isAbandonedCart()
-- 
GitLab