| Server IP : 213.186.33.4 / Your IP : 216.73.216.193 Web Server : Apache System : Linux webm006.cluster103.gra.hosting.ovh.net 5.15.206-ovh-vps-grsec-zfs-classid #1 SMP Fri May 15 02:41:25 UTC 2026 x86_64 User : awebpaca ( 35430) PHP Version : 8.5.0 Disable Function : _dyuweyrj4,_dyuweyrj4r,dl MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /home/awebpaca/boutiques/app/code/core/Mage/Sales/Model/Mysql4/Report/Collection/ |
Upload File : |
<?php
/**
* Magento
*
* NOTICE OF LICENSE
*
* This source file is subject to the Open Software License (OSL 3.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/osl-3.0.php
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@magentocommerce.com so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade Magento to newer
* versions in the future. If you wish to customize Magento for your
* needs please refer to http://www.magentocommerce.com for more information.
*
* @category Mage
* @package Mage_Sales
* @copyright Copyright (c) 2010 Magento Inc. (http://www.magentocommerce.com)
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
class Mage_Sales_Model_Mysql4_Report_Collection_Abstract extends Mage_Core_Model_Mysql4_Collection_Abstract
{
protected $_from = null;
protected $_to = null;
protected $_orderStatus = null;
protected $_period = null;
protected $_storesIds = 0;
protected $_applyFilters = true;
protected $_isTotals = false;
protected $_isSubTotals = false;
protected $_aggregatedColumns = array();
/**
* Set array of columns that should be aggregated
*
* @param array $columns
* @return Mage_Sales_Model_Mysql4_Report_Collection_Abstract
*/
public function setAggregatedColumns(array $columns)
{
$this->_aggregatedColumns = $columns;
return $this;
}
/**
* Retrieve array of columns that should be aggregated
*
* @return array
*/
public function getAggregatedColumns()
{
return $this->_aggregatedColumns;
}
/**
* Set date range
*
* @param mixed $from
* @param mixed $to
* @return Mage_Sales_Model_Mysql4_Report_Collection_Abstract
*/
public function setDateRange($from = null, $to = null)
{
$this->_from = $from;
$this->_to = $to;
return $this;
}
/**
* Set period
*
* @param string $period
* @return Mage_Sales_Model_Mysql4_Report_Collection_Abstract
*/
public function setPeriod($period)
{
$this->_period = $period;
return $this;
}
/**
* Apply date range filter
*
* @return Mage_Sales_Model_Mysql4_Report_Collection_Abstract
*/
protected function _applyDateRangeFilter()
{
if (!is_null($this->_from)) {
$this->getSelect()->where('period >= ?', $this->_from);
}
if (!is_null($this->_to)) {
$this->getSelect()->where('period <= ?', $this->_to);
}
return $this;
}
/**
* Set store ids
*
* @param mixed $storeIds (null, int|string, array, array may contain null)
* @return Mage_Sales_Model_Mysql4_Report_Collection_Abstract
*/
public function addStoreFilter($storeIds)
{
$this->_storesIds = $storeIds;
return $this;
}
/**
* Apply stores filter to select object
*
* @param Zend_Db_Select $select
* @return Mage_Sales_Model_Mysql4_Report_Collection_Abstract
*/
protected function _applyStoresFilterToSelect(Zend_Db_Select $select)
{
$nullCheck = false;
$storeIds = $this->_storesIds;
if (!is_array($storeIds)) {
$storeIds = array($storeIds);
}
$storeIds = array_unique($storeIds);
if ($index = array_search(null, $storeIds)) {
unset($storeIds[$index]);
$nullCheck = true;
}
$storeIds[0] = ($storeIds[0] == '') ? 0 : $storeIds[0];
if ($nullCheck) {
$select->where('store_id IN(?) OR store_id IS NULL', $storeIds);
} else {
$select->where('store_id IN(?)', $storeIds);
}
return $this;
}
/**
* Apply stores filter
*
* @return Mage_Sales_Model_Mysql4_Report_Collection_Abstract
*/
protected function _applyStoresFilter()
{
return $this->_applyStoresFilterToSelect($this->getSelect());
}
/**
* Set status filter
*
* @param string|array $state
* @return Mage_Sales_Model_Mysql4_Report_Collection_Abstract
*/
public function addOrderStatusFilter($orderStatus)
{
$this->_orderStatus = $orderStatus;
return $this;
}
/**
* Apply order status filter
*
* @return Mage_Sales_Model_Mysql4_Report_Collection_Abstract
*/
protected function _applyOrderStatusFilter()
{
if (is_null($this->_orderStatus)) {
return $this;
}
$orderStatus = $this->_orderStatus;
if (!is_array($orderStatus)) {
$orderStatus = array($orderStatus);
}
$this->getSelect()->where('order_status IN(?)', $orderStatus);
return $this;
}
/**
* Set apply filters flag
*
* @param boolean $flag
* @return Mage_Sales_Model_Mysql4_Report_Collection_Abstract
*/
public function setApplyFilters($flag)
{
$this->_applyFilters = $flag;
return $this;
}
/**
* Getter/Setter for isTotals
*
* @param null|boolean $flag
* @return boolean|Mage_Sales_Model_Mysql4_Report_Collection_Abstract
*/
public function isTotals($flag = null)
{
if (is_null($flag)) {
return $this->_isTotals;
}
$this->_isTotals = $flag;
return $this;
}
/**
* Getter/Setter for isSubTotals
*
* @param null|boolean $flag
* @return boolean|Mage_Sales_Model_Mysql4_Report_Collection_Abstract
*/
public function isSubTotals($flag = null)
{
if (is_null($flag)) {
return $this->_isSubTotals;
}
$this->_isSubTotals = $flag;
return $this;
}
/**
* Load data
* Redeclare parent load method just for adding method _beforeLoad
*
* @return Varien_Data_Collection_Db
*/
public function load($printQuery = false, $logQuery = false)
{
if ($this->isLoaded()) {
return $this;
}
$this->_initSelect();
if ($this->_applyFilters) {
$this->_applyDateRangeFilter();
$this->_applyStoresFilter();
$this->_applyOrderStatusFilter();
}
return parent::load($printQuery, $logQuery);
}
}