コード例 #1
0
        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);
                }
            }
        }
コード例 #2
0
        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));
        }