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(); }
/// <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); }
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { ((TextBox)ctrlDataIni.FindControl("txtData")).Text = FuncoesData.ObtemDataPrimeiroDiaUltimoMes(); ((TextBox)ctrlDataFim.FindControl("txtData")).Text = FuncoesData.ObtemDataUltimoDiaUltimoMes(); } }
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(); } }
/// <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()); }
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); } } }
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; } } } }
public bool VerificaDiaUtil(DateTime data) { return(FuncoesData.DiaUtil(data)); }
/// <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), }; }
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"))); }
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()); }