6 declare(strict_types=1);
12 use Magento\InventorySourceDeductionApi\Model\ItemToDeductInterfaceFactory;
14 use Magento\InventorySourceDeductionApi\Model\SourceDeductionRequestInterfaceFactory;
17 use Magento\InventorySalesApi\Api\Data\SalesChannelInterfaceFactory;
26 private $sourceDeductionRequestFactory;
31 private $itemToDeductFactory;
36 private $salesChannelFactory;
41 private $websiteRepository;
50 SourceDeductionRequestInterfaceFactory $sourceDeductionRequestFactory,
51 ItemToDeductInterfaceFactory $itemToDeductFactory,
52 SalesChannelInterfaceFactory $salesChannelFactory,
55 $this->sourceDeductionRequestFactory = $sourceDeductionRequestFactory;
56 $this->itemToDeductFactory = $itemToDeductFactory;
67 public function create(
72 $sourceDeductionRequests = [];
74 $salesChannel = $this->salesChannelFactory->create([
83 $sourceDeductionRequests[] = $this->sourceDeductionRequestFactory->create([
86 'salesChannel' => $salesChannel,
87 'salesEvent' => $salesEvent
90 return $sourceDeductionRequests;
97 private function getItemsPerSource(array $sourceSelectionItems)
100 foreach ($sourceSelectionItems as $sourceSelectionItem) {
101 if ($sourceSelectionItem->getQtyToDeduct() < 0.000001) {
104 if (!isset($itemsPerSource[$sourceSelectionItem->getSourceCode()])) {
105 $itemsPerSource[$sourceSelectionItem->getSourceCode()] = [];
107 $itemsPerSource[$sourceSelectionItem->getSourceCode()][] = $this->itemToDeductFactory->create([
108 'sku' => $sourceSelectionItem->getSku(),
109 'qty' => $sourceSelectionItem->getQtyToDeduct(),
112 return $itemsPerSource;
__construct(SourceDeductionRequestInterfaceFactory $sourceDeductionRequestFactory, ItemToDeductInterfaceFactory $itemToDeductFactory, SalesChannelInterfaceFactory $salesChannelFactory, WebsiteRepositoryInterface $websiteRepository)
getSourceSelectionItems()
if(!isset($_GET['website_code'])) $websiteCode