...Человеческий поиск в разработке...
- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/classes/general/restservice.php
- Класс: \CCrmDealRecurringRestProxy
- Вызов: CCrmDealRecurringRestProxy::innerAdd
protected function innerAdd(&$fields, &$errors, array $params = null) { $ID = null; $dealId = (int)$fields['DEAL_ID']; if ($dealId <= 0) { $errors[] = 'Deal ID is empty.'; return false; } if( !CCrmDeal::CheckUpdatePermission($dealId, CCrmPerms::GetCurrentUserPermissions()) || !CCrmDeal::CheckCreatePermission(CCrmPerms::GetCurrentUserPermissions()) ) { $errors[] = 'Access denied.'; return false; } try { if ( $fields['IS_LIMIT'] !== \Bitrix\Crm\Recurring\Entity\Deal::LIMITED_BY_TIMES && $fields['IS_LIMIT'] !== \Bitrix\Crm\Recurring\Entity\Deal::LIMITED_BY_DATE ) { $fields['IS_LIMIT'] = \Bitrix\Crm\Recurring\Entity\Deal::NO_LIMITED; } if (!empty($fields['PARAMS']) && is_array($fields['PARAMS'])) { $fields['PARAMS'] = $this->prepareParams($fields); } else { $fields['PARAMS'] = []; } if(!empty($fields['START_DATE'])) { $fields['START_DATE'] = new \Bitrix\Main\Type\Date($fields['START_DATE']); } if(!empty($fields['LIMIT_DATE'])) { $fields['LIMIT_DATE'] = new \Bitrix\Main\Type\Date($fields['LIMIT_DATE']); } $newRecurringFields = $fields; $dealRecurringInstance = \Bitrix\Crm\Recurring\Entity\Deal::getInstance(); $dealFields = \CCrmDeal::GetByID($dealId, false); if ($dealFields['IS_RECURRING'] === 'Y') { $recurringRawSearch = $dealRecurringInstance->getList([ 'filter' => ['DEAL_ID' => $dealId], 'limit' => 1 ]); if ($recurringRawSearch->fetch()) { $errors[] = 'Deal already have had recurring settings.'; return false; } $result = $dealRecurringInstance->add($newRecurringFields); if ($result->isSuccess()) { $ID = $result->getId(); } } else { unset($newRecurringFields['DEAL_ID']); $dealUserType = new \CCrmUserType($GLOBALS['USER_FIELD_MANAGER'], \CCrmDeal::GetUserFieldEntityID()); $userFields = $dealUserType->GetEntityFields($dealId); foreach ($userFields as $key => $ufField) { $dealFields[$key] = $ufField['VALUE']; } $result = $dealRecurringInstance->createEntity($dealFields, $newRecurringFields); if ($result->isSuccess()) { $data = $result->getData(); $ID = $data['ID']; } } if (!$result->isSuccess()) { $errors = $result->getErrorMessages(); return false; } return $ID; } catch(Main\SystemException $ex) { $errors[] = $ex->getMessage(); return false; } }