コード例 #1
0
ファイル: TicketPrinter.cs プロジェクト: basio/veropos
        public static void PrintOrders(PrintJob printJob, Ticket ticket)
        {
            if (printJob.ExcludeVat)
            {
                ticket = ObjectCloner.Clone(ticket);
                ticket.TicketItems.ToList().ForEach(x => x.VatIncluded = false);
            }

            IEnumerable<TicketItem> ti;
            switch (printJob.WhatToPrint)
            {
                case (int)WhatToPrintTypes.NewLines:
                    ti = ticket.GetUnlockedLines();
                    break;
                case (int)WhatToPrintTypes.GroupedByBarcode:
                    ti = GroupLinesByValue(ticket, x => x.Barcode ?? "", "1", true);
                    break;
                case (int)WhatToPrintTypes.GroupedByGroupCode:
                    ti = GroupLinesByValue(ticket, x => x.GroupCode ?? "", Resources.UndefinedWithBrackets);
                    break;
                case (int)WhatToPrintTypes.GroupedByTag:
                    ti = GroupLinesByValue(ticket, x => x.Tag ?? "", Resources.UndefinedWithBrackets);
                    break;
                case (int)WhatToPrintTypes.LastLinesByPrinterLineCount:
                    ti = GetLastItems(ticket, printJob);
                    break;
                case (int)WhatToPrintTypes.LastPaidItems:
                    ti = GetLastPaidItems(ticket).ToList();
                    ticket = ObjectCloner.Clone(ticket);
                    ticket.TicketItems.Clear();
                    ticket.PaidItems.Clear();
                    ticket.Payments.Clear();
                    ti.ToList().ForEach(x => ticket.TicketItems.Add(x));
                    break;
                default:
                    ti = ticket.TicketItems.OrderBy(x => x.Id).ToList();
                    break;
            }

            Application.Current.Dispatcher.BeginInvoke(DispatcherPriority.ApplicationIdle,
                new Action(
                    delegate
                    {
                        try
                        {
                            InternalPrintOrders(printJob, ticket, ti);
                        }
                        catch (Exception e)
                        {
                            AppServices.LogError(e, string.Format(Resources.PrintingErrorMessage_f, e.Message));
                        }
                    }));
        }
コード例 #2
0
ファイル: TicketPrinter.cs プロジェクト: basio/veropos
 private static bool ShouldAutoPrint(Ticket ticket, PrintJob customPrinter)
 {
     if (customPrinter.WhenToPrint == (int)WhenToPrintTypes.Manual) return false;
     if (customPrinter.WhenToPrint == (int)WhenToPrintTypes.Paid)
     {
         if (ticket.DidPrintJobExecuted(customPrinter.Id)) return false;
         if (!ticket.IsPaid) return false;
         if (!customPrinter.AutoPrintIfCash && !customPrinter.AutoPrintIfCreditCard && !customPrinter.AutoPrintIfTicket) return false;
         if (customPrinter.AutoPrintIfCash && ticket.Payments.Count(x => x.PaymentType == (int)PaymentType.Cash) > 0) return true;
         if (customPrinter.AutoPrintIfCreditCard && ticket.Payments.Count(x => x.PaymentType == (int)PaymentType.CreditCard) > 0) return true;
         if (customPrinter.AutoPrintIfTicket && ticket.Payments.Count(x => x.PaymentType == (int)PaymentType.Ticket) > 0) return true;
     }
     if (customPrinter.WhenToPrint == (int)WhenToPrintTypes.NewLinesAdded && ticket.GetUnlockedLines().Count() > 0) return true;
     return false;
 }