Magento – How to Get Product IDs from $observer->getEvent()->getOrder()

event-observer

When using

$order = Mage::getModel("sales/order")->loadByIncrementId($OrderNo);

I can access product ids by

foreach ($order->getAllItems() as $item)
{
    if ($item->getParentItemId() != NULL) continue;

    echo $item->getProductId();
}

But when I access the order via an event observer this method fails.

$order = $observer->getEvent()->getOrder();

How do I get product ids in this case?

Best Answer

if your observer gives you the order object you can get the product ids by using the process below:

$order = $observer->getEvent()->getOrder();

if( $order->getId() ) {
    $ProductIds = array();
    foreach( $order->getAllVisibleItems() as $item ) {
        $ProductIds[] = $item->getProductId();
    }        
}