- Модуль: 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;
}