/** * Disable creation for default stock item on product save. * * @param \Magento\CatalogInventory\Model\StockRegistry $subject * @param \Closure $proceed * @param string $productSku * @param \Magento\CatalogInventory\Api\Data\StockItemInterface $stockItem * @return int */ public function aroundUpdateStockItemBySku(\Magento\CatalogInventory\Model\StockRegistry $subject, \Closure $proceed, $productSku, \Magento\CatalogInventory\Api\Data\StockItemInterface $stockItem) { $result = null; $stockId = $stockItem->getStockId(); if ($stockId) { $result = $proceed($productSku, $stockItem); } return $result; }
/** * @param ProductInterface $product * @param StockItemInterface $stockItem * @throws LocalizedException * @return void */ private function validateStockItem(ProductInterface $product, StockItemInterface $stockItem) { $defaultScopeId = $this->stockConfiguration->getDefaultScopeId(); $defaultStockId = $this->stockRegistry->getStock($defaultScopeId)->getStockId(); $stockId = $stockItem->getStockId(); if ($stockId !== null && $stockId != $defaultStockId) { throw new LocalizedException(__('Invalid stock id: %1. Only default stock with id %2 allowed', $stockId, $defaultStockId)); } $stockItemId = $stockItem->getItemId(); if ($stockItemId !== null && (!is_numeric($stockItemId) || $stockItemId <= 0)) { throw new LocalizedException(__('Invalid stock item id: %1. Should be null or numeric value greater than 0', $stockItemId)); } $defaultStockItemId = $this->stockRegistry->getStockItem($product->getId())->getItemId(); if ($defaultStockItemId && $stockItemId !== null && $defaultStockItemId != $stockItemId) { throw new LocalizedException(__('Invalid stock item id: %1. Assigned stock item id is %2', $stockItemId, $defaultStockItemId)); } }