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)); } })); }
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; }