注文したすべてのギフトアイテムを取得して返すための基本的なオブザーバー機能があります。
public function invoiceGiftCards($observer){
$order = $observer->getEvent()->getOrder();
// get all items
$gift_cards = $order->getItemsCollection(array('giftcard'));
Mage::log('getSize(): ' . $gift_cards->getSize());
// code to auto-create invoice
...
}
このイベントに関連付けられています:
<sales_model_service_quote_submit_after>
<observers>
<company_invoice_gift_cards>
<type>singleton</type>
<class>Company_Module_Model_Observer</class>
<method>invoiceGiftCards</method>
</company_invoice_gift_cards>
</observers>
</sales_model_service_quote_submit_after>
しかし、私が見つけたのは、関数からのそのコレクションは毎回空を返すということです。ギフトカードが明確に含まれている注文でも:
2011-06-25T01:33:38+00:00 DEBUG (7): getSize(): 0
さらに奇妙なことgetItemsCollection(array('giftcard'))に、システム内の任意の順序で(コントローラーの一部として)同じものを実行すると、正常に動作します。
まだ保存が終わっていないようです。私が試してみるべき別のオブザーバーはいますか?(私はまたcheckout_submit_all_after、サイコロではなく、にやにや笑いを試みました)。
注文のような取引が行われるとき、操作の順序に何かがあるようです。私は以前に同様の問題に遭遇しました:請求書の作成と出荷時のキャプチャ私のコメントでは、私の解決策は理想的とは言えませんが、他に何をすべきかわかりません。
誰かが私のためにこれにいくつかの光を当てることができれば、私はそれを大いに感謝します。ありがとうございました。