[ms2DeliveryCost] - получение стоимости доставки для каждого пункта доставки


И так задача:
Получать цену доставки каждого пункта доставки до его выбора не зависимо от того, какой handler стоит у пункта доставки и какие службы доставки установлены вообще. Забегая немного вперед у каждого объекта msDelivery есть метод getCost, на нем и основан компонент, речь о котором пойдет дальше.

Проблемы:
1) В большинстве своем службы доставки взаимодействуют с API других сервисов и не все из них быстрые, другая проблема это то, что служб доставки может быть не один десяток, я думаю вы понимаете что расчет десятка разных служб доставки дело не быстрое и заставлять пользователя ждать по 1-10 секунд чтобы загрузить страницу оформления заказа дело не благодарное.
2) Стоимость доставки может зависеть от множества полей пользователя, хорошо бы чтобы цена всех пунктов изменялась динамически

Решение:
Условно бесплатный компонент ms2DeliveryCost!

Описание:


Особенности компонента заключаются в том, что изначально он отдает самый обычный список пунктов доставки, затем проверяет заполнены ли необходимые поля и только в случае их заполнения подгружает уже список пунктов доставок с рассчитанной ценой. При изменении этих полей компонент также перезагружает список пунктов доставки, по этому вы всегда будите иметь актуальную цену на каждом пункте.
Также компонент умеет рассчитывать как цену только доставки, так и цену всего заказа учитывая стоимость заказа

Модель распространения:

Компонент бесплатен и доступен на GitHub собирайте, на своем проекте и вручную проверяйте обновления, но если вам нужна будет поддержка/доработка какого либо функционала/обновление из админки — компонент будет доступен в modstore сразу после проверки.
Цена компонента составит всего 490р

Установка:

1) Устанавливаем/собираем компонент
2) Переходим в чанк оформления заказа, по умолчанию tpl.msOrder
3) Заменяем кусок вывода пунктов доставки сниппетом ms2DeliveryCost:


//с полями по умолчанию
{'!ms2DeliveryCost' | snippet: [
    'cost' => 0,
    'tpl' => 'tpl.ms2DeliveryCost',
    'required' => 'city,index',
]}
либо
{'!ms2DeliveryCost' | snippet}
4) Готово!

Параметры сниппета:
1) tpl — чанк вывода по умолчанию tpl.ms2DeliveryCost
2) cost — сумма заказа, если расчет нужно делать с учетом всего заказа подставляем сюда плейсхолдер totatlCost, по умолчанию 0
3) jsPath — путь до кастомного js, если вас не устраивает родной
4) required — name полей которые нужно проверять перед тем как загрузить методы доставки с расчетом

Параметры чанка
В чанк приходит два массива order и costs, order содержит текущие поля заказа, а costs содержит все остальное:
cost — стоимость доставки перебираемого метода (приходит false если не заполнены необходимые поля)
delivery — текущий перебираемый метод доставки
payments — массив доступных способов оплаты для перебираемого метода доставки

Ссылки
Демо-сайт
Скачать на GitHub
Купить на modstore за 490р
Pavel Zarubin
08 апреля 2018, 17:21
334
+3

Комментарии: 2

Pavel Zarubin
09 апреля 2018, 06:14
+1
upd: Стоимость доставки для какой-то службы доставки может не рассчитываться только в том случае, если разработчик этого метода достает id не из объекта delivery, а из объекта order. Но пока что из всех мне доступных служб доставки в modstor'е я такого не встречал
Pavel Zarubin
15 апреля 2018, 15:33
0
Компонент опубликован в Modstore