示例#1
0
        public JsonResult Edit(Produto Produto)
        {
            var Retorno = new RetornoJson();

            if (Produto.Nome == null)
            {
                Retorno.Mensagem += "<span> Inserir o Produto</span>";
            }
            if (Produto.Preco <= 0)
            {
                Retorno.Mensagem += "<span> Inserir um Preço valido</span>";
            }
            if (Produto.Quantidade <= 0)
            {
                Retorno.Mensagem += "<span> Inserir Quantidade</span>";
            }

            if (Retorno.Mensagem != "")
            {
                return(Json(Retorno, JsonRequestBehavior.AllowGet));
            }

            var bdProduto = new ProdutoRepositorioEF(contexto);

            bdProduto.Atualizar(Produto);
            bdProduto.SalvarTodos();

            Retorno.Mensagem += "<span> Editado com sucesso</span>";

            Retorno.Sucesso      = true;
            Retorno.Redirecionar = true;
            Retorno.Link         = "/Admin/Produto/Index";

            return(Json(Retorno, JsonRequestBehavior.AllowGet));
        }
示例#2
0
        public JsonResult EditarEstoque(Produto produto)
        {
            var Retorno = new RetornoJson();

            if (produto.Quantidade <= 0)
            {
                Retorno.Mensagem += "<span>Inserir uma Quantidade Maior que ZERO</span>";
            }

            if (produto.StatusId.Equals(2))
            {
                Retorno.Mensagem += "<span>O Produto deve está ativo para continuar</span>";
            }

            if (Retorno.Mensagem != "")
            {
                return(Json(Retorno, JsonRequestBehavior.AllowGet));
            }

            var bdProduto        = new ProdutoRepositorioEF(contexto);
            var ProdutoAtualizar = contexto.Produto.Where(x => x.ProdutoId == produto.ProdutoId).FirstOrDefault();

            ProdutoAtualizar.Quantidade = ProdutoAtualizar.Quantidade + produto.Quantidade;
            bdProduto.Atualizar(ProdutoAtualizar);
            bdProduto.SalvarTodos();

            Retorno.Sucesso      = true;
            Retorno.Redirecionar = true;
            Retorno.Link         = "/Admin/Produto/Index";
            return(Json(Retorno, JsonRequestBehavior.AllowGet));
        }
示例#3
0
        public ActionResult MudarStatus(int id)
        {
            using (var bdProduto = new ProdutoRepositorioEF(contexto))
            {
                var produto = contexto.Produto.FirstOrDefault(x => x.ProdutoId == id);

                produto.StatusId = produto.StatusId == 1 ? 2 : 1;
                bdProduto.Atualizar(produto);
                bdProduto.SalvarTodos();
            }

            return(RedirectToAction("Index"));
        }
示例#4
0
        public JsonResult Create(Produto Produto)
        {
            var Retorno = new RetornoJson();

            if (Produto.Nome == null)
            {
                Retorno.Mensagem += "<span> Inserir o Produto</span>";
            }
            if (Produto.Preco <= 0)
            {
                Retorno.Mensagem += "<span> Inserir um Preço valido</span>";
            }
            if (Produto.Quantidade <= 0)
            {
                Retorno.Mensagem += "<span> Inserir Quantidade</span>";
            }

            if (Retorno.Mensagem != "")
            {
                return(Json(Retorno, JsonRequestBehavior.AllowGet));
            }

            try
            {
                var bdProduto = new ProdutoRepositorioEF(contexto);
                bdProduto.Adicionar(Produto);
                bdProduto.SalvarTodos();

                Retorno.Mensagem    += "<span> Cadastrado com sucesso</span>";
                Retorno.Sucesso      = true;
                Retorno.Redirecionar = true;
                Retorno.Link         = "/Admin/Produto/Index";
            }
            catch (Exception e)
            {
                Retorno.Mensagem += "<span> Cadastrado nao foi completado</span>";
            }
            return(Json(Retorno, JsonRequestBehavior.AllowGet));
        }
