私は非常に愚かな問題に苦しんでいます。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()}}
しかし、1 ユーロの価格の製品で「0.999953719008」という値が表示され、これを解決する方法がわかりません。(テスト商品は割引あり) 以前登録した注文を読み込んで、同じメールテンプレートを使ってメールを送信するスクリプトを作ってみました。この場合、すべてが魔法のように機能します! 問題は、注文がまだ保存されていないためだと思います。私は総計を別の変数として渡そうとしました
$mailer->setTemplateParams(array(
'order' => $order,
'total' => $order->getGrandTotal()
)
);
と印刷
{{var total}}
この場合、変数の値はありません。どうすればこれを解決できますか?
少し早いですがお礼を!
ps: Magento の 1.6 バージョンのインストールを使用しています。