Magento: Refrescar estadísticas automáticamente

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.