package gcom.gui.faturamento.conta; import gcom.cadastro.sistemaparametro.SistemaParametro; import gcom.fachada.Fachada; import gcom.faturamento.conta.Conta; import gcom.faturamento.conta.ContaMotivoRevisao; import gcom.gui.ActionServletException; import gcom.gui.GcomAction; import gcom.micromedicao.consumo.ConsumoAnormalidade; import gcom.micromedicao.consumo.ConsumoAnormalidadeAcao; import gcom.micromedicao.consumo.ConsumoHistorico; import gcom.micromedicao.consumo.FiltroConsumoAnormalidade; import gcom.micromedicao.consumo.FiltroConsumoAnormalidadeAcao; import gcom.micromedicao.consumo.FiltroConsumoHistorico; import gcom.micromedicao.consumo.LigacaoTipo; import gcom.seguranca.acesso.PermissaoEspecial; import gcom.seguranca.acesso.usuario.Usuario; import gcom.util.Util; import gcom.util.filtro.ParametroSimples; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Collection; import java.util.Date; import java.util.GregorianCalendar; 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 ColocarRevisaoContaAction extends GcomAction { public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) { //Seta o mapeamento de retorno ActionForward retorno = actionMapping .findForward("exibirColocarRevisaoConta"); HttpSession sessao = httpServletRequest.getSession(false); //Inst�ncia do formul�rio que est� sendo utilizado ColocarRevisaoContaActionForm colocarRevisaoContaActionForm = (ColocarRevisaoContaActionForm) actionForm; Fachada fachada = Fachada.getInstancia(); Usuario usuarioLogado = (Usuario) sessao.getAttribute("usuarioLogado"); //Contas selecionadas pelo usu�rio String identificadoresConta = colocarRevisaoContaActionForm.getContaSelected(); String[] arrayIdentificadores = identificadoresConta.split(","); int flag = 0; Integer contaNaBase = null; Conta conta = null; ConsumoHistorico consumoHistoricoAgua = null; ConsumoAnormalidade consumoAnormalidade = null; ConsumoAnormalidadeAcao consumoAnormalidadeAcao = null; for (int i = 0; i < arrayIdentificadores.length; i++) { // Carregando a conta que est� na base String dadosConta = arrayIdentificadores[i]; String[] idUltimaAlteracao = dadosConta.split("-"); SimpleDateFormat formatter = new SimpleDateFormat ("yyyy-MM-dd HH:mm:ss"); Calendar data = new GregorianCalendar(); data.setTimeInMillis(new Long(idUltimaAlteracao[1].trim()) .longValue()); String time = formatter.format(data.getTime()); // alterado para fazer a pesquisa por Hql e nao com filtro como estava sendo feita antes - Fernanda Paiva - 23/08/2006 contaNaBase = fachada.pesquisarExistenciaContaParaConcorrencia(idUltimaAlteracao[0],time); // ------------------------------------------------------------------------------------------- // Alterado por : Hugo Leonardo - data : 05/07/2010 // Analista : Jeferson Pedrosa. // [FS0007] - Validar data de vencimento. // ------------------------------------------------------------------------------------------- // E o usu�rio n�o tenha permiss�o especial. boolean temPermissaoParaColocarContaEmRevisao = fachada.verificarPermissaoEspecial(PermissaoEspecial.ENVIAR_CONTA_PARA_REVISAO, usuarioLogado); if(!temPermissaoParaColocarContaEmRevisao){ SistemaParametro sistemaParametro = this.getFachada().pesquisarParametrosDoSistema(); int qtdDiasAtrasoVencimentoConta = sistemaParametro.getNumeroDiasRevisaoComPermEspecial(); conta = (Conta) Util.retonarObjetoDeColecao( fachada.obterConta(contaNaBase)); // SB0005 3.1.3 // verifica se a conta esta vencida if(Util.compararData(conta.getDataVencimentoConta(), new Date()) == -1){ // obt�m a quantidade de dias de atraso. int qtdDiasVencidas = Util.obterQuantidadeDiasEntreDuasDatas( conta.getDataVencimentoConta(), new Date()); if(qtdDiasVencidas > qtdDiasAtrasoVencimentoConta){ // Realizar um reload na tela de manter conta httpServletRequest.setAttribute("reloadPage", "OK"); throw new ActionServletException("atencao.necessario_permissao_especial_para_revisao_conta_para_dias_atraso", Util.formatarAnoMesParaMesAno(conta.getReferencia())); } } FiltroConsumoHistorico filtroConsumoHistorico = new FiltroConsumoHistorico(); filtroConsumoHistorico.adicionarParametro( new ParametroSimples( FiltroConsumoHistorico.IMOVEL_ID, conta.getImovel().getId() ) ); filtroConsumoHistorico.adicionarParametro( new ParametroSimples( FiltroConsumoHistorico.LIGACAO_TIPO_ID, LigacaoTipo.LIGACAO_AGUA ) ); filtroConsumoHistorico.adicionarParametro( new ParametroSimples( FiltroConsumoHistorico.ANO_MES_FATURAMENTO, conta.getReferencia() ) ); Collection<ConsumoHistorico> colConsumoHistorico = Fachada.getInstancia().pesquisar( filtroConsumoHistorico, ConsumoHistorico.class.getName() ); consumoHistoricoAgua = ( ConsumoHistorico ) Util.retonarObjetoDeColecao( colConsumoHistorico ); if(consumoHistoricoAgua != null && consumoHistoricoAgua.getConsumoAnormalidade() != null){ // pesquisa Consumo Anormalidade FiltroConsumoAnormalidade filtroConsumoAnormalidade = new FiltroConsumoAnormalidade(); filtroConsumoAnormalidade.adicionarParametro( new ParametroSimples( FiltroConsumoAnormalidade.ID, consumoHistoricoAgua.getConsumoAnormalidade())); Collection<ConsumoAnormalidade> colConsumoAnormalidade = Fachada.getInstancia().pesquisar( filtroConsumoAnormalidade, ConsumoAnormalidade.class.getName() ); consumoAnormalidade = ( ConsumoAnormalidade ) Util.retonarObjetoDeColecao( colConsumoAnormalidade ); if(consumoAnormalidade != null && consumoAnormalidade.getIndicadorRevisaoPermissaoEspecial() != null && consumoAnormalidade.getIndicadorRevisaoPermissaoEspecial().toString().equalsIgnoreCase("1")){ // SB0005 3.1.4 // verifica se o Consumo Anormalidade exige permiss�o Especial if(consumoAnormalidade.getId().toString().equals(ConsumoAnormalidade.BAIXO_CONSUMO.toString()) || consumoAnormalidade.getId().toString().equals(ConsumoAnormalidade.ESTOURO_CONSUMO.toString()) || consumoAnormalidade.getId().toString().equals(ConsumoAnormalidade.ALTO_CONSUMO.toString()) ){ // pesquisa Consumo Anormalidade FiltroConsumoAnormalidadeAcao filtroConsumoAnormalidadeAcao = new FiltroConsumoAnormalidadeAcao(); filtroConsumoAnormalidadeAcao.adicionarParametro( new ParametroSimples( FiltroConsumoAnormalidadeAcao.CONSUMO_ANORMALIDADE, consumoAnormalidade.getId())); Collection<ConsumoAnormalidadeAcao> colConsumoAnormalidadeAcao = Fachada.getInstancia().pesquisar( filtroConsumoAnormalidadeAcao, ConsumoAnormalidadeAcao.class.getName() ); consumoAnormalidadeAcao = ( ConsumoAnormalidadeAcao ) Util.retonarObjetoDeColecao( colConsumoAnormalidadeAcao ); // Realizar um reload na tela de manter conta httpServletRequest.setAttribute("reloadPage", "OK"); throw new ActionServletException("atencao.necessario_permissao_especial_para_revisao_conta_com_anormalidade", Util.formatarAnoMesParaMesAno(conta.getReferencia()), consumoAnormalidadeAcao.getNumerofatorConsumoMes1().toString()); }else{ // Realizar um reload na tela de manter conta httpServletRequest.setAttribute("reloadPage", "OK"); throw new ActionServletException("atencao.necessario_permissao_especial_para_revisao_conta_anormalidade_sem_permissao", Util.formatarAnoMesParaMesAno(conta.getReferencia())); } } } /* * Comentado por Hugo Leonardo * Data: 09/08/2010 * Analista: Jeferson Pedrosa. * CRC: 4478 /* * Comentado por Hugo Leonardo * Data: 09/08/2010 * Analista: Jeferson Pedrosa. * CRC: 4478 // SB0005 3.1.4 // Caso a situa��o de debito e credito for diferente de "NORMAL" if( conta.getDebitoCreditoSituacaoAtual() != null && !conta.getDebitoCreditoSituacaoAtual().getId().toString().equals("0")){ // Realizar um reload na tela de manter conta httpServletRequest.setAttribute("reloadPage", "OK"); throw new ActionServletException("atencao.necessario_permissao_especial_para_revisao_conta_com_situacao_debito_credito", Util.formatarAnoMesParaMesAno(conta.getReferencia())); } */ } // Verificar atualiza��o realizada antes por outro usu�rio if (contaNaBase == null || contaNaBase.equals("")) { httpServletRequest.setAttribute("reloadPage", "OK"); flag = 1; sessao.setAttribute("erroConcorrencia","erroConcorrencia"); } } //MotivoRevisaoConta selecinado pelo usu�rio ContaMotivoRevisao contaMotivoRevisao = new ContaMotivoRevisao(); contaMotivoRevisao.setId(new Integer(colocarRevisaoContaActionForm.getMotivoRevisaoContaID())); if (sessao.getAttribute("colecaoContaImovel") != null && (identificadoresConta != null && !identificadoresConta.equalsIgnoreCase("")) && flag == 0){ Collection<Conta> colecaoContaImovel = (Collection) sessao.getAttribute("colecaoContaImovel"); //Cancelando uma ou v�rias contas fachada.colocarRevisaoConta(colecaoContaImovel, identificadoresConta, contaMotivoRevisao, usuarioLogado); //Realizar um reload na tela de manter conta httpServletRequest.setAttribute("reloadPage", "OK"); } return retorno; } }