6 declare(strict_types=1);
15 use Magento\InventorySalesApi\Api\Data\ItemToSellInterfaceFactory;
17 use Magento\InventorySalesApi\Api\Data\SalesChannelInterfaceFactory;
18 use Magento\InventorySalesApi\Api\Data\SalesEventInterfaceFactory;
30 private $getSkusByProductIds;
35 private $salesEventFactory;
40 private $salesChannelFactory;
45 private $itemsToSellFactory;
50 private $websiteRepository;
55 private $placeReservationsForSalesEvent;
60 private $isSourceItemManagementAllowedForProductType;
65 private $getProductTypesBySkus;
79 SalesEventInterfaceFactory $salesEventFactory,
80 SalesChannelInterfaceFactory $salesChannelFactory,
81 ItemToSellInterfaceFactory $itemsToSellFactory,
87 $this->getSkusByProductIds = $getSkusByProductIds;
88 $this->isSourceItemManagementAllowedForProductType = $isSourceItemManagementAllowedForProductType;
89 $this->getProductTypesBySkus = $getProductTypesBySkus;
90 $this->salesEventFactory = $salesEventFactory;
92 $this->itemsToSellFactory = $itemsToSellFactory;
94 $this->placeReservationsForSalesEvent = $placeReservationsForSalesEvent;
121 $salesChannel = $this->salesChannelFactory->create([
128 $salesEvent = $this->salesEventFactory->create([
129 'type' =>
'revert_products_sale',
130 'objectType' =>
'legacy_stock_management_api',
139 if (
true === $this->isSourceItemManagementAllowedForProductType->execute(
$productTypes[$sku])) {
140 $itemsToSell[] = $this->itemsToSellFactory->create([
147 $this->placeReservationsForSalesEvent->execute($itemsToSell, $salesChannel, $salesEvent);
__construct(GetSkusByProductIdsInterface $getSkusByProductIds, SalesEventInterfaceFactory $salesEventFactory, SalesChannelInterfaceFactory $salesChannelFactory, ItemToSellInterfaceFactory $itemsToSellFactory, WebsiteRepositoryInterface $websiteRepository, PlaceReservationsForSalesEventInterface $placeReservationsForSalesEvent, IsSourceItemManagementAllowedForProductTypeInterface $isSourceItemManagementAllowedForProductType, GetProductTypesBySkusInterface $getProductTypesBySkus)
if(!isset($_GET['website_code'])) $websiteCode
aroundRevertProductsSale(StockManagement $subject, callable $proceed, $items, $websiteId=null)