/** * {@inheritdoc} */ public function isStockSufficient(StockableInterface $stockable, $quantity) { if (true === $this->backorders || $stockable->isAvailableOnDemand()) { return true; } return $quantity <= $stockable->getOnHand(); }
public function __construct(StockableInterface $stockable, $quantity) { parent::__construct(sprintf('Only %d %s(s) on hand, %d requested.', $stockable->getOnHand(), $stockable->getInventoryName(), $quantity)); }
/** * {@inheritdoc} */ public function fillBackorders(StockableInterface $stockable) { $onHand = $stockable->getOnHand(); if ($onHand <= 0) { return; } $units = $this->repository->findBy(array('stockable' => $stockable, 'inventoryState' => InventoryUnitInterface::STATE_BACKORDERED), array('createdAt' => 'ASC')); foreach ($units as $unit) { $unit->setInventoryState(InventoryUnitInterface::STATE_SOLD); if (--$onHand === 0) { break; } } $stockable->setOnHand($onHand); }