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_ordersales_order_save_after

于 2011-06-25T17:12:37.583 回答