123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Tax\Model\TaxClass\Source;
- use Magento\Framework\DB\Ddl\Table;
- use Magento\Tax\Api\TaxClassManagementInterface;
- use Magento\Tax\Model\ClassModel;
- /**
- * Product tax class source model.
- */
- class Product extends \Magento\Eav\Model\Entity\Attribute\Source\AbstractSource
- {
- /**
- * @var \Magento\Tax\Api\TaxClassRepositoryInterface
- */
- protected $_taxClassRepository;
- /**
- * @var \Magento\Framework\Api\SearchCriteriaBuilder
- */
- protected $_searchCriteriaBuilder;
- /**
- * @var \Magento\Framework\Api\FilterBuilder
- */
- protected $_filterBuilder;
- /**
- * @var \Magento\Eav\Model\ResourceModel\Entity\Attribute\OptionFactory
- */
- protected $_optionFactory;
- /**
- * Initialize dependencies.
- *
- * @param \Magento\Tax\Model\ResourceModel\TaxClass\CollectionFactory $classesFactory
- * @param \Magento\Eav\Model\ResourceModel\Entity\Attribute\OptionFactory $optionFactory
- * @param \Magento\Tax\Api\TaxClassRepositoryInterface $taxClassRepository
- * @param \Magento\Framework\Api\SearchCriteriaBuilder $searchCriteriaBuilder
- * @param \Magento\Framework\Api\FilterBuilder $filterBuilder
- */
- public function __construct(
- \Magento\Tax\Model\ResourceModel\TaxClass\CollectionFactory $classesFactory,
- \Magento\Eav\Model\ResourceModel\Entity\Attribute\OptionFactory $optionFactory,
- \Magento\Tax\Api\TaxClassRepositoryInterface $taxClassRepository,
- \Magento\Framework\Api\SearchCriteriaBuilder $searchCriteriaBuilder,
- \Magento\Framework\Api\FilterBuilder $filterBuilder
- ) {
- $this->_classesFactory = $classesFactory;
- $this->_optionFactory = $optionFactory;
- $this->_taxClassRepository = $taxClassRepository;
- $this->_filterBuilder = $filterBuilder;
- $this->_searchCriteriaBuilder = $searchCriteriaBuilder;
- }
- /**
- * Retrieve all product tax class options.
- *
- * @param bool $withEmpty
- * @return array
- */
- public function getAllOptions($withEmpty = true)
- {
- if (!$this->_options) {
- $filter = $this->_filterBuilder
- ->setField(ClassModel::KEY_TYPE)
- ->setValue(TaxClassManagementInterface::TYPE_PRODUCT)
- ->create();
- $searchCriteria = $this->_searchCriteriaBuilder->addFilters([$filter])->create();
- $searchResults = $this->_taxClassRepository->getList($searchCriteria);
- foreach ($searchResults->getItems() as $taxClass) {
- $this->_options[] = [
- 'value' => $taxClass->getClassId(),
- 'label' => $taxClass->getClassName(),
- ];
- }
- }
- if ($withEmpty) {
- if (!$this->_options) {
- return [['value' => '0', 'label' => __('None')]];
- } else {
- return array_merge([['value' => '0', 'label' => __('None')]], $this->_options);
- }
- }
- return $this->_options;
- }
- /**
- * Get a text for option value
- *
- * @param string|integer $value
- * @return string
- */
- public function getOptionText($value)
- {
- $options = $this->getAllOptions();
- foreach ($options as $item) {
- if ($item['value'] == $value) {
- return $item['label'];
- }
- }
- return false;
- }
- /**
- * Retrieve flat column definition
- *
- * @return array
- */
- public function getFlatColumns()
- {
- $attributeCode = $this->getAttribute()->getAttributeCode();
- return [
- $attributeCode => [
- 'unsigned' => true,
- 'default' => null,
- 'extra' => null,
- 'type' => Table::TYPE_INTEGER,
- 'nullable' => true,
- 'comment' => $attributeCode . ' tax column',
- ],
- ];
- }
- /**
- * Retrieve Select for update attribute value in flat table
- *
- * @param int $store
- * @return \Magento\Framework\DB\Select|null
- */
- public function getFlatUpdateSelect($store)
- {
- /** @var $option \Magento\Eav\Model\ResourceModel\Entity\Attribute\Option */
- $option = $this->_optionFactory->create();
- return $option->getFlatUpdateSelect($this->getAttribute(), $store, false);
- }
- }
|