Пример #1
0
        public override bool Modificar(Recibos recibo)
        {
            bool paso = false;


            Repositorio <Recibos> repo = new Repositorio <Recibos>();

            try
            {
                var recibos = repo.Buscar(recibo.ReciboId);
                Repositorio <Efectivos> repositorio = new Repositorio <Efectivos>();
                Repositorio <Articulos> repoA       = new Repositorio <Articulos>();


                _contexto = new Contexto();


                //     Contexto contexto = new Contexto();


                if (recibos != null)
                {
                    var reciboanterior = _contexto.recibosdetalles.Where(x => x.ReciboId == recibo.ReciboId).AsNoTracking().ToList();

                    foreach (var item in reciboanterior)
                    {
                        //var art = _contexto.articulos.Where(x => x.ArticuloId == item.ArticuloId).AsNoTracking().ToList();

                        foreach (var item2 in repoA.GetList(x => x.ArticuloId == item.ArticuloId))
                        {
                            _contexto.articulos.Find(item.ArticuloId).Inventario -= item.Cantidad;
                            //contexto.SaveChanges();
                        }

                        _contexto.Entry(item).State = System.Data.Entity.EntityState.Deleted;
                    }


                    foreach (var item in recibo.Detalle)
                    {
                        //var art = _contexto.articulos.Where(x => x.ArticuloId == item.ArticuloId).AsNoTracking().ToList();

                        foreach (var item2 in repoA.GetList(x => x.ArticuloId == item.ArticuloId))
                        {
                            _contexto.articulos.Find(item.ArticuloId).Inventario += item.Cantidad;
                            //contexto.SaveChanges();
                        }

                        //var estado = item.ID > 0 ? EntityState : EntityState.Added;

                        _contexto.Entry(item).State = EntityState.Added;
                    }



                    Recibos EntradaAnterior = repo.Buscar(recibo.ReciboId);


                    //identificar la diferencia ya sea restada o sumada
                    decimal diferencia;

                    diferencia = EntradaAnterior.MontoTotal - recibo.MontoTotal;

                    //aplicar diferencia al inventario
                    Efectivos efectivos = repositorio.Buscar(recibo.EfectivoId);
                    efectivos.EfectivoCapital += diferencia;
                    repositorio.Modificar(efectivos);

                    _contexto.Entry(recibo).State = EntityState.Modified;
                }


                if (_contexto.SaveChanges() > 0)
                {
                    paso = true;
                }
                _contexto.Dispose();
            }
            catch (Exception) { throw; }
            return(paso);
        }