protected void tblImagens_Load(object sender, EventArgs e) { try { Table tblImagens = (Table)sender; GridViewRow row = tblImagens.Parent.Parent as GridViewRow; HiddenField h = (HiddenField)row.FindControl("hdfIdProdPed"); var idPedido = Request["idPedido"].StrParaUint(); if (Request["tipo"] == "pedido" && !PedidoEspelhoDAO.Instance.ExisteEspelho(idPedido) && (ProdutosPedidoDAO.Instance.TemProdutoLamComposicao(idPedido) || Request["pecaAvulsa"] == "True")) { var pp = !IsPostBack ? row.DataItem as ProdutosPedido : ProdutosPedidoDAO.Instance.GetElement(null, h.Value.StrParaUint(), false, true, false); CriaLinhaTabela(tblImagens, true, "", null, null, pp, string.Empty); return; } ProdutosPedidoEspelho ppe = !IsPostBack ? row.DataItem as ProdutosPedidoEspelho : ProdutosPedidoEspelhoDAO.Instance.GetElement(Glass.Conversoes.StrParaUint(h.Value), true); PecaItemProjeto peca = null; if (ppe.IdMaterItemProj > 0) { uint?idPecaItemProj = MaterialItemProjetoDAO.Instance.ObtemIdPecaItemProj(null, ppe.IdMaterItemProj.Value); if (idPecaItemProj.GetValueOrDefault() == 0) { return; } peca = PecaItemProjetoDAO.Instance.GetElementExt(null, idPecaItemProj.Value, true); } string msgErro = "Item possui arquivo de otimização (mesa de<br/ >corte) gerado. Não é possível alterá-lo."; // Mostra imagem apenas se for instalação if (peca != null && peca.Tipo == 1) { // Controla o número da etiqueta de acordo com a quantidade (1/3) int itemEtiqueta = 1; // Para cada item desta peça. Ex.: 1 e 2 ou 3 e 4 foreach (string item in UtilsProjeto.GetItensFromPeca(peca.Item)) { ppe.Item = Glass.Conversoes.StrParaInt(item); bool permitirAlterarImagem = UtilsProjeto.PodeAlterarImagemPeca(peca, ppe.Item, itemEtiqueta++, false, ref msgErro); if (permitirAlterarImagem && Request["tipo"] != "pcp") { permitirAlterarImagem = false; msgErro = "Alteração de imagem apenas no PCP"; } CriaLinhaTabela(tblImagens, permitirAlterarImagem, item, peca, ppe, null, msgErro); } } else if (peca == null) { string result = ppe.EtiquetasLegenda; msgErro = String.IsNullOrEmpty(ppe.EtiquetasLegenda) ? String.Empty : msgErro; // Verifica se é permitido alterar imagem da peça var situacaoPedidoEspelho = PedidoEspelhoDAO.Instance.ObtemSituacao(ppe.IdPedido); var permitirAlterarImagem = situacaoPedidoEspelho == PedidoEspelho.SituacaoPedido.Finalizado || Config.PossuiPermissao(Config.FuncaoMenuPCP.AlterarImagemPecaAposImpressao); if (permitirAlterarImagem) { string[] itens = result != null?result.ToUpper().Replace(" E ", ",").Split(',') : null; itens = itens.Select(f => f.Trim()).ToArray(); permitirAlterarImagem = itens != null && itens.Length > 0 && !string.IsNullOrEmpty(itens[0]); // Recupera o setor de marcação Setor setor = SetorDAO.Instance.ObterSetorPorNome(null, "Marcação"); // Se for permitido alterar imagem da peça, verifica se o item não tem arquivo sag e se não passou pelo setor de marcação if (setor != null && setor.IdSetor > 0 && permitirAlterarImagem && itens != null && itens.Length > 0) { foreach (string etiq in itens) { permitirAlterarImagem = permitirAlterarImagem && !EtiquetaArquivoOtimizacaoDAO.Instance.TemArquivoSAG(etiq) && !LeituraProducaoDAO.Instance.PassouSetor(null, etiq, (uint)setor.IdSetor); } } } else if (PedidoDAO.Instance.IsMaoDeObra(null, ppe.IdPedido)) { permitirAlterarImagem = true; } else { msgErro = String.IsNullOrEmpty(result) ? "Apenas vidros que serão produzidos<br/ >podem ter imagens anexadas." : "Etiqueta já impressa. Não é<br />possível alterar a imagem"; } CriaLinhaTabela(tblImagens, permitirAlterarImagem, "", null, ppe, null, msgErro); } } catch (Exception ex) { MensagemAlerta.ErrorMsg("Falha ao exibir imagens.", ex, Page); var urlErro = Request.Url.ToString() == null || Request.Url.ToString() == "" ? "Sel Imagem Peça" : Request.Url.ToString(); ErroDAO.Instance.InserirFromException(urlErro, ex); } }
private void CriaLinhaTabela(Table tblImagens, bool permitirAlterarImagem, string item, PecaItemProjeto peca, ProdutosPedidoEspelho ppe, ProdutosPedido pp, string msgErro) { TableRow linha = new TableRow(); TableCell cabecalho = new TableCell(); TableCell logPopup = new TableCell(); TableCell botoes = new TableCell(); TableCell upload = new TableCell(); tblImagens.Rows.Add(linha); linha.Cells.AddRange(new TableCell[] { cabecalho, logPopup, botoes }); if (pp != null) { var ctrl = (Controls.ctrlImagemPopup)LoadControl("~/Controls/ctrlImagemPopup.ascx"); ctrl.ImageUrl = pp.ImagemUrl; botoes.Controls.Add(ctrl); ImageButton exc = new ImageButton(); exc.OnClientClick = "if (!confirm('Deseja excluir a imagem atribuída à peça?')) return false;"; exc.ImageUrl = "~/Images/ExcluirGrid.gif"; exc.Click += new ImageClickEventHandler(imgExcluir_Click); exc.PreRender += new EventHandler(imgExcluir_PreRender); // Exibe o Log de alteração da Imagem do Produto Pedido Controls.ctrlLogPopup logPP = (Controls.ctrlLogPopup)LoadControl("~/Controls/ctrlLogPopup.ascx"); logPP.Tabela = LogAlteracao.TabelaAlteracao.ImagemProdPed; logPP.IdRegistro = pp.IdProdPed; logPopup.Controls.Add(logPP); botoes.Controls.Add(exc); FileUpload upl = new FileUpload(); upl.ID = "flu" + (tblImagens.Rows.Count - 1); upload.Controls.Add(upl); linha.Cells.Add(upload); return; } TipoArquivoMesaCorte?tipoArquivo = null; if (peca != null) { tipoArquivo = PecaProjetoModeloDAO.Instance.ObtemTipoArquivoMesaCorte(peca.IdPecaProjMod); } // Caso seja permitido alterar a imagem da peça, é necessário verificar ainda se a peça possui fml associado. if (permitirAlterarImagem && (tipoArquivo == null || (tipoArquivo.Value != TipoArquivoMesaCorte.FML && tipoArquivo != TipoArquivoMesaCorte.DXF))) { if (peca != null) { var flags = FlagArqMesaDAO.Instance.ObtemPorPecaProjMod((int)peca.IdPecaProjMod, true); /* Chamado 24392. */ if (flags.Count(f => f.Descricao == TipoArquivoMesaCorte.FML.ToString()) == 0 && flags.Count(f => f.Descricao == TipoArquivoMesaCorte.DXF.ToString()) == 0) { linha.Cells.Add(upload); } } else { linha.Cells.Add(upload); } } else if (permitirAlterarImagem) { permitirAlterarImagem = false; var geraDXF = PCPConfig.EmpresaGeraArquivoDxf ? "DXF" : string.Empty; var geraFML = PCPConfig.EmpresaGeraArquivoDxf ? "FML" : string.Empty; var tiposArquivoBloquear = !string.IsNullOrEmpty(geraDXF) && !string.IsNullOrEmpty(geraFML) ? $"{geraDXF} ou {geraFML}" : geraDXF + geraFML; msgErro = $@"Não é possível alterar imagens de peças que tenham arquivos de mesa associados {tiposArquivoBloquear}."; } if (!String.IsNullOrEmpty(item)) { cabecalho.Text = "Item " + item; } cabecalho.Attributes.Add("item", item); cabecalho.Attributes.Add("idPecaItemProj", peca != null ? peca.IdPecaItemProj.ToString() : String.Empty); if (peca != null) { Controls.ctrlLogPopup log = (Controls.ctrlLogPopup)LoadControl("~/Controls/ctrlLogPopup.ascx"); log.Tabela = LogAlteracao.TabelaAlteracao.ImagemProducao; peca.Item = item; log.IdRegistro = peca.IdLog; logPopup.Controls.Add(log); } // Exibe o Log de alteração da Imagem do Produto Pedido Espelho Controls.ctrlLogPopup logPPE = (Controls.ctrlLogPopup)LoadControl("~/Controls/ctrlLogPopup.ascx"); logPPE.Tabela = LogAlteracao.TabelaAlteracao.ImagemProdPedEsp; logPPE.IdRegistro = ppe.IdProdPed; logPopup.Controls.Add(logPPE); if (ppe.TemSvgAssociado) { Controls.ctrlImageCadProject ctrl = (Controls.ctrlImageCadProject)LoadControl("~/Controls/ctrlImageCadProject.ascx"); ctrl.IdProdPedEsp = (int)ppe.IdProdPed; ctrl.DiminuirMedidasPopUp = true; ctrl.Legenda = peca != null ? "Ite" + (peca.Item.IndexOf(" ") > -1 ? "ns" : "m") + ": " + peca.Item : string.Empty; if (!string.IsNullOrEmpty(ppe.LegendaImagemPeca)) { ctrl.Legenda = (peca != null ? "<br />" : string.Empty) + ppe.LegendaImagemPeca; } botoes.Controls.Add(ctrl); } else { Controls.ctrlImagemPopup ctrl = (Controls.ctrlImagemPopup)LoadControl("~/Controls/ctrlImagemPopup.ascx"); ctrl.ImageUrl = ppe.ImagemUrl; ctrl.Legenda = peca != null ? "Ite" + (peca.Item.IndexOf(" ") > -1 ? "ns" : "m") + ": " + peca.Item : String.Empty; if (!String.IsNullOrEmpty(ppe.LegendaImagemPeca)) { ctrl.Legenda = (peca != null ? "<br />" : String.Empty) + ppe.LegendaImagemPeca; } botoes.Controls.Add(ctrl); } if (permitirAlterarImagem) { var pedidoExportado = PedidoExportacaoDAO.Instance.GetSituacaoExportacao(null, pp != null ? pp.IdPedido : ppe != null ? ppe.IdPedido : 0) == PedidoExportacao.SituacaoExportacaoEnum.Exportado; if (!pedidoExportado) { ImageButton exc = new ImageButton(); exc.OnClientClick = "if (!confirm('Deseja excluir a imagem atribuída à peça?')) return false;"; exc.ImageUrl = "~/Images/ExcluirGrid.gif"; exc.Click += new ImageClickEventHandler(this.imgExcluir_Click); exc.PreRender += new EventHandler(this.imgExcluir_PreRender); botoes.Controls.Add(exc); // Se o processo da peça for fixo, não permite anexar imagem if (ppe.IdProcesso == null || ppe.IdProcesso != ProjetoConfig.Caixilho.ProcessoCaixilho) { FileUpload upl = new FileUpload(); upl.ID = "flu" + (tblImagens.Rows.Count - 1); upload.Controls.Add(upl); } } else { Label msg = new Label(); msg.Text = "Não é possível alterar imagens de peças de pedidos exportado."; msg.ForeColor = System.Drawing.Color.Red; msg.Style.Value = "display: inline-block; text-align: right; position: relative; left: 6px"; botoes.Controls.Add(msg); } } else { if (ppe.IdProcesso == ProjetoConfig.Caixilho.ProcessoCaixilho) { msgErro = "Caixilhos não tem imagens associadas"; } Label msg = new Label(); msg.Text = msgErro; msg.ForeColor = System.Drawing.Color.Red; msg.Style.Value = "display: inline-block; text-align: right; position: relative; left: 6px"; botoes.Controls.Add(msg); } }
public void Inserir(GDASession sessao, uint idProdNf, string idsItemProjeto) { foreach (string id in idsItemProjeto.Split(',')) { ProdutoNfItemProjeto item = new ProdutoNfItemProjeto { IdProdNf = idProdNf, IdItemProjeto = Glass.Conversoes.StrParaUint(id) }; #region Gera o novo item de projeto se for "apenas vidros" if (ItemProjetoDAO.Instance.ApenasVidros(item.IdItemProjeto) && FiscalConfig.NotaFiscalConfig.UsarProdutoCestaSeApenasVidros) { ItemProjeto ip = ItemProjetoDAO.Instance.GetElementByPrimaryKey(sessao, item.IdItemProjeto); ProjetoModelo pm = ProjetoModeloDAO.Instance.GetElementByPrimaryKey(sessao, ip.IdProjetoModelo); uint?idCliente = ip.IdCliente; int? tipoEntrega = ip.TipoEntrega; uint?idObra = ip.IdPedido > 0 ? PedidoDAO.Instance.GetIdObra(null, ip.IdPedido.Value) : ip.IdPedidoEspelho > 0 ? PedidoDAO.Instance.GetIdObra(null, ip.IdPedidoEspelho.Value) : null; ip.IdOrcamento = null; ip.IdPedido = null; ip.IdPedidoEspelho = null; ip.IdProjeto = null; ip.ApenasVidros = false; ip.IdCorAluminio = (uint)CorAluminioDAO.Instance.GetAll().FirstOrDefault().IdCorAluminio; ip.IdCorFerragem = (uint)CorFerragemDAO.Instance.GetAll().FirstOrDefault().IdCorFerragem; List <PecaItemProjeto> pecasItemProjeto = PecaItemProjetoDAO.Instance.GetByItemProjeto(item.IdItemProjeto, ip.IdProjetoModelo); // Corrige projetos de medida exata, calculando área do vão // Segundo Sidinei, usar altura da peça item "1" e largura somada de todas // as outras peças bool medidaExata = ip.MedidaExata; var medidas = ((List <MedidaItemProjeto>)MedidaItemProjetoDAO.Instance.GetListByItemProjeto(item.IdItemProjeto)).ToArray(); if (medidaExata) { ip.MedidaExata = false; int altura = 0, largura = 0; if (pecasItemProjeto.Count > 0) { PecaItemProjeto p = pecasItemProjeto.Find(x => { string[] itens = UtilsProjeto.GetItensFromPeca(x.Item); return(Array.Exists(itens, y => y == "1")); }); altura = p != null ? p.Altura : pecasItemProjeto[0].Altura; pecasItemProjeto.ForEach(x => largura += x.Largura); } ip.M2Vao = Glass.Global.CalculosFluxo.ArredondaM2(largura, altura, ip.Qtde, 0, false); #region Corrige as medidas do projeto var idLarguraVao = 2; var idAlturaVao = 3; if (Array.FindIndex(medidas, x => x.IdMedidaProjeto == idLarguraVao) == -1) { idLarguraVao = (int)MedidaProjetoDAO.Instance.FindByDescricao(0, "larg vão").GetValueOrDefault(); } if (Array.FindIndex(medidas, x => x.IdMedidaProjeto == idAlturaVao) == -1) { idAlturaVao = (int)MedidaProjetoDAO.Instance.FindByDescricao(0, "alt vão").GetValueOrDefault(); } // Qtde int index = Array.FindIndex(medidas, x => x.IdMedidaProjeto == 1); if (index > -1) { medidas[index].Valor = ip.Qtde; } // Largura index = Array.FindIndex(medidas, x => x.IdMedidaProjeto == idLarguraVao); if (index > -1) { medidas[index].Valor = largura; } // Altura index = Array.FindIndex(medidas, x => x.IdMedidaProjeto == idAlturaVao); if (index > -1) { medidas[index].Valor = altura; } #endregion } ip.IdItemProjeto = ItemProjetoDAO.Instance.Insert(sessao, ip); foreach (MedidaItemProjeto m in medidas) { MedidaItemProjetoDAO.Instance.InsereMedida(sessao, ip.IdItemProjeto, m.IdMedidaProjeto, m.Valor); } List <PecaProjetoModelo> pecasModelo = PecaProjetoModeloDAO.Instance.GetByModelo(pm.IdProjetoModelo); //Preenche a altura e largura da peça para que o sistema crie corretamente o //material item projeto para dar baixa nas peças de cesta foreach (var pecas in pecasModelo) { if (pecas.Altura == 0 || pecas.Largura == 0) { pecas.Altura = 1; pecas.Largura = 1; } } foreach (PecaItemProjeto p in pecasItemProjeto) { pecasModelo.Find(x => x.IdPecaProjMod == p.IdPecaProjMod).IdProd = p.IdProd.GetValueOrDefault(); pecasModelo.Find(x => x.IdPecaProjMod == p.IdPecaProjMod).Qtde = p.Qtde; p.Beneficiamentos = p.Beneficiamentos; p.IdPecaItemProj = 0; p.IdItemProjeto = ip.IdItemProjeto; // Utiliza apenas peças com qtd maior que zero if (p.Qtde > 0) { PecaItemProjetoDAO.Instance.Insert(sessao, p); } } // Calcula os materiais do projeto, muda para medida exata para que a altura e largura dos materiais tenham // valor, caso contrário apenas as folgas serão salvas nos campos altura e largura ip.MedidaExata = true; MaterialItemProjetoDAO.Instance.InserePecasVidro(sessao, idObra, idCliente, tipoEntrega, ip, pm, pecasModelo.Where(f => f.Qtde > 0).ToList(), true); ip.MedidaExata = false; foreach (MaterialItemProjeto m in ItemProjetoDAO.Instance.CalculaMateriais(sessao, ip, idCliente, tipoEntrega, true)) { MaterialItemProjetoDAO.Instance.InsertFromNovoItemProjeto(sessao, m); } item.IdItemProjeto = ip.IdItemProjeto; } #endregion Insert(sessao, item); } }