12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- declare(strict_types=1);
- namespace Magento\InventoryCatalog\Model;
- use Magento\CatalogInventory\Model\Stock\Item;
- use Magento\InventoryApi\Api\Data\SourceItemInterface;
- use Magento\InventoryApi\Api\Data\SourceItemInterfaceFactory;
- use Magento\InventoryApi\Api\SourceItemsSaveInterface;
- use Magento\InventoryCatalogApi\Api\DefaultSourceProviderInterface;
- use Magento\InventoryCatalogApi\Model\GetSkusByProductIdsInterface;
- class UpdateSourceItemBasedOnLegacyStockItem
- {
- /**
- * @var SourceItemInterfaceFactory
- */
- private $sourceItemFactory;
- /**
- * @var SourceItemsSaveInterface
- */
- private $sourceItemsSave;
- /**
- * @var DefaultSourceProviderInterface
- */
- private $defaultSourceProvider;
- /**
- * @var GetSkusByProductIdsInterface
- */
- private $getSkusByProductIds;
- /**
- * @var GetDefaultSourceItemBySku
- */
- private $getDefaultSourceItemBySku;
- /**
- * @param SourceItemInterfaceFactory $sourceItemFactory
- * @param SourceItemsSaveInterface $sourceItemsSave
- * @param DefaultSourceProviderInterface $defaultSourceProvider
- * @param GetSkusByProductIdsInterface $getSkusByProductIds
- * @param GetDefaultSourceItemBySku $getDefaultSourceItemBySku
- * @SuppressWarnings(PHPMD.LongVariable)
- */
- public function __construct(
- SourceItemInterfaceFactory $sourceItemFactory,
- SourceItemsSaveInterface $sourceItemsSave,
- DefaultSourceProviderInterface $defaultSourceProvider,
- GetSkusByProductIdsInterface $getSkusByProductIds,
- GetDefaultSourceItemBySku $getDefaultSourceItemBySku
- ) {
- $this->sourceItemFactory = $sourceItemFactory;
- $this->sourceItemsSave = $sourceItemsSave;
- $this->getSkusByProductIds = $getSkusByProductIds;
- $this->getDefaultSourceItemBySku = $getDefaultSourceItemBySku;
- $this->defaultSourceProvider = $defaultSourceProvider;
- }
- /**
- * @param Item $legacyStockItem
- * @return void
- * @throws \Magento\Framework\Exception\CouldNotSaveException
- * @throws \Magento\Framework\Exception\InputException
- * @throws \Magento\Framework\Validation\ValidationException
- */
- public function execute(Item $legacyStockItem)
- {
- $productSku = $this->getSkusByProductIds
- ->execute([$legacyStockItem->getProductId()])[$legacyStockItem->getProductId()];
- $sourceItem = $this->getDefaultSourceItemBySku->execute($productSku);
- if ($sourceItem === null) {
- /** @var SourceItemInterface $sourceItem */
- $sourceItem = $this->sourceItemFactory->create();
- $sourceItem->setSourceCode($this->defaultSourceProvider->getCode());
- $sourceItem->setSku($productSku);
- }
- $sourceItem->setQuantity((float)$legacyStockItem->getQty());
- $sourceItem->setStatus((int)$legacyStockItem->getIsInStock());
- $this->sourceItemsSave->execute([$sourceItem]);
- }
- }
|