Здравствуйте! Подскажите пожалуйста, как и где происходит вычисление сумм по нескольким товарам, итоговым сумм и т..д., в каком направлении копать. Проблема следующая, цена товар указана в долларах, и пересчитывается по курсу, цифра естественно получается не очень красивая, встал вопрос по округлению до сотен. На одном из форумов было предложено следующее решение, в файле .system/library/currency.php поменять строку PHP: $string .= number_format(round($value,(int)$decimal_place),(int)$decimal_place, $decimal_point, $thousand_point); на PHP: $string .= number_format(round($value,-2),(int)$decimal_place, $decimal_point, $thousand_point); В результате в при отображении самого товара цена получилась как надо, но вот в корзине и в форме заказа,цена товара и сумма, если товара больше одного, стали разъезжаться т.е. цена после умножения на курс равна 10447, после округления стала 10400, но цена за 2 шт. равна 20895, и после округления этой цифры получаем 20900, хотя надо бы что бы было 20800. По хорошему, надо что бы итоговые суммы считались от уже округленной цены за единицу товара. Может кто то сталкивался с такой проблемой, по возможности подскажите в каком направлении копать.
ни одна из тем не помогла ?? http://forum.opencart-russia.ru/search/182128/?q=округление&o=date и это не ошибка движка!!!
В общем, проблему можно решить выносом множителя количества товара за curency, т.е. изначально происходит умножение первичной цены на количество выбранного товара, потом умножение на курс, достаточно вынести $product['quantity'] за currency и сумма начинает биться с округленной ценой за единицу. Изменения в форме корзины: PHP: <file path="catalog/controller/checkout/cart.php"> <operation> <search position="replace" offset="1"><![CDATA[ $total = $this->currency->format($this->tax->calculate($product['price'], $product['tax_class_id'], $this->config->get('config_tax')) * $product['quantity']); ]]></search> <add><![CDATA[ $total = ($this->currency->format($this->tax->calculate($product['price'], $product['tax_class_id'], $this->config->get('config_tax'))) ) * $product['quantity']; ]]></add> </operation> </file> изменения в форме заказа: (у меня симпл, если форма заказа стандартная то надо исправить путь) PHP: <file path="catalog/controller/checkout/simplecheckout_cart.php"> <operation> <search position="replace" offset="1"><![CDATA[ $total = $this->currency->format($this->tax->calculate($product['price'], $product['tax_class_id'], $this->config->get('config_tax')) * $product['quantity']); ]]></search> <add><![CDATA[ $total = ($this->currency->format($this->tax->calculate($product['price'], $product['tax_class_id'], $this->config->get('config_tax'))) ) * $product['quantity']; ]]></add> </operation> </file> Еще вопрос, подскажите где описана форма выпадающего окна корзины, там тоже надо исправить, что то ни как не могу найти...
Один вопрос = одна тема (на будущее) контролер \catalog\controller\common\cart.php шаблон \catalog\view\theme\default\template\common\cart.tpl
Спасибо, в комоне что то я и не посмотрел, в общем в \catalog\controller\common\cart.php делаем тоже что и в предыдущих, тогда строковая сумма по одному товару в выпадающем окне корзины выравнивается. Еще бы найти где суммируется итоговая сумма по всем товарам...