Пример #1
0
        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);
            }
        }
Пример #2
0
        protected void CarregarValores()
        {
            IndiceFinanceiro lIndiceFinanceiro =
                IndiceFinanceiroBLL.Instance.BuscarPorId(Convert.ToInt32(Request.QueryString["id"]));

            GridView1.DataSource = lIndiceFinanceiro.Valores;
            GridView1.DataBind();
            PanelValores.Visible = true;
        }
Пример #3
0
        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);
                    }
                }
            }
        }
Пример #4
0
        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);
        }