Exemple #1
0
        public string CerrarPedido(string NumeroPedido, List <DetalleNotaSalida> Detalle)
        {
            //Nota de salida
            NotaSalida ns     = new NotaSalida();
            var        ultimo = db.NotaSalida.OrderByDescending(x => x.NumeroSalida).Take(1).FirstOrDefault();
            double     numero = 1;

            if (ultimo != null)
            {
                numero = double.Parse(ultimo.NumeroSalida.Replace("NS-", "")) + 1;
            }

            ns.NumeroSalida = "NS-" + double.Parse(numero.ToString()).ToString("#000000");
            ns.NumeroPedido = NumeroPedido;
            ns.FechaSalida  = DateTime.Now.ToShortDateString();
            //ns.idAlmacen = 1;
            var usuario = (LoginEntity)Session["Usuario"];

            if (usuario != null)
            {
                ns.UsuarioPicking = usuario.Usuario;
            }
            db.NotaSalida.Add(ns);

            //Detalle Nota de salida
            List <DetalleNotaSalida> detalleSalida = new List <DetalleNotaSalida>();
            DetalleNotaSalida        objDetalle;

            //Kardex
            Kardex objKardex;
            List <DetalleKardex> detalleKardex = new List <DetalleKardex>();
            DetalleKardex        dKardex;

            foreach (var item in Detalle)
            {
                //Detalle de la nota de salida
                objDetalle = new DetalleNotaSalida();
                objDetalle.NumeroSalida = ns.NumeroSalida;
                objDetalle.IdProducto   = item.IdProducto;
                objDetalle.Cantidad     = item.Cantidad;
                detalleSalida.Add(objDetalle);

                //Detalle del kardex
                objKardex = db.Kardex.FirstOrDefault(x => x.IdProducto == item.IdProducto); //&& x.IdAlmacen == IdAlmacen
                if (objKardex != null)
                {
                    dKardex = new DetalleKardex();
                    dKardex.NumeroKardex     = objKardex.NumeroKardex;
                    dKardex.NumeroDocumento  = NumeroPedido;
                    dKardex.TipodeMovimiento = 2;
                    dKardex.NumeroSalida     = ns.NumeroSalida;
                    dKardex.Fecha            = DateTime.Now;
                    dKardex.Cantidad         = item.Cantidad;
                    detalleKardex.Add(dKardex);
                }
            }

            //Detalle de Nota de Salida
            db.DetalleNotaSalida.AddRange(detalleSalida);

            //Kardex
            db.DetalleKardex.AddRange(detalleKardex);

            //Actualizamos el estado del pedido
            var pedido = db.Pedido.Find(NumeroPedido);

            if (pedido != null)
            {
                pedido.Estado = 3;                //Atendido
            }
            db.SaveChanges();

            return(ns.NumeroSalida);
        }
        public string GuardarNota(NotaIngreso nota)
        {
            if (nota.NumeroNotaIngreso == null)
            {
                var    ultimo = db.NotaIngreso.OrderByDescending(x => x.NumeroNotaIngreso).Take(1).FirstOrDefault();
                double numero = 1;
                if (ultimo != null)
                {
                    numero = double.Parse(ultimo.NumeroNotaIngreso.Replace("NI-", "")) + 1;
                }
                nota.NumeroNotaIngreso = "NI-" + double.Parse(numero.ToString()).ToString("#000000");

                db.NotaIngreso.Add(nota);

                //Agregamos un movimiento al Kardex
                Kardex objKardex;
                List <DetalleKardex> detalleKardex = new List <DetalleKardex>();
                DetalleKardex        dKardex;

                foreach (var item in nota.DetalleNotaIngreso)
                {
                    //Detalle del kardex
                    objKardex = db.Kardex.FirstOrDefault(x => x.IdProducto == item.IdProducto); //&& x.IdAlmacen == IdAlmacen
                    if (objKardex != null)
                    {
                        dKardex = new DetalleKardex();
                        dKardex.NumeroKardex      = objKardex.NumeroKardex;
                        dKardex.NumeroDocumento   = nota.NumeroOrdenCompra;
                        dKardex.TipodeMovimiento  = 1;
                        dKardex.NumeroNotaIngreso = nota.NumeroNotaIngreso;
                        dKardex.Fecha             = DateTime.Now;
                        dKardex.Cantidad          = item.Cantidad;
                        detalleKardex.Add(dKardex);
                    }
                }

                db.DetalleKardex.AddRange(detalleKardex);
            }
            else
            {
                var original = db.NotaIngreso.Find(nota.NumeroNotaIngreso);
                if (original != null)
                {
                    db.Entry(original).CurrentValues.SetValues(nota);

                    ////Ya no actualiza los items, porque tendría que modificar el kardex también

                    //db.DetalleNotaIngreso.RemoveRange(db.DetalleNotaIngreso.Where(x => x.NumeroNotaIngreso == nota.NumeroNotaIngreso));
                    //db.SaveChanges();

                    //DetalleNotaIngreso obj;

                    //foreach (var item in nota.DetalleNotaIngreso)
                    //{
                    //    obj = new DetalleNotaIngreso();
                    //    obj.Cantidad = item.Cantidad;
                    //    obj.IdProducto = item.IdProducto;
                    //    obj.NumeroNotaIngreso = item.NumeroNotaIngreso;

                    //    db.DetalleNotaIngreso.Add(obj);
                    //}
                }
            }

            db.SaveChanges();
            return(nota.NumeroNotaIngreso);
        }