0

我正在使用脚本导入产品。当没有产品时它工作得很好,但是当我们尝试更新产品或导入更多产品时它就不起作用了。基本上它不保存产品。

在下面的代码 $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();
                }

  }

请帮我。

4

1 回答 1

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(); 
    }
}
于 2012-12-21T10:23:24.900 回答