6 declare(strict_types=1);
12 use Magento\InventorySalesApi\Api\Data\ProductSalabilityErrorInterfaceFactory;
14 use Magento\InventorySalesApi\Api\Data\ProductSalableResultInterfaceFactory;
26 private $getStockItemConfiguration;
31 private $getStockItemData;
36 private $productSalableResultFactory;
41 private $productSalabilityErrorFactory;
52 ProductSalableResultInterfaceFactory $productSalableResultFactory,
53 ProductSalabilityErrorInterfaceFactory $productSalabilityErrorFactory
55 $this->getStockItemConfiguration = $getStockItemConfiguration;
56 $this->getStockItemData = $getStockItemData;
57 $this->productSalableResultFactory = $productSalableResultFactory;
58 $this->productSalabilityErrorFactory = $productSalabilityErrorFactory;
66 $stockItemConfiguration = $this->getStockItemConfiguration->execute($sku, $stockId);
69 $stockItemData = $this->getStockItemData->execute($sku, $stockId);
70 if (
null === $stockItemData) {
71 return $this->productSalableResultFactory->create([
'errors' => []]);
75 if ($backOrderQty > 0) {
77 $this->productSalabilityErrorFactory->create([
78 'code' =>
'back_order-not-enough',
80 'We don\'t have as many quantity as you requested, ' 81 .
'but we\'ll back order the remaining %1.',
85 return $this->productSalableResultFactory->create([
'errors' =>
$errors]);
89 return $this->productSalableResultFactory->create([
'errors' => []]);
const BACKORDERS_YES_NOTIFY
__construct(GetStockItemConfigurationInterface $getStockItemConfiguration, GetStockItemDataInterface $getStockItemData, ProductSalableResultInterfaceFactory $productSalableResultFactory, ProductSalabilityErrorInterfaceFactory $productSalabilityErrorFactory)
execute(string $sku, int $stockId, float $requestedQty)