Exemplo n.º 1
0
 public bool CanVoidSelectedItems(IEnumerable <TicketItem> items)
 {
     if (!CanRemoveSelectedItems(items))
     {
         return(false);
     }
     foreach (var item in items)
     {
         if (!TicketItems.Contains(item))
         {
             return(false);
         }
         if (item.Voided)
         {
             return(false);
         }
         if (item.Gifted)
         {
             return(false);
         }
         if (!item.Locked)
         {
             return(false);
         }
     }
     return(true);
 }
Exemplo n.º 2
0
        private async void Cashier_PropertyChanged(object sender, PropertyChangedEventArgs e)
        {
            var сashier = sender as Сashier;

            if (сashier != null)
            {
                if (e.PropertyName == "CurrentTicket")
                {
                    if (сashier.CurrentTicket != null)      //добавить элемент к списку
                    {
                        TicketItems.Add(new TicketItem {
                            CashierName = "Касса " + сashier.CurrentTicket.Сashbox,
                            TicketName  = $"Талон {сashier.CurrentTicket.Prefix}{сashier.CurrentTicket.NumberElement.ToString("000")}"
                        });
                        var task = _model.LogTicket?.Add(сashier.CurrentTicket.ToString());
                        if (task != null)
                        {
                            await task;
                        }
                    }
                    else                             //удалить элемент из списка
                    {
                        var removeItem = TicketItems.FirstOrDefault(elem => elem.CashierName.Contains(сashier.Id.ToString()));
                        TicketItems.Remove(removeItem);
                    }
                }
            }
        }
Exemplo n.º 3
0
        private decimal CalculateDiscounts(IEnumerable <Discount> discounts, decimal sum)
        {
            decimal totalDiscount = 0;

            foreach (var discount in discounts)
            {
                if (discount.DiscountType == (int)DiscountType.Percent)
                {
                    if (discount.TicketItemId == 0)
                    {
                        discount.DiscountAmount = discount.Amount > 0
                            ? (sum * discount.Amount) / 100 : 0;
                    }
                    else
                    {
                        var d = discount;
                        discount.DiscountAmount = discount.Amount > 0
                            ? (TicketItems.Single(x => x.Id == d.TicketItemId).GetTotal() * discount.Amount) / 100 : 0;
                    }
                }
                else
                {
                    discount.DiscountAmount = discount.Amount;
                }

                discount.DiscountAmount = Decimal.Round(discount.DiscountAmount, LocalSettings.Decimals);
                totalDiscount          += discount.DiscountAmount;
            }
            return(decimal.Round(totalDiscount, LocalSettings.Decimals));
        }
Exemplo n.º 4
0
 public void RemoveTicketItem(TicketItem ti)
 {
     TicketItems.Remove(ti);
     if (ti.Id > 0)
     {
         _removedTicketItems.Add(ti);
     }
 }
Exemplo n.º 5
0
        private decimal CalculateTax(decimal plainSum, decimal discount)
        {
            var result = TicketItems.Where(x => !x.VatIncluded && !x.Gifted && !x.Voided).Sum(x => (x.VatAmount + x.Properties.Sum(y => y.VatAmount)) * x.Quantity);

            if (discount > 0)
            {
                result -= (result * discount) / plainSum;
            }
            return(result);
        }
Exemplo n.º 6
0
        public TicketItem AddTicketItem(int userId, int departmentId, MenuItem menuItem, string portionName, string priceTag, string defaultProperties)
        {
            Locked = false;
            var tif = new TicketItem {
                DepartmentId = departmentId
            };

            tif.UpdateMenuItem(userId, menuItem, portionName, priceTag, 1, defaultProperties);
            TicketItems.Add(tif);
            return(tif);
        }
Exemplo n.º 7
0
 public void LockTicket()
 {
     foreach (var item in TicketItems.Where(x => !x.Locked))
     {
         item.Locked = true;
     }
     if (_shouldLock)
     {
         Locked = true;
     }
     _shouldLock = false;
 }
