Exemplo n.º 1
0
        protected void grdConta_SelectedIndexChanged(object sender, EventArgs e)
        {
            // Pega a data de vencimento do boleto, que pode ter sido alterado
            bool   boletoChegou = ((HiddenField)((GridView)sender).SelectedRow.FindControl("hdfBoletoChegou")).Value.ToLower() == "true";
            string idContaPg    = ((HiddenField)((GridView)sender).SelectedRow.FindControl("hdfIdContaPg")).Value;
            string dataVenc     = null;

            if (!boletoChegou)
            {
                dataVenc = ((TextBox)((GridView)sender).SelectedRow.FindControl("txtDataVenc")).Text;

                if (!FuncoesData.ValidaData(dataVenc))
                {
                    Glass.MensagemAlerta.ShowMsg("Data inválida.", Page);
                    return;
                }
            }

            ContasPagarDAO.Instance.BoletoChegou(null, !boletoChegou, 0, Glass.Conversoes.StrParaUint(idContaPg), dataVenc);

            // Desmarca linha da grid como selecionada
            ((GridView)sender).SelectedIndex = -1;

            grdConta.DataBind();
        }
Exemplo n.º 2
0
        /// <summary>
        /// Recupera a data da rota por cliente.
        /// </summary>
        public DateTime?GetDataRota(GDASession session, uint idCli, DateTime dataInicial, bool somarDiasUteisRota, Pedido.TipoPedidoEnum?tipoPedido, bool recalculaDataRota = false)
        {
            Rota rota = this.GetByCliente(session, idCli);

            if (rota == null || (rota.DiasSemana == Model.DiasSemana.Nenhum && rota.NumeroMinimoDiasEntrega == 0))
            {
                return(null);
            }

            var diasConsiderar = tipoPedido == Pedido.TipoPedidoEnum.Revenda ?
                                 PedidoConfig.DataEntrega.NumeroDiasUteisDataEntregaPedidoRevenda :
                                 rota.NumeroMinimoDiasEntrega;

            int numeroDias = (dataInicial - DateTime.Now).Days;

            // Calcula a rota considerando dias corridos
            if (RotaConfig.UsarDiasCorridosCalculoRota && tipoPedido != Pedido.TipoPedidoEnum.Revenda)
            {
                // A comparação do número de dias percorrido com o número mínimo de dias da rota deve ser "numeroDias++ < rota.NumeroMinimoDiasEntrega",
                // porque dessa forma caso o último dia da contagem caia no dia da rota, esta data será usada, porém da forma como estava antes,
                // "numeroDias++ <= rota.NumeroMinimoDiasEntrega", a data usada será a da outra semana.
                // while (numeroDias++ < rota.NumeroMinimoDiasEntrega || dataInicial.Feriado() ||
                /* Chamado 54042. */
                while ((somarDiasUteisRota ? numeroDias++ < diasConsiderar : false) || dataInicial.Feriado() ||
                       (rota.DiasSemana != Model.DiasSemana.Nenhum && !this.TemODia(dataInicial.DayOfWeek, rota.DiasSemana)))
                {
                    dataInicial = dataInicial.AddDays(1);
                }
            }
            // Calcula a rota considerando dias úteis
            else
            {
                /* Chamado 54042. */
                if (somarDiasUteisRota && !recalculaDataRota)
                {
                    for (var i = 0; i < diasConsiderar; i++)
                    {
                        dataInicial = dataInicial.AddDays(1);

                        // Enquanto não for dia útil, continua avançando a data
                        while (!FuncoesData.DiaUtil(dataInicial))
                        {
                            dataInicial = dataInicial.AddDays(1);
                        }
                    }
                }

                // Depois de calcular os dias mínimos da rota, verifica se a data é um dia da rota
                if (rota.DiasSemana != Model.DiasSemana.Nenhum && !this.TemODia(dataInicial.DayOfWeek, rota.DiasSemana))
                {
                    while (!this.TemODia(dataInicial.DayOfWeek, rota.DiasSemana) || dataInicial.Feriado())
                    {
                        dataInicial = dataInicial.AddDays(1);
                    }
                }
            }

            return(dataInicial);
        }
