• Модуль: imopenlines
  • Путь к файлу: ~/bitrix/modules/imopenlines/lib/crm/activity.php
  • Класс: BitrixImOpenLinesCrmActivity
  • Вызов: Activity::update
static function update($id, array $params = []): Result
{
	$result = new Result;

	if (Loader::includeModule('crm'))
	{
		if (
			!empty($id)
			&& $id > 0
			&& !empty($params)
		)
		{
			$updateDate = [];

			if (!empty($params['ANSWERED']))
			{
				$updateDate['RESULT_STATUS'] = $params['ANSWERED'] === 'Y' ? StatisticsStatus::Answered : StatisticsStatus::Unanswered;
			}

			if (!empty($params['COMPLETED']))
			{
				$updateDate['COMPLETED'] = $params['COMPLETED'] === 'N' ? 'N' : 'Y';
			}

			if (!empty($params['DATE_CLOSE']))
			{
				$updateDate['END_TIME'] = $params['DATE_CLOSE'];
			}

			if(
				!empty($params['OPERATOR_ID'])
				&& $params['OPERATOR_ID'] > 0
			)
			{
				$updateDate['RESPONSIBLE_ID'] = $params['OPERATOR_ID'];
			}

			if (!empty($params['EDITOR_ID']))
			{
				$updateDate['EDITOR_ID'] = $params['EDITOR_ID'];
			}

			if (isset($params['USER_CODE']))
			{
				$updateDate['PROVIDER_PARAMS'] = ['USER_CODE' => $params['USER_CODE']];
			}

			if (!empty($updateDate))
			{
				$updateOptions = ['REGISTER_SONET_EVENT' => true];

				$activityFields = CCrmActivity::GetByID($id, false);
				if (isset($activityFields['RESPONSIBLE_ID']) && $activityFields['RESPONSIBLE_ID'] > 0)
				{
					$updateOptions['CURRENT_USER'] = $activityFields['RESPONSIBLE_ID'];
				}

				$resultUpdate = CCrmActivity::Update($id, $updateDate, false, true, $updateOptions);
				if ($resultUpdate == false)
				{
					if (CAllCrmActivity::GetErrorCount() > 0)
					{
						$errorMessage = CAllCrmActivity::GetLastErrorMessage();
						$result->addError(new Error($errorMessage, Crm::ERROR_IMOL_CRM_ACTIVITY, __METHOD__));

						Log::write($errorMessage, 'CRM ACTIVITY ERROR');
					}
				}
			}
		}
		else
		{
			$result->addError(new Error(Loc::getMessage('IMOL_CRM_ERROR_ACTIVITY_NO_REQUIRED_PARAMETERS'), self::ERROR_IMOL_ACTIVITY_NO_REQUIRED_PARAMETERS, __METHOD__));
		}
	}
	else
	{
		$result->addError(new Error(Loc::getMessage('IMOL_CRM_ERROR_NOT_LOAD_CRM'), Crm::ERROR_IMOL_NOT_LOAD_CRM, __METHOD__));
	}

	return $result;
}