php round()导致错误

时间:2013-01-04 08:58:57

标签: magento

我的网站是通过magento系统用于购物而建立的。现在我添加一个关于好国外价格的功能。例如: 如果价格是35.4美元,它将改为34.99美元; 如果价格是35.5美元,它将改为35.99美元;

代码是:round(35.4)+ 0.99;

现在这里有一个问题,我的产品有几个选项链接'type','color'。并且不同的选项显示不同的价格,就像magento中的默认可配置产品一样。 在产品页面:价格是1000美元显示999.99美元,红色+ 100美元显示+ 99.99美元 ,并输入大+50显示+ 49.99。这里的总价格是1149.97。但在购物聊天中价格是圆的(1000 + 100 +50)+0.99 = 1149.99。所以我不知道如何处理它。

有人帮助我......等待你的建议。

1 个答案:

答案 0 :(得分:0)

因为magento最终价格是onFly计算,你将覆盖

app/code/core/Mage/CatalogRule/Helper/Data.php

并改变方法如同。 (您需要添加到adminhtml它选项或硬编码)

public function calcPriceRule($actionOperator, $ruleAmount, $price)
{
    $priceRule = 0;
    switch ($actionOperator) {
        case 'to_fixed':
            $priceRule = min($ruleAmount, $price);
            break;
        case 'to_percent':
            $priceRule = $price * $ruleAmount / 100;
            break;
        case 'by_fixed':
            $priceRule = max(0, $price - $ruleAmount);
            break;
        case 'by_percent':
            $priceRule = $price * (1 - $ruleAmount / 100);
            break;
        case 'my_custom_prices':
             //your price rules 
            break;
    }
    return $priceRule;
}