I'm having an issue with bundles and configurables that cropped up in the last two months in Magento 1.7.0.2. It seems like it happened around the time I installed an extension, but it has since been removed. The problem still persists. These same items worked perfectly before this.
Bundle and configurable products are showing out of stock on the front end at a random time after re-indexing. They have in stock selected, and they're enabled with associated products that are in stock, so they should show as "In Stock" on the front end. Turning off inventory management for this store isn't an option for us.
Doing some digging, it seems to be only isSalable() that's returning false. Since this function is derived, I'm unsure why this is the case with bundles and configurables. Those two product types should be using their own isSalable functions but it feels like it's returning isSalable for simple products. I got this info from where does is_salable come from?
In my debugging, Magento seems to only be calling Mage_Catalog_Model_Product_Type_Abstract::isSalable() for all 3 product types.
Here's a script that returns some testing with a few product ids, all different types. All of these should be in stock and able to be sold. I'm calling getIsInStock() for the first line and isSaleable() for the second line.
Bundle Product getIsInStock: 300 is in stock isSaleable: 300 is not saleable Simple Product getIsInStock: 331 is in stock isSaleable: 331 is saleable Configurable Product getIsInStock: 127 is in stock isSaleable: 127 is not saleable
If I re-index Magento the bundles and configurables will show in stock for a short time.