Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
  • Sign Up

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


Recommended Posts

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

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

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

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

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

Link to post
Share on other sites

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

 

Работаем с файлом модели \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 5
Link to post
Share on other sites

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

Link to post
Share on other sites

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

Link to post
Share on other sites

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

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

 

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

  • +1 1
Link to post
Share on other sites

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

Link to post
Share on other sites

  • 5 weeks later...

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

Link to post
Share on other sites

  • 1 month later...
  • 3 weeks later...

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

Edited by aartyom
Link to post
Share on other sites

  • 6 months later...
  • 11 months later...

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

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

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

Link to post
Share on other sites

  • 4 months later...

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

Link to post
Share on other sites

  • 8 months later...

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

Link to post
Share on other sites

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

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

от 1000 до 5000 + 4%

от 5000 до 20000 +2%

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

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.