package gcom.gui.atendimentopublico;
import gcom.atendimentopublico.bean.IntegracaoComercialHelper;
import gcom.atendimentopublico.ligacaoagua.LigacaoAgua;
import gcom.atendimentopublico.ordemservico.OrdemServico;
import gcom.atendimentopublico.ordemservico.ServicoNaoCobrancaMotivo;
import gcom.cadastro.imovel.Imovel;
import gcom.fachada.Fachada;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
import gcom.seguranca.acesso.usuario.Usuario;
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;
/**
* Descri��o da classe
*
* @author R�mulo Aur�lio
* @date 07/07/2006
*/
public class EfetuarReligacaoAguaAction extends GcomAction {
/**
* [UC0357] Efetuar Religa��o de �gua
*
* Este caso de uso permite efetuar a religa��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) {
// Seta o retorno
ActionForward retorno = actionMapping.findForward("telaSucesso");
// Obt�m a inst�ncia da fachada
Fachada fachada = Fachada.getInstancia();
HttpSession sessao = httpServletRequest.getSession(false);
EfetuarReligacaoAguaActionForm efetuarReligacaoAguaActionForm = (EfetuarReligacaoAguaActionForm) actionForm;
// Usuario logado no sistema
Usuario usuario = (Usuario) sessao.getAttribute("usuarioLogado");
OrdemServico ordemServico = null;
Boolean veioEncerrarOS = null;
if (httpServletRequest.getAttribute("veioEncerrarOS") != null) {
veioEncerrarOS = Boolean.TRUE;
} else {
veioEncerrarOS = Boolean.FALSE;
}
if (sessao.getAttribute("ordemServico") == null) {
String idOrdemServico = efetuarReligacaoAguaActionForm
.getIdOrdemServico();
if (efetuarReligacaoAguaActionForm.getIdOrdemServico() != null) {
idOrdemServico = efetuarReligacaoAguaActionForm
.getIdOrdemServico();
} else {
idOrdemServico = (String) httpServletRequest
.getAttribute("veioEncerrarOS");
sessao
.setAttribute(
"caminhoRetornoIntegracaoComercial",
httpServletRequest
.getAttribute("caminhoRetornoIntegracaoComercial"));
}
if (idOrdemServico != null && !idOrdemServico.trim().equals("")) {
ordemServico = fachada.recuperaOSPorId(new Integer(
idOrdemServico));
if (ordemServico != null) {
fachada.validarExibirRestabelecimentoLigacaoAgua(
ordemServico, veioEncerrarOS);
} else {
throw new ActionServletException(
"atencao.ordem_servico.inexistente");
}
}
} else {
ordemServico = (OrdemServico) sessao.getAttribute("ordemServico");
}
//ordemServico = (OrdemServico) sessao.getAttribute("ordemServico");
String idServicoMotivoNaoCobranca = efetuarReligacaoAguaActionForm
.getMotivoNaoCobranca();
String valorPercentual = efetuarReligacaoAguaActionForm
.getPercentualCobranca();
String qtdParcelas = efetuarReligacaoAguaActionForm
.getQuantidadeParcelas();
if (ordemServico != null
&& efetuarReligacaoAguaActionForm.getIdTipoDebito() != null) {
ServicoNaoCobrancaMotivo servicoNaoCobrancaMotivo = null;
ordemServico.setIndicadorComercialAtualizado(new Short("1"));
BigDecimal valorAtual = new BigDecimal(0);
if (efetuarReligacaoAguaActionForm.getValorDebito() != null) {
String valorDebito = efetuarReligacaoAguaActionForm
.getValorDebito().toString().replace(".", "");
valorDebito = valorDebito.replace(",", ".");
valorAtual = new BigDecimal(valorDebito);
ordemServico.setValorAtual(valorAtual);
}
if (idServicoMotivoNaoCobranca != null) {
servicoNaoCobrancaMotivo = new ServicoNaoCobrancaMotivo();
servicoNaoCobrancaMotivo.setId(new Integer(
idServicoMotivoNaoCobranca));
}
ordemServico.setServicoNaoCobrancaMotivo(servicoNaoCobrancaMotivo);
if (valorPercentual != null) {
ordemServico
.setPercentualCobranca(new BigDecimal(
efetuarReligacaoAguaActionForm
.getPercentualCobranca()));
}
}
Imovel imovel = ordemServico.getRegistroAtendimento().getImovel();
LigacaoAgua ligacaoAgua = new LigacaoAgua();
// [FS0005] Verificar preenchimento dos Campos
// validar Data Corte
if (efetuarReligacaoAguaActionForm.getDataReligacao() != null
&& !efetuarReligacaoAguaActionForm.getDataReligacao()
.equals("")) {
Date data = Util
.converteStringParaDate(efetuarReligacaoAguaActionForm
.getDataReligacao());
ligacaoAgua.setId(imovel.getId());
ligacaoAgua.setDataReligacao(data);
} else {
throw new ActionServletException("atencao.informe_campo", null,
" Data da Liga��o");
}
IntegracaoComercialHelper integracaoComercialHelper = new IntegracaoComercialHelper();
integracaoComercialHelper.setImovel(imovel);
integracaoComercialHelper.setLigacaoAgua(ligacaoAgua);
integracaoComercialHelper.setOrdemServico(ordemServico);
integracaoComercialHelper.setQtdParcelas(qtdParcelas);
integracaoComercialHelper.setUsuarioLogado(usuario);
if (efetuarReligacaoAguaActionForm.getVeioEncerrarOS()
.equalsIgnoreCase("FALSE")) {
integracaoComercialHelper.setVeioEncerrarOS(Boolean.FALSE);
fachada.efetuarReligacaoAgua(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.efetuarReligacaoAgua(ordemServico,
// efetuarReligacaoAguaActionForm.getVeioEncerrarOS());
if (retorno.getName().equalsIgnoreCase("telaSucesso")) {
montarPaginaSucesso(httpServletRequest,
"Religa��o de �gua para o im�vel " + imovel.getId()
+ " efetuada com sucesso",
"Efetuar outra Religa��o de �gua",
"exibirEfetuarReligacaoAguaAction.do?menu=sim");
}
return retorno;
}
}