package gcom.relatorio.faturamento; import gcom.batch.Relatorio; import gcom.cadastro.cliente.Cliente; import gcom.cadastro.endereco.FiltroLogradouro; import gcom.cadastro.endereco.Logradouro; import gcom.cadastro.geografico.Bairro; import gcom.cadastro.geografico.FiltroBairro; import gcom.cadastro.sistemaparametro.SistemaParametro; import gcom.fachada.Fachada; import gcom.gui.ActionServletException; import gcom.relatorio.ConstantesRelatorios; import gcom.relatorio.RelatorioDataSource; import gcom.relatorio.RelatorioVazioException; import gcom.seguranca.acesso.usuario.Usuario; import gcom.tarefa.TarefaException; import gcom.tarefa.TarefaRelatorio; import gcom.util.ControladorException; import gcom.util.Util; import gcom.util.agendadortarefas.AgendadorTarefas; import gcom.util.filtro.ParametroSimples; import java.math.BigDecimal; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; /** * classe respons�vel por criar o relat�rio de bairro manter de �gua * * @author Fernanda Paiva * @created 11 de Julho de 2005 */ public class RelatorioFaturasAgrupadas extends TarefaRelatorio { private static final long serialVersionUID = 1L; public RelatorioFaturasAgrupadas(Usuario usuario) { super(usuario, ConstantesRelatorios.RELATORIO_FATURAS_AGRUPADAS); } @Deprecated public RelatorioFaturasAgrupadas() { super(null, ""); } /** * < <Descri��o do m�todo>> * * @param localidades * Description of the Parameter * @param localidadeParametros * Description of the Parameter * @return Descri��o do retorno * @exception RelatorioVazioException * Descri��o da exce��o */ @SuppressWarnings("unchecked") public Object executar() throws TarefaException { // ------------------------------------ Integer idFuncionalidadeIniciada = this.getIdFuncionalidadeIniciada(); // ------------------------------------ Fachada fachada = Fachada.getInstancia(); int tipoFormatoRelatorio = (Integer) getParametro("tipoFormatoRelatorio"); Integer anoMes = (Integer) getParametro("anoMes"); Cliente cliente = (Cliente) getParametro("cliente"); Collection<Integer> idsClientes = (Collection<Integer>) getParametro("idsClientes"); // valor de retorno byte[] retorno = null; // cole��o de beans do relat�rio List relatorioBeans = new ArrayList(); SistemaParametro sistemaParametro = fachada .pesquisarParametrosDoSistema(); Integer qtdFaturasSelecionadas = fachada .pesquisarDadosRelatorioFaturasAgrupadasCount(anoMes, cliente, idsClientes); if(qtdFaturasSelecionadas == null || qtdFaturasSelecionadas.intValue() == 0){ throw new ActionServletException( "atencao.pesquisa.nenhumresultado", null,""); } Collection colecaoFaturasAgrupadasRelatorio = fachada .pesquisarDadosRelatorioFaturasAgrupadas(anoMes, cliente, idsClientes); Iterator iColecaoRelatorioFaturasAgrupadas = colecaoFaturasAgrupadasRelatorio.iterator(); Collection colecaoRelatorioFaturasAgrupadas = new ArrayList(); while (iColecaoRelatorioFaturasAgrupadas.hasNext()){ RelatorioFaturasAgrupadasBean faturaItem = (RelatorioFaturasAgrupadasBean) iColecaoRelatorioFaturasAgrupadas.next(); if (faturaItem.getIndicadorContaHist() == 2){ colecaoRelatorioFaturasAgrupadas.add(faturaItem); } else if (faturaItem.getIndicadorContaHist() == 1){ fachada.atualizarIndicadorContaHistorico(faturaItem.getIdFaturaItem()); } } // relatorioBeans.addAll(colecaoFaturasAgrupadasRelatorio); relatorioBeans.addAll(colecaoRelatorioFaturasAgrupadas); // Par�metros do relat�rio Map parametros = new HashMap(); // adiciona os par�metros do relat�rio // adiciona o laudo da an�lise FiltroBairro filtroBairro = new FiltroBairro(); filtroBairro.adicionarCaminhoParaCarregamentoEntidade("municipio"); filtroBairro.adicionarParametro(new ParametroSimples(FiltroBairro.ID, sistemaParametro.getBairro().getId())); Collection colecaoBairros = fachada.pesquisar(filtroBairro, Bairro.class.getName()); Bairro bairro = (Bairro) Util.retonarObjetoDeColecao(colecaoBairros); String endereco = formatarEndereco(sistemaParametro, bairro); String telefone = "(" + bairro.getMunicipio().getDdd() + ") " + sistemaParametro.getNumeroTelefone(); parametros.put("imagem", sistemaParametro.getImagemRelatorio()); parametros.put("nomeAbreviadoEmpresa", sistemaParametro .getNomeAbreviadoEmpresa()); parametros.put("nomeEmpresa", sistemaParametro.getNomeEmpresa()); parametros.put("enderecoEmpresa", endereco); parametros.put("cgc", Util.formatarCnpj(sistemaParametro .getCnpjEmpresa())); parametros.put("inscricaoEstadual", sistemaParametro .getInscricaoEstadual()); parametros.put("telefoneEmpresa", telefone); parametros.put("telefoneContato", sistemaParametro .getNumero0800Empresa()); BigDecimal percentualAliquota = fachada.pesquisarPercentualAliquota(); parametros.put("percentualRetencao", percentualAliquota); String indicadorTotalizador = (String) getParametro("indicadorTotalizador"); parametros.put("indicadorTotalizador", indicadorTotalizador); // cria uma inst�ncia do dataSource do relat�rio RelatorioDataSource ds = new RelatorioDataSource(relatorioBeans); if (sistemaParametro.getCodigoEmpresaFebraban().equals( SistemaParametro.CODIGO_EMPRESA_FEBRABAN_COSANPA)) { retorno = gerarRelatorio( ConstantesRelatorios.RELATORIO_FATURAS_AGRUPADAS_COSANPA, parametros, ds, tipoFormatoRelatorio); } else if (indicadorTotalizador != null && indicadorTotalizador.equalsIgnoreCase("2")) { retorno = gerarRelatorio( ConstantesRelatorios.RELATORIO_FATURAS_AGRUPADAS_SINTETICO, parametros, ds, tipoFormatoRelatorio); } else { retorno = gerarRelatorio( ConstantesRelatorios.RELATORIO_FATURAS_AGRUPADAS, parametros, ds, tipoFormatoRelatorio); } // ------------------------------------ // Grava o relat�rio no sistema try { persistirRelatorioConcluido(retorno, Relatorio.RELATORIO_FATURAS_AGRUPADAS, idFuncionalidadeIniciada); } catch (ControladorException e) { e.printStackTrace(); throw new TarefaException("Erro ao gravar relat�rio no sistema", e); } // ------------------------------------ // retorna o relat�rio gerado return retorno; } private String formatarEndereco(SistemaParametro sistemaParametro, Bairro bairro) { String retorno = ""; Fachada fachada = Fachada.getInstancia(); FiltroLogradouro filtroLogradouro = new FiltroLogradouro(); filtroLogradouro .adicionarCaminhoParaCarregamentoEntidade("logradouroTipo"); filtroLogradouro .adicionarCaminhoParaCarregamentoEntidade("logradouroTitulo"); filtroLogradouro.adicionarParametro(new ParametroSimples( FiltroLogradouro.ID, sistemaParametro.getLogradouro().getId())); Collection colecaoLogradouros = fachada.pesquisar(filtroLogradouro, Logradouro.class.getName()); Logradouro logradouro = (Logradouro) Util .retonarObjetoDeColecao(colecaoLogradouros); retorno = logradouro.getDescricaoFormatada(); if (sistemaParametro.getNumeroImovel() != null) { retorno = retorno + ", " + sistemaParametro.getNumeroImovel(); } retorno = retorno + " - " + bairro.getNome(); return retorno; } @Override public int calcularTotalRegistrosRelatorio() { Fachada fachada = Fachada.getInstancia(); Integer anoMes = (Integer) getParametro("anoMes"); Cliente cliente = (Cliente) getParametro("cliente"); Collection<Integer> idsClientes = (Collection<Integer>) getParametro("idsClientes"); return fachada.pesquisarDadosRelatorioFaturasAgrupadasCount(anoMes, cliente, idsClientes); } public void agendarTarefaBatch() { AgendadorTarefas.agendarTarefa("RelatorioFaturasAgrupadas", this); } }