/**
  * Return an array with relevant data from an credit memo item
  *
  * @param \Magento\Sales\Api\Data\CreditmemoItemInterface $item
  * @return array|bool
  */
 protected function convertCreditMemoItemToData(\Magento\Sales\Api\Data\CreditmemoItemInterface $item)
 {
     if (!$this->isProductCalculated($item->getOrderItem())) {
         return false;
     }
     // The AvaTax 15 API doesn't support the concept of line-based discounts, so subtract discount amount
     // from taxable amount
     $amount = $item->getBaseRowTotal() - $item->getBaseDiscountAmount();
     // Credit memo amounts need to be sent to AvaTax as negative numbers
     $amount *= -1;
     if ($item->getQty() == 0 || $amount == 0) {
         return false;
     }
     $product = $item->getOrderItem()->getProduct();
     $itemCode = $this->taxClassHelper->getItemCodeOverride($product);
     if (!$itemCode) {
         $itemCode = $item->getSku();
     }
     $storeId = $item->getStoreId();
     return ['StoreId' => $storeId, 'No' => $this->getLineNumber(), 'ItemCode' => $itemCode, 'TaxCode' => $this->taxClassHelper->getAvataxTaxCodeForProduct($product, $storeId), 'Description' => $item->getName(), 'Qty' => $item->getQty(), 'Amount' => $amount, 'Discounted' => (bool) ($item->getBaseDiscountAmount() > 0), 'TaxIncluded' => false, 'Ref1' => $this->taxClassHelper->getRef1ForProduct($product), 'Ref2' => $this->taxClassHelper->getRef2ForProduct($product)];
 }
 /**
  * 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;
 }