6 declare(strict_types=1);
12 use Magento\InventorySalesApi\Model\ReturnProcessor\Result\SourceDeductedOrderItemsResultFactory;
20 private $sourceDeductedItemsSelector;
25 private $sourceDeductedOrderItemsResultFactory;
33 SourceDeductedOrderItemsResultFactory $sourceDeductedOrderItemsResultFactory,
34 array $sourceDeductedItemsSelector = []
36 foreach ($sourceDeductedItemsSelector as $selector) {
39 __(
'%1 doesn\'t implement GetSourceDeductedOrderItemsInterface', get_class($selector))
43 $this->sourceDeductedItemsSelector = $sourceDeductedItemsSelector;
44 $this->sourceDeductedOrderItemsResultFactory = $sourceDeductedOrderItemsResultFactory;
52 $sourceDeductedItems = [];
53 foreach ($this->sourceDeductedItemsSelector as $selector) {
54 $resultItems = $selector->execute(
$order, $returnToStockItems);
55 if (!empty($resultItems)) {
56 $sourceDeductedItems[] = $resultItems;
60 return $this->groupResultBySourceCode($sourceDeductedItems);
67 private function groupResultBySourceCode($sourceDeductedItems): array
70 foreach ($sourceDeductedItems as $resultItems) {
71 foreach ($resultItems as $resultItem) {
72 if (!empty($groupedItems[$resultItem->getSourceCode()])) {
73 $resultArray = array_merge($groupedItems[$resultItem->getSourceCode()], $resultItem->getItems());
74 $groupedItems[$resultItem->getSourceCode()] = $resultArray;
76 $groupedItems[$resultItem->getSourceCode()] = $resultItem->getItems();
82 $result[] = $this->sourceDeductedOrderItemsResultFactory->create([
__construct(SourceDeductedOrderItemsResultFactory $sourceDeductedOrderItemsResultFactory, array $sourceDeductedItemsSelector=[])
execute(OrderInterface $order, array $returnToStockItems)