예제 #1
0
        /// <summary>
        /// Obtém a imagem engenharia do projeto, com as quotas posicionadas e calculadas de acordo com o item projeto.
        /// </summary>
        public Imagem[] ObterImagemEngenharia(int idItemProjeto, float percentualImagem)
        {
            var itemProjeto = ItemProjetoDAO.Instance.GetElementByPrimaryKey(idItemProjeto);
            var retorno     = new List <Imagem>();

            var imgUrl = UtilsProjeto.GetFiguraAssociadaUrl((uint)idItemProjeto, itemProjeto.IdProjetoModelo);

            byte[] imagem = Utils.GetImageFromRequest(HttpContext.Current, imgUrl);

            if (imagem.Length == 0)
            {
                return(null);
            }

            imagem = ManipulacaoImagem.Redimensionar(imagem, 0, 0, percentualImagem);

            if (retorno.Count > 0 && retorno[retorno.Count - 1].Imagem2 == null)
            {
                retorno[retorno.Count - 1].Imagem2 = imagem;
            }
            else
            {
                Imagem nova = new Imagem();
                nova.Chave   = (uint)idItemProjeto;
                nova.Imagem1 = imagem;
                retorno.Add(nova);
            }

            return(retorno.ToArray());
        }
예제 #2
0
        protected override Colosoft.Reports.IReportDocument LoadReport(ref LocalReport report, ref List <ReportParameter> lstParam,
                                                                       HttpRequest PageRequest, System.Collections.Specialized.NameValueCollection Request, object[] outrosParametros, LoginUsuario login, string diretorioLogotipos)
        {
            // Verifica qual relatório será chamado
            switch (Request["rel"])
            {
            case "imagemProjeto":
                report.ReportPath = NomeArquivoRelatorioImagemProjeto;

                // Identifica se foi selecionado para imprimir alumínios e ferragens.
                bool imprAlumFerr = Request["imprAlumFerr"] == "true";

                uint                       idProjeto   = !String.IsNullOrEmpty(Request["idProjeto"]) ? Glass.Conversoes.StrParaUint(Request["idProjeto"]) : 0;
                var                        projeto     = idProjeto > 0 ? ProjetoDAO.Instance.GetElement(idProjeto) : new Data.Model.Projeto();
                ItemProjeto[]              itemProjeto = ItemProjetoDAO.Instance.GetByString(Request["idItemProjeto"]);
                List <PecaItemProjeto>     lstPeca     = new List <PecaItemProjeto>();
                List <MaterialItemProjeto> lstMaterial = new List <MaterialItemProjeto>();
                List <Imagem>              lstImagens  = new List <Imagem>();
                List <MedidaItemProjeto>   lstMedidas  = new List <MedidaItemProjeto>();

                // Busca o pedido, se houver, relacionado à este projeto
                projeto.IdPedido = ProjetoDAO.Instance.GetIdPedidoByProjeto(idProjeto);

                if (projeto.IdPedido == 0)
                {
                    // Tenta buscar o pedido pelo item projeto.
                    if (itemProjeto[0].IdPedido > 0)
                    {
                        projeto.IdPedido = itemProjeto[0].IdPedido.Value;
                    }
                    else if (itemProjeto[0].IdPedidoEspelho > 0)
                    {
                        projeto.IdPedido = itemProjeto[0].IdPedidoEspelho.Value;
                    }
                    else if (itemProjeto[0].IdOrcamento > 0)
                    {
                        projeto.IdPedido = PedidoDAO.Instance.GetIdPedidoByOrcamento(itemProjeto[0].IdOrcamento.Value);
                    }
                }

                if (projeto.IdPedido > 0)
                {
                    var idCliente = PedidoDAO.Instance.ObtemIdCliente(null, projeto.IdPedido);

                    projeto.NomeCliente  = ClienteDAO.Instance.GetNome(idCliente);
                    projeto.Rota         = RotaDAO.Instance.ObtemCodRota(idCliente);
                    projeto.NomeFunc     = FuncionarioDAO.Instance.GetNome(PedidoDAO.Instance.ObtemIdFunc(null, projeto.IdPedido));
                    projeto.DataCad      = PedidoDAO.Instance.ObtemDataPedido(null, projeto.IdPedido);
                    projeto.TipoEntrega  = PedidoDAO.Instance.ObtemTipoEntrega(null, projeto.IdPedido);
                    projeto.Obs          = PedidoDAO.Instance.ObtemObs(null, projeto.IdPedido);
                    projeto.ObsLiberacao = PedidoDAO.Instance.ObtemObsLiberacao(projeto.IdPedido);
                }

                for (int i = 0; i < itemProjeto.Length; i++)
                {
                    var           pcp    = itemProjeto[i].IdPedidoEspelho.HasValue;
                    ProjetoModelo modelo = ProjetoModeloDAO.Instance.GetElementByPrimaryKey(itemProjeto[i].IdProjetoModelo);
                    lstPeca.AddRange(PecaItemProjetoDAO.Instance.GetByItemProjetoRpt(itemProjeto[i].IdItemProjeto, itemProjeto[i].IdProjetoModelo, pcp));

                    // Caso a imagem da peça tenha sido editada então a impressão não deve exibir se a peça possui arquivo de otimização.
                    for (var x = 0; x < lstPeca.Count; x++)
                    {
                        var pecaPossuiFiguraAssociada  = PecaItemProjetoDAO.Instance.PossuiFiguraAssociada(null, lstPeca[x].IdPecaItemProj);
                        var pecaPossuiEdicaoCadProject = lstPeca[x].IdProdPed != null ? lstPeca[x].ImagemEditada && ProdutosPedidoEspelhoDAO.Instance.PossuiEdicaoCadProject((uint)lstPeca[x].IdProdPed, pcp):false;
                        var produtoPossuiImagemEditada = pcp && ProdutosPedidoEspelhoDAO.Instance.PossuiImagemAssociada(null, (uint)lstPeca[x]?.IdProdPed.GetValueOrDefault());

                        if (lstPeca[x].IdArquivoMesaCorte > 0 && lstPeca[x].TipoArquivoMesaCorte > 0)
                        {
                            if ((produtoPossuiImagemEditada || lstPeca[x].ImagemEditada || pecaPossuiFiguraAssociada) &&
                                lstPeca[x].TipoArquivoMesaCorte != (int)TipoArquivoMesaCorte.FMLBasico && !pecaPossuiEdicaoCadProject)
                            {
                                lstPeca[x].IdArquivoMesaCorte   = null;
                                lstPeca[x].TipoArquivoMesaCorte = null;
                            }
                        }
                    }

                    int atual = lstMaterial.Count;
                    lstMaterial.AddRange(MaterialItemProjetoDAO.Instance.GetForRptItemProjeto(itemProjeto[i].IdItemProjeto, false));
                    int numeroMateriais = lstMaterial.Count - atual;

                    // Verifica se os materiais do itemProjeto deverão ser impressos também
                    itemProjeto[i].MostrarMateriais = imprAlumFerr && numeroMateriais > 0;

                    // Pega a imagem do projeto com as medidas já desenhadas e o modelo da imagem
                    if (modelo.IdGrupoModelo != (uint)UtilsProjeto.GrupoModelo.Outros)
                    {
                        itemProjeto[i].ImagemProjeto = Data.Helper.Utils.GetImageFromRequest(UtilsProjeto.GetFiguraAssociadaUrl(itemProjeto[i].IdItemProjeto, modelo));

                        // Salva a imagem na memória, recupera os bytes e os salva na propriedade ImagemProjetoModelo.
                        // Chamado 50315 - o nome da imagem deve ser recuperado dentro do try para não retornar erro quando o mesmo for null.
                        try
                        {
                            var arquivo = System.IO.Path.Combine(Glass.Data.Helper.Utils.ModelosProjetoPath(Context), modelo.NomeFigura);
                            if (System.IO.File.Exists(arquivo))
                            {
                                using (var image = new Bitmap(arquivo))
                                    using (var ms = new System.IO.MemoryStream())
                                    {
                                        image.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
                                        itemProjeto[i].ImagemProjetoModelo = ms.ToArray();
                                    }
                            }
                        }
                        catch { }

                        itemProjeto[i].ImagemProjetoModelo = Data.Helper.Utils.GetImageFromRequest("../../Handlers/LoadImage.ashx?path=" + Data.Helper.Utils.ModelosProjetoPath(Context) +
                                                                                                   modelo.NomeFigura + "&altura=" + modelo.AlturaFigura + "&largura=" + modelo.LarguraFigura);
                    }

                    // Copia o idPedidoEspelho para o idPedido
                    if (itemProjeto[i].IdPedido == null)
                    {
                        itemProjeto[i].IdPedido = itemProjeto[i].IdPedidoEspelho;
                    }

                    lstImagens.AddRange(ImagemDAO.Instance.GetPecasAlteradas(itemProjeto[i].IdItemProjeto,
                                                                             Glass.Configuracoes.ProjetoConfig.RelatorioImagemProjeto.PercentualTamanhoImagemRelatorio));
                    lstMedidas.AddRange(MedidaItemProjetoDAO.Instance.GetListByItemProjeto(itemProjeto[i].IdItemProjeto));
                }

                lstParam.Add(new ReportParameter("Pedido_PedCli", projeto.IdPedido > 0 ? PedidoDAO.Instance.ObtemPedCli(null, projeto.IdPedido) : string.Empty));
                lstParam.Add(new ReportParameter("FastDelivery", PedidoDAO.Instance.IsFastDelivery(null, projeto.IdPedido).ToString()));
                lstParam.Add(new ReportParameter("ExibirImagemModelo", (true).ToString()));
                lstParam.Add(new ReportParameter("CorObs", Glass.Configuracoes.ProjetoConfig.RelatorioImagemProjeto.CorObsNoRelatorio));
                lstParam.Add(new ReportParameter("TemEdicaoCadProject", "true"));
                lstParam.Add(new ReportParameter("ImagensPecasIndividuais", "true"));
                lstParam.Add(new ReportParameter("AgruparBeneficiamentos", PedidoConfig.RelatorioPedido.AgruparBenefRelatorio.ToString()));

                report.DataSources.Add(new ReportDataSource("Projeto", new Data.Model.Projeto[] { projeto }));
                report.DataSources.Add(new ReportDataSource("ItemProjeto", itemProjeto));
                report.DataSources.Add(new ReportDataSource("PecaItemProjeto", lstPeca.ToArray()));
                report.DataSources.Add(new ReportDataSource("MaterialItemProjeto", lstMaterial.ToArray()));
                report.DataSources.Add(new ReportDataSource("Imagem", lstImagens.ToArray()));
                report.DataSources.Add(new ReportDataSource("MedidaItemProjeto", lstMedidas.ToArray()));
                break;

            case "totaisProjeto":
                report.ReportPath = Data.Helper.Utils.CaminhoRelatorio("Relatorios/Projeto/rptTotaisProjeto{0}.rdlc");
                bool exibirCusto = UserInfo.GetUserInfo.TipoUsuario == (uint)Data.Helper.Utils.TipoFuncionario.Administrador ||
                                   UserInfo.GetUserInfo.TipoUsuario == (uint)Data.Helper.Utils.TipoFuncionario.Gerente;

                string titulo      = String.Empty;
                string nomeCliente = String.Empty;
                string tipoEntrega = String.Empty;
                float  taxaPrazo   = 0;

                uint idProjeto_Totais       = Glass.Conversoes.StrParaUint(Request["idProjeto"]);
                uint idOrcamento_Totais     = Glass.Conversoes.StrParaUint(Request["idOrcamento"]);
                uint idPedido_Totais        = Glass.Conversoes.StrParaUint(Request["idPedido"]);
                uint idPedidoEspelho_Totais = Glass.Conversoes.StrParaUint(Request["idPedidoEspelho"]);

                if (idProjeto_Totais > 0)
                {
                    var projeto_Totais = ProjetoDAO.Instance.GetElementByPrimaryKey(idProjeto_Totais);
                    titulo      = "Impressão Projeto N.º " + idProjeto_Totais;
                    nomeCliente = projeto_Totais.IdCliente > 0 ? ClienteDAO.Instance.GetNome(projeto_Totais.IdCliente.Value) : projeto_Totais.NomeCliente;
                    tipoEntrega = projeto_Totais.DescrTipoEntrega;
                    taxaPrazo   = projeto_Totais.TaxaPrazo;
                }
                else if (idOrcamento_Totais > 0)
                {
                    var orcamento_Totais = OrcamentoDAO.Instance.GetElementByPrimaryKey(idOrcamento_Totais);
                    titulo      = "Impressão dos Projetos do Orçamento N.º " + idOrcamento_Totais;
                    nomeCliente = orcamento_Totais.IdCliente > 0 ? orcamento_Totais.IdCliente + " - " + ClienteDAO.Instance.GetNome(orcamento_Totais.IdCliente.Value) : orcamento_Totais.NomeCliente;
                    tipoEntrega = orcamento_Totais.DescrTipoEntrega;
                    taxaPrazo   = orcamento_Totais.TaxaPrazo;
                }
                else if (idPedido_Totais > 0 || idPedidoEspelho_Totais > 0)
                {
                    Glass.Data.Model.Pedido pedido_Totais = PedidoDAO.Instance.GetElementByPrimaryKey(idPedido_Totais > 0 ? idPedido_Totais : idPedidoEspelho_Totais);
                    titulo = idPedido_Totais > 0 ? "Impressão dos Projetos do Pedido N.º " + idPedido_Totais :
                             "Impressão dos Projetos da Conferência do Pedido N.º " + idPedidoEspelho_Totais;
                    nomeCliente = pedido_Totais.IdCli + " - " + ClienteDAO.Instance.GetNome(pedido_Totais.IdCli);
                    tipoEntrega = pedido_Totais.DescrTipoEntrega;
                    taxaPrazo   = pedido_Totais.TaxaPrazo;
                }

                lstParam.Add(new ReportParameter("Titulo", titulo));
                lstParam.Add(new ReportParameter("NomeCliente", nomeCliente));
                lstParam.Add(new ReportParameter("TipoEntrega", tipoEntrega));
                lstParam.Add(new ReportParameter("TaxaPrazo", taxaPrazo.ToString()));
                lstParam.Add(new ReportParameter("ExibirCusto", exibirCusto.ToString()));
                lstParam.Add(new ReportParameter("ExibirJuros", "false"));
                lstParam.Add(new ReportParameter("ExibirLinhaVermelhaSaida", "true"));

                List <MaterialItemProjeto> lstMaterial_Totais = MaterialItemProjetoDAO.Instance.GetForRptTotaisItens(idProjeto_Totais,
                                                                                                                     idOrcamento_Totais, idPedido_Totais, idPedidoEspelho_Totais);

                report.DataSources.Add(new ReportDataSource("MaterialItemProjeto", lstMaterial_Totais.ToArray()));
                break;

            case "ImpressaoModeloProjeto":
                report.ReportPath = "Relatorios/Projeto/rptImpressaoModeloProjeto.rdlc";

                ProjetoModelo projModelo = ProjetoModeloDAO.Instance.GetByCodigo(Request["projModeloCod"]);

                if (projModelo.IdGrupoModelo != (uint)UtilsProjeto.GrupoModelo.Outros)
                {
                    // Salva a imagem na memória, recupera os bytes e os salva na propriedade ImagemProjetoModelo.
                    // Chamado 50315 - o nome da imagem deve ser recuperado dentro do try para não retornar erro quando o mesmo for null.
                    try
                    {
                        var arquivo = System.IO.Path.Combine(Glass.Data.Helper.Utils.ModelosProjetoPath(Context), projModelo.NomeFigura);
                        if (System.IO.File.Exists(arquivo))
                        {
                            using (var image = new Bitmap(arquivo))
                                using (var ms = new System.IO.MemoryStream())
                                {
                                    image.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
                                    projModelo.ImagemProjetoModelo = ms.ToArray();
                                }
                        }
                    }
                    catch { }
                }

                report.DataSources.Add(new ReportDataSource("ProjetoModelo", new ProjetoModelo[] { projModelo }));

                PecaProjetoModelo[] pecasModelo = PecaProjetoModeloDAO.Instance.GetByModelo(projModelo.IdProjetoModelo).ToArray();
                report.DataSources.Add(new ReportDataSource("PecaProjetoModelo", pecasModelo));

                MaterialProjetoModelo[] materialModelo = MaterialProjetoModeloDAO.Instance.GetByProjetoModelo(projModelo.IdProjetoModelo, null).ToArray();
                report.DataSources.Add(new ReportDataSource("MaterialProjetoModelo", materialModelo));

                MedidaProjetoModelo[] medidaModelo = MedidaProjetoModeloDAO.Instance.GetByProjetoModelo(projModelo.IdProjetoModelo, false).ToArray();
                report.DataSources.Add(new ReportDataSource("MedidaProjetoModelo", medidaModelo));

                Imagem[] imagensPecasModelo = ImagemDAO.Instance.GetPecasModelo(projModelo.IdProjetoModelo);
                report.DataSources.Add(new ReportDataSource("Imagem", imagensPecasModelo));
                break;

            case "LstModeloProjeto":
                report.ReportPath = "Relatorios/Projeto/rptLstModeloProjeto.rdlc";
                Imagem[] imagensProjModelo = ImagemDAO.Instance.GetProjetosModelo(Request["cod"], Request["desc"],
                                                                                  Glass.Conversoes.StrParaUint(Request["grupo"]), Request["situacao"].StrParaInt());
                report.DataSources.Add(new ReportDataSource("Imagem", imagensProjModelo));
                break;
            }

            // Atribui parâmetros ao relatório
            lstParam.Add(new ReportParameter("Logotipo", Logotipo.GetReportLogo(PageRequest)));
            lstParam.Add(new ReportParameter("TextoRodape", Geral.TextoRodapeRelatorio(login.Nome)));
            lstParam.Add(new ReportParameter("CorRodape", "DimGray"));

            return(null);
        }
