/** * Subtract ordered qty for product * * @param \Magento\Framework\Object $item * @return $this * @throws \Magento\Framework\Model\Exception */ public function registerItemSale(\Magento\Framework\Object $item) { $productId = $item->getProductId(); if (!$productId) { throw new \Magento\Framework\Model\Exception(__('We cannot specify a product identifier for the order item.')); } /** @var Item $stockItem */ $stockItem = $this->_stockItemFactory->create()->loadByProduct($productId); if ($this->stockItemService->isQty($this->getProductType($productId))) { if ($item->getStoreId()) { $stockItem->setStoreId($item->getStoreId()); } if ($stockItem->checkQty($item->getQtyOrdered())) { $stockItem->subtractQty($item->getQtyOrdered()); $stockItem->save(); } } return $this; }
/** * 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)); }