isConfigured()) { return self::NOT_CONFIGURED; } if ($order->getPaymentMethodId() !== ModuleInfo::PAYMENT_METHOD_ID) { return self::OTHER_PAYMENT_METHOD; } if (self::isPaid($settings, $order)) { return self::ALREADY_PAID; } if ($order->getStatusId() === self::STATUS_CANCELLED) { return self::CANCELLED; } if (!$settings->isPayableRightAfterCheckout() && $order->getStatusId() !== $settings->getPayableStatus()) { return self::AWAITING_STATUS; } if (AssistantProtocol::normalizeCurrency($shopCurrency) === null) { return self::UNSUPPORTED_CURRENCY; } if (!$order->getAmount()->isPositive()) { return self::ZERO_AMOUNT; } return self::PAYABLE; } /** * Оплачен: флаг `paid` ядра или статус «после оплаты» из настроек модуля. */ public static function isPaid(Settings $settings, Order $order): bool { return $order->isPaidFlag() || ($order->getStatusId() === $settings->getPaidStatus()); } }