Расчет стоимости доставки, который зависит от индекса На рассмотрении

4

Явный древний баг, из-за которого невозможно в нормальном порядке произвести стоимость доставки, которая должна зависеть от указанного индекса.

Окружение кейсов:

1. Одностраничное оформление

2. Последние версии Wa, SS.

3.

shippingPlugin::requestedAddressFields() -> array(
    'zip' => array(
         'cost' => true,
         'required' => true
    )
)

4. Настройки оформления заказа:

Сразу хочу отметить, что использовать функцию "Запрашивать индекс вместе с названием населенного пункта" - вроде бы рабочее решение, но ужасное для клиента, поскольку тогда поле "Индекс" становится обязательным только ради расчета моим плагином, другие плагинам это поле не нужно, клиента нельзя обязывать вводить то, что ему не понадобится. Именно поэтому я хочу запрашивать индекс отдельным полем уже после выбора своего способа доставки.

5. Наш способ доставки - плагин "Тарификация Почта России", вид доставки - Почта.

---

Теперь перейдем к тесту самого кейса, вот какой алгоритм действий мы имеем:

1. Начинаем оформлять заказ, вводим страну, регион и город, получаем способы доставки.

2. Появляется наш способ доставки в блоке "Почта", без стоимостей и сроков. Ок, мы еще не знаем стоимость, так как нет во входных данных индекса. Хотя здесь тоже можно и хотелось бы выводить "хоть что-то", без вызова calculate чтобы плагин мог вернуть "приблизительную стоимость и сроки доставки", которые отображались бы здесь.

3. Кликаем по почте, у нас появляется наше поле для ввода индекса. Круто, то, что надо.

4. Вводим индекс, блок доставки сразу же обновляется, поэтому заскринить не могу. После чего вижу вот это:

Произошел запрос calculate, плагин доставки произвел расчет стоимости.

Но нашего поля для ввода индекса нет. А где оно? Правильно, оно не показывается потому что блок "Почта" теперь не выбран. И вот здесь первая проблема, почему бы снова не выбрать блок, который был выбран до обновления доставки?

5. Ну ок, допустим, выберем снова "Почта".

А где введенный индекс? Все, пропал. То есть мы сейчас даже не понимает а для какого индекса рассчиталась стоимость доставки, и более того, мы не можем продолжить оформление заказа в этом случае, так как вариант доставки не выбран, надо снова вводить индекс!

6. Устанавливаем индекс

Снова происходит запрос calculate, плагин доставки производит расчет стоимости.

Индекс остался, стоимость рассчиталась и выбралась. Вот теперь можно оформить заказ.

А по итогу что мы имеем - 2 идентичных запроса к плагину доставки и поведение формы оформления заказа, которое явно можно именовать как "баганутое", пользователь 2 раза должен ввести свой индекс.

2 комментария

  • +2
    Александр Тарасенко Александр Тарасенко 25 декабря 2019 15:01 #

    С июля тянется данная проблема ( чуть по другому сформирована - но по сути проблема та-же

    https://support.webasyst.ru/forum/32831/poterya-vvedennykh-dannykh-pri-izmenenii-indeksa/

  • +1

    С бета-версией Shop-Script 10 наблюдаем иное поведение, чем вы описываете:

    • В настройках оформления заказа поле "Индекс" не включено и не отмечено как обязательное. В противном случае оно становится обязательным для всех способов доставки, а это вряд ли нужно всем пользователям.

    При оформлении заказа происходит следующее:

    1. До выбора типа доставки поле "Индекс" не запрашивается.
    2. После выбора типа доставки поле "Индекс" запрашивается (как описано в методе класса плагина requestedAddressFields).
    3. После заполнения этого поля (и смены фокуса) оно автоматически переносится в форму ввода адреса. Введённый покупателем индекс уже виден в этом поле — повторно покупателю его вводить не нужно.

    Добавить комментарий

    Чтобы добавить комментарий, зарегистрируйтесь или войдите