- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/lib/tracking/entity.php
- Класс: Bitrix\Crm\Tracking\Entity
- Вызов: Entity::checkAttrWindow
static function checkAttrWindow($entityTypeId, $entityId, $fields)
{
if (!in_array($entityTypeId, [\CCrmOwnerType::Deal, \CCrmOwnerType::Lead], true))
{
return;
}
// only clean entities, not tracing
if (!empty($fields['UTM_SOURCE']))
{
return;
}
// check option in settings
if (!Settings::isAttrWindowOffline())
{
return;
}
if (!empty($fields['CONTACT_ID']))
{
$queryEntityTypeId = \CCrmOwnerType::Contact;
$queryEntityId = $fields['CONTACT_ID'];
}
elseif (!empty($fields['COMPANY_ID']))
{
$queryEntityTypeId = \CCrmOwnerType::Company;
$queryEntityId = $fields['COMPANY_ID'];
}
else
{
return;
}
// fetch last trace with source ID
$row = Tracking\Internals\TraceTable::getTraceByEntity($queryEntityTypeId, $queryEntityId);
if (!$row || !$row['SOURCE_ID'])
{
return;
}
if (!($row['DATE_CREATE'] instanceof DateTime))
{
return;
}
// check attribution window
$row['DATE_CREATE']->add(Settings::getAttrWindow() . ' day');
if ($row['DATE_CREATE']->getTimestamp() < time())
{
return;
}
$traceId = Trace::create()->setSource($row['SOURCE_ID'])->save();
Trace::appendEntity($traceId, $entityTypeId, $entityId);
}