package gcom.gui.atendimentopublico;
import gcom.atendimentopublico.bean.IntegracaoComercialHelper;
import gcom.atendimentopublico.ligacaoagua.FiltroLigacaoAgua;
import gcom.atendimentopublico.ligacaoagua.LigacaoAgua;
import gcom.atendimentopublico.ordemservico.OrdemServico;
import gcom.atendimentopublico.ordemservico.ServicoNaoCobrancaMotivo;
import gcom.cadastro.imovel.FiltroImovel;
import gcom.cadastro.imovel.Imovel;
import gcom.fachada.Fachada;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
import gcom.micromedicao.hidrometro.Hidrometro;
import gcom.micromedicao.hidrometro.HidrometroInstalacaoHistorico;
import gcom.micromedicao.hidrometro.HidrometroLocalInstalacao;
import gcom.micromedicao.hidrometro.HidrometroProtecao;
import gcom.micromedicao.medicao.MedicaoTipo;
import gcom.seguranca.acesso.usuario.Usuario;
import gcom.util.ConstantesSistema;
import gcom.util.Util;
import gcom.util.filtro.ParametroSimples;
import java.math.BigDecimal;
import java.util.Collection;
import java.util.Date;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
/**
* Description of the Class
*
* @author Leandro Cavalcanti
* @created 20 de Junho de 2006
*/
public class EfetuarRestabelecimentoLigacaoAguaComInstalacaoHidrometroAction extends GcomAction {
/**
* 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");
}
}
// [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;
}
// [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;
}
}