1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Sales\Model\ResourceModel\Order\Handler;
- use Magento\Sales\Model\Order;
- /**
- * Class State
- */
- class State
- {
- /**
- * Check order status and adjust the status before save
- *
- * @param Order $order
- * @return $this
- * @SuppressWarnings(PHPMD.CyclomaticComplexity)
- * @SuppressWarnings(PHPMD.NPathComplexity)
- */
- public function check(Order $order)
- {
- $currentState = $order->getState();
- if ($currentState == Order::STATE_NEW && $order->getIsInProcess()) {
- $order->setState(Order::STATE_PROCESSING)
- ->setStatus($order->getConfig()->getStateDefaultStatus(Order::STATE_PROCESSING));
- $currentState = Order::STATE_PROCESSING;
- }
- if (!$order->isCanceled() && !$order->canUnhold() && !$order->canInvoice()) {
- if (in_array($currentState, [Order::STATE_PROCESSING, Order::STATE_COMPLETE])
- && !$order->canCreditmemo()
- && !$order->canShip()
- ) {
- $order->setState(Order::STATE_CLOSED)
- ->setStatus($order->getConfig()->getStateDefaultStatus(Order::STATE_CLOSED));
- } elseif ($currentState === Order::STATE_PROCESSING && !$order->canShip()) {
- $order->setState(Order::STATE_COMPLETE)
- ->setStatus($order->getConfig()->getStateDefaultStatus(Order::STATE_COMPLETE));
- }
- }
- return $this;
- }
- }
|