| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 | 
							- <?php
 
- /**
 
-  * Copyright © Magento, Inc. All rights reserved.
 
-  * See COPYING.txt for license details.
 
-  */
 
- namespace Magento\CatalogInventory\Observer;
 
- use Magento\CatalogInventory\Api\StockManagementInterface;
 
- use Magento\CatalogInventory\Model\Configuration;
 
- use Magento\Framework\Event\Observer as EventObserver;
 
- use Magento\Framework\Event\ObserverInterface;
 
- /**
 
-  * Catalog inventory module observer
 
-  */
 
- class CancelOrderItemObserver implements ObserverInterface
 
- {
 
-     /**
 
-      * @var \Magento\CatalogInventory\Model\Configuration
 
-      */
 
-     protected $configuration;
 
-     /**
 
-      * @var StockManagementInterface
 
-      */
 
-     protected $stockManagement;
 
-     /**
 
-      * @var \Magento\Catalog\Model\Indexer\Product\Price\Processor
 
-      */
 
-     protected $priceIndexer;
 
-     /**
 
-      * @param Configuration $configuration
 
-      * @param StockManagementInterface $stockManagement
 
-      * @param \Magento\Catalog\Model\Indexer\Product\Price\Processor $priceIndexer
 
-      */
 
-     public function __construct(
 
-         Configuration $configuration,
 
-         StockManagementInterface $stockManagement,
 
-         \Magento\Catalog\Model\Indexer\Product\Price\Processor $priceIndexer
 
-     ) {
 
-         $this->configuration = $configuration;
 
-         $this->stockManagement = $stockManagement;
 
-         $this->priceIndexer = $priceIndexer;
 
-     }
 
-     /**
 
-      * Cancel order item
 
-      *
 
-      * @param   EventObserver $observer
 
-      * @return  void
 
-      */
 
-     public function execute(EventObserver $observer)
 
-     {
 
-         /** @var \Magento\Sales\Model\Order\Item $item */
 
-         $item = $observer->getEvent()->getItem();
 
-         $children = $item->getChildrenItems();
 
-         $qty = $item->getQtyOrdered() - max($item->getQtyShipped(), $item->getQtyInvoiced()) - $item->getQtyCanceled();
 
-         if ($item->getId() && $item->getProductId() && empty($children) && $qty && $this->configuration
 
-             ->getCanBackInStock()) {
 
-             $this->stockManagement->backItemQty($item->getProductId(), $qty, $item->getStore()->getWebsiteId());
 
-         }
 
-         $this->priceIndexer->reindexRow($item->getProductId());
 
-     }
 
- }
 
 
  |