public static List <SPC_SET_ORDENDETALLE_Result> MasUno(int _CodigoOrdenDetalle, string _CodigoMesa) { List <SPC_SET_ORDENDETALLE_Result> resultado = null; using (var DB = new TPVDBEntities()) { ///-- Registrar nuevo elemento y traer detalle completo var Usuario = HttpContext.Current.Session[C_SV_USUARIO] as Usuarios; var Detalle = DB.SPC_GET_ORDENDETALLE(null, int.Parse(_CodigoMesa), null, null, null, null, null, null, null).Where(w => w.Codigo_Orden_Detalle == _CodigoOrdenDetalle).First(); int cantidad_Producto = 0; decimal sub_Total_Precio_Producto = 0; if (Detalle.Codigo_Estado_Orden_Detalle == 1) { cantidad_Producto = Detalle.Cantidad_Producto + 1; sub_Total_Precio_Producto = Detalle.Sub_Total_Precio_Producto + (Detalle.Sub_Total_Precio_Producto / Detalle.Cantidad_Producto); resultado = SetOrdenDetalle(Detalle.Codigo_Orden_Detalle, Detalle.Codigo_Orden, Detalle.Codigo_Mesa, Detalle.Codigo_Producto, Detalle.Codigo_Producto_Unidad_Medida, cantidad_Producto, Detalle.Codigo_Producto_Extra, sub_Total_Precio_Producto, null, Detalle.Nota_Producto, null); } else { cantidad_Producto = 1; sub_Total_Precio_Producto = (Detalle.Sub_Total_Precio_Producto / Detalle.Cantidad_Producto); resultado = SetOrdenDetalle(null, Detalle.Codigo_Orden, Detalle.Codigo_Mesa, Detalle.Codigo_Producto, Detalle.Codigo_Producto_Unidad_Medida, cantidad_Producto, Detalle.Codigo_Producto_Extra, sub_Total_Precio_Producto, null, Detalle.Nota_Producto, null); } } return(resultado); }
public static object Listar_Productos_Orden(int Codigo_Orden) { try { using (var DB = new TPVDBEntities()) { var detalle = DB.SPC_GET_ORDENDETALLE(Codigo_Orden, null, 3, null, null, null, null, null, null).ToList(); /*var Resultado = * detalle.GroupBy(g => new { g.NombreProducto, g.OrdenFactura }) * .Select(s => new * { * s.Key.NombreProducto, * Cantidad_Producto = s.Sum(ss => ss.Cantidad_Producto), * Sub_Total_Precio_Producto = s.Sum(ss => ss.Sub_Total_Precio_Producto), * s.Key.OrdenFactura * }) * .OrderBy(o => o.OrdenFactura).ThenBy(t=> t.NombreProducto).ToList();*/ return(new { Result = "OK", Records = detalle }); } } catch { return(new { Result = "ERROR", Message = "Ha ocurrido un error al cargar el listado de productos de venta." }); } }
public static List <SPC_GET_ORDENDETALLE_Result> GetOrdenDetalle(Nullable <int> _CodigoOrden, Nullable <int> _CodigoMesa) { List <SPC_GET_ORDENDETALLE_Result> resultado = null; using (var DB = new TPVDBEntities()) { resultado = DB.SPC_GET_ORDENDETALLE(_CodigoOrden, _CodigoMesa, null, null, null, null, null, null, true) .Where(w => w.Codigo_Estado_Orden < 3).ToList(); } return(resultado); }
static void Pedidos(int CodigoOrden) { using (var DB = new TPVDBEntities()) { var info = DB.SPC_GET_INFORMACIONEMPRESA().First(); int Comensales = DB.Ordenes.First(f => f.Codigo_Orden == CodigoOrden).Comensales; var Pedidos = DB.SPC_GET_ORDENDETALLE(CodigoOrden, null, null, null, null, null, 1, null, true) .OrderByDescending(d => d.Primero) .ThenBy(t => t.OrdenFactura) .ThenBy(t => t.Codigo_Producto) .ThenBy(t => t.Codigo_Producto_Extra) .GroupBy(g => g.Impresora).ToList(); foreach (var GrupoPedido in Pedidos) { ImprimirPedidos(GrupoPedido, Comensales, GrupoPedido.Key, info.NombreImpresoraCocina, info.NombreImpresoraBarra); } } }
public static object AnularPedido(int _CodigoOrdenDetalle) { List <SPC_SET_ORDENDETALLE_Result> resultado = null; using (var DB = new TPVDBEntities()) { ///-- Obtener datos del pedido var PedidoAnulado = DB.SPC_GET_ORDENDETALLE(null, null, null, _CodigoOrdenDetalle, null, null, null, null, null).FirstOrDefault(); var info = DB.InformacionEmpresa.FirstOrDefault(); ///-- Imprimir ticket de Anulación ImprimirAnulacion(PedidoAnulado, PedidoAnulado.Impresora, info.NombreImpresoraCocina, info.NombreImpresoraBarra); ///-- Cambiar estado var Usuario = HttpContext.Current.Session[C_SV_USUARIO] as Usuarios; ///-- Anular y retornar listado resultado = DB.SPC_SET_ORDENDETALLE(_CodigoOrdenDetalle, PedidoAnulado.Codigo_Orden, null, null, 0, null, null, null, null, null, null, Usuario.Codigo_Usuario, false).ToList(); } return(resultado); }
public static void ImprimirCuenta(int CodigoOrden) { try { int LINE_MAX_LENGHT = Properties.Settings.Default.MaximoCaracteresBarra; var center = new StringFormat() { Alignment = StringAlignment.Center }; Usuarios usuario = null; string AtendidoPor = string.Empty; InformacionEmpresa info = null; System.Drawing.Font Normal = null; System.Drawing.Font Bold = null; List <SPC_GET_ORDENDETALLE_Result> OrdenDetalle = null; var Mesa = string.Empty; decimal TotalFactura = 0; int comensales = 0; using (var DB = new TPVDBEntities()) { info = DB.InformacionEmpresa.First(); Normal = new System.Drawing.Font(info.TipoLetraBarra, (int)info.TamanoLetraBarra, System.Drawing.FontStyle.Regular); Bold = new System.Drawing.Font(info.TipoLetraBarra, (int)info.TamanoLetraBarra, System.Drawing.FontStyle.Bold); if (!string.IsNullOrEmpty(info.TipoLetraBarra)) { Normal = new System.Drawing.Font(new System.Drawing.FontFamily(info.TipoLetraBarra), (float)info.TamanoLetraBarra.Value, System.Drawing.FontStyle.Regular); Bold = new System.Drawing.Font(new System.Drawing.FontFamily(info.TipoLetraBarra), (float)info.TamanoLetraBarra, System.Drawing.FontStyle.Bold); } var orden = DB.Ordenes.Where(w => w.Codigo_Orden == CodigoOrden).First(); usuario = orden.OrdenesDetalles.First().Usuarios; AtendidoPor = usuario.Nombre_Usuario + " " + usuario.Apellido_Usuario; comensales = orden.Comensales; if (orden.Codigo_Estado_Orden == 1) { orden.Codigo_Estado_Orden = 2; orden.Hora_Pago = DateTime.Now; DB.SaveChanges(); } OrdenDetalle = DB.SPC_GET_ORDENDETALLE(CodigoOrden, null, null, null, null, null, null, null, true) .OrderBy(o => o.OrdenFactura).ToList(); } ///-- Mesa y Nº factura var ordenDetalle = OrdenDetalle.First(); Mesa = ordenDetalle.Mesa; var NumeroFactura = string.Format("{0}-{1}", ordenDetalle.Hora_Pago.Value.Year, ordenDetalle.NumeroFactura.Value.ToString().PadLeft(6, '0')); int Index = 0; var LineasImpresion = new List <LineaPedido>(); LineasImpresion.Add(new LineaPedido(Index++, info.NombreEmpresa.ToUpper(), Bold, center)); LineasImpresion.Add(new LineaPedido(Index++, info.Direccion, Normal, center)); LineasImpresion.Add(new LineaPedido(Index++, string.Format("{0} {1}, {2}", info.CodigoPostal, info.Ciudad, info.Provincia), Normal, center)); if (!string.IsNullOrEmpty(info.Telefono)) { LineasImpresion.Add(new LineaPedido(Index++, "Tel. " + info.Telefono, Normal, center)); } if (!string.IsNullOrEmpty(info.Movil) && info.Telefono != info.Movil) { LineasImpresion.Add(new LineaPedido(Index++, "Móvil " + info.Movil, Normal, center)); } if (!string.IsNullOrEmpty(info.NIF)) { LineasImpresion.Add(new LineaPedido(Index++, "N.I.F: " + info.NIF, Normal, center)); } if (!string.IsNullOrEmpty(info.CIF)) { LineasImpresion.Add(new LineaPedido(Index++, "C.I.F: " + info.CIF, Normal, center)); } Index++; LineasImpresion.Add(new LineaPedido(Index++, string.Format("Factura Simplificada: {0}", NumeroFactura.PadLeft(LINE_MAX_LENGHT - 22, ' ')), Normal)); LineasImpresion.Add(new LineaPedido(Index++, new string('-', LINE_MAX_LENGHT), Normal)); var grpProductos = OrdenDetalle.GroupBy(g => new { g.NombreProducto }).ToList(); foreach (var Producto in grpProductos) { var grpUnidadMedida = Producto.GroupBy(g => g.Codigo_Producto_Unidad_Medida); foreach (var UnidadMedida in grpUnidadMedida) { var grpNota = UnidadMedida.GroupBy(g => g.Nota_Producto).ToList(); foreach (var Pedidos in grpNota) { var Linea = new SPC_GET_ORDENDETALLE_Result(); foreach (var Pedido in Pedidos) { Linea.Cantidad_Producto += Pedido.Cantidad_Producto; Linea.NombreProducto = Pedido.NombreProducto; Linea.Nota_Producto = Pedido.Nota_Producto; Linea.Sub_Total_Precio_Producto += Pedido.Sub_Total_Precio_Producto; } string cantidad = string.Format("{0}x{1:F}", Linea.Cantidad_Producto.ToString().PadLeft(2, ' '), Linea.Sub_Total_Precio_Producto / Linea.Cantidad_Producto); string Descripcion = string.Empty; string total = Linea.Sub_Total_Precio_Producto.ToString("F"); int EspacioTotal = 0; int intFiller = 0; EspacioTotal = (LINE_MAX_LENGHT - 3) - cantidad.Length - total.Length; if (!string.IsNullOrEmpty(Linea.Nota_Producto)) { EspacioTotal -= Linea.Nota_Producto.Length + 2; if (EspacioTotal < 0) { EspacioTotal = 0; } Descripcion = Linea.NombreProducto.Truncate(EspacioTotal); Descripcion += " " + Linea.Nota_Producto; } else { Descripcion = Linea.NombreProducto.Truncate(EspacioTotal); } intFiller = (LINE_MAX_LENGHT - 2) - (cantidad.Length + Descripcion.Length + total.Length); if (intFiller == 0) { LineasImpresion.Add(new LineaPedido(Index++, string.Format("{0} {1} {2}", cantidad, Descripcion, total), Normal)); } else if (intFiller > 0) { LineasImpresion.Add(new LineaPedido(Index++, string.Format("{0} {1}{2} {3}", cantidad, Descripcion, new string('.', intFiller), total), Normal)); } TotalFactura += Linea.Sub_Total_Precio_Producto; } } } LineasImpresion.Add(new LineaPedido(Index++, new string('-', LINE_MAX_LENGHT), Normal)); LineasImpresion.Add(new LineaPedido(Index++, string.Format("TOTAL: {0}", TotalFactura.ToString("F").PadLeft(LINE_MAX_LENGHT - 7, '.')), Bold)); if (comensales > 1) { Index++; LineasImpresion.Add(new LineaPedido(Index++, string.Format("{0} por persona", (TotalFactura / comensales).ToString("F")), Normal, center)); Index++; } Index++; LineasImpresion.Add(new LineaPedido(Index++, "TIPO BASE IVA TOTAL", Normal)); var Impuestos = TotalFactura / (1 + info.PorcientoIVA.Value); LineasImpresion.Add(new LineaPedido(Index++, string.Format("{0} {1} {2} {3}", info.PorcientoIVA.Value.ToString("F").PadRight(7, ' '), (TotalFactura - Impuestos).ToString("F").PadRight(7, ' '), Impuestos.ToString("F").PadRight(7, ' '), TotalFactura.ToString("F")), Normal)); Index++; LineasImpresion.Add(new LineaPedido(Index++, "PRECIOS CON IVA INCLUIDO", Normal)); LineasImpresion.Add(new LineaPedido(Index++, "ATENDIDO POR: " + AtendidoPor, Normal)); LineasImpresion.Add(new LineaPedido(Index++, "MESA: " + Mesa.ToUpper(), Bold)); LineasImpresion.Add(new LineaPedido(Index++, "FECHA: " + DateTime.Now.ToString("dd MMM HH:mm:ss"), Normal)); Index++; if (!string.IsNullOrEmpty(info.Facebook)) { LineasImpresion.Add(new LineaPedido(Index++, "Síguenos en FB", Bold, center)); LineasImpresion.Add(new LineaPedido(Index++, info.Facebook, Normal, center)); } LineasImpresion.Add(new LineaPedido(Index++, "Gracias por su visita", Normal, center)); HttpContext.Current.Session.Add(C_SV_IMPRESION, LineasImpresion); var pd = new System.Drawing.Printing.PrintDocument(); pd.PrintPage += new System.Drawing.Printing.PrintPageEventHandler(pd_PrintPage); pd.DefaultPageSettings.PaperSize = new System.Drawing.Printing.PaperSize("3 1/8 inc x 220 mm", 313, (Index + 2) * Normal.Height); pd.DefaultPageSettings.Margins = new System.Drawing.Printing.Margins(0, 0, 0, 0); if (!string.IsNullOrEmpty(info.NombreImpresoraBarra)) { pd.PrinterSettings.PrinterName = info.NombreImpresoraBarra; } pd.Print(); } catch (Exception ex) { (LogManager.GetCurrentClassLogger()).Error(ex, "ha ocurrido un error al intentar Imprimir Cuenta"); throw new Exception(ex.Message); } }
protected void Page_Load(object sender, EventArgs e) { try { (LogManager.GetCurrentClassLogger()).Info("Ordenes.PageLoad"); string CodigoArea = Request["CodigoArea"]; string CodigoMesa = Request["CodigoMesa"]; string NombreMesa = Request["NombreMesa"]; (LogManager.GetCurrentClassLogger()).Info(string.Format("Area: {0}, CodMesa: {1}, Mesa: {2}", CodigoArea, CodigoMesa, NombreMesa)); if (CodigoArea != null) { Session["CodigoAreaActual"] = CodigoArea; } if (CodigoMesa != null) { using (var DB = new TPVDBEntities()) { ///-- Nombre de la mesa lblMesa.InnerText = NombreMesa; ///-- Agregar referencia al codigo de mesa Comanda.Attributes.Add("Data-CodigoMesa", CodigoMesa); Comanda.Attributes.Add("Data-CodigoArea", CodigoArea); var Ordenes = DB.SPC_GET_ORDENDETALLE(null, int.Parse(CodigoMesa), null, null, null, null, null, null, true); (LogManager.GetCurrentClassLogger()).Info("SPC_GET_ORDENDETALLE", Ordenes); foreach (var Orden in Ordenes) { lblPAX.InnerText = Orden.Comensales.ToString(); var a = new HtmlGenericControl("a"); var h4Cantidad = new HtmlGenericControl("h4"); var h4Producto = new HtmlGenericControl("h4"); var h4Precio = new HtmlGenericControl("h4"); var h6Nota = new HtmlGenericControl("h6"); a.Attributes.Add("href", "#"); a.Attributes.Add("Data-CodigoOrdenDetalle", Orden.Codigo_Orden_Detalle.ToString()); a.Attributes.Add("Data-PrecioVenta", CambioDecimal(Orden.PrecioVenta.Value)); a.Attributes.Add("Data-ImprimirCocina", Orden.Impresora ? "1" : "0"); ///-- Si el estado es "pendiente" if (Orden.Codigo_Estado_Orden_Detalle == 1) { a.Attributes.Add("class", "list-group-item list-group-item-danger"); } else { a.Attributes.Add("class", "list-group-item"); } h4Cantidad.Attributes.Add("class", "cantidad"); h4Cantidad.InnerText = Orden.Cantidad_Producto.ToString(); h4Producto.Attributes.Add("class", "producto"); h4Producto.InnerText = Orden.NombreProducto; h4Precio.Attributes.Add("class", "precio"); h4Precio.InnerText = CambioDecimal(Orden.Sub_Total_Precio_Producto); a.Controls.Add(h4Cantidad); a.Controls.Add(h4Producto); a.Controls.Add(h4Precio); ///-- Agregar Nota si el pedido posee if (Orden.Nota_Producto != null && Orden.Nota_Producto.Length > 0) { h6Nota.Attributes.Add("class", "nota"); h6Nota.InnerText = Orden.Nota_Producto; a.Controls.Add(h6Nota); } ///-- Agregar pedido a la comanda Comanda.Controls.Add(a); Comanda.Attributes.Add("Data-CodigoOrden", Orden.Codigo_Orden.ToString()); } var Categorias = DB.SPC_GET_CATEGORIA(null, 0, null, true); (LogManager.GetCurrentClassLogger()).Info("SPC_GET_CATEGORIA", Categorias); foreach (var Categoria in Categorias) { var li = new HtmlGenericControl("li"); var a = new HtmlGenericControl("a"); a.Attributes.Add("href", "#"); a.Attributes.Add("Data-CodigoCategoria", Categoria.Codigo_Categoria_Producto.ToString()); if (Categoria.Codigo_Categoria_Padre_Producto != 0) { a.Attributes.Add("Data-CodigoCategoriaPadre", Categoria.Codigo_Categoria_Padre_Producto.ToString()); } a.InnerText = Categoria.Categoria_Producto; li.Controls.Add(a); uListaCategorias.Controls.Add(li); } var Productos = DB.SPC_GET_PRODUCTO(null, null, null, null, null, true); (LogManager.GetCurrentClassLogger()).Info("SPC_GET_PRODUCTO", Productos); foreach (var Producto in Productos) { ///-- Si es extra if (Producto.Codigo_Tipo_Producto == 2 || Producto.Codigo_Tipo_Producto == 3) { var Extra = new HtmlGenericControl("a"); var imgExtra = new HtmlGenericControl("img"); var pExtra = new HtmlGenericControl("p"); Extra.Attributes.Add("href", "#"); Extra.Attributes.Add("Data-CodigoProducto", Producto.Codigo_Producto.ToString()); Extra.Attributes.Add("Data-NombreProducto", Producto.NombreProducto); Extra.Attributes.Add("Data-PrecioComoExtra", Producto.PrecioComoExtra.ToString()); Extra.Attributes.Add("class", "product"); imgExtra.Attributes.Add("class", "img-product"); imgExtra.Attributes.Add("src", string.Format("/utils/VisorImagenProducto.aspx?codigoproducto={0}", Producto.Codigo_Producto)); pExtra.InnerText = Producto.NombreProducto; Extra.Controls.Add(imgExtra); Extra.Controls.Add(pExtra); dExtras.Controls.Add(Extra); } } var Areas = DB.SPC_GET_AREA(null, null, null, true); (LogManager.GetCurrentClassLogger()).Info("SPC_GET_AREA", Areas); foreach (var Area in Areas) { (LogManager.GetCurrentClassLogger()).Info("Area" + Area.Area); (LogManager.GetCurrentClassLogger()).Info("Codigo" + Area.Codigo_Area); (LogManager.GetCurrentClassLogger()).Info("Color" + Area.Color_Area); var li = new HtmlGenericControl("li"); var a = new HtmlGenericControl("a"); if (int.Parse(CodigoArea) == Area.Codigo_Area) { dArea.Style.Add(HtmlTextWriterStyle.BackgroundColor, Area.Color_Area); li.Attributes.Add("class", "active"); } a.Attributes.Add("href", "#"); a.Attributes.Add("Data-CodigoArea", Area.Codigo_Area.ToString()); a.Attributes.Add("Data-ColorArea", Area.Color_Area); a.InnerText = Area.Area; li.Controls.Add(a); uListaAreas.Controls.Add(li); } (LogManager.GetCurrentClassLogger()).Info("Fin Loop"); } } (LogManager.GetCurrentClassLogger()).Info("Fin PageLoad"); } catch (Exception ex) { (LogManager.GetCurrentClassLogger()).Error(ex, "ha ocurrido un error al intentar Imprimir Cuenta"); throw new Exception(ex.Message); } }