示例#5
0
        public JsonResult EditProdutoFiado(RegistroCompraFiada compraFiada, FormCollection collection)
        {
            var Retorno = new RetornoJson();

            if (!UI.Web.Helpers.Utilitarios.validarData(compraFiada.DataParaPagamento.ToString()))
            {
                Retorno.Mensagem += "<span>Data invalida, inserir data correta</span>";
            }
            if (compraFiada.DataParaPagamento <= compraFiada.DataCompra || compraFiada.DataParaPagamento > compraFiada.DataCompra.AddMonths(2))
            {
                Retorno.Mensagem += "<span> Não aceitamos data anterior a data da compra ou data para pagamento maior que dois meses em relação a compra</span>";
            }
            if (Retorno.Mensagem != "")
            {
                return(Json(Retorno, JsonRequestBehavior.AllowGet));
            }

            var bdRegistroCompraFiada = new RegistroCompraFiadaRepositorioEF(contexto);

            bdRegistroCompraFiada.Atualizar(compraFiada);
            bdRegistroCompraFiada.SalvarTodos();


            var ProdutosSalvosBancoDados = contexto.ProdutoFiado.Where(x => x.RegistroCompraFiadaId == compraFiada.RegistroCompraFiadaId).ToList();
            var bdProduto      = new ProdutoRepositorioEF(contexto);
            var bdProdutoFiado = new ProdutoFiadoRepositorioEF(contexto);
            var Estoque        = contexto.Produto.ToList();

            if (collection["Produtos"] == null)
            {
                Retorno.Mensagem += "<span> Não foi selecionado nenhum Produto!<span>";
                if (Retorno.Mensagem != "")
                {
                    return(Json(Retorno, JsonRequestBehavior.AllowGet));
                }
                //// devolve para o estoque os produtos da compra fiada
                //foreach (var produtoSalvoBancoDados in ProdutosSalvosBancoDados)
                //{
                //    var Produto = contexto.Produto.Where(x => x.ProdutoId == produtoSalvoBancoDados.ProdutoId).FirstOrDefault();
                //    Produto.Quantidade = Produto.Quantidade + produtoSalvoBancoDados.Quantidade;
                //    bdProduto.Atualizar(Produto);
                //}
                //bdProduto.SalvarTodos();

                ////exclui a compra de produto fiado
                //var ProdutosFiado = contexto.ProdutoFiado.Where(x => x.RegistroCompraFiadaId == compraFiada.RegistroCompraFiadaId).ToList();
                //foreach (var produtoFiado in ProdutosFiado)
                //{
                //    bdProdutoFiado.Excluir(x => x.RegistroCompraFiadaId == produtoFiado.RegistroCompraFiadaId && x.ProdutoId == produtoFiado.ProdutoId);
                //}
                //bdProdutoFiado.SalvarTodos();

                //Retorno.Sucesso = true;
                //Retorno.LimparForm = true;
                //Retorno.Redirecionar = true;
                //Retorno.Link = "/Admin/CompraFiado/Index";
            }
            else
            {
                var Produtos = collection["Produtos"].Split(',');

                // se o poduto tiver no banco mas nao tiver na lista
                foreach (var produtoBanco in ProdutosSalvosBancoDados)
                {
                    if (!Produtos.Any(x => x == produtoBanco.ProdutoId.ToString()))
                    {
                        var ProdutoAtualizar = contexto.Produto.Where(x => x.ProdutoId == produtoBanco.ProdutoId).FirstOrDefault();
                        //devolver para o estoque o produto excluido da compra
                        ProdutoAtualizar.Quantidade = ProdutoAtualizar.Quantidade + produtoBanco.Quantidade;
                        bdProduto.Atualizar(ProdutoAtualizar);
                        bdProduto.SalvarTodos();
                        // excluir o produto que não foi selecionado na edição
                        bdProdutoFiado.Excluir(x => x.RegistroCompraFiadaId == compraFiada.RegistroCompraFiadaId &&
                                               x.ProdutoId == produtoBanco.ProdutoId);
                        bdProdutoFiado.SalvarTodos();
                    }
                }

                foreach (var produto in Produtos)
                {
                    var idProduto = int.Parse(produto);
                    var qtde      = int.Parse(collection["Quantidade_" + idProduto]);
                    //validação importante que não permite valor negativo
                    if (qtde < 0)
                    {
                        Retorno.Mensagem = "<span>Valor não pode ser Negativo</span>";
                        if (Retorno.Mensagem != "")
                        {
                            return(Json(Retorno, JsonRequestBehavior.AllowGet));
                        }
                    }
                    var Produto = contexto.Produto.Where(x => x.ProdutoId == idProduto).FirstOrDefault();

                    // se na lista tiver e no banco não tiver salva o que ta na lista no banco
                    if (!ProdutosSalvosBancoDados.Any(x => x.ProdutoId == idProduto) || ProdutosSalvosBancoDados == null)
                    {
                        //verifica se tem no estoque e subtrai a quantidade vendida
                        if (Estoque.Any(x => x.ProdutoId == idProduto && x.Quantidade >= qtde))
                        {
                            Produto.Quantidade = Produto.Quantidade - qtde;
                            bdProduto.Atualizar(Produto);
                            bdProduto.SalvarTodos();
                            // adiciona o produto na compra a prazo
                            bdProdutoFiado.Adicionar(new ProdutoFiado()
                            {
                                RegistroCompraFiadaId = compraFiada.RegistroCompraFiadaId,
                                ProdutoId             = idProduto,
                                Quantidade            = qtde
                            });
                            bdProdutoFiado.SalvarTodos();
                        }
                        else
                        {
                            Retorno.Mensagem += "<span>Produto não contem no estoque ou sua compra é maior do que tem disponivel</span>";
                        }
                        if (Retorno.Mensagem != "")
                        {
                            return(Json(Retorno, JsonRequestBehavior.AllowGet));
                        }
                    }
                    //se tiver na lista e tiver no banco mas quantidade é diferente
                    if (ProdutosSalvosBancoDados.Any(x => x.ProdutoId == idProduto && x.Quantidade != qtde))
                    {
                        var ProdutoFiadoAtualizar = contexto.ProdutoFiado.Where(x => x.ProdutoId == idProduto && x.RegistroCompraFiadaId == compraFiada.RegistroCompraFiadaId).FirstOrDefault();
                        int qtdeAtual             = ProdutosSalvosBancoDados.Where(x => x.ProdutoId == idProduto).FirstOrDefault().Quantidade;
                        int diferenca;

                        if (qtdeAtual > qtde)
                        {
                            diferenca = qtdeAtual - qtde;
                            //adicionar a diferenca para o estoque de produto e salvar nova quantidade
                            Produto.Quantidade = Produto.Quantidade + diferenca;
                            bdProduto.Atualizar(Produto);
                            bdProduto.SalvarTodos();
                            //altera a quantidade na compra produto fiado
                            ProdutoFiadoAtualizar.Quantidade = qtde;
                            bdProdutoFiado.Atualizar(ProdutoFiadoAtualizar);
                            bdProdutoFiado.SalvarTodos();
                        }
                        else
                        {
                            diferenca = qtde - qtdeAtual;
                            //verificar se tem no estoque
                            if (Estoque.Any(x => x.ProdutoId == idProduto && x.Quantidade >= diferenca))
                            {
                                //subtrair a quantidade comprada do estoque
                                Produto.Quantidade = Produto.Quantidade - diferenca;
                                bdProduto.Atualizar(Produto);
                                bdProduto.SalvarTodos();
                                //alterar quantidade na compra produto fiado
                                ProdutoFiadoAtualizar.Quantidade = qtde;
                                bdProdutoFiado.Atualizar(ProdutoFiadoAtualizar);
                                bdProdutoFiado.SalvarTodos();
                            }
                            else
                            {
                                Retorno.Mensagem += "<span>Sua alteração excede a quantidade disponivel</span>";
                            }
                            if (Retorno.Mensagem != "")
                            {
                                return(Json(Retorno, JsonRequestBehavior.AllowGet));
                            }
                        }
                    }
                }
            }
            Retorno.Sucesso      = true;
            Retorno.LimparForm   = true;
            Retorno.Redirecionar = true;
            Retorno.Link         = "/Admin/CompraFiado/Index";
            return(Json(Retorno, JsonRequestBehavior.AllowGet));
        }
