package gcom.gui.atendimentopublico;
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.ActionServletException;
import gcom.gui.GcomAction;
import gcom.seguranca.acesso.usuario.Usuario;
import gcom.util.Util;
import java.math.BigDecimal;
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 12/07/2006
*/
public class EfetuarRestabelecimentoLigacaoAguaAction 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");
HttpSession sessao = httpServletRequest.getSession(false);
// Obt�m a inst�ncia da fachada
EfetuarRestabelecimentoLigacaoAguaActionForm efetuarRestabelecimentoLigacaoAguaActionForm = (EfetuarRestabelecimentoLigacaoAguaActionForm) actionForm;
Fachada fachada = Fachada.getInstancia();
String idServicoMotivoNaoCobranca = efetuarRestabelecimentoLigacaoAguaActionForm
.getMotivoNaoCobranca();
String valorPercentual = efetuarRestabelecimentoLigacaoAguaActionForm
.getPercentualCobranca();
OrdemServico ordemServico = null;
// Usuario logado no sistema
Usuario usuario = (Usuario) sessao.getAttribute("usuarioLogado");
// [SB0001] - Atualizar Im�vel/Liga��o de �gua
Boolean veioEncerrarOS = null;
if (httpServletRequest.getAttribute("veioEncerrarOS") != null) {
veioEncerrarOS = Boolean.TRUE;
} else {
veioEncerrarOS = Boolean.FALSE;
}
if (sessao.getAttribute("ordemServico") == null) {
String idOrdemServico = efetuarRestabelecimentoLigacaoAguaActionForm
.getIdOrdemServico();
if (efetuarRestabelecimentoLigacaoAguaActionForm
.getIdOrdemServico() != null) {
idOrdemServico = efetuarRestabelecimentoLigacaoAguaActionForm
.getIdOrdemServico();
} else {
idOrdemServico = (String) httpServletRequest
.getAttribute("veioEncerrarOS");
efetuarRestabelecimentoLigacaoAguaActionForm
.setDataRestabelecimento((String) httpServletRequest
.getAttribute("dataEncerramento"));
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");
}
Imovel imovel = ordemServico.getRegistroAtendimento().getImovel();
// regitrando operacao
// ordemServico.setOperacaoEfetuada(operacaoEfetuada);
// ordemServico.adicionarUsuario(usuario,
// UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO);
// registradorOperacao.registrarOperacao(ordemServico);
// fachada.efetuarReligacaoAgua(ordemServico);
if (ordemServico != null
&& efetuarRestabelecimentoLigacaoAguaActionForm
.getIdTipoDebito() != null) {
ServicoNaoCobrancaMotivo servicoNaoCobrancaMotivo = null;
ordemServico.setIndicadorComercialAtualizado(new Short("1"));
BigDecimal valorAtual = new BigDecimal(0);
if (efetuarRestabelecimentoLigacaoAguaActionForm.getValorDebito() != null) {
String valorDebito = efetuarRestabelecimentoLigacaoAguaActionForm
.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);
/*
* Alterado por Raphael Rossiter em 24/07/2007
* OBJETIVO: Inserir o d�bito a cobrar com o valor correto
*/
/*if (valorPercentual != null) {
ordemServico.setPercentualCobranca(Util.formatarMoedaRealparaBigDecimal(
efetuarRestabelecimentoLigacaoAguaActionForm
.getValorParcelas()));
}*/
if (valorPercentual != null) {
ordemServico.setPercentualCobranca(new BigDecimal(valorPercentual));
}
}
String qtdParcelas = efetuarRestabelecimentoLigacaoAguaActionForm
.getQuantidadeParcelas();
IntegracaoComercialHelper integracaoComercialHelper = new IntegracaoComercialHelper();
if (efetuarRestabelecimentoLigacaoAguaActionForm
.getDataRestabelecimento() != null
&& !efetuarRestabelecimentoLigacaoAguaActionForm
.getDataRestabelecimento().equals("")) {
ordemServico
.setDataEncerramento(Util
.converteStringParaDate(efetuarRestabelecimentoLigacaoAguaActionForm
.getDataRestabelecimento()));
}
integracaoComercialHelper.setImovel(imovel);
integracaoComercialHelper.setOrdemServico(ordemServico);
integracaoComercialHelper.setQtdParcelas(qtdParcelas);
integracaoComercialHelper.setUsuarioLogado(usuario);
if (efetuarRestabelecimentoLigacaoAguaActionForm.getVeioEncerrarOS()
.equalsIgnoreCase("FALSE")) {
integracaoComercialHelper.setVeioEncerrarOS(Boolean.FALSE);
fachada
.efetuarRestabelecimentoLigacaoAgua(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")) {
// fachada.efetuarRestabelecimentoLigacaoAgua(ordemServico,
// efetuarRestabelecimentoLigacaoAguaActionForm.getVeioEncerrarOS().toString());
/*
* if(ordemServico.getServicoTipo().getDebitoTipo() != null &&
* (ordemServico.getServicoNaoCobrancaMotivo() == null ||
* ordemServico.getServicoNaoCobrancaMotivo().getId() ==
* ConstantesSistema.NUMERO_NAO_INFORMADO)){
* fachada.gerarDebitoOrdemServico(ordemServico.getId(),
* ordemServico.getServicoTipo().getDebitoTipo().getId(),
* Util.calcularValorDebitoComPorcentagem(ordemServico.getValorAtual(),
* efetuarRestabelecimentoLigacaoAguaActionForm.getPercentualCobranca()) ,
* new
* Integer(efetuarRestabelecimentoLigacaoAguaActionForm.getQuantidadeParcelas()).intValue()); }
*/
// [FS006] Verificar Sucesso da Transa��o
montarPaginaSucesso(httpServletRequest,
"Restabelecimento da Liga��o de �gua para o im�vel "
+ imovel.getId() + " efetuada com sucesso",
"Efetuar outro Restabelecimento da Liga��o de �gua",
"exibirEfetuarRestabelecimentoLigacaoAguaAction.do?menu=sim");
}
return retorno;
}
}