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:
You can also try this:
For this case,you need to product id first