Exemplo n.º 3
0
 protected void Page_Load(object sender, EventArgs e)
 {
     if (!IsPostBack)
     {
         ((TextBox)ctrlDataIni.FindControl("txtData")).Text = FuncoesData.ObtemDataPrimeiroDiaUltimoMes();
         ((TextBox)ctrlDataFim.FindControl("txtData")).Text = FuncoesData.ObtemDataUltimoDiaUltimoMes();
     }
 }
Exemplo n.º 4
0
 protected void Page_Load(object sender, EventArgs e)
 {
     if (((TextBox)ctrlDataIni.FindControl("txtData")).Text == String.Empty)
     {
         ((TextBox)ctrlDataIni.FindControl("txtData")).Text = DateTime.Parse("01/" + DateTime.Now.AddMonths(-1).Month + "/" + DateTime.Now.AddMonths(-1).Year).ToString("dd/MM/yyyy");
         ((TextBox)ctrlDataFim.FindControl("txtData")).Text = FuncoesData.ObtemDataUltimoDiaUltimoMes();
     }
 }
Exemplo n.º 5
0
        /// <summary>
        /// Verifica se a data passada é um dia útil
        /// </summary>
        /// <param name="idGrupo"></param>
        public static string IsDiaUtil(string data)
        {
            if (data.IndexOf("GMT") > -1)
            {
                data = data.Substring(0, data.IndexOf("GMT") - 1);
            }

            var dataRetorno = DateTime.Parse(data, System.Globalization.CultureInfo.InvariantCulture);

            return(FuncoesData.DiaUtil(dataRetorno).ToString().ToLower());
        }
Exemplo n.º 6
0
        private void SeriesVendas(uint idLoja, int tipoFunc, uint idVend, uint idCli, string nomeCliente,
                                  DateTime dataIni, DateTime dataFim, int agrupar)
        {
            // Limpa a lista
            series.Clear();

            // Recupera os dados das séries
            GraficoVendas[] s = GraficoVendasDAO.Instance.GetVendas(idLoja, tipoFunc, idVend, idCli, nomeCliente,
                                                                    dataIni.ToString("dd/MM/yyyy"), dataFim.ToString("dd/MM/yyyy"), agrupar, true);

            foreach (GraficoVendas g in s)
            {
                // Variável de controle dos meses
                DateTime dataCateg = dataIni;

                // Armazena os meses do intervalo de tempo informado em categorias
                while (dataCateg < dataFim)
                {
                    // Cria o nome da série
                    string nome = FuncoesData.ObtemMes(dataCateg.Month, true) + "/" + dataCateg.ToString("yy");
                    if (!series.ContainsKey(nome))
                    {
                        series.Add(nome, new List <Serie>());
                    }

                    // Recupera os dados da série
                    Serie nova = new Serie();
                    nova.Loja     = g.IdLoja;
                    nova.Vendedor = g.IdFunc;
                    nova.Cliente  = g.IdCliente;

                    // Adiciona a categoria passando a data
                    if (!series[nome].Contains(nova))
                    {
                        series[nome].Add(nova);
                    }

                    dataCateg = dataCateg.AddMonths(1);
                }
            }
        }
