- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/classes/general/rest_lead.php
- Класс: \CCRMLeadRest
- Вызов: CCRMLeadRest::AddLead
static function AddLead($arData, $CCrmLead)
{
global $DB, $USER_FIELD_MANAGER;
$arData['CURRENCY_ID'] = trim($arData['CURRENCY_ID']);
if ($arData['CURRENCY_ID'] == '')
$arData['CURRENCY_ID'] = CCrmCurrency::GetBaseCurrencyID();
$arFields = [
'TITLE' => trim($arData['TITLE']),
'COMPANY_TITLE' => trim($arData['COMPANY_TITLE']),
'NAME' => trim($arData['NAME']),
'LAST_NAME' => trim($arData['LAST_NAME']),
'SECOND_NAME' => trim($arData['SECOND_NAME']),
'POST' => trim($arData['POST']),
'ADDRESS' => trim($arData['ADDRESS']),
'COMMENTS' => trim($arData['COMMENTS']),
'SOURCE_DESCRIPTION' => trim($arData['SOURCE_DESCRIPTION']),
'STATUS_DESCRIPTION' => trim($arData['STATUS_DESCRIPTION']),
'OPPORTUNITY' => trim($arData['OPPORTUNITY']),
'CURRENCY_ID' => trim($arData['CURRENCY_ID']),
'ASSIGNED_BY_ID' => (int)(is_array($arData['ASSIGNED_BY_ID']) ? $arData['ASSIGNED_BY_ID'][0] : $arData['ASSIGNED_BY_ID']),
'OPENED' => \Bitrix\Crm\Settings\LeadSettings::getCurrent()->getOpenedFlag() ? 'Y' : 'N',
];
if (isset($arData['BIRTHDATE']))
{
$date = ConvertTimeStamp(MakeTimeStamp(trim($arData['BIRTHDATE'])), 'SHORT', SITE_ID);
if($date !== false)
{
$arFields['BIRTHDATE'] = $date;
}
}
$arData['SOURCE_ID'] = trim($arData['SOURCE_ID']);
$arData['STATUS_ID'] = trim($arData['STATUS_ID']);
if ($arData['STATUS_ID'] <> '')
$arFields['STATUS_ID'] = $arData['STATUS_ID'];
if ($arData['SOURCE_ID'] <> '')
$arFields['SOURCE_ID'] = $arData['SOURCE_ID'];
if(isset($arFields['SOURCE_ID']))
{
if(self::$sources === null)
{
self::$sources = CCrmStatus::GetStatus('SOURCE');
}
if(!isset(self::$sources[$arFields['SOURCE_ID']]))
{
//Crutch: Try to fix form bug. If we get source name instead of spurce ID.
$sourceID = self::ResolveStatusID(self::$sources, $arFields['SOURCE_ID']);
if($sourceID !== '')
{
$arFields['SOURCE_ID'] = $sourceID;
}
else
{
unset($arFields['SOURCE_ID']);
}
}
}
$CCrmUserType = new CCrmUserType($USER_FIELD_MANAGER, CCrmLead::$sUFEntityID);
$arFields = array_merge($arFields, $CCrmUserType->PrepareExternalFormFields($arData, ','));
global $USER_FIELD_MANAGER;
$USER_FIELD_MANAGER->EditFormAddFields(CCrmLead::USER_FIELD_ENTITY_ID, $arFields, [
'FORM' => $arFields
]);
$arFields['FM'] = CCrmFieldMulti::PrepareFields($arData);
$DB->StartTransaction();
$ID = $CCrmLead->Add($arFields);
if ($ID === false)
{
$DB->Rollback();
if (!empty($arFields['RESULT_MESSAGE']))
$sErrorMessage = $arFields['RESULT_MESSAGE'];
else
$sErrorMessage = GetMessage('UNKNOWN_ERROR');
$res = array('error' => 400, 'error_message' => strip_tags(nl2br($sErrorMessage)));
}
else
{
$DB->Commit();
// Ignore all BizProc errors
try
{
$arErrors = array();
CCrmBizProcHelper::AutoStartWorkflows(
CCrmOwnerType::Lead,
$ID,
CCrmBizProcEventType::Create,
$arErrors
);
//Region automation
$starter = new \Bitrix\Crm\Automation\Starter(\CCrmOwnerType::Lead, $ID);
$starter->setContextToRest()->runOnAdd();
//End region
}
catch(Exception $e)
{
}
$res = array('error' => 201, 'ID' => $ID, 'error_message' => GetMessage('CRM_REST_OK'));
}
return self::_out($res);
}