Ejemplo n.º 1
0
 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);
 }
Ejemplo n.º 3
0
 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;
             }
         }
     }
 }