• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/controller/action/entity/saveorderaction.php
  • Класс: BitrixSaleControllerActionEntitySaveOrderAction
  • Вызов: SaveOrderAction::registerNewUser
private function registerNewUser(SaleOrder $order, array $userProps): SaleResult
{
	$result = new SaleResult();

	$siteId = $order->getSiteId();

	$userData = $this->generateUserData($userProps);
	$fields = [
		'LOGIN' => $userData['NEW_LOGIN'],
		'NAME' => $userData['NEW_NAME'],
		'LAST_NAME' => $userData['NEW_LAST_NAME'],
		'PASSWORD' => $userData['NEW_PASSWORD'],
		'CONFIRM_PASSWORD' => $userData['NEW_PASSWORD_CONFIRM'],
		'EMAIL' => $userData['NEW_EMAIL'],
		'GROUP_ID' => $userData['GROUP_ID'],
		'ACTIVE' => 'Y',
		'LID' => $siteId,
		'PERSONAL_PHONE' => isset($userProps['PHONE']) ? NormalizePhone($userProps['PHONE']) : '',
		'PERSONAL_ZIP' => $userProps['ZIP'] ?? '',
		'PERSONAL_STREET' => $userProps['ADDRESS'] ?? '',
	];

	$userPhoneAuth = MainConfigOption::get('main', 'new_user_phone_auth', 'N', $siteId) === 'Y';
	if ($userPhoneAuth)
	{
		$normalizedPhoneForRegistration = '';
		if (!empty($userProps['PHONE']))
		{
			$normalizedPhoneForRegistration = MainUserPhoneAuthTable::normalizePhoneNumber($userProps['PHONE']);
		}

		$fields['PHONE_NUMBER'] = $normalizedPhoneForRegistration;
	}

	if ($this->isLandingShop($order) && MainLoader::includeModule('crm'))
	{
		$fields['GROUP_ID'] = CrmOrderBuyerGroup::getDefaultGroups();
		$fields['EXTERNAL_AUTH_ID'] = 'shop';
		$fields['UF_DEPARTMENT'] = [];
		if (!empty($userData['NEW_EMAIL']))
		{
			$fields['LOGIN'] = $userData['NEW_EMAIL'];
		}
	}

	$user = new CUser();
	$addResult = $user->Add($fields);
	if ((int)$addResult <= 0)
	{
		$errors = explode('
', $user->LAST_ERROR); TrimArr($errors, true); foreach ($errors as $error) { $result->addError(new MainError($error)); } } else { $result->setData(['userId' => $addResult]); } return $result; }