package gcom.gui.cadastro.imovel; import gcom.arrecadacao.pagamento.GuiaPagamento; import gcom.arrecadacao.pagamento.GuiaPagamentoHistorico; import gcom.cadastro.imovel.Imovel; import gcom.fachada.Fachada; import gcom.faturamento.credito.CreditoARealizar; import gcom.faturamento.credito.CreditoARealizarHistorico; import gcom.faturamento.debito.DebitoACobrar; import gcom.faturamento.debito.DebitoACobrarHistorico; import gcom.gui.GcomAction; import gcom.util.ConstantesSistema; import gcom.util.Util; 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; /** * [UC0473] Consultar Imovel * Metodo da 4� Aba - Hist�rico de Faturamento * * @author Rafael Santos * @since 13/09/2006 * */ public class ExibirConsultarImovelHistoricoFaturamentoAction extends GcomAction { public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) { HttpSession sessao = getSessao(httpServletRequest); ConsultarImovelActionForm consultarImovelActionForm = (ConsultarImovelActionForm) actionForm; if(isLimparDadosTela(httpServletRequest)){ httpServletRequest.removeAttribute("idImovelHistoricoFaturamentoNaoEncontrado"); limparFormSessao(consultarImovelActionForm, sessao); }else if( isImovelInformadoTelaHistoricoFaturamento(consultarImovelActionForm) || isImovelInformadoOutraTela(sessao) ){ consultarImovelActionForm.setIdImovelHistoricoFaturamento( definirIdImovelASerPesquisado(consultarImovelActionForm, sessao, httpServletRequest)); Imovel imovel = obterImovelASerPesquisado(consultarImovelActionForm, sessao); //deve ser chamado antes dos novos valores da sess�o serem setados boolean imovelNovoPesquisado = isNovoImovelPesquisado(consultarImovelActionForm, sessao); if (imovel != null) { sessao.setAttribute("imovelDadosHistoricoFaturamento", imovel); sessao.setAttribute("idImovelPrincipalAba", imovel.getId().toString()); if (imovel.getIndicadorExclusao().equals(ConstantesSistema.SIM)) { httpServletRequest.setAttribute("imovelExcluido", true); } consultarImovelActionForm.setIdImovelHistoricoFaturamento(imovel.getId().toString()); if(imovelNovoPesquisado){ httpServletRequest.removeAttribute("idImovelHistoricoFaturamentoNaoEncontrado"); setarDadosImovelNoFormESessao(consultarImovelActionForm, imovel, sessao); } } else { limparFormSessao(consultarImovelActionForm, sessao); httpServletRequest.setAttribute("idImovelHistoricoFaturamentoNaoEncontrado", "true"); consultarImovelActionForm.setMatriculaImovelHistoricoFaturamento("IM�VEL INEXISTENTE"); } }else{ String idImovelAux = consultarImovelActionForm.getIdImovelHistoricoFaturamento(); httpServletRequest.removeAttribute("idImovelHistoricoFaturamentoNaoEncontrado"); limparFormSessao(consultarImovelActionForm, sessao); consultarImovelActionForm.setIdImovelHistoricoFaturamento(idImovelAux); } return actionMapping.findForward("consultarImovelHistoricoFaturamento"); } /** * Esse m�todo seta os dados necess�rios do Imovel * no form e alguns na sess�o (cole��es). * *@since 28/09/2009 *@author Marlon Patrick */ private void setarDadosImovelNoFormESessao(ConsultarImovelActionForm consultarImovelActionForm, Imovel imovel,HttpSession sessao) { consultarImovelActionForm.setMatriculaImovelHistoricoFaturamento(Fachada.getInstancia() .pesquisarInscricaoImovelExcluidoOuNao(new Integer( consultarImovelActionForm.getIdImovelHistoricoFaturamento().trim()))); consultarImovelActionForm.setSituacaoAguaHistoricoFaturamento( imovel.getLigacaoAguaSituacao().getDescricao()); consultarImovelActionForm .setSituacaoEsgotoHistoricoFaturamento(imovel .getLigacaoEsgotoSituacao().getDescricao()); sessao.setAttribute("colecaoContaImovel", Fachada.getInstancia().consultarContasImovel(imovel.getId())); sessao.setAttribute("colecaoContaHistoricoImovel", Fachada.getInstancia().consultarContasHistoricosImovel(imovel.getId())); sessao.setAttribute("colecaoDebitoACobrarImovel", Fachada.getInstancia().obterDebitoACobrarImovel(imovel.getId())); sessao.setAttribute("colecaoDebitoACobrarHistoricoImovel", Fachada.getInstancia().obterDebitoACobrarHistoricoImovel(imovel.getId())); sessao.setAttribute("colecaoCreditoARealizarImovel", Fachada.getInstancia().obterCreditoARealizarImovel(imovel.getId())); sessao.setAttribute("colecaoCreditoARealizarHistoricoImovel", Fachada.getInstancia().obterCreditoARealizarHistoricoImovel(imovel.getId())); sessao.setAttribute("colecaoGuiaPagamentoImovel", Fachada.getInstancia().obterGuiaPagamentoImovel(imovel.getId())); sessao.setAttribute("colecaoGuiaPagamentoHistoricoImovel", Fachada.getInstancia().obterGuiaPagamentoHistoricoImovel(imovel.getId())); setarTamanhoColacoesSessao(sessao); } /** *Esse m�todo limpa todos os atributos do form *e os atributos na sess�o *que s�o usados pelo action e/ou jsp. * *@since 28/09/2009 *@author Marlon Patrick */ private void limparFormSessao( ConsultarImovelActionForm consultarImovelActionForm, HttpSession sessao) { sessao.removeAttribute("idImovelPrincipalAba"); sessao.removeAttribute("imovelDadosHistoricoFaturamento"); sessao.removeAttribute("colecaoContaImovel"); sessao.removeAttribute("colecaoContaHistoricoImovel"); sessao.removeAttribute("colecaoDebitoACobrarImovel"); sessao.removeAttribute("colecaoDebitoACobrarHistoricoImovel"); sessao.removeAttribute("colecaoCreditoARealizarImovel"); sessao.removeAttribute("colecaoCreditoARealizarHistoricoImovel"); sessao.removeAttribute("colecaoGuiaPagamentoImovel"); sessao.removeAttribute("colecaoGuiaPagamentoHistoricoImovel"); sessao.removeAttribute("tamanhoColecaoDebitos"); sessao.removeAttribute("tamanhoColecaoCreditos"); sessao.removeAttribute("tamanhoColecaoGuias"); consultarImovelActionForm.setIdImovelHistoricoFaturamento(null); consultarImovelActionForm.setMatriculaImovelHistoricoFaturamento(null); consultarImovelActionForm.setSituacaoAguaHistoricoFaturamento(null); consultarImovelActionForm.setSituacaoEsgotoHistoricoFaturamento(null); consultarImovelActionForm.setConta(null); consultarImovelActionForm.setDescricaoImovel(null); consultarImovelActionForm.setIdImovelDadosComplementares(null); consultarImovelActionForm.setIdImovelDadosCadastrais(null); consultarImovelActionForm.setIdImovelAnaliseMedicaoConsumo(null); consultarImovelActionForm.setIdImovelHistoricoFaturamento(null); consultarImovelActionForm.setIdImovelDebitos(null); consultarImovelActionForm.setIdImovelPagamentos(null); consultarImovelActionForm.setIdImovelDevolucoesImovel(null); consultarImovelActionForm.setIdImovelDocumentosCobranca(null); consultarImovelActionForm.setIdImovelParcelamentosDebitos(null); consultarImovelActionForm.setIdImovelRegistroAtendimento(null); consultarImovelActionForm.setImovIdAnt(null); } /** *Esse m�todo seta na sess�o os tamanhos das cole��es de *d�bito(debito a cobrar + debito historico) , *cr�dito(credito a realizar + credito historico) e *guias de pagamento(guias + guias historico). * *@since -- *@author -- */ private void setarTamanhoColacoesSessao(HttpSession sessao) { Collection<DebitoACobrarHistorico> colecaoDebitoACobrarHistoricoImovel = (Collection<DebitoACobrarHistorico>)sessao.getAttribute("colecaoDebitoACobrarHistoricoImovel"); Collection<DebitoACobrar> colecaoDebitoACobrarImovel = (Collection<DebitoACobrar>)sessao.getAttribute("colecaoDebitoACobrarImovel"); Collection<CreditoARealizarHistorico> colecaoCreditoARealizarHistoricoImovel = (Collection<CreditoARealizarHistorico>)sessao.getAttribute("colecaoCreditoARealizarHistoricoImovel"); Collection<CreditoARealizar> colecaoCreditoARealizarImovel = (Collection<CreditoARealizar>)sessao.getAttribute("colecaoCreditoARealizarImovel"); Collection<GuiaPagamentoHistorico> colecaoGuiaPagamentoHistoricoImovel =(Collection<GuiaPagamentoHistorico>)sessao.getAttribute("colecaoGuiaPagamentoHistoricoImovel"); Collection<GuiaPagamento> colecaoGuiaPagamentoImovel =(Collection<GuiaPagamento>)sessao.getAttribute("colecaoGuiaPagamentoImovel"); Integer tamanhoColecaoDebitos = 0; Integer tamanhoColecaoCreditos = 0; Integer tamanhoColecaoGuias = 0; if(colecaoDebitoACobrarImovel != null){ tamanhoColecaoDebitos = colecaoDebitoACobrarImovel.size(); } if(colecaoDebitoACobrarHistoricoImovel != null){ tamanhoColecaoDebitos = tamanhoColecaoDebitos + colecaoDebitoACobrarHistoricoImovel.size(); } if(colecaoCreditoARealizarImovel != null){ tamanhoColecaoCreditos = colecaoCreditoARealizarImovel.size(); } if(colecaoCreditoARealizarHistoricoImovel != null){ tamanhoColecaoCreditos = tamanhoColecaoCreditos + colecaoCreditoARealizarHistoricoImovel.size(); } if(colecaoGuiaPagamentoImovel != null){ tamanhoColecaoGuias = colecaoGuiaPagamentoImovel.size(); } if(colecaoGuiaPagamentoHistoricoImovel != null){ tamanhoColecaoGuias = tamanhoColecaoGuias + colecaoGuiaPagamentoHistoricoImovel.size(); } sessao.setAttribute("tamanhoColecaoDebitos", tamanhoColecaoDebitos); sessao.setAttribute("tamanhoColecaoCreditos", tamanhoColecaoCreditos); sessao.setAttribute("tamanhoColecaoGuias", tamanhoColecaoGuias); } /** * Caso o usu�rio tenha clicado no bot�o de limpar * esse m�todo retornar� true. * *@since 28/09/2009 *@author Marlon Patrick */ private boolean isLimparDadosTela(HttpServletRequest httpServletRequest) { return Util.verificarNaoVazio(httpServletRequest.getParameter("limparForm")); } /** * Esse m�todo verifica se j� foi informado um im�vel em outra tela. * *@since 28/09/2009 *@author Marlon Patrick */ private boolean isImovelInformadoOutraTela(HttpSession sessao) { return Util.verificarNaoVazio((String)sessao.getAttribute("idImovelPrincipalAba")); } /** * Esse m�todo verifica se o im�vel foi informado na tela * de Historico de Faturamento * *@since 28/09/2009 *@author Marlon Patrick */ private boolean isImovelInformadoTelaHistoricoFaturamento(ConsultarImovelActionForm consultarImovelActionForm) { return Util.verificarNaoVazio(consultarImovelActionForm.getIdImovelHistoricoFaturamento()); } /** * Esse m�todo retorna o id do im�vel a ser pesquisado, * verificando se � o id possivelmente informado pelo usu�rio na tela * de Historico Faturamento ou se o id j� informado em uma outra tela. * *@since 28/09/2009 *@author Marlon Patrick */ private String definirIdImovelASerPesquisado( ConsultarImovelActionForm consultarImovelActionForm, HttpSession sessao, HttpServletRequest httpServletRequest) { String idImovelPrincipalAba = (String)sessao.getAttribute("idImovelPrincipalAba"); if( isImovelInformadoTelaHistoricoFaturamento(consultarImovelActionForm) && isImovelInformadoOutraTela(sessao)){ if( !Util.verificarNaoVazio(httpServletRequest.getParameter("indicadorNovo")) ){ return idImovelPrincipalAba; } }else if(isImovelInformadoOutraTela(sessao)){ return idImovelPrincipalAba; } return consultarImovelActionForm.getIdImovelHistoricoFaturamento(); } /** * Consulta o Imovel com todas as informa��es necess�rias, * ou simplesmetne pega o Imovel da sess�o caso o mesmo j� * tenha sido pesquisado. * *@since 28/09/2009 *@author Marlon Patrick */ private Imovel obterImovelASerPesquisado(ConsultarImovelActionForm consultarImovelActionForm, HttpSession sessao) { Imovel imovel = null; if(sessao.getAttribute("imovelDadosHistoricoFaturamento") == null){ imovel = Fachada.getInstancia().consultarImovelHistoricoFaturamento(new Integer(consultarImovelActionForm.getIdImovelHistoricoFaturamento().trim())); }else{ imovel = (Imovel) sessao.getAttribute("imovelDadosHistoricoFaturamento"); if( !imovel.getId().toString().equals(consultarImovelActionForm.getIdImovelHistoricoFaturamento().trim()) ){ imovel = Fachada.getInstancia().consultarImovelHistoricoFaturamento(new Integer(consultarImovelActionForm.getIdImovelHistoricoFaturamento().trim())); } } return imovel; } /** * Esse m�todo retorna true se foi necess�rio consultar um novo imovel. * Caso o im�vel seja o mesmo j� consultado anteriormente ele retorna false. * *@since 28/09/2009 *@author Marlon Patrick */ private boolean isNovoImovelPesquisado(ConsultarImovelActionForm consultarImovelActionForm, HttpSession sessao) { if(sessao.getAttribute("imovelDadosHistoricoFaturamento") == null){ return true; } Imovel imovelAux = (Imovel) sessao.getAttribute("imovelDadosHistoricoFaturamento"); if( !imovelAux.getId().toString().equals(consultarImovelActionForm.getIdImovelHistoricoFaturamento().trim()) ){ return true; } return false; } }