Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
TaxClassProcessor.php
Go to the documentation of this file.
1 <?php
7 
10 
12 {
16  const ATRR_CODE = 'tax_class_id';
17 
23  protected $taxClasses;
24 
30  protected $collectionFactory;
31 
37  protected $classModelFactory;
38 
43  public function __construct(
44  \Magento\Tax\Model\ResourceModel\TaxClass\CollectionFactory $collectionFactory,
45  \Magento\Tax\Model\ClassModelFactory $classModelFactory
46  ) {
47  $this->collectionFactory = $collectionFactory;
48  $this->classModelFactory = $classModelFactory;
49  $this->initTaxClasses();
50  }
51 
57  protected function initTaxClasses()
58  {
59  if (empty($this->taxClasses)) {
60  $collection = $this->collectionFactory->create();
61  $collection->addFieldToFilter('class_type', ClassModel::TAX_CLASS_TYPE_PRODUCT);
62  /* @var $collection \Magento\Tax\Model\ResourceModel\TaxClass\Collection */
63  foreach ($collection as $taxClass) {
64  $this->taxClasses[$taxClass->getClassName()] = $taxClass->getId();
65  }
66  }
67  return $this;
68  }
69 
77  protected function createTaxClass($taxClassName, AbstractType $productTypeModel)
78  {
80  $taxClass = $this->classModelFactory->create();
81  $taxClass->setClassType(ClassModel::TAX_CLASS_TYPE_PRODUCT);
82  $taxClass->setClassName($taxClassName);
83  $taxClass->save();
84 
85  $id = $taxClass->getId();
86 
87  $productTypeModel->addAttributeOption(self::ATRR_CODE, $id, $id);
88 
89  return $id;
90  }
91 
99  public function upsertTaxClass($taxClassName, AbstractType $productTypeModel)
100  {
101  if (!isset($this->taxClasses[$taxClassName])) {
102  $this->taxClasses[$taxClassName] = $this->createTaxClass($taxClassName, $productTypeModel);
103  }
104 
105  return $this->taxClasses[$taxClassName];
106  }
107 }
$id
Definition: fieldset.phtml:14
__construct(\Magento\Tax\Model\ResourceModel\TaxClass\CollectionFactory $collectionFactory, \Magento\Tax\Model\ClassModelFactory $classModelFactory)
upsertTaxClass($taxClassName, AbstractType $productTypeModel)