コード例 #1
0
        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;
        }
コード例 #2
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;            
        }