Grid.php 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Reports\Block\Adminhtml\Sales\Tax;
  7. /**
  8. * Adminhtml tax report grid block
  9. *
  10. * @author Magento Core Team <core@magentocommerce.com>
  11. * @SuppressWarnings(PHPMD.DepthOfInheritance)
  12. */
  13. class Grid extends \Magento\Reports\Block\Adminhtml\Grid\AbstractGrid
  14. {
  15. /**
  16. * GROUP BY criteria
  17. *
  18. * @var string
  19. */
  20. protected $_columnGroupBy = 'period';
  21. /**
  22. * Config factory
  23. *
  24. * @var \Magento\Sales\Model\Order\ConfigFactory
  25. */
  26. protected $_configFactory;
  27. /**
  28. * Constructor
  29. *
  30. * @param \Magento\Backend\Block\Template\Context $context
  31. * @param \Magento\Backend\Helper\Data $backendHelper
  32. * @param \Magento\Reports\Model\ResourceModel\Report\Collection\Factory $resourceFactory
  33. * @param \Magento\Reports\Model\Grouped\CollectionFactory $collectionFactory
  34. * @param \Magento\Reports\Helper\Data $reportsData
  35. * @param \Magento\Sales\Model\Order\ConfigFactory $configFactory
  36. * @param array $data
  37. */
  38. public function __construct(
  39. \Magento\Backend\Block\Template\Context $context,
  40. \Magento\Backend\Helper\Data $backendHelper,
  41. \Magento\Reports\Model\ResourceModel\Report\Collection\Factory $resourceFactory,
  42. \Magento\Reports\Model\Grouped\CollectionFactory $collectionFactory,
  43. \Magento\Reports\Helper\Data $reportsData,
  44. \Magento\Sales\Model\Order\ConfigFactory $configFactory,
  45. array $data = []
  46. ) {
  47. $this->_configFactory = $configFactory;
  48. parent::__construct($context, $backendHelper, $resourceFactory, $collectionFactory, $reportsData, $data);
  49. }
  50. /**
  51. * @inheritdoc
  52. *
  53. * @codeCoverageIgnore
  54. */
  55. protected function _construct()
  56. {
  57. parent::_construct();
  58. $this->setCountTotals(true);
  59. $this->setCountSubTotals(true);
  60. }
  61. /**
  62. * @inheritdoc
  63. */
  64. public function getResourceCollectionName()
  65. {
  66. return $this->getFilterData()->getData('report_type') == 'updated_at_order'
  67. ? \Magento\Tax\Model\ResourceModel\Report\Updatedat\Collection::class
  68. : \Magento\Tax\Model\ResourceModel\Report\Collection::class;
  69. }
  70. /**
  71. * @inheritdoc
  72. */
  73. protected function _prepareColumns()
  74. {
  75. $this->addColumn(
  76. 'period',
  77. [
  78. 'header' => __('Interval'),
  79. 'index' => 'period',
  80. 'sortable' => false,
  81. 'period_type' => $this->getPeriodType(),
  82. 'renderer' => \Magento\Reports\Block\Adminhtml\Sales\Grid\Column\Renderer\Date::class,
  83. 'totals_label' => __('Total'),
  84. 'subtotals_label' => __('Subtotal'),
  85. 'html_decorators' => ['nobr'],
  86. 'header_css_class' => 'col-period',
  87. 'column_css_class' => 'col-period'
  88. ]
  89. );
  90. $this->addColumn(
  91. 'code',
  92. [
  93. 'header' => __('Tax'),
  94. 'index' => 'code',
  95. 'type' => 'string',
  96. 'sortable' => false,
  97. 'header_css_class' => 'col-tax-name',
  98. 'column_css_class' => 'col-tax-name'
  99. ]
  100. );
  101. $this->addColumn(
  102. 'percent',
  103. [
  104. 'header' => __('Rate'),
  105. 'index' => 'percent',
  106. 'type' => 'number',
  107. 'sortable' => false,
  108. 'header_css_class' => 'col-rate',
  109. 'column_css_class' => 'col-rate'
  110. ]
  111. );
  112. $this->addColumn(
  113. 'orders_count',
  114. [
  115. 'header' => __('Orders'),
  116. 'index' => 'orders_count',
  117. 'type' => 'number',
  118. 'sortable' => false,
  119. 'header_css_class' => 'col-qty',
  120. 'column_css_class' => 'col-qty'
  121. ]
  122. );
  123. if ($this->getFilterData()->getStoreIds()) {
  124. $this->setStoreIds(explode(',', $this->getFilterData()->getStoreIds()));
  125. }
  126. $currencyCode = $this->getCurrentCurrencyCode();
  127. $this->addColumn(
  128. 'tax_base_amount_sum',
  129. [
  130. 'header' => __('Tax Amount'),
  131. 'type' => 'currency',
  132. 'currency_code' => $currencyCode,
  133. 'index' => 'tax_base_amount_sum',
  134. 'total' => 'sum',
  135. 'sortable' => false,
  136. 'rate' => $this->getRate($currencyCode),
  137. 'header_css_class' => 'col-tax-amount',
  138. 'column_css_class' => 'col-tax-amount'
  139. ]
  140. );
  141. $this->addExportType('*/*/exportTaxCsv', __('CSV'));
  142. $this->addExportType('*/*/exportTaxExcel', __('Excel XML'));
  143. return parent::_prepareColumns();
  144. }
  145. /**
  146. * Preparing collection. Filter canceled statuses for orders in taxes
  147. *
  148. * @return $this
  149. * @SuppressWarnings(PHPMD.UnusedLocalVariable)
  150. */
  151. protected function _prepareCollection()
  152. {
  153. $filterData = $this->getFilterData();
  154. if (!$filterData->hasData('order_statuses')) {
  155. $orderConfig = $this->_configFactory->create();
  156. $statusValues = [];
  157. $canceledStatuses = $orderConfig->getStateStatuses(\Magento\Sales\Model\Order::STATE_CANCELED);
  158. foreach ($orderConfig->getStatuses() as $code => $label) {
  159. if (!isset($canceledStatuses[$code])) {
  160. $statusValues[] = $code;
  161. }
  162. }
  163. $filterData->setOrderStatuses($statusValues);
  164. }
  165. return parent::_prepareCollection();
  166. }
  167. }