예제 #1
0
        /// <summary>
        /// Análise do fluxo de caixa de um Projeto por ano, com previsões onde não existem valores reais.
        /// </summary>
        /// <param name="rubricaMeses">Detalhes dos meses das Rúbricas do Projeto.</param>
        /// <param name="inicioPlanejado">Início planejado de um projeto.</param>
        /// <param name="terminoPlanejado">Término planejado de um projeto.</param>
        /// <returns>Extrato financeiro do Projeto.</returns>
        public ExtratoFinanceiroDto GerarExtratoFinanceiro(List <RubricaMesDto> rubricaMeses, DateTime inicioPlanejado,
                                                           DateTime terminoPlanejado)
        {
            ExtratoFinanceiroDto extratoFinanceiroDto = new ExtratoFinanceiroDto
            {
                Total = new DespesasAportes(),
                Anos  = new Dictionary <string, List <Object> >()
            };

            foreach (int anoPlanejado in ListarAnosPlanejados(inicioPlanejado, terminoPlanejado))
            {
                GerarCalendarioExtratoFinanceiroVazio(extratoFinanceiroDto, anoPlanejado);

                foreach (CsMesDomain mes in ListarMeses())
                {
                    IEnumerable <RubricaMesDto> mesComRubricas = FiltrarMesComRubricas(rubricaMeses, anoPlanejado,
                                                                                       (int)mes);

                    if (!VerificarExistenciaCustos(mesComRubricas, anoPlanejado, (int)mes))
                    {
                        continue;
                    }

                    PreencherExtratoFinanceiro(extratoFinanceiroDto, mesComRubricas, mes, anoPlanejado);
                }
            }

            return(extratoFinanceiroDto);
        }
예제 #2
0
        /// <summary>
        /// Preenche as propriedades do objeto ExtratoFinanceiro
        /// </summary>
        /// <param name="extratoFinanceiroDto"></param>
        /// <param name="mesComRubricas"></param>
        /// <param name="mes"></param>
        /// <param name="anoPlanejado"></param>
        private void PreencherExtratoFinanceiro(ExtratoFinanceiroDto extratoFinanceiroDto,
                                                IEnumerable <RubricaMesDto> mesComRubricas, CsMesDomain mes,
                                                int anoPlanejado)
        {
            Decimal aportePlanejado = CalcularAportePlanejado(mesComRubricas);

            Custo aporteReal = CalcularAporteReal(mesComRubricas);

            Custo despesasAdministrativas = CalcularDespesasAdministrativas(mesComRubricas);
            Custo despesasDesenvolvimento = CalcularDespesasDesenvolvimento(mesComRubricas);

            Custo despesasReais = despesasAdministrativas + despesasDesenvolvimento;

            extratoFinanceiroDto.Total.Acumulado += aporteReal - despesasReais;

            String anoPlanejadoString = Convert.ToString(anoPlanejado);

            int mesJavascript = SelecionarMesJavascript(mes);

            extratoFinanceiroDto.Anos[anoPlanejadoString][mesJavascript] = new DespesasAportes
            {
                AportePlanejado = aportePlanejado,
                AporteRealizado = aporteReal,
                DespesasReaisAdministrativas = despesasAdministrativas,
                DespesasReaisDesenvolvimento = despesasDesenvolvimento,
                Acumulado = extratoFinanceiroDto.Total.Acumulado
            };

            extratoFinanceiroDto.Total.AportePlanejado += aportePlanejado;
            extratoFinanceiroDto.Total.AporteRealizado += aporteReal;

            extratoFinanceiroDto.Total.DespesasReaisAdministrativas += despesasAdministrativas;
            extratoFinanceiroDto.Total.DespesasReaisDesenvolvimento += despesasDesenvolvimento;
        }
예제 #3
0
        /// <summary>
        ///     Gera um calendario vazio para ser utilizado no detalhamento do Extrato do Projeto
        ///     na tela de Análise Crítica por Projeto.
        ///     OBS: Este refactor tem como objetivo deixar o código mais legível. Ainda há a
        ///     necessidade de discutir melhorias no modelo das entidades e retorno dos dados para WebAPI
        /// </summary>
        /// <param name="extratoFinanceiroDto">Objeto ExtratoFinanceiroDto</param>
        /// <param name="anoPlanejado">Ano de interesse</param>
        private void GerarCalendarioExtratoFinanceiroVazio(ExtratoFinanceiroDto extratoFinanceiroDto, int anoPlanejado)
        {
            string anoPlanejadoString = Convert.ToString(anoPlanejado);

            if (!extratoFinanceiroDto.Anos.ContainsKey(anoPlanejadoString))
            {
                extratoFinanceiroDto.Anos[anoPlanejadoString] = new List <Object>();
            }

            foreach (int mes in Enum.GetValues(typeof(CsMesDomain)))
            {
                extratoFinanceiroDto.Anos[anoPlanejadoString].Add(new Object());
            }
        }