| Current Path : /home/rtorresani/www/vendor/magento/module-catalog-inventory/Observer/ |
| Current File : //home/rtorresani/www/vendor/magento/module-catalog-inventory/Observer/CancelOrderItemObserver.php |
<?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());
}
}