/** * Set additional data before product saved * * @param Mage_Catalog_Model_Product $product * @param array $productData * @return object */ protected function _prepareDataForSave($product, $productData) { if (isset($productData['categories']) && is_array($productData['categories'])) { $product->setCategoryIds($productData['categories']); } if (isset($productData['websites']) && is_array($productData['websites'])) { foreach ($productData['websites'] as &$website) { if (is_string($website)) { try { $website = Mage::app()->getWebsite($website)->getId(); } catch (Exception $e) { } } } $product->setWebsiteIds($productData['websites']); } if (Mage::app()->isSingleStoreMode()) { $product->setWebsiteIds(array(Mage::app()->getStore(true)->getWebsite()->getId())); } if (isset($productData['stock_data']) && is_array($productData['stock_data'])) { $product->setStockData($productData['stock_data']); } else { $product->setStockData(array('use_config_manage_stock' => 0)); } if (isset($productData['tier_price']) && is_array($productData['tier_price'])) { $tierPrices = Mage::getModel('catalog/product_attribute_tierprice_api')->prepareTierPrices($product, $productData['tier_price']); $product->setData(Mage_Catalog_Model_Product_Attribute_Tierprice_Api::ATTRIBUTE_CODE, $tierPrices); } /* * Check if configurable product data array passed */ if (isset($productData['configurable_products_data']) && is_array($productData['configurable_products_data'])) { $product->setConfigurableProductsData($productData['configurable_products_data']); } if (isset($productData['configurable_attributes_data']) && is_array($productData['configurable_attributes_data'])) { foreach ($productData['configurable_attributes_data'] as $key => $data) { //Check to see if these values exist, otherwise try and populate from existing values $data['label'] = !empty($data['label']) ? $data['label'] : $product->getResource()->getAttribute($data['attribute_code'])->getStoreLabel(); $data['frontend_label'] = !empty($data['frontend_label']) ? $data['frontend_label'] : $product->getResource()->getAttribute($data['attribute_code'])->getFrontendLabel(); $productData['configurable_attributes_data'][$key] = $data; } $product->setConfigurableAttributesData($productData['configurable_attributes_data']); $product->setCanSaveConfigurableAttributes(true); } /* * Check if bundle product data, options and bundle items arrays passed */ if (isset($productData['bundle_items_data']) && isset($productData['options_data']) && is_array($productData['bundle_items_data']) && is_array($productData['options_data'])) { $product->setBundleOptionsData($productData['options_data']); $product->setBundleSelectionsData($productData['bundle_items_data']); $product->setCanSaveBundleSelections(true); $product->setAffectBundleProductSelections(true); Mage::register('product', $product); // product must be registred in order to get the store_id, see _beforeSave() in Mage/Bundle/Model/Selection.php } }
/** * Prepare inventory data from custom attribute * * @param Mage_Catalog_Model_Product $object * @return Mage_Eav_Model_Entity_Attribute_Backend_Abstract|void */ public function beforeSave($object) { $stockData = $object->getData($this->getAttribute()->getAttributeCode()); if (isset($stockData['qty']) && $stockData['qty'] === '') { $stockData['qty'] = null; } if ($object->getStockData() !== null || $stockData !== null) { $object->setStockData(array_replace((array) $object->getStockData(), (array) $stockData)); } $object->unsetData($this->getAttribute()->getAttributeCode()); parent::beforeSave($object); }
public function saveAnimalAction() { $request = $this->getRequest()->getPost(); $leiloeiro = Mage::getModel('leilao/leiloeiro')->getCurrentLeiloeiroSession(); $leiloeiro_product = Mage::getModel('leilao/product'); $product = new Mage_Catalog_Model_Product(); $product->setAttributeSetId(4); // #4 is for default $product->setTypeId('simple'); $product->setName($request['name']); $product->setDescription($request['description']); $product->setShortDescription('Short description here'); $product->setSku(time()); $product->setWeight(1.0); $product->setStatus(1); $product->setVisibility(Mage_Catalog_Model_Product_Visibility::VISIBILITY_BOTH); //4 $product->setPrice($request['price']); // # Set some price $product->setTaxClassId(0); // # default tax class $product->setStockData(array('is_in_stock' => 1, 'qty' => 1)); //$product->setCategoryIds(array(27)); // # some cat id's, $product->setWebsiteIDs(array(1)); // # Website id, 1 is default //Default Magento attribute $product->setCreatedAt(strtotime('now')); //print_r($product); try { $product->save(); $leiloeiro_product->setData('id_leiloeiro', $leiloeiro->getData('entity_id')); $leiloeiro_product->setData('id_product', $product->getId()); $leiloeiro_product->save(); echo "Product Created"; } catch (Exception $ex) { //Handle the error echo "Product Creation Failed"; } }
public function createProduct(&$item, $asid) { $logFileName = Mage::getSingleton('core/session')->getEmailID(); $attributeSetModel = Mage::getModel('eav/entity_attribute_set'); $attributeSetModel->load($asid); if (count($attributeSetModel->getData()) > 0) { $p_status = (string) $item->isActive == 'Y' ? 1 : 2; $p_taxclass = (string) $item->isTaxable == 'Y' ? 2 : 0; $product = new Mage_Catalog_Model_Product(); $product->setTypeId('simple'); $product->setVisibility(Mage_Catalog_Model_Product_Visibility::VISIBILITY_BOTH); //New and created data code start $format = 'Y-m-d H:i:s'; $catalogNewproductDays = Mage::getStoreConfig('catalog/newproduct/days', Mage::app()->getStore()); if (!empty($catalogNewproductDays) && $catalogNewproductDays >= 0) { $currenDateTime = date("Y-m-d H:i:s", Mage::getModel('core/date')->timestamp(time())); $new_from_date = date($format, strtotime('1 days' . $currenDateTime)); $new_to_date = date($format, strtotime($catalogNewproductDays . ' days' . $new_from_date)); $product->setNewsFromDate($new_from_date); $product->setNewsToDate($new_to_date); } if ($product->getCreatedTime == NULL || $product->getUpdateTime() == NULL) { $product->setCreatedTime($currenDateTime)->setUpdateTime($currenDateTime); } //New and created data code end $product->setSku((string) $item->id); //Product custom id $product->setWebsiteIds(array(Mage::app()->getStore(true)->getWebsite()->getId())); //Default website (main website) ?? To Do : make it dynamic $product->setStoreIDs(array($this->_store_id)); // Default store id . $inventory = $item->inventory; $manageItem = (string) $inventory->manageStock; $manageItem = strtoupper($manageItem); if ($manageItem == 'Y' && strtoupper($inventory->allowBackorders) == 'Y') { $product->setStockData(array('is_in_stock' => 1, 'qty' => $inventory->atp, 'manage_stock' => 1, 'use_config_backorders' => 0, 'backorders' => 1)); } elseif ($manageItem == 'Y') { $product->setStockData(array('is_in_stock' => 1, 'qty' => $inventory->atp, 'use_config_backorders' => 0, 'manage_stock' => 1)); } elseif ($manageItem == 'N') { $product->setStockData(array('use_config_backorders' => 0, 'manage_stock' => 0)); } $product->setAttributeSetId($asid); $product->setData('name', (string) $item->name); $product->setPrice((double) $item->price); $splAmt = (array) $item->specialPrice->amount; if (isset($item->specialPrice->amount) && $item->specialPrice->amount != NULL) { if (!empty($splAmt)) { $product->setSpecialPrice((double) $item->specialPrice->amount); } //special price in form 11.22 } $fromDate = (array) $item->specialPrice->fromDateTime; if (isset($item->specialPrice->fromDateTime) && $item->specialPrice->fromDateTime != NULL) { if (!empty($fromDate)) { $product->setSpecialFromDate(Mage::helper('customimport')->getCurrentLocaleDateTime($item->specialPrice->fromDateTime)); } //special price from (MM-DD-YYYY) } $toDate = (array) $item->specialPrice->toDateTime; if (isset($item->specialPrice->toDateTime) && $item->specialPrice->toDateTime != NULL) { if (!empty($toDate)) { $product->setSpecialToDate(Mage::helper('customimport')->getCurrentLocaleDateTime($item->specialPrice->toDateTime)); } //special price to (MM-DD-YYYY) } $product->setWeight((double) $item->weight); $product->setStatus($p_status); $product->setTaxClassId($p_taxclass); $product->setDescription((string) $item->longDescription); $product->setShortDescription((string) $item->shortDescription); $product->setMetaTitle((string) $item->pageTitle); $product->setMetaKeyword((string) $item->metaKeywords); $product->setMetaDescription((string) $item->metaDescription); $product->setExternalImage((string) $item->originalImageUrl); $product->setExternalSmallImage((string) $item->largeImageUrl); $product->setExternalThumbnail((string) $item->smallImageUrl); $attributeValues = $item->attributeValues; $attributeOcuurance = array(); //stores no. of occurance for all attributes $configAttributeValue = array(); // will use to take value of attributes that ocuures once $multiple_values = array(); // stores an array of available values $i = 1; $model = Mage::getModel('catalog/resource_eav_attribute'); foreach ($attributeValues->attribute as $attr) { $loadedattr = $model->loadByCode('catalog_product', (string) $attr->id); $attr_type = $loadedattr->getFrontendInput(); if (array_key_exists((string) $attr->id, $attributeOcuurance)) { $multiple_values[(string) $attr->id][] = (string) $attr->valueDefId; $attributeOcuurance[(string) $attr->id] = (int) $attributeOcuurance[(string) $attr->id] + 1; if ($attr_type == 'text' || $attr_type == 'textarea') { $multiple_values[(string) $attr->id][] = (string) $attr->value; } } else { $multiple_values[(string) $attr->id][] = (string) $attr->valueDefId; $attributeOcuurance[(string) $attr->id] = $i; if ($attr_type == 'text' || $attr_type == 'textarea') { $multiple_values[(string) $attr->id][] = (string) $attr->value; } } } foreach ($multiple_values as $attribute_code => $attribute_values) { $loadedattr = $model->loadByCode('catalog_product', $attribute_code); $attr_id = $loadedattr->getAttributeId(); // attribute id of magento if (!$attr_id) { $this->customHelper->reportError($this->customHelper->__('Attribute %s is not available in magento. Hence skipping product # %s', $attribute_code, $item->id)); return; } else { $attr_type = $loadedattr->getFrontendInput(); if ($attr_type == 'select' && count($attribute_values) == 1) { $mapObj = Mage::getModel('customimport/customimport'); $option_id = $mapObj->isOptionExistsInAttribute($attribute_values[0], $attr_id); if ($option_id) { $product->setData($attribute_code, $option_id); } else { $this->customHelper->reportError($this->customHelper->__('Attribute %s has an undefined option value %s. Hence skipping product # %s', $attribute_code, $attribute_values[0], $item->id)); return; } } elseif ($attr_type == 'select' && count($attribute_values) > 1) { //multiple values for attribute which is not multiselect $this->customHelper->reportError($this->customHelper->__('Attribute %s can not have multiple values. Hence skipping product # %s', $attribute_code, $item->id)); return; } elseif ($attr_type == 'multiselect') { $multivalues = array(); foreach ($attribute_values as $value) { $mapObj = Mage::getModel('customimport/customimport'); $option_id = $mapObj->isOptionExistsInAttribute($value, $attr_id); if ($option_id) { $multivalues[] = $option_id; } else { $this->customHelper->reportError($this->customHelper->__('Attribute %s has an undefined option value %s. Hence skipping product id %s', $attribute_code, $value, $item->id)); return; } } $product->addData(array($attribute_code => $multivalues)); } elseif ($attr_type == 'text' || $attr_type == 'textarea') { $product->setData($attribute_code, $attribute_values[1]); } elseif ($attr_type == 'boolean') { $optVal = Mage::getSingleton('customimport/customimport')->getOptVal($attribute_values[0]); if (strtolower($optVal->getValue()) == 'y' || strtolower($optVal->getValue()) == 'yes') { $attOptVal = 1; } else { $attOptVal = 0; } $product->setData($attribute_code, $attOptVal); } } } try { Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID); $productId = $product->save()->getId(); if ($manageItem == 'N' || $manageItem == 'n') { $product->setStockData(array('use_config_backorders' => 0, 'is_in_stock' => 1, 'manage_stock' => 0)); //code for instock while update product $stockItem = Mage::getModel('cataloginventory/stock_item'); $stockItem->assignProduct($product); $stockItem->setData('use_config_manage_stock', 0); $stockItem->setData('manage_stock', 0); $stockItem->save(); $stockStatus = Mage::getModel('cataloginventory/stock_status'); $stockStatus->assignProduct($product); $stockStatus->saveProductStatus($product->getId(), 1); } if ($productId) { $this->_created_num++; unset($product); unset($multiple_values); unset($attributeOcuurance); return $productId; } else { $this->customHelper->reportError($this->customHelper->__('Skipped product due to some error while saving # %s', $item->id)); } } catch (Mage_Eav_Model_Entity_Attribute_Exception $e) { $this->customHelper->reportError($e->getMessage()); $this->customHelper->reportError($e->getAttributeCode()); $this->customHelper->sendLogEmail($this->logPath); } } else { $this->customHelper->reportError($this->customHelper->__('Attribute set ID # %s is missing. Hence skipped product # %s', $asid, $item->id)); } }
public function CreateGeneralProducts() { try { $parent_category = Mage::getStoreConfig('oscommerceimportconf/mageconfiguration/conf_category', Mage::app()->getStore()); $storeId = Mage::getStoreConfig('oscommerceimportconf/mageconfiguration/conf_website', Mage::app()->getStore()); $AttributeSetId = Mage::getStoreConfig('oscommerceimportconf/mageconfiguration/conf_attribute', Mage::app()->getStore()); ///////////////////////////////////////////////////////////////////////////////////// // Create Custom Product for Import Shipping ///////////////////////////////////////////////////////////////////////////////////// $pro_Model = 'osc-shipping'; $pro_Name = 'Shipping'; $oProduct = Mage::getModel("catalog/product")->getCollection()->setStoreId($storeId)->addAttributeToSelect("sku")->addFieldToFilter("sku", array('eq' => $pro_Model))->getFirstItem(); if (sizeof($oProduct->getData()) == 0) { $product = new Mage_Catalog_Model_Product(); // Build the product $product->setSku($pro_Model); $product->setAttributeSetId($AttributeSetId); $product->setTypeId('simple'); $product->setName($pro_Name); $product->setCategoryIds($parent_category); $product->setWebsiteIDs(array($storeId)); $product->setDescription('-'); $product->setShortDescription('-'); $product->setPrice(0); $product->setWeight(0); $product->setVisibility(Mage_Catalog_Model_Product_Visibility::VISIBILITY_NOT_VISIBLE); $product->setStatus(1); $product->setTaxClassId(0); # My default tax class $product->setStockData(array('is_in_stock' => 1, 'qty' => 10000)); $product->setCreatedAt(strtotime('now')); $product->save(); } ///////////////////////////////////////////////////////////////////////////////////// // Create Custom Product for Import Discount ///////////////////////////////////////////////////////////////////////////////////// $pro_Model = 'osc-discount'; $pro_Name = 'Discount'; $oProduct = Mage::getModel("catalog/product")->getCollection()->setStoreId($storeId)->addAttributeToSelect("sku")->addFieldToFilter("sku", array('eq' => $pro_Model))->getFirstItem(); if (sizeof($oProduct->getData()) == 0) { $product = new Mage_Catalog_Model_Product(); // Build the product $product->setSku($pro_Model); $product->setAttributeSetId($AttributeSetId); $product->setTypeId('simple'); $product->setName($pro_Name); $product->setCategoryIds($parent_category); $product->setWebsiteIDs(array($storeId)); $product->setDescription('-'); $product->setShortDescription('-'); $product->setPrice(0); $product->setWeight(0); $product->setVisibility(Mage_Catalog_Model_Product_Visibility::VISIBILITY_NOT_VISIBLE); $product->setStatus(1); $product->setTaxClassId(0); # My default tax class $product->setStockData(array('is_in_stock' => 1, 'qty' => 10000)); $product->setCreatedAt(strtotime('now')); $product->save(); } ///////////////////////////////////////////////////////////////////////////////////// // Create Custom Product for Import Taxes ///////////////////////////////////////////////////////////////////////////////////// $pro_Model = 'osc-tax'; $pro_Name = 'Tax'; $oProduct = Mage::getModel("catalog/product")->getCollection()->setStoreId($storeId)->addAttributeToSelect("sku")->addFieldToFilter("sku", array('eq' => $pro_Model))->getFirstItem(); if (sizeof($oProduct->getData()) == 0) { $product = new Mage_Catalog_Model_Product(); // Build the product $product->setSku($pro_Model); $product->setAttributeSetId($AttributeSetId); $product->setTypeId('simple'); $product->setName($pro_Name); $product->setCategoryIds($parent_category); $product->setWebsiteIDs(array($storeId)); $product->setDescription('-'); $product->setShortDescription('-'); $product->setPrice(0); $product->setWeight(0); $product->setVisibility(Mage_Catalog_Model_Product_Visibility::VISIBILITY_NOT_VISIBLE); $product->setStatus(1); $product->setTaxClassId(0); # My default tax class $product->setStockData(array('is_in_stock' => 1, 'qty' => 10000)); $product->setCreatedAt(strtotime('now')); $product->save(); } ///////////////////////////////////////////////////////////////////////////////////// // Create Custom Product for Import Other ///////////////////////////////////////////////////////////////////////////////////// $pro_Model = 'osc-other'; $pro_Name = 'Other Charges'; $oProduct = Mage::getModel("catalog/product")->getCollection()->setStoreId($storeId)->addAttributeToSelect("sku")->addFieldToFilter("sku", array('eq' => $pro_Model))->getFirstItem(); if (sizeof($oProduct->getData()) == 0) { $product = new Mage_Catalog_Model_Product(); // Build the product $product->setSku($pro_Model); $product->setAttributeSetId($AttributeSetId); $product->setTypeId('simple'); $product->setName($pro_Name); $product->setCategoryIds($parent_category); $product->setWebsiteIDs(array($storeId)); $product->setDescription('-'); $product->setShortDescription('-'); $product->setPrice(1); $product->setWeight(0); $product->setVisibility(Mage_Catalog_Model_Product_Visibility::VISIBILITY_NOT_VISIBLE); $product->setStatus(1); $product->setTaxClassId(0); # My default tax class $product->setStockData(array('is_in_stock' => 1, 'qty' => 10000)); $product->setCreatedAt(strtotime('now')); $product->save(); } } catch (Exception $ex) { //echo $ex->getMessage(); Mage::getSingleton('core/session')->setErrorMSG('Creating Import Products: ' . $pro_Name . ' - ' . $ex->getMessage()); } }
/** * Set additional data before product save * * @param Mage_Catalog_Model_Product $product * @param array $productData */ protected function _prepareDataForSave($product, $productData) { if (isset($productData['stock_data'])) { if (!$product->isObjectNew() && !isset($productData['stock_data']['manage_stock'])) { $productData['stock_data']['manage_stock'] = $product->getStockItem()->getManageStock(); } $this->_filterStockData($productData['stock_data']); } else { $productData['stock_data'] = array('use_config_manage_stock' => 1, 'use_config_min_sale_qty' => 1, 'use_config_max_sale_qty' => 1); } $product->setStockData($productData['stock_data']); // save gift options $this->_filterConfigValueUsed($productData, array('gift_message_available', 'gift_wrapping_available')); if (isset($productData['use_config_gift_message_available'])) { $product->setData('use_config_gift_message_available', $productData['use_config_gift_message_available']); if (!$productData['use_config_gift_message_available'] && $product->getData('gift_message_available') === null) { $product->setData('gift_message_available', (int) Mage::getStoreConfig(Mage_GiftMessage_Helper_Message::XPATH_CONFIG_GIFT_MESSAGE_ALLOW_ITEMS, $product->getStoreId())); } } if (isset($productData['use_config_gift_wrapping_available'])) { $product->setData('use_config_gift_wrapping_available', $productData['use_config_gift_wrapping_available']); if (!$productData['use_config_gift_wrapping_available'] && $product->getData('gift_wrapping_available') === null) { $xmlPathGiftWrappingAvailable = 'sales/gift_options/wrapping_allow_items'; $product->setData('gift_wrapping_available', (int) Mage::getStoreConfig($xmlPathGiftWrappingAvailable, $product->getStoreId())); } } if (isset($productData['website_ids']) && is_array($productData['website_ids'])) { $product->setWebsiteIds($productData['website_ids']); } // Create Permanent Redirect for old URL key if (!$product->isObjectNew() && isset($productData['url_key']) && isset($productData['url_key_create_redirect'])) { $product->setData('save_rewrites_history', (bool) $productData['url_key_create_redirect']); } /** @var $attribute Mage_Catalog_Model_Resource_Eav_Attribute */ foreach ($product->getTypeInstance(true)->getEditableAttributes($product) as $attribute) { //Unset data if object attribute has no value in current store if (Mage_Catalog_Model_Abstract::DEFAULT_STORE_ID !== (int) $product->getStoreId() && !$product->getExistsStoreValueFlag($attribute->getAttributeCode()) && !$attribute->isScopeGlobal()) { $product->setData($attribute->getAttributeCode(), false); } if ($this->_isAllowedAttribute($attribute)) { if (isset($productData[$attribute->getAttributeCode()])) { $product->setData($attribute->getAttributeCode(), $productData[$attribute->getAttributeCode()]); } } } }
/** * Set additional data before product saved * * @param Mage_Catalog_Model_Product $product * @param array $productData * @return object */ protected function _prepareDataForSave($product, $productData) { if (property_exists($productData, 'categories') && is_array($productData->categories)) { $product->setCategoryIds($productData->categories); } if (property_exists($productData, 'websites') && is_array($productData->websites)) { foreach ($productData->websites as &$website) { if (is_string($website)) { try { $website = Mage::app()->getWebsite($website)->getId(); } catch (Exception $e) { } } } $product->setWebsiteIds($productData->websites); } if (Mage::app()->isSingleStoreMode()) { $product->setWebsiteIds(array(Mage::app()->getStore(true)->getWebsite()->getId())); } if (property_exists($productData, 'stock_data')) { $_stockData = array(); foreach ($productData->stock_data as $key => $value) { $_stockData[$key] = $value; } } else { $_stockData = array('use_config_manage_stock' => 0); } $product->setStockData($_stockData); if (property_exists($productData, 'tier_price')) { $tierPrices = Mage::getModel('catalog/product_attribute_tierprice_api_V2')->prepareTierPrices($product, $productData->tier_price); $product->setData(Mage_Catalog_Model_Product_Attribute_Tierprice_Api_V2::ATTRIBUTE_CODE, $tierPrices); } }
public function addProduct($data) { $product = new Mage_Catalog_Model_Product(); // Build the product $setId = Mage::getResourceModel('eav/entity_attribute_set_collection')->setEntityTypeFilter($this->typeId)->addFilter('attribute_set_name', $this->attributeSet['name'])->getFirstItem()->getId(); // firstItem becouse of filter ($this->typeId) and filter ('attribute_set_name') design single attribute set. $product->setSku($data['sku']); $product->setAttributeSetId($setId); # 9 is for default $product->setTypeId('simple'); $product->setName($data['name']); $product->setWebsiteIDs(array(1)); //only array!!!!! # Website id, 1 is default $product->setStoreIDs(array(0, 1)); $product->setDescription($data['description']); $product->setShortDescription($data['short_description']); $product->setPrice($data['price']); # Set some price $product->setWeight($data['weight']); $product->setStatus(Mage_Catalog_Model_Product_Status::STATUS_ENABLED); $product->setVisibility(Mage_Catalog_Model_Product_Visibility::VISIBILITY_BOTH); $product->setTaxClassId(0); # default tax class if ($catId = $this->getCategoryIdByName($this->categoryName)) { $product->setCategoryIds(array($catId)); # some cat id's, } $product->setStockData(array('is_in_stock' => 1, 'qty' => $data['qty'])); $product->setCreatedAt(strtotime('now')); try { $product->save(); echo "product created. ID: {$product->getId()} \n"; } catch (Exception $ex) { zend_debug::dump($ex->getMessage()); } }
public function addProduct() { echo date("\nY-d-m H:i:s\n"); //$this->query("TRUNCATE TABLE `cataloginventory_stock_status_idx`"); $processes = Mage::getSingleton('index/indexer')->getProcessesCollection(); $processes->walk('setMode', array(Mage_Index_Model_Process::MODE_MANUAL)); $processes->walk('save'); $connection = Mage::getModel('core/resource')->getConnection('core_read'); //$product = Mage::getModel('catalog/product'); $product = new Mage_Catalog_Model_Product(); // get data array $select = $connection->select()->from('oberig_products'); $result = $connection->query($select)->fetchAll(); //(PDO::FETCH_ASSOC); //mage::d($row); //echo $select->__toString();//die;//mage::D($result); //category mapping $result2 = array(); foreach ($result as &$row) { if (empty($row['category_ids'])) { $row['category_ids'] = array(); $result2[] = $row; continue; } $cats = explode(',', $row['category_ids']); foreach ($cats as &$cat) { $select = $connection->select()->from('oberig_category_mapping', 'new_cat_id')->where('old_cat_id=?', $cat); $res = $connection->query($select)->fetch(); $cat = $res['new_cat_id']; } $row['category_ids'] = $cats; $result2[] = $row; } $result = $result2; foreach ($result as $row) { //mage::d($row['category_ids']); $product = new Mage_Catalog_Model_Product(); // Build the product $product->setSku($row['sku']); $product->setAttributeSetId('4'); # 9 is for default $product->setTypeId('simple'); $product->setStatus(1); $product->setWebsiteIDs(array(1)); $product->setCategoryIds($row['category_ids']); $product->setVisibility(Mage_Catalog_Model_Product_Visibility::VISIBILITY_BOTH); $product->setPrice($row['price']); $product->setData('store', $row['store']); //$product->setData('websites', $row['websites']); $product->setData('attribute_set', $row['attribute_set']); $product->setData('type', $row['type']); $product->setData('sku', $row['sku']); $product->setData('has_options', $row['has_options']); $product->setData('name', $row['name']); $product->setData('meta_title', $row['meta_title']); $product->setData('meta_description', $row['meta_description']); $product->setData('url_key', $row['url_key']); $product->setData('url_path', $row['url_path']); $product->setData('options_container', $row['options_container']); $product->setData('extra_title', $row['extra_title']); $product->setData('frame_gender', $row['frame_gender']); $product->setData('frame_shape', $row['frame_shape']); $product->setData('cost', $row['cost']); $product->setData('weight', $row['weight']); $product->setData('manufacturer', $row['manufacturer']); //$product->setData('status', $row['status']); $product->setData('tax_class_id', $row['tax_class_id']); //$product->setData('visibility', $row['visibility']); $product->setData('enable_googlecheckout', $row['enable_googlecheckout']); $product->setData('is_imported', $row['is_imported']); $product->setData('frame_type', $row['frame_type']); //$product->setData('sell_by_phone_only', $row['sell_by_phone_only']); $product->setData('description', $row['description']); $product->setData('short_description', $row['short_description']); $product->setData('meta_keyword', $row['meta_keyword']); $product->setData('special_from_date', $row['special_from_date']); $product->setData('min_qty', $row['min_qty']); $product->setData('use_config_min_qty', $row['use_config_min_qty']); $product->setData('is_qty_decimal', $row['is_qty_decimal']); $product->setData('backorders', $row['backorders']); $product->setData('use_config_backorders', $row['use_config_backorders']); $product->setData('min_sale_qty', $row['min_sale_qty']); $product->setData('use_config_min_sale_qty', $row['use_config_min_sale_qty']); $product->setData('max_sale_qty', $row['max_sale_qty']); $product->setData('use_config_max_sale_qty', $row['use_config_max_sale_qty']); $product->setData('low_stock_date', $row['low_stock_date']); $product->setData('notify_stock_qty', $row['notify_stock_qty']); $product->setData('use_config_notify_stock_qty', $row['use_config_notify_stock_qty']); $product->setData('manage_stock', $row['manage_stock']); $product->setData('use_config_manage_stock', $row['use_config_manage_stock']); $product->setData('stock_status_changed_automatically', $row['stock_status_changed_automatically']); $product->setData('use_config_qty_increments', $row['use_config_qty_increments']); $product->setData('qty_increments', $row['qty_increments']); $product->setData('use_config_enable_qty_increments', $row['use_config_enable_qty_increments']); $product->setData('enable_qty_increments', $row['enable_qty_increments']); $product->setData('product_name', $row['product_name']); $product->setData('store_id', $row['store_id']); $product->setData('product_type_id', $row['product_type_id']); $product->setData('product_status_changed', $row['product_status_changed']); $product->setData('product_changed_websites', $row['product_changed_websites']); $product->setData('custom_design', $row['custom_design']); $product->setData('page_layout', $row['page_layout']); $product->setData('image_label', $row['image_label']); $product->setData('small_image_label', $row['small_image_label']); $product->setData('thumbnail_label', $row['thumbnail_label']); $product->setData('gift_message_available', $row['gift_message_available']); $product->setData('framecolour', $row['framecolour']); $product->setData('special_price', $row['special_price']); $product->setData('is_recurring', $row['is_recurring']); $product->setData('frame_size', $row['frame_size']); $product->setData('custom_layout_update', $row['custom_layout_update']); $product->setData('special_to_date', $row['special_to_date']); $product->setData('news_from_date', $row['news_from_date']); $product->setData('news_to_date', $row['news_to_date']); $product->setData('custom_design_from', $row['custom_design_from']); $product->setData('custom_design_to', $row['custom_design_to']); $product->setData('stock_clearance', $row['stock_clearance']); $product->setData('lenstint', $row['lenstint']); $product->setData('framesizetest', $row['framesizetest']); $product->setStockData(array('is_in_stock' => $row['is_in_stock'], 'qty' => $row['qty'])); $product->setIsMassupdate(false); try { $product->save(); //Mage::getResourceSingleton('catalog/product_indexer_price')->reindexProductIds(array($productId)); //Mage::register('current_product', $product); //$product = null; } catch (Exception $ex) { echo 'test\\n'; echo $ex->getMessage(); //Handle the error } } $processes->walk('reindexAll'); $processes->walk('setMode', array(Mage_Index_Model_Process::MODE_REAL_TIME)); $processes->walk('save'); $indexProcess = Mage::getSingleton('index/indexer')->getProcessByCode('catalog_product_price'); if ($indexProcess) { $indexProcess->reindexAll(); } echo date("\nY-d-m H:i:s\n"); }
public function addProduct($data) { $connection = Mage::getModel('core/resource')->getConnection('core_read'); $product = new Mage_Catalog_Model_Product(); $product->setAttributeSetId(Mage::getModel('eav/entity_attribute_set')->getCollection()->setEntityTypeFilter($this->typeId)->addFieldToFilter('attribute_set_name', $data['attribute_set_id'])->getFirstItem()->getAttributeSetId()); unset($data['attribute_set_id']); $product->setWebsiteIDs(array(1)); //// assign product to the default website $product->setWebsiteIds(array(Mage::app()->getStore(true)->getWebsite()->getId())); foreach ($data as $key => $value) { switch ($key) { case 'is_in_stock': case 'qty': case 'media_gallery': case 'related': case 'upsell': case 'crosssell': case 'options': break; case 'visibility': switch ($value) { case 'Not Visible Individually': $val = 1; break; case 'Catalog': $val = 2; break; case 'Search': $val = 3; break; case 'Catalog, Search': $val = 4; break; default: $val = ''; } $product->setData($key, $val); break; case 'status': switch ($value) { case 'Enabled': $val = 1; break; case 'Disabled': $val = 2; break; default: $val = ''; } $product->setData($key, $val); break; default: in_array($key, $this->attrsWithOpts) ? $product->setData($key, $this->optByCode($key, $value)) : $product->setData($key, $value); } } //unset($value); $product->setStockData(array('is_in_stock' => $data['is_in_stock'], 'qty' => $data['qty'])); $product->setIsMassupdate(false); $product->setExcludeUrlRewrite(true); try { $product->save(); //Mage::getResourceSingleton('catalog/product_indexer_price')->reindexProductIds(array($productId)); # ----------- set media gallery ---------------- # // TODO: move folder Media need fix. $product = Mage::getModel('catalog/product')->load($product->getId()); $product->setMediaGallery(array('images' => array(), 'values' => array())); foreach ($data['media_gallery']['images'] as $img) { $mediaGalleryData['images'][] = array('file' => $img['file'], 'position' => $img['position'], 'label' => $img['label'], 'disabled' => $img['disabled']); $product->setData('media_gallery', $mediaGalleryData); /*if (!is_null($mediaAttribute)) { Mage::('catalog/product_attribute_backend_media')->setMediaAttribute($product, $mediaAttribute, $fileName); }*/ } $product->save(); # ----------- set custom options ---------------- # $options = array(); $sku = $data['sku']; $i = 0; foreach ($data['options'] as $opt) { $options[$i][$sku] = array('title' => $opt['describe']['title'], 'type' => $opt['describe']['type'], 'is_require' => $opt['describe']['is_require'], 'sort_order' => $opt['describe']['sort_order'], 'values' => array()); if (!empty($opt['values'])) { foreach ($opt['values'] as $val) { $options[$i][$sku]['values'][] = array('title' => $val['title'], 'price' => $val['price'], 'price_type' => empty($val['price_type']) ? 'fixed' : $val['price_type'], 'sku' => $val['sku'], 'sort_order' => $val['sort_order']); } } ++$i; } foreach ($options as $option) { foreach ($option as $sku => $opt1) { $product = Mage::getModel('catalog/product')->load($product->getId()); if (!$product->getOptionsReadonly()) { $product->setProductOptions(array($opt1)); $product->setCanSaveCustomOptions(true); try { $product->save(); } catch (Exception $e) { echo $e->getMessage(); } } Mage::getSingleton('catalog/product_option')->unsetOptions(); } } # ----------- set upsell, crossel, related products not possible, first need load all products :-) ---------------- # } catch (Exception $ex) { mage::D($ex); #mage::log($ex->getMessage(), null, 'prodsimp.log'); } }
// Build the product $product->setSku($sku); $product->setAttributeSetId($setId); # 9 is for default $product->setTypeId('simple'); $product->setName('Lens 1'); $product->setCategoryIds(array(3)); # some cat id's, $product->setWebsiteIDs(array(0, 1)); //only array!!!!! # Website id, 1 is default $product->setStoreIDs(array(0, 1)); $product->setDescription('Full description here'); $product->setShortDescription('Short description here'); $product->setPrice(39.99); # Set some price $product->setWeight(4.0); $product->setVisibility(Mage_Catalog_Model_Product_Visibility::VISIBILITY_BOTH); $product->setStatus(Mage_Catalog_Model_Product_Status::STATUS_ENABLED); $product->setTaxClassId(0); # default tax class $product->setStockData(array('is_in_stock' => 1, 'qty' => 99999)); $product->setCreatedAt(strtotime('now')); try { $product->save(); echo "product created"; } catch (Exception $ex) { zend_debug::dump($ex->getMessage()); } echo date("\nY-d-m H:i:s\n"); ?>
/** * Set additional data before product saved * * @param Mage_Catalog_Model_Product $product * @param array $productData * @return object */ protected function _prepareDataForSave($product, $productData) { if (isset($productData['categories']) && is_array($productData['categories'])) { $product->setCategoryIds($productData['categories']); } if (isset($productData['websites']) && is_array($productData['websites'])) { foreach ($productData['websites'] as &$website) { if (is_string($website)) { try { $website = Mage::app()->getWebsite($website)->getId(); } catch (Exception $e) { } } } $product->setWebsiteIds($productData['websites']); } if (Mage::app()->isSingleStoreMode()) { $product->setWebsiteIds(array(Mage::app()->getStore(true)->getWebsite()->getId())); } if (isset($productData['stock_data']) && is_array($productData['stock_data'])) { $product->setStockData($productData['stock_data']); } else { $product->setStockData(array('use_config_manage_stock' => 0)); } if (isset($productData['tier_price']) && is_array($productData['tier_price'])) { $tierPrices = Mage::getModel('catalog/product_attribute_tierprice_api')->prepareTierPrices($product, $productData['tier_price']); $product->setData(Mage_Catalog_Model_Product_Attribute_Tierprice_Api::ATTRIBUTE_CODE, $tierPrices); } }
/** * Set additional data before product saved * * @param Mage_Catalog_Model_Product $product * @param array $productData * @return object */ protected function _prepareDataForSave($product, $productData) { if (property_exists($productData, 'categories') && is_array($productData->categories)) { $product->setCategoryIds($productData->categories); } if (property_exists($productData, 'websites') && is_array($productData->websites)) { foreach ($productData->websites as &$website) { if (is_string($website)) { try { $website = Mage::app()->getWebsite($website)->getId(); } catch (Exception $e) { } } } $product->setWebsiteIds($productData->websites); } if (property_exists($productData, 'stock_data') && is_array($productData->stock_data)) { $product->setStockData($productData->stock_data); } }
/** * Set additional data before product saved * * @param Mage_Catalog_Model_Product $product * @param array $productData * @return object */ protected function _prepareDataForSave($product, $productData) { if (property_exists($productData, 'categories') && is_array($productData->categories)) { $product->setCategoryIds($productData->categories); } if (property_exists($productData, 'websites') && is_array($productData->websites)) { foreach ($productData->websites as &$website) { if (is_string($website)) { try { $website = Mage::app()->getWebsite($website)->getId(); } catch (Exception $e) { } } } $product->setWebsiteIds($productData->websites); } if (Mage::app()->isSingleStoreMode()) { $product->setWebsiteIds(array(Mage::app()->getStore(true)->getWebsite()->getId())); } if (property_exists($productData, 'stock_data')) { $_stockData = array(); foreach ($productData->stock_data as $key => $value) { $_stockData[$key] = $value; } $product->setStockData($_stockData); } }
function createConfigurable($sku, $name, $optionId, $simpleProducts, $price, $brandId, $ageGroupId, $dimensions, $numPlayersId, $gameTime, $minNumPlayers, $shortDesc, $desc, $image1, $image2, $image3, $categoryId, $subCategoryId, $weight, $numPieces) { try { $product = new Mage_Catalog_Model_Product(); // Build the product $product->setSku($sku); $product->setAttributeSetId('13'); # 9 is for default $product->setTypeId('configurable'); $product->setName($name); $product->setCategoryIds(array(25)); # some cat id's, $product->setWebsiteIDs(array(1)); # Website id, 1 is default $product->setDescription($desc); $product->setShortDescription($shortDesc); $product->setPrice($price); # Set some price //Default Magento attribute //$product->setWeight($weight); echo '<br>' . $weight . '<br>'; //$product->setWeight(0.2000); $product->setWeight(4.0); $product->setVisibility(Mage_Catalog_Model_Product_Visibility::VISIBILITY_BOTH); $product->setStatus(1); $product->setTaxClassId(0); # default tax class $product->setStockData(array('is_in_stock' => 1, 'qty' => 99999)); $product->setCreatedAt(strtotime('now')); $product->setCategoryIds(array($categoryId, $subCategoryId)); $product->setMetaDescription($shortDesc); $mediaAttribute = array('thumbnail', 'small_image', 'image'); $imagePath1 = './media/import/' . $image1; $imagePath2 = './media/import/' . $image2; $imagePath3 = './media/import/' . $image3; //echo $imagePath1.'<br>'.$imagePath2.'<br>'.$imagePath3;die(); if (!file_exists($imagePath1) && $imagePath1 != '') { if (file_exists('./media/import.bak/' . $image1)) { exec('cp media/import.bak/' . $image1 . ' media/import'); $product->addImageToMediaGallery('./media/import/' . $image1, $mediaAttribute, true, false); } else { echo 'ERROR: file ' . $imagePath1 . ' does not exist. SKU is: ' . $sku; } } elseif ($imagePath1 != '') { $product->addImageToMediaGallery($imagePath1, $mediaAttribute, true, false); } if (!file_exists($imagePath2) && $imagePath2 != '') { if (file_exists('./media/import.bak/' . $image2)) { exec('cp media/import.bak/' . $image2 . ' media/import'); $product->addImageToMediaGallery('./media/import/' . $image2, null, true, false); } else { echo 'ERROR: file ' . $imagePath2 . ' does not exist. SKU is: ' . $sku; } } elseif ($imagePath2 != '') { $product->addImageToMediaGallery($imagePath2, null, true, false); } if (!file_exists($imagePath3) && $imagePath3 != '') { if (file_exists('./media/import.bak/' . $image3)) { exec('cp media/import.bak/' . $image3 . ' media/import'); $product->addImageToMediaGallery('./media/import/' . $image3, null, true, false); } else { echo 'ERROR: file ' . $imagePath3 . ' does not exist. SKU is: ' . $sku; } } elseif ($imagePath3 != '') { $product->addImageToMediaGallery($imagePath3, null, true, false); } //custom attribute for gift wrapping } catch (Exception $exMain) { echo 'configurable main exception:<br><br>' . $exMain . '<br><br>'; } try { $product->save(); $_product = Mage::getModel('catalog/product')->loadByAttribute('sku', $sku); $configId = $_product->getId(); $resource = Mage::getSingleton('core/resource'); $readCon = $resource->getConnection('core_read'); $writeCon = $resource->getConnection('core_write'); $table = 'catalog_product_super_attribute'; if (!$writeCon) { die('Could not connect: ' . mysql_error()); } //set gift wrap attribute: super attribute id, configurable product id (auto-increment), normal attribute id, position (always 0 for one configurable option) $query = 'insert into catalog_product_super_attribute (product_id, attribute_id) values (' . $configId . ', 142 )'; $writeCon->query($query); //i think this has to be set to create the associated products: configurable product id, associated simple product id ...repeat as necessary (twice in this case) $simpleId1 = $simpleProducts[0]->getId(); $simpleId2 = $simpleProducts[1]->getId(); $query = 'insert into catalog_product_relation values (' . $configId . ', ' . $simpleId1 . ' )'; $writeCon->query($query); $query = 'insert into catalog_product_relation values (' . $configId . ', ' . $simpleId2 . ' )'; $writeCon->query($query); //set the link id between the configurable product and the associated simple product: link id, simple product, configurable product $query = 'insert into catalog_product_super_link (product_id, parent_id) values (' . $simpleId1 . ', ' . $configId . ')'; $writeCon->query($query); $query = 'insert into catalog_product_super_link (product_id, parent_id) values (' . $simpleId2 . ', ' . $configId . ')'; $writeCon->query($query); //get the superattribute id for the next write query $query = 'select product_super_attribute_id from catalog_product_super_attribute where product_id=' . $configId; $superAttrId = $readCon->fetchOne($query); $query = 'insert into catalog_product_super_attribute_pricing (product_super_attribute_id, value_index, is_percent, pricing_value, website_id) values (' . $superAttrId . ', 91, 0, 5.000, 0)'; $writeCon->query($query); $_product->setData('brand', $brandId); $_product->setData('age_group', $ageGroupId); $_product->setData('dimensions', $dimensions); $_product->setData('num_players', $numPlayersId); $_product->setData('game_time', $gameTime); $_product->setData('min_num_players', $minNumPlayers); $_product->setData('num_pieces', $numPieces); //set cross sell products //$crossProduct = Mage::getModel('catalog/product')->load //$_product->setCrossSellLinkData( $_product->save(); } catch (Exception $ex) { echo 'configurable save exception:<br><br>' . $ex; } /*$row1 = 1; $handle1 = fopen("product_import_category_test.csv", "r"); while (($data1 = fgetcsv($handle1, 2000, ",")) !== FALSE) { $num1 = count($data1); $row1++; if($row1 != 2) { $sku = $data1[14]; echo $data1[19].'<br>'; $baseProduct = Mage::getModel('catalog/product')->loadByAttribute('sku',$sku); $crossSellSkus = array(); $crossSellSkus = explode(',',$data1[19]); var_dump($baseProduct);echo '<br>';var_dump($crossSellSkus);die(); } }*/ }
/** * Set additional data before product saved * * @param Mage_Catalog_Model_Product $product * @param array $productData * @return object */ protected function _prepareDataForSave($product, $productData) { if (isset($productData['categories']) && is_array($productData['categories'])) { $product->setCategoryIds($productData['categories']); } if (isset($productData['websites']) && is_array($productData['websites'])) { foreach ($productData['websites'] as &$website) { if (is_string($website)) { try { $website = Mage::app()->getWebsite($website)->getId(); } catch (Exception $e) { } } } $product->setWebsiteIds($productData['websites']); } if (isset($productData['stock_data']) && is_array($productData['stock_data'])) { $product->setStockData($productData['stock_data']); } }
protected function _createProducts($productsToCreateCount) { $skus = array(); $initialProductCount = $this->_getProductCount(); $randValues = array('general_name' => 'crife_Simple Product Required', 'general_sku' => 'wkdov_simple_sku_req_zuknf'); // Set an Admin Session Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID); Mage::getSingleton('core/session', array('name' => 'adminhtml')); $userModel = Mage::getModel('admin/user'); $userModel->setUserId(1); $session = Mage::getSingleton('admin/session'); $session->setUser($userModel); $session->setAcl(Mage::getResourceModel('admin/acl')->loadAcl()); for ($c = 0; $c < $productsToCreateCount; $c++) { array_walk_recursive($randValues, array($this, 'randomizeData'), array('general_name', 'general_sku')); $newProduct = new Mage_Catalog_Model_Product(); $newProduct->setTypeId('simple'); $newProduct->setCategoryIds(array(42)); $newProduct->setWebsiteIDs(array(1)); $newProduct->setWeight('1.000'); $newProduct->setVisibility(Mage_Catalog_Model_Product_Visibility::VISIBILITY_BOTH); $newProduct->setStatus(1); $newProduct->setSku($randValues['general_sku']); $newProduct->setTaxClassId(0); $newProduct->setStoreId(Mage::app()->getStore()->getId()); $newProduct->setAttributeSetId(9); $newProduct->setName($randValues['general_name']); $newProduct->setDescription('Description'); $newProduct->setShortDescription('Short Description'); $newProduct->setPrice(9.99); $newProduct->setStockData(array('is_in_stock' => 1, 'qty' => 99999)); $newProduct->setCreatedAt(strtotime('now')); $newProduct->save(); $skus[] = $randValues['general_sku']; } $finalProductCount = $this->_getProductCount(); $this->assertEquals($productsToCreateCount, $finalProductCount - $initialProductCount); return $skus; }