package gcom.gui.atendimentopublico.ordemservico; import gcom.atendimentopublico.ordemservico.OrdemServico; import gcom.atendimentopublico.ordemservico.OrdemServicoBoletim; import gcom.atendimentopublico.ordemservico.ServicoTipo; import gcom.atendimentopublico.ordemservico.ServicoTipoBoletim; import gcom.cadastro.cliente.Cliente; import gcom.fachada.Fachada; import gcom.gui.ActionServletException; import gcom.gui.GcomAction; import gcom.util.ConstantesSistema; import gcom.util.Util; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; /** * [UC1116] Atualizar Informa��es da OS para Boletim de Medi��o * * @author Vivianne Sousa * @since 01/02/2011 */ public class ExibirAtualizarInformacoesOSBoletimMedicaoAction extends GcomAction { public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) { // Seta o mapeamento de retorno ActionForward retorno = actionMapping.findForward("exibirAtualizarInformacoesOSBoletimMedicao"); AtualizarInformacoesOSBoletimMedicaoActionForm form = (AtualizarInformacoesOSBoletimMedicaoActionForm) actionForm; // Parte que trata do c�digo quando o usu�rio tecla enter String idOrdemServico = form.getIdOrdemServico(); //ORDEM_SERVICO if (idOrdemServico != null && !idOrdemServico.trim().equals("")) { this.pesquisarOrdemServico(idOrdemServico,form,httpServletRequest); }else{ form.setIdOrdemServico(""); form.setNomeOrdemServico(""); form.setIdImovel(""); form.setInscricaoImovel(""); form.setSituacaoLigAgua(""); form.setSituacaoLigEsgoto(""); form.setNomeCliente(""); form.setCpfCnpjCliente(""); form.setIndicadorExistePavimento(null); form.setQtdeReposicaoAsfalto(null); form.setQtdeReposicaoParalelo(null); form.setQtdeReposicaoCalcada(null); form.setExibeIndicadorExistePavimento("2"); form.setExibeQtdeReposicaoAsfalto("2"); form.setExibeQtdeReposicaoParalelo("2"); form.setExibeQtdeReposicaoCalcada("2"); } // //Seta os request�s encontrados // this.setaRequest(httpServletRequest,form); // return retorno; } /** * Pesquisa Ordem Servi�o */ private void pesquisarOrdemServico(String idOrdemServico, AtualizarInformacoesOSBoletimMedicaoActionForm form, HttpServletRequest httpServletRequest) { OrdemServico ordemServico = Fachada.getInstancia(). recuperaOSEDadosImovel(new Integer(idOrdemServico)); //[FS0001] - Validar Ordem de Servi�o if (ordemServico == null) { form.setNomeOrdemServico(""); throw new ActionServletException("atencao.naocadastrado", null,"Ordem de Servi�o"); } //Caso o servi�o associado � Ordem de Servi�o n�o corresponda a um servi�o com informa��es de boletim //(SVTP_ICBOLETIM da tabela SERVICO_TIPO com SVTP_ID=SVTP_ID da tabela ORDEM_SERVICO //com valor correspondente a (N�o)�2), exibir a mensagem //�O servi�o associado a esta ordem de servi�o solicitam informa��es para boletim�. if(ordemServico.getServicoTipo().getIndicadorBoletim().equals(ConstantesSistema.NAO)){ form.setNomeOrdemServico(""); throw new ActionServletException("atencao.os.solicitam.informacoes.boletim"); } //Caso a Ordem de Servi�o j� tenha sido contabilizada em boletim //(ORSE_ID da tabela ORDEM_SERVICO existente na tabela BOLETIM_MEDICAO_OS //exibir a mensagem �Esta ordem de servi�o j� foi contabilizada em boletim de medi��o� //Caso a Ordem de Servi�o n�o esteja na situa��o de encerrada //(ORSE_CDSITUA��O na tabela ORDEM_SERVICO com o valor igual a �Pendente� (1)), //exibir a mensagem �Esta Ordem de Servi�o n�o est� encerrada� if(ordemServico.getSituacao() == 1){ form.setNomeOrdemServico(""); throw new ActionServletException("atencao.ordem_servico_situacao", null, OrdemServico.SITUACAO_DESCRICAO_ENCERRADO); } if (ordemServico != null) { form.setIdOrdemServico(ordemServico.getId().toString()); form.setNomeOrdemServico(ordemServico.getServicoTipo().getDescricao()); if(ordemServico.getImovel() != null){ form.setIdImovel(ordemServico.getImovel().getId().toString()); form.setInscricaoImovel(ordemServico.getImovel().getInscricaoFormatada()); form.setSituacaoLigAgua(ordemServico.getImovel().getLigacaoAguaSituacao().getDescricao()); form.setSituacaoLigEsgoto(ordemServico.getImovel().getLigacaoEsgotoSituacao().getDescricao()); //CLIENTE USUARIO DO IMOVEL Cliente cliente = pesquisarClienteUsuarioImovel(ordemServico.getImovel().getId()); form.setNomeCliente(cliente.getNome()); //CPF ou CNPJ do Cliente if ( cliente.getCpf() != null ) { form.setCpfCnpjCliente( cliente.getCpfFormatado() ); } else if ( cliente.getCnpj() != null ) { form.setCpfCnpjCliente( cliente.getCnpjFormatado() ); } } ServicoTipo servicoTipo = ordemServico.getServicoTipo(); //4.Dados das Informa��es para o boletim: verificarInformacoesBoletimMedicao(ordemServico.getId(),servicoTipo,form); httpServletRequest.setAttribute("ordemServicoEncontrada","true"); } else { httpServletRequest.setAttribute("nomeCampo", "idOrdemServico"); form.setIdOrdemServico(""); form.setNomeOrdemServico("Ordem de Servi�o inexistente"); form.setIdImovel(""); form.setInscricaoImovel(""); form.setSituacaoLigAgua(""); form.setSituacaoLigEsgoto(""); form.setNomeCliente(""); form.setCpfCnpjCliente(""); } // return ordemServico; } /** * Pesquisa Cliente Usu�rio */ private Cliente pesquisarClienteUsuarioImovel(Integer idImovel) { Cliente cliente = Fachada.getInstancia(). pesquisarClienteUsuarioImovel(idImovel); return cliente; } /** * Seta os request com os id encontrados */ // private void setaRequest(HttpServletRequest httpServletRequest,AtualizarInformacoesOSBoletimMedicaoActionForm form){ // // //Ordem de Servico // if(form.getIdOrdemServico() != null && !form.getIdOrdemServico().equals("") && // form.getNomeOrdemServico() != null && !form.getNomeOrdemServico().equals("")){ // // httpServletRequest.setAttribute("ordemServicoEncontrada","true"); // } // // } /** * [UC1116] Atualizar Informa��es da OS para Boletim de Medi��o * * @author Vivianne Sousa * @created 02/02/2011 */ private void verificarInformacoesBoletimMedicao( Integer idOrdemServico,ServicoTipo servicoTipo, AtualizarInformacoesOSBoletimMedicaoActionForm form) { String exibeIndicadorExistePavimento = "2"; String exibeQtdeReposicaoAsfalto = "2"; String exibeQtdeReposicaoCalcada = "2"; String exibeQtdeReposicaoParalelo = "2"; // ServicoTipo servicoTipo = getFachada(). // recuperaServicoTipoDaOrdemServico(idOrdemServico); if(servicoTipo.getIndicadorBoletim().equals(ConstantesSistema.SIM)){ //Caso o indicador do servi�o da ordem de servi�o //que est� sendo encerrada tenha indicador para obter //as informa��es para gera��o do boletim de medi��o ServicoTipoBoletim servicoTipoBoletim = getFachada(). recuperaServicoTipoBoletimDoServicoTipo(servicoTipo.getId()); if(servicoTipoBoletim != null){ //1.1.Caso o indicador de pavimento esteja solicitando //a informa��o da exist�ncia de pavimento if(servicoTipoBoletim.getIndicadorPavimento().equals(ConstantesSistema.SIM)){ //1.1.1.O sistema dever� solicitar a informa��o //de exist�ncia do pavimento (Sim ou N�o, obrigatoriamente) exibeIndicadorExistePavimento = "1"; } //1.2.Caso o indicador de quantidade de reposi��o em m� //de asfalto esteja solicitando a informa��o do valor if(servicoTipoBoletim.getIndicadorReposicaoAsfalto().equals(ConstantesSistema.SIM)){ //1.2.1.O sistema dever� solicitar a informa��o da quantidade de reposi��o em m� de asfalto. //[FS0011 � Validar a quantidade m�] exibeQtdeReposicaoAsfalto = "1"; } //1.3.Caso o indicador de quantidade de reposi��o em m� //de paralelo esteja solicitando a informa��o do valor if(servicoTipoBoletim.getIndicadorReposicaoParalelo().equals(ConstantesSistema.SIM)){ //1.3.1.O sistema dever� solicitar a informa��o da quantidade de reposi��o em m� de asfalto. //[FS0011 � Validar a quantidade m�] exibeQtdeReposicaoParalelo = "1"; } //1.4.Caso o indicador de quantidade de reposi��o em m� //de cal�ada esteja solicitando a informa��o do valor if(servicoTipoBoletim.getIndicadorReposicaoCalcada().equals(ConstantesSistema.SIM)){ //1.4.1.O sistema dever� solicitar a informa��o da quantidade de reposi��o em m� de cal�ada. //[FS0011 � Validar a quantidade m�] exibeQtdeReposicaoCalcada = "1"; } OrdemServicoBoletim ordemServicoBoletim = getFachada(). recuperaOrdemServicoBoletimDaOS(idOrdemServico); if(ordemServicoBoletim != null){ form.setIndicadorExistePavimento(ordemServicoBoletim.getIndicadorPavimento().toString()); if(ordemServicoBoletim.getNumeroReposicaoAsfalto() != null){ form.setQtdeReposicaoAsfalto(Util.formatarBigDecimalParaStringComVirgula( ordemServicoBoletim.getNumeroReposicaoAsfalto())); }else{ form.setQtdeReposicaoAsfalto(null); } if(ordemServicoBoletim.getNumeroReposicaoParalelo() != null){ form.setQtdeReposicaoParalelo(Util.formatarBigDecimalParaStringComVirgula( ordemServicoBoletim.getNumeroReposicaoParalelo())); }else{ form.setQtdeReposicaoParalelo(null); } if(ordemServicoBoletim.getNumeroReposicaoCalcada() != null){ form.setQtdeReposicaoCalcada(Util.formatarBigDecimalParaStringComVirgula( ordemServicoBoletim.getNumeroReposicaoCalcada())); }else{ form.setQtdeReposicaoCalcada(null); } }else{ form.setIndicadorExistePavimento(null); form.setQtdeReposicaoAsfalto(null); form.setQtdeReposicaoParalelo(null); form.setQtdeReposicaoCalcada(null); } }else{ //Caso a Ordem de Servi�o n�o tenha informa��es cadastradas para o boletim //(ORSE_ID da tabela ORDEM_SERVICO n�o existente na tabela ORDEM_SERVICO_BOLETIM //exibir a mensagem �N�o existem informa��es desta ordem de servi�o para boletim� throw new ActionServletException("atencao.nao.existe.informacoes.boletim"); } } form.setExibeIndicadorExistePavimento(exibeIndicadorExistePavimento); form.setExibeQtdeReposicaoAsfalto(exibeQtdeReposicaoAsfalto); form.setExibeQtdeReposicaoParalelo(exibeQtdeReposicaoParalelo); form.setExibeQtdeReposicaoCalcada(exibeQtdeReposicaoCalcada); } }