示例#6
0
        public JsonResult CreateProdutoFiado(RegistroCompraFiada compraFiada, FormCollection collection)
        {
            var Retorno = new RetornoJson();

            if (compraFiada.ClienteId == 0)
            {
                Retorno.Mensagem += "<span>Selecionar o Cliente</span>";
            }
            if (compraFiada.FuncionarioId == 0)
            {
                Retorno.Mensagem += "<span>Selecionar o Funcionário</span>";
            }
            // validar data para pagamento
            if (!Utilitarios.validarData(compraFiada.DataParaPagamento.ToString()))
            {
                Retorno.Mensagem += "<span>Inserir uma Data</span>";
            }
            if (compraFiada.DataParaPagamento <= DateTime.Now || compraFiada.DataParaPagamento > DateTime.Now.AddMonths(2))
            {
                Retorno.Mensagem += "<span> Não aceitamos data anterior ou igual a data atual ou data acima de dois meses em relação a data que o servico foi prestado</span>";
            }

            if (Retorno.Mensagem != "")
            {
                return(Json(Retorno, JsonRequestBehavior.AllowGet));
            }

            if (collection["Produtos"] != null)
            {
                var Estoque        = contexto.Produto.ToList();
                var Produtos       = collection["Produtos"].Split(',');
                var ProdutosValido = new List <ProdutoValido>();


                foreach (var produto in Produtos)
                {
                    var produtoId = int.Parse(produto);
                    var Qtde      = int.Parse(collection["Quantidade_" + produtoId]);
                    //validação importante que não permite valor negativo
                    if (Qtde < 0)
                    {
                        Retorno.Mensagem = "<span>Valor não pode ser Negativo</span>";
                        if (Retorno.Mensagem != "")
                        {
                            return(Json(Retorno, JsonRequestBehavior.AllowGet));
                        }
                    }

                    if (Estoque.Any(x => x.ProdutoId == produtoId && x.Quantidade >= Qtde))
                    {
                        //cria a lista da compra de produto que tem quantidade em estoque para vender
                        ProdutosValido.Add(new ProdutoValido()
                        {
                            IdProduto = produtoId,
                            Quant     = Qtde
                        });

                        //subtrair quantidade do produto abaixo que foi vendido atualizando a qtde
                        var ProdutoAtualizar = contexto.Produto.Where(x => x.ProdutoId == produtoId).FirstOrDefault();
                        ProdutoAtualizar.Quantidade = ProdutoAtualizar.Quantidade - Qtde;
                        var bdProduto = new ProdutoRepositorioEF(contexto);
                        bdProduto.Atualizar(ProdutoAtualizar);
                        bdProduto.SalvarTodos();
                    }//verifica se tem no estoque
                    else
                    {
                        Retorno.Mensagem += "<span>Sua compra e maior que a qtde em estoque</span>";
                    }
                }

                if (Retorno.Mensagem != "")
                {
                    return(Json(Retorno, JsonRequestBehavior.AllowGet));
                }


                if (Retorno.Mensagem == "")
                {
                    // cria a compra fiada
                    compraFiada.DataCompra = DateTime.Now;
                    var registroCompraFiada = new RegistroCompraFiadaRepositorioEF(contexto);
                    registroCompraFiada.Adicionar(compraFiada);
                    registroCompraFiada.SalvarTodos();

                    // salva os produtos desta compra fiada
                    var bdProdutoFiado = new ProdutoFiadoRepositorioEF(contexto);
                    foreach (var produtoValido in ProdutosValido)
                    {
                        bdProdutoFiado.Adicionar(new ProdutoFiado()
                        {
                            RegistroCompraFiadaId = compraFiada.RegistroCompraFiadaId,
                            ProdutoId             = produtoValido.IdProduto,
                            Quantidade            = produtoValido.Quant
                        });
                    }
                    bdProdutoFiado.SalvarTodos();

                    Retorno.LimparForm   = true;
                    Retorno.Sucesso      = true;
                    Retorno.Redirecionar = true;
                    Retorno.Link         = "/Admin/CompraFiado/Index";
                }
            }//valida se selecionou produto
            else
            {
                Retorno.Mensagem += "<span>Nenhum produto foi Selecionado</span>";
            }

            return(Json(Retorno, JsonRequestBehavior.AllowGet));
        }
