package gcom.batch.faturamento; import gcom.cadastro.sistemaparametro.SistemaParametro; import gcom.micromedicao.Rota; import gcom.seguranca.acesso.usuario.Usuario; import gcom.tarefa.TarefaBatch; import gcom.tarefa.TarefaException; import gcom.util.ConstantesJNDI; import gcom.util.ConstantesSistema; import gcom.util.Util; import gcom.util.agendadortarefas.AgendadorTarefas; import java.util.ArrayList; import java.util.Collection; import java.util.Date; import java.util.Iterator; /** * [UC1001] Emitir declara��o de quita��o anual de d�bitos * * Este caso de uso permite a gera��o de declara��o de quita��o de d�bitos. * * @author Hugo Amorim * @date 17/03/2010 */ public class TarefaBatchGerarDadosDeclaracaoQuitacaoAnualDebitos extends TarefaBatch { private static final long serialVersionUID = 1L; public TarefaBatchGerarDadosDeclaracaoQuitacaoAnualDebitos(Usuario usuario, int idFuncionalidadeIniciada) { super(usuario, idFuncionalidadeIniciada); } @Deprecated public TarefaBatchGerarDadosDeclaracaoQuitacaoAnualDebitos() { super(null, 0); } @Override public Object executar() throws TarefaException { SistemaParametro sistemaParametro = (SistemaParametro) getParametro("SistemaParametros"); if(sistemaParametro.getNumeroMesesAnterioresParaDeclaracaoQuitacao() == null || sistemaParametro.getNumeroAnoQuitacao() == null){ throw new TarefaException("atencao.sistema_nao_parametrizado"); } //Quantidade de anos para gerar a declara��o //(realizar a diferen�a entre o ano de SISTEMA_PARAMETROS.PARM_AMREFERENCIAARRECADACAO //e SISTEMA_PARAMETROS.PARM_NNANOQUITACAO, o valor obtido dever� ser utilizado //para considerar os anos a serem geradas as declara��es at� o ano de //SISTEMA_PARAMETROS.PARM_AMREFERENCIAARRECADACAO -1); Integer numeroAnoQuitacao = sistemaParametro.getNumeroAnoQuitacao(); Integer anoMesArrecadacao = sistemaParametro.getAnoMesArrecadacao(); Integer anoArrecadacao = Util.obterAno(anoMesArrecadacao); Integer anoArrecadacaoMenosUm = Util.obterAno(anoMesArrecadacao)-1; Integer anoInicialParaGerarDeclaracao = anoArrecadacao - numeroAnoQuitacao; Collection<Integer> anosParaGeracaoDeclaracao = new ArrayList<Integer>(); while(anoInicialParaGerarDeclaracao<=anoArrecadacaoMenosUm){ anosParaGeracaoDeclaracao.add(anoInicialParaGerarDeclaracao); anoInicialParaGerarDeclaracao++; } // Verificar o indicador de conta parcelada (SISTEMA_PARAMETROS.PARM_ICCONTAPARCELADA) // Caso este esteja como 1, as contas parceladas dever�o ser verificadas; // Caso contr�rio, n�o dever�o ser consideradas na gera��o da declara��o. // Verificar o indicador de conta em cobran�a judicial (SISTEMA_PARAMETROS.PARM_ICCOBRANCAJUDICIAL) // Caso este esteja como 1, as contas em cobran�a judicial dever�o ser verificadas; // Caso contr�rio, n�o dever�o ser consideradas na gera��o da declara��o. Short indicadorContaParcelada = ConstantesSistema.NAO; if(sistemaParametro.getIndicadorContaParcelada()!=null && sistemaParametro.getIndicadorContaParcelada() .compareTo(ConstantesSistema.SIM)==0){ indicadorContaParcelada = ConstantesSistema.SIM; } Short indicadorCobrancaJudical = ConstantesSistema.NAO; if(sistemaParametro.getIndicadorCobrancaJudical()!=null && sistemaParametro.getIndicadorCobrancaJudical() .compareTo(ConstantesSistema.SIM)==0){ indicadorCobrancaJudical = ConstantesSistema.SIM; } Integer numeroMesesAnterioresParaDeclaracaoQuitacao = sistemaParametro.getNumeroMesesAnterioresParaDeclaracaoQuitacao(); Integer anoMesSubtraido = Util.subtrairMesDoAnoMes(anoMesArrecadacao, numeroMesesAnterioresParaDeclaracaoQuitacao); Date dataVerificacaoPagamentos = Util.gerarDataApartirAnoMesRefencia(anoMesSubtraido); Collection colecaoRotasParaExecucao = (Collection) getParametro(ConstantesSistema.COLECAO_UNIDADES_PROCESSAMENTO_BATCH); Iterator iterator = colecaoRotasParaExecucao.iterator(); while (iterator.hasNext()) { Rota rota = (Rota) iterator.next(); System.out.println("ROTA GERAR DADOS QUITA��O ANUAL DE D�BITOS " + rota.getId() + "*********************************************************"); enviarMensagemControladorBatch( ConstantesJNDI.BATCH_GERAR_DECLARACAO_QUITACAO_ANUAL_DEBITOS, new Object[] { this.getIdFuncionalidadeIniciada(), anosParaGeracaoDeclaracao, rota, indicadorContaParcelada, indicadorCobrancaJudical, dataVerificacaoPagamentos, }); } return null; } @Override protected Collection<Object> pesquisarTodasUnidadeProcessamentoBatch() { return null; } @Override protected Collection<Object> pesquisarTodasUnidadeProcessamentoReinicioBatch() { return null; } @Override public void agendarTarefaBatch() { AgendadorTarefas.agendarTarefa( "BatchGerarDadosDeclaracaoQuitacaoAnualDebitos", this); } }