package gcom.relatorio.faturamento; import gcom.batch.Relatorio; import gcom.fachada.Fachada; import gcom.faturamento.bean.DebitoCobradoAgrupadoHelper; import gcom.relatorio.ConstantesRelatorios; import gcom.relatorio.RelatorioDataSource; import gcom.seguranca.acesso.usuario.FiltroUsuario; import gcom.seguranca.acesso.usuario.Usuario; import gcom.tarefa.TarefaException; import gcom.tarefa.TarefaRelatorio; import gcom.util.ConstantesInterfaceGSAN; import gcom.util.ControladorException; import gcom.util.FachadaException; import gcom.util.Util; import gcom.util.agendadortarefas.AgendadorTarefas; import gcom.util.filtro.ParametroSimples; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource; /** *[UC0958] Gerar Relat�rio Juras, Multas e D�bitos Cancelados * * @author Marlon Patrick * @since 22/10/2009 */ public class RelatorioJurosMultasDebitosCancelados extends TarefaRelatorio { private static final long serialVersionUID = 1L; public RelatorioJurosMultasDebitosCancelados(Usuario usuario) { super(usuario, ConstantesRelatorios.RELATORIO_JUROS_MULTAS_DEBITOS_CANCELADOS); } @Deprecated public RelatorioJurosMultasDebitosCancelados() { super(null, ""); } public Object executar() throws TarefaException { Map<String, Object> parametros = criarParametros(); List<RelatorioJurosMultasDebitosCanceladosBean> relatorioBeans = executarConsultaECriarRelatoriosBean(parametros); // if(Util.isVazioOrNulo(relatorioBeans)){ // throw new ActionServletException(ConstantesInterfaceGSAN.ATENCAO_RELATORIO_JUROS_MULTAS_DEBITOS_CANCELADOS_NENHUM_DEBITO_CANCELADO); // } RelatorioDataSource ds = new RelatorioDataSource(relatorioBeans); int tipoFormatoRelatorio = (Integer) getParametro("tipoFormatoRelatorio"); byte[] retorno = gerarRelatorio(ConstantesRelatorios.RELATORIO_JUROS_MULTAS_DEBITOS_CANCELADOS, parametros, ds, tipoFormatoRelatorio); try { persistirRelatorioConcluido(retorno, Relatorio.RELATORIO_JUROS_MULTAS_DEBITOS_CANCELADOS, this.getIdFuncionalidadeIniciada()); return retorno; } catch (ControladorException e) { e.printStackTrace(); throw new TarefaException(ConstantesInterfaceGSAN.ERRO_GSAN_ERRO_GRAVAR_RELATORIO_SISTEMA, e); } } /** * O m�todo cria os parametros necess�rios a gera��o do relatorio. * *@since 13/10/2009 *@author Marlon Patrick */ private Map<String, Object> criarParametros(){ Map<String,Object> parametros = new HashMap<String,Object>(); parametros.put("imagem", Fachada.getInstancia().pesquisarParametrosDoSistema().getImagemRelatorio()); parametros.put("filtroMesAnoFaturamento",getParametro("filtroMesAnoFaturamento")); parametros.put("filtroDataCancelamento",getParametro("filtroDataCancelamento")); parametros.put("filtroUnidadeNegocio",getParametro("filtroUnidadeNegocio")); parametros.put("filtroLocalidade",getParametro("filtroLocalidade")); parametros.put("filtroTipoDebito",getParametro("filtroTipoDebito")); parametros.put("filtroCategoria",getParametro("filtroCategoria")); parametros.put("filtroPerfilImovel",getParametro("filtroPerfilImovel")); parametros.put("filtroEsferaPoder",getParametro("filtroEsferaPoder")); parametros.put("filtroUsuarioCancelamento",getParametro("filtroUsuarioCancelamento")); return parametros; } /** * Esse m�todo tem a l�gica para realizar a consulta referente ao relatorio * e a partir do resultado obtido criar os beans. * *@since 06/10/2009 *@author Marlon Patrick */ private List<RelatorioJurosMultasDebitosCanceladosBean> executarConsultaECriarRelatoriosBean(Map<String, Object> parametros) { FiltrarRelatorioJurosMultasDebitosCanceladosHelper filtro = (FiltrarRelatorioJurosMultasDebitosCanceladosHelper) getParametro("filtrarRelatorioJurosMultasDebitosCanceladosHelper"); Fachada fachada = Fachada.getInstancia(); Collection<RelatorioJurosMultasDebitosCanceladosHelper> colecaoRelatorioHelper = fachada.pesquisarRelatorioJurosMultasDebitosCancelados(filtro); if(colecaoRelatorioHelper.isEmpty()){ throw new FachadaException("atencao.relatorio_juros_multas_debitos_cancelados.nenhum_debito_cancelado"); } List<RelatorioJurosMultasDebitosCanceladosBean> relatorioBeans = new ArrayList<RelatorioJurosMultasDebitosCanceladosBean>(); List<RelatorioJurosMultasDebitosCanceladosBeanHelper> colecaoTotalizadores = new ArrayList<RelatorioJurosMultasDebitosCanceladosBeanHelper>(); if ( !Util.isVazioOrNulo(colecaoRelatorioHelper)) { for (RelatorioJurosMultasDebitosCanceladosHelper relatorioHelper : colecaoRelatorioHelper) { if(!Util.isVazioOrNulo(relatorioHelper.getColecaoDebitosCobrados())){ for(DebitoCobradoAgrupadoHelper debitoHelper : relatorioHelper.getColecaoDebitosCobrados()){ RelatorioJurosMultasDebitosCanceladosBean relatorioBean = new RelatorioJurosMultasDebitosCanceladosBean(); relatorioBean.setMesAnoReferencia( Util.formatarAnoMesParaMesAno(relatorioHelper.getAnoMesReferencia())); relatorioBean.setDataCancelamento(relatorioHelper.getDataCancelamento()); relatorioBean.setEndereco(relatorioHelper.getEndereco()); relatorioBean.setInscricao(relatorioHelper.getInscricao()); relatorioBean.setMatricula(relatorioHelper.getMatricula()); FiltroUsuario filtroUsuario = new FiltroUsuario(); filtroUsuario.adicionarParametro(new ParametroSimples (FiltroUsuario.ID, new Integer(relatorioHelper.getResponsavel()))); Collection<Usuario> colecaoUsuario = fachada.pesquisar(filtroUsuario, Usuario.class.getName()); Usuario usuarioResponsavel = (Usuario) Util.retonarObjetoDeColecao(colecaoUsuario); if(usuarioResponsavel!=null){ relatorioBean.setResponsavel( relatorioHelper.getResponsavel() +" - " + usuarioResponsavel.getNomeUsuario().split(" ")[0]); }else{ relatorioBean.setResponsavel( relatorioHelper.getResponsavel()); } relatorioBean.setTipoDebito(debitoHelper.getDescricaoDebitoTipo()); relatorioBean.setValorDebito(debitoHelper.getValorDebito()); relatorioBeans.add(relatorioBean); criarTotalizador(colecaoTotalizadores, relatorioBean); } } } } Collections.sort(colecaoTotalizadores); parametros.put("colecaoTotalizadores", new JRBeanCollectionDataSource(colecaoTotalizadores)); Collections.sort(relatorioBeans); parametros.put("quantidadeRegistros", relatorioBeans.size()); return relatorioBeans; } /** * Este m�todo cria o objeto RelatorioJurosMultasDebitosCanceladosBeanHelper que ser� * usado para exibir a totaliza��o dos dados no relat�rio. * * Essa cole��o ser� enviada ao relat�rio atrav�sde um parametro.Isso foi necess�rio * devido o relat�rio pedir para ordenar por algumas colunas e totalizar por outras, * dessa forma, n�o � poss�vel fazer isso via iReport. * *@since 21/10/2009 *@author Marlon Patrick */ private void criarTotalizador( List<RelatorioJurosMultasDebitosCanceladosBeanHelper> colecaoTotalizadores, RelatorioJurosMultasDebitosCanceladosBean relatorioBean) { RelatorioJurosMultasDebitosCanceladosBeanHelper helperTotalizador = new RelatorioJurosMultasDebitosCanceladosBeanHelper(); helperTotalizador.setTipoDebito(relatorioBean.getTipoDebito()); helperTotalizador.setTotalCancelado(relatorioBean.getValorDebito()); helperTotalizador.setQuantidadeRegistros(1); if(colecaoTotalizadores.contains(helperTotalizador)){ RelatorioJurosMultasDebitosCanceladosBeanHelper helperTotalizadorExistente = colecaoTotalizadores.get(colecaoTotalizadores.indexOf(helperTotalizador)); helperTotalizadorExistente.setQuantidadeRegistros(helperTotalizadorExistente.getQuantidadeRegistros() + 1); helperTotalizadorExistente.setTotalCancelado(helperTotalizadorExistente.getTotalCancelado().add(helperTotalizador.getTotalCancelado())); return; } colecaoTotalizadores.add(helperTotalizador); } @Override public int calcularTotalRegistrosRelatorio() { int retorno = 0; Fachada fachada = Fachada.getInstancia(); FiltrarRelatorioJurosMultasDebitosCanceladosHelper filtro = (FiltrarRelatorioJurosMultasDebitosCanceladosHelper) getParametro("filtrarRelatorioJurosMultasDebitosCanceladosHelper"); retorno = fachada.countRelatorioJurosMultasDebitosCancelados(filtro); return retorno; } public void agendarTarefaBatch() { AgendadorTarefas.agendarTarefa("RelatorioJurosMultasDebitosCancelados", this); } }