Хотите выставить счет на покупку подарочной карты после отправки заказа - PullRequest
0 голосов
/ 25 июня 2011

У меня есть базовая функция наблюдателя, чтобы захватить все подарочные товары в заказе и вернуть их:

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 для ухмылки, без игры в кости).

Кажется, что-то происходит с порядком операций, когда имеют место такие транзакции, как заказы.Раньше я сталкивался с подобной проблемой: Создание счета-фактуры и получение отгрузки Вы можете видеть в моих комментариях, что мое решение здесь далеко от идеала, но я не знаю, что еще делать.

Если бы кто-нибудь мог пролить свет на это для меня, я был бы очень признателен.Спасибо.

1 Ответ

0 голосов
/ 25 июня 2011

Цитата - это то, что предшествует заказу, я думаю, что во время события, связанного с цитатой, заказ еще не существует или является неполным.Возможно, более подходящим временем для действий будет sales_convert_quote_to_order или sales_order_save_after.

...