private function importProductVariationValue(Product $product, $index, $name) { $parent = $product->parent->get(); $type = $this->getVariationTypeByIndex($parent, $index); if (!$type->getID()) { $type = $this->importVariationType($parent, $index, ''); } $f = new ARSelectFilter(); $f->mergeCondition(new EqualsCond(MultiLingualObject::getLangSearchHandle(new ARFieldHandle('ProductVariation', 'name'), $this->application->getDefaultLanguageCode()), $name)); $values = $type->getRelatedRecordSet('ProductVariation', $f); if ($values->size()) { $variation = $values->get(0); } else { $variation = ProductVariation::getNewInstance($type); $variation->setValueByLang('name', null, $name); $variation->save(); } if (!$product->getID()) { $product->save(); } $f = new ARDeleteFilter(new EqualsCond(new ARFieldHandle('ProductVariation', 'typeID'), $type->getID())); $product->deleteRelatedRecordSet('ProductVariationValue', $f, array('ProductVariation')); ProductVariationValue::getNewInstance($product, $variation)->save(); }