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 产品库存状态自动更改的主要内容,如果未能解决你的问题,请参考以下文章