1: <?php
2: /**
3: * Magento
4: *
5: * NOTICE OF LICENSE
6: *
7: * This source file is subject to the Open Software License (OSL 3.0)
8: * that is bundled with this package in the file LICENSE.txt.
9: * It is also available through the world-wide-web at this URL:
10: * http://opensource.org/licenses/osl-3.0.php
11: * If you did not receive a copy of the license and are unable to
12: * obtain it through the world-wide-web, please send an email
13: * to license@magentocommerce.com so we can send you a copy immediately.
14: *
15: * DISCLAIMER
16: *
17: * Do not edit or add to this file if you wish to upgrade Magento to newer
18: * versions in the future. If you wish to customize Magento for your
19: * needs please refer to http://www.magentocommerce.com for more information.
20: *
21: * @category Mage
22: * @package Mage_Reports
23: * @copyright Copyright (c) 2012 Magento Inc. (http://www.magentocommerce.com)
24: * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
25: */
26:
27:
28: /**
29: * Reports orders collection
30: *
31: * @category Mage
32: * @package Mage_Reports
33: * @author Magento Core Team <core@magentocommerce.com>
34: */
35: class Mage_Reports_Model_Resource_Shipping_Collection extends Mage_Sales_Model_Entity_Order_Collection
36: {
37: /**
38: * Set date range
39: *
40: * @param string $from
41: * @param string $to
42: * @return Mage_Reports_Model_Resource_Shipping_Collection
43: */
44: public function setDateRange($from, $to)
45: {
46: $this->_reset()
47: ->addAttributeToSelect('*')
48: ->addAttributeToFilter('created_at', array('from' => $from, 'to' => $to))
49: ->addExpressionAttributeToSelect('orders', 'COUNT(DISTINCT({{entity_id}}))', array('entity_id'))
50: ->addAttributeToSelect('shipping_description')
51: ->groupByAttribute('shipping_description')
52: ->getSelect()->order('orders ' . self::SORT_ORDER_DESC);
53:
54: $this->getSelect()->where("table_shipping_description.value <> ''");
55: return $this;
56: }
57:
58: /**
59: * Set store filter to collection
60: *
61: * @param array $storeIds
62: * @return Mage_Reports_Model_Resource_Shipping_Collection
63: */
64: public function setStoreIds($storeIds)
65: {
66: if ($storeIds) {
67: $this->addAttributeToFilter('store_id', array('in' => (array)$storeIds));
68: $this->addExpressionAttributeToSelect('total',
69: 'SUM({{base_shipping_amount}})',
70: array('base_shipping_amount'));
71: } else {
72: $this->addExpressionAttributeToSelect('total',
73: 'SUM({{base_shipping_amount}}*{{base_to_global_rate}})',
74: array('base_shipping_amount', 'base_to_global_rate'));
75: }
76:
77: return $this;
78: }
79: }
80: