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

Тема в разделе "Общие вопросы", создана пользователем IgorewaSib, 4 апр 2016.

  1. IgorewaSib

    IgorewaSib Пользователь

    Сообщения:
    33
    Симпатии:
    0
    Доброго времени суток уважаемые форумчане. opencart 2.0.3.1
    Собственно дано несколько городов в одном регионе, в которые возможна бесплатная доставка, при условии покупки на определенную сумму. 1 город от 1000р бесплатно, 2ой город от 2500р доставка бесплатно.
    Суть в том что стандартными средствами можно реализовать лишь целиком для региона бесплатную доставку. А требуется именно задать разные суммы для городов (несколько крупных городов по остальной области не планируется бесплатная доставка).
    Кто знает как реализовать?
    Заранее благодарен.
     
  2. Vlad

    Vlad Эксперт

    Сообщения:
    4.161
    Симпатии:
    1.012
    Если городов не много, то можно модифицировать какой нибудь модуль и вручную прописать соответствия.
    Проблема в том, что в названии города могут допустить ошибку, тогда не появится бесплатная доставка.
     
  3. IgorewaSib

    IgorewaSib Пользователь

    Сообщения:
    33
    Симпатии:
    0
    Городов всего 3, причем для двух из них одинаковые условия бесплатной доставки. Собственно Иркутск бесплатная доставка от 1000р, Ангарск и Шелехов при покупке от 2500 р.
    Если же будет допущена ошибка в названии города и не будет бесплатной доставки.... Такова судьба.
    Можно по подробнее про необходимые манипуляции?
     
  4. Vlad

    Vlad Эксперт

    Сообщения:
    4.161
    Симпатии:
    1.012
    потестирую и напишу решение. Если забуду, напомните.
     
  5. IgorewaSib

    IgorewaSib Пользователь

    Сообщения:
    33
    Симпатии:
    0
    Огромное спасибо за участие.
     
  6. Vlad

    Vlad Эксперт

    Сообщения:
    4.161
    Симпатии:
    1.012
    в файле\catalog\model\shipping\free.php

    перед if ($status) {

    вставим
    PHP:
            $city $this->session->data['shipping_address']['city'];       
            
    $summa $this->cart->getSubTotal();
            
    $status = ($city =='Ялта' && $summa 1000 ) ? true false;
    При адресе доставки город Ялта и сумме больше 1000, будет бесплатная доставка.
     
  7. IgorewaSib

    IgorewaSib Пользователь

    Сообщения:
    33
    Симпатии:
    0
    $method_data = array();
    $city = $this->session->data['shipping_address']['city'];
    $summa = $this->cart->getSubTotal();
    $status = ($city =='Город 1' && $summa > 1000 ) ? true : false;

    $city = $this->session->data['shipping_address']['city'];
    $summa = $this->cart->getSubTotal();
    $status = ($city =='Город 2' && $summa > 2500 ) ? true : false;

    $city = $this->session->data['shipping_address']['city'];
    $summa = $this->cart->getSubTotal();
    $status = ($city =='Город 3' && $summa > 2500 ) ? true : false;

    if ($status) {

    Попробовал не выходит.
    Геозоны ставил разные, по региону не появляется бесплатная доставка. Или для 3х городов другой код?
     
  8. Vlad

    Vlad Эксперт

    Сообщения:
    4.161
    Симпатии:
    1.012
    1. Код на форум вставляйте в соответствии с рекомендациями http://forum.opencart-russia.ru/threads/rekomendacii-po-oformleniju-koda-i-voprosov.460/

    2. Вашем случаи должно быть как то так
    PHP:
    $city $this->session->data['shipping_address']['city'];  
    $summa $this->cart->getSubTotal();   
     
    if (
    $city =='Город 1' && $summa 1000) {
      
    $status true;
    } elseif (
    $city =='Город 2' && $summa 2500) {
      
    $status true;
    } elseif (
    $city =='Город 3' && $summa 2500) {
      
    $status true;
    } else {
      
    $status false;
    }
     
  9. IgorewaSib

    IgorewaSib Пользователь

    Сообщения:
    33
    Симпатии:
    0
    К сожалению не работает, ссылка на сайт... .
    Не селен я в пунктуации хоть и понял суть цикла, может есть еще что то?
     
  10. IgorewaSib

    IgorewaSib Пользователь

    Сообщения:
    33
    Симпатии:
    0
    А сам модуль бесплатной доставки в админке имеет какие настройки? может в
    этом дело... но вроде все попробовал и не появляется бесплатной доставки.
     
  11. Vlad

    Vlad Эксперт

    Сообщения:
    4.161
    Симпатии:
    1.012
    есть. Его нужно активировать и включить.
     
  12. IgorewaSib

    IgorewaSib Пользователь

    Сообщения:
    33
    Симпатии:
    0
    Гео зона должна с областью совпадать? Минимальную цену указывать?
     
  13. IgorewaSib

    IgorewaSib Пользователь

    Сообщения:
    33
    Симпатии:
    0
    PHP:
    $city $this->session->data['shipping_address']['city'];
    $summa $this->cart->getSubTotal();
    if (
    $city =='Шелехов' && $summa 2500) {
      
    $status true;
    } else {
      
    $status false;
    }
    Даже эта часть не работает..... Точнее сказать не появляется бесплатная доставка вообще.
     
  14. Vlad

    Vlad Эксперт

    Сообщения:
    4.161
    Симпатии:
    1.012
    может и совпадать. Я проверял на настройки Все зоны.

    значит или город не совпадает или сумма заказа не больше положенного. По другому не знаю. Я проверял у себя. Решение рабочее.