我正在嘗試使用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')
);
但由於某些原因,該反應仍然:
庫存:數量= 0,的inStock =,man_stock =,use_cfg_man_stock =新庫存: 數量= 0,的inStock = 1,man_stock = 0,use_cfg_man_stock = 0
有沒有人有一個想法是什麼可能是錯的?
您是否在應用更改後重新編制了庫存狀態指數的索引? – RichardBernards 2014-12-03 09:25:12
不,這是否必要(因爲它在任何教程中都沒有提及)?有沒有辦法做到這一點編程? – Lukas 2014-12-03 09:27:56
是的,它在大多數設置中都是必需的...查看我的代碼的答案來執行此操作... – RichardBernards 2014-12-03 09:39:01