Beispiel #1
0
        public IHttpActionResult EnviarValidacaoFinanceiro(int id, [FromBody] DadosEntradaDto dadosEntrada)
        {
            dadosEntrada = dadosEntrada ?? new DadosEntradaDto();

            using (var sessao = new GDATransaction())
            {
                var validacao = this.ValidarExistenciaIdPedido(sessao, id);

                if (validacao != null)
                {
                    return(validacao);
                }

                try
                {
                    sessao.BeginTransaction();

                    PedidoDAO.Instance.DisponibilizaFinalizacaoFinanceiro(sessao, (uint)id, dadosEntrada.Mensagem);

                    sessao.Commit();

                    return(this.Aceito($"Pedido {id} enviado para validação pelo financeiro."));
                }
                catch (Exception ex)
                {
                    sessao.Rollback();
                    return(this.ErroValidacao(ex.Message, ex));
                }
            }
        }
Beispiel #2
0
        public IHttpActionResult ObterDados([FromUri] DadosEntradaDto dadosEntrada)
        {
            dadosEntrada = dadosEntrada ?? new DadosEntradaDto();

            if (dadosEntrada.IdProduto == 0)
            {
                return(this.ErroValidacao("O identificador do produto é obrigatório."));
            }

            if (dadosEntrada.IdCliente == 0)
            {
                return(this.ErroValidacao("O identificador do cliente é obrigatório."));
            }

            using (var sessao = new GDATransaction())
            {
                var percentualDesconto = this.ObterPercentualDescontoPorQuantidade(
                    sessao,
                    dadosEntrada);

                var percentualTabela = this.ObterPercentualDescontoTabela(
                    sessao,
                    dadosEntrada);

                return(this.Item(new DadosDescontoQuantidadeDto
                {
                    PercentualDescontoPorQuantidade = percentualDesconto,
                    PercentualDescontoTabela = percentualTabela,
                }));
            }
        }
        public IHttpActionResult CalcularTotalBeneficiamentos([FromBody] DadosEntradaDto dadosEntrada)
        {
            if (dadosEntrada == null)
            {
                return(this.ErroValidacao("Os dados de entrada são obrigatórios."));
            }

            dadosEntrada.Beneficiamentos = dadosEntrada.Beneficiamentos ?? new DadosBeneficiamentosDto[0];
            var validacao = this.ValidarBeneficiamentosSelecionados(dadosEntrada.Beneficiamentos);

            if (validacao != null)
            {
                return(validacao);
            }

            var calculado = dadosEntrada.Beneficiamentos.SelectMany(item =>
                                                                    item.ItensSelecionados.Select(itemSelecionado =>
            {
                var total = item.CobrarBeneficiamento
                        ? ValorTotal.Instance.Calcular(dadosEntrada.DadosCalculo, item.Beneficiamento, itemSelecionado)
                        : new Data.Beneficiamentos.Total.Dto.TotalDto();

                return(new TotalDto
                {
                    IdItemSelecionado = itemSelecionado.Id,
                    ValorUnitario = total.ValorUnitario.Arredondar(2),
                    ValorTotal = total.ValorTotal.Arredondar(2),
                    CustoTotal = total.CustoTotal.Arredondar(2),
                });
            }));

            return(this.Lista(calculado));
        }
Beispiel #4
0
        public IHttpActionResult SalvarObservacao(int idPedido, int id, [FromBody] DadosEntradaDto dadosEntrada)
        {
            using (var sessao = new GDATransaction())
            {
                Data.Model.ProdutosPedido produto;
                var validacao = this.ValidarOperacaoId(sessao, idPedido, id, out produto);

                if (validacao != null)
                {
                    return(validacao);
                }

                try
                {
                    sessao.BeginTransaction();

                    ProdutosPedidoDAO.Instance.AtualizaObs(sessao, (uint)id, dadosEntrada?.Observacao);
                    sessao.Commit();

                    return(this.Aceito($"Produto {id} atualizado com sucesso no pedido {idPedido}!"));
                }
                catch (Exception e)
                {
                    sessao.Rollback();
                    return(this.ErroValidacao($"Erro ao atualizar a observação do produto {id} do pedido {idPedido}.", e));
                }
            }
        }
