Ankita Agrawal
Ankita Agrawal

Reputation: 504

Products are not updated when imported using script

I am importing products using script. It works perfectly when there are no products but when we try to update products or import more products it does not work. Basically it does not save product.

In below code $row_option['iStockLevel'] check quantity of product.

Code of script is:-

        $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();
                }

  }

Please help me.

Upvotes: 0

Views: 67

Answers (1)

Kenny
Kenny

Reputation: 5410

Since in the bits you have posted you are only trying to modify the stock of the product. Therefor you do not need to save the product, only the stock for that product.

Try this:

$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(); 
    }
}

Upvotes: 1

Related Questions