Ejemplo n.º 1
0
        public override List <FichaFinanceiraEntidade> BuscarInformePorFundacaoInscricaoAno(string CD_FUNDACAO, string NUM_INSCRICAO, string ANO)
        {
            var informe      = base.BuscarInformePorFundacaoInscricaoAno(CD_FUNDACAO, NUM_INSCRICAO, ANO);
            var listaRetorno = new List <FichaFinanceiraEntidade>();

            for (int i = 1; i <= 12; i++)
            {
                var item = informe.SingleOrDefault(x => x.MES_REF.TrimStart('0') == i.ToString());

                if (item != null)
                {
                    item.DES_MES_REF = DateTimeExtensoes.MesPorExtenso(item.MES_REF.TrimStart('0'));
                    listaRetorno.Add(item);
                }
                else
                {
                    listaRetorno.Add(new FichaFinanceiraEntidade
                    {
                        MES_REF              = i.ToString(),
                        DES_MES_REF          = DateTimeExtensoes.MesPorExtenso(i.ToString()),
                        CONTRIB_PARTICIPANTE = 0
                    });
                }
            }

            listaRetorno.Add(new FichaFinanceiraEntidade
            {
                MES_REF              = "13",
                DES_MES_REF          = "Total",
                CONTRIB_PARTICIPANTE = listaRetorno.Sum(x => x.CONTRIB_PARTICIPANTE)
            });

            return(listaRetorno);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Busca o resumo das contribuições do ano, onde o mês é exibido por extenso
        /// </summary>
        /// <param name="CD_FUNDACAO"></param>
        /// <param name="CD_PLANO"></param>
        /// <param name="NUM_INSCRICAO"></param>
        /// <param name="ANO_REF"></param>
        /// <returns></returns>
        public override List <FichaFinanceiraEntidade> BuscarResumoMesesPorFundacaoPlanoInscricaoAno(string CD_FUNDACAO, string CD_PLANO, string NUM_INSCRICAO, string ANO_REF)
        {
            var fichaFinanceira = base.BuscarResumoMesesPorFundacaoPlanoInscricaoAno(CD_FUNDACAO, CD_PLANO, NUM_INSCRICAO, ANO_REF).ToList();

            // Converte valores antigos para Real
            fichaFinanceira.ForEach(ff =>
            {
                ff.CONTRIB_PARTICIPANTE = ConverterValorReal((ff.CONTRIB_PARTICIPANTE.HasValue ? ff.CONTRIB_PARTICIPANTE.Value : 0), ff.MES_REF, ff.ANO_REF);
                ff.CONTRIB_EMPRESA      = ConverterValorReal((ff.CONTRIB_EMPRESA.HasValue ? ff.CONTRIB_EMPRESA.Value : 0), ff.MES_REF, ff.ANO_REF);
            });

            // Agrupa todas as contribuições por ano
            var grupoFicha = fichaFinanceira
                             .GroupBy(x => x.MES_REF)
                             .Select(x => new {
                MES_REF = x.Key,
                Items   = x.ToList()
            })
                             .ToList();

            // Busca a lista de fundos para filtrar as contribuições
            var listaFundos = new List <FundoContribEntidade>();

            if (CD_PLANO == "0002") // Se for plano Reforço
            {
                var fundoContrib  = new FundoContribProxy().BuscarPorFundacaoPlanoFundo(CD_FUNDACAO, CD_PLANO, "1");
                var fundoContrib2 = new FundoContribProxy().BuscarPorFundacaoPlanoFundo(CD_FUNDACAO, CD_PLANO, "2");
                var fundoContrib3 = new FundoContribProxy().BuscarPorFundacaoPlanoFundo(CD_FUNDACAO, CD_PLANO, "3");

                listaFundos = fundoContrib.Concat(fundoContrib2).Concat(fundoContrib3).ToList();
            }
            else if (CD_PLANO == "0003")
            {
                //var fundoContrib4 = new FundoContribProxy().BuscarPorFundacaoPlanoFundo(CD_FUNDACAO, CD_PLANO, "4");
                var fundoContrib6 = new FundoContribProxy().BuscarPorFundacaoPlanoFundo(CD_FUNDACAO, CD_PLANO, "6");

                listaFundos = fundoContrib6;
            }

            // Apura todas as contribuições
            var resumo = new List <FichaFinanceiraEntidade>();

            foreach (var grupo in grupoFicha)
            {
                var apuracao = new FichaFinanceiraEntidade
                {
                    MES_REF = grupo.MES_REF,
                    QTD_COTA_RP_PARTICIPANTE = 0M,
                    QTD_COTA_RP_EMPRESA      = 0M,
                    CONTRIB_PARTICIPANTE     = 0M,
                    CONTRIB_EMPRESA          = 0M,
                    DES_MES_REF = DateTimeExtensoes.MesPorExtenso(grupo.MES_REF)
                };

                foreach (var contribuicao in grupo.Items)
                {
                    // Filtra as contribuições por fundo
                    if (listaFundos.Any(fundo => fundo.CD_TIPO_CONTRIBUICAO == contribuicao.CD_TIPO_CONTRIBUICAO) || CD_PLANO == "0001")
                    {
                        // Cotas
                        if (contribuicao.CD_OPERACAO == "C")
                        {
                            apuracao.QTD_COTA_RP_PARTICIPANTE += (decimal)contribuicao.QTD_COTA_RP_PARTICIPANTE;
                        }
                        else
                        {
                            apuracao.QTD_COTA_RP_PARTICIPANTE -= (decimal)contribuicao.QTD_COTA_RP_PARTICIPANTE;
                        }

                        if (contribuicao.CD_OPERACAO == "C")
                        {
                            apuracao.QTD_COTA_RP_EMPRESA += (decimal)contribuicao.QTD_COTA_RP_EMPRESA;
                        }
                        else
                        {
                            apuracao.QTD_COTA_RP_EMPRESA -= (decimal)contribuicao.QTD_COTA_RP_EMPRESA;
                        }

                        // Valores
                        if (contribuicao.CD_OPERACAO == "C")
                        {
                            apuracao.CONTRIB_PARTICIPANTE += (decimal)contribuicao.CONTRIB_PARTICIPANTE;
                        }
                        else
                        {
                            apuracao.CONTRIB_PARTICIPANTE -= (decimal)contribuicao.CONTRIB_PARTICIPANTE;
                        }

                        if (contribuicao.CD_OPERACAO == "C")
                        {
                            apuracao.CONTRIB_EMPRESA += (decimal)contribuicao.CONTRIB_EMPRESA;
                        }
                        else
                        {
                            apuracao.CONTRIB_EMPRESA -= (decimal)contribuicao.CONTRIB_EMPRESA;
                        }
                    }
                }

                apuracao.TOTAL_CONTRIB = apuracao.CONTRIB_PARTICIPANTE + apuracao.CONTRIB_EMPRESA;
                apuracao.QTD_COTA      = apuracao.QTD_COTA_RP_PARTICIPANTE + apuracao.QTD_COTA_RP_EMPRESA;

                resumo.Add(apuracao);
            }

            return(resumo);
        }