Example #1
0
        public void AVenta(ClsVentas ObjVent)
        {                             //Doy de alta la venta
            ClsBDP BD = new ClsBDP(); //Creo un objeto de la clase de base de datos para utilizarla y realizar la comunicación
            //Obtengo los valores de la venta
            DateTime Fecha = ObjVent.GetFecha();
            int      Monto = ObjVent.GetMonto();

            using (SqlCommand comand = new SqlCommand("PRAInsertarVenta", BD.Conn))//Selecciono el procedimiento almacenado
            {
                try
                {
                    comand.CommandType = System.Data.CommandType.StoredProcedure;
                    //Defino los parámetros a ingresar del procedimiento almacenado y le envío los datos correspondientes
                    comand.Parameters.Add(new SqlParameter("@Fecha", Fecha));
                    comand.Parameters.Add(new SqlParameter("@Monto", Monto));
                    System.Data.DataTable DT = new System.Data.DataTable();
                    SqlDataAdapter        DA = new SqlDataAdapter(comand);
                    BD.Open();   //Abro la conexión
                    DA.Fill(DT); //Doy Fill al dt
                    BD.Close();  //Cierro la conexión
                    MessageBox.Show("¡Venta generada con éxito!");
                }
                catch (Exception ex)//Muestro una salida en pantalla del error en caso de que lo haya
                {
                    Console.Write("Error al generar venta: " + ex.Message);
                }
            }
        }
Example #2
0
        public ActionResult ReporteVenta(String fFechaInicial, String fFechaFinal, String Tipo)
        {
            if (!ValidaSesion())
            {
                return(RedirectToAction("LoginOut", "Account"));
            }
            if (!ValidaFuncionalidad(NumeroDePantalla, (byte)ClsEnumerables.Funcionalidades.REPORTE))
            {
                return(RedirectToAction("Index", "Venta"));
            }
            String Ruta = Server.MapPath(ClsConfiguracion.RutaDescarga + "/" + MoSesion.NombreDeUsuario + "/");

            if (!ClsAdicional.ClsArchivos.FileExists(Ruta, true))
            {
                ClsAdicional.ClsArchivos.CrearDirectorio(Ruta);
            }
            if (string.IsNullOrEmpty(fFechaInicial))
            {
                if (Fechas.Count() != 0)
                {
                    fFechaInicial = Fechas.Min(x => x).ToString("yyyy-MM-dd");
                }
                else
                {
                    fFechaInicial = DateTime.Now.ToString("yyyy-MM-dd");
                }
            }
            DateTime DFechaInicial = Convert.ToDateTime(fFechaInicial).AddHours(00).AddMinutes(00).AddSeconds(00);

            if (String.IsNullOrEmpty(fFechaFinal))
            {
                fFechaFinal = DateTime.Now.ToString("yyyy-MM-dd");
            }
            DateTime DFechaFinal = Convert.ToDateTime(fFechaFinal).AddHours(23).AddMinutes(59).AddSeconds(59);

            TempDataDictionary temporalData = new TempDataDictionary
            {
                { "FechaInicio", DFechaInicial.ToString("yyyy-MM-dd") },
                { "FechaFin", DFechaFinal.ToString("yyyy-MM-dd") },
                { "Web", (Tipo == "Web") }
            };

            List <Mod.Entity.VentasTotalesDetalle_Result> VentasTotales = ClsVentas.VentaDetalle(DFechaInicial, DFechaFinal, 0);
            String FileName = String.Format("VentaTotal-{0}{1}{2}", DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day);
            PDFBuild <List <Mod.Entity.VentasTotalesDetalle_Result> > pDFBuild = new PDFBuild <List <Mod.Entity.VentasTotalesDetalle_Result> >(ControllerContext, "ReporteVenta", FileName, Ruta, temporalData, VentasTotales);

            if (Tipo != "Web")
            {
                return(pDFBuild.generaPDF());
            }
            foreach (var tempdata in temporalData)
            {
                TempData[tempdata.Key] = tempdata.Value;
            }
            return(View(VentasTotales));
        }
Example #3
0
        public JsonResult ObtenDetalleDeVentas(short fFolioDeOperacion)
        {
            String filtro         = "FolioDeOperacion == " + fFolioDeOperacion.ToString();
            var    DetalleDeVenta = (from q in ClsVentas.getList(filtro)
                                     select new {
                q.FolioDeOperacion,
                q.NombreDeProducto,
                q.CantidadDeProducto,
                q.PrecioUnitario,
                q.ImporteDeProducto
            });

            return(Json(new { data = DetalleDeVenta }, JsonRequestBehavior.AllowGet));
        }
