@Override
 public String getDescricaoParaRegistroTransacao() {
   Cliente cliente = getClienteUsuario();
   if (cliente != null) {
     return cliente.getDescricaoParaRegistroTransacao();
   }
   if (getImovelSubcategoria() != null) {
     return getImovelSubcategoria().getDescricaoParaRegistroTransacao();
   }
   return "";
 }
  /**
   * Pesquisa Cliente
   *
   * @author Leonardo Regis
   * @date 23/09/2006
   * @param form
   * @param os
   */
  private void pesquisarCliente(EfetuarCorteLigacaoAguaActionForm form, OrdemServico ordemServico) {
    // Filtro para carregar o Cliente
    FiltroClienteImovel filtroClienteImovel = new FiltroClienteImovel();

    // Comentado por Raphael Rossiter em 28/02/2007
    // filtroClienteImovel.adicionarParametro(new ParametroSimples(FiltroClienteImovel.IMOVEL_ID,
    // ordemServico.getRegistroAtendimento().getImovel().getId()));
    filtroClienteImovel.adicionarParametro(
        new ParametroSimples(FiltroClienteImovel.IMOVEL_ID, ordemServico.getImovel().getId()));

    filtroClienteImovel.adicionarParametro(
        new ParametroSimples(FiltroClienteImovel.CLIENTE_RELACAO_TIPO, ClienteRelacaoTipo.USUARIO));
    filtroClienteImovel.adicionarParametro(new ParametroNulo(FiltroClienteImovel.DATA_FIM_RELACAO));
    filtroClienteImovel.adicionarCaminhoParaCarregamentoEntidade("cliente");

    Collection colecaoClienteImovel =
        this.getFachada().pesquisar(filtroClienteImovel, ClienteImovel.class.getName());
    if (colecaoClienteImovel != null && !colecaoClienteImovel.isEmpty()) {

      ClienteImovel clienteImovel = (ClienteImovel) colecaoClienteImovel.iterator().next();
      Cliente cliente = clienteImovel.getCliente();

      String documento = "";
      if (cliente.getCpf() != null && !cliente.getCpf().equals("")) {
        documento = cliente.getCpfFormatado();
      } else {
        documento = cliente.getCnpjFormatado();
      }
      // Cliente Nome/CPF-CNPJ
      form.setClienteUsuario(cliente.getNome());
      form.setCpfCnpjCliente(documento);
    } else {
      throw new ActionServletException("atencao.naocadastrado", null, "Cliente");
    }
  }
  /**
   * Pesquisa Cliente
   *
   * @author Rafael Pinto
   * @date 15/08/2006
   */
  private void pesquisarCliente(AtualizarGerenciaRegionalActionForm form) {

    FiltroCliente filtroCliente = new FiltroCliente();

    filtroCliente.adicionarParametro(
        new ParametroSimples(FiltroCliente.ID, new Integer(form.getIdCliente())));

    // Pesquisa de acordo com os parâmetros informados no filtro
    Collection colecaoCliente = this.getFachada().pesquisar(filtroCliente, Cliente.class.getName());

    // Verifica se a pesquisa retornou algum objeto para a coleção
    if (colecaoCliente != null && !colecaoCliente.isEmpty()) {

      // Obtém o objeto da coleção pesquisada
      Cliente cliente = (Cliente) Util.retonarObjetoDeColecao(colecaoCliente);

      form.setIdCliente(cliente.getId().toString());
      form.setNomeCliente(cliente.getNome());

    } else {
      form.setIdCliente("");
      form.setNomeCliente("Cliente inexistente");
    }
  }
  public ActionForward execute(
      ActionMapping actionMapping,
      ActionForm actionForm,
      HttpServletRequest httpServletRequest,
      HttpServletResponse httpServletResponse) {

    ActionForward retorno = actionMapping.findForward("telaSucesso");

    AtualizarComandoNegativacaoPorCriterioActionForm form =
        (AtualizarComandoNegativacaoPorCriterioActionForm) actionForm;

    HttpSession sessao = httpServletRequest.getSession(false);

    Fachada fachada = Fachada.getInstancia();

    InserirComandoNegativacaoPorCriterioHelper helper =
        new InserirComandoNegativacaoPorCriterioHelper();

    /*
     * Validação Aba 2
     */
    validarDadosDebito(form, fachada);

    /*
     * Validação Aba 3
     */
    validarDadosImovel(form, fachada);

    /*
     * Validação Aba 4
     */
    validarDadosLocalizacao(form, fachada);

    // [SB0004] - Incluir Comando Negativação por Critério
    // Dados Negativação Comando
    NegativacaoComando negativacaoComando = new NegativacaoComando();
    negativacaoComando.setId(Integer.parseInt(form.getIdNegativacaoComando()));
    negativacaoComando.setUltimaAlteracao(form.getUltimaAlteracaoNegComando());
    negativacaoComando.setIndicadorSimulacao(new Short(form.getSimular()));
    negativacaoComando.setIndicadorComandoCriterio(new Short("1"));
    negativacaoComando.setDataPrevista(Util.converteStringParaDate(form.getDataPrevista()));
    negativacaoComando.setDataHoraComando(new Date());
    Usuario usuario = new Usuario();
    usuario.setId(new Integer(form.getUsuario()));
    negativacaoComando.setUsuario(usuario);
    Negativador negativador = new Negativador();
    negativador.setId(new Integer(form.getNegativadorId()));
    negativacaoComando.setNegativador(negativador);
    if (form.getIdComandoSimulado() != null && !form.getIdComandoSimulado().equals("")) {
      NegativacaoComando negComandoSimulacao = new NegativacaoComando();
      negComandoSimulacao.setId(new Integer(form.getIdComandoSimulado()));
      negativacaoComando.setComandoSimulacao(negComandoSimulacao);
    }

    if (form.getIndicadorBaixaRenda() != null && !form.getIndicadorBaixaRenda().equals("")) {
      negativacaoComando.setIndicadorBaixaRenda(
          new Integer(form.getIndicadorBaixaRenda()).shortValue());
    } else {
      negativacaoComando.setIndicadorBaixaRenda(ConstantesSistema.INDICADOR_USO_DESATIVO);
    }

    if (form.getIndicadorContaNomeCliente() != null
        && !form.getIndicadorContaNomeCliente().equals("")) {
      negativacaoComando.setIndicadorContaNomeCliente(
          new Short(form.getIndicadorContaNomeCliente()));
    } else {
      negativacaoComando.setIndicadorContaNomeCliente(ConstantesSistema.INDICADOR_USO_DESATIVO);
    }

    helper.setNegativacaoComando(negativacaoComando);

    // Dados Negativacao Critério
    NegativacaoCriterio negativacaoCriterio = new NegativacaoCriterio();
    negativacaoCriterio.setId(Integer.parseInt(form.getIdNegativacaoCriterio()));
    negativacaoCriterio.setNegativacaoComando(negativacaoComando);
    negativacaoCriterio.setDescricaoTitulo(form.getTitulo());
    negativacaoCriterio.setDescricaoSolicitacao(form.getSolicitacao());
    if (form.getIdLocalidadeInicial() != null && !form.getIdLocalidadeInicial().equals("")) {
      Localidade localidade = new Localidade();
      localidade.setId(new Integer(form.getIdLocalidadeInicial()));
      negativacaoCriterio.setLocalidadeInicial(localidade);
    }
    if (form.getIdLocalidadeFinal() != null && !form.getIdLocalidadeFinal().equals("")) {
      Localidade localidade = new Localidade();
      localidade.setId(new Integer(form.getIdLocalidadeFinal()));
      negativacaoCriterio.setLocalidadeFinal(localidade);
    }
    if (form.getCodigoSetorComercialInicial() != null
        && !form.getCodigoSetorComercialInicial().equals("")) {
      negativacaoCriterio.setCodigoSetorComercialInicial(
          new Integer(form.getCodigoSetorComercialInicial()));
    }
    if (form.getCodigoSetorComercialFinal() != null
        && !form.getCodigoSetorComercialFinal().equals("")) {
      negativacaoCriterio.setCodigoSetorComercialFinal(
          new Integer(form.getCodigoSetorComercialFinal()));
    }
    if (form.getReferenciaInicial() != null && !form.getReferenciaInicial().equals("")) {
      negativacaoCriterio.setAnoMesReferenciaContaInicial(
          Util.formatarMesAnoComBarraParaAnoMes(form.getReferenciaInicial()));
    } else {
      Date dataReferenciaInicial = null;
      if (form.getReferenciaFinal() != null && !form.getReferenciaFinal().equals("")) {
        dataReferenciaInicial =
            Util.subtrairNumeroAnosDeUmaData(
                Util.converteStringParaDate("01/" + form.getReferenciaFinal()), -5);
      } else {
        dataReferenciaInicial = Util.subtrairNumeroAnosDeUmaData(new Date(), -5);
      }
      negativacaoCriterio.setAnoMesReferenciaContaInicial(
          Util.formataAnoMes(dataReferenciaInicial));
    }
    if (form.getReferenciaFinal() != null && !form.getReferenciaFinal().equals("")) {
      negativacaoCriterio.setAnoMesReferenciaContaFinal(
          Util.formatarMesAnoComBarraParaAnoMes(form.getReferenciaFinal()));
    } else {
      negativacaoCriterio.setAnoMesReferenciaContaFinal(Util.formataAnoMes(new Date()));
    }
    if (form.getDataVencimentoInicial() != null && !form.getDataVencimentoInicial().equals("")) {
      negativacaoCriterio.setDataVencimentoDebitoInicial(
          Util.converteStringParaDate(form.getDataVencimentoInicial()));
    } else {
      Date dataVencimentoDebitoInicial = null;
      if (form.getDataVencimentoFinal() != null && !form.getDataVencimentoFinal().equals("")) {
        dataVencimentoDebitoInicial =
            Util.subtrairNumeroAnosDeUmaData(
                Util.converteStringParaDate(form.getDataVencimentoFinal()), -5);
      } else {
        dataVencimentoDebitoInicial = Util.subtrairNumeroAnosDeUmaData(new Date(), -5);
      }
      negativacaoCriterio.setDataVencimentoDebitoInicial(dataVencimentoDebitoInicial);
    }
    if (form.getDataVencimentoFinal() != null && !form.getDataVencimentoFinal().equals("")) {
      negativacaoCriterio.setDataVencimentoDebitoFinal(
          Util.converteStringParaDate(form.getDataVencimentoFinal()));
    } else {
      negativacaoCriterio.setDataVencimentoDebitoFinal(new Date());
    }
    if (form.getQtdMaximaInclusao() != null && !form.getQtdMaximaInclusao().equals("")) {
      negativacaoCriterio.setQuantidadeMaximaInclusoes(new Integer(form.getQtdMaximaInclusao()));
    }
    if (form.getImovSitEspecialCobranca() != null
        && !form.getImovSitEspecialCobranca().equals("")) {
      negativacaoCriterio.setIndicadorNegativacaoImovelParalisacao(
          new Short(form.getImovSitEspecialCobranca()));
    } else {
      negativacaoCriterio.setIndicadorNegativacaoImovelParalisacao(
          ConstantesSistema.INDICADOR_USO_ATIVO);
    }
    if (form.getImovSitCobranca() != null && !form.getImovSitCobranca().equals("")) {
      negativacaoCriterio.setIndicadorNegativacaoImovelSituacaoCobranca(
          new Short(form.getImovSitCobranca()));
    } else {
      negativacaoCriterio.setIndicadorNegativacaoImovelSituacaoCobranca(
          ConstantesSistema.INDICADOR_USO_ATIVO);
    }
    if (form.getContasRevisao() != null && !form.getContasRevisao().equals("")) {
      negativacaoCriterio.setIndicadorNegativacaoContaRevisao(new Short(form.getContasRevisao()));
    } else {
      negativacaoCriterio.setIndicadorNegativacaoContaRevisao(
          ConstantesSistema.INDICADOR_USO_DESATIVO);
    }
    if (form.getGuiasPagamento() != null && !form.getGuiasPagamento().equals("")) {
      negativacaoCriterio.setIndicadorNegativacaoGuiaPagamento(new Short(form.getGuiasPagamento()));
    } else {
      negativacaoCriterio.setIndicadorNegativacaoGuiaPagamento(
          ConstantesSistema.INDICADOR_USO_DESATIVO);
    }
    if (form.getParcelaAtraso() != null && !form.getParcelaAtraso().equals("")) {
      negativacaoCriterio.setIndicadorParcelamentoAtraso(new Short(form.getParcelaAtraso()));
    } else {
      negativacaoCriterio.setIndicadorParcelamentoAtraso(ConstantesSistema.INDICADOR_USO_DESATIVO);
    }
    if (form.getDiasAtrasoParcelamento() != null && !form.getDiasAtrasoParcelamento().equals("")) {
      negativacaoCriterio.setNumeroDiasParcelamentoAtraso(
          new Integer(form.getDiasAtrasoParcelamento()));
    }
    if (form.getCartaParcelamentoAtraso() != null
        && !form.getCartaParcelamentoAtraso().equals("")) {
      negativacaoCriterio.setIndicadorNegativacaoRecebimentoCartaParcelamento(
          new Short(form.getCartaParcelamentoAtraso()));
    } else {
      negativacaoCriterio.setIndicadorNegativacaoRecebimentoCartaParcelamento(
          ConstantesSistema.INDICADOR_USO_DESATIVO);
    }
    if (form.getDiasAtrasoRecebimentoCarta() != null
        && !form.getDiasAtrasoRecebimentoCarta().equals("")) {
      negativacaoCriterio.setNumeroDiasAtrasoRecebimentoCartaParcelamento(
          new Short(form.getDiasAtrasoRecebimentoCarta()));
    }
    if (form.getIdCliente() != null && !form.getIdCliente().equals("")) {
      Cliente cliente = new Cliente();
      cliente.setId(new Integer(form.getIdCliente()));
      negativacaoCriterio.setCliente(cliente);
      if (form.getTipoRelacao() != null
          && !form.getTipoRelacao().equals("" + ConstantesSistema.NUMERO_NAO_INFORMADO)) {
        ClienteRelacaoTipo relacaoTipo = new ClienteRelacaoTipo();
        relacaoTipo.setId(new Integer(form.getTipoRelacao()));
        negativacaoCriterio.setClienteRelacaoTipo(relacaoTipo);
      }
    }
    negativacaoCriterio.setIndicadorUso(ConstantesSistema.INDICADOR_USO_ATIVO);
    if (form.getValorDebitoInicial() != null && !form.getValorDebitoInicial().equals("")) {
      negativacaoCriterio.setValorMinimoDebito(
          Util.formatarMoedaRealparaBigDecimal(form.getValorDebitoInicial()));
    } else {
      negativacaoCriterio.setValorMinimoDebito(Util.formatarMoedaRealparaBigDecimal("0"));
    }
    if (form.getValorDebitoFinal() != null && !form.getValorDebitoFinal().equals("")) {
      negativacaoCriterio.setValorMaximoDebito(
          Util.formatarMoedaRealparaBigDecimal(form.getValorDebitoFinal()));
    } else {
      negativacaoCriterio.setValorMaximoDebito(
          Util.formatarMoedaRealparaBigDecimal("99999999999,99"));
    }
    if (form.getNumeroContasInicial() != null && !form.getNumeroContasInicial().equals("")) {
      negativacaoCriterio.setQuantidadeMinimaContas(new Integer(form.getNumeroContasInicial()));
    } else {
      negativacaoCriterio.setQuantidadeMinimaContas(0);
    }
    if (form.getNumeroContasFinal() != null && !form.getNumeroContasFinal().equals("")) {
      negativacaoCriterio.setQuantidadeMaximaContas(new Integer(form.getNumeroContasFinal()));
    } else {
      negativacaoCriterio.setQuantidadeMaximaContas(999999999);
    }
    helper.setNegativacaoCriterio(negativacaoCriterio);

    // Situação Especial Cobranca
    if (negativacaoCriterio.getIndicadorNegativacaoImovelParalisacao()
            == ConstantesSistema.INDICADOR_USO_ATIVO.shortValue()
        && form.getCobrancaSituacaoTipo() != null
        && form.getCobrancaSituacaoTipo().length > 0) {

      helper.setIdsCobrancaSituacaoTipo(form.getCobrancaSituacaoTipo());
    }

    // Situação Cobranca
    if (negativacaoCriterio.getIndicadorNegativacaoImovelSituacaoCobranca()
            == ConstantesSistema.INDICADOR_USO_ATIVO.shortValue()
        && form.getCobrancaSituacao() != null
        && form.getCobrancaSituacao().length > 0) {

      helper.setIdsCobrancaSituacao(form.getCobrancaSituacao());
    }

    // Negativacao Criterio CPF Tipo
    helper.setColecaoNegativacaoCriterioCpfTipo(
        (Collection) sessao.getAttribute("colecaoNegativacaoCriterioCpfTipo"));

    // Situação da Ligação de Água
    if (form.getLigacaoAguaSituacao() != null && form.getLigacaoAguaSituacao().length > 0) {
      helper.setIdsLigacaoAguaSituacao(form.getLigacaoAguaSituacao());
    }
    // Situação da Ligação de Esgoto
    if (form.getLigacaoEsgotoSituacao() != null && form.getLigacaoEsgotoSituacao().length > 0) {
      helper.setIdsLigacaoEsgotoSituacao(form.getLigacaoEsgotoSituacao());
    }
    // SubCategoria
    if (form.getSubCategoria() != null && form.getSubCategoria().length > 0) {
      helper.setIdsSubcategoria(form.getSubCategoria());
    }
    // Perfil de Imóvel
    if (form.getPerfilImovel() != null && form.getPerfilImovel().length > 0) {
      helper.setIdsPerfilImovel(form.getPerfilImovel());
    }
    // Tipo de Cliente
    if (form.getTipoCliente() != null && form.getTipoCliente().length > 0) {
      helper.setIdsTipoCliente(form.getTipoCliente());
    }

    // GrupoCobranca
    if (form.getCobrancaGrupo() != null && form.getCobrancaGrupo().length > 0) {
      helper.setIdsCobrancaGrupo(form.getCobrancaGrupo());
    }
    // Gerência Regional
    if (form.getGerenciaRegional() != null && form.getGerenciaRegional().length > 0) {
      helper.setIdsGerenciaRegional(form.getGerenciaRegional());
    }
    // Unidade Negócio
    if (form.getUnidadeNegocio() != null && form.getUnidadeNegocio().length > 0) {
      helper.setIdsUnidadeNegocio(form.getUnidadeNegocio());
    }
    // Elo
    if (form.getEloPolo() != null && form.getEloPolo().length > 0) {
      helper.setIdsEloPolo(form.getEloPolo());
    }

    /*
     * if (form.getIndicadorBaixaRenda() != null &&
     * !form.getIndicadorBaixaRenda().equals("")) {
     * helper.setIndicadorBaixaRenda(form.getIndicadorBaixaRenda()); } else
     * {
     * helper.setIndicadorBaixaRenda(ConstantesSistema.INDICADOR_USO_DESATIVO
     * .toString()); }
     */

    // [SB0002]- Atualizar Comando de Negativação por Critério
    fachada.atualizarComandoNegativacao(helper);

    // Monta a página de sucesso
    montarPaginaSucesso(
        httpServletRequest,
        "Comando Negativação atualizado com sucesso.",
        "Manter outro Comando Negativação",
        "exibirFiltrarComandoNegativacaoPorCriterioAction.do?menu=sim");

    return retorno;
  }
  /**
   * @param actionMapping
   * @param actionForm
   * @param httpServletRequest
   * @param httpServletResponse
   * @return
   */
  public ActionForward execute(
      ActionMapping actionMapping,
      ActionForm actionForm,
      HttpServletRequest httpServletRequest,
      HttpServletResponse httpServletResponse) {

    // Seta o mapeamento de retorno
    ActionForward retorno = actionMapping.findForward("exibirManterGuiaDevolucaoCliente");

    HttpSession sessao = httpServletRequest.getSession(false);

    Fachada fachada = Fachada.getInstancia();

    ManterGuiaDevolucaoActionForm manterGuiaDevolucaoActionForm =
        (ManterGuiaDevolucaoActionForm) actionForm;

    // Limpa o atributo se o usuário voltou para o manter
    if (sessao.getAttribute("guiaDevolucaoAtualizar") != null) {
      sessao.removeAttribute("guiaDevolucaoAtualizar");
    }
    FiltroGuiaDevolucao filtroGuiaDevolucao = null;

    if (sessao.getAttribute("filtroGuiaDevolucaoCliente") != null) {
      filtroGuiaDevolucao = (FiltroGuiaDevolucao) sessao.getAttribute("filtroGuiaDevolucaoCliente");
      sessao.setAttribute("filtroGuiaDevolucaoCliente", filtroGuiaDevolucao);
      Cliente cliente = (Cliente) sessao.getAttribute("cliente");
      sessao.setAttribute("cliente", cliente);

      manterGuiaDevolucaoActionForm.setIdCliente(cliente.getId().toString());
      manterGuiaDevolucaoActionForm.setNomeCliente(cliente.getNome());

      // Verifica o tipo do cliente para setar o cpf ou cnpj e profissão
      // ou ramo atividade
      if (cliente.getClienteTipo().getId().equals(ClienteTipo.INDICADOR_PESSOA_FISICA)) {
        manterGuiaDevolucaoActionForm.setCpfCnpj(cliente.getCpfFormatado());
        if (cliente.getProfissao() != null) {
          manterGuiaDevolucaoActionForm.setProfissao(cliente.getProfissao().getDescricao());
        }
      } else {
        manterGuiaDevolucaoActionForm.setCpfCnpj(cliente.getCnpjFormatado());
        if (cliente.getRamoAtividade() != null) {
          manterGuiaDevolucaoActionForm.setRamoAtividade(cliente.getRamoAtividade().getDescricao());
        }
      }

    } else {
      filtroGuiaDevolucao = (FiltroGuiaDevolucao) sessao.getAttribute("filtroGuiaDevolucaoImovel");
      sessao.setAttribute("filtroGuiaDevolucaoImovel", filtroGuiaDevolucao);
      Imovel imovel = (Imovel) sessao.getAttribute("imovel");
      sessao.setAttribute("imovel", imovel);

      manterGuiaDevolucaoActionForm.setIdImovel(imovel.getId().toString());
      manterGuiaDevolucaoActionForm.setInscricao(imovel.getInscricaoFormatada());

      FiltroClienteImovel filtroClienteImovel = new FiltroClienteImovel();
      filtroClienteImovel.adicionarParametro(
          new ParametroSimples(FiltroClienteImovel.IMOVEL_ID, imovel.getId()));
      filtroClienteImovel.adicionarParametro(
          new ParametroSimples(
              FiltroClienteImovel.CLIENTE_RELACAO_TIPO, ClienteRelacaoTipo.USUARIO));
      filtroClienteImovel.adicionarParametro(
          new ParametroNulo(FiltroClienteImovel.DATA_FIM_RELACAO));
      filtroClienteImovel.adicionarCaminhoParaCarregamentoEntidade("cliente");

      Collection colecaoClienteImovel =
          fachada.pesquisar(filtroClienteImovel, ClienteImovel.class.getName());

      if (colecaoClienteImovel != null && !colecaoClienteImovel.isEmpty()) {
        ClienteImovel clienteImovel = (ClienteImovel) colecaoClienteImovel.iterator().next();
        manterGuiaDevolucaoActionForm.setNomeCliente(clienteImovel.getCliente().getNome());
      }

      if (imovel.getLigacaoAguaSituacao() != null) {
        manterGuiaDevolucaoActionForm.setSituacaoLigacaoAgua(
            imovel.getLigacaoAguaSituacao().getDescricao());
      }

      if (imovel.getLigacaoEsgotoSituacao() != null) {
        manterGuiaDevolucaoActionForm.setSituacaoLigacaoEsgoto(
            imovel.getLigacaoEsgotoSituacao().getDescricao());
      }

      retorno = actionMapping.findForward("exibirManterGuiaDevolucaoImovel");
    }

    // 1º Passo - Pegar o total de registros através de um count da consulta
    // que aparecerá na tela
    Integer totalRegistros = fachada.pesquisarGuiaDevolucaoCount(filtroGuiaDevolucao);

    // 2º Passo - Chamar a função de Paginação passando o total de registros
    retorno = this.controlarPaginacao(httpServletRequest, retorno, totalRegistros);

    // 3º Passo - Obter a coleção da consulta que aparecerá na tela passando
    // o numero de paginas
    // da pesquisa que está no request
    // Faz os carregamentos necessários
    filtroGuiaDevolucao.adicionarCaminhoParaCarregamentoEntidade(
        "registroAtendimento.imovel.localidade");
    filtroGuiaDevolucao.adicionarCaminhoParaCarregamentoEntidade(
        "registroAtendimento.imovel.setorComercial");
    filtroGuiaDevolucao.adicionarCaminhoParaCarregamentoEntidade(
        "registroAtendimento.imovel.quadra");
    //		filtroGuiaDevolucao
    //				.adicionarCaminhoParaCarregamentoEntidade("registroAtendimento.cliente");
    filtroGuiaDevolucao.adicionarCaminhoParaCarregamentoEntidade(
        "ordemServico.servicoTipo.debitoTipo");
    filtroGuiaDevolucao.adicionarCaminhoParaCarregamentoEntidade("localidade");
    filtroGuiaDevolucao.adicionarCaminhoParaCarregamentoEntidade("debitoTipo");
    filtroGuiaDevolucao.adicionarCaminhoParaCarregamentoEntidade("imovel.localidade");
    filtroGuiaDevolucao.adicionarCaminhoParaCarregamentoEntidade("imovel.setorComercial");
    filtroGuiaDevolucao.adicionarCaminhoParaCarregamentoEntidade("imovel.quadra");
    filtroGuiaDevolucao.adicionarCaminhoParaCarregamentoEntidade("cliente");
    filtroGuiaDevolucao.adicionarCaminhoParaCarregamentoEntidade("conta");
    filtroGuiaDevolucao.adicionarCaminhoParaCarregamentoEntidade("guiaPagamento.debitoTipo");
    filtroGuiaDevolucao.adicionarCaminhoParaCarregamentoEntidade(
        "debitoACobrarGeral.debitoACobrar.debitoTipo");
    filtroGuiaDevolucao.adicionarCaminhoParaCarregamentoEntidade("creditoTipo");
    filtroGuiaDevolucao.adicionarCaminhoParaCarregamentoEntidade("documentoTipo");
    filtroGuiaDevolucao.adicionarCaminhoParaCarregamentoEntidade("debitoCreditoSituacaoAtual");
    filtroGuiaDevolucao.adicionarCaminhoParaCarregamentoEntidade("debitoCreditoSituacaoAnterior");
    filtroGuiaDevolucao.adicionarCaminhoParaCarregamentoEntidade("lancamentoItemContabil");

    filtroGuiaDevolucao.setCampoOrderBy(
        FiltroGuiaDevolucao.CREDITO_TIPO_ID, FiltroGuiaDevolucao.DOCUMENTO_TIPO_ID);

    Collection colecaoGuiaDevolucao =
        fachada.pesquisarGuiaDevolucao(
            filtroGuiaDevolucao,
            ((Integer) httpServletRequest.getAttribute("numeroPaginasPesquisa")));

    filtroGuiaDevolucao.limparCamposOrderBy();

    if (colecaoGuiaDevolucao != null && !colecaoGuiaDevolucao.isEmpty()) {
      //			if (colecaoGuiaDevolucao.size() == 1
      //					&& (httpServletRequest.getParameter("page.offset") == null || httpServletRequest
      //							.getParameter("page.offset").equals("1"))) {
      //				if (httpServletRequest.getParameter("atualizar") != null) {
      //					retorno = actionMapping
      //							.findForward("exibirAtualizarGuiaDevolucao");
      //					GuiaDevolucao guiaDevolucao = (GuiaDevolucao) colecaoGuiaDevolucao
      //							.iterator().next();
      //					sessao.setAttribute("guiaDevolucao", guiaDevolucao);
      //				} else {
      //					httpServletRequest.setAttribute("colecaoGuiaDevolucao",
      //							colecaoGuiaDevolucao);
      //				}
      //			} else {
      httpServletRequest.setAttribute("colecaoGuiaDevolucao", colecaoGuiaDevolucao);
      //			}
    } else {
      // Nenhuma resolução de diretoria cadastrada
      throw new ActionServletException("atencao.pesquisa.nenhumresultado");
    }

    return retorno;
  }
  /**
   * @param actionMapping
   * @param actionForm
   * @param httpServletRequest
   * @param httpServletResponse
   * @return
   */
  public ActionForward execute(
      ActionMapping actionMapping,
      ActionForm actionForm,
      HttpServletRequest httpServletRequest,
      HttpServletResponse httpServletResponse) {

    // Seta o mapeamento de retorno
    ActionForward retorno = actionMapping.findForward("telaSucesso");

    Fachada fachada = Fachada.getInstancia();

    // Obtém a sessão
    HttpSession sessao = httpServletRequest.getSession(false);

    // Usuario logado no sistema
    Usuario usuarioLogado = (Usuario) sessao.getAttribute(Usuario.USUARIO_LOGADO);

    InserirLeituristaActionForm inserirLeituristaActionForm =
        (InserirLeituristaActionForm) actionForm;

    // Validar se IMEI possui 15 caracteres
    if (inserirLeituristaActionForm.getNumeroImei() != null
        && inserirLeituristaActionForm.getNumeroImei().length() != 15) {
      throw new ActionServletException("atencao.imei.invalido");
    }

    // Validar se IMEI já está cadastrado
    if (inserirLeituristaActionForm.getNumeroImei() != null
        && !inserirLeituristaActionForm.getNumeroImei().trim().equals("")) {
      Long numeroImei = new Long(inserirLeituristaActionForm.getNumeroImei());

      FiltroLeiturista filtroLeiturista = new FiltroLeiturista();
      filtroLeiturista.adicionarCaminhoParaCarregamentoEntidade(FiltroLeiturista.CLIENTE);
      filtroLeiturista.adicionarParametro(new ParametroSimples(FiltroLeiturista.IMEI, numeroImei));

      Collection pesquisa = fachada.pesquisar(filtroLeiturista, Leiturista.class.getName());

      if (pesquisa != null && pesquisa.size() > 0) {
        Leiturista leiturista = (Leiturista) Util.retonarObjetoDeColecao(pesquisa);
        throw new ActionServletException(
            "atencao.imei.ja.cadastrado", null, leiturista.getCliente().getNome());
      }
    }

    // Cria um Leiturista setando os valores informados pelo
    // usuário na pagina para ser inserido no banco
    Leiturista leiturista = new Leiturista();

    // Validamos o Funcionario
    if (inserirLeituristaActionForm.getIdFuncionario() != null
        && !inserirLeituristaActionForm.getIdFuncionario().trim().equals("")) {

      FiltroFuncionario filtroFuncionario = new FiltroFuncionario();

      filtroFuncionario.adicionarParametro(
          new ParametroSimples(
              FiltroFuncionario.ID, inserirLeituristaActionForm.getIdFuncionario()));

      Collection colFuncionario = fachada.pesquisar(filtroFuncionario, Funcionario.class.getName());

      if (colFuncionario == null || !colFuncionario.iterator().hasNext()) {
        // O funcionario não existe
        throw new ActionServletException("atencao.funcionario.inexistente", null, "Funcionario");
      }
    }

    // Validamos o cliente
    FiltroCliente filtroCliente = new FiltroCliente();

    filtroCliente.adicionarParametro(
        new ParametroSimples(FiltroCliente.ID, inserirLeituristaActionForm.getIdCliente()));

    Collection colCliente = fachada.pesquisar(filtroCliente, Cliente.class.getName());

    if (colCliente == null || !colCliente.iterator().hasNext()) {
      // O cliente não existe
      throw new ActionServletException("atencao.cliente.inexistente", null, "Cliente");
    }

    // Funcionario
    if (inserirLeituristaActionForm.getIdFuncionario() != null
        && !inserirLeituristaActionForm.getIdFuncionario().trim().equals("")) {

      Funcionario funcionario = new Funcionario();
      funcionario.setId(new Integer(inserirLeituristaActionForm.getIdFuncionario()));

      leiturista.setFuncionario(funcionario);
    }

    // Cliente
    Cliente cliente = new Cliente();
    cliente.setId(new Integer(inserirLeituristaActionForm.getIdCliente()));

    leiturista.setCliente(cliente);

    // Telefone
    leiturista.setNumeroFone(inserirLeituristaActionForm.getTelefone());

    // Numero do IMEI
    leiturista.setNumeroImei(new Long(inserirLeituristaActionForm.getNumeroImei()));

    // Código DDD do Municipio
    leiturista.setCodigoDDD(inserirLeituristaActionForm.getDdd());

    // Indicador de uso
    leiturista.setIndicadorUso(ConstantesSistema.INDICADOR_USO_ATIVO);

    // Empresa
    if (Util.validarNumeroMaiorQueZERO(inserirLeituristaActionForm.getEmpresaID())) {
      // Constrói o filtro para pesquisa da Empresa
      FiltroEmpresa filtroEmpresa = new FiltroEmpresa();
      filtroEmpresa.adicionarParametro(
          new ParametroSimples(FiltroEmpresa.ID, inserirLeituristaActionForm.getEmpresaID()));

      Collection colecaoEmpresa =
          (Collection) fachada.pesquisar(filtroEmpresa, Empresa.class.getName());

      // setando
      leiturista.setEmpresa((Empresa) colecaoEmpresa.iterator().next());
    }

    // Inserimos o usuário
    if (inserirLeituristaActionForm.getLoginUsuario() != null
        && !inserirLeituristaActionForm.getLoginUsuario().equals("")) {
      // Filtra Usuario
      FiltroUsuario filtroUsuario = new FiltroUsuario();
      filtroUsuario.adicionarParametro(
          new ComparacaoTexto(FiltroUsuario.LOGIN, inserirLeituristaActionForm.getLoginUsuario()));

      // Recupera Usuário
      Collection<Usuario> colecaoUsuario =
          fachada.pesquisar(filtroUsuario, Usuario.class.getName());
      if (colecaoUsuario != null && !colecaoUsuario.isEmpty()) {
        Usuario usuario = colecaoUsuario.iterator().next();

        leiturista.setUsuario(usuario);
      }
    }

    // Ultima alteração
    leiturista.setUltimaAlteracao(new Date());

    // Insere um Leiturista na base, mas fazendo, antes,
    // algumas verificações no ControladorMicromediçãoSEJB.
    fachada.inserirLeiturista(leiturista, usuarioLogado);

    // Exibe a página de sucesso
    montarPaginaSucesso(
        httpServletRequest,
        "Leiturista " + leiturista.getId() + " inserido com sucesso.",
        "Inserir outro Leiturista",
        "exibirInserirLeituristaAction.do?menu=sim");

    return retorno;
  }
  public ActionForward execute(
      ActionMapping actionMapping,
      ActionForm actionForm,
      HttpServletRequest httpServletRequest,
      HttpServletResponse httpServletResponse) {

    // Seta o mapeamento de retorno
    ActionForward retorno = null;

    httpServletRequest.setAttribute("telaSucessoRelatorio", true);

    HttpSession sessao = httpServletRequest.getSession(false);

    Usuario usuario = (Usuario) sessao.getAttribute("usuarioLogado");

    // Form
    GerarRelatorioReligacaoClientesInadiplentesForm form =
        (GerarRelatorioReligacaoClientesInadiplentesForm) actionForm;

    FiltrarRelatorioReligacaoClientesInadiplentesHelper helper =
        new FiltrarRelatorioReligacaoClientesInadiplentesHelper();

    String tipoRelatorio = httpServletRequest.getParameter("tipoRelatorio");

    Fachada fachada = Fachada.getInstancia();

    boolean peloMenosUmParametroInformado = false;

    // Gerência Regional
    String gerenciaRegional = " -- ";
    if (form.getGerenciaRegionalID() != null && !form.getGerenciaRegionalID().equals("-1")) {

      helper.setGerenciaRegional(new Integer(form.getGerenciaRegionalID()));

      FiltroGerenciaRegional filtroGerenciaRegional = new FiltroGerenciaRegional();
      filtroGerenciaRegional.adicionarParametro(
          new ParametroSimples(FiltroGerenciaRegional.ID, form.getGerenciaRegionalID()));

      filtroGerenciaRegional.adicionarParametro(
          new ParametroSimples(
              FiltroGerenciaRegional.INDICADOR_USO, ConstantesSistema.INDICADOR_USO_ATIVO));

      // Retorna gerenciaRegional
      colecaoPesquisa = fachada.pesquisar(filtroGerenciaRegional, GerenciaRegional.class.getName());

      if (colecaoPesquisa == null || colecaoPesquisa.isEmpty()) {

        throw new ActionServletException("atencao.gerenciaRegional_inexistente");
      }

      GerenciaRegional objetoGerenciaRegional =
          (GerenciaRegional) Util.retonarObjetoDeColecao(colecaoPesquisa);
      gerenciaRegional = objetoGerenciaRegional.getNome();

      peloMenosUmParametroInformado = true;
    }

    // Unidade de Negócio
    String unidadeNegocio = " -- ";
    if (form.getUnidadeNegocioID() != null && !form.getUnidadeNegocioID().equals("-1")) {

      helper.setUnidadeNegocio(new Integer(form.getUnidadeNegocioID()));

      FiltroUnidadeNegocio filtroUnidadeNegocio = new FiltroUnidadeNegocio();
      filtroUnidadeNegocio.adicionarParametro(
          new ParametroSimples(FiltroUnidadeNegocio.ID, form.getUnidadeNegocioID()));

      filtroUnidadeNegocio.adicionarParametro(
          new ParametroSimples(
              FiltroUnidadeNegocio.INDICADOR_USO, ConstantesSistema.INDICADOR_USO_ATIVO));

      // Retorna Unidade de Negócio
      colecaoPesquisa = fachada.pesquisar(filtroUnidadeNegocio, UnidadeNegocio.class.getName());

      if (colecaoPesquisa == null || colecaoPesquisa.isEmpty()) {

        throw new ActionServletException("atencao.unidade_negocio.inexistente");
      }

      UnidadeNegocio objetoUnidadeNegocio =
          (UnidadeNegocio) Util.retonarObjetoDeColecao(colecaoPesquisa);
      unidadeNegocio = objetoUnidadeNegocio.getNome();

      peloMenosUmParametroInformado = true;
    }

    // Localidade
    String localidade = " -- ";
    if (form.getLocalidadeID() != null && !form.getLocalidadeID().equals("")) {

      helper.setLocalidade(new Integer(form.getLocalidadeID()));
      peloMenosUmParametroInformado = true;

      if (form.getNomeLocalidade() == null || form.getNomeLocalidade().equals("")) {

        FiltroLocalidade filtroLocalidade = new FiltroLocalidade();
        filtroLocalidade.adicionarParametro(
            new ParametroSimples(FiltroLocalidade.ID, form.getLocalidadeID()));

        filtroLocalidade.adicionarParametro(
            new ParametroSimples(
                FiltroLocalidade.INDICADORUSO, ConstantesSistema.INDICADOR_USO_ATIVO));

        // Retorna Localidade
        colecaoPesquisa = fachada.pesquisar(filtroLocalidade, Localidade.class.getName());

        if (colecaoPesquisa == null || colecaoPesquisa.isEmpty()) {

          throw new ActionServletException("pesquisa.localidade.inexistente");
        }

        Localidade objetoLocalidade = (Localidade) Util.retonarObjetoDeColecao(colecaoPesquisa);
        localidade = objetoLocalidade.getDescricao();

      } else {

        localidade = form.getNomeLocalidade();
      }
    }

    // Setor Comercial
    String setorComercial = " -- ";
    if ((form.getSetorComercialID() != null && !form.getSetorComercialID().equals(""))
        || form.getSetorComercialCD() != null && !form.getSetorComercialCD().equals("")) {

      if (form.getSetorComercialID() != null && !form.getSetorComercialID().equals("")) {

        setorComercial = form.getNomeSetorComercial();
        helper.setSetorComercial(new Integer(form.getSetorComercialID()));
        peloMenosUmParametroInformado = true;
      } else {

        localidadeID = (String) form.getLocalidadeID();

        if (localidadeID == null || localidadeID.equals("")) {

          throw new ActionServletException("atencao.localidade_nao_informada");
        }

        setorComercialCD = (String) form.getSetorComercialCD();

        FiltroSetorComercial filtroSetorComercial = new FiltroSetorComercial();

        filtroSetorComercial.adicionarParametro(
            new ParametroSimples(FiltroSetorComercial.ID_LOCALIDADE, localidadeID));

        filtroSetorComercial.adicionarParametro(
            new ParametroSimples(FiltroSetorComercial.CODIGO_SETOR_COMERCIAL, setorComercialCD));

        // Retorna setorComercial
        colecaoPesquisa = fachada.pesquisar(filtroSetorComercial, SetorComercial.class.getName());

        if (colecaoPesquisa == null || colecaoPesquisa.isEmpty()) {

          throw new ActionServletException("atencao.processo.setorComercialNaoCadastrada");
        }

        SetorComercial objetoSetorComercial =
            (SetorComercial) Util.retonarObjetoDeColecao(colecaoPesquisa);

        setorComercial = objetoSetorComercial.getDescricao();
        helper.setSetorComercial(objetoSetorComercial.getId());
        peloMenosUmParametroInformado = true;
      }
    }

    // Cliente
    String cliente = " -- ";
    if (form.getClienteID() != null && !form.getClienteID().equals("")) {

      if (form.getNomeCliente() == null || form.getNomeCliente().equals("")) {

        FiltroCliente filtroCliente = new FiltroCliente();
        filtroCliente.adicionarParametro(
            new ParametroSimples(FiltroCliente.ID, form.getClienteID()));

        filtroCliente.adicionarParametro(
            new ParametroSimples(
                FiltroCliente.INDICADOR_USO, ConstantesSistema.INDICADOR_USO_ATIVO));

        // Retorna Cliente
        colecaoPesquisa = fachada.pesquisar(filtroCliente, Cliente.class.getName());

        if (colecaoPesquisa == null || colecaoPesquisa.isEmpty()) {

          throw new ActionServletException("atencao.cliente.inexistente");
        }

        Cliente objetoCliente = (Cliente) Util.retonarObjetoDeColecao(colecaoPesquisa);
        cliente = objetoCliente.getDescricao();

      } else {

        cliente = form.getNomeCliente();
      }

      helper.setCliente(new Integer(form.getClienteID()));
      peloMenosUmParametroInformado = true;
    }

    // Usuário
    String nomeUsuario = " -- ";
    if (form.getUsuarioID() != null && !form.getUsuarioID().equals("")) {

      if (form.getNomeUsuario() == null || form.getNomeUsuario().equals("")) {

        FiltroUsuario filtroUsuario = new FiltroUsuario();
        filtroUsuario.adicionarParametro(
            new ParametroSimples(FiltroUsuario.ID, form.getUsuarioID()));

        // Retorna Usuário
        colecaoPesquisa = fachada.pesquisar(filtroUsuario, Usuario.class.getName());

        if (colecaoPesquisa == null || colecaoPesquisa.isEmpty()) {

          throw new ActionServletException("atencao.pesquisa.usuario.inexistente");
        }

        Usuario objetoUsuario = (Usuario) Util.retonarObjetoDeColecao(colecaoPesquisa);
        nomeUsuario = objetoUsuario.getLogin();

      } else {

        nomeUsuario = form.getNomeUsuario();
      }

      helper.setUsuario(new Integer(form.getUsuarioID()));
      peloMenosUmParametroInformado = true;
    }

    // Período Encerramento
    String periodoEncerramento = "";
    if (form.getDataInicioEncerramento() != null && !form.getDataInicioEncerramento().equals("")) {

      if (form.getDataFimEncerramento() == null
          || form.getDataFimEncerramento().trim().equals("")) {

        form.setDataFimEncerramento(form.getDataInicioEncerramento());
      }

      if (!Util.validarDiaMesAno(form.getDataInicioEncerramento())) {

        periodoEncerramento += form.getDataInicioEncerramento() + " a ";
        helper.setDataInicioEncerramento(
            Util.formatarDataInicial(
                Util.converteStringParaDate(form.getDataInicioEncerramento())));

        if (helper.getDataInicioEncerramento().after(new Date())) {

          throw new ActionServletException("atencao.periodo_inicio_alteracao_invalida");
        }

        if (!Util.validarDiaMesAno(form.getDataFimEncerramento())) {

          periodoEncerramento += form.getDataFimEncerramento();
          helper.setDataFimEncerramento(
              Util.formatarDataFinal(Util.converteStringParaDate(form.getDataFimEncerramento())));

          if (helper.getDataFimEncerramento().after(new Date())) {

            throw new ActionServletException("atencao.periodo_final_alteracao_invalida");
          }

          if (Util.compararData(helper.getDataInicioEncerramento(), helper.getDataFimEncerramento())
              == 1) {

            throw new ActionServletException("atencao.data_inicio_maior_final");
          }

          // Lilita o intevalo a um mês.
          if ((helper.getDataFimEncerramento().getTime()
                  - helper.getDataInicioEncerramento().getTime())
              > 1000L * 60L * 60L * 24L * 31L) {

            throw new ActionServletException(
                "atencao.filtrar_intervalo_limite", null, "Período de Encerramento da S.O");
          }

          peloMenosUmParametroInformado = true;

        } else {
          throw new ActionServletException("atencao.periodo_final_alteracao_invalida");
        }
      } else {
        throw new ActionServletException("atencao.periodo_inicio_alteracao_invalida");
      }
    }

    // Período Recorrência
    String periodoRecorrencia = "";
    if (form.getDataInicioRecorrencia() != null && !form.getDataInicioRecorrencia().equals("")) {
      if (!Util.validarDiaMesAno(form.getDataInicioRecorrencia())) {

        periodoRecorrencia += form.getDataInicioRecorrencia() + " a ";
        helper.setDataInicioRecorrencia(
            Util.formatarDataInicial(Util.converteStringParaDate(form.getDataInicioRecorrencia())));

        if (helper.getDataInicioRecorrencia().after(new Date())) {

          throw new ActionServletException("atencao.periodo_inicio_alteracao_invalida");
        }

        if (!Util.validarDiaMesAno(form.getDataFimRecorrencia())) {

          periodoRecorrencia += form.getDataFimRecorrencia();
          helper.setDataFimRecorrencia(
              Util.formatarDataFinal(Util.converteStringParaDate(form.getDataFimRecorrencia())));

          if (helper.getDataFimRecorrencia().after(new Date())) {

            throw new ActionServletException("atencao.periodo_final_alteracao_invalida");
          }

          if (Util.compararData(helper.getDataInicioRecorrencia(), helper.getDataFimRecorrencia())
              == 1) {

            throw new ActionServletException("atencao.data_inicio_maior_final");
          }

          peloMenosUmParametroInformado = true;

        } else {
          throw new ActionServletException("atencao.periodo_final_alteracao_invalida");
        }
      } else {
        throw new ActionServletException("atencao.periodo_inicio_alteracao_invalida");
      }
    } else {

      Date dt = Util.adcionarOuSubtrairMesesAData(new Date(), -6, 0);

      helper.setDataInicioRecorrencia(dt);
      helper.setDataFimRecorrencia(new Date());
      periodoRecorrencia = Util.formatarData(dt) + " a " + Util.formatarData(new Date());
    }

    // Escolha Relatório
    if (form.getEscolhaRelatorio() != null && !form.getEscolhaRelatorio().equals("-1")) {

      helper.setEscolhaRelatorio(new Integer(form.getEscolhaRelatorio()));
      peloMenosUmParametroInformado = true;
    } else {

      throw new ActionServletException("atencao.tipo_relatorio_nao_informado");
    }

    // Erro caso o usuário mandou filtrar sem nenhum parâmetro
    if (!peloMenosUmParametroInformado) {

      throw new ActionServletException("atencao.filtro.nenhum_parametro_informado");
    }

    TarefaRelatorio relatorio =
        new RelatorioReligacaoClientesInadiplentes(
            (Usuario) (httpServletRequest.getSession(false)).getAttribute("usuarioLogado"));

    if (tipoRelatorio == null) {
      tipoRelatorio = TarefaRelatorio.TIPO_PDF + "";
    }

    relatorio.addParametro("tipoFormatoRelatorio", Integer.parseInt(tipoRelatorio));
    relatorio.addParametro("filtrarRelatorioReligacaoClientesInadiplentesHelper", helper);
    relatorio.addParametro("usuario", usuario);

    relatorio.addParametro("gerenciaRegional", gerenciaRegional);
    relatorio.addParametro("unidadeNegocio", unidadeNegocio);
    relatorio.addParametro("localidade", localidade);
    relatorio.addParametro("setorComercial", setorComercial);
    relatorio.addParametro("cliente", cliente);
    relatorio.addParametro("nomeUsuario", nomeUsuario);
    relatorio.addParametro("periodoEncerramento", periodoEncerramento);
    relatorio.addParametro("periodoRecorrencia", periodoRecorrencia);

    try {

      retorno =
          processarExibicaoRelatorio(
              relatorio, tipoRelatorio, httpServletRequest, httpServletResponse, actionMapping);

    } catch (SistemaException ex) {
      // manda o erro para a página no request atual
      reportarErros(httpServletRequest, "erro.sistema");

      // seta o mapeamento de retorno para a tela de erro de popup
      retorno = actionMapping.findForward("telaErroPopup");

    } catch (RelatorioVazioException ex1) {
      throw new ActionServletException("atencao.pesquisa.nenhumresultado", null, "");
    }

    return retorno;
  }