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

[Решено] Дописать процент к сумме доставки! Как?

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

Доброго времени ув. форумчане!

Кто мне написать не просто сумму доставки, а сумму с процентом от товара!?

На скрине подчеркнул, в сумме нужно дописать ещё +2% от суммы заказа.

post-666864-0-79475400-1366271438_thumb.jpg

Заранее всем благодарен за ответы!!

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


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

В качестве примера использую стандартную доставку с фиксированной стоимостью. В принципе, чтобы поправить любой другой модуль доставки, надо сделать примерно тоже самое. Но главное - суть!

 

Работаем с файлом модели \catalog\model\shipping\flat.php (flat.php - этой модель для доставки с фиксированной стоимостью).

 

В opencart все квоты модулей доставки помещаются в массив $quote_data[]. Для данного модуля смотрим, чем наполняется массив:

$quote_data['flat'] = array(
                'code'         => 'flat.flat',
                'title'        => $this->language->get('text_description'),
                'cost'         => $this->config->get('flat_cost'),
                'tax_class_id' => $this->config->get('flat_tax_class_id'),
                'text'         => $this->currency->format($this->tax->calculate($this->config->get('flat_cost'), $this->config->get('flat_tax_class_id'), $this->config->get('config_tax')))
              );
 

code - Код метода доставки. Этот элемент нас не интересует. В итоге это ID метода в HTML коде.

title - Заголовок, который отображается на странице пользователю. Видно, что он берется из текстового файла в директориях language.

cost - Переменная, которая содержит стоимость, которая отдается в итоговый чек. Видно, что она берется из БД, где предустанавливается из админки.

tax_class_id - Идентификатор налоговой зоны, тоже нас не интересует.

text - в данном случае вывод стоимости и наименования валюты (например 100р, 200$, в зависимости он настроек вывода).

 

Итак, нас интересует внесение изменений в финальный прайс. Формализованная задача: Надо учитывать стоимость корзины, и вычислять от нее 2%. Эти 2% прибавить к фиксированной предустановленной стоимости доставки.

 

Решение: изменить алгоритм расчета элемента cost и вывода элемента text массива $quote_data[].

 

Метод:

Добавляем к cost и text 2-х процентную составляющую от стоимости корзины, которую достает стандартным методом opencart:

 

'cost'         => $this->config->get('flat_cost') + 0.02*$this->cart->getTotal(),


'text'         => $this->currency->format($this->tax->calculate($this->config->get('flat_cost') + 0.02*$this->cart->getTotal(), $this->config->get('flat_tax_class_id'), $this->config->get('config_tax')))

 

Метод getTotal() класса cart возвращает конечную стоимость корзины.

 

Надеюсь, я тебе помог :-)

  • +1 4

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


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

Огромное спасибо за такой развернутый ответ!!!! Попробую сделать как вы написали, позже отпишусь!!

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


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

Спасибо, работает! Вот только навязался ещё вопросик, как сделать два таких способа доставки?

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


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

А что значит два способа :-)

Если вопрос, как сделать тоже самое для двух разных модулей, например, для фиксовой доставки, и для доставки в зависимости от веса, то надо сделать абсолютно тоже самое с массивом квоты, про который писал выше. Модули все одинаково работают.

 

Уточни, что ты имеешь ввиду

  • +1 1

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


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

Спасибо вам ОГРОМНОЕ!!! Очень помогли! Все сделал уже!)))

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


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

Огромное спасибо, тоже пригодилось.

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


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

soloyes, я примерно вижу что истина где-то рядом, но ни как не могу додумать решение своей чем-то схожей задачи.

 

Я использую налоги. В случае платной доставки Опенкарт не добавляет сумму доставки без налога в sub total. А вот общий налог (НДС за товар и за доставку) он считает правильно и конечную сумму с налогом выдает тоже правильно. Нужно чтоб в Sub total он выдавал тоже правильну сумму без налога.

Я думаю что надо редактировать фаил /catalog/model/total/sub_total.php

 

На скрине вместо 11,07 должно быть 15,21. Цена товара и доставки включают НДС. Но надо сделать разбивку на сумму без НДС и НДС отдельно.

lWT7H1Gj.jpg

 

Надо поиграться с  $this->config->get('flat_cost') в файле  /catalog/model/total/sub_total.php

Изменено пользователем aartyom

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


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

Добрый день! Хоть сабж звучит как дописать процент к сумме доставки, а решили как сумму с процентом от заказа.

Интересует как добавить, скажем 10% к сумме доставки? Допустим есть тара, её оценивают как 10 % от суммы ДОСТАВКИ, чтобы пользователь видел из чего цена складывается. Может с тарой/упаковкой как то 

по-другому работают? Спасибо за отзывы!

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


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

Подскажите, как бы выделить стоимость доставки в отдельный div/span? Доставка бесплатная, хочу выделить это цветом :)

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


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

Спасибо! Отличное решение, мне помогло с модом в зависимости от веса

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


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

Спасибо! Отличное решение, мне помогло с модом в зависимости от веса

Если можно вопрос: как можно этот способ применить к таким значением

от 1000 до 5000 + 4%

от 5000 до 20000 +2%

от 20000 и больше +1.5%

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


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

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

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

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

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

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

Войти

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

Войти

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

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

×

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

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