package gcom.gui.atendimentopublico.hidrometro;
import gcom.atendimentopublico.bean.IntegracaoComercialHelper;
import gcom.atendimentopublico.ordemservico.OrdemServico;
import gcom.atendimentopublico.ordemservico.ServicoNaoCobrancaMotivo;
import gcom.cadastro.imovel.Imovel;
import gcom.fachada.Fachada;
import gcom.gui.GcomAction;
import gcom.interceptor.RegistradorOperacao;
import gcom.micromedicao.hidrometro.Hidrometro;
import gcom.micromedicao.hidrometro.HidrometroInstalacaoHistorico;
import gcom.micromedicao.hidrometro.HidrometroLocalArmazenagem;
import gcom.micromedicao.hidrometro.HidrometroSituacao;
import gcom.seguranca.acesso.Operacao;
import gcom.seguranca.acesso.OperacaoEfetuada;
import gcom.seguranca.acesso.usuario.Usuario;
import gcom.seguranca.acesso.usuario.UsuarioAcao;
import gcom.seguranca.acesso.usuario.UsuarioAcaoUsuarioHelper;
import gcom.util.ConstantesSistema;
import gcom.util.Util;
import java.math.BigDecimal;
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 Thiago Ten�rio
*/
public class EfetuarRetiradaHidrometroAction 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) {
// Seta o retorno
ActionForward retorno = actionMapping.findForward("telaSucesso");
// Obt�m a inst�ncia da fachada
Fachada fachada = Fachada.getInstancia();
HttpSession sessao = httpServletRequest.getSession(false);
// Usuario logado no sistema
Usuario usuario = (Usuario) sessao.getAttribute("usuarioLogado");
/*
* [UC0107] Registrar Transa��o
*
*/
RegistradorOperacao registradorOperacao = new RegistradorOperacao(
Operacao.OPERACAO_RETIRADA_HIDROMETRO_EFETUAR,
new UsuarioAcaoUsuarioHelper(usuario,
UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO));
Operacao operacao = new Operacao();
operacao.setId(Operacao.OPERACAO_RETIRADA_HIDROMETRO_EFETUAR);
OperacaoEfetuada operacaoEfetuada = new OperacaoEfetuada();
operacaoEfetuada.setOperacao(operacao);
// [UC0107] -Fim- Registrar Transa��o
EfetuarRetiradaHidrometroActionForm efetuarRetiradaHidrometroActionForm =
(EfetuarRetiradaHidrometroActionForm) actionForm;
String idHidrometroLocalArmazenagem = null;
String hidrometroExtraviado = (String) sessao.getAttribute("hidrometroExtravido");
sessao.removeAttribute("hidrometroExtravido");
// caso o hidrometro esteja extraviado, nao pega o local de armazenagem
if(hidrometroExtraviado == null || !hidrometroExtraviado.equals("sim")){
idHidrometroLocalArmazenagem = efetuarRetiradaHidrometroActionForm
.getHidrometroLocalArmazenagem();
}
OrdemServico ordemServico = (OrdemServico) sessao
.getAttribute("ordemServico");
Imovel imovel = null;
if (ordemServico.getRegistroAtendimento() != null &&
ordemServico.getRegistroAtendimento().getImovel() != null ) {
imovel = ordemServico.getRegistroAtendimento().getImovel();
} else {
imovel = ordemServico.getImovel();
}
HidrometroInstalacaoHistorico hidrometroInstalacaoHistorico = (HidrometroInstalacaoHistorico) sessao
.getAttribute("hidrometroInstalacaoHistorico");
hidrometroInstalacaoHistorico.setUsuarioRetirada(usuario);
Hidrometro hidrometro = hidrometroInstalacaoHistorico.getHidrometro();
hidrometro = fachada.pesquisarHidrometroPeloId(hidrometro.getId());
HidrometroLocalArmazenagem hidrometroLocalArmazenagem = null;
if(idHidrometroLocalArmazenagem != null){
hidrometroLocalArmazenagem = new HidrometroLocalArmazenagem();
hidrometroLocalArmazenagem.setId(new Integer(
idHidrometroLocalArmazenagem));
}
HidrometroSituacao hidrometroSituacao = new HidrometroSituacao();
hidrometroSituacao.setId(new Integer(efetuarRetiradaHidrometroActionForm.getIdHidrometroSituacao()));
hidrometro.setHidrometroSituacao(hidrometroSituacao);
hidrometro.setHidrometroLocalArmazenagem(hidrometroLocalArmazenagem);
hidrometro.setUltimaAlteracao(new Date());
if(efetuarRetiradaHidrometroActionForm
.getNumeroLeitura() != null && !efetuarRetiradaHidrometroActionForm
.getNumeroLeitura().equals("")){
hidrometroInstalacaoHistorico.setNumeroLeituraRetirada(new Integer(efetuarRetiradaHidrometroActionForm
.getNumeroLeitura()));
}
hidrometroInstalacaoHistorico.setUltimaAlteracao(new Date());
hidrometroInstalacaoHistorico.setHidrometro(hidrometro);
if (efetuarRetiradaHidrometroActionForm.getDataRetirada() != null
&& !efetuarRetiradaHidrometroActionForm.getDataRetirada()
.equals("")) {
hidrometroInstalacaoHistorico.setDataRetirada(Util
.converteStringParaDate(efetuarRetiradaHidrometroActionForm
.getDataRetirada()));
}
// regitrando operacao
hidrometroInstalacaoHistorico.setOperacaoEfetuada(operacaoEfetuada);
hidrometroInstalacaoHistorico.adicionarUsuario(usuario,
UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO);
registradorOperacao.registrarOperacao(hidrometroInstalacaoHistorico);
ServicoNaoCobrancaMotivo servicoNaoCobrancaMotivo = null;
ordemServico.setIndicadorComercialAtualizado(new Short("1"));
if (efetuarRetiradaHidrometroActionForm.getMotivoNaoCobranca() != null) {
servicoNaoCobrancaMotivo = new ServicoNaoCobrancaMotivo();
servicoNaoCobrancaMotivo.setId(new Integer(
efetuarRetiradaHidrometroActionForm.getMotivoNaoCobranca()));
}
ordemServico.setServicoNaoCobrancaMotivo(servicoNaoCobrancaMotivo);
if (efetuarRetiradaHidrometroActionForm.getPercentualCobranca() != null
&& !efetuarRetiradaHidrometroActionForm.getPercentualCobranca().equals(""
+ ConstantesSistema.NUMERO_NAO_INFORMADO)) {
ordemServico.setPercentualCobranca(new BigDecimal(
efetuarRetiradaHidrometroActionForm
.getPercentualCobranca()));
}
BigDecimal valorAtual = new BigDecimal(0);
if (efetuarRetiradaHidrometroActionForm.getValorDebito() != null) {
String valorDebito = efetuarRetiradaHidrometroActionForm
.getValorDebito().toString().replace(".", "");
valorDebito = valorDebito.replace(",", ".");
valorAtual = new BigDecimal(valorDebito);
ordemServico.setValorAtual(valorAtual);
}
String qtdParcelas = efetuarRetiradaHidrometroActionForm
.getQuantidadeParcelas();
IntegracaoComercialHelper integracaoComercialHelper = new IntegracaoComercialHelper();
integracaoComercialHelper
.setHidrometroInstalacaoHistorico(hidrometroInstalacaoHistorico);
integracaoComercialHelper.setImovel(imovel);
integracaoComercialHelper.setOrdemServico(ordemServico);
integracaoComercialHelper.setQtdParcelas(qtdParcelas);
if (efetuarRetiradaHidrometroActionForm.getVeioEncerrarOS()
.equalsIgnoreCase("FALSE")) {
integracaoComercialHelper.setVeioEncerrarOS(Boolean.FALSE);
fachada.efetuarRetiradaHidrometro(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");
}
// fachada.efetuarRetiradaHidrometro(hidrometroInstalacaoHistorico);
if (retorno.getName().equalsIgnoreCase("telaSucesso")) {
montarPaginaSucesso(httpServletRequest,
"Retirada do Hidr�metro para "
+ efetuarRetiradaHidrometroActionForm.getMedicaoTipo() + " no im�vel "
+ imovel.getId() + " efetuada com sucesso",
"Efetuar outra Retirada de hidr�metro",
"exibirEfetuarRetiradaHidrometroAction.do?menu=sim");
}
return retorno;
}
}