예제 #3
0
        public Imagem[] GetPecasAlteradas(GDASession sessao, uint idItemProjeto, float percentualImagem)
        {
            ItemProjeto itemProj = ItemProjetoDAO.Instance.GetElementByPrimaryKey(sessao, idItemProjeto);

            PecaItemProjeto[] pecas = PecaItemProjetoDAO.Instance.GetByItemProjetoRpt(sessao, idItemProjeto, itemProj.IdProjetoModelo).ToArray();

            List <Imagem> retorno = new List <Imagem>();

            foreach (PecaItemProjeto p in pecas)
            {
                if (p.Tipo != 1)
                {
                    continue;
                }

                ProdutosPedidoEspelho ppe = p.IdProdPed.GetValueOrDefault() == 0 ? null :
                                            ProdutosPedidoEspelhoDAO.Instance.GetForImagemPeca(sessao, p.IdProdPed.Value);

                foreach (int item in Array.ConvertAll(UtilsProjeto.GetItensFromPeca(p.Item), x => Glass.Conversoes.StrParaInt(x)))
                {
                    //Se o item da peça for 99(geração dinâmica e não houver etiqueta, não gera a imagem.
                    if ((item == 90 || item == 91 || item == 92 || item == 93 || item == 94 ||
                         item == 95 || item == 96 || item == 97 || item == 98 || item == 99) && string.IsNullOrEmpty(p.Etiquetas))
                    {
                        continue;
                    }

                    if (item == 90 || item == 91 || item == 92 || item == 93 || item == 94 ||
                        item == 95 || item == 96 || item == 97 || item == 98 || item == 99)
                    {
                        string[] etiquetas = p.Etiquetas.Split(',');

                        foreach (string etq in etiquetas)
                        {
                            string imgUrl = UtilsProjeto.GetFiguraAssociadaUrl(sessao, idItemProjeto, itemProj.IdProjetoModelo, p.IdPecaItemProj, item);
                            imgUrl += "&numEtiqueta=" + etq;

                            byte[] imagem = Utils.GetImageFromRequest(HttpContext.Current, imgUrl);

                            if (imagem.Length == 0)
                            {
                                continue;
                            }

                            imagem = ManipulacaoImagem.Redimensionar(imagem, 0, 0, percentualImagem);

                            if (retorno.Count > 0 && retorno[retorno.Count - 1].Imagem2 == null)
                            {
                                retorno[retorno.Count - 1].Imagem2 = imagem;
                            }
                            else
                            {
                                Imagem nova = new Imagem();
                                nova.Chave   = idItemProjeto;
                                nova.Imagem1 = imagem;
                                retorno.Add(nova);
                            }
                        }
                    }
                    else
                    {
                        string urlImagem = null;

                        if (ppe != null)
                        {
                            ppe.Item  = item;
                            urlImagem = ppe.ImagemUrl;
                        }
                        else if (itemProj.IdPedido > 0)
                        {
                            MaterialItemProjeto mip = MaterialItemProjetoDAO.Instance.GetMaterialByPeca(sessao, p.IdPecaItemProj);

                            if (mip != null)
                            {
                                // Se estiver imprimindo projeto de pedido que está no comercial,
                                // busca a imagem que pode ter sido editada do comercial
                                urlImagem = Utils.GetPecaComercialVirtualPath +
                                            ProdutosPedidoDAO.Instance.GetIdProdPedByMaterItemProj(sessao, itemProj.IdPedido.Value,
                                                                                                   mip.IdMaterItemProj).ToString().PadLeft(10, '0') +
                                            "_" + item + ".jpg";

                                if (!File.Exists(HttpContext.Current.Server.MapPath(urlImagem)))
                                {
                                    urlImagem = null;
                                }
                            }
                        }

                        if (urlImagem == null)
                        {
                            urlImagem = UtilsProjeto.GetFiguraAssociadaUrl(sessao, idItemProjeto, itemProj.IdProjetoModelo,
                                                                           p.IdPecaItemProj, item);
                        }

                        byte[] imagem = Utils.GetImageFromRequest(HttpContext.Current, urlImagem);

                        if (imagem.Length == 0)
                        {
                            continue;
                        }

                        imagem = ManipulacaoImagem.Redimensionar(imagem, 0, 0, percentualImagem);

                        if (retorno.Count > 0 && retorno[retorno.Count - 1].Imagem2 == null)
                        {
                            retorno[retorno.Count - 1].Imagem2 = imagem;
                        }
                        else
                        {
                            Imagem nova = new Imagem();
                            nova.Chave   = idItemProjeto;
                            nova.Imagem1 = imagem;
                            retorno.Add(nova);
                        }
                    }
                }
            }

            return(retorno.ToArray());
        }