package gcom.relatorio.faturamento;
import gcom.batch.Relatorio;
import gcom.cadastro.sistemaparametro.SistemaParametro;
import gcom.fachada.Fachada;
import gcom.faturamento.debito.DebitoCobrado;
import gcom.faturamento.debito.DebitoCobradoHistorico;
import gcom.relatorio.ConstantesRelatorios;
import gcom.relatorio.RelatorioDataSource;
import gcom.relatorio.cadastro.imovel.RelatorioDebitoCobradoContaHelper;
import gcom.seguranca.acesso.usuario.Usuario;
import gcom.tarefa.TarefaException;
import gcom.tarefa.TarefaRelatorio;
import gcom.util.ControladorException;
import gcom.util.Util;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
/**
* Title: GCOM
* Description: Sistema de Gest�o Comercial
* Copyright: Copyright (c) 2004
* Company: COMPESA - Companhia Pernambucana de Saneamento
* @author Arthur Carvalho
* @version 1.0
*/
public class RelatorioDebitoCobradoConta extends TarefaRelatorio {
private static final long serialVersionUID = 1L;
public RelatorioDebitoCobradoConta(Usuario usuario) {
super(usuario, ConstantesRelatorios.RELATORIO_DEBITO_COBRADO_CONTA);
}
public RelatorioDebitoCobradoConta(Usuario usuario, String nomeRelatorio) {
super(usuario, nomeRelatorio);
}
@Override
public int calcularTotalRegistrosRelatorio() {
return 0;
}
private Collection inicializarBeanRelatorio(
Collection colecaoDados,int tipo) {
Collection retorno = new ArrayList();
Iterator iter = colecaoDados.iterator();
DebitoCobrado debitoCobrado = null;
DebitoCobradoHistorico debitoCobradoHistorico = null;
RelatorioDebitoCobradoContaBean bean = null;
while (iter.hasNext()) {
bean = new RelatorioDebitoCobradoContaBean();
if(tipo == 1){
debitoCobrado = (DebitoCobrado) iter.next();
bean.setTipoDebito(debitoCobrado.getDebitoTipo().getDescricao());
/**
* DATA: 05/07/2011
* autor: Adriana Muniz
* Altera��o para atender a debitos que n�o possuam ano m�s refer�ncia
* */
if(debitoCobrado.getAnoMesReferenciaDebito() != null)
bean.setMesAnoReferencia(Util.formatarMesAnoReferencia(debitoCobrado.getAnoMesReferenciaDebito()));
if(debitoCobrado.getAnoMesCobrancaDebito() != null)
bean.setMesAnoCobranca(Util.formatarMesAnoReferencia(debitoCobrado.getAnoMesCobrancaDebito()));
bean.setParcela(debitoCobrado.getNumeroPrestacaoDebito()+"/"+debitoCobrado.getNumeroTotalParcelasMenosBonus());
bean.setValorParcela(Util.formataBigDecimal(debitoCobrado.getValorPrestacao(),2,true));
}else if (tipo == 2){
debitoCobradoHistorico = (DebitoCobradoHistorico) iter.next();
bean.setTipoDebito(debitoCobradoHistorico.getDebitoTipo().getDescricao());
if(debitoCobrado.getAnoMesReferenciaDebito() != null)
bean.setMesAnoReferencia(Util.formatarMesAnoReferencia(debitoCobradoHistorico.getAnoMesReferenciaDebito()));
if(debitoCobrado.getAnoMesCobrancaDebito() != null)
bean.setMesAnoCobranca(Util.formatarMesAnoReferencia(debitoCobradoHistorico.getAnoMesCobrancaDebito()));
bean.setParcela(debitoCobradoHistorico.getNumeroPrestacaoDebito()+"/"+debitoCobradoHistorico.getNumeroTotalParcelasMenosBonus());
bean.setValorParcela(Util.formataBigDecimal(debitoCobradoHistorico.getValorPrestacao(),2,true));
}
retorno.add(bean);
}
return retorno;
}
@Override
public Object executar() throws TarefaException {
// ------------------------------------
Integer idFuncionalidadeIniciada = this.getIdFuncionalidadeIniciada();
// ------------------------------------
Fachada fachada = Fachada.getInstancia();
RelatorioDebitoCobradoContaHelper helper = (RelatorioDebitoCobradoContaHelper)getParametro("helper");
int tipoFormatoRelatorio = (Integer) getParametro("tipoFormatoRelatorio");
// valor de retorno
byte[] retorno = null;
// Par�metros do relat�rio
Map<String, String> parametros = new HashMap();
SistemaParametro sistemaParametro = fachada.pesquisarParametrosDoSistema();
parametros.put("imagem", sistemaParametro.getImagemRelatorio());
parametros.put("imagemConta", sistemaParametro.getImagemConta());
parametros.put("mesAno",helper.getMesAnoConta());
parametros.put("idImovel",helper.getIdImovel());
parametros.put("situacaoConta",helper.getSituacaoConta());
parametros.put("situacaoEsgoto",helper.getSituacaoLigacaoEsgoto());
parametros.put("situacaoAgua",helper.getSituacaoLigacaoAgua());
Collection colecaoBean = null;
if(helper.getColecaoDebitosCobrados() != null && !helper.getColecaoDebitosCobrados().isEmpty()){
colecaoBean = this.inicializarBeanRelatorio(helper.getColecaoDebitosCobrados(),1);
}else if (helper.getColecaoDebitosCobradosHistorico() != null && !helper.getColecaoDebitosCobradosHistorico().isEmpty()){
colecaoBean = this.inicializarBeanRelatorio(helper.getColecaoDebitosCobradosHistorico(),2);
}
RelatorioDataSource ds = new RelatorioDataSource((java.util.List) colecaoBean);
retorno = this.gerarRelatorio(ConstantesRelatorios.RELATORIO_DEBITO_COBRADO_CONTA,
parametros, ds, tipoFormatoRelatorio);
// ------------------------------------
// Grava o relat�rio no sistema
try {
persistirRelatorioConcluido(retorno, Relatorio.RELATORIO_DEBITO_COBRADO_CONTA,
idFuncionalidadeIniciada);
} catch (ControladorException e) {
e.printStackTrace();
throw new TarefaException("Erro ao gravar relat�rio no sistema", e);
}
// ------------------------------------
return retorno;
}
@Override
public void agendarTarefaBatch() {
}
}