/**
   * @author Vivianne Sousa
   * @date 12/05/2006
   * @param actionMapping
   * @param actionForm
   * @param httpServletRequest
   * @param httpServletResponse
   * @return
   */
  public ActionForward execute(
      ActionMapping actionMapping,
      ActionForm actionForm,
      HttpServletRequest httpServletRequest,
      HttpServletResponse httpServletResponse) {

    AtualizarParcelamentoPerfilActionForm atualizarParcelamentoPerfilActionForm =
        (AtualizarParcelamentoPerfilActionForm) actionForm;
    ActionForward retorno = actionMapping.findForward("telaSucesso");
    Fachada fachada = Fachada.getInstancia();
    HttpSession sessao = httpServletRequest.getSession(false);

    String idPerfilParcelamento = (String) sessao.getAttribute("idRegistroAtualizacao");
    String numeroResolucaoDiretoria =
        atualizarParcelamentoPerfilActionForm.getNumeroResolucaoDiretoria();

    FiltroParcelamentoPerfil filtroParcelamentoPerfil = new FiltroParcelamentoPerfil();
    // Seta o filtro para buscar o ParcelamentoPerfil na base
    // e recuperar o idImovelSituacaoTipo,idImovelPerfil e o idSubcategoria
    filtroParcelamentoPerfil.adicionarParametro(
        new ParametroSimples(FiltroParcelamentoPerfil.ID, idPerfilParcelamento));
    filtroParcelamentoPerfil.adicionarCaminhoParaCarregamentoEntidade("imovelSituacaoTipo");
    filtroParcelamentoPerfil.adicionarCaminhoParaCarregamentoEntidade("imovelPerfil");
    filtroParcelamentoPerfil.adicionarCaminhoParaCarregamentoEntidade("subcategoria");
    filtroParcelamentoPerfil.adicionarCaminhoParaCarregamentoEntidade("categoria");
    // Procura o ParcelamentoPerfil na base
    ParcelamentoPerfil parcelamentoPerfilNaBase = null;
    parcelamentoPerfilNaBase =
        (ParcelamentoPerfil)
            ((List)
                    (fachada.pesquisar(
                        filtroParcelamentoPerfil, ParcelamentoPerfil.class.getName())))
                .get(0);

    Integer idImovelSituacaoTipo = parcelamentoPerfilNaBase.getImovelSituacaoTipo().getId();

    Integer idImovelPerfil = null;
    if (parcelamentoPerfilNaBase.getImovelPerfil() != null
        && !parcelamentoPerfilNaBase.getImovelPerfil().equals("")) {
      idImovelPerfil = parcelamentoPerfilNaBase.getImovelPerfil().getId();
    }

    Integer idSubcategoria = null;
    if (parcelamentoPerfilNaBase.getSubcategoria() != null
        && !parcelamentoPerfilNaBase.getSubcategoria().equals("")) {
      idSubcategoria = parcelamentoPerfilNaBase.getSubcategoria().getId();
    }

    Integer idCategoria = null;
    if (parcelamentoPerfilNaBase.getCategoria() != null
        && !parcelamentoPerfilNaBase.getCategoria().equals("")) {
      idCategoria = parcelamentoPerfilNaBase.getCategoria().getId();
    }

    String percentualDescontoAcrescimoMulta = null;
    if (atualizarParcelamentoPerfilActionForm.getPercentualDescontoAcrescimoMulta() != null) {
      percentualDescontoAcrescimoMulta =
          atualizarParcelamentoPerfilActionForm
              .getPercentualDescontoAcrescimoMulta()
              .toString()
              .replace(",", ".");
    }

    String percentualDescontoAcrescimoJurosMora = null;
    if (atualizarParcelamentoPerfilActionForm.getPercentualDescontoAcrescimoJurosMora() != null) {
      percentualDescontoAcrescimoJurosMora =
          atualizarParcelamentoPerfilActionForm
              .getPercentualDescontoAcrescimoJurosMora()
              .toString()
              .replace(",", ".");
    }

    String percentualDescontoAcrescimoAtualizacaoMonetaria = null;
    if (atualizarParcelamentoPerfilActionForm.getPercentualDescontoAcrescimoAtualizacaoMonetaria()
        != null) {
      percentualDescontoAcrescimoAtualizacaoMonetaria =
          atualizarParcelamentoPerfilActionForm
              .getPercentualDescontoAcrescimoAtualizacaoMonetaria()
              .toString()
              .replace(",", ".");
    }

    String percentualDescontoAcrescimoPagamentoAVista = null;
    if (atualizarParcelamentoPerfilActionForm.getPercentualDescontoAcrescimoPagamentoAVista()
            != null
        && !atualizarParcelamentoPerfilActionForm
            .getPercentualDescontoAcrescimoPagamentoAVista()
            .equalsIgnoreCase("")) {
      percentualDescontoAcrescimoPagamentoAVista =
          atualizarParcelamentoPerfilActionForm
              .getPercentualDescontoAcrescimoPagamentoAVista()
              .toString()
              .replace(",", ".");
    }

    String percentualTarifaMinimaPrestacao = null;
    if (atualizarParcelamentoPerfilActionForm.getPercentualTarifaMinimaPrestacao() != null
        && !atualizarParcelamentoPerfilActionForm
            .getPercentualTarifaMinimaPrestacao()
            .equalsIgnoreCase("")) {
      percentualTarifaMinimaPrestacao =
          atualizarParcelamentoPerfilActionForm
              .getPercentualTarifaMinimaPrestacao()
              .toString()
              .replace(",", ".");
    }

    atualizaColecoesNaSessao(sessao, httpServletRequest);

    // collectionParcelamentoQuantidadeReparcelamentoHelper
    Collection collectionParcelamentoQuantidadeReparcelamentoHelper = null;
    if (sessao.getAttribute("collectionParcelamentoQuantidadeReparcelamentoHelper") != null) {
      collectionParcelamentoQuantidadeReparcelamentoHelper =
          (Collection) sessao.getAttribute("collectionParcelamentoQuantidadeReparcelamentoHelper");
    }

    // collectionParcelamentoDescontoInatividade
    Collection collectionParcelamentoDescontoInatividade = null;
    if (sessao.getAttribute("collectionParcelamentoDescontoInatividade") != null) {
      collectionParcelamentoDescontoInatividade =
          (Collection) sessao.getAttribute("collectionParcelamentoDescontoInatividade");
    }

    // collectionParcelamentoDescontoInatividadeAVista
    Collection collectionParcelamentoDescontoInatividadeAVista = null;
    if (sessao.getAttribute("collectionParcelamentoDescontoInatividadeAVista") != null) {
      collectionParcelamentoDescontoInatividadeAVista =
          (Collection) sessao.getAttribute("collectionParcelamentoDescontoInatividadeAVista");
    }

    // collectionParcelamentoDescontoAntiguidade
    Collection collectionParcelamentoDescontoAntiguidade = null;
    if (sessao.getAttribute("collectionParcelamentoDescontoAntiguidade") != null) {
      collectionParcelamentoDescontoAntiguidade =
          (Collection) sessao.getAttribute("collectionParcelamentoDescontoAntiguidade");
    }

    Collection collectionParcelamentoQuantidadeReparcelamentoHelperLinhaRemovidas =
        (Collection)
            sessao.getAttribute(
                "collectionParcelamentoQuantidadeReparcelamentoHelperLinhaRemovidas");

    Collection collectionParcelamentoDescontoInatividadeLinhaRemovidas =
        (Collection) sessao.getAttribute("collectionParcelamentoDescontoInatividadeLinhaRemovidas");

    Collection collectionParcelamentoDescontoInatividadeAVistaLinhaRemovidas =
        (Collection)
            sessao.getAttribute("collectionParcelamentoDescontoInatividadeAVistaLinhaRemovidas");

    Collection collectionParcelamentoDescontoAntiguidadeLinhaRemovidas =
        (Collection) sessao.getAttribute("collectionParcelamentoDescontoAntiguidadeLinhaRemovidas");

    Collection collectionParcelamentoQuantidadePrestacaoHelperLinhaRemovidas =
        (Collection)
            sessao.getAttribute("collectionParcelamentoQuantidadePrestacaoHelperLinhaRemovidas");

    validacaoFinal(
        percentualDescontoAcrescimoMulta,
        percentualDescontoAcrescimoJurosMora,
        percentualDescontoAcrescimoAtualizacaoMonetaria,
        percentualDescontoAcrescimoPagamentoAVista,
        percentualTarifaMinimaPrestacao,
        httpServletRequest,
        collectionParcelamentoQuantidadeReparcelamentoHelper,
        collectionParcelamentoDescontoAntiguidade,
        collectionParcelamentoDescontoInatividade,
        idPerfilParcelamento,
        fachada,
        collectionParcelamentoDescontoInatividadeAVista);

    ParcelamentoPerfil parcelamentoPerfil = new ParcelamentoPerfil();

    parcelamentoPerfil.setId(new Integer(idPerfilParcelamento));

    ResolucaoDiretoria resolucaoDiretoria = null;
    if (numeroResolucaoDiretoria != null && !numeroResolucaoDiretoria.equals("")) {

      FiltroResolucaoDiretoria filtroResolucaoDiretoria = new FiltroResolucaoDiretoria();
      filtroResolucaoDiretoria.adicionarParametro(
          new ParametroSimples(FiltroResolucaoDiretoria.NUMERO, numeroResolucaoDiretoria));
      Collection<ResolucaoDiretoria> collectionResolucaoDiretoria =
          fachada.pesquisar(filtroResolucaoDiretoria, ResolucaoDiretoria.class.getName());

      if (collectionResolucaoDiretoria != null && !collectionResolucaoDiretoria.isEmpty()) {
        resolucaoDiretoria =
            (ResolucaoDiretoria) Util.retonarObjetoDeColecao(collectionResolucaoDiretoria);
        parcelamentoPerfil.setResolucaoDiretoria(resolucaoDiretoria);
      }
    }

    ImovelSituacaoTipo imovelSituacaoTipo = null;
    if (idImovelSituacaoTipo != null
        && !idImovelSituacaoTipo.equals("" + ConstantesSistema.NUMERO_NAO_INFORMADO)) {
      imovelSituacaoTipo = new ImovelSituacaoTipo();
      imovelSituacaoTipo.setId(new Integer(idImovelSituacaoTipo));
      parcelamentoPerfil.setImovelSituacaoTipo(imovelSituacaoTipo);
    }

    ImovelPerfil imovelPerfil = null;
    if (idImovelPerfil != null
        && !idImovelPerfil.equals("" + ConstantesSistema.NUMERO_NAO_INFORMADO)) {
      imovelPerfil = new ImovelPerfil();
      imovelPerfil.setId(new Integer(idImovelPerfil));
      parcelamentoPerfil.setImovelPerfil(imovelPerfil);
    }

    Subcategoria subcategoria = null;
    if (idSubcategoria != null
        && !idSubcategoria.equals("" + ConstantesSistema.NUMERO_NAO_INFORMADO)) {
      subcategoria = new Subcategoria();
      subcategoria.setId(new Integer(idSubcategoria));
      parcelamentoPerfil.setSubcategoria(subcategoria);
    }

    Categoria categoria = null;
    if (idCategoria != null && !idCategoria.equals("" + ConstantesSistema.NUMERO_NAO_INFORMADO)) {
      categoria = new Categoria();
      categoria.setId(new Integer(idCategoria));
      parcelamentoPerfil.setCategoria(categoria);
    }

    if (percentualDescontoAcrescimoMulta != null && !percentualDescontoAcrescimoMulta.equals("")) {

      BigDecimal percentual =
          Util.formatarMoedaRealparaBigDecimal(percentualDescontoAcrescimoMulta);

      verificarPercentualMaximo(percentual);

      parcelamentoPerfil.setPercentualDescontoAcrescimoMulta(percentual);
    } else {
      parcelamentoPerfil.setPercentualDescontoAcrescimoMulta(new BigDecimal(0));
    }

    if (percentualDescontoAcrescimoJurosMora != null
        && !percentualDescontoAcrescimoJurosMora.equals("")) {

      BigDecimal percentual =
          Util.formatarMoedaRealparaBigDecimal(percentualDescontoAcrescimoJurosMora);

      verificarPercentualMaximo(percentual);

      parcelamentoPerfil.setPercentualDescontoAcrescimoJurosMora(percentual);
    } else {
      parcelamentoPerfil.setPercentualDescontoAcrescimoJurosMora(new BigDecimal(0));
    }

    if (percentualDescontoAcrescimoAtualizacaoMonetaria != null
        && !percentualDescontoAcrescimoAtualizacaoMonetaria.equals("")) {

      BigDecimal percentual =
          Util.formatarMoedaRealparaBigDecimal(percentualDescontoAcrescimoAtualizacaoMonetaria);

      verificarPercentualMaximo(percentual);

      parcelamentoPerfil.setPercentualDescontoAcrescimoAtualizacaoMonetaria(percentual);
    } else {
      parcelamentoPerfil.setPercentualDescontoAcrescimoAtualizacaoMonetaria(new BigDecimal(0));
    }

    if (percentualDescontoAcrescimoPagamentoAVista != null
        && !percentualDescontoAcrescimoPagamentoAVista.equals("")) {

      BigDecimal percentual =
          Util.formatarMoedaRealparaBigDecimal(percentualDescontoAcrescimoPagamentoAVista);

      verificarPercentualMaximo(percentual);

      parcelamentoPerfil.setPercentualDescontoPagamentoAVista(percentual);
    } else {
      parcelamentoPerfil.setPercentualDescontoPagamentoAVista(new BigDecimal(0));
    }

    if (percentualTarifaMinimaPrestacao != null
        && !percentualTarifaMinimaPrestacao.equalsIgnoreCase("")) {
      parcelamentoPerfil.setPercentualTarifaMinimaPrestacao(
          new BigDecimal(percentualTarifaMinimaPrestacao));
    } else {
      parcelamentoPerfil.setPercentualTarifaMinimaPrestacao(new BigDecimal(0));
    }

    if (atualizarParcelamentoPerfilActionForm.getIndicadorParcelarChequeDevolvido() != null
        && !atualizarParcelamentoPerfilActionForm
            .getIndicadorParcelarChequeDevolvido()
            .equals("")) {
      parcelamentoPerfil.setIndicadorChequeDevolvido(
          new Short(atualizarParcelamentoPerfilActionForm.getIndicadorParcelarChequeDevolvido()));
    } else {
      throw new ActionServletException(
          "atencao.campo_selecionado.obrigatorio", null, "Não parcelar com cheque devolvido");
    }

    if (atualizarParcelamentoPerfilActionForm.getConsumoMinimo() != null
        && !atualizarParcelamentoPerfilActionForm.getConsumoMinimo().equals("")) {
      parcelamentoPerfil.setNumeroConsumoMinimo(
          new Integer(atualizarParcelamentoPerfilActionForm.getConsumoMinimo()));
    }

    if (atualizarParcelamentoPerfilActionForm.getPercentualVariacaoConsumoMedio() != null
        && !atualizarParcelamentoPerfilActionForm.getPercentualVariacaoConsumoMedio().equals("")) {
      parcelamentoPerfil.setPercentualVariacaoConsumoMedio(
          Util.formatarMoedaRealparaBigDecimal(
              atualizarParcelamentoPerfilActionForm.getPercentualVariacaoConsumoMedio()));
    }

    if (atualizarParcelamentoPerfilActionForm.getIndicadorParcelarSancoesMaisDeUmaConta() != null
        && !atualizarParcelamentoPerfilActionForm
            .getIndicadorParcelarSancoesMaisDeUmaConta()
            .equals("")) {
      parcelamentoPerfil.setIndicadorSancoesUnicaConta(
          new Short(
              atualizarParcelamentoPerfilActionForm.getIndicadorParcelarSancoesMaisDeUmaConta()));
    } else {
      throw new ActionServletException(
          "atencao.campo_selecionado.obrigatorio",
          null,
          "Não parcelar com sanções em mais de uma conta");
    }

    if (atualizarParcelamentoPerfilActionForm.getNumeroConsumoEconomia() != null
        && !atualizarParcelamentoPerfilActionForm.getNumeroConsumoEconomia().trim().equals("")) {
      parcelamentoPerfil.setNumeroConsumoEconomia(
          new Integer(atualizarParcelamentoPerfilActionForm.getNumeroConsumoEconomia()));
    }

    if (atualizarParcelamentoPerfilActionForm.getNumeroAreaConstruida() != null
        && !atualizarParcelamentoPerfilActionForm.getNumeroAreaConstruida().trim().equals("")) {
      parcelamentoPerfil.setNumeroAreaConstruida(
          Util.formatarMoedaRealparaBigDecimal(
              atualizarParcelamentoPerfilActionForm.getNumeroAreaConstruida()));
    }

    if (atualizarParcelamentoPerfilActionForm.getIndicadorRetroativoTarifaSocial() != null
        && !atualizarParcelamentoPerfilActionForm.getIndicadorRetroativoTarifaSocial().equals("")) {
      parcelamentoPerfil.setIndicadorRetroativoTarifaSocial(
          new Short(atualizarParcelamentoPerfilActionForm.getIndicadorRetroativoTarifaSocial()));
    } else {
      throw new ActionServletException(
          "atencao.campo_selecionado.obrigatorio",
          null,
          "Indicador de retroativo de tarifa social");
    }

    if (atualizarParcelamentoPerfilActionForm.getAnoMesReferenciaLimiteInferior() != null
        && !atualizarParcelamentoPerfilActionForm
            .getAnoMesReferenciaLimiteInferior()
            .trim()
            .equals("")) {
      parcelamentoPerfil.setAnoMesReferenciaLimiteInferior(
          new Integer(
              Util.formatarMesAnoParaAnoMesSemBarra(
                  atualizarParcelamentoPerfilActionForm.getAnoMesReferenciaLimiteInferior())));
    }

    if (atualizarParcelamentoPerfilActionForm.getAnoMesReferenciaLimiteSuperior() != null
        && !atualizarParcelamentoPerfilActionForm
            .getAnoMesReferenciaLimiteSuperior()
            .trim()
            .equals("")) {
      parcelamentoPerfil.setAnoMesReferenciaLimiteSuperior(
          new Integer(
              Util.formatarMesAnoParaAnoMesSemBarra(
                  atualizarParcelamentoPerfilActionForm.getAnoMesReferenciaLimiteSuperior())));
    }

    if (atualizarParcelamentoPerfilActionForm.getPercentualDescontoTarifaSocial() != null
        && !atualizarParcelamentoPerfilActionForm
            .getPercentualDescontoTarifaSocial()
            .trim()
            .equals("")) {
      BigDecimal percentual =
          Util.formatarMoedaRealparaBigDecimal(
              atualizarParcelamentoPerfilActionForm.getPercentualDescontoTarifaSocial());
      verificarPercentualMaximo(percentual);
      parcelamentoPerfil.setPercentualDescontoTarifaSocial(percentual);
    }

    if (atualizarParcelamentoPerfilActionForm.getParcelaQuantidadeMinimaFatura() != null
        && !atualizarParcelamentoPerfilActionForm
            .getParcelaQuantidadeMinimaFatura()
            .trim()
            .equals("")) {
      parcelamentoPerfil.setParcelaQuantidadeMinimaFatura(
          new Integer(atualizarParcelamentoPerfilActionForm.getParcelaQuantidadeMinimaFatura()));
    }

    if (atualizarParcelamentoPerfilActionForm.getIndicadorAlertaParcelaMinima() != null
        && !atualizarParcelamentoPerfilActionForm.getIndicadorAlertaParcelaMinima().equals("")) {
      parcelamentoPerfil.setIndicadorAlertaParcelaMinima(
          new Short(atualizarParcelamentoPerfilActionForm.getIndicadorAlertaParcelaMinima()));
    } else {
      throw new ActionServletException(
          "atencao.campo_selecionado.obrigatorio", null, "Indicador de alerta de parcela mínima");
    }

    if (atualizarParcelamentoPerfilActionForm.getPercentualDescontoSancao() != null
        && !atualizarParcelamentoPerfilActionForm.getPercentualDescontoSancao().trim().equals("")) {
      BigDecimal percentual =
          Util.formatarMoedaRealparaBigDecimal(
              atualizarParcelamentoPerfilActionForm.getPercentualDescontoSancao());
      verificarPercentualMaximo(percentual);
      parcelamentoPerfil.setPercentualDescontoSancao(percentual);
    }

    if (atualizarParcelamentoPerfilActionForm.getQuantidadeEconomias() != null
        && !atualizarParcelamentoPerfilActionForm.getQuantidadeEconomias().trim().equals("")) {
      parcelamentoPerfil.setQuantidadeEconomias(
          new Integer(atualizarParcelamentoPerfilActionForm.getQuantidadeEconomias()));
    }

    if (atualizarParcelamentoPerfilActionForm.getQuantidadeMaximaReparcelamento() != null
        && !atualizarParcelamentoPerfilActionForm
            .getQuantidadeMaximaReparcelamento()
            .trim()
            .equals("")) {
      parcelamentoPerfil.setQuantidadeMaximaReparcelamento(
          new Integer(atualizarParcelamentoPerfilActionForm.getQuantidadeMaximaReparcelamento()));
    }

    if (atualizarParcelamentoPerfilActionForm.getIndicadorEntradaMinima() != null
        && !atualizarParcelamentoPerfilActionForm.getIndicadorEntradaMinima().equals("")) {
      parcelamentoPerfil.setIndicadorEntradaMinima(
          new Short(atualizarParcelamentoPerfilActionForm.getIndicadorEntradaMinima()));
    } else {
      throw new ActionServletException(
          "atencao.campo_selecionado.obrigatorio", null, "Indicador de entrada mínima");
    }

    if (atualizarParcelamentoPerfilActionForm.getCapacidadeHidrometro() != null
        && !atualizarParcelamentoPerfilActionForm.getCapacidadeHidrometro().trim().equals("")) {
      parcelamentoPerfil.setCapacidadeHidrometro(
          new Short(atualizarParcelamentoPerfilActionForm.getCapacidadeHidrometro()));
    } else {
      throw new ActionServletException(
          "atencao.campo_selecionado.obrigatorio",
          null,
          "Indicador pesquisa capacidade do hidrometro");
    }

    if (atualizarParcelamentoPerfilActionForm.getDataLimiteDescontoPagamentoAVista() != null
        && !atualizarParcelamentoPerfilActionForm
            .getDataLimiteDescontoPagamentoAVista()
            .trim()
            .equals("")) {
      parcelamentoPerfil.setDataLimiteDescontoPagamentoAVista(
          Util.converteStringParaDate(
              atualizarParcelamentoPerfilActionForm.getDataLimiteDescontoPagamentoAVista()));
    }

    parcelamentoPerfil.setUltimaAlteracao(
        Util.converteStringParaDateHora(
            atualizarParcelamentoPerfilActionForm.getUltimaAlteracao()));

    fachada.atualizarPerfilParcelamento(
        parcelamentoPerfil,
        collectionParcelamentoQuantidadeReparcelamentoHelper,
        collectionParcelamentoDescontoInatividade,
        collectionParcelamentoDescontoAntiguidade,
        collectionParcelamentoQuantidadeReparcelamentoHelperLinhaRemovidas,
        collectionParcelamentoDescontoInatividadeLinhaRemovidas,
        collectionParcelamentoDescontoAntiguidadeLinhaRemovidas,
        collectionParcelamentoQuantidadePrestacaoHelperLinhaRemovidas,
        this.getUsuarioLogado(httpServletRequest),
        collectionParcelamentoDescontoInatividadeAVista,
        collectionParcelamentoDescontoInatividadeAVistaLinhaRemovidas);

    sessao.removeAttribute("collectionParcelamentoQuantidadeReparcelamentoHelper");
    sessao.removeAttribute("collectionParcelamentoDescontoInatividade");
    sessao.removeAttribute("collectionParcelamentoDescontoAntiguidade");
    sessao.removeAttribute("idRegistroAtualizacao");
    sessao.removeAttribute("collectionParcelamentoQuantidadeReparcelamentoHelperLinhaRemovidas");
    sessao.removeAttribute("collectionParcelamentoDescontoInatividadeLinhaRemovidas");
    sessao.removeAttribute("collectionParcelamentoDescontoAntiguidadeLinhaRemovidas");
    sessao.removeAttribute("collectionParcelamentoQuantidadePrestacaoHelperLinhaRemovidas");
    sessao.removeAttribute("collectionParcelamentoDescontoInatividadeAVista");
    sessao.removeAttribute("collectionParcelamentoDescontoInatividadeAVistaLinhaRemovidas");

    //
    // Monta a página de sucesso
    if (retorno.getName().equalsIgnoreCase("telaSucesso")) {
      montarPaginaSucesso(
          httpServletRequest,
          "Perfil de Parcelamento da RD de número "
              + numeroResolucaoDiretoria
              + " atualizado com sucesso.",
          "Realizar outra Manutenção de Perfil de Parcelamento",
          "exibirFiltrarPerfilParcelamentoAction.do?desfazer=S");
    }

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

    ActionForward retorno = actionMapping.findForward("telaSucesso");
    HttpSession sessao = httpServletRequest.getSession(false);
    ParcelamentoPerfilActionForm parcelamentoPerfilActionForm =
        (ParcelamentoPerfilActionForm) actionForm;

    String idResolucaoDiretoria = parcelamentoPerfilActionForm.getResolucaoDiretoria();
    String idImovelSituacaoTipo = parcelamentoPerfilActionForm.getImovelSituacaoTipo();

    String idImovelPerfil = null;
    if (parcelamentoPerfilActionForm.getImovelPerfil() != null
        && !parcelamentoPerfilActionForm
            .getImovelPerfil()
            .equals("" + ConstantesSistema.NUMERO_NAO_INFORMADO)) {
      idImovelPerfil = parcelamentoPerfilActionForm.getImovelPerfil();
    }

    String idSubcategoria = null;
    if (parcelamentoPerfilActionForm.getSubcategoria() != null
        && !parcelamentoPerfilActionForm
            .getSubcategoria()
            .equals("" + ConstantesSistema.NUMERO_NAO_INFORMADO)) {
      idSubcategoria = parcelamentoPerfilActionForm.getSubcategoria();
    }

    String idCategoria = null;
    if (parcelamentoPerfilActionForm.getCategoria() != null
        && !parcelamentoPerfilActionForm
            .getCategoria()
            .equals("" + ConstantesSistema.NUMERO_NAO_INFORMADO)) {
      idCategoria = parcelamentoPerfilActionForm.getCategoria();
    }

    /*
     *
     */
    String percentualDescontoAcrescimoMulta = null;
    if (parcelamentoPerfilActionForm.getPercentualDescontoAcrescimoMulta() != null
        && !parcelamentoPerfilActionForm
            .getPercentualDescontoAcrescimoMulta()
            .equalsIgnoreCase("")) {
      percentualDescontoAcrescimoMulta =
          parcelamentoPerfilActionForm
              .getPercentualDescontoAcrescimoMulta()
              .toString()
              .replace(",", ".");
    }

    String percentualDescontoAcrescimoJurosMora = null;
    if (parcelamentoPerfilActionForm.getPercentualDescontoAcrescimoJurosMora() != null
        && !parcelamentoPerfilActionForm
            .getPercentualDescontoAcrescimoJurosMora()
            .equalsIgnoreCase("")) {
      percentualDescontoAcrescimoJurosMora =
          parcelamentoPerfilActionForm
              .getPercentualDescontoAcrescimoJurosMora()
              .toString()
              .replace(",", ".");
    }

    String percentualDescontoAcrescimoAtualizacaoMonetaria = null;
    if (parcelamentoPerfilActionForm.getPercentualDescontoAcrescimoAtualizacaoMonetaria() != null
        && !parcelamentoPerfilActionForm
            .getPercentualDescontoAcrescimoAtualizacaoMonetaria()
            .equalsIgnoreCase("")) {
      percentualDescontoAcrescimoAtualizacaoMonetaria =
          parcelamentoPerfilActionForm
              .getPercentualDescontoAcrescimoAtualizacaoMonetaria()
              .toString()
              .replace(",", ".");
    }
    // fim alteração

    String percentualDescontoAcrescimoPagamentoAVista = null;
    if (parcelamentoPerfilActionForm.getPercentualDescontoAcrescimoPagamentoAVista() != null
        && !parcelamentoPerfilActionForm
            .getPercentualDescontoAcrescimoPagamentoAVista()
            .equalsIgnoreCase("")) {
      percentualDescontoAcrescimoPagamentoAVista =
          parcelamentoPerfilActionForm
              .getPercentualDescontoAcrescimoPagamentoAVista()
              .toString()
              .replace(",", ".");
    }

    String percentualTarifaMinimaPrestacao = null;
    if (parcelamentoPerfilActionForm.getPercentualTarifaMinimaPrestacao() != null
        && !parcelamentoPerfilActionForm
            .getPercentualTarifaMinimaPrestacao()
            .equalsIgnoreCase("")) {
      percentualTarifaMinimaPrestacao =
          parcelamentoPerfilActionForm
              .getPercentualTarifaMinimaPrestacao()
              .toString()
              .replace(",", ".");
    }

    atualizaColecoesNaSessao(sessao, httpServletRequest);

    // collectionParcelamentoQuantidadeReparcelamentoHelper
    Collection collectionParcelamentoQuantidadeReparcelamentoHelper = null;
    if (sessao.getAttribute("collectionParcelamentoQuantidadeReparcelamentoHelper") != null) {
      collectionParcelamentoQuantidadeReparcelamentoHelper =
          (Collection) sessao.getAttribute("collectionParcelamentoQuantidadeReparcelamentoHelper");
    }

    // collectionParcelamentoDescontoInatividade
    Collection collectionParcelamentoDescontoInatividade = null;
    if (sessao.getAttribute("collectionParcelamentoDescontoInatividade") != null) {
      collectionParcelamentoDescontoInatividade =
          (Collection) sessao.getAttribute("collectionParcelamentoDescontoInatividade");
    }

    // collectionParcelamentoDescontoAntiguidade
    Collection collectionParcelamentoDescontoAntiguidade = null;
    if (sessao.getAttribute("collectionParcelamentoDescontoAntiguidade") != null) {
      collectionParcelamentoDescontoAntiguidade =
          (Collection) sessao.getAttribute("collectionParcelamentoDescontoAntiguidade");
    }

    // collectionParcelamentoDescontoInatividade
    Collection collectionParcelamentoDescontoInatividadeAVista = null;
    if (sessao.getAttribute("collectionParcelamentoDescontoInatividadeAVista") != null) {
      collectionParcelamentoDescontoInatividadeAVista =
          (Collection) sessao.getAttribute("collectionParcelamentoDescontoInatividadeAVista");
    }

    validacaoFinal(
        idResolucaoDiretoria,
        idImovelSituacaoTipo,
        idImovelPerfil,
        idSubcategoria,
        percentualDescontoAcrescimoMulta,
        percentualDescontoAcrescimoJurosMora,
        percentualDescontoAcrescimoAtualizacaoMonetaria,
        httpServletRequest,
        collectionParcelamentoQuantidadeReparcelamentoHelper,
        collectionParcelamentoDescontoAntiguidade,
        collectionParcelamentoDescontoInatividade,
        percentualTarifaMinimaPrestacao,
        collectionParcelamentoDescontoInatividadeAVista,
        percentualDescontoAcrescimoPagamentoAVista);

    ParcelamentoPerfil parcelamentoPerfilNova = new ParcelamentoPerfil();

    ResolucaoDiretoria resolucaoDiretoria = null;
    if (idResolucaoDiretoria != null && !idResolucaoDiretoria.equals("")) {
      resolucaoDiretoria = new ResolucaoDiretoria();
      resolucaoDiretoria.setId(new Integer(idResolucaoDiretoria));
      parcelamentoPerfilNova.setResolucaoDiretoria(resolucaoDiretoria);
    }

    ImovelSituacaoTipo imovelSituacaoTipo = null;
    if (idImovelSituacaoTipo != null
        && !idImovelSituacaoTipo.equals("" + ConstantesSistema.NUMERO_NAO_INFORMADO)) {
      imovelSituacaoTipo = new ImovelSituacaoTipo();
      imovelSituacaoTipo.setId(new Integer(idImovelSituacaoTipo));
      parcelamentoPerfilNova.setImovelSituacaoTipo(imovelSituacaoTipo);
    }

    ImovelPerfil imovelPerfil = null;
    if (idImovelPerfil != null
        && !idImovelPerfil.equals("" + ConstantesSistema.NUMERO_NAO_INFORMADO)) {
      imovelPerfil = new ImovelPerfil();
      imovelPerfil.setId(new Integer(idImovelPerfil));
    }
    parcelamentoPerfilNova.setImovelPerfil(imovelPerfil);

    Subcategoria subcategoria = null;
    if (idSubcategoria != null
        && !idSubcategoria.equals("" + ConstantesSistema.NUMERO_NAO_INFORMADO)) {
      subcategoria = new Subcategoria();
      subcategoria.setId(new Integer(idSubcategoria));
    }
    parcelamentoPerfilNova.setSubcategoria(subcategoria);

    /*
     *
     */
    if (parcelamentoPerfilActionForm.getPercentualDescontoAcrescimoMulta() != null
        && !parcelamentoPerfilActionForm
            .getPercentualDescontoAcrescimoMulta()
            .equalsIgnoreCase("")) {
      parcelamentoPerfilNova.setPercentualDescontoAcrescimoMulta(
          new BigDecimal(percentualDescontoAcrescimoMulta));
    } else {
      parcelamentoPerfilNova.setPercentualDescontoAcrescimoMulta(new BigDecimal(0));
    }

    if (parcelamentoPerfilActionForm.getPercentualDescontoAcrescimoJurosMora() != null
        && !parcelamentoPerfilActionForm
            .getPercentualDescontoAcrescimoJurosMora()
            .equalsIgnoreCase("")) {
      parcelamentoPerfilNova.setPercentualDescontoAcrescimoJurosMora(
          new BigDecimal(percentualDescontoAcrescimoJurosMora));
    } else {
      parcelamentoPerfilNova.setPercentualDescontoAcrescimoJurosMora(new BigDecimal(0));
    }

    if (parcelamentoPerfilActionForm.getPercentualDescontoAcrescimoAtualizacaoMonetaria() != null
        && !parcelamentoPerfilActionForm
            .getPercentualDescontoAcrescimoAtualizacaoMonetaria()
            .equalsIgnoreCase("")) {
      parcelamentoPerfilNova.setPercentualDescontoAcrescimoAtualizacaoMonetaria(
          new BigDecimal(percentualDescontoAcrescimoAtualizacaoMonetaria));
    } else {
      parcelamentoPerfilNova.setPercentualDescontoAcrescimoAtualizacaoMonetaria(new BigDecimal(0));
    }
    // fim alteração

    if (parcelamentoPerfilActionForm.getPercentualDescontoAcrescimoPagamentoAVista() != null
        && !parcelamentoPerfilActionForm
            .getPercentualDescontoAcrescimoPagamentoAVista()
            .equalsIgnoreCase("")) {
      parcelamentoPerfilNova.setPercentualDescontoPagamentoAVista(
          new BigDecimal(percentualDescontoAcrescimoPagamentoAVista));
    } else {
      parcelamentoPerfilNova.setPercentualDescontoPagamentoAVista(new BigDecimal(0));
    }

    if (parcelamentoPerfilActionForm.getPercentualTarifaMinimaPrestacao() != null
        && !parcelamentoPerfilActionForm
            .getPercentualTarifaMinimaPrestacao()
            .equalsIgnoreCase("")) {
      parcelamentoPerfilNova.setPercentualTarifaMinimaPrestacao(
          new BigDecimal(percentualTarifaMinimaPrestacao));
    } else {
      parcelamentoPerfilNova.setPercentualTarifaMinimaPrestacao(new BigDecimal(0));
    }

    if (parcelamentoPerfilActionForm.getIndicadorParcelarChequeDevolvido() != null
        && !parcelamentoPerfilActionForm.getIndicadorParcelarChequeDevolvido().equals("")) {
      parcelamentoPerfilNova.setIndicadorChequeDevolvido(
          new Short(parcelamentoPerfilActionForm.getIndicadorParcelarChequeDevolvido()));
    } else {
      throw new ActionServletException(
          "atencao.campo_selecionado.obrigatorio", null, "Não parcelar com cheque devolvido");
    }

    if (parcelamentoPerfilActionForm.getConsumoMinimo() != null
        && !parcelamentoPerfilActionForm.getConsumoMinimo().equals("")) {
      parcelamentoPerfilNova.setNumeroConsumoMinimo(
          new Integer(parcelamentoPerfilActionForm.getConsumoMinimo()));
    }

    if (parcelamentoPerfilActionForm.getPercentualVariacaoConsumoMedio() != null
        && !parcelamentoPerfilActionForm.getPercentualVariacaoConsumoMedio().equals("")) {
      parcelamentoPerfilNova.setPercentualVariacaoConsumoMedio(
          Util.formatarMoedaRealparaBigDecimal(
              parcelamentoPerfilActionForm.getPercentualVariacaoConsumoMedio()));
    }

    if (parcelamentoPerfilActionForm.getIndicadorParcelarSancoesMaisDeUmaConta() != null
        && !parcelamentoPerfilActionForm.getIndicadorParcelarSancoesMaisDeUmaConta().equals("")) {
      parcelamentoPerfilNova.setIndicadorSancoesUnicaConta(
          new Short(parcelamentoPerfilActionForm.getIndicadorParcelarSancoesMaisDeUmaConta()));
    } else {
      throw new ActionServletException(
          "atencao.campo_selecionado.obrigatorio",
          null,
          "Não parcelar com sanções em mais de uma conta");
    }

    /////////////////////////////////////////////
    Categoria categoria = null;
    if (idCategoria != null && !idCategoria.equals("" + ConstantesSistema.NUMERO_NAO_INFORMADO)) {
      categoria = new Categoria();
      categoria.setId(new Integer(idCategoria));
    }
    parcelamentoPerfilNova.setCategoria(categoria);

    if (parcelamentoPerfilActionForm.getNumeroConsumoEconomia() != null
        && !parcelamentoPerfilActionForm.getNumeroConsumoEconomia().trim().equals("")) {
      parcelamentoPerfilNova.setNumeroConsumoEconomia(
          new Integer(parcelamentoPerfilActionForm.getNumeroConsumoEconomia()));
    }

    if (parcelamentoPerfilActionForm.getNumeroAreaConstruida() != null
        && !parcelamentoPerfilActionForm.getNumeroAreaConstruida().trim().equals("")) {
      parcelamentoPerfilNova.setNumeroAreaConstruida(
          Util.formatarMoedaRealparaBigDecimal(
              parcelamentoPerfilActionForm.getNumeroAreaConstruida()));
    }

    if (parcelamentoPerfilActionForm.getIndicadorRetroativoTarifaSocial() != null
        && !parcelamentoPerfilActionForm.getIndicadorRetroativoTarifaSocial().equals("")) {
      parcelamentoPerfilNova.setIndicadorRetroativoTarifaSocial(
          new Short(parcelamentoPerfilActionForm.getIndicadorRetroativoTarifaSocial()));
    } else {
      throw new ActionServletException(
          "atencao.campo_selecionado.obrigatorio",
          null,
          "Indicador de retroativo de tarifa social");
    }

    if (parcelamentoPerfilActionForm.getAnoMesReferenciaLimiteInferior() != null
        && !parcelamentoPerfilActionForm.getAnoMesReferenciaLimiteInferior().trim().equals("")) {
      parcelamentoPerfilNova.setAnoMesReferenciaLimiteInferior(
          new Integer(
              Util.formatarMesAnoParaAnoMesSemBarra(
                  parcelamentoPerfilActionForm.getAnoMesReferenciaLimiteInferior())));
    }

    if (parcelamentoPerfilActionForm.getAnoMesReferenciaLimiteSuperior() != null
        && !parcelamentoPerfilActionForm.getAnoMesReferenciaLimiteSuperior().trim().equals("")) {
      parcelamentoPerfilNova.setAnoMesReferenciaLimiteSuperior(
          new Integer(
              Util.formatarMesAnoParaAnoMesSemBarra(
                  parcelamentoPerfilActionForm.getAnoMesReferenciaLimiteSuperior())));
    }

    if (parcelamentoPerfilActionForm.getPercentualDescontoTarifaSocial() != null
        && !parcelamentoPerfilActionForm.getPercentualDescontoTarifaSocial().trim().equals("")) {
      BigDecimal percentual =
          Util.formatarMoedaRealparaBigDecimal(
              parcelamentoPerfilActionForm.getPercentualDescontoTarifaSocial());
      verificarPercentualMaximo(percentual);
      parcelamentoPerfilNova.setPercentualDescontoTarifaSocial(percentual);
    }

    if (parcelamentoPerfilActionForm.getParcelaQuantidadeMinimaFatura() != null
        && !parcelamentoPerfilActionForm.getParcelaQuantidadeMinimaFatura().trim().equals("")) {
      parcelamentoPerfilNova.setParcelaQuantidadeMinimaFatura(
          new Integer(parcelamentoPerfilActionForm.getParcelaQuantidadeMinimaFatura()));
    }

    if (parcelamentoPerfilActionForm.getIndicadorAlertaParcelaMinima() != null
        && !parcelamentoPerfilActionForm.getIndicadorAlertaParcelaMinima().equals("")) {
      parcelamentoPerfilNova.setIndicadorAlertaParcelaMinima(
          new Short(parcelamentoPerfilActionForm.getIndicadorAlertaParcelaMinima()));
    } else {
      throw new ActionServletException(
          "atencao.campo_selecionado.obrigatorio", null, "Indicador de alerta de parcela mínima");
    }

    if (parcelamentoPerfilActionForm.getPercentualDescontoSancao() != null
        && !parcelamentoPerfilActionForm.getPercentualDescontoSancao().trim().equals("")) {
      BigDecimal percentual =
          Util.formatarMoedaRealparaBigDecimal(
              parcelamentoPerfilActionForm.getPercentualDescontoSancao());
      verificarPercentualMaximo(percentual);
      parcelamentoPerfilNova.setPercentualDescontoSancao(percentual);
    }

    if (parcelamentoPerfilActionForm.getQuantidadeEconomias() != null
        && !parcelamentoPerfilActionForm.getQuantidadeEconomias().trim().equals("")) {
      parcelamentoPerfilNova.setQuantidadeEconomias(
          new Integer(parcelamentoPerfilActionForm.getQuantidadeEconomias()));
    }

    if (parcelamentoPerfilActionForm.getCapacidadeHidrometro() != null
        && !parcelamentoPerfilActionForm.getCapacidadeHidrometro().trim().equals("")) {
      parcelamentoPerfilNova.setCapacidadeHidrometro(
          new Short(parcelamentoPerfilActionForm.getCapacidadeHidrometro()));
    }

    if (parcelamentoPerfilActionForm.getIndicadorEntradaMinima() != null
        && !parcelamentoPerfilActionForm.getIndicadorEntradaMinima().equals("")) {
      parcelamentoPerfilNova.setIndicadorEntradaMinima(
          new Short(parcelamentoPerfilActionForm.getIndicadorEntradaMinima()));
    } else {
      throw new ActionServletException(
          "atencao.campo_selecionado.obrigatorio", null, "Indicador de entrada mínima");
    }

    if (parcelamentoPerfilActionForm.getQuantidadeMaximaReparcelamento() != null
        && !parcelamentoPerfilActionForm.getQuantidadeMaximaReparcelamento().trim().equals("")) {
      parcelamentoPerfilNova.setQuantidadeMaximaReparcelamento(
          new Integer(parcelamentoPerfilActionForm.getQuantidadeMaximaReparcelamento()));
    }

    if (parcelamentoPerfilActionForm.getDataLimiteDescontoPagamentoAVista() != null
        && !parcelamentoPerfilActionForm.getDataLimiteDescontoPagamentoAVista().trim().equals("")) {
      parcelamentoPerfilNova.setDataLimiteDescontoPagamentoAVista(
          Util.converteStringParaDate(
              parcelamentoPerfilActionForm.getDataLimiteDescontoPagamentoAVista()));
    }

    parcelamentoPerfilNova.setUltimaAlteracao(new Date());

    Integer idPerfilParcelamento =
        fachada.inserirPerfilParcelamento(
            parcelamentoPerfilNova,
            collectionParcelamentoQuantidadeReparcelamentoHelper,
            collectionParcelamentoDescontoInatividade,
            collectionParcelamentoDescontoAntiguidade,
            this.getUsuarioLogado(httpServletRequest),
            collectionParcelamentoDescontoInatividadeAVista);

    sessao.removeAttribute("collectionParcelamentoQuantidadeReparcelamentoHelper");
    sessao.removeAttribute("collectionParcelamentoDescontoInatividade");
    sessao.removeAttribute("collectionParcelamentoDescontoAntiguidade");
    sessao.removeAttribute("collectionParcelamentoDescontoInatividadeAVista");

    FiltroResolucaoDiretoria filtroResolucaoDiretoria = new FiltroResolucaoDiretoria();
    filtroResolucaoDiretoria.adicionarParametro(
        new ParametroSimples(FiltroResolucaoDiretoria.CODIGO, idResolucaoDiretoria));
    Collection<ResolucaoDiretoria> collectionResolucaoDiretoria =
        fachada.pesquisar(filtroResolucaoDiretoria, ResolucaoDiretoria.class.getName());
    String numeroResolucaoDiretoria =
        ((ResolucaoDiretoria) Util.retonarObjetoDeColecao(collectionResolucaoDiretoria))
            .getNumeroResolucaoDiretoria();

    montarPaginaSucesso(
        httpServletRequest,
        "Perfil de Parcelamento da RD de número "
            + numeroResolucaoDiretoria
            + " inserido com sucesso.",
        "Inserir outro Perfil de Parcelamento",
        "exibirInserirPerfilParcelamentoAction.do?desfazer=S",
        "exibirAtualizarPerfilParcelamentoAction.do?idRegistroInseridoAtualizar="
            + idPerfilParcelamento,
        "Atualizar Perfil de Parcelamento Inserido");

    // devolve o mapeamento de retorno
    return retorno;
  }
  public ActionForward execute(
      ActionMapping actionMapping,
      ActionForm actionForm,
      HttpServletRequest httpServletRequest,
      HttpServletResponse httpServletResponse) {

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

    HttpSession sessao = httpServletRequest.getSession(false);

    Fachada fachada = Fachada.getInstancia();

    /** pega o tipo de resumo da sessao para direcionar o forward */
    String tipoResumo = (String) sessao.getAttribute("tipoResumo");

    if ("ANORMALIDADE".trim().equalsIgnoreCase(tipoResumo)) {
      retorno = actionMapping.findForward("informarConsultarResumoAnormalidade");
    } else if ("PENDENCIA".trim().equalsIgnoreCase(tipoResumo)) {
      retorno = actionMapping.findForward("informarConsultarResumoPendencia");
    } else if ("LIGACAO_EC0NOMIA".trim().equalsIgnoreCase(tipoResumo)) {
      retorno = actionMapping.findForward("informarConsultarResumoLigacoesEconomia");
    } else if ("ANALISE".trim().equalsIgnoreCase(tipoResumo)) {
      retorno = actionMapping.findForward("informarConsultarResumoAnaliseFaturamento");
    } else if ("COMPARATIVORESUMOS".trim().equalsIgnoreCase(tipoResumo)) {
      retorno =
          actionMapping.findForward("consultarComparativoResumosFaturamentoArrecadacaoPendencia");
    } else if ("ACAOCOBRANCA".trim().equalsIgnoreCase(tipoResumo)) {
      retorno = actionMapping.findForward("consultarResumoAcaoCobrancaParametros");

      // Monta o Status do Wizard
      StatusWizard statusWizard =
          new StatusWizard(
              "consultarResumoAcaoCobrancaWizardAction",
              "exibirInformarDadosGeracaoRelatorioConsultaAction",
              "cancelarConsultarResumoAcaoCobrancaAction",
              "exibirInformarDadosGeracaoRelatorioConsultaAction",
              "informarDadosGeracaoRelatorioConsultaAction.do");

      statusWizard.inserirNumeroPaginaCaminho(
          statusWizard
          .new StatusWizardItem(
              1,
              "ParametrosPrimeiraAbaA.gif",
              "ParametrosPrimeiraAbaD.gif",
              "exibirDadosGeracaoConsultaAction",
              ""));
      statusWizard.inserirNumeroPaginaCaminho(
          statusWizard
          .new StatusWizardItem(
              2,
              "UnidadeNegocioA.gif",
              "UnidadeNegocioD.gif",
              "exibirConsultarResumoAcaoCobrancaAction",
              ""));

      // manda o statusWizard para a sessão
      sessao.setAttribute("statusWizard", statusWizard);
    }

    InformarDadosGeracaoRelatorioConsultaActionForm
        informarDadosGeracaoRelatorioConsultaActionForm =
            (InformarDadosGeracaoRelatorioConsultaActionForm) actionForm;

    String mesAnoFaturamento =
        informarDadosGeracaoRelatorioConsultaActionForm.getMesAnoFaturamento();
    Integer opcaoTotalizacao =
        new Integer(informarDadosGeracaoRelatorioConsultaActionForm.getOpcaoTotalizacao());

    Integer idFaturamentoGrupo = null;
    if (informarDadosGeracaoRelatorioConsultaActionForm.getGrupoFaturamento() != null
        && !informarDadosGeracaoRelatorioConsultaActionForm.getGrupoFaturamento().equals("")) {

      idFaturamentoGrupo =
          new Integer(informarDadosGeracaoRelatorioConsultaActionForm.getGrupoFaturamento());
    }

    Integer idCobrancaGrupo = null;
    if (informarDadosGeracaoRelatorioConsultaActionForm.getGrupoCobranca() != null
        && !informarDadosGeracaoRelatorioConsultaActionForm.getGrupoCobranca().equals("")) {

      idCobrancaGrupo =
          new Integer(informarDadosGeracaoRelatorioConsultaActionForm.getGrupoCobranca());
    }

    Integer idGerenciaRegional = null;
    if (informarDadosGeracaoRelatorioConsultaActionForm.getGerencialRegional() != null
        && !informarDadosGeracaoRelatorioConsultaActionForm.getGerencialRegional().equals("")) {

      idGerenciaRegional =
          new Integer(informarDadosGeracaoRelatorioConsultaActionForm.getGerencialRegional());
    }

    Integer idUnidadeNegocio = null;
    if (informarDadosGeracaoRelatorioConsultaActionForm.getUnidadeNegocio() != null
        && !informarDadosGeracaoRelatorioConsultaActionForm.getUnidadeNegocio().equals("")) {

      idUnidadeNegocio =
          new Integer(informarDadosGeracaoRelatorioConsultaActionForm.getUnidadeNegocio());
    }

    Integer idEloPolo = null;
    if (informarDadosGeracaoRelatorioConsultaActionForm.getEloPolo() != null
        && !informarDadosGeracaoRelatorioConsultaActionForm.getEloPolo().equals("")) {

      idEloPolo = new Integer(informarDadosGeracaoRelatorioConsultaActionForm.getEloPolo());
    }

    Integer idLocalidade = null;
    if (informarDadosGeracaoRelatorioConsultaActionForm.getLocalidade() != null
        && !informarDadosGeracaoRelatorioConsultaActionForm.getLocalidade().equals("")) {

      idLocalidade = new Integer(informarDadosGeracaoRelatorioConsultaActionForm.getLocalidade());
    }

    Integer idMunicipio = null;
    if (informarDadosGeracaoRelatorioConsultaActionForm.getMunicipio() != null
        && !informarDadosGeracaoRelatorioConsultaActionForm.getMunicipio().equals("")) {

      idMunicipio = new Integer(informarDadosGeracaoRelatorioConsultaActionForm.getMunicipio());
    }

    Integer idSetorComercial = null;
    if (informarDadosGeracaoRelatorioConsultaActionForm.getSetorComercial() != null
        && !informarDadosGeracaoRelatorioConsultaActionForm.getSetorComercial().equals("")) {

      if (informarDadosGeracaoRelatorioConsultaActionForm.getIdSetorComercial() != null
          && !informarDadosGeracaoRelatorioConsultaActionForm.getIdSetorComercial().equals("")) {

        idSetorComercial =
            new Integer(informarDadosGeracaoRelatorioConsultaActionForm.getIdSetorComercial());
      } else {

        FiltroSetorComercial filtroSetorComercial = new FiltroSetorComercial();

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

        filtroSetorComercial.adicionarParametro(
            new ParametroSimples(
                FiltroSetorComercial.CODIGO_SETOR_COMERCIAL,
                informarDadosGeracaoRelatorioConsultaActionForm.getSetorComercial()));

        filtroSetorComercial.adicionarParametro(
            new ParametroSimples(
                FiltroSetorComercial.INDICADORUSO, ConstantesSistema.INDICADOR_USO_ATIVO));

        Collection colecaoPesquisa =
            fachada.pesquisar(filtroSetorComercial, SetorComercial.class.getName());

        if (colecaoPesquisa == null || colecaoPesquisa.isEmpty()) {
          throw new ActionServletException("atencao.pesquisa_inexistente", null, "Setor Comercial");
        }

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

        idSetorComercial = setorComercial.getId();
      }
    }

    Integer nmQuadra = null;
    if (informarDadosGeracaoRelatorioConsultaActionForm.getQuadra() != null
        && !informarDadosGeracaoRelatorioConsultaActionForm.getQuadra().equals("")) {

      FiltroQuadra filtroQuadra = new FiltroQuadra();
      // filtroQuadra.adicionarCaminhoParaCarregamentoEntidade("bairro");

      filtroQuadra.adicionarParametro(
          new ParametroSimples(FiltroQuadra.ID_SETORCOMERCIAL, idSetorComercial));

      filtroQuadra.adicionarParametro(
          new ParametroSimples(
              FiltroQuadra.NUMERO_QUADRA,
              informarDadosGeracaoRelatorioConsultaActionForm.getQuadra()));

      filtroQuadra.adicionarParametro(
          new ParametroSimples(FiltroQuadra.INDICADORUSO, ConstantesSistema.INDICADOR_USO_ATIVO));

      Collection colecaoPesquisa = fachada.pesquisar(filtroQuadra, Quadra.class.getName());

      if (colecaoPesquisa == null || colecaoPesquisa.isEmpty()) {
        throw new ActionServletException("atencao.pesquisa_inexistente", null, "Quadra");
      }

      nmQuadra = new Integer(informarDadosGeracaoRelatorioConsultaActionForm.getQuadra());
    }

    String[] imovelPerfil = informarDadosGeracaoRelatorioConsultaActionForm.getPerfilImovel();
    String[] ligacaoAguaSituacao =
        informarDadosGeracaoRelatorioConsultaActionForm.getSituacaoLigacaoAgua();
    String[] ligacaoEsgotoSituacao =
        informarDadosGeracaoRelatorioConsultaActionForm.getSituacaoLigacaoEsgoto();
    String[] categoria = informarDadosGeracaoRelatorioConsultaActionForm.getCategoria();
    String[] esferaPoder = informarDadosGeracaoRelatorioConsultaActionForm.getEsferaPoder();

    Integer tipoAnaliseFaturamento = null;
    if (informarDadosGeracaoRelatorioConsultaActionForm.getTipoAnaliseFaturamento() != null
        && !informarDadosGeracaoRelatorioConsultaActionForm
            .getTipoAnaliseFaturamento()
            .equals("")) {

      tipoAnaliseFaturamento =
          new Integer(informarDadosGeracaoRelatorioConsultaActionForm.getTipoAnaliseFaturamento());
    }

    /** [RR2011071026] Autor: Paulo Diniz Data: 21/07/2011 Resumo da Análise do Faturamento */
    Integer idRota = null;
    if (informarDadosGeracaoRelatorioConsultaActionForm.getIdRota() != null
        && !informarDadosGeracaoRelatorioConsultaActionForm.getIdRota().equals("")) {
      idRota = new Integer(informarDadosGeracaoRelatorioConsultaActionForm.getIdRota());
    }

    // Tipo de Relatório
    Integer tipoRelatorio = null;
    if (httpServletRequest.getAttribute("tipoRelatorio") != null) {
      tipoRelatorio = (Integer) httpServletRequest.getAttribute("tipoRelatorio");
    }

    // [UC0304] Informar Dados para Geração de Relatório ou Consulta
    InformarDadosGeracaoRelatorioConsultaHelper informarDadosGeracaoRelatorioConsultaHelper =
        fachada.informarDadosGeracaoRelatorioConsulta(
            mesAnoFaturamento,
            opcaoTotalizacao,
            idFaturamentoGrupo,
            idCobrancaGrupo,
            idGerenciaRegional,
            idEloPolo,
            idLocalidade,
            idSetorComercial,
            nmQuadra,
            imovelPerfil,
            ligacaoAguaSituacao,
            ligacaoEsgotoSituacao,
            categoria,
            esferaPoder,
            tipoAnaliseFaturamento,
            tipoRelatorio,
            idUnidadeNegocio,
            idMunicipio,
            idRota);

    sessao.setAttribute(
        "informarDadosGeracaoRelatorioConsultaHelper", informarDadosGeracaoRelatorioConsultaHelper);

    ImovelPerfil imovelPerfilColecao = new ImovelPerfil();
    imovelPerfilColecao.setId(-1);

    Collection colecaoImovelPerfil = new ArrayList();

    int i = 0;

    if (imovelPerfil != null) {
      imovelPerfilColecao.setDescricao("OPÇÕES SELECIONADAS");
      colecaoImovelPerfil.add(imovelPerfilColecao);
      FiltroImovelPerfil filtroImovelPerfil = new FiltroImovelPerfil();

      for (i = 0; i < imovelPerfil.length; i++) {
        if (!imovelPerfil[i].equals("")
            && !imovelPerfil[i].equals("" + ConstantesSistema.NUMERO_NAO_INFORMADO)) {

          if (i + 1 < imovelPerfil.length) {
            filtroImovelPerfil.adicionarParametro(
                new ParametroSimples(
                    FiltroImovelPerfil.ID,
                    imovelPerfil[i],
                    ConectorOr.CONECTOR_OR,
                    imovelPerfil.length));

          } else {
            filtroImovelPerfil.adicionarParametro(
                new ParametroSimples(FiltroImovelPerfil.ID, imovelPerfil[i]));
          }
        }
      }

      filtroImovelPerfil.setCampoOrderBy(FiltroImovelPerfil.DESCRICAO);

      Collection colecaoImovelPerfilPesquisa =
          fachada.pesquisar(filtroImovelPerfil, ImovelPerfil.class.getName());

      if (colecaoImovelPerfilPesquisa != null && !colecaoImovelPerfilPesquisa.isEmpty()) {
        colecaoImovelPerfil.addAll(colecaoImovelPerfilPesquisa);
      }
    } else {
      imovelPerfilColecao.setDescricao("TODOS");
      colecaoImovelPerfil.add(imovelPerfilColecao);
    }

    sessao.setAttribute("colecaoImovelPerfilResultado", colecaoImovelPerfil);

    LigacaoAguaSituacao ligacaoAguaSituacaoColecao = new LigacaoAguaSituacao();
    ligacaoAguaSituacaoColecao.setId(-1);

    Collection colecaoLigacaoAguaSituacao = new ArrayList();

    i = 0;

    if (ligacaoAguaSituacao != null) {
      ligacaoAguaSituacaoColecao.setDescricao("OPÇÕES SELECIONADAS");
      colecaoLigacaoAguaSituacao.add(ligacaoAguaSituacaoColecao);
      FiltroLigacaoAguaSituacao filtroLigacaoAguaSituacao = new FiltroLigacaoAguaSituacao();

      for (i = 0; i < ligacaoAguaSituacao.length; i++) {
        if (!ligacaoAguaSituacao[i].equals("")
            && !ligacaoAguaSituacao[i].equals("" + ConstantesSistema.NUMERO_NAO_INFORMADO)) {

          if (i + 1 < ligacaoAguaSituacao.length) {
            filtroLigacaoAguaSituacao.adicionarParametro(
                new ParametroSimples(
                    FiltroLigacaoAguaSituacao.ID,
                    ligacaoAguaSituacao[i],
                    ConectorOr.CONECTOR_OR,
                    ligacaoAguaSituacao.length));

          } else {
            filtroLigacaoAguaSituacao.adicionarParametro(
                new ParametroSimples(FiltroLigacaoAguaSituacao.ID, ligacaoAguaSituacao[i]));
          }
        }
      }

      filtroLigacaoAguaSituacao.setCampoOrderBy(FiltroLigacaoAguaSituacao.DESCRICAO);

      Collection colecaoLigacaoAguaSituacaoPesquisa =
          fachada.pesquisar(filtroLigacaoAguaSituacao, LigacaoAguaSituacao.class.getName());

      if (colecaoLigacaoAguaSituacaoPesquisa != null
          && !colecaoLigacaoAguaSituacaoPesquisa.isEmpty()) {
        colecaoLigacaoAguaSituacao.addAll(colecaoLigacaoAguaSituacaoPesquisa);
      }
    } else {
      ligacaoAguaSituacaoColecao.setDescricao("TODOS");
      colecaoLigacaoAguaSituacao.add(ligacaoAguaSituacaoColecao);
    }

    sessao.setAttribute("colecaoLigacaoAguaSituacaoResultado", colecaoLigacaoAguaSituacao);

    LigacaoEsgotoSituacao ligacaoEsgotoSituacaoColecao = new LigacaoEsgotoSituacao();
    ligacaoAguaSituacaoColecao.setId(-1);

    Collection colecaoLigacaoEsgotoSituacao = new ArrayList();

    i = 0;

    if (ligacaoEsgotoSituacao != null) {
      ligacaoEsgotoSituacaoColecao.setDescricao("OPÇÕES SELECIONADAS");
      colecaoLigacaoEsgotoSituacao.add(ligacaoEsgotoSituacaoColecao);
      FiltroLigacaoEsgotoSituacao filtroLigacaoEsgotoSituacao = new FiltroLigacaoEsgotoSituacao();

      for (i = 0; i < ligacaoEsgotoSituacao.length; i++) {
        if (!ligacaoEsgotoSituacao[i].equals("")
            && !ligacaoEsgotoSituacao[i].equals("" + ConstantesSistema.NUMERO_NAO_INFORMADO)) {

          if (i + 1 < ligacaoEsgotoSituacao.length) {
            filtroLigacaoEsgotoSituacao.adicionarParametro(
                new ParametroSimples(
                    FiltroLigacaoEsgotoSituacao.ID,
                    ligacaoEsgotoSituacao[i],
                    ConectorOr.CONECTOR_OR,
                    ligacaoEsgotoSituacao.length));

          } else {
            filtroLigacaoEsgotoSituacao.adicionarParametro(
                new ParametroSimples(FiltroLigacaoEsgotoSituacao.ID, ligacaoEsgotoSituacao[i]));
          }
        }
      }

      filtroLigacaoEsgotoSituacao.setCampoOrderBy(FiltroLigacaoEsgotoSituacao.DESCRICAO);

      Collection colecaoLigacaoEsgotoSituacaoPesquisa =
          fachada.pesquisar(filtroLigacaoEsgotoSituacao, LigacaoEsgotoSituacao.class.getName());

      if (colecaoLigacaoEsgotoSituacaoPesquisa != null
          && !colecaoLigacaoEsgotoSituacaoPesquisa.isEmpty()) {
        colecaoLigacaoEsgotoSituacao.addAll(colecaoLigacaoEsgotoSituacaoPesquisa);
      }
    } else {
      ligacaoEsgotoSituacaoColecao.setDescricao("TODOS");
      colecaoLigacaoEsgotoSituacao.add(ligacaoEsgotoSituacaoColecao);
    }

    sessao.setAttribute("colecaoLigacaoEsgotoSituacaoResultado", colecaoLigacaoEsgotoSituacao);

    Categoria categoriaColecao = new Categoria();
    categoriaColecao.setId(-1);

    Collection colecaoCategoria = new ArrayList();

    i = 0;

    if (categoria != null) {
      categoriaColecao.setDescricao("OPÇÕES SELECIONADAS");
      colecaoCategoria.add(categoriaColecao);
      FiltroCategoria filtroCategoria = new FiltroCategoria();

      for (i = 0; i < categoria.length; i++) {
        if (!categoria[i].equals("")
            && !categoria[i].equals("" + ConstantesSistema.NUMERO_NAO_INFORMADO)) {

          if (i + 1 < categoria.length) {
            filtroCategoria.adicionarParametro(
                new ParametroSimples(
                    FiltroCategoria.CODIGO,
                    categoria[i],
                    ConectorOr.CONECTOR_OR,
                    categoria.length));

          } else {
            filtroCategoria.adicionarParametro(
                new ParametroSimples(FiltroCategoria.CODIGO, categoria[i]));
          }
        }
      }

      filtroCategoria.setCampoOrderBy(FiltroCategoria.DESCRICAO);

      Collection colecaoCategoriaPesquisa =
          fachada.pesquisar(filtroCategoria, Categoria.class.getName());

      if (colecaoCategoriaPesquisa != null && !colecaoCategoriaPesquisa.isEmpty()) {
        colecaoCategoria.addAll(colecaoCategoriaPesquisa);
      }
    } else {
      categoriaColecao.setDescricao("TODOS");
      colecaoCategoria.add(categoriaColecao);
    }

    sessao.setAttribute("colecaoCategoriaResultado", colecaoCategoria);

    EsferaPoder esferaPoderColecao = new EsferaPoder();
    esferaPoderColecao.setId(-1);

    Collection colecaoEsferaPoder = new ArrayList();

    i = 0;

    if (esferaPoder != null) {
      esferaPoderColecao.setDescricao("OPÇÕES SELECIONADAS");
      colecaoEsferaPoder.add(esferaPoderColecao);
      FiltroEsferaPoder filtroEsferaPoder = new FiltroEsferaPoder();

      for (i = 0; i < esferaPoder.length; i++) {
        if (!esferaPoder[i].equals("")
            && !esferaPoder[i].equals("" + ConstantesSistema.NUMERO_NAO_INFORMADO)) {

          if (i + 1 < esferaPoder.length) {
            filtroEsferaPoder.adicionarParametro(
                new ParametroSimples(
                    FiltroEsferaPoder.ID,
                    esferaPoder[i],
                    ConectorOr.CONECTOR_OR,
                    esferaPoder.length));

          } else {
            filtroEsferaPoder.adicionarParametro(
                new ParametroSimples(FiltroEsferaPoder.ID, esferaPoder[i]));
          }
        }
      }

      filtroEsferaPoder.setCampoOrderBy(FiltroEsferaPoder.DESCRICAO);

      Collection colecaoEsferaPoderPesquisa =
          fachada.pesquisar(filtroEsferaPoder, EsferaPoder.class.getName());

      if (colecaoEsferaPoderPesquisa != null && !colecaoEsferaPoderPesquisa.isEmpty()) {
        colecaoEsferaPoder.addAll(colecaoEsferaPoderPesquisa);
      }
    } else {
      esferaPoderColecao.setDescricao("TODOS");
      colecaoEsferaPoder.add(esferaPoderColecao);
    }

    sessao.setAttribute("colecaoEsferaPoderResultado", colecaoEsferaPoder);

    return retorno;
  }