Example #1
0
        private bool ValidarFiltroRelOrcamento(RelOrcamentoFiltro filtro)
        {
            if ((!filtro.Orcamento.Id.HasValue) || (filtro.Orcamento.Id.HasValue) && (filtro.Orcamento.Id == 0))
            {
                messageQueue.Add("Selecione o orçamento", TypeMessage.Warning);
                return(false);
            }

            if ((filtro.EhValorCorrigido) && ((!filtro.IndiceId.HasValue) || (filtro.IndiceId.HasValue) && (filtro.IndiceId == 0)))
            {
                messageQueue.Add("Informe o índice", TypeMessage.Warning);
                return(false);
            }

            return(true);
        }
Example #2
0
 public RelOrcamentoListaViewModel()
 {
     Classe           = new ClasseDTO();
     Filtro           = new RelOrcamentoFiltro();
     Filtro.Orcamento = new OrcamentoDTO();
 }
Example #3
0
        public FileDownloadDTO ExportarRelOrcamento(RelOrcamentoFiltro filtro, OrcamentoDTO orcamentoDTO, FormatoExportacaoArquivo formato)
        {
            DataTable dtaRelatorio = new DataTable();

            FileDownloadDTO arquivo = new FileDownloadDTO("Rel. Orçamento ", new System.IO.MemoryStream(), formato);

            if (orcamentoDTO == null)
            {
                return(arquivo);
            }

            ParametrosOrcamento parametros = parametrosOrcamentoRepository.Obter();
            var centroCusto   = centroCustoRepository.ObterPeloCodigo(orcamentoDTO.Obra.CentroCusto.Codigo, l => l.ListaCentroCustoEmpresa);
            var caminhoImagem = PrepararIconeRelatorio(centroCusto, parametros);
            var nomeEmpresa   = ObterNomeEmpresa(centroCusto, parametros);

            if (!filtro.EhClasse)
            {
                relOrcamento objRelOrcamento = new relOrcamento();

                dtaRelatorio = RelOrcamentoToDataTable(orcamentoDTO, false);

                objRelOrcamento.SetDataSource(dtaRelatorio);

                objRelOrcamento.SetParameterValue("ComBDI", filtro.EhBDI);
                objRelOrcamento.SetParameterValue("SemDetalhamento", filtro.EhSemDetalhamento);
                objRelOrcamento.SetParameterValue("TotalBDI", filtro.BDITotal);
                objRelOrcamento.SetParameterValue("ValorTotal", filtro.PrecoTotal);
                objRelOrcamento.SetParameterValue("NomeIndice", filtro.NomeIndice);
                objRelOrcamento.SetParameterValue("Defasagem", filtro.Defasagem);
                objRelOrcamento.SetParameterValue("DataBase", filtro.DataBase);
                objRelOrcamento.SetParameterValue("CotacaoBase", filtro.CotacaoBase);
                objRelOrcamento.SetParameterValue("DataAtual", filtro.DataAtual);
                objRelOrcamento.SetParameterValue("CotacaoAtual", filtro.CotacaoAtual);
                objRelOrcamento.SetParameterValue("ValorCorrigido", filtro.EhValorCorrigido);
                objRelOrcamento.SetParameterValue("AreaConstrucaoAreaReal", filtro.AreaConstrucaoAreaReal);
                objRelOrcamento.SetParameterValue("AreaConstrucaoAreaEquivalente", filtro.AreaConstrucaoAreaEquivalente);
                objRelOrcamento.SetParameterValue("caminhoImagem", caminhoImagem);

                arquivo = new FileDownloadDTO("Rel. Orçamento", objRelOrcamento.ExportToStream((ExportFormatType)formato), formato);
            }
            else
            {
                relOrcamentoClasse objRelOrcamentoClasse = new relOrcamentoClasse();

                dtaRelatorio = RelOrcamentoToDataTable(orcamentoDTO, true);

                objRelOrcamentoClasse.SetDataSource(dtaRelatorio);

                objRelOrcamentoClasse.SetParameterValue("ComBDI", filtro.EhBDI);
                objRelOrcamentoClasse.SetParameterValue("SemDetalhamento", filtro.EhSemDetalhamento);
                objRelOrcamentoClasse.SetParameterValue("TotalBDI", filtro.BDITotal);
                objRelOrcamentoClasse.SetParameterValue("ValorTotal", filtro.PrecoTotal);
                objRelOrcamentoClasse.SetParameterValue("NomeIndice", filtro.NomeIndice);
                objRelOrcamentoClasse.SetParameterValue("Defasagem", filtro.Defasagem);
                objRelOrcamentoClasse.SetParameterValue("DataBase", filtro.DataBase);
                objRelOrcamentoClasse.SetParameterValue("CotacaoBase", filtro.CotacaoBase);
                objRelOrcamentoClasse.SetParameterValue("DataAtual", filtro.DataAtual);
                objRelOrcamentoClasse.SetParameterValue("CotacaoAtual", filtro.CotacaoAtual);
                objRelOrcamentoClasse.SetParameterValue("ValorCorrigido", filtro.EhValorCorrigido);
                objRelOrcamentoClasse.SetParameterValue("AreaConstrucaoAreaReal", filtro.AreaConstrucaoAreaReal);
                objRelOrcamentoClasse.SetParameterValue("AreaConstrucaoAreaEquivalente", filtro.AreaConstrucaoAreaEquivalente);
                objRelOrcamentoClasse.SetParameterValue("caminhoImagem", caminhoImagem);

                arquivo = new FileDownloadDTO("Rel. Orçamento Classe", objRelOrcamentoClasse.ExportToStream((ExportFormatType)formato), formato);
            }

            if (System.IO.File.Exists(caminhoImagem))
            {
                System.IO.File.Delete(caminhoImagem);
            }

            return(arquivo);
        }
Example #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);
        }