package gcom.gui.faturamento.credito;
import gcom.atendimentopublico.ligacaoagua.LigacaoAguaSituacao;
import gcom.atendimentopublico.ligacaoesgoto.LigacaoEsgotoSituacao;
import gcom.cadastro.cliente.ClienteImovel;
import gcom.cadastro.cliente.ClienteRelacaoTipo;
import gcom.cadastro.cliente.FiltroClienteImovel;
import gcom.cadastro.imovel.FiltroImovel;
import gcom.cadastro.imovel.FiltroImovelCobrancaSituacao;
import gcom.cadastro.imovel.Imovel;
import gcom.cadastro.imovel.ImovelCobrancaSituacao;
import gcom.cobranca.CobrancaSituacao;
import gcom.fachada.Fachada;
import gcom.faturamento.credito.CreditoARealizar;
import gcom.faturamento.credito.CreditoOrigem;
import gcom.faturamento.credito.CreditoTipo;
import gcom.faturamento.credito.FiltroCreditoARealizar;
import gcom.faturamento.credito.FiltroCreditoOrigem;
import gcom.faturamento.credito.FiltroCreditoTipo;
import gcom.faturamento.debito.DebitoCreditoSituacao;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
import gcom.util.ConstantesSistema;
import gcom.util.filtro.ParametroSimples;
import java.util.Collection;
import java.util.List;
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;
/**
* [UC0195] Manter Cr�dito a Realizar Permite cancelar um ou mais cr�ditos a
* realizar de um determinado im�vel
*
* @author Roberta Costa
* @since 12/01/2006
*/
public class ExibirManterCreditoARealizarAction extends GcomAction {
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
// Seta o mapeamento de retorno
ActionForward retorno = actionMapping
.findForward("exibirManterCreditoARealizar");
HttpSession sessao = httpServletRequest.getSession(false);
Fachada fachada = Fachada.getInstancia();
// Cole��o de Tipo de Cr�dito
FiltroCreditoTipo filtroCreditoTipo = new FiltroCreditoTipo();
Collection<CreditoTipo> collectionCreditoTipo = fachada.pesquisar(
filtroCreditoTipo, CreditoTipo.class.getName());
httpServletRequest.setAttribute("collectionCreditoTipo",
collectionCreditoTipo);
// Cole��o de Origem do Cr�dito
FiltroCreditoOrigem filtroCreditoOrigem = new FiltroCreditoOrigem();
Collection<CreditoOrigem> collectionCreditoOrigem = fachada.pesquisar(
filtroCreditoOrigem, CreditoOrigem.class.getName());
httpServletRequest.setAttribute("collectionCreditoOrigem",
collectionCreditoOrigem);
// Valida��es do Formul�rio
ManterCreditoARealizarActionForm manterCreditoARealizarActionForm = (ManterCreditoARealizarActionForm) actionForm;
String limparForm = (String) httpServletRequest
.getParameter("limparForm");
String codigoImovel = manterCreditoARealizarActionForm
.getMatriculaImovel();
if(httpServletRequest.getParameter("menu") != null){
codigoImovel = null;
manterCreditoARealizarActionForm.setMatriculaImovel("");
manterCreditoARealizarActionForm.setInscricaoImovel("");
manterCreditoARealizarActionForm.setNomeCliente("");
manterCreditoARealizarActionForm.setSituacaoAgua("");
manterCreditoARealizarActionForm.setSituacaoEsgoto("");
}
if (codigoImovel == null || codigoImovel.trim().equals("")){
if (httpServletRequest.getParameter("codigoImovel") != null){
codigoImovel = httpServletRequest.getParameter("codigoImovel").toString();
}
}
if (codigoImovel != null && !codigoImovel.trim().equals("")) {
// Pesquisa o imovel na base
FiltroImovel filtroImovel = new FiltroImovel();
filtroImovel.adicionarParametro(new ParametroSimples(
FiltroImovel.ID, codigoImovel));
filtroImovel.adicionarCaminhoParaCarregamentoEntidade("logradouroBairro.bairro.municipio.unidadeFederacao");
filtroImovel.adicionarCaminhoParaCarregamentoEntidade("localidade");
filtroImovel
.adicionarCaminhoParaCarregamentoEntidade("setorComercial");
filtroImovel
.adicionarCaminhoParaCarregamentoEntidade("quadra");
filtroImovel.adicionarCaminhoParaCarregamentoEntidade("logradouroCep.cep");
filtroImovel.adicionarCaminhoParaCarregamentoEntidade("logradouroCep.logradouro.logradouroTipo");
filtroImovel.adicionarCaminhoParaCarregamentoEntidade("logradouroCep.logradouro.logradouroTitulo");
filtroImovel
.adicionarCaminhoParaCarregamentoEntidade("enderecoReferencia");
/*filtroImovel
.adicionarCaminhoParaCarregamentoEntidade("ligacaoAguaSituacao.id");
filtroImovel
.adicionarCaminhoParaCarregamentoEntidade("ligacaoEsgotoSituacao.id");
*/
filtroImovel.adicionarCaminhoParaCarregamentoEntidade("ligacaoAguaSituacao");
filtroImovel.adicionarCaminhoParaCarregamentoEntidade("ligacaoEsgotoSituacao");
Collection<Imovel> imovelPesquisado = fachada.pesquisar(
filtroImovel, Imovel.class.getName());
// [FS0001 - Verificar exist�ncioa da matr�cula do im�vel] Imovel
// Inxistente
if (imovelPesquisado != null && imovelPesquisado.isEmpty()) {
httpServletRequest.setAttribute("corImovel","exception");
manterCreditoARealizarActionForm
.setInscricaoImovel(ConstantesSistema.CODIGO_IMOVEL_INEXISTENTE);
manterCreditoARealizarActionForm
.setMatriculaImovel("");
manterCreditoARealizarActionForm
.setNomeCliente("");
manterCreditoARealizarActionForm
.setSituacaoAgua("");
manterCreditoARealizarActionForm
.setSituacaoEsgoto("");
}
// [FS0001 - Verificar exist�ncioa da matr�cula do im�vel] Imovel
// Excluido
if (imovelPesquisado != null && !imovelPesquisado.isEmpty()) {
Imovel imovel = imovelPesquisado.iterator().next();
if (imovel.getIndicadorExclusao() == Imovel.IMOVEL_EXCLUIDO) {
throw new ActionServletException(
"atencao.pesquisa.imovel.excluido");
}
}
// [FS0002 - Verificar usu�rio com d�bito em cobran�a administrativa
if (imovelPesquisado != null && !imovelPesquisado.isEmpty()) {
Imovel imovel = imovelPesquisado.iterator().next();
FiltroImovelCobrancaSituacao filtroImovelCobrancaSituacao = new FiltroImovelCobrancaSituacao();
filtroImovelCobrancaSituacao
.adicionarCaminhoParaCarregamentoEntidade("cobrancaSituacao");
filtroImovelCobrancaSituacao
.adicionarParametro(new ParametroSimples(
FiltroImovelCobrancaSituacao.IMOVEL_ID, imovel
.getId()));
Collection imovelCobrancaSituacaoEncontrada = fachada
.pesquisar(filtroImovelCobrancaSituacao,
ImovelCobrancaSituacao.class.getName());
// Verifica se o im�vel tem d�bito em cobran�a administrativa
if (imovelCobrancaSituacaoEncontrada != null
&& !imovelCobrancaSituacaoEncontrada.isEmpty()) {
if (((ImovelCobrancaSituacao) ((List) imovelCobrancaSituacaoEncontrada)
.get(0)).getCobrancaSituacao() != null) {
if (((ImovelCobrancaSituacao) ((List) imovelCobrancaSituacaoEncontrada)
.get(0)).getCobrancaSituacao().getId().equals(
CobrancaSituacao.COBRANCA_ADMINISTRATIVA)
&& ((ImovelCobrancaSituacao) ((List) imovelCobrancaSituacaoEncontrada)
.get(0)).getDataRetiradaCobranca() == null) {
throw new ActionServletException(
"atencao.pesquisa.imovel.cobranca_administrativa");
}
}
}
}
// [FS0003 - Verificar situa��o liga��o de �giua e esgoto]
if (imovelPesquisado != null && !imovelPesquisado.isEmpty()) {
Imovel imovel = imovelPesquisado.iterator().next();
if ((imovel.getLigacaoAguaSituacao() != null)
&& ((imovel.getLigacaoAguaSituacao().getId() == LigacaoAguaSituacao.POTENCIAL) || (imovel
.getLigacaoEsgotoSituacao().getId() == LigacaoAguaSituacao.FACTIVEL))
&& (imovel.getLigacaoEsgotoSituacao().getId() != LigacaoEsgotoSituacao.LIGADO)) {
throw new ActionServletException(
"atencao.pesquisa.imovel.inativo");
}
}
// Obtem o cliente imovel do imovel pesquisado
if (imovelPesquisado != null && !imovelPesquisado.isEmpty()) {
Imovel imovel = imovelPesquisado.iterator().next();
sessao.setAttribute("imovelPesquisado", imovel);
FiltroClienteImovel filtroClienteImovel = new FiltroClienteImovel();
filtroClienteImovel
.adicionarCaminhoParaCarregamentoEntidade("cliente");
filtroClienteImovel.adicionarParametro(new ParametroSimples(
FiltroClienteImovel.IMOVEL_ID, codigoImovel));
filtroClienteImovel.adicionarParametro(new ParametroSimples(
FiltroClienteImovel.CLIENTE_RELACAO_TIPO,
ClienteRelacaoTipo.USUARIO));
Collection<ClienteImovel> clienteImovelPesquisado = fachada
.pesquisar(filtroClienteImovel, ClienteImovel.class
.getName());
if (clienteImovelPesquisado != null
&& !clienteImovelPesquisado.isEmpty()) {
ClienteImovel clienteImovel = clienteImovelPesquisado
.iterator().next();
if (clienteImovel.getCliente() != null) {
manterCreditoARealizarActionForm
.setNomeCliente(clienteImovel.getCliente()
.getNome());
}
}
if (imovel.getLigacaoAguaSituacao() != null) {
manterCreditoARealizarActionForm.setSituacaoAgua(imovel
.getLigacaoAguaSituacao().getDescricao());
}
if (imovel.getLigacaoEsgotoSituacao() != null) {
manterCreditoARealizarActionForm.setSituacaoEsgoto(imovel
.getLigacaoEsgotoSituacao().getDescricao());
}
manterCreditoARealizarActionForm
.setMatriculaImovel(codigoImovel);
manterCreditoARealizarActionForm.setInscricaoImovel(imovel
.getInscricaoFormatada());
}
if(imovelPesquisado != null && !imovelPesquisado.isEmpty())
{
// Pesquisando os Cr�dito a Realizar do Im�vel
// CreditoARealizar creditoARealizar = new CreditoARealizar();
FiltroCreditoARealizar filtroCreditoARealizar = new FiltroCreditoARealizar();
filtroCreditoARealizar.adicionarParametro(new ParametroSimples(
FiltroCreditoARealizar.IMOVEL_ID, codigoImovel));
filtroCreditoARealizar.adicionarParametro(new ParametroSimples(
FiltroCreditoARealizar.DEBITO_CREDITO_SITUACAO_ATUAL,
DebitoCreditoSituacao.NORMAL));
/*filtroCreditoARealizar
.adicionarCaminhoParaCarregamentoEntidade("creditoTipo.descricaoAbreviada");
filtroCreditoARealizar
.adicionarCaminhoParaCarregamentoEntidade("creditoOrigem.descricaoAbreviada");
*/
filtroCreditoARealizar.adicionarCaminhoParaCarregamentoEntidade("creditoTipo");
filtroCreditoARealizar.adicionarCaminhoParaCarregamentoEntidade("creditoOrigem");
Collection<CreditoARealizar> collectionCreditoARealizar = fachada
.pesquisar(filtroCreditoARealizar, CreditoARealizar.class
.getName());
if (collectionCreditoARealizar == null
|| collectionCreditoARealizar.isEmpty()) {
// Nenhum Credito a Realizar cadastrado
throw new ActionServletException(
"atencao.credito_a_realizar_inexistente",null,manterCreditoARealizarActionForm.getMatriculaImovel());
}
httpServletRequest.setAttribute("collectionCreditoARealizar",
collectionCreditoARealizar);
}
}
if (limparForm != null && !limparForm.trim().equalsIgnoreCase("")) {
manterCreditoARealizarActionForm.reset(actionMapping,
httpServletRequest);
if (sessao.getAttribute("imovelPesquisado") != null) {
sessao.removeAttribute("imovelPesquisado");
}
}
return retorno;
}
}