Exemplo n.º 7
0
        public RetornoGerar Gerar(uint idCustoFixo, string mesAno, int diaVenc, decimal valorVenc, string obs)
        {
            lock (gerarCustoFixo)
            {
                using (var transaction = new GDATransaction())
                {
                    try
                    {
                        transaction.BeginTransaction();

                        CustoFixo c = GetElement(transaction, idCustoFixo);

                        RetornoGerar retorno = new RetornoGerar();
                        retorno.Descricao = c.Descricao;

                        // Verifica se o dia escolhido para gerar o custo fixo é válido.
                        if (!FuncoesData.ValidaData(diaVenc + "/" + mesAno))
                        {
                            retorno.Tipo = RetornoGerar.TipoRetorno.DataInvalida;
                            return(retorno);
                        }

                        // Verifica se este custo fixo já foi gerado para este mês
                        else if (ContasPagarDAO.Instance.ExistsCustoFixo(transaction, idCustoFixo, mesAno))
                        {
                            retorno.Tipo = RetornoGerar.TipoRetorno.JaExiste;
                            return(retorno);
                        }

                        ContasPagar contaPagar = new ContasPagar();
                        contaPagar.IdCustoFixo = c.IdCustoFixo;
                        contaPagar.DataVenc    = DateTime.Parse(diaVenc + "/" + mesAno);
                        contaPagar.IdConta     = c.IdConta;
                        contaPagar.IdFornec    = c.IdFornec;
                        contaPagar.IdLoja      = c.IdLoja;
                        contaPagar.Paga        = false;
                        contaPagar.ValorVenc   = valorVenc;
                        contaPagar.Contabil    = c.Contabil;
                        contaPagar.Obs         = obs;

                        // Atualizar o valor, a data de vencimento e a data que foi gerado deste custo fixo
                        UpdateValorDiaVenc(transaction, idCustoFixo, valorVenc, diaVenc);

                        // Insere conta a pagar e atualiza o número das parcelas
                        ContasPagarDAO.Instance.Insert(transaction, contaPagar);
                        ContasPagarDAO.Instance.AtualizaNumParcCustoFixo(transaction, idCustoFixo);

                        retorno.Tipo = RetornoGerar.TipoRetorno.OK;

                        transaction.Commit();
                        transaction.Close();

                        return(retorno);
                    } catch (Exception ex)
                    {
                        transaction.Rollback();
                        transaction.Close();
                        ErroDAO.Instance.InserirFromException("CustoFixoDAO(Gerar). IdCustoFixo:" + idCustoFixo, ex);
                        throw;
                    }
                }
            }
        }
Exemplo n.º 8
0
 public bool VerificaDiaUtil(DateTime data)
 {
     return(FuncoesData.DiaUtil(data));
 }
Exemplo n.º 9
0
        /// <summary>
        /// Inicia uma nova instância da classe <see cref="ListaDto"/>.
        /// </summary>
        /// <param name="subgrupoProduto">O subgrupo de produto que será retornado.</param>
        public ListaDto(Global.Negocios.Entidades.SubgrupoProdPesquisa subgrupoProduto)
        {
            this.Id                         = subgrupoProduto.IdSubgrupoProd;
            this.Nome                       = subgrupoProduto.Descricao;
            this.VidroTemperado             = subgrupoProduto.IsVidroTemperado;
            this.LiberarPendenteProducao    = subgrupoProduto.LiberarPendenteProducao;
            this.PermitirItemRevendaNaVenda = subgrupoProduto.PermitirItemRevendaNaVenda;
            this.Tipo                       = new IdNomeDto()
            {
                Id   = (int)subgrupoProduto.TipoSubgrupo,
                Nome = Colosoft.Translator.Translate(subgrupoProduto.TipoSubgrupo).Format(),
            };

            this.Cliente = new IdNomeDto()
            {
                Id   = subgrupoProduto.IdCli,
                Nome = subgrupoProduto.IdCli > 0
                    ? ClienteDAO.Instance.GetNome((uint)subgrupoProduto.IdCli.Value)
                    : string.Empty,
            };

            this.LojasAssociadas = this.ObterLojasAssociadas(subgrupoProduto.IdsLojaAssociacao, subgrupoProduto.Lojas);

            this.Entrega = new EntregaDto()
            {
                DiaSemana = new IdNomeDto()
                {
                    Id   = subgrupoProduto.DiaSemanaEntrega,
                    Nome = subgrupoProduto.DiaSemanaEntrega > 0 ? FuncoesData.ObtemNomeDiaSemana(subgrupoProduto.DiaSemanaEntrega.Value).Format() : string.Empty,
                },

                DiasMinimo = subgrupoProduto.NumeroDiasMinimoEntrega,
            };

            this.TiposCalculo = new TiposCalculoDto()
            {
                Pedido = new IdNomeDto()
                {
                    Id   = (int?)subgrupoProduto.TipoCalculo,
                    Nome = Colosoft.Translator.Translate(subgrupoProduto.TipoCalculo).Format(),
                },
                NotaFiscal = new IdNomeDto()
                {
                    Id   = (int?)subgrupoProduto.TipoCalculoNf,
                    Nome = Colosoft.Translator.Translate(subgrupoProduto.TipoCalculoNf).Format(),
                },
            };

            this.Estoque = new EstoqueDto()
            {
                BloquearEstoque        = subgrupoProduto.BloquearEstoque,
                AlterarEstoque         = subgrupoProduto.AlterarEstoque,
                AlterarEstoqueFiscal   = subgrupoProduto.AlterarEstoqueFiscal,
                ExibirMensagemEstoque  = subgrupoProduto.ExibirMensagemEstoque,
                GeraVolume             = subgrupoProduto.GeraVolume,
                BloquearVendaECommerce = subgrupoProduto.BloquearEcommerce,
                ProdutoParaEstoque     = subgrupoProduto.ProdutosEstoque,
            };

            this.Permissoes = new PermissoesDto()
            {
                Excluir       = !subgrupoProduto.SubgrupoSistema,
                LogAlteracoes = LogAlteracaoDAO.Instance.TemRegistro(Data.Model.LogAlteracao.TabelaAlteracao.SubgrupoProduto, (uint)subgrupoProduto.IdSubgrupoProd, null),
            };
        }
