12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\CatalogInventory\Model;
- use Magento\Catalog\Api\Data\ProductInterface;
- use Magento\CatalogInventory\Api\Data\StockItemInterface;
- use Magento\CatalogInventory\Api\StockConfigurationInterface;
- use Magento\CatalogInventory\Api\StockRegistryInterface;
- use Magento\Framework\Exception\LocalizedException;
- /**
- * StockItemValidator
- */
- class StockItemValidator
- {
- /**
- * @var StockConfigurationInterface
- */
- private $stockConfiguration;
- /**
- * @var StockRegistryInterface
- */
- private $stockRegistry;
- /**
- * @param StockConfigurationInterface $stockConfiguration
- * @param StockRegistryInterface $stockRegistry
- */
- public function __construct(
- StockConfigurationInterface $stockConfiguration,
- StockRegistryInterface $stockRegistry
- ) {
- $this->stockConfiguration = $stockConfiguration;
- $this->stockRegistry = $stockRegistry;
- }
- /**
- * Validate Stock item
- *
- * @param ProductInterface $product
- * @param StockItemInterface $stockItem
- * @throws LocalizedException
- * @return void
- */
- public function validate(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(
- __(
- 'The "%1" value is invalid for stock ID. Enter stock with a default value of %2 to try again.',
- $stockId,
- $defaultStockId
- )
- );
- }
- $stockItemId = $stockItem->getItemId();
- if ($stockItemId !== null && (!is_numeric($stockItemId) || $stockItemId <= 0)) {
- throw new LocalizedException(
- __(
- 'The "%1" value is invalid for stock item ID. '
- . 'Enter either zero or a number than zero to try again.',
- $stockItemId
- )
- );
- }
- $defaultStockItemId = $this->stockRegistry->getStockItem($product->getId())->getItemId();
- if ($defaultStockItemId && $stockItemId !== null && $defaultStockItemId != $stockItemId) {
- throw new LocalizedException(
- __(
- 'The "%1" value is invalid for stock item ID. '
- . 'Use the stock item ID\'s assigned "%2" value and try again.',
- $stockItemId,
- $defaultStockItemId
- )
- );
- }
- }
- }
|