Exemple #1
0
 /**
  * Initiate tax classes.
  *
  * @return $this
  */
 protected function initTaxClasses()
 {
     if (empty($this->taxClasses)) {
         $collection = $this->collectionFactory->create();
         $collection->addFieldToFilter('class_type', ClassModel::TAX_CLASS_TYPE_PRODUCT);
         /* @var $collection \Magento\Tax\Model\Resource\TaxClass\Collection */
         foreach ($collection as $taxClass) {
             $this->taxClasses[$taxClass->getClassName()] = $taxClass->getId();
         }
     }
     return $this;
 }
 /**
  * Retrieve tax classes which match a specific criteria.
  *
  * @param \Magento\Framework\Service\V1\Data\SearchCriteria $searchCriteria
  * @return \Magento\Tax\Service\V1\Data\TaxClassSearchResults containing Data\TaxClass
  * @throws \Magento\Framework\Exception\InputException
  */
 public function searchTaxClass(\Magento\Framework\Service\V1\Data\SearchCriteria $searchCriteria)
 {
     $this->searchResultsBuilder->setSearchCriteria($searchCriteria);
     /** @var TaxClassCollection $collection */
     $collection = $this->taxClassCollectionFactory->create();
     /** TODO: This method duplicates functionality of search methods in other services and should be refactored. */
     foreach ($searchCriteria->getFilterGroups() as $group) {
         $this->addFilterGroupToCollection($group, $collection);
     }
     $this->searchResultsBuilder->setTotalCount($collection->getSize());
     $sortOrders = $searchCriteria->getSortOrders();
     if ($sortOrders) {
         foreach ($searchCriteria->getSortOrders() as $field => $direction) {
             $collection->addOrder($field, $direction == SearchCriteria::SORT_ASC ? 'ASC' : 'DESC');
         }
     }
     $collection->setCurPage($searchCriteria->getCurrentPage());
     $collection->setPageSize($searchCriteria->getPageSize());
     $taxClasses = [];
     /** @var \Magento\Tax\Model\ClassModel $taxClassModel */
     foreach ($collection->getItems() as $taxClassModel) {
         $taxClasses[] = $this->converter->createTaxClassData($taxClassModel);
     }
     $this->searchResultsBuilder->setItems($taxClasses);
     return $this->searchResultsBuilder->create();
 }
 /**
  * {@inheritdoc}
  */
 public function getList(\Magento\Framework\Api\SearchCriteriaInterface $searchCriteria)
 {
     $searchResults = $this->searchResultsFactory->create();
     $searchResults->setSearchCriteria($searchCriteria);
     /** @var TaxClassCollection $collection */
     $collection = $this->taxClassCollectionFactory->create();
     foreach ($searchCriteria->getFilterGroups() as $group) {
         $this->addFilterGroupToCollection($group, $collection);
     }
     $searchResults->setTotalCount($collection->getSize());
     $sortOrders = $searchCriteria->getSortOrders();
     /** @var SortOrder $sortOrder */
     if ($sortOrders) {
         foreach ($searchCriteria->getSortOrders() as $sortOrder) {
             $collection->addOrder($sortOrder->getField(), $sortOrder->getDirection() == SearchCriteria::SORT_ASC ? 'ASC' : 'DESC');
         }
     }
     $collection->setCurPage($searchCriteria->getCurrentPage());
     $collection->setPageSize($searchCriteria->getPageSize());
     $searchResults->setItems($collection->getItems());
     return $searchResults;
 }
 /**
  * Gets the tax rates by type
  *
  * @param \Magento\Framework\Object $request
  * @param string|array $fieldName
  * @param string|array $type
  * @return array
  */
 protected function _getRates($request, $fieldName, $type)
 {
     $result = array();
     /** @var $classes \Magento\Tax\Model\Resource\TaxClass\Collection */
     $classes = $this->_classesFactory->create();
     $classes->addFieldToFilter('class_type', $type)->load();
     foreach ($classes as $class) {
         $request->setData($fieldName, $class->getId());
         $result[$class->getId()] = $this->getRate($request);
     }
     return $result;
 }