1. create simple product function:
public function import_simple_product() {
$sql = "select * from bysoft_import_product";
$results = $this->_read->fetchAll($sql);
$configurable_attribute = "size"; $attr_id = 134;
foreach ($results as $data) {
//check dropdown attribute exists option or not and add .
if ($data['model_filter']) {
$model_filter = $this->addAttributeValue('model_filter',$data['model_filter']);
}
if ($data['color']) {
$color = $this->addAttributeValue('color',$data['color']);
}
if ($data['size']) {
$size = $this->addAttributeValue('size',$data['size']);
}
if ($data['usage']) {
$usage = $this->addAttributeValue('usage',$data['usage']);
}
if ($data['edition']) {
$edition = $this->addAttributeValue('edition',$data['edition']);
}
if ($data['specific_usage']) {
$specific_usage = $this->addAttributeValue('specific_usage',$data['specific_usage']);
}
if ($data['style']) {
$style = $this->addAttributeValue('style',$data['style']);
}
$sProduct = Mage::getModel('catalog/product');
$sProduct ->setTypeId(Mage_Catalog_Model_Product_Type::TYPE_SIMPLE)
->setWebsiteIds(array(1))
->setStatus(Mage_Catalog_Model_Product_Status::STATUS_ENABLED)
->setVisibility(Mage_Catalog_Model_Product_Visibility::VISIBILITY_NOT_VISIBLE)
->setAttributeSetId($data['attribute_set_id'])
->setCategoryIds($this->getCategoryIds($data)) // Populated further up the script
->setSku($data['config_sku'] . '-' . $data['size']) // $main_product_data is an array created as part of a wider foreach loop, which this code is inside of
->setName($data['cn_name'])
->setData('cn_name',$data['cn_name'])
->setData('en_name',$data['en_name']);
if ($data['style']) {
$sProduct->setData('style',$style);
}
if ($data['model_filter']) {
$sProduct->setData('model_filter',$model_filter);
}
if ($data['color']) {
$sProduct->setData('color',$color);
}
if ($data['size']) {
$sProduct->setData('size',$size);
}
if ($data['usage']) {
$sProduct->setData('usage',$usage);
}
if ($data['edition']) {
$sProduct->setData('edition',$edition);
}
if ($data['specific_usage']) {
$sProduct->setData('specific_usage',$specific_usage);
}
$sProduct->setData('price',$data['price']);
$sProduct->setStockData(array('is_in_stock' =>1,'qty' => 99999));
$sProduct->save();
var_dump('import ' . $sProduct->getSku() . ' successed!');
}
}
2. import config product function
public function import_config_product() {
$sql = "SELECT `config_sku` FROM `bysoft_import_product` GROUP BY `config_sku` ";
$results = $this->_read->fetchAll($sql);
$attr_id = $this->getAttIdByCode('size');
foreach ($results as $row) {
$config_sku = $row['config_sku'];
$simpleProducts = array();
$sql = "SELECT * FROM bysoft_import_product WHERE config_sku = ?";
$results_simple = $this->_read->fetchAll($sql,array($config_sku));
foreach ($results_simple as $rs) {
$sProduct = Mage::getModel('catalog/product')->loadByAttribute('sku', $rs['config_sku'] . '-' . $rs['size']);
$sProduct = Mage::getModel('catalog/product')->load($sProduct->getId());
array_push(
$simpleProducts,
array(
"id" => $sProduct->getId(),
"price" => $sProduct->getPrice(),
"attr_code" => 'size',
"attr_id" => $attr_id, // i have used the hardcoded attribute id of attribute size, you must change according to your store
"value" => $sProduct->getSize(),
"label" => $sProduct->getAttributeText('size'),
)
);
}
$cProduct = Mage::getModel('catalog/product');
$config_sql = "select * from bysoft_import_product where config_sku =? limit 1";
$res_config = $this->_read->fetchAll($config_sql,array($config_sku));
//check dropdown attribute exists option or not and add .
foreach ($res_config as $rc) {
if ($rc['model_filter']) {
$model_filter = $this->addAttributeValue('model_filter',$rc['model_filter']);
}
if ($rc['color']) {
$color = $this->addAttributeValue('color',$rc['color']);
}
if ($rc['size']) {
$size = $this->addAttributeValue('size',$rc['size']);
}
if ($rc['usage']) {
$usage = $this->addAttributeValue('usage',$rc['usage']);
}
if ($rc['edition']) {
$edition = $this->addAttributeValue('edition',$rc['edition']);
}
if ($rc['specific_usage']) {
$specific_usage = $this->addAttributeValue('specific_usage',$rc['specific_usage']);
}
if ($rc['style']) {
$style = $this->addAttributeValue('style',$rc['style']);
}
$cProduct ->setTypeId('configurable')
->setWebsiteIds(array(1))
->setStatus(Mage_Catalog_Model_Product_Status::STATUS_ENABLED)
->setVisibility(4)
->setAttributeSetId($rc['attribute_set_id'])
->setCategoryIds($this->getCategoryIds($rc)) // Populated further up the script
->setSku($rc['config_sku']) // $main_product_data is an array created as part of a wider foreach loop, which this code is inside of
->setName($rc['cn_name'])
->setData('cn_name',$rc['cn_name'])
->setData('en_name',$rc['en_name'])
->setData('description',$rc['description'])
->setData('composition',$rc['composition'])
->setData('care_description',$rc['care_description'])
->setData('season',$rc['season'])
->setData('price',$rc['price']);
if ($rc['style']) {
$cProduct->setData('style',$style);
}
if ($rc['model_filter']) {
$cProduct->setData('model_filter',$model_filter);
}
if ($rc['color']) {
$cProduct->setData('color',$color);
}
if ($rc['usage']) {
$cProduct->setData('usage',$usage);
}
if ($rc['edition']) {
$cProduct->setData('edition',$edition);
}
if ($rc['specific_usage']) {
$cProduct->setData('specific_usage',$specific_usage);
}
$cProduct->setCanSaveConfigurableAttributes(true);
$cProduct->setCanSaveCustomOptions(true);
$_attributeIds = array("size" =>$attr_id);
$cProductTypeInstance = $cProduct->getTypeInstance();
$cProductTypeInstance->setUsedProductAttributeIds(array($_attributeIds["size"]));
$attributes_array = $cProductTypeInstance->getConfigurableAttributesAsArray();
foreach($attributes_array as $key => $attribute_array) {
$attributes_array[$key]['use_default'] = 1;
$attributes_array[$key]['position'] = 0;
if (isset($attribute_array['frontend_label'])) {
$attributes_array[$key]['label'] = $attribute_array['frontend_label'];
} else {
$attributes_array[$key]['label'] = $attribute_array['attribute_code'];
}
}
// Add it back to the configurable product..
$cProduct->setConfigurableAttributesData($attributes_array);
$dataArray = array();
foreach ($simpleProducts as $simpleArray) {
$dataArray[$simpleArray['id']] = array();
foreach ($attributes_array as $attrArray) {
array_push( $dataArray[$simpleArray['id']],
array( "attribute_id" => $simpleArray['attr_id'],
"label" => $simpleArray['label'],
"is_percent" => false,
"pricing_value" => $simpleArray['price'] ) );
}
}
var_dump('simple data:');
var_dump($dataArray);
$cProduct->setConfigurableProductsData($dataArray);
$cProduct->setStockData(
array( 'use_config_manage_stock' => 1,
'is_in_stock' => 1,
'is_salable' => 1
));
$cProduct->save();
var_dump($cProduct->getSku() . ' import success!');
}
}
}