Привязка метода оплаты к варианту доставке (OpenCart)

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

Информация :
Внимание форумчане! При создании тем, или выкладывании какой-либо информации проверьте в какой ветке форума вы находитесь! Не путайте Opencart и Opencart2. При несоблюдении данного условия выносится соответствующее наказание! И потом не говорите что вас НЕ ПРЕДУПРЕЖДАЛИ! По возможности используйте обменники mail, yandex, google, dropbox, rghost Дабы избежать просьб перезалить и проблем с рекламой!
Модераторы: ZiX
  1. gozhdik

    gozhdik Постоялец

    Регистр.:
    15 апр 2007
    Сообщения:
    56
    Симпатии:
    41
    Кто знает как в OpenCart сделать так, чтобы выводился определенный метод оплаты при выборе определенного варианта доставки? Например чтобы метод оплаты наложенным платежом выводился только при выборе варианта доставки Новой Почтой? Желательно без установки модуля Simple.
     
  2. rrrzz

    rrrzz Создатель

    Регистр.:
    20 ноя 2012
    Сообщения:
    24
    Симпатии:
    4
    быстрый, но не красивый вариант:
    в файле \catalog\view\theme\default\template\checkout\payment_method.tpl
    после 4-й строки <?php if ($payment_methods) { ?>
    добавить флаг был ли выбран нужный метод доставки:
    PHP:
    <?php if (strpos($this->session->data['shipping_method']['code'], 'novaposhta') !== false) { $_novaposhta true; } else { $_novaposhta false; } ?>
    далее при выводе опций проверяя флаг - выводить необходимые пункты:
    PHP:
    <?php if ($_novaposhta && $payment_method['code'] == 'cod') {
    'cod' - это код метода "Оплата при доставке"

    конечно красивее в админке связать методы доставки и оплаты, и выводить в бэкэнде только привязанные к выбранному.
     
  3. gozhdik

    gozhdik Постоялец

    Регистр.:
    15 апр 2007
    Сообщения:
    56
    Симпатии:
    41
    Решил задачу таким способом (вместо "ocu_ukrposhta.0", "ocu_ukrposhta.1", "ocu_ukrposhta.2" нужно ставить id тех методов доставки при которых не нужно выводить метод оплаты при получении)

    http://www.mediafire.com/download.php?wffq9gn1wkzcgv4
     

    Вложения:

    • ship2pay.zip
      Размер файла:
      475 байт
      Просмотров:
      88
    one нравится это.
  4. dixi7

    dixi7 Писатель

    Регистр.:
    17 мар 2012
    Сообщения:
    1
    Симпатии:
    0
    Можно поподробней: что с этим файлом делать?
    Спасибо!
     
  5. xray

    xray

    Регистр.:
    6 ноя 2011
    Сообщения:
    211
    Симпатии:
    13
    Народ, а как можно сделать доставку бесплатной в зависимости от цены?
     
  6. gozhdik

    gozhdik Постоялец

    Регистр.:
    15 апр 2007
    Сообщения:
    56
    Симпатии:
    41
    1. Включаешь необходимые методы доставки и метод оплаты "при получении"
    2. Устанавливаешь vQmod, кидаешь в папку xml прикрепленный файл и вносишь в него id тех методов доставки при которых не нужно выводить метод оплаты при получении.
     
  7. loomonrt

    loomonrt Писатель

    Заблокирован
    Регистр.:
    17 янв 2013
    Сообщения:
    9
    Симпатии:
    1
    Модуль бесплатной доставки по-моему в комплекте по-умолчанию идёт. В какой-то сборке точно видел
     
  8. IgorBond

    IgorBond Постоялец

    Регистр.:
    22 май 2012
    Сообщения:
    66
    Симпатии:
    17
    я сделал в

    http/catalog/model/payment/cod.php

    $shipping_method = $this->session->data['shipping_method'];
    if ( $shipping_method['code'] == 'nmpost.nmpost' ) {
    $status = false;
    } else {
    $status = true;
    }
    nmpost == nmpost.php == брал как шаблон nexpress.php из модуля всех почтовых Украины.

    /http/catalog/model/payment/nmpost.php

    nmpost.php брал (тупо копировал в новый модуль все, т.к. мне надо было совместить их если сумма меньше указанной, то наложки нету)
    после:
    $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "zone_to_geo_zone WHERE geo_zone_id = '" . (int)$this->config->get('npnal_geo_zone_id') . "' AND country_id = '" . (int)$add
    добавил:
    $shipping_method = $this->session->data['shipping_method'];
    if ( $shipping_method['code'] == 'nmpost.nmpost' ) {
    $status = true;
    } else {
    $status = false;
    }
    npnal.php из bank_transfer.php делал
    Там много еще фишек потом вылезет, но думаю на путь истинный наставил :)
     
  9. palec

    palec

    Регистр.:
    6 дек 2006
    Сообщения:
    272
    Симпатии:
    34
    Испробовал все варианты! Есть решение для 1.5.6...??? нашел пока только Shipping2Payment :(
     
  10. White_S

    White_S

    Регистр.:
    27 май 2009
    Сообщения:
    477
    Симпатии:
    95
    А почему не использовать симпл, где есть функция настройки связей?