Jump to content
Sign in to follow this  
worobiov

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

Recommended Posts

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

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

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

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

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

Share this post


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 4

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

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

 

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

  • +1 1

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

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

от 1000 до 5000 + 4%

от 5000 до 20000 +2%

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×

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.