• Модуль: salescenter
  • Путь к файлу: ~/bitrix/modules/salescenter/lib/integration/salemanager.php
  • Класс: BitrixSalesCenterIntegrationSaleManager
  • Вызов: SaleManager::OnCheckPrintError
static function OnCheckPrintError(Event $event): EventResult
{
	$result = new EventResult( EventResult::SUCCESS, null, 'sale');

	$parameters = $event->getParameters();
	if(empty($parameters) || !is_array($parameters))
	{
		return $result;
	}

	$data = reset($parameters);
	if(!is_array($data) || empty($data) || !isset($data['ID']) || !isset($data['ERROR']))
	{
		return $result;
	}

	$checkId = (int) $data['ID'];
	if($checkId <= 0)
	{
		return $result;
	}

	$error = $data['ERROR'];
	if(!is_array($error) || !isset($error['MESSAGE']))
	{
		return $result;
	}

	$message = (string) $error['MESSAGE'];
	if(empty($message))
	{
		return $result;
	}

	$check = SaleCashboxCheckManager::getObjectById($checkId);
	if(!$check)
	{
		return $result;
	}

	$orderId = (int)$check->getField('ORDER_ID');
	if($orderId <= 0)
	{
		return $result;
	}

	$paymentId = (int)$check->getField('PAYMENT_ID');
	if ($paymentId <= 0)
	{
		return $result;
	}

	$registry = SaleRegistry::getInstance(SaleRegistry::REGISTRY_TYPE_ORDER);
	/** @var CrmOrderOrder $orderClass */
	$orderClass = $registry->getOrderClassName();

	$order = $orderClass::load($orderId);
	if(!$order)
	{
		return $result;
	}

	$payment = $order->getPaymentCollection()->getItemById($paymentId);
	if ($payment instanceof CrmOrderPayment)
	{
		ImOpenLinesManager::getInstance()->sendPaymentCheckNotifyError($checkId, $payment, $message);
	}

	return $result;
}