Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
UpdateSourceItemBasedOnLegacyStockItem.php
Go to the documentation of this file.
1 <?php
6 declare(strict_types=1);
7 
9 
12 use Magento\InventoryApi\Api\Data\SourceItemInterfaceFactory;
16 
18 {
22  private $sourceItemFactory;
23 
27  private $sourceItemsSave;
28 
32  private $defaultSourceProvider;
33 
37  private $getSkusByProductIds;
38 
42  private $getDefaultSourceItemBySku;
43 
52  public function __construct(
53  SourceItemInterfaceFactory $sourceItemFactory,
54  SourceItemsSaveInterface $sourceItemsSave,
55  DefaultSourceProviderInterface $defaultSourceProvider,
56  GetSkusByProductIdsInterface $getSkusByProductIds,
57  GetDefaultSourceItemBySku $getDefaultSourceItemBySku
58  ) {
59  $this->sourceItemFactory = $sourceItemFactory;
60  $this->sourceItemsSave = $sourceItemsSave;
61  $this->getSkusByProductIds = $getSkusByProductIds;
62  $this->getDefaultSourceItemBySku = $getDefaultSourceItemBySku;
63  $this->defaultSourceProvider = $defaultSourceProvider;
64  }
65 
73  public function execute(Item $legacyStockItem)
74  {
75  $productSku = $this->getSkusByProductIds
76  ->execute([$legacyStockItem->getProductId()])[$legacyStockItem->getProductId()];
77 
78  $sourceItem = $this->getDefaultSourceItemBySku->execute($productSku);
79  if ($sourceItem === null) {
81  $sourceItem = $this->sourceItemFactory->create();
82  $sourceItem->setSourceCode($this->defaultSourceProvider->getCode());
83  $sourceItem->setSku($productSku);
84  }
85 
86  $sourceItem->setQuantity((float)$legacyStockItem->getQty());
87  $sourceItem->setStatus((int)$legacyStockItem->getIsInStock());
88 
89  $this->sourceItemsSave->execute([$sourceItem]);
90  }
91 }
$sourceItemFactory
$sourceItemsSave
__construct(SourceItemInterfaceFactory $sourceItemFactory, SourceItemsSaveInterface $sourceItemsSave, DefaultSourceProviderInterface $defaultSourceProvider, GetSkusByProductIdsInterface $getSkusByProductIds, GetDefaultSourceItemBySku $getDefaultSourceItemBySku)