1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Tax\Model\Rate;
- use Magento\Framework\Api\SearchCriteriaBuilder;
- use Magento\Framework\App\ObjectManager;
- use Magento\Framework\Convert\DataObject as Converter;
- use Magento\Tax\Api\TaxRateRepositoryInterface;
- use Magento\Tax\Model\Rate\Provider as RateProvider;
- /**
- * Tax rate source model.
- */
- class Source implements \Magento\Framework\Data\OptionSourceInterface
- {
- /**
- * @var array
- */
- protected $options;
- /**
- * @var \Magento\Tax\Api\TaxRateRepositoryInterface
- */
- protected $taxRateRepository;
- /**
- * @var \Magento\Framework\Api\SearchCriteriaBuilder
- */
- protected $searchCriteriaBuilder;
- /**
- * @var \Magento\Framework\Convert\DataObject
- */
- protected $converter;
- /**
- * @var \Magento\Tax\Model\Rate\Provider
- */
- protected $rateProvider;
- /**
- * Initialize dependencies.
- *
- * @param TaxRateRepositoryInterface $taxRateRepository
- * @param SearchCriteriaBuilder $searchCriteriaBuilder
- * @param Converter $converter
- * @param RateProvider $rateProvider
- */
- public function __construct(
- TaxRateRepositoryInterface $taxRateRepository,
- SearchCriteriaBuilder $searchCriteriaBuilder,
- Converter $converter,
- RateProvider $rateProvider = null
- ) {
- $this->taxRateRepository = $taxRateRepository;
- $this->searchCriteriaBuilder = $searchCriteriaBuilder;
- $this->converter = $converter;
- $this->rateProvider = $rateProvider ?: ObjectManager::getInstance()->get(RateProvider::class);
- }
- /**
- * Retrieve all tax rates as an options array.
- *
- * @return array
- */
- public function toOptionArray()
- {
- if (!$this->options) {
- $searchCriteria = $this->searchCriteriaBuilder
- ->setPageSize($this->rateProvider->getPageSize())
- ->setCurrentPage(1)
- ->create();
- $this->options = $this->rateProvider->toOptionArray($searchCriteria);
- }
- return $this->options;
- }
- }
|