public Tuple <Balanco, List <Balanco> > ObterBalancoPorPerido(DateTime dataInicial, DateTime dataFinal)
        {
            IEnumerable <LancamentoFinanceiro> _lancamentos = _lancamentoFinanceiroRepository.Buscar(c => c.DataHora.Date >= dataInicial.Date &&
                                                                                                     c.DataHora.Date <= dataFinal.Date && c.Status == EStatus.CONCILIADO);

            List <Balanco> _balancos = new List <Balanco>();

            Balanco _balanc = null;

            foreach (var lanc in _lancamentos)
            {
                if (_balanc == null)
                {
                    _balanc = new Balanco
                    {
                        Data = lanc.DataHora
                    };
                }
                else if (!_balanc.Data.Date.Equals(lanc.DataHora.Date))
                {
                    _balancos.Add(_balanc);
                    _balanc = null;
                    _balanc = new Balanco
                    {
                        Data = lanc.DataHora
                    };
                }

                if (lanc.Tipo == ETipo.Credito)
                {
                    _balanc.ValorTotalCredito += lanc.Valor;
                    _balanc.ValorTotalSaldo   += lanc.Valor;
                }
                else
                {
                    _balanc.ValorTotalDebito += lanc.Valor;
                    _balanc.ValorTotalSaldo  -= lanc.Valor;
                }
            }

            if (_balanc != null)
            {
                _balancos.Add(_balanc);
            }

            _balanco.Data = DateTime.Today;
            _balanco.ValorTotalCredito = _balancos.Sum(c => c.ValorTotalCredito);
            _balanco.ValorTotalDebito  = _balancos.Sum(c => c.ValorTotalDebito);
            _balanco.ValorTotalSaldo   = _balancos.Sum(c => c.ValorTotalSaldo);

            return(new Tuple <Balanco, List <Balanco> >(_balanco, _balancos));
        }
Esempio n. 2
0
 public Task <IEnumerable <Lancamento> > Buscar(Expression <Func <Lancamento, bool> > predicate)
 {
     return(_lancamentoFinanceiroRepository.Buscar(predicate));
 }