• Модуль: salescenter
  • Путь к файлу: ~/bitrix/modules/salescenter/lib/controller/order.php
  • Класс: BitrixSalesCenterControllerOrder
  • Вызов: Order::sendOrdersAction
public function sendOrdersAction(array $orderIds, array $options)
{
	$sentOrders = [];
	$orderTitle = '';
	$sessionId = $dialogId = false;
	if(Bitrix24Manager::getInstance()->isPaymentsLimitReached())
	{
		$this->addError(new Error(Loc::getMessage('SALESCENTER_CONTROLLER_ORDER_PAYMENTS_LIMIT_REACHED')));
		return null;
	}

	$context = $options['context'] ?? '';

	if ($context === SalesCenterComponentContextDictionary::CHAT)
	{
		if(isset($options['sessionId']))
		{
			$sessionId = (int)$options['sessionId'];
			ImOpenLinesManager::getInstance()->setSessionId($sessionId);
		}
		$dialogId = ImOpenLinesManager::getInstance()->getDialogId();
		if(!$dialogId)
		{
			$this->addError(new Error('Dialog not found'));
		}
		elseif(!$sessionId)
		{
			$this->addError(new Error('Session not found'));
		}
	}

	if (!empty($this->getErrors()))
	{
		return ['orders' => $sentOrders];
	}

	if (MainLoader::includeModule('sale'))
	{
		$registry = SaleRegistry::getInstance(SaleRegistry::REGISTRY_TYPE_ORDER);
		/** @var SaleOrder $orderClass */
		$orderClass = $registry->getOrderClassName();

		foreach($orderIds as $orderId)
		{
			$order = $orderClass::load($orderId);
			if(!$order)
			{
				$this->addError(new Error('Order not found'));
				return ['orders' => $sentOrders];
			}

			if ($context === SalesCenterComponentContextDictionary::CHAT)
			{
				$sendResult = $this->sendOrderByIm($order, $dialogId);
				if ($sendResult->isSuccess())
				{
					$sentOrders[] = $sendResult->getData()['ORDER'];
				}
				else
				{
					$this->addErrors($sendResult->getErrors());
				}
			}
			elseif ($context === SalesCenterComponentContextDictionary::SMS)
			{
				$sendResult = $this->sendOrderBySms($order);
				if ($sendResult->isSuccess())
				{
					$sentOrders[] = $sendResult->getData()['ORDER'];
					$orderTitle = $sendResult->getData()['TEXT'];
				}
				else
				{
					$this->addErrors($sendResult->getErrors());
				}
			}
		}
	}

	return [
		'orders' => $sentOrders,
		'orderTitle' => $orderTitle,
	];
}