Magento四舍五入小计,总计和税收



我已经安装了ET货币管理器,以便按克销售价格为每克0.01<的产品。>

问题是这有时会导致小计、税收和半美分的总数......这(除了PayPal问题)让客户感到困惑并且不可接受的

因此,我正在寻找一种解决方案,将小计、税金和总计值四舍五入到小数点后 2 位。

我知道ET货币管理器可以选择"从结帐中排除",但这会导致其他问题,因此它与此问题无关(如果我在这里没有得到解决方案,我将单独询问此问题)

我设法通过更改以下函数来四舍五入总计:

app\code\core\Mage\Sales\Model\Quote\Address\Total\Grand.php

public function collect(Mage_Sales_Model_Quote_Address $address)
    {
        $grandTotal     = $address->getGrandTotal();
        $baseGrandTotal = $address->getBaseGrandTotal();
        $totals     = array_sum($address->getAllTotalAmounts());
        $baseTotals = array_sum($address->getAllBaseTotalAmounts());
        $address->setGrandTotal(round(($grandTotal+$totals),2)); //Modificated
        $address->setBaseGrandTotal(round(($baseGrandTotal+$baseTotals),2)); //Modificated
        //$address->setGrandTotal($grandTotal+$totals);  --Original
        //$address->setBaseGrandTotal($baseGrandTotal+$baseTotals); --Original
        return $this;
    } 

有没有办法同时对小计和税收进行四舍五入?我尝试在上述目录中的其他文件中执行此操作,但没有结果。

我知道

这个问题相当古老,但我最近遇到了完全相同的问题。所以这是我的解决方案,到目前为止似乎工作正常。

public function collect(Mage_Sales_Model_Quote_Address $address)
{
    $grandTotal         = round($address->getGrandTotal(), 2);
    $baseGrandTotal     = round($address->getBaseGrandTotal(), 2);
    $subTotal           = round($address->getSubtotal(), 2);
    $baseSubTotal       = round($address->getBaseSubtotal(), 2);
    $taxAmount          = round($address->getTaxAmount(), 2);
    $baseTaxAmount      = round($address->getBaseTaxAmount(), 2);
    $shippingAmount     = round($address->getShippingAmount(), 2);
    $baseShippingAmount = round($address->getBaseShippingAmount(), 2);
    $address->setSubtotal($subTotal);
    $address->setBaseSubtotal($baseSubTotal);
    $address->setTaxAmount($taxAmount);
    $address->setBaseTaxAmount($baseTaxAmount);     
    $address->setShippingAmount($shippingAmount);
    $address->setBaseShippingAmount($baseShippingAmount);
    $address->setGrandTotal($grandTotal + $subTotal + $shippingAmount + $taxAmount);
    $address->setBaseGrandTotal($baseGrandTotal + $baseSubTotal + $baseShippingAmount + $baseTaxAmount);
    return $this;
}

最新更新