Orders.php 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Customer\Block\Adminhtml\Edit\Tab;
  7. use Magento\Customer\Controller\RegistryConstants;
  8. /**
  9. * Adminhtml customer orders grid block
  10. *
  11. * @api
  12. * @since 100.0.2
  13. */
  14. class Orders extends \Magento\Backend\Block\Widget\Grid\Extended
  15. {
  16. /**
  17. * Sales reorder
  18. *
  19. * @var \Magento\Sales\Helper\Reorder
  20. */
  21. protected $_salesReorder = null;
  22. /**
  23. * Core registry
  24. *
  25. * @var \Magento\Framework\Registry
  26. */
  27. protected $_coreRegistry = null;
  28. /**
  29. * @var \Magento\Framework\View\Element\UiComponent\DataProvider\CollectionFactory
  30. */
  31. protected $collectionFactory;
  32. /**
  33. * @param \Magento\Backend\Block\Template\Context $context
  34. * @param \Magento\Backend\Helper\Data $backendHelper
  35. * @param \Magento\Framework\View\Element\UiComponent\DataProvider\CollectionFactory $collectionFactory
  36. * @param \Magento\Sales\Helper\Reorder $salesReorder
  37. * @param \Magento\Framework\Registry $coreRegistry
  38. * @param array $data
  39. */
  40. public function __construct(
  41. \Magento\Backend\Block\Template\Context $context,
  42. \Magento\Backend\Helper\Data $backendHelper,
  43. \Magento\Framework\View\Element\UiComponent\DataProvider\CollectionFactory $collectionFactory,
  44. \Magento\Sales\Helper\Reorder $salesReorder,
  45. \Magento\Framework\Registry $coreRegistry,
  46. array $data = []
  47. ) {
  48. $this->_coreRegistry = $coreRegistry;
  49. $this->_salesReorder = $salesReorder;
  50. $this->_collectionFactory = $collectionFactory;
  51. parent::__construct($context, $backendHelper, $data);
  52. }
  53. /**
  54. * @inheritdoc
  55. */
  56. protected function _construct()
  57. {
  58. parent::_construct();
  59. $this->setId('customer_orders_grid');
  60. $this->setDefaultSort('created_at', 'desc');
  61. $this->setUseAjax(true);
  62. }
  63. /**
  64. * Apply various selection filters to prepare the sales order grid collection.
  65. *
  66. * @return $this
  67. */
  68. protected function _prepareCollection()
  69. {
  70. $collection = $this->_collectionFactory->getReport('sales_order_grid_data_source')->addFieldToSelect(
  71. 'entity_id'
  72. )->addFieldToSelect(
  73. 'increment_id'
  74. )->addFieldToSelect(
  75. 'customer_id'
  76. )->addFieldToSelect(
  77. 'created_at'
  78. )->addFieldToSelect(
  79. 'grand_total'
  80. )->addFieldToSelect(
  81. 'order_currency_code'
  82. )->addFieldToSelect(
  83. 'store_id'
  84. )->addFieldToSelect(
  85. 'billing_name'
  86. )->addFieldToSelect(
  87. 'shipping_name'
  88. )->addFieldToFilter(
  89. 'customer_id',
  90. $this->_coreRegistry->registry(RegistryConstants::CURRENT_CUSTOMER_ID)
  91. );
  92. $this->setCollection($collection);
  93. return parent::_prepareCollection();
  94. }
  95. /**
  96. * @inheritdoc
  97. */
  98. protected function _prepareColumns()
  99. {
  100. $this->addColumn('increment_id', ['header' => __('Order'), 'width' => '100', 'index' => 'increment_id']);
  101. $this->addColumn(
  102. 'created_at',
  103. ['header' => __('Purchased'), 'index' => 'created_at', 'type' => 'datetime']
  104. );
  105. $this->addColumn('billing_name', ['header' => __('Bill-to Name'), 'index' => 'billing_name']);
  106. $this->addColumn('shipping_name', ['header' => __('Ship-to Name'), 'index' => 'shipping_name']);
  107. $this->addColumn(
  108. 'grand_total',
  109. [
  110. 'header' => __('Order Total'),
  111. 'index' => 'grand_total',
  112. 'type' => 'currency',
  113. 'currency' => 'order_currency_code',
  114. 'rate' => 1
  115. ]
  116. );
  117. if (!$this->_storeManager->isSingleStoreMode()) {
  118. $this->addColumn(
  119. 'store_id',
  120. ['header' => __('Purchase Point'), 'index' => 'store_id', 'type' => 'store', 'store_view' => true]
  121. );
  122. }
  123. if ($this->_salesReorder->isAllow()) {
  124. $this->addColumn(
  125. 'action',
  126. [
  127. 'header' => ' ',
  128. 'filter' => false,
  129. 'sortable' => false,
  130. 'width' => '100px',
  131. 'renderer' => \Magento\Sales\Block\Adminhtml\Reorder\Renderer\Action::class
  132. ]
  133. );
  134. }
  135. return parent::_prepareColumns();
  136. }
  137. /**
  138. * Retrieve the Url for a specified sales order row.
  139. *
  140. * @param \Magento\Sales\Model\Order|\Magento\Framework\DataObject $row
  141. * @return string
  142. */
  143. public function getRowUrl($row)
  144. {
  145. return $this->getUrl('sales/order/view', ['order_id' => $row->getId()]);
  146. }
  147. /**
  148. * @inheritdoc
  149. */
  150. public function getGridUrl()
  151. {
  152. return $this->getUrl('customer/*/orders', ['_current' => true]);
  153. }
  154. }