package gcom.relatorio.faturamento;
import gcom.atendimentopublico.ligacaoagua.LigacaoAguaSituacao;
import gcom.atendimentopublico.ligacaoesgoto.LigacaoEsgotoSituacao;
import gcom.cadastro.cliente.EsferaPoder;
import gcom.cadastro.imovel.Categoria;
import gcom.cadastro.imovel.ImovelPerfil;
import gcom.cadastro.sistemaparametro.SistemaParametro;
import gcom.fachada.Fachada;
import gcom.gerencial.bean.InformarDadosGeracaoRelatorioConsultaHelper;
import gcom.gerencial.bean.ResumoFaturamentoSimulacaoDetalheHelper;
import gcom.relatorio.ConstantesRelatorios;
import gcom.relatorio.RelatorioDataSource;
import gcom.relatorio.RelatorioVazioException;
import gcom.relatorio.gerencial.faturamento.RelatorioAnaliseFaturamentoBean;
import gcom.seguranca.acesso.usuario.Usuario;
import gcom.tarefa.TarefaException;
import gcom.tarefa.TarefaRelatorio;
import gcom.util.ConstantesSistema;
import gcom.util.Util;
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;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
/**
* classe respons�vel por criar o relat�rio de bairro manter de �gua
*
* @author Fernanda Paiva
* @created 11 de Julho de 2005
*/
public class RelatorioAnaliseFaturamento extends TarefaRelatorio {
private static final long serialVersionUID = 1L;
public RelatorioAnaliseFaturamento(Usuario usuario) {
super(usuario, ConstantesRelatorios.RELATORIO_ANALISE_FATURAMENTO);
}
/**
* < <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
*/
public Object executar() throws TarefaException {
Fachada fachada = Fachada.getInstancia();
//List retornoConsulta = (List) getParametro("colecaoAnaliseFaturamento");
Integer tipoAnalise = (Integer) getParametro("tipoAnalise");
String descricao = (String) getParametro("descricao");
String mesAnoFaturamento = (String) getParametro("mesAnoFaturamento");
int tipoFormatoRelatorio = (Integer) getParametro("tipoFormatoRelatorio");
InformarDadosGeracaoRelatorioConsultaHelper informarDadosGeracaoRelatorioConsultaHelper
= (InformarDadosGeracaoRelatorioConsultaHelper) getParametro("informarDadosGeracaoRelatorioConsultaHelper");
//----------------------------------------------------------------------------------------------------------------
// Alterado por : Yara T. Souza.
// Data : 26/08/2008
//----------------------------------------------------------------------------------------------------------------
String localidade = (String) getParametro("localidade");
String gerenciaRegional = (String) getParametro("gerenciaRegional");
String unidadeNegocio = (String) getParametro("unidadeNegocio");
String setorComercial = (String) getParametro("setorComercial");
String quadra = (String) getParametro("quadra");
String rota = (String) getParametro("rota");
String grupoFaturamento = (String) getParametro("grupoFaturamento");
String tipoQuebra = (String) getParametro("tipoQuebra");
Collection colecaoPerfilImovel = (Collection) getParametro("colecaoPerfilImovel");
Collection colecaoLigacaoAgua = (Collection) getParametro("colecaoLigacaoAgua");
Collection colecaoLigacaoEsgoto = (Collection) getParametro("colecaoLigacaoEsgoto");
Collection colecaoCategoria = (Collection) getParametro("colecaoCategoria");
Collection colecaoEsferaPoder = (Collection) getParametro("colecaoEsferaPoder");
//----------------------------------------------------------------------------------
// valor de retorno
byte[] retorno = null;
// cole��o de beans do relat�rio
List relatorioBeans = new ArrayList();
RelatorioAnaliseFaturamentoBean relatorioBean = null;
BigDecimal valorTotalConta = BigDecimal.ZERO;
Integer quantidadeConta = 0;
Integer quantidadeEconomia = 0;
Integer volumeConsumidoAgua = 0;
Integer volumeColetadoEsgoto = 0;
BigDecimal valorFaturadoAgua = BigDecimal.ZERO;
BigDecimal valorFaturadoEsgoto = BigDecimal.ZERO;
BigDecimal debitosCobrados = BigDecimal.ZERO;
BigDecimal creditosRealizados = BigDecimal.ZERO;
BigDecimal valorImpostos = BigDecimal.ZERO;
BigDecimal totalCobrado = BigDecimal.ZERO;
String idQuebra = null;
List<Object[]> retornoConsulta =
fachada.consultarResumoAnaliseFaturamentoRelatorio(informarDadosGeracaoRelatorioConsultaHelper);
if( retornoConsulta != null && !retornoConsulta.equals("")
&& retornoConsulta.size() != 0 ){
for (Object[] retornoObject : retornoConsulta) {
valorTotalConta = BigDecimal.ZERO;
if((Integer)retornoObject[0] != null)
{
quantidadeConta = ((Integer)retornoObject[0]);
}
if((Integer)retornoObject[1] != null)
{
quantidadeEconomia = ((Integer)retornoObject[1]);
}
if((Integer)retornoObject[2] != null)
{
volumeConsumidoAgua = ((Integer)retornoObject[2]);
}
if((BigDecimal)retornoObject[3] != null)
{
valorFaturadoAgua = (BigDecimal)retornoObject[3];
valorTotalConta = valorTotalConta.add((BigDecimal)retornoObject[3]);
}
if((Integer)retornoObject[4] != null)
{
volumeColetadoEsgoto = ((Integer)retornoObject[4]);
}
if((BigDecimal)retornoObject[5] != null)
{
valorFaturadoEsgoto = (BigDecimal)retornoObject[5];
valorTotalConta = valorTotalConta.add((BigDecimal)retornoObject[5]);
}
if((BigDecimal)retornoObject[7] != null)
{
debitosCobrados = (BigDecimal)retornoObject[7];
valorTotalConta = valorTotalConta.add((BigDecimal)retornoObject[7]);
}
if((BigDecimal)retornoObject[6] != null)
{
creditosRealizados = (BigDecimal)retornoObject[6];
valorTotalConta = valorTotalConta.subtract((BigDecimal)retornoObject[6]);
}
if((BigDecimal)retornoObject[8] != null)
{
valorImpostos = (BigDecimal)retornoObject[8];
valorTotalConta = valorTotalConta.subtract((BigDecimal)retornoObject[8]);
}
valorTotalConta = valorTotalConta.setScale(2, BigDecimal.ROUND_HALF_UP);
if(valorTotalConta.compareTo(new BigDecimal ("0.00")) == 0)
{
totalCobrado = BigDecimal.ZERO;
}
else
{
totalCobrado = valorTotalConta;
}
if(retornoObject[9] != null)
{
idQuebra = (String)retornoObject[9];
}
String agrupamento = this.obterDescricaoDoAgrupamento(informarDadosGeracaoRelatorioConsultaHelper,
informarDadosGeracaoRelatorioConsultaHelper.getOpcaoTotalizacao().toString());
relatorioBean = new RelatorioAnaliseFaturamentoBean(""
+ descricao, quantidadeConta, quantidadeEconomia, volumeConsumidoAgua,
valorFaturadoAgua, volumeColetadoEsgoto, valorFaturadoEsgoto,
debitosCobrados, creditosRealizados, totalCobrado, valorImpostos,
idQuebra,agrupamento);
//Colecao para com os dados do subrelatorio
Collection<ResumoFaturamentoSimulacaoDetalheHelper> colecaoDetalhes
= new ArrayList<ResumoFaturamentoSimulacaoDetalheHelper>();
//Credito
informarDadosGeracaoRelatorioConsultaHelper.setTipoDetalhe("CREDITO");
Collection<Object[]> retornoConsultaDetalheCredito =
fachada.consultarResumoAnaliseFaturamentoDetalhe(informarDadosGeracaoRelatorioConsultaHelper);
for (Object[] dados : retornoConsultaDetalheCredito) {
ResumoFaturamentoSimulacaoDetalheHelper helper
= new ResumoFaturamentoSimulacaoDetalheHelper(
(String)dados[0],
Util.formatarMoedaReal((BigDecimal) dados[1]),
"");
colecaoDetalhes.add(helper);
}
//Debito
informarDadosGeracaoRelatorioConsultaHelper.setTipoDetalhe("DEBITO");
Collection<Object[]> retornoConsultaDetalheDebito =
fachada.consultarResumoAnaliseFaturamentoDetalhe(informarDadosGeracaoRelatorioConsultaHelper);
for (Object[] dados : retornoConsultaDetalheDebito) {
ResumoFaturamentoSimulacaoDetalheHelper helper
= new ResumoFaturamentoSimulacaoDetalheHelper(
(String)dados[0],
"",
Util.formatarMoedaReal((BigDecimal) dados[1]));
colecaoDetalhes.add(helper);
}
relatorioBean.setArrayDetalhesJRDetail(
new JRBeanCollectionDataSource(colecaoDetalhes));
// 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());
parametros.put("mesAnoFaturamento", mesAnoFaturamento);
String descricaoAnalise = "";
if(tipoAnalise == 1)
{
descricaoAnalise = "REAL";
}
else
{
descricaoAnalise = "SIMULADO";
}
parametros.put("tipoAnalise", descricaoAnalise);
//----------------------------------------------------------------------------------------------------------------
// Alterado por : Yara T. Souza.
// Data : 26/08/2008
//----------------------------------------------------------------------------------------------------------------
parametros.put("localidade", localidade);
parametros.put("gerenciaRegional", gerenciaRegional);
parametros.put("unidadeNegocio", unidadeNegocio);
parametros.put("setorComercial", setorComercial);
parametros.put("quadra", quadra);
parametros.put("rota", rota);
parametros.put("grupoFaturamento", grupoFaturamento);
if (colecaoPerfilImovel != null) {
String imoveisPerfil = "";
Iterator itt= colecaoPerfilImovel.iterator();
boolean primeiro = true;
while(itt.hasNext()){
ImovelPerfil imovelPerfil = (ImovelPerfil)itt.next();
if(imovelPerfil!=null){
if (primeiro) {
imoveisPerfil = imoveisPerfil + imovelPerfil.getDescricao();
primeiro = false;
} else {
imoveisPerfil = imoveisPerfil + ", " + imovelPerfil.getDescricao();
}
}
}
parametros.put("imovelPerfil", imoveisPerfil);
} else {
parametros.put("imovelPerfil", "TODOS");
}
if (colecaoLigacaoAgua != null) {
String ligacoesAguaSituacao = "";
Iterator itt= colecaoLigacaoAgua.iterator();
boolean primeiro = true;
while(itt.hasNext()){
LigacaoAguaSituacao ligacaoAguaSituacao = (LigacaoAguaSituacao)itt.next();
if(ligacaoAguaSituacao!=null){
if (primeiro) {
ligacoesAguaSituacao = ligacoesAguaSituacao + ligacaoAguaSituacao.getDescricao();
primeiro = false;
} else {
ligacoesAguaSituacao = ligacoesAguaSituacao + ", " + ligacaoAguaSituacao.getDescricao();
}
}
}
parametros.put("ligacaoAguaSituacao", ligacoesAguaSituacao);
} else {
parametros.put("ligacaoAguaSituacao", "TODOS");
}
if (colecaoLigacaoEsgoto != null) {
String ligacoesEsgotoSituacao = "";
Iterator itt= colecaoLigacaoEsgoto.iterator();
boolean primeiro = true;
while(itt.hasNext()){
LigacaoEsgotoSituacao ligacaoEsgotoSituacao = (LigacaoEsgotoSituacao)itt.next();
if(ligacaoEsgotoSituacao!=null){
if (primeiro) {
ligacoesEsgotoSituacao = ligacoesEsgotoSituacao + ligacaoEsgotoSituacao.getDescricao();
primeiro = false;
} else {
ligacoesEsgotoSituacao = ligacoesEsgotoSituacao + ", " + ligacaoEsgotoSituacao.getDescricao();
}
}
}
parametros.put("ligacaoEsgotoSituacao", ligacoesEsgotoSituacao);
} else {
parametros.put("ligacaoEsgotoSituacao", "TODOS");
}
if (colecaoCategoria != null) {
String categorias = "";
Iterator itt= colecaoCategoria.iterator();
boolean primeiro = true;
while(itt.hasNext()){
Categoria categoria = (Categoria)itt.next();
if(categoria!=null){
if (primeiro) {
categorias = categorias + categoria.getDescricao();
primeiro = false;
} else {
categorias = categorias + ", " + categoria.getDescricao();
}
}
}
parametros.put("categoria", categorias);
} else {
parametros.put("categoria", "TODOS");
}
if (colecaoEsferaPoder != null) {
String esferasPoder = "";
Iterator itt= colecaoEsferaPoder.iterator();
boolean primeiro = true;
while(itt.hasNext()){
EsferaPoder esferaPoder = (EsferaPoder)itt.next();
if(esferaPoder!=null){
if (primeiro) {
esferasPoder = esferasPoder + esferaPoder.getDescricao();
primeiro = false;
} else {
esferasPoder = esferasPoder + ", " + esferaPoder.getDescricao();
}
}
}
parametros.put("esferaPoder", esferasPoder);
} else {
parametros.put("esferaPoder", "TODOS");
}
if(tipoQuebra!=null && !tipoQuebra.equals("")){
parametros.put("tipoQuebra", tipoQuebra);
}
parametros.put("opcaoTotalizacao",
informarDadosGeracaoRelatorioConsultaHelper.getOpcaoTotalizacao().toString());
//----------------------------------------------------------------------------------------
// cria uma inst�ncia do dataSource do relat�rio
RelatorioDataSource ds = new RelatorioDataSource(relatorioBeans);
retorno = gerarRelatorio(
ConstantesRelatorios.RELATORIO_ANALISE_FATURAMENTO, parametros,
ds, tipoFormatoRelatorio);
// retorna o relat�rio gerado
return retorno;
}
private String obterDescricaoDoAgrupamento(InformarDadosGeracaoRelatorioConsultaHelper
informarDadosGeracaoRelatorioConsultaHelper, String opcaoTotalizacao) {
String retorno = "";
if(opcaoTotalizacao.equals(ConstantesSistema.CODIGO_ESTADO+"")
||opcaoTotalizacao.equals(ConstantesSistema.CODIGO_ESTADO_GERENCIA_REGIONAL+"")
||opcaoTotalizacao.equals(ConstantesSistema.CODIGO_ESTADO_UNIDADE_NEGOCIO+"")
||opcaoTotalizacao.equals(ConstantesSistema.CODIGO_ESTADO_LOCALIDADE+"")
||opcaoTotalizacao.equals(ConstantesSistema.CODIGO_ESTADO_GRUPO_FATURAMENTO+"")
||opcaoTotalizacao.equals(ConstantesSistema.CODIGO_ESTADO_MUNICIPIO+"")){
retorno = "ESTADO";
}else if(opcaoTotalizacao.equals(ConstantesSistema.CODIGO_ESTADO_GRUPO_FATURAMENTO+"")
||opcaoTotalizacao.equals(ConstantesSistema.CODIGO_GRUPO_FATURAMENTO+"")){
retorno = informarDadosGeracaoRelatorioConsultaHelper
.getFaturamentoGrupo().getDescricao();
}else if(opcaoTotalizacao.equals(ConstantesSistema.CODIGO_GERENCIA_REGIONAL_UNIDADE_NEGOCIO+"")
||opcaoTotalizacao.equals(ConstantesSistema.CODIGO_GERENCIA_REGIONAL_LOCALIDADE+"")){
retorno = informarDadosGeracaoRelatorioConsultaHelper
.getGerenciaRegional().getNome();
}else if(opcaoTotalizacao.equals(ConstantesSistema.CODIGO_UNIDADE_NEGOCIO+"")
||opcaoTotalizacao.equals(ConstantesSistema.CODIGO_UNIDADE_NEGOCIO_LOCALIDADE+"")
||opcaoTotalizacao.equals(ConstantesSistema.CODIGO_UNIDADE_NEGOCIO_SETOR_COMERCIAL+"")){
retorno = informarDadosGeracaoRelatorioConsultaHelper
.getUnidadeNegocio().getNome();
}else if(opcaoTotalizacao.equals(ConstantesSistema.CODIGO_LOCALIDADE_SETOR_COMERCIAL+"")
||opcaoTotalizacao.equals(ConstantesSistema.CODIGO_SETOR_COMERCIAL_QUADRA+"")){
retorno = informarDadosGeracaoRelatorioConsultaHelper
.getLocalidade().getDescricao();
}else if(opcaoTotalizacao.equals(ConstantesSistema.CODIGO_SETOR_COMERCIAL_QUADRA+"")){
retorno = informarDadosGeracaoRelatorioConsultaHelper
.getSetorComercial().getDescricao();
}
return retorno;
}
@Override
public int calcularTotalRegistrosRelatorio() {
return 0;
}
public void agendarTarefaBatch() {
}
}