- Модуль: 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;
}