Magento – Magento set stock data import

ce-1.9.0.1importstock

I'm importing some products into my shop but the stockdata doesn't get set.

if(($handle = fopen("simple.csv", "r")) !== FALSE){
fgetcsv($handle);
while(($data = fgetcsv($handle, 1000, ';')) !== FALSE){
  try{
    $Simpleproduct
      ->setWebsiteIds(array(1))
      ->setAttributeSetId(4)
      ->setTypeId('simple')
      ->setCreatedAt(strtotime('now'))
      ->setName($data[4])
      ->setWeight(4.0000)
      ->setStatus(1) //(1 - enabled, 2 - disabled)
      ->setTaxClassId(2) //(0 - none, 1 - default, 2 - taxable, 4 - shipping)
      ->setVisibility(Mage_Catalog_Model_Product_Visibility::VISIBILITY_NOT_VISIBLE)
      ->setPrice($data[3])
      ->setMetaTitle('test meta title 2')
      ->setMetaKeyword('test meta keyword 2')
      ->setMetaDescription('test meta description 2')
      ->setDescription('This is a long description')
      ->setShortDescription('This is a short description');
      //->setMediaGallery (array('images'=>array (), 'values'=>array ())) //media gallery initialization
      //->addImageToMediaGallery('media/catalog/product/1/0/10243-1.png', array('image','thumbnail','small_image'), false, false) //assigning image, thumb and small image to media gallery
      // ->setStockData(array(
      //     'use_config_manage_stock' => 0,
      //     'manage_stock'=> 1,
      //     'min_sale_qty'=> 1,
      //     'is_in_stock' => 1,
      //     'qty' => 999
      //   )
      // );
    $stockItem = Mage::getModel('cataloginventory/stock_item');
    $stockItem->assignProduct($Simpleproduct);
    $stockItem->setData('is_in_stock', 1);
    $stockItem->setData('qty', 999);
    $Simpleproduct->setStockItem($stockItem);

    if($data[7] == "8" && $data[5] == "Beton Cire"){
      $typeBlad = 11;
    }elseif($data[7] == "8" && $data[5] != "Beton Cire"){
      $typeBlad = 10;
    }else{
      $typeBlad = $bladType[$data[7]];
    }

    $str       = explode("x", $data[8]);
    $lengte    = $str[0];
    $afwerking = "hoi";
    $pootm     = $pootmodel[$data[2]];
    $pootAf    = $poot[$data[6]];
    $sku       = $typeBlad."-".$lengte."-".$afwerking."-E-".$pootm."-".$pootAf."-".$row;

    $Simpleproduct->setSku($sku);

    if($data[9] == "Betonlook MDF"){
      $Simpleproduct->setCategoryIds(array(2, 3, 14, 15));
    }elseif($data[9] == "Boomstam Eiken"){
      $Simpleproduct->setCategoryIds(array(2, 3, 4, 11));
    }elseif($data[9] == "Massief Eiken"){
      $Simpleproduct->setCategoryIds(array(2, 3, 4, 12));
    }elseif($data[9] == "Modern MDF"){
      $Simpleproduct->setCategoryIds(array(2, 3, 14, 16));
    }elseif($data[9] == "Rustiek Eiken"){
      $Simpleproduct->setCategoryIds(array(2, 3, 4, 13));
    }else{
      $Simpleproduct->setCategoryIds(array(2, 17));
    }

    $afmeting           = $Simpleproduct->getResource()->getAttribute('afmeting');
    $afwerkingblad      = $Simpleproduct->getResource()->getAttribute('afwerkingblad');
    $afwerkingonderstel = $Simpleproduct->getResource()->getAttribute('afwerkingonderstel');
    $bladdikte          = $Simpleproduct->getResource()->getAttribute('bladdikte');

    if($afmeting->usesSource()){
      $gekozenAfmeting           = $afmeting->getSource()->getOptionId($data[8]);
      $gekozenAfwerkingBlad      = $afwerkingblad->getSource()->getOptionId($data[5]);
      $gekozenAfwerkingOnderstel = $afwerkingonderstel->getSource()->getOptionId($data[6]);
      $gekozenBladdikte          = $bladdikte->getSource()->getOptionId($data[7]);

      $Simpleproduct->setData('afmeting', $gekozenAfmeting);
      $Simpleproduct->setData('afwerkingblad', $gekozenAfwerkingBlad);
      $Simpleproduct->setData('afwerkingonderstel', $gekozenAfwerkingOnderstel);
      $Simpleproduct->setData('bladdikte', $gekozenBladdikte);
    }

  if($Simpleproduct->save()){
    echo "test";
  }
  $row++;
      if($row==2){die(); exit();}
  }catch(Exception $e){
    die();
    echo "<p><b>";
    echo $e;
    echo "</p></b><br>";
    echo $data[4];
  }
}
}else{
   echo "Handle == false";
}

Both code snippets don't work and set manage stock to no and no availible qty.

Best Answer

Please try this:

$stockItem = Mage::getModel('cataloginventory/stock_item')
    ->setData(array(
        'use_config_manage_stock' => 0,
        'manage_stock'=>1,
        'min_sale_qty'=>1,
        'is_in_stock' => 1,
        'qty' => 999
        ) )
    ->setProduct($simpleProduct);
$simpleProduct->setStockItem($stockItem);
$simpleProduct->save();

You can also try this:

$stockItem = Mage::getModel('cataloginventory/stock_item_api')
            ->update($productId,
                array(
                'use_config_manage_stock' => 0,
                'manage_stock'=>1,
                'min_sale_qty'=>1,
                'is_in_stock' => 1,
                'qty' => 999
                 )
         );

For this case,you need to product id first

Related Topic