Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/matomo-org/matomo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordiosmosis <diosmosis@users.noreply.github.com>2019-04-11 04:02:58 +0300
committerThomas Steur <tsteur@users.noreply.github.com>2019-04-11 04:02:58 +0300
commit12416e0e60d0792d5d84c688b64a6aab16f26c91 (patch)
tree0e731b21acc4d93fc17e3c3afdaf0ba34db08221 /plugins/Ecommerce
parent751fd191140048161a5844d1241d811e8ac0a847 (diff)
Display all product categories if present in the visitor log (#14083)
* Query and show all product categories not just the first in the visitor log. * Fix SQL + processing * Allow XML renderer to render array of simple values. * Add unit test for xml renderer. * Add second product category to fixture, update test files and update omnifixture. * Update some expected test files.
Diffstat (limited to 'plugins/Ecommerce')
-rw-r--r--plugins/Ecommerce/VisitorDetails.php39
-rw-r--r--plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems_AbandonedCarts__Goals.getItemsCategory_day.xml12
-rw-r--r--plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems_AbandonedCarts__Goals.getItemsCategory_week.xml12
-rw-r--r--plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems_LiveEcommerceStatusOrdered__Live.getLastVisitsDetails_day.xml14
-rw-r--r--plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems_Metadata_ItemsCategory__API.getProcessedReport_day.xml16
-rw-r--r--plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems_SegmentPageUrlContains__Goals.getItemsCategory_day.xml9
-rw-r--r--plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems_SegmentPageUrlContains__Goals.getItemsCategory_week.xml9
-rw-r--r--plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems__CustomVariables.getCustomVariables_day.xml107
-rw-r--r--plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems__Goals.getItemsCategory_day.xml9
-rw-r--r--plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems__Goals.getItemsCategory_week.xml9
-rw-r--r--plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems__Live.getLastVisitsDetails_day.xml36
-rw-r--r--plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems_schedrep_html_tables_and_graph__ScheduledReports.generateReport_week.original.html28
-rw-r--r--plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems_schedrep_html_tables_only__ScheduledReports.generateReport_week.original.html26
-rw-r--r--plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems_schedrep_in_csv__ScheduledReports.generateReport_week.original.csv1
-rw-r--r--plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems_schedrep_in_pdf_tables_only__ScheduledReports.generateReport_week.original.pdfbin591113 -> 591343 bytes
-rw-r--r--plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItemsmultipleDates__Goals.getItemsCategory_day.xml18
16 files changed, 284 insertions, 61 deletions
diff --git a/plugins/Ecommerce/VisitorDetails.php b/plugins/Ecommerce/VisitorDetails.php
index f04f38f01d..3dfd7eb3e6 100644
--- a/plugins/Ecommerce/VisitorDetails.php
+++ b/plugins/Ecommerce/VisitorDetails.php
@@ -24,6 +24,8 @@ use Piwik\View;
class VisitorDetails extends VisitorDetailsAbstract
{
+ const CATEGORY_COUNT = 5;
+
public function extendVisitorDetails(&$visitor)
{
$ecommerceMetrics = $this->queryEcommerceConversionsVisitorLifeTimeMetricsForVisitor($visitor['idSite'],
@@ -165,10 +167,22 @@ class VisitorDetails extends VisitorDetailsAbstract
*/
protected function queryEcommerceItemsForOrder($idVisit, $idOrder)
{
+ $categorySelects = [];
+ $categoryJoins = [];
+ for ($i = 0; $i < self::CATEGORY_COUNT; ++$i) {
+ $suffix = $i === 0 ? '' : $i;
+ $column = $i === 0 ? 'idaction_category' : ('idaction_category' . ($i + 1));
+ $categorySelects[] = 'log_action_category' . $suffix . '.name as itemCategory' . $suffix;
+ $categoryJoins[] = 'LEFT JOIN ' . Common::prefixTable('log_action') . " AS log_action_category$suffix
+ ON $column = log_action_category$suffix.idaction";
+ }
+ $categorySelects = implode(',', $categorySelects);
+ $categoryJoins = implode("\n", $categoryJoins);
+
$sql = "SELECT
log_action_sku.name as itemSKU,
log_action_name.name as itemName,
- log_action_category.name as itemCategory,
+ $categorySelects,
" . LogAggregator::getSqlRevenue('price') . " as price,
quantity as quantity
FROM " . Common::prefixTable('log_conversion_item') . "
@@ -176,8 +190,7 @@ class VisitorDetails extends VisitorDetailsAbstract
ON idaction_sku = log_action_sku.idaction
LEFT JOIN " . Common::prefixTable('log_action') . " AS log_action_name
ON idaction_name = log_action_name.idaction
- LEFT JOIN " . Common::prefixTable('log_action') . " AS log_action_category
- ON idaction_category = log_action_category.idaction
+ $categoryJoins
WHERE idvisit = ?
AND idorder = ?
AND deleted = 0
@@ -186,6 +199,26 @@ class VisitorDetails extends VisitorDetailsAbstract
$bind = array($idVisit, $idOrder);
$itemsDetails = Db::fetchAll($sql, $bind);
+
+ // create categories array for each item
+ foreach ($itemsDetails as &$item) {
+ $categories = [];
+ for ($i = 0; $i < self::CATEGORY_COUNT; ++$i) {
+ $suffix = $i === 0 ? '' : $i;
+ if (empty($item['itemCategory' . $suffix])) {
+ continue;
+ }
+
+ $categories[] = trim($item['itemCategory' . $suffix]);
+ }
+ $item['categories'] = array_filter($categories);
+
+ // remove itemCategotyN properties, except 'itemCategory' property for BC
+ for ($i = 1; $i < self::CATEGORY_COUNT; ++$i) {
+ unset($item['itemCategory' . $i]);
+ }
+ }
+
return $itemsDetails;
}
diff --git a/plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems_AbandonedCarts__Goals.getItemsCategory_day.xml b/plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems_AbandonedCarts__Goals.getItemsCategory_day.xml
index b27ccd173e..68c9d35408 100644
--- a/plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems_AbandonedCarts__Goals.getItemsCategory_day.xml
+++ b/plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems_AbandonedCarts__Goals.getItemsCategory_day.xml
@@ -13,6 +13,18 @@
<conversion_rate>100%</conversion_rate>
</row>
<row>
+ <label>second category</label>
+ <revenue>4000</revenue>
+ <quantity>4</quantity>
+ <nb_uniq_visitors>1</nb_uniq_visitors>
+ <nb_visits>2</nb_visits>
+ <nb_actions>2</nb_actions>
+ <abandoned_carts>2</abandoned_carts>
+ <avg_price>1000</avg_price>
+ <avg_quantity>2</avg_quantity>
+ <conversion_rate>100%</conversion_rate>
+ </row>
+ <row>
<label>Product Category not defined</label>
<revenue>1000.22</revenue>
<quantity>2</quantity>
diff --git a/plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems_AbandonedCarts__Goals.getItemsCategory_week.xml b/plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems_AbandonedCarts__Goals.getItemsCategory_week.xml
index b29f7fd16b..e3eefe60c0 100644
--- a/plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems_AbandonedCarts__Goals.getItemsCategory_week.xml
+++ b/plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems_AbandonedCarts__Goals.getItemsCategory_week.xml
@@ -13,6 +13,18 @@
<conversion_rate>100%</conversion_rate>
</row>
<row>
+ <label>second category</label>
+ <revenue>6000</revenue>
+ <quantity>6</quantity>
+ <nb_visits>3</nb_visits>
+ <nb_actions>3</nb_actions>
+ <sum_daily_nb_uniq_visitors>2</sum_daily_nb_uniq_visitors>
+ <abandoned_carts>3</abandoned_carts>
+ <avg_price>1000</avg_price>
+ <avg_quantity>2</avg_quantity>
+ <conversion_rate>100%</conversion_rate>
+ </row>
+ <row>
<label>Product Category not defined</label>
<revenue>1500.33</revenue>
<quantity>3</quantity>
diff --git a/plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems_LiveEcommerceStatusOrdered__Live.getLastVisitsDetails_day.xml b/plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems_LiveEcommerceStatusOrdered__Live.getLastVisitsDetails_day.xml
index cdc3b4ec4b..cdb138d70c 100644
--- a/plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems_LiveEcommerceStatusOrdered__Live.getLastVisitsDetails_day.xml
+++ b/plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems_LiveEcommerceStatusOrdered__Live.getLastVisitsDetails_day.xml
@@ -24,6 +24,9 @@
<itemCategory>Tools</itemCategory>
<price>100</price>
<quantity>2</quantity>
+ <categories>
+ <row>Tools</row>
+ </categories>
</row>
</itemDetails>
<icon>plugins/Morpheus/images/ecommerceOrder.png</icon>
@@ -269,7 +272,7 @@
</row>
<row>
<customVariablePageName5>_pkc</customVariablePageName5>
- <customVariablePageValue5>Category TWO LEFT in cart</customVariablePageValue5>
+ <customVariablePageValue5>[&quot;Category TWO LEFT in cart&quot;,&quot;second category&quot;]</customVariablePageValue5>
</row>
</customVariables>
<bandwidth_pretty>0 M</bandwidth_pretty>
@@ -286,6 +289,9 @@
<itemCategory>Electronics &amp; Cameras</itemCategory>
<price>10</price>
<quantity>1</quantity>
+ <categories>
+ <row>Electronics &amp; Cameras</row>
+ </categories>
</row>
<row>
<itemSKU>SKU IN ABANDONED CART ONE</itemSKU>
@@ -293,6 +299,8 @@
<itemCategory />
<price>500.11</price>
<quantity>1</quantity>
+ <categories>
+ </categories>
</row>
<row>
<itemSKU>SKU IN ABANDONED CART TWO</itemSKU>
@@ -300,6 +308,10 @@
<itemCategory>Category TWO LEFT in cart</itemCategory>
<price>1000</price>
<quantity>2</quantity>
+ <categories>
+ <row>Category TWO LEFT in cart</row>
+ <row>second category</row>
+ </categories>
</row>
</itemDetails>
<icon>plugins/Morpheus/images/ecommerceAbandonedCart.png</icon>
diff --git a/plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems_Metadata_ItemsCategory__API.getProcessedReport_day.xml b/plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems_Metadata_ItemsCategory__API.getProcessedReport_day.xml
index 9aa49fb80e..2ee0296d6e 100644
--- a/plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems_Metadata_ItemsCategory__API.getProcessedReport_day.xml
+++ b/plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems_Metadata_ItemsCategory__API.getProcessedReport_day.xml
@@ -105,6 +105,16 @@
<quantity>0</quantity>
<orders>0</orders>
</row>
+ <row>
+ <label>second category</label>
+ <nb_visits>2</nb_visits>
+ <avg_price>$ 0</avg_price>
+ <avg_quantity>0</avg_quantity>
+ <conversion_rate>0%</conversion_rate>
+ <revenue>$ 0</revenue>
+ <quantity>0</quantity>
+ <orders>0</orders>
+ </row>
</reportData>
<reportMetadata />
<reportTotal>
@@ -112,8 +122,8 @@
<quantity>18</quantity>
<price>4111.22</price>
<orders>8</orders>
- <nb_uniq_visitors>8</nb_uniq_visitors>
- <nb_visits>12</nb_visits>
- <nb_actions>17</nb_actions>
+ <nb_uniq_visitors>9</nb_uniq_visitors>
+ <nb_visits>14</nb_visits>
+ <nb_actions>19</nb_actions>
</reportTotal>
</result> \ No newline at end of file
diff --git a/plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems_SegmentPageUrlContains__Goals.getItemsCategory_day.xml b/plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems_SegmentPageUrlContains__Goals.getItemsCategory_day.xml
index 804665bad4..9d4fb1b262 100644
--- a/plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems_SegmentPageUrlContains__Goals.getItemsCategory_day.xml
+++ b/plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems_SegmentPageUrlContains__Goals.getItemsCategory_day.xml
@@ -81,4 +81,13 @@
<avg_quantity>0</avg_quantity>
<conversion_rate>0%</conversion_rate>
</row>
+ <row>
+ <label>second category</label>
+ <nb_uniq_visitors>1</nb_uniq_visitors>
+ <nb_visits>2</nb_visits>
+ <nb_actions>2</nb_actions>
+ <avg_price>0</avg_price>
+ <avg_quantity>0</avg_quantity>
+ <conversion_rate>0%</conversion_rate>
+ </row>
</result> \ No newline at end of file
diff --git a/plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems_SegmentPageUrlContains__Goals.getItemsCategory_week.xml b/plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems_SegmentPageUrlContains__Goals.getItemsCategory_week.xml
index b9b5688155..982f9a7258 100644
--- a/plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems_SegmentPageUrlContains__Goals.getItemsCategory_week.xml
+++ b/plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems_SegmentPageUrlContains__Goals.getItemsCategory_week.xml
@@ -81,4 +81,13 @@
<avg_quantity>0</avg_quantity>
<conversion_rate>0%</conversion_rate>
</row>
+ <row>
+ <label>second category</label>
+ <nb_visits>3</nb_visits>
+ <nb_actions>3</nb_actions>
+ <sum_daily_nb_uniq_visitors>2</sum_daily_nb_uniq_visitors>
+ <avg_price>0</avg_price>
+ <avg_quantity>0</avg_quantity>
+ <conversion_rate>0%</conversion_rate>
+ </row>
</result> \ No newline at end of file
diff --git a/plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems__CustomVariables.getCustomVariables_day.xml b/plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems__CustomVariables.getCustomVariables_day.xml
index caf12153e5..f4c932cd2c 100644
--- a/plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems__CustomVariables.getCustomVariables_day.xml
+++ b/plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems__CustomVariables.getCustomVariables_day.xml
@@ -155,57 +155,6 @@
</subtable>
</row>
<row>
- <label>_pkc</label>
- <nb_visits>7</nb_visits>
- <nb_actions>12</nb_actions>
- <slots>
- <row>
- <scope>page</scope>
- <index>5</index>
- </row>
- </slots>
- <segment>customVariableName==_pkc</segment>
- <subtable>
- <row>
- <label>Electronics &amp; Cameras</label>
- <nb_visits>3</nb_visits>
- <nb_actions>6</nb_actions>
- <price_viewed>814.37</price_viewed>
- </row>
- <row>
- <label>Value not defined</label>
- <nb_visits>3</nb_visits>
- <nb_actions>5</nb_actions>
- <price_viewed>710.4</price_viewed>
- </row>
- <row>
- <label>Category TWO LEFT in cart</label>
- <nb_visits>2</nb_visits>
- <nb_actions>2</nb_actions>
- </row>
- <row>
- <label>Multiple Category 1</label>
- <nb_visits>1</nb_visits>
- <nb_actions>1</nb_actions>
- </row>
- <row>
- <label>Multiple Category 2</label>
- <nb_visits>1</nb_visits>
- <nb_actions>1</nb_actions>
- </row>
- <row>
- <label>Multiple Category 4</label>
- <nb_visits>1</nb_visits>
- <nb_actions>1</nb_actions>
- </row>
- <row>
- <label>Multiple Category 5</label>
- <nb_visits>1</nb_visits>
- <nb_actions>1</nb_actions>
- </row>
- </subtable>
- </row>
- <row>
<label>_pkn</label>
<nb_visits>6</nb_visits>
<nb_actions>11</nb_actions>
@@ -268,6 +217,62 @@
</subtable>
</row>
<row>
+ <label>_pkc</label>
+ <nb_visits>5</nb_visits>
+ <nb_actions>10</nb_actions>
+ <slots>
+ <row>
+ <scope>page</scope>
+ <index>5</index>
+ </row>
+ </slots>
+ <segment>customVariableName==_pkc</segment>
+ <subtable>
+ <row>
+ <label>Electronics &amp; Cameras</label>
+ <nb_visits>3</nb_visits>
+ <nb_actions>6</nb_actions>
+ <price_viewed>814.37</price_viewed>
+ </row>
+ <row>
+ <label>Value not defined</label>
+ <nb_visits>3</nb_visits>
+ <nb_actions>5</nb_actions>
+ <price_viewed>710.4</price_viewed>
+ </row>
+ <row>
+ <label>Category TWO LEFT in cart</label>
+ <nb_visits>2</nb_visits>
+ <nb_actions>2</nb_actions>
+ </row>
+ <row>
+ <label>second category</label>
+ <nb_visits>2</nb_visits>
+ <nb_actions>2</nb_actions>
+ </row>
+ <row>
+ <label>Multiple Category 1</label>
+ <nb_visits>1</nb_visits>
+ <nb_actions>1</nb_actions>
+ </row>
+ <row>
+ <label>Multiple Category 2</label>
+ <nb_visits>1</nb_visits>
+ <nb_actions>1</nb_actions>
+ </row>
+ <row>
+ <label>Multiple Category 4</label>
+ <nb_visits>1</nb_visits>
+ <nb_actions>1</nb_actions>
+ </row>
+ <row>
+ <label>Multiple Category 5</label>
+ <nb_visits>1</nb_visits>
+ <nb_actions>1</nb_actions>
+ </row>
+ </subtable>
+ </row>
+ <row>
<label>VisitorName</label>
<nb_visits>2</nb_visits>
<nb_actions>9</nb_actions>
diff --git a/plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems__Goals.getItemsCategory_day.xml b/plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems__Goals.getItemsCategory_day.xml
index 4b0694c88f..ceefbebe55 100644
--- a/plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems__Goals.getItemsCategory_day.xml
+++ b/plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems__Goals.getItemsCategory_day.xml
@@ -81,4 +81,13 @@
<avg_quantity>0</avg_quantity>
<conversion_rate>0%</conversion_rate>
</row>
+ <row>
+ <label>second category</label>
+ <nb_uniq_visitors>1</nb_uniq_visitors>
+ <nb_visits>2</nb_visits>
+ <nb_actions>2</nb_actions>
+ <avg_price>0</avg_price>
+ <avg_quantity>0</avg_quantity>
+ <conversion_rate>0%</conversion_rate>
+ </row>
</result> \ No newline at end of file
diff --git a/plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems__Goals.getItemsCategory_week.xml b/plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems__Goals.getItemsCategory_week.xml
index 96af10c76f..7deaac25b8 100644
--- a/plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems__Goals.getItemsCategory_week.xml
+++ b/plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems__Goals.getItemsCategory_week.xml
@@ -90,4 +90,13 @@
<avg_quantity>0</avg_quantity>
<conversion_rate>0%</conversion_rate>
</row>
+ <row>
+ <label>second category</label>
+ <nb_visits>3</nb_visits>
+ <nb_actions>3</nb_actions>
+ <sum_daily_nb_uniq_visitors>2</sum_daily_nb_uniq_visitors>
+ <avg_price>0</avg_price>
+ <avg_quantity>0</avg_quantity>
+ <conversion_rate>0%</conversion_rate>
+ </row>
</result> \ No newline at end of file
diff --git a/plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems__Live.getLastVisitsDetails_day.xml b/plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems__Live.getLastVisitsDetails_day.xml
index 67f8b99cea..a5df52b03b 100644
--- a/plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems__Live.getLastVisitsDetails_day.xml
+++ b/plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems__Live.getLastVisitsDetails_day.xml
@@ -109,7 +109,7 @@
</row>
<row>
<customVariablePageName5>_pkc</customVariablePageName5>
- <customVariablePageValue5>Category TWO LEFT in cart</customVariablePageValue5>
+ <customVariablePageValue5>[&quot;Category TWO LEFT in cart&quot;,&quot;second category&quot;]</customVariablePageValue5>
</row>
</customVariables>
<bandwidth_pretty>0 M</bandwidth_pretty>
@@ -126,6 +126,9 @@
<itemCategory>Electronics &amp; Cameras</itemCategory>
<price>10</price>
<quantity>1</quantity>
+ <categories>
+ <row>Electronics &amp; Cameras</row>
+ </categories>
</row>
<row>
<itemSKU>SKU IN ABANDONED CART ONE</itemSKU>
@@ -133,6 +136,8 @@
<itemCategory />
<price>500.11</price>
<quantity>1</quantity>
+ <categories>
+ </categories>
</row>
<row>
<itemSKU>SKU IN ABANDONED CART TWO</itemSKU>
@@ -140,6 +145,10 @@
<itemCategory>Category TWO LEFT in cart</itemCategory>
<price>1000</price>
<quantity>2</quantity>
+ <categories>
+ <row>Category TWO LEFT in cart</row>
+ <row>second category</row>
+ </categories>
</row>
</itemDetails>
<icon>plugins/Morpheus/images/ecommerceAbandonedCart.png</icon>
@@ -369,6 +378,13 @@
<itemCategory>Multiple Category 1</itemCategory>
<price>500</price>
<quantity>2</quantity>
+ <categories>
+ <row>Multiple Category 1</row>
+ <row>Multiple Category 2</row>
+ <row>Electronics &amp; Cameras</row>
+ <row>Multiple Category 4</row>
+ <row>Multiple Category 5</row>
+ </categories>
</row>
<row>
<itemSKU>ANOTHER SKU HERE</itemSKU>
@@ -376,6 +392,8 @@
<itemCategory />
<price>100</price>
<quantity>6</quantity>
+ <categories>
+ </categories>
</row>
</itemDetails>
<icon>plugins/Morpheus/images/ecommerceOrder.png</icon>
@@ -401,6 +419,8 @@
<itemCategory />
<price>11.22</price>
<quantity>1</quantity>
+ <categories>
+ </categories>
</row>
<row>
<itemSKU>SKU2</itemSKU>
@@ -408,6 +428,9 @@
<itemCategory>Electronics &amp; Cameras</itemCategory>
<price>1500</price>
<quantity>1</quantity>
+ <categories>
+ <row>Electronics &amp; Cameras</row>
+ </categories>
</row>
</itemDetails>
<icon>plugins/Morpheus/images/ecommerceOrder.png</icon>
@@ -518,7 +541,7 @@
</row>
<row>
<customVariablePageName5>_pkc</customVariablePageName5>
- <customVariablePageValue5>Category TWO LEFT in cart</customVariablePageValue5>
+ <customVariablePageValue5>[&quot;Category TWO LEFT in cart&quot;,&quot;second category&quot;]</customVariablePageValue5>
</row>
</customVariables>
<bandwidth_pretty>0 M</bandwidth_pretty>
@@ -535,6 +558,9 @@
<itemCategory>Electronics &amp; Cameras</itemCategory>
<price>10</price>
<quantity>1</quantity>
+ <categories>
+ <row>Electronics &amp; Cameras</row>
+ </categories>
</row>
<row>
<itemSKU>SKU IN ABANDONED CART ONE</itemSKU>
@@ -542,6 +568,8 @@
<itemCategory />
<price>500.11</price>
<quantity>1</quantity>
+ <categories>
+ </categories>
</row>
<row>
<itemSKU>SKU IN ABANDONED CART TWO</itemSKU>
@@ -549,6 +577,10 @@
<itemCategory>Category TWO LEFT in cart</itemCategory>
<price>1000</price>
<quantity>2</quantity>
+ <categories>
+ <row>Category TWO LEFT in cart</row>
+ <row>second category</row>
+ </categories>
</row>
</itemDetails>
<icon>plugins/Morpheus/images/ecommerceAbandonedCart.png</icon>
diff --git a/plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems_schedrep_html_tables_and_graph__ScheduledReports.generateReport_week.original.html b/plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems_schedrep_html_tables_and_graph__ScheduledReports.generateReport_week.original.html
index 7acca626c8..34a8e3ee60 100644
--- a/plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems_schedrep_html_tables_and_graph__ScheduledReports.generateReport_week.original.html
+++ b/plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems_schedrep_html_tables_and_graph__ScheduledReports.generateReport_week.original.html
@@ -6087,7 +6087,7 @@
</h2>
<img alt=""
- src="data:image/png;base64,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"
+ src="data:image/png;base64,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"
height="200"
width="700"
margin="0 auto"/>
@@ -6331,6 +6331,32 @@
0%
</td>
</tr>
+
+ <tr style=";">
+ <td style="padding:17px 15px;;border-bottom:1px solid rgb(231,231,231);font-size: 15px;padding:17px 15px;color:#0d0d0d;font-family:-apple-system, BlinkMacSystemFont, &#039;Segoe UI&#039;, Roboto, Oxygen-Sans, Cantarell, &#039;Helvetica Neue&#039;, sans-serif;">
+ second category </td>
+ <td style="padding:17px 15px; text-align:right;;border-bottom:1px solid rgb(231,231,231);font-size: 15px;padding:17px 15px;color:#0d0d0d;font-family:-apple-system, BlinkMacSystemFont, &#039;Segoe UI&#039;, Roboto, Oxygen-Sans, Cantarell, &#039;Helvetica Neue&#039;, sans-serif;">
+ $ 0
+ </td>
+ <td style="padding:17px 15px; text-align:right;;border-bottom:1px solid rgb(231,231,231);font-size: 15px;padding:17px 15px;color:#0d0d0d;font-family:-apple-system, BlinkMacSystemFont, &#039;Segoe UI&#039;, Roboto, Oxygen-Sans, Cantarell, &#039;Helvetica Neue&#039;, sans-serif;">
+ 0
+ </td>
+ <td style="padding:17px 15px; text-align:right;;border-bottom:1px solid rgb(231,231,231);font-size: 15px;padding:17px 15px;color:#0d0d0d;font-family:-apple-system, BlinkMacSystemFont, &#039;Segoe UI&#039;, Roboto, Oxygen-Sans, Cantarell, &#039;Helvetica Neue&#039;, sans-serif;">
+ 0
+ </td>
+ <td style="padding:17px 15px; text-align:right;;border-bottom:1px solid rgb(231,231,231);font-size: 15px;padding:17px 15px;color:#0d0d0d;font-family:-apple-system, BlinkMacSystemFont, &#039;Segoe UI&#039;, Roboto, Oxygen-Sans, Cantarell, &#039;Helvetica Neue&#039;, sans-serif;">
+ 3
+ </td>
+ <td style="padding:17px 15px; text-align:right;;border-bottom:1px solid rgb(231,231,231);font-size: 15px;padding:17px 15px;color:#0d0d0d;font-family:-apple-system, BlinkMacSystemFont, &#039;Segoe UI&#039;, Roboto, Oxygen-Sans, Cantarell, &#039;Helvetica Neue&#039;, sans-serif;">
+ $ 0
+ </td>
+ <td style="padding:17px 15px; text-align:right;;border-bottom:1px solid rgb(231,231,231);font-size: 15px;padding:17px 15px;color:#0d0d0d;font-family:-apple-system, BlinkMacSystemFont, &#039;Segoe UI&#039;, Roboto, Oxygen-Sans, Cantarell, &#039;Helvetica Neue&#039;, sans-serif;">
+ 0
+ </td>
+ <td style="padding:17px 15px; text-align:right;;border-bottom:1px solid rgb(231,231,231);font-size: 15px;padding:17px 15px;color:#0d0d0d;font-family:-apple-system, BlinkMacSystemFont, &#039;Segoe UI&#039;, Roboto, Oxygen-Sans, Cantarell, &#039;Helvetica Neue&#039;, sans-serif;">
+ 0%
+ </td>
+ </tr>
</tbody>
</table>
<p style="width: 100%; text-align:center;">
diff --git a/plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems_schedrep_html_tables_only__ScheduledReports.generateReport_week.original.html b/plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems_schedrep_html_tables_only__ScheduledReports.generateReport_week.original.html
index d1d5b43b86..2009f11ddf 100644
--- a/plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems_schedrep_html_tables_only__ScheduledReports.generateReport_week.original.html
+++ b/plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems_schedrep_html_tables_only__ScheduledReports.generateReport_week.original.html
@@ -6009,6 +6009,32 @@
0%
</td>
</tr>
+
+ <tr style=";">
+ <td style="padding:17px 15px;;border-bottom:1px solid rgb(231,231,231);font-size: 15px;padding:17px 15px;color:#0d0d0d;font-family:-apple-system, BlinkMacSystemFont, &#039;Segoe UI&#039;, Roboto, Oxygen-Sans, Cantarell, &#039;Helvetica Neue&#039;, sans-serif;">
+ second category </td>
+ <td style="padding:17px 15px; text-align:right;;border-bottom:1px solid rgb(231,231,231);font-size: 15px;padding:17px 15px;color:#0d0d0d;font-family:-apple-system, BlinkMacSystemFont, &#039;Segoe UI&#039;, Roboto, Oxygen-Sans, Cantarell, &#039;Helvetica Neue&#039;, sans-serif;">
+ $ 0
+ </td>
+ <td style="padding:17px 15px; text-align:right;;border-bottom:1px solid rgb(231,231,231);font-size: 15px;padding:17px 15px;color:#0d0d0d;font-family:-apple-system, BlinkMacSystemFont, &#039;Segoe UI&#039;, Roboto, Oxygen-Sans, Cantarell, &#039;Helvetica Neue&#039;, sans-serif;">
+ 0
+ </td>
+ <td style="padding:17px 15px; text-align:right;;border-bottom:1px solid rgb(231,231,231);font-size: 15px;padding:17px 15px;color:#0d0d0d;font-family:-apple-system, BlinkMacSystemFont, &#039;Segoe UI&#039;, Roboto, Oxygen-Sans, Cantarell, &#039;Helvetica Neue&#039;, sans-serif;">
+ 0
+ </td>
+ <td style="padding:17px 15px; text-align:right;;border-bottom:1px solid rgb(231,231,231);font-size: 15px;padding:17px 15px;color:#0d0d0d;font-family:-apple-system, BlinkMacSystemFont, &#039;Segoe UI&#039;, Roboto, Oxygen-Sans, Cantarell, &#039;Helvetica Neue&#039;, sans-serif;">
+ 3
+ </td>
+ <td style="padding:17px 15px; text-align:right;;border-bottom:1px solid rgb(231,231,231);font-size: 15px;padding:17px 15px;color:#0d0d0d;font-family:-apple-system, BlinkMacSystemFont, &#039;Segoe UI&#039;, Roboto, Oxygen-Sans, Cantarell, &#039;Helvetica Neue&#039;, sans-serif;">
+ $ 0
+ </td>
+ <td style="padding:17px 15px; text-align:right;;border-bottom:1px solid rgb(231,231,231);font-size: 15px;padding:17px 15px;color:#0d0d0d;font-family:-apple-system, BlinkMacSystemFont, &#039;Segoe UI&#039;, Roboto, Oxygen-Sans, Cantarell, &#039;Helvetica Neue&#039;, sans-serif;">
+ 0
+ </td>
+ <td style="padding:17px 15px; text-align:right;;border-bottom:1px solid rgb(231,231,231);font-size: 15px;padding:17px 15px;color:#0d0d0d;font-family:-apple-system, BlinkMacSystemFont, &#039;Segoe UI&#039;, Roboto, Oxygen-Sans, Cantarell, &#039;Helvetica Neue&#039;, sans-serif;">
+ 0%
+ </td>
+ </tr>
</tbody>
</table>
<p style="width: 100%; text-align:center;">
diff --git a/plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems_schedrep_in_csv__ScheduledReports.generateReport_week.original.csv b/plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems_schedrep_in_csv__ScheduledReports.generateReport_week.original.csv
index 0bfb7af0e7..ffa9d0f4e2 100644
--- a/plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems_schedrep_in_csv__ScheduledReports.generateReport_week.original.csv
+++ b/plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems_schedrep_in_csv__ScheduledReports.generateReport_week.original.csv
@@ -426,6 +426,7 @@ Multiple Category 5,$ 1000,2,1,1,$ 500,2,100%
Product Category not defined,$ 611.22,7,2,4,$ 55.61,3.5,50%
Tools,$ 200,2,1,0,$ 100,2,0%
Category TWO LEFT in cart,$ 0,0,0,3,$ 0,0,0%
+second category,$ 0,0,0,3,$ 0,0,0%
Goals
nb_conversions,nb_visits_converted,revenue,conversion_rate
diff --git a/plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems_schedrep_in_pdf_tables_only__ScheduledReports.generateReport_week.original.pdf b/plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems_schedrep_in_pdf_tables_only__ScheduledReports.generateReport_week.original.pdf
index b8ba7011c8..5bdec4abeb 100644
--- a/plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems_schedrep_in_pdf_tables_only__ScheduledReports.generateReport_week.original.pdf
+++ b/plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems_schedrep_in_pdf_tables_only__ScheduledReports.generateReport_week.original.pdf
Binary files differ
diff --git a/plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItemsmultipleDates__Goals.getItemsCategory_day.xml b/plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItemsmultipleDates__Goals.getItemsCategory_day.xml
index 9cbda1326b..9008439c34 100644
--- a/plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItemsmultipleDates__Goals.getItemsCategory_day.xml
+++ b/plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItemsmultipleDates__Goals.getItemsCategory_day.xml
@@ -82,6 +82,15 @@
<avg_quantity>0</avg_quantity>
<conversion_rate>0%</conversion_rate>
</row>
+ <row>
+ <label>second category</label>
+ <nb_uniq_visitors>1</nb_uniq_visitors>
+ <nb_visits>2</nb_visits>
+ <nb_actions>2</nb_actions>
+ <avg_price>0</avg_price>
+ <avg_quantity>0</avg_quantity>
+ <conversion_rate>0%</conversion_rate>
+ </row>
</result>
<result date="2011-04-06">
<row>
@@ -111,6 +120,15 @@
<avg_quantity>0</avg_quantity>
<conversion_rate>0%</conversion_rate>
</row>
+ <row>
+ <label>second category</label>
+ <nb_uniq_visitors>1</nb_uniq_visitors>
+ <nb_visits>1</nb_visits>
+ <nb_actions>1</nb_actions>
+ <avg_price>0</avg_price>
+ <avg_quantity>0</avg_quantity>
+ <conversion_rate>0%</conversion_rate>
+ </row>
</result>
<result date="2011-04-07" />
<result date="2011-04-08" />