• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/integration/numerator/orderuserordersnumbergenerator.php
  • Класс: BitrixSaleIntegrationNumeratorOrderUserOrdersNumberGenerator
  • Вызов: OrderUserOrdersNumberGenerator::parseTemplate
public function parseTemplate($template)
{
	$tableName = $this->getTableName();
	/** @var BitrixMainEntityDataManager $tableName */
	$userIdOfOrder = $tableName::query()
		->addSelect('USER_ID')
		->where('ID', $this->orderId)
		->exec()
		->fetch();

	if ($userIdOfOrder)
	{
		$userIdOfOrder = intval($userIdOfOrder['USER_ID']);
		$countArchiveOrderOfUser = OrderArchiveTable::query()
			->addSelect('ORDERS_COUNT')
			->registerRuntimeField(
				new ExpressionField(
					'ORDERS_COUNT',
					'COUNT(ID)'
				)
			)
			->where('USER_ID', $userIdOfOrder)
			->addGroup('USER_ID')
			->exec()
			->fetch();
		$countArchiveOrderOfUser = (int)$countArchiveOrderOfUser['ORDERS_COUNT'];

		$countOrderOfUser = $tableName::query()
			->addSelect('ORDERS_COUNT')
			->registerRuntimeField(
				new ExpressionField(
					'ORDERS_COUNT',
					'COUNT(ID)'
				)
			)
			->where('USER_ID', $userIdOfOrder)
			->addGroup('USER_ID')
			->exec()
			->fetch();

		$countOrderOfUser = (int)$countOrderOfUser['ORDERS_COUNT'] + $countArchiveOrderOfUser;
		$numID = ($countOrderOfUser > 0) ? $countOrderOfUser : 1;
		$value = $userIdOfOrder . "_" . $numID;
	}
	else
	{
		$value = '';
	}

	return str_replace($this->getWordToReplace(), $value, $template);
}