package gcom.gui.faturamento; import gcom.atendimentopublico.ligacaoagua.LigacaoAguaSituacao; import gcom.cadastro.cliente.Cliente; import gcom.cadastro.cliente.ClienteImovel; import gcom.cadastro.cliente.ClienteRelacaoTipo; import gcom.cadastro.cliente.FiltroCliente; import gcom.cadastro.cliente.FiltroClienteImovel; import gcom.cadastro.imovel.FiltroImovel; import gcom.cadastro.imovel.Imovel; import gcom.fachada.Fachada; import gcom.faturamento.conta.Conta; import gcom.faturamento.conta.ContaGeral; import gcom.faturamento.conta.ContaHistorico; import gcom.faturamento.conta.Fatura; import gcom.faturamento.conta.FaturaItem; import gcom.faturamento.conta.FiltroConta; import gcom.faturamento.conta.FiltroContaHistorico; import gcom.faturamento.debito.DebitoCreditoSituacao; import gcom.faturamento.debito.FiltroDebitoCreditoSituacao; import gcom.gui.ActionServletException; import gcom.gui.GcomAction; import gcom.util.Util; import gcom.util.filtro.ParametroNulo; import gcom.util.filtro.ParametroSimples; import java.math.BigDecimal; import java.util.Collection; import java.util.Iterator; 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; /** * AdicionarFaturaClienteResponsavelContaPopupAction * * @author Fl�vio Leonardo * @created 25/04/2006 */ public class AdicionarFaturaClienteResponsavelContaPopupAction extends GcomAction { public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) { // Seta o mapeamento de retorno ActionForward retorno = actionMapping.findForward("exibirAdicionar"); // Mudar isso quando tiver esquema de seguran�a HttpSession sessao = httpServletRequest.getSession(false); // Inst�ncia do formul�rio que est� sendo utilizado FiltrarFaturaClienteResponsavelActionForm form = (FiltrarFaturaClienteResponsavelActionForm) actionForm; String mesAnoReferencia = form.getMesAno(); String idImovel = form.getImovelId(); //verificar existencia do imovel Imovel imovelEncontrado = this.pesquisarImovel(idImovel); if(imovelEncontrado == null){ throw new ActionServletException("atencao.pesquisa.nenhumresultado"); } ContaGeral contaGeral = new ContaGeral(); //[FS0006] Verificar existencia de conta(conta ou conta_historico) Conta contaEncontrada = pesquisarConta(idImovel, mesAnoReferencia); Integer numeroConsumo = new Integer("0"); BigDecimal valorConta = BigDecimal.ZERO; if(contaEncontrada != null){ contaGeral.setId(contaEncontrada.getId()); contaGeral.setConta(contaEncontrada); valorConta = contaEncontrada.getValorTotal(); if(contaEncontrada.getLigacaoAguaSituacao().getId().equals(LigacaoAguaSituacao.CORTADO) || contaEncontrada.getLigacaoAguaSituacao().getId().equals(LigacaoAguaSituacao.LIGADO)){ numeroConsumo = contaEncontrada.getConsumoAgua(); }else{ numeroConsumo = contaEncontrada.getConsumoEsgoto(); } verificarSituacaoConta(contaEncontrada); }else{ ContaHistorico contaHistoricoEncontrada = pesquisarContaHistorico(idImovel, mesAnoReferencia); if(contaHistoricoEncontrada != null){ contaGeral.setId(contaHistoricoEncontrada.getId()); contaGeral.setContaHistorico(contaHistoricoEncontrada); valorConta = contaHistoricoEncontrada.getValorTotal(); if(contaHistoricoEncontrada.getLigacaoAguaSituacao().getId().equals(LigacaoAguaSituacao.CORTADO) || contaHistoricoEncontrada.getLigacaoAguaSituacao().getId().equals(LigacaoAguaSituacao.LIGADO)){ numeroConsumo = contaHistoricoEncontrada.getConsumoAgua(); }else{ numeroConsumo = contaHistoricoEncontrada.getConsumoEsgoto(); } verificarSituacaoConta(contaHistoricoEncontrada); }else{ throw new ActionServletException("atencao.pesquisa.nenhumresultado"); } } FaturaItem faturaItem = new FaturaItem(); faturaItem.setImovel(imovelEncontrado); verificarClienteDaFatura(imovelEncontrado, form); faturaItem.setValorConta(valorConta); faturaItem.setContaGeral(contaGeral); faturaItem.setImovel(imovelEncontrado); faturaItem.setNumeroConsumo(numeroConsumo); Collection<FaturaItem> colecaoFaturasItem = (Collection)sessao.getAttribute("colecaoFaturaItem"); Fatura fatura = null; if(!colecaoFaturasItem.isEmpty()){ Iterator iterator = colecaoFaturasItem.iterator(); while(iterator.hasNext()){ FaturaItem faturaItem2 = (FaturaItem)iterator.next(); fatura = faturaItem2.getFatura(); if(faturaItem2.getImovel().getId().equals(faturaItem.getImovel().getId())){ throw new ActionServletException("atencao.fatura.cliente.responsavel.ja.existe.cota"); } } } faturaItem.setFatura(fatura); colecaoFaturasItem.add(faturaItem); sessao.setAttribute("colecaoFaturaItem", colecaoFaturasItem); form.setImovelId(""); form.setInscricao(""); httpServletRequest.setAttribute("reloadPage",1); return retorno; } private Imovel pesquisarImovel(String idImovel){ //Cria a vari�vel que vai armazenar o cliente pesquisado Imovel imovelEncontrado = null; //Cria uma inst�ncia da fachada Fachada fachada = Fachada.getInstancia(); //Pesquisa o cliente informado pelo usu�rio no sistema FiltroImovel filtroImovel = new FiltroImovel(); filtroImovel.adicionarParametro(new ParametroSimples(FiltroImovel.ID, idImovel)); Collection<Imovel> colecaoImovel = fachada.pesquisar(filtroImovel, Imovel.class.getName()); //Caso exista o cliente no sistema //Retorna para o usu�rio o cliente retornado pela pesquisa //Caso contr�rio retorna um objeto nulo if(colecaoImovel != null && !colecaoImovel.isEmpty()){ imovelEncontrado =(Imovel) Util.retonarObjetoDeColecao(colecaoImovel); } //Retorna o cliente encontrado ou nulo se n�o existir return imovelEncontrado; } private Conta pesquisarConta(String idImovel, String mesAnoReferencia){ Conta contaEncontrada = null; FiltroConta filtroConta = new FiltroConta(); filtroConta.adicionarParametro(new ParametroSimples(FiltroConta.IMOVEL_ID, idImovel)); filtroConta.adicionarParametro(new ParametroSimples(FiltroConta.REFERENCIA, Util.formatarMesAnoComBarraParaAnoMes(mesAnoReferencia))); filtroConta.adicionarCaminhoParaCarregamentoEntidade("imovel"); Collection colecaoConta = Fachada.getInstancia().pesquisar(filtroConta, Conta.class.getName()); if(!colecaoConta.isEmpty()){ contaEncontrada = (Conta)colecaoConta.iterator().next(); } return contaEncontrada; } private ContaHistorico pesquisarContaHistorico(String idImovel, String mesAnoReferencia){ ContaHistorico contaEncontrada = null; FiltroContaHistorico filtroContaHistorico = new FiltroContaHistorico(); filtroContaHistorico.adicionarParametro(new ParametroSimples(FiltroContaHistorico.IMOVEL_ID, idImovel)); filtroContaHistorico.adicionarParametro(new ParametroSimples(FiltroContaHistorico.ANO_MES_REFERENCIA, Util.formatarMesAnoComBarraParaAnoMes(mesAnoReferencia))); filtroContaHistorico.adicionarCaminhoParaCarregamentoEntidade("imovel"); Collection colecaoContaHistorico = Fachada.getInstancia().pesquisar(filtroContaHistorico, ContaHistorico.class.getName()); if(!colecaoContaHistorico.isEmpty()){ contaEncontrada = (ContaHistorico)colecaoContaHistorico.iterator().next(); } return contaEncontrada; } private void verificarSituacaoConta(Conta conta){ if(!conta.getDebitoCreditoSituacaoAtual().getId().equals(new Integer(0)) && !conta.getDebitoCreditoSituacaoAtual().getId().equals(new Integer(1)) && !conta.getDebitoCreditoSituacaoAtual().getId().equals(new Integer(2))){ FiltroDebitoCreditoSituacao filtro = new FiltroDebitoCreditoSituacao(); filtro.adicionarParametro(new ParametroSimples(FiltroDebitoCreditoSituacao.ID, conta.getDebitoCreditoSituacaoAtual().getId())); Collection colecao = Fachada.getInstancia().pesquisar(filtro, DebitoCreditoSituacao.class.getName()); DebitoCreditoSituacao debitoCreditoSituacao = (DebitoCreditoSituacao)Util.retonarObjetoDeColecao(colecao); throw new ActionServletException("atencao.fatura.cliente.responsavel.situacao",null,debitoCreditoSituacao.getDescricaoAbreviada()); } } private void verificarSituacaoConta(ContaHistorico contaHistorico){ if(!contaHistorico.getDebitoCreditoSituacaoAtual().getId().equals(new Integer(0)) && !contaHistorico.getDebitoCreditoSituacaoAtual().getId().equals(new Integer(1)) && !contaHistorico.getDebitoCreditoSituacaoAtual().getId().equals(new Integer(2))){ FiltroDebitoCreditoSituacao filtro = new FiltroDebitoCreditoSituacao(); filtro.adicionarParametro(new ParametroSimples(FiltroDebitoCreditoSituacao.ID, contaHistorico.getDebitoCreditoSituacaoAtual().getId())); Collection colecao = Fachada.getInstancia().pesquisar(filtro, DebitoCreditoSituacao.class.getName()); DebitoCreditoSituacao debitoCreditoSituacao = (DebitoCreditoSituacao)Util.retonarObjetoDeColecao(colecao); throw new ActionServletException("atencao.fatura.cliente.responsavel.situacao",null,debitoCreditoSituacao.getDescricaoAbreviada()); } } private void verificarClienteDaFatura(Imovel imovel, FiltrarFaturaClienteResponsavelActionForm form){ FiltroClienteImovel filtroClienteImovel = new FiltroClienteImovel(); filtroClienteImovel.adicionarParametro(new ParametroSimples(FiltroClienteImovel.CLIENTE_ID, form.getClienteId())); filtroClienteImovel.adicionarParametro(new ParametroSimples(FiltroClienteImovel.CLIENTE_RELACAO_TIPO, ClienteRelacaoTipo.RESPONSAVEL)); filtroClienteImovel.adicionarParametro(new ParametroNulo(FiltroClienteImovel.DATA_FIM_RELACAO)); filtroClienteImovel.adicionarParametro(new ParametroSimples(FiltroClienteImovel.IMOVEL_ID, imovel.getId())); Collection colecaoClienteImovel = Fachada.getInstancia().pesquisar(filtroClienteImovel, ClienteImovel.class.getName()); if(colecaoClienteImovel.isEmpty()){ FiltroCliente filtroCliente = new FiltroCliente(); filtroCliente.adicionarParametro(new ParametroSimples(FiltroCliente.ID, form.getClienteId())); Collection colCliente = Fachada.getInstancia().pesquisar(filtroCliente, Cliente.class.getName()); Cliente cliente = (Cliente) Util.retonarObjetoDeColecao(colCliente); throw new ActionServletException("atencao.fatura.cliente.nao.tem.ligacao.imovel", null,cliente.getNome()); } } }