Entity::checkAttrWindow

  1. Bitrix24 API (v. 23.675.0)
  2. crm
  3. Entity
  4. checkAttrWindow
  • Модуль: 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);
}

Добавить комментарий