private void UpdateSelector(Order order, decimal serviceAmount, decimal sum, bool taxIncluded) { var selector = Selectors.FirstOrDefault(x => x.Key == GetKey(order)); if (selector == null) { selector = new Selector { Key = GetKey(order), Description = order.MenuItemName + order.GetPortionDesc() }; Selectors.Add(selector); } selector.Quantity += order.Quantity; selector.Price = GetPrice(order, serviceAmount, sum, ExchangeRate, taxIncluded); }
private void CreateMergedItem(decimal sum, Order item, decimal serviceAmount) { var price = item.GetItemPrice(); price += (price * serviceAmount) / sum; if (!item.TaxIncluded) price += item.TaxAmount; var mitem = MergedItems.SingleOrDefault(x => x.MenuItemId == item.MenuItemId && x.Price == price); if (mitem == null) { mitem = new MergedItem(); try { mitem.Description = item.MenuItemName + item.GetPortionDesc(); mitem.Price = price; mitem.MenuItemId = item.MenuItemId; MergedItems.Add(mitem); } finally { mitem.Dispose(); } } mitem.Quantity += item.Quantity; }
private static string ReplaceLineVars(string line, Order order) { string result = line; if (order != null) { result = FormatData(result, TagNames.Quantity, () => order.Quantity.ToString("#,#0.##")); result = FormatData(result, TagNames.Name, () => order.MenuItemName + order.GetPortionDesc()); result = FormatData(result, TagNames.Price, () => order.Price.ToString("#,#0.00")); result = FormatData(result, TagNames.Total, () => order.GetItemPrice().ToString("#,#0.00")); result = FormatData(result, TagNames.TotalAmount, () => order.GetItemValue().ToString("#,#0.00")); result = FormatData(result, TagNames.Cents, () => (order.Price * 100).ToString("#,##")); result = FormatData(result, TagNames.LineAmount, () => order.GetTotal().ToString("#,#0.00")); result = FormatData(result, TagNames.OrderNo, () => order.OrderNumber.ToString()); result = FormatData(result, TagNames.PriceTag, () => order.PriceTag); result = _settingReplacer.ReplaceSettingValue("{SETTING:([^}]+)}", result); if (result.Contains(TagNames.Properties.Substring(0, TagNames.Properties.Length - 1))) { string lineFormat = result; if (order.OrderTagValues.Count > 0) { string label = ""; foreach (var property in order.OrderTagValues) { var itemProperty = property; var lineValue = FormatData(lineFormat, TagNames.Properties, () => itemProperty.Name); lineValue = FormatData(lineValue, TagNames.PropQuantity, () => itemProperty.Quantity.ToString("#.##")); lineValue = FormatData(lineValue, TagNames.PropPrice, () => itemProperty.AddTagPriceToOrderPrice ? "" : itemProperty.Price.ToString("#,#0.00")); label += lineValue + "\r\n"; } result = "\r\n" + label; } else result = ""; } result = result.Replace("<", "\r\n<"); } return result; }