Example #1
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));
        }
Example #2
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));
        }