Зачастую необходимо собирать при регистрации дополнительные данные с юридических лиц. Например, "Наименование организации", "ИНН/КПП" и т.д. Физическому лицу такие данные заполнять не нужно, поэтому большая форма регистрации не только может сделать покупку неудобной, но и отпугнуть покупателя.
Решить эту проблему в Webasyst Shop-Script 5 можно штатным способом, но с небольшой доработкой.
В админке магазина в разделе "Настройки"/"Оформление заказа"/"Контактная информация" необходимо добавить новое поле "Покупатель". Назначить этому полю тип "список (radio)" и добавить элементы списка: "физическое лицо" и "юридическое лицо". Поставьте галочку "обязательное" и перейдите в расширенные настройки этого списка. Здесь необходимо указать каждому элементу набор полей, которые будут предложены к заполнению.
Теперь останется поднять наше поле "покупатель" на первое место в сортировке, чтобы предложить этот выбор в самом начале. Вот и почти всё.
Уже все работает, но есть несколько моментов.
1. Нам не предлагают при создании списка выбрать значение по умолчанию (например "физическое лицо")
2. При переходе из заполнения контактной информации к следующему шагу, а затем, если мы возвратимся назад, мы увидим все поля. Не зависимо от нашего выбора.
Эти моменты мы сейчас и решим. Делается все в файле /wa-system/contact/waContactBranchField.class.php
1. В строке 18 после foreach ($this->getOptions() as $k => $v) {
заменяем строку:
$html .= '<label><input type="radio"'.($k == $value ? ' checked="checked"' : '').' name="'.$radios_name.'" value="'.htmlspecialchars($k).'"> '.htmlspecialchars($v).'</label>';
на это:
$html .= '<label><input type="radio"';
if ($k == $value){$html .= ' checked="checked"';}
else if (htmlspecialchars($k) == 'Физическое лицо'){$html .= ' checked="checked"';}
$html .= ' name="'.$radios_name.'" value="'.htmlspecialchars($k).'">'.htmlspecialchars($v).'</label>';
Все. Теперь по умолчанию стоит "физическое лицо".
2. Далее удаляем строку
$hide_by_default += $hide_data[$option_id];
Теперь все поля четко соответствуют выбранному списку.
P.S. Стоит обратит внимание, что по факту эти поля присутствуют у каждого клиента, не зависимо от выбранной опции. Эта функция позволит только скрыть ненужные для заполнения поля в процессе регистрации. Поэтому обязательные для заполнения поля будут видны во всех вариантах выбора.
Полноценного разделения покупателей на физические и юридические лица в Shop-Script 5 нет. Но и это решение может кому пригодится.