Beispiel #5
0
        public IHttpActionResult ValidarDiaUtil([FromBody] DadosEntradaDto dadosEntrada)
        {
            if (dadosEntrada == null)
            {
                return(this.ErroValidacao("Dados de entrada do método são obrigatórios."));
            }

            if (!dadosEntrada.PermitirFimDeSemana)
            {
                var dataValida = (dadosEntrada.Data.DayOfWeek != DayOfWeek.Saturday || Geral.ConsiderarSabadoDiaUtil) &&
                                 (dadosEntrada.Data.DayOfWeek != DayOfWeek.Sunday || Geral.ConsiderarDomingoDiaUtil);

                if (!dataValida)
                {
                    return(this.ErroValidacao("Data não pode ser selecionada em um fim de semana."));
                }
            }

            if (!dadosEntrada.PermitirFeriado)
            {
                var dataValida = !FeriadoDAO.Instance.IsFeriado(dadosEntrada.Data);

                if (!dataValida)
                {
                    return(this.ErroValidacao("Data não pode ser selecionada em um feriado."));
                }
            }

            return(this.Ok());
        }
Beispiel #6
0
        private decimal ObterPercentualDescontoPorQuantidade(GDASession sessao, DadosEntradaDto dadosEntrada)
        {
            if (!PedidoConfig.Desconto.DescontoPorProduto)
            {
                return(0);
            }

            return((decimal)DescontoQtdeDAO.Instance.GetPercDescontoByProd(
                       sessao,
                       (uint)dadosEntrada.IdProduto,
                       (int)dadosEntrada.Quantidade));
        }
Beispiel #7
0
        private decimal ObterPercentualDescontoTabela(GDASession sessao, DadosEntradaDto dadosEntrada)
        {
            var idGrupoProd = dadosEntrada.IdGrupoProduto
                              ?? ProdutoDAO.Instance.ObtemIdGrupoProd(sessao, dadosEntrada.IdProduto);

            var idSubgrupoProd = dadosEntrada.IdSubgrupoProduto
                                 ?? ProdutoDAO.Instance.ObtemIdSubgrupoProd(sessao, dadosEntrada.IdProduto);

            var descontoCliente = DescontoAcrescimoClienteDAO.Instance.GetDescontoAcrescimo(
                sessao,
                (uint)dadosEntrada.IdCliente,
                idGrupoProd,
                idSubgrupoProd,
                dadosEntrada.IdProduto,
                null,
                null);

            return((decimal)descontoCliente.Desconto);
        }
Beispiel #8
0
        public IHttpActionResult ObterFiltro([FromUri] DadosEntradaDto dadosEntrada)
        {
            if (dadosEntrada == null)
            {
                return(this.ErroValidacao("Os parâmetros do método são obrigatórios."));
            }

            string idsPedidosIgnorar = dadosEntrada.IdsPedidosIgnorar != null
                ? string.Join(",", dadosEntrada.IdsPedidosIgnorar)
                : null;

            bool?gerarCredito = this.ObterFiltroGerarCredito(dadosEntrada.TipoObras);

            using (var sessao = new GDATransaction())
            {
                var obras = ObraDAO.Instance.GetList(
                    (uint?)dadosEntrada.IdCliente,
                    null,
                    0,
                    0,
                    0,
                    ((int?)dadosEntrada.Situacao).GetValueOrDefault(),
                    null,
                    null,
                    null,
                    null,
                    gerarCredito,
                    idsPedidosIgnorar,
                    (uint)(dadosEntrada.Id ?? 0),
                    0,
                    dadosEntrada.Descricao,
                    null,
                    0,
                    10);

                return(this.Lista(obras.Select(o => new ObraDto(o))));
            }
        }