Модуль Commerce EMS

Прислано: DmitryS

Пнд, 25/03/2013 - 01:30

Написал модуль Commerce EMS для Drupal Commerce - добавляет метод доставки EMS Russian Post.

Оформление заказа

Оформление заказа

Описание:

  • Расчет доставки только по России
  • Модуль использует для расчета api EMS: http://emspost.ru/corp_clients/dogovor_docements/api.php
    - ems.get.locations - для вывода всех возможных точек доставки (сначала идут города далее регионы), и точек отправления (настраивается на странице администрирования)
    - ems.get.max.weight - для определения максимального веса пакета, больше этого значения заказать за один раз заказать нельзя. Вес по умолчанию задается на странице администрирования.
    - ems.calculate - для расчета стоимости и времени доставки
  • Поддерживает 2 типа доставки: Обычная доставка и с объявленной ценностью (в этом случае к стоимости доставки прибавляется 1% стоимости заказываемого товара)

Использование:

Страница администрирования модуля
Страница администрирования модуля

На Страница администрирования модуля можно задать город откуда будут доставляться посылки (по умолчанию Москва); вес отправления по умолчанию (0.5 кг).

Хуки:

  • Для подсчета веса определен hook_commerce_commerce_ems_calculate_product_weight_alter(&$unit_weight, $order, $line_item).
  • hook_commerce_ems_service_details_form_validate($details_form, $details_values) - валидация значений формы.

Шаблоны:

commerce-ems-service-details-note.tpl.php шаблон вывода стоимости и времени доставки.

Поля:

Модуль создает поле (extra field) для заказа, которое содержит значение метода доставки,
в случае ems еще и детали:

Поле заказа

Токены:

Так же доступны 2 токена:
[commerce-order:order-shipping-method] - метод доставки, если ems, то с деталями
[commerce-order:order-shipping-method-amount] - стоимость доставки

Почитать подробнее о модуле и скачать можно здесь
Пример работы посмотреть здесь
 

Для тех кто хочет отблагодарить материально:

Яндекс.Деньги: 41001626521447
WMZ: Z362159253433
WMR: R134790704550

ВложениеРазмер
commerce_ems.tgz7.07 КБ

Комментарии


Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".
Опубликовано sas@drupal.org в Пнд, 25/03/2013 - 07:36.

Молодца!


Опубликовано mak-vardugin в Пнд, 25/03/2013 - 22:44.

Мужик! Где кошелек для донейшен?

UPD: увидел


Опубликовано kodo в Втр, 26/03/2013 - 02:44.

Респект и уважуха!
Только в демке в выборе регионов заметил "Казахстан"... а Белоруссии и Украины нет. :(


Опубликовано mak-vardugin в Ср, 27/03/2013 - 01:59.

Странно модуль клевый, а реакция нулевая


Опубликовано kodo в Ср, 27/03/2013 - 04:27.

"mak-vardugin" написал(а):

Странно модуль клевый, а реакция нулевая

По хорошему - тему на главную! не так часто появляются модули от русской тусовки.


Опубликовано DmitryS в Ср, 27/03/2013 - 08:10.

Спасибо, за добрые слова)
Насчет Казахстана его не должно быть вообще в списке(только регионы России), но почему то метод http://emspost.ru/api/rest/?method=ems.get.locations&type=regions&plain=... возвращает еще и Казахстан


Опубликовано multpix в Ср, 27/03/2013 - 09:17.

респект!


Опубликовано DmitryS в Ср, 27/03/2013 - 10:46.

Обновил описание.
Насчет Казахстана, пока сделал unset по ключу, чтоб не выводился в списке, нужно задать вопрос EMS Russian Post.


Опубликовано mak-vardugin в Ср, 27/03/2013 - 15:59.

когда поставим в рабочий проект еще денешку кину


Опубликовано smirn0ff в Чт, 23/05/2013 - 09:59.

Респект и уважуха, Дмитрию!
Давайте поддержим разработчика материально за такой прекрасный модуль, которому нет аналогов.


Опубликовано 1541 в Пт, 02/08/2013 - 18:33.

Вот если бы он считал не только Россию... кинул бы 100$


Опубликовано DmitryS в Пнд, 26/08/2013 - 10:11.

Скоро будет международная версия.


Опубликовано 1541 в Сб, 31/08/2013 - 18:58.

"DmitryS" написал(а):

Скоро будет международная версия.

Прошу прощения а когда и сколько стоить будет? Кстати не намечается ли случайно адаптация иных способов доставки на международном уровне(DHL, PonyExpress и пр.)?


Опубликовано Murz в Сб, 07/09/2013 - 10:13.

Спасибо за модуль! А как-то можно передать в форму название города, чтобы пользователю дважды не выбирать (на моём сайте клиент указывает адрес до того как выбирает доставку)?


Опубликовано DmitryS в Ср, 11/09/2013 - 06:50.

"1541" написал(а):

Прошу прощения а когда и сколько стоить будет? Кстати не намечается ли случайно адаптация иных способов доставки на международном уровне(DHL, PonyExpress и пр.)?

Работа над международным модулем начнется с октября. Основной модуль пока в песочнице.
Насчет доставки DHL, PonyExpress, вопрос интересный, нужно посмотреть api по ним.


Опубликовано kolosnitsyn в Ср, 22/01/2014 - 20:42.

Спасибо!


Опубликовано 1541 в Ср, 22/01/2014 - 20:49.

Добрый день. Модуль еще не готов?:) Хотелось бы видеть и ЕМС и почту россии, и может DPD или Пони Экспресс. С отслеживанием статуса в личном кабинете. А то подумываю пересаживаться на мадженто..


Опубликовано Murz в Пнд, 05/05/2014 - 17:09.

Спасибо за модуль! Пишу аналогичный для обычной почты, на основе http://russianpostcalc.ru/api-devel.php
Как будет что-то готовое из моих поделок - поделюсь с народом.


Опубликовано Oleg0s в Вс, 06/07/2014 - 05:52.

Поклон за модуль.

В описании опечатка. Вместо
Для подсчета веса определен hook_commerce_commerce_ems_calculate_product_weight_alter(&$unit_weight, $order, $line_item).

надо

hook_commerce_ems_calculate_product_weight_alter(&$unit_weight, $order, $line_item)


Опубликовано veshiyi в Ср, 22/10/2014 - 11:48.

Добрый день, подскажите пожалуйста!
Вопрос по модулю ems commerce, подскажите куда вставлять хук подсчета веса, чтобы рассчитывался вес заказа и соответственно менялась цена доставки по тарифам EMS ?

С помощью модуля Physical Fields - 7.x-1.x-dev, в типе продукты создал поле с меткой - weight, машинное имя - field_weight , Тип поля - Physical weight, Виджет - Weight textfield.

Куда вставлять hook_commerce_ems_calculate_product_weight_alter(&$unit_weight, $order, $line_item)
или
function mymodule_commerce_ems_calculate_product_weight_alter(&$unit_weight, $order, $line_item) {
$product = entity_metadata_wrapper('commerce_line_item', $line_item)->commerce_product;
if ($product->type->value() == 'product') {
$unit_weight = $product->[field_weight]->value();
}
}


Новое на сайте