private function resolvePaymentsState(OrderInterface $order)
    {
        $capturedTotal = $authorizedTotal = $refundTotal = $failedTotal = 0;

        $payments = $order->getPayments();
        if (0 < $payments->count()) {
            // Gather state amounts
            foreach ($payments as $payment) {
                if ($payment->getState() == PaymentStates::STATE_CAPTURED) {
                    $capturedTotal += $payment->getAmount();
                } else if ($payment->getState() == PaymentStates::STATE_AUTHORIZED) {
                    $authorizedTotal += $payment->getAmount();
                } else if ($payment->getState() == PaymentStates::STATE_REFUNDED) {
                    $refundTotal += $payment->getAmount();
                } else if ($payment->getState() == PaymentStates::STATE_FAILED) {
                    $failedTotal += $payment->getAmount();
                }
            }

            // State by amounts
            if ($capturedTotal >= $order->getAtiTotal()) {
                return PaymentStates::STATE_CAPTURED;
            } elseif ($authorizedTotal + $capturedTotal >= $order->getAtiTotal()) {
                return PaymentStates::STATE_AUTHORIZED;
            } elseif ($refundTotal >= $order->getAtiTotal()) {
                return PaymentStates::STATE_REFUNDED;
            } elseif ($failedTotal >= $order->getAtiTotal()) {
                return PaymentStates::STATE_FAILED;
            }

            // Check for offline pending payment
            foreach ($payments as $payment) {
                if (in_array($payment->getState(), [PaymentStates::STATE_PENDING, PaymentStates::STATE_PENDING])
                    && $payment->getMethod()->getFactoryName() === 'offline') {
                    return PaymentStates::STATE_PENDING;
                }
            }
        }

        return PaymentStates::STATE_NEW;
    }
private function resolvePaymentsState(OrderInterface $order)
    {
        $capturedTotal = $authorizedTotal = $refundTotal = $failedTotal = 0;

        $payments = $order->getPayments();
        if (0 < $payments->count()) {
            // Gather state amounts
            foreach ($payments as $payment) {
                if ($payment->getState() == PaymentStates::STATE_CAPTURED) {
                    $capturedTotal += $payment->getAmount();
                } else if ($payment->getState() == PaymentStates::STATE_AUTHORIZED) {
                    $authorizedTotal += $payment->getAmount();
                } else if ($payment->getState() == PaymentStates::STATE_REFUNDED) {
                    $refundTotal += $payment->getAmount();
                } else if ($payment->getState() == PaymentStates::STATE_FAILED) {
                    $failedTotal += $payment->getAmount();
                }
            }

            // State by amounts
            if ($capturedTotal >= $order->getAtiTotal()) {
                return PaymentStates::STATE_CAPTURED;
            } elseif ($authorizedTotal + $capturedTotal >= $order->getAtiTotal()) {
                return PaymentStates::STATE_AUTHORIZED;
            } elseif ($refundTotal >= $order->getAtiTotal()) {
                return PaymentStates::STATE_REFUNDED;
            } elseif ($failedTotal >= $order->getAtiTotal()) {
                return PaymentStates::STATE_FAILED;
            }

            // Check for offline pending payment
            foreach ($payments as $payment) {
                if (in_array($payment->getState(), [PaymentStates::STATE_PENDING, PaymentStates::STATE_PENDING])
                    && $payment->getMethod()->getFactoryName() === 'offline') {
                    return PaymentStates::STATE_PENDING;
                }
            }
        }

        return PaymentStates::STATE_NEW;
    }
private function resolvePaymentsState ( OrderInterface $ order ) { $ capturedTotal = $ authorizedTotal = $ refundTotal = $ failedTotal = 0 ; $ payments = $ order -> getPayments ( ) ; if ( 0 < $ payments -> count ( ) ) { // Gather state amounts foreach ( $ payments as $ payment ) { if ( $ payment -> getState ( ) == PaymentStates :: STATE_CAPTURED ) { $ capturedTotal += $ payment -> getAmount ( ) ; } else if ( $ payment -> getState ( ) == PaymentStates :: STATE_AUTHORIZED ) { $ authorizedTotal += $ payment -> getAmount ( ) ; } else if ( $ payment -> getState ( ) == PaymentStates :: STATE_REFUNDED ) { $ refundTotal += $ payment -> getAmount ( ) ; } else if ( $ payment -> getState ( ) == PaymentStates :: STATE_FAILED ) { $ failedTotal += $ payment -> getAmount ( ) ; } } // State by amounts if ( $ capturedTotal >= $ order -> getAtiTotal ( ) ) { return PaymentStates :: STATE_CAPTURED ; } elseif ( $ authorizedTotal + $ capturedTotal >= $ order -> getAtiTotal ( ) ) { return PaymentStates :: STATE_AUTHORIZED ; } elseif ( $ refundTotal >= $ order -> getAtiTotal ( ) ) { return PaymentStates :: STATE_REFUNDED ; } elseif ( $ failedTotal >= $ order -> getAtiTotal ( ) ) { return PaymentStates :: STATE_FAILED ; } // Check for offline pending payment foreach ( $ payments as $ payment ) { if ( in_array ( $ payment -> getState ( ) , [ PaymentStates :: STATE_PENDING , PaymentStates :: STATE_PENDING ] ) && $ payment -> getMethod ( ) -> getFactoryName ( ) === 'offline' ) { return PaymentStates :: STATE_PENDING ; } } } return PaymentStates :: STATE_NEW ; }
Resolves the global payment state.

@param OrderInterface $order
@return string
Resolves the global payment state .