Example #4
0
        public ClsAdicional.ClsResultado GeneraTicket(short FolioDeVenta)
        {
            ClsAdicional.ClsResultado Resultado = new ClsAdicional.ClsResultado(true, String.Empty);
            try
            {
                List <ClsParametros> ParametrosTicket = (from q in ClsParametros.getList() where q.CveTipo == 2 select q).ToList();
                var lista = (from q in ClsVentasTotales.getList() join v in ClsVentas.getList() on q.FolioDeOperacion equals v.FolioDeOperacion where q.FolioDeOperacion == FolioDeVenta select new { q, v }).ToList();

                List <Object> Producto = new List <Object>();
                foreach (var vproducto in lista)
                {
                    Producto.Add(new { vproducto.v.NombreDeProducto, vproducto.v.PrecioUnitario, vproducto.v.CantidadDeProducto, vproducto.v.ImporteDeProducto });
                }

                Object TicketObj = new
                {
                    FolioDeVenta     = FolioDeVenta,
                    Empresa          = (from q in ParametrosTicket where q.NombreDeParametro == "Empresa" select q.ValorDeParametro).FirstOrDefault(),
                    Dir              = (from q in ParametrosTicket where q.NombreDeParametro == "Direccion" select q.ValorDeParametro).FirstOrDefault(),
                    Tel              = (from q in ParametrosTicket where q.NombreDeParametro == "Telefono" select q.ValorDeParametro).FirstOrDefault(),
                    Atiende          = String.Format("{0} {1} {2}", MoSesion.NombreDePersona, MoSesion.ApellidoPaterno, MoSesion.ApellidoMaterno).ToUpper().Trim(),
                    Fecha            = String.Format("Fecha: {0} Hora: {1}", DateTime.Now.ToShortDateString(), DateTime.Now.ToShortTimeString()),
                    ImporteTotal     = lista.FirstOrDefault().q.ImporteNeto,
                    ImporteEntregado = lista.FirstOrDefault().q.ImporteEntregado,
                    Cambio           = lista.FirstOrDefault().q.ImporteCambio,
                    TextoFinal       = (from q in ParametrosTicket where q.NombreDeParametro == "TextoFinal" select q.ValorDeParametro).FirstOrDefault(),
                    ListaProducto    = Producto
                };
                //ClsTicket Ticket = new ClsTicket();
                //Ticket.TextoCentro(String.Format("Empresa {0}", (from q in ParametrosTicket where q.NombreDeParametro == "Empresa" select q.ValorDeParametro).FirstOrDefault()));
                //ClsTicket.LineasCaracter("*");
                //Ticket.TextoCentro(String.Format("Dir: {0}", (from q in ParametrosTicket where q.NombreDeParametro == "Direccion" select q.ValorDeParametro).FirstOrDefault()));
                //Ticket.TextoCentro(String.Format("Tel: {0}", (from q in ParametrosTicket where q.NombreDeParametro == "Telefono" select q.ValorDeParametro).FirstOrDefault()));
                //Ticket.TextoIzquierda(String.Empty);
                //Ticket.TextoCentro("Ticket de Venta");
                //Ticket.TextoIzquierda(String.Format("Fecha: {0} Hora: {1}", DateTime.Now.ToShortDateString(), DateTime.Now.ToShortTimeString()));
                //Ticket.TextoIzquierda("Le Atendio: " + String.Format("{0} {1} {2}", MoSesion.NombreDePersona, MoSesion.ApellidoPaterno, MoSesion.ApellidoMaterno).ToUpper());
                //Ticket.TextoIzquierda(String.Empty);
                //ClsTicket.LineasCaracter("*");
                //ClsTicket.EncabezadoVenta();
                //ClsTicket.LineasCaracter("*");
                //foreach (var vproducto in lista)
                //{
                //    Ticket.AgregaArticulo(vproducto.v.NombreDeProducto, vproducto.v.PrecioUnitario, vproducto.v.CantidadDeProducto, vproducto.v.ImporteDeProducto);
                //}
                //ClsTicket.LineasCaracter("*");
                //Ticket.AgregaTotales("Total:", lista.FirstOrDefault().q.ImporteNeto);
                //Ticket.TextoIzquierda(String.Empty);
                //Ticket.AgregaTotales("Efectivo Entregado:", lista.FirstOrDefault().q.ImporteEntregado);
                //Ticket.AgregaTotales("Efectivo Devuelto:", lista.FirstOrDefault().q.ImporteCambio);
                //Ticket.TextoIzquierda(String.Empty);
                //ClsTicket.LineasCaracter("*");
                //Ticket.TextoCentro((from q in ParametrosTicket where q.NombreDeParametro == "TextoFinal" select q.ValorDeParametro).FirstOrDefault());
                //ClsTicket.LineasCaracter("*");

                //Ticket.NombreDeTicket = String.Format("Ticket{0}{1}.txt", lista.FirstOrDefault().q.FolioDeOperacion, DateTime.Now.ToString("yyyyMMdd"));
                //Ticket.RutaDeTicket = System.Web.HttpContext.Current.Server.MapPath(ClsConfiguracion.Tickets);

                //Ticket.ImprimirTiket("POS-58", ref Resultado);
                //if (!Resultado.Resultado)
                //{
                //    ClsBitacora.GeneraBitacora(1, 1, "ImprimirTiket", Resultado.Mensaje);
                //}
                // Ticket.RegresaTextoTicket();
                Resultado.Adicional = TicketObj;
            }
            catch (Exception e)
            {
                ClsBitacora.GeneraBitacora((new ClsVentasTotales()).NumeroDePantallaKuup, 1, "GeneraTicket", String.Format(Recursos.Textos.Bitacora_TextoDeError, e.GetType().ToString(), e.Message.Trim(), e.GetHashCode().ToString()));
            }

            return(Resultado);
        }
