private static string ReplaceLineVars(string line, TicketItem ticketItem) { string result = line; if (ticketItem != null) { result = FormatData(result, Resources.TF_LineItemQuantity, () => ticketItem.Quantity.ToString("#,#0.##")); result = FormatData(result, Resources.TF_LineItemName, () => ticketItem.MenuItemName + ticketItem.GetPortionDesc()); result = FormatData(result, Resources.TF_LineItemPrice, () => ticketItem.Price.ToString("#,#0.00")); result = FormatData(result, Resources.TF_LineItemTotal, () => ticketItem.GetItemPrice().ToString("#,#0.00")); result = FormatData(result, Resources.TF_LineItemTotalAndQuantity, () => ticketItem.GetItemValue().ToString("#,#0.00")); result = FormatData(result, Resources.TF_LineItemPriceCents, () => (ticketItem.Price * 100).ToString("#,##")); result = FormatData(result, Resources.TF_LineItemTotalWithoutGifts, () => ticketItem.GetTotal().ToString("#,#0.00")); result = FormatData(result, Resources.TF_LineOrderNumber, () => ticketItem.OrderNumber.ToString()); result = FormatData(result, Resources.TF_LineGiftOrVoidReason, () => AppServices.MainDataContext.GetReason(ticketItem.ReasonId)); result = FormatData(result, "{MENU ITEM GROUP}", () => GetMenuItemGroup(ticketItem)); result = FormatData(result, "{MENU ITEM TAG}", () => GetMenuItemTag(ticketItem)); result = FormatData(result, "{PRICE TAG}", () => ticketItem.PriceTag); result = FormatData(result, "{ITEM TAG}", () => ticketItem.Tag); while (Regex.IsMatch(result, "{ITEM TAG:[^}]+}", RegexOptions.Singleline)) { var tags = ticketItem.Tag.Split('|'); var match = Regex.Match(result, "{ITEM TAG:([^}]+)}"); var tagName = match.Groups[0].Value; int index; int.TryParse(match.Groups[1].Value, out index); var value = tags.Count() > index ? tags[index].Trim() : ""; result = result.Replace(tagName, value); } if (result.Contains(Resources.TF_LineItemDetails.Substring(0, Resources.TF_LineItemDetails.Length - 1))) { string lineFormat = result; if (ticketItem.Properties.Count > 0) { string label = ""; foreach (var property in ticketItem.Properties) { var itemProperty = property; var lineValue = FormatData(lineFormat, Resources.TF_LineItemDetails, () => itemProperty.Name); lineValue = FormatData(lineValue, Resources.TF_LineItemDetailQuantity, () => itemProperty.Quantity.ToString("#.##")); lineValue = FormatData(lineValue, Resources.TF_LineItemDetailPrice, () => itemProperty.CalculateWithParentPrice ? "" : itemProperty.PropertyPrice.Amount.ToString("#,#0.00")); label += lineValue + "\r\n"; } result = "\r\n" + label; } else { result = ""; } } result = UpdateGlobalValues(result); result = result.Replace("<", "\r\n<"); } return(result); }