LeadStatusHistoryWithSupposed::execute

  1. Bitrix24 API (v. 23.675.0)
  2. crm
  3. LeadStatusHistoryWithSupposed
  4. execute
  • Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/agent/history/leadstatushistorywithsupposed.php
  • Класс: Bitrix\Crm\Agent\History\LeadStatusHistoryWithSupposed
  • Вызов: LeadStatusHistoryWithSupposed::execute
public function execute(array &$option)
{

	/*hack because in table b_option field `name` has length 50 */
	if (static::class === LeadStatusHistoryWithSupposed::class || Option::get("crm", self::STATISTIC_PRE_CALCULATE_LEAD_SUPPOSED_HISTORY_FINISH, 'N') === 'Y')
	{
		return false;
	}

	if(!Application::getConnection()->isTableExists('b_crm_last_stored_lead_status_history_id'))
	{
		return false;
	}

	$lastStoredHistoryId = Option::get('crm', self::ANALYTICS_LEAD_SUPPOSED_HISTORY_LAST_EXECUTED_HISTORY_ID, 0);
	$executedStepCount = Option::get("crm", self::ANALYTICS_LEAD_SUPPOSED_HISTORY_EXECUTED_STEP_COUNT, 0);

	if ($executedStepCount == 0)
	{
		Option::set("crm", self::STATISTIC_PRE_CALCULATE_LEAD_SUPPOSED_HISTORY_FINISH, 'N');
		$lastStoredHistoryId = $this->getLastStoredLeadStatusHistoryId();
	}

	$histories = $this->getHistories($lastStoredHistoryId);

	if (empty($histories))
	{
		Option::delete("crm", ['name' => self::ANALYTICS_LEAD_SUPPOSED_HISTORY_LAST_EXECUTED_HISTORY_ID]);
		Option::delete("crm", ['name' => self::ANALYTICS_LEAD_SUPPOSED_HISTORY_EXECUTED_STEP_COUNT]);
		Option::set("crm", self::STATISTIC_PRE_CALCULATE_LEAD_SUPPOSED_HISTORY_FINISH, 'Y');
		$this->dropLastStoredLeadIdTable();

		return false;
	}

	$executedLeadIds = [];
	foreach ($histories as $history)
	{
		$lastStoredHistoryId = $history['ID'];
		$executedLeadIds[] = $history['OWNER_ID'];
	}

	$leadIds = array_unique($executedLeadIds);
	foreach ($leadIds as $id)
	{
		LeadStatusHistoryWithSupposedEntry::register($id);
	}

	$executedStepCount++;

	Option::set("crm", self::ANALYTICS_LEAD_SUPPOSED_HISTORY_LAST_EXECUTED_HISTORY_ID, $lastStoredHistoryId);
	Option::set("crm", self::ANALYTICS_LEAD_SUPPOSED_HISTORY_EXECUTED_STEP_COUNT, $executedStepCount);

	$option["steps"] = $executedStepCount;
	$option["count"] = (int)(($this->getHistoryCount() / self::MAX_HISTORY_PER_ITERATION) + 1);

	return true;
}

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