В процессе разработки плагина доставки столкнулись с ситуацией, что если посчитать сроки, цену доставки можно только, если пользователь ввел улицу, то список вариантов доставки и информация в блоке "Типы доставки" - "Курьер" выглядят ущербно, то есть информация в них отсутствует. В итоге, чтобы хоть как-то выйти из ситуации приходится добавлять настройку "Улица, дом (по умолчанию)".
Вот так выглядит выбор без "костыля".
А вот так, когда с костылём
Разница очевидна. Но такая история прокатит только если стоимость доставки не зависит от адреса внутри города и скорее является ошибкой, а не верным поведением формы оформления заказа. А если в городе пользователя нет "Улицы Ленина 1", то он будет видет голый вариант "без костыля".
Вопрос не в то, что кто-то не указывает улицу, а в том, что у многих способов оплаты улица не влияет на стоимость доставки, то есть все тарифы рассчитываются до передачи улицы. И вот в "новом" оформлении заказа функцию расчета доставки дергают несколько раз (и первый раз без улицы), и вот в выпадающее меню попадает не то, что было отвечено на последний запрос (когда приходит весь адрес), а то что ответили в первом. Поэтому плагин, который может сообщить сроки и цену без указания улицы может и в первом и последующих запросах ответить одно и тоже. А мы нет.... Даже если адрес будет полностью заполнен и нажать F5, то всё-равно в плагин прилетит несколько запросов: без улицы (для списка) и с улицей...уж не знаю для чего.
requestedAddressFieldsForService() вот этого метода у меня нет.
а в первом есть страна, регион, город, улица и все и cost и required.
да можно написать любой минимальный статичный плагин, можно даже стандартный плагин "Курьер" помучать.
Условие. В calculate получаем адрес
$address = $this->getAddress();
Если есть
$address['street']
то возвращаем какой-то статичный массив rates из нескольких вариантов.
Если улица пустая.....то попробуй догадаться, что надо передавать, чтобы.....в "новом" оформлении был выбор из нескольких вариантов, если улица заполнена в форме ))))
То есть первый квест вообще сообразить, как сделать вывод нескольких вариантов, если цену и сроки ты можешь сказать только когда знаешь улицу. Когда первый квест пройден.....сделать чтобы было не как на первой картинке, а как на второй.
плюс надо загнать себя в ситуацию, когда тебе нужна улица для возвращения условий доставки.....и искусственно, нет улицы ты не можешь сообщить о вариантах доставки
Добавление сервисов к старому функционалу waShippingPlugin привело к чрезмерному усложнению и нечеткой логике работы т.ч. попытка сесть на 2 стула завершилась традиционно: все равно нужно переписывать класс и все плагины доставки, но этого делать никто не будет т.к. это долго и партнеры разорутся )
12 комментариев
не представляю как курьер может доставить товар без указания улицы и дома
Вопрос не в то, что кто-то не указывает улицу, а в том, что у многих способов оплаты улица не влияет на стоимость доставки, то есть все тарифы рассчитываются до передачи улицы. И вот в "новом" оформлении заказа функцию расчета доставки дергают несколько раз (и первый раз без улицы), и вот в выпадающее меню попадает не то, что было отвечено на последний запрос (когда приходит весь адрес), а то что ответили в первом. Поэтому плагин, который может сообщить сроки и цену без указания улицы может и в первом и последующих запросах ответить одно и тоже. А мы нет.... Даже если адрес будет полностью заполнен и нажать F5, то всё-равно в плагин прилетит несколько запросов: без улицы (для списка) и с улицей...уж не знаю для чего.
Это уже совсем другой вопрос. я так понимаю ребята которые писали нормальный JS свалили из WA и снова пошел индусский код вроде этого
waShippingPlugin::requestedAddressFields()
waShippingPlugin::requestedAddressFieldsForService()
массивы полей содержат ключ "cost"? Покажи основной код плагина чтобы было понятнее
requestedAddressFieldsForService() вот этого метода у меня нет.
а в первом есть страна, регион, город, улица и все и cost и required.
да можно написать любой минимальный статичный плагин, можно даже стандартный плагин "Курьер" помучать.
Условие. В calculate получаем адрес
Если есть
то возвращаем какой-то статичный массив rates из нескольких вариантов.
Если улица пустая.....то попробуй догадаться, что надо передавать, чтобы.....в "новом" оформлении был выбор из нескольких вариантов, если улица заполнена в форме ))))
То есть первый квест вообще сообразить, как сделать вывод нескольких вариантов, если цену и сроки ты можешь сказать только когда знаешь улицу. Когда первый квест пройден.....сделать чтобы было не как на первой картинке, а как на второй.
старые плагины по другому обрабатываются по крайней мере раньше так было
проверил на одном из своих плагинов доставки, приходит 1 запрос для курьерской доставки.
plugin.php
Методы плагина:
у тебя нет
плюс надо загнать себя в ситуацию, когда тебе нужна улица для возвращения условий доставки.....и искусственно, нет улицы ты не можешь сообщить о вариантах доставки
все там есть:
только не для всех сервисовcost нет )
у данной службы доставки единый тариф в пределах города т.е. это поле не требуется для расчета стоимости доставки
Добавление сервисов к старому функционалу waShippingPlugin привело к чрезмерному усложнению и нечеткой логике работы т.ч. попытка сесть на 2 стула завершилась традиционно: все равно нужно переписывать класс и все плагины доставки, но этого делать никто не будет т.к. это долго и партнеры разорутся )
И по тихому сняли "На рассмотрении". Нет ни "Не принято", ни "Принято".
Яндекс добавил метод получение стоимости по городу, так что теперь всё это уже некритично.