cancel
Showing results for 
Search instead for 
Did you mean: 

Observer to modify out of stock add to cart process

   Did you know you can see the translated content as per your choice?

Translation is in progress. Please check again after few minutes.

Observer to modify out of stock add to cart process

I've been looking for a "clean" way to achieve the functionality where I want to add specific logging when a customer tries to add a product to the cart and there's not enough stock to do so - ideally, I add some additional data to the session so that it can be retrieved on the frontend and pushed to Analytics. It seems beyond my feeble mind to do it in a way that adheres to best practices, i.e it looks like I have to copy a core file to the local code pool to be able to override it, or do a rewrite.

 

The solution I've seen which accomplishes more or less what I want to do is here - however, this involves a local override which I'd prefer to avoid if possible. I have provisionally set up an observer on the chekout_cart_add_before event but I can't see how to hook in the required functionality without just replicating what is already in the core checkQuoteItemQty() method.

Is this one of those situations where a local override or rewrite is unavoidable?

 

public function logStockStatus(Varien_Event_Observer $observer)
{
    $quoteItem = $observer->getItem();
    $qty = $quoteItem->getQty();

    // Here I don't want to repeat the same logic already in checkQuoteItemQty

    $quoteItem->addErrorInfo(
        'mymodule',
        'not_enough_stock',
        'The Error Message'
    );
}