Skip to content

Commit bd2eeb4

Browse files
committed
MAGETWO-54658: Order status change after Invoice creation through API
1 parent c798943 commit bd2eeb4

File tree

1 file changed

+28
-2
lines changed

1 file changed

+28
-2
lines changed

app/code/Magento/Sales/Model/Order/StateResolver.php

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,32 @@ private function checkIsOrderClosed(OrderInterface $order, $arguments)
5050
return false;
5151
}
5252

53+
/**
54+
* Check is order in cancel state
55+
*
56+
* @param OrderInterface $order
57+
* @param array $arguments
58+
* @return bool
59+
*/
60+
private function checkIsOrderProcessing(OrderInterface $order, $arguments)
61+
{
62+
/** @var $order Order|OrderInterface */
63+
if ($order->getState() == Order::STATE_NEW && in_array(self::IN_PROGRESS, $arguments)) {
64+
return true;
65+
}
66+
return false;
67+
}
68+
/**
69+
* Returns initial state for order
70+
*
71+
* @param OrderInterface $order
72+
* @return string
73+
*/
74+
private function getInitialOrderState(OrderInterface $order)
75+
{
76+
return $order->getState() === Order::STATE_PROCESSING ? Order::STATE_PROCESSING : Order::STATE_NEW;
77+
}
78+
5379
/**
5480
* @param OrderInterface $order
5581
* @param array $arguments
@@ -58,15 +84,15 @@ private function checkIsOrderClosed(OrderInterface $order, $arguments)
5884
public function getStateForOrder(OrderInterface $order, array $arguments = [])
5985
{
6086
/** @var $order Order|OrderInterface */
61-
$orderState = $order->getState() === Order::STATE_PROCESSING ? Order::STATE_PROCESSING : Order::STATE_NEW;
87+
$orderState = $this->getInitialOrderState($order);
6288
if (!$order->isCanceled() && !$order->canUnhold() && !$order->canInvoice() && !$order->canShip()) {
6389
if ($this->checkIsOrderComplete($order)) {
6490
$orderState = Order::STATE_COMPLETE;
6591
} elseif ($this->checkIsOrderClosed($order, $arguments)) {
6692
$orderState = Order::STATE_CLOSED;
6793
}
6894
}
69-
if ($order->getState() == Order::STATE_NEW && in_array(self::IN_PROGRESS, $arguments)) {
95+
if ($this->checkIsOrderProcessing($order, $arguments)) {
7096
$orderState = Order::STATE_PROCESSING;
7197
}
7298
return $orderState;

0 commit comments

Comments
 (0)