RefundOrderInventoryObserver.php 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\SalesInventory\Observer;
  7. use Magento\CatalogInventory\Api\StockConfigurationInterface;
  8. use Magento\CatalogInventory\Api\StockManagementInterface;
  9. use Magento\Framework\Event\Observer as EventObserver;
  10. use Magento\Framework\Event\ObserverInterface;
  11. use Magento\SalesInventory\Model\Order\ReturnProcessor;
  12. /**
  13. * Catalog inventory module observer
  14. * @deprecated 100.2.0
  15. */
  16. class RefundOrderInventoryObserver implements ObserverInterface
  17. {
  18. /**
  19. * @var StockConfigurationInterface
  20. */
  21. private $stockConfiguration;
  22. /**
  23. * @var StockManagementInterface
  24. */
  25. private $stockManagement;
  26. /**
  27. * @var \Magento\CatalogInventory\Model\Indexer\Stock\Processor
  28. */
  29. private $stockIndexerProcessor;
  30. /**
  31. * @var \Magento\Catalog\Model\Indexer\Product\Price\Processor
  32. */
  33. private $priceIndexer;
  34. /**
  35. * @var \Magento\SalesInventory\Model\Order\ReturnProcessor
  36. */
  37. private $returnProcessor;
  38. /**
  39. * @var \Magento\Sales\Api\OrderRepositoryInterface
  40. */
  41. private $orderRepository;
  42. /**
  43. * RefundOrderInventoryObserver constructor.
  44. * @param StockConfigurationInterface $stockConfiguration
  45. * @param StockManagementInterface $stockManagement
  46. * @param \Magento\CatalogInventory\Model\Indexer\Stock\Processor $stockIndexerProcessor
  47. * @param \Magento\Catalog\Model\Indexer\Product\Price\Processor $priceIndexer
  48. * @param ReturnProcessor $returnProcessor
  49. * @param \Magento\Sales\Api\OrderRepositoryInterface $orderRepository
  50. */
  51. public function __construct(
  52. StockConfigurationInterface $stockConfiguration,
  53. StockManagementInterface $stockManagement,
  54. \Magento\CatalogInventory\Model\Indexer\Stock\Processor $stockIndexerProcessor,
  55. \Magento\Catalog\Model\Indexer\Product\Price\Processor $priceIndexer,
  56. \Magento\SalesInventory\Model\Order\ReturnProcessor $returnProcessor,
  57. \Magento\Sales\Api\OrderRepositoryInterface $orderRepository
  58. ) {
  59. $this->stockConfiguration = $stockConfiguration;
  60. $this->stockManagement = $stockManagement;
  61. $this->stockIndexerProcessor = $stockIndexerProcessor;
  62. $this->priceIndexer = $priceIndexer;
  63. $this->returnProcessor = $returnProcessor;
  64. $this->orderRepository = $orderRepository;
  65. }
  66. /**
  67. * Return creditmemo items qty to stock
  68. *
  69. * @param EventObserver $observer
  70. * @return void
  71. */
  72. public function execute(EventObserver $observer)
  73. {
  74. /* @var $creditmemo \Magento\Sales\Model\Order\Creditmemo */
  75. $creditmemo = $observer->getEvent()->getCreditmemo();
  76. $order = $this->orderRepository->get($creditmemo->getOrderId());
  77. $returnToStockItems = [];
  78. foreach ($creditmemo->getItems() as $item) {
  79. if ($item->getBackToStock()) {
  80. $returnToStockItems[] = $item->getOrderItemId();
  81. }
  82. }
  83. if (!empty($returnToStockItems)) {
  84. $this->returnProcessor->execute($creditmemo, $order, $returnToStockItems);
  85. }
  86. }
  87. }