package gcom.gui.faturamento.conta; import gcom.arrecadacao.pagamento.Pagamento; import gcom.atendimentopublico.ligacaoagua.FiltroLigacaoAguaSituacao; import gcom.atendimentopublico.ligacaoagua.LigacaoAguaSituacao; import gcom.atendimentopublico.ligacaoesgoto.FiltroLigacaoEsgotoSituacao; import gcom.atendimentopublico.ligacaoesgoto.LigacaoEsgotoSituacao; import gcom.atendimentopublico.registroatendimento.EspecificacaoTipoValidacao; import gcom.cadastro.imovel.Categoria; import gcom.cadastro.imovel.Imovel; import gcom.cadastro.imovel.Subcategoria; import gcom.cadastro.sistemaparametro.SistemaParametro; import gcom.fachada.Fachada; import gcom.faturamento.consumotarifa.ConsumoTarifa; import gcom.faturamento.consumotarifa.FiltroConsumoTarifa; import gcom.faturamento.conta.Conta; import gcom.faturamento.conta.ContaMotivoRetificacao; import gcom.faturamento.conta.FiltroMotivoRetificacaoConta; import gcom.faturamento.credito.CreditoRealizado; import gcom.faturamento.debito.DebitoCobrado; import gcom.gui.ActionServletException; import gcom.gui.GcomAction; import gcom.micromedicao.consumo.ConsumoHistorico; import gcom.micromedicao.consumo.FiltroConsumoHistorico; import gcom.micromedicao.medicao.FiltroMedicaoHistorico; import gcom.micromedicao.medicao.MedicaoHistorico; import gcom.seguranca.acesso.PermissaoEspecial; import gcom.seguranca.acesso.usuario.Usuario; import gcom.seguranca.transacao.TabelaColuna; import gcom.util.ConstantesSistema; import gcom.util.Util; import gcom.util.filtro.ParametroSimples; import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Collection; import java.util.Date; 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 ExibirRetificarContaAction extends GcomAction { public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) { //Seta o mapeamento de retorno ActionForward retorno = actionMapping .findForward("exibirRetificarConta"); Fachada fachada = Fachada.getInstancia(); //Mudar isso quando tiver esquema de seguran�a HttpSession sessao = httpServletRequest.getSession(false); //Inst�ncia do formul�rio que est� sendo utilizado RetificarContaActionForm retificarContaActionForm = (RetificarContaActionForm) actionForm; String confirmado = httpServletRequest.getParameter("confirmado"); Usuario usuarioLogado = (Usuario)sessao.getAttribute(Usuario.USUARIO_LOGADO); //verifica se o usu�rio tem permiss�o especial. boolean temPermissaoParaRetificarContaNorma = fachada.verificarPermissaoEspecial(PermissaoEspecial.RETIFICAR_CONTA_NORMA_REVISAO_FATURAMENTO, usuarioLogado); /* * Colocado por Raphael Rossiter em 16/04/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()); //Conta selecionada String reloadPage = httpServletRequest.getParameter("reloadPage"); String selecionouMotivo = httpServletRequest.getParameter("selecionouMotivo"); String idConta = null; if(httpServletRequest.getParameter("contaID") != null){ idConta = httpServletRequest.getParameter("contaID"); retificarContaActionForm.setMotivoRetificacaoID("" + ConstantesSistema.NUMERO_NAO_INFORMADO); }else { idConta = sessao.getAttribute("contaID").toString(); } if(httpServletRequest.getParameter("idImovel") != null){ /* * Colocado por Ana Maria em 22/04/2009 */ if (!fachada.verificarPermissaoRetificarContaImovelPefilBloqueado(usuarioLogado)){ Boolean imovelBloqueado = fachada.verificarImovelPerfilBloqueado(new Integer(httpServletRequest.getParameter("idImovel"))); if(imovelBloqueado){ throw new ActionServletException( "atencao.perfil_imovel_nao_permite_operacao"); } } sessao.setAttribute("idImovel",httpServletRequest.getParameter("idImovel")); } Usuario usuario = (Usuario) sessao.getAttribute("usuarioLogado"); // Collection colecaoTiposClientes = null; //Alterado por S�vio Luiz Analista:Aryed Lins //Data:06/12/2007 Integer idContaInt = Util.converterStringParaInteger(idConta); Pagamento pagamento = null; if(idContaInt != null){ pagamento = fachada.pesquisarPagamentoDeConta(idContaInt); } if(reloadPage == null || reloadPage.equals("")){ if(pagamento != null && !pagamento.equals("")){ if (confirmado == null || !confirmado.trim().equalsIgnoreCase("ok")){ httpServletRequest.setAttribute("caminhoActionConclusao", "/gsan/exibirRetificarContaAction.do"); Integer anoMesReferenciaConta = null; // Monta a p�gina de confirma��o para perguntar se o usu�rio // quer inserir // a devolu��o mesmo com o valor da devolu��o sendo superior ao da guia da devolu��o Collection colecaoContas = (Collection)sessao.getAttribute("colecaoContaImovel"); if(colecaoContas != null && !colecaoContas.isEmpty()){ Iterator ite = colecaoContas.iterator(); while (ite.hasNext()){ Conta conta = (Conta)ite.next(); if(conta.getId().equals(idContaInt)){ anoMesReferenciaConta = conta.getReferencia(); break; } } } sessao.setAttribute("contaID",idConta); return montarPaginaConfirmacao( "atencao.conta_paga", httpServletRequest, actionMapping,Util.formatarAnoMesParaMesAno(anoMesReferenciaConta)); } } } Map<String, String[]> requestMap = httpServletRequest.getParameterMap(); //DEFINI��O QUE IR� AUXILIAR O RETORNO DOS POPUPS sessao.setAttribute("UseCase", "RETIFICARCONTA"); Collection colecaoMotivoRetificacaoConta, colecaoSituacaoLigacaoAgua, colecaoSituacaoLigacaoEsgoto; Collection colecaoMedicaoHistorico, colecaoConsumoHistorico; //Removendo cole��es da sess�o if (idConta != null && !idConta.equalsIgnoreCase("") && reloadPage == null){ sessao.removeAttribute("contaRetificar"); sessao.removeAttribute("colecaoCategoria"); sessao.removeAttribute("colecaoDebitoCobrado"); sessao.removeAttribute("colecaoCreditoRealizado"); sessao.removeAttribute("colecaoAdicionarCategoria"); sessao.removeAttribute("colecaoAdicionarDebitoTipo"); sessao.removeAttribute("colecaoAdicionarDebitoTipo"); sessao.removeAttribute("colecaoTiposClientes"); sessao.removeAttribute("colecaoClientesVinculados"); } //Carregar a data corrente do sistema //==================================== SimpleDateFormat formatoData = new SimpleDateFormat("dd/MM/yyyy"); Calendar dataCorrente = new GregorianCalendar(); //Ultimo dia do m�s corrente. Date ultimaDataMes = Util.obterUltimaDataMes(Util.getMes(dataCorrente.getTime()), Util.getAno(dataCorrente.getTime())); httpServletRequest.setAttribute("ultimaDataMes", formatoData.format(ultimaDataMes)); //httpServletRequest.setAttribute("indicadorCalculaVencimento", sistemaParametro.getIndicadorCalculaVencimento()); sessao.setAttribute("indicadorCalculaVencimento", sistemaParametro.getIndicadorCalculaVencimento()); //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 Retifica��o (Carregar cole��o) e remover as cole��es que ainda est�o na sess�o ====================================================================== */ if (sessao.getAttribute("colecaoMotivoRetificacaoConta") == null) { FiltroMotivoRetificacaoConta filtroMotivoRetificacaoConta = new FiltroMotivoRetificacaoConta( FiltroMotivoRetificacaoConta.DESCRICAO_MOTIVO_RETIFICACAO_CONTA); filtroMotivoRetificacaoConta.adicionarParametro(new ParametroSimples( FiltroMotivoRetificacaoConta.INDICADOR_USO, ConstantesSistema.INDICADOR_USO_ATIVO)); colecaoMotivoRetificacaoConta = fachada.pesquisar(filtroMotivoRetificacaoConta, ContaMotivoRetificacao.class.getName()); if (colecaoMotivoRetificacaoConta == null || colecaoMotivoRetificacaoConta.isEmpty()) { throw new ActionServletException( "atencao.pesquisa.nenhum_registro_tabela", null, "MOTIVO_RETIFICACAO_CONTA"); } else { sessao.setAttribute("colecaoMotivoRetificacaoConta", colecaoMotivoRetificacaoConta); } } //==================================================================== /*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); } } //==================================================================== /* Pesquisando a conta a partir do id recebido ===================================================================== */ Conta contaSelecao = null; if (idConta != null && !idConta.equalsIgnoreCase("")){ contaSelecao = fachada.pesquisarContaRetificacao(new Integer(idConta)); if (contaSelecao == null) { throw new ActionServletException( "atencao.pesquisa.conta.inexistente"); } //Colocando o objeto conta selecionado na sess�o sessao.setAttribute("contaRetificar", contaSelecao); } else if (sessao.getAttribute("contaRetificar") != null){ contaSelecao = (Conta) sessao.getAttribute("contaRetificar"); } else{ throw new ActionServletException( "atencao.pesquisa.conta.inexistente"); } // Indicador imovel condominio if(contaSelecao.getImovel() != null && contaSelecao.getImovel().getImovelCondominio() != null){ httpServletRequest.setAttribute("idImovelCondominio", contaSelecao.getImovel().getImovelCondominio().getId()); } //==================================================================== if (idConta != null && !idConta.equalsIgnoreCase("") && (reloadPage == null || reloadPage.equalsIgnoreCase(""))){ /*Pesquisar o im�vel a partir da matr�cula do im�vel ====================================================================== */ String idImovel = null; if(httpServletRequest.getParameter("idImovel") != null){ idImovel = httpServletRequest.getParameter("idImovel"); sessao.setAttribute("idImovel",httpServletRequest.getParameter("idImovel")); }else{ idImovel = (String)sessao.getAttribute("idImovel"); } Imovel objetoImovel = contaSelecao.getImovel(); //==================================================================== /* * Colocado por Raphael Rossiter em 09/11/2007 * OBJ: Retificar uma conta sem RA */ boolean temPermissaoRetificarContaSemRA = fachada.verificarPermissaoRetificarContaSemRA(usuario); if (!temPermissaoRetificarContaSemRA){ //[FS0001] - Verificar Exist�ncia de RA fachada.verificarExistenciaRegistroAtendimento(new Integer(idImovel), "atencao.conta_existencia_registro_atendimento",EspecificacaoTipoValidacao.ALTERACAO_CONTA); } /*Pesquisar o cliente usu�rio do im�vel selecionado ====================================================================== */ String nomeClienteUsuarioImovel = fachada.consultarClienteUsuarioImovel(contaSelecao.getImovel().getId()); //==================================================================== //PREPARANDO OS OBJETOS PARA SEREM EXIBIDOS PELO FORMUL�RIO //=================================================================== if (sistemaParametro.getIndicadorTarifaCategoria().equals(SistemaParametro.INDICADOR_TARIFA_SUBCATEGORIA)){ //[UC0108] - Quantidade de economias por categoria Collection colecaoSubcategoria = fachada .obterQuantidadeEconomiasContaCategoriaPorSubcategoria(contaSelecao); sessao.setAttribute("colecaoSubcategoria", colecaoSubcategoria); Collection colecaoSubcategoriaInicial = new ArrayList(); colecaoSubcategoriaInicial.addAll(colecaoSubcategoria); sessao.setAttribute("colecaoSubcategoriaInicial", colecaoSubcategoriaInicial); } else{ //[UC0108] - Quantidade de economias por categoria Collection colecaoCategoria = fachada.obterQuantidadeEconomiasContaCategoria(contaSelecao); sessao.setAttribute("colecaoCategoria", colecaoCategoria); Collection colecaoCategoriaInicial = new ArrayList(); colecaoCategoriaInicial.addAll(colecaoCategoria); sessao.setAttribute("colecaoCategoriaInicial", colecaoCategoriaInicial); } //Obtendo os d�bitos cobrados da conta Collection colecaoDebitoCobrado = fachada.obterDebitosCobradosConta(contaSelecao); sessao.setAttribute("colecaoDebitoCobrado", colecaoDebitoCobrado); Collection colecaoDebitoCobradoInicial = new ArrayList(); colecaoDebitoCobradoInicial.addAll(colecaoDebitoCobrado); sessao.setAttribute("colecaoDebitoCobradoInicial", colecaoDebitoCobradoInicial); //Obtendo os cr�ditos realizados da conta Collection colecaoCreditoRealizado = fachada.obterCreditosRealizadosConta(contaSelecao); sessao.setAttribute("colecaoCreditoRealizado", colecaoCreditoRealizado); Collection colecaoCreditoRealizadoInicial = new ArrayList(); colecaoCreditoRealizadoInicial.addAll(colecaoCreditoRealizado); sessao.setAttribute("colecaoCreditoRealizadoInicial", colecaoCreditoRealizadoInicial); //Totalizando o valor dos cr�ditos BigDecimal valorTotalCredito = new BigDecimal("0.00"); if (colecaoCreditoRealizado != null && !colecaoCreditoRealizado.isEmpty()){ Iterator colecaoCreditoRealizadoIt = colecaoCreditoRealizado.iterator(); CreditoRealizado creditoRealizadoColecao; while (colecaoCreditoRealizadoIt.hasNext()) { creditoRealizadoColecao = (CreditoRealizado) colecaoCreditoRealizadoIt .next(); valorTotalCredito = valorTotalCredito.add(creditoRealizadoColecao.getValorCredito()); } } //Totalizando o valor dos d�bitos BigDecimal valorTotalDebito = new BigDecimal("0.00"); if (colecaoDebitoCobrado != null && !colecaoDebitoCobrado.isEmpty()){ Iterator colecaoDebitoCobradoIt = colecaoDebitoCobrado.iterator(); DebitoCobrado debitoCobradoColecao; while (colecaoDebitoCobradoIt.hasNext()) { debitoCobradoColecao = (DebitoCobrado) colecaoDebitoCobradoIt .next(); valorTotalDebito = valorTotalDebito.add(debitoCobradoColecao.getValorPrestacao()); } } //Consumo de �gua /*String consumoAgua = null; if (contaSelecao.getConsumoAgua() != null){ consumoAgua = String.valueOf(contaSelecao.getConsumoAgua().intValue()); } //Consumo de Esgoto String consumoEsgoto = null; if (contaSelecao.getConsumoEsgoto() != null){ consumoEsgoto = String.valueOf(contaSelecao.getConsumoEsgoto().intValue()); } //Percentual de Esgoto String percentualEsgoto = null; if (objetoImovel.getLigacaoEsgoto() != null){ if (objetoImovel.getLigacaoEsgoto().getPercentual() != null){ percentualEsgoto = objetoImovel.getLigacaoEsgoto().getPercentual().toString(); } }*/ //[SF0001] - Determinar Valores para Faturamento de �gua e/ou Esgoto /* Collection<CalcularValoresAguaEsgotoHelper> valoresConta = fachada.calcularValoresConta(Util.formatarMesAnoReferencia(contaSelecao.getReferencia()), String.valueOf(objetoImovel.getId()), contaSelecao.getLigacaoAguaSituacao().getId(), contaSelecao.getLigacaoEsgotoSituacao().getId(), colecaoCategoria, consumoAgua, consumoEsgoto, percentualEsgoto); //Totalizando os valores de �gua e esgoto BigDecimal valorTotalAgua = new BigDecimal("0"); BigDecimal valorTotalEsgoto = new BigDecimal("0"); if (valoresConta != null && valoresConta.isEmpty()){ Iterator valoresContaIt = valoresConta.iterator(); CalcularValoresAguaEsgotoHelper valoresContaObjeto = null; while (valoresContaIt.hasNext()){ valoresContaObjeto = (CalcularValoresAguaEsgotoHelper) valoresContaIt.next(); //Valor Faturado de �gua if (valoresContaObjeto.getValorFaturadoAguaCategoria() != null){ valorTotalAgua = valorTotalAgua.add(valoresContaObjeto.getValorFaturadoAguaCategoria()); } //Valor Faturado de Esgoto if (valoresContaObjeto.getValorFaturadoEsgotoCategoria() != null){ valorTotalEsgoto = valorTotalEsgoto.add(valoresContaObjeto.getValorFaturadoEsgotoCategoria()); } } } */ BigDecimal valorRateioAgua = new BigDecimal("0.00"); BigDecimal valorRateioEsgoto = new BigDecimal("0.00"); BigDecimal valorTotalAgua = new BigDecimal("0.00"); BigDecimal valorTotalEsgoto = new BigDecimal("0.00"); if (contaSelecao.getValorRateioAgua() != null){ valorRateioAgua = contaSelecao.getValorRateioAgua(); } if (contaSelecao.getValorRateioEsgoto() != null){ valorRateioEsgoto = contaSelecao.getValorRateioEsgoto(); } if (contaSelecao.getValorAgua() != null){ valorTotalAgua = contaSelecao.getValorAgua(); } if (contaSelecao.getValorEsgoto() != null){ valorTotalEsgoto = contaSelecao.getValorEsgoto(); } BigDecimal valorTotalConta = new BigDecimal("0.00"); valorTotalConta = contaSelecao.getValorTotal(); //Arredondando os valores obtidos para duas casas decimais valorTotalAgua.setScale(2, BigDecimal.ROUND_HALF_UP); valorTotalEsgoto.setScale(2, BigDecimal.ROUND_HALF_UP); valorTotalDebito.setScale(2, BigDecimal.ROUND_HALF_UP); valorTotalConta.setScale(2, BigDecimal.ROUND_HALF_UP); //Dados da conta retificarContaActionForm.setMesAnoConta(Util.formatarMesAnoReferencia(contaSelecao.getReferencia())); if(sistemaParametro.getIndicadorCalculaVencimento() == 1){ Date dtCorrente = new Date(); Integer diasAdicionais = 0; if(sistemaParametro.getNumeroDiasAlteracaoVencimentoPosterior() != null){ diasAdicionais = sistemaParametro.getNumeroDiasAlteracaoVencimentoPosterior().intValue(); } Date dataCorrenteComDias = Util.adicionarNumeroDiasDeUmaData(dtCorrente, diasAdicionais.intValue()); // [FS0035] - Validar Vencimento Automatico if (contaSelecao.getDataVencimentoConta().before(dataCorrenteComDias)) { retificarContaActionForm.setVencimentoConta(Util.formatarData(dataCorrenteComDias)); retificarContaActionForm.setVencimentoContaNaBase(Util.formatarData(contaSelecao.getDataVencimentoConta())); }else { retificarContaActionForm.setVencimentoConta(Util.formatarData(contaSelecao.getDataVencimentoConta())); retificarContaActionForm.setVencimentoContaNaBase(Util.formatarData(contaSelecao.getDataVencimentoConta())); } }else{ retificarContaActionForm.setVencimentoConta(Util.formatarData(contaSelecao.getDataVencimentoConta())); retificarContaActionForm.setVencimentoContaNaBase(Util.formatarData(contaSelecao.getDataVencimentoConta())); } /** * Autor: Hugo Leonardo * CRC_4795 * Data: 04/11/2010 * */ if(contaSelecao.getPercentualColeta() != null && Util.verificarNaoVazio(contaSelecao.getPercentualColeta().toString())){ retificarContaActionForm.setPercentualColeta(contaSelecao.getPercentualColeta().toString()); }else{ FiltroConsumoHistorico filtroConsumoHistorico = new FiltroConsumoHistorico(); filtroConsumoHistorico.adicionarCaminhoParaCarregamentoEntidade( "imovel.ligacaoEsgotoSituacao"); filtroConsumoHistorico.adicionarParametro(new ParametroSimples( FiltroConsumoHistorico.LIGACAO_TIPO_ID, ConsumoHistorico.INDICADOR_FATURAMENTO_FATURAR_ESGOTO)); filtroConsumoHistorico.adicionarParametro(new ParametroSimples( FiltroConsumoHistorico.ANO_MES_FATURAMENTO, contaSelecao.getReferencia())); filtroConsumoHistorico.adicionarParametro(new ParametroSimples( FiltroConsumoHistorico.IMOVEL_ID, contaSelecao.getImovel().getId())); filtroConsumoHistorico.adicionarParametro(new ParametroSimples( "imovel.ligacaoEsgotoSituacao.indicadorFaturamentoSituacao", ConstantesSistema.SIM)); colecaoConsumoHistorico = fachada.pesquisar(filtroConsumoHistorico, ConsumoHistorico.class.getName()); if(!Util.isVazioOrNulo(colecaoConsumoHistorico)){ ConsumoHistorico consumoHistorico = (ConsumoHistorico) colecaoConsumoHistorico.iterator().next(); if(consumoHistorico.getPercentualColeta() != null && Util.verificarNaoVazio(consumoHistorico.getPercentualColeta().toString())){ retificarContaActionForm.setPercentualColeta(Util.formatarMoedaReal(consumoHistorico.getPercentualColeta())); }else{ retificarContaActionForm.setPercentualColeta(""); } }else{ retificarContaActionForm.setPercentualColeta(""); } } FiltroMedicaoHistorico filtroMedicaoHistorico = new FiltroMedicaoHistorico(); filtroMedicaoHistorico.adicionarCaminhoParaCarregamentoEntidade( "imovel.ligacaoEsgotoSituacao"); filtroMedicaoHistorico.adicionarParametro(new ParametroSimples( FiltroMedicaoHistorico.MEDICAO_TIPO_ID, ConstantesSistema.NAO)); filtroMedicaoHistorico.adicionarParametro(new ParametroSimples( "imovel.ligacaoEsgotoSituacao.indicadorFaturamentoSituacao", ConstantesSistema.SIM)); filtroMedicaoHistorico.adicionarParametro(new ParametroSimples( FiltroMedicaoHistorico.IMOVEL_ID, contaSelecao.getImovel().getId())); filtroMedicaoHistorico.adicionarParametro(new ParametroSimples( FiltroMedicaoHistorico.ANO_MES_REFERENCIA_FATURAMENTO, contaSelecao.getReferencia())); colecaoMedicaoHistorico = fachada.pesquisar(filtroMedicaoHistorico, MedicaoHistorico.class.getName()); if(contaSelecao.getNumeroVolumePoco() != null && Util.verificarNaoVazio(contaSelecao.getNumeroVolumePoco().toString())){ retificarContaActionForm.setConsumoFaturadoPoco(contaSelecao.getNumeroVolumePoco().toString()); }else if(!Util.isVazioOrNulo(colecaoMedicaoHistorico)){ MedicaoHistorico medicaoHistorico = (MedicaoHistorico) colecaoMedicaoHistorico.iterator().next(); if(medicaoHistorico.getNumeroConsumoMes() != null && Util.verificarNaoVazio(medicaoHistorico.getNumeroConsumoMes().toString())){ retificarContaActionForm.setConsumoFaturadoPoco(medicaoHistorico.getNumeroConsumoMes().toString()); }else{ retificarContaActionForm.setConsumoFaturadoPoco(""); } }else{ retificarContaActionForm.setConsumoFaturadoPoco(""); } if(contaSelecao.getNumeroLeituraAnteriorPoco() != null && Util.verificarNaoVazio(contaSelecao.getNumeroLeituraAnteriorPoco().toString())){ retificarContaActionForm.setLeituraAnteriorPoco(contaSelecao.getNumeroLeituraAnteriorPoco().toString()); }else if(!Util.isVazioOrNulo(colecaoMedicaoHistorico)){ MedicaoHistorico medicaoHistorico = (MedicaoHistorico) colecaoMedicaoHistorico.iterator().next(); if(medicaoHistorico.getLeituraAnteriorInformada() != null && Util.verificarNaoVazio(medicaoHistorico.getLeituraAnteriorInformada().toString())){ retificarContaActionForm.setLeituraAnteriorPoco(medicaoHistorico.getLeituraAnteriorInformada().toString()); }else{ retificarContaActionForm.setLeituraAnteriorPoco(""); } }else{ retificarContaActionForm.setLeituraAnteriorPoco(""); } if(contaSelecao.getNumeroLeituraAtualPoco() != null && Util.verificarNaoVazio(contaSelecao.getNumeroLeituraAtualPoco().toString())){ retificarContaActionForm.setLeituraAtualPoco(contaSelecao.getNumeroLeituraAtualPoco().toString()); }else if(!Util.isVazioOrNulo(colecaoMedicaoHistorico)){ MedicaoHistorico medicaoHistorico = (MedicaoHistorico) colecaoMedicaoHistorico.iterator().next(); if(medicaoHistorico.getLeituraAtualInformada() != null && Util.verificarNaoVazio(medicaoHistorico.getLeituraAtualInformada().toString())){ retificarContaActionForm.setLeituraAtualPoco(medicaoHistorico.getLeituraAtualInformada().toString()); }else{ retificarContaActionForm.setLeituraAtualPoco(""); } }else{ retificarContaActionForm.setLeituraAtualPoco(""); } /**********************/ retificarContaActionForm.setSituacaoAguaConta(String.valueOf(contaSelecao.getLigacaoAguaSituacao().getId().intValue())); retificarContaActionForm.setSituacaoEsgotoConta(String.valueOf(contaSelecao.getLigacaoEsgotoSituacao().getId().intValue())); retificarContaActionForm.setPercentualEsgoto(Util.formatarMoedaReal(contaSelecao.getPercentualEsgoto())); //Consumo de �gua (Conta) if ((contaSelecao.getLigacaoAguaSituacao().getId().equals(LigacaoAguaSituacao.LIGADO) || contaSelecao.getLigacaoAguaSituacao().getId().equals(LigacaoAguaSituacao.CORTADO)) && contaSelecao.getConsumoAgua() != null){ retificarContaActionForm.setConsumoAgua(String.valueOf(contaSelecao.getConsumoAgua().intValue())); } if(contaSelecao.getNumeroLeituraAnterior() != null){ retificarContaActionForm.setLeituraAnteriorAgua(contaSelecao.getNumeroLeituraAnterior().toString()); } if(contaSelecao.getNumeroLeituraAtual() != null){ retificarContaActionForm.setLeituraAtualAgua(contaSelecao.getNumeroLeituraAtual().toString()); } //Consumo de esgoto (Conta) if (contaSelecao.getLigacaoEsgotoSituacao().getId().equals(LigacaoAguaSituacao.LIGADO) && contaSelecao.getConsumoEsgoto() != null){ retificarContaActionForm.setConsumoEsgoto(String.valueOf(contaSelecao.getConsumoEsgoto().intValue())); } //Percentual Esgoto (Conta) if (contaSelecao.getLigacaoEsgotoSituacao().getId().equals(LigacaoAguaSituacao.LIGADO) && contaSelecao.getPercentualEsgoto() != null){ retificarContaActionForm.setPercentualEsgoto(Util.formatarMoedaReal(contaSelecao.getPercentualEsgoto())); } //Exibindo os valores calculados retificarContaActionForm.setValorRateioAgua(Util.formatarMoedaReal(valorRateioAgua)); retificarContaActionForm.setValorRateioEsgoto(Util.formatarMoedaReal(valorRateioEsgoto)); retificarContaActionForm.setValorAgua(Util.formatarMoedaReal(valorTotalAgua)); retificarContaActionForm.setValorEsgoto(Util.formatarMoedaReal(valorTotalEsgoto)); retificarContaActionForm.setValorDebito(Util.formatarMoedaReal(valorTotalDebito)); retificarContaActionForm.setValorTotal(Util.formatarMoedaReal(valorTotalConta)); //Valor total dos cr�ditos retificarContaActionForm.setValorCredito(Util.formatarMoedaReal(valorTotalCredito)); //Dados do im�vel retificarContaActionForm.setIdImovel(String.valueOf(objetoImovel.getId().intValue())); retificarContaActionForm.setInscricaoImovel(objetoImovel.getInscricaoFormatada()); //retificarContaActionForm.setNomeClienteUsuario(objetoClienteImovel.getCliente().getNome()); retificarContaActionForm.setNomeClienteUsuario(nomeClienteUsuarioImovel); retificarContaActionForm.setSituacaoAguaImovel(objetoImovel.getLigacaoAguaSituacao().getDescricao()); retificarContaActionForm.setSituacaoEsgotoImovel(objetoImovel.getLigacaoEsgotoSituacao().getDescricao()); retificarContaActionForm.setSituacaoAguaConta(String.valueOf(contaSelecao.getLigacaoAguaSituacao().getId().intValue())); retificarContaActionForm.setSituacaoEsgotoConta(String.valueOf(contaSelecao.getLigacaoEsgotoSituacao().getId().intValue())); /* //adicionado por Vivianne Sousa 26/11/208 //analista: Adriano Britto BigDecimal percentualColeta = fachada. obterPercentualAguaConsumidaColetadaImovel(objetoImovel.getId()); if(percentualColeta != null){ retificarContaActionForm.setPercentualColeta(percentualColeta.toString()); }else{ retificarContaActionForm.setPercentualColeta(null); } */ } 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(); 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(); 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(sessao.getAttribute("colecaoCreditoRealizado") != null) { Collection colecaoCredito = (Collection) sessao.getAttribute("colecaoCreditoRealizado"); Iterator iteratorColecaoCredito = colecaoCredito.iterator(); CreditoRealizado creditoRealizado = null; String valor = null; BigDecimal valor2 = new BigDecimal ("0.00"); while (iteratorColecaoCredito.hasNext()) { creditoRealizado = (CreditoRealizado) iteratorColecaoCredito.next(); // valor minimo if (requestMap.get("creditoRealizado" + GcomAction.obterTimestampIdObjeto(creditoRealizado)) != null) { valor = (requestMap.get("creditoRealizado" + GcomAction.obterTimestampIdObjeto(creditoRealizado)))[0]; if (valor == null || valor.equalsIgnoreCase("")) { throw new ActionServletException( "atencao.required", null, "Cr�dito Realizado"); } else{ valor2 = Util.formatarMoedaRealparaBigDecimal(valor); } creditoRealizado.setValorCredito(valor2); } } } if(sessao.getAttribute("situacaoAguaContaAntes") == null){ sessao.setAttribute("situacaoAguaContaAntes",retificarContaActionForm.getSituacaoAguaConta()); } if(sessao.getAttribute("situacaoEsgotoContaAntes") == null){ sessao.setAttribute("situacaoEsgotoContaAntes",retificarContaActionForm.getSituacaoEsgotoConta()); } if(sessao.getAttribute("consumoEsgotoAntes") == null){ sessao.setAttribute("consumoEsgotoAntes",retificarContaActionForm.getConsumoEsgoto()); } if(sessao.getAttribute("consumoAguaAntes") == null){ sessao.setAttribute("consumoAguaAntes",retificarContaActionForm.getConsumoAgua()); } if(sessao.getAttribute("percentualEsgotoAntes") == null){ String percentualEsgotoAntes = null; if(retificarContaActionForm.getPercentualEsgoto() != null){ percentualEsgotoAntes = retificarContaActionForm.getPercentualEsgoto().toString().replace(",",""); percentualEsgotoAntes = percentualEsgotoAntes.toString().replace(".",""); }else{percentualEsgotoAntes = "1"; } sessao.setAttribute("percentualEsgotoAntes",percentualEsgotoAntes); } if(sessao.getAttribute("vencimentoContaAntes") == null){ //sessao.setAttribute("vencimentoContaAntes",retificarContaActionForm.getVencimentoConta()); sessao.setAttribute("vencimentoContaAntes",Util.formatarData(contaSelecao.getDataVencimentoConta())); } sessao.setAttribute("contaID",idConta); // Adicionado por Bruno Barros, 25/07/2008 // Carregamos todas as tarifas de consumo ativas if ( sessao.getAttribute( "colecaoConsumoTarifa" ) == null ){ FiltroConsumoTarifa filtro = new FiltroConsumoTarifa(); filtro.adicionarParametro( new ParametroSimples( FiltroConsumoTarifa.INDICADOR_USO, ConstantesSistema.INDICADOR_USO_ATIVO ) ); Collection<ConsumoTarifa> colConsumoTarifa = Fachada.getInstancia().pesquisar( filtro, ConsumoTarifa.class.getName() ); sessao.setAttribute( "colecaoConsumoTarifa", colConsumoTarifa ); } // Verificamos se a conta possue tarifa de consumo if ( contaSelecao.getConsumoTarifa() != null ){ retificarContaActionForm.setIdConsumoTarifa( contaSelecao.getConsumoTarifa().getId()+"" ); } // Verificar a permiss�o especial da tarifa de consumo boolean temPermissaoAlterarTarifaConsumo = fachada.verificarPermissaoEspecial( PermissaoEspecial.ALTERAR_TARIFA_CONSUMO_RETIFICAR_CONTA , (Usuario) sessao.getAttribute("usuarioLogado") ); httpServletRequest.setAttribute("temPermissaoAlterarTarifaConsumo",temPermissaoAlterarTarifaConsumo); boolean alterarValorSugeridoEmTipoDebito = Fachada .getInstancia() .verificarPermissaoEspecial( PermissaoEspecial.ALTERAR_VALOR_SUGERIDO_EM_TIPO_DEBITO, this.getUsuarioLogado(httpServletRequest)); httpServletRequest.setAttribute("alterarValorSugeridoEmTipoDebito", alterarValorSugeridoEmTipoDebito); // Fim por Bruno Barros, 25/07/2008 //Limpando os campos ap�s remo��o ou inser��o de categorias ou d�bitos if (reloadPage != null && !reloadPage.equalsIgnoreCase("")){ if(selecionouMotivo != null && !selecionouMotivo.equalsIgnoreCase("")){ verificarOcorrenciasMesmoMotivoAno(new Integer(retificarContaActionForm.getMotivoRetificacaoID()), new Integer(retificarContaActionForm.getIdImovel()), sessao,sistemaParametro,temPermissaoParaRetificarContaNorma); }else{ retificarContaActionForm.setValorAgua(""); retificarContaActionForm.setValorEsgoto(""); retificarContaActionForm.setValorDebito(""); retificarContaActionForm.setValorCredito(""); retificarContaActionForm.setValorTotal(""); } } //CRC4795 - Vivianne Sousa 23/09/2010 - analista:Nelson Carvalho boolean temPermissaoNaoVerificarConsumoEsgoto = fachada. verificarPermissaoRetificarContaSemVerificarConsumoEsgoto(usuarioLogado); if(temPermissaoNaoVerificarConsumoEsgoto){ httpServletRequest.setAttribute("temPermissaoNaoVerificarConsumoEsgoto",1); }else{ httpServletRequest.setAttribute("temPermissaoNaoVerificarConsumoEsgoto",2); } //[FS0038]-habilitar/desabilitar campos para retifica��o habilitarCampos(retificarContaActionForm.getMotivoRetificacaoID(),httpServletRequest,sistemaParametro,temPermissaoParaRetificarContaNorma); return retorno; } /*[FS0037]-Verificar ocorr�ncias mesmo motivo no ano * Vivianne Sousa - 11/02/2011 */ public void verificarOcorrenciasMesmoMotivoAno(Integer idMotivoSelecionado,Integer idImovel, HttpSession sessao,SistemaParametro sistemaParametro,boolean temPermissaoParaRetificarContaNorma){ if(sistemaParametro.getIndicadorNormaRetificacao().equals(ConstantesSistema.SIM)){ //Caso a Empresa esteja na Norma de Retifica��o de Conta ContaMotivoRetificacao contaMotivoRetificacao = getFachada().pesquisaContaMotivoRetificacao(idMotivoSelecionado); if (contaMotivoRetificacao != null && contaMotivoRetificacao.getNumeroOcorrenciasNoAno() != null && contaMotivoRetificacao.getNumeroOcorrenciasNoAno().compareTo(new Integer("0")) == 1 ){ Integer numeroOcorrenciasNoAno = contaMotivoRetificacao.getNumeroOcorrenciasNoAno(); Integer qtdeContaEContaHistoricoRetificadaMotivo = getFachada(). pesquisaQtdeContaEContaHistoricoRetificadaMotivo(idMotivoSelecionado,idImovel); if(!temPermissaoParaRetificarContaNorma && qtdeContaEContaHistoricoRetificadaMotivo.compareTo(numeroOcorrenciasNoAno) > -1){ //Limite de Retifica��es para o mesmo Motivo excedido! throw new ActionServletException("atencao.limite_retificacoes_excedido"); } } } } /*[FS0038]-habilitar/desabilitar campos para retifica��o * Vivianne Sousa - 14/02/2011 * RM4132 - analista respons�vel:Jeferson Pedrosa */ public void habilitarCampos(String idMotivoSelecionado,HttpServletRequest httpServletRequest, SistemaParametro sistemaParametro,boolean temPermissaoParaRetificarContaNorma){ if(sistemaParametro.getIndicadorNormaRetificacao().equals(ConstantesSistema.SIM)){ //Caso a Empresa esteja na Norma de Retifica��o de Conta String habilitaSituacaoAgua = "2"; String habilitaConsumoAgua = "2"; String habilitaLeituraAnterior = "2"; String habilitaLeituraAtual = "2"; String habilitaSituacaoEsgoto = "2"; String habilitaConsumoEsgoto = "2"; String habilitaPercentualEsgoto = "2"; String habilitaPercentualColeta = "2"; String habilitaVolumePoco = "2"; String habilitaLeituraAnteriorPoco = "2"; String habilitaLeituraAtualPoco = "2"; String habilitaListaCategoriasEQuantidadesEconomias = "2"; String habilitaListaDebitos = "2"; String habilitaListaCreditos = "2"; if(idMotivoSelecionado != null && !idMotivoSelecionado.equalsIgnoreCase("") && !idMotivoSelecionado.equals(ConstantesSistema.NUMERO_NAO_INFORMADO)){ Collection colecaoTabelaColuna = getFachada().pesquisaTabelaColunaContaMotivoRetificacaoColuna(new Integer(idMotivoSelecionado)); Iterator iterTabelaColuna = colecaoTabelaColuna.iterator(); while (iterTabelaColuna.hasNext()) { TabelaColuna tabelaColuna = (TabelaColuna) iterTabelaColuna.next(); String nomeAbreviado = tabelaColuna.getNomeAbreviado(); if (nomeAbreviado != null) { if(nomeAbreviado.equalsIgnoreCase("SITAGU")){ habilitaSituacaoAgua = "1"; }else if(nomeAbreviado.equalsIgnoreCase("CONAGU")){ habilitaConsumoAgua = "1"; }else if(nomeAbreviado.equalsIgnoreCase("LANAGU")){ habilitaLeituraAnterior = "1"; }else if(nomeAbreviado.equalsIgnoreCase("LATAGU")){ habilitaLeituraAtual = "1"; }else if(nomeAbreviado.equalsIgnoreCase("SITESG")){ habilitaSituacaoEsgoto = "1"; }else if(nomeAbreviado.equalsIgnoreCase("CONESG")){ habilitaConsumoEsgoto = "1"; }else if(nomeAbreviado.equalsIgnoreCase("PERESG")){ habilitaPercentualEsgoto = "1"; }else if(nomeAbreviado.equalsIgnoreCase("PERCOL")){ habilitaPercentualColeta = "1"; }else if(nomeAbreviado.equalsIgnoreCase("VOLPOC")){ habilitaVolumePoco = "1"; }else if(nomeAbreviado.equalsIgnoreCase("LANPOC")){ habilitaLeituraAnteriorPoco = "1"; }else if(nomeAbreviado.equalsIgnoreCase("LATPOC")){ habilitaLeituraAtualPoco = "1"; }else if(nomeAbreviado.equalsIgnoreCase("CATECO")){ habilitaListaCategoriasEQuantidadesEconomias = "1"; }else if(nomeAbreviado.equalsIgnoreCase("DEBITO")){ habilitaListaDebitos = "1"; }else if(nomeAbreviado.equalsIgnoreCase("CREDIT")){ habilitaListaCreditos = "1"; } } } } httpServletRequest.setAttribute("habilitaSituacaoAgua",habilitaSituacaoAgua); httpServletRequest.setAttribute("habilitaConsumoAgua",habilitaConsumoAgua); httpServletRequest.setAttribute("habilitaLeituraAnterior",habilitaLeituraAnterior); httpServletRequest.setAttribute("habilitaLeituraAtual",habilitaLeituraAtual); httpServletRequest.setAttribute("habilitaSituacaoEsgoto",habilitaSituacaoEsgoto); httpServletRequest.setAttribute("habilitaConsumoEsgoto",habilitaConsumoEsgoto); httpServletRequest.setAttribute("habilitaPercentualEsgoto",habilitaPercentualEsgoto); httpServletRequest.setAttribute("habilitaPercentualColeta",habilitaPercentualColeta); httpServletRequest.setAttribute("habilitaVolumePoco",habilitaVolumePoco); httpServletRequest.setAttribute("habilitaLeituraAnteriorPoco",habilitaLeituraAnteriorPoco); httpServletRequest.setAttribute("habilitaLeituraAtualPoco",habilitaLeituraAtualPoco); httpServletRequest.setAttribute("habilitaListaCategoriasEQuantidadesEconomias",habilitaListaCategoriasEQuantidadesEconomias); httpServletRequest.setAttribute("habilitaListaDebitos",habilitaListaDebitos); httpServletRequest.setAttribute("habilitaListaCreditos",habilitaListaCreditos); } } }