package gcom.gui.cadastro.cliente; import gcom.cadastro.cliente.Cliente; import gcom.cadastro.cliente.ClienteEndereco; import gcom.cadastro.cliente.ClienteFone; import gcom.cadastro.cliente.FiltroCliente; import gcom.cadastro.cliente.FiltroClienteEndereco; import gcom.cadastro.cliente.FiltroClienteFone; import gcom.cadastro.imovel.Imovel; import gcom.fachada.Fachada; import gcom.gui.ActionServletException; import gcom.gui.GcomAction; import gcom.gui.StatusWizard; import gcom.seguranca.acesso.PermissaoEspecial; import gcom.seguranca.acesso.usuario.Usuario; import gcom.util.ConstantesSistema; import gcom.util.Util; import gcom.util.filtro.ParametroSimples; import java.lang.reflect.InvocationTargetException; import java.text.SimpleDateFormat; import java.util.Collection; import java.util.Iterator; import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import org.apache.struts.action.DynaActionFormClass; import org.apache.struts.config.FormBeanConfig; import org.apache.struts.config.ModuleConfig; import org.apache.struts.validator.DynaValidatorForm; /** * Action para a pr�-exibi��o da p�gina de Atualizar Cliente * * @author rodrigo */ public class ExibirAtualizarClienteAction extends GcomAction { /** * M�todo que � executado primeiro * * @param actionMapping * Mapeamento do Struts * @param actionForm * Form do Funcion�rio * @param httpServletRequest * Request Atual * @param httpServletResponse * Response Atual * @return Retorno do Mapeamento do Struts */ public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) { // ------------Parte que inicializa o processo de // atualiza��o---------------------------------- // localiza o action no objeto actionmapping ActionForward retorno = actionMapping .findForward("atualizarClienteNomeTipo"); // obt�m a inst�ncia da sess�o HttpSession sessao = httpServletRequest.getSession(false); // Obt�m a inst�ncia da fachada Fachada fachada = Fachada.getInstancia(); String codigoCliente = null; StatusWizard statusWizard = null; Usuario usuarioLogado = (Usuario) sessao.getAttribute("usuarioLogado"); if (httpServletRequest.getParameter("desfazer") == null) { if (httpServletRequest.getParameter("idRegistroAtualizacao") != null) { codigoCliente = (String) httpServletRequest .getParameter("idRegistroAtualizacao"); } else if (httpServletRequest.getAttribute("idRegistroAtualizacao") != null) { codigoCliente = (String) httpServletRequest .getAttribute("idRegistroAtualizacao"); } //[UC1049] - Atualizar Dados Cadastrais PROMAIS //link para tela de sucesso String linkSucesso = (String) httpServletRequest.getParameter("linkSucesso"); if(linkSucesso != null && !linkSucesso.equals("")){ sessao.setAttribute("linkSucesso", linkSucesso); } // Verifica se chegou no atualizar cliente atraves da tela de // filtrar devido a um unico registro // ou atraves da lista de imoveis no manter cliente if (sessao.getAttribute("atualizar") != null || httpServletRequest.getParameter("sucesso") != null ) { statusWizard = new StatusWizard( "atualizarClienteWizardAction", "atualizarClienteAction", "cancelarAtualizarClienteAction", "exibirFiltrarClienteAction", "exibirAtualizarClienteAction.do", codigoCliente); sessao.removeAttribute("atualizar"); } else if(httpServletRequest.getParameter("promais") != null){ statusWizard = new StatusWizard( "atualizarClienteWizardAction", "atualizarClienteAction", "cancelarAtualizarClienteAction", "exibirConsultarImovelAction", "exibirAtualizarClienteAction.do", codigoCliente); } else { statusWizard = new StatusWizard( "atualizarClienteWizardAction", "atualizarClienteAction", "cancelarAtualizarClienteAction", "exibirManterClienteAction", "exibirAtualizarClienteAction.do", codigoCliente); } statusWizard .inserirNumeroPaginaCaminho(statusWizard.new StatusWizardItem( 1, "ClienteNomeTipoA.gif", "ClienteNomeTipoD.gif", "exibirAtualizarClienteNomeTipoAction", "atualizarClienteNomeTipoAction")); statusWizard .inserirNumeroPaginaCaminho(statusWizard.new StatusWizardItem( 2, "ClientePessoaA.gif", "ClientePessoaD.gif", "exibirAtualizarClientePessoaAction", "atualizarClientePessoaAction")); statusWizard .inserirNumeroPaginaCaminho(statusWizard.new StatusWizardItem( 3, "ClienteEnderecoA.gif", "ClienteEnderecoD.gif", "exibirAtualizarClienteEnderecoAction", "atualizarClienteEnderecoAction")); statusWizard .inserirNumeroPaginaCaminho(statusWizard.new StatusWizardItem( 4, "ClienteTelefoneA.gif", "ClienteTelefoneD.gif", "exibirAtualizarClienteTelefoneAction", "atualizarClienteTelefoneAction")); // manda o statusWizard para a sessao sessao.setAttribute("statusWizard", statusWizard); } else { statusWizard = (StatusWizard) sessao.getAttribute("statusWizard"); codigoCliente = statusWizard.getId(); } // limpa a sess�o sessao.removeAttribute("colecaoClienteFone"); //********************************************************************** // Autor: Ivan Sergio // Data: 23/07/2009 // CRC2103 // Guarda o endereco do Imovel para o caso em que o Inserir/Manter // cliente � invocado pelo Inserir/Manter Imovel como PopUp //********************************************************************** if (sessao.getAttribute("colecaoEnderecos") != null) { Collection colecaoEndereco = (Collection) sessao.getAttribute("colecaoEnderecos"); Object obj = (Object) colecaoEndereco.iterator().next(); if (obj instanceof Imovel) { sessao.setAttribute("colecaoEnderecosImovel", sessao.getAttribute("colecaoEnderecos")); } } sessao.removeAttribute("colecaoEnderecos"); //********************************************************************** sessao.removeAttribute("foneTipos"); sessao.removeAttribute("municipios"); sessao.removeAttribute("colecaoResponsavelSuperiores"); sessao.removeAttribute("InserirEnderecoActionForm"); // Retira o actionForm da sess�o para criar um novo mais abaixo na linha 192 sessao.removeAttribute("ClienteActionForm"); sessao.removeAttribute("tipoPesquisaRetorno"); sessao.removeAttribute("clienteAtualizacao"); // Cria o filtro para cliente FiltroCliente filtroCliente = new FiltroCliente(); filtroCliente.adicionarParametro(new ParametroSimples(FiltroCliente.ID, codigoCliente)); filtroCliente .adicionarCaminhoParaCarregamentoEntidade(FiltroCliente.CLIENTE_RESPONSAVEL); filtroCliente .adicionarCaminhoParaCarregamentoEntidade("clienteTipo"); // pesquisa a cole�ao de cliente(s) Collection clientes = fachada.pesquisar(filtroCliente, Cliente.class .getName()); // Caso a cole��o esteja vazia, indica erro inesperado if (clientes == null || clientes.isEmpty()) { throw new ActionServletException("erro.sistema"); } else { // O cliente que ser� atualizado Cliente cliente = (Cliente) ((List) clientes).get(0); if (cliente.getId() != null && !cliente.getId().equals("")) { statusWizard.adicionarItemHint("C�digo:", cliente.getId() .toString()); } if (cliente.getNome() != null && !cliente.getNome().equals("")) { statusWizard.adicionarItemHint("Nome:", cliente.getNome()); } if (cliente.getCnpj() != null && !cliente.getCnpj().equals("")) { statusWizard.adicionarItemHint("CNPJ:", cliente .getCnpjFormatado()); } else if (cliente.getCpf() != null && !cliente.getCpf().equals("")) { statusWizard.adicionarItemHint("CPF:", cliente .getCpfFormatado()); } Collection colecaoClienteCadastradoTarifaSocial = fachada.verificarClienteUsuarioCadastradoTarifaSocial(cliente.getId()); if (colecaoClienteCadastradoTarifaSocial != null && !colecaoClienteCadastradoTarifaSocial.isEmpty()) { if (!fachada.verificarPermissaoAtualizarUsuarioTarifaSocial(usuarioLogado)) { throw new ActionServletException("atencao.usuario.sem.permissao.atualizar.usuario.tarifa_social"); } } /** * @author Hugo Leonardo * @data 20/09/2010 * @crc 4763 * @analista Ana Cristina * * [UC0009] Manter Cliente * [FS0008] - Verificar permiss�o especial para cliente de im�vel p�blico * */ if(Util.verificarNaoVazio(codigoCliente)){ if( fachada.verificarExistenciaImovelPublico(cliente.getId())){ boolean possuiPermissaoAtualizarClienteImoveisPublicos = fachada.verificarPermissaoEspecialAtiva( PermissaoEspecial.ALTERAR_CLIENTE_PARA_IMOVEIS_PUBLICOS, usuarioLogado); if(!possuiPermissaoAtualizarClienteImoveisPublicos){ throw new ActionServletException( "atencao.nao_usuario_nao_possui_permissao_alterar_cliente"); } } } // Manda o cliente na sess�o sessao.setAttribute("clienteAtualizacao", cliente); // Formato para a convers�o de datas SimpleDateFormat formatoData = new SimpleDateFormat("dd/MM/yyyy"); /******************************************************************************************/ /** C�digo para criar um actionForm totalmente novo - Esta foi a solu��o encontrada para **/ /** a passagem do inserir direto para o atualizar, fazendo as substitui��o dos dados do **/ /** form de mesmo nome corretamente, � preciso pegar o form pelo httpServletRequest no **/ /** exibir da primeira aba (neste caso ExibirAtualizarClienteNomeTipoAction) **/ /******************************************************************************************/ ModuleConfig module = actionMapping.getModuleConfig(); FormBeanConfig formBeanConfig = module .findFormBeanConfig("ClienteActionForm"); DynaActionFormClass dynaClass = DynaActionFormClass .createDynaActionFormClass(formBeanConfig); DynaValidatorForm clienteActionForm = null; try { clienteActionForm = (DynaValidatorForm) dynaClass.newInstance(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (InstantiationException e) { e.printStackTrace(); } /******************************************************************************************/ clienteActionForm.set("codigoCliente", cliente.getId().toString()); clienteActionForm.set("nome", formatarResultado(cliente.getNome())); clienteActionForm.set("nomeAbreviado", formatarResultado(cliente .getNomeAbreviado())); clienteActionForm.set("indicadorExibicaoNomeConta", formatarResultado(cliente.getIndicadorUsoNomeFantasiaConta() + "")); clienteActionForm.set("email", formatarResultado(cliente.getEmail())); if(cliente.getDataVencimento() != null){ clienteActionForm.set("diaVencimento", cliente.getDataVencimento().toString()); }else{ clienteActionForm.set("diaVencimento", ""); } clienteActionForm.set("indicadorPessoaFisicaJuridica", cliente.getClienteTipo().getIndicadorPessoaFisicaJuridica().toString()); clienteActionForm.set("tipoPessoa", new Short("" + cliente.getClienteTipo().getId())); // Criado para compara��o clienteActionForm.set("tipoPessoaAntes", new Short("" + cliente.getClienteTipo().getId())); clienteActionForm.set("cpf", formatarResultado("" + cliente.getCpf())); clienteActionForm .set("rg", formatarResultado("" + cliente.getRg())); if (cliente.getDataEmissaoRg() != null) { clienteActionForm.set("dataEmissao", formatoData.format(cliente .getDataEmissaoRg())); } else { clienteActionForm.set("dataEmissao", ""); } clienteActionForm.set("idOrgaoExpedidor", formatarResultado(cliente .getOrgaoExpedidorRg())); clienteActionForm.set("idUnidadeFederacao", formatarResultado(cliente.getUnidadeFederacao())); if (cliente.getDataNascimento() != null) { clienteActionForm.set("dataNascimento", formatoData .format(cliente.getDataNascimento())); } else { clienteActionForm.set("dataNascimento", ""); } clienteActionForm.set("idProfissao", formatarResultado(cliente .getProfissao())); clienteActionForm.set("idPessoaSexo", formatarResultado(cliente .getPessoaSexo())); clienteActionForm.set("nomeMae", formatarResultado(cliente.getNomeMae())); if (cliente.getCnpj() != null) { clienteActionForm.set("cnpj", cliente.getCnpj().toString()); } clienteActionForm.set("idRamoAtividade", formatarResultado(cliente .getRamoAtividade())); if (cliente.getCliente() != null) { clienteActionForm.set("codigoClienteResponsavel", formatarResultado(cliente.getCliente().getId() .toString())); clienteActionForm.set("nomeClienteResponsavel", formatarResultado(cliente.getCliente().getNome())); } if(cliente.getIndicadorAcaoCobranca() != null){ clienteActionForm.set("indicadorAcaoCobranca","" + cliente.getIndicadorAcaoCobranca()); }else{ clienteActionForm.set("indicadorAcaoCobranca","" + ConstantesSistema.INDICADOR_USO_ATIVO); } // Seta a cole��o de endere�os do usu�rio FiltroClienteEndereco filtroClienteEndereco = new FiltroClienteEndereco(); filtroClienteEndereco.adicionarParametro(new ParametroSimples(FiltroClienteEndereco.CLIENTE_ID, cliente.getId())); filtroClienteEndereco.adicionarCaminhoParaCarregamentoEntidade("logradouroCep.logradouro.logradouroTipo"); filtroClienteEndereco.adicionarCaminhoParaCarregamentoEntidade("logradouroCep.logradouro.logradouroTitulo"); filtroClienteEndereco.adicionarCaminhoParaCarregamentoEntidade("enderecoReferencia"); filtroClienteEndereco.adicionarCaminhoParaCarregamentoEntidade("logradouroBairro.bairro.municipio.unidadeFederacao"); filtroClienteEndereco.adicionarCaminhoParaCarregamentoEntidade("logradouroCep.cep"); filtroClienteEndereco.adicionarCaminhoParaCarregamentoEntidade("logradouroCep"); filtroClienteEndereco.adicionarCaminhoParaCarregamentoEntidade("enderecoTipo"); filtroClienteEndereco.adicionarCaminhoParaCarregamentoEntidade("perimetroInicial.logradouroTipo"); filtroClienteEndereco.adicionarCaminhoParaCarregamentoEntidade("perimetroInicial.logradouroTitulo"); filtroClienteEndereco.adicionarCaminhoParaCarregamentoEntidade("perimetroFinal.logradouroTipo"); filtroClienteEndereco.adicionarCaminhoParaCarregamentoEntidade("perimetroFinal.logradouroTitulo"); Collection enderecosCliente = fachada.pesquisar( filtroClienteEndereco, ClienteEndereco.class.getName()); Iterator iterator = null; if (enderecosCliente != null) { iterator = enderecosCliente.iterator(); // Percorrer a cole��o dos endere�os para setar no form qual o // endere�o do cliente que // foi selecionado como o de correspond�ncia while (iterator.hasNext()) { ClienteEndereco clienteEndereco = (ClienteEndereco) iterator .next(); if(clienteEndereco.getLogradouroBairro()!=null) if (clienteEndereco .getIndicadorEnderecoCorrespondencia() .equals( ConstantesSistema.INDICADOR_ENDERECO_CORRESPONDENCIA)) { clienteActionForm .set( "enderecoCorrespondenciaSelecao", new Long( obterTimestampIdObjeto(clienteEndereco))); break; } } sessao.setAttribute("colecaoEnderecos", enderecosCliente); } // Seta a cole��o de telefones do usu�rio FiltroClienteFone filtroClienteFone = new FiltroClienteFone(); filtroClienteFone.adicionarParametro(new ParametroSimples( FiltroClienteFone.CLIENTE_ID, cliente.getId())); /*filtroClienteFone .adicionarCaminhoParaCarregamentoEntidade("foneTipo.descricao");*/ filtroClienteFone.adicionarCaminhoParaCarregamentoEntidade("foneTipo"); Collection telefonesCliente = fachada.pesquisar(filtroClienteFone, ClienteFone.class.getName()); if (telefonesCliente != null) { iterator = telefonesCliente.iterator(); // Percorrer a cole��o dos telefones para setar no form qual o // telefone do cliente que // foi selecionado como o principal while (iterator.hasNext()) { ClienteFone clienteFone = (ClienteFone) iterator.next(); if (clienteFone != null) { if (clienteFone.getIndicadorTelefonePadrao() != null && clienteFone .getIndicadorTelefonePadrao() .equals( ConstantesSistema.INDICADOR_TELEFONE_PRINCIPAL)) { clienteActionForm .set( "indicadorTelefonePadrao", new Long( obterTimestampIdObjeto(clienteFone))); break; } } } } // Verifica o indicador de uso clienteActionForm.set("indicadorUso", cliente.getIndicadorUso() .toString()); clienteActionForm.set("indicadorAcrescimos", cliente.getIndicadorAcrescimos() .toString()); clienteActionForm.set("indicadorGeraFaturaAntecipada", cliente.getIndicadorGeraFaturaAntecipada().toString()); if (cliente.getDataVencimento() != null) { clienteActionForm.set("indicadorVencimentoMesSeguinte", cliente.getIndicadorVencimentoMesSeguinte().toString()); } if (cliente.getIndicadorPermiteNegativacao() != null){ if (cliente.getIndicadorPermiteNegativacao().equals(ConstantesSistema.SIM)){ clienteActionForm.set("indicadorPermiteNegativacao", ConstantesSistema.NAO.toString()); } else { clienteActionForm.set("indicadorPermiteNegativacao", ConstantesSistema.SIM.toString()); } } // Seta a cole��o de telefones do usu�rio sessao.setAttribute("colecaoClienteFone", telefonesCliente); // Seta o form na sess�o // sessao.setAttribute("ClienteActionForm", clienteActionForm); // Manda o form para a primeira p�gina do processo para que depois // ela seja colocada na sess�o httpServletRequest.setAttribute("ClienteActionForm", clienteActionForm); /** * Autor: Paulo Diniz * Data: 11/07/2011 * [RR2011061059] * [UC0009] Manter Cliente * [FS0013] Verificar permissão especial alterar cliente inativo */ if(cliente.getIndicadorUso() != null && cliente.getIndicadorUso().intValue() == 2){ sessao.setAttribute("desabilitarCampos", true); }else{ sessao.setAttribute("desabilitarCampos", false); } } if(httpServletRequest.getParameter("promais")!=null){ sessao.setAttribute("promais",httpServletRequest.getParameter("promais")); sessao.setAttribute("idImovel",httpServletRequest.getParameter("idImovel")); sessao.setAttribute("caminhoVoltarPromais", statusWizard.getCaminhoActionVoltarFiltro()); } // devolve o mapeamento de retorno return retorno; } /** * < <Descri��o do m�todo>> * * @param parametro * Descri��o do par�metro * @return Descri��o do retorno */ private String formatarResultado(String parametro) { if (parametro != null && !parametro.trim().equals("") && !parametro.trim().equals("null")) { return parametro.trim(); } else { return ""; } } /** * < <Descri��o do m�todo>> * * @param parametro * Descri��o do par�metro * @return Descri��o do retorno */ private Integer formatarResultado(Object parametro) { if (parametro != null) { try { return (Integer) parametro.getClass().getMethod("getId", (Class[]) null).invoke(parametro, (Object[]) null); } catch (SecurityException ex) { return null; } catch (NoSuchMethodException ex) { return null; } catch (InvocationTargetException ex) { return null; } catch (IllegalArgumentException ex) { return null; } catch (IllegalAccessException ex) { return null; } } else { return new Integer(ConstantesSistema.NUMERO_NAO_INFORMADO); } } }