Al tener una tienda en magento, siempre un problema tener que ir a refrescar manualmente las estadísticas del sitio para poder ver los reportes de ventas. La solución: crear un cron que haga esta tarea por nosotros cada determinado tiempo.
Lo primero es crear un archivo .php (en mi caso se llama refresh_statistics.php) en el directorio /shell de la instalación de Magento con el siguiente código:
<?
require_once 'abstract.php';
class Mage_Shell_Refresh_Statistics extends Mage_Shell_Abstract
{
protected function _getCodes()
{
$allcodes = array(
'0' => 'sales/report_order',
'1' => 'tax/report_tax',
'2' => 'sales/report_shipping',
'3' => 'sales/report_invoiced',
'4' => 'sales/report_refunded',
'5' => 'salesrule/report_rule',
'6' => 'sales/report_bestsellers',
);
return $allcodes;
}
/**
* Run script
*
*/
public function run()
{
if ($this->getArg('refresh')) {
$allCodes = $this->_getCodes();
try {
foreach ($allCodes as $collectionName) {
Mage::getResourceModel($collectionName)->aggregate();
}
Mage::getSingleton('adminhtml/session')->addSuccess(Mage::helper('adminhtml')->__('Lifetime statistics have been updated.'));
} catch (Mage_Core_Exception $e) {
Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
} catch (Exception $e) {
Mage::getSingleton('adminhtml/session')->addError(Mage::helper('adminhtml')->__('Unable to refresh lifetime statistics.'));
Mage::logException($e);
}
echo "Statistics Refreshed!";
} else {
echo $this->usageHelp();
}
}
/**
* Retrieve Usage Help Message
*
*/
public function usageHelp()
{
return <<<USAGE
Usage: php -f refresh_statistics.php -- [options]
refresh Resfresh the lifetime statistics
help This help
USAGE;
}
}
$shell = new Mage_Shell_Refresh_Statistics();
$shell->run();
El script esta hecho para no poder ser ejecutado desde el navegador, asi que no puedes usar curl para ejecutarlo. Se debe ejecutar de la siguiente forma
php -f PATH_A_TU_ARCHIVO -- refresh
En cpanel se veria algo como esto
Terminado! Ya tendremos siempre las estadísticas de magento actualizadas en todo momento.