private void validacaoFinal(
      String numeroResolucaoDiretoria,
      String imovelSituacaoTipo,
      String imovelPerfil,
      String subcategoria,
      String percentualDescontoAcrescimoMulta,
      String percentualDescontoAcrescimoJurosMora,
      String percentualDescontoAcrescimoAtualizacaoMonetaria,
      HttpServletRequest httpServletRequest,
      Collection collectionParcelamentoQuantidadeReparcelamentoHelper,
      Collection collectionParcelamentoDescontoAntiguidade,
      Collection collectionParcelamentoDescontoInatividade,
      String percentualTarifaMinimaPrestacao,
      Collection collectionParcelamentoDescontoInatividadeAVista,
      String percentualDescontoAcrescimoPagamentoAVista) {

    if (!Util.verificarNaoVazio(numeroResolucaoDiretoria)) {
      httpServletRequest.setAttribute("nomeCampo", "numeroResolucaoDiretoria");
      // Informe Numero da RD.
      throw new ActionServletException("atencao.numero_rd_nao_informado");
    }

    if ((imovelSituacaoTipo == null)
        || (imovelSituacaoTipo.equals("" + ConstantesSistema.NUMERO_NAO_INFORMADO))) {
      httpServletRequest.setAttribute("nomeCampo", "imovelSituacaoTipo");
      // Informe Tipo da Situação do Imóvel
      throw new ActionServletException("atencao.tipo_situacao_imovel_nao_informado");
    }
    /*
    if ((imovelPerfil == null)
    		|| (imovelPerfil.equals("" + ConstantesSistema.NUMERO_NAO_INFORMADO))) {
    	httpServletRequest.setAttribute("nomeCampo","imovelPerfil");
    	//Informe Perfil do Imóvel
    	throw new ActionServletException("atencao.perfil_imovel_nao_informado");
    }

    if ((subcategoria == null)
    		|| (subcategoria.equals("" + ConstantesSistema.NUMERO_NAO_INFORMADO))) {
    	httpServletRequest.setAttribute("nomeCampo","subcategoria");
    	//Informe Subcategoria
    	throw new ActionServletException("atencao.subcategoria_nao_informado");
    }

      	if (percentualDescontoAcrescimo == null ||
      			percentualDescontoAcrescimo.equalsIgnoreCase("")){
      		httpServletRequest.setAttribute("nomeCampo","percentualDescontoAcrescimo");
      		//Informe Percentual de Desconto sobre os Acréscimos  por Impontualidade
      		throw new ActionServletException("atencao.percentual_desconto_nao_informado");
      	}
      	*/

    /*
     *
     */
    if (percentualDescontoAcrescimoMulta == null
        || percentualDescontoAcrescimoMulta.equalsIgnoreCase("")) {
      httpServletRequest.setAttribute("nomeCampo", "percentualDescontoAcrescimoMulta");
      // Informe Percentual de Desconto sobre Multa
      throw new ActionServletException(
          "atencao.required", null, " Percentual de Desconto sobre Multa");
    }

    if (percentualDescontoAcrescimoJurosMora == null
        || percentualDescontoAcrescimoJurosMora.equalsIgnoreCase("")) {
      httpServletRequest.setAttribute("nomeCampo", "percentualDescontoAcrescimoJurosMora");
      // Informe Percentual de Desconto sobre Juros Mora
      throw new ActionServletException(
          "atencao.required", null, " Percentual de Desconto sobre Juros Mora");
    }

    if (percentualDescontoAcrescimoAtualizacaoMonetaria == null
        || percentualDescontoAcrescimoAtualizacaoMonetaria.equalsIgnoreCase("")) {
      httpServletRequest.setAttribute(
          "nomeCampo", "percentualDescontoAcrescimoAtualizacaoMonetaria");
      // Informe Percentual de Desconto sobre Atualização Monetária
      throw new ActionServletException(
          "atencao.required", null, " Percentual de Desconto sobre Atualização Monetária");
    }

    if (percentualDescontoAcrescimoPagamentoAVista == null
        || percentualDescontoAcrescimoPagamentoAVista.equalsIgnoreCase("")) {
      httpServletRequest.setAttribute("nomeCampo", "percentualDescontoAcrescimoPagamentoAVista");
      // Informe Percentual de Desconto sobre os Acréscimos por Impontualidade para pagamento à
      // vista
      throw new ActionServletException(
          "atencao.required",
          null,
          " Percentual de Desconto sobre os Acréscimos por Impontualidade para pagamento à vista");
    }
    // fim alteração

    if (percentualTarifaMinimaPrestacao == null
        || percentualTarifaMinimaPrestacao.equalsIgnoreCase("")) {
      httpServletRequest.setAttribute("nomeCampo", "percentualTarifaMinimaPrestacao");
      // Informe  Percentual da Tarifa Mínima para Cálculo do Valor Mínimo da Prestação
      throw new ActionServletException(
          "atencao.required",
          null,
          " Percentual da Tarifa Mínima para Cálculo do Valor Mínimo da Prestação");
    }

    // [FS0008]Verificar existência do perfil de parcelamento
    FiltroParcelamentoPerfil filtroParcelamentoPerfil = new FiltroParcelamentoPerfil();
    filtroParcelamentoPerfil.adicionarCaminhoParaCarregamentoEntidade("resolucaoDiretoria");
    filtroParcelamentoPerfil.adicionarParametro(
        new ParametroSimples(
            FiltroParcelamentoPerfil.RESOLUCAO_DIRETORIA_ID, numeroResolucaoDiretoria));
    filtroParcelamentoPerfil.adicionarCaminhoParaCarregamentoEntidade("imovelSituacaoTipo");
    filtroParcelamentoPerfil.adicionarParametro(
        new ParametroSimples(FiltroParcelamentoPerfil.IMOVEL_SITUACAO_TIPO_ID, imovelSituacaoTipo));
    filtroParcelamentoPerfil.adicionarCaminhoParaCarregamentoEntidade("imovelPerfil");

    if (imovelPerfil == null) {
      filtroParcelamentoPerfil.adicionarParametro(
          new ParametroNulo(FiltroParcelamentoPerfil.IMOVEL_PERFIL_ID));
    } else {
      filtroParcelamentoPerfil.adicionarParametro(
          new ParametroSimples(FiltroParcelamentoPerfil.IMOVEL_PERFIL_ID, imovelPerfil));
    }

    filtroParcelamentoPerfil.adicionarCaminhoParaCarregamentoEntidade("subcategoria");
    if (subcategoria == null) {
      filtroParcelamentoPerfil.adicionarParametro(
          new ParametroNulo(FiltroParcelamentoPerfil.SUBCATEGORIA_ID));
    } else {
      filtroParcelamentoPerfil.adicionarParametro(
          new ParametroSimples(FiltroParcelamentoPerfil.SUBCATEGORIA_ID, subcategoria));
    }

    Collection colecaoParcelamentoPerfil =
        fachada.pesquisar(filtroParcelamentoPerfil, ParcelamentoPerfil.class.getName());

    if (colecaoParcelamentoPerfil != null && !colecaoParcelamentoPerfil.isEmpty()) {
      throw new ActionServletException("atencao.perfil_parcelamento_ja_existe");
    }

    if (collectionParcelamentoQuantidadeReparcelamentoHelper == null
        || collectionParcelamentoQuantidadeReparcelamentoHelper.isEmpty()) {
      // Informe os dados de Reparcelamento Consecutivo
      throw new ActionServletException("atencao.required", null, "Reparcelamento Consecutivo");
    } else {
      Iterator iterator = collectionParcelamentoQuantidadeReparcelamentoHelper.iterator();

      while (iterator.hasNext()) {

        ParcelamentoQuantidadeReparcelamentoHelper parcelamentoQuantidadeReparcelamentoHelper =
            (ParcelamentoQuantidadeReparcelamentoHelper) iterator.next();
        /*
        if (parcelamentoQuantidadeReparcelamentoHelper.getValorMinimoPrestacao() == null){
         //Informe Valor Mínimo da Prestação
         throw new ActionServletException(
        			"atencao.required", null, "Valor Mínimo da Prestação");
        }*/

        Collection collectionParcelamentoQuantidadePrestacaoHelper =
            parcelamentoQuantidadeReparcelamentoHelper
                .getCollectionParcelamentoQuantidadePrestacaoHelper();

        if (collectionParcelamentoQuantidadePrestacaoHelper == null
            || collectionParcelamentoQuantidadePrestacaoHelper.isEmpty()) {
          // Informações do Parcelamento por Quantidade de Reparcelamentos deve ser informado
          throw new ActionServletException(
              "atencao.campo.informado",
              null,
              "Informações do Parcelamento por Quantidade de Reparcelamentos");
        }
      }
    }

    // filtro para descobrir o percentual máximo de desconto permitido para financiamento
    /*FiltroSistemaParametro filtroSistemaParametro = new FiltroSistemaParametro();
    Collection colecaoSistemaParametros;

    	colecaoSistemaParametros = fachada.pesquisar(
    			filtroSistemaParametro, SistemaParametro.class.getName());
    SistemaParametro sistemaParametro = (SistemaParametro)colecaoSistemaParametros
    		.iterator().next();
    BigDecimal percentualMaximoAbatimentoPermitido = sistemaParametro.getPercentualMaximoAbatimento();*/

    if (collectionParcelamentoDescontoAntiguidade != null
        && !collectionParcelamentoDescontoAntiguidade.isEmpty()) {

      Iterator iteratorParcelamentoDescontoAntiguidade =
          collectionParcelamentoDescontoAntiguidade.iterator();

      while (iteratorParcelamentoDescontoAntiguidade.hasNext()) {

        ParcelamentoDescontoAntiguidade parcelamentoDescontoAntiguidade =
            (ParcelamentoDescontoAntiguidade) iteratorParcelamentoDescontoAntiguidade.next();

        if (parcelamentoDescontoAntiguidade.getPercentualDescontoSemRestabelecimento() == null) {
          // Percentual de Desconto Sem Restabelecimento
          throw new ActionServletException(
              "atencao.required", null, "  Percentual de Desconto Sem Restabelecimento");
        } else {
          // [FS0006]Verificar percentual de desconto
          // BigDecimal percentualDescontoSemRestabelecimento =
          // parcelamentoDescontoAntiguidade.getPercentualDescontoSemRestabelecimento();
          /*if (percentualDescontoSemRestabelecimento.compareTo(percentualMaximoAbatimentoPermitido) > 0 ){
          	//Percentual de Desconto Sem Restabelecimento é superior ao
          	//Percentual Máximo de Desconto de << percentualMaximoAbatimento >> permitido para Financiamneto
          	throw new ActionServletException(
          	"atencao.percentual_desconto_sem_rest_superior_percentual_max", null, "" + percentualMaximoAbatimentoPermitido);
          }	*/
        }

        if (parcelamentoDescontoAntiguidade.getPercentualDescontoComRestabelecimento() == null) {
          // Informe  Percentual de Desconto Com Restabelecimento
          throw new ActionServletException(
              "atencao.required", null, "  Percentual de Desconto Com Restabelecimento");
        } else {
          // [FS0006]Verificar percentual de desconto
          // BigDecimal percentualDescontoComRestabelecimento =
          // parcelamentoDescontoAntiguidade.getPercentualDescontoComRestabelecimento();
          /*if (percentualDescontoComRestabelecimento.compareTo(percentualMaximoAbatimentoPermitido) > 0  ){
          	//Percentual de Desconto Cem Restabelecimento é superior ao
          	//Percentual Máximo de Desconto de << percentualMaximoAbatimento >> permitido para Financiamneto
          	throw new ActionServletException(
          	"atencao.percentual_desconto_sem_rest_superior_percentual_max", null, "" + percentualMaximoAbatimentoPermitido);
          }*/
        }

        if (parcelamentoDescontoAntiguidade.getPercentualDescontoAtivo() == null) {
          throw new ActionServletException(
              // Informe  Percentual de Desconto Ativo
              "atencao.required", null, "  Percentual de Desconto Ativo");
        } else {
          // [FS0006]Verificar percentual de desconto
          // BigDecimal percentualDescontoAtivo =
          // parcelamentoDescontoAntiguidade.getPercentualDescontoAtivo();
          /*if (percentualDescontoAtivo.compareTo(percentualMaximoAbatimentoPermitido) > 0  ){
          	//Percentual de Desconto Ativo é superior ao
          	//Percentual Máximo de Desconto de << percentualMaximoAbatimento >> permitido para Financiamneto
          	throw new ActionServletException(
          	"atencao.percentual_desconto_sem_rest_superior_percentual_max", null, "" + percentualMaximoAbatimentoPermitido);
          }	*/
        }
      }
    }

    if (collectionParcelamentoDescontoInatividade != null
        && !collectionParcelamentoDescontoInatividade.isEmpty()) {

      Iterator iteratorParcelamentoDescontoInatividade =
          collectionParcelamentoDescontoInatividade.iterator();

      while (iteratorParcelamentoDescontoInatividade.hasNext()) {

        ParcelamentoDescontoInatividade parcelamentoDescontoInatividade =
            (ParcelamentoDescontoInatividade) iteratorParcelamentoDescontoInatividade.next();

        if (parcelamentoDescontoInatividade.getPercentualDescontoSemRestabelecimento() == null) {
          throw new ActionServletException(
              //  Percentual de Desconto Sem Restabelecimento
              "atencao.required", null, "  Percentual de Desconto Sem Restabelecimento");
        } // else{
        // [FS0006]Verificar percentual de desconto
        // BigDecimal percentualDescontoSemRestabelecimento =
        // parcelamentoDescontoInatividade.getPercentualDescontoSemRestabelecimento();
        /*if (percentualDescontoSemRestabelecimento.compareTo(percentualMaximoAbatimentoPermitido) > 0  ){
        	//Percentual de Desconto Sem Restabelecimento é superior ao
        	//Percentual Máximo de Desconto de << percentualMaximoAbatimento >> permitido para Financiamneto
        	throw new ActionServletException(
        	"atencao.percentual_desconto_sem_rest_superior_percentual_max", null, "" + percentualMaximoAbatimentoPermitido);
        }	*/
        // }

        if (parcelamentoDescontoInatividade.getPercentualDescontoComRestabelecimento() == null) {
          throw new ActionServletException(
              // Informe  Percentual de Desconto Com Restabelecimento
              "atencao.required", null, "  Percentual de Desconto Com Restabelecimento");
        } // else{
        // [FS0006]Verificar percentual de desconto
        // BigDecimal percentualDescontoComRestabelecimento =
        // parcelamentoDescontoInatividade.getPercentualDescontoComRestabelecimento();
        /*if (percentualDescontoComRestabelecimento.compareTo(percentualMaximoAbatimentoPermitido) > 0  ){
        	//Percentual de Desconto Cem Restabelecimento é superior ao
        	//Percentual Máximo de Desconto de << percentualMaximoAbatimento >> permitido para Financiamneto
        	throw new ActionServletException(
        	"atencao.percentual_desconto_sem_rest_superior_percentual_max", null, "" + percentualMaximoAbatimentoPermitido);
        }*/
        // }

      }
    }

    if (collectionParcelamentoDescontoInatividadeAVista != null
        && !collectionParcelamentoDescontoInatividadeAVista.isEmpty()) {

      Iterator iteratorParcelamentoDescontoInatividade =
          collectionParcelamentoDescontoInatividadeAVista.iterator();

      while (iteratorParcelamentoDescontoInatividade.hasNext()) {

        ParcDesctoInativVista parcelamentoDescontoInatividade =
            (ParcDesctoInativVista) iteratorParcelamentoDescontoInatividade.next();

        if (parcelamentoDescontoInatividade.getPercentualDescontoSemRestabelecimento() == null) {
          throw new ActionServletException(
              //  Percentual de Desconto Sem Restabelecimento
              "atencao.required", null, "  Percentual de Desconto Sem Restabelecimento");
        }

        if (parcelamentoDescontoInatividade.getPercentualDescontoComRestabelecimento() == null) {
          throw new ActionServletException(
              // Informe  Percentual de Desconto Com Restabelecimento
              "atencao.required", null, "  Percentual de Desconto Com Restabelecimento");
        }
      }
    }
  }
  /**
   * @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;
  }