Подниму. Предлагайте цену, понимаю что работы не на один вечер.
ТЗ на модуль Доставка и разгрузка
Всё через ocmod, opencart 3.0.2
Добавить таблицу типы транспорта: наименование, грузоподъемность, длина кузова, объем кузова, цена за 1 км.
Редактирование в админке модуля, в виде таблицы с полями ввода и кнопками "создать сохранить удалить".
Тип транспортного средства (ТС)
Грузоподъемность
Объем кузова
Длина кузова/макс длина товара
Цена доставки по городу
Цена км межгород
Доплата за каждые 100кг груза, если заказ больше 100кг
Если вес и/или объем заказа больше, чем любое из ТС в таблице, оставлять доступным только самовывоз.
Место магазина на карте должно выбираться в настройках.
Адрес доставки выбирается или на карте, или в поле ввода адреса, во втором случае модуль выдает подсказки.
3 варианта доставки: самовывоз - бесплатно, платная и бесплатная.
Бесплатная доставка.
Бесплатная доставка от определенной суммы заказа, при этом настраиваются ограничения на максимальный вес, объем заказа или длину отдельных товаров, или все условия вместе.
Ограничение бесплатной доставки по расстоянию от магазина или по границам города.
Например, бесплатно привезем товар по городу, от 2000 руб, весом до 50 кг, самый длинный товар не превышает 4 метров.
Платная доставка, если не выполнены условия бесплатной:
Если заказ не отвечает условиям бесплатной доставки, применять платную.
Если адрес доставки в зоне Город, стоимость доставки = цена доставки по городу + доплата за каждые 100кг сверх сверх первых 100кг веса товаров в заказе.
Если межгород, стоимость = стоимость доставки по условиям Город + расстояние * цена за км для выбранного ТС.
Расстояние для межгорода рассчитывать по автодорогам через любой бесплатный api. Попадание адреса в зону "город" определять тоже через api.
Тип тс выбирается автоматически от самого дешевого ТС (напр. газель) к большему и дорогому (напр. скания фура 20 т).
При выборе типа ТС учитывать ограничения: общий вес, общий объем и самый длинный товар из заказа - например, доска 6 метров не входит в газель по длине.
Длина товара указана в стандартных реквизитах опенкарта (д*ш*в).
Объем - доп. реквизит volume в таблице product, создается модулем при установке, заполняется пользователем.
РАЗГРУЗКА
варианты выбора разгрузки для клиента
1. разгрузка на улицу/к подъезду
2. до лифта / до ворот дачи
3. до квартиры или комнаты, без лифта, запрашивать у клиента количество этажей, цена за первый этаж указывается отдельно, цена последующих этажей одинаковая
4. до квартиры или комнаты, с лифтом
Название тарифа
Цена за первые 100кг товаров
Цена за каждые следующие 100кг
Доплата за этаж при отсутствии лифта
Применять доплату за отсутствие лифта
К подъезду
0
50
0
нет
До лифта
100
75
0
нет
Подъем до квартиры, лифт есть
200
100
0
нет
До квартиры без лифта
300
50
да
Стоимость разгрузки выводится для клиента в итогах к заказу под суммой доставки отдельно, или суммируется с доставкой — выбор в админке.
Т.е. модифицировать таблицу товаров при оформлении заказа.
Информация об адресе заносится в стандартные реквизиты заказа. Информация о выбранном типе тс вносится в дополнительно созданное поле в таблице заказа. Доп. Поле — Тип ТС.
Данные по доставке и разгрузке вывести отдельными полями в админке при просмотре заказа.
Информация о разгрузке вносится в дополнительно созданные поля в таблице заказа. Доп. Поля — название тарифа, этаж, стоимость.