public void BuildBody() { Customer customer = folio.Customer; Product product = folio.Product; ticket.TextLocationMode = TicketPaperLocation.Body; ticket.SideText("Fecha de expedición:", DateTime.Today.ToShortDateString()); ticket.SideText("Recepción de equipos", $"Folio: {folio.ID}"); ticket.Separator(TicketSeparator.Dash); ticket.CenterText("[Datos del cliente]"); ticket.LeftText($"Nombre: {customer.Firstname} {customer.Lastname}"); //if (!string.IsNullOrWhiteSpace(customer.Telephone)) // ticket.LeftText($"Teléfono: {customer.Telephone}"); if (!string.IsNullOrWhiteSpace(customer.Email)) { ticket.LeftText($"Email: {customer.Email}"); } ticket.Separator(TicketSeparator.Asterisk); ticket.CenterText("[Datos del equipo]"); ticket.LeftText($"Marca: {product.Trademark}"); ticket.LeftText($"Modelo: {product.Model}"); ticket.LeftText($"No. de Serie:"); ticket.LeftText($"{product.SerialNumber}"); ticket.LeftText($"Descripción de la falla:"); foreach (Issue i in issues) { ticket.RightText($"* {i.Text}"); } ticket.Separator(TicketSeparator.Dash); }
private static void BuildFooter(TicketDocument ticket) { ticket.TextLocationMode = TextTicketLocation.Footer; ticket.Text[TextTicketLocation.Footer].Font = new Font(FontFamily.GenericMonospace.Name, 7, FontStyle.Regular); string[] terms = new string[] { "*Toda garantía o reparación de equipos de almacenamiento, aplica respecto a daño físico y no sobre la información contenida.", "*El cliente tendrá un plazo máximo de 5 días hábiles para recoger su equipo, posteriores a la notificación de que el mismo se encuentre listo. Después del plazo, no nos hacemos responsables de equipos no reclamados.", "*Toda reparación dentro del período de garantía, se encuentra sujeta a los términos que la póliza marque.", "*De ser necesario el envío por paquetería dentro o fuera de la zona metropolitana, el cliente cubrirá los gastos que éste genere.", "*El cliente se hace responsable de que la información presentada en el documento es correcta y accepta los términos y condiciones en el mismo." }; foreach (string tc in terms) { ticket.LeftText(tc); } }
public void BuildBody() { Customer customer = order.Customer; ticket.TextLocationMode = TicketPaperLocation.Body; ticket.SideText("Expidation date:", DateTime.Today.ToShortDateString()); ticket.SideText("Date of sale:", order.DateAdded.ToShortDateString()); ticket.SideText("Folio:", $"#{order.ID}"); ticket.Separator(TicketSeparator.Dash); // Customer ticket.CenterText("[Customer]"); ticket.LeftText($"Fullname: {customer.Firstname} {customer.Lastname}"); if (!string.IsNullOrWhiteSpace(customer.Email)) { ticket.LeftText($"Email: {customer.Email}"); } ticket.Separator(TicketSeparator.Asterisk); // Order ticket.CenterText("[Order]"); ticket.SideText("Payment method:", order.PaymentMethod.ToString()); ticket.SideText("Shipping method:", order.ShippingMethod.ToString()); ticket.Separator(TicketSeparator.Blank); ticket.Separator(TicketSeparator.Dash); ticket.LeftText("Product\tU/P\tQuantity\tTotal"); ticket.Separator(TicketSeparator.Dash); // Products foreach (OrderProduct op in order.Products) { decimal unitPrice = op.Price; decimal totalProduct = op.Total; string prod = (op.Name.Length < 8) ? op.Name.PadRight(8) : op.Name.Substring(0, 8); ticket.LeftText($"-{prod}\t${unitPrice.ToString("#.##")}\t{op.Quantity}\t${totalProduct.ToString("#.##")}"); } ticket.Separator(TicketSeparator.Dash); // Totals var orderTotals = order.OrderTotals.OrderBy(o => o.SortOrder); foreach (OrderTotal ot in orderTotals) { if (ot.Code == "sub_total") { decimal subtotal = ot.Value; ticket.LeftText($"Subtotal: ${subtotal.ToString("#.##")}"); } else { ticket.LeftText($"{ot.Title}: ${ot.Value.ToString("#.##")}"); } } ticket.Separator(TicketSeparator.Dash); }
private static void BuildBody(TicketDocument ticket, OrderDataModel order) { CustomerModel customer = order.Customer; ticket.TextLocationMode = TextTicketLocation.Body; ticket.SideText("Fecha de expedición:", DateTime.Today.ToShortDateString()); ticket.SideText("Fecha de venta:", order.DateAdded.ToShortDateString()); ticket.SideText("Folio:", $"#{order.ID}"); ticket.Separator(TicketSeparator.Dash); // Cliente ticket.CenterText("[Datos del cliente]"); ticket.LeftText($"Nombre: {customer.Firstname} {customer.Lastname}"); if (!string.IsNullOrWhiteSpace(customer.Email)) { ticket.LeftText($"Email: {customer.Email}"); } ticket.Separator(TicketSeparator.Asterisk); // Venta ticket.CenterText("[Datos de venta]"); ticket.SideText("Método de pago:", order.PaymentMethod.ToString()); ticket.SideText("Método de envío:", order.ShippingMethod.ToString()); ticket.Separator(TicketSeparator.Blank); ticket.Separator(TicketSeparator.Dash); ticket.LeftText("Producto\tP/U\tCant\tTotal"); ticket.Separator(TicketSeparator.Dash); // Productos StringBuilder serials = new StringBuilder(); bool hasSerials = false; foreach (OrderProductModel op in order.Cart) { string prod = (op.Name.Length < 8) ? op.Name.PadRight(8) : op.Name.Substring(0, 8); ticket.LeftText($"-{prod}\t${op.Price:#.##}\t{op.Quantity}\t${op.Total:#.##}"); if (op.SerialNumbers.Count() > 0) { hasSerials = true; foreach (ProductSerialModel serial in op.SerialNumbers) { serials .Append($"-{prod} {serial.SerialNumber}" .PadRight(TicketLen)) .Append($"{serial.DateStart.ToShortDateString()} {serial.DateEnd.ToShortDateString()}" .PadRight(TicketLen)); } } } if (hasSerials) { ticket.Separator(TicketSeparator.Dash); // Serials ticket.CenterText("# Serie | Garantía"); ticket.Separator(TicketSeparator.Blank); ticket.LeftText(serials.ToString()); } ticket.Separator(TicketSeparator.Dash); // Totales var orderTotals = order.OrderTotals.OrderBy(o => o.SortOrder); foreach (OrderTotalModel ot in orderTotals) { ticket.RightText($"{ot.Title}: {((ot.Value != 0) ? $"{ot.Value:#.##}" : "N/A")}"); } ticket.RightText($"IVA: 16%"); ticket.Separator(TicketSeparator.Dash); }