Перейти к содержанию
nikifalex

В модуле доставки узнать итоговую сумму заказа

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

Вот есть например сферический модуль доставки с таким условием:

Если тоговая сумма заказа меньше 10 тыс руб, то стоимость доставки - бесплатно. Иначе стоимость доставки 500 руб.

Если бы была не итоговая, а просто сумма товаров в корзине, то нет проблем вообще.

А нам надо стоимость с учетом скидкок, наценок, бонусных балоов и прочих купонов.

Т.е. если 10 тыс товары, но потом купон на 5000, то итоговая сумма заказа 5000 руб. и условие не выполено. Стоимость доставки будет 500.

Но вот я смотрю, что сначала расчитывается доставка, и только потом расчитываются строки в итого. И увы, мы не видим еще строк в order_total и не знаем что там насчитано будет.

 

Как можно решить этот парадокс, куда добавить проверку, как сделать такой способ доставки, который бы видел итоговую сумму?

 

Поделиться сообщением


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

и вот думаю, можно просто в /catalog/model/total/shipping.php

сделать проверку на $total и вариант доставки. и если совпало, то жестко обнулять тут же 

'value'      => $this->session->data['shipping_method']['cost'],

Поделиться сообщением


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

Как вариант

		if ($this->session->data['shipping_method']['cost'] < 1000) {
			$this->session->data['shipping_method']['cost'] = 0;
		}

 

 

 

Поделиться сообщением


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

все усложняется еще тем, что этот самый порог цены зависит от огромного количества настроек модуля оплаты.

и самое место этой проверке в самом модуле.

Поделиться сообщением


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

Отвечу сам себе.

Цитата

 

Чувак, вкопируй в модуль доставки расчет totals и пользуйся полученным массивом как угодно.


            $results = $this->model_extension_extension->getExtensions('total');

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

            array_multisort($sort_order, SORT_ASC, $results);

            foreach ($results as $result) {
                if ($this->config->get($result['code'] . '_status')) {
                    $this->load->model('total/' . $result['code']);
                    $this->{'model_total_' . $result['code']}->getTotal($total_data, $total, $taxes);
                }
            }


 

 

Поделиться сообщением


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

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.