/** * Returns a datatable of Items SKU/name or categories and their metrics * If $abandonedCarts set to 1, will return items abandoned in carts. If set to 0, will return items ordered */ protected function getItems($recordName, $idSite, $period, $date, $abandonedCarts, $segment) { Piwik::checkUserHasViewAccess($idSite); $recordNameFinal = $recordName; if ($abandonedCarts) { $recordNameFinal = Archiver::getItemRecordNameAbandonedCart($recordName); } $archive = Archive::build($idSite, $period, $date, $segment); $dataTable = $archive->getDataTable($recordNameFinal); $dataTable->filter('Sort', array(Metrics::INDEX_ECOMMERCE_ITEM_REVENUE)); $this->enrichItemsTableWithViewMetrics($dataTable, $recordName, $idSite, $period, $date, $segment); // First rename the avg_price_viewed column $renameColumn = array(self::AVG_PRICE_VIEWED => 'avg_price'); $dataTable->queueFilter('ReplaceColumnNames', array($renameColumn)); $dataTable->queueFilter('ReplaceColumnNames'); $dataTable->queueFilter('ReplaceSummaryRowLabel'); $ordersColumn = 'orders'; if ($abandonedCarts) { $ordersColumn = 'abandoned_carts'; $dataTable->renameColumn(Metrics::INDEX_ECOMMERCE_ORDERS, $ordersColumn); } // Average price = sum product revenue / quantity $dataTable->queueFilter('ColumnCallbackAddColumnQuotient', array('avg_price', 'price', $ordersColumn, GoalManager::REVENUE_PRECISION)); // Average quantity = sum product quantity / abandoned carts $dataTable->queueFilter('ColumnCallbackAddColumnQuotient', array('avg_quantity', 'quantity', $ordersColumn, $precision = 1)); $dataTable->queueFilter('ColumnDelete', array('price')); // Product conversion rate = orders / visits $dataTable->queueFilter('ColumnCallbackAddColumnPercentage', array('conversion_rate', $ordersColumn, 'nb_visits', GoalManager::REVENUE_PRECISION)); return $dataTable; }
/** * Returns a datatable of Items SKU/name or categories and their metrics * If $abandonedCarts set to 1, will return items abandoned in carts. If set to 0, will return items ordered */ protected function getItems($recordName, $idSite, $period, $date, $abandonedCarts, $segment) { Piwik::checkUserHasViewAccess($idSite); $recordNameFinal = $recordName; if ($abandonedCarts) { $recordNameFinal = Archiver::getItemRecordNameAbandonedCart($recordName); } $archive = Archive::build($idSite, $period, $date, $segment); $dataTable = $archive->getDataTable($recordNameFinal); $this->enrichItemsTableWithViewMetrics($dataTable, $recordName, $idSite, $period, $date, $segment); // First rename the avg_price_viewed column $renameColumn = array(self::AVG_PRICE_VIEWED => 'avg_price'); $dataTable->filter('ReplaceColumnNames', array($renameColumn)); $dataTable->queueFilter('ReplaceColumnNames'); $dataTable->queueFilter('ReplaceSummaryRowLabel'); if ($abandonedCarts) { $ordersColumn = 'abandoned_carts'; $dataTable->renameColumn(Metrics::INDEX_ECOMMERCE_ORDERS, $ordersColumn); } $dataTable->queueFilter('ColumnDelete', array('price')); return $dataTable; }