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)); } }
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)); } }
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)); }
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"); }