Magento正在onepage.php中获取订单总计

Magento正在onepage.php中获取订单总计,magento,Magento,我正在努力解决一个非常愚蠢的问题。 我在app/code/core/Mage/Checkout/Type/Onepage.php中编辑了saveOrder()方法。 这是因为我想阻止Magento发送一些付款方式的订单确认电子邮件。 我发送的不是标准电子邮件,而是带有不同信息的新电子邮件(在后端的事务性电子邮件中编码)。 没关系,我做过类似的事情: if($order->getPayment()->getMethodInstance()->getCode()!='X') { $

我正在努力解决一个非常愚蠢的问题。 我在app/code/core/Mage/Checkout/Type/Onepage.php中编辑了saveOrder()方法。 这是因为我想阻止Magento发送一些付款方式的订单确认电子邮件。 我发送的不是标准电子邮件,而是带有不同信息的新电子邮件(在后端的事务性电子邮件中编码)。 没关系,我做过类似的事情:

if($order->getPayment()->getMethodInstance()->getCode()!='X') {
$order->sendNewOrderEmail();
} else {
    $name = $order->getBillingAddress()->getName();
$mailer = Mage::getModel('core/email_template_mailer');
    $emailInfo = Mage::getModel('core/email_info');
    $emailInfo->addTo($order->getCustomerEmail(), $name);
    $mailer->addEmailInfo($emailInfo);
$templateId = 3;
$storeId = Mage::app()->getStore()->getId();
$sender = Array('name'  => 'XXX', 'email' => 'xxx@xxx.xxx');
    $mailer->setSender($sender);
    $mailer->setStoreId($storeId);
    $mailer->setTemplateId($templateId);
    $mailer->setTemplateParams(array(
            'order' => $order
        )
    );
    $mailer->send();
}
除订单总额外,所有工程均正常。在我正在打印的事务性电子邮件中

{{var order.getGrandTotal()}}
但我得到的价值“0.99995371908”为1欧元价格的产品,我不知道如何解决这个问题。(测试产品已获得折扣) 我尝试创建一个脚本,加载以前注册的订单,并使用相同的电子邮件模板发送电子邮件。在这种情况下,所有的工作就像一个魅力! 因此,我认为问题在于订单尚未保存。 我刚刚试着使用

    $mailer->setTemplateParams(array(
            'order' => $order,
            'total' => $order->getGrandTotal()
        )
    );
印刷

{{var total}}
在模板中,在本例中,变量没有任何值。 我怎样才能解决这个问题

提前感谢


p、 美国:我正在使用1.6版本的Magento安装。

我以前也有过。这是由于php浮点取整问题造成的:


使用
round()
向用户正确显示结果。使用
bcadd()
如果您使用自定义代码更改某个地方的价格,您可以避免舍入问题。

谢谢您的回复。我已经试过这种方法了。问题是,如果我尝试将$order->getGrandTotal()作为附加变量传递给邮件模板并将其打印出来,它会给我一个空值。我错在哪里?