[Помогите] Привязка метода оплаты к варианту доставке

Тема в разделе "OpenCart", создана пользователем gozhdik, 16 ноя 2012.

  1. gozhdik

    gozhdik

    Регистрация:
    22 окт 2012
    Сообщения:
    31
    Симпатии:
    44
    Кто знает как в OpenCart сделать так, чтобы выводился определенный метод оплаты при выборе определенного варианта доставки? Например чтобы метод оплаты наложенным платежом выводился только при выборе варианта доставки Новой Почтой? Желательно без установки модуля Simple.
     
  2. serioga

    serioga

    Регистрация:
    24 окт 2012
    Сообщения:
    10
    Симпатии:
    11
    Есть простой хак. Например, если вы хотите включить Оплату при доставке (COD), когда выбрана "бесплатная доставка", можете добавить в файл оплаты:
    1. Файл: catalog/model/payment/cod.php
    2. Найти:
    $method_data = array(
    'id' => 'cod',
    'title' => $this->language->get('text_title'),
    'sort_order' => $this->config->get('cod_sort_order')
    );
    3. После добавить:
    // Если бесплатная доставка выбрана, закрывает все другие модули оплаты.
    if ($this->session->data['shipping_method']['id'] == 'free.free') {
    $this->session->data['payment_method'] = $method_data;
    $this->session->data['comment'] = '';
    $this->response->redirect($this->url->https('checkout/confirm'));
    }
    Аналогично и с другими
     
    gozhdik и vadik21 нравится это.
  3. serioga

    serioga

    Регистрация:
    24 окт 2012
    Сообщения:
    10
    Симпатии:
    11
    gozhdik нравится это.
  4. gozhdik

    gozhdik

    Регистрация:
    22 окт 2012
    Сообщения:
    31
    Симпатии:
    44
    Спасибо за наводку, но это решение уже не работает в версиях 1.5.x. Для новых версий пока нашел только такое решение: http://forum.opencart.com/viewtopic.php?f=22&t=48875&p=235734#p235734, только не могу понять как в этом коде сделать не "ложь" при выборе варианта доставки, а правду, чтобы в остальных вариантах не выводился заданный метод оплаты
     
  5. serioga

    serioga

    Регистрация:
    24 окт 2012
    Сообщения:
    10
    Симпатии:
    11
    Пропишите просто этот код в тех файлах оплаты, которые не нужны при выборе определенного варианта доставки. Например, при выборе бесплатной доставки (free.free), нужно выводить только 1 вариант оплаты, тогда вставьте этот код во все, кроме этого 1, включенные файлы оплат catalog/model/payment/файлы_оплат.php :
    if (isset($this->session->data['shipping_method']['code']) && $this->session->data['shipping_method']['code'] == 'free.free') {
    $status = false;
    }
     
  6. gozhdik

    gozhdik

    Регистрация:
    22 окт 2012
    Сообщения:
    31
    Симпатии:
    44
    Решил задачу таким способом (вместо "ocu_ukrposhta.0", "ocu_ukrposhta.1", "ocu_ukrposhta.2" нужно ставить id тех методов доставки при которых не нужно выводить метод оплаты при получении)
    http://www.mediafire.com/download.php?wffq9gn1wkzcgv4
     
    vadik21 нравится это.
  7. ErXan

    ErXan

    Регистрация:
    18 янв 2013
    Сообщения:
    7
    Симпатии:
    3
    Ссылка битая:frantic:
    --- добавлено: 8 фев 2013 в 12:44 ---
    Еще модуль появился Restrict Payments By Shipping $20
     
  8. gozhdik

    gozhdik

    Регистрация:
    22 окт 2012
    Сообщения:
    31
    Симпатии:
    44
    Перезалил
    Подобных модулей много, но к сожалению в паблике таких нет :(
     
    sunny8u нравится это.
  9. sunny8u

    sunny8u

    Регистрация:
    21 окт 2012
    Сообщения:
    66
    Симпатии:
    62
    Добавьте
    Добавьте этот хак в FAQ. Многим может пригодиться=)