/** * Set additional data before product saved * * @param Mage_Catalog_Model_Product $product * @param array $productData * @return object */ protected function _prepareDataForSave($product, $productData) { parent::_prepareDataForSave($product, $productData); //Mage::log('Magja prepareDataForSave called'); if (isset($productData['configurable_products_data']) && is_array($productData['configurable_products_data'])) { Mage::log('Setting configurable_products_data ' . var_export($productData['configurable_products_data'], true)); $product->setConfigurableProductsData($productData['configurable_products_data']); } /* * Check for configurable products array passed through API Call */ if (isset($productData['configurable_attributes_data']) && is_string($productData['configurable_attributes_data'])) { $productData['configurable_attributes_data'] = json_decode($productData['configurable_attributes_data'], true); } if (isset($productData['configurable_attributes_data']) && is_array($productData['configurable_attributes_data'])) { Mage::log('Setting configurable_attributes_data ' . var_export($productData['configurable_attributes_data'], true)); 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(1); } }
protected function _prepareDataForSave($product, $productData) { /* @var $product Mage_Catalog_Model_Product */ if (isset($productData['categories'])) { $categoryIds = Mage::helper('springboardretail_api/catalog_product')->getCategoryIdsByNames((array) $productData['categories']); if (!empty($categoryIds)) { $productData['categories'] = array_unique($categoryIds); } } if (isset($productData['website_ids'])) { $websiteIds = $productData['website_ids']; foreach ($websiteIds as $i => $websiteId) { if (!is_numeric($websiteId)) { $website = Mage::app()->getWebsite($websiteId); if ($website->getId()) { $websiteIds[$i] = $website->getId(); } } } $product->setWebsiteIds($websiteIds); unset($productData['website_ids']); } foreach ($productData as $code => $value) { $productData[$code] = Mage::helper('springboardretail_api/catalog_product')->getOptionKeyByLabel($code, $value); } parent::_prepareDataForSave($product, $productData); if (isset($productData['associated_skus'])) { $simpleSkus = $productData['associated_skus']; $priceChanges = isset($productData['price_changes']) ? $productData['price_changes'] : array(); $configurableAttributes = isset($productData['configurable_attributes']) ? $productData['configurable_attributes'] : array(); Mage::helper('springboardretail_api/catalog_product')->associateProducts($product, $simpleSkus, $priceChanges, $configurableAttributes); } }
protected function _prepareDataForSave($product, $productData) { /* @var $product Mage_Catalog_Model_Product */ foreach ($productData as $code => $value) { $productData[$code] = $this->getOptionKeyByLabel($code, $value); } parent::_prepareDataForSave($product, $productData); if (isset($productData['associated_product_ids'])) { $simpleProductIds = $productData['associated_product_ids']; $priceChanges = isset($productData['price_changes']) ? $productData['price_changes'] : array(); $configurableAttributes = isset($productData['configurable_attributes']) ? $productData['configurable_attributes'] : array(); $this->associateProducts($product, $simpleProductIds, $priceChanges, $configurableAttributes); } }
public function saveAction() { $sku_list = $this->getRequest()->getParam('sku'); foreach ($sku_list as $sku) { $model = Mage::getModel('import/product'); $item = $model->getBySku($sku); $api = new Mage_Catalog_Model_Product_Api(); $attribute_api = new Mage_Catalog_Model_Product_Attribute_Set_Api(); $attribute_sets = $attribute_api->items(); $productData = array(); $productData['website_ids'] = array(1); $productData['categories'] = array($this->getRequest()->getParam('category')); $productData['status'] = 1; $productData['name'] = $item->title; $productData['description'] = $item->description; $productData['short_description'] = $item->short_description; $productData['price'] = $item->suggested_price; $productData['msrp'] = $item->suggested_price; $productData['weight'] = $item->weight; $productData['tax_class_id'] = 0; $new_product_id = $api->create('simple', $attribute_sets[0]['set_id'], $item->sku, $productData); $stockItem = Mage::getModel('cataloginventory/stock_item'); $stockItem->loadByProduct($new_product_id); $stockItem->setData('use_config_manage_stock', 1); $stockItem->setData('qty', $item->stock); $stockItem->setData('min_qty', 0); $stockItem->setData('use_config_min_qty', 1); $stockItem->setData('min_sale_qty', 0); $stockItem->setData('use_config_max_sale_qty', 1); $stockItem->setData('max_sale_qty', 0); $stockItem->setData('use_config_max_sale_qty', 1); $stockItem->setData('is_qty_decimal', 0); $stockItem->setData('backorders', 0); $stockItem->setData('notify_stock_qty', 0); $stockItem->setData('is_in_stock', 1); $stockItem->setData('tax_class_id', 0); $stockItem->save(); $image_type = substr(strrchr($item->image, "."), 1); $filename = "tmp." . $image_type; $path = Mage::getBaseDir('media') . DS . 'import' . DS; if (!is_dir($path)) { mkdir($path); } $fullpath = $path . $filename; $ch = curl_init($item->image); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1); $raw = curl_exec($ch); curl_close($ch); if (file_exists($fullpath)) { unlink($fullpath); } $fp = fopen($fullpath, 'x'); fwrite($fp, $raw); fclose($fp); $product = Mage::getModel('catalog/product')->load($new_product_id); $product->setMediaGallery(array('images' => array(), 'values' => array())); $product->addImageToMediaGallery($fullpath, array('image', 'small_image', 'thumbnail'), false, false); Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID); $product->save(); } $this->_redirect('*/adminhtml_list'); }
public function addproductAction() { $product = Mage::getModel('catalog/product'); $post = $this->getRequest()->getPost(); if ($post) { $api = new Mage_Catalog_Model_Product_Api(); $attribute_api = new Mage_Catalog_Model_Product_Attribute_Set_Api(); $attribute_sets = $attribute_api->items(); // Product required params $v = $this->_getSession()->getVendor(); $sku = Mage::helper('udropship')->getRegionCode($v->getRegionId()) . '-' . $v->getId() . '-' . Mage::helper('urls')->slugify($post['name']); $sku = Mage::helper('udropship')->checkSku($sku); $productData = array(); $productData['website_ids'] = array(1); $productData['status'] = 1; $productData['name'] = utf8_encode($post['name']); $productData['description'] = utf8_encode($post['short_description']); $productData['short_description'] = utf8_encode($post['short_description']); $productData['weight'] = 10.0; $productData['tax_class_id'] = 2; $new_product_id = $api->create('simple', $attribute_sets[0]['set_id'], $sku, $productData); $stockItem = Mage::getModel('cataloginventory/stock_item'); $stockItem->loadByProduct($new_product_id); $stockItem->setData('use_config_manage_stock', 1); $stockItem->setData('qty', 10000); $stockItem->setData('min_qty', 0); $stockItem->setData('use_config_min_qty', 1); $stockItem->setData('min_sale_qty', 0); $stockItem->setData('use_config_max_sale_qty', 1); $stockItem->setData('max_sale_qty', 0); $stockItem->setData('use_config_max_sale_qty', 1); $stockItem->setData('is_qty_decimal', 0); $stockItem->setData('backorders', 0); $stockItem->setData('notify_stock_qty', 0); $stockItem->setData('is_in_stock', 1); $stockItem->setData('tax_class_id', 0); $stockItem->save(); $product = Mage::getModel('catalog/product')->load($new_product_id); // Image if (!empty($post['imageFile'])) { if ($tProduct = $this->getRequest()->getParam('temp_product', false)) { // Image $ext = '.' . pathinfo(parse_url($post['imageFile'], PHP_URL_PATH), PATHINFO_EXTENSION); $filename = md5(mt_rand(0, 1111111)) . $ext; // Create name $imgPath = Mage::getBaseDir() . '/media/vendorimageupload/' . $filename; file_put_contents($imgPath, file_get_contents($post['imageFile'])); // Move image from facebook to local server $product->setMediaGallery(array('images' => array(), 'values' => array())); $product->addImageToMediaGallery($imgPath, array('image', 'small_image', 'thumbnail'), true, false); // Add to product gallery @unlink($imgPath); // Remove file that was added to magento } else { $imgPath = Mage::getBaseDir() . $post['imageFile']; $product->setMediaGallery(array('images' => array(), 'values' => array())); $product->addImageToMediaGallery(Mage::getBaseDir() . $post['imageFile'], array('image', 'small_image', 'thumbnail'), true, false); @unlink($imgPath); } } // Product data $product->setFlowerType(implode(',', $post['flower_type'])); $product->setStyle(implode(',', $post['style'])); $product->setSize(implode(',', $post['size'])); $product->setOccasions(implode(',', $post['occasions'])); $product->setColor(implode(',', $post['color'])); $product->setUdropshipVendor($this->_getSession()->getId()); $product->setPrice(number_format($post['price'], 2, null, '')); $cat = Mage::helper('udropship')->getCategoryByVendor($this->_getSession()->getId()); if ($cat) { $product->assignAttrCategories($cat->getId()); } // Mark product as invisible if it's 'Other goods' if (in_array(55, $product->getCategoryIds())) { $product->setVisibility(1); } else { $product->setVisibility(4); } Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID); try { $product->save(); if ($tProduct = $this->getRequest()->getParam('temp_product', false)) { Mage::getSingleton('core/resource')->getConnection('core_write')->query('DELETE FROM udropship_temp_product WHERE id=' . $tProduct); } } catch (Exception $e) { } Mage::helper('custom')->updateZipcodeIndex($product->getId(), $this->_getSession()->getVendor()->getLimitZipcode()); // Update vendor qty Mage::helper('udropship/catalog')->massUpdateStock(true, true); // Add success message $this->_getSession()->addSuccess('Product ' . $product->getName() . ' was added'); // Redirect $this->_redirect('udropship/vendor/manageproducts'); } // Thing required for standalone page display $this->_setTheme(); $this->loadLayout(); $this->getLayout()->getBlock('addproduct')->setProduct($product); $this->renderLayout(); }
$stockItem->setData('qty', (int) trim($data[4])); $stockItem->save(); /*****Associate simple product into Group product******/ $products_links = Mage::getModel('catalog/product_link_api'); $products_links->assign("grouped", $grouped_product_id, $id); /**************************************************/ echo "SKU: " . $simple_sku . " Stock has been UPDATED. <br />"; } catch (Exception $ex) { //Handle the error echo 'Caught exception: Stock Update Error: SKU: ' . $simple_sku . ":", $ex->getMessage(), "\n"; } } } else { //echo "SKU does not exist"; /*******insert simple product into databse*******/ $api = new Mage_Catalog_Model_Product_Api(); $attribute_api = new Mage_Catalog_Model_Product_Attribute_Set_Api(); $attribute_sets = $attribute_api->items(); $productData = array(); $productData['website_ids'] = array(1); // $productData['categories'] = array($new_subcat_id); $productData['status'] = 1; $productData['visibility'] = 1; //not visible individualy $productData['name'] = utf8_encode(trim($data[1])); $productData['description'] = utf8_encode($data[15]); $productData['short_description'] = utf8_encode($data[16]); $productData['price'] = $price; $productData['weight'] = 1.0; $productData['tax_class_id'] = 2; $productData['product_collection'] = $product_collection;
public function addBatchProduct($data) { // Required keys $requiredData = array('imgSrc', 'productName', 'productPrice'); // Get needed APIs instances $api = new Mage_Catalog_Model_Product_Api(); $attribute_api = new Mage_Catalog_Model_Product_Attribute_Set_Api(); $attribute_sets = $attribute_api->items(); // Check if data was passed in correctly foreach ($requiredData as $req) { if (!isset($data[$req]) || empty($data[$req])) { throw new Exception('Please make sure that all keys of passed data array exist and not empty:' . implode(',', $requiredData)); } } // Product required params $sku = strtoupper(preg_replace('/\\W/', '-', $data['productName'])); $productData = array(); $productData['website_ids'] = array(1); $productData['status'] = 1; $productData['name'] = utf8_encode($data['productName']); $productData['description'] = ''; $productData['short_description'] = ''; $productData['weight'] = 10.0; $productData['tax_class_id'] = 2; $new_product_id = $api->create('simple', $attribute_sets[0]['set_id'], $sku, $productData); $stockItem = Mage::getModel('cataloginventory/stock_item'); $stockItem->loadByProduct($new_product_id); $stockItem->setData('use_config_manage_stock', 1); $stockItem->setData('qty', 10000); $stockItem->setData('min_qty', 0); $stockItem->setData('use_config_min_qty', 1); $stockItem->setData('min_sale_qty', 0); $stockItem->setData('use_config_max_sale_qty', 1); $stockItem->setData('max_sale_qty', 0); $stockItem->setData('use_config_max_sale_qty', 1); $stockItem->setData('is_qty_decimal', 0); $stockItem->setData('backorders', 0); $stockItem->setData('notify_stock_qty', 0); $stockItem->setData('is_in_stock', 1); $stockItem->setData('tax_class_id', 0); $stockItem->save(); $product = Mage::getModel('catalog/product')->load($new_product_id); // Image $ext = '.' . pathinfo(parse_url($data['imgSrc'], PHP_URL_PATH), PATHINFO_EXTENSION); $filename = md5(mt_rand(0, 1111111)) . $ext; // Create name $imgPath = Mage::getBaseDir() . '/media/vendorimageupload/' . $filename; file_put_contents($imgPath, file_get_contents($data['imgSrc'])); // Move image from facebook to local server $product->setMediaGallery(array('images' => array(), 'values' => array())); $product->addImageToMediaGallery($imgPath, array('image', 'small_image', 'thumbnail'), true, false); // Add to product gallery @unlink($imgPath); // Remove file that was added to magento // Product data $product->setUdropshipVendor(Mage::getSingleton('udropship/session')->getId()); $product->setPrice(number_format($data['productPrice'], 2, null, '')); $cat = Mage::helper('udropship')->getCategoryByVendor(Mage::getSingleton('udropship/session')->getId()); if ($cat) { $product->setCategoryIds(array($cat->getId())); } Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID); $product->save(); }