示例#7
0
        public JsonResult RegistrarCompra(RegistroCompra compra, FormCollection collection)
        {
            var retorno = new RetornoJson();

            if (compra.ClienteId == 0)
            {
                retorno.Mensagem += "<span>Selecione um Cliente</span>";
            }
            if (retorno.Mensagem != "")
            {
                return(Json(retorno, JsonRequestBehavior.AllowGet));
            }

            if (collection["ProdutosSelecionados"] != null)
            {
                var Produtos       = collection["ProdutosSelecionados"].Split(',');
                var Estoque        = contexto.Produto.ToList();
                var ProdutosValido = new List <ProdValido>();

                foreach (var p in Produtos)
                {
                    var idProduto = int.Parse(p);
                    var qtde      = int.Parse(collection["Quantidade_Produto_" + p]);
                    //validação importante que não permite valor negativo
                    if (qtde < 0)
                    {
                        retorno.Mensagem = "<span>Valor não pode ser Negativo</span>";
                        if (retorno.Mensagem != "")
                        {
                            return(Json(retorno, JsonRequestBehavior.AllowGet));
                        }
                    }

                    if (Estoque.Any(x => x.ProdutoId == idProduto && x.Quantidade >= qtde))
                    {
                        ProdutosValido.Add(new ProdValido()
                        {
                            idProd = idProduto,
                            quant  = qtde
                        });

                        //subtrai a quantidade que foi comprada
                        var bdProduto        = new ProdutoRepositorioEF(contexto);
                        var ProdutoAtualizar = contexto.Produto.Where(x => x.ProdutoId == idProduto).FirstOrDefault();
                        ProdutoAtualizar.Quantidade = ProdutoAtualizar.Quantidade - qtde;
                        bdProduto.Atualizar(ProdutoAtualizar);
                        bdProduto.SalvarTodos();
                    }
                    else
                    {
                        retorno.Mensagem += "<span>Sua compra ultrapassa a quantidade em estoque</span>";
                    }
                }// valida o estoque e cria lista de produtos para compra

                if (retorno.Mensagem != "")
                {
                    return(Json(retorno, JsonRequestBehavior.AllowGet));
                }



                if (retorno.Mensagem == "")
                {
                    compra.DataCompra = DateTime.Now;
                    var bdRegistroCompra = new RegistroCompraRepositorioEF(contexto);
                    bdRegistroCompra.Adicionar(compra);
                    bdRegistroCompra.SalvarTodos();

                    // adiciona os itens da compra
                    var bdItemCompra = new ItemCompraRepositorioEF(contexto);
                    foreach (var produto in ProdutosValido)
                    {
                        bdItemCompra.Adicionar(new ItemCompra()
                        {
                            RegistroCompraId = compra.RegistroCompraId,
                            ProdutoId        = produto.idProd,
                            Quantidade       = produto.quant
                        });
                    }
                    bdItemCompra.SalvarTodos();

                    retorno.Sucesso      = true;
                    retorno.LimparForm   = true;
                    retorno.Redirecionar = true;
                    retorno.Link         = "/Admin/Compra/Index";
                }
            }
            else
            {
                retorno.Mensagem += "<span> Não foi selecionado nenhuma Compra</span>";
            }
            return(Json(retorno, JsonRequestBehavior.AllowGet));
        }
