Модуль Commerce EMS

Пнд, 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

0 Спасибо

Комментарии

Аватар пользователя sas@drupal.org
2 года 10 months назад sas@drupal.org #

Молодца!

0 Спасибо
Аватар пользователя mak-vardugin
2 года 10 months назад mak-vardugin #

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

UPD: увидел

0 Спасибо
Аватар пользователя kodo
2 года 10 months назад kodo #

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

0 Спасибо
Аватар пользователя mak-vardugin
2 года 10 months назад mak-vardugin #

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

0 Спасибо
Аватар пользователя kodo
2 года 10 months назад kodo #
mak-vardugin написал:
Странно модуль клевый, а реакция нулевая

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

0 Спасибо
Аватар пользователя multpix
2 года 10 months назад multpix #

респект!

0 Спасибо
Аватар пользователя DmitryS
2 года 10 months назад DmitryS #

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

0 Спасибо
Аватар пользователя mak-vardugin
2 года 10 months назад mak-vardugin #

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

0 Спасибо
Аватар пользователя smirn0ff
2 года 8 months назад smirn0ff #

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

0 Спасибо
Аватар пользователя 1541
2 года 6 months назад 1541 #

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

0 Спасибо
Аватар пользователя DmitryS
2 года 5 months назад DmitryS #

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

0 Спасибо
Аватар пользователя 1541
2 года 5 months назад 1541 #
DmitryS написал:
Скоро будет международная версия.

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

0 Спасибо
Аватар пользователя Murz
2 года 5 months назад Murz #

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

0 Спасибо
Аватар пользователя DmitryS
2 года 5 months назад DmitryS #
1541 написал:
Прошу прощения а когда и сколько стоить будет? Кстати не намечается ли случайно адаптация иных способов доставки на международном уровне(DHL, PonyExpress и пр.)?

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

0 Спасибо
Аватар пользователя kolosnitsyn
2 года 2 недели назад kolosnitsyn #

Спасибо!

0 Спасибо
Аватар пользователя 1541
2 года 2 недели назад 1541 #

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

0 Спасибо
Аватар пользователя Murz
1 год 9 months назад Murz #

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

0 Спасибо
Аватар пользователя Oleg0s
1 год 7 months назад Oleg0s #

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

В описании опечатка. Вместо
Для подсчета веса определен 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)

0 Спасибо
Аватар пользователя veshiyi
1 год 3 months назад veshiyi #

Добрый день, подскажите пожалуйста!
Вопрос по модулю 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();
}
}

0 Спасибо
Аватар пользователя veshiyi
1 год 3 months назад veshiyi #

oleg: 28 Окт 2014 11:48
Добрый день подскажите, не могу разобраться
при расчете стоимости доставки пишет ошибку entity metadata wrapper: unknown data property field_weight

Магазин развернут из коробки commerce kickstart

1.В типе материала, машинное имя Shoes, создал поле: Машинное имя - field_weight, тип поля - Десятичное число, Виджет - текстовая строка. По умолчанию поставил число 5
2. создал модуль Mymodule, вставил код хука:
<?php
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() == 'shoes') {
$unit_weight = $product->field_weight->value();
}
}

где указал свой тип материала Shoes и прописал название поля для веса field_weight
надеюсь все верно?
и Вот при расчете товара из типа материала Shoes выдает ошибку, подскажите пожалуйста, где мне надо что-то поправить?

0 Спасибо