見積もりを請求書に変換し、支払われたとマークします
-
16-10-2019 - |
質問
申し訳ありませんが、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に追加できます。
所属していません magento.stackexchange