Esempio n. 1
0
        private decimal ObterDescontoMaximoPermitido(GDASession sessao, int idPedido, decimal descontoTela, int tipoDescontoTela, Data.Model.Pedido.TipoVendaPedido tipoVenda, int?idParcela)
        {
            var idFunc          = UserInfo.GetUserInfo.CodUser;
            var idFuncDesc      = Geral.ManterDescontoAdministrador ? PedidoDAO.Instance.ObtemIdFuncDesc(sessao, (uint)idPedido).GetValueOrDefault() : 0;
            var alterouDesconto = PedidoDAO.Instance.ObterDesconto(sessao, idPedido) != descontoTela ||
                                  PedidoDAO.Instance.ObterTipoDesconto(sessao, idPedido) != tipoDescontoTela;

            if (!UserInfo.GetUserInfo.IsAdministrador && idFuncDesc > 0 && !alterouDesconto)
            {
                idFunc = idFuncDesc;
            }

            return((decimal)PedidoConfig.Desconto.GetDescontoMaximoPedido(sessao, idFunc, (int)tipoVenda, idParcela));
        }
Esempio n. 2
0
        private IHttpActionResult ValidarDescontoPedidoComDescontoFormaPagamento(GDASession sessao, int idPedido, decimal descontoTela, int tipoDescontoTela, Data.Model.Pedido.TipoVendaPedido tipoVenda, int?idParcela, decimal descontoFormaPagto)
        {
            var percDescontoMaximo = this.ObterDescontoMaximoPermitido(sessao, idPedido, descontoTela, tipoDescontoTela, tipoVenda, idParcela);

            if (percDescontoMaximo == 0 || percDescontoMaximo == 100)
            {
                return(null);
            }

            var totalPedidoSemDesconto = PedidoDAO.Instance.GetTotalSemDesconto(sessao, (uint)idPedido, PedidoDAO.Instance.GetTotal(sessao, (uint)idPedido));
            var valorDescontoProdutos  = PedidoDAO.Instance.GetDescontoProdutos(sessao, (uint)idPedido);
            var percDescontoProdutos   = Math.Round((valorDescontoProdutos / (totalPedidoSemDesconto > 0 ? totalPedidoSemDesconto : 1)) * 100, 2);
            var percDescontoPedido     = tipoDescontoTela == 1 ? descontoTela : ((descontoTela / totalPedidoSemDesconto) * 100);

            if (descontoFormaPagto == percDescontoProdutos)
            {
                return(null);
            }

            if ((percDescontoPedido + percDescontoProdutos) > percDescontoMaximo)
            {
                var descontoMaximoPedido = tipoDescontoTela == 1 ? percDescontoMaximo : totalPedidoSemDesconto * (percDescontoMaximo / 100);

                var mensagemValidacao = $"O desconto máximo permitido é de {(tipoDescontoTela == 2 ? "R$ " : string.Empty)}{descontoMaximoPedido}{(tipoDescontoTela == 1 ? "%" : string.Empty)}";

                if (percDescontoProdutos > 0)
                {
                    var descontoTotalProdutos = tipoDescontoTela == 1 ? percDescontoProdutos : valorDescontoProdutos;

                    mensagemValidacao += $"\nO desconto já aplicado aos produtos é de {(tipoDescontoTela == 2 ? "R$ " : string.Empty)}{descontoTotalProdutos}{(tipoDescontoTela == 1 ? "%" : string.Empty)}";
                }

                return(this.ErroValidacao(mensagemValidacao));
            }

            return(null);
        }