package gcom.cobranca;
import gcom.cadastro.imovel.Categoria;
import gcom.cadastro.imovel.Imovel;
import gcom.cadastro.localidade.FiltroUnidadeNegocio;
import gcom.cadastro.localidade.Localidade;
import gcom.cadastro.localidade.Quadra;
import gcom.cadastro.localidade.SetorComercial;
import gcom.cadastro.localidade.UnidadeNegocio;
import gcom.cobranca.bean.CalcularValorDataVencimentoAnteriorHelper;
import gcom.cobranca.bean.EmissaoDocumentoCobrancaHelper;
import gcom.cobranca.bean.EmitirDocumentoCobrancaHelper;
import gcom.util.ControladorException;
import gcom.util.ErroRepositorioException;
import gcom.util.Util;
import gcom.util.filtro.ParametroSimples;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.util.Collection;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import javax.ejb.SessionBean;
import br.com.danhil.BarCode.Interleaved2of5;
/**
* Controlador Cobranca COMPESA
*
* @author Raphael Rossiter
* @date 26/06/2007
*/
public class ControladorCobrancaCOMPESASEJB extends ControladorCobranca implements SessionBean {
private static final long serialVersionUID = 1L;
//==============================================================================================================
// M�TODOS EXCLUSIVOS DA COMPESA
//==============================================================================================================
/**
* Este caso de uso permite a emiss�o de um ou mais documentos de cobran�a
*
* [UC0476] Emitir Documento de Cobran�a - Ordem de Corte
*
* @author Ivan Sergio
* @data 21/05/2009
*
* @param
* @return void
*/
public void emitirDocumentoCobrancaOrdemCorte(
CobrancaAcaoAtividadeCronograma cobrancaAcaoAtividadeCronograma,
CobrancaAcaoAtividadeComando cobrancaAcaoAtividadeComando,
Date dataAtualPesquisa, CobrancaAcao acaoCobranca,
CobrancaGrupo grupoCobranca, CobrancaCriterio cobrancaCriterio)
throws ControladorException {
if (acaoCobranca.getId().equals(CobrancaAcao.CORTE_ADMINISTRATIVO) ||
acaoCobranca.getId().equals(CobrancaAcao.CORTE_ADMINISTRATIVO_LIGADO_A_REVELIA) ||
acaoCobranca.getId().equals(CobrancaAcao.SUPRESSAO_PARCIAL) ||
acaoCobranca.getId().equals(CobrancaAcao.SUPRESSAO_TOTAL) ||
acaoCobranca.getId().equals(CobrancaAcao.FISCALIZACAO_SITUACAO_ESGOTO)) {
// [UC0349 Emitir Documento fr Cobran�a - AvisoCorte]
super.emitirDocumentoCobrancaOrdemCorte(
cobrancaAcaoAtividadeCronograma,
cobrancaAcaoAtividadeComando,
dataAtualPesquisa,
acaoCobranca,
grupoCobranca,
cobrancaCriterio);
} else if (acaoCobranca.getId().equals(CobrancaAcao.CORTE_FISICO) ||
acaoCobranca.getId().equals(CobrancaAcao.CORTE_FISICO_LIGADO_A_REVELIA) ||
acaoCobranca.getId().equals(CobrancaAcao.CORTE_FISICO_PUBLICO) ||
acaoCobranca.getId().equals(CobrancaAcao.RECORTE)) {
// [UC0640] Gerar TXT Corte Fisico COMPESA
this.emitirDocumentoCobrancaCorteFisico(
cobrancaAcaoAtividadeCronograma,
cobrancaAcaoAtividadeComando,
dataAtualPesquisa,
acaoCobranca,
grupoCobranca,
cobrancaCriterio);
}
}
/**
* [UC0640] Gerar TXT Corte Fisico COMPESA
*
* @author Ivan Sergio, Vivianne Sousa
* @data 21/05/2009, 23/02/2010
*
* @param
* @return void
*/
public void gerarDocumentoCobrancaImpressaoCorteFisico(
CobrancaAcaoAtividadeCronograma cobrancaAcaoAtividadeCronograma,
CobrancaAcaoAtividadeComando cobrancaAcaoAtividadeComando,
Date dataAtualPesquisa, CobrancaAcao acaoCobranca,
CobrancaGrupo grupoCobranca, CobrancaCriterio cobrancaCriterio)
throws ControladorException {
try {
boolean flagFimPesquisa = false;
final int quantidadeCobrancaDocumento = 1000;
int quantidadeCobrancaDocumentoInicio = 0;
int sequencialImpressao = 0;
System.out.println("****************************************");
System.out.println("ENTROU NO GERAR TXT CORTE FISICO COMPESA");
System.out.println("****************************************");
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) {
// map que armazena o sequencial e o numero da
// conta para no final atualizar todos os sequencias
Map<Integer, Integer> mapAtualizaSequencial = new HashMap();
Collection colecaoEmitirDocumentoCobranca = repositorioCobranca.
pesquisarCobrancaDocumentoOrdemCorte(idCronogramaAtividadeAcaoCobranca,
idComandoAtividadeAcaoCobranca, dataAtualPesquisa, idAcaoCobranca,
quantidadeCobrancaDocumentoInicio);
if (colecaoEmitirDocumentoCobranca != null && !colecaoEmitirDocumentoCobranca.isEmpty()) {
System.out.println("***************************************");
System.out.println("QUANTIDADE DE COBRAN�A:" + colecaoEmitirDocumentoCobranca.size());
System.out.println("***************************************");
Collection colecaoCobrancaDocumentoItem = null;
if (colecaoEmitirDocumentoCobranca.size() < quantidadeCobrancaDocumento) {
flagFimPesquisa = true;
} else {
quantidadeCobrancaDocumentoInicio = quantidadeCobrancaDocumentoInicio + 1000;
}
Iterator iteratorColecaoCobrancaDocumento = colecaoEmitirDocumentoCobranca.iterator();
EmitirDocumentoCobrancaHelper emitirDocumentoCobrancaHelper = null;
while (iteratorColecaoCobrancaDocumento.hasNext()) {
StringBuilder cobrancaDocumentoTxt = new StringBuilder();
emitirDocumentoCobrancaHelper = null;
String nomeCliente = null;
emitirDocumentoCobrancaHelper = (EmitirDocumentoCobrancaHelper) iteratorColecaoCobrancaDocumento.next();
/*
* 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
*/
Imovel inscricao = null;
SetorComercial setorComercialInscricao = null;
Quadra quadraInscricao = null;
Localidade localidade = null;
sequencialImpressao++;
if (emitirDocumentoCobrancaHelper != null) {
nomeCliente = this.repositorioClienteImovel.pesquisarNomeClientePorImovel(
emitirDocumentoCobrancaHelper.getIdImovel());
CobrancaDocumento cobrancaDocumento = new CobrancaDocumento();
cobrancaDocumento.setId(emitirDocumentoCobrancaHelper.getIdDocumentoCobranca());
colecaoCobrancaDocumentoItem = this.repositorioCobranca
.selecionarCobrancaDocumentoItemReferenteConta(cobrancaDocumento);
if (colecaoCobrancaDocumentoItem != null && !colecaoCobrancaDocumentoItem.isEmpty()) {
// In�cio do processo de gera��o do arquivo txt
//******************************************************
// Inscricao do Imovel
quadraInscricao = new Quadra();
setorComercialInscricao = new SetorComercial();
localidade = new Localidade();
inscricao = new Imovel();
quadraInscricao.setNumeroQuadra(emitirDocumentoCobrancaHelper.getNumeroQuadra());
setorComercialInscricao.setCodigo(emitirDocumentoCobrancaHelper.getCodigoSetorComercial());
localidade.setId(emitirDocumentoCobrancaHelper.getIdLocalidade());
inscricao.setLocalidade(localidade);
inscricao.setSetorComercial(setorComercialInscricao);
inscricao.setQuadra(quadraInscricao);
inscricao.setLote(emitirDocumentoCobrancaHelper.getLote());
inscricao.setSubLote(emitirDocumentoCobrancaHelper.getSubLote());
cobrancaDocumentoTxt.append(Util.completaString(
inscricao.getInscricaoFormatada(), 20));
//******************************************************
// Nome do Cliente
cobrancaDocumentoTxt.append(Util.completaString(nomeCliente, 50));
//******************************************************
// Matr�cula do im�vel
String matriculaImovelFormatada =
Util.adicionarZerosEsquedaNumero(8, emitirDocumentoCobrancaHelper.getIdImovel().toString());
matriculaImovelFormatada = matriculaImovelFormatada.substring(0, 7) + "." + matriculaImovelFormatada.substring(7, 8);
cobrancaDocumentoTxt.append(matriculaImovelFormatada);
//******************************************************
// Endereco do Imovel
String nomeBairro = "";
String nomeMunicipio = "";
String siglaUnidadeFederecao = "";
String cepFormatado = "";
String[] parmsEnderecoImovel = getControladorEndereco()
.pesquisarEnderecoFormatadoDividido(emitirDocumentoCobrancaHelper.getIdImovel());
if (parmsEnderecoImovel != null) {
// Endere�o sem Municipio e Unidade Federa��o
cobrancaDocumentoTxt.append(Util.completaString(parmsEnderecoImovel[0], 100));
// Nome do Municipio
nomeMunicipio = "" + parmsEnderecoImovel[1];
// Sigla da Unidade Federa��o
siglaUnidadeFederecao = parmsEnderecoImovel[2];
// Nome do Bairro
nomeBairro = "" + parmsEnderecoImovel[3];
// CEP Formatado
cepFormatado = parmsEnderecoImovel[4];
} else {
cobrancaDocumentoTxt.append(Util.completaString("", 100));
}
// Bairro
cobrancaDocumentoTxt.append(Util.completaString(nomeBairro, 30));
// Municipio
cobrancaDocumentoTxt.append(Util.completaString(nomeMunicipio, 30));
// UF
cobrancaDocumentoTxt.append(Util.completaString(siglaUnidadeFederecao, 2));
// CEP
String cepStr = Util.completaString(cepFormatado, 8);
cobrancaDocumentoTxt.append(cepStr.substring(0,5) + "-" + cepStr.substring(5,8));
//******************************************************
//CRC2574 alterado por Vivianne Sousa 19/08/2009 - Francisco
// Numero da OS
cobrancaDocumentoTxt.append(Util.completaString(
"" +emitirDocumentoCobrancaHelper.getNumeroOS(), 9));
// "" +emitirDocumentoCobrancaHelper.getNumeroSequenciaDocumento(), 9));
//******************************************************
// Categorias
// Quantidades de economias por categoria: 1� RESID�NCIAL 2� COMERCIAL 3� INDUSTRIAL 4� P�BLICA
Imovel imovel = new Imovel();
imovel.setId(emitirDocumentoCobrancaHelper.getIdImovel());
Collection colecaoCategorias = getControladorImovel().obterQuantidadeEconomiasCategoria(imovel);
imovel = null;
String qtdResidencial = "";
String qtdComercial = "";
String qtdIndustrial = "";
String qtdPublico = "";
Integer totalCategoria = 0;
if (colecaoCategorias != null && !colecaoCategorias.isEmpty()) {
Iterator iteratorColecaoCategorias = colecaoCategorias.iterator();
Categoria categoria = null;
while (iteratorColecaoCategorias.hasNext()) {
categoria = (Categoria) iteratorColecaoCategorias.next();
if (categoria.getId().equals(Categoria.RESIDENCIAL)) {
qtdResidencial = "" + categoria.getQuantidadeEconomiasCategoria();
totalCategoria += categoria.getQuantidadeEconomiasCategoria();
} else if (categoria.getId().equals(Categoria.COMERCIAL)) {
qtdComercial = "" + categoria.getQuantidadeEconomiasCategoria();
totalCategoria += categoria.getQuantidadeEconomiasCategoria();
} else if (categoria.getId().equals(Categoria.INDUSTRIAL)) {
qtdIndustrial = "" + categoria.getQuantidadeEconomiasCategoria();
totalCategoria += categoria.getQuantidadeEconomiasCategoria();
} else if (categoria.getId().equals(Categoria.PUBLICO)) {
qtdPublico = "" + categoria.getQuantidadeEconomiasCategoria();
totalCategoria += categoria.getQuantidadeEconomiasCategoria();
}
}
}
colecaoCategorias = null;
// Residencial
if (!qtdResidencial.equals(""))
cobrancaDocumentoTxt.append(Util.adicionarZerosEsquedaNumero(3, qtdResidencial));
else
cobrancaDocumentoTxt.append(Util.completaString("", 3));
// Comercial
if (!qtdComercial.equals(""))
cobrancaDocumentoTxt.append(Util.adicionarZerosEsquedaNumero(3, qtdComercial));
else
cobrancaDocumentoTxt.append(Util.completaString("", 3));
// Industrial
if (!qtdIndustrial.equals(""))
cobrancaDocumentoTxt.append(Util.adicionarZerosEsquedaNumero(3, qtdIndustrial));
else
cobrancaDocumentoTxt.append(Util.completaString("", 3));
// Publico
if (!qtdPublico.equals(""))
cobrancaDocumentoTxt.append(Util.adicionarZerosEsquedaNumero(3, qtdPublico));
else
cobrancaDocumentoTxt.append(Util.completaString("", 3));
//******************************************************
// Codigo da Situacao da Ligacao de Agua
cobrancaDocumentoTxt.append(Util.completaString(
emitirDocumentoCobrancaHelper.getIdLigacaoAguaSituacao().toString(), 1));
//******************************************************
// Codigo da Situacao da Ligacao do Esgoto
cobrancaDocumentoTxt.append(Util.completaString(
emitirDocumentoCobrancaHelper.getIdLigacaoEsgotoSituacao().toString(), 1));
//******************************************************
// Data de Emissao Ordem de Corte
if (emitirDocumentoCobrancaHelper.getEmissao() != null)
cobrancaDocumentoTxt.append(
Util.formatarData(emitirDocumentoCobrancaHelper.getEmissao()));
else
cobrancaDocumentoTxt.append(Util.completaString("", 10));
//******************************************************
// Numero do Hidrometro
String numeroHidrometro = getControladorAtendimentoPublico()
.pesquisarNumeroHidrometroLigacaoAgua(emitirDocumentoCobrancaHelper.getIdImovel());
if (numeroHidrometro != null)
cobrancaDocumentoTxt.append(Util.completaString(numeroHidrometro, 10));
else
cobrancaDocumentoTxt.append(Util.completaString("", 10));
//******************************************************
// Grupo de Cobranca
cobrancaDocumentoTxt.append(Util.completaString(
emitirDocumentoCobrancaHelper.getIdCobrancaGrupo().toString(), 2));
//******************************************************
// Data de Emissao Aviso de Corte
if (emitirDocumentoCobrancaHelper.getDataEmissaoPredecessor() != null)
cobrancaDocumentoTxt.append(
Util.formatarData(emitirDocumentoCobrancaHelper.getDataEmissaoPredecessor()));
else
cobrancaDocumentoTxt.append(Util.completaString("", 10));
//******************************************************
// Sequencial de impress�o
cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(
Util.retornaSequencialFormatado(sequencialImpressao), 7));
//******************************************************
// Ciclo
String ciclo = "";
if (idCronogramaAtividadeAcaoCobranca != null) {
if (cobrancaAcaoAtividadeCronograma.getCobrancaAcaoCronograma() != null) {
if (cobrancaAcaoAtividadeCronograma.getCobrancaAcaoCronograma()
.getCobrancaGrupoCronogramaMes() != null) {
ciclo = Util.formatarAnoMesParaMesAno(
cobrancaAcaoAtividadeCronograma.getCobrancaAcaoCronograma()
.getCobrancaGrupoCronogramaMes().getAnoMesReferencia());
}
}
}
cobrancaDocumentoTxt.append(Util.completaString(ciclo, 7));
//******************************************************
// Perfil do Imovel
cobrancaDocumentoTxt.append(Util.completaString(
emitirDocumentoCobrancaHelper.getDescricaoImovelPerfil(), 20));
//******************************************************
// CAS - Nome da Unidade de Negocio
String nomeUnidadeNegocio = "";
Integer idUnidadeNegocio = getControladorLocalidade().pesquisarIdUnidadeNegocioParaLocalidade(
emitirDocumentoCobrancaHelper.getIdLocalidade());
if (idUnidadeNegocio != null) {
FiltroUnidadeNegocio filtroUnidadeNegocio = new FiltroUnidadeNegocio();
filtroUnidadeNegocio.adicionarParametro(new ParametroSimples(
FiltroUnidadeNegocio.ID, idUnidadeNegocio));
UnidadeNegocio unidadeNegocio = (UnidadeNegocio) Util.retonarObjetoDeColecao(
getControladorUtil().pesquisar(filtroUnidadeNegocio, UnidadeNegocio.class.getName()));
if (unidadeNegocio != null)
nomeUnidadeNegocio = unidadeNegocio.getNome();
}
cobrancaDocumentoTxt.append(Util.completaString(nomeUnidadeNegocio, 50));
//******************************************************
// Quantidade de Contas em Debito
cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(
"" + colecaoCobrancaDocumentoItem.size(), 3));
//******************************************************
// Documentos - Dados da Conta
/*
* Selecionar os itens do documento de cobran�a
* correspondentes a conta e ordenar por ano/m�s de
* refer�ncia da conta.
*/
Iterator iteratorColecaoCobrancaDocumentoItem = null;
CobrancaDocumentoItem cobrancaDocumentoItem = null;
int countImpressao = colecaoCobrancaDocumentoItem.size() - 11;
/*
* Caso a quantidade de itens
* selecionados seja superior a 12
* [SB0001 - Calcular Valor e Data
* de Vencimento Anterior]
*
* Caso contr�rio: Dados do primeiro
* e segundo itens selecionados
*/
if (colecaoCobrancaDocumentoItem.size() > 12) {
CalcularValorDataVencimentoAnteriorHelper calcularValorDataVencimentoAnteriorHelper = this
.calcularValorDataVencimentoAnterior(colecaoCobrancaDocumentoItem, 12);
cobrancaDocumentoTxt.append("DEB.ATE");
// Data de Vencimento da Conta
cobrancaDocumentoTxt.append(Util.formatarData(
calcularValorDataVencimentoAnteriorHelper.getDataVencimentoAnterior()));
// Valor do Item da Conta
cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(
Util.formatarMoedaReal(calcularValorDataVencimentoAnteriorHelper.getValorAnterior()), 14));
} else {
iteratorColecaoCobrancaDocumentoItem = colecaoCobrancaDocumentoItem.iterator();
cobrancaDocumentoItem = null;
cobrancaDocumentoItem = (CobrancaDocumentoItem) iteratorColecaoCobrancaDocumentoItem.next();
// Mes/Ano Referencia da conta
cobrancaDocumentoTxt.append(Util.completaString(Util.formatarAnoMesParaMesAno(
cobrancaDocumentoItem.getContaGeral().getConta().getReferencia()), 7));
// Data de Vencimento da Conta
cobrancaDocumentoTxt.append(Util.formatarData(
cobrancaDocumentoItem.getContaGeral().getConta().getDataVencimentoConta()));
// Valor do Item da Conta
cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(
Util.formatarMoedaReal(cobrancaDocumentoItem.getValorItemCobrado()), 14));
}
if (countImpressao <= 0) {
iteratorColecaoCobrancaDocumentoItem = colecaoCobrancaDocumentoItem.iterator();
cobrancaDocumentoItem = null;
int countRegistros = 0;
while (iteratorColecaoCobrancaDocumentoItem.hasNext()) {
cobrancaDocumentoItem = (CobrancaDocumentoItem) iteratorColecaoCobrancaDocumentoItem.next();
if (countRegistros > 0) {
// Mes/Ano Referencia da conta
cobrancaDocumentoTxt.append(Util.completaString(Util.formatarAnoMesParaMesAno(
cobrancaDocumentoItem.getContaGeral().getConta().getReferencia()), 7));
// Data de Vencimento da Conta
cobrancaDocumentoTxt.append(Util.formatarData(
cobrancaDocumentoItem.getContaGeral().getConta().getDataVencimentoConta()));
// Valor do Item da Conta
cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(
Util.formatarMoedaReal(cobrancaDocumentoItem.getValorItemCobrado()), 14));
}
countRegistros++;
}
if (countRegistros < 12) {
for (int x = 0; x < (12 - countRegistros); x++) {
cobrancaDocumentoTxt.append(Util.completaString("", 31));
}
}
} else {
while (countImpressao < colecaoCobrancaDocumentoItem.size()) {
cobrancaDocumentoItem = (CobrancaDocumentoItem) ((List) colecaoCobrancaDocumentoItem).get(countImpressao);
//Mes/Ano Referencia da conta
cobrancaDocumentoTxt.append(Util.completaString(Util.formatarAnoMesParaMesAno(
cobrancaDocumentoItem.getContaGeral().getConta().getReferencia()), 7));
// Data de Vencimento da Conta
cobrancaDocumentoTxt.append(Util.formatarData(
cobrancaDocumentoItem.getContaGeral().getConta().getDataVencimentoConta()));
// Valor do Item da Conta
cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(
Util.formatarMoedaReal(cobrancaDocumentoItem.getValorItemCobrado()), 14));
countImpressao++;
}
}
//******************************************************
// Valor total do Documento de Cobranca
cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(
Util.formatarMoedaReal(emitirDocumentoCobrancaHelper.getValorDocumento()), 14));
//******************************************************
// Representacao Numerica do Codigo de Barras
String representacaoNumericaCodBarra = "";
representacaoNumericaCodBarra = this.getControladorArrecadacao()
.obterRepresentacaoNumericaCodigoBarra(
5,
emitirDocumentoCobrancaHelper.getValorDocumento(),
localidade.getId(),
emitirDocumentoCobrancaHelper.getIdImovel(),
null, null, null, null,
String.valueOf(emitirDocumentoCobrancaHelper.getNumeroSequenciaDocumento()),
acaoCobranca.getDocumentoTipo().getId(),
null, null, null);
// Formata a representacao numerica do Codigo 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);
//******************************************************
// Codigo de Barras
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));
//Vivianne Sousa 23/02/2010
String txtString = cobrancaDocumentoTxt.toString();
txtString = txtString.replace('\'',' ');
txtString = txtString.replace('`',' ');
repositorioCobranca.inserirDocumentoCobrancaImpressao(
cobrancaDocumento.getId(),
txtString,
idComandoAtividadeAcaoCobranca,
idCronogramaAtividadeAcaoCobranca,
sequencialImpressao);
}
// adiciona o id da conta e o sequencial no para serem atualizados
mapAtualizaSequencial.put(
emitirDocumentoCobrancaHelper.getIdDocumentoCobranca(),sequencialImpressao);
colecaoCobrancaDocumentoItem = null;
}
}
} else {
flagFimPesquisa = true;
}
repositorioCobranca.atualizarSequencialCobrancaDocumentoImpressao(mapAtualizaSequencial);
mapAtualizaSequencial.clear();
mapAtualizaSequencial = null;
colecaoEmitirDocumentoCobranca = null;
}
System.out.println("*************************************");
System.out.println("FIM DO GERAR CORTE FISICO IMPRESSAO COMPESA");
System.out.println("*************************************");
} catch (ErroRepositorioException ex) {
ex.printStackTrace();
throw new ControladorException("erro.sistema", ex);
}
}
/**
* [UC0251] Gerar Atividade de A��o de Cobran�a
*
* @author Raphael Rossiter
* @date 20/07/2009
*
* @param helper
* @throws ControladorException
*/
public void gerarAtividadeAcaoCobrancaEmissaoDocumento(EmissaoDocumentoCobrancaHelper helper)
throws ControladorException{
//7.1 para as a��es aviso de corte
if (helper.getAcaoCobranca().getId().equals(CobrancaAcao.AVISO_CORTE) ||
helper.getAcaoCobranca().getId().equals(CobrancaAcao.AVISO_CORTE_A_REVELIA)) {
// [UC0349 Emitir Documento fr Cobran�a - AvisoCorte]
emitirDocumentoCobranca(helper.getCobrancaAcaoAtividadeCronograma(),
helper.getCobrancaAcaoAtividadeComando(), helper.getDataAtual(), helper.getAcaoCobranca(),
helper.getGrupoCobranca(), helper.getCriterioCobranca());
}
// 7.2 para as a��es corte administrativo ou corte fisico
if (helper.getAcaoCobranca().getId().equals(CobrancaAcao.CORTE_ADMINISTRATIVO) ||
helper.getAcaoCobranca().getId().equals(CobrancaAcao.CORTE_FISICO) ||
helper.getAcaoCobranca().getId().equals(CobrancaAcao.CORTE_ADMINISTRATIVO_LIGADO_A_REVELIA) ||
helper.getAcaoCobranca().getId().equals(CobrancaAcao.CORTE_FISICO_LIGADO_A_REVELIA) ||
helper.getAcaoCobranca().getId().equals(CobrancaAcao.CORTE_FISICO_PUBLICO) ||
helper.getAcaoCobranca().getId().equals(CobrancaAcao.RECORTE) ||
helper.getAcaoCobranca().getId().equals(CobrancaAcao.SUPRESSAO_PARCIAL) ||
helper.getAcaoCobranca().getId().equals(CobrancaAcao.SUPRESSAO_TOTAL) ||
helper.getAcaoCobranca().getId().equals(CobrancaAcao.FISCALIZACAO_SITUACAO_ESGOTO)) {
// [UC0349 Emitir Documento fr Cobran�a - AvisoCorte]
emitirDocumentoCobrancaOrdemCorte(helper.getCobrancaAcaoAtividadeCronograma(),
helper.getCobrancaAcaoAtividadeComando(), helper.getDataAtual(), helper.getAcaoCobranca(),
helper.getGrupoCobranca(), helper.getCriterioCobranca());
}
/*// 7.3 para as a��es supress�o parcial ou supress�o total
if (helper.getAcaoCobranca().getId().equals(CobrancaAcao.SUPRESSAO_PARCIAL) ||
helper.getAcaoCobranca().getId().equals(CobrancaAcao.SUPRESSAO_TOTAL)) {
// [UC0349 Emitir Documento fr Cobran�a - AvisoCorte]
emitirDocumentoCobrancaOrdemSupressao(helper.getCobrancaAcaoAtividadeCronograma(),
helper.getCobrancaAcaoAtividadeComando(), helper.getDataAtual(), helper.getAcaoCobranca(),
helper.getGrupoCobranca(), helper.getCriterioCobranca());
}*/
// 7.4 para as a��es fiscaliza��o suprimido ou fiscaliza��o
// cortado
if (helper.getAcaoCobranca().getId().equals(CobrancaAcao.FISCALIZACAO_SUPRIMIDO) ||
helper.getAcaoCobranca().getId().equals(CobrancaAcao.FISCALIZACAO_CORTADO) ||
helper.getAcaoCobranca().getId().equals(CobrancaAcao.FISCALIZACAO_FACTIVEL) ||
helper.getAcaoCobranca().getId().equals(CobrancaAcao.FISCALIZACAO_POTENCIAL) ||
helper.getAcaoCobranca().getId().equals(CobrancaAcao.FISCALIZACAO_LIGADO) ||
helper.getAcaoCobranca().getId().equals(CobrancaAcao.FISCALIZACAO_TOTAL) ||
helper.getAcaoCobranca().getId().equals(CobrancaAcao.FISCALIZACAO_LIGADO_A_REVELIA)) {
// [UC0349 Emitir Documento fr Cobran�a - AvisoCorte]
emitirDocumentoCobrancaOrdemFiscalizacao(helper.getCobrancaAcaoAtividadeCronograma(),
helper.getCobrancaAcaoAtividadeComando(), helper.getDataAtual(), helper.getAcaoCobranca(),
helper.getGrupoCobranca(), helper.getCriterioCobranca());
}
//**************************************************************
// Autor: Ivan Sergio
// Data: 18/05/2009
// CRC1902
//**************************************************************
if (helper.getAcaoCobranca().getId().equals(CobrancaAcao.INSPECAO_LIGACOES)) {
// [UC0904] Gerar TXT Inspecao Ligacoes
gerarTxtInspecaoLigacoes(helper.getCobrancaAcaoAtividadeCronograma(),
helper.getCobrancaAcaoAtividadeComando(), helper.getDataAtual(), helper.getAcaoCobranca(),
helper.getGrupoCobranca(), helper.getCriterioCobranca());
}
//**************************************************************
// 7.5 para as a��es carta ligado ou carta cortado
if (helper.getAcaoCobranca().getId().equals(CobrancaAcao.CARTA_COBRANCA_SUPRIMIDO) ||
helper.getAcaoCobranca().getId().equals(CobrancaAcao.CARTA_COBRANCA_CORTADO) ||
helper.getAcaoCobranca().getId().equals(CobrancaAcao.CARTA_TARIFA_SOCIAL_LIGADO) ||
helper.getAcaoCobranca().getId().equals(CobrancaAcao.CARTA_TARIFA_SOCIAL_CORTADO) ||
helper.getAcaoCobranca().getId().equals(CobrancaAcao.CARTA_COBRANCA_LIGADO) ||
helper.getAcaoCobranca().getId().equals(CobrancaAcao.CARTA_COBRANCA_LIGADO_A_REVELIA) ||
helper.getAcaoCobranca().getId().equals(CobrancaAcao.CARTA_TARIFA_SOCIAL_LIGADO_A_REVELIA)) {
// [UC0575] Emitir Aviso de Cobran�a
emitirAvisoCobranca(helper.getCobrancaAcaoAtividadeCronograma(),
helper.getCobrancaAcaoAtividadeComando(), helper.getDataAtual(), helper.getAcaoCobranca(),
helper.getGrupoCobranca(), helper.getCriterioCobranca());
}
// 7.4 para as a��es fiscaliza��o suprimido ou fiscaliza��o
// cortado
if (helper.getAcaoCobranca().getId().equals(
CobrancaAcao.CARTA_COBRANCA_PARCELAMENTO)) {
// [UC0576 Emitir Parcelamento em atraso]
emitirParcelamentoEmAtraso(helper.getCobrancaAcaoAtividadeCronograma(),
helper.getCobrancaAcaoAtividadeComando(), helper.getDataAtual(), helper.getAcaoCobranca(),
helper.getGrupoCobranca(), helper.getCriterioCobranca());
}
// 7.5 Para as a��es de Carta de Campanha de Parcelamento
if (helper.getAcaoCobranca().getId().equals(
CobrancaAcao.CARTA_FINAL_DE_ANO)) {
emitirCartasCampanha(helper.getCobrancaAcaoAtividadeCronograma(),
helper.getCobrancaAcaoAtividadeComando(), helper.getDataAtual(), helper.getAcaoCobranca(),
helper.getGrupoCobranca(), helper.getCriterioCobranca());
}
}
/**
*
* Este caso de uso permite a emiss�o de um ou mais documentos de cobran�a
*
* [UC0349] Emitir Documento de Cobran�a
*
* @author Vivianne Sousa
* @data 14/12/2009
*
* @param
* @return void
*/
public void emitirDocumentoCobranca(
CobrancaAcaoAtividadeCronograma cobrancaAcaoAtividadeCronograma,
CobrancaAcaoAtividadeComando cobrancaAcaoAtividadeComando,
Date dataAtualPesquisa, CobrancaAcao acaoCobranca,
CobrancaGrupo grupoCobranca, CobrancaCriterio cobrancaCriterio)
throws ControladorException {
try{
Integer idCobrancaAcaoAtividadeComando = cobrancaAcaoAtividadeComando != null ? cobrancaAcaoAtividadeComando.getId() : null;
Integer idCobrancaAcaoAtividadeCronograma = cobrancaAcaoAtividadeCronograma != null ? cobrancaAcaoAtividadeCronograma.getId() : null;
//deleta os dados da tabela COBRANCA_DOCUMENTO_IMPRESSAO
//para n�o gerar dados duplicados quando reiniciar o batch
repositorioCobranca.deletarDocumentoCobrancaImpressao(idCobrancaAcaoAtividadeComando,
idCobrancaAcaoAtividadeCronograma);
//gera os dados da tabela COBRANCA_DOCUMENTO_IMPRESSAO
gerarDocumentoCobrancaImpressaoAvisoCorte(cobrancaAcaoAtividadeCronograma,
cobrancaAcaoAtividadeComando,dataAtualPesquisa, acaoCobranca,
grupoCobranca, cobrancaCriterio);
//gerar arquivo com os dados da tabela COBRANCA_DOCUMENTO_IMPRESSAO
emitirDocumentoCobranca(cobrancaAcaoAtividadeCronograma,
cobrancaAcaoAtividadeComando, acaoCobranca, grupoCobranca);
} catch (ErroRepositorioException e) {
throw new ControladorException("erro.sistema", e);
}
}
/**
* Emitir Documento de Cobran�a � Corte Fisico
*
* @author Vivianne Sousa
* @date 23/02/2010
*/
public void gerarTxtCorteFisico(CobrancaAcaoAtividadeCronograma cobrancaAcaoAtividadeCronograma,
CobrancaAcaoAtividadeComando cobrancaAcaoAtividadeComando,
CobrancaAcao acaoCobranca, CobrancaGrupo grupoCobranca)throws ControladorException{
BufferedWriter out = null;
// ZipOutputStream zos = null;
File leitura = null;
try{
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();
}
// Definindo arquivo para escrita
Date dataAtual = new Date();
String nomeZip = "";
// caso seja cronograma
if (idCronogramaAtividadeAcaoCobranca != null) {
if (idAcaoCobranca.equals(CobrancaAcao.CORTE_FISICO)) {
nomeZip = "NOVA_ORDEM_CORTE_FISICO_GRUPO_"
+ grupoCobranca.getId() + "_"
+ Util.formatarData(dataAtual) + Util.formatarHoraSemDataSemDoisPontos(dataAtual);
} else if (idAcaoCobranca.equals(CobrancaAcao.CORTE_FISICO_LIGADO_A_REVELIA)) {
nomeZip = "NOVA_ORDEM_CORTE_FISICO_LIGADO_A_REVELIA_GRUPO_"
+ grupoCobranca.getId() + "_"
+ Util.formatarData(dataAtual) + Util.formatarHoraSemDataSemDoisPontos(dataAtual);
} else if (idAcaoCobranca.equals(CobrancaAcao.CORTE_FISICO_PUBLICO)) {
nomeZip = "NOVA_ORDEM_CORTE_FISICO_PUBLICO_GRUPO_"
+ grupoCobranca.getId() + "_"
+ Util.formatarData(dataAtual) + Util.formatarHoraSemDataSemDoisPontos(dataAtual);
} else if (idAcaoCobranca.equals(CobrancaAcao.RECORTE)) {
nomeZip = "NOVA_ORDEM_RECORTE_GRUPO_"
+ grupoCobranca.getId() + "_"
+ Util.formatarData(dataAtual) + Util.formatarHoraSemDataSemDoisPontos(dataAtual);
}
// para o caso de eventual
} 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
System.out.println("***************************************");
System.out.println("INICO DA CRIACAO DO ARQUIVO");
System.out.println("***************************************");
// criar o arquivo zip
// File compactado = new File(nomeZip + ".zip"); // nomeZip
// zos = new ZipOutputStream(new FileOutputStream(compactado));
leitura = new File(nomeZip + ".txt");
out = new BufferedWriter(new OutputStreamWriter(
new FileOutputStream(leitura.getAbsolutePath())));
System.out.println("***************************************");
System.out.println("ENTROU NO CORTE FISICO");
System.out.println("***************************************");
Collection colecaoCobrancaDocumento = repositorioCobranca
.pesquisarDocumentoCobrancaImpressao(
idComandoAtividadeAcaoCobranca,idCronogramaAtividadeAcaoCobranca);
System.out.println("***************************************");
System.out.println("QTD DE COBRANCA DOCUMENTO:" + colecaoCobrancaDocumento.size());
System.out.println("***************************************");
if(colecaoCobrancaDocumento != null && !colecaoCobrancaDocumento.isEmpty()){
Iterator iterCobrancaDocumentoImpressao = colecaoCobrancaDocumento.iterator();
while (iterCobrancaDocumentoImpressao.hasNext()) {
String linhaTxt = (String) iterCobrancaDocumentoImpressao.next();
StringBuilder cobrancaDocumentoTxt = new StringBuilder();
cobrancaDocumentoTxt.append(linhaTxt);
cobrancaDocumentoTxt.append(System.getProperty("line.separator"));
out.write(cobrancaDocumentoTxt.toString());
}
}
out.flush();
System.out.println("***************************************");
System.out.println("FIM DA CRIACAO DO ARQUIVO");
System.out.println("***************************************");
// //deleta registros apos gera��o do txt
// repositorioCobranca.deletarDocumentoCobrancaImpressao(idComandoAtividadeAcaoCobranca,
// idCronogramaAtividadeAcaoCobranca);
}catch (ErroRepositorioException ex) {
ex.printStackTrace();
throw new ControladorException("erro.sistema", ex);
} catch (IOException e) {
e.printStackTrace();
throw new ControladorException("erro.sistema", e);
} catch (Exception e) {
e.printStackTrace();
throw new ControladorException("erro.sistema", e);
} finally {
try{
out.close();
// ZipUtil.adicionarArquivo(zos, leitura);
// close the stream
// zos.close();
// leitura.delete();
} catch (IOException e) {
e.printStackTrace();
throw new ControladorException("erro.sistema", e);
}
}
}
/**
* Emitir Documento de Cobran�a � Corte Fisico
*
* @author Vivianne Sousa
* @date 23/02/2010
*/
public void emitirDocumentoCobrancaCorteFisico(
CobrancaAcaoAtividadeCronograma cobrancaAcaoAtividadeCronograma,
CobrancaAcaoAtividadeComando cobrancaAcaoAtividadeComando,
Date dataAtualPesquisa, CobrancaAcao acaoCobranca,
CobrancaGrupo grupoCobranca, CobrancaCriterio cobrancaCriterio)
throws ControladorException {
try{
Integer idCobrancaAcaoAtividadeComando = cobrancaAcaoAtividadeComando != null ? cobrancaAcaoAtividadeComando.getId() : null;
Integer idCobrancaAcaoAtividadeCronograma = cobrancaAcaoAtividadeCronograma != null ? cobrancaAcaoAtividadeCronograma.getId() : null;
//deleta os dados da tabela COBRANCA_DOCUMENTO_IMPRESSAO
//para n�o gerar dados duplicados quando reiniciar o batch
repositorioCobranca.deletarDocumentoCobrancaImpressao(idCobrancaAcaoAtividadeComando,
idCobrancaAcaoAtividadeCronograma);
//gera os dados da tabela COBRANCA_DOCUMENTO_IMPRESSAO
gerarDocumentoCobrancaImpressaoCorteFisico(cobrancaAcaoAtividadeCronograma,
cobrancaAcaoAtividadeComando,dataAtualPesquisa, acaoCobranca,
grupoCobranca, cobrancaCriterio);
//gerar arquivo com os dados da tabela COBRANCA_DOCUMENTO_IMPRESSAO
gerarTxtCorteFisico(cobrancaAcaoAtividadeCronograma,
cobrancaAcaoAtividadeComando, acaoCobranca, grupoCobranca);
} catch (ErroRepositorioException e) {
throw new ControladorException("erro.sistema", e);
}
}
}