예제 #1
0
        //
        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();
        }
예제 #2
0
        //
        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;
            }
        }