AbstractCollection.php 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Sales\Model\ResourceModel\Order\Collection;
  7. /**
  8. * Flat sales order collection
  9. *
  10. * @author Magento Core Team <core@magentocommerce.com>
  11. */
  12. abstract class AbstractCollection extends \Magento\Sales\Model\ResourceModel\Collection\AbstractCollection
  13. {
  14. /**
  15. * Order object
  16. *
  17. * @var \Magento\Sales\Model\Order
  18. */
  19. protected $_salesOrder = null;
  20. /**
  21. * Order field for setOrderFilter
  22. *
  23. * @var string
  24. */
  25. protected $_orderField = 'parent_id';
  26. /**
  27. * Set sales order model as parent collection object
  28. *
  29. * @param \Magento\Sales\Model\Order $order
  30. * @return $this
  31. */
  32. public function setSalesOrder($order)
  33. {
  34. $this->_salesOrder = $order;
  35. if ($this->_eventPrefix && $this->_eventObject) {
  36. $this->_eventManager->dispatch(
  37. $this->_eventPrefix . '_set_sales_order',
  38. ['collection' => $this, $this->_eventObject => $this, 'order' => $order]
  39. );
  40. }
  41. return $this;
  42. }
  43. /**
  44. * Retrieve sales order as parent collection object
  45. *
  46. * @return \Magento\Sales\Model\Order|null
  47. */
  48. public function getSalesOrder()
  49. {
  50. return $this->_salesOrder;
  51. }
  52. /**
  53. * Add order filter
  54. *
  55. * @param int|\Magento\Sales\Model\Order|array $order
  56. * @return $this
  57. */
  58. public function setOrderFilter($order)
  59. {
  60. if ($order instanceof \Magento\Sales\Model\Order) {
  61. $this->setSalesOrder($order);
  62. $orderId = $order->getId();
  63. if ($orderId) {
  64. $this->addFieldToFilter($this->_orderField, $orderId);
  65. } else {
  66. $this->_totalRecords = 0;
  67. $this->_setIsLoaded(true);
  68. }
  69. } else {
  70. $this->addFieldToFilter($this->_orderField, $order);
  71. }
  72. return $this;
  73. }
  74. }