我正在使用脚本导入产品。当没有产品但我们尝试更新产品或导入更多产品时,它无法正常工作。基本上它不会保存产品。
在下面的代码$ row_option ['iStockLevel']中检查产品数量。
脚本代码是: -
$product=Mage::getModel('catalog/product');
$proId=Mage::getModel('catalog/product')->getIdBySku($sku);
if($proId){
if($row_option['iStockLevel']) {
$product->load($proId);
$productStockData= $product->getStockData();
if(!$row_option['iStockLevel'])
{
$productStockData['qty']=0;
}
else{
$productStockData['qty']=$row_option['iStockLevel'];
}
$productStockData['is_in_stock']=1;
$productStockData['manage_stock'] = 1;
$productStockData['use_config_manage_stock'] = 0;
$product->setStockData($productStockData);
try {
$product->save();
}
catch (Exception $ex) {
echo $ex->getMessage();
}
}
请帮帮我。
答案 0 :(得分:1)
因为在您发布的位中,您只是尝试修改产品的库存。因此,您无需保存产品,只需保存该产品的库存。
试试这个:
$product = Mage::getModel('catalog/product')->loadByAttribute('sku', $sku);
if ($product) {
if ($row_option['iStockLevel']) {
$stock = Mage::getModel('cataloginventory/stock_item')->loadByProduct($product->getId());
if (!$row_option['iStockLevel']) {
$stock->setData('is_in_stock', 0)
$stock->setData('qty', 0);
} else {
$stock->setData('is_in_stock', 1)
$stock->setData('qty', (int)$row_option['iStockLevel']);
}
// Save
$stock->save();
}
}