/** * @param Address $address * @param bool $useBaseCurrency * @return \Magento\Tax\Service\V1\Data\QuoteDetails\Item */ public function getShippingDataObject(Address $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) { $itemBuilder = $this->quoteDetailsBuilder->getItemBuilder(); $itemBuilder->setType(self::ITEM_TYPE_SHIPPING); $itemBuilder->setCode(self::ITEM_CODE_SHIPPING); $itemBuilder->setQuantity(1); if ($useBaseCurrency) { $itemBuilder->setUnitPrice($address->getBaseShippingTaxCalculationAmount()); } else { $itemBuilder->setUnitPrice($address->getShippingTaxCalculationAmount()); } if ($address->getShippingDiscountAmount()) { if ($useBaseCurrency) { $itemBuilder->setDiscountAmount($address->getBaseShippingDiscountAmount()); } else { $itemBuilder->setDiscountAmount($address->getShippingDiscountAmount()); } } $itemBuilder->setTaxClassKey($itemBuilder->getTaxClassKeyBuilder()->setType(TaxClassKey::TYPE_ID)->setValue($this->_config->getShippingTaxClass($address->getQuote()->getStore()))->create()); $itemBuilder->setTaxIncluded($this->_config->shippingPriceIncludesTax($address->getQuote()->getStore())); return $itemBuilder->create(); } return null; }