Hello,
i need to write a trigger which will reindex stock status after order is placed.
I've wrote an observer an it executes correctly after the order is placed, but...there is one 'but' :-)
If there is only one item (product) on stock the order is placed correctly, but index is not processing - after the order is placed index has status 'Reindex required'.
config.xml
<global>
<models>
<imports>
<class>Xxx_AutoStockStatus</class>
</imports>
</models>
<events>
<sales_order_place_after>
<observers>
<Xxx_AutoStockStatus_stock_observer>
<type>singleton</type>
<class>Xxx_AutoStockStatus_Model_Observer</class>
<method>runindex</method>
</Xxx_AutoStockStatus_stock_observer>
</observers>
</sales_order_place_after>
</events>
</global>Observer.php
class Xxx_AutoStockStatus_Model_Observer extends Varien_Event_Observer
{
public function runindex($observer)
{
Mage::log('sales_order_place_after - testing 111');
$process=Mage::getSingleton('index/indexer')->getProcessByCode('cataloginventory_stock');
$process->reindexEverything();
Mage::log('sales_order_place_after - testing 222');
}
}Any help would be appreciated. Thanks in advanced.
@agu84 Have you checked log report testing 222 ? Do it seems ok? Event observer and reindex code seems okay.
@GauravMehta04 yes, i've checked log and both 'testing 111' and 'testing 222' are there, but unfortunately stock index status stays as 'Reindex required' ![]()
The situation appears only when i order the last product from stock. Stock status should be updated, so the next person who wants to order the same product sees right away that it's currently not available.
I had the same problem. Fix it by replacing event to "checkout_submit_all_after"