【问题标题】:Not able to change stock quanitity无法更改库存数量
【发布时间】:2014-12-03 09:22:17
【问题描述】:

我正在尝试使用 Mage 调整产品的库存。但由于某种原因,我的所有更改都被忽略了,我根本没有收到错误消息。

我已经对谷歌进行了大量研究,如果在此处 (Cannot update Stock Item Quantity for a Product in Magento 1.6.2) 找到此代码,我将被截断。

$product = Mage::getModel('catalog/product')->loadByAttribute('sku', "test_7");



               $stockData = $product->getStockItem();
               printf(PHP_EOL.'Stock: qty=%d, instock=%s, man_stock=%s, use_cfg_man_stock=%s'.PHP_EOL,
               $stockData->getData('qty'),
               $stockData->getData('is_in_stock'),
               $stockData->getData('manage_stock'),
               $stockData->getData('use_config_manage_stock')
               );
               // prints out qty=0, instock=, man_stock=, use_cfg_man_stock=


               // $stockQty = 1
               $stockItem = Mage::getModel('cataloginventory/stock_item');
               $stockItem->assignProduct($product);
               $stockItem->setData('is_in_stock', 1);
               $stockItem->setData('stock_id', 1);
               $stockItem->setData('store_id', 1);
               $stockItem->setData('manage_stock', 0);
               $stockItem->setData('use_config_manage_stock', 0);
               $stockItem->setData('min_sale_qty', 0);
               $stockItem->setData('use_config_min_sale_qty', 0);
               $stockItem->setData('max_sale_qty', 1000);
               $stockItem->setData('use_config_max_sale_qty', 0);
               $stockItem->setData('qty', $stockQty);
               $stockItem->save();

               $product->save();
               $product->load();
               $stockData = $product->getStockItem();
               printf('New Stock: qty=%d, instock=%s, man_stock=%s, use_cfg_man_stock=%s'.PHP_EOL,
               $stockData->getData('qty'),
               $stockData->getData('is_in_stock'),
               $stockData->getData('manage_stock'),
               $stockData->getData('use_config_manage_stock')
               );

但由于某种原因,响应仍然是:

库存:qty=0,instock=,man_stock=,use_cfg_man_stock= 新库存: 数量=0,库存=1,man_stock=0,use_cfg_man_stock=0

有谁知道可能出了什么问题?

【问题讨论】:

  • 您是否在应用更改后重新索引了股票状态索引?
  • 不,这有必要吗(因为在任何教程中都没有提到)?有没有办法以编程方式做到这一点?
  • 是的,在大多数设置中都是必需的...查看我的答案以获取执行此操作的代码...

标签: php magento


【解决方案1】:

就个人而言,我在 CLI 脚本中使用了以下内容。请确保在应用以下代码后重新索引:

$product = Mage::getModel('catalog/product')->loadByAttribute('sku', "test_7");

if($product) {
    $stockItem = Mage::getModel('cataloginventory/stock_item')->loadByProduct($product->getId());
    if(!$stockItem->getId()) {
        $stockItem->setData('product_id', $product->getId());
        $stockItem->setData('stock_id', 1);
    }

    $stockItem->setData('qty', 1);
    $stockItem->setData('min_qty', 1);
    $stockItem->setData('use_config_min_qty', 0);
    $stockItem->setData('is_qty_decimal', 0);
    /** Add other stockinformation from list below **/

    $stockItem->save();
} else {
    // product not found
}

确保在循环中使用此代码时,$stockItem$product 在保存后被丢弃。

在我提到其他股票信息字段的代码中,使用以下内容:

  • 数量
  • min_qty
  • use_config_min_qty
  • is_qty_decimal
  • 延期交货
  • use_config_backorders
  • min_sale_qty
  • use_config_min_sale_qty
  • max_sale_qty
  • use_config_max_sale_qty
  • is_in_stock
  • use_config_notify_stock_qty
  • 管理库存
  • use_config_manage_stock
  • stock_status_changed_automatically
  • type_id

额外奖励;以编程方式重新索引:

$process = Mage::getModel('index/indexer')->getProcessByCode('cataloginventory_stock');
$process->reindexAll();

重新索引所有索引可能会更好:

$indexCollection = Mage::getModel('index/process')->getCollection();
foreach ($indexCollection as $index) {
    $index->reindexAll();
}

【讨论】:

    【解决方案2】:

    试试这个代码来设置股票价值;

    $stockItem = Mage::getModel('cataloginventory/stock_item');
    $stockItem->assignProduct($product);
    $stockItem->setData('is_in_stock', 1);
    $stockItem->setData('qty', $stockQty);
    $product->setStockItem($stockItem);
    

    【讨论】:

      猜你喜欢
      • 2016-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-19
      • 1970-01-01
      • 2022-08-18
      • 2011-12-11
      • 1970-01-01
      相关资源
      最近更新 更多