示例#8
0
        public JsonResult EditarCompra(RegistroCompra compra, FormCollection collection)
        {
            var Retorno = new RetornoJson();
            var ProdutosSalvoBancoDados = contexto.ItemCompra.Where(x => x.RegistroCompraId == compra.RegistroCompraId).ToList();
            var bdItemCompra            = new ItemCompraRepositorioEF(contexto);
            var bdProduto = new ProdutoRepositorioEF(contexto);

            var Compra = contexto.RegistroCompra.Where(x => x.RegistroCompraId == compra.RegistroCompraId).FirstOrDefault();

            Compra.ClienteId = compra.ClienteId;
            var bdRegistroCompra = new RegistroCompraRepositorioEF(contexto);

            bdRegistroCompra.Atualizar(Compra);
            bdRegistroCompra.SalvarTodos();

            //se nao for selecionado nenhum produto exclui todos os itens de compra
            if (collection["ProdutosSelecionados"] == null)
            {
                Retorno.Mensagem = "<span> Selecione a Compra</span>";
                if (Retorno.Mensagem != "")
                {
                    return(Json(Retorno, JsonRequestBehavior.AllowGet));
                }

                //var ItensDevolver = contexto.ItemCompra.Where(x => x.RegistroCompraId == compra.RegistroCompraId).ToList();
                //var Produtos = contexto.Produto.ToList();

                //foreach (var produto in Produtos)
                //{
                //    var Produto = contexto.Produto.Where(x => x.ProdutoId == produto.ProdutoId).FirstOrDefault();
                //    if (ItensDevolver.Any(x => x.ProdutoId == produto.ProdutoId))
                //    {
                //        int QtdeDevolver = ItensDevolver.Where(x => x.ProdutoId == produto.ProdutoId).FirstOrDefault().Quantidade;
                //        Produto.Quantidade = Produto.Quantidade + QtdeDevolver;
                //        bdProduto.Atualizar(Produto);
                //    }
                //}
                //bdProduto.SalvarTodos();

                //bdItemCompra.Excluir(x => x.RegistroCompraId == compra.RegistroCompraId);
                //bdItemCompra.SalvarTodos();
            }
            else
            {
                if (collection["ProdutosSelecionados"] != null)
                {
                    var ProdSelecionado = collection["ProdutosSelecionados"].Split(',');
                    var Estoque         = contexto.Produto.ToList();

                    // se tem no banco de dados mas não tem na lista
                    foreach (var produtoBanco in ProdutosSalvoBancoDados)
                    {
                        if (!ProdSelecionado.Any(x => x == produtoBanco.ProdutoId.ToString()))
                        {
                            //voltar a quantidade para o estoque de produtos
                            int QtdeProdutoDevolver = produtoBanco.Quantidade;
                            var Produto             = contexto.Produto.Where(x => x.ProdutoId == produtoBanco.ProdutoId).FirstOrDefault();
                            Produto.Quantidade = Produto.Quantidade + QtdeProdutoDevolver;
                            bdProduto.Atualizar(Produto);
                            bdProduto.SalvarTodos();
                            //exclui os produtos que não estao selecionados na edição
                            bdItemCompra.Excluir(x => x.ProdutoId == produtoBanco.ProdutoId && x.RegistroCompraId == produtoBanco.RegistroCompraId);
                            bdItemCompra.SalvarTodos();
                        }
                    }

                    //se tiver na lista e nao tiver no banco salva
                    foreach (var prodSelecionado in ProdSelecionado)
                    {
                        var idProdSelecionado = int.Parse(prodSelecionado);
                        var qtde = int.Parse(collection["Quantidade_Produto_" + idProdSelecionado]);
                        //validação importante que não permite valor negativo
                        if (qtde < 0)
                        {
                            Retorno.Mensagem = "<span>Valor não pode ser Negativo</span>";
                            if (Retorno.Mensagem != "")
                            {
                                return(Json(Retorno, JsonRequestBehavior.AllowGet));
                            }
                        }

                        if (!ProdutosSalvoBancoDados.Any(x => x.RegistroCompraId == compra.RegistroCompraId && x.ProdutoId == idProdSelecionado))
                        {
                            //validacao se tem no estoque
                            if (Estoque.Any(x => x.ProdutoId == idProdSelecionado && x.Quantidade >= qtde))
                            {
                                //subtrair produtos que foram comprados ao editar a compra
                                var Produto = contexto.Produto.Where(x => x.ProdutoId == idProdSelecionado).FirstOrDefault();
                                Produto.Quantidade = Produto.Quantidade - qtde;
                                bdProduto.Atualizar(Produto);
                                bdProduto.SalvarTodos();
                                // adicionar a compra do produto
                                bdItemCompra.Adicionar(new ItemCompra()
                                {
                                    ProdutoId        = idProdSelecionado,
                                    Quantidade       = qtde,
                                    RegistroCompraId = compra.RegistroCompraId
                                });
                                bdItemCompra.SalvarTodos();
                            }
                            else
                            {
                                Retorno.Mensagem += "<span>Produto excede a quantidade ou não tem no estoque</span>";
                            }
                        }

                        // se na lista tem e  no banco tem, mas quer trocar a quantidade
                        if (ProdutosSalvoBancoDados.Any(x => x.RegistroCompraId == compra.RegistroCompraId && x.ProdutoId == idProdSelecionado && x.Quantidade != qtde))
                        {
                            //subtrair ou adicionar a nova quantidade no estoque de produto
                            var ProdutoAtual = ProdutosSalvoBancoDados.Where(x => x.RegistroCompraId == compra.RegistroCompraId &&
                                                                             x.ProdutoId == idProdSelecionado).FirstOrDefault();
                            int qtdeAntiga = ProdutoAtual.Quantidade;
                            var Produto    = contexto.Produto.Where(x => x.ProdutoId == idProdSelecionado).FirstOrDefault();
                            int nova;

                            if (qtde > qtdeAntiga)
                            {
                                nova = qtde - qtdeAntiga;
                                if (Estoque.Any(x => x.ProdutoId == idProdSelecionado && x.Quantidade >= nova))
                                {
                                    //subtrai do estoque de produto
                                    Produto.Quantidade = Produto.Quantidade - nova;
                                    bdProduto.Atualizar(Produto);
                                    bdProduto.SalvarTodos();

                                    //atualiza a nova quantidade setada na compra do produto
                                    var ProdNovaQtde = contexto.ItemCompra.Where(x => x.RegistroCompraId == compra.RegistroCompraId &&
                                                                                 x.ProdutoId == idProdSelecionado).FirstOrDefault();

                                    ProdNovaQtde.Quantidade = qtde;
                                    bdItemCompra.Atualizar(ProdNovaQtde);
                                    bdItemCompra.SalvarTodos();
                                }
                                else
                                {
                                    Retorno.Mensagem += "<span>Produto excede a quantidade ou não tem no estoque</span>";
                                }
                            }

                            else
                            {
                                nova = qtdeAntiga - qtde;
                                //devolve a quantidade para o estoque de produto
                                Produto.Quantidade = Produto.Quantidade + nova;
                                bdProduto.Atualizar(Produto);
                                bdProduto.SalvarTodos();

                                //atualiza a nova quantidade setada na compra do produto
                                var ProdNovaQtde = contexto.ItemCompra.Where(x => x.RegistroCompraId == compra.RegistroCompraId &&
                                                                             x.ProdutoId == idProdSelecionado).FirstOrDefault();

                                ProdNovaQtde.Quantidade = qtde;
                                bdItemCompra.Atualizar(ProdNovaQtde);
                                bdItemCompra.SalvarTodos();
                            }
                        }
                    }

                    if (!string.IsNullOrEmpty(Retorno.Mensagem))
                    {
                        return(Json(Retorno, JsonRequestBehavior.AllowGet));
                    }


                    Retorno.LimparForm   = true;
                    Retorno.Sucesso      = true;
                    Retorno.Redirecionar = true;
                    Retorno.Link         = "/Admin/Compra/Index";
                }
                else
                {
                    Retorno.Mensagem = "Não é possivel Editar uma compra sem itens";
                }
            }
            return(Json(Retorno, JsonRequestBehavior.AllowGet));
        }