2011-06-30 16 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'がfalseです。または、総額が何とか請求書にコピーされていない。それには多くの可能性があると思います。 – 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();} 

をお楽しみください。

編集: 仮想製品の請求時に "エラー"を避けるためにコードを訂正するのを忘れた場合、コードはステータス履歴にコメントを設定する際にステータスを省略することができます。

関連する問題