/**
   * Preencher dados do corte da ligação
   *
   * @author Leonardo Regis
   * @date 23/09/2006
   * @param sessao
   * @param form
   * @param os
   */
  private void pesquisarDadosCorteLigacao(
      HttpSession sessao, EfetuarCorteLigacaoAguaActionForm form, OrdemServico ordemServico) {
    // Data Encerramento
    if (ordemServico.getDataEncerramento() != null
        && !ordemServico.getDataEncerramento().equals("")) {
      form.setDataCorte(Util.formatarData(ordemServico.getDataEncerramento()));
    }

    // Comentado por Raphael Rossiter em 28/02/2007
    // Motivo do Corte
    /*if(ordemServico.getRegistroAtendimento().getImovel().getLigacaoAgua().getMotivoCorte() != null){
    	form.setMotivoCorte(""+ordemServico.getRegistroAtendimento().getImovel().getLigacaoAgua().getMotivoCorte().getId());
    }
    // Tipo do Corte
    if(ordemServico.getRegistroAtendimento().getImovel().getLigacaoAgua().getCorteTipo() != null) {
    	form.setTipoCorte(""+ordemServico.getRegistroAtendimento().getImovel().getLigacaoAgua().getCorteTipo().getId());
    }
    // Leitura do Corte
    HidrometroInstalacaoHistorico hidrometroInstalacaoHistorico =
    	ordemServico.getRegistroAtendimento().getImovel().getLigacaoAgua().getHidrometroInstalacaoHistorico();
    if(hidrometroInstalacaoHistorico != null &&
       hidrometroInstalacaoHistorico.getNumeroLeituraCorte() != null){
    	form.setNumLeituraCorte(""+hidrometroInstalacaoHistorico.getNumeroLeituraCorte());
    }
    // Número do Selo do Corte
    if(ordemServico.getRegistroAtendimento().getImovel().getLigacaoAgua().getNumeroSeloCorte() != null){
    	form.setNumSeloCorte(""+ordemServico.getRegistroAtendimento().getImovel().getLigacaoAgua().getNumeroSeloCorte());
    }*/

    if (ordemServico.getImovel().getLigacaoAgua().getMotivoCorte() != null) {
      form.setMotivoCorte("" + ordemServico.getImovel().getLigacaoAgua().getMotivoCorte().getId());
    }
    // Tipo do Corte
    if (ordemServico.getImovel().getLigacaoAgua().getCorteTipo() != null) {
      form.setTipoCorte("" + ordemServico.getImovel().getLigacaoAgua().getCorteTipo().getId());
    }
    // Leitura do Corte
    HidrometroInstalacaoHistorico hidrometroInstalacaoHistorico =
        ordemServico.getImovel().getLigacaoAgua().getHidrometroInstalacaoHistorico();
    if (hidrometroInstalacaoHistorico != null
        && hidrometroInstalacaoHistorico.getNumeroLeituraCorte() != null) {
      form.setNumLeituraCorte("" + hidrometroInstalacaoHistorico.getNumeroLeituraCorte());
    }
    // Número do Selo do Corte
    if (ordemServico.getImovel().getLigacaoAgua().getNumeroSeloCorte() != null) {
      form.setNumSeloCorte("" + ordemServico.getImovel().getLigacaoAgua().getNumeroSeloCorte());
    }
  }
  /**
   * [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");
    }
  }