shaklov 63 Опубликовано 24 марта, 2011 Жалоба Share Опубликовано 24 марта, 2011 Версия 1.61. Нельзя использовать символ подчеркивания "_" в названиях новых модулей доставки и в именах их файлов. При оформлении заказа не переходит на второй этап выбора оплаты, а кидает обратно на доставку. Как только убрал везде это подчеркивание, то все мои новые три модуля доставки нормально заработали. Например обычное клонирование модуля flat под именем new_flat ни к чему хорошему не приведёт. А если потом переименовать везде в newflat, то будет работать. С модулями оплаты такого бага нет. P.S. Потерял два рабочих вечера, кучу нервов за двое суток, веру в своё величие и затянул сроки сдачи проекта. Сегодня уже хотел в запой уходить. Ссылка на сообщение Поделиться на другие сайты
ABerezin 0 Опубликовано 24 марта, 2011 Жалоба Share Опубликовано 24 марта, 2011 Это не баг. Это особенность модулей доставки. Дело в том, что у модулей доставки есть ещё и методы. Т.е. один модуль может предложить несколько вариантов (методов) доставки. Причём каждый со своей ценой. Я уже приводил пример: Модуль - Курьерская доставка Варианты: Доставка до ст. метро - 50руб Доставка до дома - 75руб Доставка до квартиры - 100руб В итоге модуль доставки внутри системы определяется как <модуль>_<метод>. Поэтому подчёркивание использовать нельзя. Ссылка на сообщение Поделиться на другие сайты
shaklov 63 Опубликовано 25 марта, 2011 Автор Жалоба Share Опубликовано 25 марта, 2011 А какой модуль можно посмотреть, где больше одного метода? Ссылка на сообщение Поделиться на другие сайты
ABerezin 0 Опубликовано 25 марта, 2011 Жалоба Share Опубликовано 25 марта, 2011 Например dhl. Но он навороченный - там разбираться долго. Давай я тебе здесь нарисую иллюстрацию к приведённому выше примеру. Берём flat.php и переписываем quote: function quote($method = '') { global $order; if ($method == '') { $this->quotes = array('id' => $this->code, 'module' => MODULE_SHIPPING_FLAT_TEXT_TITLE, 'methods' => array( array('id' => 'metro', 'title' => 'Доставка до ст. метро', 'cost' => 50), array('id' => 'home', 'title' => 'Доставка до дома', 'cost' => 75), array('id' => 'apartment', 'title' => 'Доставка до квартиры', 'cost' => 100), ) ); } else { switch ($method) { case 'metro': $title = 'Доставка до ст. метро'; $cost = 50; break; case 'home': $title = 'Доставка до дома'; $cost = 75; break; case 'apartment': $title = 'Доставка до квартиры'; $cost = 100; break; } $this->quotes = array('id' => $this->code, 'module' => MODULE_SHIPPING_FLAT_TEXT_TITLE, 'methods' => array( array('id' => $method, 'title' => $title, 'cost' => $cost), ) ); } if ($this->tax_class > 0) { $this->quotes['tax'] = vam_get_tax_rate($this->tax_class, $order->delivery['country']['id'], $order->delivery['zone_id']); } if (vam_not_null($this->icon)) $this->quotes['icon'] = vam_image($this->icon, $this->title); return $this->quotes; }[/code]Понятно, что реальный код выглядит иначе - массивы, константы, проверки и т.д. Но в качестве примера, ИМХО, этот код показателен.Кстати, при вызове модуля с указанным $method можно ещё и заголовки почистить от html-кода, чтобы не было мусора в ot_totals. Ссылка на сообщение Поделиться на другие сайты
qazaq1 0 Опубликовано 22 июля, 2011 Жалоба Share Опубликовано 22 июля, 2011 ABerezin, а вы случайно не можете посодействовать в написании модуля доставки с заданными требованиями? если можно в личку. Спасибо! Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения