在后端订购产品时,Magento 3位小数

时间:2015-01-16 13:03:56

标签: php magento

在magento目录中创建产品时,我们有3位小数,但当它们被添加到订单时,它们变为2并失去第3个数字,使价格四舍五入到错误的数字并在价格上加一分。

例如,当添加到购物车时350.00 EUR变为350.01 EUR然后显示每个地方。

增值税是21%,我们尝试更改增值税的工作方式(每个项目,每行,每推车),但它适用于某些产品,但不是全部。

我们至少需要在产品列表上创建订单时找到如何生成3位小数,这样我们就可以解决一些问题。

预览: 在自定义价格输入中需要3位小数: http://i.stack.imgur.com/yP5tl.jpg

谢谢,再见!

2 个答案:

答案 0 :(得分:0)

您不必更改任何数据库字段,默认情况下magento支持使用最高4位小数精度的价格,但默认情况下它的工作精度为2。

为了强制magento在购物车/结帐/订单中进行所有计算,精度为3,您必须覆盖Mage_Core_Model_Store::roundPrice(),如下所示

function roundPrice($price)
{
    return round($price, 3);
} 

出于显示目的(如果您还希望直观查看带有3位小数的价格),您必须覆盖Mage_Directory_Model_Currency::format(),如下所示

public function format($price, $options = array(), $includeContainer = true, $addBrackets = false)
{
    return $this->formatPrecision($price, 3, $options, $includeContainer, $addBrackets);
}

另请注意,舍入问题是magento的一个众所周知的问题,即使您更改了精度并且您的示例可能正常工作(您不会看到额外的.01),其他情况可能会中断。 Magento发布了一些recommedations & best practices关于如何设置税收以尽量减少此问题。

答案 1 :(得分:-1)

我也有同样的问题。我在价格字段中对数据库进行了更改。请在数据库中检查字段数据类型。使其为十进制(10,3)或十进制。我希望它能解决你的问题。