private static void LogDecreasedTicketItemLateCancels(Ticket ticket, TicketItem ticketItem) { int originalQuantity = ticketItem.GetCurrentQuantity(); if (ticketItem.QuantityPending.HasValue && (ticketItem.QuantityPending < originalQuantity)) { int difference = originalQuantity - ticketItem.QuantityPending.Value; Item item = Item.Get(ticketItem.ItemId); PosDialogWindow window = CancelMadeUnmadeControl.CreateInDefaultWindow("Cancel: " + item.FullName + " (" + difference + ")"); var control = window.DockedControl as CancelMadeUnmadeControl; window.ShowDialog(); if (control != null && !control.IsMade.HasValue) { ticketItem.SetQuantity(originalQuantity); } else { TicketItem canceledTicketItem = TicketItem.Add(ticket.PrimaryKey, ticketItem.ItemId, difference, ticketItem.Price, ticketItem.OrderTime, ticketItem.PreparedTime); DuplicateItemOptions(ticketItem, canceledTicketItem); Employee employee = SessionManager.PseudoEmployee ?? SessionManager.ActiveEmployee; canceledTicketItem.Cancel(CancelType.DecreasedQuantity, employee.Id, control != null && control.IsMade.Value); } } }
public TicketItem AddItemToOrder(Item item) { double itemPrice = item.Price; // TODO: VIP! Check for special pricing foreach (ItemPricing price in ItemPricing.GetAll(item.Id, true, true)) { itemPrice = price.Price; } TicketItem ticketItem = TicketItem.Add(SessionManager.ActiveTicket.PrimaryKey, item.Id, 1, itemPrice, null, null); if (item.IsGrouping) { var itemGroups = new List <ItemGroup>(ItemGroup.GetAll(item.Id)); var ticketItems = new Stack <TicketItem>(); foreach (TicketItem childTicketItem in itemGroups .Select(itemGroup => TicketItem.Add(SessionManager.ActiveTicket.PrimaryKey, itemGroup.TargetItemId, 1, 0, null, null, ticketItem.PrimaryKey.Id))) { ticketItems.Push(childTicketItem); } AddItemToOrder(ticketItems.Pop(), BranchType.Last); foreach (TicketItem childTicketItem in ticketItems) { AddItemToOrder(childTicketItem, BranchType.Middle); } } return(AddItemToOrder(ticketItem)); }