/** * @param \Magento\Framework\Event\Observer $observer * @return void */ public function execute(\Magento\Framework\Event\Observer $observer) { if ($observer->getEvent()->getState() != \Magento\Sales\Model\Order::STATE_NEW) { return; } $status = $observer->getEvent()->getStatus(); $defaultStatus = $this->_salesOrderConfig->getStateDefaultStatus(\Magento\Sales\Model\Order::STATE_NEW); $methods = $this->_paymentConfig->getActiveMethods(); foreach ($methods as $method) { if ($method->getConfigData('order_status') == $status) { $this->_resourceConfig->saveConfig('payment/' . $method->getCode() . '/order_status', $defaultStatus, 'default', 0); } } }
/** * Gets Payu.pl-specific default status for state. * * @param string $state * @return string */ public function getStateDefaultStatus($state) { switch ($state) { case Order::STATE_PENDING_PAYMENT: return $this->scopeConfig->getValue(self::XML_PATH_ORDER_STATUS_NEW, 'store'); case Order::STATE_HOLDED: return $this->scopeConfig->getValue(self::XML_PATH_ORDER_STATUS_HOLDED, 'store'); case Order::STATE_PROCESSING: return $this->scopeConfig->getValue(self::XML_PATH_ORDER_STATUS_PROCESSING, 'store'); } return parent::getStateDefaultStatus($state); }