package br.com.centralit.citcorpore.ajaxForms; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import br.com.centralit.citajax.html.AjaxFormAction; import br.com.centralit.citajax.html.DocumentHTML; import br.com.centralit.citajax.html.HTMLForm; import br.com.centralit.citajax.html.HTMLSelect; import br.com.centralit.citajax.html.HTMLTable; import br.com.centralit.citcorpore.bean.AlcadaProcessoNegocioDTO; import br.com.centralit.citcorpore.bean.CategoriaProdutoDTO; import br.com.centralit.citcorpore.bean.CentroResultadoDTO; import br.com.centralit.citcorpore.bean.ContratoDTO; import br.com.centralit.citcorpore.bean.ItemRequisicaoProdutoDTO; import br.com.centralit.citcorpore.bean.ProdutoDTO; import br.com.centralit.citcorpore.bean.RelacionamentoProdutoDTO; import br.com.centralit.citcorpore.bean.RequisicaoProdutoDTO; import br.com.centralit.citcorpore.bean.TipoProdutoDTO; import br.com.centralit.citcorpore.bean.UsuarioDTO; import br.com.centralit.citcorpore.negocio.CategoriaProdutoService; import br.com.centralit.citcorpore.negocio.CentroResultadoService; import br.com.centralit.citcorpore.negocio.ContratoService; import br.com.centralit.citcorpore.negocio.EnderecoService; import br.com.centralit.citcorpore.negocio.ItemRequisicaoProdutoService; import br.com.centralit.citcorpore.negocio.JustificativaParecerService; import br.com.centralit.citcorpore.negocio.ProdutoService; import br.com.centralit.citcorpore.negocio.ProjetoService; import br.com.centralit.citcorpore.negocio.RelacionamentoProdutoService; import br.com.centralit.citcorpore.negocio.RequisicaoProdutoService; import br.com.centralit.citcorpore.negocio.TipoProdutoService; import br.com.centralit.citcorpore.negocio.UnidadeMedidaService; import br.com.centralit.citcorpore.negocio.alcada.AlcadaCompras; import br.com.centralit.citcorpore.negocio.alcada.AlcadaProcessoNegocio; import br.com.centralit.citcorpore.util.WebUtil; import br.com.citframework.service.ServiceLocator; import br.com.citframework.util.Constantes; import br.com.citframework.util.UtilFormatacao; import br.com.citframework.util.UtilI18N; @SuppressWarnings({ "rawtypes", "unchecked" }) public class RequisicaoProduto extends AjaxFormAction { @Override public Class getBeanClass() { return RequisicaoProdutoDTO.class; } protected String getAcao() { return RequisicaoProdutoDTO.ACAO_CRIACAO; } @Override public void load(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception { UsuarioDTO usuario = WebUtil.getUsuario(request); if (usuario == null) { document.alert(UtilI18N.internacionaliza(request, "citcorpore.comum.sessaoExpirada")); document.executeScript("window.location = '" + Constantes.getValue("SERVER_ADDRESS") + request.getContextPath() + "'"); return; } RequisicaoProdutoDTO requisicaoProdutoDto = (RequisicaoProdutoDTO) document.getBean(); JustificativaParecerService justificativaService = (JustificativaParecerService) ServiceLocator.getInstance().getService(JustificativaParecerService.class, WebUtil.getUsuarioSistema(request)); HTMLSelect idJustificativa = (HTMLSelect) document.getSelectById("item#idJustificativaValidacao"); idJustificativa.removeAllOptions(); idJustificativa.addOption("", "---"); Collection colJustificativas = justificativaService.list(); if(colJustificativas != null && !colJustificativas.isEmpty()) idJustificativa.addOptions(colJustificativas, "idJustificativa", "descricaoJustificativa", null); HTMLSelect finalidade = (HTMLSelect) document.getSelectById("finalidade"); finalidade.removeAllOptions(); finalidade.addOption("", UtilI18N.internacionaliza(request, "citcorpore.comum.selecione")); finalidade.addOption("I", UtilI18N.internacionaliza(request, "requisicaoProduto.finalidade.usoInterno")); finalidade.addOption("C", UtilI18N.internacionaliza(request, "requisicaoProduto.finalidade.atendimentoCliente")); UnidadeMedidaService unidadeMedidaService = (UnidadeMedidaService) ServiceLocator.getInstance().getService(UnidadeMedidaService.class, WebUtil.getUsuarioSistema(request)); HTMLSelect idUnidadeMedida = (HTMLSelect) document.getSelectById("item#idUnidadeMedida"); idUnidadeMedida.removeAllOptions(); idUnidadeMedida.addOption("", "---"); Collection colUnidades = unidadeMedidaService.list(); if(colUnidades != null && !colUnidades.isEmpty()) idUnidadeMedida.addOptions(colUnidades, "idUnidadeMedida", "siglaUnidadeMedida", null); CentroResultadoService centroResultadoService = (CentroResultadoService) ServiceLocator.getInstance().getService(CentroResultadoService.class, WebUtil.getUsuarioSistema(request)); HTMLSelect idCentroCusto = (HTMLSelect) document.getSelectById("idCentroCusto"); idCentroCusto.removeAllOptions(); idCentroCusto.addOption("", UtilI18N.internacionaliza(request, "citcorpore.comum.selecione")); Collection colCCusto = centroResultadoService.listPermiteRequisicaoProduto(); if(colCCusto != null && !colCCusto.isEmpty()) idCentroCusto.addOptions(colCCusto, "idCentroResultado", "nomeHierarquizado", null); HTMLSelect idProjeto = (HTMLSelect) document.getSelectById("idProjeto"); idProjeto.removeAllOptions(); idProjeto.addOption("", UtilI18N.internacionaliza(request, "citcorpore.comum.selecione")); if (requisicaoProdutoDto != null && requisicaoProdutoDto.getIdContrato() != null) { ContratoService contratoService = (ContratoService) ServiceLocator.getInstance().getService(ContratoService.class, WebUtil.getUsuarioSistema(request)); ContratoDTO contratoDto = new ContratoDTO(); contratoDto.setIdContrato(requisicaoProdutoDto.getIdContrato()); contratoDto = (ContratoDTO) contratoService.restore(contratoDto); if (contratoDto != null) { ProjetoService projetoService = (ProjetoService) ServiceLocator.getInstance().getService(ProjetoService.class, WebUtil.getUsuarioSistema(request)); Collection colProjetos = projetoService.listHierarquia(contratoDto.getIdCliente(), true); if(colProjetos != null && !colProjetos.isEmpty()) idProjeto.addOptions(colProjetos, "idProjeto", "nomeHierarquizado", null); } } EnderecoService enderecoService = (EnderecoService) ServiceLocator.getInstance().getService(EnderecoService.class, WebUtil.getUsuarioSistema(request)); HTMLSelect idEnderecoEntrega = (HTMLSelect) document.getSelectById("idEnderecoEntrega"); idEnderecoEntrega.removeAllOptions(); idEnderecoEntrega.addOption("", UtilI18N.internacionaliza(request, "citcorpore.comum.selecione")); Collection colEnderecos = enderecoService.recuperaEnderecosEntregaProduto(); if(colEnderecos != null && !colEnderecos.isEmpty()) idEnderecoEntrega.addOptions(colEnderecos, "idEndereco", "enderecoStr", null); ProdutoService produtoService = (ProdutoService) ServiceLocator.getInstance().getService(ProdutoService.class, WebUtil.getUsuarioSistema(request)); Collection<ProdutoDTO> colProdutos = produtoService.findByIdCategoriaAndAceitaRequisicao(null,"S"); request.setAttribute("colProdutos", colProdutos); montaHierarquiaCategoria(document, request, response); if (requisicaoProdutoDto != null && requisicaoProdutoDto.getIdSolicitacaoServico() != null) { restore(document, request, response); } else { preparaTelaInclusao(document, request, response); } } private void preparaTelaInclusao(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception { } public void restore(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception { UsuarioDTO usuario = WebUtil.getUsuario(request); if (usuario == null) { document.alert(UtilI18N.internacionaliza(request, "citcorpore.comum.sessaoExpirada")); document.executeScript("window.location = '" + Constantes.getValue("SERVER_ADDRESS") + request.getContextPath() + "'"); return; } RequisicaoProdutoDTO requisicaoProdutoDto = (RequisicaoProdutoDTO) document.getBean(); String editar = requisicaoProdutoDto.getEditar(); RequisicaoProdutoService requisicaoProdutoService = (RequisicaoProdutoService) ServiceLocator.getInstance().getService(RequisicaoProdutoService.class, WebUtil.getUsuarioSistema(request)); requisicaoProdutoDto = (RequisicaoProdutoDTO) requisicaoProdutoService.restore(requisicaoProdutoDto); if (requisicaoProdutoDto == null) return; requisicaoProdutoDto.setEditar(editar); if (requisicaoProdutoDto.getEditar() == null) requisicaoProdutoDto.setEditar("S"); requisicaoProdutoDto.setRejeitada("N"); HTMLTable tblItensRequisicao = document.getTableById("tblItensRequisicao"); tblItensRequisicao.deleteAllRows(); ItemRequisicaoProdutoService itemRequisicaoProdutoService = (ItemRequisicaoProdutoService) ServiceLocator.getInstance().getService(ItemRequisicaoProdutoService.class, WebUtil.getUsuarioSistema(request)); Collection<ItemRequisicaoProdutoDTO> itensRequisicao = itemRequisicaoProdutoService.findByIdSolicitacaoServico(requisicaoProdutoDto.getIdSolicitacaoServico()); if (itensRequisicao != null) { tblItensRequisicao.addRowsByCollection(itensRequisicao, new String[] {"","","quantidade","descrSituacao"}, null, "", new String[] {"gerarImgAlterar"}, null, null); } requisicaoProdutoDto.setAcao(getAcao()); request.setAttribute("rejeitada", requisicaoProdutoDto.getRejeitada() == null ? "N" : requisicaoProdutoDto.getRejeitada()); HTMLForm form = document.getForm("form"); form.clear(); form.setValues(requisicaoProdutoDto); document.getElementById("finalidade").setDisabled(true); } public void montaHierarquiaCategoria(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception { CategoriaProdutoService categoriaProdutoService = (CategoriaProdutoService) ServiceLocator.getInstance().getService(CategoriaProdutoService.class, WebUtil.getUsuarioSistema(request)); Collection<CategoriaProdutoDTO> colCategorias = categoriaProdutoService.listAtivas(); HTMLSelect idCategoria = (HTMLSelect) document.getSelectById("item#idCategoriaProduto"); idCategoria.removeAllOptions(); idCategoria.addOption("", UtilI18N.internacionaliza(request, "citcorpore.comum.selecione")); if(colCategorias != null && !colCategorias.isEmpty()) idCategoria.addOptions(colCategorias, "idCategoria", "nomeHierarquizado", null); } public void preparaTelaItemRequisicao(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception { UsuarioDTO usuario = WebUtil.getUsuario(request); if (usuario == null) { document.alert(UtilI18N.internacionaliza(request, "citcorpore.comum.sessaoExpirada")); document.executeScript("window.location = '" + Constantes.getValue("SERVER_ADDRESS") + request.getContextPath() + "'"); return; } RequisicaoProdutoDTO requisicaoProdutoDto = (RequisicaoProdutoDTO) document.getBean(); if (requisicaoProdutoDto.getTipoIdentificacaoItem() != null && requisicaoProdutoDto.getTipoIdentificacaoItem().equals("S")) exibeProduto(document, request, response); else document.executeScript("prepararTelaDigitacaoProduto()"); document.executeScript("$(\"#POPUP_ITEM_REQUISICAO\").dialog(\"open\")"); } public void exibeProduto(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception { UsuarioDTO usuario = WebUtil.getUsuario(request); if (usuario == null) { document.alert(UtilI18N.internacionaliza(request, "citcorpore.comum.sessaoExpirada")); document.executeScript("window.location = '" + Constantes.getValue("SERVER_ADDRESS") + request.getContextPath() + "'"); return; } document.executeScript("document.getElementById('divDigitacao').style.display = 'none'"); document.executeScript("document.getElementById('divProduto').style.display = 'none'"); RequisicaoProdutoDTO requisicaoProdutoDto = (RequisicaoProdutoDTO) document.getBean(); if (requisicaoProdutoDto.getIdProduto() == null) return; document.executeScript("document.getElementById('divBotoesItem').style.display = 'block';"); String img = ""; String detalhes = ""; String acessorios = ""; ProdutoService produtoService = (ProdutoService) ServiceLocator.getInstance().getService(ProdutoService.class, WebUtil.getUsuarioSistema(request)); ProdutoDTO produtoDto = new ProdutoDTO(); produtoDto.setIdProduto(requisicaoProdutoDto.getIdProduto()); produtoDto = (ProdutoDTO) produtoService.restore(produtoDto); if (produtoDto != null) { document.executeScript("document.getElementById('divProduto').style.display = 'block';"); document.executeScript("document.getElementById('descricaoItem').disabled = -1;"); produtoService.recuperaImagem(produtoDto); if (produtoDto.getImagem() != null) img = "<img src=\""+produtoDto.getImagem()+"\" style='align:center'/>"; if (produtoDto.getDetalhes() != null) detalhes += "<b>"+UtilI18N.internacionaliza(request, "itemRequisicaoProduto.especificacoes")+":</b><br>"+produtoDto.getDetalhes()+"<br><br>"; if (produtoDto.getPrecoMercado() != null) detalhes += "<b>"+UtilI18N.internacionaliza(request, "itemRequisicaoProduto.preco")+":</b> "+UtilI18N.internacionaliza(request, "citcorpore.comum.simboloMonetario")+UtilFormatacao.formatDouble(produtoDto.getPrecoMercado(), 2); RelacionamentoProdutoService relacionamentoService = (RelacionamentoProdutoService) ServiceLocator.getInstance().getService(RelacionamentoProdutoService.class, WebUtil.getUsuarioSistema(request)); Collection<RelacionamentoProdutoDTO> colRelacionados = relacionamentoService.findByIdTipoProduto(produtoDto.getIdTipoProduto()); if (colRelacionados != null && !colRelacionados.isEmpty()) { TipoProdutoService tipoProdutoService = (TipoProdutoService) ServiceLocator.getInstance().getService(TipoProdutoService.class, WebUtil.getUsuarioSistema(request)); HashMap<String, CategoriaProdutoDTO> mapAcessorios = new HashMap(); for (RelacionamentoProdutoDTO acessorioDto : colRelacionados) { TipoProdutoDTO produtoAuxDto = new TipoProdutoDTO(); produtoAuxDto.setIdTipoProduto(acessorioDto.getIdTipoProdutoRelacionado()); produtoAuxDto = (TipoProdutoDTO) tipoProdutoService.restore(produtoAuxDto); if (produtoAuxDto != null) { CategoriaProdutoDTO categoriaDto = mapAcessorios.get(""+produtoAuxDto.getIdCategoria()); if (categoriaDto == null) { List<TipoProdutoDTO> list = new ArrayList(); list.add(produtoAuxDto); categoriaDto = new CategoriaProdutoDTO(); categoriaDto.setIdCategoria(produtoAuxDto.getIdCategoria()); categoriaDto.setNomeCategoria(produtoAuxDto.getNomeCategoria()); categoriaDto.setColProdutos(list); mapAcessorios.put(""+produtoAuxDto.getIdCategoria(),categoriaDto); }else{ categoriaDto.getColProdutos().add(produtoAuxDto); } } } CategoriaProdutoService categoriaProdutoService = (CategoriaProdutoService) ServiceLocator.getInstance().getService(CategoriaProdutoService.class, WebUtil.getUsuarioSistema(request)); int i = 0; acessorios = "<table class='table1' border='0'><tr><th colspan='3'>"+UtilI18N.internacionaliza(request, "itemRequisicaoProduto.produtosAssociados")+"</th></tr>"; for (String id: mapAcessorios.keySet()) { CategoriaProdutoDTO categoriaDto = mapAcessorios.get(id); categoriaProdutoService.recuperaImagem(categoriaDto); String path = categoriaDto.getImagem(); if (path == null || path.equals("")) path = Constantes.getValue("CONTEXTO_APLICACAO")+"/imagens/folder.png"; acessorios += "<tr><td><img style='width:16px;height:16px' src=\""+path+"\" /></td><td colspan='2'><b>"+categoriaDto.getNomeCategoria()+"</b></td></tr>"; for (TipoProdutoDTO produtoAuxDto: categoriaDto.getColProdutos()) { acessorios += "<tr><td> </td><td> </td><td>"+produtoAuxDto.getNomeProduto()+"</td></tr>"; } } acessorios += "</table>"; /*int i = 0; acessorios = "<table><tr>"; for (AcessorioProdutoDTO acessorioDto : colRelacionados) { ProdutoDTO produtoAuxDto = new ProdutoDTO(); produtoAuxDto.setIdProduto(acessorioDto.getIdAcessorio()); produtoAuxDto = (ProdutoDTO) produtoService.restore(produtoAuxDto); if (produtoAuxDto != null) { String preco = ""; if (produtoAuxDto.getPrecoMercado() != null) preco = "  "+UtilI18N.internacionaliza(request, "citcorpore.comum.simboloMonetario")+UtilFormatacao.formatDouble(produtoAuxDto.getPrecoMercado(), 2); if (i > 0 && i % 2 == 0) { acessorios += "</tr>"; acessorios += "<tr>"; } acessorios += "<td><label style='cursor:pointer'>"+produtoAuxDto.getNomeCategoria()+" -> " +produtoAuxDto.getNomeProduto()+preco+"</label>   </td>"; // acessorios += "<td><label style='cursor:pointer'><input type='checkbox' value='"+acessorioDto.getIdAcessorio()+"' name='idAcessorio' id='idAcessorio"+acessorioDto.getIdAcessorio()+"' />"+ // "<input id='qtdeAcessorio_"+acessorioDto.getIdAcessorio()+"' name='qtdeAcessorio_"+acessorioDto.getIdAcessorio()+"' type='text' maxlength='3' lenght='3' class='Format[Moeda]'/>" + // produtoAuxDto.getNomeProduto()+preco+"</label>   </td>"; i++; } } acessorios += "<tr></table>";*/ } HTMLForm form = document.getForm("formItemRequisicao"); form.setValues(produtoDto); document.executeScript("posicionarCategoria("+produtoDto.getIdCategoria().intValue()+");"); } document.getElementById("divImagemProduto").setInnerHTML(img); document.getElementById("divDetalhesProduto").setInnerHTML(detalhes); document.getElementById("divAcessorios").setInnerHTML(acessorios); } protected void recuperaAutorizadores(DocumentHTML document, HttpServletRequest request, HttpServletResponse response, RequisicaoProdutoDTO requisicaoProdutoDto) throws Exception { RequisicaoProdutoService requisicaoProdutoService = (RequisicaoProdutoService) ServiceLocator.getInstance().getService(RequisicaoProdutoService.class, WebUtil.getUsuarioSistema(request)); String str = "<table class=\"table\" width=\"100%\">"; str += " <tr>"; str += " <th >"+UtilI18N.internacionaliza(request, "delegacaoCentroResultado.empregado") + "</th>"; str += " <th width=\"10%\">"+UtilI18N.internacionaliza(request, "delegacaoCentroResultado.autoridade") + "</th>"; str += " <th width=\"5%\">"+UtilI18N.internacionaliza(request, "aprovadores.delegacao") + "</th>"; str += " <th width=\"5%\">"+UtilI18N.internacionaliza(request, "aprovadores.valido") + "</th>"; str += " </tr>"; CentroResultadoService centroResultadoService = (CentroResultadoService) ServiceLocator.getInstance().getService(CentroResultadoService.class, WebUtil.getUsuarioSistema(request)); CentroResultadoDTO centroResultadoDto = new CentroResultadoDTO(); centroResultadoDto.setIdCentroResultado(requisicaoProdutoDto.getIdCentroCusto()); centroResultadoDto = (CentroResultadoDTO) centroResultadoService.restore(centroResultadoDto); if (AlcadaCompras.isNovaAlcada()) { Collection<AlcadaProcessoNegocioDTO> colAlcadas = AlcadaProcessoNegocio.getInstance().getAlcadasResponsaveis(requisicaoProdutoDto, centroResultadoDto, null); if (colAlcadas != null) { for (AlcadaProcessoNegocioDTO alcadaProcessoNegocioDto : colAlcadas) { String cor = " style='color:black' "; String title = ""; if (alcadaProcessoNegocioDto.isAlcadaRejeitada()) { cor = " style='color:red' "; if (alcadaProcessoNegocioDto.getMotivoRejeicao() != null) { String motivo = alcadaProcessoNegocioDto.getMotivoRejeicao().getDescricao(); if (alcadaProcessoNegocioDto.getComplementoRejeicao() != null) motivo += " - "+alcadaProcessoNegocioDto.getComplementoRejeicao(); title="title='header=[Motivo da rejei��o] body=[" + motivo + "]'"; } } str += "<tr "+title+cor+">"; str += " <td>"; str += alcadaProcessoNegocioDto.getEmpregadoDto().getNome(); str += " </td>"; str += " <td>"; str += alcadaProcessoNegocioDto.getProcessosNegocio().get(0).getNivelAutoridadeDto().getNomeNivelAutoridade(); str += " </td>"; if (!alcadaProcessoNegocioDto.isDelegacao()) { str += "<td>N�o</td>"; }else{ str += "<td style='color:red'>Sim</td>"; } if (alcadaProcessoNegocioDto.isAlcadaRejeitada()) { str += "<td>N�o"; }else{ str += "<td>Sim"; } str += " </td>"; } }else{ document.alert(UtilI18N.internacionaliza(request, "requisicaoProduto.nenhumAutorizador")); } document.executeScript("document.getElementById('divLoginAprovadores').style.display = 'none';"); document.getElementById("divAprovadores").setInnerHTML(str); }else{ StringBuilder aprovadores = requisicaoProdutoService.recuperaLoginAutorizadores(requisicaoProdutoDto.getIdSolicitacaoServico()); if (aprovadores != null) { document.getElementById("divLoginAprovadores").setInnerHTML(aprovadores.toString().replaceAll(";", "<br>")); }else{ document.getElementById("divLoginAprovadores").setInnerHTML(""); document.alert(UtilI18N.internacionaliza(request, "requisicaoProduto.nenhumAutorizador")); } document.executeScript("document.getElementById('divAprovadores').style.display = 'none';"); } } }