I’m working on an observer that needs to add (a) serial key(s) to each item in the cart once an order is placed.
I’m listening to the event sales_model_service_quote_submit_success right now.
I’ve been able to access the order, get a list of the items, iterate through them, and get the product options. My code fails either when I try to setProductOptions or save–I’m not sure which, maybe it’s both.
Here is the relevant code:
// Get access to order information
$lastOrderId = Mage::getSingleton('checkout/session')->getLastOrderId();
$order = Mage::getModel('sales/order')->load($lastOrderId);
// Get the items from the order
$items = $order->getAllItems();
foreach ($items as $item)
{
// Pretend here is the call that fetches the serial keys for this item and stores them in $keyString
// If we actually received the keys in a string, store them with the item
if (!empty($keyString))
{
$productOptions = array();
if (count($item->getProductOptions()))
{
$productOptions = $item->getProductOptions();
}
$productOptions['keys'] = $keyString;
$item->setProductOptions($productOptions);
$item->save();
}
}
Any ideas what I have forgotten or done wrong? Thanks a bunch.
no such observer , at least i didn’t find it from codebase, here’s what you can use
and in your observer method
the idea is that if you do it in before-action then you won’t need to call save and if you do it in after-action then you do and if you do it in before action you might just end in endless loop if you are not careful.