У меня есть базовая функция наблюдателя, чтобы захватить все подарочные товары в заказе и вернуть их:
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
для ухмылки, без игры в кости).
Кажется, что-то происходит с порядком операций, когда имеют место такие транзакции, как заказы.Раньше я сталкивался с подобной проблемой: Создание счета-фактуры и получение отгрузки Вы можете видеть в моих комментариях, что мое решение здесь далеко от идеала, но я не знаю, что еще делать.
Если бы кто-нибудь мог пролить свет на это для меня, я был бы очень признателен.Спасибо.