package gcom.gui.faturamento.credito;
import gcom.cadastro.imovel.FiltroImovel;
import gcom.cadastro.imovel.Imovel;
import gcom.cobranca.parcelamento.FiltroParcelamentoItem;
import gcom.cobranca.parcelamento.ParcelamentoItem;
import gcom.fachada.Fachada;
import gcom.faturamento.credito.CreditoARealizar;
import gcom.faturamento.credito.CreditoARealizarHistorico;
import gcom.faturamento.credito.FiltroCreditoARealizar;
import gcom.faturamento.credito.FiltroCreditoARealizarHistorico;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
import gcom.util.ControladorException;
import gcom.util.Util;
import gcom.util.filtro.ParametroNaoNulo;
import gcom.util.filtro.ParametroSimples;
import java.util.Collection;
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;
/**
* action respons�vel pela exibi��o da tela de consultar cr�dito a realizar
*
* @author Fernanda Paiva
* @created 17 de Janeiro de 2006
*/
public class ExibirConsultarCreditoARealizarAction extends GcomAction {
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
// cria a vari�vel de retorno e seta o mapeamento para a tela de
// consultar Cr�dito realizado
ActionForward retorno = actionMapping
.findForward("exibirConsultarCreditoARealizar");
// cria uma inst�ncia da fachada
Fachada fachada = Fachada.getInstancia();
// cria uma inst�ncia da sess�o
HttpSession sessao = httpServletRequest.getSession(false);
// recupera o c�digo da conta do request
String idImovel = httpServletRequest.getParameter("imovelID");
String idCredito = httpServletRequest.getParameter("creditoID");
String idCreditoHistorico = httpServletRequest.getParameter("creditoHistoricoID");
String idParcelamento = httpServletRequest.getParameter("parcelamentoID");
// se o c�digo n�o for nulo
if (idImovel != null && !idImovel.equalsIgnoreCase("")) {
// remove o objeto conta da sess�o
sessao.removeAttribute("imovelConsultar");
// remove a cole��o de cr�ditos a realizar
sessao.removeAttribute("colecaoCreditoARealizar");
sessao.removeAttribute("colecaoCreditoARealizarHistorico");
}
/*
* Pesquisando o cr�dito a partir do id imovel
* =====================================================================
*/
// cria o objeto imovel
Imovel imovelConsultar = null;
// se o c�digo da conta n�o for nulo
if (idImovel != null && !idImovel.equalsIgnoreCase("")) {
// cria o filtro do imovel
FiltroImovel filtroImovel = new FiltroImovel();
// seta o c�digo do imovel no filtro
filtroImovel.adicionarParametro(new ParametroSimples(
FiltroImovel.ID, idImovel));
// pesquisa o imovel na base de dados
Collection colecaoImovel = fachada.pesquisar(filtroImovel,
Imovel.class.getName());
// se n�o encontrou nenhum imovel com o c�digo informado
if (colecaoImovel == null || colecaoImovel.isEmpty()) {
throw new ActionServletException("atencao.imovel.inexistente");
}
String enderecoFormatado = "";
try {
enderecoFormatado = fachada
.pesquisarEnderecoFormatado(new Integer(idImovel));
} catch (NumberFormatException e) {
e.printStackTrace();
} catch (ControladorException e) {
e.printStackTrace();
}
httpServletRequest.setAttribute("enderecoFormatado",
enderecoFormatado);
// recupera o objeto imovel da cole��o
imovelConsultar = (Imovel) Util
.retonarObjetoDeColecao(colecaoImovel);
// seta o objeto conta na sess�o
sessao.setAttribute("imovelConsultar", imovelConsultar);
}
// se j� existe uma conta na sess�o
else if (sessao.getAttribute("imovelConsultar") != null) {
// recupera a conta da sess�o
imovelConsultar = (Imovel) sessao.getAttribute("imovelConsultar");
} else {
// levanta o erro de conta inexistente
throw new ActionServletException("atencao.imovel.inexistente");
}
// ====================================================================
/*
* Cr�ditos A Realizar (Carregar cole��o)
* ======================================================================
*/
// se n�o existir a cole��o na sess�o
if (idParcelamento != null && !idParcelamento.equals("")) {
FiltroParcelamentoItem filtroParcelamentoItem = new FiltroParcelamentoItem();
// seta o c�digo do imovel no filtro
filtroParcelamentoItem.adicionarParametro(new ParametroSimples(
FiltroParcelamentoItem.PARCELAMENTO, idParcelamento));
filtroParcelamentoItem.adicionarParametro(new ParametroNaoNulo(
FiltroParcelamentoItem.CREDITO_A_REALIZAR));
// carrega o debitoACobrar
filtroParcelamentoItem
.adicionarCaminhoParaCarregamentoEntidade("creditoARealizarGeral.creditoARealizar.creditoTipo");
filtroParcelamentoItem
.adicionarCaminhoParaCarregamentoEntidade("creditoARealizarGeral.creditoARealizar.debitoCreditoSituacaoAtual");
/*
* filtroParcelamentoItem.adicionarCaminhoParaCarregamentoEntidade("creditoARealizarGeral.creditoARealizar.geracaoCredito");
* filtroParcelamentoItem.adicionarCaminhoParaCarregamentoEntidade("creditoARealizarGeral.creditoARealizar.anoMesReferenciaCredito");
* filtroParcelamentoItem.adicionarCaminhoParaCarregamentoEntidade("creditoARealizarGeral.creditoARealizar.anoMesCobrancaCredito");
* filtroParcelamentoItem.adicionarCaminhoParaCarregamentoEntidade("creditoARealizarGeral.creditoARealizar.numeroPrestacaoRealizada");
* filtroParcelamentoItem.adicionarCaminhoParaCarregamentoEntidade("creditoARealizarGeral.creditoARealizar.numeroPrestacaoCredito");
* filtroParcelamentoItem.adicionarCaminhoParaCarregamentoEntidade("creditoARealizarGeral.creditoARealizar.valorCredito");
* filtroParcelamentoItem.adicionarCaminhoParaCarregamentoEntidade("creditoARealizarGeral.creditoARealizar.valorTotal");
*/
filtroParcelamentoItem
.adicionarCaminhoParaCarregamentoEntidade("creditoARealizarGeral.creditoARealizar");
filtroParcelamentoItem
.adicionarCaminhoParaCarregamentoEntidade("creditoARealizarGeral.creditoARealizar.registroAtendimento");
filtroParcelamentoItem
.adicionarCaminhoParaCarregamentoEntidade("creditoARealizarGeral.creditoARealizar.ordemServico");
filtroParcelamentoItem
.adicionarCaminhoParaCarregamentoEntidade("creditoARealizarGeral.creditoARealizar.creditoOrigem");
filtroParcelamentoItem
.adicionarCaminhoParaCarregamentoEntidade("creditoARealizarGeral.creditoARealizar.usuario");
// carrega o parcelamento
filtroParcelamentoItem
.adicionarCaminhoParaCarregamentoEntidade("parcelamento");
// carrega o im�vel origem do cr�dito a realizar
filtroParcelamentoItem
.adicionarCaminhoParaCarregamentoEntidade("creditoARealizarGeral.creditoARealizar.origem.creditoARealizar.imovel");
Collection colecaoParcelamentoItem = fachada.pesquisar(
filtroParcelamentoItem, ParcelamentoItem.class.getName());
if (colecaoParcelamentoItem == null
|| colecaoParcelamentoItem.isEmpty()) {
throw new ActionServletException(
"atencao.faturamento.credito_a_realizar.inexistente");
} else {
// seta a cole��o de d�bitos cobrados na sess�o
sessao.setAttribute("colecaoParcelamentoItem",
colecaoParcelamentoItem);
}
} else if(idCreditoHistorico != null && !idCreditoHistorico.equals("")){
// CREDITO A COBRAR HISTORICO
//cria o filtro de cr�ditos a realizar historico
FiltroCreditoARealizarHistorico filtroCreditoARealizarHistorico = new FiltroCreditoARealizarHistorico();
filtroCreditoARealizarHistorico.adicionarCaminhoParaCarregamentoEntidade("creditoTipo");
filtroCreditoARealizarHistorico.adicionarCaminhoParaCarregamentoEntidade("debitoCreditoSituacaoAtual");
filtroCreditoARealizarHistorico.adicionarCaminhoParaCarregamentoEntidade("ordemServico");
filtroCreditoARealizarHistorico.adicionarCaminhoParaCarregamentoEntidade("registroAtendimento");
filtroCreditoARealizarHistorico.adicionarCaminhoParaCarregamentoEntidade("creditoOrigem");
filtroCreditoARealizarHistorico.adicionarCaminhoParaCarregamentoEntidade("usuario");
// carrega o im�vel origem do cr�dito a realizar historico
filtroCreditoARealizarHistorico.adicionarCaminhoParaCarregamentoEntidade("origem.creditoARealizarHistorico.imovel");
if (idImovel != null) {
filtroCreditoARealizarHistorico.adicionarParametro(new ParametroSimples(
FiltroCreditoARealizarHistorico.IMOVEL_ID, idImovel));
}
// seta o c�digo do credito no filtro
filtroCreditoARealizarHistorico.adicionarParametro(new ParametroSimples(
FiltroCreditoARealizarHistorico.ID, idCreditoHistorico));
// pesquisa a cole��o de cr�ditos a realizar historico
Collection<CreditoARealizar> colecaoCreditoARealizarHistorico = fachada
.pesquisar(filtroCreditoARealizarHistorico, CreditoARealizarHistorico.class.getName());
if (colecaoCreditoARealizarHistorico == null || colecaoCreditoARealizarHistorico.isEmpty()) {
throw new ActionServletException("atencao.faturamento.credito_a_realizar.inexistente");
} else {
// seta a cole��o de cr�ditos a realizar historico na sess�o
sessao.setAttribute("colecaoCreditoARealizarHistorico", colecaoCreditoARealizarHistorico);
}
} else {
// cria o filtro de cr�ditos a realizar
FiltroCreditoARealizar filtroCreditoARealizar = new FiltroCreditoARealizar();
filtroCreditoARealizar
.adicionarCaminhoParaCarregamentoEntidade("creditoTipo");
filtroCreditoARealizar
.adicionarCaminhoParaCarregamentoEntidade("debitoCreditoSituacaoAtual");
filtroCreditoARealizar
.adicionarCaminhoParaCarregamentoEntidade("ordemServico");
filtroCreditoARealizar
.adicionarCaminhoParaCarregamentoEntidade("registroAtendimento");
filtroCreditoARealizar
.adicionarCaminhoParaCarregamentoEntidade("creditoOrigem");
filtroCreditoARealizar
.adicionarCaminhoParaCarregamentoEntidade("usuario");
// carrega o im�vel origem do cr�dito a realizar
filtroCreditoARealizar
.adicionarCaminhoParaCarregamentoEntidade("origem.creditoARealizar.imovel");
if (idImovel != null) {
filtroCreditoARealizar.adicionarParametro(new ParametroSimples(
FiltroCreditoARealizar.IMOVEL_ID, idImovel));
}
if (idCredito != null) {
// seta o c�digo do credito no filtro
filtroCreditoARealizar.adicionarParametro(new ParametroSimples(
FiltroCreditoARealizar.ID, idCredito));
}
// pesquisa a cole��o de cr�ditos a realizar
Collection<CreditoARealizar> colecaoCreditoARealizar = fachada
.pesquisar(filtroCreditoARealizar, CreditoARealizar.class
.getName());
if (colecaoCreditoARealizar == null
|| colecaoCreditoARealizar.isEmpty()) {
throw new ActionServletException(
"atencao.faturamento.credito_a_realizar.inexistente");
} else {
// seta a cole��o de cr�ditos a realizar na sess�o
sessao.setAttribute("colecaoCreditoARealizar",
colecaoCreditoARealizar);
}
}
// ====================================================================
// envia uma flag que ser� verificado no cliente_resultado_pesquisa.jsp
// para saber se ir� usar o enviar dados ou o enviar dados parametros
if (httpServletRequest
.getParameter("caminhoRetornoTelaConsultaCreditoARealizar") != null) {
sessao
.setAttribute(
"caminhoRetornoTelaConsultaCreditoARealizar",
httpServletRequest
.getParameter("caminhoRetornoTelaConsultaCreditoARealizar"));
}
// retorna o mapeamento contido na vari�vel retorno
return retorno;
}
}