public static void CreateProductVariation(Guid productId, Guid attributeValueId, string sku, decimal additionalCharge, bool isActive)
{
CatalogManager catalogManager = new CatalogManager();
Product product = catalogManager.GetProduct(productId);
if (product == null)
{
return; //Product does not exist.
}
ProductAttributeValue attributeValue = catalogManager.GetProductAttributeValue(attributeValueId);
if (attributeValue == null)
{
return; //Attribute value does not exist.
}
ProductVariation variation = catalogManager.CreateProductVariation();
//Set the properties
variation.AdditionalPrice = additionalCharge;
variation.Parent = product;
variation.Sku = sku;
variation.IsActive = isActive;
//Set the Variant property
AttributeValuePair attributeValuePair = new AttributeValuePair();
attributeValuePair.AttributeValueId = attributeValue.Id;
attributeValuePair.AttributeId = attributeValue.Parent.Id;
JavaScriptSerializer serializer = new JavaScriptSerializer();
string attributeValuePairJson = serializer.Serialize(attributeValuePair);
variation.Variant = attributeValuePairJson;
//Create the product variation detail
ProductVariationDetail detail = catalogManager.CreateProductVariationDetail();
detail.ProductAttributeParent = attributeValue.Parent;
detail.ProductAttributeValueParent = attributeValue;
detail.ProductVariationParent = variation;
detail.ProductVariationDetailParentId = Guid.Empty;
product.ProductVariations.Add(variation);
catalogManager.SaveChanges();
}