$entityTypeName = isset($params['ENTITY_TYPE_NAME']) ? $params['ENTITY_TYPE_NAME'] : ''; if ($entityTypeName === '') { __CrmCompanyEditEndResonse(array('ERROR' => 'Entity type is not specified.')); } $entityTypeID = CCrmOwnerType::ResolveID($entityTypeName); if ($entityTypeID === CCrmOwnerType::Undefined) { __CrmCompanyEditEndResonse(array('ERROR' => 'Undefined entity type is specified.')); } if ($entityTypeID !== CCrmOwnerType::Company) { __CrmCompanyEditEndResonse(array('ERROR' => "The '{$entityTypeName}' type is not supported in current context.")); } if (!(CCrmCompany::CheckCreatePermission($userPermissions) || CCrmCompany::CheckUpdatePermission(0, $userPermissions))) { __CrmCompanyEditEndResonse(array('ERROR' => 'Access denied.')); } $userProfileUrlTemplate = COption::GetOptionString("main", "TOOLTIP_PATH_TO_USER", "", SITE_ID); $checker = new \Bitrix\Crm\Integrity\CompanyDuplicateChecker(); $checker->setStrictComparison(false); $groupResults = array(); $groupData = isset($params['GROUPS']) && is_array($params['GROUPS']) ? $params['GROUPS'] : array(); foreach ($groupData as &$group) { $fields = array(); $fieldNames = array(); if (isset($group['TITLE'])) { $fieldNames[] = 'TITLE'; $fields['TITLE'] = $group['TITLE']; } $phones = isset($group['PHONES']) ? $group['PHONES'] : (isset($group['PHONE']) ? $group['PHONE'] : null); $hasPhones = is_array($phones) && !empty($phones); $emails = isset($group['EMAILS']) ? $group['EMAILS'] : (isset($group['EMAIL']) ? $group['EMAIL'] : null); $hasEmails = is_array($emails) && !empty($emails); if ($hasPhones || $hasEmails) {
$arResult['errata_url'] = ''; $CCrmCompany = new CCrmCompany(); $usersByID = array(); $usersByName = array(); $defaultUserID = isset($_SESSION['CRM_IMPORT_DEFAULT_RESPONSIBLE_ID']) ? intval($_SESSION['CRM_IMPORT_DEFAULT_RESPONSIBLE_ID']) : 0; $userNameFormat = isset($_SESSION['CRM_IMPORT_IMPORT_NAME_FORMAT']) && \Bitrix\Crm\Format\PersonNameFormatter::isDefined($_SESSION['CRM_IMPORT_IMPORT_NAME_FORMAT']) ? intval($_SESSION['CRM_IMPORT_IMPORT_NAME_FORMAT']) : \Bitrix\Crm\Format\PersonNameFormatter::FirstLast; $dupCtrlType = isset($_SESSION['CRM_IMPORT_DUP_CONTROL_TYPE']) ? $_SESSION['CRM_IMPORT_DUP_CONTROL_TYPE'] : ''; if (!in_array($dupCtrlType, array('REPLACE', 'MERGE', 'SKIP'), true)) { $dupCtrlType = 'NO_CONTROL'; } $enableDupCtrlByOrganization = isset($_SESSION['CRM_IMPORT_DUP_CONTROL_ENABLE_ORGANIZATION']) ? $_SESSION['CRM_IMPORT_DUP_CONTROL_ENABLE_ORGANIZATION'] : false; $enableDupCtrlByPhone = isset($_SESSION['CRM_IMPORT_DUP_CONTROL_ENABLE_PHONE']) ? $_SESSION['CRM_IMPORT_DUP_CONTROL_ENABLE_PHONE'] : false; $enableDupCtrlByEmail = isset($_SESSION['CRM_IMPORT_DUP_CONTROL_ENABLE_EMAIL']) ? $_SESSION['CRM_IMPORT_DUP_CONTROL_ENABLE_EMAIL'] : false; $mappedFields = isset($_SESSION['CRM_IMPORT_MAPPED_FIELDS']) ? $_SESSION['CRM_IMPORT_MAPPED_FIELDS'] : array(); $mappedMultiFields = isset($_SESSION['CRM_IMPORT_MAPPED_MULTI_FIELDS']) ? $_SESSION['CRM_IMPORT_MAPPED_MULTI_FIELDS'] : array(); $dupChecker = new \Bitrix\Crm\Integrity\CompanyDuplicateChecker(); $processedQty = 0; $tempDir = isset($_SESSION['CRM_IMPORT_TEMP_DIR']) ? $_SESSION['CRM_IMPORT_TEMP_DIR'] : ''; if ($tempDir === '') { $tempDir = $_SESSION['CRM_IMPORT_TEMP_DIR'] = CTempFile::GetDirectoryName(1, array('crm', uniqid('company_import_'))); CheckDirPath($tempDir); } $errataFilePath = "{$tempDir}errata.csv"; $enableDupFile = $dupCtrlType === 'SKIP'; if ($enableDupFile) { $duplicateFilePath = "{$tempDir}duplicate.csv"; } while ($arData = $csvFile->Fetch()) { $arResult['column'] = count($arData); $arCompany = array(); foreach ($arData as $key => $data) {