*/ class Mage_Sales_Model_Resource_Report_Shipping_Collection_Order extends Mage_Sales_Model_Resource_Report_Collection_Abstract { /** * Period format * * @var string */ protected $_periodFormat; /** * Selected columns * * @var array */ protected $_selectedColumns = array(); /** * Initialize custom resource model * */ public function __construct() { parent::_construct(); $this->setModel('adminhtml/report_item'); $this->_resource = Mage::getResourceModel('sales/report')->init('sales/shipping_aggregated_order'); $this->setConnection($this->getResource()->getReadConnection()); } /** * Get selected columns * * @return array */ protected function _getSelectedColumns() { $adapter = $this->getConnection(); if ('month' == $this->_period) { $this->_periodFormat = $adapter->getDateFormatSql('period', '%Y-%m'); } elseif ('year' == $this->_period) { $this->_periodFormat = $adapter->getDateExtractSql('period', Varien_Db_Adapter_Interface::INTERVAL_YEAR); } else { $this->_periodFormat = $adapter->getDateFormatSql('period', '%Y-%m-%d'); } if (!$this->isTotals() && !$this->isSubTotals()) { $this->_selectedColumns = array( 'period' => $this->_periodFormat, 'shipping_description' => 'shipping_description', 'orders_count' => 'SUM(orders_count)', 'total_shipping' => 'SUM(total_shipping)', 'total_shipping_actual' => 'SUM(total_shipping_actual)', ); } if ($this->isTotals()) { $this->_selectedColumns = $this->getAggregatedColumns(); } if ($this->isSubTotals()) { $this->_selectedColumns = $this->getAggregatedColumns() + array('period' => $this->_periodFormat); } return $this->_selectedColumns; } /** * Add selected data * * @return Mage_Sales_Model_Resource_Report_Shipping_Collection_Order */ protected function _initSelect() { $this->getSelect()->from( $this->getResource()->getMainTable() , $this->_getSelectedColumns() ); if (!$this->isTotals() && !$this->isSubTotals()) { $this->getSelect()->group(array( $this->_periodFormat, 'shipping_description' )); } if ($this->isSubTotals()) { $this->getSelect()->group(array( $this->_periodFormat )); } return $this; } }