// GET: FinanceiroLancamentos/ReceitaExcluida
        public ActionResult listar()
        {
            var      descricao       = UtilRequest.getString("descricao");
            var      idCentroCusto   = UtilRequest.getInt32("idCentroCusto");
            var      idMacroConta    = UtilRequest.getInt32("idMacroConta");
            var      idContaBancaria = UtilRequest.getInt32("idContaBancaria");
            var      flagPago        = UtilRequest.getString("flagPago");
            var      idTipoReceita   = UtilRequest.getInt32("idTipoReceita");
            var      flagTipoSaida   = UtilRequest.getString("flagTipoSaida");
            var      pesquisarPor    = UtilRequest.getString("pesquisarPor");
            DateTime?dtInicio        = UtilRequest.getDateTime("dtInicio") ?? DateTime.Today;
            DateTime?dtFim           = UtilRequest.getDateTime("dtFim") ?? DateTime.Today;

            var ViewModel = new LancamentoRecebimentoVM();

            var lista = this.OTituloReceitaPagamentoResumoVWBL.listarPagamentoReceitasExcluidas(descricao, idCentroCusto, idTipoReceita, flagPago, pesquisarPor, dtInicio, dtFim, idMacroConta, idContaBancaria).ToList();

            if (flagTipoSaida == TipoSaidaHelper.EXCEL)
            {
                var OLancamentoRecebimentoExportacao = new LancamentoRecebimentoExportacao();
                OLancamentoRecebimentoExportacao.baixarExcel(lista);

                return(null);
            }

            ViewBag.dtInicio = dtInicio.Value.ToShortDateString();
            ViewBag.dtFim    = dtFim.Value.ToShortDateString();

            ViewModel.listaTituloReceitaPagamento = lista.ToPagedList(UtilRequest.getNroPagina(), UtilRequest.getNroRegistros());

            return(View(ViewModel));
        }
        /// <summary>
        /// Listagem de receitas de acordo com a busca realizada
        /// </summary>
        public ActionResult listar(LancamentoRecebimentoVM ViewModel)
        {
            ViewModel.dtInicio = ViewModel.dtInicio ?? new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1);
            ViewModel.dtFim    = ViewModel.dtFim ?? new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.DaysInMonth(DateTime.Now.Year, DateTime.Now.Month));
            var query = this.OTituloReceitaPagamentoResumoVWBL.listarPagamentoReceitas(ViewModel.valorBusca, ViewModel.idCentroCusto.toInt(), ViewModel.idMacroConta.toInt(), ViewModel.idContaBancaria.toInt(), 0, ViewModel.flagPago, ViewModel.pesquisarPor, ViewModel.dtInicio, ViewModel.dtFim);

            if (ViewModel.idsTipoReceita.Any())
            {
                var ids = ViewModel.idsTipoReceita.Select(x => x.toByte()).ToList();
                query = query.Where(x => ids.Contains(x.idTipoReceita.Value));
            }
            if (ViewModel.idGateway > 0)
            {
                query = query.Where(x => x.idGatewayPagamento == ViewModel.idGateway);
            }
            if (ViewModel.idMeioPagamento > 0)
            {
                query = query.Where(x => x.idMeioPagamento == ViewModel.idMeioPagamento);
            }
            if (ViewModel.flagTipoBaixa == "M")
            {
                query = query.Where(x => x.flagBaixaAutomatica != true);
            }
            if (ViewModel.flagTipoBaixa == "A")
            {
                query = query.Where(x => x.flagBaixaAutomatica == true);
            }
            if (!ViewModel.valorBuscaLote.isEmpty())
            {
                string[] separadores      = { "\r\n" };
                string[] valoresBusca     = ViewModel.valorBuscaLote.Split(separadores, StringSplitOptions.None).Where(x => !x.isEmpty()).ToArray();
                var      valoresNumericos = valoresBusca.Select(x => (int?)x.toInt()).Where(x => x > 0).ToList();
                var      valoresSoNumeros = valoresBusca.Select(UtilString.onlyNumber).Where(x => !x.isEmpty()).ToList();
                query = query.Where(x => valoresNumericos.Contains(x.idTituloPagamento) ||
                                    valoresNumericos.Contains(x.idTituloReceita) ||
                                    valoresSoNumeros.Contains(x.tokenTransacao) ||
                                    valoresSoNumeros.Contains(x.nroDocumentoPessoa));
            }
            if (ViewModel.flagTipoSaida == TipoSaidaHelper.EXCEL)
            {
                var OLancamentoRecebimentoExportacao = new LancamentoRecebimentoExportacao();
                OLancamentoRecebimentoExportacao.baixarExcel(query.ToList());
                return(null);
            }
            var listaResumo = query.Select(
                x => new {
                x.dtPagamento,
                x.dtPrevisaoCredito,
                x.dtCredito,
                x.idArquivoRemessa,
                x.valorRecebido,
                x.valorOriginal,
                x.valorJuros,
                x.valorDesconto,
                x.valorDescontoAntecipacao,
                x.valorDescontoCupom,
                x.valorTarifasBancarias,
                x.valorTarifasTransacao,
                x.valorOutrasTarifas,
                x.dtVencimentoRecebimento
            })
                              .ToListJsonObject <TituloReceitaPagamentoResumoVW>();

            var listaReceitasRecebidas = listaResumo.Where(x => x.dtPagamento != null).ToList();
            var listaReceitasEmAberto  = listaResumo.Where(x => x.dtPagamento == null).ToList();
            var listaReceitasAtraso    = listaResumo.Where(x => x.dtPagamento == null && x.dtVencimentoRecebimento < DateTime.Now).ToList();

            ViewModel.totalReceitasRecebidas        = (listaReceitasRecebidas.Count > 0) ? listaReceitasRecebidas.Sum(x => x.valorRecebido) : 0;
            ViewModel.totalReceitasLiquidaRecebidas = (listaReceitasRecebidas.Count > 0) ? listaReceitasRecebidas.Sum(x => x.valorLiquido()) : 0;
            ViewModel.totalReceitasEmAberto         = (listaReceitasEmAberto.Count > 0) ? listaReceitasEmAberto.Sum(x => x.valorComJurosEDescontos()) : 0;
            ViewModel.totalReceitasAtraso           = (listaReceitasAtraso.Count > 0) ? listaReceitasAtraso.Sum(x => x.valorComJurosEDescontos()) : 0;

            query = query.OrderBy(x => x.dtVencimentoRecebimento);

            if (ViewModel.pesquisarPor == "P")
            {
                query = query.OrderBy(x => x.dtPagamento);
            }
            else if (ViewModel.pesquisarPor == "C")
            {
                query = query.OrderBy(x => x.dtCredito);
            }
            else if (ViewModel.pesquisarPor == "PC")
            {
                query = query.OrderBy(x => x.dtPrevisaoCredito);
            }

            ViewModel.listaTituloReceitaPagamento = query.ToPagedList(UtilRequest.getNroPagina(), UtilRequest.getNroRegistros());

            return(View(ViewModel));
        }