/// <summary> /// Creates the line item. /// </summary> /// <param name="item">The entry.</param> /// <param name="parent">Parent item</param> /// <param name="quantity">The quantity.</param> /// <returns>LineItem.</returns> private LineItem CreateLineItem(Item item, Item parent, decimal quantity) { var lineItem = new LineItem(); if (parent != null) { lineItem.DisplayName = item.DisplayName(String.Format("{0}: {1}", parent.Name, item.Name)); lineItem.ParentCatalogItemId = parent.ItemId; //Build options var relations = CatalogClient.GetItemRelations(parent.ItemId); var relationGroups = relations.Select(rel => rel.GroupName).Distinct(); foreach (var prop in item.ItemPropertyValues.LocalizedProperties().Where(p => relationGroups.Contains(p.Name))) { var option = new LineItemOption { LineItemId = item.ItemId, OptionName = prop.Name, OptionValue = prop.ToString() }; lineItem.Options.Add(option); } } else { lineItem.DisplayName = item.DisplayName(); lineItem.ParentCatalogItemId = String.Empty; } lineItem.CatalogItemId = item.ItemId; lineItem.CatalogItemCode = item.Code; var price = PriceListClient.GetLowestPrice(item.ItemId, quantity, false); if (price != null) { lineItem.ListPrice = price.Sale ?? price.List; lineItem.PlacedPrice = price.Sale ?? price.List; lineItem.ExtendedPrice = lineItem.PlacedPrice * quantity; } lineItem.MaxQuantity = item.MaxQuantity; lineItem.MinQuantity = item.MinQuantity; lineItem.Quantity = quantity; lineItem.Weight = item.Weight; lineItem.Catalog = CustomerSession.CatalogId; lineItem.FulfillmentCenterId = StoreHelper.StoreClient.GetCurrentStore().FulfillmentCenterId; //lineItem.CatalogOutline = CatalogOutlineBuilder.BuildCategoryOutline(CatalogClient.CatalogRepository, CustomerSession.CatalogId, item); lineItem.CatalogOutline = CatalogOutlineBuilder.BuildCategoryOutline(CustomerSessionService.CustomerSession.CatalogId, item.ItemId).ToString(); return(lineItem); }
public LineItemBuilder Option(LineItemOption option) { _lineItem.Options.Add(option); return(this); }