[*] BO : Connected the first KPIs to real data
This commit is contained in:
@@ -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');
|
||||
|
||||
Reference in New Issue
Block a user