【问题标题】:Updating Magento Inventory through Extension on simple and complex products通过扩展简单和复杂产品更新 Magento 库存
【发布时间】:2013-07-30 00:19:11
【问题描述】:

我正在使用以下代码通过我开发的扩展程序更新 Magento 商店的库存数量:

Mage::getModel("cataloginventory/stock_item")
  ->loadByProduct($pid)
  ->setQty($qty)
  ->save();

现在,根据我的测试,这可以正常工作,但是我有点担心这是否会对可以在 Magento 中创建的不同类型的产品(例如简单和复杂的产品)产生任何负面影响。

以上是更新 SOH 的正确方法吗?我是否需要以不同的方式处理复杂产品?我的直觉是,我不需要对复杂产品做任何不同的事情,因为它们最终都源自拥有自己库存的简单产品?

任何建议表示赞赏

【问题讨论】:

    标签: magento model magento-1.7 inventory


    【解决方案1】:

    只要你只更新简单的,你就可以这样。事实上,所有其他非虚拟产品类型的库存都来自简单。

    您甚至可能想要添加

    $stockItem = Mage::getModel("cataloginventory/stock_item")
        ->loadByProduct($pid)
        ->setQty($qty);
    
    if ($stockItem->getCanBackInStock() && $stockItem->getQty() > $stockItem->getMinQty()) {
        $stockItem->setIsInStock(true)
            ->setStockStatusChangedAutomaticallyFlag(true);
    }
    
    $stockItem->save();
    

    请参阅 Mage_CatalogInventory_Model_Stock::backItemQty() 了解 Magento 如何增加库存。

    【讨论】:

    • 感谢您的回答!我查看了backItemQty(),我可以看到的问题是这个函数调用了addQty(),它确实是$this->setQty($this->getQty()+$qty);:我想更新股票数字,而不是添加或减去它。
    • 是的,这是真的。但是在你的情况下设置它就足够了,而且据我所知没有副作用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-13
    • 2011-08-31
    相关资源
    最近更新 更多