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