Перейти к содержанию
Форум поддержки пользователей VamShop

Баг с клонированием модулей доставки


Рекомендуемые сообщения

Версия 1.61. Нельзя использовать символ подчеркивания "_" в названиях новых модулей доставки и в именах их файлов. При оформлении заказа не переходит на второй этап выбора оплаты, а кидает обратно на доставку. Как только убрал везде это подчеркивание, то все мои новые три модуля доставки нормально заработали.

Например обычное клонирование модуля flat под именем new_flat ни к чему хорошему не приведёт. А если потом переименовать везде в newflat, то будет работать.

С модулями оплаты такого бага нет.

P.S. Потерял два рабочих вечера, кучу нервов за двое суток, веру в своё величие и затянул сроки сдачи проекта. Сегодня уже хотел в запой уходить.

Ссылка на сообщение
Поделиться на другие сайты

Это не баг. Это особенность модулей доставки. Дело в том, что у модулей доставки есть ещё и методы. Т.е. один модуль может предложить несколько вариантов (методов) доставки. Причём каждый со своей ценой. Я уже приводил пример:

Модуль - Курьерская доставка

Варианты:

Доставка до ст. метро - 50руб

Доставка до дома - 75руб

Доставка до квартиры - 100руб

В итоге модуль доставки внутри системы определяется как <модуль>_<метод>. Поэтому подчёркивание использовать нельзя.

Ссылка на сообщение
Поделиться на другие сайты

Например 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.

Ссылка на сообщение
Поделиться на другие сайты
  • 3 months later...

ABerezin, а вы случайно не можете посодействовать в написании модуля доставки с заданными требованиями? если можно в личку. Спасибо!

Ссылка на сообщение
Поделиться на другие сайты
×
×
  • Создать...