Мне нужно обнаруживать всякий раз, когда уровень запасов продукта изменяется. У меня был некоторый успех при использовании cataloginventory_stock_item_save_after
события, которое срабатывает, когда инвентарь изменяется в бэкэнде или когда заказ отменяется на внешнем интерфейсе (через Paypal), но не срабатывает, когда продукт приобретается у внешнего интерфейса.
Я подключаюсь к cataloginventory_stock_item_save_after
такому событию:
<global>
<events>
<cataloginventory_stock_item_save_after>
<observers>
<cataloginventory_stock_item_save_after_handler>
<type>model</type>
<class>stockchange/observer</class>
<method>stockChange</method>
</cataloginventory_stock_item_save_after_handler>
</observers>
</cataloginventory_stock_item_save_after>
</events>
<?php
class FashionBunker_StockChange_Model_Observer {
public function stockChange(Varien_Event_Observer $observer) {
Нужно ли использовать другое событие, чтобы зафиксировать изменение инвентаря, когда клиент что-то покупает, или что-то не так с тем, как я подключился к событию?
источник
Вы не можете использовать любое событие, связанное с моделью товара на складе, потому что Magento использует оптимизированный SQL-запрос, чтобы уменьшить запас для всех заказанных товаров одновременно, минуя модель.
Я решил это с переписать,
Mage_CatalogInventory_Model_Stock
где я добавил дополнительное событие:Тогда наблюдатель
cataloginventory_stock_item_correct_qty_after
может выглядеть так:Я рекомендую не выполнять тяжелую обработку или дополнительные вызовы базы данных (которые необходимы для определения, например, отсутствия товара на складе), а добавлять продукты в очередь, обрабатываемую cronjob, чтобы минимизировать дополнительное время загрузки для пользователь.
источник
$stockItem->canSubtractQty()
не работает в наблюдателе, ни есть$stockItem->getId()
.. какие-либо советы? Кажется, я не могу получить доступ к методам