public function processGenerate() { if (!is_array(Tools::getValue('options'))) { $this->errors[] = Tools::displayError('Please select at least one attribute.'); } else { $tab = array_values(Tools::getValue('options')); if (count($tab) && Validate::isLoadedObject($this->product)) { AdminAttributeGeneratorController::setAttributesImpacts($this->product->id, $tab); $this->combinations = array_values(AdminAttributeGeneratorController::createCombinations($tab)); $values = array_values(array_map(array($this, 'addAttribute'), $this->combinations)); // @since 1.5.0 if ($this->product->depends_on_stock == 0) { $attributes = Product::getProductAttributesIds($this->product->id, true); foreach ($attributes as $attribute) { StockAvailable::removeProductFromStockAvailable($this->product->id, $attribute['id_product_attribute'], Context::getContext()->shop); } } SpecificPriceRule::disableAnyApplication(); $this->product->deleteProductAttributes(); $this->product->generateMultipleCombinations($values, $this->combinations); // Reset cached default attribute for the product and get a new one Product::getDefaultAttribute($this->product->id, 0, true); Product::updateDefaultAttribute($this->product->id); // @since 1.5.0 if ($this->product->depends_on_stock == 0) { $attributes = Product::getProductAttributesIds($this->product->id, true); $quantity = (int) Tools::getValue('quantity'); foreach ($attributes as $attribute) { if (Shop::getContext() == Shop::CONTEXT_ALL) { $shops_list = Shop::getShops(); if (is_array($shops_list)) { foreach ($shops_list as $current_shop) { if (isset($current_shop['id_shop']) && (int) $current_shop['id_shop'] > 0) { StockAvailable::setQuantity($this->product->id, (int) $attribute['id_product_attribute'], $quantity, (int) $current_shop['id_shop']); } } } } else { StockAvailable::setQuantity($this->product->id, (int) $attribute['id_product_attribute'], $quantity); } } } else { StockAvailable::synchronize($this->product->id); } SpecificPriceRule::enableAnyApplication(); SpecificPriceRule::applyAllRules(array((int) $this->product->id)); Tools::redirectAdmin($this->context->link->getAdminLink('AdminProducts') . '&id_product=' . (int) Tools::getValue('id_product') . '&updateproduct&key_tab=Combinations&conf=4'); } else { $this->errors[] = Tools::displayError('Unable to initialize these parameters. A combination is missing or an object cannot be loaded.'); } } }
public function processGenerate() { if (!is_array(Tools::getValue('options'))) { $this->errors[] = Tools::displayError('Please choose at least 1 attribute.'); } else { $tab = array_values(Tools::getValue('options')); if (count($tab) && Validate::isLoadedObject($this->product)) { AdminAttributeGeneratorController::setAttributesImpacts($this->product->id, $tab); $this->combinations = array_values(AdminAttributeGeneratorController::createCombinations($tab)); $values = array_values(array_map(array($this, 'addAttribute'), $this->combinations)); // @since 1.5.0 if ($this->product->depends_on_stock == 0) { $attributes = Product::getProductAttributesIds($this->product->id, true); foreach ($attributes as $attribute) { StockAvailable::removeProductFromStockAvailable($this->product->id, $attribute['id_product_attribute'], Context::getContext()->shop); } } $this->product->deleteProductAttributes(); $this->product->generateMultipleCombinations($values, $this->combinations); // @since 1.5.0 if ($this->product->depends_on_stock == 0) { $attributes = Product::getProductAttributesIds($this->product->id, true); $quantity = (int) Tools::getValue('quantity'); foreach ($attributes as $attribute) { StockAvailable::setQuantity($this->product->id, $attribute['id_product_attribute'], $quantity); } } Tools::redirectAdmin($this->context->link->getAdminLink('AdminProducts') . '&id_product=' . (int) Tools::getValue('id_product') . '&addproduct&key_tab=Combinations&conf=4'); } else { $this->errors[] = Tools::displayError('Unable to initialize parameters, combination is missing or object cannot be loaded.'); } } }