Customer.php 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Tax\Model\TaxClass\Source;
  7. use Magento\Framework\Exception\StateException;
  8. use Magento\Tax\Api\TaxClassManagementInterface;
  9. use Magento\Tax\Model\ClassModel;
  10. /**
  11. * Customer tax class source model.
  12. */
  13. class Customer extends \Magento\Eav\Model\Entity\Attribute\Source\AbstractSource
  14. {
  15. /**
  16. * @var \Magento\Tax\Api\TaxClassRepositoryInterface
  17. */
  18. protected $taxClassRepository;
  19. /**
  20. * @var \Magento\Framework\Api\SearchCriteriaBuilder
  21. */
  22. protected $searchCriteriaBuilder;
  23. /**
  24. * @var \Magento\Framework\Api\FilterBuilder
  25. */
  26. protected $filterBuilder;
  27. /**
  28. * Initialize dependencies.
  29. *
  30. * @param \Magento\Tax\Api\TaxClassRepositoryInterface $taxClassRepository
  31. * @param \Magento\Framework\Api\SearchCriteriaBuilder $searchCriteriaBuilder
  32. * @param \Magento\Framework\Api\FilterBuilder $filterBuilder
  33. */
  34. public function __construct(
  35. \Magento\Tax\Api\TaxClassRepositoryInterface $taxClassRepository,
  36. \Magento\Framework\Api\SearchCriteriaBuilder $searchCriteriaBuilder,
  37. \Magento\Framework\Api\FilterBuilder $filterBuilder
  38. ) {
  39. $this->taxClassRepository = $taxClassRepository;
  40. $this->searchCriteriaBuilder = $searchCriteriaBuilder;
  41. $this->filterBuilder = $filterBuilder;
  42. }
  43. /**
  44. * Retrieve all customer tax classes as an options array.
  45. *
  46. * @return array
  47. * @throws StateException
  48. */
  49. public function getAllOptions()
  50. {
  51. if (empty($this->_options)) {
  52. $options = [];
  53. $filter = $this->filterBuilder->setField(ClassModel::KEY_TYPE)
  54. ->setValue(TaxClassManagementInterface::TYPE_CUSTOMER)
  55. ->create();
  56. $searchCriteria = $this->searchCriteriaBuilder->addFilters([$filter])->create();
  57. $searchResults = $this->taxClassRepository->getList($searchCriteria);
  58. foreach ($searchResults->getItems() as $taxClass) {
  59. $options[] = [
  60. 'value' => $taxClass->getClassId(),
  61. 'label' => $taxClass->getClassName(),
  62. ];
  63. }
  64. $this->_options = $options;
  65. }
  66. return $this->_options;
  67. }
  68. }