/// <summary> /// Generates variants asynchronous. /// </summary> /// <param name="parameter">AsyncControl parameters</param> private void GenerateAndSave(object parameter) { try { // Regenerate already existing variants if (mRegenerateVariants) { ProductAttributeSet productAttributeSet = new ProductAttributeSet(CategorySelector.SelectedCategories.Values.Where(x => x > VariantOptionInfo.NewOption)); List <ProductVariant> existingVariants = VariantHelper.AddNewCategoriesToVariantsOfProduct(ProductID, productAttributeSet); // Use special action contexts to turn off unnecessary actions using (ECommerceActionContext eCommerceContext = new ECommerceActionContext()) { eCommerceContext.TouchParent = false; eCommerceContext.SetLowestPriceToParent = false; existingVariants.ForEach(pVariant => { AddLog(HTMLHelper.HTMLEncode(ResHelper.LocalizeString(pVariant.Variant.SKUName)) + GetString("com.variants.isredefined")); VariantHelper.SetProductVariant(pVariant); }); } // Save variant to update parent SKULastModified a SKUPrice properties var lastVariant = existingVariants.LastOrDefault(); if (lastVariant != null) { lastVariant.Variant.Generalized.SetObject(); } } // Generate non-existing variants ProductVariant productVariant = null; // Use special action contexts to turn off unnecessary actions using (ECommerceActionContext eCommerceContext = new ECommerceActionContext()) { eCommerceContext.TouchParent = false; eCommerceContext.SetLowestPriceToParent = false; foreach (DataRow row in mVariantsToGenerate) { IEnumerable <int> options = GetAllOptions(row, NewCategories.Union(ExistingCategories)); productVariant = new ProductVariant(ProductID, new ProductAttributeSet(options)); AddLog(HTMLHelper.HTMLEncode(ResHelper.LocalizeString(productVariant.Variant.SKUName)) + GetString("com.variants.isdefined")); productVariant.Set(); } } // Save variant to update parent SKULastModified a SKUPrice properties if (productVariant != null) { productVariant.Variant.Generalized.SetObject(); } } catch (Exception ex) { CurrentError = GetString("com.variant.definerror"); EventLogProvider.LogException("Variant definition", "DEFINEVARIANT", ex); } }
/// <summary> /// Generates variants asynchronous. /// </summary> /// <param name="parameter">AsyncControl parameters</param> private void GenerateAndSave(object parameter) { try { // Regenerate already existing variants if (mRegenerateVariants) { ProductAttributeSet productAttributeSet = new ProductAttributeSet(CategorySelector.SelectedCategories.Values.Where(x => x > VariantOptionInfo.NewOption)); List<ProductVariant> existingVariants = VariantHelper.AddNewCategoriesToVariantsOfProduct(ProductID, productAttributeSet); // Use special action contexts to turn off unnecessary actions using (ECommerceActionContext eCommerceContext = new ECommerceActionContext()) { eCommerceContext.TouchParent = false; eCommerceContext.SetLowestPriceToParent = false; eCommerceContext.AssignDefaultTaxesToProducts = false; existingVariants.ForEach(pVariant => { AddLog(HTMLHelper.HTMLEncode(ResHelper.LocalizeString(pVariant.Variant.SKUName)) + GetString("com.variants.isredefined")); VariantHelper.SetProductVariant(pVariant); }); } // Save variant to update parent SKULastModified a SKUPrice properties var lastVariant = existingVariants.LastOrDefault(); if (lastVariant != null) { lastVariant.Variant.Generalized.SetObject(); } } // Generate non-existing variants ProductVariant productVariant = null; // Use special action contexts to turn off unnecessary actions using (ECommerceActionContext eCommerceContext = new ECommerceActionContext()) { eCommerceContext.TouchParent = false; eCommerceContext.SetLowestPriceToParent = false; eCommerceContext.AssignDefaultTaxesToProducts = false; foreach (DataRow row in mVariantsToGenerate) { IEnumerable<int> options = GetAllOptions(row, NewCategories.Union(ExistingCategories)); productVariant = new ProductVariant(ProductID, new ProductAttributeSet(options)); AddLog(HTMLHelper.HTMLEncode(ResHelper.LocalizeString(productVariant.Variant.SKUName)) + GetString("com.variants.isdefined")); productVariant.Set(); } } // Save variant to update parent SKULastModified a SKUPrice properties if (productVariant != null) { productVariant.Variant.Generalized.SetObject(); } } catch (Exception ex) { CurrentError = GetString("com.variant.definerror"); EventLogProvider.LogException("Variant definition", "DEFINEVARIANT", ex); } }