21 private $stockManagement;
26 private $stockIndexerProcessor;
31 private $priceIndexer;
36 private $storeManager;
41 private $orderItemRepository;
52 \
Magento\CatalogInventory\Api\StockManagementInterface $stockManagement,
53 \
Magento\CatalogInventory\Model\Indexer\Stock\Processor $stockIndexer,
54 \
Magento\Catalog\Model\Indexer\Product\Price\Processor $priceIndexer,
55 \
Magento\Store\Model\StoreManagerInterface $storeManager,
58 $this->stockManagement = $stockManagement;
59 $this->stockIndexerProcessor = $stockIndexer;
60 $this->priceIndexer = $priceIndexer;
62 $this->orderItemRepository = $orderItemRepository;
75 array $returnToStockItems = [],
83 $qty =
$item->getQty();
84 if ($isAutoReturn || $this->canReturnItem(
$item, $qty, $parentItemId, $returnToStockItems)) {
93 if (!empty($itemsToUpdate)) {
94 $store = $this->storeManager->getStore(
$order->getStoreId());
95 foreach ($itemsToUpdate as
$productId => $qty) {
96 $this->stockManagement->backItemQty(
103 $updatedItemIds = array_keys($itemsToUpdate);
104 $this->stockIndexerProcessor->reindexList($updatedItemIds);
105 $this->priceIndexer->reindexList($updatedItemIds);
116 private function canReturnItem(
119 $parentItemId =
null,
120 array $returnToStockItems = []
122 return (in_array(
$item->getOrderItemId(), $returnToStockItems) || in_array($parentItemId, $returnToStockItems))
__construct(\Magento\CatalogInventory\Api\StockManagementInterface $stockManagement, \Magento\CatalogInventory\Model\Indexer\Stock\Processor $stockIndexer, \Magento\Catalog\Model\Indexer\Product\Price\Processor $priceIndexer, \Magento\Store\Model\StoreManagerInterface $storeManager, \Magento\Sales\Api\OrderItemRepositoryInterface $orderItemRepository)
execute(CreditmemoInterface $creditmemo, OrderInterface $order, array $returnToStockItems=[], $isAutoReturn=false)