private String validarFormulario(InserirResolucaoDiretoriaContratoParcelamentoActionForm form) {
    String retorno = "";

    if (form.getNumero() == null || "".equals(form.getNumero())) {
      retorno = "Número ";
    }
    if (form.getAssunto() == null || "".equals(form.getAssunto())) {
      retorno = "Assunto ";
    }
    if (form.getDataVigenciaInicial() == null || "".equals(form.getDataVigenciaInicial())) {
      retorno = "Data Vigência Inicial ";
    }
    if (form.getDataVigenciaFinal() == null || "".equals(form.getDataVigenciaFinal())) {
      retorno = "Data Vigência Final ";
    }
    if (form.getIndicadorDebitoAcrescimo() == null
        || "".equals(form.getIndicadorDebitoAcrescimo())) {
      retorno = "Débito com Acréscimo ";
    }
    if (form.getIndicadorParcelamentoJuros() == null
        || "".equals(form.getIndicadorParcelamentoJuros())) {
      retorno = "Parcelamento com Juros ";
    }
    if (form.getIndicadorInformarParcela() == null
        || "".equals(form.getIndicadorInformarParcela())) {
      retorno = "Indicador Informar o Valor da Parcela ";
    }
    if (form.getQtdFaturasParceladas() == null || "".equals(form.getQtdFaturasParceladas())) {
      retorno = "Número Máximo de Parcelas ";
    }
    if (form.getFormaPgto() == null || "".equals(form.getFormaPgto())) {
      retorno = "Forma de Pagamento ";
    }

    if (!retorno.equals("")) {
      retorno = "Informe: " + retorno;
    }

    Date dataInicial = Util.converteStringParaDate(form.getDataVigenciaInicial());
    Date dataFinal = Util.converteStringParaDate(form.getDataVigenciaFinal());
    if (dataInicial == null || dataFinal == null) {
      retorno = "Data inválida";
    } else {
      if (dataFinal.before(dataInicial)) {
        retorno = "Data Início da Vigência deve ser anterior ou igual à Data Fim da Vigência";
      }
    }

    return retorno;
  }
  // [SB0003] - Atualizar Ordem de Serviço
  //
  // Método responsável por setar os dados da ordem de serviço
  // de acordo com as exigências do caso de uso
  public OrdemServico setDadosOrdemServico(
      OrdemServico ordemServico,
      EfetuarRestabelecimentoLigacaoAguaComInstalacaoHidrometroActionForm
          efetuarRestabelecimentoLigacaoAguaComInstalacaoHidrometroActionForm) {

    String idServicoMotivoNaoCobranca =
        efetuarRestabelecimentoLigacaoAguaComInstalacaoHidrometroActionForm.getMotivoNaoCobranca();
    String valorPercentual =
        efetuarRestabelecimentoLigacaoAguaComInstalacaoHidrometroActionForm.getPercentualCobranca();

    if (ordemServico != null
        && efetuarRestabelecimentoLigacaoAguaComInstalacaoHidrometroActionForm.getIdTipoDebito()
            != null) {

      ServicoNaoCobrancaMotivo servicoNaoCobrancaMotivo = null;

      ordemServico.setIndicadorComercialAtualizado(new Short("1"));

      if (idServicoMotivoNaoCobranca != null
          && !idServicoMotivoNaoCobranca.equals(ConstantesSistema.NUMERO_NAO_INFORMADO + "")) {
        servicoNaoCobrancaMotivo = new ServicoNaoCobrancaMotivo();
        servicoNaoCobrancaMotivo.setId(new Integer(idServicoMotivoNaoCobranca));
      }

      ordemServico.setServicoNaoCobrancaMotivo(servicoNaoCobrancaMotivo);

      if (valorPercentual != null) {
        ordemServico.setPercentualCobranca(
            new BigDecimal(
                efetuarRestabelecimentoLigacaoAguaComInstalacaoHidrometroActionForm
                    .getPercentualCobranca()));
      }

      ordemServico.setDataEncerramento(
          Util.converteStringParaDate(
              efetuarRestabelecimentoLigacaoAguaComInstalacaoHidrometroActionForm
                  .getDataRestabelecimento()));
      ordemServico.setUltimaAlteracao(new Date());
    }

    BigDecimal valorAtual = new BigDecimal(0);
    if (efetuarRestabelecimentoLigacaoAguaComInstalacaoHidrometroActionForm.getValorDebito()
        != null) {
      String valorDebito =
          efetuarRestabelecimentoLigacaoAguaComInstalacaoHidrometroActionForm
              .getValorDebito()
              .toString()
              .replace(".", "");

      valorDebito = valorDebito.replace(",", ".");

      valorAtual = new BigDecimal(valorDebito);

      ordemServico.setValorAtual(valorAtual);
    }

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

    ActionForward retorno =
        actionMapping.findForward("exibirAtualizarVencimentoFaturaClienteResponsavel");
    HttpSession sessao = httpServletRequest.getSession(false);

    AtualizarVencimentoFaturaClienteResponsavelActionForm form =
        (AtualizarVencimentoFaturaClienteResponsavelActionForm) actionForm;
    Fachada fachada = Fachada.getInstancia();

    Date dataVencimento = Util.converteStringParaDate(form.getDataVencimento());
    String anoMesReferencia = Util.formatarMesAnoParaAnoMesSemBarra(form.getAnoMesReferencia());
    Integer qtdeContas = 0;

    if (dataVencimento == null) {
      throw new ActionServletException(
          "atencao.informe_campo_obrigatorio", null, "Data vencimento");
    }

    if (anoMesReferencia == null) {
      throw new ActionServletException(
          "atencao.informe_campo_obrigatorio", null, "Mês/Ano de Referência");
    }

    qtdeContas = fachada.countFaturasClienteResponsaveis(anoMesReferencia);

    // Controlamos o cancelamento de contas pagas
    Object[] arrayValidaQtdeFaturas =
        validarQtdeFaturas(qtdeContas, httpServletRequest, actionMapping);

    if ((Boolean) arrayValidaQtdeFaturas[2]) {
      return (ActionForward) arrayValidaQtdeFaturas[0];
    }

    Boolean confirmadoCancelamentoContasPagas = (Boolean) arrayValidaQtdeFaturas[1];

    if (confirmadoCancelamentoContasPagas != null && !confirmadoCancelamentoContasPagas) {
      return retorno;
    }

    fachada.atualizarVecimentoFaturaClienteResponsavel(dataVencimento, anoMesReferencia);

    montarPaginaSucesso(
        httpServletRequest,
        "Atualização do vencimento de faturas realizada com sucesso",
        "Voltar",
        "/exibirAtualizarVencimentoFaturaClienteResponsavel.do");

    retorno = (ActionForward) arrayValidaQtdeFaturas[0];
    return retorno;
  }
 /** Inicio dos metodos Privados* */
 private void carregarFormContratoCadastrar(
     ContratoParcelamentoRD contratoCadastrar,
     InserirResolucaoDiretoriaContratoParcelamentoActionForm form) {
   if (form != null && !"".equals(form.getNumero())) {
     contratoCadastrar.setNumero(form.getNumero());
   }
   if (form != null && !"".equals(form.getAssunto())) {
     contratoCadastrar.setAssunto(form.getAssunto());
   }
   if (form != null && !"".equals(form.getDataVigenciaInicial())) {
     contratoCadastrar.setDataVigenciaInicio(
         Util.converteStringParaDate(form.getDataVigenciaInicial()));
   }
   if (form != null && !"".equals(form.getDataVigenciaFinal())) {
     contratoCadastrar.setDataVigenciaFinal(
         Util.converteStringParaDate(form.getDataVigenciaFinal()));
   }
   if (form != null && !"".equals(form.getIndicadorDebitoAcrescimo())) {
     contratoCadastrar.setIndicadorDebitoAcrescimo(form.getIndicadorDebitoAcrescimo());
   }
   if (form != null && !"".equals(form.getIndicadorInformarParcela())) {
     contratoCadastrar.setIndicadorInformarParcela(form.getIndicadorInformarParcela());
   }
   if (form != null && !"".equals(form.getIndicadorParcelamentoJuros())) {
     contratoCadastrar.setIndicadorParcelamentoJuros(form.getIndicadorParcelamentoJuros());
   }
   if (form != null && !"".equals(form.getQtdFaturasParceladas())) {
     contratoCadastrar.setQtdFaturasParceladas(Integer.parseInt(form.getQtdFaturasParceladas()));
   }
   if (form != null && !"".equals(form.getFormaPgto())) {
     Collection<CobrancaForma> formasPagto =
         fachada.pesquisar(new FiltroCobrancaForma(), CobrancaForma.class.getName());
     for (CobrancaForma formaPgto : formasPagto) {
       if (formaPgto.getId() == Integer.parseInt(form.getFormaPgto())) {
         contratoCadastrar.setCobrancaForma(formaPgto);
       }
     }
   }
 }
  public ActionForward execute(
      ActionMapping actionMapping,
      ActionForm actionForm,
      HttpServletRequest httpServletRequest,
      HttpServletResponse httpServletResponse) {

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

    AtualizarComandoNegativacaoPorCriterioActionForm form =
        (AtualizarComandoNegativacaoPorCriterioActionForm) actionForm;

    HttpSession sessao = httpServletRequest.getSession(false);

    Fachada fachada = Fachada.getInstancia();

    InserirComandoNegativacaoPorCriterioHelper helper =
        new InserirComandoNegativacaoPorCriterioHelper();

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

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

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

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

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

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

    helper.setNegativacaoComando(negativacaoComando);

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

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

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

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

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

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

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

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

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

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

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

    return retorno;
  }
  /**
   * [UC0360] Efetuar Supressao de Água
   *
   * <p>Este caso de uso permite efetuar supressão da ligação de água, sendo chamada pela
   * funcionalidade que encerra a execução da ordem de serviço ou chamada diretamente do menu.
   *
   * @param actionMapping Description of the Parameter
   * @param actionForm Description of the Parameter
   * @param httpServletRequest Description of the Parameter
   * @param httpServletResponse Description of the Parameter
   * @return Description of the Return Value
   */
  public ActionForward execute(
      ActionMapping actionMapping,
      ActionForm actionForm,
      HttpServletRequest httpServletRequest,
      HttpServletResponse httpServletResponse) {

    // Set no mapeamento de retorno
    ActionForward retorno = actionMapping.findForward("telaSucesso");

    // Obtém a instância da fachada
    Fachada fachada = Fachada.getInstancia();

    HttpSession sessao = httpServletRequest.getSession(false);

    EfetuarSupressaoLigacaoAguaActionForm efetuarSupressaoLigacaoAguaActionForm =
        (EfetuarSupressaoLigacaoAguaActionForm) actionForm;

    IntegracaoComercialHelper integracaoComercialHelper = new IntegracaoComercialHelper();

    OrdemServico ordemServico = (OrdemServico) sessao.getAttribute("ordemServico");

    // Usuario logado no sistema
    Usuario usuario = (Usuario) sessao.getAttribute("usuarioLogado");
    integracaoComercialHelper.setUsuarioLogado(usuario);

    // Ordem de serviço

    String idOrdemServico = efetuarSupressaoLigacaoAguaActionForm.getIdOrdemServico();
    String motivoSupressao = efetuarSupressaoLigacaoAguaActionForm.getMotivoSupressao();
    String numeroLeituraSupressao =
        efetuarSupressaoLigacaoAguaActionForm.getNumeroLeituraSupressao();
    String tipoSupressao = efetuarSupressaoLigacaoAguaActionForm.getTipoSupressao();
    String numeroSeloSupressao = efetuarSupressaoLigacaoAguaActionForm.getNumeroSeloSupressao();
    String indicadorTipoSupressao =
        efetuarSupressaoLigacaoAguaActionForm.getIndicadorTipoSupressao();
    String dataEncerramento = efetuarSupressaoLigacaoAguaActionForm.getDataSupressao();
    String idServicoMotivoNaoCobranca =
        efetuarSupressaoLigacaoAguaActionForm.getMotivoNaoCobranca();
    String valorPercentual = efetuarSupressaoLigacaoAguaActionForm.getPercentualCobranca();

    // Comentado por Raphael Rossiter em 28/02/2007
    // Imovel imovel = ordemServico.getRegistroAtendimento().getImovel();
    Imovel imovel = ordemServico.getImovel();

    FiltroImovel filtroImovel = new FiltroImovel();

    filtroImovel.adicionarParametro(new ParametroSimples(FiltroImovel.ID, imovel.getId()));

    filtroImovel.adicionarCaminhoParaCarregamentoEntidade("ligacaoAgua");

    Collection colecaoImovel = fachada.pesquisar(filtroImovel, Imovel.class.getName());

    imovel = (Imovel) colecaoImovel.iterator().next();

    // [SB0001] - Atualizar Ligacao Agua

    // validar Data Corte
    Date dataSupressao = null;
    if (dataEncerramento != null && !dataEncerramento.equals("")) {
      dataSupressao = Util.converteStringParaDate(dataEncerramento);
    } else {
      throw new ActionServletException("atencao.required", null, " Data do Corte");
    }

    SupressaoTipo supressaoTipo = new SupressaoTipo();
    supressaoTipo.setId(new Integer(tipoSupressao));

    LigacaoAguaSituacao ligacaoAguaSituacao = new LigacaoAguaSituacao();

    if (indicadorTipoSupressao.equals("1")) {
      ligacaoAguaSituacao.setId(LigacaoAguaSituacao.SUPRIMIDO);

      supressaoTipo.setIndicadorTotal(ConstantesSistema.INDICADOR_USO_ATIVO);
    } else {
      ligacaoAguaSituacao.setId(LigacaoAguaSituacao.SUPR_PARC_PEDIDO);
      supressaoTipo.setIndicadorParcial(ConstantesSistema.INDICADOR_USO_ATIVO);
    }

    SupressaoMotivo supressaoMotivo = new SupressaoMotivo();
    supressaoMotivo.setId(new Integer(motivoSupressao));

    FiltroLigacaoAgua filtroLigacaoAgua = new FiltroLigacaoAgua();
    filtroLigacaoAgua.adicionarCaminhoParaCarregamentoEntidade(
        FiltroLigacaoAgua.HIDROMETRO_INSTALACAO_HISTORICO);
    filtroLigacaoAgua.adicionarParametro(
        new ParametroSimples(FiltroLigacaoAgua.ID, imovel.getLigacaoAgua().getId()));

    Collection colecaoLigacaoAgua =
        fachada.pesquisar(filtroLigacaoAgua, LigacaoAgua.class.getName());

    filtroLigacaoAgua.adicionarCaminhoParaCarregamentoEntidade("hidrometroInstalacaoHistorico");

    LigacaoAgua ligacaoAgua = (LigacaoAgua) colecaoLigacaoAgua.iterator().next();

    if (ligacaoAgua.getHidrometroInstalacaoHistorico() != null) {
      FiltroHidrometroInstalacaoHistorico filtroHidrometroInstalacaoHistorico =
          new FiltroHidrometroInstalacaoHistorico();

      filtroHidrometroInstalacaoHistorico.adicionarParametro(
          new ParametroSimples(
              FiltroHidrometroInstalacaoHistorico.ID,
              ligacaoAgua.getHidrometroInstalacaoHistorico().getId()));

      filtroHidrometroInstalacaoHistorico.adicionarCaminhoParaCarregamentoEntidade("imovel");

      filtroHidrometroInstalacaoHistorico.adicionarCaminhoParaCarregamentoEntidade(
          "hidrometroProtecao");
      filtroHidrometroInstalacaoHistorico.adicionarCaminhoParaCarregamentoEntidade("hidrometro");
      filtroHidrometroInstalacaoHistorico.adicionarCaminhoParaCarregamentoEntidade("rateioTipo");
      filtroHidrometroInstalacaoHistorico.adicionarCaminhoParaCarregamentoEntidade("ligacaoAgua");
      filtroHidrometroInstalacaoHistorico.adicionarCaminhoParaCarregamentoEntidade(
          "hidrometroLocalInstalacao");

      filtroHidrometroInstalacaoHistorico.adicionarCaminhoParaCarregamentoEntidade("rateioTipo");

      Collection colecaoHidrometroInstalacaHistorico =
          fachada.pesquisar(
              filtroHidrometroInstalacaoHistorico, HidrometroInstalacaoHistorico.class.getName());

      HidrometroInstalacaoHistorico hidrometroInstalacaoHistorico =
          (HidrometroInstalacaoHistorico) colecaoHidrometroInstalacaHistorico.iterator().next();

      if (hidrometroInstalacaoHistorico != null && numeroLeituraSupressao != null) {

        if (numeroLeituraSupressao != null && !numeroLeituraSupressao.equals("")) {
          hidrometroInstalacaoHistorico.setNumeroLeituraSupressao(
              new Integer(numeroLeituraSupressao));
        }

        hidrometroInstalacaoHistorico.setUltimaAlteracao(new Date());

        ligacaoAgua.setHidrometroInstalacaoHistorico(hidrometroInstalacaoHistorico);
      }

      integracaoComercialHelper.setHidrometroInstalacaoHistorico(hidrometroInstalacaoHistorico);
    }
    ligacaoAgua.setDataSupressao(dataSupressao);
    if (numeroSeloSupressao != null && !numeroSeloSupressao.equals("")) {
      ligacaoAgua.setNumeroSeloSupressao(new Integer(numeroSeloSupressao));
    }

    // ligacaoAgua.setDataSupressao(ordemServico.getDataEncerramento());
    ligacaoAgua.setSupressaoTipo(supressaoTipo);
    ligacaoAgua.setSupressaoMotivo(supressaoMotivo);
    ligacaoAgua.setUltimaAlteracao(new Date());

    imovel.setLigacaoAguaSituacao(ligacaoAguaSituacao);
    imovel.setLigacaoAgua(ligacaoAgua);
    imovel.setUltimaAlteracao(new Date());

    BigDecimal valorAtual = new BigDecimal(0);

    if (ordemServico != null && efetuarSupressaoLigacaoAguaActionForm.getIdTipoDebito() != null) {

      ServicoNaoCobrancaMotivo servicoNaoCobrancaMotivo = null;

      ordemServico.setIndicadorComercialAtualizado(ConstantesSistema.SIM);

      if (efetuarSupressaoLigacaoAguaActionForm.getValorDebito() != null) {
        String valorDebito =
            efetuarSupressaoLigacaoAguaActionForm.getValorDebito().toString().replace(".", "");

        valorDebito = valorDebito.replace(",", ".");

        valorAtual = new BigDecimal(valorDebito);

        ordemServico.setValorAtual(valorAtual);
      }

      if (idServicoMotivoNaoCobranca != null && !idServicoMotivoNaoCobranca.equals("-1")) {
        servicoNaoCobrancaMotivo = new ServicoNaoCobrancaMotivo();
        servicoNaoCobrancaMotivo.setId(new Integer(idServicoMotivoNaoCobranca));
      }
      ordemServico.setServicoNaoCobrancaMotivo(servicoNaoCobrancaMotivo);

      if (valorPercentual != null) {
        ordemServico.setPercentualCobranca(
            new BigDecimal(efetuarSupressaoLigacaoAguaActionForm.getPercentualCobranca()));
      }

      ordemServico.setUltimaAlteracao(new Date());
    }

    String qtdParcelas = efetuarSupressaoLigacaoAguaActionForm.getQuantidadeParcelas();

    integracaoComercialHelper.setLigacaoAgua(ligacaoAgua);

    integracaoComercialHelper.setImovel(imovel);
    integracaoComercialHelper.setOrdemServico(ordemServico);
    integracaoComercialHelper.setQtdParcelas(qtdParcelas);

    if (efetuarSupressaoLigacaoAguaActionForm.getVeioEncerrarOS().equalsIgnoreCase("FALSE")) {
      integracaoComercialHelper.setVeioEncerrarOS(Boolean.FALSE);

      fachada.efetuarSupressaoLigacaoAgua(integracaoComercialHelper);
    } else {
      integracaoComercialHelper.setVeioEncerrarOS(Boolean.TRUE);
      sessao.setAttribute("integracaoComercialHelper", integracaoComercialHelper);

      if (sessao.getAttribute("semMenu") == null) {
        retorno = actionMapping.findForward("encerrarOrdemServicoAction");
      } else {
        retorno = actionMapping.findForward("encerrarOrdemServicoPopupAction");
      }
      sessao.removeAttribute("caminhoRetornoIntegracaoComercial");
    }
    if (retorno.getName().equalsIgnoreCase("telaSucesso")) {
      montarPaginaSucesso(
          httpServletRequest,
          "Supressão da Ligação de Água para o imóvel " + imovel.getId() + " efetuada com sucesso.",
          "Efetuar outra Supressão da Ligação de Água",
          "exibirEfetuarSupressaoLigacaoAguaAction.do?menu=sim",
          "exibirEfetuarSupressaoLigacaoAguaAction.do?idOrdemServico=" + idOrdemServico + "",
          "Atualizar Supressão de Ligação de Água");
    }

    return retorno;
  }
  // [SB0004] - Gerar Histórico de Instalação do Hidrômetro
  //
  // Método responsável por setar os dados do hidrômetro instalação histórico
  // de acordo com os dados selecionados pelo usuário e pelas exigências do
  // caso de uso
  public HidrometroInstalacaoHistorico setDadosHidrometroInstalacaoHistorico(
      HidrometroInstalacaoHistorico hidrometroInstalacaoHistorico,
      EfetuarRestabelecimentoLigacaoAguaComInstalacaoHidrometroActionForm
          efetuarRestabelecimentoLigacaoAguaComInstalacaoHidrometroActionForm) {

    Fachada fachada = Fachada.getInstancia();

    String numeroHidrometro =
        efetuarRestabelecimentoLigacaoAguaComInstalacaoHidrometroActionForm.getNumeroHidrometro();

    if (numeroHidrometro != null) {
      // Pesquisa o Hidrômetro
      Hidrometro hidrometro = fachada.pesquisarHidrometroPeloNumero(numeroHidrometro);

      if (hidrometro == null) {
        throw new ActionServletException("atencao.hidrometro_inexistente");
      }

      hidrometroInstalacaoHistorico.setHidrometro(hidrometro);
    }

    // Data instalação
    if (efetuarRestabelecimentoLigacaoAguaComInstalacaoHidrometroActionForm.getDataInstalacao()
            != null
        && !efetuarRestabelecimentoLigacaoAguaComInstalacaoHidrometroActionForm
            .getDataInstalacao()
            .equals("")) {

      hidrometroInstalacaoHistorico.setDataInstalacao(
          Util.converteStringParaDate(
              efetuarRestabelecimentoLigacaoAguaComInstalacaoHidrometroActionForm
                  .getDataInstalacao()));
    }

    // Medição tipo
    MedicaoTipo medicaoTipo = new MedicaoTipo();
    medicaoTipo.setId(MedicaoTipo.LIGACAO_AGUA);
    hidrometroInstalacaoHistorico.setMedicaoTipo(medicaoTipo);

    // hidrômetro local instalação
    HidrometroLocalInstalacao hidrometroLocalInstalacao = new HidrometroLocalInstalacao();
    hidrometroLocalInstalacao.setId(
        Integer.parseInt(
            efetuarRestabelecimentoLigacaoAguaComInstalacaoHidrometroActionForm
                .getLocalInstalacao()));
    hidrometroInstalacaoHistorico.setHidrometroLocalInstalacao(hidrometroLocalInstalacao);

    // proteção
    HidrometroProtecao hidrometroProtecao = new HidrometroProtecao();
    hidrometroProtecao.setId(
        Integer.parseInt(
            efetuarRestabelecimentoLigacaoAguaComInstalacaoHidrometroActionForm.getProtecao()));
    hidrometroInstalacaoHistorico.setHidrometroProtecao(hidrometroProtecao);

    // leitura instalação
    if (efetuarRestabelecimentoLigacaoAguaComInstalacaoHidrometroActionForm.getLeituraInstalacao()
            != null
        && !efetuarRestabelecimentoLigacaoAguaComInstalacaoHidrometroActionForm
            .getLeituraInstalacao()
            .trim()
            .equals("")) {
      hidrometroInstalacaoHistorico.setNumeroLeituraInstalacao(
          Integer.parseInt(
              efetuarRestabelecimentoLigacaoAguaComInstalacaoHidrometroActionForm
                  .getLeituraInstalacao()));
    } else {
      hidrometroInstalacaoHistorico.setNumeroLeituraInstalacao(0);
    }

    // cavalete
    hidrometroInstalacaoHistorico.setIndicadorExistenciaCavalete(
        Short.parseShort(
            efetuarRestabelecimentoLigacaoAguaComInstalacaoHidrometroActionForm
                .getSituacaoCavalete()));

    /*
     * Campos opcionais
     */

    // data da retirada
    hidrometroInstalacaoHistorico.setDataRetirada(null);
    // leitura retirada
    hidrometroInstalacaoHistorico.setNumeroLeituraRetirada(null);
    // leitura corte
    hidrometroInstalacaoHistorico.setNumeroLeituraCorte(null);
    // leitura supressão
    hidrometroInstalacaoHistorico.setNumeroLeituraSupressao(null);
    // numero selo
    if (efetuarRestabelecimentoLigacaoAguaComInstalacaoHidrometroActionForm.getNumeroSelo() != null
        && !efetuarRestabelecimentoLigacaoAguaComInstalacaoHidrometroActionForm
            .getNumeroSelo()
            .equals("")) {
      hidrometroInstalacaoHistorico.setNumeroSelo(
          efetuarRestabelecimentoLigacaoAguaComInstalacaoHidrometroActionForm.getNumeroSelo());
    } else {
      hidrometroInstalacaoHistorico.setNumeroSelo(null);
    }
    // tipo de rateio
    hidrometroInstalacaoHistorico.setRateioTipo(null);
    hidrometroInstalacaoHistorico.setDataImplantacaoSistema(new Date());

    // indicador instalação substituição
    hidrometroInstalacaoHistorico.setIndicadorInstalcaoSubstituicao(new Short("1"));

    // data última alteração
    hidrometroInstalacaoHistorico.setUltimaAlteracao(new Date());

    return hidrometroInstalacaoHistorico;
  }
  /**
   * Description of the Method
   *
   * @param actionMapping Description of the Parameter
   * @param actionForm Description of the Parameter
   * @param httpServletRequest Description of the Parameter
   * @param httpServletResponse Description of the Parameter
   * @return Description of the Return Value
   */
  public ActionForward execute(
      ActionMapping actionMapping,
      ActionForm actionForm,
      HttpServletRequest httpServletRequest,
      HttpServletResponse httpServletResponse) {

    // localiza o action no objeto actionmapping
    ActionForward retorno = actionMapping.findForward("telaSucesso");
    HttpSession sessao = httpServletRequest.getSession(false);

    EfetuarRestabelecimentoLigacaoAguaComInstalacaoHidrometroActionForm
        efetuarRestabelecimentoLigacaoAguaComInstalacaoHidrometroActionForm =
            (EfetuarRestabelecimentoLigacaoAguaComInstalacaoHidrometroActionForm) actionForm;
    Fachada fachada = Fachada.getInstancia();

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

    String ordemServicoId =
        efetuarRestabelecimentoLigacaoAguaComInstalacaoHidrometroActionForm.getIdOrdemServico();

    HidrometroInstalacaoHistorico hidrometroInstalacaoHistorico =
        new HidrometroInstalacaoHistorico();
    hidrometroInstalacaoHistorico =
        this.setDadosHidrometroInstalacaoHistorico(
            hidrometroInstalacaoHistorico,
            efetuarRestabelecimentoLigacaoAguaComInstalacaoHidrometroActionForm);

    Imovel imovel = null;

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

      OrdemServico ordemServico = (OrdemServico) sessao.getAttribute("ordemServico");

      if (ordemServico == null) {
        throw new ActionServletException(
            "atencao.ordem_servico_inexistente", null, "ORDEM DE SERVIÇO INEXISTENTE");
      }

      if (sessao.getAttribute("imovel") != null) {
        imovel = (Imovel) sessao.getAttribute("imovel");

        FiltroImovel filtroImovel = new FiltroImovel();
        filtroImovel.adicionarCaminhoParaCarregamentoEntidade(
            "localidade.hidrometroLocalArmazenagem");
        filtroImovel.adicionarParametro(new ParametroSimples(FiltroImovel.ID, imovel.getId()));

        Collection colecaoImoveis = fachada.pesquisar(filtroImovel, Imovel.class.getName());

        Imovel imovelComLocalidade = (Imovel) Util.retonarObjetoDeColecao(colecaoImoveis);

        if (imovelComLocalidade != null
            && imovelComLocalidade.getLocalidade().getHidrometroLocalArmazenagem() != null
            && hidrometroInstalacaoHistorico.getHidrometro().getHidrometroLocalArmazenagem() != null
            && !hidrometroInstalacaoHistorico
                .getHidrometro()
                .getHidrometroLocalArmazenagem()
                .getId()
                .equals(
                    imovelComLocalidade.getLocalidade().getHidrometroLocalArmazenagem().getId())) {
          throw new ActionServletException(
              "atencao.hidrometro_local_armazenagem_imovel_diferente_hidrometro_local_armazenagem_hidrometro");
        }

        imovel.setUltimaAlteracao(new Date());
      }

      FiltroLigacaoAgua filtroLigacaoAgua = new FiltroLigacaoAgua();
      filtroLigacaoAgua.adicionarParametro(
          new ParametroSimples(FiltroLigacaoAgua.ID, imovel.getId()));

      Collection colecaoLigacoesAgua =
          fachada.pesquisar(filtroLigacaoAgua, LigacaoAgua.class.getName());

      LigacaoAgua ligacaoAgua = (LigacaoAgua) Util.retonarObjetoDeColecao(colecaoLigacoesAgua);

      ligacaoAgua.setDataRestabelecimentoAgua(
          Util.converteStringParaDate(
              efetuarRestabelecimentoLigacaoAguaComInstalacaoHidrometroActionForm
                  .getDataRestabelecimento()));

      hidrometroInstalacaoHistorico.setLigacaoAgua(ligacaoAgua);

      ordemServico =
          this.setDadosOrdemServico(
              ordemServico, efetuarRestabelecimentoLigacaoAguaComInstalacaoHidrometroActionForm);

      String qtdParcelas =
          efetuarRestabelecimentoLigacaoAguaComInstalacaoHidrometroActionForm
              .getQuantidadeParcelas();

      IntegracaoComercialHelper integracaoComercialHelper = new IntegracaoComercialHelper();

      integracaoComercialHelper.setLigacaoAgua(ligacaoAgua);
      integracaoComercialHelper.setImovel(imovel);
      integracaoComercialHelper.setOrdemServico(ordemServico);
      integracaoComercialHelper.setQtdParcelas(qtdParcelas);
      integracaoComercialHelper.setHidrometroInstalacaoHistorico(hidrometroInstalacaoHistorico);

      if (efetuarRestabelecimentoLigacaoAguaComInstalacaoHidrometroActionForm
          .getVeioEncerrarOS()
          .equalsIgnoreCase("FALSE")) {
        integracaoComercialHelper.setVeioEncerrarOS(Boolean.FALSE);

        fachada.efetuarRestabelecimentoLigacaoAguaComInstalacaoHidrometro(
            integracaoComercialHelper, usuario);
      } else {
        integracaoComercialHelper.setVeioEncerrarOS(Boolean.TRUE);
        sessao.setAttribute("integracaoComercialHelper", integracaoComercialHelper);

        if (sessao.getAttribute("semMenu") == null) {
          retorno = actionMapping.findForward("encerrarOrdemServicoAction");
        } else {
          retorno = actionMapping.findForward("encerrarOrdemServicoPopupAction");
        }
        sessao.removeAttribute("caminhoRetornoIntegracaoComercial");
      }
      if (retorno.getName().equalsIgnoreCase("telaSucesso")) {
        // Monta a página de sucesso
        montarPaginaSucesso(
            httpServletRequest,
            "Restabelecimento da Ligação de Água com Instalação de Hidrômetro efetuada com Sucesso",
            "Efetuar outro Restabelecimento da Ligação de Água com Instalação de Hidrômetro",
            "exibirEfetuarRestabelecimentoLigacaoAguaComInstalacaoHidrometroAction.do?menu=sim");
      }

      return retorno;
    } else {
      throw new ActionServletException("atencao.informe_campo", null, "Ordem de Serviço");
    }
  }
  public ActionForward execute(
      ActionMapping actionMapping,
      ActionForm actionForm,
      HttpServletRequest httpServletRequest,
      HttpServletResponse httpServletResponse) {

    ActionForward retorno = null;

    HttpSession sessao = httpServletRequest.getSession(false);

    FiltrarContratoArrecadadorActionForm filtrarContratoArrecadadorActionForm =
        (FiltrarContratoArrecadadorActionForm) actionForm;

    FiltroArrecadadorContrato filtroContratoArrecadador =
        (FiltroArrecadadorContrato) sessao.getAttribute("filtroArrecadadorContrato");

    ArrecadadorContrato contratoArrecadadorParametros = new ArrecadadorContrato();

    // pega os parâmetros informados na tela de consulta de débitos automáticos

    if (Util.verificarNaoVazio(filtrarContratoArrecadadorActionForm.getIdArrecadador())) {
      FiltroArrecadador filtroArrecadador = new FiltroArrecadador();
      filtroArrecadador.adicionarParametro(
          new ParametroSimples(
              FiltroArrecadador.ID,
              Integer.parseInt(filtrarContratoArrecadadorActionForm.getIdArrecadador().trim())));

      Arrecadador arrecadador =
          (Arrecadador)
              Fachada.getInstancia()
                  .pesquisar(filtroArrecadador, Arrecadador.class.getName())
                  .iterator()
                  .next();
      contratoArrecadadorParametros.setArrecadador(arrecadador);
    }

    if (Util.verificarNaoVazio(filtrarContratoArrecadadorActionForm.getIdCliente())) {
      FiltroCliente filtroCliente = new FiltroCliente();
      filtroCliente.adicionarParametro(
          new ParametroSimples(
              FiltroCliente.ID,
              Integer.parseInt(filtrarContratoArrecadadorActionForm.getIdCliente().trim())));

      Cliente cliente =
          (Cliente)
              Fachada.getInstancia()
                  .pesquisar(filtroCliente, Cliente.class.getName())
                  .iterator()
                  .next();
      contratoArrecadadorParametros.setCliente(cliente);
    }

    if (Util.verificarNaoVazio(
        filtrarContratoArrecadadorActionForm.getIdContaBancariaArrecadador())) {
      FiltroContaBancaria filtroContaBancaria = new FiltroContaBancaria();
      filtroContaBancaria.adicionarParametro(
          new ParametroSimples(
              FiltroContaBancaria.ID,
              Integer.parseInt(
                  filtrarContratoArrecadadorActionForm.getIdContaBancariaArrecadador().trim())));
      filtroContaBancaria.adicionarCaminhoParaCarregamentoEntidade("agencia");
      filtroContaBancaria.adicionarCaminhoParaCarregamentoEntidade("agencia.banco");

      ContaBancaria contaBancariaDeposito =
          (ContaBancaria)
              Fachada.getInstancia()
                  .pesquisar(filtroContaBancaria, ContaBancaria.class.getName())
                  .iterator()
                  .next();
      contratoArrecadadorParametros.setContaBancariaDepositoArrecadacao(contaBancariaDeposito);
    }

    if (Util.verificarNaoVazio(filtrarContratoArrecadadorActionForm.getIdContaBancariaTarifa())) {
      FiltroContaBancaria filtroContaBancaria = new FiltroContaBancaria();
      filtroContaBancaria.adicionarParametro(
          new ParametroSimples(
              FiltroContaBancaria.ID,
              Integer.parseInt(
                  filtrarContratoArrecadadorActionForm.getIdContaBancariaTarifa().trim())));
      filtroContaBancaria.adicionarCaminhoParaCarregamentoEntidade("agencia");
      filtroContaBancaria.adicionarCaminhoParaCarregamentoEntidade("agencia.banco");

      ContaBancaria contaBancariaTarifa =
          (ContaBancaria)
              Fachada.getInstancia()
                  .pesquisar(filtroContaBancaria, ContaBancaria.class.getName())
                  .iterator()
                  .next();
      contratoArrecadadorParametros.setContaBancariaDepositoTarifa(contaBancariaTarifa);
    }

    if (Util.verificarNaoVazio(filtrarContratoArrecadadorActionForm.getIndicadorCobranca())) {
      contratoArrecadadorParametros.setIndicadorCobrancaIss(
          Short.parseShort(filtrarContratoArrecadadorActionForm.getIndicadorCobranca().trim()));
    }

    if (Util.verificarNaoVazio(filtrarContratoArrecadadorActionForm.getDtInicioContrato())) {
      contratoArrecadadorParametros.setDataContratoInicio(
          Util.converteStringParaDate(filtrarContratoArrecadadorActionForm.getDtInicioContrato()));
    }

    if (Util.verificarNaoVazio(filtrarContratoArrecadadorActionForm.getDtFimContrato())) {
      contratoArrecadadorParametros.setDataContratoFim(
          Util.converteStringParaDate(filtrarContratoArrecadadorActionForm.getDtFimContrato()));
    }

    contratoArrecadadorParametros.setDescricaoEmail(
        filtrarContratoArrecadadorActionForm.getEmailCliente());
    contratoArrecadadorParametros.setNumeroContrato(
        filtrarContratoArrecadadorActionForm.getNumeroContrato());
    contratoArrecadadorParametros.setCodigoConvenio(
        filtrarContratoArrecadadorActionForm.getIdConvenio());

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

    RelatorioManterContratoArrecadador relatorioManterContratoArrecadador =
        new RelatorioManterContratoArrecadador(
            (Usuario) (httpServletRequest.getSession(false)).getAttribute("usuarioLogado"));
    relatorioManterContratoArrecadador.addParametro(
        "filtroArrecadadorContrato", filtroContratoArrecadador);
    relatorioManterContratoArrecadador.addParametro(
        "contratoArrecadadorParametros", contratoArrecadadorParametros);
    relatorioManterContratoArrecadador.addParametro(
        "tipoFormatoRelatorio", Integer.parseInt(tipoRelatorio));

    try {
      retorno =
          processarExibicaoRelatorio(
              relatorioManterContratoArrecadador,
              tipoRelatorio,
              httpServletRequest,
              httpServletResponse,
              actionMapping);

    } catch (SistemaException ex) {
      reportarErros(httpServletRequest, "erro.sistema");
      retorno = actionMapping.findForward("telaErroPopup");

    } catch (RelatorioVazioException ex1) {
      reportarErros(httpServletRequest, "erro.relatorio.vazio");
      retorno = actionMapping.findForward("telaAtencaoPopup");
    }

    return retorno;
  }
  /**
   * < <Descrição do método>>
   *
   * @param actionMapping Descrição do parâmetro
   * @param actionForm Descrição do parâmetro
   * @param httpServletRequest Descrição do parâmetro
   * @param httpServletResponse Descrição do parâmetro
   * @return Descrição do retorno
   */
  public ActionForward execute(
      ActionMapping actionMapping,
      ActionForm actionForm,
      HttpServletRequest httpServletRequest,
      HttpServletResponse httpServletResponse) {

    // cria a variável de retorno
    ActionForward retorno = null;

    GerarRelatorioAcompanhamentoExecucaoOSActionForm form =
        (GerarRelatorioAcompanhamentoExecucaoOSActionForm) actionForm;

    // Recupera os valores do form para serem passados como parâmetros para
    // o RelatorioAcompanhamentoExecucaoOS e nele executar a pesquisa
    // solicitada pelo usuário
    String origemServico = form.getOrigemServico();
    String situacaoOS = form.getSituacaoOrdemServico();
    String[] idsServicosTipos = form.getTipoServicoSelecionados();
    String idUnidadeAtendimento = form.getIdUnidadeAtendimento();
    String idUnidadeAtual = form.getIdUnidadeAtual();
    String idUnidadeEncerramento = form.getIdUnidadeEncerramento();
    String periodoAtendimentoInicial = form.getPeriodoAtendimentoInicial();
    String periodoAtendimentoFinal = form.getPeriodoAtendimentoFinal();
    String periodoEncerramentoInicial = form.getPeriodoEncerramentoInicial();
    String periodoEncerramentoFinal = form.getPeriodoEncerramentoFinal();
    String idEquipeProgramacao = form.getIdEquipeProgramacao();
    String idEquipeExecucao = form.getIdEquipeExecucao();
    String tipoOrdenacao = form.getTipoOrdenacao();

    if (periodoAtendimentoInicial != null && !periodoAtendimentoInicial.equals("")) {
      if (periodoAtendimentoFinal == null || periodoAtendimentoFinal.equals("")) {
        throw new ActionServletException(
            "atencao.filtrar_data_final_obrigatorio_quando_inicial", null, "atendimento");
      } /*else{
        	Date ini = Util.converteStringParaDate(periodoAtendimentoInicial);
        	Calendar calendario = new GregorianCalendar();
        	calendario.setTime(ini);
        	Integer numeroDias = new Integer(Util.obterUltimoDiaMes(calendario.get(Calendar.MONTH)+1, calendario.get(Calendar.YEAR)));
        	numeroDias = new Integer(numeroDias-1);
        	Date dataLimite = Util.subtrairNumeroDiasDeUmaData(Util.converteStringParaDate(periodoAtendimentoFinal),numeroDias);
        	if(dataLimite.after(ini)){
        		throw new ActionServletException("atencao.filtrar_intervalo_limite",null,"atendimento");
        	}
        }*/
    }

    if (periodoEncerramentoInicial != null && !periodoEncerramentoInicial.equals("")) {
      if (periodoEncerramentoFinal == null || periodoEncerramentoFinal.equals("")) {
        throw new ActionServletException(
            "atencao.filtrar_data_final_obrigatorio_quando_inicial", null, "encerramento");
      } else {
        Date ini = Util.converteStringParaDate(periodoEncerramentoInicial);
        Calendar calendario = new GregorianCalendar();
        calendario.setTime(ini);
        Integer numeroDias =
            new Integer(
                Util.obterUltimoDiaMes(
                    calendario.get(Calendar.MONTH) + 1, calendario.get(Calendar.YEAR)));
        numeroDias = new Integer(numeroDias - 1);
        Date dataLimite =
            Util.subtrairNumeroDiasDeUmaData(
                Util.converteStringParaDate(periodoEncerramentoFinal), numeroDias);
        if (dataLimite.after(ini)) {
          throw new ActionServletException(
              "atencao.filtrar_intervalo_limite", null, "encerramento");
        }
      }
    }

    // Formata as datas para Date
    Date periodoAtendimentoInicialFormatado = null;

    if (periodoAtendimentoInicial != null && !periodoAtendimentoInicial.trim().equals("")) {
      periodoAtendimentoInicialFormatado = Util.converteStringParaDate(periodoAtendimentoInicial);
    }

    Date periodoAtendimentoFinalFormatado = null;

    if (periodoAtendimentoFinal != null && !periodoAtendimentoFinal.trim().equals("")) {
      periodoAtendimentoFinalFormatado = Util.converteStringParaDate(periodoAtendimentoFinal);
    }

    Date periodoEncerramentoInicialFormatado = null;

    if (periodoEncerramentoInicial != null && !periodoEncerramentoInicial.trim().equals("")) {
      periodoEncerramentoInicialFormatado = Util.converteStringParaDate(periodoEncerramentoInicial);
    }

    Date periodoEncerramentoFinalFormatado = null;

    if (periodoEncerramentoFinal != null && !periodoEncerramentoFinal.trim().equals("")) {
      periodoEncerramentoFinalFormatado = Util.converteStringParaDate(periodoEncerramentoFinal);
    }

    validarGeracaoRelatorio(
        origemServico,
        situacaoOS,
        idsServicosTipos,
        idUnidadeAtendimento,
        idUnidadeAtual,
        idUnidadeEncerramento,
        periodoAtendimentoInicialFormatado,
        periodoAtendimentoFinalFormatado,
        periodoEncerramentoInicialFormatado,
        periodoEncerramentoFinalFormatado,
        idEquipeProgramacao,
        idEquipeExecucao);

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

    RelatorioAcompanhamentoExecucaoOS relatorioAcompanhamentoExecucaoOS =
        new RelatorioAcompanhamentoExecucaoOS(
            (Usuario) (httpServletRequest.getSession(false)).getAttribute("usuarioLogado"));

    relatorioAcompanhamentoExecucaoOS.addParametro("origemServico", origemServico);
    relatorioAcompanhamentoExecucaoOS.addParametro("situacaoOS", situacaoOS);
    relatorioAcompanhamentoExecucaoOS.addParametro("idsServicosTipos", idsServicosTipos);
    relatorioAcompanhamentoExecucaoOS.addParametro("idUnidadeAtendimento", idUnidadeAtendimento);
    relatorioAcompanhamentoExecucaoOS.addParametro("idUnidadeAtual", idUnidadeAtual);
    relatorioAcompanhamentoExecucaoOS.addParametro("idUnidadeEncerramento", idUnidadeEncerramento);
    relatorioAcompanhamentoExecucaoOS.addParametro(
        "periodoAtendimentoInicial", periodoAtendimentoInicialFormatado);
    relatorioAcompanhamentoExecucaoOS.addParametro(
        "periodoAtendimentoFinal", periodoAtendimentoFinalFormatado);
    relatorioAcompanhamentoExecucaoOS.addParametro(
        "periodoEncerramentoInicial", periodoEncerramentoInicialFormatado);
    relatorioAcompanhamentoExecucaoOS.addParametro(
        "periodoEncerramentoFinal", periodoEncerramentoFinalFormatado);
    relatorioAcompanhamentoExecucaoOS.addParametro("idEquipeProgramacao", idEquipeProgramacao);
    relatorioAcompanhamentoExecucaoOS.addParametro("idEquipeExecucao", idEquipeExecucao);
    relatorioAcompanhamentoExecucaoOS.addParametro("tipoOrdenacao", tipoOrdenacao);

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

    relatorioAcompanhamentoExecucaoOS.addParametro(
        "tipoFormatoRelatorio", Integer.parseInt(tipoRelatorio));
    retorno =
        processarExibicaoRelatorio(
            relatorioAcompanhamentoExecucaoOS,
            tipoRelatorio,
            httpServletRequest,
            httpServletResponse,
            actionMapping);

    // devolve o mapeamento contido na variável retorno
    return retorno;
  }
  /**
   * @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;
  }
  /**
   * [UC0392] Filtrar Valor de Cobrança do Serviço
   *
   * <p>Este caso de uso cria um filtro que será usado na pesquisa do Valor de Cobrança de Serviço
   *
   * @author Rômulo Aurélio
   * @date 30/10/2006
   * @param actionMapping
   * @param actionForm
   * @param httpServletRequest
   * @param httpServletResponse
   * @return
   */
  public ActionForward execute(
      ActionMapping actionMapping,
      ActionForm actionForm,
      HttpServletRequest httpServletRequest,
      HttpServletResponse httpServletResponse) {

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

    FiltrarValorCobrancaServicoActionForm form = (FiltrarValorCobrancaServicoActionForm) actionForm;

    FiltroServicoCobrancaValor filtroServicoCobrancaValor = new FiltroServicoCobrancaValor();

    HttpSession sessao = httpServletRequest.getSession(false);

    Fachada fachada = Fachada.getInstancia();

    boolean peloMenosUmParametroInformado = false;

    String tipoServico = form.getTipoServico();
    String perfilImovel = form.getPerfilImovel();
    String indicadorMedido = form.getIndicadorMedido();
    String capacidadeHidrometro = form.getCapacidadeHidrometro();
    String valorServicoInicial = form.getValorServicoInicial();
    String valorServicoFinal = form.getValorServicoFinal();
    String quantidadeEconomiaInicial = form.getQuantidadeEconomiasInicial();
    String quantidadeEconomiaFinal = form.getQuantidadeEconomiasFinal();
    String categoria = form.getIdCategoria();
    String subCategoria = form.getIdSubCategoria();
    String indicadorGeracaoDebito = form.getIndicadorGeracaoDebito();
    String indicativoTipoSevicoEconomias = form.getIndicativoTipoSevicoEconomias();

    // Verifica se o campo tipoServico foi informado
    if (categoria != null
        && !categoria.trim().equals("" + ConstantesSistema.NUMERO_NAO_INFORMADO)) {
      peloMenosUmParametroInformado = true;

      filtroServicoCobrancaValor.adicionarParametro(
          new ParametroSimples(FiltroServicoCobrancaValor.CATEGORIA, categoria));
    }

    if (subCategoria != null
        && !subCategoria.trim().equals("" + ConstantesSistema.NUMERO_NAO_INFORMADO)) {
      peloMenosUmParametroInformado = true;

      filtroServicoCobrancaValor.adicionarParametro(
          new ParametroSimples(FiltroServicoCobrancaValor.SUBCATEGORIA, subCategoria));
    }

    if (tipoServico != null && !tipoServico.trim().equalsIgnoreCase("")) {

      peloMenosUmParametroInformado = true;

      filtroServicoCobrancaValor.adicionarParametro(
          new ParametroSimples(FiltroServicoCobrancaValor.SERVICOTIPO, tipoServico));
    }

    if (quantidadeEconomiaInicial != null
        && !quantidadeEconomiaInicial.equals("")
        && quantidadeEconomiaFinal != null
        && !quantidadeEconomiaFinal.equals("")) {

      filtroServicoCobrancaValor.adicionarParametro(
          new Intervalo(
              FiltroServicoCobrancaValor.QUANTIDADE_ECONOMIA_INICIAL,
              quantidadeEconomiaInicial,
              quantidadeEconomiaFinal));
    }

    filtroServicoCobrancaValor.adicionarCaminhoParaCarregamentoEntidade("servicoTipo");

    if (indicativoTipoSevicoEconomias != null && !indicativoTipoSevicoEconomias.equals("3")) {

      peloMenosUmParametroInformado = true;

      filtroServicoCobrancaValor.adicionarParametro(
          new ParametroSimples(
              FiltroServicoCobrancaValor.INDICATIVOSERVICOECONOMIA, indicativoTipoSevicoEconomias));
    }

    // Verifica se o campo perfilImovel foi informado
    if (perfilImovel != null && !perfilImovel.trim().equals("-1")) {

      peloMenosUmParametroInformado = true;

      filtroServicoCobrancaValor.adicionarParametro(
          new ComparacaoTexto(FiltroServicoCobrancaValor.IMOVELPERFIL, perfilImovel));
    }

    // Verifica se o campo Data vigencia inicial foi informado
    if (Util.verificarNaoVazio(form.getDataVigenciaInicial())) {

      peloMenosUmParametroInformado = true;

      Date periodoInicialVigencia = Util.converteStringParaDate(form.getDataVigenciaInicial());

      Date periodoFinalVigencia = Util.converteStringParaDate(form.getDataVigenciaFinal());

      Calendar diInicio = Calendar.getInstance();
      diInicio.setTime(periodoInicialVigencia);
      diInicio.set(Calendar.HOUR, 0);
      diInicio.set(Calendar.MINUTE, 0);
      diInicio.set(Calendar.SECOND, 0);

      Calendar diFim = Calendar.getInstance();
      diFim.setTime(periodoFinalVigencia);
      diFim.set(Calendar.HOUR, 23);
      diFim.set(Calendar.MINUTE, 59);
      diFim.set(Calendar.SECOND, 59);

      filtroServicoCobrancaValor.adicionarParametro(
          new MaiorQue(FiltroServicoCobrancaValor.DATA_INICIO_RELACAO, diInicio.getTime()));

      filtroServicoCobrancaValor.adicionarParametro(
          new MenorQue(FiltroServicoCobrancaValor.DATA_FIM_RELACAO, diFim.getTime()));
    }

    // Verifica se o campo indicadorMedido foi informado
    if (indicadorMedido != null && !indicadorMedido.trim().equals("3")) {

      peloMenosUmParametroInformado = true;
      filtroServicoCobrancaValor.adicionarParametro(
          new ParametroSimples(FiltroServicoCobrancaValor.INDICADORMEDIDO, indicadorMedido));
    }

    // Verifica se o campo capacidadeHidrometro foi informado
    if (capacidadeHidrometro != null
        && !capacidadeHidrometro.trim().equals("" + ConstantesSistema.NUMERO_NAO_INFORMADO)) {
      peloMenosUmParametroInformado = true;
      filtroServicoCobrancaValor.adicionarParametro(
          new ParametroSimples(
              FiltroServicoCobrancaValor.HIDROMETROCAPACIDADE, capacidadeHidrometro));

      filtroServicoCobrancaValor.adicionarCaminhoParaCarregamentoEntidade("hidrometroCapacidade");
    }
    if (indicadorGeracaoDebito != null && indicadorGeracaoDebito.trim().equalsIgnoreCase("1")) {
      filtroServicoCobrancaValor.adicionarParametro(
          new ParametroSimples(
              FiltroServicoCobrancaValor.INDICADOR_GERACAO_DEBITO, ConstantesSistema.SIM));

      if (valorServicoInicial != null
          && !valorServicoInicial.trim().equalsIgnoreCase("")
          && valorServicoFinal != null
          && !valorServicoFinal.trim().equalsIgnoreCase("")) {

        BigDecimal valorInicial =
            new BigDecimal(valorServicoInicial.replace(".", "").replace(",", "."));

        BigDecimal valorFinal =
            new BigDecimal(valorServicoFinal.replace(".", "").replace(",", "."));

        Integer resultado = valorInicial.compareTo(valorFinal);

        if (resultado == 1) {
          throw new ActionServletException(
              "atencao.valor_cobranca_servico_final_menor_valor_inicial");
        }

        filtroServicoCobrancaValor.adicionarParametro(
            new Intervalo(
                FiltroDebitoTipoVigencia.VALOR,
                Util.formatarMoedaRealparaBigDecimal(valorServicoInicial),
                Util.formatarMoedaRealparaBigDecimal(valorServicoFinal)));
      }

      peloMenosUmParametroInformado = true;

    } else if (indicadorGeracaoDebito != null
        && indicadorGeracaoDebito.trim().equalsIgnoreCase("2")) {
      filtroServicoCobrancaValor.adicionarParametro(
          new ParametroSimples(
              FiltroServicoCobrancaValor.INDICADOR_GERACAO_DEBITO, ConstantesSistema.NAO));

      peloMenosUmParametroInformado = true;
    }

    filtroServicoCobrancaValor.adicionarCaminhoParaCarregamentoEntidade("imovelPerfil");
    filtroServicoCobrancaValor.setCampoOrderBy(FiltroServicoCobrancaValor.SERVICOTIPO);

    // Erro caso o usuário mandou Pesquisar sem nenhum parâmetro
    if (!peloMenosUmParametroInformado) {
      throw new ActionServletException("atencao.filtro.nenhum_parametro_informado");
    }

    Collection<ServicoCobrancaValor> colecaoServicoCobrancaValor =
        fachada.pesquisar(filtroServicoCobrancaValor, ServicoCobrancaValor.class.getName());

    // Verifica se o checkbox Atualizar está marcado e em caso afirmativo
    // manda pelo um request uma variável para o
    // ExibirManterValorCobrancaServicoAction para nele verificar se irá
    // para o
    // atualizar ou para o manter
    if (form.getAtualizar() != null && form.getAtualizar().equalsIgnoreCase("1")) {
      httpServletRequest.setAttribute("atualizar", form.getAtualizar());
    }

    if (colecaoServicoCobrancaValor == null || colecaoServicoCobrancaValor.isEmpty()) {
      throw new ActionServletException(
          "atencao.pesquisa.nenhumresultado", null, "Servico Cobranca Valor");
    } else {
      httpServletRequest.setAttribute("colecaoServicoCobrancaValor", colecaoServicoCobrancaValor);
      ServicoCobrancaValor servicoCobrancaValor = new ServicoCobrancaValor();
      servicoCobrancaValor =
          (ServicoCobrancaValor) Util.retonarObjetoDeColecao(colecaoServicoCobrancaValor);
      String idRegistroAtualizar = servicoCobrancaValor.getId().toString();
      sessao.setAttribute("idRegistroAtualizar", idRegistroAtualizar);
    }

    sessao.setAttribute("filtroServicoCobrancaValor", filtroServicoCobrancaValor);

    httpServletRequest.setAttribute("filtroServicoCobrancaValor", filtroServicoCobrancaValor);

    return retorno;
  }
  /** 4. O usuário efetua a filtragem [FS004 - Verificar preenchimento dos campos obrigatórios */
  public InformarAcertoDocumentosNaoAceitosPagamentoHelper carregarHelperParaPesquisa(
      InformarAcertoDocumentosNaoAceitosActionForm form, SistemaParametro sistemaParametro) {

    InformarAcertoDocumentosNaoAceitosPagamentoHelper helper =
        new InformarAcertoDocumentosNaoAceitosPagamentoHelper();

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

      throw new ActionServletException(
          "atencao.campo_selecionado.obrigatorio", "Período de Pagamento Inicial");
    } else {
      helper.setPeriodoPagamentoInicial(
          Util.formatarDataInicial(Util.converteStringParaDate(form.getPeriodoPagamentoInicial())));
    }

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

      throw new ActionServletException(
          "atencao.campo_selecionado.obrigatorio", "Período de Pagamento Final");
    } else {
      helper.setPeriodoPagamentoFinal(
          Util.formatarDataFinal(Util.converteStringParaDate(form.getPeriodoPagamentoFinal())));
    }

    if (sistemaParametro.getClienteFicticioParaAssociarOsPagamentosNaoIdentificados() == null
        || sistemaParametro.getClienteFicticioParaAssociarOsPagamentosNaoIdentificados().getId()
            == null) {

      throw new ActionServletException(
          "atencao.sistema_nao_parametrizado.para_documentos.nao_aceitos");

    } else {
      helper.setIdClienteFicticio(
          sistemaParametro.getClienteFicticioParaAssociarOsPagamentosNaoIdentificados().getId());
    }

    if (form.getIdArrecadador() != null && !form.getIdArrecadador().trim().equals("")) {
      helper.setIdArrecadador(new Integer(form.getIdArrecadador()));
    }

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

      helper.setIdAvisoBancario(new Integer(form.getIdAvisoBancario()));
    }

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

      helper.setIdArrecadadorMov(new Integer(form.getIdArrecadadorMov()));
    }

    if (form.getIdFormaArrecadacao() != null
        && !form.getIdFormaArrecadacao().trim().equals("")
        && !form.getIdFormaArrecadacao().trim().equals("-1")) {

      helper.setIdFormaArrecadacao(new Integer(form.getIdFormaArrecadacao()));
    }

    return helper;
  }
  /**
   * < <Descrição do método>>
   *
   * @param actionMapping Descrição do parâmetro
   * @param actionForm Descrição do parâmetro
   * @param httpServletRequest Descrição do parâmetro
   * @param httpServletResponse Descrição do parâmetro
   * @return Descrição do retorno
   */
  public ActionForward execute(
      ActionMapping actionMapping,
      ActionForm actionForm,
      HttpServletRequest httpServletRequest,
      HttpServletResponse httpServletResponse) {

    // cria a variável de retorno
    ActionForward retorno = null;

    // Mudar isso quando tiver esquema de segurança
    HttpSession sessao = httpServletRequest.getSession(false);

    FiltrarDevolucaoActionForm filtrarDevolucaoActionForm = (FiltrarDevolucaoActionForm) actionForm;

    FiltroDevolucao filtroDevolucao = (FiltroDevolucao) sessao.getAttribute("filtroDevolucao");

    FiltroDevolucaoHistorico filtroDevolucaoHistorico =
        (FiltroDevolucaoHistorico) sessao.getAttribute("filtroDevolucaoHistorico");

    // Collection colecaoDevolucoes = (Collection) sessao
    // .getAttribute("colecaoLocalidadeDevolucoes");

    // Inicio da parte que vai mandar os parametros para o relatório

    Devolucao devolucaoParametrosInicial = new Devolucao();
    Devolucao devolucaoParametrosFinal = new Devolucao();

    // seta os parametros que serão mostrados no relatório
    if (filtrarDevolucaoActionForm.getPeriodoArrecadacaoInicio() != null
        && !filtrarDevolucaoActionForm.getPeriodoArrecadacaoInicio().equals("")) {
      devolucaoParametrosInicial.setAnoMesReferenciaDevolucao(
          new Integer(
              Util.formatarMesAnoParaAnoMesSemBarra(
                  filtrarDevolucaoActionForm.getPeriodoArrecadacaoInicio())));
      devolucaoParametrosFinal.setAnoMesReferenciaDevolucao(
          new Integer(
              Util.formatarMesAnoParaAnoMesSemBarra(
                  filtrarDevolucaoActionForm.getPeriodoArrecadacaoFim())));
    }
    if (filtrarDevolucaoActionForm.getDataDevolucaoInicio() != null
        && !filtrarDevolucaoActionForm.getDataDevolucaoInicio().equals("")) {
      devolucaoParametrosInicial.setDataDevolucao(
          Util.converteStringParaDate(filtrarDevolucaoActionForm.getDataDevolucaoInicio()));
      devolucaoParametrosFinal.setDataDevolucao(
          Util.converteStringParaDate(filtrarDevolucaoActionForm.getDataDevolucaoFim()));
    }

    // Fim da parte que vai mandar os parametros para o relatório

    // cria uma instância da classe do relatório
    RelatorioDevolucao relatorioDevolucao =
        new RelatorioDevolucao(
            (Usuario) (httpServletRequest.getSession(false)).getAttribute("usuarioLogado"));

    // relatorioDevolucao.addParametro("colecaoDevolucoes",
    // colecaoDevolucoes);
    relatorioDevolucao.addParametro("filtroDevolucao", filtroDevolucao);
    relatorioDevolucao.addParametro("filtroDevolucaoHistorico", filtroDevolucaoHistorico);
    relatorioDevolucao.addParametro("devolucaoParametrosInicial", devolucaoParametrosInicial);
    relatorioDevolucao.addParametro("devolucaoParametrosFinal", devolucaoParametrosFinal);

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

    relatorioDevolucao.addParametro("tipoFormatoRelatorio", Integer.parseInt(tipoRelatorio));
    try {
      retorno =
          processarExibicaoRelatorio(
              relatorioDevolucao,
              tipoRelatorio,
              httpServletRequest,
              httpServletResponse,
              actionMapping);
    } catch (SistemaException ex) {
      // manda o erro para a página no request atual
      reportarErros(httpServletRequest, "erro.sistema");

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

    } catch (RelatorioVazioException ex1) {
      // manda o erro para a página no request atual
      reportarErros(httpServletRequest, "erro.relatorio.vazio");

      // seta o mapeamento de retorno para a tela de atenção de popup
      retorno = actionMapping.findForward("telaAtencaoPopup");
    }

    // devolve o mapeamento contido na variável retorno
    return retorno;
  }
  private void validarDadosDebito(
      AtualizarComandoNegativacaoPorCriterioActionForm form, Fachada fachada) {
    Date dataAtual = new Date();
    Integer referenciaDataAtual = Util.getAnoMesComoInteger(dataAtual);

    // Período de Referência do Débito
    if (form.getReferenciaInicial() != null
        && !form.getReferenciaInicial().equals("")
        && form.getReferenciaFinal() != null
        && !form.getReferenciaFinal().equals("")) {
      Integer referenciaInicial =
          Util.formatarMesAnoComBarraParaAnoMes(form.getReferenciaInicial());
      Integer referenciaFinal = Util.formatarMesAnoComBarraParaAnoMes(form.getReferenciaFinal());
      if (!Util.validarMesAno(form.getReferenciaInicial())
          || !Util.validarMesAno(form.getReferenciaFinal())) {
        throw new ActionServletException(
            "atencao.adicionar_debito_ano_mes_referencia_invalido", null, "do débito");
      } else if (referenciaInicial > referenciaFinal) {
        throw new ActionServletException("atencao.referencia.final.menor.referencia.inicial");
      } else if (referenciaDataAtual < referenciaInicial) {
        throw new ActionServletException("atencao.referencia.posterior");
      } else if (referenciaDataAtual < referenciaFinal) {
        throw new ActionServletException("atencao.referencia.posterior");
      }
    }

    FiltroSistemaParametro filtroSistemaParametro = new FiltroSistemaParametro();
    Collection<SistemaParametro> collectionSistemaParametro =
        fachada.pesquisar(filtroSistemaParametro, SistemaParametro.class.getName());
    SistemaParametro sistemaParametro =
        (SistemaParametro) collectionSistemaParametro.iterator().next();

    // Período de referência do débito
    Integer referenciaMinima =
        Util.subtrairAnoAnoMesReferencia(sistemaParametro.getAnoMesArrecadacao(), 5);

    if (form.getReferenciaInicial() != null && !form.getReferenciaInicial().equals("")) {
      Integer referenciaDebInicialInformado =
          Util.formatarMesAnoComBarraParaAnoMes(form.getReferenciaInicial());
      if (referenciaDebInicialInformado < referenciaMinima) {
        throw new ActionServletException("atencao.periodo_referencia_debito_minimo");
      }
    }

    if (form.getReferenciaFinal() != null && !form.getReferenciaFinal().equals("")) {
      Integer referenciaDebFinalInformado =
          Util.formatarMesAnoComBarraParaAnoMes(form.getReferenciaFinal());
      if (referenciaDebFinalInformado < referenciaMinima) {
        throw new ActionServletException("atencao.periodo_referencia_debito_minimo");
      }
    }

    // Período de vencimento do débito
    Integer numeroDiasVencimentoCobranca =
        new Integer(sistemaParametro.getNumeroDiasVencimentoCobranca());
    Date dataMinima =
        Util.subtrairNumeroAnosDeUmaData(
            Util.subtrairNumeroDiasDeUmaData(new Date(), numeroDiasVencimentoCobranca), -5);

    if (form.getDataVencimentoInicial() != null && !form.getDataVencimentoInicial().equals("")) {
      if (Util.validarDiaMesAno(form.getDataVencimentoInicial())) {
        throw new ActionServletException("atencao.datavencimentodebinicial.invalida");
      }
      Date vencimentoDebInicialInformado =
          Util.converteStringParaDate(form.getDataVencimentoInicial());
      if (Util.compararData(vencimentoDebInicialInformado, dataAtual) == 1) {
        throw new ActionServletException(
            "atencao.data_inicial.posterior.hoje", null, Util.formatarData(new Date()));
      }
      if (Util.compararData(vencimentoDebInicialInformado, dataMinima) == -1) {
        throw new ActionServletException("atencao.periodo_vencimento_debito_minimo");
      }
    }

    if (form.getDataVencimentoFinal() != null && !form.getDataVencimentoFinal().equals("")) {
      Date vencimentoDebFinalInformado = Util.converteStringParaDate(form.getDataVencimentoFinal());
      if (Util.validarDiaMesAno(form.getDataVencimentoFinal())) {
        throw new ActionServletException("atencao.datavencimentodebfinal.invalida");
      } else if (Util.compararData(vencimentoDebFinalInformado, dataAtual) == 1) {
        throw new ActionServletException(
            "atencao.data_final.posterior.hoje", null, Util.formatarData(new Date()));
      } else if (Util.compararData(vencimentoDebFinalInformado, dataMinima) == -1) {
        throw new ActionServletException("atencao.periodo_vencimento_debito_minimo");
      }
    }

    if (form.getDataVencimentoInicial() != null
        && !form.getDataVencimentoInicial().equals("")
        && form.getDataVencimentoFinal() != null
        && !form.getDataVencimentoFinal().equals("")) {
      Date vencimentoDebInicial = Util.converteStringParaDate(form.getDataVencimentoInicial());
      Date vencimentoDebFinal = Util.converteStringParaDate(form.getDataVencimentoFinal());

      if (Util.compararData(vencimentoDebInicial, vencimentoDebFinal) == 1) {
        throw new ActionServletException( // Data Final do Período é
            // anterior à Data Inicial
            // do Período
            "atencao.data_final_periodo.anterior.data_inicial_periodo");
      }
    }

    // Valor do Débito
    if (form.getValorDebitoInicial() != null
        && !form.getValorDebitoInicial().equals("")
        && form.getValorDebitoFinal() != null
        && !form.getValorDebitoFinal().equals("")) {
      BigDecimal valorDebInicial =
          Util.formatarMoedaRealparaBigDecimal(form.getValorDebitoInicial());
      BigDecimal valorDebFinal = Util.formatarMoedaRealparaBigDecimal(form.getValorDebitoFinal());
      if (valorDebInicial.compareTo(valorDebFinal) == 1) {
        throw new ActionServletException("atencao.debito_inicial_maior_debito_final");
      }
    }

    // Número de Contas
    if (form.getNumeroContasInicial() != null
        && !form.getNumeroContasInicial().equals("")
        && form.getNumeroContasFinal() != null
        && !form.getNumeroContasFinal().equals("")) {
      Integer contaInicial = new Integer(form.getNumeroContasInicial());
      Integer contaFinal = new Integer(form.getNumeroContasFinal());
      if (contaInicial.compareTo(contaFinal) == 1) {
        throw new ActionServletException("atencao.numero_conta_inicial_maior_final");
      }
    }

    // Parcela em Atraso
    if ((form.getParcelaAtraso() != null && form.getParcelaAtraso().equals("1"))
        && (form.getDiasAtrasoParcelamento() == null
            || form.getDiasAtrasoParcelamento().equals(""))) {
      throw new ActionServletException("atencao.informar_dias_atraso_parcelamento");
    }

    // Recebeu Carta de Parcelamento em Atraso
    if ((form.getCartaParcelamentoAtraso() != null && form.getCartaParcelamentoAtraso().equals("1"))
        && (form.getDiasAtrasoRecebimentoCarta() == null
            || form.getDiasAtrasoRecebimentoCarta().equals(""))) {
      throw new ActionServletException("atencao.informar_dias_atraso_parcelamento");
    }
  }
  public ActionForward execute(
      ActionMapping actionMapping,
      ActionForm actionForm,
      HttpServletRequest httpServletRequest,
      HttpServletResponse httpServletResponse) {

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

    HttpSession sessao = httpServletRequest.getSession(false);

    Fachada fachada = Fachada.getInstancia();

    // Form
    AcompanharRoteiroProgramacaoOrdemServicoActionForm acompanharActionForm =
        (AcompanharRoteiroProgramacaoOrdemServicoActionForm) actionForm;

    String chaveArquivo = httpServletRequest.getParameter("chaveArquivo");
    ArquivoTextoAcompanhamentoServico arquivoTextoAcompanhamentoServico = null;

    if (chaveArquivo != null) {
      FiltroArquivoTextoAcompanhamentoServico filtroArquivoTextoAcompanhamentoServico =
          new FiltroArquivoTextoAcompanhamentoServico();
      filtroArquivoTextoAcompanhamentoServico.adicionarParametro(
          new ParametroSimples(FiltroArquivoTextoAcompanhamentoServico.ID, chaveArquivo));

      Collection<?> colecaoArquivoTxtAcompanhamentoServico =
          fachada.pesquisar(
              filtroArquivoTextoAcompanhamentoServico,
              ArquivoTextoAcompanhamentoServico.class.getName());

      arquivoTextoAcompanhamentoServico =
          (ArquivoTextoAcompanhamentoServico)
              colecaoArquivoTxtAcompanhamentoServico.iterator().next();

      if (arquivoTextoAcompanhamentoServico
          .getSituacaoTransmissaoLeitura()
          .getId()
          .equals(SituacaoTransmissaoLeitura.TRANSMITIDO)) {
        throw new ActionServletException(
            "atencao.nao_possivel.informar_situacao.situacao_finalizado");
      }
    }

    String chaveOs = httpServletRequest.getParameter("chave");

    OrdemServico ordemServico = fachada.recuperaOSPorId(new Integer(chaveOs));

    // [FS0007 - Verificar seleção de ordem de serviço encerrada]
    if (ordemServico.getSituacao() == OrdemServico.SITUACAO_ENCERRADO.shortValue()) {
      throw new ActionServletException("atencao.ordem_servico_encerrada_para_alocar");
    }

    Date dataRoteiro = Util.converteStringParaDate(acompanharActionForm.getDataProgramacao());

    acompanharActionForm.setIdOrdemServico(chaveOs);
    acompanharActionForm.setDescricaoOrdemServico(ordemServico.getServicoTipo().getDescricao());

    ObterDescricaoSituacaoOSHelper obter = fachada.obterDescricaoSituacaoOS(new Integer(chaveOs));
    acompanharActionForm.setSituacaoAtual(obter.getDescricaoSituacao());

    acompanharActionForm.setIdAcompanhamentoArquivosRoteiro(
        httpServletRequest.getParameter("chaveArquivo"));

    this.pesquisarOsProgramNaoEncerMotivo(httpServletRequest);

    sessao.setAttribute("chaveOsInformarSituacao", chaveOs);
    sessao.setAttribute("chaveArquivoInformarSituacao", chaveArquivo);
    sessao.setAttribute("dataRoteiroInformarSituacao", dataRoteiro);

    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) {

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

    httpServletRequest.setAttribute("telaSucessoRelatorio", true);

    HttpSession sessao = httpServletRequest.getSession(false);

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

    // Form
    GerarRelatorioReligacaoClientesInadiplentesForm form =
        (GerarRelatorioReligacaoClientesInadiplentesForm) actionForm;

    FiltrarRelatorioReligacaoClientesInadiplentesHelper helper =
        new FiltrarRelatorioReligacaoClientesInadiplentesHelper();

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

    Fachada fachada = Fachada.getInstancia();

    boolean peloMenosUmParametroInformado = false;

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

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

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

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

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

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

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

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

      peloMenosUmParametroInformado = true;
    }

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

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

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

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

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

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

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

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

      peloMenosUmParametroInformado = true;
    }

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

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

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

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

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

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

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

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

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

      } else {

        localidade = form.getNomeLocalidade();
      }
    }

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

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

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

        localidadeID = (String) form.getLocalidadeID();

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

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

        setorComercialCD = (String) form.getSetorComercialCD();

        FiltroSetorComercial filtroSetorComercial = new FiltroSetorComercial();

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      } else {

        cliente = form.getNomeCliente();
      }

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

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

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

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

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

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

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

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

      } else {

        nomeUsuario = form.getNomeUsuario();
      }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

          peloMenosUmParametroInformado = true;

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

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

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

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

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

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

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

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

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

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

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

          peloMenosUmParametroInformado = true;

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

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

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

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

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

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

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

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

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

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

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

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

    try {

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

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

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

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

    return retorno;
  }