/** * Get Stock Data * * @param StockItemInterface $stockItem * @return array */ private function getData(StockItemInterface $stockItem) { $result = $stockItem->getData(); $result[StockItemInterface::MANAGE_STOCK] = (int) $stockItem->getManageStock(); $result[StockItemInterface::QTY] = (double) $stockItem->getQty(); $result[StockItemInterface::MIN_QTY] = (double) $stockItem->getMinQty(); $result[StockItemInterface::MIN_SALE_QTY] = (double) $stockItem->getMinSaleQty(); $result[StockItemInterface::MAX_SALE_QTY] = (double) $stockItem->getMaxSaleQty(); $result[StockItemInterface::IS_QTY_DECIMAL] = (int) $stockItem->getIsQtyDecimal(); $result[StockItemInterface::IS_DECIMAL_DIVIDED] = (int) $stockItem->getIsDecimalDivided(); $result[StockItemInterface::BACKORDERS] = (int) $stockItem->getBackorders(); $result[StockItemInterface::NOTIFY_STOCK_QTY] = (double) $stockItem->getNotifyStockQty(); $result[StockItemInterface::ENABLE_QTY_INCREMENTS] = (int) $stockItem->getEnableQtyIncrements(); $result[StockItemInterface::QTY_INCREMENTS] = (double) $stockItem->getQtyIncrements(); $result[StockItemInterface::IS_IN_STOCK] = (int) $stockItem->getIsInStock(); return $result; }
/** * @param StockItemInterface $stockItem * @param float|int $qty * @return \Magento\Framework\DataObject */ public function checkQtyIncrements(StockItemInterface $stockItem, $qty) { $result = new \Magento\Framework\DataObject(); if ($stockItem->getSuppressCheckQtyIncrements()) { return $result; } $qtyIncrements = $stockItem->getQtyIncrements() * 1; if ($qtyIncrements && $this->mathDivision->getExactDivision($qty, $qtyIncrements) != 0) { $result->setHasError(true)->setQuoteMessage(__('Please correct the quantity for some products.'))->setErrorCode('qty_increments')->setQuoteMessageIndex('qty'); if ($stockItem->getIsChildItem()) { $result->setMessage(__('You can buy %1 only in quantities of %2 at a time.', $stockItem->getProductName(), $qtyIncrements)); } else { $result->setMessage(__('You can buy this product only in quantities of %1 at a time.', $qtyIncrements)); } } return $result; }