public function testGetAllItems() { $totals = $this->_prepareValidModelData(); $this->assertEquals([new \Magento\Framework\DataObject(['name' => $this->_validItem->getName(), 'qty' => $this->_validItem->getQty(), 'amount' => $this->_validItem->getPrice()])], $this->_model->getAllItems()); $this->assertEquals($totals['subtotal'], $this->_model->getSubtotal()); $this->assertEquals($totals['tax'], $this->_model->getTax()); $this->assertEquals($totals['shipping'], $this->_model->getShipping()); $this->assertEquals($totals['discount'], $this->_model->getDiscount()); }
/** * @param \Magento\Quote\Model\Quote $quote * @param \Magento\Catalog\Model\Product $product * @param \Magento\Framework\DataObject $config * @return \Magento\Quote\Model\Quote\Item|string */ public function init(\Magento\Quote\Model\Quote $quote, \Magento\Catalog\Model\Product $product, \Magento\Framework\DataObject $config) { $stockItem = $this->stockRegistry->getStockItem($product->getId(), $quote->getStore()->getWebsiteId()); if ($stockItem->getIsQtyDecimal()) { $product->setIsQtyDecimal(1); } else { $config->setQty((int) $config->getQty()); } $product->setCartQty($config->getQty()); $item = $quote->addProduct($product, $config, \Magento\Catalog\Model\Product\Type\AbstractType::PROCESS_MODE_FULL); return $item; }
/** * Get item qty * * @param \Magento\Framework\DataObject $item * @return int */ public function getItemQty(\Magento\Framework\DataObject $item) { return $item->getQty() * 1 ? $item->getQty() * 1 : 1; }
/** * Get sales item (quote item, order item etc) price including tax based on row total and tax amount * * @param \Magento\Framework\DataObject $item * @return float */ public function getPriceInclTax($item) { if ($item->getPriceInclTax()) { return $item->getPriceInclTax(); } $qty = $item->getQty() ? $item->getQty() : ($item->getQtyOrdered() ? $item->getQtyOrdered() : 1); $taxAmount = $item->getTaxAmount() + $item->getDiscountTaxCompensation(); $price = floatval($qty) ? ($item->getRowTotal() + $taxAmount) / $qty : 0; return $this->priceCurrency->round($price); }