• Модуль: salescenter
  • Путь к файлу: ~/bitrix/modules/salescenter/lib/integration/crmmanager.php
  • Класс: BitrixSalesCenterIntegrationCrmManager
  • Вызов: CrmManager::sendPaymentSlipBySms
public function sendPaymentSlipBySms(Payment $payment): bool
{
	$paymentSlipManager = PaymentSlipManager::getManager();
	if (!$paymentSlipManager)
	{
		return false;
	}

	$paymentSlipConfig = $paymentSlipManager->getConfig();
	if (!$paymentSlipConfig->isSendingEnabled())
	{
		return false;
	}

	$messageBody = str_replace(
		'#CHECK_URL#',
		PaymentSlip::getFullPathToSlip($payment->getId()),
		Loc::getMessage('SALESCENTER_CRMMANAGER_TERMINAL_PAYMENT_PAID_SMS_TEMPLATE')
	);

	$senders = [];
	if ($paymentSlipConfig->isNotificationsEnabled())
	{
		$senders = [
			CrmIntegrationNotificationsManager::getSenderCode() => [
				'ACTIVITY_PROVIDER_TYPE_ID' => BaseMessage::PROVIDER_TYPE_SALESCENTER_TERMINAL_PAYMENT_PAID,
				'TEMPLATE_CODE' => 'ORDER_PAYMENT_SLIP',
				'PLACEHOLDERS' => [
					'ORDER_PAYMENT' => PaymentSlip::getFullPathToSlip($payment->getId()),
				],
			],
		];
	}
	else if ($senderId = $paymentSlipConfig->getSelectedSmsServiceId())
	{
		$senders = [
			CrmIntegrationSmsManager::getSenderCode() => [
				'ACTIVITY_PROVIDER_TYPE_ID' => BaseMessage::PROVIDER_TYPE_SALESCENTER_TERMINAL_PAYMENT_PAID,
				'MESSAGE_BODY' => $messageBody,
				'SENDER_ID' => $senderId,
			],
		];
	}
	else
	{
		return false;
	}

	$order = $payment->getOrder();

	$entityCommunication = $order->getContactCompanyCollection()->getEntityCommunication();
	if (!$entityCommunication)
	{
		return false;
	}

	$messageTo = CrmTerminalOrderProperty::getTerminalPhoneValue($order);
	if (!$messageTo)
	{
		return false;
	}

	$result = CrmMessageSenderMessageSender::send(
		$senders,
		[
			'COMMON_OPTIONS' => [
				'PHONE_NUMBER' => $messageTo,
				'USER_ID' => $order->getField('RESPONSIBLE_ID'),
				'ADDITIONAL_FIELDS' => [
					'ENTITY_TYPE' => $entityCommunication::getEntityTypeName(),
					'ENTITY_TYPE_ID' => $entityCommunication::getEntityType(),
					'ENTITY_ID' => $entityCommunication->getField('ENTITY_ID'),
					'ENTITIES' => [
						'ORDER' => $order,
						'PAYMENT' => $payment,
					],
					'BINDINGS' => [
						[
							'OWNER_TYPE_ID' => $entityCommunication::getEntityType(),
							'OWNER_ID' => $entityCommunication->getField('ENTITY_ID'),
						],
					],
					'ACTIVITY_AUTHOR_ID' => $order->getField('RESPONSIBLE_ID'),
					'ACTIVITY_DESCRIPTION' => $messageBody,
				],
			],
		]
	);

	return $result->isSuccess();
}