/** * Aggregate item discount information to total data and related properties * * @param \Magento\Quote\Model\Quote\Item\AbstractItem $item * @param \Magento\Quote\Model\Quote\Address\Total $total * @return $this */ protected function aggregateItemDiscount(\Magento\Quote\Model\Quote\Item\AbstractItem $item, \Magento\Quote\Model\Quote\Address\Total $total) { $total->addTotalAmount($this->getCode(), -$item->getDiscountAmount()); $total->addBaseTotalAmount($this->getCode(), -$item->getBaseDiscountAmount()); return $this; }
/** * Map an item to item data object * * @param \Magento\Tax\Api\Data\QuoteDetailsItemInterfaceFactory $itemDataObjectFactory * @param AbstractItem $item * @param bool $priceIncludesTax * @param bool $useBaseCurrency * @param string $parentCode * @return \Magento\Tax\Api\Data\QuoteDetailsItemInterface */ public function mapItem(\Magento\Tax\Api\Data\QuoteDetailsItemInterfaceFactory $itemDataObjectFactory, AbstractItem $item, $priceIncludesTax, $useBaseCurrency, $parentCode = null) { if (!$item->getTaxCalculationItemId()) { $sequence = 'sequence-' . $this->getNextIncrement(); $item->setTaxCalculationItemId($sequence); } /** @var \Magento\Tax\Api\Data\QuoteDetailsItemInterface $itemDataObject */ $itemDataObject = $itemDataObjectFactory->create(); $itemDataObject->setCode($item->getTaxCalculationItemId())->setQuantity($item->getQty())->setTaxClassKey($this->taxClassKeyDataObjectFactory->create()->setType(TaxClassKeyInterface::TYPE_ID)->setValue($item->getProduct()->getTaxClassId()))->setIsTaxIncluded($priceIncludesTax)->setType(self::ITEM_TYPE_PRODUCT); if ($useBaseCurrency) { if (!$item->getBaseTaxCalculationPrice()) { $item->setBaseTaxCalculationPrice($item->getBaseCalculationPriceOriginal()); } $itemDataObject->setUnitPrice($item->getBaseTaxCalculationPrice())->setDiscountAmount($item->getBaseDiscountAmount()); } else { if (!$item->getTaxCalculationPrice()) { $item->setTaxCalculationPrice($item->getCalculationPriceOriginal()); } $itemDataObject->setUnitPrice($item->getTaxCalculationPrice())->setDiscountAmount($item->getDiscountAmount()); } $itemDataObject->setParentCode($parentCode); return $itemDataObject; }
/** * Calculate total amount for the item * * @param QuoteItem|Item|InvoiceItem|CreditmemoItem $item * @return mixed */ public function getTotalAmount($item) { $totalAmount = $item->getRowTotal() - $item->getDiscountAmount(); return $totalAmount; }
/** * Aggregate item discount information to address data and related properties * * @param AbstractItem $item * @return $this */ protected function _aggregateItemDiscount($item) { $this->_addAmount(-$item->getDiscountAmount()); $this->_addBaseAmount(-$item->getBaseDiscountAmount()); return $this; }