/** * @param QuoteAddress $address * @param bool $useBaseCurrency * @return \Magento\Tax\Api\Data\QuoteDetailsItemInterface */ public function getShippingDataObject(QuoteAddress $address, $useBaseCurrency) { if ($address->getShippingTaxCalculationAmount() === null) { //Save the original shipping amount because shipping amount will be overridden //with shipping amount excluding tax $address->setShippingTaxCalculationAmount($address->getShippingAmount()); $address->setBaseShippingTaxCalculationAmount($address->getBaseShippingAmount()); } if ($address->getShippingTaxCalculationAmount() !== null) { /** @var \Magento\Tax\Api\Data\QuoteDetailsItemInterface $itemDataObject */ $itemDataObject = $this->quoteDetailsItemDataObjectFactory->create()->setType(self::ITEM_TYPE_SHIPPING)->setCode(self::ITEM_CODE_SHIPPING)->setQuantity(1); if ($useBaseCurrency) { $itemDataObject->setUnitPrice($address->getBaseShippingTaxCalculationAmount()); } else { $itemDataObject->setUnitPrice($address->getShippingTaxCalculationAmount()); } if ($address->getShippingDiscountAmount()) { if ($useBaseCurrency) { $itemDataObject->setDiscountAmount($address->getBaseShippingDiscountAmount()); } else { $itemDataObject->setDiscountAmount($address->getShippingDiscountAmount()); } } $itemDataObject->setTaxClassKey($this->taxClassKeyDataObjectFactory->create()->setType(TaxClassKeyInterface::TYPE_ID)->setValue($this->_config->getShippingTaxClass($address->getQuote()->getStore()))); $itemDataObject->setIsTaxIncluded($this->_config->shippingPriceIncludesTax($address->getQuote()->getStore())); return $itemDataObject; } return null; }