private void imprimirTicketNuevo(OrdenProductoSerializable nueva) { Console.WriteLine("Imprimiendo ticket nuevo " + nueva); ImprimePedido ip = new ImprimePedido(); ip.ImprimirNuevo(nueva); }
private void imprimirTicketEditado(OrdenProductoSerializable viejo, OrdenProductoSerializable nueva) { Console.WriteLine("Imprimiendo ticket editado viejo " + viejo + " nuevo " + nueva); ImprimePedido ip = new ImprimePedido(); ip.ImprimirEditado(viejo, nueva); }
private void limpiarOrdenesEliminadas(List <OrdenProductoSerializable> lista, List <Orden> ordenesActivas) { List <OrdenProductoSerializable> toDelete = new List <OrdenProductoSerializable>(); foreach (OrdenProductoSerializable ops in lista) { if (!(ordenesActivas.Any(prod => prod.id_orden == ops.Id_orden))) { toDelete.Add(ops); } } foreach (OrdenProductoSerializable del in toDelete) { OrdenProductoSerializable elem = lista.Find(op => op.Id_orden == del.Id_orden); lista.Remove(elem); } }
private void timerActualizar_Tick(object sender, EventArgs e) { if (actualizando) { return; // Si sigue actualizando retorna } actualizando = true; Console.WriteLine("Aqui"); // Obtiene todas las ordenes activas y comprueba errores List <Orden> ordenesActivas = ControlOrdenes.Instance.GetLista(); if (ordenesActivas == null) { MessageBox.Show("Comprueba tu conexion"); actualizando = false; return; } // Path para el archivo donde se guardan los pedidos activos string path = Environment.GetEnvironmentVariable("USERPROFILE") + "\\Restaurant"; string file = path + "\\PedidosActivos.json"; try { if (!Directory.Exists(path)) { Directory.CreateDirectory(path); } if (!File.Exists(file)) { File.WriteAllText(file, "[]"); } } catch (Exception ex) { MessageBox.Show("No se pudo abrir el fichero"); actualizando = false; return; } try { // SE cargan todas las pedidos previas string ordenesViejas = File.ReadAllText(file); List <OrdenProductoSerializable> listVieja = JsonConvert.DeserializeObject <List <OrdenProductoSerializable> >(ordenesViejas); // Se limpian los pedidos que ya no se necesitan limpiarOrdenesEliminadas(listVieja, ordenesActivas); // Se cargan todos los pedidos actuales y se crean los objetos serializables de estos List <OrdenProducto> lista = ControlOrdenProductos.Instance.GetLista(); List <OrdenProductoSerializable> list2 = new List <OrdenProductoSerializable>(); foreach (OrdenProducto op in lista) { OrdenProductoSerializable s = OrdenProductoSerializable.FromOrdenProducto(op); list2.Add(s); } // Sew guardan los nuevos pedidos File.WriteAllText(file, JsonConvert.SerializeObject(list2)); // Pedidos eliminado, nuevos y editados List <OrdenProductoSerializable> nuevas = ordenesNuevas(listVieja, list2); List <OrdenProductoSerializable> eliminadas = ordenesEliminadas(listVieja, list2); List <OrdenProductoSerializable> editadas = ordenesEditadas(eliminadas, nuevas); // Si existen pedidos pendientes if (eliminadas.Count > 0 || nuevas.Count > 0 || editadas.Count > 0) { // Si es la primer vez que se entra al metodo se pergunta si se quiere imprimir los pendientes if (firstTime) { DialogResult result = MessageBox.Show(this, "Existen ordenes pendientes, Imprimir?", "Advertencia", MessageBoxButtons.YesNo); firstTime = false; if (result != DialogResult.Yes) { actualizando = false; return; } ; } // Se carga la configuracion de las categorias que se dean imprimir string configFile = path + "\\Impresiones.config"; List <CategoriaProducto> categoriasParaImprimir = JsonConvert.DeserializeObject <List <CategoriaProducto> >(File.ReadAllText(configFile)); List <Orden> ordenesActivas2 = ControlOrdenes.Instance.GetLista(); // Se imprime si es necesario foreach (OrdenProductoSerializable nueva in nuevas) { Console.WriteLine("Se ha agregado " + nueva); if (categoriasParaImprimir.Any(cpi => cpi.id_categoria == nueva.Id_categoria)) { if (ordenesActivas2.Where(oa => oa.id_orden == nueva.Id_orden).ToList().Count > 0) { imprimirTicketNuevo(nueva); } } } foreach (OrdenProductoSerializable nueva in eliminadas) { Console.WriteLine("Se ha eliminado " + nueva); if (categoriasParaImprimir.Any(cpi => cpi.id_categoria == nueva.Id_categoria)) { if (ordenesActivas2.Where(oa => oa.id_orden == nueva.Id_orden).ToList().Count > 0) { imprimirTicketEliminado(nueva); } } } foreach (OrdenProductoSerializable nueva in editadas) { OrdenProductoSerializable viejo = listVieja.Find(ops => ops.Id_orden_producto == nueva.Id_orden_producto - 1); Console.WriteLine("Se ha editado " + nueva); if (categoriasParaImprimir.Any(cpi => cpi.id_categoria == nueva.Id_categoria)) { if (ordenesActivas2.Where(oa => oa.id_orden == nueva.Id_orden).ToList().Count > 0) { imprimirTicketEditado(viejo, nueva); } } } } } catch (Exception ex) { try { File.WriteAllText(file, "[]"); } catch { } MessageBox.Show("Error desconocido"); } firstTime = false; actualizando = false; }
public bool ImprimirEditado(OrdenProductoSerializable viejo, OrdenProductoSerializable nuevo) { try { PrintDocument document = new PrintDocument(); document.DefaultPageSettings.Landscape = true; document.PrintPage += new PrintPageEventHandler((sender, e) => { Graphics g = e.Graphics; Brush brush = new SolidBrush(Color.Black); Pen pen = new Pen(brush); Font font = new Font("Arial", 12); string linea = ""; int x = 0, y = 0; g.DrawString("ELIMINADO", font, new SolidBrush(Color.Red), x + 10, y); y += 30; string[] producto = ("" + viejo).Split(' '); for (int i = 0; i < producto.Length; i++) { string word = producto[i] + " "; if (linea.Length + word.Length >= width) { g.DrawString(linea, font, brush, x + 10, y); y += 30; linea = ""; i--; } else { linea += word; } } if (linea.Length > 0) { g.DrawString(linea, font, brush, x + 10, y); y += 30; } if (viejo.Variantes.Count > 0) { linea = ""; g.DrawString("-::-Variantes:", font, brush, x + 10, y); y += 30; foreach (var variante in viejo.Variantes) { string[] variant = variante.Nombre.Split(' '); for (int i = 0; i < variant.Length; i++) { string word = variant[i] + " "; if (linea.Length + word.Length >= width) { g.DrawString(linea, font, brush, x + 10, y); y += 30; linea = ""; i--; } else { linea += word; } } if (linea.Length > 0) { g.DrawString(linea, font, brush, x + 10, y); y += 30; } } } g.DrawString("Cantidad: " + viejo.Cantidad, font, brush, x + 10, y); y += 30; g.DrawString("AGREGADO", font, new SolidBrush(Color.Red), x + 10, y); y += 30; producto = ("" + nuevo).Split(' '); for (int i = 0; i < producto.Length; i++) { string word = producto[i] + " "; if (linea.Length + word.Length >= width) { g.DrawString(linea, font, brush, x + 10, y); y += 30; linea = ""; i--; } else { linea += word; } } if (linea.Length > 0) { g.DrawString(linea, font, brush, x + 10, y); y += 30; } if (nuevo.Variantes.Count > 0) { linea = ""; g.DrawString("-::-Variantes:", font, brush, x + 10, y); y += 30; foreach (var variante in nuevo.Variantes) { string[] variant = variante.Nombre.Split(' '); for (int i = 0; i < variant.Length; i++) { string word = variant[i] + " "; if (linea.Length + word.Length >= width) { g.DrawString(linea, font, brush, x + 10, y); y += 30; linea = ""; i--; } else { linea += word; } } if (linea.Length > 0) { g.DrawString(linea, font, brush, x + 10, y); y += 30; } } } g.DrawString("-::-Cantidad: " + nuevo.Cantidad, font, brush, x + 10, y); y += 30; if (nuevo.Comentarios.Length > 0) { string[] coment = nuevo.Comentarios.Split(' '); linea = "-::-Comentarios: "; for (int i = 0; i < coment.Length; i++) { string word = coment[i] + " "; if (linea.Length + word.Length >= width) { g.DrawString(linea, font, brush, x + 10, y); y += 30; linea = ""; i--; } else { linea += word; } } if (linea.Length > 0) { g.DrawString(linea, font, brush, x + 10, y); y += 30; } } g.DrawString("Mesa: " + nuevo.Mesa, font, brush, x + 10, y); y += 30; }); document.Print(); return(true); } catch (Exception e) { Log.Write("Error no se puedo imprimir"); MessageBox.Show("Error no se puedo imprimir"); return(false); } /* PrintPreviewDialog ppDialog = new PrintPreviewDialog(); * ppDialog.Document = document; * ppDialog.Show(); */ }