Magento 产品库存状态自动更改

Posted

技术标签:

【中文标题】Magento 产品库存状态自动更改【英文标题】:Magento Product Stock status changes automatically 【发布时间】:2022-01-21 20:30:24 【问题描述】:

我们在 Magento 2.4 中遇到了一个问题。我们正在使用 MSI,我们有 3 个仓库。所有产品都分配了 3 个仓库,我们使用 MSI 管理库存。一种产品可以在一个仓库可用,而不能在另一个仓库可用,问题是当我们有一天产品缺货时,它会在 1 或 2 天后自动进货,并且它的随机行为与特定产品或仓库无关。 最初,我们认为如果团队中的某个人在同一产品上工作,那么他们可能会这样做,所以我们设置了一个警报,当管理员更改产品时,我们会在电子邮件中收到通知。但奇怪的是没有任何警报仍然状态改变。

我已使用此事件controller_action_catalog_product_save_entity_after 在产品发生更改并且其工作正常时触发警报,我们已经对其进行了测试。

虽然我们限制了其他用户的导入功能,但我们认为可以通过 csv 或 api 更改产品,虽然我们有限制但可能可以从任何用户完成。

如果有人遇到类似问题或任何模型函数,当产品库存状态因任何操作(如 API 或 CSV 或管理编辑甚至前端)发生更改时总是触发时,谁能提供帮助??

【问题讨论】:

我认为可能是 MSI 模块。你能检查一下是不是因为任何仓库缺货而改变了产品的状态?因为在 magento 中,stock 只能是全局作用域。 【参考方案1】:

我相信您可以使用 Magento 事件 catalog_product_save_after。创建一个对事件 catalog_product_save_after 执行以下操作的观察者方法。

public function catalog_product_save_after($observer) 
    $product = $observer->getProduct();
    $stockData = $product->getStockData();

    if ( $product && $stockData['qty'] ) 
        $stock = Mage::getModel('cataloginventory/stock_item')->loadByProduct($product->getEntityId()); // Load the stock for this product
        $stock->setData('is_in_stock', 1); // Set the Product to InStock                               
        $stock->save(); // Save
    

【讨论】:

以上是关于Magento 产品库存状态自动更改的主要内容,如果未能解决你的问题,请参考以下文章

Magento获取产品的库存状态

如何在magento中对库存状态的产品集合进行排序

Magento产品因库存0而消失但库存选项不可用

markdown Magento 2 - 产品库存

markdown Magento 2 - 产品库存

Magento 1修改与库存更新相关的产品属性