UpdateOrderStatusForPaymentMethodsObserver.php 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Payment\Observer;
  7. use Magento\Framework\Event\ObserverInterface;
  8. class UpdateOrderStatusForPaymentMethodsObserver implements ObserverInterface
  9. {
  10. /**
  11. * @var \Magento\Sales\Model\Order\Config
  12. */
  13. protected $_salesOrderConfig;
  14. /**
  15. * @var \Magento\Payment\Model\Config
  16. */
  17. protected $_paymentConfig;
  18. /**
  19. * @var \Magento\Config\Model\ResourceModel\Config
  20. */
  21. protected $_resourceConfig;
  22. /**
  23. * Construct
  24. *
  25. * @param \Magento\Sales\Model\Order\Config $salesOrderConfig
  26. * @param \Magento\Payment\Model\Config $paymentConfig
  27. * @param \Magento\Config\Model\ResourceModel\Config $resourceConfig
  28. */
  29. public function __construct(
  30. \Magento\Sales\Model\Order\Config $salesOrderConfig,
  31. \Magento\Payment\Model\Config $paymentConfig,
  32. \Magento\Config\Model\ResourceModel\Config $resourceConfig
  33. ) {
  34. $this->_salesOrderConfig = $salesOrderConfig;
  35. $this->_paymentConfig = $paymentConfig;
  36. $this->_resourceConfig = $resourceConfig;
  37. }
  38. /**
  39. * @param \Magento\Framework\Event\Observer $observer
  40. * @return void
  41. */
  42. public function execute(\Magento\Framework\Event\Observer $observer)
  43. {
  44. if ($observer->getEvent()->getState() != \Magento\Sales\Model\Order::STATE_NEW) {
  45. return;
  46. }
  47. $status = $observer->getEvent()->getStatus();
  48. $defaultStatus = $this->_salesOrderConfig->getStateDefaultStatus(\Magento\Sales\Model\Order::STATE_NEW);
  49. $methods = $this->_paymentConfig->getActiveMethods();
  50. foreach ($methods as $method) {
  51. if ($method->getConfigData('order_status') == $status) {
  52. $this->_resourceConfig->saveConfig(
  53. 'payment/' . $method->getCode() . '/order_status',
  54. $defaultStatus,
  55. 'default',
  56. 0
  57. );
  58. }
  59. }
  60. }
  61. }