package gcom.gui.faturamento.conta; import gcom.atendimentopublico.ligacaoagua.FiltroLigacaoAguaSituacao; import gcom.atendimentopublico.ligacaoagua.LigacaoAguaSituacao; import gcom.atendimentopublico.ligacaoesgoto.FiltroLigacaoEsgotoSituacao; import gcom.atendimentopublico.ligacaoesgoto.LigacaoEsgotoSituacao; import gcom.cadastro.cliente.ClienteImovel; import gcom.cadastro.cliente.ClienteRelacaoTipo; import gcom.cadastro.cliente.FiltroClienteImovel; import gcom.cadastro.imovel.Categoria; import gcom.cadastro.imovel.FiltroImovel; import gcom.cadastro.imovel.Imovel; import gcom.cadastro.imovel.Subcategoria; import gcom.cadastro.sistemaparametro.SistemaParametro; import gcom.fachada.Fachada; import gcom.faturamento.conta.ContaMotivoInclusao; import gcom.faturamento.conta.FiltroMotivoInclusaoConta; import gcom.faturamento.debito.DebitoCobrado; import gcom.gui.ActionServletException; import gcom.gui.GcomAction; import gcom.util.ConstantesSistema; import gcom.util.Util; import gcom.util.filtro.ParametroNulo; import gcom.util.filtro.ParametroSimples; import gcom.util.filtro.ParametroSimplesDiferenteDe; import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Collection; import java.util.GregorianCalendar; import java.util.Iterator; import java.util.Map; 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; public class ExibirInserirContaAction extends GcomAction { public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) { //Seta o mapeamento de retorno ActionForward retorno = actionMapping .findForward("exibirInserirConta"); Fachada fachada = Fachada.getInstancia(); //Mudar isso quando tiver esquema de seguran�a HttpSession sessao = httpServletRequest.getSession(false); /* * Colocado por Raphael Rossiter em 29/03/2007 * Objetivo: Manipula��o dos objetos que ser�o exibidos no formul�rio de acordo com a empresa */ SistemaParametro sistemaParametro = fachada.pesquisarParametrosDoSistema(); //httpServletRequest.setAttribute("empresaNome", sistemaParametro.getNomeAbreviadoEmpresa().trim()); httpServletRequest.setAttribute("indicadorTarifaCategoria", sistemaParametro.getIndicadorTarifaCategoria().toString()); //Inst�ncia do formul�rio que est� sendo utilizado InserirContaActionForm inserirContaActionForm = (InserirContaActionForm) actionForm; String limparForm = httpServletRequest.getParameter("limparForm"); //DEFINI��O QUE IR� AUXILIAR O RETORNO DOS POPUPS sessao.setAttribute("UseCase", "INSERIRCONTA"); Map<String, String[]> requestMap = httpServletRequest.getParameterMap(); Collection colecaoCategoria = new ArrayList(); Collection colecaoSubcategoria = new ArrayList(); //Removendo cole��es da sess�o if (limparForm != null && !limparForm.equalsIgnoreCase("")){ sessao.removeAttribute("colecaoCategoria"); sessao.removeAttribute("colecaoDebitoCobrado"); sessao.removeAttribute("colecaoAdicionarCategoria"); sessao.removeAttribute("colecaoAdicionarDebitoTipo"); } Collection colecaoMotivoInclusaoConta, colecaoSituacaoLigacaoAgua, colecaoSituacaoLigacaoEsgoto; //Carregar a data corrente do sistema //==================================== SimpleDateFormat formatoData = new SimpleDateFormat("dd/MM/yyyy"); Calendar dataCorrente = new GregorianCalendar(); //Data Corrente httpServletRequest.setAttribute("dataAtual", formatoData .format(dataCorrente.getTime())); //Data Corrente + 60 dias dataCorrente.add(Calendar.DATE, 60); httpServletRequest.setAttribute("dataAtual60", formatoData .format(dataCorrente.getTime())); /* * Costante que informa o ano limite para o campo anoMesReferencia da conta */ httpServletRequest.setAttribute("anoLimite", ConstantesSistema.ANO_LIMITE); /*Motivo da inclus�o (Carregar cole��o) e remover as cole��es que ainda est�o na sess�o ====================================================================== */ if (sessao.getAttribute("colecaoMotivoInclusaoConta") == null) { FiltroMotivoInclusaoConta filtroMotivoInclusaoConta = new FiltroMotivoInclusaoConta( FiltroMotivoInclusaoConta.MOTIVO_INCLUSAO_CONTA); filtroMotivoInclusaoConta.adicionarParametro(new ParametroSimples( FiltroMotivoInclusaoConta.INDICADOR_USO, ConstantesSistema.INDICADOR_USO_ATIVO)); colecaoMotivoInclusaoConta = fachada.pesquisar(filtroMotivoInclusaoConta, ContaMotivoInclusao.class.getName()); if (colecaoMotivoInclusaoConta == null || colecaoMotivoInclusaoConta.isEmpty()) { throw new ActionServletException( "atencao.pesquisa.nenhum_registro_tabela", null, "MOTIVO_INCLUSAO_CONTA"); } else { sessao.setAttribute("colecaoMotivoInclusaoConta", colecaoMotivoInclusaoConta); } } /*Situa��o Liga��o �gua (Carregar cole��o) ====================================================================== */ if (sessao.getAttribute("colecaoSituacaoLigacaoAgua") == null) { FiltroLigacaoAguaSituacao filtroLigacaoAguaSituacao = new FiltroLigacaoAguaSituacao( FiltroLigacaoAguaSituacao.DESCRICAO); filtroLigacaoAguaSituacao.adicionarParametro(new ParametroSimples( FiltroLigacaoAguaSituacao.INDICADOR_USO, ConstantesSistema.INDICADOR_USO_ATIVO)); colecaoSituacaoLigacaoAgua = fachada.pesquisar(filtroLigacaoAguaSituacao, LigacaoAguaSituacao.class.getName()); if (colecaoSituacaoLigacaoAgua == null || colecaoSituacaoLigacaoAgua.isEmpty()) { throw new ActionServletException( "atencao.pesquisa.nenhum_registro_tabela", null, "LIGACAO_AGUA_SITUACAO"); } else { sessao.setAttribute("colecaoSituacaoLigacaoAgua", colecaoSituacaoLigacaoAgua); } } /*Situa��o Liga��o Esgoto (Carregar cole��o) ====================================================================== */ if (sessao.getAttribute("colecaoSituacaoLigacaoEsgoto") == null) { FiltroLigacaoEsgotoSituacao filtroLigacaoEsgotoSituacao = new FiltroLigacaoEsgotoSituacao( FiltroLigacaoEsgotoSituacao.DESCRICAO); filtroLigacaoEsgotoSituacao.adicionarParametro(new ParametroSimples( FiltroLigacaoEsgotoSituacao.INDICADOR_USO, ConstantesSistema.INDICADOR_USO_ATIVO)); colecaoSituacaoLigacaoEsgoto = fachada.pesquisar(filtroLigacaoEsgotoSituacao, LigacaoEsgotoSituacao.class.getName()); if (colecaoSituacaoLigacaoEsgoto == null || colecaoSituacaoLigacaoEsgoto.isEmpty()) { throw new ActionServletException( "atencao.pesquisa.nenhum_registro_tabela", null, "LIGACAO_ESGOTO_SITUACAO"); } else { sessao.setAttribute("colecaoSituacaoLigacaoEsgoto", colecaoSituacaoLigacaoEsgoto); } } /*Pesquisar o im�vel a partir da matr�cula do im�vel ====================================================================== */ String idImovel = inserirContaActionForm.getIdImovel(); String reloadPage = httpServletRequest.getParameter("reloadPage"); if (idImovel != null && !idImovel.equalsIgnoreCase("") && (reloadPage == null || reloadPage.equalsIgnoreCase(""))){ FiltroImovel filtroImovel = new FiltroImovel(); //Objetos que ser�o retornados pelo hobernate filtroImovel.adicionarCaminhoParaCarregamentoEntidade("localidade"); /*filtroImovel.adicionarCaminhoParaCarregamentoEntidade("setorComercial.codigo"); filtroImovel.adicionarCaminhoParaCarregamentoEntidade("quadra.numeroQuadra"); filtroImovel.adicionarCaminhoParaCarregamentoEntidade("ligacaoAguaSituacao.descricao"); filtroImovel.adicionarCaminhoParaCarregamentoEntidade("ligacaoEsgotoSituacao.descricao"); filtroImovel.adicionarCaminhoParaCarregamentoEntidade("ligacaoEsgoto.percentual");*/ filtroImovel.adicionarCaminhoParaCarregamentoEntidade("setorComercial"); filtroImovel.adicionarCaminhoParaCarregamentoEntidade("quadra"); filtroImovel.adicionarCaminhoParaCarregamentoEntidade("ligacaoAguaSituacao"); filtroImovel.adicionarCaminhoParaCarregamentoEntidade("ligacaoEsgotoSituacao"); filtroImovel.adicionarCaminhoParaCarregamentoEntidade("ligacaoEsgoto"); //Realizando a pesquisa do im�vel a partir da matr�cula recebida filtroImovel.adicionarParametro(new ParametroSimples(FiltroImovel.ID, idImovel)); /* * Apenas im�veis que n�o foram exclu�dos poder�o inserir conta * (IMOV_ICEXCLUSAO = 1) */ filtroImovel.adicionarParametro(new ParametroSimplesDiferenteDe(FiltroImovel.INDICADOR_IMOVEL_EXCLUIDO, Imovel.IMOVEL_EXCLUIDO)); Collection colecaoImovel = fachada.pesquisar(filtroImovel, Imovel.class.getName()); //[FS0001] - Verificar exist�ncia da matr�cula do im�vel if (colecaoImovel == null || colecaoImovel.isEmpty()){ /* throw new ActionServletException( "atencao.imovel.inexistente"); */ httpServletRequest.setAttribute("corInscricao", "exception"); inserirContaActionForm.setIdImovel(""); inserirContaActionForm.setInscricaoImovel("Matr�cula Inexistente"); httpServletRequest.setAttribute("nomeCampo", "idImovel"); } else{ Imovel objetoImovel = (Imovel) Util.retonarObjetoDeColecao(colecaoImovel); /*Pesquisar o cliente usu�rio do im�vel selecionado ====================================================================== */ FiltroClienteImovel filtroClienteImovel = new FiltroClienteImovel(); //Objetos que ser�o retornados pelo hibernate. //filtroClienteImovel.adicionarCaminhoParaCarregamentoEntidade("cliente.nome"); filtroClienteImovel.adicionarCaminhoParaCarregamentoEntidade("cliente"); filtroClienteImovel.adicionarParametro(new ParametroSimples(FiltroClienteImovel.IMOVEL_ID, idImovel)); filtroClienteImovel.adicionarParametro(new ParametroSimples(FiltroClienteImovel.CLIENTE_RELACAO_TIPO , ClienteRelacaoTipo.USUARIO)); filtroClienteImovel.adicionarParametro(new ParametroNulo(FiltroClienteImovel.FIM_RELACAO_MOTIVO)); Collection colecaoClienteImovel = fachada.pesquisar(filtroClienteImovel, ClienteImovel.class.getName()); // Verifica exist�ncia do cliente usu�tio if (colecaoClienteImovel == null || colecaoClienteImovel.isEmpty()){ throw new ActionServletException( "atencao.naocadastrado", null, "cliente do tipo usu�rio foi"); } ClienteImovel objetoClienteImovel = (ClienteImovel) Util.retonarObjetoDeColecao(colecaoClienteImovel); //Carregando as informa��es do im�vel no formul�rio de exibi��o. inserirContaActionForm.setInscricaoImovel(objetoImovel.getInscricaoFormatada()); inserirContaActionForm.setNomeClienteUsuario(objetoClienteImovel.getCliente().getNome()); inserirContaActionForm.setSituacaoAguaImovel(objetoImovel.getLigacaoAguaSituacao().getDescricao()); inserirContaActionForm.setSituacaoEsgotoImovel(objetoImovel.getLigacaoEsgotoSituacao().getDescricao()); inserirContaActionForm.setSituacaoAguaConta(String.valueOf(objetoImovel.getLigacaoAguaSituacao().getId().intValue())); inserirContaActionForm.setSituacaoEsgotoConta(String.valueOf(objetoImovel.getLigacaoEsgotoSituacao().getId().intValue())); if (objetoImovel.getLigacaoEsgoto() != null){ if (objetoImovel.getLigacaoEsgoto().getPercentual() != null){ inserirContaActionForm.setPercentualEsgoto(Util.formatarMoedaReal(objetoImovel.getLigacaoEsgoto().getPercentual())); } } //Inicializa o formul�rio inserirContaActionForm.setValorAgua(""); inserirContaActionForm.setValorEsgoto(""); inserirContaActionForm.setValorDebito(""); inserirContaActionForm.setValorTotal(""); inserirContaActionForm.setConsumoAgua(""); inserirContaActionForm.setConsumoEsgoto(""); if (sistemaParametro.getIndicadorTarifaCategoria().equals(SistemaParametro.INDICADOR_TARIFA_SUBCATEGORIA)){ //[UC0108] - Quantidade de economias por categoria colecaoSubcategoria = fachada.obterQuantidadeEconomiasSubCategoria(objetoImovel.getId()); sessao.setAttribute("colecaoSubcategoria", colecaoSubcategoria); } else{ //[UC0108] - Quantidade de economias por categoria colecaoCategoria = fachada.obterQuantidadeEconomiasCategoria(objetoImovel); sessao.setAttribute("colecaoCategoria", colecaoCategoria); } //Remove a cole��o de debitos que foi selecionada com a matricula do im�vel anterior //sessao.removeAttribute("colecaoDebitoCobrado"); //Colocando o faco pra o campo de ano m�s referencia httpServletRequest.setAttribute("nomeCampo", "mesAnoConta"); } } if(sessao.getAttribute("colecaoCategoria") != null) { Collection colecao = (Collection) sessao.getAttribute("colecaoCategoria"); Iterator iteratorColecaoCategoria = colecao.iterator(); Categoria categoria = null; String quantidadeEconomia = null; int valor = 0; while (iteratorColecaoCategoria.hasNext()) { categoria = (Categoria) iteratorColecaoCategoria.next(); // teste para ver se existe na p�gina alguma categoria valor++; if (requestMap.get("categoria" + categoria.getId()) != null) { quantidadeEconomia = (requestMap.get("categoria" + categoria.getId()))[0]; if (quantidadeEconomia == null || quantidadeEconomia.equalsIgnoreCase("")) { throw new ActionServletException( "atencao.required", null, "Quantidade de Economias"); } categoria.setQuantidadeEconomiasCategoria(new Integer(quantidadeEconomia)); } } if(valor == 0) { sessao.setAttribute("existeColecao","nao"); }else{ sessao.removeAttribute("existeColecao"); } } if(sessao.getAttribute("colecaoSubcategoria") != null) { Collection colecao = (Collection) sessao.getAttribute("colecaoSubcategoria"); Iterator iteratorColecaoSubcategoria = colecao.iterator(); Subcategoria subcategoria = null; String quantidadeEconomia = null; int valor = 0; while (iteratorColecaoSubcategoria.hasNext()) { subcategoria = (Subcategoria) iteratorColecaoSubcategoria.next(); // teste para ver se existe na p�gina alguma categoria valor++; if (requestMap.get("subcategoria" + subcategoria.getId()) != null) { quantidadeEconomia = (requestMap.get("subcategoria" + subcategoria.getId()))[0]; if (quantidadeEconomia == null || quantidadeEconomia.equalsIgnoreCase("")) { throw new ActionServletException( "atencao.required", null, "Quantidade de Economias"); } subcategoria.setQuantidadeEconomias(new Integer(quantidadeEconomia)); } } if(valor == 0) { sessao.setAttribute("existeColecao","nao"); }else{ sessao.removeAttribute("existeColecao"); } } if(sessao.getAttribute("colecaoDebitoCobrado") != null) { Collection colecaoDebito = (Collection) sessao.getAttribute("colecaoDebitoCobrado"); Iterator iteratorColecaoDebito = colecaoDebito.iterator(); DebitoCobrado debitoCobrado = null; String valor = null; BigDecimal valor2 = new BigDecimal ("0.00"); while (iteratorColecaoDebito.hasNext()) { debitoCobrado = (DebitoCobrado) iteratorColecaoDebito.next(); // valor minimo if (requestMap.get("debitoCobrado" + GcomAction.obterTimestampIdObjeto(debitoCobrado)) != null) { valor = (requestMap.get("debitoCobrado" + GcomAction.obterTimestampIdObjeto(debitoCobrado)))[0]; if (valor == null || valor.equalsIgnoreCase("")) { throw new ActionServletException( "atencao.required", null, "D�bito Cobrado"); } else{ valor2 = Util.formatarMoedaRealparaBigDecimal(valor); } debitoCobrado.setValorPrestacao(valor2); } } } if (requestMap.get("percentualEsgoto") != null){ String percentualEsgoto = (String) requestMap.get("percentualEsgoto")[0]; inserirContaActionForm.setPercentualEsgoto(percentualEsgoto); httpServletRequest.setAttribute("percentualEsgoto",percentualEsgoto); } //Limpando os campos ap�s remo��o ou inser��o de categorias ou d�bitos if (reloadPage != null && !reloadPage.equalsIgnoreCase("")){ inserirContaActionForm.setValorAgua(""); inserirContaActionForm.setValorEsgoto(""); inserirContaActionForm.setValorDebito(""); inserirContaActionForm.setValorTotal(""); } return retorno; } }