TaxRuleCollection.php 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Tax\Model;
  7. use Magento\Framework\Data\Collection\EntityFactory;
  8. use Magento\Framework\Api\AbstractServiceCollection;
  9. use Magento\Framework\Api\FilterBuilder;
  10. use Magento\Framework\Api\SearchCriteriaBuilder;
  11. use Magento\Framework\Api\SortOrderBuilder;
  12. use Magento\Tax\Api\Data\TaxRuleInterface;
  13. use Magento\Tax\Api\TaxRuleRepositoryInterface;
  14. /**
  15. * Tax rule collection for a grid backed by Services
  16. */
  17. class TaxRuleCollection extends AbstractServiceCollection
  18. {
  19. /**
  20. * @var TaxRuleRepositoryInterface
  21. */
  22. protected $ruleService;
  23. /**
  24. * Initialize dependencies.
  25. *
  26. * @param EntityFactory $entityFactory
  27. * @param FilterBuilder $filterBuilder
  28. * @param SearchCriteriaBuilder $searchCriteriaBuilder
  29. * @param SortOrderBuilder $sortOrderBuilder
  30. * @param TaxRuleRepositoryInterface $ruleService
  31. */
  32. public function __construct(
  33. EntityFactory $entityFactory,
  34. FilterBuilder $filterBuilder,
  35. SearchCriteriaBuilder $searchCriteriaBuilder,
  36. SortOrderBuilder $sortOrderBuilder,
  37. TaxRuleRepositoryInterface $ruleService
  38. ) {
  39. parent::__construct($entityFactory, $filterBuilder, $searchCriteriaBuilder, $sortOrderBuilder);
  40. $this->ruleService = $ruleService;
  41. }
  42. /**
  43. * {@inheritdoc}
  44. */
  45. public function loadData($printQuery = false, $logQuery = false)
  46. {
  47. if (!$this->isLoaded()) {
  48. $searchCriteria = $this->getSearchCriteria();
  49. $searchResults = $this->ruleService->getList($searchCriteria);
  50. $this->_totalRecords = $searchResults->getTotalCount();
  51. foreach ($searchResults->getItems() as $taxRule) {
  52. $this->_addItem($this->createTaxRuleCollectionItem($taxRule));
  53. }
  54. $this->_setIsLoaded();
  55. }
  56. return $this;
  57. }
  58. /**
  59. * Creates a collection item that represents a tax rule for the tax rules grid.
  60. *
  61. * @param TaxRuleInterface $taxRule Input data for creating the item.
  62. * @return \Magento\Framework\DataObject Collection item that represents a tax rule
  63. */
  64. protected function createTaxRuleCollectionItem(TaxRuleInterface $taxRule)
  65. {
  66. $collectionItem = new \Magento\Framework\DataObject();
  67. $collectionItem->setTaxCalculationRuleId($taxRule->getId());
  68. $collectionItem->setCode($taxRule->getCode());
  69. /* should cast to string so that some optional fields won't be null on the collection grid pages */
  70. $collectionItem->setPriority((string)$taxRule->getPriority());
  71. $collectionItem->setPosition((string)$taxRule->getPosition());
  72. $collectionItem->setCalculateSubtotal($taxRule->getCalculateSubtotal() ? '1' : '0');
  73. $collectionItem->setCustomerTaxClasses($taxRule->getCustomerTaxClassIds());
  74. $collectionItem->setProductTaxClasses($taxRule->getProductTaxClassIds());
  75. $collectionItem->setTaxRatesCodes($taxRule->getTaxRatesCodes());
  76. $collectionItem->setTaxRates($taxRule->getTaxRateIds());
  77. return $collectionItem;
  78. }
  79. }