1

我实际上不明白为什么,但是当我的发票代码在没有错误的情况下完成时,它实际上并没有显示总计的正确值。

代码是:

public function invoice($realOrderId){
$orderObj = Mage::getModel('sales/order')->loadByIncrementId($realOrderId);     
$invoice = Mage::getModel('sales/service_order', $orderObj)->prepareInvoice();
$invoice->addComment('Automatic invoice', false);
$invoice->setRequestedCaptureCase(Mage_Sales_Model_Order_Invoice::CAPTURE_ONLINE);
$invoice->register();
$invoice->getOrder()->setIsInProcess(true);
$transactionSave = Mage::getModel('core/resource_transaction')
                   ->addObject($invoice)
                   ->addObject($invoice->getOrder());
$transactionSave->save();
    $invoice->sendEmail();
    $invoice->setEmailSent(true);
    $invoice->save();
}

该代码可以正常工作而不会产生错误,但订单详细信息中的总数并未显示付款已被捕获!

关于可能是什么问题的任何建议?

4

1 回答 1

3

好吧,我设法使代码按预期工作,这里是更正的函数,以防其他人可能需要它:

public function invoice($realOrderId){
$orderObj = Mage::getModel('sales/order')->loadByIncrementId($realOrderId);
$invoice = Mage::getModel('sales/service_order', $orderObj)->prepareInvoice();
$invoice->setRequestedCaptureCase(Mage_Sales_Model_Order_Invoice::CAPTURE_ONLINE);
$invoice->register();
$transactionSave = Mage::getModel('core/resource_transaction')
                   ->addObject($invoice)
                   ->addObject($invoice->getOrder());
$transactionSave->save();

$invoice->addComment('Automatic Invoice', false);
$invoice->sendEmail();
$invoice->setEmailSent(true);
$invoice->save();
$orderObj->addStatusHistoryComment(Mage::helper('<your helper name>')->__('Automatic Invoice: '.$invoice->getIncrementId()));
$orderObj->save();}

享受。

编辑:忘记更正代码,为避免虚拟产品开票时出现“错误”,代码在状态历史记录中设置注释时可以省略状态。

于 2011-07-01T13:07:04.463 回答