【发布时间】: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
有谁知道可能出了什么问题?
【问题讨论】:
-
您是否在应用更改后重新索引了股票状态索引?
-
不,这有必要吗(因为在任何教程中都没有提到)?有没有办法以编程方式做到这一点?
-
是的,在大多数设置中都是必需的...查看我的答案以获取执行此操作的代码...