Exemplo n.º 10
0
        private void GeraGrafico()
        {
            #region Filtros

            uint     idLoja     = Glass.Conversoes.StrParaUint(drpLoja.SelectedValue);
            uint     idVendedor = String.IsNullOrEmpty(drpVendedor.SelectedValue) ? 0 : Glass.Conversoes.StrParaUint(drpVendedor.SelectedValue);
            int      agrupar    = Glass.Conversoes.StrParaInt(drpAgrupar.SelectedValue);
            int      situacao   = Glass.Conversoes.StrParaInt(drpSituacao.SelectedValue);
            DateTime dataIni    = Convert.ToDateTime(((TextBox)ctrlDataIni.FindControl("txtData")).Text);
            DateTime dataFim    = Convert.ToDateTime(((TextBox)ctrlDataFim.FindControl("txtData")).Text);

            #endregion

            #region Gráfico

            //Cria a área do gráfico
            Chart1.Width  = 1000;
            Chart1.Height = 300;
            Chart1.ChartAreas.Add("Totais");
            Chart1.ChartAreas[0].AlignmentStyle          = AreaAlignmentStyles.Position;
            Chart1.ChartAreas[0].Position.Height         = 90;
            Chart1.ChartAreas[0].Position.Width          = 77;
            Chart1.ChartAreas[0].Position.Y              = 5;
            Chart1.ChartAreas[0].AxisX.IsMarginVisible   = true;
            Chart1.ChartAreas[0].AxisY.IsMarginVisible   = true;
            Chart1.ChartAreas[0].AxisY.LabelStyle.Format = "{C}";
            //Titulo
            Chart1.Titles.Add("Totais");
            Chart1.Titles[0].Alignment = ContentAlignment.TopCenter;
            Chart1.Titles[0].Docking   = Docking.Top;
            Chart1.Titles[0].IsDockedInsideChartArea = false;
            Chart1.Titles[0].Position.X               = 13;
            Chart1.Titles[0].Position.Y               = 30;
            Chart1.Titles[0].Position.Width           = 63;
            Chart1.Titles[0].Position.Height          = 100;
            Chart1.Titles[0].Font                     = new Font("Arial", 11, FontStyle.Bold);
            Chart1.ChartAreas[0].AxisX.Title          = "Período";
            Chart1.ChartAreas[0].AxisX.TitleAlignment = StringAlignment.Center;
            Chart1.ChartAreas[0].AxisX.TitleFont      = new Font("Arial", 11, FontStyle.Italic);
            Chart1.Legends.Add("legenda");
            Chart1.ChartAreas[0].AxisY.Interval       = 120000;
            Chart1.ChartAreas[0].AxisY.IntervalOffset = 0;

            if (agrupar == 2)
            {
                Chart1.ChartAreas[0].AxisY.Interval       = 60000;
                Chart1.ChartAreas[0].AxisY.IntervalOffset = 0;
            }

            if (agrupar == 3)
            {
                Chart1.ChartAreas[0].AxisY.Interval       = 10000;
                Chart1.ChartAreas[0].AxisY.IntervalOffset = 0;
            }

            #endregion

            var series  = new Dictionary <string, List <Serie> >();
            var valores = new Dictionary <string, List <Valor> >();

            var dados = GraficoOrcamentosDAO.Instance.GetOrcamentos(idLoja, idVendedor, new int[] { situacao }, dataIni.ToString("dd/MM/yyyy"),
                                                                    dataFim.ToString("dd/MM/yyyy"), agrupar, true);

            foreach (var g in dados)
            {
                // Variável de controle dos meses
                DateTime dataCateg = dataIni;

                // Armazena os meses do intervalo de tempo informado em categorias
                while (dataCateg < dataFim)
                {
                    // Cria o nome da série
                    string nome = FuncoesData.ObtemMes(dataCateg.Month, true) + "/" + dataCateg.ToString("yy");
                    if (!series.ContainsKey(nome))
                    {
                        series.Add(nome, new List <Serie>());
                    }

                    // Recupera os dados da série
                    Serie nova = new Serie();
                    nova.Loja     = g.IdLoja;
                    nova.Vendedor = g.IdFunc;
                    nova.Situacao = g.Situacao;

                    // Adiciona a categoria passando a data
                    if (!series[nome].Contains(nova))
                    {
                        series[nome].Add(nova);
                    }

                    dataCateg = dataCateg.AddMonths(1);
                }
            }

            var dadosSeries = new List <Serie>();

            // Seleciona apenas os itens distintos das séries
            foreach (string k in series.Keys)
            {
                foreach (Serie serie in series[k])
                {
                    if (!dadosSeries.Contains(serie))
                    {
                        dadosSeries.Add(serie);
                    }
                }
            }

            foreach (Serie s in dadosSeries)
            {
                // Busca os dados que servirão para preencher as séries do gráfico
                var v = GraficoOrcamentosDAO.Instance.GetOrcamentos(agrupar == 1 ? s.Loja : idLoja, agrupar == 2 ? s.Vendedor : idVendedor,
                                                                    agrupar == 3 ? new int[] { s.Situacao } : new int[] { situacao }, dataIni.ToString("dd/MM/yyyy"), dataFim.ToString("dd/MM/yyyy"), agrupar, false);

                var dataCateg = dataIni;

                // Armazena os meses do intervalo de tempo informado em categorias
                while (dataCateg < dataFim)
                {
                    Valor novo = new Valor();
                    novo.Data = dataCateg.ToString("MM/yyyy");
                    string nome = "";

                    // Para cada categoria (mes/ano) do gráfico, atribui o valor correspondente
                    foreach (var g in v)
                    {
                        nome = agrupar == 1 ? g.NomeLoja : agrupar == 2 ? g.NomeVendedor : agrupar == 3 ? g.DescrSituacao : "Empresa";
                        if (!valores.ContainsKey(nome))
                        {
                            valores.Add(nome, new List <Valor>());
                        }

                        if (g.DataVenda != novo.Data)
                        {
                            continue;
                        }

                        novo.Total = g.TotalVenda;
                        if (!valores[nome].Contains(novo))
                        {
                            valores[nome].Add(novo);
                            break;
                        }
                    }

                    bool encontrado = false;
                    foreach (Valor val in valores[nome])
                    {
                        if (val.Data == novo.Data)
                        {
                            encontrado = true;
                            break;
                        }
                    }

                    if (!encontrado)
                    {
                        novo.Total = 0;
                        valores[nome].Add(novo);
                    }

                    dataCateg = dataCateg.AddMonths(1);
                }
            }

            foreach (KeyValuePair <string, List <Valor> > val in valores)
            {
                ArrayList lstValuesX = new ArrayList();
                ArrayList lstValuesY = new ArrayList();

                Series serie = new Series(val.Key);
                serie.ChartType = SeriesChartType.Line;
                //series.XValueType = ChartValueType.String;
                serie.MarkerStyle = MarkerStyle.Circle;
                serie.MarkerSize  = 8;
                serie.MarkerColor = serie.BorderColor;
                serie.BorderWidth = 3;
                //Chart1.Series[i].IsValueShownAsLabel = true;
                serie.ToolTip    = val.Key + ", #VALX, " + "#VALY{C}";
                serie.Legend     = "legenda";
                serie.LegendText = val.Key;
                //series.IsVisibleInLegend = true;
                serie.LegendToolTip = val.Key;
                Chart1.Series.Add(serie);

                foreach (Valor s in val.Value)
                {
                    lstValuesX.Add(s.Data);
                    lstValuesY.Add(s.Total);
                }

                serie.Points.DataBindXY(lstValuesX, lstValuesY);
            }

            var buffer = Util.Helper.ChartToByteArray(Chart1);

            hdfTempFile.Value = Glass.Conversoes.CodificaPara64(buffer); //String.Concat("file:///", Glass.Util.Helper.SalvaGraficoTemp(Chart1, "Orcamentos" + DateTime.Now.ToString("ddMMyyyyHHmmss")));
        }
