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 に答える