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);
        }
Example #2
0
 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);
        }
Example #4
0
        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);
        }