Автоматическая Регистрация Продавца (Мультивендор)

Как убрать подтверждение статуса "Продавца" администрацией? Тоесть заполнили форму "Получить учетную запись продавца", и все - аккаунт готов, без подтверждения\изменения статуса самим администратором.

Позволить пользователю создать учетную запись продавца
Автоматически создавать учетную запись администратора для нового подтвержденного продавца. (Если включена настройка "Позволить пользователю создать учетную запись продавца")
Галочки проставлены. Но подтверждение с админ панели все равно требуется.

Попробуйте следующее решение:

http://forum.cs-cart.com/topic/44170-automatic-vendor-approval/#entry246368

(!) Не тестировано

aJgF9dQ.png

67 строка
fn_companies_change_status($result, 'A', '', 'N');

Компания создается. Но ошибка + статус "Новый".

Компания создается. Но ошибка + статус "Новый".

Попробуйте:

if (!$result) {
            fn_save_post_data('user_data', 'company_data');
            fn_set_notification('E', __('error'), __('text_error_adding_request'));
        return array(CONTROLLER_STATUS_REDIRECT, 'companies.apply_for_vendor');

} else {
$status_from = ‘N’;
fn_companies_change_status($result, ‘A’, ‘’, $status_from);
}

Попробуйте:

if (!$result) {
            fn_save_post_data('user_data', 'company_data');
            fn_set_notification('E', __('error'), __('text_error_adding_request'));
        return array(CONTROLLER_STATUS_REDIRECT, 'companies.apply_for_vendor');

} else {
$status_from = ‘N’;
fn_companies_change_status($result, ‘A’, ‘’, $status_from);
}

Вы лучший волонтер на этом форуме :)

Спасибо, все класс!

Видимо я поспешил с решением задачи.
Строка не передает значение "V" в user_type, таблица cscart_users.

Как дополнить?

Не совсем понятно. Т.е. без этой строчки создается вендор, а с ней обычный пользователь?

fn_companies_change_status($result, 'A', '', $status_from);

Не совсем понятно. Т.е. без этой строчки создается вендор, а с ней обычный пользователь?

fn_companies_change_status($result, 'A', '', $status_from);

Нет, вендор с ней тоже создается, есть запись в таблице cscart_companies. Администратор продавца тоже создается и отображается, но при попытке авторизоваться такому пользователю, на в админ панель вендора:

hoK1JkY.png

Как только меняю "C" (клиент?) на "V" (вендор?) в user_type, таблица cscart_users. То все просто замечательно.

Да, C - это клиент. Не должен администратор создаваться с user_type = C. Где-то баг, нужно изучать

Да, C - это клиент. Не должен администратор создаваться с user_type = C. Где-то баг, нужно изучать

Но если все делать по умолчанию, ручками подтверждать, то пользователь идет в атрибутом V.

Да, C - это клиент. Не должен администратор создаваться с user_type = C. Где-то баг, нужно изучать

Сколько может стоить решение?

Или же можно любую регистрацию сделать с таким атрибутом, принудительную.

app/functions/fn.companies.php

где-то тут собака зарыта

if ($status_from == 'N' && ($status_to == 'A' || $status_to == 'P')) {
        if (Registry::get('settings.Vendors.create_vendor_administrator_account') == 'Y') {
            if (!empty($company_data['request_user_id'])) {
                $password_change_timestamp = db_get_field("SELECT password_change_timestamp FROM ?:users WHERE user_id = ?i", $company_data['request_user_id']);
                $_set = '';
                if (empty($password_change_timestamp)) {
                    $_set = ", password_change_timestamp = 1 ";
                }
                db_query("UPDATE ?:users SET company_id = ?i, user_type = 'V'$_set WHERE user_id = ?i", $company_id, $company_data['request_user_id']);
            $username = fn_get_user_name($company_data['request_user_id']);
            $account = 'updated';

            $msg = __('new_administrator_account_created') . '<a href="' . fn_url('profiles.update?user_id=' . $company_data['request_user_id']) . '">' . __('you_can_edit_account_details') . '</a>';
            fn_set_notification('N', __('notice'), $msg, 'K');

        } else {
            $_company_data = $company_data + unserialize($company_data['request_account_data']);
            $_company_data['status'] = 'A';

            if (!empty($_company_data['request_account_name'])) {
                $_company_data['admin_username'] = $_company_data['request_account_name'];
            }

            $user_data = fn_create_company_admin($_company_data, $_company_data['fields'], false);

            if (!empty($user_data['user_id'])) {
                $username = $user_data['user_login'];
                $account = 'new';
            }
        }
    }
}

app/functions/fn.companies.php

где-то тут собака зарыта

if ($status_from == 'N' && ($status_to == 'A' || $status_to == 'P')) {
        if (Registry::get('settings.Vendors.create_vendor_administrator_account') == 'Y') {
            if (!empty($company_data['request_user_id'])) {
                $password_change_timestamp = db_get_field("SELECT password_change_timestamp FROM ?:users WHERE user_id = ?i", $company_data['request_user_id']);
                $_set = '';
                if (empty($password_change_timestamp)) {
                    $_set = ", password_change_timestamp = 1 ";
                }
                db_query("UPDATE ?:users SET company_id = ?i, user_type = 'V'$_set WHERE user_id = ?i", $company_id, $company_data['request_user_id']);
            $username = fn_get_user_name($company_data['request_user_id']);
            $account = 'updated';

            $msg = __('new_administrator_account_created') . '<a href="' . fn_url('profiles.update?user_id=' . $company_data['request_user_id']) . '">' . __('you_can_edit_account_details') . '</a>';
            fn_set_notification('N', __('notice'), $msg, 'K');

        } else {
            $_company_data = $company_data + unserialize($company_data['request_account_data']);
            $_company_data['status'] = 'A';

            if (!empty($_company_data['request_account_name'])) {
                $_company_data['admin_username'] = $_company_data['request_account_name'];
            }

            $user_data = fn_create_company_admin($_company_data, $_company_data['fields'], false);

            if (!empty($user_data['user_id'])) {
                $username = $user_data['user_login'];
                $account = 'new';
            }
        }
    }
}

Как все сломаю, отпишусь сюда.

Ничего не придумал.

Подскажите пожалуйста.

Может вообще все регистрации сделать с атрибутом "V"? Принудительно, не зависимо от того где и кем была заполнена форма для регистрации профиля.

Вы запрос делаете будучи залогинненым под обычным пользователем или анонимно?

Анонимно.

app/functions/fn.users.php

Замените

'user_type' => 'C', // FIXME?

на

'user_type' => !empty($user_data['user_type'] && $user_data['user_type'] != 'A') ? $user_data['user_type'] : 'C',