• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/Workflow/PaymentWorkflow.php
  • Класс: Bitrix\Crm\Workflow\PaymentWorkflow
  • Вызов: PaymentWorkflow::canSwitchToStage
public function canSwitchToStage(string $nextStage): bool
{
	$allowedStages = null;
	$currentStage = $this->getStage();

	if ($currentStage === PaymentStage::PAID)
	{
		$allowedStages = [
			PaymentStage::CANCEL,
			PaymentStage::REFUND,
			PaymentStage::NOT_PAID,
			PaymentStage::PAID,
		];
	}
	elseif ($currentStage === PaymentStage::CANCEL || $currentStage === PaymentStage::REFUND)
	{
		$allowedStages = [
			PaymentStage::PAID,
			PaymentStage::CANCEL,
			PaymentStage::REFUND,
			PaymentStage::SENT_NO_VIEWED,
		];
	}

	if (is_array($allowedStages))
	{
		return in_array($nextStage, $allowedStages);
	}

	return true;
}