質問

申し訳ありませんが、Magentoはとても初めてです。

私はフォローしています このチュートリアル 新しい支払い方法を作成します。それは完全に提供します こちらのサンプルコード.

チュートリアルでは、話すとき StandardController.php::successAction(), 、それは言う、

すべてがチェックアウトされた場合、state_pending_paymentからstate_newに注文の状態を変更できるため、店内の誰かが出荷して完了する準備ができています。これは、見積もりを請求書に変換し、支払ったとおりにマークする場所でもあります。

コードでその最初の文を見つけることができますが、「見積もりを請求書に変換して支払ったとマークする」という2番目の部分を見つけることができません。

if($state == Mage_Sales_Model_Order::STATE_PENDING_PAYMENT){

    $msg = 'Payment completed via MockPay.';
    $order->setState(Mage_Sales_Model_Order::STATE_NEW ,true,$msg,false);
    $order->save();

    $quote = Mage::getSingleton('checkout/session')->getQuote();
    $quote->setIsActive(false)->save();

}

おそらく、著者はコードのその部分を含めるのを忘れていました。 Magento Docsを読んでみましたが、請求書ではなく注文にのみ変換することができました。

    $convertQuote = Mage::getSingleton('sales/convert_quote');
    $order = $convertQuote->toOrder($quote);

「見積もりを請求書に変換し、支払ったとマークする」ためにここでのコードは何ですか?

役に立ちましたか?

解決

見積もりを請求書に変換することはできません。見積もりを注文に変換してから請求書を作成する必要があります。また、支払い方法は見積もりを注文に変換するべきではありません。これは、チェックアウト中の保存順序アクションによって行われます。

請求書を作成するには、使用できます。

$invoice = $order->prepareInvoice();
$invoice->register()->capture();

Mage::getModel('core/resource_transaction')
    ->addObject($invoice)
    ->addObject($invoice->getOrder())->save();

このコードは、モジュールのStandardController.phpでsulustactionに追加できます。

ライセンス: CC-BY-SA帰属
所属していません magento.stackexchange
scroll top