public bool Eliminar(int id)
        {
            bool     paso     = false;
            Contexto contexto = new Contexto();

            try
            {
                Empeños recibo = contexto.Empeños.Find(id);
                if (recibo != null)
                {
                    foreach (var item in recibo.Detalle)
                    {
                        contexto.Articulos.Find(item.ArticuloId).Inventario -= item.Cantidad;
                    }
                    recibo.Detalle.Count();
                    contexto.Empeños.Remove(recibo);
                }
                if (contexto.SaveChanges() > 0)
                {
                    paso = true;
                }
                contexto.Dispose();
            }
            catch (Exception) { throw; }
            return(paso);
        }
        public bool Modificar(Cobros cobro)
        {
            bool              paso       = false;
            Contexto          contexto   = new Contexto();
            EmpeñosController controller = new EmpeñosController();

            try
            {
                Cobros  Anterior = Buscar(cobro.CobroId);
                decimal diferencia;
                diferencia = Anterior.Abono + cobro.Abono;
                decimal otradif = Anterior.Abono - cobro.Abono;
                Empeños recibos = controller.Buscar(cobro.EmpeñoId);
                recibos.Abono = Math.Abs(recibos.Abono - diferencia);
                recibos.UltimaFechadeVigencia = recibos.UltimaFechadeVigencia.AddDays(-AumentoDias(Anterior.Abono, recibos.MontoTotal));
                recibos.UltimaFechadeVigencia = recibos.UltimaFechadeVigencia.AddDays(AumentoDias(cobro.Abono, recibos.MontoTotal));
                EmpeñosController.ModificarEspecial(recibos);
                foreach (var item in controller.GetList(x => x.EmpeñoId == cobro.EmpeñoId))
                {
                    if ((item.MontoTotal + Ganancia(item.Fecha, item.MontoTotal)) - item.Abono == 0)
                    {
                        controller.EliminarParaCobro(cobro.EmpeñoId);
                    }
                }
                contexto.Entry(cobro).State = EntityState.Modified;
                if (contexto.SaveChanges() > 0)
                {
                    paso = true;
                }
                contexto.Dispose();
            }
            catch (Exception) { throw; }
            return(paso);
        }
        private bool Insertar(Empeños Empeño)
        {
            Contexto contexto = new Contexto();
            bool     paso     = false;

            try
            {
                if (contexto.Empeños.Add(Empeño) != null)
                {
                    foreach (var item in Empeño.Detalle)
                    {
                        contexto.Articulos.Find(item.ArticuloId).Inventario += item.Cantidad;
                    }
                }
                paso = contexto.SaveChanges() > 0;
            }
            catch (Exception)
            {
                throw;
            }
            finally
            {
                contexto.Dispose();
            }
            return(paso);
        }
        public Empeños Buscar(int id)
        {
            Contexto contexto = new Contexto();
            Empeños  Entrada  = new Empeños();

            try
            {
                Entrada = contexto.Empeños.Where(e => e.EmpeñoId == id).Include(d => d.Detalle).FirstOrDefault();
            }
            catch (Exception)
            {
                throw;
            }
            finally
            {
                contexto.Dispose();
            }
            return(Entrada);
        }
        public Empeños Buscar(int id)
        {
            Empeños  recibo   = new Empeños();
            Contexto contexto = new Contexto();

            try
            {
                recibo = contexto.Empeños.Find(id);
                if (recibo != null)
                {
                    recibo.Detalle.Count();
                    foreach (var item in recibo.Detalle)
                    {
                        string s = item.Articulos.Nombre;
                    }
                }
                contexto.Dispose();
            }
            catch (Exception) { throw; }
            return(recibo);
        }
        public bool Modificar(Empeños Empeño)
        {
            bool     paso     = false;
            Contexto contexto = new Contexto();

            try
            {
                var recibos = Buscar(Empeño.EmpeñoId);
                if (recibos != null)
                {
                    foreach (var item in recibos.Detalle)
                    {
                        contexto.Articulos.Find(item.ArticuloId).Inventario -= item.Cantidad;
                        if (!Empeño.Detalle.ToList().Exists(v => v.ID == item.ID))
                        {
                            item.Articulos             = null;
                            contexto.Entry(item).State = EntityState.Deleted;
                        }
                    }
                    foreach (var item in Empeño.Detalle)
                    {
                        contexto.Articulos.Find(item.ArticuloId).Inventario += item.Cantidad;
                        var estado = item.ID > 0 ? EntityState.Modified : EntityState.Added;
                        contexto.Entry(item).State = estado;
                    }
                    Empeños EntradaAnterior = Buscar(Empeño.EmpeñoId);
                    decimal diferencia;
                    diferencia = EntradaAnterior.MontoTotal - Empeño.MontoTotal;
                    contexto.Entry(Empeño).State = EntityState.Modified;
                }
                if (contexto.SaveChanges() > 0)
                {
                    paso = true;
                }
                contexto.Dispose();
            }
            catch (Exception) { throw; }
            return(paso);
        }
        public bool EliminarParaCobro(int id)
        {
            bool     paso     = false;
            Contexto contexto = new Contexto();

            try
            {
                Empeños recibos = contexto.Empeños.Find(id);
                if (recibos != null)
                {
                    recibos.Detalle.Count();
                    contexto.Empeños.Remove(recibos);
                }
                if (contexto.SaveChanges() > 0)
                {
                    paso = true;
                    contexto.Dispose();
                }
            }
            catch (Exception) { throw; }
            return(paso);
        }
        public bool Guardar(Empeños Empeño)
        {
            Contexto contexto = new Contexto();
            bool     paso     = false;

            try
            {
                if (Empeño.EmpeñoId == 0)
                {
                    paso = Insertar(Empeño);
                }
                else
                {
                    paso = Modificar(Empeño);
                }
            }
            catch (Exception)
            {
                throw;
            }
            return(paso);
        }
        public static bool ModificarEspecial(Empeños Empeño)
        {
            bool              paso       = false;
            Contexto          contexto   = new Contexto();
            EmpeñosController controller = new EmpeñosController();

            try
            {
                Empeños Anterior = controller.Buscar(Empeño.EmpeñoId);
                decimal diferencia;
                diferencia = Anterior.Abono - Empeño.Abono;
                Empeños recibos = controller.Buscar(Empeño.EmpeñoId);
                recibos.Abono = Math.Abs(recibos.Abono - diferencia);
                contexto.Entry(Empeño).State = EntityState.Modified;
                if (contexto.SaveChanges() > 0)
                {
                    paso = true;
                }
                contexto.Dispose();
            }
            catch (Exception) { throw; }
            return(paso);
        }