2011-06-30 54 views
1

我實際上看不到爲什麼,但我的發票代碼實際上並沒有顯示正確的總計值,當它完成沒有錯誤。php發票代碼沒有正確更新訂單

的代碼是:

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(); 
} 

代碼工作,而不產生的訂單細節錯誤,但總數不表明支付已被抓獲!

有什麼建議可能是什麼問題?

+0

總數有多不正確?他們是否按稅額計算? (我認爲我有類似的經歷) – clockworkgeek

+0

訂單頁面(管理員視圖)中的總計沒有考慮到付款已完成的事實,在他們列出的「總付款」部分0,00 – Matteo

+0

對不起,這不是我想的。也許訂單對象沒有與之相關的付款。或者付款的_canCapture錯誤。或者總計不會被複制到發票上。來想一想它有很多可能性。 – clockworkgeek

回答

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();} 

享受。

編輯: 忘了更正代碼,爲了避免發生虛擬產品的「錯誤」,當代碼在狀態歷史記錄中設置註釋時可以省略狀態。