• Модуль: salescenter
  • Путь к файлу: ~/bitrix/modules/salescenter/lib/integration/imopenlinesmanager.php
  • Класс: BitrixSalesCenterIntegrationImOpenLinesManager
  • Вызов: ImOpenLinesManager::sendPaymentCheckNotify
public function sendPaymentCheckNotify(int $checkId, Payment $payment): Result
{
	$result = new Result();

	if ($this->isEnabled())
	{
		$check = SaleCashboxCheckManager::getObjectById($checkId);
		if (!$check)
		{
			return $result->addError(new Error('Check #'.$checkId.' is not found'));
		}

		$cashbox = SaleCashboxManager::getObjectById($check->getField('CASHBOX_ID'));
		if (!$cashbox)
		{
			return $result->addError(new Error('Cashbox #'.$check->getField('CASHBOX_ID').' is not found'));
		}

		$url = $cashbox->getCheckLink($check->getField('LINK_PARAMS'));
		if (empty($url))
		{
			return $result->addError(new Error('No public url for check #'.$checkId));
		}

		$order = $payment->getOrder();
		$responsibleId = $order->getField('RESPONSIBLE_ID');
		$dialogs = $this->getDialogIdsByUserId($order->getUserId());

		foreach ($dialogs as $dialogId)
		{
			$notifyResult = $this->sendPaymentNotify($payment, $dialogId, false);
			if (!$notifyResult->isSuccess())
			{
				$result->addErrors($notifyResult->getErrors());
			}

			$messageId = Im::addMessage([
				'DIALOG_ID' => $dialogId,
				'AUTHOR_ID' => $responsibleId,
				'FROM_USER_ID' => $responsibleId,
				'PARAMS' => $this->getCommonImParams(),
				'MESSAGE' => $this->createImMessageForPaymentCheck($payment, $url),
			]);

			if (!$messageId)
			{
				global $APPLICATION;
				$result->addError(new Error($APPLICATION->LAST_ERROR));
			}
		}

		if ($dialogs)
		{
			$bindings = [
				[
					'ENTITY_TYPE_ID' => CCrmOwnerType::Order,
					'ENTITY_ID' => $order->getId()
				]
			];

			$binding = $order->getEntityBinding();
			if ($binding)
			{
				$bindings[] = [
					'ENTITY_TYPE_ID' => $binding->getOwnerId(),
					'ENTITY_ID' => $binding->getOwnerTypeId()
				];
			}

			CrmTimelineOrderCheckController::getInstance()->onSendCheckToIm(
				$checkId,
				[
					'ORDER_FIELDS' => $order->getFieldValues(),
					'SETTINGS' => ['SENDED' => 'Y'],
					'BINDINGS' => $bindings,
				]
			);
		}
	}

	return $result;
}