示例#1
0
 /**
  * Map an item to item data object. Add AvaTax details to extension objects.
  *
  * @param QuoteDetailsItemInterfaceFactory $itemDataObjectFactory
  * @param Item\AbstractItem $item
  * @param bool $priceIncludesTax
  * @param bool $useBaseCurrency
  * @param string $parentCode
  * @return \Magento\Tax\Api\Data\QuoteDetailsItemInterface
  */
 public function mapItem(QuoteDetailsItemInterfaceFactory $itemDataObjectFactory, Item\AbstractItem $item, $priceIncludesTax, $useBaseCurrency, $parentCode = null)
 {
     $quoteDetailsItem = parent::mapItem($itemDataObjectFactory, $item, $priceIncludesTax, $useBaseCurrency, $parentCode);
     $storeId = $item->getStore()->getId();
     if (!$this->config->isModuleEnabled($storeId) || $this->config->getTaxMode($storeId) == Config::TAX_MODE_NO_ESTIMATE_OR_SUBMIT) {
         return $quoteDetailsItem;
     }
     /** @var \Magento\Tax\Api\Data\QuoteDetailsItemExtensionInterface $extensionAttribute */
     $extensionAttribute = $quoteDetailsItem->getExtensionAttributes() ? $quoteDetailsItem->getExtensionAttributes() : $this->extensionFactory->create();
     $product = $item->getProduct();
     $taxCode = $this->taxClassHelper->getAvataxTaxCodeForProduct($product, $storeId);
     $itemCode = $this->taxClassHelper->getItemCodeOverride($product);
     if (!$itemCode) {
         $itemCode = $item->getSku();
     }
     $extensionAttribute->setAvataxItemCode($itemCode);
     $extensionAttribute->setAvataxTaxCode($taxCode);
     $extensionAttribute->setAvataxDescription($item->getName());
     $extensionAttribute->setAvataxRef1($this->taxClassHelper->getRef1ForProduct($product));
     $extensionAttribute->setAvataxRef2($this->taxClassHelper->getRef2ForProduct($product));
     $quoteDetailsItem->setExtensionAttributes($extensionAttribute);
     return $quoteDetailsItem;
 }