Exemplo n.º 11
0
        public FluxoCaixa[] GetForRpt(string dataIni, string dataFim, bool prevCustoFixo, string tipoConta)
        {
            SaldoInicial saldoInicial = null;

            if (String.IsNullOrEmpty(dataFim) || String.IsNullOrEmpty(dataIni))
            {
                return(new FluxoCaixa[0]);
            }

            GDAParameter[] param = new GDAParameter[] {
                new GDAParameter("?dataIni", DateTime.Parse(dataIni + " 00:00")),
                new GDAParameter("?dataFim", DateTime.Parse(dataFim + " 23:59"))
            };

            var sql = Sql("?dataIni", "?dataFim", tipoConta);

            var lstFluxoCaixa = objPersistence.LoadData(sql, param).ToList();

            #region Busca os custos fixos se previsão estiver marcada

            if (prevCustoFixo)
            {
                // Data Inicial/Final para a previsão de custos fixos
                DateTime dataIniPrev = DateTime.Parse(dataIni);
                DateTime dataFimPrev = DateTime.Parse(dataFim);

                // Pega a quantidade de meses que serão buscados os custos fixos
                int qtdMeses = (int)FuncoesData.DateDiff(DateInterval.Month, dataIniPrev, dataFimPrev) + 1;

                // Contador do mês que serão buscados os custos fixos
                int contMesAtual = 1;

                // Datas utilizadas como parâmetros para a busca de custos fixos
                DateTime dataIniParam = DateTime.Parse(dataIniPrev.ToString("dd/MM/yyyy 00:00"));
                DateTime dataFimParam = DateTime.Parse(dataIniParam.AddMonths(1).ToString("dd/MM/yyyy 00:00"));

                while (contMesAtual <= qtdMeses)
                {
                    // Busca todos os custos fixos ativos do mês que não foram gerados ainda
                    sql = @"Select Str_To_Date(Concat(Least(cf.DiaVenc, Day(Last_Day(Str_To_Date(Concat('01,', Month(?dataIni), ',', Year(?dataIni)), '%d,%m,%Y')))),
                        ',', Month(?dataIni), ',', Year(?dataIni)), '%d,%m,%Y') as Data, cast(cf.idConta as signed) as idConta, 
                        Concat(g.Descricao, ' - ', p.Descricao) as Descricao, Coalesce(f.NomeFantasia, f.RazaoSocial, '') as Parceiro, 
                        cf.valorVenc as Valor, 2 as TipoMov, 1 as prevCustoFixo From custo_fixo cf Left Join fornecedor f On (cf.IdFornec=f.IdFornec) 
                        Left Join plano_contas p On (cf.IdConta=p.IdConta) Left Join grupo_conta g On (p.IdGrupo=g.IdGrupo)
                        Where cf.situacao=" + (int)CustoFixo.SituacaoEnum.Ativo + FiltroTipoConta("cf", "contabil", tipoConta) + @" And cf.idCustoFixo Not In 
                        (select * from (Select Coalesce(cp.idCustoFixo, 0) From contas_pagar cp Where cp.dataVenc>=?dataIni And cp.dataVenc<?dataFim) as temp)";

                    // Se for o primeiro mês, busca custos fixos a partir do dia especificado pelo usuário em dataIni
                    if (contMesAtual == 1)
                    {
                        sql += " And cf.diaVenc>=" + dataIniPrev.Day;
                    }

                    // Se for o primeiro mês, busca custos fixos até o dia especificado pelo usuário em dataFim
                    if (contMesAtual == qtdMeses)
                    {
                        sql += " And cf.diaVenc<=" + dataFimPrev.Day;
                    }

                    // Se a dataFimParam for maior que o filtro de dataFim aplicado pelo usuário, utiliza a dataFim aplicada pelo usuário
                    dataFimParam = dataFimParam > dataFimPrev ? dataFimPrev : dataFimParam;

                    lstFluxoCaixa.AddRange(objPersistence.LoadData(sql, new GDAParameter[] { new GDAParameter("?dataIni", dataIniParam), new GDAParameter("?dataFim", dataFimParam) }));

                    // Incrementa em 1 mês a data de verificação de custos fixos
                    dataIniParam = dataIniParam.AddMonths(1);
                    dataFimParam = dataIniParam.AddMonths(1);
                    contMesAtual++;
                }

                // Ordena a lista pelo nome do grupo e pelo nome dos itens
                lstFluxoCaixa.Sort(new Comparison <FluxoCaixa>(delegate(FluxoCaixa x, FluxoCaixa y)
                {
                    int sortOrder = DateTime.Compare(x.Data, y.Data);
                    return(sortOrder != 0 ? sortOrder : DateTime.Compare(x.Data, y.Data));
                }));
            }

            #endregion

            foreach (var item in lstFluxoCaixa)
            {
                var idTipoCartao = item.IdConta != null?Helper.UtilsPlanoConta.ObterTipoCartaoPorConta((uint)item.IdConta) : null;

                item.Data = idTipoCartao == null?item.Data.AddDays(1) : item.Data;

                while (!FuncoesData.DiaUtil(item.Data))
                {
                    item.Data = item.Data.AddDays(1);
                }
            }

            if (lstFluxoCaixa.Count > 0)
            {
                DateTime currDate    = lstFluxoCaixa[0].Data.Date;
                decimal  saldoDiario = 0;

                saldoInicial = GetSaldoInicial(!String.IsNullOrEmpty(dataIni) ? dataIni :
                                               lstFluxoCaixa.Min(x => x.Data).ToString("dd/MM/yyyy"));

                decimal valorSaldoInicial = saldoInicial.Saldo;

                uint numSeq = saldoInicial.Count;
                lstFluxoCaixa.ForEach(x => x.NumSeqMov = ++numSeq);

                // Obtém os saldos diário e geral
                foreach (FluxoCaixa fc in lstFluxoCaixa)
                {
                    if (currDate != fc.Data.Date)
                    {
                        saldoDiario = 0;
                        currDate    = fc.Data.Date;
                    }

                    decimal valorParaSaldo = fc.TipoMov == 1 ? fc.Valor : -fc.Valor;

                    // Calcula o saldo diário
                    fc.SaldoDoDia = (saldoDiario += valorParaSaldo);

                    // Calcula o saldo geral
                    fc.SaldoGeral = (valorSaldoInicial += valorParaSaldo);
                }

                // Insere as movimentações de saldo inicial no início da lista
                lstFluxoCaixa.InsertRange(0, saldoInicial.Movimentacoes.OrderBy(x => x.NumSeqMov));

                lstFluxoCaixa[0].Criterio = "Período: " + dataIni + " até " + dataFim;
            }

            return(lstFluxoCaixa.ToArray());
        }