[*] BO : Connected the first KPIs to real data

This commit is contained in:
Damien Metzger
2013-09-16 18:40:34 +02:00
parent 80b6d5a570
commit 8934f9c7ed
10 changed files with 251 additions and 13 deletions
@@ -1238,6 +1238,40 @@ class AdminOrdersControllerCore extends AdminController
parent::postProcess();
}
public function renderKpis()
{
$time = time();
$kpis = array();
$helper = new HelperKpi();
$helper->id = 'box-carts';
$helper->icon = 'icon-shopping-cart';
$helper->color = 'color2';
$helper->title = $this->l('Abandoned Carts');
$helper->subtitle = $this->l('Today');
if (Configuration::get('PS_KPI_ABANDONED_CARTS') !== false)
$helper->value = Configuration::get('PS_KPI_ABANDONED_CARTS');
if (Configuration::get('PS_KPI_ABANDONED_CARTS_EXPIRE') < $time)
$helper->source = $this->context->link->getAdminLink('AdminStats').'&ajax=1&action=getKpi&kpi=abandoned_cart';
$kpis[] = $helper->generate();
$helper = new HelperKpi();
$helper->id = 'box-average-order';
$helper->icon = 'icon-money';
$helper->color = 'color3';
$helper->title = $this->l('Average Order Value');
$helper->subtitle = $this->l('30 days');
if (Configuration::get('PS_KPI_AVG_ORDER_VALUE') !== false)
$helper->value = Configuration::get('PS_KPI_AVERAGE_ORDER_VALUE');
if (Configuration::get('PS_KPI_AVG_ORDER_VALUE_EXPIRE') < $time)
$helper->source = $this->context->link->getAdminLink('AdminStats').'&ajax=1&action=getKpi&kpi=average_order_value';
$kpis[] = $helper->generate();
$helper = new HelperKpiRow();
$helper->kpis = $kpis;
return $helper->generate();
}
public function renderView()
{
@@ -26,4 +26,38 @@
class AdminStatsControllerCore extends AdminStatsTabController
{
public function displayAjaxGetKpi()
{
$currency = new Currency(Configuration::get('PS_CURRENCY_DEFAULT'));
switch (Tools::getValue('kpi'))
{
case 'abandoned_cart':
$value = Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue('
SELECT COUNT(*)
FROM `'._DB_PREFIX_.'cart`
WHERE `date_add` BETWEEN "'.pSQL(date('Y-m-d')).' 00:00:00" AND "'.pSQL(date('Y-m-d')).' 23:59:59"
AND id_cart NOT IN (SELECT id_cart FROM `'._DB_PREFIX_.'orders`)
'.Shop::addSqlRestriction(Shop::SHARE_ORDER));
Configuration::updateValue('PS_KPI_ABANDONED_CARTS', $value);
Configuration::updateValue('PS_KPI_ABANDONED_CARTS_EXPIRE', strtotime('+10 min'));
break;
case 'average_order_value':
$row = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow('
SELECT
COUNT(`id_order`) as orders,
SUM(`total_paid_tax_excl` / `conversion_rate`) as total_paid_tax_excl
FROM `'._DB_PREFIX_.'orders`
WHERE `invoice_date` BETWEEN "'.pSQL(date('Y-m-d', strtotime('-31 day'))).' 00:00:00" AND "'.pSQL(date('Y-m-d', strtotime('-1 day'))).' 23:59:59"
'.Shop::addSqlRestriction(Shop::SHARE_ORDER));
$value = Tools::displayPrice($row['orders'] ? $row['total_paid_tax_excl'] / $row['orders'] : 0, $currency);
Configuration::updateValue('PS_KPI_AVG_ORDER_VALUE', $value);
Configuration::updateValue('PS_KPI_AVG_ORDER_VALUE_EXPIRE', strtotime(date('Y-m-d 00:00:00', strtotime('+1 day'))));
break;
default:
$value = false;
}
if ($value !== false)
die(Tools::jsonEncode(array('value' => $value)));
die(Tools::jsonEncode(array('has_errors' => true)));
}
}
@@ -36,6 +36,9 @@ abstract class AdminStatsTabControllerCore extends AdminPreferencesControllerCor
public function initContent()
{
if ($this->ajax)
return;
$this->initTabModuleList();
$this->addToolBarModulesListButton();
$this->toolbar_title = $this->l('Stats', 'AdminStatsTab');