- Модуль: sender
- Путь к файлу: ~/bitrix/modules/sender/lib/integration/crm/connectors/lead.php
- Класс: Bitrix\Sender\Integration\Crm\Connectors\Lead
- Вызов: Lead::getQuery
public function getQuery($selectList = [])
{
$filter = Helper::getFilterByFields(
self::getUiFilterFields(),
$this->getFieldValues()
);
$runtime = Helper::getRuntimeByEntity(null);
$nameExprField = new Entity\ExpressionField(
'`NAME`',
'CASE %2$s WHEN \'Y\' ' .
'THEN if (%3$s>0, %4$s, if (%5$s>0, %6$s, %1$s)) ELSE %1$s END',
[
'NAME', 'IS_RETURN_CUSTOMER',
'CONTACT_ID', 'CONTACT.NAME',
'COMPANY_ID', 'COMPANY.TITLE'
]
);
$query = new Entity\Query(LeadTable::getEntity());
$query->setFilter($filter);
$query->setSelect(array_merge($selectList, [
$nameExprField,
'CRM_ENTITY_ID' => 'ID',
'CRM_ENTITY_TYPE_ID',
'CRM_ENTITY_TYPE',
'CRM_CONTACT_ID' => 'CONTACT_ID',
'CRM_COMPANY_ID' => 'COMPANY_ID',
]));
$query->registerRuntimeField(new Entity\ExpressionField('CRM_ENTITY_TYPE', '\''.\CCrmOwnerType::LeadName.'\''));
$query->registerRuntimeField(Helper::createExpressionMultiField(
\CCrmOwnerType::LeadName,
'EMAIL'
));
$query->registerRuntimeField(Helper::createExpressionMultiField(
\CCrmOwnerType::LeadName,
'PHONE'
));
$query->registerRuntimeField(new Entity\ExpressionField('CRM_ENTITY_TYPE_ID', \CCrmOwnerType::Lead));
$query->registerRuntimeField(null, new Entity\ReferenceField(
'CONTACT',
"\\Bitrix\\Crm\\ContactTable",
['=this.CONTACT_ID' => 'ref.ID'],
['join_type' => 'LEFT']
));
$query->registerRuntimeField(null, new Entity\ReferenceField(
'COMPANY',
"\\Bitrix\\Crm\\CompanyTable",
['=this.COMPANY_ID' => 'ref.ID'],
['join_type' => 'LEFT']
));
foreach ($runtime as $item)
{
$item = new Entity\ExpressionField(
$item['name'],
$item['expression'],
$item['buildFrom']
);
$query->registerRuntimeField($item);
}
//echo "" . $query->getQuery(); die();
return $query;
}