// public void carregarPagamentos(FluxoCaixaDiarioForm Form) { if (!Form.dtInicioPeriodo.HasValue && !Form.dtFimPeriodo.HasValue) { Form.dtInicioPeriodo = new DateTime(DateTime.Today.Year, DateTime.Today.Month, 1); Form.dtFimPeriodo = new DateTime(DateTime.Today.Year, DateTime.Today.Month, DateTime.DaysInMonth(DateTime.Today.Year, DateTime.Today.Month)); } if (Form.dtInicioPeriodo.HasValue && !Form.dtFimPeriodo.HasValue) { Form.dtFimPeriodo = Form.dtInicioPeriodo.Value.AddDays(31); } if (Form.dtFimPeriodo.HasValue && !Form.dtInicioPeriodo.HasValue) { Form.dtInicioPeriodo = Form.dtFimPeriodo.Value.AddDays(-31); } if ((Form.dtFimPeriodo.Value - Form.dtInicioPeriodo.Value).TotalDays > 31) { Form.dtFimPeriodo = Form.dtInicioPeriodo.Value.AddDays(31); } var queryPagamentos = this.OFluxoCaixaBL.listar().Where(x => x.idContaBancaria == Form.idContaBancaria && ((x.dtPagamento != null && x.dtEfetivacao == null && DbFunctions.TruncateTime(x.dtPrevisaoEfetivacao) >= Form.dtInicioPeriodo && DbFunctions.TruncateTime(x.dtPrevisaoEfetivacao) <= Form.dtFimPeriodo) || (x.dtPagamento != null && x.dtEfetivacao != null && DbFunctions.TruncateTime(x.dtEfetivacao) >= Form.dtInicioPeriodo && DbFunctions.TruncateTime(x.dtEfetivacao) <= Form.dtFimPeriodo)) ); this.listaPagamentos = queryPagamentos.OrderBy(x => x.dtVencimento).ThenBy(x => x.dtCadastro).ToList(); foreach (var Item in this.listaPagamentos) { Item.descricaoTitulo = $"{Item.nomePessoa} - {Item.descricaoTitulo}"; Item.dtMovimento = Item.dtEfetivacao.HasValue ? Item.dtEfetivacao : Item.dtPrevisaoEfetivacao; if (!Item.dtMovimento.HasValue) { Item.dtMovimento = Item.dtVencimento; } } this.listaPagamentos = this.listaPagamentos.OrderBy(x => x.dtMovimento).ToList(); }
// public void agruparDatas(FluxoCaixaDiarioForm Form) { //Carrega a conta bancaria para pegar o saldo inicial var OContaBancaria = this.OContaBancariaBL.carregar(Form.idContaBancaria.toInt()); //Carrega os lançamentos para calcular o saldo da conta até o periodo de inicio da pesquisa var query = this.OReceitasDespesasVWBL.listar().Where(x => x.dtPagamento.HasValue && x.idContaBancaria == Form.idContaBancaria && x.idPagamento > 0 && (x.dtEfetivacao != null && DbFunctions.TruncateTime(x.dtEfetivacao) < Form.dtInicioPeriodo) ).ToList(); //Separa entre receita e despesa e calcula o saldo inicial var valorTotalDespesa = query.Where(x => x.flagTipoTitulo == "D").Sum(x => x.valor); var valorTotalReceita = query.Where(x => x.flagTipoTitulo == "R").Sum(x => x.valorLiquido()); this.saldoInicial = (OContaBancaria.saldoInicial ?? 0) + (valorTotalReceita - valorTotalDespesa); //Carrega a lista de movimentação diaria this.listaMovimentacaoDiaria = this.listaPagamentos.Select(x => new FluxoCaixaMovimentacaoDiariaDTO { saldoDia = 0, saldoAcumulado = 0, dtReferencia = x.dtMovimento.Value.Date, listaPagamentosMovimentacao = this.listaPagamentos.Where(c => c.dtMovimento.Value.Date == x.dtMovimento.Value.Date).ToList(), valorTotalSaida = this.listaPagamentos.Where(c => c.dtMovimento.Value.Date == x.dtMovimento.Value.Date && c.flagTipoTitulo.Equals("D")).Sum(c => c.valor), valorTotalEntrada = this.listaPagamentos.Where(c => c.dtMovimento.Value.Date == x.dtMovimento.Value.Date && c.flagTipoTitulo.Equals("R")).Sum(c => c.valorLiquido()) }).DistinctBy(x => x.dtReferencia).ToList(); //Realiza o calculo do saldo acumulado var saldoAtual = this.saldoInicial; foreach (var OMovimentacao in this.listaMovimentacaoDiaria) { OMovimentacao.saldoDia = OMovimentacao.valorTotalEntrada - OMovimentacao.valorTotalSaida; saldoAtual += OMovimentacao.valorTotalEntrada - OMovimentacao.valorTotalSaida; OMovimentacao.saldoAcumulado = saldoAtual; } }