[-] BO: Fix many bug on combination generator

This commit is contained in:
rGaillard committed 2012-09-07 16:24:46 +00:00
1 parent 947c61d0d8
commit 9b89d1f4ce
2 files changed
+41 -2

No files matched your search

+39
View File
@@ -1060,6 +1060,42 @@ class ProductCore extends ObjectModel
return $id_product_attribute; return $id_product_attribute;
} }
public function generateMultipleCombinations($combinations, $attributes)
{
$attributes_list = array();
$res = true;
foreach ($combinations as $key => $combination)
{
$id_combination = (int)$this->productAttributeExists($attributes[$key], false, null, true, true);
$obj = new Combination($id_combination);
if ($id_combination)
{
$obj->minimal_quantity = 1;
$obj->available_date = '0000-00-00';
}
foreach ($combination as $field => $value)
$obj->$field = $value;
$obj->save();
if (!$id_combination)
{
$attribute_list = array();
foreach ($attributes[$key] as $id_attribute)
$attribute_list[] = array(
'id_product_attribute' => (int)$obj->id,
'id_attribute' => (int)$id_attribute
);
$res &= Db::getInstance()->insert('product_attribute_combination', $attribute_list);
}
}
return $res;
}
/** /**
* @param integer $quantity DEPRECATED * @param integer $quantity DEPRECATED
* @param string $supplier_reference DEPRECATED * @param string $supplier_reference DEPRECATED
@@ -1089,6 +1125,7 @@ class ProductCore extends ObjectModel
public function addProductAttributeMultiple($attributes, $set_default = true) public function addProductAttributeMultiple($attributes, $set_default = true)
{ {
Tools::displayAsDeprecated();
$return = array(); $return = array();
$default_value = 1; $default_value = 1;
foreach ($attributes as &$attribute) foreach ($attributes as &$attribute)
@@ -1512,6 +1549,7 @@ class ProductCore extends ObjectModel
public function addAttributeCombinationMultiple($id_attributes, $combinations) public function addAttributeCombinationMultiple($id_attributes, $combinations)
{ {
Tools::displayAsDeprecated();
$attributes_list = array(); $attributes_list = array();
foreach ($id_attributes as $nb => $id_product_attribute) foreach ($id_attributes as $nb => $id_product_attribute)
if (isset($combinations[$nb])) if (isset($combinations[$nb]))
@@ -1524,6 +1562,7 @@ class ProductCore extends ObjectModel
return Db::getInstance()->insert('product_attribute_combination', $attributes_list); return Db::getInstance()->insert('product_attribute_combination', $attributes_list);
} }
/** /**
* Delete a product attributes combination * Delete a product attributes combination
* *
@@ -36,6 +36,7 @@ class AdminAttributeGeneratorControllerCore extends AdminController
{ {
$this->table = 'product_attribute'; $this->table = 'product_attribute';
$this->className = 'Product'; $this->className = 'Product';
$this->multishop_context_group = false;
parent::__construct(); parent::__construct();
} }
@@ -118,8 +119,7 @@ class AdminAttributeGeneratorControllerCore extends AdminController
} }
$this->product->deleteProductAttributes(); $this->product->deleteProductAttributes();
$res = $this->product->addProductAttributeMultiple($values); $this->product->generateMultipleCombinations($values, $this->combinations);
$this->product->addAttributeCombinationMultiple($res, $this->combinations);
// @since 1.5.0 // @since 1.5.0
if ($this->product->depends_on_stock == 0) if ($this->product->depends_on_stock == 0)