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

Округление общей стоимости товара

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

Ситуация следующая:

 

Цена всего товара на сайте (в админ части) введена в $ (т.к. все импорт), на сайте покупателю выводит стоимость в грн, в присчёте по курсу на сегодня Цены в большинстве случаев с центами ( пример – 8,37 $).

Специфика товара в том, что как правило заказывают мин 2 -3 единицы.

В результате чего из-за округления стоимости, общая сумма не являете не правильной.

 

Например:

 

1 товар стоит (8,37$) – по курсу гривны к $ (8,37 * 24,4=204,23 грн), естественно на карточке товара цена округляется до 204 грн. Но возникает проблема при заказе большего количества – например 7шт.

Умножение производиться не по целой стоимости в 204 грн., а естественно по стоимости 204,23грн.

204*7=1428 грн

204,23*7=1430 грн. (естественно с округлением)

Вот и выходит разница в 2 грн.

Может кто подскажет как это можно исправить ?

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


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

Подскажет...

В таком случае нужно округять  до умножения

 

т.е 204,23  ~ 204

 

т.е не

round (($price * $quantity) * $currency_value)

 

а round($price * $currency_value) ** $quantity

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


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

В целом Ваша мысль ясна.

Только вот, в cart.php :

// Display prices
if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) {
$total = $this->currency->format($this->tax->calculate($product['price'], $product['tax_class_id'], $this->config->get('config_tax')) * $product['quantity']);
} else {
$total = false;
}
Если не трудно ... Изменено пользователем afwollis
[code][/code]

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


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

Мне проще это сделать, чем рассказать

 

ну вот же

 

попробуйте

 

$total = $this->currency->format($this->tax->calculate($product['price'] * $product['quantity'], $product['tax_class_id'], $this->config->get('config_tax')) );

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


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

Не сомневаюсь в Вашей компетенции, но что то не помогло.

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


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

Я не проверял свое предположение

 

Нужно делать тест на реальных данных

 

 

А что не помогло?

Не заработало?

А вот

 

тут скорей всего нужен небольшой хак

 

$total = $this->currency->format($this->tax->calculate($product['price'], $product['tax_class_id'], $this->config->get('config_tax')) * $product['quantity'],false);

$total = $this->currency->format($total,'',1, true);

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


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

а не проще ли воспользоваться готовым модулем?

https://opencartforum.com/files/file/2170-%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8C-%D0%BC%D1%83%D0%BB%D1%8C%D1%82%D0%B8%D0%B2%D0%B0%D0%BB%D1%8E%D1%82%D0%BD%D1%8B%D0%B5-%D1%82%D0%BE%D0%B2%D0%B0%D1%80%D1%8B/

 

5 видов округления, на любой вкус

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


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

И оно будет округлять тотал?

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


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

Я не проверял свое предположение

 

Нужно делать тест на реальных данных

 

 

А что не помогло?

Не заработало?

А вот

 

тут скорей всего нужен небольшой хак

 

$total = $this->currency->format($this->tax->calculate($product['price'], $product['tax_class_id'], $this->config->get('config_tax')) * $product['quantity'],false);

$total = $this->currency->format($total,'',1, true);

 

К сожалению данный вариант, так же не работает.

При проверке = товар 380 грн и католичестве 21 шт - получилось что общая стоимость равна 7 грн.

 

 

По логике видно, что умножение стоимости товара $product['price'] на количество $product['quantity'] проводиться сразу в грн. и естественно получается отклонение.

$total = $this->currency->format($this->tax->calculate($product['price'] * $product['quantity'])); 

На сайте использую вот такую систему валют:

post-670964-0-23507000-1446799719_thumb.jpg

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


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

А почему у вас валюта по умолчанию имеет значение 24, а не 1?

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


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

А почему у вас валюта по умолчанию имеет значение 24, а не 1?

 

Все позиции в админке введены в $. А на сайте выводится цена в грн.

При изменении курса гривны, не приходиться пересчитывать все позиции.

Данную схему нарыл тут на форуме.

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


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

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

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

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

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

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

Войти

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

Войти

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

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

×

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

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