0

注文したすべてのギフトアイテムを取得して返すための基本的なオブザーバー機能があります。

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、サイコロではなく、にやにや笑いを試みました)。

注文のような取引が行われるとき、操作の順序に何かがあるようです。私は以前に同様の問題に遭遇しました:請求書の作成と出荷時のキャプチャ私のコメントでは、私の解決策は理想的とは言えませんが、他に何をすべきかわかりません。

誰かが私のためにこれにいくつかの光を当てることができれば、私はそれを大いに感謝します。ありがとうございました。

4

1 に答える 1

0

見積もりは注文の前に来るものです。見積もり関連のイベントの時点では、注文がまだ存在していないか、不完全であると思います。おそらく、行動するより適切な時期はsales_convert_quote_to_orderまたはでしょうsales_order_save_after

于 2011-06-25T17:12:37.583 に答える