package gcom.gui.atendimentopublico.ordemservico; import java.math.BigDecimal; import java.util.Date; import java.util.HashMap; import java.util.Map; 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 AtualizarInformacoesOSBoletimMedicaoAction extends GcomAction { public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) { // Seta o mapeamento de retorno ActionForward retorno = actionMapping.findForward("telaSucesso"); // Obt�m a inst�ncia da fachada Fachada fachada = Fachada.getInstancia(); AtualizarInformacoesOSBoletimMedicaoActionForm form = (AtualizarInformacoesOSBoletimMedicaoActionForm) actionForm; String idOrdemServico = form.getIdOrdemServico(); if (idOrdemServico != null && !idOrdemServico.trim().equals("") && (form.getNomeOrdemServico() == null || form.getNomeOrdemServico().equals("")) ) { OrdemServico ordemServico = pesquisarOrdemServico(idOrdemServico,form,httpServletRequest); // Verifica se a pesquisa retornou algum objeto para a cole��o if (ordemServico == null) { throw new ActionServletException("atencao.naocadastrado", null,"Ordem de Servi�o"); } } String valorConfirmacaoBoletimValorZero = ( String ) httpServletRequest.getParameter( "confirmado" ); Map validacao = validarInformacoesBoletimMedicao(new Integer(form.getIdOrdemServico()),form); OrdemServicoBoletim ordemServicoBoletim = (OrdemServicoBoletim)validacao.get("ordemServicoBoletim"); Boolean exibirMsgConfirmacao = (Boolean)validacao.get("exibirMsgConfirmacao"); if(exibirMsgConfirmacao && (valorConfirmacaoBoletimValorZero == null || !valorConfirmacaoBoletimValorZero.equalsIgnoreCase("ok"))){ httpServletRequest.setAttribute("caminhoActionConclusao", "/gsan/atualizarInformacoesOSBoletimMedicaoAction.do"); httpServletRequest.setAttribute("nomeBotao1", "Sim"); httpServletRequest.setAttribute("tipoRelatorio", "confirmaBoletimValorZero"); return montarPaginaConfirmacao("atencao.encerrar_OS_boletim",httpServletRequest, actionMapping); }else{ fachada.inserirOuAtualizar(ordemServicoBoletim); montarPaginaSucesso(httpServletRequest, "Informa��es da OS para Boletim de Medi��o atualizada com sucesso.", "Realizar outra atualiza��o de Informa��es da OS para Boletim de Medi��o", "exibirAtualizarInformacoesOSBoletimMedicaoActionAction.do?menu=sim"); } return retorno; } /** * [UC0457] Encerrar Ordem de Servi�o * [SB0007]- Gerar Informa��es para Boletim de Medi��o. * * @author Vivianne Sousa * @created 28/01/2011 */ private Map validarInformacoesBoletimMedicao( Integer idOrdemServico,AtualizarInformacoesOSBoletimMedicaoActionForm form) { OrdemServicoBoletim ordemServicoBoletim = null; Boolean exibirMsgConfirmacao = false; if(form.getExibeIndicadorExistePavimento().equals("1") || form.getExibeQtdeReposicaoAsfalto().equals("1") || form.getExibeQtdeReposicaoCalcada().equals("1") || form.getExibeQtdeReposicaoParalelo().equals("1")){ ordemServicoBoletim = new OrdemServicoBoletim(); ordemServicoBoletim.setId(idOrdemServico); OrdemServico os = new OrdemServico(); os.setId(idOrdemServico); ordemServicoBoletim.setOrdemServico(os); if(form.getExibeIndicadorExistePavimento().equals("1")){ if(form.getIndicadorExistePavimento() == null){ throw new ActionServletException("atencao.campo_selecionado.obrigatorio", null,"Existe Pavimento"); }else{ ordemServicoBoletim.setIndicadorPavimento( new Short(form.getIndicadorExistePavimento())); } } if(form.getExibeQtdeReposicaoAsfalto().equals("1")){ if(form.getQtdeReposicaoAsfalto() == null || form.getQtdeReposicaoAsfalto().equals("")){ form.setQtdeReposicaoAsfalto("0"); ordemServicoBoletim.setNumeroReposicaoAsfalto(new BigDecimal(0)); exibirMsgConfirmacao = true; }else if(form.getQtdeReposicaoAsfalto().equals("0") || form.getQtdeReposicaoAsfalto().equals("00") || form.getQtdeReposicaoAsfalto().equals("0,00")){ ordemServicoBoletim.setNumeroReposicaoAsfalto(new BigDecimal(0)); exibirMsgConfirmacao = true; }else{ ordemServicoBoletim.setNumeroReposicaoAsfalto(Util. formatarMoedaRealparaBigDecimal(form.getQtdeReposicaoAsfalto())); } }else{ ordemServicoBoletim.setNumeroReposicaoAsfalto(new BigDecimal(0)); } if(form.getExibeQtdeReposicaoParalelo().equals("1")){ if(form.getQtdeReposicaoParalelo() == null || form.getQtdeReposicaoParalelo().equals("") ){ form.setQtdeReposicaoParalelo("0"); ordemServicoBoletim.setNumeroReposicaoParalelo(new BigDecimal(0)); exibirMsgConfirmacao = true; }else if(form.getQtdeReposicaoParalelo().equals("0") || form.getQtdeReposicaoParalelo().equals("00")|| form.getQtdeReposicaoParalelo().equals("0,00")){ ordemServicoBoletim.setNumeroReposicaoParalelo(new BigDecimal(0)); exibirMsgConfirmacao = true; }else{ ordemServicoBoletim.setNumeroReposicaoParalelo(Util. formatarMoedaRealparaBigDecimal(form.getQtdeReposicaoParalelo())); } }else{ ordemServicoBoletim.setNumeroReposicaoParalelo(new BigDecimal(0)); } if(form.getExibeQtdeReposicaoCalcada().equals("1")){ if(form.getQtdeReposicaoCalcada() == null || form.getQtdeReposicaoCalcada().equals("")){ form.setQtdeReposicaoCalcada("0"); ordemServicoBoletim.setNumeroReposicaoCalcada(new BigDecimal(0)); exibirMsgConfirmacao = true; }else if(form.getQtdeReposicaoCalcada().equals("0")|| form.getQtdeReposicaoCalcada().equals("00")|| form.getQtdeReposicaoCalcada().equals("0,00")){ ordemServicoBoletim.setNumeroReposicaoCalcada(new BigDecimal(0)); exibirMsgConfirmacao = true; }else{ ordemServicoBoletim.setNumeroReposicaoCalcada(Util. formatarMoedaRealparaBigDecimal(form.getQtdeReposicaoCalcada())); } }else{ ordemServicoBoletim.setNumeroReposicaoCalcada(new BigDecimal(0)); } ordemServicoBoletim.setUltimaAlteracao(new Date()); } Map retorno = new HashMap(); retorno.put("ordemServicoBoletim",ordemServicoBoletim); retorno.put("exibirMsgConfirmacao",exibirMsgConfirmacao); return retorno; } /** * Pesquisa Ordem Servi�o */ private OrdemServico pesquisarOrdemServico(String idOrdemServico, AtualizarInformacoesOSBoletimMedicaoActionForm form, HttpServletRequest httpServletRequest) { OrdemServico ordemServico = Fachada.getInstancia(). recuperaOSEDadosImovel(new Integer(idOrdemServico)); //[FS0001] - Validar 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)){ 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){ 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); } 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; } /** * [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); } }