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 に答える