- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/lib/activity/bindingselector.php
- Класс: Bitrix\Crm\Activity\BindingSelector
- Вызов: BindingSelector::findBindings
static function findBindings(ActualEntitySelector $selector)
{
$list = array();
$isDealAdded = false;
$isOrdersAdded = false;
$isReturnCustomerLeadAdded = false;
/**
* append company
*/
if ($selector->getCompanyId())
{
if ($selector->getCompanyDealId())
{
foreach ($selector->getCompanyDeals() as $dealId)
{
$list[] = array(
'OWNER_TYPE_ID' => \CCrmOwnerType::Deal,
'OWNER_ID' => $dealId
);
}
$isDealAdded = true;
}
elseif ($selector->getCompanyReturnCustomerLeadId())
{
foreach ($selector->getCompanyReturnCustomerLeads() as $leadId)
{
$list[] = array(
'OWNER_TYPE_ID' => \CCrmOwnerType::Lead,
'OWNER_ID' => $leadId
);
}
$isReturnCustomerLeadAdded = true;
}
if (!empty($selector->getCompanyOrders()))
{
foreach ($selector->getCompanyOrders() as $orderId)
{
$list[] = array(
'OWNER_TYPE_ID' => \CCrmOwnerType::Order,
'OWNER_ID' => $orderId
);
}
$isOrdersAdded = true;
}
$list[] = array(
'OWNER_TYPE_ID' => \CCrmOwnerType::Company,
'OWNER_ID' => $selector->getCompanyId()
);
}
/**
* append contact
*/
if (!$selector->getCompanyId())
{
// if no company
$isContactNeedAdd = true;
}
else if ($selector->getCompanyId() === $selector->getContactCompanyId())
{
// if company found and it is related with contact
$isContactNeedAdd = true;
}
else
{
$isContactNeedAdd = false;
}
if ($selector->getContactId() && $isContactNeedAdd)
{
if ($selector->getContactDealId() && !$isDealAdded)
{
foreach ($selector->getContactDeals() as $dealId)
{
$list[] = array(
'OWNER_TYPE_ID' => \CCrmOwnerType::Deal,
'OWNER_ID' => $dealId
);
}
$isDealAdded = true;
}
if ($selector->getContactReturnCustomerLeadId() && !$isReturnCustomerLeadAdded && !$isDealAdded)
{
foreach ($selector->getContactReturnCustomerLeads() as $leadId)
{
$list[] = array(
'OWNER_TYPE_ID' => \CCrmOwnerType::Lead,
'OWNER_ID' => $leadId
);
}
$isReturnCustomerLeadAdded = true;
}
if (!empty($selector->getContactOrders()) && !$isOrdersAdded)
{
foreach ($selector->getContactOrders() as $orderId)
{
$list[] = array(
'OWNER_TYPE_ID' => \CCrmOwnerType::Order,
'OWNER_ID' => $orderId
);
}
$isOrdersAdded = true;
}
$list[] = array(
'OWNER_TYPE_ID' => \CCrmOwnerType::Contact,
'OWNER_ID' => $selector->getContactId()
);
}
/**
* append lead
*/
if (empty($list))
{
if ($selector->getLeadId())
{
$list[] = array(
'OWNER_TYPE_ID' => \CCrmOwnerType::Lead,
'OWNER_ID' => $selector->getLeadId()
);
}
}
// append deal if it was set by setEntity
if (!$isDealAdded && $selector->getDealId())
{
foreach ($selector->getDeals() as $dealId)
{
$list[] = array(
'OWNER_TYPE_ID' => \CCrmOwnerType::Deal,
'OWNER_ID' => $dealId
);
}
$isDealAdded = true;
}
// append rc-lead if it was set by setEntity
if (!$isReturnCustomerLeadAdded && !$isDealAdded && $selector->getReturnCustomerLeadId())
{
foreach ($selector->getReturnCustomerLeads() as $leadId)
{
$list[] = array(
'OWNER_TYPE_ID' => \CCrmOwnerType::Lead,
'OWNER_ID' => $leadId
);
}
}
// append orders if it was set by setEntity
if (!$isOrdersAdded && !empty($selector->getOrders()))
{
foreach ($selector->getOrders() as $orderId)
{
$list[] = array(
'OWNER_TYPE_ID' => \CCrmOwnerType::Order,
'OWNER_ID' => $orderId
);
}
}
return self::sortBindings($list);
}