package gcom.cobranca;
import gcom.util.ControladorException;
import gcom.util.ErroRepositorioException;
import gcom.util.Util;
import gcom.util.ZipUtil;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.math.BigDecimal;
import java.util.Collection;
import java.util.Date;
import java.util.Iterator;
import java.util.zip.ZipOutputStream;
import javax.ejb.SessionBean;
import br.com.danhil.BarCode.Interleaved2of5;
/**
* Controlador Cobranca COSANPA
*
* @author Raphael Rossiter
* @date 24/04/2009
*/
public class ControladorCobrancaCOSANPASEJB extends ControladorCobranca implements SessionBean {
private static final long serialVersionUID = 1L;
//==============================================================================================================
// M�TODOS EXCLUSIVOS DA COSANPA
//==============================================================================================================
/**
*
* Este caso de uso gera os avisos de cobran�a dos documentos de cobran�a
*
* [UC0575] Emitir Aviso de Cobran�a
*
*
* @author S�vio Luiz, Raphael Rossiter
* @data 02/04/2007, 03/01/2007
*
* @param
* @return void
*/
public void emitirAvisoCobrancaFormatado(
CobrancaAcaoAtividadeCronograma cobrancaAcaoAtividadeCronograma,
CobrancaAcaoAtividadeComando cobrancaAcaoAtividadeComando,
Date dataAtualPesquisa, CobrancaAcao acaoCobranca,
CobrancaGrupo grupoCobranca, CobrancaCriterio cobrancaCriterio)
throws ControladorException {
boolean flagFimPesquisa = false;
final int quantidadeCobrancaDocumento = 1000;
int quantidadeCobrancaDocumentoInicio = 0;
StringBuilder cobrancaDocumentoTxt = new StringBuilder();
int sequencialImpressao = 0;
Collection colecaoCobrancaDocumento = null;
Integer idCronogramaAtividadeAcaoCobranca = null;
Integer idComandoAtividadeAcaoCobranca = null;
Integer idAcaoCobranca = null;
if (cobrancaAcaoAtividadeCronograma != null
&& cobrancaAcaoAtividadeCronograma.getId() != null) {
idCronogramaAtividadeAcaoCobranca = cobrancaAcaoAtividadeCronograma
.getId();
}
if (cobrancaAcaoAtividadeComando != null
&& cobrancaAcaoAtividadeComando.getId() != null) {
idComandoAtividadeAcaoCobranca = cobrancaAcaoAtividadeComando
.getId();
}
if (acaoCobranca != null && acaoCobranca.getId() != null) {
idAcaoCobranca = acaoCobranca.getId();
}
while (!flagFimPesquisa) {
try {
System.out.println("***************************************");
System.out.println("ENTROU NO AVISO DE CORTE");
System.out.println("***************************************");
colecaoCobrancaDocumento = repositorioCobranca
.pesquisarCobrancaDocumentoParaEmitirCAER(
idCronogramaAtividadeAcaoCobranca,
idComandoAtividadeAcaoCobranca,
dataAtualPesquisa, idAcaoCobranca,
quantidadeCobrancaDocumentoInicio);
System.out.println("***************************************");
System.out.println("QTD DE COBRANCA DOCUMENTO:"
+ colecaoCobrancaDocumento.size());
System.out.println("***************************************");
} catch (ErroRepositorioException ex) {
ex.printStackTrace();
throw new ControladorException("erro.sistema", ex);
}
if (colecaoCobrancaDocumento != null
&& !colecaoCobrancaDocumento.isEmpty()) {
System.out.println("***************************************");
System.out.println("QUANTIDADE COBRAN�A:"
+ colecaoCobrancaDocumento.size());
System.out.println("***************************************");
if (colecaoCobrancaDocumento.size() < quantidadeCobrancaDocumento) {
flagFimPesquisa = true;
} else {
quantidadeCobrancaDocumentoInicio = quantidadeCobrancaDocumentoInicio + 1000;
}
// ***********************************************************************
// ****PARTE COMENTADA DA DIVIS�O PARA IMPRESS�O DE DOCUMENTO
// COBRAN�A****
// ***********************************************************************
// int metadeColecao = 0;
// if (colecaoCobrancaDocumento.size() % 2 == 0) {
// metadeColecao = colecaoCobrancaDocumento.size() / 2;
// } else {
// metadeColecao = (colecaoCobrancaDocumento.size() / 2) + 1;
// }
// Map<Integer, Map<Object, Object>>
// mapCobrancaDocumentoOrdenada =
// dividirColecao(colecaoCobrancaDocumento);
/*
* if (mapCobrancaDocumentoOrdenada != null) { int countOrdem =
* 0;
*
* while (countOrdem < mapCobrancaDocumentoOrdenada.size()) {
* Map<Object, Object> mapCobrancaoDocumentoDivididas =
* mapCobrancaDocumentoOrdenada .get(countOrdem);
*/
/*
* Iterator iteratorCobrancaDocumento =
* mapCobrancaoDocumentoDivididas .keySet().iterator();
*/
Iterator iteratorCobrancaDocumento = colecaoCobrancaDocumento
.iterator();
while (iteratorCobrancaDocumento.hasNext()) {
CobrancaDocumento cobrancaDocumento = null;
/*
* if(quantidadeContas == 48){ System.out.println(""); }
*/
// int situacao = 0;
cobrancaDocumento = (CobrancaDocumento) iteratorCobrancaDocumento
.next();
String nomeClienteUsuario = null;
Collection colecaoCobrancaDocumentoItemConta = null;
Integer idClienteResponsavel = null;
// Collection colecaoCobrancaDocumentoItemGuiaPagamento =
// null;
/*
* Estes objetos auxiliar�o na formata��o da inscri��o que
* ser� composta por informa��es do documento de cobran�a e
* do im�vel a ele associado
*/
/*
* Objeto que ser� utilizado para armazenar as informa��es
* do documento de cobran�a de acordo com o layout definido
* no caso de uso
*/
/*
* while (situacao < 2) { if (situacao == 0) { situacao = 1;
* sequencialImpressao = atualizaSequencial(
* sequencialImpressao, situacao, metadeColecao); } else {
* cobrancaDocumento = (CobrancaDocumento)
* mapCobrancaoDocumentoDivididas .get(cobrancaDocumento);
* situacao = 2; sequencialImpressao = atualizaSequencial(
* sequencialImpressao, situacao, metadeColecao); }
*/
if (cobrancaDocumento != null) {
sequencialImpressao++;
try {
nomeClienteUsuario = this.repositorioClienteImovel
.pesquisarNomeClientePorImovel(cobrancaDocumento
.getImovel().getId());
idClienteResponsavel = this.repositorioClienteImovel
.retornaIdClienteResponsavelIndicadorEnvioConta(cobrancaDocumento
.getImovel().getId());
colecaoCobrancaDocumentoItemConta = this.repositorioCobranca
.selecionarCobrancaDocumentoItemReferenteConta(cobrancaDocumento);
} catch (ErroRepositorioException ex) {
ex.printStackTrace();
throw new ControladorException("erro.sistema", ex);
}
if (colecaoCobrancaDocumentoItemConta != null
&& !colecaoCobrancaDocumentoItemConta.isEmpty()) {
// ITEM 1
// sequencial do documento de cobranca
cobrancaDocumentoTxt
.append(Util
.retornaSequencialFormatado(cobrancaDocumento
.getNumeroSequenciaDocumento()));
// ITEM 2
// Formatar sequencial de documento gerado
cobrancaDocumentoTxt
.append(Util
.retornaSequencialFormatado(sequencialImpressao));
// ITEM 3
// id do grupo
if (idCronogramaAtividadeAcaoCobranca != null) {
cobrancaDocumentoTxt.append(Util
.adicionarZerosEsquedaNumero(3, ""
+ grupoCobranca.getId()));
} else {
cobrancaDocumentoTxt.append(Util
.adicionarZerosEsquedaNumero(3, ""
+ cobrancaDocumento.getImovel()
.getQuadra().getRota()
.getCobrancaGrupo()
.getId()));
}
// Codigo Rota
cobrancaDocumentoTxt.append(Util
.adicionarZerosEsquedaNumero(6, ""
+ cobrancaDocumento.getImovel()
.getQuadra().getRota()
.getCodigo()));
// ITEM 4
// Codigo Rota
cobrancaDocumentoTxt
.append(Util
.adicionarZerosEsquedaNumero(
4,
""
+ cobrancaDocumento
.getImovel()
.getNumeroSequencialRota()));
// ITEM 5
// c�digo da firma
if (cobrancaDocumento.getEmpresa() != null) {
cobrancaDocumentoTxt.append(Util
.adicionarZerosEsquedaNumero(2,
cobrancaDocumento.getEmpresa()
.getId().toString()));
}
// ITEM 6
if (cobrancaDocumento.getEmpresa() != null) {
cobrancaDocumentoTxt.append(Util
.completaString(cobrancaDocumento
.getEmpresa()
.getDescricaoAbreviada(), 10));
}
// ITEM 7
// Matr�cula do im�vel
cobrancaDocumentoTxt
.append(Util
.adicionarZerosEsquedaNumero(
9,
Util
.retornaMatriculaImovelFormatada(cobrancaDocumento
.getImovel()
.getId())));
// ITEM 8
// Inscri��o
String idLocalidade = Util
.adicionarZerosEsquedaNumero(3, ""
+ cobrancaDocumento.getLocalidade()
.getId());
String codigoSetorComercial = Util
.adicionarZerosEsquedaNumero(3, ""
+ cobrancaDocumento
.getCodigoSetorComercial());
String numeroQuadra = Util
.adicionarZerosEsquedaNumero(4, ""
+ cobrancaDocumento
.getNumeroQuadra());
String lote = Util.adicionarZerosEsquedaNumero(4,
""
+ cobrancaDocumento.getImovel()
.getLote());
String subLote = Util.adicionarZerosEsquedaNumero(
3, ""
+ cobrancaDocumento.getImovel()
.getSubLote());
cobrancaDocumentoTxt.append(Util.completaString(
idLocalidade + "." + codigoSetorComercial
+ "." + numeroQuadra + "." + lote
+ "." + subLote, 21));
// ITEM 9,10
String enderecoImovel = "";
String nomeBairro = "";
String nomeMunicipio = "";
String siglaUnidadeFederecao = "";
String cepFormatado = "";
String[] parmsEnderecoImovel = getControladorEndereco()
.pesquisarEnderecoFormatadoDividido(
cobrancaDocumento.getImovel()
.getId());
if (parmsEnderecoImovel != null) {
// endere�o sem municipio e unidade federa��o
cobrancaDocumentoTxt.append(Util
.completaString(parmsEnderecoImovel[0],
100));
enderecoImovel = parmsEnderecoImovel[0];
// nome do bairro
nomeBairro = "" + parmsEnderecoImovel[3];
// nome do municipio
nomeMunicipio = "" + parmsEnderecoImovel[1];
// sigla da unidade federa��o
siglaUnidadeFederecao = parmsEnderecoImovel[2];
cepFormatado = parmsEnderecoImovel[4];
}
// nome Bairro
cobrancaDocumentoTxt.append(Util.completaString(
nomeBairro, 30));
// nome municipio
cobrancaDocumentoTxt.append(Util.completaString(
nomeMunicipio, 30));
// sigla unidade federacao
cobrancaDocumentoTxt.append(Util.completaString(
siglaUnidadeFederecao, 2));
if (cepFormatado != null) {
cepFormatado = Util
.adicionarZerosEsquedaNumero(8,
cepFormatado);
cobrancaDocumentoTxt.append(cepFormatado
.substring(0, 5)
+ "-" + cepFormatado.substring(5, 8));
}
// ITEM 11,12
// endere�o do cliente com op��o de recebimento via
// correio
// ITEM 9,10
String nomeBairroResponsavel = "";
String nomeMunicipioResponsavel = "";
String siglaUnidadeFederecaoResponsavel = "";
String cepFormatadoResponsavel = "";
if (idClienteResponsavel != null) {
String[] parmsEndereco = getControladorEndereco()
.pesquisarEnderecoClienteAbreviadoDividido(
idClienteResponsavel);
// endere�o sem municipio e unidade federa��o
cobrancaDocumentoTxt.append(Util
.completaString(parmsEndereco[0], 100));
// nome do bairro
nomeBairroResponsavel = "" + parmsEndereco[3];
// nome do municipio
nomeMunicipioResponsavel = ""
+ parmsEndereco[1];
// sigla da unidade federa��o
siglaUnidadeFederecaoResponsavel = parmsEndereco[2];
cepFormatadoResponsavel = parmsEndereco[4];
// nome Bairro
cobrancaDocumentoTxt.append(Util
.completaString(nomeBairroResponsavel,
30));
// nome municipio
cobrancaDocumentoTxt.append(Util
.completaString(
nomeMunicipioResponsavel, 30));
// sigla unidade federacao
cobrancaDocumentoTxt
.append(Util
.completaString(
siglaUnidadeFederecaoResponsavel,
2));
if (cepFormatadoResponsavel != null) {
cepFormatadoResponsavel = Util
.adicionarZerosEsquedaNumero(8,
cepFormatadoResponsavel);
cobrancaDocumentoTxt
.append(cepFormatadoResponsavel
.substring(0, 5)
+ "-"
+ cepFormatado.substring(5,
8));
}
} else {
// endere�o sem municipio e unidade federa��o
cobrancaDocumentoTxt.append(Util
.completaString(enderecoImovel, 100));
// nome Bairro
cobrancaDocumentoTxt.append(Util
.completaString(nomeBairro, 30));
// nome municipio
cobrancaDocumentoTxt.append(Util
.completaString(nomeMunicipio, 30));
// sigla unidade federacao
cobrancaDocumentoTxt.append(Util
.completaString(siglaUnidadeFederecao,
2));
if (cepFormatado != null) {
cepFormatado = Util
.adicionarZerosEsquedaNumero(8,
cepFormatado);
cobrancaDocumentoTxt.append(cepFormatado
.substring(0, 5)
+ "-"
+ cepFormatado.substring(5, 8));
}
}
// ITEM 13
// nome cliente
cobrancaDocumentoTxt.append(Util.completaString(
nomeClienteUsuario, 50));
// ITEM 14
// Quant. contas em debito
cobrancaDocumentoTxt.append(Util
.adicionarZerosEsquedaNumero(3, ""
+ colecaoCobrancaDocumentoItemConta
.size()));
// ITEM 15,18
// Indicador Estouro
// cobrancaDocumentoTxt.append(Util.completaString(""
// + indicadorEstouro, 1));
// em caso de ser carta de tarifa social n�o
// formatar o txt
int quantidadesContas = 12;
// retorna o indicador de estouro e formata o
// cobran�aDocumentoTxt com os dados
Object[] dadosValores = formatarCobrancaDocumentoItemParaContaComFormatacao(
cobrancaDocumentoTxt,
colecaoCobrancaDocumentoItemConta,
quantidadesContas, idAcaoCobranca);
BigDecimal valorItemCobrado = (BigDecimal) dadosValores[0];
BigDecimal valorAcrescimos = (BigDecimal) dadosValores[1];
BigDecimal valorItemAcrescimos = (BigDecimal) dadosValores[2];
// somatorio do valor do item da conta
cobrancaDocumentoTxt.append(Util.completaString(
Util.formataBigDecimal(valorItemCobrado, 2,
true), 14));
// somatorio do valor dos encargos
cobrancaDocumentoTxt.append(Util.completaString(
Util.formataBigDecimal(valorAcrescimos, 2,
true), 14));
// somatorio do valor total das contas
cobrancaDocumentoTxt.append(Util.completaString(
Util.formataBigDecimal(valorItemAcrescimos,
2, true), 14));
// String
// quantidadeItensDocumentoGuiaPagamentoString =
// null;
// // em caso de ser carta de tarifa social n�o
// // formatar o txt
// if (idAcaoCobranca != null
// && (!idAcaoCobranca
// .equals(CobrancaAcao.CARTA_TARIFA_SOCIAL_LIGADO)
// && !idAcaoCobranca
// .equals(CobrancaAcao.CARTA_TARIFA_SOCIAL_CORTADO)))
// {
// // retorna o quantidade de documento item com
// // guia
// // pagamento e formata o cobran�aDocumentoTxt
// // com os
// // dados
// int quantidadeItensDocumentoGuiaPagamento =
// somatorioValoresAcrescimosDocumentoItem(
// cobrancaDocumentoTxt,
// colecaoCobrancaDocumentoItemGuiaPagamento);
// quantidadeItensDocumentoGuiaPagamentoString = ""
// + quantidadeItensDocumentoGuiaPagamento;
// }
// ITEM 20
// Nome da Localidade
cobrancaDocumentoTxt.append(Util
.completaString(""
+ cobrancaDocumento.getImovel()
.getLocalidade()
.getUnidadeNegocio()
.getNome(), 28));
// em caso de ser carta de tarifa social n�o
// formatar o txt
// ITEM 21
cobrancaDocumentoTxt.append(Util
.formatarData(cobrancaDocumento
.getEmissao()));
// data de vencimento AAAAMMDD
// Object[] dadosFaturamentoGrupo =
// getControladorFaturamento()
// .pesquisarAnoMesEDiaVencimentoFaturamentoGrupo(
// cobrancaDocumento.getImovel()
// .getId());
// Integer anoMesFaturamento = null;
// Integer diaVencimento = null;
// if (dadosFaturamentoGrupo != null) {
// if (dadosFaturamentoGrupo[0] != null) {
// anoMesFaturamento = (Integer)
// dadosFaturamentoGrupo[0];
// }
// if (dadosFaturamentoGrupo[1] != null) {
// diaVencimento = ((Short)
// dadosFaturamentoGrupo[1])
// .intValue();
// }
// }
// ITEM 22
String dataVencimento = "";
if (cobrancaDocumento.getEmissao() != null
&& acaoCobranca.getNumeroDiasValidade() != null) {
dataVencimento = Util
.formatarData(Util
.adicionarNumeroDiasDeUmaData(
cobrancaDocumento
.getEmissao(),
acaoCobranca
.getNumeroDiasVencimento()));
}
cobrancaDocumentoTxt.append(Util
.completaStringComEspacoAEsquerda(
dataVencimento, 10));
// ITEM 23
if (cobrancaDocumento.getImovel() != null
&& cobrancaDocumento.getImovel()
.getLigacaoAgua() != null
&& cobrancaDocumento.getImovel()
.getLigacaoAgua()
.getHidrometroInstalacaoHistorico() != null) {
// numero do hidometro
if (cobrancaDocumento.getImovel()
.getLigacaoAgua()
.getHidrometroInstalacaoHistorico() != null) {
cobrancaDocumentoTxt
.append(Util
.completaString(
""
+ cobrancaDocumento
.getImovel()
.getLigacaoAgua()
.getHidrometroInstalacaoHistorico()
.getHidrometro()
.getNumero(),
10));
// Local de instala��o descricao abreviada
cobrancaDocumentoTxt
.append(Util
.completaString(
""
+ cobrancaDocumento
.getImovel()
.getLigacaoAgua()
.getHidrometroInstalacaoHistorico()
.getHidrometroLocalInstalacao()
.getDescricaoAbreviada(),
5));
} else {
cobrancaDocumentoTxt.append(Util
.completaString("", 10));
cobrancaDocumentoTxt.append(Util
.completaString("", 5));
}
} else {
cobrancaDocumentoTxt.append(Util
.completaString("", 10));
cobrancaDocumentoTxt.append(Util
.completaString("", 5));
}
// ITEM 24,25,26
String representacaoNumericaCodBarra = "";
// Obt�m a representa��o num�rica do
// c�digode
// barra
representacaoNumericaCodBarra = this
.getControladorArrecadacao()
.obterRepresentacaoNumericaCodigoBarra(
5,
cobrancaDocumento
.getValorDocumento(),
cobrancaDocumento.getLocalidade()
.getId(),
cobrancaDocumento.getImovel()
.getId(),
null,
null,
null,
null,
String
.valueOf(cobrancaDocumento
.getNumeroSequenciaDocumento()),
cobrancaDocumento
.getDocumentoTipo().getId(),
null, null, null);
// Formata a representa��o n�merica do
// c�digo de
// barras
String representacaoNumericaCodBarraFormatada = representacaoNumericaCodBarra
.substring(0, 11)
+ " "
+ representacaoNumericaCodBarra.substring(
11, 12)
+ " "
+ representacaoNumericaCodBarra.substring(
12, 23)
+ " "
+ representacaoNumericaCodBarra.substring(
23, 24)
+ " "
+ representacaoNumericaCodBarra.substring(
24, 35)
+ " "
+ representacaoNumericaCodBarra.substring(
35, 36)
+ " "
+ representacaoNumericaCodBarra.substring(
36, 47)
+ " "
+ representacaoNumericaCodBarra.substring(
47, 48);
cobrancaDocumentoTxt
.append(representacaoNumericaCodBarraFormatada);
// Cria o objeto para gerar o c�digo de
// barras
// no
// padr�o
// intercalado 2 de 5
Interleaved2of5 codigoBarraIntercalado2de5 = new Interleaved2of5();
// Recupera a representa��o n�merica do
// c�digo
// de
// barras
// sem
// os d�gitos verificadores
String representacaoCodigoBarrasSemDigitoVerificador = representacaoNumericaCodBarra
.substring(0, 11)
+ representacaoNumericaCodBarra.substring(
12, 23)
+ representacaoNumericaCodBarra.substring(
24, 35)
+ representacaoNumericaCodBarra.substring(
36, 47);
cobrancaDocumentoTxt
.append(codigoBarraIntercalado2de5
.encodeValue(representacaoCodigoBarrasSemDigitoVerificador));
/*Object[] dadosOS = pesquisarDadosOrdemServicoDocumentoCobranca(cobrancaDocumento
.getId());
if (dadosOS != null) {
cobrancaDocumentoTxt.append(Util
.completaString("" + dadosOS[0], 9));
} else {
cobrancaDocumentoTxt.append(Util
.completaString("", 9));
}
// situa��o liga��o de agua
if (cobrancaDocumento.getImovel() != null
&& cobrancaDocumento.getImovel()
.getLigacaoAguaSituacao() != null) {
cobrancaDocumentoTxt.append(Util
.completaString(cobrancaDocumento
.getImovel()
.getLigacaoAguaSituacao()
.getDescricao(), 20));
} else {
cobrancaDocumentoTxt.append(Util
.completaString("", 20));
}
// situa��o liga��o de esgoto
if (cobrancaDocumento.getImovel() != null
&& cobrancaDocumento.getImovel()
.getLigacaoEsgotoSituacao() != null) {
cobrancaDocumentoTxt.append(Util
.completaString(cobrancaDocumento
.getImovel()
.getLigacaoEsgotoSituacao()
.getDescricao(), 20));
} else {
cobrancaDocumentoTxt.append(Util
.completaString("", 20));
}
Categoria categoria = getControladorImovel()
.obterPrincipalCategoriaImovel(
cobrancaDocumento.getImovel()
.getId());
if (categoria != null) {
cobrancaDocumentoTxt.append(Util
.completaString(categoria
.getDescricao(), 15));
} else {
cobrancaDocumentoTxt.append(Util
.completaString("", 15));
}*/
/*
* COLOCADO POR RAPHAEL ROSSITER EM 03/01/2007 =============================================
* -----------------------------------------------------------------------------------------
*/
//ITEM 31 - Consumo M�dio
/*Integer consumoMedio = getControladorMicromedicao().pesquisarConsumoMedioImovel(
cobrancaDocumento.getImovel().getId());
if (consumoMedio != null) {
cobrancaDocumentoTxt.append(Util
.completaString("" + consumoMedio, 10));
} else {
cobrancaDocumentoTxt.append(Util
.completaString("", 10));
}
//ITEM 32 - Consumo Fixo
Integer consumoMinimoEsgoto = getControladorLigacaoEsgoto().recuperarConsumoMinimoEsgoto(
cobrancaDocumento.getImovel().getId());
if (consumoMinimoEsgoto != null) {
cobrancaDocumentoTxt.append(Util
.completaString("" + consumoMinimoEsgoto, 10));
} else {
cobrancaDocumentoTxt.append(Util
.completaString("", 10));
}
// Categoria(s) e Economia(s)
Collection colecaoCategorias = getControladorImovel()
.obterQuantidadeEconomiasCategoria(cobrancaDocumento.getImovel());
String qtdResidencial = "";
String qtdComercial = "";
String qtdIndustrial = "";
String qtdPublico = "";
Integer totalCategoria = 0;
if (colecaoCategorias != null && !colecaoCategorias.isEmpty()) {
Iterator iteratorColecaoCategorias = colecaoCategorias
.iterator();
while (iteratorColecaoCategorias.hasNext()) {
categoria = (Categoria) iteratorColecaoCategorias.next();
if (categoria.getId().equals(Categoria.RESIDENCIAL)) {
qtdResidencial = "" + categoria
.getQuantidadeEconomiasCategoria();
totalCategoria = totalCategoria + categoria
.getQuantidadeEconomiasCategoria();
} else if (categoria.getId().equals(Categoria.COMERCIAL)) {
qtdComercial = "" + categoria
.getQuantidadeEconomiasCategoria();
totalCategoria = totalCategoria + categoria
.getQuantidadeEconomiasCategoria();
} else if (categoria.getId().equals(Categoria.INDUSTRIAL)) {
qtdIndustrial = "" + categoria
.getQuantidadeEconomiasCategoria();
totalCategoria = totalCategoria + categoria
.getQuantidadeEconomiasCategoria();
} else if (categoria.getId().equals(Categoria.PUBLICO)) {
qtdPublico = "" + categoria
.getQuantidadeEconomiasCategoria();
totalCategoria = totalCategoria + categoria
.getQuantidadeEconomiasCategoria();
}
}
}
//ITEM 33 - Resid�ncial
if (!qtdResidencial.equals("")) {
cobrancaDocumentoTxt.append(Util.adicionarZerosEsquedaNumero(3,
qtdResidencial));
} else {
cobrancaDocumentoTxt.append(Util.completaString("", 3));
}
//ITEM 34 - Comercial
if (!qtdComercial.equals("")) {
cobrancaDocumentoTxt.append(Util.adicionarZerosEsquedaNumero(3,
qtdComercial));
} else {
cobrancaDocumentoTxt.append(Util.completaString("", 3));
}
//ITEM 35 - Industrial
if (!qtdIndustrial.equals("")) {
cobrancaDocumentoTxt.append(Util.adicionarZerosEsquedaNumero(3,
qtdIndustrial));
} else {
cobrancaDocumentoTxt.append(Util.completaString("", 3));
}
//ITEM 36 - P�blico
if (!qtdPublico.equals("")) {
cobrancaDocumentoTxt.append(Util.adicionarZerosEsquedaNumero(3,
qtdPublico));
} else {
cobrancaDocumentoTxt.append(Util.completaString("", 3));
}
//ITEM 37 - Soma Total das economias
if (totalCategoria != null && !totalCategoria.equals("")) {
cobrancaDocumentoTxt.append(Util.adicionarZerosEsquedaNumero(4, ""
+ totalCategoria));
} else {
cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda("", 4));
}
//ITEM 38 - Data da Posi��o do D�bito
SistemaParametro sistemaParametro = this.getControladorUtil()
.pesquisarParametrosDoSistema();
String anoMesValidade = sistemaParametro.getAnoMesArrecadacao().toString();
Calendar calendario = new GregorianCalendar();
if (anoMesValidade != null && !anoMesValidade.equals("")) {
calendario.set(Calendar.YEAR, new Integer(
anoMesValidade.substring(0, 4)).intValue());
calendario.set(Calendar.MONTH, new Integer(
anoMesValidade.substring(4, 6)).intValue() - 1);
calendario.set(Calendar.DAY_OF_MONTH,
calendario.getActualMaximum(Calendar.DAY_OF_MONTH));
cobrancaDocumentoTxt.append(Util
.formatarData(calendario.getTime()));
} else {
cobrancaDocumentoTxt.append(Util.completaString("", 10));
}*/
/*
* As datas de corte e supress�o ser�o repassadas de acordo com
* a situa��o da liga��o do im�vel.
*
* ITEM 39 - Data do Corte
* ITEM 40 - Data da Supress�o
*/
/*if (cobrancaDocumento.getImovel().getLigacaoAguaSituacao().getId()
.equals(LigacaoAguaSituacao.CORTADO) ||
cobrancaDocumento.getImovel().getLigacaoAguaSituacao().getId()
.equals(LigacaoAguaSituacao.SUPRIMIDO)){*/
/*
* Dados da Liga��o de �gua(a partir da tabela LIGACAO_AGUA
* lagu_id=imov_id da tabela IMOVEL)
*/
/*Object[] dadosLigacaoAgua = getControladorAtendimentoPublico()
.pesquisarDadosLigacaoAgua(cobrancaDocumento.getImovel().getId());
if (dadosLigacaoAgua != null) {
//Data do Corte
if (cobrancaDocumento.getImovel().getLigacaoAguaSituacao().getId()
.equals(LigacaoAguaSituacao.CORTADO)){
if (dadosLigacaoAgua[3] != null) {
cobrancaDocumentoTxt.append(Util.completaString(
Util.formatarData((Date) dadosLigacaoAgua[3]),10));
cobrancaDocumentoTxt.append(Util.completaString("", 10));
}
else {
cobrancaDocumentoTxt.append(Util.completaString("", 20));
}
}
//Data da Supress�o
else if (cobrancaDocumento.getImovel().getLigacaoAguaSituacao().getId()
.equals(LigacaoAguaSituacao.SUPRIMIDO)){
if (dadosLigacaoAgua[4] != null) {
cobrancaDocumentoTxt.append(Util.completaString("", 10));
cobrancaDocumentoTxt.append(Util.completaString(
Util.formatarData((Date) dadosLigacaoAgua[4]),10));
}
else {
cobrancaDocumentoTxt.append(Util.completaString("", 20));
}
}
else{
cobrancaDocumentoTxt.append(Util.completaString("", 20));
}
} else {
cobrancaDocumentoTxt.append(Util.completaString("", 20));
}
}
else{
cobrancaDocumentoTxt.append(Util.completaString("", 20));
}
//ITEM 41 - Origem
LeituraAnormalidade leituraAnormalidade = cobrancaDocumento.getImovel()
.getLeituraAnormalidade();
if (leituraAnormalidade == null) {
cobrancaDocumentoTxt.append("AUTOMATICO");
cobrancaDocumentoTxt.append(Util.completaString("", 5));
}
else if (leituraAnormalidade.getId().equals(LeituraAnormalidade.INDICADOR_LIGADO_CLANDESTINO_AGUA)
|| leituraAnormalidade.getId().equals(LeituraAnormalidade.INDICADOR_LIGADO_CLANDESTINO_ESGOTO)
|| leituraAnormalidade.getId().equals(LeituraAnormalidade.INDICADOR_LIGADO_CLANDESTINO_AGUA_ESGOTO)) {
cobrancaDocumentoTxt.append("RECADASTRAMENTO");
}
else {
cobrancaDocumentoTxt.append("LEITURA");
cobrancaDocumentoTxt.append(Util.completaString("", 8));
}
//ITEM 42 - Ocorr�ncia
if (leituraAnormalidade != null){
cobrancaDocumentoTxt.append(Util.completaString(
leituraAnormalidade.getDescricao(), 34));
}
else{
cobrancaDocumentoTxt.append(Util.completaString("", 34));
}
//ITEM 43 - Data �ltima Altera��o
if (cobrancaDocumento.getImovel().getUltimaAlteracao() != null) {
cobrancaDocumentoTxt.append(Util.formatarData(
cobrancaDocumento.getImovel().getUltimaAlteracao()));
} else {
cobrancaDocumentoTxt.append(Util.completaString("", 10));
}
//ITEM 44 - Ordem de Servi�o
Integer idOrdemServico = this.getControladorOrdemServico()
.pesquisarOrdemServicoPorCobrancaDocumento(cobrancaDocumento.getId());
if (idOrdemServico != null){
cobrancaDocumentoTxt.append(Util.completaString(
idOrdemServico.toString(), 15));
}
else{
cobrancaDocumentoTxt.append(Util.completaString("", 15));
}
//ITEM 45 - Tipo de Consumidor (ImovelPerfil da tabela CobrancaDocumento)
if (cobrancaDocumento.getImovelPerfil() != null) {
cobrancaDocumentoTxt.append(Util.completaString(
cobrancaDocumento.getImovelPerfil().getDescricao() , 20));
} else {
cobrancaDocumentoTxt.append(Util.completaString("", 20));
}*/
//ITEM 46 - Hidr�metro
/*Collection dadosHidrometro = null;
try {
dadosHidrometro = this.repositorioMicromedicao
.pesquisarDadosHidrometroTipoLigacaoAgua(cobrancaDocumento.getImovel().getId());
} catch (ErroRepositorioException ex) {
ex.printStackTrace();
throw new ControladorException("erro.sistema", ex);
}
if (dadosHidrometro != null && !dadosHidrometro.isEmpty()){
Object[] objetoDados = (Object[]) Util.retonarObjetoDeColecao(dadosHidrometro);
String numeroHidrometro = String.valueOf(objetoDados[1]);
if (numeroHidrometro != null && !numeroHidrometro.equalsIgnoreCase("")){
cobrancaDocumentoTxt.append(Util.completaString(numeroHidrometro, 10));
}
else{
cobrancaDocumentoTxt.append(Util.completaString("", 10));
}
}
else{
cobrancaDocumentoTxt.append(Util.completaString("", 10));
}*/
//==========================================================================================
cobrancaDocumentoTxt.append(System
.getProperty("line.separator"));
}
colecaoCobrancaDocumentoItemConta = null;
}
// }// fim do la�o que verifica
// as 2
// contas
}// fim la�o while do iterator do
// objeto
// helper
// countOrdem++;
// mapCobrancaoDocumentoDivididas = null;
// // }
} else {
flagFimPesquisa = true;
}
// } else {
// flagFimPesquisa = true;
// }
// colecaoCobrancaDocumento = null;
}
Date dataAtual = new Date();
String nomeZip = null;
System.out.println("ID A��O COBRAN�A:" + idAcaoCobranca);
if (idCronogramaAtividadeAcaoCobranca != null) {
nomeZip = "EMITIR_" + acaoCobranca.getDescricaoCobrancaAcao()
+ "_GRUPO_" + grupoCobranca.getId() + "_"
+ Util.formatarData(dataAtual) + Util.formatarHoraSemDataSemDoisPontos(dataAtual);
} else {
String descricaoAbrevDocumentoTipo = "";
if (acaoCobranca != null && acaoCobranca.getDocumentoTipo() != null) {
descricaoAbrevDocumentoTipo = acaoCobranca.getDocumentoTipo()
.getDescricaoAbreviado();
}
String tituloComandoEventual = cobrancaAcaoAtividadeComando
.getDescricaoTitulo();
nomeZip = descricaoAbrevDocumentoTipo + " " + tituloComandoEventual
+ " " + Util.formatarData(dataAtual) + Util.formatarHoraSemDataSemDoisPontos(dataAtual);
}
nomeZip = nomeZip.replace("/", "_");
nomeZip = nomeZip.replace(" ", "_");
// pegar o arquivo, zipar pasta e arquivo e escrever no stream
try {
System.out.println("***************************************");
System.out.println("INICO DA CRIACAO DO ARQUIVO");
System.out.println("***************************************");
if (cobrancaDocumentoTxt != null
&& cobrancaDocumentoTxt.length() != 0) {
// criar o arquivo zip
File compactado = new File(getControladorUtil().getCaminhoDownloadArquivos("cobranca") + nomeZip + ".zip"); // nomeZip
ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(compactado));
File leitura = new File(getControladorUtil().getCaminhoDownloadArquivos("cobranca") + nomeZip + ".txt");
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(
new FileOutputStream(leitura.getAbsolutePath())));
out.write(cobrancaDocumentoTxt.toString());
out.close();
ZipUtil.adicionarArquivo(zos, leitura);
// close the stream
zos.close();
leitura.delete();
}
System.out.println("***************************************");
System.out.println("FIM DA CRIACAO DO ARQUIVO");
System.out.println("***************************************");
} catch (IOException e) {
e.printStackTrace();
throw new ControladorException("erro.sistema", e);
} catch (Exception e) {
e.printStackTrace();
throw new ControladorException("erro.sistema", e);
}
}
}