6 declare(strict_types=1);
16 use Magento\InventorySalesApi\Api\Data\ItemToSellInterfaceFactory;
18 use Magento\InventorySalesApi\Api\Data\SalesChannelInterfaceFactory;
19 use Magento\InventorySalesApi\Api\Data\SalesEventInterfaceFactory;
31 private $getSkusByProductIds;
36 private $salesEventFactory;
41 private $salesChannelFactory;
46 private $itemsToSellFactory;
51 private $websiteRepository;
56 private $placeReservationsForSalesEvent;
61 private $isSourceItemManagementAllowedForProductType;
66 private $getProductTypesBySkus;
80 SalesEventInterfaceFactory $salesEventFactory,
81 SalesChannelInterfaceFactory $salesChannelFactory,
82 ItemToSellInterfaceFactory $itemsToSellFactory,
88 $this->getSkusByProductIds = $getSkusByProductIds;
89 $this->salesEventFactory = $salesEventFactory;
91 $this->itemsToSellFactory = $itemsToSellFactory;
93 $this->placeReservationsForSalesEvent = $placeReservationsForSalesEvent;
94 $this->isSourceItemManagementAllowedForProductType = $isSourceItemManagementAllowedForProductType;
95 $this->getProductTypesBySkus = $getProductTypesBySkus;
116 if (
null === $scopeId) {
132 $productType = $this->getProductTypesBySkus->execute([$productSku])[$productSku];
134 if (
true === $this->isSourceItemManagementAllowedForProductType->execute($productType)) {
135 $websiteCode = $this->websiteRepository->getById((
int)$scopeId)->getCode();
136 $salesChannel = $this->salesChannelFactory->create([
143 $salesEvent = $this->salesEventFactory->create([
144 'type' =>
'back_item_qty',
145 'objectType' =>
'legacy_stock_management_api',
149 $itemToSell = $this->itemsToSellFactory->create([
150 'sku' => $productSku,
154 $this->placeReservationsForSalesEvent->execute([$itemToSell], $salesChannel, $salesEvent);
aroundBackItemQty(StockManagement $subject, callable $proceed, $productId, $qty, $scopeId=null)
__construct(GetSkusByProductIdsInterface $getSkusByProductIds, SalesEventInterfaceFactory $salesEventFactory, SalesChannelInterfaceFactory $salesChannelFactory, ItemToSellInterfaceFactory $itemsToSellFactory, WebsiteRepositoryInterface $websiteRepository, PlaceReservationsForSalesEventInterface $placeReservationsForSalesEvent, IsSourceItemManagementAllowedForProductTypeInterface $isSourceItemManagementAllowedForProductType, GetProductTypesBySkusInterface $getProductTypesBySkus)
if(!isset($_GET['website_code'])) $websiteCode