Exemplo n.º 8
0
        public void MergeLinesAndUpdateOrderNumbers(int orderNumber)
        {
            LastOrderDate = DateTime.Now;
            IList <TicketItem> newLines = TicketItems.Where(x => !x.Locked && x.Id == 0).ToList();

            //sadece quantity = 1 olan satırlar birleştirilecek.
            var mergedLines = newLines.Where(x => x.Quantity != 1).ToList();
            var ids         = mergedLines.Select(x => x.MenuItemId).Distinct().ToArray();

            mergedLines.AddRange(newLines.Where(x => ids.Contains(x.MenuItemId) && x.Quantity == 1));
            foreach (var ticketItem in newLines.Where(x => x.Quantity == 1 && !ids.Contains(x.MenuItemId)))
            {
                var ti = ticketItem;
                if (ticketItem.Properties.Count > 0)
                {
                    mergedLines.Add(ticketItem);
                    continue;
                }

                var item = mergedLines.SingleOrDefault(
                    x =>
                    x.Properties.Count == 0 && x.MenuItemId == ti.MenuItemId &&
                    x.PortionName == ti.PortionName && x.Gifted == ti.Gifted &&
                    x.Price == ti.Price && x.Tag == ti.Tag);

                if (item == null)
                {
                    mergedLines.Add(ticketItem);
                }
                else
                {
                    item.Quantity += ticketItem.Quantity;
                }
            }

            foreach (var ticketItem in newLines.Where(ticketItem => !mergedLines.Contains(ticketItem)))
            {
                RemoveTicketItem(ticketItem);
            }

            foreach (var item in TicketItems.Where(x => !x.Locked).Where(item => item.OrderNumber == 0))
            {
                item.OrderNumber = orderNumber;
            }
        }
Exemplo n.º 9
0
 public bool CanCancelSelectedItems(IEnumerable <TicketItem> items)
 {
     if (items.Count() == 0)
     {
         return(false);
     }
     foreach (var item in items)
     {
         if (!TicketItems.Contains(item))
         {
             return(false);
         }
         if (item.Locked && !item.Gifted)
         {
             return(false);
         }
     }
     return(true);
 }
Exemplo n.º 10
0
        public IEnumerable <TicketItem> ExtractSelectedTicketItems(IEnumerable <TicketItem> selectedItems)
        {
            var newItems = new List <TicketItem>();

            foreach (var selectedTicketItem in selectedItems)
            {
                Debug.Assert(selectedTicketItem.SelectedQuantity > 0);
                Debug.Assert(TicketItems.Contains(selectedTicketItem));
                if (selectedTicketItem.SelectedQuantity >= selectedTicketItem.Quantity)
                {
                    continue;
                }
                var newItem = CloneItem(selectedTicketItem);
                newItem.Quantity             = selectedTicketItem.SelectedQuantity;
                selectedTicketItem.Quantity -= selectedTicketItem.SelectedQuantity;
                newItems.Add(newItem);
            }

            return(newItems);
        }
Exemplo n.º 11
0
 public IEnumerable <TicketItem> GetUnlockedLines()
 {
     return(TicketItems.Where(x => !x.Locked).OrderBy(x => x.CreatedDateTime).ToList());
 }
Exemplo n.º 12
0
 public decimal GetTotalGiftAmount()
 {
     return(TicketItems.Where(x => x.Gifted && !x.Voided).Sum(item => item.GetItemValue()));
 }
Exemplo n.º 13
0
 public decimal GetPlainSum()
 {
     return(TicketItems.Sum(item => item.GetTotal()));
 }
Exemplo n.º 14
0
 public int GetItemCount()
 {
     return(TicketItems.Count());
 }
Exemplo n.º 15
0
 public decimal Total()
 {
     return(Math.Round(TicketItems.Sum(x => x.TicketPrice * x.Quantity), 2));
 }