//Extension para pegar a tabela de preços vigente para a contribuição
        public static ContribuicaoPreco retornarPreco(this ContribuicaoTabelaPreco TabelaPreco, int idTipoAssociado)
        {
            var Retorno = new ContribuicaoPreco();

            if (TabelaPreco == null)
            {
                return(Retorno);
            }

            Retorno = TabelaPreco.listaPrecos.FirstOrDefault(x => x.idTipoAssociado == idTipoAssociado && x.flagExcluido == "N");

            Retorno = Retorno ?? new ContribuicaoPreco();

            return(Retorno);
        }
        //Extension para pegar o preço a partir do tipo do associado
        //Verificar se a cobranca deve ser feita pro-rata e calcular o valor
        public static ContribuicaoPreco retornarPrecoAtual(this ContribuicaoTabelaPreco TabelaPreco, int idTipoAssociado, DateTime?dtCobranca)
        {
            var Preco = new ContribuicaoPreco();

            if (TabelaPreco == null)
            {
                return(Preco);
            }

            Preco = TabelaPreco.listaPrecos.FirstOrDefault(x => x.idTipoAssociado == idTipoAssociado && x.flagExcluido == "N");

            Preco = Preco ?? new ContribuicaoPreco();

            var OContribuicao = TabelaPreco.Contribuicao;

            var flagCobrancaProRata = OContribuicao.flagCobrancaProRata == true;

            var OVencimento = OContribuicao.retornarProximoVencimento();

            var dtFimVigencia = OVencimento.dtFimVigencia;

            if (!dtFimVigencia.HasValue || !dtCobranca.HasValue)
            {
                return(Preco);
            }

            if (!flagCobrancaProRata || OContribuicao.idTipoVencimento != TipoVencimentoConst.FIXO_PELA_CONTRIBUICAO && Preco.id == 0)
            {
                return(Preco);
            }

            int qtdeDiasRestante = dtFimVigencia.Value.Date.Subtract(dtCobranca.Value.Date).Days;

            int qtdeDiasTotal = OContribuicao.PeriodoContribuicao.qtdeDias;

            decimal valorPorDia = decimal.Divide(UtilNumber.toDecimal(Preco.valorFinal), UtilNumber.toDecimal(qtdeDiasTotal));

            decimal valorProRata = decimal.Multiply(valorPorDia, UtilNumber.toDecimal(qtdeDiasRestante));

            Preco.valorFinal = valorProRata;

            return(Preco);
        }