1

I am using a third party service to generate and submit the product feed to Google.This service uses is_in_stock field from the cataloginventory_stock_item database table to check if the product is in stock or not?

I have check in the default Magento even if we make all the associated products of a configurable product out of stock the is_in_stock value is set to 1 only.

Or do we have any other attribute in any of Magento table which may help? Is there any way to work around this thing.

1 Answer 1

1

Hi you can do this using magento event and observe and on create an event on catalog_product_save_after and check on obsever child product are out stock an set configurable accoring to ite

<global>
            <events>
            <catalog_product_save_after>
                <observers>
                    <stockalert>
                        <type>singleton</type>
                        <class>check/observer</class>
                        <method>autoupdatemy</method>
                    </stockalert>
                </observers>
            </catalog_product_save_after>
        </events>
</global>

and observer.php

 public function autoupdatemy($observer)
{
    try{
        $isstcok=false;
        if($observer->getEvent()->getProduct()->getData('type_id')=='configurable'){
        $ConfiProduct=$observer->getEvent()->getProduct();
        $allProducts = $ConfiProduct->getTypeInstance(true)
        ->getUsedProducts(null, $ConfiProduct);

            foreach ($allProducts as $product) {
                /* check one child product is out of stock */
            if($product->getIsInStock()==1):
            $isstcok=true;
            endif;
            }

        /* load configuale product  stock object */ 
        $stockItem = Mage::getModel('cataloginventory/stock_item')->loadByProduct($ConfiProduct);
        if($isstcok=true):
            $stockItem->setData('is_in_stock', 1);
        else:
            $stockItem->setData('is_in_stock', 0);
        endif;
        $stockItem->save();
        }
    }catch(Excpetion $e){
    Mage::log(print_r($e->getMessage(),1),'null','mage32173.log');
    }
    return;
}
1
  • muk,is it working??
    – Amit Bera
    Commented Aug 26, 2014 at 7:45

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.