예제 #1
0
        public ConsolidadoModel(ConsolidadoFluxo consolidadoFluxo)
        {
            var _total = consolidadoFluxo.Total == 0m ? "0,00" :  consolidadoFluxo.Total.ToString("#,#0.00");

            data           = consolidadoFluxo.Data.ToString("dd-MM-yyyy");
            total          = $"R$ {_total}";
            posicao_do_dia = consolidadoFluxo.PosicaoDia;

            entradas = new List <DataValorModel>();
            saidas   = new List <DataValorModel>();
            encargos = new List <DataValorModel>();

            foreach (var item in consolidadoFluxo.Entradas)
            {
                entradas.Add(new DataValorModel(item.Data, item.Valor));
            }

            foreach (var item in consolidadoFluxo.Saidas)
            {
                saidas.Add(new DataValorModel(item.Data, item.Valor));
            }

            foreach (var item in consolidadoFluxo.Encargos)
            {
                encargos.Add(new DataValorModel(item.Data, item.Valor));
            }
        }
예제 #2
0
        public async Task <ConsolidadoFluxo> AdicionarLancamento(LancamentoFinanceiro lancamento)
        {
            var dataLancamento = DateTime.ParseExact(lancamento.Data, "dd-MM-yyyy", null, System.Globalization.DateTimeStyles.None);

            var consolidadoFluxo = await BuscaDadoConsolidado(dataLancamento);

            if (consolidadoFluxo == null)
            {
                consolidadoFluxo = new ConsolidadoFluxo()
                {
                    Data = dataLancamento, Encargos = new List <DataValor>(), Entradas = new List <DataValor>(), Saidas = new List <DataValor>()
                }
            }
            ;

            if (lancamento.Lancamento == TipoLancamento.Pagamento)
            {
                consolidadoFluxo.Saidas.Add(new DataValor(lancamento.Data, lancamento.Valor));
            }

            if (lancamento.Lancamento == TipoLancamento.Recebimento)
            {
                consolidadoFluxo.Entradas.Add(new DataValor(lancamento.Data, lancamento.Valor));
            }

            consolidadoFluxo.Encargos.Add(new DataValor(lancamento.Data, lancamento.Encargos));

            consolidadoFluxo.Total = consolidadoFluxo.Entradas.Sum(x => x.Valor) + ((consolidadoFluxo.Saidas.Sum(x => x.Valor) + consolidadoFluxo.Encargos.Sum(x => x.Valor)) * -1);

            return(await _repositorioConsolidadoFluxo.Salvar_Async(consolidadoFluxo));
        }
    }
예제 #3
0
        public async Task <IEnumerable <ConsolidadoFluxo> > BuscaDadosConsolidados()
        {
            List <ConsolidadoFluxo> consolidadoFluxos = new List <ConsolidadoFluxo>();

            var dataFim          = DateTime.Now.AddDays(30).Date;
            var data             = DateTime.Now.AddDays(-1).Date; // para o dia atual vir com posição
            var saldoDiaAnterior = 0m;

            for (int i = 0; data <= dataFim; i++)
            {
                var consolidado = await BuscaDadoConsolidado(data);

                var totalOriginal = 0m;

                if (consolidado == null)
                {
                    consolidado = new ConsolidadoFluxo()
                    {
                        Data = data, Encargos = new List <DataValor>(), Entradas = new List <DataValor>(), Saidas = new List <DataValor>(), Total = 0m
                    }
                }
                ;
                else
                {
                    consolidado.PosicaoDia = i == 0 ? "0,00%" : CalcularPosicao(saldoDiaAnterior, consolidado.Total);
                }

                totalOriginal = consolidado.Total;

                if (saldoDiaAnterior < 0)
                {
                    consolidado.Total += saldoDiaAnterior + CalcularJuros(saldoDiaAnterior, 0.83m);
                }
                else
                {
                    consolidado.Total += i == 0 ? 0m : saldoDiaAnterior;
                }

                if (string.IsNullOrEmpty(consolidado.PosicaoDia))
                {
                    consolidado.PosicaoDia = i == 0 ? "0,00%" : CalcularPosicao(saldoDiaAnterior, consolidado.Total);
                }

                saldoDiaAnterior  = consolidado.Total;
                consolidado.Total = totalOriginal;

                data = data.AddDays(1);
                consolidadoFluxos.Add(consolidado);
            }

            consolidadoFluxos.RemoveAt(0);

            return(consolidadoFluxos.OrderBy(x => x.Data));
        }
예제 #4
0
        public void ValoresDasPropriedades()
        {
            var consolidaoFluxo = new ConsolidadoFluxo()
            {
                Data      = DateTime.Now, Encargos = new List <DataValor>(), Entradas = new List <DataValor>()
                {
                }, Saidas = new List <DataValor>(), PosicaoDia = "0", Total = 1m, Id = Guid.NewGuid().ToString()
            };

            consolidaoFluxo.Entradas.Add(new DataValor(DateTime.Now.ToString("dd-MM-yyyy"), 10));
            consolidaoFluxo.Saidas.Add(new DataValor(DateTime.Now.ToString("dd-MM-yyyy"), 2));

            consolidaoFluxo.Encargos.Add(new DataValor(DateTime.Now.ToString("dd-MM-yyyy"), 2));
            consolidaoFluxo.Encargos.Add(new DataValor(DateTime.Now.ToString("dd-MM-yyyy"), 1));

            Assert.False(string.IsNullOrEmpty(consolidaoFluxo.Id));
            Assert.True(consolidaoFluxo.Data.Date == DateTime.Now.Date);
            Assert.True(consolidaoFluxo.Entradas.Count == 1);
            Assert.True(consolidaoFluxo.Saidas.Count == 1);
            Assert.True(consolidaoFluxo.Encargos.Count == 2);
            Assert.True(consolidaoFluxo.Total == 1m);
            Assert.Same(consolidaoFluxo.PosicaoDia, "0");
        }