public function testGetAllItems() { $totals = $this->_prepareValidModelData(); $this->assertEquals([new \Magento\Framework\Object(['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\Object $config * @return \Magento\Quote\Model\Quote\Item|string */ public function init(\Magento\Quote\Model\Quote $quote, \Magento\Catalog\Model\Product $product, \Magento\Framework\Object $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; }
/** * @param \Magento\Sales\Model\Quote $quote * @param \Magento\Catalog\Model\Product $product * @param \Magento\Framework\Object $config * @return \Magento\Sales\Model\Quote\Item|string */ public function init(\Magento\Sales\Model\Quote $quote, \Magento\Catalog\Model\Product $product, \Magento\Framework\Object $config) { /** @var \Magento\CatalogInventory\Service\V1\Data\StockItem $stockItemDo */ $stockItemDo = $this->stockItemService->getStockItem($product->getId()); if ($stockItemDo->getStockId() && $stockItemDo->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; }
/** * Validate Product Rule Condition * * @param \Magento\Framework\Object $object * @return bool */ public function validate(\Magento\Framework\Object $object) { //@todo reimplement this method when is fixed MAGETWO-5713 /** @var \Magento\Catalog\Model\Product $product */ $product = $object->getProduct(); if (!$product instanceof \Magento\Catalog\Model\Product) { $product = $this->_productFactory->create()->load($object->getProductId()); } $product->setQuoteItemQty($object->getQty())->setQuoteItemPrice($object->getPrice())->setQuoteItemRowTotal($object->getBaseRowTotal()); return parent::validate($product); }
/** * Get item qty * * @param \Magento\Framework\Object $item * @return int */ public function getItemQty(\Magento\Framework\Object $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\Object $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); }
/** * Retrieve include tax html formatted content * * @param \Magento\Framework\Object $item * @return string */ public function displayPriceInclTax(\Magento\Framework\Object $item) { $qty = $item->getQtyOrdered() ? $item->getQtyOrdered() : ($item->getQty() ? $item->getQty() : 1); $baseTax = $item->getTaxBeforeDiscount() ? $item->getTaxBeforeDiscount() : ($item->getTaxAmount() ? $item->getTaxAmount() : 0); $tax = $item->getBaseTaxBeforeDiscount() ? $item->getBaseTaxBeforeDiscount() : ($item->getBaseTaxAmount() ? $item->getBaseTaxAmount() : 0); $basePriceTax = 0; $priceTax = 0; if (floatval($qty)) { $basePriceTax = $item->getBasePrice() + $baseTax / $qty; $priceTax = $item->getPrice() + $tax / $qty; } return $this->displayPrices($this->getOrder()->getStore()->roundPrice($basePriceTax), $this->getOrder()->getStore()->roundPrice($priceTax)); }