Бесплатная доставка и купон на скидку

Тема в разделе "Общие вопросы", создана пользователем Каспий, 30 авг 2020.

  1. Каспий

    Каспий Пользователь

    Сообщения:
    31
    Симпатии:
    1
    OpenCart 3
    При активации модуля Бесплатная доставка выставляется сумма, при которой она становится доступной для выбора при заказе.
    При покупке товара на сайте и применении купона на скидку, сумма заказа снижается, но Бесплатная доставка почему-то остаётся доступной для выбора...
    Что делать, подскажите пожалуйста, как это можно исправить?
     
    Последнее редактирование: 30 авг 2020
  2. Ravilr

    Ravilr Специалист

    Сообщения:
    3.876
    Симпатии:
    1.064
    Потому что доставка работает от стоимости товаров, а не от стоимости корзины.
     
  3. Каспий

    Каспий Пользователь

    Сообщения:
    31
    Симпатии:
    1
    Я видимо не верно написал, стоимость товара снижается и по идее он не должен подпадать под бесплатную доставку. А попадает, даже с низкой ценой
     
  4. Ravilr

    Ravilr Специалист

    Сообщения:
    3.876
    Симпатии:
    1.064
    Нет, купон не меняет стоимость товара. Купон просто добавляет вычет.
     
  5. Каспий

    Каспий Пользователь

    Сообщения:
    31
    Симпатии:
    1
    А как же быть в данной ситуации?
    Если с учетом промокода снижается цена товара и уже не попадает под условия бесплатной доставки...
     
  6. Ravilr

    Ravilr Специалист

    Сообщения:
    3.876
    Симпатии:
    1.064
    Нужно переделать модуль. На этапе применения купона, еще не подсчитана итоговая стоимость. Т.е нужно полностью посчитать все итоговые модули и вывести суммму итого в модуле доставки.
     
    Каспий нравится это.
  7. Каспий

    Каспий Пользователь

    Сообщения:
    31
    Симпатии:
    1
    А как это сделать на практике?
    Я даже не представляю....
     
  8. Ravilr

    Ravilr Специалист

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

    Заменить это
    Код:
    if ($this->cart->getSubTotal() < $this->config->get('shipping_free_total')) {
    на это
    PHP:
                $totals = array();
                
    $taxes $this->cart->getTaxes();
                
    $total 0;

                
    $total_data = array(
                    
    'totals' => &$totals,
                    
    'taxes'  => &$taxes,
                    
    'total'  => &$total
                
    );

                
    $this->load->model('setting/extension');

                
    $sort_order = array();

                
    $results $this->model_setting_extension->getExtensions('total');

                foreach (
    $results as $key => $value) {
                    
    $sort_order[$key] = $this->config->get('total_' $value['code'] . '_sort_order');
                }

                
    array_multisort($sort_orderSORT_ASC$results);

                foreach (
    $results as $result) {
                    if (
    $this->config->get('total_' $result['code'] . '_status')) {
                        
    $this->load->model('extension/total/' $result['code']);

                        
    $this->{'model_extension_total_' $result['code']}->getTotal($total_data);
                    }
                }

         
                
    $itogo $total_data['total'];
         
            if (
    $itogo $this->config->get('shipping_free_total')) {
     
    Каспий и my2you нравится это.
  9. enoflow

    enoflow Новичок

    Сообщения:
    2
    Симпатии:
    0
    Добрый день. А есть такое же решение для 2.3?
     
  10. Ravilr

    Ravilr Специалист

    Сообщения:
    3.876
    Симпатии:
    1.064
    В принципе такое же, не должно сильно отличаться.
     
  11. enoflow

    enoflow Новичок

    Сообщения:
    2
    Симпатии:
    0
    Я попробовал и вышла ошибка.
     

    Вложения:

  12. Каспий

    Каспий Пользователь

    Сообщения:
    31
    Симпатии:
    1
    Спасибо! Все работает!
     
    Последнее редактирование: 18 фев 2021