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_Sales
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: * Flat sales order collection
30: *
31: * @category Mage
32: * @package Mage_Sales
33: * @author Magento Core Team <core@magentocommerce.com>
34: */
35: abstract class Mage_Sales_Model_Resource_Order_Collection_Abstract extends Mage_Sales_Model_Resource_Collection_Abstract
36: {
37: /**
38: * Order object
39: *
40: * @var Mage_Sales_Model_Order
41: */
42: protected $_salesOrder = null;
43:
44: /**
45: * Order field for setOrderFilter
46: *
47: * @var string
48: */
49: protected $_orderField = 'parent_id';
50:
51: /**
52: * Set sales order model as parent collection object
53: *
54: * @param Mage_Sales_Model_Order $order
55: * @return Mage_Sales_Model_Resource_Order_Collection_Abstract
56: */
57: public function setSalesOrder($order)
58: {
59: $this->_salesOrder = $order;
60: if ($this->_eventPrefix && $this->_eventObject) {
61: Mage::dispatchEvent($this->_eventPrefix . '_set_sales_order', array(
62: 'collection' => $this,
63: $this->_eventObject => $this,
64: 'order' => $order
65: ));
66: }
67:
68: return $this;
69: }
70:
71: /**
72: * Retrieve sales order as parent collection object
73: *
74: * @return Mage_Sales_Model_Order|null
75: */
76: public function getSalesOrder()
77: {
78: return $this->_salesOrder;
79: }
80:
81: /**
82: * Add order filter
83: *
84: * @param int|Mage_Sales_Model_Order $order
85: * @return Mage_Sales_Model_Resource_Order_Collection_Abstract
86: */
87: public function setOrderFilter($order)
88: {
89: if ($order instanceof Mage_Sales_Model_Order) {
90: $this->setSalesOrder($order);
91: $orderId = $order->getId();
92: if ($orderId) {
93: $this->addFieldToFilter($this->_orderField, $orderId);
94: } else {
95: $this->_totalRecords = 0;
96: $this->_setIsLoaded(true);
97: }
98: } else {
99: $this->addFieldToFilter($this->_orderField, $order);
100: }
101: return $this;
102: }
103: }
104: