package gcom.relatorio.cobranca;
import gcom.cadastro.sistemaparametro.FiltroSistemaParametro;
import gcom.cadastro.sistemaparametro.SistemaParametro;
import gcom.cobranca.FiltroDocumentosReceberFaixaDiasVencidos;
import gcom.fachada.Fachada;
import gcom.financeiro.FaixaDocumentosAReceber;
import gcom.gui.ActionServletException;
import gcom.relatorio.ConstantesRelatorios;
import gcom.relatorio.RelatorioDataSource;
import gcom.seguranca.acesso.usuario.Usuario;
import gcom.tarefa.TarefaException;
import gcom.tarefa.TarefaRelatorio;
import gcom.util.Util;
import gcom.util.agendadortarefas.AgendadorTarefas;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class RelatorioAnalisePerdasCreditos extends TarefaRelatorio {
private static final long serialVersionUID = 1L;
public RelatorioAnalisePerdasCreditos(Usuario usuario) {
super(usuario, ConstantesRelatorios.RELATORIO_ANALISE_PERDAS_CREDITOS);
}
@Override
public Object executar() throws TarefaException {
int tipoFormatoRelatorio = (Integer) getParametro("tipoFormatoRelatorio");
String mesAno = (String) getParametro("mesAno");
//valor de retorno
byte[] retorno = null;
Fachada fachada = Fachada.getInstancia();
int maiorAnoMesExistente = fachada.maiorAnoMesReferenciaDocumentosAReceberResumo();
// Par�metros do relat�rio
Map parametros = new HashMap();
// adiciona os par�metros do relat�rio
// adiciona o laudo da an�lise
FiltroSistemaParametro filtroSistemaParametro = new FiltroSistemaParametro();
Collection colecaoSistemaParametro = fachada.pesquisar(filtroSistemaParametro,SistemaParametro.class.getName());
SistemaParametro sistemaParametro = (SistemaParametro) colecaoSistemaParametro.iterator().next();
parametros.put("imagem", sistemaParametro.getImagemRelatorio());
parametros.put("mesAnoReferencia",mesAno.substring(4,6)+"/"+mesAno.substring(0,4));
List<FaixaDocumentosAReceber> faixas = new ArrayList<FaixaDocumentosAReceber>();
Collection colecao = fachada.pesquisar(new FiltroDocumentosReceberFaixaDiasVencidos(FiltroDocumentosReceberFaixaDiasVencidos.ID), FaixaDocumentosAReceber.class.getName());
faixas.addAll(colecao);
if(Integer.parseInt(mesAno) > maiorAnoMesExistente){
throw new ActionServletException("atencao.mes.ano.superior");
}
if(faixas.size() != 3){
throw new ActionServletException("atencao.conteudo.tabela.faixa.invalido");
}
RelatorioAnalisePerdasCreditosBean bean = fachada.gerarRelatorioAnalisePerdasCreditos(mesAno);
if(bean == null){
throw new ActionServletException("atencao.pesquisa.sem.resultado");
}
List<RelatorioAnalisePerdasCreditosBean> listaParaDS = new ArrayList<RelatorioAnalisePerdasCreditosBean>();
listaParaDS.add(bean);
RelatorioDataSource ds = new RelatorioDataSource(listaParaDS);
String primeiraFaixaTexto = "";
if(faixas.get(0).getValorFaixaInicial().intValue() != 0){
primeiraFaixaTexto = "Entre R$ " + Util.formatarMoedaReal(faixas.get(0).getValorFaixaInicial()) + " e R$ "+Util.formatarMoedaReal(faixas.get(0).getValorFaixaFinal()) ;
}else{
primeiraFaixaTexto = "At� R$ " + Util.formatarMoedaReal(faixas.get(0).getValorFaixaFinal());
}
parametros.put("primeiraFaixaVencidosSuperiorSeisMeses", bean.getPrimeiraFaixaVencidosSuperiorSeisMeses());
parametros.put("primeiraFaixaVencidosAteSeisMeses",bean.getPrimeiraFaixaVencidosAteSeisMeses());
parametros.put("primeiraFaixaTotal",bean.getPrimeiraFaixaTotal());
parametros.put("primeiraFaixaVencer",bean.getPrimeiraFaixaVencer());
parametros.put("primeiraFaixaTexto",primeiraFaixaTexto);
String segundaFaixaTexto = "Entre R$ " + Util.formatarMoedaReal(faixas.get(1).getValorFaixaInicial()) + " e R$ "+Util.formatarMoedaReal(faixas.get(1).getValorFaixaFinal()) ;
parametros.put("segundaFaixaVencidosAteDoseMeses",bean.getSegundaFaixaVencidosAteDoseMeses());
parametros.put("segundaFaixaVencidosSuperiorDoseMeses",bean.getSegundaFaixaVencidosSuperiorDoseMeses());
parametros.put("segundaFaixaVencer",bean.getSegundaFaixaVencer());
parametros.put("segundaFaixaTotal",bean.getSegundaFaixaTotal());
parametros.put("segundaFaixaTexto",segundaFaixaTexto);
String terceiraFaixaTexto = "";
if(faixas.get(2).getValorFaixaFinal().precision() <= 25){
terceiraFaixaTexto = "Entre R$ " + Util.formatarMoedaReal(faixas.get(2).getValorFaixaInicial()) + " e R$ "+Util.formatarMoedaReal(faixas.get(2).getValorFaixaFinal());
}else{
terceiraFaixaTexto = "Superior a R$ " + Util.formatarMoedaReal(faixas.get(2).getValorFaixaInicial());
}
parametros.put("terceiraFaixaVencidosAteDoseMeses",bean.getTerceiraFaixaVencidosAteDoseMeses());
parametros.put("terceiraFaixaVencidosSuperiorDoseMeses",bean.getTerceiraFaixaVencidosSuperiorDoseMeses());
parametros.put("terceiraFaixaVencer",bean.getTerceiraFaixaVencer());
parametros.put("terceiraFaixaTotal",bean.getTerceiraFaixaTotal());
parametros.put("terceiraFaixaTexto",terceiraFaixaTexto);
retorno = gerarRelatorio(ConstantesRelatorios.RELATORIO_ANALISE_PERDAS_CREDITOS,
parametros, ds, tipoFormatoRelatorio);
// retorna o relat�rio gerado
return retorno;
}
@Override
public int calcularTotalRegistrosRelatorio() {
int retorno = 1;
return retorno;
}
@Override
public void agendarTarefaBatch() {
AgendadorTarefas.agendarTarefa("RelatorioAnalisePerdasCreditos",
this);
}
}