Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

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


kiggo

Recommended Posts

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

 

Цена всего товара на сайте (в админ части) введена в $ (т.к. все импорт), на сайте покупателю выводит стоимость в грн, в присчёте по курсу на сегодня Цены в большинстве случаев с центами ( пример – 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 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.