Beispiel #1
0
        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." });
            }
        }
Beispiel #3
0
        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);
        }
Beispiel #4
0
 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);
         }
     }
 }
Beispiel #5
0
        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);
        }
Beispiel #6
0
        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);
            }
        }
Beispiel #7
0
        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);
            }
        }