Example #5
0
        public JsonResult DeleteDeProducto(String RegistroPrevio, String RegistrosPrevios)
        {
            List <ClsVentas>            Registro      = new List <ClsVentas>();
            ClsVentas                   RegistroPrev  = ClsAdicional.Deserializar <ClsVentas>(RegistroPrevio);
            List <ClsVentas>            RegistrosPrev = ClsAdicional.Deserializar <List <ClsVentas> >(RegistrosPrevios);
            List <ClsConfiguraPaquetes> Paquete       = new List <ClsConfiguraPaquetes>();
            String Filtro = String.Empty;
            bool   EsHijo = false;

            if (RegistrosPrev.FindAll(x => x.NumeroDeProducto != RegistroPrev.NumeroDeProducto).Count() != 0)
            {
                foreach (var item in RegistrosPrev.FindAll(x => x.NumeroDeProducto != RegistroPrev.NumeroDeProducto))
                {
                    Filtro = String.Format("NumeroDeProductoPadre == {0} && NumeroDeProductoHijo == {1}", RegistroPrev.NumeroDeProducto, item.NumeroDeProducto);
                    var Encontrado = ClsConfiguraPaquetes.getList(Filtro);
                    if (Encontrado.Count() != 0)
                    {
                        Paquete.AddRange(Encontrado);
                    }
                    else
                    {
                        Filtro     = String.Format("NumeroDeProductoPadre == {0} && NumeroDeProductoHijo == {1}", item.NumeroDeProducto, RegistroPrev.NumeroDeProducto);
                        Encontrado = ClsConfiguraPaquetes.getList(Filtro);
                        if (Encontrado.Count() != 0)
                        {
                            EsHijo = true;
                            Paquete.AddRange(Encontrado);
                        }
                    }
                }
            }
            if (Paquete.Count() != 0)
            {
                Registro.Add(new ClsVentas()
                {
                    NumeroDeProducto       = RegistroPrev.NumeroDeProducto,
                    CodigoDeBarras         = RegistroPrev.CodigoDeBarras,
                    NumeroDeTipoDeProducto = RegistroPrev.NumeroDeTipoDeProducto,
                    NumeroDeMarca          = RegistroPrev.NumeroDeMarca,
                    CantidadDeProducto     = 0,
                    ImporteDeProducto      = 0,
                    PrecioUnitario         = 0,
                    NombreDeProducto       = RegistroPrev.NombreDeProducto
                });
                short Cantidad = RegistroPrev.CantidadDeProducto;
                foreach (var pac in Paquete)
                {
                    var Item = RegistrosPrev.Find(x => x.NumeroDeProducto == pac.NumeroDeProductoHijo);
                    if (EsHijo)
                    {
                        Item = RegistrosPrev.Find(x => x.NumeroDeProducto == pac.NumeroDeProductoPadre);
                    }
                    if (Cantidad > Item.CantidadDeProducto)
                    {
                        Cantidad = (short)(Cantidad - Item.CantidadDeProducto);
                        Registro.Add(new ClsVentas()
                        {
                            NumeroDeProducto       = Item.NumeroDeProducto,
                            CodigoDeBarras         = Item.CodigoDeBarras,
                            NumeroDeTipoDeProducto = Item.NumeroDeTipoDeProducto,
                            NumeroDeMarca          = Item.NumeroDeMarca,
                            CantidadDeProducto     = 0,
                            ImporteDeProducto      = 0,
                            PrecioUnitario         = 0,
                            NombreDeProducto       = Item.NombreDeProducto
                        });
                    }
                    else if (Cantidad < Item.CantidadDeProducto)
                    {
                        Registro.Add(new ClsVentas()
                        {
                            NumeroDeProducto       = Item.NumeroDeProducto,
                            CodigoDeBarras         = Item.CodigoDeBarras,
                            NumeroDeTipoDeProducto = Item.NumeroDeTipoDeProducto,
                            NumeroDeMarca          = Item.NumeroDeMarca,
                            CantidadDeProducto     = (short)(Item.CantidadDeProducto - Cantidad),
                            ImporteDeProducto      = 0,
                            PrecioUnitario         = 0,
                            NombreDeProducto       = Item.NombreDeProducto
                        });
                        Cantidad = 0;
                    }
                    else
                    {
                        Registro.Add(new ClsVentas()
                        {
                            NumeroDeProducto       = Item.NumeroDeProducto,
                            CodigoDeBarras         = Item.CodigoDeBarras,
                            NumeroDeTipoDeProducto = Item.NumeroDeTipoDeProducto,
                            NumeroDeMarca          = Item.NumeroDeMarca,
                            CantidadDeProducto     = 0,
                            ImporteDeProducto      = 0,
                            PrecioUnitario         = 0,
                            NombreDeProducto       = Item.NombreDeProducto
                        });
                        Cantidad = 0;
                    }
                }
            }
            else
            {
                Registro.Add(new ClsVentas()
                {
                    NumeroDeProducto       = RegistroPrev.NumeroDeProducto,
                    CodigoDeBarras         = RegistroPrev.CodigoDeBarras,
                    NumeroDeTipoDeProducto = RegistroPrev.NumeroDeTipoDeProducto,
                    NumeroDeMarca          = RegistroPrev.NumeroDeMarca,
                    CantidadDeProducto     = 0,
                    ImporteDeProducto      = 0,
                    PrecioUnitario         = 0,
                    NombreDeProducto       = RegistroPrev.NombreDeProducto
                });
            }
            List <ClsVentas> RegistroTemp = new List <ClsVentas>();

            foreach (var reg in Registro)
            {
                if (RegistrosPrev.Exists(x => x.NumeroDeTipoDeProducto == reg.NumeroDeTipoDeProducto && x.NumeroDeMarca == reg.NumeroDeMarca && x.NumeroDeProducto != reg.NumeroDeProducto))
                {
                    List <ClsVentas>            RegistroImplicados = RegistrosPrev.FindAll(x => x.NumeroDeTipoDeProducto == reg.NumeroDeTipoDeProducto && x.NumeroDeMarca == reg.NumeroDeMarca && x.NumeroDeProducto != reg.NumeroDeProducto);
                    short                       CantidadMayore     = (short)(RegistroImplicados.Sum(x => x.CantidadDeProducto) + reg.CantidadDeProducto);
                    List <ClsConfiguraMayoreos> Mayoreos           = ClsConfiguraMayoreos.getList(String.Format("NumeroDeProducto == {0} && CodigoDeBarras == \"{1}\" && CantidadMinima <= {2} && CantidadMaxima >= {2}", reg.NumeroDeProducto, reg.CodigoDeBarras, CantidadMayore));
                    if (Mayoreos.Count() != 0)
                    {
                        if (Mayoreos.FirstOrDefault().PrecioDeMayoreo != RegistroImplicados.FirstOrDefault().PrecioUnitario)
                        {
                            foreach (var item in RegistrosPrev.FindAll(x => x.NumeroDeTipoDeProducto == reg.NumeroDeTipoDeProducto && x.NumeroDeMarca == reg.NumeroDeMarca && x.NumeroDeProducto != reg.NumeroDeProducto))
                            {
                                if (!Registro.Exists(x => x.NumeroDeProducto == item.NumeroDeProducto))
                                {
                                    RegistroTemp.Add(new ClsVentas()
                                    {
                                        NumeroDeProducto       = item.NumeroDeProducto,
                                        CodigoDeBarras         = item.CodigoDeBarras,
                                        NumeroDeTipoDeProducto = item.NumeroDeTipoDeProducto,
                                        NumeroDeMarca          = item.NumeroDeMarca,
                                        CantidadDeProducto     = item.CantidadDeProducto,
                                        ImporteDeProducto      = Math.Round(item.CantidadDeProducto * Mayoreos.FirstOrDefault().PrecioDeMayoreo, 2),
                                        PrecioUnitario         = Mayoreos.FirstOrDefault().PrecioDeMayoreo,
                                        NombreDeProducto       = item.NombreDeProducto
                                    });
                                }
                                else
                                {
                                    var previo = Registro.Find(x => x.NumeroDeProducto == item.NumeroDeProducto);
                                    if (previo.CantidadDeProducto != 0)
                                    {
                                        previo.PrecioUnitario    = Mayoreos.FirstOrDefault().PrecioDeMayoreo;
                                        previo.ImporteDeProducto = Math.Round(reg.CantidadDeProducto * reg.PrecioUnitario, 2);
                                    }
                                }
                            }
                            if (reg.CantidadDeProducto != 0)
                            {
                                reg.PrecioUnitario    = Mayoreos.FirstOrDefault().PrecioDeMayoreo;
                                reg.ImporteDeProducto = Math.Round(reg.CantidadDeProducto * reg.PrecioUnitario, 2);
                            }
                        }
                    }
                    else
                    {
                        foreach (var item in RegistrosPrev.FindAll(x => x.NumeroDeTipoDeProducto == reg.NumeroDeTipoDeProducto && x.NumeroDeMarca == reg.NumeroDeMarca && x.NumeroDeProducto != reg.NumeroDeProducto))
                        {
                            if (!Registro.Exists(x => x.NumeroDeProducto == item.NumeroDeProducto))
                            {
                                ClsProductos producto = ClsProductos.getList("NumeroDeProducto == " + item.NumeroDeProducto + " && CodigoDeBarras == \"" + item.CodigoDeBarras + "\"").FirstOrDefault();
                                if (producto.PrecioUnitario != item.PrecioUnitario)
                                {
                                    RegistroTemp.Add(new ClsVentas()
                                    {
                                        NumeroDeProducto       = item.NumeroDeProducto,
                                        CodigoDeBarras         = item.CodigoDeBarras,
                                        NumeroDeTipoDeProducto = item.NumeroDeTipoDeProducto,
                                        NumeroDeMarca          = item.NumeroDeMarca,
                                        CantidadDeProducto     = item.CantidadDeProducto,
                                        ImporteDeProducto      = Math.Round(item.CantidadDeProducto * producto.PrecioUnitario, 2),
                                        PrecioUnitario         = producto.PrecioUnitario,
                                        NombreDeProducto       = item.NombreDeProducto
                                    });
                                }
                            }
                            else
                            {
                                var previo = Registro.Find(x => x.NumeroDeProducto == item.NumeroDeProducto);
                                if (previo.CantidadDeProducto != 0)
                                {
                                    ClsProductos producto = ClsProductos.getList("NumeroDeProducto == " + previo.NumeroDeProducto + " && CodigoDeBarras == \"" + previo.CodigoDeBarras + "\"").FirstOrDefault();
                                    previo.PrecioUnitario    = producto.PrecioUnitario;
                                    previo.ImporteDeProducto = Math.Round(previo.CantidadDeProducto * previo.PrecioUnitario, 2);
                                }
                            }
                        }
                        if (reg.CantidadDeProducto != 0)
                        {
                            ClsProductos producto = ClsProductos.getList("NumeroDeProducto == " + reg.NumeroDeProducto + " && CodigoDeBarras == \"" + reg.CodigoDeBarras + "\"").FirstOrDefault();
                            reg.PrecioUnitario    = producto.PrecioUnitario;
                            reg.ImporteDeProducto = Math.Round(reg.CantidadDeProducto * reg.PrecioUnitario, 2);
                        }
                    }
                }
            }
            Registro.AddRange(RegistroTemp);
            return(Json(new { Registro }, JsonRequestBehavior.AllowGet));
        }