package gcom.relatorio.arrecadacao;
import gcom.arrecadacao.Arrecadador;
import gcom.arrecadacao.ArrecadadorMovimento;
import gcom.arrecadacao.bean.ArrecadadorMovimentoItemHelper;
import gcom.batch.Relatorio;
import gcom.cadastro.sistemaparametro.SistemaParametro;
import gcom.fachada.Fachada;
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.ConstantesSistema;
import gcom.util.ControladorException;
import gcom.util.Util;
import gcom.util.agendadortarefas.AgendadorTarefas;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
/**
* <p>
* Title: GCOM
* </p>
* <p>
* Description: Sistema de Gest�o Comercial
* </p>
* <p>
* Copyright: Copyright (c) 2004
* </p>
* <p>
* Company: COMPESA - Companhia Pernambucana de Saneamento
* </p>
*
* @author not attributable
* @version 1.0
*/
public class RelatorioManterMovimentoArrecadador extends TarefaRelatorio {
private static final long serialVersionUID = 1L;
public RelatorioManterMovimentoArrecadador(Usuario usuario) {
super(usuario,
ConstantesRelatorios.RELATORIO_MOVIMENTO_ARRECADADOR_MANTER);
}
@Deprecated
public RelatorioManterMovimentoArrecadador() {
super(null, "");
}
/**
* < <Descri��o do m�todo>>
*
* @param bairros
* Description of the Parameter
* @param bairroParametros
* Description of the Parameter
* @return Descri��o do retorno
* @exception RelatorioVazioException
* Descri��o da exce��o
*/
public Object executar() throws TarefaException {
// ------------------------------------
Integer idFuncionalidadeIniciada = this.getIdFuncionalidadeIniciada();
// ------------------------------------
Arrecadador arrecadadorParametros = (Arrecadador) getParametro("arrecadadorParametros");
int tipoFormatoRelatorio = (Integer) getParametro("tipoFormatoRelatorio");
String codigoBanco = (String) getParametro("codigoBanco");
String codigoRemessa = (String) getParametro("codigoRemessa");
String descricaoIdentificacaoServico = (String) getParametro("descricaoIdentificacaoServico");
String numeroSequencialArquivo = (String) getParametro("numeroSequencialArquivo");
Date dataGeracaoInicio = null;
if (getParametro("dataGeracaoInicio") != null){
dataGeracaoInicio = (Date) getParametro("dataGeracaoInicio");
}
Date dataGeracaoFim = null;
if (getParametro("dataGeracaoFim") != null){
dataGeracaoFim = (Date) getParametro("dataGeracaoFim");
}
Date ultimaAlteracaoInicio = null;
if (getParametro("ultimaAlteracaoInicio") != null ){
ultimaAlteracaoInicio = (Date) getParametro("ultimaAlteracaoInicio");
}
Date ultimaAlteracaoFim = null;
if (getParametro("ultimaAlteracaoFim") != null){
ultimaAlteracaoFim = (Date) getParametro("ultimaAlteracaoFim");
}
String descricaoOcorrencia = (String) getParametro("descricaoOcorrencia");
String indicadorAceitacao = (String) getParametro("indicadorAceitacao");
String indicadorAbertoFechado = (String) getParametro("indicadorAbertoFechado");
// valor de retorno
byte[] retorno = null;
// cole��o de beans do relat�rio
List relatorioBeans = new ArrayList();
Fachada fachada = Fachada.getInstancia();
RelatorioManterMovimentoArrecadadorBean relatorioBean = null;
Collection colecaoArrecadadorMovimento = fachada.filtrarMovimentoArrecadadorParaRelatorio(
codigoBanco, codigoRemessa, descricaoIdentificacaoServico, numeroSequencialArquivo,
dataGeracaoInicio, dataGeracaoFim, ultimaAlteracaoInicio, ultimaAlteracaoFim,
descricaoOcorrencia, indicadorAceitacao, indicadorAbertoFechado);
// se a cole��o de par�metros da analise n�o for vazia
if (colecaoArrecadadorMovimento != null
&& !colecaoArrecadadorMovimento.isEmpty()) {
// coloca a cole��o de par�metros da analise no iterator
Iterator colecaoArrecadadorMovimentoIterator = colecaoArrecadadorMovimento
.iterator();
// la�o para criar a cole��o de par�metros da analise
while (colecaoArrecadadorMovimentoIterator.hasNext()) {
ArrecadadorMovimento arrecadadorMovimento = (ArrecadadorMovimento) colecaoArrecadadorMovimentoIterator.next();
// Obt�m a situa��o do movimento arrecadador
String situacaoArrecadadorMovimento = fachada.obterSituacaoArrecadadorMovimento(arrecadadorMovimento);
/*
* N�mero de registros em ocorr�ncia (n�mero de linhas da tabela
* ARRECADADOR_MOVIMENTO_ITEM com ARMV_ID = ARMV_ID da tabela
* ARRECADADOR_MOVIMENTO e AMIT_DSOCORRENCIA diferente de "OK")
*/
Integer numeroRegistrosOcorrencia = fachada.obterNumeroRegistrosEmOcorrenciaPorMovimentoArrecadadores(arrecadadorMovimento, ConstantesSistema.OK);
/*
* N�mero de registros que n�o foram aceitos (n�mero de linhas
* da tabela ARRECADADOR_MOVIMENTO_ITEM com ARMV_ID = ARMV_ID da
* tabela ARRECADADOR_MOVIMENTO e AMIT_ICACEITACAO igual a 2
* (N�O))
*/
Integer numeroRegistrosNaoAceitos = fachada.obterNumeroRegistrosNaoAceitosPorMovimentoArrecadadores(arrecadadorMovimento,ConstantesSistema.REGISTROS_NAO_ACEITOS);
// Pesquisa a cole��o de itens do movimento arrecadador
Collection colecaoItensArrecadadorMovimento = fachada.consultarItensMovimentoArrecadador(arrecadadorMovimento,null,null,null);
if (colecaoItensArrecadadorMovimento != null
&& !colecaoItensArrecadadorMovimento.isEmpty()) {
Collections.sort((List) colecaoItensArrecadadorMovimento,
new Comparator() {
public int compare(Object a, Object b) {
String chave1 = "";
if (((ArrecadadorMovimentoItemHelper) a)
.getIdentificacao() != null) {
chave1 = ((ArrecadadorMovimentoItemHelper) a)
.getIdentificacao();
}
String chave2 = "";
if (((ArrecadadorMovimentoItemHelper) b)
.getIdentificacao() != null) {
chave2 = ((ArrecadadorMovimentoItemHelper) b)
.getIdentificacao();
}
return chave1.compareTo(chave2);
}
});
Iterator colecaoItensArrecadadorMovimentoIterator = colecaoItensArrecadadorMovimento
.iterator();
while (colecaoItensArrecadadorMovimentoIterator.hasNext()) {
ArrecadadorMovimentoItemHelper arrecadadorMovimentoItemHelper = (ArrecadadorMovimentoItemHelper) colecaoItensArrecadadorMovimentoIterator.next();
String identificacaoClienteBanco = "";
String agencia = "";
String data = "";
String anoMes = "";
String valor = "";
String codigoRetono = "";
String codigoMovimento = "";
// Verifica o Tipo do Movimento Arrecador e seta os valores de acordo com cada tipo
if (arrecadadorMovimentoItemHelper.getRegistroHelperCodigoB() != null) {
identificacaoClienteBanco = arrecadadorMovimentoItemHelper.getRegistroHelperCodigoB().getIdClienteBanco();
agencia = arrecadadorMovimentoItemHelper.getRegistroHelperCodigoB().getAgenciaDebito();
data = Util.formatarData(arrecadadorMovimentoItemHelper.getRegistroHelperCodigoB().getDataOpcaoExclusao());
codigoMovimento = arrecadadorMovimentoItemHelper.getRegistroHelperCodigoB().getCodigoMovimento();
} else if (arrecadadorMovimentoItemHelper.getRegistroHelperCodigoC() != null) {
identificacaoClienteBanco = arrecadadorMovimentoItemHelper.getRegistroHelperCodigoC().getIdClienteBanco();
agencia = arrecadadorMovimentoItemHelper.getRegistroHelperCodigoC().getAgenciaDebito();
codigoMovimento = arrecadadorMovimentoItemHelper.getRegistroHelperCodigoC().getCodigoMovimento();
} else if (arrecadadorMovimentoItemHelper.getRegistroHelperCodigoE() != null) {
identificacaoClienteBanco = arrecadadorMovimentoItemHelper.getRegistroHelperCodigoE().getIdClienteBanco();
agencia = arrecadadorMovimentoItemHelper.getRegistroHelperCodigoE().getAgenciaDebito();
data = Util .formatarData(arrecadadorMovimentoItemHelper.getRegistroHelperCodigoE().getDataDebito());
anoMes = arrecadadorMovimentoItemHelper.getRegistroHelperCodigoE().getAnoMesReferenciaConta();
valor = arrecadadorMovimentoItemHelper.getRegistroHelperCodigoE().getValorDebito();
codigoMovimento = arrecadadorMovimentoItemHelper.getRegistroHelperCodigoE().getCodigoMovimento();
} else if (arrecadadorMovimentoItemHelper.getRegistroHelperCodigoF() != null) {
identificacaoClienteBanco = arrecadadorMovimentoItemHelper.getRegistroHelperCodigoF().getIdClienteBanco();
agencia = arrecadadorMovimentoItemHelper.getRegistroHelperCodigoF().getAgenciaDebito();
data = Util.formatarData(arrecadadorMovimentoItemHelper.getRegistroHelperCodigoF().getDataDebito());
anoMes = Util.formatarAnoMesParaMesAno(arrecadadorMovimentoItemHelper.getRegistroHelperCodigoF().getAnoMesReferenciaConta());
valor = arrecadadorMovimentoItemHelper.getRegistroHelperCodigoF().getValorDebito();
codigoRetono = arrecadadorMovimentoItemHelper.getRegistroHelperCodigoF().getCodigoRetorno();
codigoMovimento = arrecadadorMovimentoItemHelper.getRegistroHelperCodigoF().getCodigoMovimento();
} else if (arrecadadorMovimentoItemHelper.getRegistroHelperCodigoG() != null) {
//identificacaoClienteBanco = arrecadadorMovimentoItemHelper.getRegistroHelperCodigoG().getIdAgenciaContaDigito();
valor = arrecadadorMovimentoItemHelper.getRegistroHelperCodigoG().getValorRecebido();
}
// Cria o Bean setando para nulo os campos que n�o s�o
// referentes a pesquisa de reparcelamento para que o
// agrupamento fique de maneira correta
relatorioBean = new RelatorioManterMovimentoArrecadadorBean(
// Dados do Movimento:
// Id Movimento
arrecadadorMovimento.getId().toString(),
// C�digo Arrecadador
arrecadadorMovimento.getCodigoBanco() == null ? ""
: arrecadadorMovimento.getCodigoBanco()
.toString(),
// Nome Arrecadador
arrecadadorMovimento.getNomeBanco(),
// Remessa
arrecadadorMovimento.getCodigoRemessa() == null ? ""
: arrecadadorMovimento
.getCodigoRemessa().toString(),
// Servi�o
arrecadadorMovimento
.getDescricaoIdentificacaoServico(),
// Sequencial
arrecadadorMovimento
.getNumeroSequencialArquivo() == null ? ""
: arrecadadorMovimento
.getNumeroSequencialArquivo()
.toString(),
// Data Gera��o
arrecadadorMovimento.getDataGeracao() == null ? ""
: Util
.formatarData(arrecadadorMovimento
.getDataGeracao()),
// Data Processamento
arrecadadorMovimento.getUltimaAlteracao() == null ? ""
: Util
.formatarDataComHora(arrecadadorMovimento
.getUltimaAlteracao()),
// Situa��o
situacaoArrecadadorMovimento,
// Valor Movimento
arrecadadorMovimento.getValorTotalMovimento() == null ? ""
: Util
.formatarMoedaReal(arrecadadorMovimento
.getValorTotalMovimento()),
// Dados dos Itens
// Registro
arrecadadorMovimentoItemHelper
.getCodigoRegistro(),
// Identifica��o Im�vel/Cliente
arrecadadorMovimentoItemHelper
.getIdentificacao(),
// Tipo Pagamento
arrecadadorMovimentoItemHelper
.getTipoPagamento(),
// Identifica��o Cliente Banco
identificacaoClienteBanco,
// Data Pagamento
arrecadadorMovimentoItemHelper
.getRegistroHelperCodigoG() == null ? ""
: Util
.formatarData(arrecadadorMovimentoItemHelper
.getRegistroHelperCodigoG()
.getDataPagamento()),
// Data Prevista
arrecadadorMovimentoItemHelper
.getRegistroHelperCodigoG() == null ? ""
: Util
.formatarData(arrecadadorMovimentoItemHelper
.getRegistroHelperCodigoG()
.getDataPrevistaCredito()),
// C�digo Barras
arrecadadorMovimentoItemHelper
.getRegistroHelperCodigoG() == null ? ""
: arrecadadorMovimentoItemHelper
.getRegistroHelperCodigoG()
.getCodigoBarras(),
// Forma Arrecada��o
arrecadadorMovimentoItemHelper
.getRegistroHelperCodigoG() == null ? ""
: arrecadadorMovimentoItemHelper
.getRegistroHelperCodigoG()
.getFormaArrecadacao(),
// Ag�ncia
agencia,
// Data
data,
// Ano/M�s
anoMes,
// Valor
valor,
// C�digo de Retorno
codigoRetono,
// C�digo Movimento
codigoMovimento,
// Ocorr�ncia
arrecadadorMovimentoItemHelper.getOcorrencia(),
// Indicador Aceita��o
arrecadadorMovimentoItemHelper
.getDescricaoIndicadorAceitacao(),
// Dados do Movimento Presentes no Rodap�
// Total de Registros
arrecadadorMovimento
.getNumeroRegistrosMovimento() == null ? ""
: arrecadadorMovimento
.getNumeroRegistrosMovimento()
.toString(),
// N�mero de Movimentos em Ocorr�ncia
numeroRegistrosOcorrencia == null ? ""
: numeroRegistrosOcorrencia.toString(),
// N�mero de Movimentos N�o Aceitos
numeroRegistrosNaoAceitos == null ? ""
: numeroRegistrosNaoAceitos.toString());
// adiciona o bean a cole��o
relatorioBeans.add(relatorioBean);
}
}
}
}
// Par�metros do relat�rio
Map parametros = new HashMap();
// adiciona os par�metros do relat�rio
// adiciona o laudo da an�lise
SistemaParametro sistemaParametro = fachada
.pesquisarParametrosDoSistema();
parametros.put("imagem", sistemaParametro.getImagemRelatorio());
// Arrecadador
if (arrecadadorParametros != null) {
parametros.put("idArrecadador", arrecadadorParametros
.getCodigoAgente().toString());
parametros.put("nomeArrecadador", arrecadadorParametros
.getCliente().getNome());
} else {
parametros.put("idArrecadador", "");
parametros.put("nomeArrecadador", "");
}
// Remessa
String remessa = "";
if (codigoRemessa != null) {
if (codigoRemessa.equals("" + ConstantesSistema.CODIGO_ENVIO)) {
remessa = "ENVIO";
} else if (codigoRemessa.equals("" + ConstantesSistema.CODIGO_RETORNO)) {
remessa = "RETORNO";
}
}
parametros.put("remessa", remessa);
// Identifica��o Servi�o
String identificaoServico = "";
if (descricaoIdentificacaoServico != null
&& !descricaoIdentificacaoServico.equals("")) {
if (descricaoIdentificacaoServico.equals(
ConstantesSistema.DEBITO_AUTOMATICO)) {
identificaoServico = "D�BITO AUTOMATICO";
} else if (descricaoIdentificacaoServico.equals(
ConstantesSistema.CODIGO_DE_BARRAS)) {
identificaoServico = "C�DIGO DE BARRAS";
}
}
parametros.put("identificaoServico", identificaoServico);
// Sequencial
if (numeroSequencialArquivo != null) {
parametros.put("sequencial", numeroSequencialArquivo);
} else {
parametros.put("sequencial", "");
}
// Per�odo Gera��o
if (dataGeracaoInicio != null) {
parametros.put("periodoGeracaoInicial", Util.formatarData(dataGeracaoInicio));
} else {
parametros.put("periodoGeracaoInicial", null);
}
if (dataGeracaoFim != null) {
parametros.put("periodoGeracaoFinal", Util.formatarData(dataGeracaoFim));
} else {
parametros.put("periodoGeracaoFinal", null);
}
// Per�odo Processamento
if (ultimaAlteracaoInicio != null) {
parametros.put("periodoProcessamentoInicial", Util
.formatarData(ultimaAlteracaoInicio));
} else {
parametros.put("periodoProcessamentoInicial", null);
}
if (ultimaAlteracaoFim != null) {
parametros.put("periodoProcessamentoFinal", Util
.formatarData(ultimaAlteracaoFim));
} else {
parametros.put("periodoProcessamentoFinal", null);
}
// �tens em Ocorr�ncia
String itemEmOcorrenciaParametros = "";
if (descricaoOcorrencia != null && !descricaoOcorrencia.equals("")) {
if (descricaoOcorrencia.equals("" + ConstantesSistema.COM_ITENS)) {
itemEmOcorrenciaParametros = "COM �TENS EM OCORR�NCIA";
} else if (descricaoOcorrencia.equals("" + ConstantesSistema.SEM_ITENS)) {
itemEmOcorrenciaParametros = "SEM �TENS EM OCORR�NCIA";
}
}
parametros.put("itensOcorrencia", itemEmOcorrenciaParametros);
// �tens N�o Aceitos
String itemNaoAceitoParametros = "";
if (indicadorAceitacao != null && !indicadorAceitacao.equals("")) {
if (indicadorAceitacao.equals("" + ConstantesSistema.COM_ITENS)) {
itemNaoAceitoParametros = "COM �TENS N�O ACEITOS";
} else if (indicadorAceitacao
.equals("" + ConstantesSistema.SEM_ITENS)) {
itemNaoAceitoParametros = "SEM �TENS N�O ACEITOS";
}
}
parametros.put("itensNaoAceitos", itemNaoAceitoParametros);
// Movimentos Abertos/Fechados
String movimentoAbertoFechadoParametros = "";
if (indicadorAbertoFechado != null
&& !indicadorAbertoFechado.equals("")) {
if (indicadorAbertoFechado.equals(""
+ ConstantesSistema.MOVIMENTO_ABERTO)) {
movimentoAbertoFechadoParametros = "COM �TENS N�O ACEITOS";
} else if (indicadorAbertoFechado.equals(""
+ ConstantesSistema.MOVIMENTO_FECHADO)) {
movimentoAbertoFechadoParametros = "SEM �TENS N�O ACEITOS";
}
}
parametros.put("movimentosAbertosFechados", movimentoAbertoFechadoParametros);
// cria uma inst�ncia do dataSource do relat�rio
RelatorioDataSource ds = new RelatorioDataSource(relatorioBeans);
retorno = this.gerarRelatorio(
ConstantesRelatorios.RELATORIO_MOVIMENTO_ARRECADADOR_MANTER,
parametros, ds, tipoFormatoRelatorio);
// ------------------------------------
// Grava o relat�rio no sistema
try {
persistirRelatorioConcluido(retorno,
Relatorio.MANTER_MOVIMENTO_ARRECADADOR,
idFuncionalidadeIniciada);
} catch (ControladorException e) {
e.printStackTrace();
throw new TarefaException("Erro ao gravar relat�rio no sistema", e);
}
// ------------------------------------
// retorna o relat�rio gerado
return retorno;
}
@Override
public int calcularTotalRegistrosRelatorio() {
int retorno = 0;
String codigoBanco = (String) getParametro("codigoBanco");
String codigoRemessa = (String) getParametro("codigoRemessa");
String descricaoIdentificacaoServico = (String) getParametro("descricaoIdentificacaoServico");
String numeroSequencialArquivo = (String) getParametro("numeroSequencialArquivo");
Date dataGeracaoInicio = null;
if (getParametro("dataGeracaoInicio") != null){
dataGeracaoInicio = (Date) getParametro("dataGeracaoInicio");
}
Date dataGeracaoFim = null;
if (getParametro("dataGeracaoFim") != null){
dataGeracaoFim = (Date) getParametro("dataGeracaoFim");
}
Date ultimaAlteracaoInicio = null;
if (getParametro("ultimaAlteracaoInicio") != null ){
ultimaAlteracaoInicio = (Date) getParametro("ultimaAlteracaoInicio");
}
Date ultimaAlteracaoFim = null;
if (getParametro("ultimaAlteracaoFim") != null){
ultimaAlteracaoFim = (Date) getParametro("ultimaAlteracaoFim");
}
String descricaoOcorrencia = (String) getParametro("descricaoOcorrencia");
String indicadorAceitacao = (String) getParametro("indicadorAceitacao");
String indicadorAbertoFechado = (String) getParametro("indicadorAbertoFechado");
retorno = Fachada.getInstancia().filtrarMovimentoArrecadadoresRelatorioCount(codigoBanco, codigoRemessa, descricaoIdentificacaoServico, numeroSequencialArquivo, dataGeracaoInicio, dataGeracaoFim, ultimaAlteracaoInicio, ultimaAlteracaoFim, descricaoOcorrencia, indicadorAceitacao, indicadorAbertoFechado);
// retorno = Fachada
// .getInstancia()
// .totalRegistrosPesquisa(
// (FiltroArrecadadorMovimento) getParametro("filtroArrecadadorMovimento"),
// ArrecadadorMovimento.class.getName());
return retorno;
}
@Override
public void agendarTarefaBatch() {
AgendadorTarefas.agendarTarefa("RelatorioManterMovimentoArrecadador",
this);
}
}