public function create($type, $set, $sku, $productData, $store = null) { // Allow attribute set name instead of id if (is_string($set) && !is_numeric($set)) { $set = Mage::helper('jr_api')->getAttributeSetIdByName($set); } //If the product exists with diffrent configurable attributes, drop and create a similar product if ($type == 'configurable' && isset($productData->additional_attributes['config_attributes'])) { $product = Mage::getModel('catalog/product')->loadByAttribute('sku', $sku); $configAttributes = explode(',', $productData->additional_attributes['config_attributes']); if ($product && !empty($configAttributes)) { $old_attrs = $product->getTypeInstance(true)->getConfigurableAttributesAsArray($product); if (count($old_attrs) != count($configAttributes) || $old_attrs[0]['attribute_code'] && $old_attrs[0]['attribute_code'] != $configAttributes[0]) { $productData->name = $product->getName(); $productData->description = $product->getDescription(); $productData->short_description = $product->getShortDescription(); $productData->weight = $product->getWeight(); $productData->price = $product->getPrice(); $productData->status = $product->getStatus(); $productData->additional_attributes = array('orig_name' => $product->getData('orig_name'), 'composition' => $product->getData('composition'), 'maintenance' => $product->getData('maintenance'), 'size_chart' => $product->getData('size_chart'), 'config_attributes' => $productData->additional_attributes['config_attributes']); $productData->media = array('image' => $product->getData('image')); $productData->categories = $product->getCategoryIds(); Mage::dispatchEvent('catalog_controller_product_delete', array('product' => $product)); $product->delete(); } } } return parent::create($type, $set, $sku, $productData, $store); }
public function create($type, $set, $sku, $productData, $store = null) { // Allow attribute set name instead of id if (is_string($set) && !is_numeric($set)) { $set = Mage::helper('springboard_retail_api')->getAttributeSetIdByName($set); } return parent::create($type, $set, $sku, $productData, $store); }
public function create($type, $set, $sku, $productData, $store = NULL) { $tries = 0; $maxtries = 3; for ($tries = 0; $tries < $maxtries; $tries++) { try { return parent::create($type, $set, $sku, $productData, $store); } catch (Exception $e) { if ($e->getMessage() == 'SQLSTATE[40001]: Serialization failure: 1213 Deadlock found when trying to get lock; try restarting transaction') { sleep(1); } else { throw $e; } } } }