/** * Initialize data for configurable product * * @param Helper $subject * @param ProductInterface $product * @return ProductInterface * @throws \InvalidArgumentException * * @SuppressWarnings(PHPMD.UnusedFormalParameter) */ public function afterInitialize(Helper $subject, ProductInterface $product) { $attributes = $this->request->getParam('attributes'); $productData = $this->request->getPost('product', []); if ($product->getTypeId() !== ConfigurableProduct::TYPE_CODE || empty($attributes)) { return $product; } $setId = $this->request->getPost('new-variations-attribute-set-id'); if ($setId) { $product->setAttributeSetId($setId); } $extensionAttributes = $product->getExtensionAttributes(); $product->setNewVariationsAttributeSetId($setId); $configurableOptions = []; if (!empty($productData['configurable_attributes_data'])) { $configurableOptions = $this->optionsFactory->create((array) $productData['configurable_attributes_data']); } $extensionAttributes->setConfigurableProductOptions($configurableOptions); $this->setLinkedProducts($product, $extensionAttributes); $product->setCanSaveConfigurableAttributes((bool) $this->request->getPost('affect_configurable_product_attributes')); $product->setExtensionAttributes($extensionAttributes); return $product; }