Каков правильный способ переиндексации одного элемента после внесения в него изменений.
Пример контекста:
Наша компания опирается на платформу управления запасами третьей стороны под названием Stone Edge. Мы также продаем товары на нескольких витринах, среди которых Magento, Amazon, Ebay и Buy.com.
Каждые 10 минут Stone Edge будет загружать все заказы с сайтов, а затем отправлять корректировки инвентаря обратно в наш магазин Magento. Это делается путем отправки простого HTTP-запроса на php script, хранящегося на нашем веб-сервере, с массивом пар значений для каждого из элементов в инвентаре, которые изменили инвентарь с момента последнего обновления.
После того, как функция сохранения будет завершена на каждом из них, элемент будет повторно проиндексирован, чтобы не отражать 0 инвентаря между временем обновления и последующим повторным индексом ссылки.
Я нашел на форуме Magento обсуждение того, как переиндексировать элемент:
$item->setForceReindexRequired(true);
Mage::getSingleton('index/indexer')->processEntityAction($item,Mage_CatalogInventory_Model_Stock_Item::ENTITY,Mage_Index_Model_Event::TYPE_SAVE);
До этого набора инструкций вы увидите что-то вроде
$item = Mage::getModel('cataloginventory/stock_item')->loadByProduct($entityid);
$item->addQty($change);
$item->save();
Однако, после завершения этого, проблема стала очевидной. Сами элементы были повторно проиндексированы, но если они были членами сгруппированного продукта, то продукт группы не обновлялся.
Существует очевидная проблема, которую мне нужно будет решить. Каков наилучший подход к этой проблеме?
Я отправлю ответ, если мне придётся придумать.