protected void BtnSalvar_Click(object sender, EventArgs e) { try { if (TxtCodigo.Text.Trim().Equals(String.Empty)) { TxtCodigo.Text = ""; TxtCodigo.Focus(); throw new CampoNaoInformadoException("Índice Financeiro", "Código", true); } if (TxtPeriodicidade.Text.Trim().Equals(String.Empty)) { TxtPeriodicidade.Text = ""; TxtPeriodicidade.Focus(); throw new CampoNaoInformadoException("Índice Financeiro", "Periodicidade", true); } if (TxtValor.Text.Trim().Equals(String.Empty)) { TxtPeriodicidade.Text = ""; TxtPeriodicidade.Focus(); throw new CampoNaoInformadoException("Índice Financeiro", "Valor", true); } if (TxtDataReferencia.Text.Trim().Equals(String.Empty)) { TxtPeriodicidade.Text = ""; TxtPeriodicidade.Focus(); throw new CampoNaoInformadoException("Índice Financeiro", "Data de Referência", true); } IndiceFinanceiro lIndiceFinanceiro = null; IndiceFinanceiroValor lIndiceFinanceiroValor = new IndiceFinanceiroValor(); string mensagem = ""; if (Request.QueryString["id"] != null) { lIndiceFinanceiro = IndiceFinanceiroBLL.Instance.BuscarPorId(Convert.ToInt32(Request.QueryString["id"])); mensagem = "Índice financeiro alterado com sucesso."; } else { lIndiceFinanceiro = new IndiceFinanceiro(); mensagem = "Índice financeiro cadastrado com sucesso."; } lIndiceFinanceiro.Codigo = TxtCodigo.Text.Trim(); lIndiceFinanceiro.Periodicidade = TxtPeriodicidade.Text.ToCharArray()[0]; lIndiceFinanceiroValor.DataReferencia = DateTime.Parse(TxtDataReferencia.Text); lIndiceFinanceiroValor.Valor = float.Parse(TxtValor.Text); if (lIndiceFinanceiro.Valores == null) { lIndiceFinanceiro.Valores = new List <IndiceFinanceiroValor>(); } lIndiceFinanceiro.Valores.Add(lIndiceFinanceiroValor); IndiceFinanceiroBLL.Instance.Persistir(lIndiceFinanceiro); Web.ExibeAlerta(Page, mensagem, "Listar.aspx"); } catch (BusinessException ex) { Web.ExibeAlerta(Page, ex.Message); } }
protected void CarregarValores() { IndiceFinanceiro lIndiceFinanceiro = IndiceFinanceiroBLL.Instance.BuscarPorId(Convert.ToInt32(Request.QueryString["id"])); GridView1.DataSource = lIndiceFinanceiro.Valores; GridView1.DataBind(); PanelValores.Visible = true; }
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { if (Request.QueryString["id"] != null) { switch (Request.QueryString["acao"]) { case "abrir": CarregarValores(); BloquearComponentes(); break; case "editar": break; } try { IndiceFinanceiro lIndiceFinanceiro = IndiceFinanceiroBLL.Instance.BuscarPorId(Convert.ToInt32(Request.QueryString["id"])); IndiceFinanceiroValor lIndiceFinanceiroValor = null; TxtCodigo.Text = lIndiceFinanceiro.Codigo; TxtPeriodicidade.Text = lIndiceFinanceiro.Periodicidade.ToString(); DateTime lDataRefMaisRecente = DateTime.MinValue; lIndiceFinanceiroValor = lIndiceFinanceiro.ValorMaisRecente; TxtValor.Text = lIndiceFinanceiroValor.Valor.ToString(); TxtDataReferencia.Text = lIndiceFinanceiroValor.DataReferencia.ToString("yyyy-MM"); } catch (BusinessException ex) { Web.ExibeAlerta(Page, ex.Message); } } } }
public OrcamentoDTO GerarRelatorioOrcamento(RelOrcamentoFiltro filtro) { if (!EhPermitidoImprimirRelOrcamento()) { messageQueue.Add(Resource.Sigim.ErrorMessages.PrivilegiosInsuficientes, TypeMessage.Error); return(null); } if (!ValidarFiltroRelOrcamento(filtro)) { return(null); } OrcamentoDTO orcamentoDTO = null; GIR.Sigim.Domain.Entity.Orcamento.Orcamento orcamento = orcamentoRepository.ObterPeloId(filtro.Orcamento.Id.Value, l => l.Empresa.ClienteFornecedor, l => l.Obra.CentroCusto, l => l.ListaOrcamentoComposicao.Select(c => c.Composicao)); if (orcamento != null) { decimal percentualBDI = orcamento.Obra.BDIPercentual.HasValue ? orcamento.Obra.BDIPercentual.Value : 0; percentualBDI = percentualBDI / 100; decimal valorCotacao = 1; decimal valorCotacaoAtual = 1; decimal preco = 0; decimal quantidade = 0; decimal BDI = 0; decimal precoSemBDI = 0; decimal precoTotal = 0; decimal precoTotalSemBDI = 0; decimal BDITotal = 0; int defasagem = filtro.Defasagem.HasValue ? filtro.Defasagem.Value : 0; DateTime dataBase = orcamento.Data.HasValue ? orcamento.Data.Value : new DateTime(1990, 1, 1); dataBase = dataBase.Date.AddMonths(-1 * defasagem); DateTime dataAtual = DateTime.Now.Date; dataAtual = dataAtual.Date.AddMonths(-1 * defasagem); string nomeIndice = "Não informado"; if (filtro.IndiceId.HasValue) { IndiceFinanceiro indiceFinanceiro = indiceFinanceiroRepository.ObterPeloId(filtro.IndiceId.Value); nomeIndice = indiceFinanceiro.Descricao; CotacaoValores cotacao = cotacaoValoresRepository.ObtemCotacao(filtro.IndiceId.Value, dataBase.Date); if (cotacao != null) { valorCotacao = cotacao.Valor.Value; dataBase = cotacao.Data.Value; } if (filtro.EhValorCorrigido) { CotacaoValores cotacaoAtual = cotacaoValoresRepository.ObtemCotacao(filtro.IndiceId.Value, dataAtual.Date); valorCotacaoAtual = cotacaoAtual.Valor.Value; dataAtual = cotacaoAtual.Data.Value; } } List <OrcamentoComposicao> listaOrcamentoComposicao = new List <OrcamentoComposicao>(); List <OrcamentoComposicao> listaClassePaiOrcamentoComposicao = new List <OrcamentoComposicao>(); listaOrcamentoComposicao = orcamento.ListaOrcamentoComposicao.ToList <OrcamentoComposicao>(); if (filtro.EhClasse) { if (filtro.ListaClasse.Count > 0) { listaOrcamentoComposicao = orcamento.ListaOrcamentoComposicao.Where(l => filtro.ListaClasse.Any(lc => lc.Codigo.Contains(l.CodigoClasse))).ToList <OrcamentoComposicao>(); } } for (var i = 0; i < listaOrcamentoComposicao.Count; i++) { OrcamentoComposicao orcamentoComposicao = listaOrcamentoComposicao.ElementAt(i); preco = orcamentoComposicao.Preco.HasValue ? orcamentoComposicao.Preco.Value : 0; quantidade = orcamentoComposicao.Quantidade.HasValue ? orcamentoComposicao.Quantidade.Value : 0; if (valorCotacao != 0) { preco = preco / valorCotacao; } if (valorCotacaoAtual != 0) { preco = preco * valorCotacaoAtual; } preco = Math.Round(preco, 5); BDI = preco * percentualBDI; BDI = Math.Round(BDI, 4); precoSemBDI = preco; if (filtro.EhBDI) { preco += BDI; } orcamentoComposicao.Preco = preco; precoTotal = precoTotal + Math.Round((preco * quantidade), 5); precoTotalSemBDI = precoTotalSemBDI + Math.Round((precoSemBDI * quantidade), 5); if (filtro.EhClasse) { AdicionaOrcamentoComposicaoClassePai(orcamentoComposicao, listaClassePaiOrcamentoComposicao, preco); } } if (filtro.EhClasse) { listaOrcamentoComposicao.AddRange(listaClassePaiOrcamentoComposicao); } orcamento.ListaOrcamentoComposicao = listaOrcamentoComposicao.OrderBy(l => l.CodigoClasse).ToList <OrcamentoComposicao>(); BDITotal = precoTotalSemBDI * percentualBDI; filtro.BDITotal = Math.Round(BDITotal, 4); filtro.PrecoTotal = precoTotal; filtro.NomeIndice = nomeIndice; filtro.CotacaoBase = String.Format("{0:0.00000}", Math.Round(valorCotacao, 5)); filtro.CotacaoAtual = String.Format("{0:0.00000}", Math.Round(valorCotacaoAtual, 5)); filtro.Defasagem = defasagem; filtro.DataBase = dataBase; filtro.DataAtual = dataAtual; filtro.AreaConstrucaoAreaReal = orcamento.Obra.AreaConstrucaoAreaReal.HasValue ? orcamento.Obra.AreaConstrucaoAreaReal.Value : 0; filtro.AreaConstrucaoAreaEquivalente = orcamento.Obra.AreaConstrucaoAreaEquivalente.HasValue ? orcamento.Obra.AreaConstrucaoAreaEquivalente.Value : 0; orcamentoDTO = orcamento.To <OrcamentoDTO>(); } return(orcamentoDTO); }