我已经安装了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;
}