package gcom.faturamento;
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.math.RoundingMode;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collection;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.zip.ZipOutputStream;
import javax.ejb.EJBException;
import javax.ejb.SessionBean;
import br.com.danhil.BarCode.Interleaved2of5;
import gcom.arrecadacao.pagamento.FiltroPagamento;
import gcom.arrecadacao.pagamento.Pagamento;
import gcom.atendimentopublico.ligacaoagua.FiltroLigacaoAgua;
import gcom.atendimentopublico.ligacaoagua.LigacaoAgua;
import gcom.atendimentopublico.ligacaoagua.LigacaoAguaSituacao;
import gcom.batch.UnidadeProcessamento;
import gcom.cadastro.imovel.Categoria;
import gcom.cadastro.imovel.Imovel;
import gcom.cadastro.imovel.ImovelContaEnvio;
import gcom.cadastro.imovel.ImovelPerfil;
import gcom.cadastro.imovel.Subcategoria;
import gcom.cadastro.localidade.FiltroLocalidade;
import gcom.cadastro.localidade.Localidade;
import gcom.cadastro.localidade.Quadra;
import gcom.cadastro.localidade.SetorComercial;
import gcom.cadastro.sistemaparametro.NacionalFeriado;
import gcom.cadastro.sistemaparametro.SistemaParametro;
import gcom.cobranca.CobrancaForma;
import gcom.cobranca.bean.ContaValoresHelper;
import gcom.cobranca.bean.ObterDebitoImovelOuClienteHelper;
import gcom.cobranca.parcelamento.Parcelamento;
import gcom.fachada.Fachada;
import gcom.faturamento.bean.CalcularValoresAguaEsgotoHelper;
import gcom.faturamento.bean.DebitoCobradoAgrupadoHelper;
import gcom.faturamento.bean.EmitirContaHelper;
import gcom.faturamento.consumotarifa.ConsumoTarifa;
import gcom.faturamento.conta.Conta;
import gcom.faturamento.conta.ContaCategoria;
import gcom.faturamento.conta.ContaCategoriaConsumoFaixa;
import gcom.faturamento.conta.ContaCategoriaConsumoFaixaHistorico;
import gcom.faturamento.conta.ContaCategoriaHistorico;
import gcom.faturamento.conta.ContaImpressao;
import gcom.faturamento.conta.ContaMotivoRetificacao;
import gcom.faturamento.conta.ContaTipo;
import gcom.faturamento.conta.FiltroContaImpressao;
import gcom.faturamento.credito.CreditoRealizado;
import gcom.faturamento.debito.DebitoACobrar;
import gcom.faturamento.debito.DebitoACobrarGeral;
import gcom.faturamento.debito.DebitoCobrado;
import gcom.faturamento.debito.DebitoCreditoSituacao;
import gcom.faturamento.debito.DebitoTipo;
import gcom.relatorio.faturamento.conta.ContaLinhasDescricaoServicosTarifasTotalHelper;
import gcom.seguranca.acesso.usuario.Usuario;
import gcom.util.CodigoBarras;
import gcom.util.ConstantesSistema;
import gcom.util.ControladorException;
import gcom.util.ErroRepositorioException;
import gcom.util.Util;
import gcom.util.ZipUtil;
import gcom.util.filtro.ParametroNulo;
import gcom.util.filtro.ParametroSimples;
/**
* Controlador Faturamento CAERN
*
* @author Raphael Rossiter
* @date 20/12/2006
*/
public class ControladorFaturamentoCAERNSEJB extends ControladorFaturamento
implements SessionBean {
private static final long serialVersionUID = 1L;
// ==============================================================================================================
// M�TODOS EXCLUSIVOS DA CAERN
// ==============================================================================================================
/**
* [UC0482]Emitir 2� Via de Conta
*
* @author Vivianne Sousa
* @date 08/01/2007
*
* @param colecaoConta
* @throws ControladorException
*/
public Collection<EmitirContaHelper> emitir2ViaContas(
Collection idsContaEP, boolean cobrarTaxaEmissaoConta,
Short contaSemCodigoBarras) throws ControladorException {
Collection<EmitirContaHelper> colecaoEmitirContaHelper = new ArrayList();
Iterator iter = idsContaEP.iterator();
while (iter.hasNext()) {
Integer idContaEP = (Integer) iter.next();
Collection colectionConta;
try {
colectionConta = this.repositorioFaturamento
.pesquisarContaERota(idContaEP);
} catch (ErroRepositorioException ex) {
sessionContext.setRollbackOnly();
throw new ControladorException("erro.sistema", ex);
}
EmitirContaHelper emitirContaHelper = (EmitirContaHelper) colectionConta
.iterator().next();
SistemaParametro sistemaParametro = getControladorUtil()
.pesquisarParametrosDoSistema();
String nomeCliente = "";
if (emitirContaHelper.getNomeImovel() != null
&& !emitirContaHelper.getNomeImovel().equals("")) {
nomeCliente = emitirContaHelper.getNomeImovel();
emitirContaHelper.setNomeCliente(nomeCliente);
}
// Linha 5
// --------------------------------------------------------------
// recupera endereco do im�vel
String enderecoImovel = "";
try {
enderecoImovel = getControladorEndereco()
.pesquisarEnderecoFormatado(
emitirContaHelper.getIdImovel());
} catch (ControladorException e1) {
e1.printStackTrace();
}
emitirContaHelper.setEnderecoImovel(enderecoImovel);
// Linha 6
// --------------------------------------------------------------
// inst�ncia um imovel com os dados da conta para recuperar a
// inscri��o que est� no objeto imovel
Imovel imovel = new Imovel();
Localidade localidade = new Localidade();
localidade.setId(emitirContaHelper.getIdLocalidade());
imovel.setLocalidade(localidade);
SetorComercial setorComercial = new SetorComercial();
setorComercial.setCodigo(emitirContaHelper
.getCodigoSetorComercialConta());
imovel.setSetorComercial(setorComercial);
Quadra quadra = new Quadra();
quadra.setNumeroQuadra(emitirContaHelper.getIdQuadraConta());
imovel.setQuadra(quadra);
imovel.setLote(emitirContaHelper.getLoteConta());
imovel.setSubLote(emitirContaHelper.getSubLoteConta());
// Inscri��o do im�vel
emitirContaHelper
.setInscricaoImovel(imovel.getInscricaoFormatada());
// Linha 7
// --------------------------------------------------------------
String idClienteResponsavel = "";
String enderecoClienteResponsavel = "";
Integer idImovelContaEnvio = emitirContaHelper
.getIdImovelContaEnvio();
// caso a cole��o de contas seja de entrega para o cliente
// respons�vel
if (idImovelContaEnvio != null
&& (idImovelContaEnvio
.equals(ImovelContaEnvio.ENVIAR_CLIENTE_RESPONSAVEL) || idImovelContaEnvio
.equals(ImovelContaEnvio.NAO_PAGAVEL_IMOVEL_PAGAVEL_RESPONSAVEL))) {
Integer idClienteResponsavelInteger = null;
idClienteResponsavelInteger = pesquisarIdClienteResponsavelConta(
emitirContaHelper.getIdConta(), false);
if (idClienteResponsavel != null
&& !idClienteResponsavel.equals("")) {
idClienteResponsavel = idClienteResponsavelInteger
.toString();
// [UC0085]Obter Endereco
enderecoClienteResponsavel = getControladorEndereco()
.pesquisarEnderecoClienteAbreviado(
idClienteResponsavelInteger);
}
}
emitirContaHelper.setIdClienteResponsavel(idClienteResponsavel);
emitirContaHelper
.setEnderecoClienteResponsavel(enderecoClienteResponsavel);
// Linha 8
// --------------------------------------------------------------
// [SB0002] - Determinar tipo de liga��o e tipo de Medi��o
Integer[] parmSituacao = determinarTipoLigacaoMedicao(emitirContaHelper);
Integer tipoLigacao = parmSituacao[0];
Integer tipoMedicao = parmSituacao[1];
// Linha 9
// --------------------------------------------------------------
// cria uma stringBuilder para recuperar o resultado do [SB0003]
// o tamanho da string que vem como resultado � de 20 posi��es
StringBuilder obterDadosConsumoMedicaoAnterior = null;
// chama o [SB0003] -Obter Dados do Consumo e Medi��o Anterior
// passando a quantidade de Meses Igual a 1
// e o tipo de liga��o e medi��o recuperados anteriormente
obterDadosConsumoMedicaoAnterior = obterDadosConsumoAnterior(emitirContaHelper, 1, tipoLigacao, tipoMedicao);
emitirContaHelper
.setDadosConsumoMes1(obterDadosConsumoMedicaoAnterior
.toString());
// chama o [SB0003] -Obter Dados do Consumo e Medi��o Anterior
// passando a quantidade de Meses Igual a 4
// e o tipo de liga��o e medi��o recuperados anteriormente
obterDadosConsumoMedicaoAnterior = obterDadosConsumoAnterior(emitirContaHelper, 4, tipoLigacao, tipoMedicao);
emitirContaHelper
.setDadosConsumoMes4(obterDadosConsumoMedicaoAnterior
.toString());
// Linha 10
// --------------------------------------------------------------
// chama o [SB0003] -Obter Dados do Consumo e Medi��o Anterior
// passando a quantidade de Meses Igual a 2
// e o tipo de liga��o e medi��o recuperados anteriormente
obterDadosConsumoMedicaoAnterior = obterDadosConsumoAnterior(emitirContaHelper, 2, tipoLigacao, tipoMedicao);
emitirContaHelper
.setDadosConsumoMes2(obterDadosConsumoMedicaoAnterior
.toString());
// chama o [SB0003] -Obter Dados do Consumo e Medi��o Anterior
// passando a quantidade de Meses Igual a 5
// e o tipo de liga��o e medi��o recuperados anteriormente
obterDadosConsumoMedicaoAnterior = obterDadosConsumoAnterior(emitirContaHelper, 5, tipoLigacao, tipoMedicao);
emitirContaHelper
.setDadosConsumoMes5(obterDadosConsumoMedicaoAnterior
.toString());
// Inicio Chamar Sub-Fluxo
// recupera os parametros da medi��o historico do
// [SB0004] - Obter Dados da Medi��o da Conta
Object[] parmsMedicaoHistorico = obterDadosMedicaoConta(
emitirContaHelper, tipoMedicao);
// Leitura Anterior
String leituraAnterior = "";
// Leitura Atual
String leituraAtual = "";
// Data Leitura Anterior
String dataLeituraAnterior = "";
// Leitura Anterior
String dataLeituraAtual = "";
// Leitura Situa��o Atual
// String leituraSituacaoAtual = "";
// Leitura Anormalidade Faturamento
String leituraAnormalidadeFaturamento = "";
if (parmsMedicaoHistorico != null) {
if (parmsMedicaoHistorico[0] != null) {
leituraAnterior = "" + (Integer) parmsMedicaoHistorico[0];
}
if (parmsMedicaoHistorico[1] != null) {
leituraAtual = "" + (Integer) parmsMedicaoHistorico[1];
}
if (parmsMedicaoHistorico[3] != null) {
dataLeituraAnterior = Util
.formatarData((Date) parmsMedicaoHistorico[3]);
}
if (parmsMedicaoHistorico[2] != null) {
dataLeituraAtual = Util
.formatarData((Date) parmsMedicaoHistorico[2]);
}
if (parmsMedicaoHistorico[4] != null) {
// leituraSituacaoAtual = ""
// + (Integer) parmsMedicaoHistorico[4];
}
if (parmsMedicaoHistorico[5] != null) {
leituraAnormalidadeFaturamento = ""
+ (Integer) parmsMedicaoHistorico[5];
}
}
emitirContaHelper.setDataLeituraAnterior(dataLeituraAnterior);
emitirContaHelper.setDataLeituraAtual(dataLeituraAtual);
String diasConsumo = "";
if (!dataLeituraAnterior.equals("") && !dataLeituraAtual.equals("")) {
// calcula a quantidade de dias de consumo que � a
// quantidade de dias
// entre a data de leitura
// anterior(parmsMedicaoHistorico[2]) e a data de leitura
// atual(parmsMedicaoHistorico[3])
diasConsumo = ""
+ Util.obterQuantidadeDiasEntreDuasDatas(
(Date) parmsMedicaoHistorico[3],
(Date) parmsMedicaoHistorico[2]);
}
// recupera os parametros de consumo faturamento e consumo m�dio
// di�rio
// [SB0005] - Obter Consumo Faturado e Consumo M�dio Di�rio
String[] parmsConsumo = obterConsumoFaturadoConsumoMedioDiario(
emitirContaHelper, tipoMedicao, diasConsumo);
String consumoFaturamento = parmsConsumo[0];
emitirContaHelper.setConsumoFaturamento(consumoFaturamento);
String consumoMedioDiario = parmsConsumo[1];
emitirContaHelper.setConsumoMedioDiario(consumoMedioDiario);
// Fim Chamar Sub-Fluxo
// Leitura Anterior
leituraAnterior = Util.completaString(leituraAnterior, 7);
emitirContaHelper.setLeituraAnterior(leituraAnterior);
// Leitura Atual
leituraAtual = Util.completaString(leituraAtual, 7);
emitirContaHelper.setLeituraAtual(leituraAtual);
// Dias de consumo
diasConsumo = Util.completaString(diasConsumo, 2);
emitirContaHelper.setDiasConsumo(diasConsumo);
// Linha 11
// --------------------------------------------------------------
// chama o [SB0003] -Obter Dados do Consumo e Medi��o Anterior
// passando a quantidade de Meses Igual a 3
// e o tipo de liga��o e medi��o recuperados anteriormente
obterDadosConsumoMedicaoAnterior = obterDadosConsumoAnterior(emitirContaHelper, 3, tipoLigacao, tipoMedicao);
emitirContaHelper
.setDadosConsumoMes3(obterDadosConsumoMedicaoAnterior
.toString());
// chama o [SB0003] -Obter Dados do Consumo e Medi��o Anterior
// passando a quantidade de Meses Igual a 6
// e o tipo de liga��o e medi��o recuperados anteriormente
obterDadosConsumoMedicaoAnterior = obterDadosConsumoAnterior(emitirContaHelper, 6, tipoLigacao, tipoMedicao);
emitirContaHelper
.setDadosConsumoMes6(obterDadosConsumoMedicaoAnterior
.toString());
// Linha 12
// --------------------------------------------------------------
// Inicio Chamar Sub-Fluxo
// recupera os parametros do consumo historico da conta
// [SB0006] - Obter Dados de Consumo da Conta
Object[] parmsConsumoHistorico = null;
String descricaoAbreviadaTipoConsumo = "";
String descricaoTipoConsumo = "";
String consumoMedio = "";
String descricaoAbreviadaAnormalidadeConsumo = "";
String descricaoAnormalidadeConsumo = "";
String consumoRateio = "";
// caso o tipo de ligacao for diferente de nulo
if (tipoLigacao != null) {
try {
parmsConsumoHistorico = getControladorMicromedicao()
.obterDadosConsumoConta(
emitirContaHelper.getIdImovel(),
emitirContaHelper.getAmReferencia(),
tipoLigacao);
} catch (ControladorException e) {
e.printStackTrace();
}
if (parmsConsumoHistorico != null) {
// descri��o abreviada tipo de consumo
if (parmsConsumoHistorico[0] != null) {
descricaoAbreviadaTipoConsumo = (String) parmsConsumoHistorico[0];
}
// descri��o tipo de consumo
if (parmsConsumoHistorico[1] != null) {
descricaoTipoConsumo = (String) parmsConsumoHistorico[1];
}
// Consumo m�dio
if (parmsConsumoHistorico[2] != null) {
consumoMedio = "" + (Integer) parmsConsumoHistorico[2];
}
// descri��o abreviada anormalidade de consumo
if (parmsConsumoHistorico[3] != null) {
descricaoAbreviadaAnormalidadeConsumo = (String) parmsConsumoHistorico[3];
}
// descri��o anormalidade de consumo
if (parmsConsumoHistorico[4] != null) {
descricaoAnormalidadeConsumo = (String) parmsConsumoHistorico[4];
}
// Consumo m�dio
if (parmsConsumoHistorico[5] != null) {
consumoRateio = "" + (Integer) parmsConsumoHistorico[5];
}
}
}
emitirContaHelper.setDescricaoTipoConsumo(descricaoTipoConsumo);
emitirContaHelper
.setDescricaoAnormalidadeConsumo(descricaoAnormalidadeConsumo);
// Fim Chamar Sub-Fluxo
// Linha 13
// --------------------------------------------------------------
// Inicio Chamar Sub-Fluxo
// soma a quantidades de economias da tabela contaCategoria
// [SB0007] - Obter Dados da Medi��o da Conta
Short quantidadeEconomiaConta = 0;
quantidadeEconomiaConta = obterQuantidadeEconomiasConta(
emitirContaHelper.getIdConta(), false);
emitirContaHelper.setQuantidadeEconomiaConta(""
+ quantidadeEconomiaConta);
// Fim Chamar Sub-Fluxo
// Consumo por Economia
// transforma o consumoFaturamento para um bigDecimal
BigDecimal consumoFaturadoBigDecimal = null;
if (consumoFaturamento != null && !consumoFaturamento.equals("")) {
consumoFaturadoBigDecimal = Util
.formatarMoedaRealparaBigDecimal(consumoFaturamento);
}
// transforma a quantidade de economias da conta para um
// bigDecimal
BigDecimal qtdEconomiasBigDecimal = null;
if (quantidadeEconomiaConta != null
&& !quantidadeEconomiaConta.equals("")) {
qtdEconomiasBigDecimal = Util
.formatarMoedaRealparaBigDecimal(""
+ quantidadeEconomiaConta);
}
String consumoEconomia = "";
if (consumoFaturadoBigDecimal != null
&& qtdEconomiasBigDecimal != null) {
BigDecimal consumoEconomiaBigDecimal = consumoFaturadoBigDecimal
.divide(qtdEconomiasBigDecimal, 2, RoundingMode.UP);
consumoEconomia = Util
.formatarMoedaReal(consumoEconomiaBigDecimal);
emitirContaHelper.setConsumoEconomia(consumoEconomia.substring(
0, (consumoEconomia.length() - 3)));
}
// Inicio Chamar Sub-Fluxo
// concatena os campos dos sub-fluxos anteriores
// [SB0008] - Obter Dados da Medi��o da Conta
StringBuilder codigoAuxiliar = new StringBuilder();
// leitura situa��o atual
// tipo de consumo
codigoAuxiliar.append(Util.completaString(
descricaoAbreviadaTipoConsumo, 1));
// tipo de contrato
codigoAuxiliar.append(Util.completaString("", 1));
// anormalidade de leitura
codigoAuxiliar.append(Util.completaString(
leituraAnormalidadeFaturamento, 2));
// anormalidade de consumo
codigoAuxiliar.append(Util.completaString(
descricaoAbreviadaAnormalidadeConsumo, 2));
// perfil do im�vel
if (emitirContaHelper.getIdImovelPerfil() != null) {
codigoAuxiliar.append(Util.completaString(""
+ emitirContaHelper.getIdImovelPerfil(), 1));
} else {
codigoAuxiliar.append(Util.completaString("", 1));
}
// dias do consumo
codigoAuxiliar.append(Util.completaString(diasConsumo, 2));
// Consumo medio do im�vel
codigoAuxiliar.append(Util.completaString(consumoMedio, 6));
// Fim Chamar Sub-Fluxo
emitirContaHelper
.setCodigoAuxiliarString(codigoAuxiliar.toString());
// chama o [SB0009] - Obter Mensagem de Rateio de Consumo Fixo
// de Esgoto
StringBuilder mesagemConsumo = obterMensagemRateioConsumo(
emitirContaHelper, consumoRateio, parmsMedicaoHistorico,
tipoMedicao);
// mensagem de rateio de consumo ou consumo fixo de esgoto
emitirContaHelper.setMensagemConsumoString(mesagemConsumo
.toString());
// Linha 16
// --------------------------------------------------------------
// chama o [SB0010] - Gerar Linhas da Descri��o dos Servi�os e
// Tarifas
Collection colecaoContaLinhasDescricaoServicosTarifasTotalHelper = gerarLinhasDescricaoServicoTarifasRelatorio(
emitirContaHelper, consumoRateio, parmsMedicaoHistorico,
tipoMedicao, false);
emitirContaHelper
.setColecaoContaLinhasDescricaoServicosTarifasTotalHelper(colecaoContaLinhasDescricaoServicosTarifasTotalHelper);
// Linha 17
// --------------------------------------------------------------
// cria um objeto conta para calcular o valor da conta
Conta conta = new Conta();
conta.setValorAgua(emitirContaHelper.getValorAgua());
conta.setValorEsgoto(emitirContaHelper.getValorEsgoto());
conta.setValorCreditos(emitirContaHelper.getValorCreditos());
conta.setDebitos(emitirContaHelper.getDebitos());
conta.setValorImposto(emitirContaHelper.getValorImpostos());
BigDecimal valorConta = conta.getValorTotalContaBigDecimal();
emitirContaHelper.setValorContaString(Util
.formatarMoedaReal(valorConta));
emitirContaHelper.setValorConta(valorConta);
if (contaSemCodigoBarras.equals(ConstantesSistema.SIM)
|| valorConta.compareTo(new BigDecimal("0.00")) == 0) {
emitirContaHelper.setContaSemCodigoBarras("1");
} else {
emitirContaHelper.setContaSemCodigoBarras("2");
}
if (contaSemCodigoBarras.equals(ConstantesSistema.NAO)){
FiltroPagamento filtroPagamento = new FiltroPagamento();
filtroPagamento.adicionarParametro(new ParametroSimples(
FiltroPagamento.CONTA_ID, idContaEP));
Collection colecaoPagamentos = Fachada.getInstancia().pesquisar(filtroPagamento, Pagamento.class.getName());
if (colecaoPagamentos != null && !colecaoPagamentos.isEmpty()){
emitirContaHelper.setContaSemCodigoBarras("1");
}
}
// chama o [SB0016] - Obter Mensagem da Conta em 3 Partes
String[] parmsPartesConta = obterMensagemConta3Partes(
emitirContaHelper, sistemaParametro);
// Linha 18
// --------------------------------------------------------------
emitirContaHelper.setPrimeiraParte(parmsPartesConta[0]);
// Linha 19
// --------------------------------------------------------------
emitirContaHelper.setSegundaParte(parmsPartesConta[1]);
// Linha 20
// --------------------------------------------------------------
emitirContaHelper.setTerceiraParte(parmsPartesConta[2]);
// Linha 21
// --------------------------------------------------------------
int anoMesReferenciaSubtraido = Util.subtrairMesDoAnoMes(
emitirContaHelper.getAmReferencia(), 1);
emitirContaHelper.setMesAnoFormatado(Util
.formatarAnoMesParaMesAno(anoMesReferenciaSubtraido));
// Linha 22
// --------------------------------------------------------------
Object[] parmsQualidadeAgua = null;
parmsQualidadeAgua = pesquisarParmsQualidadeAgua(emitirContaHelper);
// numero indice turbidez da qualidade agua
String numeroIndiceTurbidez = "";
// numero cloro residual da qualidade agua
String numeroCloroResidual = "";
// numero nitrato da qualidade agua
String numeroNitrato = "";
// numero qtd coliformes totais da qualidade agua
String numeroColiformesTotais = "";
// numero PH da qualidade agua
String numeroPH = "";
if (parmsQualidadeAgua != null) {
if (parmsQualidadeAgua[0] != null) {
numeroIndiceTurbidez = Util
.formatarMoedaReal((BigDecimal) parmsQualidadeAgua[0]);
}
if (parmsQualidadeAgua[1] != null) {
numeroCloroResidual = Util
.formatarMoedaReal((BigDecimal) parmsQualidadeAgua[1]);
}
if (parmsQualidadeAgua[2] != null) {
numeroNitrato = Util
.formatarMoedaReal((BigDecimal) parmsQualidadeAgua[2]);
}
if (parmsQualidadeAgua[3] != null) {
numeroColiformesTotais = Util
.formatarMoedaReal((BigDecimal) parmsQualidadeAgua[3]);
}
if (parmsQualidadeAgua[4] != null) {
numeroPH = Util
.formatarMoedaReal((BigDecimal) parmsQualidadeAgua[4]);
}
}
emitirContaHelper.setNumeroIndiceTurbidez(numeroIndiceTurbidez);
emitirContaHelper.setNumeroCloroResidual(numeroCloroResidual);
emitirContaHelper.setNumeroNitrato(numeroNitrato);
emitirContaHelper.setValorMedioColiformesTotais(numeroColiformesTotais);
emitirContaHelper.setValorMedioPh(numeroPH);
//Se valor da conta maior que o valor limite
//emite uma Ficha de Compensa��o(Boleto bancario)
if (sistemaParametro.getValorContaFichaComp() != null
&& !sistemaParametro.getValorContaFichaComp().equals(new BigDecimal("0.00"))
&& valorConta!= null && valorConta.compareTo(sistemaParametro.getValorContaFichaComp()) == 1){
//representa��o num�rica do c�digo de barras
//[SB0030 - Obter representa��o num�rica do c�digo de barras da Ficha de Compensa��o]
StringBuilder nossoNumero = obterNossoNumeroFichaCompensacao("1",emitirContaHelper.getIdConta().toString()) ;
String nossoNumeroSemDV = nossoNumero.toString().substring(0,17);
emitirContaHelper.setNossoNumero(nossoNumero.toString());
//RM100 - Colocar fixo o fator de vencimento 0000
//Date dataVencimentoMais90 = Util.adicionarNumeroDiasDeUmaData(new Date(),90);
//String fatorVencimento = obterFatorVencimento(dataVencimentoMais90);
String fatorVencimento = null;
String especificacaoCodigoBarra = CodigoBarras.
obterEspecificacaoCodigoBarraFichaCompensacao(
ConstantesSistema.CODIGO_BANCO_FICHA_COMPENSACAO,
ConstantesSistema.CODIGO_MOEDA_FICHA_COMPENSACAO,
emitirContaHelper.getValorConta(), nossoNumeroSemDV.toString(),
ConstantesSistema.CARTEIRA_FICHA_COMPENSACAO, fatorVencimento);
emitirContaHelper.setRepresentacaoNumericaCodBarraSemDigito(especificacaoCodigoBarra);
String representacaoNumericaCodigoBarraFichaCompensacao = CodigoBarras.obterRepresentacaoNumericaCodigoBarraFichaCompensacao(especificacaoCodigoBarra);
emitirContaHelper.setRepresentacaoNumericaCodBarraFormatada(
representacaoNumericaCodigoBarraFichaCompensacao);
}else{
// Linha 23
// --------------------------------------------------------------
// Considerar as contas do tipo d�bito autom�tico como tipo de conta normal
// [SB0018 - Gerar Linhas das DemaisContas]
Integer digitoVerificadorConta = new Integer(""
+ emitirContaHelper.getDigitoVerificadorConta());
// formata ano mes para mes ano
String anoMes = "" + emitirContaHelper.getAmReferencia();
String mesAno = anoMes.substring(4, 6) + anoMes.substring(0, 4);
String representacaoNumericaCodBarra = "";
representacaoNumericaCodBarra = this.getControladorArrecadacao()
.obterRepresentacaoNumericaCodigoBarra(3, valorConta,
emitirContaHelper.getIdLocalidade(),
emitirContaHelper.getIdImovel(), mesAno,
digitoVerificadorConta, null, null, null, null,
null, null, null);
// Linha 24
// 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);
emitirContaHelper
.setRepresentacaoNumericaCodBarraFormatada(representacaoNumericaCodBarraFormatada);
// Linha 25
String representacaoNumericaCodBarraSemDigito = representacaoNumericaCodBarra
.substring(0, 11)
+ representacaoNumericaCodBarra.substring(12, 23)
+ representacaoNumericaCodBarra.substring(24, 35)
+ representacaoNumericaCodBarra.substring(36, 47);
emitirContaHelper.setRepresentacaoNumericaCodBarraSemDigito(representacaoNumericaCodBarraSemDigito);
}
// Linha28
if (emitirContaHelper.getDataValidadeConta().compareTo(new Date()) == 1) {
emitirContaHelper.setDataValidade(Util.formatarData(emitirContaHelper.getDataValidadeConta()));
} else {
// soma 60 dias a data atual
Date dataValidadeConta = Util.adicionarNumeroDiasDeUmaData(new Date(), 60);
int ano = Util.getAno(dataValidadeConta);
int mes = Util.getMes(dataValidadeConta);
Calendar calendar = new GregorianCalendar();
calendar.set(Calendar.MONTH, mes - 1);
calendar.set(Calendar.YEAR, ano);
Collection colecaoNacionalFeriado = getControladorUtil().pesquisarFeriadosNacionais();
Collection colecaoDatasFeriados = new ArrayList();
Iterator iterNacionalFeriado = colecaoNacionalFeriado.iterator();
while (iterNacionalFeriado.hasNext()) {
NacionalFeriado nacionalFeriado = (NacionalFeriado) iterNacionalFeriado.next();
colecaoDatasFeriados.add(nacionalFeriado.getData());
}
calendar.set(Calendar.DAY_OF_MONTH, Util.obterUltimoDiaUtilMes(mes, ano, colecaoDatasFeriados));
dataValidadeConta = calendar.getTime();
emitirContaHelper.setDataValidade(Util.formatarData(dataValidadeConta));
}
Pagamento pagamento = getControladorArrecadacao().pesquisarPagamentoDeConta(idContaEP);
if (pagamento != null && pagamento.getValorPagamento().compareTo(valorConta) >= 0) {
emitirContaHelper.setContaPaga("1");
}
colecaoEmitirContaHelper.add(emitirContaHelper);
if (cobrarTaxaEmissaoConta) {
this.gerarDebitoACobrarTaxaEmissaoConta(emitirContaHelper
.getIdImovel(), emitirContaHelper.getAmReferencia());
}
}
return colecaoEmitirContaHelper;
}
/**
* Met�do respons�vel por emitir os txts das contas.
*
* [UC0348] Emitir Contas
*
* @author S�vio Luiz, Pedro Alexandre, Tiago Moreno
* @date 15/05/2006, 19/09/2006
*
* @param anoMesReferenciaFaturamento
* @param faturamentoGrupo
* @throws ControladorException
*/
public void emitirContas(Integer anoMesReferenciaFaturamento,
FaturamentoGrupo faturamentoGrupo, int idFuncionalidadeIniciada,
int tipoConta, Integer idEmpresa,
Short indicadorEmissaoExtratoFaturamento)
throws ControladorException {
int idUnidadeIniciada = 0;
// -------------------------
//
// Registrar o in�cio do processamento da Unidade de
// Processamento
// do Batch
//
// -------------------------
idUnidadeIniciada = getControladorBatch()
.iniciarUnidadeProcessamentoBatch(idFuncionalidadeIniciada,
UnidadeProcessamento.FUNCIONALIDADE,
(idEmpresa == null ? 0 : idEmpresa));
try {
int quantidadeContas = 0;
final int quantidadeRegistros = 1000;
int numeroIndice = 0;
try {
// recebe todos as contas da lista
StringBuilder contasTxtLista = null;
Map<Integer, Integer> mapAtualizaSequencial = null;
// i=0;Cole��o de contas com estouros de consumo
// i=1;Cole��o de contas com baixo consumo
// i=2;Cole��o de contas com d�bito autom�tico
// i=3;Cole��o de contas com entrega para o cliente
// respons�vel
// i=4;Cole��o de contas com entrega para o cliente
// respons�vel
// i=5;Cole��o de contas normais
try {
System.out.println("###########################################");
System.out.println("###########################################");
System.out.println("###### ENTROU NO EMITIR CONTAS CAERN ######");
System.out.println("###########################################");
System.out.println("###########################################");
boolean flagTerminou = false;
numeroIndice = 0;
Integer sequencialImpressao = 0;
Integer sequencialCarta = 0;
Collection colecaoConta = null;
Collection colecaoContaFichaCompensacao = null;
boolean flagPesquisarFichaCompensacao = false;
contasTxtLista = new StringBuilder();
// cartasTxtListaConta = new StringBuilder();
SistemaParametro sistemaParametro = getControladorUtil()
.pesquisarParametrosDoSistema();
if(sistemaParametro.getValorContaFichaComp() != null &&
!sistemaParametro.getValorContaFichaComp().equals(new BigDecimal("0.00"))){
flagPesquisarFichaCompensacao = true;
}
int contadorTeste = 0;
while (!flagTerminou) {
// map que armazena o sequencial e o numero da
// conta para no final atualizar todos os
// sequencias
mapAtualizaSequencial = new HashMap();
Collection colecaoContaParms = null;
Collection colecaoContaParmsFichaCompensacao = null;
if(flagPesquisarFichaCompensacao){
flagPesquisarFichaCompensacao = false;
colecaoContaParmsFichaCompensacao = repositorioFaturamento
.pesquisarContasFichaCompensacaoEmitirCAERN(
ContaTipo.CONTA_NORMAL,
idEmpresa, anoMesReferenciaFaturamento,
faturamentoGrupo.getId(),
sistemaParametro.getValorContaFichaComp());
colecaoContaFichaCompensacao = formatarEmitirContasHelper(
colecaoContaParmsFichaCompensacao, ContaTipo.CONTA_NORMAL);
// formatarEmitirContasHelperOuFichaCompensacao(colecaoContaParmsFichaCompensacao, tipoConta);
colecaoContaParmsFichaCompensacao = null;
if (colecaoContaFichaCompensacao != null && !colecaoContaFichaCompensacao.isEmpty()) {
emitirFichaCompensacao(colecaoContaFichaCompensacao,ContaTipo.CONTA_NORMAL,
faturamentoGrupo,idEmpresa,anoMesReferenciaFaturamento);
colecaoContaFichaCompensacao = null;
}
}
colecaoContaParms = repositorioFaturamento
.pesquisarContasEmitirCAERN(
ContaTipo.CONTA_NORMAL, idEmpresa,
numeroIndice,
anoMesReferenciaFaturamento,
faturamentoGrupo.getId(),
sistemaParametro.getValorContaFichaComp());
colecaoConta = formatarEmitirContasHelper(
colecaoContaParms, ContaTipo.CONTA_NORMAL);
if (colecaoConta != null && !colecaoConta.isEmpty()) {
if (colecaoConta.size() < quantidadeRegistros) {
flagTerminou = true;
}
Map<Integer, Map<EmitirContaHelper, EmitirContaHelper>>
mapContasDivididasOrdenada = dividirColecao(colecaoConta);
colecaoConta = null;
EmitirContaHelper emitirContaHelper = null;
if (mapContasDivididasOrdenada != null) {
int countOrdem = 0;
while (countOrdem < mapContasDivididasOrdenada
.size()) {
Map<EmitirContaHelper, EmitirContaHelper> mapContasDivididas = mapContasDivididasOrdenada
.get(countOrdem);
Iterator iteratorConta = mapContasDivididas
.keySet().iterator();
// int count = 0;
while (iteratorConta.hasNext()) {
emitirContaHelper = null;
int situacao = 0;
emitirContaHelper = (EmitirContaHelper) iteratorConta
.next();
while (situacao < 2) {
if (situacao == 0) {
situacao = 1;
// [SB0020] - Gerar
// Arquivo
// TXT
// das
// Cartas
if (tipoConta == 0
|| tipoConta == 1) {
sequencialCarta += 1;
}
sequencialImpressao += 1;
} else {
emitirContaHelper = mapContasDivididas
.get(emitirContaHelper);
situacao = 2;
}
quantidadeContas++;
// S� para exibir no console
// a
// quantidade de
// contas
StringBuilder contaTxt = new StringBuilder();
if (emitirContaHelper != null) {
String descricaoLocalidade = emitirContaHelper.getDescricaoLocalidade();
contaTxt.append(Util.completaString(descricaoLocalidade,30));
contaTxt.append(Util.adicionarZerosEsquedaNumero(3,
emitirContaHelper.getCodigoSetorComercialConta().toString()));
Imovel imovelEmitido = getControladorImovel()
.pesquisarImovel(emitirContaHelper.getIdImovel());
contaTxt.append(Util.adicionarZerosEsquedaNumero(
2,imovelEmitido.getQuadra().getRota().getCodigo().toString()));
contaTxt.append(".");
contaTxt.append(Util.adicionarZerosEsquedaNumero(4,
imovelEmitido.getNumeroSequencialRota().toString()));
contaTxt.append(Util.adicionarZerosEsquedaNumero(8,
emitirContaHelper.getIdImovel().toString()));
// caso a cole��o de contas seja de entrega
// para o cliente respons�vel
if (tipoConta == 3 || tipoConta == 4) {
String nomeClienteUsuario = null;
if (emitirContaHelper.getNomeImovel() != null
&& !emitirContaHelper.getNomeImovel().equals("")) {
nomeClienteUsuario = emitirContaHelper.getNomeImovel();
} else {
try {
nomeClienteUsuario = repositorioFaturamento
.pesquisarNomeClienteUsuarioConta(
emitirContaHelper.getIdConta());
} catch (ErroRepositorioException e) {
throw new ControladorException("erro.sistema",e);
}
}
contaTxt.append(Util.completaString(nomeClienteUsuario,30));
} else {
contaTxt.append(Util.completaString(
emitirContaHelper.getNomeCliente(),30));
}
String[] enderecoImovel = getControladorEndereco()
.pesquisarEnderecoFormatadoDividido(
emitirContaHelper.getIdImovel());
// endere�o
contaTxt.append(Util.completaString(enderecoImovel[0],60));
// bairro
contaTxt.append(Util.completaString(enderecoImovel[3],30));
// numero indice turbidez da qualidade agua
// numero cloro residual da qualidade agua
FiltroLocalidade filtroLocalidade = new FiltroLocalidade();
filtroLocalidade.adicionarParametro(new ParametroSimples(
FiltroLocalidade.ID,emitirContaHelper.getIdLocalidade()));
filtroLocalidade.adicionarCaminhoParaCarregamentoEntidade("logradouroCep");
filtroLocalidade.adicionarCaminhoParaCarregamentoEntidade("logradouroCep.cep");
filtroLocalidade.adicionarCaminhoParaCarregamentoEntidade("logradouroCep.logradouro");
filtroLocalidade.adicionarCaminhoParaCarregamentoEntidade("logradouroCep.logradouro.logradouroTipo");
filtroLocalidade.adicionarCaminhoParaCarregamentoEntidade("logradouroCep.logradouro.logradouroTitulo");
filtroLocalidade.adicionarCaminhoParaCarregamentoEntidade("enderecoReferencia");
filtroLocalidade.adicionarCaminhoParaCarregamentoEntidade("logradouroBairro");
filtroLocalidade.adicionarCaminhoParaCarregamentoEntidade("logradouroBairro.bairro");
filtroLocalidade.adicionarCaminhoParaCarregamentoEntidade("logradouroBairro.bairro.municipio");
filtroLocalidade.adicionarCaminhoParaCarregamentoEntidade("logradouroBairro.bairro.municipio.unidadeFederacao");
filtroLocalidade.adicionarCaminhoParaCarregamentoEntidade("enderecoReferencia");
Collection cLocalidade = (Collection) getControladorUtil().pesquisar(
filtroLocalidade,Localidade.class.getName());
Localidade localidade = (Localidade) cLocalidade.iterator().next();
FiltroQualidadeAgua filtroQualidadeAgua = new FiltroQualidadeAgua();
Collection colecaoQualidadeAgua = null;
filtroQualidadeAgua.adicionarParametro(new ParametroSimples(
FiltroQualidadeAgua.LOCALIDADE_ID,localidade.getId()));
filtroQualidadeAgua.adicionarParametro(new ParametroSimples(
FiltroQualidadeAgua.SETOR_COMERCIAL_ID,
emitirContaHelper.getIdSetorComercial().toString()));
filtroQualidadeAgua.adicionarParametro(new ParametroSimples(
FiltroQualidadeAgua.ANO_MES_REFERENCIA,emitirContaHelper.getAmReferencia()));
filtroQualidadeAgua.adicionarCaminhoParaCarregamentoEntidade("fonteCaptacao");
colecaoQualidadeAgua = getControladorUtil().pesquisar(
filtroQualidadeAgua,QualidadeAgua.class.getName());
if (colecaoQualidadeAgua == null || colecaoQualidadeAgua.isEmpty()) {
filtroQualidadeAgua.limparListaParametros();
colecaoQualidadeAgua = null;
filtroQualidadeAgua.adicionarParametro(new ParametroSimples(
FiltroQualidadeAgua.LOCALIDADE_ID,localidade.getId()));
filtroQualidadeAgua.adicionarParametro(new ParametroNulo(
FiltroQualidadeAgua.SETOR_COMERCIAL_ID));
filtroQualidadeAgua.adicionarParametro(new ParametroSimples(
FiltroQualidadeAgua.ANO_MES_REFERENCIA,emitirContaHelper.getAmReferencia()));
filtroQualidadeAgua.adicionarCaminhoParaCarregamentoEntidade("fonteCaptacao");
colecaoQualidadeAgua = getControladorUtil().pesquisar(
filtroQualidadeAgua, QualidadeAgua.class.getName());
}
if (colecaoQualidadeAgua == null || colecaoQualidadeAgua.isEmpty()) {
filtroQualidadeAgua.limparListaParametros();
colecaoQualidadeAgua = null;
filtroQualidadeAgua.adicionarParametro(new ParametroNulo(
FiltroQualidadeAgua.LOCALIDADE_ID));
filtroQualidadeAgua.adicionarParametro(new ParametroNulo(
FiltroQualidadeAgua.SETOR_COMERCIAL_ID));
filtroQualidadeAgua.adicionarParametro(new ParametroSimples(
FiltroQualidadeAgua.ANO_MES_REFERENCIA,emitirContaHelper.getAmReferencia()));
filtroQualidadeAgua.adicionarCaminhoParaCarregamentoEntidade("fonteCaptacao");
colecaoQualidadeAgua = getControladorUtil().pesquisar(
filtroQualidadeAgua, QualidadeAgua.class.getName());
}
if (colecaoQualidadeAgua != null && !colecaoQualidadeAgua.isEmpty()) {
QualidadeAgua qualidadeAgua = (QualidadeAgua) colecaoQualidadeAgua.iterator().next();
// fonte
if (qualidadeAgua.getFonteCaptacao() != null) {
contaTxt.append(Util.completaString(qualidadeAgua.getFonteCaptacao().getDescricao(),30));
} else {
contaTxt.append(Util.completaString(" ",30));
}
// cloro
if (qualidadeAgua.getNumeroCloroResidual() != null
&& !qualidadeAgua.getNumeroCloroResidual().equals(0)) {
contaTxt.append(Util.completaString(
qualidadeAgua.getNumeroCloroResidual().toString(),3));
} else {
contaTxt.append(Util.completaString(" ",3));
}
// coliformes
if (qualidadeAgua.getNumeroIndiceColiformesTotais() != null
&& !qualidadeAgua.getNumeroIndiceColiformesTotais().equals(0)) {
contaTxt.append(Util.completaString(
qualidadeAgua.getNumeroIndiceColiformesTotais().toString(),8));
} else {
contaTxt.append(Util.completaString(" ", 8));
}
// nitrato
if (qualidadeAgua.getNumeroNitrato() != null
&& !qualidadeAgua.getNumeroNitrato().equals(0)) {
contaTxt.append(Util.completaString(
qualidadeAgua.getNumeroNitrato().toString(),4));
} else {
contaTxt.append(Util.completaString(" ",4));
}
// //ph
if (qualidadeAgua.getNumeroIndicePh() != null
&& !qualidadeAgua.getNumeroIndicePh().equals(0)) {
contaTxt.append(Util.completaString(
qualidadeAgua.getNumeroIndicePh().toString(),4));
} else {
contaTxt.append(Util.completaString(" ",4));
}
// //turbidez
if (qualidadeAgua.getNumeroIndiceTurbidez() != null
&& !qualidadeAgua.getNumeroIndiceTurbidez().equals(0)) {
contaTxt.append(Util.completaString(
qualidadeAgua.getNumeroIndiceTurbidez().toString(),4));
} else {
contaTxt.append(Util.completaString(" ",4));
}
} else {
contaTxt.append(Util.completaString(" ", 53));
}
Collection colecaoSubCategoria = getControladorImovel()
.obterQuantidadeEconomiasSubCategoria(imovelEmitido.getId());
String economias = "";
for (Iterator iter = colecaoSubCategoria.iterator(); iter.hasNext();) {
Subcategoria subcategoria = (Subcategoria) iter.next();
//agora a subcategoria ja tem o id da categoria no codigo.
economias = economias + Util.adicionarZerosEsquedaNumero(
3, subcategoria.getCodigo()+ "") + "/"
+ Util.adicionarZerosEsquedaNumero(3,
subcategoria.getQuantidadeEconomias().toString()) + " ";
}
contaTxt.append(Util.adicionarZerosEsquedaNumero(
7,quantidadeContas + ""));
contaTxt.append(Util.completaString(localidade.getDescricao(),30));
contaTxt.append(Util.completaString(localidade
.getEnderecoFormatadoTituloAbreviado(),35));
contaTxt.append(Util.completaString(localidade.getFone(),20));
contaTxt.append(Util.completaString("0800-84-0195",15));
// cria um objeto conta para calcular o valor da conta
Conta conta = new Conta();
conta.setValorAgua(emitirContaHelper.getValorAgua());
conta.setValorEsgoto(emitirContaHelper.getValorEsgoto());
conta.setValorCreditos(emitirContaHelper.getValorCreditos());
conta.setDebitos(emitirContaHelper.getDebitos());
conta.setValorImposto(emitirContaHelper.getValorImpostos());
BigDecimal valorConta = conta.getValorTotalContaBigDecimal();
// [SB0018 - Gerar Linhas das Demais Contas]
String anoMesString = "" + emitirContaHelper.getAmReferencia();
// formata ano mes para mes ano
String mesNumero = anoMesString.substring(4, 6);
String mesExtenso = Util.retornaDescricaoMes(
new Integer(mesNumero).intValue()).toUpperCase();
String dataExtensa = mesExtenso + "/"
+ anoMesString.substring(0, 4);
String mesAnoFormatado = anoMesString.substring(4, 6)+ anoMesString .substring(0, 4);
Integer digitoVerificadorConta = new Integer(""
+ emitirContaHelper.getDigitoVerificadorConta());
String representacaoNumericaCodBarra = null;
representacaoNumericaCodBarra = this.getControladorArrecadacao()
.obterRepresentacaoNumericaCodigoBarra(
3,
valorConta,
emitirContaHelper.getIdLocalidade(),
emitirContaHelper.getIdImovel(),
mesAnoFormatado,
digitoVerificadorConta,
null, null,
null, null,
null, null,
null);
contaTxt.append(Util.completaString(
representacaoNumericaCodBarra,48));
// determinar Mensagem
String[] parmsPartesConta = obterMensagemConta3Partes(
emitirContaHelper,sistemaParametro);
String primeiraParte = parmsPartesConta[0];
String segundaParte = parmsPartesConta[1];
contaTxt.append(Util.completaString(primeiraParte,65));
contaTxt.append(Util.completaString(segundaParte,65));
contaTxt.append(System.getProperty("line.separator"));
contaTxt.append(Util.completaString(descricaoLocalidade,30));
contaTxt.append(Util.adicionarZerosEsquedaNumero(2,
imovelEmitido.getQuadra().getRota().getCodigo().toString()));
contaTxt.append(".");
contaTxt.append(Util.adicionarZerosEsquedaNumero(4,
imovelEmitido.getNumeroSequencialRota().toString()));
Imovel imovel = new Imovel();
Localidade localidade2 = new Localidade();
localidade2.setId(emitirContaHelper.getIdLocalidade());
imovel.setLocalidade(localidade2);
SetorComercial setorComercial = new SetorComercial();
setorComercial.setCodigo(emitirContaHelper.getCodigoSetorComercialConta());
imovel.setSetorComercial(setorComercial);
Quadra quadra = new Quadra();
quadra.setNumeroQuadra(emitirContaHelper.getIdQuadraConta());
imovel.setQuadra(quadra);
imovel.setLote(emitirContaHelper.getLoteConta());
imovel.setSubLote(emitirContaHelper.getSubLoteConta());
String inscricao = imovel.getInscricaoFormatada();
imovel = null;
setorComercial = null;
quadra = null;
contaTxt.append(Util.completaString(inscricao, 20));
contaTxt.append(Util.completaString(" ", 12));
String mesAnoReferencia = Util.formatarAnoMesParaMesAno(
emitirContaHelper.getAmReferencia());
contaTxt.append(Util.completaString(mesAnoReferencia,9));
// data de vencimento da conta
String dataVencimento = Util.formatarData(
emitirContaHelper.getDataVencimentoConta());
contaTxt.append(Util.completaString(dataVencimento,10));
String valorContaString = Util.formatarMoedaReal(valorConta);
// valor da conta
/*FiltroContaImpressao filtroContaImpressao = new FiltroContaImpressao();
filtroContaImpressao.adicionarParametro(new ParametroSimples(
FiltroContaImpressao.ID,
emitirContaHelper.getIdConta().toString()));
filtroContaImpressao.adicionarCaminhoParaCarregamentoEntidade("contaTipo");*/
//System.out.println("Filtro conta Impressao");
/*Collection<ContaImpressao> cContaIm = getControladorUtil()
.pesquisar(filtroContaImpressao,ContaImpressao.class.getName());*/
//System.out.println("Saiu conta Impressao");
/*ContaImpressao contaImpressao = cContaIm.iterator().next();*/
Integer contaTipo = repositorioFaturamento.consultarContaTipodeContaImpressao(emitirContaHelper.getIdConta()); /*contaImpressao.getContaTipo().getId();*/
contaTxt.append(Util.completaStringComEspacoAEsquerda(
valorContaString,15));
if (contaTipo.equals(ContaTipo.CONTA_DEBITO_AUTOMATICO)
|| contaTipo.equals(ContaTipo.CONTA_DEBITO_AUTO_COM_CLIENTE_RESP.intValue())) {
contaTxt.append(Util.completaString("N�O PODE SER PAGO EM BANCO",65));
contaTxt.append(Util.completaString("D�BITO AUTOM�TICO EM CONTA CORRENTE",65));
} else {
contaTxt.append(Util.completaString(" ", 65));
contaTxt.append(Util.completaString(" ", 65));
}
// M�s/Ano refer�ncia da conta digito verificador
contaTxt.append(Util.completaString(dataExtensa,14));
contaTxt.append(Util.adicionarZerosEsquedaNumero(8,
imovelEmitido.getId().toString()));
contaTxt.append(Util.completaString(
emitirContaHelper.getIdLocalidade().toString(),3));
contaTxt.append(Util.adicionarZerosEsquedaNumero(3,
emitirContaHelper.getCodigoSetorComercialConta().toString()));
contaTxt.append(Util.adicionarZerosEsquedaNumero(3,
emitirContaHelper.getIdQuadraConta().toString()));
contaTxt.append(Util.adicionarZerosEsquedaNumero(4,
emitirContaHelper.getLoteConta().toString()));
contaTxt.append(Util.completaString(Util.adicionarZerosEsquedaNumero(2,
emitirContaHelper.getSubLoteConta().toString()), 2));
// DIGITO ?????
contaTxt.append(Util.adicionarZerosEsquedaNumero(1, "0"));
Integer[] parmSituacao = determinarTipoLigacaoMedicao(emitirContaHelper);
Integer tipoLigacao = parmSituacao[0];
Integer tipoMedicao = parmSituacao[1];
Object[] parmsMedicaoHistorico = obterDadosMedicaoConta(
emitirContaHelper,tipoMedicao);
// Leitura Anterior
String leituraAnterior = "";
// Leitura Atual
String leituraAtual = "";
// Data Leitura Anterior
String dataLeituraAnterior = "";
// Leitura Anterior
String dataLeituraAtual = "";
if (parmsMedicaoHistorico != null) {
if (parmsMedicaoHistorico[0] != null) {
leituraAnterior = "" + (Integer) parmsMedicaoHistorico[0];
}
if (parmsMedicaoHistorico[1] != null) {
leituraAtual = "" + (Integer) parmsMedicaoHistorico[1];
}
if (parmsMedicaoHistorico[3] != null) {
dataLeituraAnterior = Util.formatarData((Date) parmsMedicaoHistorico[3]);
}
if (parmsMedicaoHistorico[2] != null) {
dataLeituraAtual = Util.formatarData((Date) parmsMedicaoHistorico[2]);
}
}
Object[] parmsConsumoHistorico = null;
String consumoMedio = "";
if (tipoLigacao != null) {
try {
parmsConsumoHistorico = repositorioMicromedicao
.obterDadosConsumoConta(emitirContaHelper.getIdImovel(),
emitirContaHelper.getAmReferencia(),tipoLigacao);
} catch (ErroRepositorioException e) {
sessionContext.setRollbackOnly();
throw new ControladorException("erro.sistema",e);
}
if (parmsConsumoHistorico != null) {
// Consumo m�dio
if (parmsConsumoHistorico[2] != null) {
consumoMedio = "" + (Integer) parmsConsumoHistorico[2];
}
}
}
// Data Leitura Atual
contaTxt.append(Util.completaString(dataLeituraAtual,5));
contaTxt.append(Util.completaString(leituraAnterior,6));
// Leitura Atual
contaTxt.append(Util.completaString(leituraAtual,6));
String diasConsumo = "";
if (!dataLeituraAnterior.equals("") && !dataLeituraAtual.equals("")) {
diasConsumo = "" + Util.obterQuantidadeDiasEntreDuasDatas(
(Date) parmsMedicaoHistorico[3],(Date) parmsMedicaoHistorico[2]);
}
String[] parmsConsumo = obterConsumoFaturadoConsumoMedioDiario(
emitirContaHelper,tipoMedicao,diasConsumo);
String consumoFaturamento = parmsConsumo[0];
// Consumo faturado
contaTxt.append(Util.completaString(consumoFaturamento,5));
contaTxt.append(Util.completaString(consumoMedio,5));
contaTxt.append(Util.completaString(this.obterConsumoAnterior(
emitirContaHelper.getIdImovel(),emitirContaHelper.getAmReferencia(),
6, tipoLigacao, tipoMedicao).toString(),12));
contaTxt.append(Util.completaString(this.obterConsumoAnterior(
emitirContaHelper.getIdImovel(),emitirContaHelper.getAmReferencia(),
5, tipoLigacao, tipoMedicao).toString(),12));
contaTxt.append(Util.completaString(this.obterConsumoAnterior(
emitirContaHelper.getIdImovel(),emitirContaHelper.getAmReferencia(),
4,tipoLigacao,tipoMedicao).toString(),12));
contaTxt.append(Util.completaString(this.obterConsumoAnterior(
emitirContaHelper.getIdImovel(),emitirContaHelper.getAmReferencia(),
3,tipoLigacao,tipoMedicao).toString(),12));
contaTxt.append(Util.completaString(this.obterConsumoAnterior(
emitirContaHelper.getIdImovel(),emitirContaHelper.getAmReferencia(),
2,tipoLigacao,tipoMedicao).toString(),12));
contaTxt.append(Util.completaString(this.obterConsumoAnterior(
emitirContaHelper.getIdImovel(),emitirContaHelper.getAmReferencia(),
1,tipoLigacao,tipoMedicao).toString(),12));
contaTxt.append(Util.completaString(economias, 24));
ObterDebitoImovelOuClienteHelper obterDebitoImovelOuClienteHelper = this
.obterDebitoImovelOuClienteHelper(emitirContaHelper,sistemaParametro);
if (obterDebitoImovelOuClienteHelper != null
&& ((obterDebitoImovelOuClienteHelper.getColecaoGuiasPagamentoValores() != null
&& !obterDebitoImovelOuClienteHelper.getColecaoGuiasPagamentoValores().isEmpty())
|| (obterDebitoImovelOuClienteHelper.getColecaoContasValores() != null
&& !obterDebitoImovelOuClienteHelper.getColecaoContasValores().isEmpty()))) {
Collection colecaoContasValores = obterDebitoImovelOuClienteHelper
.getColecaoContasValores();
if (colecaoContasValores != null && !colecaoContasValores.isEmpty()) {
if (colecaoContasValores.size() > 5) {
contaTxt.append(Util.completaString("H� MAIS DE CINCO CONTAS EM ATRASO",40));
} else {
String contasAtraso = "";
for (Iterator iter = colecaoContasValores.iterator(); iter.hasNext();) {
ContaValoresHelper contasValores = (ContaValoresHelper) iter.next();
contasAtraso = contasAtraso+ contasValores.
getConta().getFormatarAnoMesParaMesAno()+ " ";
}
contaTxt.append(Util.completaString(contasAtraso,40));
}
} else {
contaTxt.append(Util.completaString("",40));
}
} else {
contaTxt.append(Util.completaString("",40));
}
if (imovelEmitido.getLigacaoAgua() != null) {
if (imovelEmitido.getLigacaoAgua().getHidrometroInstalacaoHistorico() != null) {
if (imovelEmitido.getLigacaoAgua()
.getHidrometroInstalacaoHistorico().getHidrometro() != null) {
contaTxt.append(Util.completaString(imovelEmitido.getLigacaoAgua()
.getHidrometroInstalacaoHistorico().getHidrometro().getNumero(),10));
} else {
contaTxt.append(Util.completaString(" ",10));
}
} else {
contaTxt.append(Util.completaString(" ",10));
}
} else {
contaTxt.append(Util.completaString(" ", 10));
}
Collection colecaoContaCategoriaConsumoFaixa = null;
try {
colecaoContaCategoriaConsumoFaixa = repositorioFaturamento
.pesquisarContaCategoriaConsumoFaixa(emitirContaHelper.getIdConta());
} catch (ErroRepositorioException e) {
throw new ControladorException("erro.sistema", e);
}
Integer consumoExcesso = 0;
Integer consumoMinimo = 0;
BigDecimal valorExcesso = new BigDecimal("0.0");
BigDecimal valorMinimo = new BigDecimal("0.0");
if (colecaoContaCategoriaConsumoFaixa == null
|| colecaoContaCategoriaConsumoFaixa.isEmpty()) {
consumoMinimo = emitirContaHelper.getConsumoAgua();
valorMinimo = emitirContaHelper.getValorAgua();
} else {
if (!emitirContaHelper.getConsumoAgua().equals(0)) {
for (Iterator iter = colecaoContaCategoriaConsumoFaixa
.iterator(); iter.hasNext();) {
ContaCategoriaConsumoFaixa contaCategoriaConsumoFaixa = (ContaCategoriaConsumoFaixa) iter.next();
if (contaCategoriaConsumoFaixa.getConsumoAgua() != null) {
for (Iterator iteration = colecaoSubCategoria.iterator(); iteration.hasNext();) {
Subcategoria subCategoriaEmitir = (Subcategoria) iteration.next();
if (contaCategoriaConsumoFaixa.getSubcategoria().getId()
.equals(subCategoriaEmitir.getId())) {
consumoExcesso = consumoExcesso
+ contaCategoriaConsumoFaixa.getConsumoAgua()
* subCategoriaEmitir.getQuantidadeEconomias();
valorExcesso = valorExcesso.add(contaCategoriaConsumoFaixa.getValorAgua()
.multiply(new BigDecimal(subCategoriaEmitir.getQuantidadeEconomias())));
}
}
}
}
}
valorMinimo = emitirContaHelper.getValorAgua().subtract(valorExcesso);
consumoMinimo = emitirContaHelper.getConsumoAgua()- consumoExcesso;
}
int i = 0;
BigDecimal valorNullo = new BigDecimal("0.00");
Integer consumoNullo = new Integer(0);
if (!valorMinimo.equals(valorNullo)) {
if (!consumoMinimo.equals(consumoNullo)) {
contaTxt.append("TARIFA M�NIMA �GUA "); // 30
contaTxt.append(Util.completaString(consumoMinimo+ " M3",24));
contaTxt.append(Util.completaStringComEspacoAEsquerda(
Util.formatarMoedaReal(valorMinimo),12));
} else {
contaTxt.append("TARIFA M�NIMA �GUA "); // 30
contaTxt.append(Util.completaString(consumoMinimo+ " ",24));
contaTxt.append(Util.completaStringComEspacoAEsquerda(
Util.formatarMoedaReal(valorMinimo),12));
}
i++;
}
if (!consumoExcesso.equals(consumoNullo)) {
contaTxt.append("TARIFA EXCESSO �GUA "); // 30
contaTxt.append(Util.completaString(consumoExcesso + " M3",24));
contaTxt.append(Util.completaStringComEspacoAEsquerda(
Util.formatarMoedaReal(valorExcesso),12));
i++;
}
if (!emitirContaHelper.getPercentualEsgotoConta().equals(valorNullo)) {
contaTxt.append("TARIFA ESGOTO "); // 30
contaTxt.append(Util.completaString(
emitirContaHelper.getPercentualEsgotoConta()+ "%",24));
contaTxt.append(Util.completaStringComEspacoAEsquerda(
Util.formatarMoedaReal(emitirContaHelper.getValorEsgoto()),12));
i++;
}
if (!emitirContaHelper.getValorCreditos().equals(valorNullo)) {
contaTxt.append("CR�DITOS E DESCONTOS "); // 30
contaTxt.append(Util.completaString(" ", 24));
contaTxt.append(Util.completaStringComEspacoAEsquerda(
Util.formatarMoedaReal(emitirContaHelper.getValorCreditos()),12));
i++;
}
if (!emitirContaHelper.getValorImpostos().equals(valorNullo)) {
contaTxt.append("IMPOSTOS DEDUZIDOS "); // 30
contaTxt.append(Util.completaString(" ", 24));
contaTxt.append(Util.completaStringComEspacoAEsquerda(
Util.formatarMoedaReal(emitirContaHelper.getValorImpostos()),12));
i++;
}
// setando os servicos
Conta contaId = new Conta();
contaId.setId(emitirContaHelper.getIdConta());
Collection<DebitoCobradoAgrupadoHelper> cDebitoCobrado = this
.obterDebitosCobradosContaCAERN(contaId);
int quantidadeLinhasSobrando = 10 - i;
if (cDebitoCobrado != null && !cDebitoCobrado.isEmpty()) {
int quantidadeDebitos = cDebitoCobrado.size();
if (quantidadeLinhasSobrando >= quantidadeDebitos) {
for (Iterator iter = cDebitoCobrado.iterator(); iter.hasNext();) {
DebitoCobradoAgrupadoHelper debitoCobrado = (DebitoCobradoAgrupadoHelper) iter.next();
contaTxt.append(Util.completaString(debitoCobrado.getDescricaoDebitoTipo(),30)); // 30
contaTxt.append(Util.completaString(debitoCobrado.getNumeroPrestacaoDebito()
+ "/" + debitoCobrado.getNumeroPrestacao(),24));
contaTxt.append(Util.completaStringComEspacoAEsquerda(
Util.formatarMoedaReal(debitoCobrado.getValorDebito()),12));
i++;
}
} else {
Iterator iter = cDebitoCobrado.iterator();
int contador = 1;
BigDecimal valorAcumulado = new BigDecimal("0.00");
boolean temOutros = false;
while (iter.hasNext()) {
DebitoCobradoAgrupadoHelper debitoCobrado = (DebitoCobradoAgrupadoHelper) iter.next();
if (quantidadeLinhasSobrando > contador) {
contaTxt.append(Util.completaString(debitoCobrado.getDescricaoDebitoTipo(),30)); // 30
contaTxt.append(Util.completaString(debitoCobrado.getNumeroPrestacaoDebito()
+ "/" + debitoCobrado.getNumeroPrestacao(),24));
contaTxt.append(Util.completaStringComEspacoAEsquerda(
Util.formatarMoedaReal(debitoCobrado.getValorDebito()),12));
i++;
} else {
valorAcumulado = valorAcumulado.add(debitoCobrado.getValorDebito());
temOutros = true;
}
contador++;
}
if (temOutros) {
contaTxt.append("OUTROS SERVI�OS "); // 30
contaTxt.append(Util.completaString(" ",24));
contaTxt.append(Util.completaStringComEspacoAEsquerda(
Util.formatarMoedaReal(valorAcumulado),12));
i++;
}
}
}
int quantidadeLinhasServicosSobraram = 10 - i;
contaTxt.append(Util.completaString(" ",quantidadeLinhasServicosSobraram * 66));
// [SB0018 - Gerar Linhas das DemaisContas]
anoMesString = "" + emitirContaHelper.getAmReferencia();
// formata ano mes para mes ano
mesAnoFormatado = anoMesString.substring(4, 6)
+ anoMesString.substring(0, 4);
digitoVerificadorConta = new Integer(""
+ emitirContaHelper.getDigitoVerificadorConta());
representacaoNumericaCodBarra = null;
representacaoNumericaCodBarra = this
.getControladorArrecadacao()
.obterRepresentacaoNumericaCodigoBarra(
3,
valorConta,
emitirContaHelper.getIdLocalidade(),
emitirContaHelper.getIdImovel(),
mesAnoFormatado,
digitoVerificadorConta,
null, null,
null, null,
null, null,
null);
contaTxt.append(Util.completaString(representacaoNumericaCodBarra,48));
contaTxt.append(Util.completaString(" ", 66)); // Rodap�,
//Altera��o por Tiago Moreno - 23/01/2009 - Determinacao judicial (Nitrato)
Conta contaEmitida = new Conta();
contaEmitida.setId(emitirContaHelper.getIdConta());
CreditoRealizado creditoRealizado = repositorioFaturamento.pesquisarCreditoRealizadoNitrato(contaEmitida);
if (creditoRealizado != null){
contaTxt.append(Util.completaString("Por decis�o judicial de 15/05/08 - proc. 001.07.200202-7, esta conta inclui um desconto de 50% no valor da �gua. R$"
+ Util.completaString(Util.formatarMoedaReal(creditoRealizado.getValorCredito()), 13), 160));
} else {
contaTxt.append(Util.completaString(" ", 160));
}
// rodap�
// I,
// rodap�
// II,
// rodap�
// III,
contasTxtLista.append(contaTxt.toString());
conta = null;
StringBuilder teste = new StringBuilder();
teste.append(contaTxt);
// PEDRO 19/10/2006
contaTxt = null;
// enquanto estiver
// proximo
// if
// (iteratorConta.hasNext())
// {
contasTxtLista.append(System.getProperty("line.separator"));
contadorTeste = contadorTeste + 1;
System.out.println("===Contador Emitir===>" + contadorTeste);
// adiciona o id da conta e o sequencial
// no para serem atualizados
mapAtualizaSequencial.put(emitirContaHelper.getIdConta(),sequencialImpressao);
}// fim do la�o que verifica se o
// helper � diferente de nulo
}// fim do la�o que verifica as 2 contas
}// fim la�o while do iterator do objeto helper
countOrdem++;
mapContasDivididas = null;
}// fim do while que pega os Map ordenados
}// fim do la�o que verifica se o Map est� nula
// fim do la�o que verifica se a cole��o � nula
} else {
flagTerminou = true;
}
numeroIndice = numeroIndice + 1000;
repositorioFaturamento.atualizarSequencialContaImpressao(mapAtualizaSequencial);
mapAtualizaSequencial = null;
}// fim la�o if da pagina��o
String idGrupoFaturamento = "G" + faturamentoGrupo.getId();
String mesReferencia = "_Fat" + anoMesReferenciaFaturamento.toString().substring(4, 6);
String nomeZip = null;
nomeZip = "CONTA_N" + "_" + idGrupoFaturamento + mesReferencia + "_Emp" + idEmpresa + "-";
BufferedWriter out = null;
ZipOutputStream zos = null;
File compactadoTipo = new File(nomeZip + ".zip");
File leituraTipo = new File(nomeZip + ".txt");
if (contasTxtLista != null && contasTxtLista.length() != 0) {
// fim de arquivo
// ************ TIPO E *************
zos = new ZipOutputStream(new FileOutputStream(compactadoTipo));
out = new BufferedWriter(new OutputStreamWriter(
new FileOutputStream(leituraTipo.getAbsolutePath())));
out.write(contasTxtLista.toString());
out.flush();
ZipUtil.adicionarArquivo(zos, leituraTipo);
zos.close();
leituraTipo.delete();
out.close();
}
// limpa todos os campos
nomeZip = null;
out = null;
zos = null;
compactadoTipo = null;
leituraTipo = null;
contasTxtLista = null;
tipoConta++;
} catch (ErroRepositorioException e) {
throw new ControladorException("erro.sistema", e);
}
} catch (IOException e) {
String mensagem = e.getMessage();
String[] inicioMensagem = mensagem.split("\\.");
if (inicioMensagem != null
&& (inicioMensagem[0].equals("erro") || inicioMensagem[0]
.equals("atencao"))) {
throw new ControladorException(mensagem);
} else {
throw new ControladorException("erro.sistema", e);
}
} catch (Exception e) {
e.printStackTrace();
String mensagem = e.getMessage();
if (mensagem != null) {
String[] inicioMensagem = mensagem.split("\\.");
if (inicioMensagem != null
&& (inicioMensagem[0].equals("erro") || inicioMensagem[0]
.equals("atencao"))) {
throw new ControladorException(mensagem);
} else {
throw new ControladorException("erro.sistema", e);
}
} else {
throw new ControladorException("erro.sistema", e);
}
}
// --------------------------------------------------------
//
// Registrar o fim da execu��o da Unidade de Processamento
//
// --------------------------------------------------------
getControladorBatch().encerrarUnidadeProcessamentoBatch(null,
idUnidadeIniciada, false);
} catch (Exception e) {
// Este catch serve para interceptar qualquer exce��o que o processo
// batch venha a lan�ar e garantir que a unidade de processamento do
// batch ser� atualizada com o erro ocorrido
e.printStackTrace();
getControladorBatch().encerrarUnidadeProcessamentoBatch(e,
idUnidadeIniciada, true);
throw new ControladorException("erro.sistema", e);
}
}
public void emitirContasOrgaoPublico(Integer anoMesReferenciaFaturamento,
FaturamentoGrupo faturamentoGrupo, int idFuncionalidadeIniciada,
int tipoConta, Integer idEmpresa,
Short indicadorEmissaoExtratoFaturamento)
throws ControladorException {
int idUnidadeIniciada = 0;
// emitir contas
// -------------------------
//
// Registrar o in�cio do processamento da Unidade de
// Processamento
// do Batch
//
// -------------------------
idUnidadeIniciada = getControladorBatch()
.iniciarUnidadeProcessamentoBatch(idFuncionalidadeIniciada,
UnidadeProcessamento.FUNCIONALIDADE,
(idEmpresa == null ? 0 : idEmpresa));
try {
int quantidadeContas = 0;
final int quantidadeRegistros = 1000;
int numeroIndice = 0;
try {
// recebe todos as contas da lista
StringBuilder contasTxtLista = null;
Map<Integer, Integer> mapAtualizaSequencial = null;
// i=0;Cole��o de contas com estouros de consumo
// i=1;Cole��o de contas com baixo consumo
// i=2;Cole��o de contas com d�bito autom�tico
// i=3;Cole��o de contas com entrega para o cliente
// respons�vel
// i=4;Cole��o de contas com entrega para o cliente
// respons�vel
// i=5;Cole��o de contas normais
try {
boolean flagTerminou = false;
numeroIndice = 0;
Integer sequencialImpressao = 0;
Integer sequencialCarta = 0;
Collection colecaoConta = null;
Collection colecaoContaFichaCompensacao = null;
boolean flagPesquisarFichaCompensacao = false;
contasTxtLista = new StringBuilder();
// cartasTxtListaConta = new StringBuilder();
SistemaParametro sistemaParametro = getControladorUtil()
.pesquisarParametrosDoSistema();
if(sistemaParametro.getValorContaFichaComp() != null &&
!sistemaParametro.getValorContaFichaComp().equals(new BigDecimal("0.00"))){
flagPesquisarFichaCompensacao = true;
}
while (!flagTerminou) {
// map que armazena o sequencial e o numero da
// conta para no final atualizar todos os
// sequencias
mapAtualizaSequencial = new HashMap();
Collection colecaoContaParms = null;
Collection colecaoContaParmsFichaCompensacao = null;
if(flagPesquisarFichaCompensacao){
flagPesquisarFichaCompensacao = false;
colecaoContaParmsFichaCompensacao = repositorioFaturamento
.pesquisarContasFichaCompensacaoEmitirOrgaoPublicoCAERN(
ContaTipo.CONTA_NORMAL,
idEmpresa, anoMesReferenciaFaturamento,
faturamentoGrupo.getId(),
sistemaParametro.getValorContaFichaComp());
colecaoContaFichaCompensacao = formatarEmitirContasHelper(
colecaoContaParmsFichaCompensacao, ContaTipo.CONTA_NORMAL);
// formatarEmitirContasHelperOuFichaCompensacao(colecaoContaParmsFichaCompensacao, tipoConta);
colecaoContaParmsFichaCompensacao = null;
if (colecaoContaFichaCompensacao != null && !colecaoContaFichaCompensacao.isEmpty()) {
emitirFichaCompensacao(colecaoContaFichaCompensacao,ContaTipo.CONTA_NORMAL,
faturamentoGrupo,idEmpresa,anoMesReferenciaFaturamento);
colecaoContaFichaCompensacao = null;
}
}
repositorioFaturamento
.atualizaClienteResponsavelOrgaoPublicoCAERN(anoMesReferenciaFaturamento);
colecaoContaParms = repositorioFaturamento
.pesquisarContasEmitirOrgaoPublicoCAERN(
ContaTipo.CONTA_NORMAL, idEmpresa,
numeroIndice,
anoMesReferenciaFaturamento, 1,
sistemaParametro.getValorContaFichaComp());
colecaoConta = formatarEmitirContasHelper(
colecaoContaParms, ContaTipo.CONTA_NORMAL);
// Inicio do Loop
if (colecaoConta != null && !colecaoConta.isEmpty()) {
if (colecaoConta.size() < quantidadeRegistros) {
flagTerminou = true;
}
Map<Integer, Map<EmitirContaHelper, EmitirContaHelper>>
mapContasDivididasOrdenada = dividirColecao(colecaoConta);
colecaoConta = null;
EmitirContaHelper emitirContaHelper = null;
if (mapContasDivididasOrdenada != null) {
int countOrdem = 0;
while (countOrdem < mapContasDivididasOrdenada
.size()) {
Map<EmitirContaHelper, EmitirContaHelper> mapContasDivididas = mapContasDivididasOrdenada
.get(countOrdem);
Iterator iteratorConta = mapContasDivididas
.keySet().iterator();
// int count = 0;
while (iteratorConta.hasNext()) {
emitirContaHelper = null;
int situacao = 0;
emitirContaHelper = (EmitirContaHelper) iteratorConta
.next();
while (situacao < 2) {
if (situacao == 0) {
situacao = 1;
// [SB0020] - Gerar
// Arquivo
// TXT
// das
// Cartas
if (tipoConta == 0
|| tipoConta == 1) {
sequencialCarta += 1;
}
sequencialImpressao += 1;
} else {
emitirContaHelper = mapContasDivididas
.get(emitirContaHelper);
situacao = 2;
}
quantidadeContas++;
// S� para exibir no console
// a
// quantidade de
// contas
StringBuilder contaTxt = new StringBuilder();
if (emitirContaHelper != null) {
// }
// count = count + 1;
// caso o [FS0006 -
// Verificar
// espa�os
// para
// descri��o
// dos
// servi�os e
// tarifas totalmente
// preenchido]
// --Linha 1-- //
// nome da localidade
// Inicia a Construcao da String
String descricaoLocalidade = emitirContaHelper
.getDescricaoLocalidade();
contaTxt
.append(Util
.completaString(
descricaoLocalidade,
30));
contaTxt
.append(Util
.adicionarZerosEsquedaNumero(
3,
emitirContaHelper
.getCodigoSetorComercialConta()
.toString()));
Imovel imovelEmitido = getControladorImovel()
.pesquisarImovel(
emitirContaHelper
.getIdImovel());
contaTxt
.append(Util
.adicionarZerosEsquedaNumero(
2,
imovelEmitido
.getQuadra()
.getRota()
.getCodigo()
.toString()));
contaTxt.append(".");
contaTxt
.append(Util
.adicionarZerosEsquedaNumero(
4,
imovelEmitido
.getNumeroSequencialRota()
.toString()));
contaTxt
.append(Util
.adicionarZerosEsquedaNumero(
8,
emitirContaHelper
.getIdImovel()
.toString()));
// caso a cole��o de
// contas
// seja
// de
// entrega
// para
// o
// cliente
// respons�vel
if (tipoConta == 3
|| tipoConta == 4) {
String nomeClienteUsuario = null;
if (emitirContaHelper
.getNomeImovel() != null
&& !emitirContaHelper
.getNomeImovel()
.equals("")) {
nomeClienteUsuario = emitirContaHelper
.getNomeImovel();
} else {
try {
nomeClienteUsuario = repositorioFaturamento
.pesquisarNomeClienteUsuarioConta(emitirContaHelper
.getIdConta());
} catch (ErroRepositorioException e) {
throw new ControladorException(
"erro.sistema",
e);
}
}
contaTxt
.append(Util
.completaString(
nomeClienteUsuario,
30));
} else {
contaTxt
.append(Util
.completaString(
emitirContaHelper
.getNomeCliente(),
30));
}
String[] enderecoImovel = getControladorEndereco()
.pesquisarEnderecoFormatadoDividido(
emitirContaHelper
.getIdImovel());
// endere�o
contaTxt
.append(Util
.completaString(
enderecoImovel[0],
60));
// bairro
contaTxt
.append(Util
.completaString(
enderecoImovel[3],
30));
FiltroLocalidade filtroLocalidade = new FiltroLocalidade();
filtroLocalidade
.adicionarParametro(new ParametroSimples(
FiltroLocalidade.ID,
emitirContaHelper
.getIdLocalidade()));
filtroLocalidade
.adicionarCaminhoParaCarregamentoEntidade("logradouroCep");
filtroLocalidade
.adicionarCaminhoParaCarregamentoEntidade("logradouroCep.cep");
filtroLocalidade
.adicionarCaminhoParaCarregamentoEntidade("logradouroCep.logradouro");
filtroLocalidade
.adicionarCaminhoParaCarregamentoEntidade("logradouroCep.logradouro.logradouroTipo");
filtroLocalidade
.adicionarCaminhoParaCarregamentoEntidade("logradouroCep.logradouro.logradouroTitulo");
filtroLocalidade
.adicionarCaminhoParaCarregamentoEntidade("enderecoReferencia");
filtroLocalidade
.adicionarCaminhoParaCarregamentoEntidade("logradouroBairro");
filtroLocalidade
.adicionarCaminhoParaCarregamentoEntidade("logradouroBairro.bairro");
filtroLocalidade
.adicionarCaminhoParaCarregamentoEntidade("logradouroBairro.bairro.municipio");
filtroLocalidade
.adicionarCaminhoParaCarregamentoEntidade("logradouroBairro.bairro.municipio.unidadeFederacao");
filtroLocalidade
.adicionarCaminhoParaCarregamentoEntidade("enderecoReferencia");
Collection cLocalidade = (Collection) getControladorUtil()
.pesquisar(
filtroLocalidade,
Localidade.class
.getName());
Localidade localidade = (Localidade) cLocalidade
.iterator().next();
FiltroQualidadeAgua filtroQualidadeAgua = new FiltroQualidadeAgua();
Collection colecaoQualidadeAgua = null;
filtroQualidadeAgua
.adicionarParametro(new ParametroSimples(
FiltroQualidadeAgua.LOCALIDADE_ID,
localidade
.getId()));
filtroQualidadeAgua
.adicionarParametro(new ParametroSimples(
FiltroQualidadeAgua.SETOR_COMERCIAL_ID,
emitirContaHelper
.getIdSetorComercial()
.toString()));
filtroQualidadeAgua
.adicionarParametro(new ParametroSimples(
FiltroQualidadeAgua.ANO_MES_REFERENCIA,
emitirContaHelper
.getAmReferencia()));
filtroQualidadeAgua.adicionarCaminhoParaCarregamentoEntidade("fonteCaptacao");
colecaoQualidadeAgua = getControladorUtil()
.pesquisar(
filtroQualidadeAgua,
QualidadeAgua.class
.getName());
if (colecaoQualidadeAgua == null
|| colecaoQualidadeAgua
.isEmpty()) {
filtroQualidadeAgua
.limparListaParametros();
colecaoQualidadeAgua = null;
filtroQualidadeAgua
.adicionarParametro(new ParametroSimples(
FiltroQualidadeAgua.LOCALIDADE_ID,
localidade
.getId()));
filtroQualidadeAgua
.adicionarParametro(new ParametroNulo(
FiltroQualidadeAgua.SETOR_COMERCIAL_ID));
filtroQualidadeAgua
.adicionarParametro(new ParametroSimples(
FiltroQualidadeAgua.ANO_MES_REFERENCIA,
emitirContaHelper
.getAmReferencia()));
filtroQualidadeAgua.adicionarCaminhoParaCarregamentoEntidade("fonteCaptacao");
colecaoQualidadeAgua = getControladorUtil()
.pesquisar(
filtroQualidadeAgua,
QualidadeAgua.class
.getName());
}
if (colecaoQualidadeAgua == null
|| colecaoQualidadeAgua
.isEmpty()) {
filtroQualidadeAgua
.limparListaParametros();
colecaoQualidadeAgua = null;
filtroQualidadeAgua
.adicionarParametro(new ParametroNulo(
FiltroQualidadeAgua.LOCALIDADE_ID));
filtroQualidadeAgua
.adicionarParametro(new ParametroNulo(
FiltroQualidadeAgua.SETOR_COMERCIAL_ID));
filtroQualidadeAgua
.adicionarParametro(new ParametroSimples(
FiltroQualidadeAgua.ANO_MES_REFERENCIA,
emitirContaHelper
.getAmReferencia()));
filtroQualidadeAgua.adicionarCaminhoParaCarregamentoEntidade("fonteCaptacao");
colecaoQualidadeAgua = getControladorUtil()
.pesquisar(
filtroQualidadeAgua,
QualidadeAgua.class
.getName());
}
if (colecaoQualidadeAgua != null
&& !colecaoQualidadeAgua
.isEmpty()) {
QualidadeAgua qualidadeAgua = (QualidadeAgua) colecaoQualidadeAgua
.iterator().next();
// fonte
if (qualidadeAgua.getFonteCaptacao() != null) {
contaTxt.append(
Util.completaString(qualidadeAgua.getFonteCaptacao().getDescricao(),30));
} else {
contaTxt.append(Util.completaString(" ",30));
}
// cloro
if (qualidadeAgua
.getNumeroCloroResidual() != null
&& !qualidadeAgua
.getNumeroCloroResidual()
.equals(0)) {
contaTxt
.append(Util
.completaString(
qualidadeAgua
.getNumeroCloroResidual()
.toString(),
3));
} else {
contaTxt
.append(Util
.completaString(
" ",
3));
}
// coliformes
if (qualidadeAgua
.getNumeroIndiceColiformesTotais() != null
&& !qualidadeAgua
.getNumeroIndiceColiformesTotais()
.equals(0)) {
contaTxt
.append(Util
.completaString(
qualidadeAgua
.getNumeroIndiceColiformesTotais()
.toString(),
8));
} else {
contaTxt
.append(Util
.completaString(
" ",
8));
}
// nitrato
if (qualidadeAgua
.getNumeroNitrato() != null
&& !qualidadeAgua
.getNumeroNitrato()
.equals(0)) {
contaTxt
.append(Util
.completaString(
qualidadeAgua
.getNumeroNitrato()
.toString(),
4));
} else {
contaTxt
.append(Util
.completaString(
" ",
4));
}
// //ph
if (qualidadeAgua
.getNumeroIndicePh() != null
&& !qualidadeAgua
.getNumeroIndicePh()
.equals(0)) {
contaTxt
.append(Util
.completaString(
qualidadeAgua
.getNumeroIndicePh()
.toString(),
4));
} else {
contaTxt
.append(Util
.completaString(
" ",
4));
}
// //turbidez
if (qualidadeAgua
.getNumeroIndiceTurbidez() != null
&& !qualidadeAgua
.getNumeroIndiceTurbidez()
.equals(0)) {
contaTxt
.append(Util
.completaString(
qualidadeAgua
.getNumeroIndiceTurbidez()
.toString(),
4));
} else {
contaTxt
.append(Util
.completaString(
" ",
4));
}
} else {
contaTxt.append(Util
.completaString(
" ", 53));
}
Collection colecaoSubCategoria = getControladorImovel()
.obterQuantidadeEconomiasSubCategoria(
imovelEmitido
.getId());
String economias = "";
for (Iterator iter = colecaoSubCategoria
.iterator(); iter
.hasNext();) {
Subcategoria subcategoria = (Subcategoria) iter
.next();
economias = economias
+ Util
.adicionarZerosEsquedaNumero(
3,
subcategoria
.getCodigo()
+ "")
+ "/"
+ Util
.adicionarZerosEsquedaNumero(
3,
subcategoria
.getQuantidadeEconomias()
.toString())
+ " ";
}
contaTxt
.append(Util
.adicionarZerosEsquedaNumero(
7,
quantidadeContas
+ ""));
contaTxt
.append(Util
.completaString(
localidade
.getDescricao(),
30));
contaTxt
.append(Util
.completaString(
localidade
.getEnderecoFormatadoTituloAbreviado(),
35));
contaTxt
.append(Util
.completaString(
localidade
.getFone(),
20));
contaTxt.append(Util
.completaString(
"0800-84-0195",
15));
// cria um objeto conta
// para
// calcular o
// valor da
// conta
Conta conta = new Conta();
conta
.setValorAgua(emitirContaHelper
.getValorAgua());
conta
.setValorEsgoto(emitirContaHelper
.getValorEsgoto());
conta
.setValorCreditos(emitirContaHelper
.getValorCreditos());
conta
.setDebitos(emitirContaHelper
.getDebitos());
conta
.setValorImposto(emitirContaHelper
.getValorImpostos());
BigDecimal valorConta = conta
.getValorTotalContaBigDecimal();
emitirContaHelper.setValorConta(valorConta);
// [SB0018 - Gerar
// Linhas
// das
// DemaisContas]
String anoMesString = ""
+ emitirContaHelper
.getAmReferencia();
// formata ano mes para mes ano
String mesNumero = anoMesString
.substring(4, 6);
String mesExtenso = Util
.retornaDescricaoMes(
new Integer(
mesNumero)
.intValue())
.toUpperCase();
String dataExtensa = mesExtenso
+ "/"
+ anoMesString
.substring(0, 4);
String mesAnoFormatado = anoMesString
.substring(4, 6)
+ anoMesString
.substring(0, 4);
Integer digitoVerificadorConta = new Integer(
""
+ emitirContaHelper
.getDigitoVerificadorConta());
String representacaoNumericaCodBarra = null;
representacaoNumericaCodBarra = getControladorArrecadacao()
.obterRepresentacaoNumericaCodigoBarra(
3,
valorConta,
emitirContaHelper
.getIdLocalidade(),
emitirContaHelper
.getIdImovel(),
mesAnoFormatado,
digitoVerificadorConta,
null, null,
null, null,
null, null,
null);
contaTxt
.append(Util
.completaString(
representacaoNumericaCodBarra,
48));
// determinar Mensagem
String[] parmsPartesConta = obterMensagemConta3Partes(
emitirContaHelper,
sistemaParametro);
String primeiraParte = parmsPartesConta[0];
String segundaParte = parmsPartesConta[1];
contaTxt.append(Util
.completaString(
primeiraParte,
65));
contaTxt.append(Util
.completaString(
segundaParte,
65));
contaTxt
.append(System
.getProperty("line.separator"));
contaTxt
.append(Util
.completaString(
descricaoLocalidade,
30));
contaTxt
.append(Util
.adicionarZerosEsquedaNumero(
2,
imovelEmitido
.getQuadra()
.getRota()
.getCodigo()
.toString()));
contaTxt.append(".");
contaTxt
.append(Util
.adicionarZerosEsquedaNumero(
4,
imovelEmitido
.getNumeroSequencialRota()
.toString()));
Imovel imovel = new Imovel();
Localidade localidade2 = new Localidade();
localidade2
.setId(emitirContaHelper
.getIdLocalidade());
imovel
.setLocalidade(localidade2);
SetorComercial setorComercial = new SetorComercial();
setorComercial
.setCodigo(emitirContaHelper
.getCodigoSetorComercialConta());
imovel
.setSetorComercial(setorComercial);
Quadra quadra = new Quadra();
quadra
.setNumeroQuadra(emitirContaHelper
.getIdQuadraConta());
imovel.setQuadra(quadra);
imovel
.setLote(emitirContaHelper
.getLoteConta());
imovel
.setSubLote(emitirContaHelper
.getSubLoteConta());
String inscricao = imovel
.getInscricaoFormatada();
imovel = null;
setorComercial = null;
quadra = null;
contaTxt.append(Util
.completaString(
inscricao, 20));
contaTxt
.append(Util
.completaString(
" ", 12));
String mesAnoReferencia = Util
.formatarAnoMesParaMesAno(emitirContaHelper
.getAmReferencia());
contaTxt
.append(Util
.completaString(
mesAnoReferencia,
9));
// data de vencimento da
// conta
String dataVencimento = Util
.formatarData(emitirContaHelper
.getDataVencimentoConta());
contaTxt.append(Util
.completaString(
dataVencimento,
10));
String valorContaString = Util
.formatarMoedaReal(valorConta);
// valor da conta
FiltroContaImpressao filtroContaImpressao = new FiltroContaImpressao();
filtroContaImpressao
.adicionarParametro(new ParametroSimples(
FiltroContaImpressao.ID,
emitirContaHelper
.getIdConta()
.toString()));
filtroContaImpressao
.adicionarCaminhoParaCarregamentoEntidade("contaTipo");
Collection<ContaImpressao> cContaIm = getControladorUtil()
.pesquisar(
filtroContaImpressao,
ContaImpressao.class
.getName());
ContaImpressao contaImpressao = cContaIm
.iterator().next();
Integer contaTipo = contaImpressao
.getContaTipo().getId();
contaTxt
.append(Util
.completaStringComEspacoAEsquerda(
valorContaString,
15));
if (contaTipo
.equals(ContaTipo.CONTA_DEBITO_AUTOMATICO)
|| contaTipo
.equals(ContaTipo.CONTA_DEBITO_AUTO_COM_CLIENTE_RESP
.intValue())) {
contaTxt
.append(Util
.completaString(
"N�O PODE SER PAGO EM BANCO",
65));
contaTxt
.append(Util
.completaString(
"D�BITO AUTOM�TICO EM CONTA CORRENTE",
65));
} else {
contaTxt.append(Util
.completaString(
" ", 65));
contaTxt.append(Util
.completaString(
" ", 65));
}
// M�s/Ano refer�ncia da
// conta
// digito
// verificador
contaTxt
.append(Util
.completaString(
dataExtensa,
14));
contaTxt
.append(Util
.adicionarZerosEsquedaNumero(
8,
imovelEmitido
.getId()
.toString()));
contaTxt
.append(Util
.completaString(
emitirContaHelper
.getIdLocalidade()
.toString(),
3));
contaTxt
.append(Util
.adicionarZerosEsquedaNumero(
3,
emitirContaHelper
.getCodigoSetorComercialConta()
.toString()));
contaTxt
.append(Util
.adicionarZerosEsquedaNumero(
3,
emitirContaHelper
.getIdQuadraConta()
.toString()));
contaTxt
.append(Util
.adicionarZerosEsquedaNumero(
4,
emitirContaHelper
.getLoteConta()
.toString()));
contaTxt
.append(Util
.adicionarZerosEsquedaNumero(
2,
emitirContaHelper
.getSubLoteConta()
.toString()));
// DIGITO ?????
contaTxt
.append(Util
.adicionarZerosEsquedaNumero(
1, "0"));
Integer[] parmSituacao = determinarTipoLigacaoMedicao(emitirContaHelper);
Integer tipoLigacao = parmSituacao[0];
Integer tipoMedicao = parmSituacao[1];
Object[] parmsMedicaoHistorico = obterDadosMedicaoConta(
emitirContaHelper,
tipoMedicao);
// Leitura Anterior
String leituraAnterior = "";
// Leitura Atual
String leituraAtual = "";
// Data Leitura Anterior
String dataLeituraAnterior = "";
// Leitura Anterior
String dataLeituraAtual = "";
if (parmsMedicaoHistorico != null) {
if (parmsMedicaoHistorico[0] != null) {
leituraAnterior = ""
+ (Integer) parmsMedicaoHistorico[0];
}
if (parmsMedicaoHistorico[1] != null) {
leituraAtual = ""
+ (Integer) parmsMedicaoHistorico[1];
}
if (parmsMedicaoHistorico[3] != null) {
dataLeituraAnterior = Util
.formatarData((Date) parmsMedicaoHistorico[3]);
}
if (parmsMedicaoHistorico[2] != null) {
dataLeituraAtual = Util
.formatarData((Date) parmsMedicaoHistorico[2]);
}
}
Object[] parmsConsumoHistorico = null;
String consumoMedio = "";
if (tipoLigacao != null) {
try {
parmsConsumoHistorico = repositorioMicromedicao
.obterDadosConsumoConta(
emitirContaHelper
.getIdImovel(),
emitirContaHelper
.getAmReferencia(),
tipoLigacao);
} catch (ErroRepositorioException e) {
sessionContext
.setRollbackOnly();
throw new ControladorException(
"erro.sistema",
e);
}
if (parmsConsumoHistorico != null) {
// Consumo m�dio
if (parmsConsumoHistorico[2] != null) {
consumoMedio = ""
+ (Integer) parmsConsumoHistorico[2];
}
}
}
// Data Leitura Atual
contaTxt
.append(Util
.completaString(
dataLeituraAtual,
5));
contaTxt
.append(Util
.completaString(
leituraAnterior,
6));
// Leitura Atual
contaTxt
.append(Util
.completaString(
leituraAtual,
6));
String diasConsumo = "";
if (!dataLeituraAnterior
.equals("")
&& !dataLeituraAtual
.equals("")) {
diasConsumo = ""
+ Util
.obterQuantidadeDiasEntreDuasDatas(
(Date) parmsMedicaoHistorico[3],
(Date) parmsMedicaoHistorico[2]);
}
String[] parmsConsumo = obterConsumoFaturadoConsumoMedioDiario(
emitirContaHelper,
tipoMedicao,
diasConsumo);
String consumoFaturamento = parmsConsumo[0];
// Consumo faturado
contaTxt
.append(Util
.completaString(
consumoFaturamento,
5));
contaTxt
.append(Util
.completaString(
consumoMedio,
5));
contaTxt
.append(Util
.completaString(
this
.obterConsumoAnterior(
emitirContaHelper
.getIdImovel(),
emitirContaHelper
.getAmReferencia(),
6,
tipoLigacao,
tipoMedicao)
.toString(),
12));
contaTxt
.append(Util
.completaString(
this
.obterConsumoAnterior(
emitirContaHelper
.getIdImovel(),
emitirContaHelper
.getAmReferencia(),
5,
tipoLigacao,
tipoMedicao)
.toString(),
12));
contaTxt
.append(Util
.completaString(
this
.obterConsumoAnterior(
emitirContaHelper
.getIdImovel(),
emitirContaHelper
.getAmReferencia(),
4,
tipoLigacao,
tipoMedicao)
.toString(),
12));
contaTxt
.append(Util
.completaString(
this
.obterConsumoAnterior(
emitirContaHelper
.getIdImovel(),
emitirContaHelper
.getAmReferencia(),
3,
tipoLigacao,
tipoMedicao)
.toString(),
12));
contaTxt
.append(Util
.completaString(
this
.obterConsumoAnterior(
emitirContaHelper
.getIdImovel(),
emitirContaHelper
.getAmReferencia(),
2,
tipoLigacao,
tipoMedicao)
.toString(),
12));
contaTxt
.append(Util
.completaString(
this
.obterConsumoAnterior(
emitirContaHelper
.getIdImovel(),
emitirContaHelper
.getAmReferencia(),
1,
tipoLigacao,
tipoMedicao)
.toString(),
12));
contaTxt.append(Util
.completaString(
economias, 24));
ObterDebitoImovelOuClienteHelper obterDebitoImovelOuClienteHelper = this
.obterDebitoImovelOuClienteHelper(
emitirContaHelper,
sistemaParametro);
if (obterDebitoImovelOuClienteHelper != null
&& ((obterDebitoImovelOuClienteHelper
.getColecaoGuiasPagamentoValores() != null && !obterDebitoImovelOuClienteHelper
.getColecaoGuiasPagamentoValores()
.isEmpty()) || (obterDebitoImovelOuClienteHelper
.getColecaoContasValores() != null && !obterDebitoImovelOuClienteHelper
.getColecaoContasValores()
.isEmpty()))) {
Collection colecaoContasValores = obterDebitoImovelOuClienteHelper
.getColecaoContasValores();
if (colecaoContasValores != null
&& !colecaoContasValores
.isEmpty()) {
if (colecaoContasValores
.size() > 5) {
contaTxt
.append(Util
.completaString(
"H� MAIS DE CINCO CONTAS EM ATRASO",
40));
} else {
String contasAtraso = "";
for (Iterator iter = colecaoContasValores
.iterator(); iter
.hasNext();) {
ContaValoresHelper contasValores = (ContaValoresHelper) iter
.next();
contasAtraso = contasAtraso
+ contasValores
.getConta()
.getFormatarAnoMesParaMesAno()
+ " ";
}
contaTxt
.append(Util
.completaString(
contasAtraso,
40));
}
} else {
contaTxt
.append(Util
.completaString(
"",
40));
/*contaTxt
.append(Util
.completaString(
"PARAB�NS... N�O CONSTA D�BITOS!",
40));*/
}
} else {
contaTxt
.append(Util
.completaString(
"",
40));
}
if (imovelEmitido
.getLigacaoAgua() != null) {
if (imovelEmitido
.getLigacaoAgua()
.getHidrometroInstalacaoHistorico() != null) {
if (imovelEmitido
.getLigacaoAgua()
.getHidrometroInstalacaoHistorico()
.getHidrometro() != null) {
contaTxt
.append(Util
.completaString(
imovelEmitido
.getLigacaoAgua()
.getHidrometroInstalacaoHistorico()
.getHidrometro()
.getNumero(),
10));
} else {
contaTxt
.append(Util
.completaString(
" ",
10));
}
} else {
contaTxt
.append(Util
.completaString(
" ",
10));
}
} else {
contaTxt.append(Util
.completaString(
" ", 10));
}
Collection colecaoContaCategoriaConsumoFaixa = null;
try {
colecaoContaCategoriaConsumoFaixa = repositorioFaturamento
.pesquisarContaCategoriaConsumoFaixa(emitirContaHelper
.getIdConta());
} catch (ErroRepositorioException e) {
throw new ControladorException(
"erro.sistema", e);
}
Integer consumoExcesso = 0;
Integer consumoMinimo = 0;
BigDecimal valorExcesso = new BigDecimal(
"0.0");
BigDecimal valorMinimo = new BigDecimal(
"0.0");
if (colecaoContaCategoriaConsumoFaixa == null
|| colecaoContaCategoriaConsumoFaixa
.isEmpty()) {
consumoMinimo = emitirContaHelper
.getConsumoAgua();
valorMinimo = emitirContaHelper
.getValorAgua();
} else {
if (!emitirContaHelper
.getConsumoAgua()
.equals(0)) {
for (Iterator iter = colecaoContaCategoriaConsumoFaixa
.iterator(); iter
.hasNext();) {
ContaCategoriaConsumoFaixa contaCategoriaConsumoFaixa = (ContaCategoriaConsumoFaixa) iter
.next();
if (contaCategoriaConsumoFaixa
.getConsumoAgua() != null) {
for (Iterator iteration = colecaoSubCategoria
.iterator(); iteration
.hasNext();) {
Subcategoria subCategoriaEmitir = (Subcategoria) iteration
.next();
if (contaCategoriaConsumoFaixa
.getSubcategoria()
.getId()
.equals(
subCategoriaEmitir
.getId())) {
consumoExcesso = consumoExcesso
+ contaCategoriaConsumoFaixa
.getConsumoAgua()
* subCategoriaEmitir
.getQuantidadeEconomias();
valorExcesso = valorExcesso
.add(contaCategoriaConsumoFaixa
.getValorAgua()
.multiply(
new BigDecimal(
subCategoriaEmitir
.getQuantidadeEconomias())));
}
}
}
}
}
valorMinimo = emitirContaHelper
.getValorAgua()
.subtract(
valorExcesso);
consumoMinimo = emitirContaHelper
.getConsumoAgua()
- consumoExcesso;
}
int i = 0;
BigDecimal valorNullo = new BigDecimal(
"0.00");
Integer consumoNullo = new Integer(
0);
if (!valorMinimo
.equals(valorNullo)) {
if (!consumoMinimo
.equals(consumoNullo)) {
contaTxt
.append("TARIFA M�NIMA �GUA "); // 30
contaTxt
.append(Util
.completaString(
consumoMinimo
+ " M3",
24));
contaTxt
.append(Util
.completaStringComEspacoAEsquerda(
Util
.formatarMoedaReal(valorMinimo),
12));
} else {
contaTxt
.append("TARIFA M�NIMA �GUA "); // 30
contaTxt
.append(Util
.completaString(
consumoMinimo
+ " ",
24));
contaTxt
.append(Util
.completaStringComEspacoAEsquerda(
Util
.formatarMoedaReal(valorMinimo),
12));
}
i++;
}
if (!consumoExcesso
.equals(consumoNullo)) {
contaTxt
.append("TARIFA EXCESSO �GUA "); // 30
contaTxt
.append(Util
.completaString(
consumoExcesso
+ " M3",
24));
contaTxt
.append(Util
.completaStringComEspacoAEsquerda(
Util
.formatarMoedaReal(valorExcesso),
12));
i++;
}
if (!emitirContaHelper
.getPercentualEsgotoConta()
.equals(valorNullo)) {
contaTxt
.append("TARIFA ESGOTO "); // 30
contaTxt
.append(Util
.completaString(
emitirContaHelper
.getPercentualEsgotoConta()
+ "%",
24));
contaTxt
.append(Util
.completaStringComEspacoAEsquerda(
Util
.formatarMoedaReal(emitirContaHelper
.getValorEsgoto()),
12));
i++;
}
if (!emitirContaHelper
.getValorCreditos()
.equals(valorNullo)) {
contaTxt
.append("CR�DITOS E DESCONTOS "); // 30
contaTxt.append(Util
.completaString(
" ", 24));
contaTxt
.append(Util
.completaStringComEspacoAEsquerda(
Util
.formatarMoedaReal(emitirContaHelper
.getValorCreditos()),
12));
i++;
}
if (!emitirContaHelper
.getValorImpostos()
.equals(valorNullo)) {
contaTxt
.append("IMPOSTOS DEDUZIDOS "); // 30
contaTxt.append(Util
.completaString(
" ", 24));
contaTxt
.append(Util
.completaStringComEspacoAEsquerda(
Util
.formatarMoedaReal(emitirContaHelper
.getValorImpostos()),
12));
i++;
}
// setando os servicos
Conta contaId = new Conta();
contaId.setId(emitirContaHelper
.getIdConta());
Collection<DebitoCobradoAgrupadoHelper> cDebitoCobrado = this
.obterDebitosCobradosContaCAERN(contaId);
int quantidadeLinhasSobrando = 10 - i;
if (cDebitoCobrado != null
&& !cDebitoCobrado
.isEmpty()) {
int quantidadeDebitos = cDebitoCobrado
.size();
if (quantidadeLinhasSobrando >= quantidadeDebitos) {
for (Iterator iter = cDebitoCobrado
.iterator(); iter
.hasNext();) {
DebitoCobradoAgrupadoHelper debitoCobrado = (DebitoCobradoAgrupadoHelper) iter
.next();
contaTxt
.append(Util
.completaString(
debitoCobrado
.getDescricaoDebitoTipo(),
30)); // 30
contaTxt
.append(Util
.completaString(
debitoCobrado
.getNumeroPrestacaoDebito()
+ "/"
+ debitoCobrado
.getNumeroPrestacao(),
24));
contaTxt
.append(Util
.completaStringComEspacoAEsquerda(
Util
.formatarMoedaReal(debitoCobrado
.getValorDebito()),
12));
i++;
}
} else {
Iterator iter = cDebitoCobrado
.iterator();
int contador = 1;
BigDecimal valorAcumulado = new BigDecimal(
"0.00");
boolean temOutros = false;
while (iter.hasNext()) {
DebitoCobradoAgrupadoHelper debitoCobrado = (DebitoCobradoAgrupadoHelper) iter
.next();
if (quantidadeLinhasSobrando > contador) {
contaTxt
.append(Util
.completaString(
debitoCobrado
.getDescricaoDebitoTipo(),
30)); // 30
contaTxt
.append(Util
.completaString(
debitoCobrado
.getNumeroPrestacaoDebito()
+ "/"
+ debitoCobrado
.getNumeroPrestacao(),
24));
contaTxt
.append(Util
.completaStringComEspacoAEsquerda(
Util
.formatarMoedaReal(debitoCobrado
.getValorDebito()),
12));
i++;
} else {
valorAcumulado = valorAcumulado
.add(debitoCobrado
.getValorDebito());
temOutros = true;
}
contador++;
}
if (temOutros) {
contaTxt
.append("OUTROS SERVI�OS "); // 30
contaTxt
.append(Util
.completaString(
" ",
24));
contaTxt
.append(Util
.completaStringComEspacoAEsquerda(
Util
.formatarMoedaReal(valorAcumulado),
12));
i++;
}
}
}
int quantidadeLinhasServicosSobraram = 10 - i;
contaTxt
.append(Util
.completaString(
" ",
quantidadeLinhasServicosSobraram * 66));
// [SB0018 - Gerar
// Linhas
// das
// DemaisContas]
anoMesString = ""
+ emitirContaHelper
.getAmReferencia();
// formata ano mes para mes ano
mesAnoFormatado = anoMesString
.substring(4, 6)
+ anoMesString
.substring(0, 4);
digitoVerificadorConta = new Integer(
""
+ emitirContaHelper
.getDigitoVerificadorConta());
representacaoNumericaCodBarra = null;
representacaoNumericaCodBarra = getControladorArrecadacao()
.obterRepresentacaoNumericaCodigoBarra(
3,
valorConta,
emitirContaHelper
.getIdLocalidade(),
emitirContaHelper
.getIdImovel(),
mesAnoFormatado,
digitoVerificadorConta,
null, null,
null, null,
null, null,
null);
contaTxt
.append(Util
.completaString(
representacaoNumericaCodBarra,
48));
contaTxt
.append(Util
.completaString(
" ", 66)); // Rodap�,
//Altera��o por Tiago Moreno - 23/01/2009 - Determinacao judicial (Nitrato)
Conta contaEmitida = new Conta();
contaEmitida.setId(emitirContaHelper.getIdConta());
CreditoRealizado creditoRealizado = repositorioFaturamento.pesquisarCreditoRealizadoNitrato(contaEmitida);
if (creditoRealizado != null){
contaTxt.append(Util.completaString("Por decis�o judicial de 15/05/08 - proc. 001.07.200202-7, esta conta inclui um desconto de 50% no valor da �gua. R$"
+ Util.completaString(Util.formatarMoedaReal(creditoRealizado.getValorCredito()), 13), 160));
} else {
contaTxt.append(Util.completaString(" ", 160));
}
// rodap�
// I,
// rodap�
// II,
// rodap�
// III,
contasTxtLista.append(contaTxt
.toString());
conta = null;
StringBuilder teste = new StringBuilder();
teste.append(contaTxt);
// PEDRO 19/10/2006
contaTxt = null;
// enquanto estiver
// proximo
// if
// (iteratorConta.hasNext())
// {
contasTxtLista
.append(System
.getProperty("line.separator"));
// adiciona o id da
// conta e o sequencial
// no para serem
// atualizados
mapAtualizaSequencial.put(
emitirContaHelper
.getIdConta(),
sequencialImpressao);
}// fim do la�o que
// verifica
// se o
// helper � diferente de
// nulo
}// fim do la�o que verifica
// as 2
// contas
}// fim la�o while do iterator do
// objeto
// helper
countOrdem++;
mapContasDivididas = null;
}// fim do while que pega os Map
// ordenados
}// fim do la�o que verifica se o Map
// est�
// nula
// fim do la�o que verifica se a cole��o �
// nula
} else {
flagTerminou = true;
}
// Fim do Loop Principal
numeroIndice = numeroIndice + 1000;
repositorioFaturamento
.atualizarSequencialContaImpressao(mapAtualizaSequencial);
mapAtualizaSequencial = null;
}// fim la�o if da pagina��o
String nomeZip = null;
nomeZip = "CONTA_ClientesResponsavel_Emp" + idEmpresa + "-";
BufferedWriter out = null;
ZipOutputStream zos = null;
File compactadoTipo = new File(nomeZip + ".zip");
File leituraTipo = new File(nomeZip + ".txt");
if (contasTxtLista != null && contasTxtLista.length() != 0) {
// fim de arquivo
// ************ TIPO E *************
System.out.println("CRIANDO ZIP");
zos = new ZipOutputStream(new FileOutputStream(
compactadoTipo));
out = new BufferedWriter(new OutputStreamWriter(
new FileOutputStream(leituraTipo
.getAbsolutePath())));
out.write(contasTxtLista.toString());
out.flush();
ZipUtil.adicionarArquivo(zos, leituraTipo);
zos.close();
leituraTipo.delete();
out.close();
}
// limpa todos os campos
nomeZip = null;
out = null;
zos = null;
compactadoTipo = null;
leituraTipo = null;
contasTxtLista = null;
tipoConta++;
} catch (ErroRepositorioException e) {
throw new ControladorException("erro.sistema", e);
}
} catch (IOException e) {
String mensagem = e.getMessage();
String[] inicioMensagem = mensagem.split("\\.");
if (inicioMensagem != null
&& (inicioMensagem[0].equals("erro") || inicioMensagem[0]
.equals("atencao"))) {
throw new ControladorException(mensagem);
} else {
throw new ControladorException("erro.sistema", e);
}
} catch (Exception e) {
e.printStackTrace();
String mensagem = e.getMessage();
if (mensagem != null) {
String[] inicioMensagem = mensagem.split("\\.");
if (inicioMensagem != null
&& (inicioMensagem[0].equals("erro") || inicioMensagem[0]
.equals("atencao"))) {
throw new ControladorException(mensagem);
} else {
throw new ControladorException("erro.sistema", e);
}
} else {
throw new ControladorException("erro.sistema", e);
}
}
// --------------------------------------------------------
//
// Registrar o fim da execu��o da Unidade de Processamento
//
// --------------------------------------------------------
getControladorBatch().encerrarUnidadeProcessamentoBatch(null,
idUnidadeIniciada, false);
} catch (Exception e) {
// Este catch serve para interceptar qualquer exce��o que o processo
// batch venha a lan�ar e garantir que a unidade de processamento do
// batch ser� atualizada com o erro ocorrido
e.printStackTrace();
getControladorBatch().encerrarUnidadeProcessamentoBatch(e,
idUnidadeIniciada, true);
throw new EJBException(e);
}
}
public String[] obterMensagemConta3Partes(
EmitirContaHelper emitirContaHelper,
SistemaParametro sistemaParametro) throws ControladorException {
String[] mensagemContaDivididas = new String[3];
// Integer anoMesReferenciaFinal =
// sistemaParametro.getAnoMesFaturamento();
// int anoMesSubtraido = Util
// .subtrairMesDoAnoMes(anoMesReferenciaFinal, 1);
// mensagem da conta para a anormalidade de consumo (Baixo Consumo,Auto Consumo e Estouro de Consumo)
mensagemContaDivididas = obterMensagemAnormalidadeConsumo(emitirContaHelper);
if(mensagemContaDivididas == null || mensagemContaDivididas.equals("")){
mensagemContaDivididas = new String[3];
Integer dataVencimentoFinalInteger = sistemaParametro
.getAnoMesArrecadacao();
String anoMesSubtraidoString = ""
+ Util.subtrairMesDoAnoMes(dataVencimentoFinalInteger, 1);
int ano = Integer.parseInt(anoMesSubtraidoString.substring(0, 4));
int mes = Integer.parseInt(anoMesSubtraidoString.substring(4, 6));
// recupera o ultimo dia do anomes e passa a data como parametro
Calendar dataVencimentoFinal = GregorianCalendar.getInstance();
dataVencimentoFinal.set(Calendar.YEAR, ano);
dataVencimentoFinal.set(Calendar.MONTH, (mes - 1));
dataVencimentoFinal.set(Calendar.DAY_OF_MONTH, dataVencimentoFinal
.getActualMaximum(Calendar.DAY_OF_MONTH));
// Date dataFinalDate = dataVencimentoFinal.getTime();
// converte String em data
// Date dataVencimento = Util.converteStringParaDate("01/01/1900");
Object[] mensagensConta = null;
// recupera o id do grupo de faturamento da conta
Integer idFaturamentoGrupo = emitirContaHelper.getIdFaturamentoGrupo();
// recupera o id da gerencia regional da conta
Integer idGerenciaRegional = emitirContaHelper.getIdGerenciaRegional();
// recupera o id da localidade da conta
Integer idLocalidade = emitirContaHelper.getIdLocalidade();
// recupera o id do setor comercial da conta
Integer idSetorComercial = emitirContaHelper.getIdSetorComercial();
// caso entre em alguma condi��o ent�o n�o entra mais nas outras
boolean achou = false;
try {
// o sistema obtem a mensagem para a conta
// Caso seja a condi��o 1
// (FaturamentoGrupo =null, GerenciaRegional=parmConta,
// Localidade=parmConta, SetorComercial=parmConta)
mensagensConta = repositorioFaturamento
.pesquisarParmsContaMensagem(emitirContaHelper, null,
idGerenciaRegional, idLocalidade, idSetorComercial);
if (mensagensConta != null) {
// Conta Mensagem 1
if (mensagensConta[0] != null) {
mensagemContaDivididas[0] = (String) mensagensConta[0];
} else {
mensagemContaDivididas[0] = "";
}
// Conta Mensagem 2
if (mensagensConta[1] != null) {
mensagemContaDivididas[1] = (String) mensagensConta[1];
} else {
mensagemContaDivididas[1] = "";
}
// Conta Mensagem 3
if (mensagensConta[2] != null) {
mensagemContaDivididas[2] = (String) mensagensConta[2];
} else {
mensagemContaDivididas[2] = "";
}
achou = true;
}
if (!achou) {
// Caso seja a condi��o 2
// (FaturamentoGrupo =null, GerenciaRegional=parmConta,
// Localidade=null, SetorComercial=null)
// Conta Mensagem 1
mensagensConta = repositorioFaturamento
.pesquisarParmsContaMensagem(emitirContaHelper, null,
idGerenciaRegional, idLocalidade, null);
if (mensagensConta != null) {
if (mensagensConta[0] != null) {
mensagemContaDivididas[0] = (String) mensagensConta[0];
} else {
mensagemContaDivididas[0] = "";
}
// Conta Mensagem 2
if (mensagensConta[1] != null) {
mensagemContaDivididas[1] = (String) mensagensConta[1];
} else {
mensagemContaDivididas[1] = "";
}
// Conta Mensagem 3
if (mensagensConta[2] != null) {
mensagemContaDivididas[2] = (String) mensagensConta[2];
} else {
mensagemContaDivididas[2] = "";
}
achou = true;
}
}
if (!achou) {
// Caso seja a condi��o 3
// (FaturamentoGrupo =null, GerenciaRegional=parmConta,
// Localidade=null, SetorComercial=null)
// Conta Mensagem 1
mensagensConta = repositorioFaturamento
.pesquisarParmsContaMensagem(emitirContaHelper, null,
idGerenciaRegional, null, null);
if (mensagensConta != null) {
if (mensagensConta[0] != null) {
mensagemContaDivididas[0] = (String) mensagensConta[0];
} else {
mensagemContaDivididas[0] = "";
}
// Conta Mensagem 2
if (mensagensConta[1] != null) {
mensagemContaDivididas[1] = (String) mensagensConta[1];
} else {
mensagemContaDivididas[1] = "";
}
// Conta Mensagem 3
if (mensagensConta[2] != null) {
mensagemContaDivididas[2] = (String) mensagensConta[2];
} else {
mensagemContaDivididas[2] = "";
}
achou = true;
}
}
if (!achou) {
// Caso seja a condi��o 4
// (FaturamentoGrupo =parmConta, GerenciaRegional=null,
// Localidade=null, SetorComercial=null)
// Conta Mensagem 1
mensagensConta = repositorioFaturamento
.pesquisarParmsContaMensagem(emitirContaHelper,
idFaturamentoGrupo, null, null, null);
if (mensagensConta != null) {
if (mensagensConta[0] != null) {
mensagemContaDivididas[0] = (String) mensagensConta[0];
} else {
mensagemContaDivididas[0] = "";
}
// Conta Mensagem 2
if (mensagensConta[1] != null) {
mensagemContaDivididas[1] = (String) mensagensConta[1];
} else {
mensagemContaDivididas[1] = "";
}
// Conta Mensagem 3
if (mensagensConta[2] != null) {
mensagemContaDivididas[2] = (String) mensagensConta[2];
} else {
mensagemContaDivididas[2] = "";
}
achou = true;
}
}
if (!achou) {
// Caso seja a condi��o 4
// (FaturamentoGrupo =parmConta, GerenciaRegional=null,
// Localidade=null, SetorComercial=null)
// Conta Mensagem 1
mensagensConta = repositorioFaturamento
.pesquisarParmsContaMensagem(emitirContaHelper, null,
null, idLocalidade, idSetorComercial);
if (mensagensConta != null) {
if (mensagensConta[0] != null) {
mensagemContaDivididas[0] = (String) mensagensConta[0];
} else {
mensagemContaDivididas[0] = "";
}
// Conta Mensagem 2
if (mensagensConta[1] != null) {
mensagemContaDivididas[1] = (String) mensagensConta[1];
} else {
mensagemContaDivididas[1] = "";
}
// Conta Mensagem 3
if (mensagensConta[2] != null) {
mensagemContaDivididas[2] = (String) mensagensConta[2];
} else {
mensagemContaDivididas[2] = "";
}
achou = true;
}
}
if (!achou) {
// Caso seja a condi��o 4
// (FaturamentoGrupo =parmConta, GerenciaRegional=null,
// Localidade=null, SetorComercial=null)
// Conta Mensagem 1
mensagensConta = repositorioFaturamento
.pesquisarParmsContaMensagem(emitirContaHelper, null,
null, idLocalidade, null);
if (mensagensConta != null) {
if (mensagensConta[0] != null) {
mensagemContaDivididas[0] = (String) mensagensConta[0];
} else {
mensagemContaDivididas[0] = "";
}
// Conta Mensagem 2
if (mensagensConta[1] != null) {
mensagemContaDivididas[1] = (String) mensagensConta[1];
} else {
mensagemContaDivididas[1] = "";
}
// Conta Mensagem 3
if (mensagensConta[2] != null) {
mensagemContaDivididas[2] = (String) mensagensConta[2];
} else {
mensagemContaDivididas[2] = "";
}
achou = true;
}
}
if (!achou) {
// Caso seja a condi��o 5
// (FaturamentoGrupo =null, GerenciaRegional=null,
// Localidade=null, SetorComercial=null)
// Conta Mensagem 1
mensagensConta = repositorioFaturamento
.pesquisarParmsContaMensagem(emitirContaHelper, null,
null, null, null);
if (mensagensConta != null) {
if (mensagensConta[0] != null) {
mensagemContaDivididas[0] = (String) mensagensConta[0];
} else {
mensagemContaDivididas[0] = "";
}
// Conta Mensagem 2
if (mensagensConta[1] != null) {
mensagemContaDivididas[1] = (String) mensagensConta[1];
} else {
mensagemContaDivididas[1] = "";
}
// Conta Mensagem 3
if (mensagensConta[2] != null) {
mensagemContaDivididas[2] = (String) mensagensConta[2];
} else {
mensagemContaDivididas[2] = "";
}
achou = true;
}
}
// caso n�o tenha entrado em nenhuma das op��es acima
// ent�o completa a string com espa��s em branco
if (!achou) {
mensagemContaDivididas[0] = "";
mensagemContaDivididas[1] = "";
mensagemContaDivididas[2] = "";
}
} catch (ErroRepositorioException e) {
sessionContext.setRollbackOnly();
throw new ControladorException("erro.sistema", e);
}
}
return mensagemContaDivididas;
}
public StringBuilder obterConsumoAnterior(Integer idImovel, int anoMes,
int qtdMeses, Integer tipoLigacao, Integer tipoMedicao)
throws ControladorException {
StringBuilder dadosConsumoAnterior = new StringBuilder();
int anoMesSubtraido = Util.subtrairMesDoAnoMes(anoMes, qtdMeses);
String mesAnoFormatado = Util.formatarAnoMesParaMesAno(anoMesSubtraido)
+ " -";
// adiciona o mes/ano formatado com o tra�o
// caso o tipo de liga��o e medi��o seja diferente de nulo
if (tipoLigacao != null && tipoMedicao != null) {
dadosConsumoAnterior
.append(Util.completaString(mesAnoFormatado, 7));
Object[] parmsConsumoHistorico = null;
parmsConsumoHistorico = getControladorMicromedicao()
.obterConsumoAnteriorAnormalidadeDoImovel(idImovel,
anoMesSubtraido, tipoLigacao);
Integer numeroConsumoFaturadoMes = null;
if (parmsConsumoHistorico != null) {
if (parmsConsumoHistorico[0] != null) {
numeroConsumoFaturadoMes = (Integer) parmsConsumoHistorico[0];
}
}
// caso o numero consumo faturado do mes for diferente de nulo
if (numeroConsumoFaturadoMes != null) {
dadosConsumoAnterior.append(Util.completaString(""
+ numeroConsumoFaturadoMes, 5));
} else {
dadosConsumoAnterior.append(Util.completaString(" ", 5));
}
// caso o id dos dados do consumo anterior for diferente de nulo
} else {
// sen�o completa com espa�os em branco
dadosConsumoAnterior.append(Util.completaString("", 12));
}
return dadosConsumoAnterior;
}
public StringBuilder gerarLinhasDescricaoServicoTarifas(
EmitirContaHelper emitirContaHelper, String consumoRateio,
Object[] parmsMedicaoHistorico, Integer tipoMedicao)
throws ControladorException {
StringBuilder linhasDescricaoServicosTarifasTotal = new StringBuilder();
// caso o valor da agua da conta seja maior que zero
if (emitirContaHelper.getValorAgua() != null
&& emitirContaHelper.getValorAgua().compareTo(
new BigDecimal("0.00")) == 1) {
// [SB0011] - Gerar Linhas da Tarifa de �gua
StringBuilder linhasTarifaAgua = gerarLinhasTarifaAgua(
emitirContaHelper, consumoRateio, parmsMedicaoHistorico,
tipoMedicao);
linhasDescricaoServicosTarifasTotal.append(linhasTarifaAgua);
}
// caso o valor de �gua de esgoto seja maior que zero
if (emitirContaHelper.getValorEsgoto() != null
&& emitirContaHelper.getValorEsgoto().compareTo(
new BigDecimal("0.00")) == 1) {
// [SB0012] - Gerar Linhas da tarifa de Esgoto
StringBuilder linhasTarifaEsgoto = gerarLinhasTarifaEsgoto(emitirContaHelper);
// caso a stringBuilder j� esteja preenchida
if (linhasDescricaoServicosTarifasTotal != null
&& linhasDescricaoServicosTarifasTotal.length() != 0) {
// caso a stringBuilder j� esteja preenchida
if (linhasTarifaEsgoto != null
&& linhasTarifaEsgoto.length() != 0) {
linhasDescricaoServicosTarifasTotal
.append(linhasTarifaEsgoto);
}
} else {
linhasDescricaoServicosTarifasTotal.append(linhasTarifaEsgoto);
}
}
// caso o valor de debitos cobrados da conta seja maior que zero
if (emitirContaHelper.getDebitos() != null
&& emitirContaHelper.getDebitos().compareTo(
new BigDecimal("0.00")) == 1) {
// [SB0013] - Gerar Linhas de D�bitos Cobrados
StringBuilder linhasDebitoCobrados = gerarLinhasDebitoCobrados(emitirContaHelper);
// caso a stringBuilder j� esteja preenchida
if (linhasDescricaoServicosTarifasTotal != null
&& linhasDescricaoServicosTarifasTotal.length() != 0) {
// caso a stringBuilder j� esteja preenchida
if (linhasDebitoCobrados != null
&& linhasDebitoCobrados.length() != 0) {
linhasDescricaoServicosTarifasTotal
.append(linhasDebitoCobrados);
}
} else {
linhasDescricaoServicosTarifasTotal
.append(linhasDebitoCobrados);
}
}
// caso o valor de cr�ditos realizados seja maior que zero
if (emitirContaHelper.getValorCreditos() != null
&& emitirContaHelper.getValorCreditos().compareTo(
new BigDecimal("0.00")) == 1) {
// [SB0014] - Gerar Linhas de Cr�dito Realizado
StringBuilder linhasCreditoRealizados = gerarLinhasCreditosRealizados(emitirContaHelper);
// caso a stringBuilder j� esteja preenchida
if (linhasDescricaoServicosTarifasTotal != null
&& linhasDescricaoServicosTarifasTotal.length() != 0) {
if (linhasCreditoRealizados != null
&& linhasCreditoRealizados.length() != 0) {
linhasDescricaoServicosTarifasTotal
.append(linhasCreditoRealizados);
}
} else {
linhasDescricaoServicosTarifasTotal
.append(linhasCreditoRealizados);
}
}
// caso o valor dos impostos retidos seja maior que zero
if (emitirContaHelper.getValorImpostos() != null
&& emitirContaHelper.getValorImpostos().compareTo(
new BigDecimal("0.00")) == 1) {
// [SB0015] - Gerar Linhas dos Impostos Retidos
StringBuilder linhasImpostosRetidos = gerarLinhasImpostosRetidos(emitirContaHelper);
// caso a stringBuilder j� esteja preenchida
if (linhasDescricaoServicosTarifasTotal != null
&& linhasDescricaoServicosTarifasTotal.length() != 0) {
// caso a stringBuilder j� esteja preenchida
if (linhasImpostosRetidos != null
&& linhasImpostosRetidos.length() != 0) {
linhasDescricaoServicosTarifasTotal
.append(linhasImpostosRetidos);
}
} else {
linhasDescricaoServicosTarifasTotal
.append(linhasImpostosRetidos);
}
}
return linhasDescricaoServicosTarifasTotal;
}
protected StringBuilder gerarLinhasTarifaAgua(
EmitirContaHelper emitirContaHelper, String consumoRateio,
Object[] parmsMedicaoHistorico, Integer tipoMedicao)
throws ControladorException {
StringBuilder linhasTarifaAgua = new StringBuilder();
// -- Linha 1 --//
// Canal
// Fonte
linhasTarifaAgua.append("1");
linhasTarifaAgua.append("AGUA");
linhasTarifaAgua.append(Util.completaString("", 125));
Collection colecaoContaCategoriaComFaixas = null;
try {
colecaoContaCategoriaComFaixas = repositorioFaturamento
.pesquisarContaCategoria(emitirContaHelper.getIdConta());
} catch (ErroRepositorioException e) {
sessionContext.setRollbackOnly();
throw new ControladorException("erro.sistema", e);
}
if (colecaoContaCategoriaComFaixas != null
&& !colecaoContaCategoriaComFaixas.isEmpty()) {
Iterator iteratorContaCategoriaComFaixas = colecaoContaCategoriaComFaixas
.iterator();
while (iteratorContaCategoriaComFaixas.hasNext()) {
ContaCategoria contaCategoria = (ContaCategoria) iteratorContaCategoriaComFaixas
.next();
// -- Linha 2 --//
// Canal
linhasTarifaAgua.append(" ");
// Fonte
linhasTarifaAgua.append("1");
linhasTarifaAgua.append(" ");
// descricao da categoria
linhasTarifaAgua.append(Util.completaString(contaCategoria
.getComp_id().getCategoria().getDescricao(), 13));
// quantidade de economias
linhasTarifaAgua.append(Util.adicionarZerosEsquedaNumero(3, ""
+ contaCategoria.getQuantidadeEconomia()));
// completa com espa�os em branco
linhasTarifaAgua.append(Util.completaString("", 2));
if (contaCategoria.getQuantidadeEconomia() == 1) {
linhasTarifaAgua.append("UNIDADE ");
} else {
linhasTarifaAgua.append("UNIDADES");
}
// completa com espa�os em branco
linhasTarifaAgua.append(Util.completaString("", 102));
// -- Linha 3 --//
// Canal
linhasTarifaAgua.append(" ");
// Fonte
linhasTarifaAgua.append("1");
// completa com espa�os em branco
linhasTarifaAgua.append(" ");
// caso n�o existam dados de medi��o
if (parmsMedicaoHistorico == null) {
// Constante
linhasTarifaAgua.append("TARIFA M�NIMA");
// Valor da tarifa m�nima de �gua para a categoria por
// economia
BigDecimal qtdEconomia = Util
.formatarMoedaRealparaBigDecimal(""
+ contaCategoria.getQuantidadeEconomia());
String valorTarifaMinima = "";
if (contaCategoria.getValorTarifaMinimaAgua() != null
&& qtdEconomia != null) {
BigDecimal valorTarifaMinimaBigDecimal = contaCategoria
.getValorTarifaMinimaAgua().divide(qtdEconomia,
2, RoundingMode.UP);
valorTarifaMinima = Util
.formatarMoedaReal(valorTarifaMinimaBigDecimal);
}
linhasTarifaAgua.append(Util
.completaStringComEspacoAEsquerda(
valorTarifaMinima, 6));
// completa com espa�os em branco
linhasTarifaAgua.append(" ");
// Constante
linhasTarifaAgua.append("POR UNIDADE");
// completa com espa�os em branco
linhasTarifaAgua.append(Util.completaString("", 18));
// Constante
linhasTarifaAgua.append("MINIMO");
// completa com espa�os em branco
linhasTarifaAgua.append(Util.completaString("", 11));
// valor da �gua para categoria
String valorAgua = Util.formatarMoedaReal(emitirContaHelper
.getValorAgua());
linhasTarifaAgua.append(Util
.completaStringComEspacoAEsquerda(valorAgua, 17));
// completa com espa�os em branco
linhasTarifaAgua.append(Util.completaString("", 45));
} else {
// recupera a cole��o de conta categoria consumo faixa
Collection colecaoContaCategoriaConsumoFaixa = null;
try {
colecaoContaCategoriaConsumoFaixa = repositorioFaturamento
.pesquisarContaCategoriaFaixas(
emitirContaHelper.getIdConta(),
contaCategoria.getComp_id()
.getCategoria().getId());
} catch (ErroRepositorioException e) {
sessionContext.setRollbackOnly();
throw new ControladorException("erro.sistema", e);
}
if (colecaoContaCategoriaConsumoFaixa != null
&& !colecaoContaCategoriaConsumoFaixa.isEmpty()) {
// Constante
linhasTarifaAgua.append("ATE");
// Constante
linhasTarifaAgua.append(" ");
// Consumo m�nimo de �gua para a categoria por
// economia
BigDecimal qtdEconomia = Util
.formatarMoedaRealparaBigDecimal(""
+ contaCategoria
.getQuantidadeEconomia());
BigDecimal consumoMinimoAgua = null;
if (contaCategoria.getConsumoMinimoAgua() != null) {
consumoMinimoAgua = Util
.formatarMoedaRealparaBigDecimal(""
+ contaCategoria
.getConsumoMinimoAgua());
}
BigDecimal consumoMinimaBigDecimal = new BigDecimal(
"0.00");
if (consumoMinimoAgua != null && qtdEconomia != null) {
consumoMinimaBigDecimal = consumoMinimoAgua.divide(
qtdEconomia, 2, RoundingMode.UP);
}
String consumoMinima = ""
+ consumoMinimaBigDecimal.intValue();
linhasTarifaAgua.append(Util
.completaStringComEspacoAEsquerda(
consumoMinima, 2));
// completa com espa�os em branco
linhasTarifaAgua.append(" ");
// Constante
linhasTarifaAgua.append("M3");
// completa com espa�os em branco
linhasTarifaAgua.append(Util.completaString("", 7));
// Constante
linhasTarifaAgua.append("- R$");
// valor da tarifa minima de agua para a categoria por
// economia
BigDecimal valorTarifaMinimaBigDecimal = null;
if (contaCategoria.getValorTarifaMinimaAgua() != null
&& qtdEconomia != null) {
valorTarifaMinimaBigDecimal = contaCategoria
.getValorTarifaMinimaAgua().divide(
qtdEconomia, 2, RoundingMode.UP);
}
String valorTarifaMinima = Util
.formatarMoedaReal(valorTarifaMinimaBigDecimal);
linhasTarifaAgua.append(Util
.completaStringComEspacoAEsquerda(
valorTarifaMinima, 6));
// completa com espa�os em branco
linhasTarifaAgua.append(" ");
// Constante
linhasTarifaAgua.append(" (POR UNIDADE)");
// completa com espa�os em branco
linhasTarifaAgua.append(Util.completaString("", 8));
// Consumo m�nimo de �gua
if (contaCategoria.getConsumoMinimoAgua() != null
&& !contaCategoria.getConsumoMinimoAgua()
.equals("")) {
linhasTarifaAgua
.append(Util
.completaStringComEspacoAEsquerda(
""
+ contaCategoria
.getConsumoMinimoAgua(),
4));
} else {
linhasTarifaAgua.append(Util
.completaStringComEspacoAEsquerda("", 4));
}
// completa com espa�os em branco
linhasTarifaAgua.append(" ");
// Constante
linhasTarifaAgua.append("M3");
// completa com espa�os em branco
linhasTarifaAgua.append(Util.completaString("", 10));
// valor agua para categoria
String valorAguaCategoria = "";
if (contaCategoria.getValorTarifaMinimaAgua() != null) {
valorAguaCategoria = Util
.formatarMoedaReal(contaCategoria
.getValorTarifaMinimaAgua());
}
linhasTarifaAgua.append(Util
.completaStringComEspacoAEsquerda(
valorAguaCategoria, 17));
// completa com espa�os em branco
linhasTarifaAgua.append(Util.completaString("", 45));
Iterator iteratorContaCategoriaConsumoFaixa = colecaoContaCategoriaConsumoFaixa
.iterator();
while (iteratorContaCategoriaConsumoFaixa.hasNext()) {
ContaCategoriaConsumoFaixa contaCategoriaConsumoFaixa = (ContaCategoriaConsumoFaixa) iteratorContaCategoriaConsumoFaixa
.next();
// -- Linha 4 --//
// Canal
linhasTarifaAgua.append(" ");
// Fonte
linhasTarifaAgua.append("1");
// completa com espa�os em branco
linhasTarifaAgua.append(" ");
// caso a faixa seja a ultima ta tarifa de consumo
if (contaCategoriaConsumoFaixa.getConsumoFaixaFim()
.equals(999999)) {
// Constante
linhasTarifaAgua.append("ACIMA DE");
// Consumo inicial da faixa menos 1 m3
String consumoInicialFaixa = ""
+ (contaCategoriaConsumoFaixa
.getConsumoFaixaInicio() - 1);
linhasTarifaAgua.append(Util
.completaStringComEspacoAEsquerda(
consumoInicialFaixa, 3));
// Constante
linhasTarifaAgua.append(" M3 - R$");
// valor da tarifa na faixa
String valorTarifaFaixa = Util
.formatarMoedaReal(contaCategoriaConsumoFaixa
.getValorTarifaFaixa());
linhasTarifaAgua.append(Util
.completaStringComEspacoAEsquerda(
valorTarifaFaixa, 6));
// Constante
linhasTarifaAgua.append(" POR M3");
// completa com espa�os em branco
linhasTarifaAgua.append(Util.completaString("",
14));
// consumo da agua
linhasTarifaAgua.append(Util
.completaStringComEspacoAEsquerda(""
+ contaCategoriaConsumoFaixa
.getConsumoAgua()
* qtdEconomia.intValue(), 6));
// Constante
linhasTarifaAgua.append(" M3");
// completa com espa�os em branco
linhasTarifaAgua.append(Util.completaString("",
10));
// valor da agua na faixa
String valorAguaFaixa = Util
.formatarMoedaReal(contaCategoriaConsumoFaixa
.getValorAgua().multiply(
qtdEconomia));
linhasTarifaAgua.append(Util
.completaStringComEspacoAEsquerda(
valorAguaFaixa, 17));
// completa com espa�os em branco
linhasTarifaAgua.append(Util.completaString("",
45));
} else {
// Consumo inicial da faixa
String consumoInicialFaixa = ""
+ (contaCategoriaConsumoFaixa
.getConsumoFaixaInicio());
linhasTarifaAgua.append(Util
.completaStringComEspacoAEsquerda(
consumoInicialFaixa, 2));
// Constante
linhasTarifaAgua.append(" M3 A");
// consumo final da faixa
String consumoFinalFaixa = ""
+ (contaCategoriaConsumoFaixa
.getConsumoFaixaFim());
linhasTarifaAgua.append(Util
.completaStringComEspacoAEsquerda(
consumoFinalFaixa, 3));
// Constante
linhasTarifaAgua.append(" M3");
// completa com espa�os em branco
linhasTarifaAgua.append(Util.completaString("",
3));
// Constante
linhasTarifaAgua.append("- R$");
// valor da tarifa na faixa
String valorTarifaFaixa = Util
.formatarMoedaReal(contaCategoriaConsumoFaixa
.getValorTarifaFaixa());
linhasTarifaAgua.append(Util
.completaStringComEspacoAEsquerda(
valorTarifaFaixa, 6));
// Constante
linhasTarifaAgua.append(" POR M3");
// completa com espa�os em branco
linhasTarifaAgua.append(Util.completaString("",
14));
// consumo de Agua na faixa
linhasTarifaAgua.append(Util
.completaStringComEspacoAEsquerda(""
+ contaCategoriaConsumoFaixa
.getConsumoAgua()
* qtdEconomia.intValue(), 6));
// Constante
linhasTarifaAgua.append(" M3");
// completa com espa�os em branco
linhasTarifaAgua.append(Util.completaString("",
10));
// valor da agua na faixa
String valorAguaFaixa = Util
.formatarMoedaReal(contaCategoriaConsumoFaixa
.getValorAgua().multiply(
qtdEconomia));
linhasTarifaAgua.append(Util
.completaStringComEspacoAEsquerda(
valorAguaFaixa, 17));
// completa com espa�os em branco
linhasTarifaAgua.append(Util.completaString("",
45));
}
}
} else {
linhasTarifaAgua.append("CONSUMO DE �GUA");
linhasTarifaAgua.append(Util
.completaStringComEspacoAEsquerda(""
+ contaCategoria.getConsumoAgua(), 6)
+ " M3");
linhasTarifaAgua.append(Util
.completaStringComEspacoAEsquerda(Util
.formatarMoedaReal(contaCategoria
.getValorAgua()), 59));
linhasTarifaAgua.append(Util.completaString("", 45));
}
}
}
}
return linhasTarifaAgua;
}
/**
* [UC0120] - Calcular Valores de �gua e/ou Esgoto
*
* Totalizando os valores de �gua e esgoto por categoria ou subcategoria
*
* @author Raphael Rossiter
* @date 28/05/2008
*
* @param colecaoCalcularValoresAguaEsgotoHelper
* @return Collection<CalcularValoresAguaEsgotoHelper>
* @throws ControladorException
*/
public Collection<CalcularValoresAguaEsgotoHelper> calcularValoresAguaEsgotoTotalizando(
Collection colecaoCalcularValoresAguaEsgotoHelper)
throws ControladorException {
Collection<CalcularValoresAguaEsgotoHelper> colecaoRetorno = new ArrayList();
Iterator colecaoCalcularValoresAguaEsgotoHelperIt =
colecaoCalcularValoresAguaEsgotoHelper.iterator();
CalcularValoresAguaEsgotoHelper objetoTotalizacao;
CalcularValoresAguaEsgotoHelper objetoColecao;
Integer qtdSubcategoria =
(Integer) this.getControladorImovel().pesquisarObterQuantidadeSubcategoria();
Object[][] categoriasTotalizacao = new Object[qtdSubcategoria.intValue()][12];
Integer idCategoria;
BigDecimal valorAgua, valorEsgoto;
boolean categoriaDentroArray = false;
int controleCategoria = 0;
while (colecaoCalcularValoresAguaEsgotoHelperIt.hasNext()) {
objetoColecao =
(CalcularValoresAguaEsgotoHelper) colecaoCalcularValoresAguaEsgotoHelperIt.next();
if (categoriasTotalizacao[0][0] == null) {
categoriasTotalizacao[0][0] = objetoColecao.getIdCategoria();
categoriasTotalizacao[0][1] = objetoColecao.getDescricaoCategoria();
categoriasTotalizacao[0][2] = objetoColecao.getValorFaturadoAguaCategoria();
categoriasTotalizacao[0][3] = objetoColecao.getValorFaturadoEsgotoCategoria();
categoriasTotalizacao[0][4] = objetoColecao.getQuantidadeEconomiasCategoria();
categoriasTotalizacao[0][5] = objetoColecao.getConsumoFaturadoAguaCategoria();
categoriasTotalizacao[0][6] = objetoColecao.getConsumoFaturadoEsgotoCategoria();
categoriasTotalizacao[0][7] = objetoColecao.getFaixaTarifaConsumo();
categoriasTotalizacao[0][8] = objetoColecao.getValorTarifaMinimaAguaCategoria();
categoriasTotalizacao[0][9] = objetoColecao.getConsumoMinimoAguaCategoria();
categoriasTotalizacao[0][10] = objetoColecao.getValorTarifaMinimaEsgotoCategoria();
categoriasTotalizacao[0][11] = objetoColecao.getConsumoMinimoEsgotoCategoria();
controleCategoria++;
} else {
categoriaDentroArray = false;
for (int index = 0; index < categoriasTotalizacao.length; index++) {
if (categoriasTotalizacao[index][0] != null) {
idCategoria = (Integer) categoriasTotalizacao[index][0];
if (idCategoria.intValue() == objetoColecao.getIdCategoria().intValue()) {
valorAgua = (BigDecimal) categoriasTotalizacao[index][2];
if (valorAgua != null) {
valorAgua =
valorAgua.add(objetoColecao.getValorFaturadoAguaCategoria());
}
valorEsgoto = (BigDecimal) categoriasTotalizacao[index][3];
if (valorEsgoto != null) {
valorEsgoto =
valorEsgoto.add(objetoColecao.getValorFaturadoEsgotoCategoria());
}
categoriasTotalizacao[index][2] = valorAgua;
categoriasTotalizacao[index][3] = valorEsgoto;
categoriaDentroArray = true;
break;
}
} else {
break;
}
}
if (!categoriaDentroArray) {
categoriasTotalizacao[controleCategoria][0] = objetoColecao.getIdCategoria();
categoriasTotalizacao[controleCategoria][1] = objetoColecao.getDescricaoCategoria();
categoriasTotalizacao[controleCategoria][2] = objetoColecao.getValorFaturadoAguaCategoria();
categoriasTotalizacao[controleCategoria][3] = objetoColecao.getValorFaturadoEsgotoCategoria();
categoriasTotalizacao[controleCategoria][4] = objetoColecao.getQuantidadeEconomiasCategoria();
categoriasTotalizacao[controleCategoria][5] = objetoColecao.getConsumoFaturadoAguaCategoria();
categoriasTotalizacao[controleCategoria][6] = objetoColecao.getConsumoFaturadoEsgotoCategoria();
categoriasTotalizacao[controleCategoria][7] = objetoColecao.getFaixaTarifaConsumo();
categoriasTotalizacao[controleCategoria][8] = objetoColecao.getValorTarifaMinimaAguaCategoria();
categoriasTotalizacao[controleCategoria][9] = objetoColecao.getConsumoMinimoAguaCategoria();
categoriasTotalizacao[controleCategoria][10] = objetoColecao.getValorTarifaMinimaEsgotoCategoria();
categoriasTotalizacao[controleCategoria][11] = objetoColecao.getConsumoMinimoEsgotoCategoria();
controleCategoria++;
}
}
}
for (int indexArray = 0; indexArray < categoriasTotalizacao.length; indexArray++) {
if (categoriasTotalizacao[indexArray][0] != null) {
objetoTotalizacao = new CalcularValoresAguaEsgotoHelper();
objetoTotalizacao.setIdCategoria((Integer) categoriasTotalizacao[indexArray][0]);
objetoTotalizacao.setDescricaoCategoria((String) categoriasTotalizacao[indexArray][1]);
objetoTotalizacao.setValorFaturadoAguaCategoria((BigDecimal) categoriasTotalizacao[indexArray][2]);
objetoTotalizacao.setValorFaturadoEsgotoCategoria((BigDecimal) categoriasTotalizacao[indexArray][3]);
objetoTotalizacao.setQuantidadeEconomiasCategoria((Integer) categoriasTotalizacao[indexArray][4]);
objetoTotalizacao.setConsumoFaturadoAguaCategoria((Integer) categoriasTotalizacao[indexArray][5]);
objetoTotalizacao.setConsumoFaturadoEsgotoCategoria((Integer) categoriasTotalizacao[indexArray][6]);
objetoTotalizacao.setFaixaTarifaConsumo((Collection) categoriasTotalizacao[indexArray][7]);
if (categoriasTotalizacao[indexArray][8] != null) {
objetoTotalizacao.setValorTarifaMinimaAguaCategoria(
(BigDecimal) categoriasTotalizacao[indexArray][8]);
}
if (categoriasTotalizacao[indexArray][9] != null) {
objetoTotalizacao.setConsumoMinimoAguaCategoria(
(Integer) categoriasTotalizacao[indexArray][9]);
}
if (categoriasTotalizacao[indexArray][10] != null) {
objetoTotalizacao.setValorTarifaMinimaEsgotoCategoria(
(BigDecimal) categoriasTotalizacao[indexArray][10]);
}
if (categoriasTotalizacao[indexArray][11] != null) {
objetoTotalizacao.setConsumoMinimoEsgotoCategoria(
(Integer) categoriasTotalizacao[indexArray][11]);
}
colecaoRetorno.add(objetoTotalizacao);
}
}
return colecaoRetorno;
}
/**
* Este caso de uso gera os d�bitos a cobrar referentes aos acr�scimos por
* impontualidade (multa, juros de mora e atualiza��o monet�ria)
*
* [UC0302] - Gerar D�bitos a Cobrar de Acr�scimos por Impontualidade Autor:
*
* @author Fernanda Paiva, Pedro Alexandre, Raphael Rossiter
* @date 20/04/2006, 31/08/2006, 23/04/2007
*
* @param rotas
* @param indicadorGeracaoMulta
* @param indicadorGeracaoJuros
* @param indicadorGeracaoAtualizacao
* @return
* @throws ControladorException
*/
/*public Collection gerarDebitosACobrarDeAcrescimosPorImpontualidade(
Collection rotas,
Short indicadorGeracaoMulta,
Short indicadorGeracaoJuros,
Short indicadorGeracaoAtualizacao,
int idFuncionalidadeIniciada,
boolean indicadorEncerrandoArrecadacao) throws ControladorException {
int idUnidadeIniciada = 0;
System.out.println("INICIO " + new Date());
try {
// -------------------------
//
// Registrar o in�cio do processamento da Unidade de
// Processamento
// do Batch
//
// -------------------------
idUnidadeIniciada = getControladorBatch()
.iniciarUnidadeProcessamentoBatch(idFuncionalidadeIniciada,
UnidadeProcessamento.ROTA,
((Rota) Util.retonarObjetoDeColecao(rotas)).getId());
// cria uma cole��o de im�vel por rota
Collection imoveisPorRota = null;
Collection colecaoDebitoACobrarInserir = new ArrayList();
Collection colecaoDebitoACobrarCategoriaInserir = new ArrayList();
// recupera todos os im�veis da cole��o de rotas
imoveisPorRota = repositorioFaturamento
.pesquisarImoveisDasQuadrasPorRota(rotas);
SistemaParametro sistemaParametros = getControladorUtil()
.pesquisarParametrosDoSistema();
Integer anoMesReferenciaArrecadacao = sistemaParametros
.getAnoMesArrecadacao();
Iterator imovelPorRotaIterator = imoveisPorRota.iterator();
while (imovelPorRotaIterator.hasNext()) {
// cria um array de objetos para pegar os parametros de
// retorno da pesquisa
Object[] arrayImoveisPorRota = (Object[]) imovelPorRotaIterator
.next();
// instancia um im�vel
Imovel imovel = new Imovel();
if (arrayImoveisPorRota[0] != null) {
// seta o id no imovel
imovel.setId((Integer) arrayImoveisPorRota[0]);
}
if (arrayImoveisPorRota[4] != null) {
// seta o lote no imovel
imovel.setLote((Short) arrayImoveisPorRota[4]);
}
if (arrayImoveisPorRota[5] != null) {
// seta o sublote no imovel
imovel.setSubLote((Short) arrayImoveisPorRota[5]);
}
Localidade localidade = new Localidade();
if (arrayImoveisPorRota[1] != null) {
// instancia uma localidade para ser setado no im�vel
localidade.setId((Integer) arrayImoveisPorRota[1]);
imovel.setLocalidade(localidade);
}
Quadra quadra = new Quadra();
if (arrayImoveisPorRota[3] != null) {
// instancia uma quadra para ser setado no im�vel
Integer numeroQuadra = (Integer) arrayImoveisPorRota[3];
Integer idQuadra = (Integer) arrayImoveisPorRota[7];
quadra.setId(idQuadra);
quadra.setNumeroQuadra(numeroQuadra);
imovel.setQuadra(quadra);
}
Integer setorComercial = null;
if (arrayImoveisPorRota[2] != null) {
// instancia um setor comercial para ser setado no im�vel
setorComercial = (Integer) arrayImoveisPorRota[2];
}*/
/*
* Colocado por Raphael Rossiter em 31/05/2007
*/
/*if (arrayImoveisPorRota[8] != null) {
imovel
.setIndicadorDebitoConta((Short) arrayImoveisPorRota[8]);
}*/
/**
* Item 5.1 [UC0306] - Obter Principal Categoria do Im�vel
*/
/*Categoria principalCategoria = getControladorImovel()
.obterPrincipalCategoriaImovel(imovel.getId());
boolean flagProximoImovel = false;*/
/**
* Item 5.2 Caso a principal categoria do im�vel esteja
* indicando que n�o deve ser gerado acr�scimos por
* impontualidade para a categoria
* (catg_icgeracaoacrescimos=ENCERRAMENTO_ARRECADACAO) da
* principal categoria do im�vel e esteja indicando que n�o est�
* sendo encerrada a arrecada��o , passa para o pr�ximo im�vel.
*/
/*if (principalCategoria.getIndicadorCobrancaAcrescimos().equals(
ConstantesSistema.NAO)) {
flagProximoImovel = true;
}*/
/**
* Item 5.3 Caso a principal categoria do im�vel esteja
* indicando que somente deve ser gerado acr�scimos por
* impontualidade para a categoria
* (catg_icgeracaoacrescimos=NAO) da principal categoria do
* im�vel, passa para o pr�ximo im�vel.
*/
/*if ((principalCategoria.getIndicadorCobrancaAcrescimos()
.equals(ConstantesSistema.ENCERRAMENTO_ARRECADACAO))
&& !indicadorEncerrandoArrecadacao) {
flagProximoImovel = true;
}*/
/**
* Item 5.4 Caso o im�vel possua cliente respons�vel, recupera o
* indicador de cobran�a de acr�cimos do cliente respons�vel
* (CLIE_ICCOBRANCAACRESCIMOS)
*/
/*Short indicadorCobrancaAcrescimos = getControladorImovel()
.obterIndicadorGeracaoAcrescimosClienteImovel(
imovel.getId());*/
/**
* Item 5.4.1 Caso esteja indicado que n�o de ve ser gerado
* acr�cimos por impontualidade para o cliente
* (CLIE_ICCOBRANCAACRESCIMOS=NAO) , passar para o pr�ximo
* im�vel
*/
/*if (indicadorCobrancaAcrescimos != null
&& indicadorCobrancaAcrescimos
.equals(ConstantesSistema.NAO)) {
flagProximoImovel = true;
}
if (indicadorCobrancaAcrescimos != null
&& (indicadorCobrancaAcrescimos
.equals(ConstantesSistema.NAO) && !indicadorEncerrandoArrecadacao)) {
flagProximoImovel = true;
}
if (!flagProximoImovel) {
Date dataAnoMesReferenciaUltimoDia = Util
.gerarDataApartirAnoMesRefencia(anoMesReferenciaArrecadacao);
Collection<Integer> colecaoIdsContasAtualizarIndicadorMulta = new ArrayList();
// cria uma cole��o de contas do imovel
Collection colecaoContaImovel = null;
// recupera todas as contas dos im�veis da cole��o
// de rotas
colecaoContaImovel = repositorioFaturamento
.obterContasImovel(imovel.getId(),
DebitoCreditoSituacao.NORMAL,
DebitoCreditoSituacao.INCLUIDA,
DebitoCreditoSituacao.RETIFICADA,
dataAnoMesReferenciaUltimoDia);
// DEBITO A COBRAR GERAL
DebitoACobrarGeral debitoACobrarGeral = new DebitoACobrarGeral();
debitoACobrarGeral
.setIndicadorHistorico(ConstantesSistema.NAO);
debitoACobrarGeral.setUltimaAlteracao(new Date());
// ************************************************************
DebitoCreditoSituacao debitoCreditoSituacao = new DebitoCreditoSituacao();
debitoCreditoSituacao.setId(DebitoCreditoSituacao.NORMAL);
CobrancaForma cobrancaForma = new CobrancaForma();
cobrancaForma.setId(CobrancaForma.COBRANCA_EM_CONTA);
Short numeroPrestacaoDebito = 1;
Short numeroPrestacaoCobradas = 0;
if (colecaoContaImovel != null
|| !colecaoContaImovel.isEmpty()) {
Iterator contasIterator = colecaoContaImovel.iterator();
while (contasIterator.hasNext()) {
// cria um array de objetos para pegar os
// parametros de
// retorno da pesquisa
Object[] dadosConta = (Object[]) contasIterator
.next();
Integer anoMes = Util
.recuperaAnoMesDaData((Date) dadosConta[2]);
if (anoMes <= anoMesReferenciaArrecadacao) {
Integer idConta = (Integer) dadosConta[0];
Conta conta = new Conta();
if (dadosConta[0] != null) {
// seta o id da conta
conta.setId((Integer) dadosConta[0]);
}
if (dadosConta[1] != null) {
// seta o ano/mes referencia da
// conta
conta
.setReferencia((Integer) dadosConta[1]);
}
if (dadosConta[2] != null) {
// seta a data de vencimento da
// conta
conta
.setDataVencimentoConta((Date) dadosConta[2]);
}
if (dadosConta[3] != null) {
// seta o valor da �gua
conta
.setValorAgua((BigDecimal) dadosConta[3]);
}
if (dadosConta[4] != null) {
// seta o valor do esgoto
conta
.setValorEsgoto((BigDecimal) dadosConta[4]);
}
if (dadosConta[5] != null) {
// seta o valor dos debitos
conta
.setDebitos((BigDecimal) dadosConta[5]);
}
if (dadosConta[6] != null) {
// seta o valor dos creditos
conta
.setValorCreditos((BigDecimal) dadosConta[6]);
}
if (dadosConta[7] != null) {
// seta o indicador de cobranca da
// multa
conta
.setIndicadorCobrancaMulta((Short) dadosConta[7]);
}
// cria uma cole��o dos pagamentos da
// conta
// com
// menor
// data de pagamento
Date pagamentoContasMenorData = null;
Integer idArrecadacaoForma = null;
// recupera todos os pagamentos da conta
// com
// menor
// data de pagamento
Object[] arrayPagamentoContasMenorData = repositorioFaturamento
.obterArrecadacaoFormaPagamentoContasMenorData(
idConta, imovel.getId(), conta
.getReferencia());
if (arrayPagamentoContasMenorData != null) {
idArrecadacaoForma = (Integer) arrayPagamentoContasMenorData[0];
pagamentoContasMenorData = (Date) arrayPagamentoContasMenorData[1];
}*/
/*
* Colocado por Raphael Rossiter em 31/05/2007
* S� ir� calcular o acr�scimo caso o imovel e o
* pagamento n�o sejam d�bito autom�tico
*/
/*if (idArrecadacaoForma == null
|| (idArrecadacaoForma != null && !idArrecadacaoForma
.equals(ArrecadacaoForma.DEBITO_AUTOMATICO))) {
boolean indicadorExistePagamentoClassificadoConta = repositorioFaturamento
.obterIndicadorPagamentosClassificadosContaReferenciaMenorIgualAtual(
idConta, imovel.getId(),
conta.getReferencia(),
anoMesReferenciaArrecadacao);
CalcularAcrescimoPorImpontualidadeHelper calcularAcrescimoPorImpontualidade = new CalcularAcrescimoPorImpontualidadeHelper();
BigDecimal valorConta = conta
.getValorAgua().add(
conta.getValorEsgoto())
.add(conta.getDebitos()).subtract(
conta.getValorCreditos());
// Calcula o valor das multas cobradas
// para
// a conta
BigDecimal valorMultasCobradas = repositorioFaturamento
.pesquisarValorMultasCobradas(idConta);*/
/**
* Item 5.6.2 Calcular os acrescimos por
* impontualidade
*/
/*calcularAcrescimoPorImpontualidade = this
.getControladorCobranca()
.calcularAcrescimoPorImpontualidade(
conta.getReferencia(),
conta
.getDataVencimentoConta(),
pagamentoContasMenorData,
valorConta,
valorMultasCobradas,
conta
.getIndicadorCobrancaMulta(),
""
+ sistemaParametros
.getAnoMesArrecadacao(),
conta.getId(),
ConstantesSistema.INDICADOR_ARRECADACAO_ATIVO);
DebitoTipo debitoTipo = null;
Object[] obterDebitoTipo = null;*/
/**
* Item 5.6.3 Caso o indicador de gera��o de
* multa corresponda a sim(1) e o valor da
* multa seja maior que que zero. Gera o
* d�bito a cobrar referente a multa.
*/
/*if (indicadorGeracaoMulta.intValue() == ConstantesSistema.SIM
.intValue()
&& calcularAcrescimoPorImpontualidade
.getValorMulta().compareTo(
new BigDecimal(
"0.00")) == 1
&& indicadorExistePagamentoClassificadoConta) {
debitoTipo = new DebitoTipo();
debitoTipo
.setId(DebitoTipo.MULTA_IMPONTUALIDADE);
obterDebitoTipo = repositorioFaturamento
.obterDebitoTipo(debitoTipo
.getId());
FinanciamentoTipo financiamentoTipo = new FinanciamentoTipo();
LancamentoItemContabil lancamentoItemContabil = new LancamentoItemContabil();
if (obterDebitoTipo[0] != null) {
financiamentoTipo
.setId((Integer) obterDebitoTipo[0]);
}
if (obterDebitoTipo[1] != null) {
lancamentoItemContabil
.setId((Integer) obterDebitoTipo[1]);
}
DebitoACobrar debitoACobrar = new DebitoACobrar();
debitoACobrar.setImovel(imovel);
debitoACobrar
.setAnoMesCobrancaDebito(sistemaParametros
.getAnoMesArrecadacao());
debitoACobrar
.setAnoMesReferenciaContabil(sistemaParametros
.getAnoMesFaturamento());
debitoACobrar
.setNumeroPrestacaoDebito(numeroPrestacaoDebito);
debitoACobrar
.setNumeroPrestacaoCobradas(numeroPrestacaoCobradas);
debitoACobrar.setLocalidade(localidade);
debitoACobrar.setQuadra(quadra);
debitoACobrar
.setCodigoSetorComercial(setorComercial);
debitoACobrar.setNumeroQuadra(quadra
.getNumeroQuadra());
debitoACobrar.setNumeroLote(imovel
.getLote());
debitoACobrar.setNumeroSubLote(imovel
.getSubLote());
debitoACobrar
.setPercentualTaxaJurosFinanciamento(BigDecimal.ZERO);
debitoACobrar
.setRegistroAtendimento(null);
debitoACobrar.setOrdemServico(null);
debitoACobrar
.setDebitoCreditoSituacaoAnterior(null);
debitoACobrar
.setParcelamentoGrupo(null);
debitoACobrar
.setDebitoCreditoSituacaoAtual(debitoCreditoSituacao);
debitoACobrar
.setCobrancaForma(cobrancaForma);
debitoACobrar.setDebitoTipo(debitoTipo);
debitoACobrar
.setUltimaAlteracao(new Date());
debitoACobrar
.setGeracaoDebito(new Date());
debitoACobrar
.setAnoMesReferenciaDebito(conta
.getReferencia());
debitoACobrar
.setFinanciamentoTipo(financiamentoTipo);
debitoACobrar
.setLancamentoItemContabil(lancamentoItemContabil);
debitoACobrar
.setValorDebito(calcularAcrescimoPorImpontualidade
.getValorMulta());
// Inseri o d�bito a cobra geral e
// recupera o id
Integer idDebitoACobrarGeral = (Integer) getControladorUtil()
.inserir(debitoACobrarGeral);
debitoACobrarGeral
.setId(idDebitoACobrarGeral);
colecaoIdsContasAtualizarIndicadorMulta
.add(conta.getId());
debitoACobrar
.setId(idDebitoACobrarGeral);
debitoACobrar
.setDebitoACobrarGeral(debitoACobrarGeral);
colecaoDebitoACobrarInserir
.add(debitoACobrar);
colecaoDebitoACobrarCategoriaInserir
.addAll(inserirDebitoACobrarCategoriaBatch(
debitoACobrar,
debitoACobrar
.getImovel()));
}*/// if indicador de gera��o de multa
/**
* Item 5.6.4 Caso o indicador de gera��o
* dos juros de mora corresponda a sim(1) e
* o valor dos juros de mora seja maior que
* zero Gera o d�bito a cobrar referente a
* juros de mora e exista pagamento para a
* conta com data de pagamento diferente de
* nulo e ano/m�s refer�ncia da arrecada��o
* do pagamento seja menor ou igual ao
* ano/m�s de arrecada��o corente.
*/
/*if (indicadorGeracaoJuros.intValue() == ConstantesSistema.SIM
.intValue()
&& calcularAcrescimoPorImpontualidade
.getValorJurosMora()
.compareTo(
new BigDecimal(
"0.00")) == 1
&& indicadorExistePagamentoClassificadoConta) {
debitoTipo = new DebitoTipo();
debitoTipo.setId(DebitoTipo.JUROS_MORA);
obterDebitoTipo = repositorioFaturamento
.obterDebitoTipo(debitoTipo
.getId());
FinanciamentoTipo financiamentoTipo = new FinanciamentoTipo();
LancamentoItemContabil lancamentoItemContabil = new LancamentoItemContabil();
if (obterDebitoTipo[0] != null) {
financiamentoTipo
.setId((Integer) obterDebitoTipo[0]);
}
if (obterDebitoTipo[1] != null) {
lancamentoItemContabil
.setId((Integer) obterDebitoTipo[1]);
}
DebitoACobrar debitoACobrar = new DebitoACobrar();
debitoACobrar.setImovel(imovel);
debitoACobrar
.setAnoMesCobrancaDebito(sistemaParametros
.getAnoMesArrecadacao());
debitoACobrar
.setAnoMesReferenciaContabil(sistemaParametros
.getAnoMesFaturamento());
debitoACobrar
.setNumeroPrestacaoDebito(numeroPrestacaoDebito);
debitoACobrar
.setNumeroPrestacaoCobradas(numeroPrestacaoCobradas);
debitoACobrar.setLocalidade(localidade);
debitoACobrar.setQuadra(quadra);
debitoACobrar
.setCodigoSetorComercial(setorComercial);
debitoACobrar.setNumeroQuadra(quadra
.getNumeroQuadra());
debitoACobrar.setNumeroLote(imovel
.getLote());
debitoACobrar.setNumeroSubLote(imovel
.getSubLote());
debitoACobrar
.setPercentualTaxaJurosFinanciamento(BigDecimal.ZERO);
debitoACobrar
.setRegistroAtendimento(null);
debitoACobrar.setOrdemServico(null);
debitoACobrar
.setDebitoCreditoSituacaoAnterior(null);
debitoACobrar
.setParcelamentoGrupo(null);
debitoACobrar
.setDebitoCreditoSituacaoAtual(debitoCreditoSituacao);
debitoACobrar
.setCobrancaForma(cobrancaForma);
debitoACobrar.setDebitoTipo(debitoTipo);
debitoACobrar
.setUltimaAlteracao(new Date());
debitoACobrar
.setGeracaoDebito(new Date());
debitoACobrar
.setAnoMesReferenciaDebito(conta
.getReferencia());
debitoACobrar
.setFinanciamentoTipo(financiamentoTipo);
debitoACobrar
.setLancamentoItemContabil(lancamentoItemContabil);
debitoACobrar
.setValorDebito(calcularAcrescimoPorImpontualidade
.getValorJurosMora());
colecaoIdsContasAtualizarIndicadorMulta
.add(conta.getId());
// Inseri o d�bito a cobra geral e
// recupera o id
Integer idDebitoACobrarGeral = (Integer) getControladorUtil()
.inserir(debitoACobrarGeral);
debitoACobrarGeral
.setId(idDebitoACobrarGeral);
debitoACobrar
.setId(idDebitoACobrarGeral);
debitoACobrar
.setDebitoACobrarGeral(debitoACobrarGeral);
colecaoDebitoACobrarInserir
.add(debitoACobrar);
colecaoDebitoACobrarCategoriaInserir
.addAll(inserirDebitoACobrarCategoriaBatch(
debitoACobrar,
debitoACobrar
.getImovel()));
}*/
/*
* 5.6.5 Caso o indicador de gera��o de
* atualiza��o monet�ria corresponda a
* sim(1) e o valor da atualiza��o monet�ria
* seja maior que zero Gera o d�bito a
* cobrar referente a atualiza��o monet�ria
* e
*/
/*if (indicadorGeracaoAtualizacao.intValue() == ConstantesSistema.SIM
.intValue()
&& calcularAcrescimoPorImpontualidade
.getValorAtualizacaoMonetaria()
.compareTo(
new BigDecimal(
"0.00")) == 1
&& indicadorExistePagamentoClassificadoConta) {
debitoTipo = new DebitoTipo();
debitoTipo
.setId(DebitoTipo.ATUALIZACAO_MONETARIA);
obterDebitoTipo = repositorioFaturamento
.obterDebitoTipo(debitoTipo
.getId());
FinanciamentoTipo financiamentoTipo = new FinanciamentoTipo();
LancamentoItemContabil lancamentoItemContabil = new LancamentoItemContabil();
if (obterDebitoTipo[0] != null) {
financiamentoTipo
.setId((Integer) obterDebitoTipo[0]);
}
if (obterDebitoTipo[1] != null) {
lancamentoItemContabil
.setId((Integer) obterDebitoTipo[1]);
}
DebitoACobrar debitoACobrar = new DebitoACobrar();
debitoACobrar.setImovel(imovel);
debitoACobrar
.setAnoMesCobrancaDebito(sistemaParametros
.getAnoMesArrecadacao());
debitoACobrar
.setAnoMesReferenciaContabil(sistemaParametros
.getAnoMesFaturamento());
debitoACobrar
.setNumeroPrestacaoDebito(numeroPrestacaoDebito);
debitoACobrar
.setNumeroPrestacaoCobradas(numeroPrestacaoCobradas);
debitoACobrar.setLocalidade(localidade);
debitoACobrar.setQuadra(quadra);
debitoACobrar
.setCodigoSetorComercial(setorComercial);
debitoACobrar.setNumeroQuadra(quadra
.getNumeroQuadra());
debitoACobrar.setNumeroLote(imovel
.getLote());
debitoACobrar.setNumeroSubLote(imovel
.getSubLote());
debitoACobrar
.setPercentualTaxaJurosFinanciamento(BigDecimal.ZERO);
debitoACobrar
.setRegistroAtendimento(null);
debitoACobrar.setOrdemServico(null);
debitoACobrar
.setDebitoCreditoSituacaoAnterior(null);
debitoACobrar
.setParcelamentoGrupo(null);
debitoACobrar
.setDebitoCreditoSituacaoAtual(debitoCreditoSituacao);
debitoACobrar
.setCobrancaForma(cobrancaForma);
debitoACobrar.setDebitoTipo(debitoTipo);
debitoACobrar
.setUltimaAlteracao(new Date());
debitoACobrar
.setGeracaoDebito(new Date());
debitoACobrar
.setAnoMesReferenciaDebito(conta
.getReferencia());
debitoACobrar
.setFinanciamentoTipo(financiamentoTipo);
debitoACobrar
.setLancamentoItemContabil(lancamentoItemContabil);
debitoACobrar
.setValorDebito(calcularAcrescimoPorImpontualidade
.getValorAtualizacaoMonetaria());
colecaoIdsContasAtualizarIndicadorMulta
.add(conta.getId());
// Inseri o d�bito a cobra geral e
// recupera o id
Integer idDebitoACobrarGeral = (Integer) getControladorUtil()
.inserir(debitoACobrarGeral);
debitoACobrarGeral
.setId(idDebitoACobrarGeral);
debitoACobrar
.setId(idDebitoACobrarGeral);
debitoACobrar
.setDebitoACobrarGeral(debitoACobrarGeral);
colecaoDebitoACobrarInserir
.add(debitoACobrar);
colecaoDebitoACobrarCategoriaInserir
.addAll(inserirDebitoACobrarCategoriaBatch(
debitoACobrar,
debitoACobrar
.getImovel()));
}
} // fim comparacao debito automatico
} // fim if da comparacao da data de
// pagamento
} // fim while contasiterator
}*/ // fim if colecaoconta
/*
* Item 5.6.3.2 Atualiza o indicador de que j� cobrou multa
* da conta com o valor igual a SIM (CNTA_ICCOBRANCAMULTA=1)
*/
/*if (colecaoIdsContasAtualizarIndicadorMulta != null
&& !colecaoIdsContasAtualizarIndicadorMulta
.isEmpty()) {
repositorioFaturamento
.atualizarIndicadorMultaDeConta(colecaoIdsContasAtualizarIndicadorMulta);
}
// cria uma cole��o de guias do imovel
Collection colecaoGuiasPagamentoImovel = null;
Collection<Integer> colecaoIdsGuiasPagamentosAtualizarIndicadorMulta = new ArrayList();
// recupera todas as guias dos im�veis da cole��o de
// rotas
colecaoGuiasPagamentoImovel = repositorioFaturamento
.obterGuiasPagamentoImovel(imovel.getId(),
DebitoCreditoSituacao.NORMAL,
DebitoCreditoSituacao.INCLUIDA,
DebitoCreditoSituacao.RETIFICADA,
anoMesReferenciaArrecadacao);
if (colecaoGuiasPagamentoImovel != null
|| !colecaoGuiasPagamentoImovel.isEmpty()) {
Iterator guiasPagamentoIterator = colecaoGuiasPagamentoImovel
.iterator();
while (guiasPagamentoIterator.hasNext()) {
// cria um array de objetos para pegar os
// parametros de
// retorno da pesquisa
Object[] dadosGuiasPagamento = (Object[]) guiasPagamentoIterator
.next();
Integer anoMes = Util
.recuperaAnoMesDaData((Date) dadosGuiasPagamento[2]);
if (anoMes <= anoMesReferenciaArrecadacao) {
GuiaPagamento guiaPagamento = new GuiaPagamento();
if (dadosGuiasPagamento[0] != null) {
// seta o id da guia
guiaPagamento
.setId((Integer) dadosGuiasPagamento[0]);
}
if (dadosGuiasPagamento[1] != null) {
// seta o ano/mes referencia da guia
guiaPagamento
.setAnoMesReferenciaContabil((Integer) dadosGuiasPagamento[1]);
}
if (dadosGuiasPagamento[2] != null) {
// seta a data de vencimento da
// conta
guiaPagamento
.setDataVencimento((Date) dadosGuiasPagamento[2]);
}
if (dadosGuiasPagamento[3] != null) {
// seta o valor dos debitos
guiaPagamento
.setValorDebito((BigDecimal) dadosGuiasPagamento[3]);
}
if (dadosGuiasPagamento[4] != null) {
// seta o indicador de cobranca da
// multa
guiaPagamento
.setIndicadoCobrancaMulta((Short) dadosGuiasPagamento[4]);
}
DebitoTipo debitoTipoGuiaPagamento = new DebitoTipo();
if (dadosGuiasPagamento[5] != null) {
debitoTipoGuiaPagamento
.setId((Integer) dadosGuiasPagamento[5]);
guiaPagamento
.setDebitoTipo(debitoTipoGuiaPagamento);
}
Date menorDataPagamento = repositorioCobranca
.pesquisarMenorDataPagamentoGuiaPagamento(
guiaPagamento.getId(), imovel
.getId(), guiaPagamento
.getDebitoTipo()
.getId());
boolean indicadorExistePagamentoClassificadoGuiaPagamento = repositorioFaturamento
.obterIndicadorPagamentosClassificadosGuiaPagamentoReferenciaMenorIgualAtual(
guiaPagamento.getId(), imovel
.getId(), guiaPagamento
.getDebitoTipo()
.getId(),
anoMesReferenciaArrecadacao);
// [UC0216] Calcular Acr�scimos por
// Impontualidade
CalcularAcrescimoPorImpontualidadeHelper calcularAcrescimoPorImpontualidade = new CalcularAcrescimoPorImpontualidadeHelper();
calcularAcrescimoPorImpontualidade = this
.getControladorCobranca()
.calcularAcrescimoPorImpontualidade(
guiaPagamento
.getAnoMesReferenciaContabil(),
guiaPagamento
.getDataVencimento(),
menorDataPagamento,
guiaPagamento.getValorDebito(),
BigDecimal.ZERO,
guiaPagamento
.getIndicadoCobrancaMulta(),
""
+ sistemaParametros
.getAnoMesArrecadacao(),
null,
ConstantesSistema.INDICADOR_ARRECADACAO_ATIVO);
DebitoTipo debitoTipo = null;
Object[] obterDebitoTipo = null;*/
/*
* Item 5.8.3 Caso o indicador de gera��o de
* multa corresponda a sim(1) e o valor da multa
* seja maior que que zero. Gera o d�bito a
* cobrar referente a multa.
*/
/*if (indicadorGeracaoMulta.intValue() == ConstantesSistema.SIM
.intValue()
&& calcularAcrescimoPorImpontualidade
.getValorMulta().compareTo(
new BigDecimal("0.00")) == 1) {
debitoTipo = new DebitoTipo();
debitoTipo
.setId(DebitoTipo.MULTA_IMPONTUALIDADE);
obterDebitoTipo = repositorioFaturamento
.obterDebitoTipo(debitoTipo.getId());
FinanciamentoTipo financiamentoTipo = new FinanciamentoTipo();
LancamentoItemContabil lancamentoItemContabil = new LancamentoItemContabil();
if (obterDebitoTipo[0] != null) {
financiamentoTipo
.setId((Integer) obterDebitoTipo[0]);
}
if (obterDebitoTipo[1] != null) {
lancamentoItemContabil
.setId((Integer) obterDebitoTipo[1]);
}
DebitoACobrar debitoACobrar = new DebitoACobrar();
debitoACobrar.setImovel(imovel);
debitoACobrar
.setAnoMesCobrancaDebito(sistemaParametros
.getAnoMesArrecadacao());
debitoACobrar
.setAnoMesReferenciaContabil(sistemaParametros
.getAnoMesFaturamento());
debitoACobrar
.setNumeroPrestacaoDebito(numeroPrestacaoDebito);
debitoACobrar
.setNumeroPrestacaoCobradas(numeroPrestacaoCobradas);
debitoACobrar.setLocalidade(localidade);
debitoACobrar.setQuadra(quadra);
debitoACobrar
.setCodigoSetorComercial(setorComercial);
debitoACobrar.setNumeroQuadra(quadra
.getNumeroQuadra());
debitoACobrar.setNumeroLote(imovel
.getLote());
debitoACobrar.setNumeroSubLote(imovel
.getSubLote());
debitoACobrar
.setPercentualTaxaJurosFinanciamento(BigDecimal.ZERO);
debitoACobrar.setRegistroAtendimento(null);
debitoACobrar.setOrdemServico(null);
debitoACobrar
.setDebitoCreditoSituacaoAnterior(null);
debitoACobrar.setParcelamentoGrupo(null);
debitoACobrar
.setDebitoCreditoSituacaoAtual(debitoCreditoSituacao);
debitoACobrar
.setCobrancaForma(cobrancaForma);
debitoACobrar.setDebitoTipo(debitoTipo);
debitoACobrar
.setUltimaAlteracao(new Date());
debitoACobrar.setGeracaoDebito(new Date());
debitoACobrar
.setAnoMesReferenciaDebito(guiaPagamento
.getAnoMesReferenciaContabil());
debitoACobrar
.setFinanciamentoTipo(financiamentoTipo);
debitoACobrar
.setLancamentoItemContabil(lancamentoItemContabil);
debitoACobrar
.setValorDebito(calcularAcrescimoPorImpontualidade
.getValorMulta());
// repositorioFaturamento.atualizarIndicadorMultaDeGuiaPagamento(guiaPagamento.getId());
colecaoIdsGuiasPagamentosAtualizarIndicadorMulta
.add(guiaPagamento.getId());
// Inseri o d�bito a cobra geral e
// recupera o id
Integer idDebitoACobrarGeral = (Integer) getControladorUtil()
.inserir(debitoACobrarGeral);
debitoACobrarGeral
.setId(idDebitoACobrarGeral);
debitoACobrar.setId(idDebitoACobrarGeral);
debitoACobrar
.setDebitoACobrarGeral(debitoACobrarGeral);
colecaoDebitoACobrarInserir
.add(debitoACobrar);
colecaoDebitoACobrarCategoriaInserir
.addAll(inserirDebitoACobrarCategoriaBatch(
debitoACobrar,
debitoACobrar.getImovel()));
}*/
/*
* Item 5.8.4 Caso o indicador de gera��o dos
* juros de mora corresponda a sim(1) e o valor
* dos juros de mora seja maior que zero e
* exista pagamento para a guia de pagamento com
* situa��o atual igual a classificado. Gera o
* d�bito a cobrar referente a juros de mora.
*/
/*if (indicadorGeracaoJuros.intValue() == ConstantesSistema.SIM
.intValue()
&& calcularAcrescimoPorImpontualidade
.getValorJurosMora().compareTo(
new BigDecimal("0.00")) == 1
&& indicadorExistePagamentoClassificadoGuiaPagamento) {
debitoTipo = new DebitoTipo();
debitoTipo.setId(DebitoTipo.JUROS_MORA);
obterDebitoTipo = repositorioFaturamento
.obterDebitoTipo(debitoTipo.getId());
FinanciamentoTipo financiamentoTipo = new FinanciamentoTipo();
LancamentoItemContabil lancamentoItemContabil = new LancamentoItemContabil();
if (obterDebitoTipo[0] != null) {
financiamentoTipo
.setId((Integer) obterDebitoTipo[0]);
}
if (obterDebitoTipo[1] != null) {
lancamentoItemContabil
.setId((Integer) obterDebitoTipo[1]);
}
DebitoACobrar debitoACobrar = new DebitoACobrar();
debitoACobrar.setImovel(imovel);
debitoACobrar
.setAnoMesCobrancaDebito(sistemaParametros
.getAnoMesArrecadacao());
debitoACobrar
.setAnoMesReferenciaContabil(sistemaParametros
.getAnoMesFaturamento());
debitoACobrar
.setNumeroPrestacaoDebito(numeroPrestacaoDebito);
debitoACobrar
.setNumeroPrestacaoCobradas(numeroPrestacaoCobradas);
debitoACobrar.setLocalidade(localidade);
debitoACobrar.setQuadra(quadra);
debitoACobrar
.setCodigoSetorComercial(setorComercial);
debitoACobrar.setNumeroQuadra(quadra
.getNumeroQuadra());
debitoACobrar.setNumeroLote(imovel
.getLote());
debitoACobrar.setNumeroSubLote(imovel
.getSubLote());
debitoACobrar
.setPercentualTaxaJurosFinanciamento(BigDecimal.ZERO);
debitoACobrar.setRegistroAtendimento(null);
debitoACobrar.setOrdemServico(null);
debitoACobrar
.setDebitoCreditoSituacaoAnterior(null);
debitoACobrar.setParcelamentoGrupo(null);
debitoACobrar
.setDebitoCreditoSituacaoAtual(debitoCreditoSituacao);
debitoACobrar
.setCobrancaForma(cobrancaForma);
debitoACobrar.setDebitoTipo(debitoTipo);
debitoACobrar
.setUltimaAlteracao(new Date());
debitoACobrar.setGeracaoDebito(new Date());
debitoACobrar
.setAnoMesReferenciaDebito(guiaPagamento
.getAnoMesReferenciaContabil());
debitoACobrar
.setFinanciamentoTipo(financiamentoTipo);
debitoACobrar
.setLancamentoItemContabil(lancamentoItemContabil);
debitoTipo.setId(DebitoTipo.JUROS_MORA);
debitoACobrar
.setValorDebito(calcularAcrescimoPorImpontualidade
.getValorJurosMora());
// repositorioFaturamento.atualizarIndicadorMultaDeGuiaPagamento(guiaPagamento.getId());
colecaoIdsGuiasPagamentosAtualizarIndicadorMulta
.add(guiaPagamento.getId());
// Inseri o d�bito a cobra geral e
// recupera o id
Integer idDebitoACobrarGeral = (Integer) getControladorUtil()
.inserir(debitoACobrarGeral);
debitoACobrarGeral
.setId(idDebitoACobrarGeral);
// debitoACobrar.setId(idDebitoACobrar);
debitoACobrar.setId(idDebitoACobrarGeral);
debitoACobrar
.setDebitoACobrarGeral(debitoACobrarGeral);
colecaoDebitoACobrarInserir
.add(debitoACobrar);
colecaoDebitoACobrarCategoriaInserir
.addAll(inserirDebitoACobrarCategoriaBatch(
debitoACobrar,
debitoACobrar.getImovel()));
}*/
/*
* Item 5.8.5 Caso o indicador de gera��o de
* atualiza��o monet�ria corresponda a sim(1) e
* o valor da atualiza��o monet�ria seja maior
* que zero e exista pagamento para a guia de
* pagamento com situa��o atual igual a
* classificado. Gera o d�bito a cobrar
* referente a atualiza��o monet�ria.
*/
/*if (indicadorGeracaoAtualizacao.intValue() == ConstantesSistema.SIM
.intValue()
&& calcularAcrescimoPorImpontualidade
.getValorAtualizacaoMonetaria()
.compareTo(
new BigDecimal("0.00")) == 1
&& indicadorExistePagamentoClassificadoGuiaPagamento) {
debitoTipo = new DebitoTipo();
debitoTipo
.setId(DebitoTipo.ATUALIZACAO_MONETARIA);
obterDebitoTipo = repositorioFaturamento
.obterDebitoTipo(debitoTipo.getId());
FinanciamentoTipo financiamentoTipo = new FinanciamentoTipo();
LancamentoItemContabil lancamentoItemContabil = new LancamentoItemContabil();
if (obterDebitoTipo[0] != null) {
financiamentoTipo
.setId((Integer) obterDebitoTipo[0]);
}
if (obterDebitoTipo[1] != null) {
lancamentoItemContabil
.setId((Integer) obterDebitoTipo[1]);
}
DebitoACobrar debitoACobrar = new DebitoACobrar();
debitoACobrar.setImovel(imovel);
debitoACobrar
.setAnoMesCobrancaDebito(sistemaParametros
.getAnoMesArrecadacao());
debitoACobrar
.setAnoMesReferenciaContabil(sistemaParametros
.getAnoMesFaturamento());
debitoACobrar
.setNumeroPrestacaoDebito(numeroPrestacaoDebito);
debitoACobrar
.setNumeroPrestacaoCobradas(numeroPrestacaoCobradas);
debitoACobrar.setLocalidade(localidade);
debitoACobrar.setQuadra(quadra);
debitoACobrar
.setCodigoSetorComercial(setorComercial);
debitoACobrar.setNumeroQuadra(quadra
.getNumeroQuadra());
debitoACobrar.setNumeroLote(imovel
.getLote());
debitoACobrar.setNumeroSubLote(imovel
.getSubLote());
debitoACobrar
.setPercentualTaxaJurosFinanciamento(BigDecimal.ZERO);
debitoACobrar.setRegistroAtendimento(null);
debitoACobrar.setOrdemServico(null);
debitoACobrar
.setDebitoCreditoSituacaoAnterior(null);
debitoACobrar.setParcelamentoGrupo(null);
debitoACobrar
.setDebitoCreditoSituacaoAtual(debitoCreditoSituacao);
debitoACobrar
.setCobrancaForma(cobrancaForma);
debitoACobrar.setDebitoTipo(debitoTipo);
debitoACobrar
.setUltimaAlteracao(new Date());
debitoACobrar.setGeracaoDebito(new Date());
debitoACobrar
.setAnoMesReferenciaDebito(guiaPagamento
.getAnoMesReferenciaContabil());
debitoACobrar
.setFinanciamentoTipo(financiamentoTipo);
debitoACobrar
.setLancamentoItemContabil(lancamentoItemContabil);
// gerar debito a cobrar
debitoACobrar
.setValorDebito(calcularAcrescimoPorImpontualidade
.getValorAtualizacaoMonetaria());
// repositorioFaturamento.atualizarIndicadorMultaDeGuiaPagamento(guiaPagamento.getId());
colecaoIdsGuiasPagamentosAtualizarIndicadorMulta
.add(guiaPagamento.getId());
// Inseri o d�bito a cobra geral e
// recupera o id
Integer idDebitoACobrarGeral = (Integer) getControladorUtil()
.inserir(debitoACobrarGeral);
debitoACobrarGeral
.setId(idDebitoACobrarGeral);
debitoACobrar.setId(idDebitoACobrarGeral);
debitoACobrar
.setDebitoACobrarGeral(debitoACobrarGeral);
colecaoDebitoACobrarInserir
.add(debitoACobrar);
colecaoDebitoACobrarCategoriaInserir
.addAll(inserirDebitoACobrarCategoriaBatch(
debitoACobrar,
debitoACobrar.getImovel()));
}
} // fim if da comparacao da data de
// pagamento
} // fim while contasiterator
} // fim if colecaoguia
if (colecaoIdsGuiasPagamentosAtualizarIndicadorMulta != null
&& !colecaoIdsGuiasPagamentosAtualizarIndicadorMulta
.isEmpty()) {
repositorioFaturamento
.atualizarIndicadorMultaDeGuiaPagamento(colecaoIdsGuiasPagamentosAtualizarIndicadorMulta);
}
}
}// fim while imovelporrotaiterator
// Inserir os d�bitos a cobrar
if (colecaoDebitoACobrarInserir != null
&& !colecaoDebitoACobrarInserir.isEmpty()) {
this.getControladorBatch().inserirColecaoObjetoParaBatch(
colecaoDebitoACobrarInserir);
}
// Inseri os d�bitos a cobrar por categoria
if (colecaoDebitoACobrarCategoriaInserir != null
&& !colecaoDebitoACobrarCategoriaInserir.isEmpty()) {
this.getControladorBatch().inserirColecaoObjetoParaBatch(
colecaoDebitoACobrarCategoriaInserir);
}
// --------------------------------------------------------
//
// Registrar o fim da execu��o da Unidade de Processamento
//
// --------------------------------------------------------
getControladorBatch().encerrarUnidadeProcessamentoBatch(null,
idUnidadeIniciada, false);
System.out.println("FIM " + new Date());
return null;
} catch (Exception e) {
// Este catch serve para interceptar qualquer exce��o que o processo
// batch venha a lan�ar e garantir que a unidade de processamento do
// batch ser� atualizada com o erro ocorrido
e.printStackTrace();
getControladorBatch().encerrarUnidadeProcessamentoBatch(e,
idUnidadeIniciada, true);
throw new EJBException(e);
}
}*/
/**
* [UC0482] Emitir 2 Via de Contas
*
* [SB00011] Gerar Linhas da Tarifa de �gua
*
* @author Vivianne Sousa
* @date 25/04/2007
*
* @param colecaoConta
* @throws ControladorException
*/
protected Collection gerarLinhasTarifaAguaRelatorio(
EmitirContaHelper emitirContaHelper, String consumoRateio,
Object[] parmsMedicaoHistorico, Integer tipoMedicao,
Collection colecaoLinhasDescricaoServicosTarifasTotal)
throws ControladorException {
Collection colecaoContaLinhasDescricaoServicosTarifasTotalHelper = colecaoLinhasDescricaoServicosTarifasTotal;
ContaLinhasDescricaoServicosTarifasTotalHelper contaLinhasDescricaoServicosTarifasTotalHelper = null;
String descricaoServicosTarifas1 = "";
// -- Linha 1 --//
descricaoServicosTarifas1 = "AGUA";
contaLinhasDescricaoServicosTarifasTotalHelper = new ContaLinhasDescricaoServicosTarifasTotalHelper();
contaLinhasDescricaoServicosTarifasTotalHelper
.setDescricaoServicosTarifas(descricaoServicosTarifas1);
contaLinhasDescricaoServicosTarifasTotalHelper.setConsumoFaixa("");
contaLinhasDescricaoServicosTarifasTotalHelper.setValor("");
colecaoContaLinhasDescricaoServicosTarifasTotalHelper
.add(contaLinhasDescricaoServicosTarifasTotalHelper);
Collection colecaoContaCategoriaComFaixas = null;
try {
colecaoContaCategoriaComFaixas = repositorioFaturamento
.pesquisarContaCategoriaSubCategoria(emitirContaHelper
.getIdConta());
} catch (ErroRepositorioException e) {
sessionContext.setRollbackOnly();
throw new ControladorException("erro.sistema", e);
}
if (colecaoContaCategoriaComFaixas != null
&& !colecaoContaCategoriaComFaixas.isEmpty()) {
Iterator iteratorContaCategoriaComFaixas = colecaoContaCategoriaComFaixas
.iterator();
while (iteratorContaCategoriaComFaixas.hasNext()) {
ContaCategoria contaCategoria = (ContaCategoria) iteratorContaCategoriaComFaixas
.next();
String descricaoServicosTarifas2 = "";
// -- Linha 2 --//
descricaoServicosTarifas2 = " ";
// descricao da categoria
descricaoServicosTarifas2 = descricaoServicosTarifas2
+ Util.completaString(contaCategoria.getComp_id()
.getSubcategoria().getDescricaoAbreviada(), 21);
// quantidade de economias
descricaoServicosTarifas2 = descricaoServicosTarifas2
+ Util.adicionarZerosEsquedaNumero(3, ""
+ contaCategoria.getQuantidadeEconomia());
if (contaCategoria.getQuantidadeEconomia() == 1) {
descricaoServicosTarifas2 = descricaoServicosTarifas2
+ " UNIDADE ";
} else {
descricaoServicosTarifas2 = descricaoServicosTarifas2
+ " UNIDADES ";
}
contaLinhasDescricaoServicosTarifasTotalHelper = new ContaLinhasDescricaoServicosTarifasTotalHelper();
contaLinhasDescricaoServicosTarifasTotalHelper
.setDescricaoServicosTarifas(descricaoServicosTarifas2);
contaLinhasDescricaoServicosTarifasTotalHelper
.setConsumoFaixa("");
contaLinhasDescricaoServicosTarifasTotalHelper.setValor("");
colecaoContaLinhasDescricaoServicosTarifasTotalHelper
.add(contaLinhasDescricaoServicosTarifasTotalHelper);
// -- Linha 3 --//
contaLinhasDescricaoServicosTarifasTotalHelper = new ContaLinhasDescricaoServicosTarifasTotalHelper();
String descricaoServicosTarifas3 = "";
String consumoFaixa3 = "";
String valor3 = "";
Integer debitoCreditoSituacaoAtualConta = null;
try {
debitoCreditoSituacaoAtualConta = repositorioFaturamento
.pesquisarDebitoCreditoSituacaoAtualConta(emitirContaHelper
.getIdConta());
} catch (ErroRepositorioException e) {
sessionContext.setRollbackOnly();
throw new ControladorException("erro.sistema", e);
}
if (parmsMedicaoHistorico == null
&& debitoCreditoSituacaoAtualConta
.equals(DebitoCreditoSituacao.NORMAL)) {
descricaoServicosTarifas3 = " TARIFA M�NIMA";
// Valor da tarifa m�nima de �gua para a categoria por
// economia
BigDecimal qtdEconomia = Util
.formatarMoedaRealparaBigDecimal(""
+ contaCategoria.getQuantidadeEconomia());
String valorTarifaMinima = "";
if (contaCategoria.getValorTarifaMinimaAgua() != null
&& qtdEconomia != null) {
BigDecimal valorTarifaMinimaBigDecimal = contaCategoria
.getValorTarifaMinimaAgua().divide(qtdEconomia,
2, RoundingMode.UP);
valorTarifaMinima = Util
.formatarMoedaReal(valorTarifaMinimaBigDecimal);
}
descricaoServicosTarifas3 = descricaoServicosTarifas3
+ Util.completaStringComEspacoAEsquerda(
valorTarifaMinima, 6);
descricaoServicosTarifas3 = descricaoServicosTarifas3
+ " POR UNIDADE";
consumoFaixa3 = "MINIMO";
consumoFaixa3 = consumoFaixa3 + Util.completaString("", 11);
// valor da �gua para categoria
String valorAgua = Util.formatarMoedaReal(emitirContaHelper
.getValorAgua());
valor3 = valorAgua;
contaLinhasDescricaoServicosTarifasTotalHelper = new ContaLinhasDescricaoServicosTarifasTotalHelper();
contaLinhasDescricaoServicosTarifasTotalHelper
.setDescricaoServicosTarifas(descricaoServicosTarifas3);
contaLinhasDescricaoServicosTarifasTotalHelper
.setConsumoFaixa(consumoFaixa3);
contaLinhasDescricaoServicosTarifasTotalHelper
.setValor(valor3);
colecaoContaLinhasDescricaoServicosTarifasTotalHelper
.add(contaLinhasDescricaoServicosTarifasTotalHelper);
} else {
// recupera a cole��o de conta categoria consumo faixa
Collection colecaoContaCategoriaConsumoFaixa = null;
try {
colecaoContaCategoriaConsumoFaixa = repositorioFaturamento
.pesquisarContaCategoriaFaixas(
emitirContaHelper.getIdConta(),
contaCategoria.getComp_id()
.getCategoria().getId(),
contaCategoria.getComp_id()
.getSubcategoria().getId());
} catch (ErroRepositorioException e) {
sessionContext.setRollbackOnly();
throw new ControladorException("erro.sistema", e);
}
// 2.3.1 caso existam faixas de consumo para conta/categoria
if (colecaoContaCategoriaConsumoFaixa != null
&& !colecaoContaCategoriaConsumoFaixa.isEmpty()) {
descricaoServicosTarifas3 = " ATE ";
// Consumo m�nimo de �gua para a categoria por economia
BigDecimal qtdEconomia = Util
.formatarMoedaRealparaBigDecimal(""
+ contaCategoria
.getQuantidadeEconomia());
BigDecimal consumoMinimoAgua = null;
if (contaCategoria.getConsumoMinimoAgua() != null) {
consumoMinimoAgua = Util
.formatarMoedaRealparaBigDecimal(""
+ contaCategoria
.getConsumoMinimoAgua());
}
BigDecimal consumoMinimaBigDecimal = new BigDecimal(
"0.00");
if (consumoMinimoAgua != null && qtdEconomia != null) {
consumoMinimaBigDecimal = consumoMinimoAgua.divide(
qtdEconomia, 2, RoundingMode.UP);
}
String consumoMinima = ""
+ consumoMinimaBigDecimal.intValue();
descricaoServicosTarifas3 = descricaoServicosTarifas3
+ Util.completaStringComEspacoAEsquerda(
consumoMinima, 2);
descricaoServicosTarifas3 = descricaoServicosTarifas3
+ " M3" + Util.completaString("", 7);
descricaoServicosTarifas3 = descricaoServicosTarifas3
+ "- R$";
// valor da tarifa minima de agua para a categoria por
// economia
BigDecimal valorTarifaMinimaBigDecimal = null;
if (contaCategoria.getValorTarifaMinimaAgua() != null
&& qtdEconomia != null) {
valorTarifaMinimaBigDecimal = contaCategoria
.getValorTarifaMinimaAgua().divide(
qtdEconomia, 2, RoundingMode.UP);
}
String valorTarifaMinima = Util
.completaStringComEspacoAEsquerda(
""
+ Util
.formatarMoedaReal(valorTarifaMinimaBigDecimal),
6);
descricaoServicosTarifas3 = descricaoServicosTarifas3
+ valorTarifaMinima + " (POR UNIDADE)";
// Consumo m�nimo de �gua para a categoria
if (contaCategoria.getConsumoMinimoAgua() != null
&& !contaCategoria.getConsumoMinimoAgua()
.equals("")) {
consumoFaixa3 = Util
.completaStringComEspacoAEsquerda(""
+ contaCategoria
.getConsumoMinimoAgua(), 4);
} else {
consumoFaixa3 = Util
.completaStringComEspacoAEsquerda("", 4);
}
consumoFaixa3 = consumoFaixa3 + " M3";
// valor da tarifa m�nima de agua para categoria
String valorAguaCategoria = "";
if (contaCategoria.getValorTarifaMinimaAgua() != null) {
valorAguaCategoria = Util
.formatarMoedaReal(contaCategoria
.getValorTarifaMinimaAgua());
}
valor3 = valorAguaCategoria;
contaLinhasDescricaoServicosTarifasTotalHelper = new ContaLinhasDescricaoServicosTarifasTotalHelper();
contaLinhasDescricaoServicosTarifasTotalHelper
.setDescricaoServicosTarifas(descricaoServicosTarifas3);
contaLinhasDescricaoServicosTarifasTotalHelper
.setConsumoFaixa(consumoFaixa3.trim());
contaLinhasDescricaoServicosTarifasTotalHelper
.setValor(valor3);
colecaoContaLinhasDescricaoServicosTarifasTotalHelper
.add(contaLinhasDescricaoServicosTarifasTotalHelper);
Iterator iteratorContaCategoriaConsumoFaixa = colecaoContaCategoriaConsumoFaixa
.iterator();
while (iteratorContaCategoriaConsumoFaixa.hasNext()) {
ContaCategoriaConsumoFaixa contaCategoriaConsumoFaixa = (ContaCategoriaConsumoFaixa) iteratorContaCategoriaConsumoFaixa
.next();
contaLinhasDescricaoServicosTarifasTotalHelper = new ContaLinhasDescricaoServicosTarifasTotalHelper();
String descricaoServicosTarifas4 = "";
String consumoFaixa4 = "";
String valor4 = "";
// -- Linha 4 --//
descricaoServicosTarifas4 = " ";
// caso a faixa seja a ultima da tarifa de consumo
if (contaCategoriaConsumoFaixa.getConsumoFaixaFim()
.equals(999999)) {
// Consumo inicial da faixa menos 1 m3
String consumoInicialFaixa = ""
+ (contaCategoriaConsumoFaixa
.getConsumoFaixaInicio() - 1);
// valor da tarifa na faixa
String valorTarifaFaixa = Util
.formatarMoedaReal(contaCategoriaConsumoFaixa
.getValorTarifaFaixa());
descricaoServicosTarifas4 = descricaoServicosTarifas4
+ "ACIMA DE";
descricaoServicosTarifas4 = descricaoServicosTarifas4
+ Util
.completaStringComEspacoAEsquerda(
consumoInicialFaixa, 3);
descricaoServicosTarifas4 = descricaoServicosTarifas4
+ " M3 - R$";
descricaoServicosTarifas4 = descricaoServicosTarifas4
+ Util
.completaStringComEspacoAEsquerda(
valorTarifaFaixa, 6);
descricaoServicosTarifas4 = descricaoServicosTarifas4
+ " POR M3";
// consumo da agua na faixa
// consumoFaixa4 = Util
// .completaStringComEspacoAEsquerda(""
// + contaCategoriaConsumoFaixa
// .getConsumoAgua(), 6)
consumoFaixa4 = Util
.completaStringComEspacoAEsquerda(
""
+ contaCategoriaConsumoFaixa
.getConsumoAgua()
* contaCategoria
.getQuantidadeEconomia(),
6)
+ " M3";
// valor da agua na faixa
BigDecimal valorAguaFaixa = contaCategoriaConsumoFaixa
.getValorAgua().multiply(qtdEconomia)
.setScale(Parcelamento.CASAS_DECIMAIS);
valor4 = ""
+ Util
.formatarMoedaReal(valorAguaFaixa);
contaLinhasDescricaoServicosTarifasTotalHelper = new ContaLinhasDescricaoServicosTarifasTotalHelper();
contaLinhasDescricaoServicosTarifasTotalHelper
.setDescricaoServicosTarifas(descricaoServicosTarifas4);
contaLinhasDescricaoServicosTarifasTotalHelper
.setConsumoFaixa(consumoFaixa4.trim());
contaLinhasDescricaoServicosTarifasTotalHelper
.setValor(valor4);
colecaoContaLinhasDescricaoServicosTarifasTotalHelper
.add(contaLinhasDescricaoServicosTarifasTotalHelper);
} else {
// Consumo inicial da faixa
String consumoInicialFaixa = ""
+ (contaCategoriaConsumoFaixa
.getConsumoFaixaInicio());
// consumo final da faixa
String consumoFinalFaixa = ""
+ (contaCategoriaConsumoFaixa
.getConsumoFaixaFim());
// valor da tarifa na faixa
String valorTarifaFaixa = Util
.formatarMoedaReal(contaCategoriaConsumoFaixa
.getValorTarifaFaixa());
descricaoServicosTarifas4 = descricaoServicosTarifas4
+ Util
.completaStringComEspacoAEsquerda(
consumoInicialFaixa, 2)
+ " M3 A";
descricaoServicosTarifas4 = descricaoServicosTarifas4
+ Util
.completaStringComEspacoAEsquerda(
consumoFinalFaixa, 3)
+ " M3";
descricaoServicosTarifas4 = descricaoServicosTarifas4
+ " - R$";
descricaoServicosTarifas4 = descricaoServicosTarifas4
+ Util
.completaStringComEspacoAEsquerda(
valorTarifaFaixa, 6)
+ " POR M3";
// consumo de Agua na faixa
// consumoFaixa4 = Util
// .completaStringComEspacoAEsquerda(""
// + contaCategoriaConsumoFaixa
// .getConsumoAgua(), 6)
consumoFaixa4 = Util
.completaStringComEspacoAEsquerda(
""
+ contaCategoriaConsumoFaixa
.getConsumoAgua()
* contaCategoria
.getQuantidadeEconomia(),
6)
+ " M3";
// valor da agua na faixa
BigDecimal valorAguaFaixa = contaCategoriaConsumoFaixa
.getValorAgua().multiply(qtdEconomia)
.setScale(Parcelamento.CASAS_DECIMAIS);
valor4 = ""
+ Util
.formatarMoedaReal(valorAguaFaixa);
// String valorAguaFaixa = Util
// .formatarMoedaReal(contaCategoriaConsumoFaixa
// .getValorAgua());
//
// valor4 = valorAguaFaixa;
contaLinhasDescricaoServicosTarifasTotalHelper = new ContaLinhasDescricaoServicosTarifasTotalHelper();
contaLinhasDescricaoServicosTarifasTotalHelper
.setDescricaoServicosTarifas(descricaoServicosTarifas4);
contaLinhasDescricaoServicosTarifasTotalHelper
.setConsumoFaixa(consumoFaixa4.trim());
contaLinhasDescricaoServicosTarifasTotalHelper
.setValor(valor4);
colecaoContaLinhasDescricaoServicosTarifasTotalHelper
.add(contaLinhasDescricaoServicosTarifasTotalHelper);
}
}
} else {
// 2.3.2.
descricaoServicosTarifas3 = " CONSUMO DE �GUA";
consumoFaixa3 = Util.completaStringComEspacoAEsquerda(
"" + contaCategoria.getConsumoAgua(), 6)
+ " M3";
valor3 = Util.formatarMoedaReal(contaCategoria
.getValorAgua());
contaLinhasDescricaoServicosTarifasTotalHelper = new ContaLinhasDescricaoServicosTarifasTotalHelper();
contaLinhasDescricaoServicosTarifasTotalHelper
.setDescricaoServicosTarifas(descricaoServicosTarifas3);
contaLinhasDescricaoServicosTarifasTotalHelper
.setConsumoFaixa(consumoFaixa3.trim());
contaLinhasDescricaoServicosTarifasTotalHelper
.setValor(valor3);
colecaoContaLinhasDescricaoServicosTarifasTotalHelper
.add(contaLinhasDescricaoServicosTarifasTotalHelper);
}
}
}
}
return colecaoContaLinhasDescricaoServicosTarifasTotalHelper;
}
public ObterDebitoImovelOuClienteHelper obterDebitoImovelOuClienteHelper(
EmitirContaHelper emitirContaHelper,
SistemaParametro sistemaParametro) throws ControladorException {
Integer anoMesReferenciaFinal = sistemaParametro.getAnoMesFaturamento();
int anoMesSubtraido = Util
.subtrairMesDoAnoMes(anoMesReferenciaFinal, 1);
Integer dataVencimentoFinalInteger = sistemaParametro
.getAnoMesArrecadacao();
String anoMesSubtraidoString = ""
+ Util.subtrairMesDoAnoMes(dataVencimentoFinalInteger, 1);
int ano = Integer.parseInt(anoMesSubtraidoString.substring(0, 4));
int mes = Integer.parseInt(anoMesSubtraidoString.substring(4, 6));
// recupera o ultimo dia do anomes e passa a data como parametro
Calendar dataVencimentoFinal = GregorianCalendar.getInstance();
dataVencimentoFinal.set(Calendar.YEAR, ano);
dataVencimentoFinal.set(Calendar.MONTH, (mes - 1));
dataVencimentoFinal.set(Calendar.DAY_OF_MONTH, dataVencimentoFinal
.getActualMaximum(Calendar.DAY_OF_MONTH));
Date dataFinalDate = dataVencimentoFinal.getTime();
// converte String em data
Date dataVencimento = Util.converteStringParaDate("01/01/1900");
ObterDebitoImovelOuClienteHelper debitoImovelClienteHelper = getControladorCobranca()
.obterDebitoImovelOuCliente(1,
"" + emitirContaHelper.getIdImovel(), null, null,
"190001", "" + anoMesSubtraido, dataVencimento,
dataFinalDate, 1, 2, 2, 2, 2, 1, 2, null);
return debitoImovelClienteHelper;
}
/**
* [UC0144] Inserir Comando Atividade Faturamento
*
* A data de vencimento do grupo ser� formatada com o m�s de refer�ncia do
* grupo
*
* @author Raphael Rossiter
* @date 05/05/2007
*
* @param diaVencimento,
* mesVencimento, anoVencimento
* @throws ControladorException
*/
public Date obterDataVencimentoFaturamentoGrupo(int diaVencimento,
int mesVencimento, int anoVencimento) throws ControladorException {
mesVencimento = mesVencimento - 1;
Calendar dataVencimento = new GregorianCalendar(new Integer(
anoVencimento).intValue(), new Integer(mesVencimento)
.intValue(), diaVencimento);
return dataVencimento.getTime();
}
/**
* [UC0482] Emitir Segunda Via de Conta
*
* @author Vivianne Sousa
* @date 21/02/2007
*
* @param
* @throws ControladorException
*/
public void gerarDebitoACobrarTaxaEmissaoConta(Integer idImovel,
int anoMesReferencia) throws ControladorException {
try {
Imovel imovel = getControladorImovel().pesquisarImovel(idImovel);
// Recupera os parametros do sistema
SistemaParametro sistema = getControladorUtil()
.pesquisarParametrosDoSistema();
// Inst�ncia a forma de cobran�a para cobran�a em conta
CobrancaForma cobrancaForma = new CobrancaForma();
cobrancaForma.setId(CobrancaForma.COBRANCA_EM_CONTA);
// Inst�ncia a situa��o do d�bito para normal
DebitoCreditoSituacao debitoCreditoSituacao = new DebitoCreditoSituacao();
debitoCreditoSituacao.setId(DebitoCreditoSituacao.NORMAL);
// Recupera o tipo de d�bito referente a despesa postal
DebitoTipo debitoTipo = this
.getDebitoTipoHql(DebitoTipo.TAXA_COBRANCA);
// Recupera a data atual
Date dataAtual = new Date(System.currentTimeMillis());
// Verifica se j� existe d�bito para este im�vel
// Object[] dadoDebitoACobrar = this.repositorioFaturamento
// .pesquisarDebitoACobrar(imovel.getId(), debitoTipo.getId(),
// sistema.getAnoMesFaturamento());
//
// // Cria a vari�vel que vai armazenar o valor do d�bito
// BigDecimal valor = new BigDecimal("0");
/*
* Caso o perfil do im�vel seja tarifa social o valor vai ser o
* valor da tarifa social Caso contr�rio o valor da tarifa vai ser o
* normal.
*/
if (!imovel.getImovelPerfil().getId().equals(
ImovelPerfil.TARIFA_SOCIAL)) {
// caso o im�vel n�o seja enquadrado em tarifa social
// Obt�m o valor da Tarifa Normal
BigDecimal valorMinimaTarifaNormal = this.repositorioFaturamento
.obterValorTarifa(ConsumoTarifa.CONSUMO_NORMAL);
// Caso o valor da tarifa normal esteja nulo seta o valor para
// zero
if (valorMinimaTarifaNormal == null) {
valorMinimaTarifaNormal = new BigDecimal("0");
}
// valor = valorMinimaTarifaNormal;
} else if (imovel.getImovelPerfil().getId().equals(
ImovelPerfil.TARIFA_SOCIAL)) {
// caso o im�vel seja enquadrado em tarifa social
// Obt�m o valor da Tarifa Social
BigDecimal valorMinimaTarifaSocial = this.repositorioFaturamento
.obterValorTarifa(ConsumoTarifa.CONSUMO_SOCIAL);
// Caso o valor da tarifa social esteja nulo seta o valor para
// zero
if (valorMinimaTarifaSocial == null) {
valorMinimaTarifaSocial = new BigDecimal("0");
}
// valor = valorMinimaTarifaSocial;
}
// inclui D�bito A Cobrar Geral
DebitoACobrarGeral debitoACobrarGeral = new DebitoACobrarGeral();
debitoACobrarGeral
.setIndicadorHistorico(DebitoACobrarGeral.INDICADOR_NAO_POSSUI_HISTORICO);
debitoACobrarGeral.setUltimaAlteracao(new Date());
Integer idDebitoACobrarGeral = (Integer) this.getControladorUtil()
.inserir(debitoACobrarGeral);
debitoACobrarGeral.setId(idDebitoACobrarGeral);
// Cria uma inst�ncia de d�bito a cobrar
DebitoACobrar debitoACobrar = new DebitoACobrar();
debitoACobrar.setId(debitoACobrarGeral.getId());
debitoACobrar.setDebitoACobrarGeral(debitoACobrarGeral);
// Seta o Im�vel
debitoACobrar.setImovel(imovel);
// Seta o D�bito Tipo
debitoACobrar.setDebitoTipo(debitoTipo);
// Seta Data e Hora Atual
debitoACobrar.setGeracaoDebito(dataAtual);
// Seta ano/m�s da conta emitida como 2 via
debitoACobrar.setAnoMesReferenciaDebito(anoMesReferencia);
// Seta Ano/M�s de Cobran�a
debitoACobrar.setAnoMesCobrancaDebito(sistema
.getAnoMesArrecadacao());
// Seta Ano/M�s Refer�ncia do Faturamento
//Alteracao CRC1389 Data:09/03/2009
//Author: R�mulo Aur�lio
//Analista: Rosana Carvalho
int anoMesAtual = Util.getAnoMesComoInt(new Date());
if(sistema
.getAnoMesFaturamento().compareTo(anoMesAtual) < 0){
debitoACobrar.setAnoMesReferenciaContabil(anoMesAtual);
}else{
debitoACobrar.setAnoMesReferenciaContabil(sistema
.getAnoMesFaturamento());
}
//Fim Alteracao CRC1389 Data:09/03/2009
// Seta Valor do D�bito
BigDecimal valorFinal = sistema.getValorSegundaVia();
debitoACobrar.setValorDebito(valorFinal);
// Seta N�mero de Presta��es do D�bito
debitoACobrar.setNumeroPrestacaoDebito(new Short("1"));
// Seta N�mero de Presta��es Cobradas
debitoACobrar.setNumeroPrestacaoCobradas(new Short("0"));
// Seta Localidade
debitoACobrar.setLocalidade(imovel.getLocalidade());
// Seta Quadra
debitoACobrar.setQuadra(imovel.getQuadra());
// Seta C�digo do Setor Comercial
debitoACobrar.setCodigoSetorComercial(imovel.getSetorComercial()
.getCodigo());
// Seta N�mero Quadra
debitoACobrar.setNumeroQuadra(imovel.getQuadra().getNumeroQuadra());
// Seta Lote
debitoACobrar.setNumeroLote(imovel.getLote());
// Seta SubLote
debitoACobrar.setNumeroSubLote(imovel.getSubLote());
// Seta Taxa de Juros do Financiamento
debitoACobrar.setPercentualTaxaJurosFinanciamento(new BigDecimal(
"0"));
// Seta Financiamento Tipo
debitoACobrar.setFinanciamentoTipo(debitoTipo
.getFinanciamentoTipo());
// Seta Lan�amento Item Cont�bil
debitoACobrar.setLancamentoItemContabil(debitoTipo
.getLancamentoItemContabil());
// Seta D�bito Cr�dito Situa��o
debitoACobrar.setDebitoCreditoSituacaoAtual(debitoCreditoSituacao);
// Seta Cobran�a Forma
debitoACobrar.setCobrancaForma(cobrancaForma);
// Seta a data de ultima altera��o
debitoACobrar.setUltimaAlteracao(new Date());
Integer idDebitoACobrar = (Integer) this.getControladorUtil()
.inserir(debitoACobrar);
debitoACobrar.setId(idDebitoACobrar);
// Recupera Categorias por Im�vel
Collection<Categoria> colecaoCategoria = this
.getControladorImovel().obterQuantidadeEconomiasCategoria(
imovel);
// Recupera Valores por Categorias
Collection<BigDecimal> colecaoValoresCategorias = this
.getControladorImovel().obterValorPorCategoria(
colecaoCategoria, valorFinal);
// Insere d�bito a cobrar por categoria
inserirDebitoACobrarCategoria(colecaoCategoria,
colecaoValoresCategorias, debitoACobrar);
} catch (Exception ex) {
sessionContext.setRollbackOnly();
throw new ControladorException("erro.sistema", ex);
}
}
/**
* [UC0113] - Faturar Grupo de Faturamento
*
* Verifica se o im�vel gera conta ou n�o.
*
* [SF0003] - Verificar N�o Gera��o da Conta
*
* @author Leonardo Vieira, Pedro Alexandre
* @date 17/01/2006,13/09/2006
*
* @param imovel
* @param valorTotalAgua
* @param valorTotalEsgoto
* @return <true> se for para gerar conta, <false> caso contr�rio
* @throws ControladorException
*/
public boolean verificarNaoGeracaoConta(Imovel imovel,
BigDecimal valorTotalAgua, BigDecimal valorTotalEsgoto,
int anoMesFaturamentoGrupo) throws ControladorException {
boolean retorno = true;
boolean primeiraCondicao = false;
boolean segundaCondicao = true;
boolean primeiraSubCondicao = true;
boolean segundaSubCondicao = true;
BigDecimal valorTotalDebitos = new BigDecimal(0.0);
/*
* Caso o valor total da �gua e o valor total do esgoto seja igual a
* zero. Satisfaz a primeira condi��o.
*/
if (valorTotalAgua.compareTo(ConstantesSistema.VALOR_ZERO) == 0 &&
valorTotalEsgoto.compareTo(ConstantesSistema.VALOR_ZERO) == 0) {
primeiraCondicao = true;
}
Collection colecaoDebitosACobrar = null;
Collection colecaoCreditosARealizar = null;
/*
* Colocado por Raphael Rossiter em 20/03/2007
*/
colecaoDebitosACobrar = this.obterDebitoACobrarImovel(imovel.getId(),
DebitoCreditoSituacao.NORMAL, anoMesFaturamentoGrupo);
/*
* N�o existam d�bitos a cobrar (n�o existem d�bitos na tabela
* DEBITO_A_COBRAR com IMOV_ID=IMOV_ID e DCST_IDATUAL com o valor
* correspondente a normal (valor=0) e DBAC_NNPRESTACAOCOBRADAS menor
* que DBAC_NNPRESTACAODEBITO)
*
* [FS0005] - Verificar D�bitos a cobrar de parcelamento
*
* OBS - O [FS0005] j� est� incorporado no m�todo
* obterDebitoACobrarImovel
*/
if (colecaoDebitosACobrar == null || colecaoDebitosACobrar.isEmpty()) {
// segundaCondicao = true;
primeiraSubCondicao = true;
} else {
try {
SistemaParametro sistemaParametro = getControladorUtil().pesquisarParametrosDoSistema();
colecaoCreditosARealizar = repositorioFaturamento
.pesquisarCreditoARealizar(imovel.getId(), DebitoCreditoSituacao.NORMAL, anoMesFaturamentoGrupo, sistemaParametro);
} catch (ErroRepositorioException ex) {
sessionContext.setRollbackOnly();
throw new ControladorException("erro.sistema", ex);
}
/*
* ... ou, caso existam, n�o existam cr�ditos a realizar (n�o
* existem cr�ditos na tabela CREDITO_A_REALIZAR com IMOV_ID=IMOV_ID
* do im�vel e DCST_IDATUAL com o valor correspondente a normal
* (valor=0)e (CRAR_NNPRESTACAOREALIZADAS menor que
* CRAR_NNPRESTACAOCREDITO ou CRAR_VLRESIDUALMESANTERIOR maior que
* zero))
*
* [FS0006] - Verificar Cr�ditos a realizar de parcelamento
*
* OBS - O [FS0006] j� est� incorporado no m�todo
* repositorioFaturamento.pesquisarCreditoARealizar
*/
if (colecaoCreditosARealizar == null
|| colecaoCreditosARealizar.isEmpty()) {
/*
* e os d�bitos a cobrar sejam todos correspondentes a tipo de
* debito com indicador de gera��o de conta igual a N�O
* (DBTP_ICGERACAOCONTA=2 da tabela DEBITO_TIPO com DBTP_ID da
* tabela DEBITO_A_COBRAR)
*/
Iterator iteratorColecaoDebitosACobrar = colecaoDebitosACobrar
.iterator();
BigDecimal valorPrestacao = new BigDecimal(0.0);
valorTotalDebitos = new BigDecimal(0.0);
DebitoACobrar debitoACobrar = null;
DebitoTipo debitoTipo = null;
while (iteratorColecaoDebitosACobrar.hasNext()) {
debitoACobrar = (DebitoACobrar) iteratorColecaoDebitosACobrar
.next();
// Adicionado por Romulo Aurelio CRC 399
// Calcula o valor da presta��o
valorPrestacao = debitoACobrar.getValorDebito().divide(new BigDecimal(debitoACobrar
.getNumeroPrestacaoDebito()), 2, BigDecimal.ROUND_DOWN);
/*
* Alterado por Vivianne Sousa em 20/12/2007 - Analista: Adriano
* cria��o do bonus para parcelamento com RD especial
*/
Short numeroParcelaBonus = 0;
if(debitoACobrar.getNumeroParcelaBonus() != null){
numeroParcelaBonus = debitoACobrar.getNumeroParcelaBonus();
}
// Caso seja a �ltima presta��o
if (debitoACobrar.getNumeroPrestacaoCobradas() ==
((debitoACobrar.getNumeroPrestacaoDebito()- numeroParcelaBonus) - 1)) {
// Obt�m o n�mero de presta��o d�bito
BigDecimal numeroPrestacaoDebito = new BigDecimal(
debitoACobrar.getNumeroPrestacaoDebito());
// Mutiplica o (valor da presta��o * n�mero da presta��o debito) - numeroParcelaBonus
BigDecimal multiplicacao = valorPrestacao.multiply(numeroPrestacaoDebito).setScale(2);
// Subtrai o valor do d�bito pelo resultado da multiplica��o
BigDecimal parte1 = debitoACobrar.getValorDebito()
.subtract(multiplicacao).setScale(2);
// Calcula o valor da presta��o
valorPrestacao = valorPrestacao.add(parte1).setScale(2);
}
// Acumula o valor da presta��o no valor total dos debitos
valorTotalDebitos = valorTotalDebitos.add(valorPrestacao);
// Adicionado por Romulo Aurelio CRC 399
try {
debitoTipo = repositorioFaturamento
.getDebitoTipo(debitoACobrar.getDebitoTipo()
.getId());
} catch (ErroRepositorioException ex) {
sessionContext.setRollbackOnly();
throw new ControladorException("erro.sistema", ex);
}
if (debitoTipo.getIndicadorGeracaoConta().shortValue() != 2) {
// segundaCondicao = false;
segundaSubCondicao = true;
}else{
segundaSubCondicao = false;
}
}
// Adicionado por Romulo Aurelio CRC 399
SistemaParametro sistemaParametro = getControladorUtil()
.pesquisarParametrosDoSistema();
if (sistemaParametro.getValorMinimoEmissaoConta().compareTo(
valorTotalDebitos) >= 0) {
segundaCondicao = true;
} else {
segundaCondicao = false;
}
// Adicionado por Romulo Aurelio CRC 399
} else {
primeiraSubCondicao = false;
}
}
if (colecaoDebitosACobrar != null) {
colecaoDebitosACobrar.clear();
colecaoDebitosACobrar = null;
}
if (colecaoCreditosARealizar != null) {
colecaoCreditosARealizar.clear();
colecaoCreditosARealizar = null;
}
/*
* Caso as duas condi��es sejam verdadeiras n�o gera a conta.
*/
if (primeiraCondicao && segundaCondicao && primeiraSubCondicao && segundaSubCondicao) {
retorno = false;
}
/*
* Caso a situa��o do imovel seja SUPRIMIDO n�o gera conta.
*/
else if (imovel.getLigacaoAguaSituacao().getId().intValue() == LigacaoAguaSituacao.SUPRIMIDO
|| imovel.getLigacaoAguaSituacao().getId().intValue() == LigacaoAguaSituacao.SUPR_PARC
|| imovel.getLigacaoAguaSituacao().getId().intValue() == LigacaoAguaSituacao.SUPR_PARC_PEDIDO) {
FiltroLigacaoAgua filtroLigacaoAgua = new FiltroLigacaoAgua();
filtroLigacaoAgua.adicionarParametro(new ParametroSimples(
FiltroLigacaoAgua.ID, imovel.getId()));
Collection colecaoLigacaoAgua = getControladorUtil().pesquisar(
filtroLigacaoAgua, LigacaoAgua.class.getName());
if (colecaoLigacaoAgua != null && !colecaoLigacaoAgua.isEmpty()) {
LigacaoAgua ligacaoAgua = (LigacaoAgua) Util
.retonarObjetoDeColecao(colecaoLigacaoAgua);
if (ligacaoAgua.getDataCorte() != null) {
Date dataAnoMesFaturamento = Util.criarData(1, Util
.obterMes(anoMesFaturamentoGrupo), Util
.obterAno(anoMesFaturamentoGrupo));
Date dataAnoMesFaturamentoMenos2Anos = Util.subtrairNumeroAnosDeUmaData(dataAnoMesFaturamento,2);
if (ligacaoAgua.getDataCorte().compareTo(
dataAnoMesFaturamentoMenos2Anos) == -1) {
retorno = false;
} else {
retorno = true;
}
} else {
retorno = false;
}
} else {
retorno = false;
}
}
return retorno;
}
/**
* [UC0482]Emitir 2� Via de Conta
*
* @author Vivianne Sousa
* @date 08/01/2007
*
* @param colecaoConta
* @throws ControladorException
*/
public Collection<EmitirContaHelper> emitir2ViaContasHistorico(
Collection idsContaEP, boolean cobrarTaxaEmissaoConta,
Short contaSemCodigoBarras) throws ControladorException {
Collection<EmitirContaHelper> colecaoEmitirContaHelper = new ArrayList();
Iterator iter = idsContaEP.iterator();
while (iter.hasNext()) {
Integer idContaEP = (Integer) iter.next();
Collection colectionConta;
try {
colectionConta = this.repositorioFaturamento
.pesquisarContaHistoricoERota(idContaEP);
} catch (ErroRepositorioException ex) {
sessionContext.setRollbackOnly();
throw new ControladorException("erro.sistema", ex);
}
EmitirContaHelper emitirContaHelper = (EmitirContaHelper) colectionConta
.iterator().next();
SistemaParametro sistemaParametro = getControladorUtil()
.pesquisarParametrosDoSistema();
String nomeCliente = "";
if (emitirContaHelper.getNomeImovel() != null
&& !emitirContaHelper.getNomeImovel().equals("")) {
nomeCliente = emitirContaHelper.getNomeImovel();
emitirContaHelper.setNomeCliente(nomeCliente);
}
// Linha 5
// --------------------------------------------------------------
// recupera endereco do im�vel
String enderecoImovel = "";
try {
enderecoImovel = getControladorEndereco()
.pesquisarEnderecoFormatado(
emitirContaHelper.getIdImovel());
} catch (ControladorException e1) {
e1.printStackTrace();
}
emitirContaHelper.setEnderecoImovel(enderecoImovel);
// Linha 6
// --------------------------------------------------------------
// inst�ncia um imovel com os dados da conta para recuperar a
// inscri��o que est� no objeto imovel
Imovel imovel = new Imovel();
Localidade localidade = new Localidade();
localidade.setId(emitirContaHelper.getIdLocalidade());
imovel.setLocalidade(localidade);
SetorComercial setorComercial = new SetorComercial();
setorComercial.setCodigo(emitirContaHelper
.getCodigoSetorComercialConta());
imovel.setSetorComercial(setorComercial);
Quadra quadra = new Quadra();
quadra.setNumeroQuadra(emitirContaHelper.getIdQuadraConta());
imovel.setQuadra(quadra);
imovel.setLote(emitirContaHelper.getLoteConta());
imovel.setSubLote(emitirContaHelper.getSubLoteConta());
// Inscri��o do im�vel
emitirContaHelper
.setInscricaoImovel(imovel.getInscricaoFormatada());
// Linha 7
// --------------------------------------------------------------
String idClienteResponsavel = "";
String enderecoClienteResponsavel = "";
Integer idImovelContaEnvio = emitirContaHelper
.getIdImovelContaEnvio();
// caso a cole��o de contas seja de entrega para o cliente
// respons�vel
if (idImovelContaEnvio != null
&& (idImovelContaEnvio
.equals(ImovelContaEnvio.ENVIAR_CLIENTE_RESPONSAVEL) || idImovelContaEnvio
.equals(ImovelContaEnvio.NAO_PAGAVEL_IMOVEL_PAGAVEL_RESPONSAVEL))) {
Integer idClienteResponsavelInteger = null;
idClienteResponsavelInteger = pesquisarIdClienteResponsavelConta(
emitirContaHelper.getIdConta(), true);
if (idClienteResponsavel != null
&& !idClienteResponsavel.equals("")) {
idClienteResponsavel = idClienteResponsavelInteger
.toString();
// [UC0085]Obter Endereco
enderecoClienteResponsavel = getControladorEndereco()
.pesquisarEnderecoClienteAbreviado(
idClienteResponsavelInteger);
}
}
emitirContaHelper.setIdClienteResponsavel(idClienteResponsavel);
emitirContaHelper
.setEnderecoClienteResponsavel(enderecoClienteResponsavel);
// Linha 8
// --------------------------------------------------------------
// [SB0002] - Determinar tipo de liga��o e tipo de Medi��o
Integer[] parmSituacao = determinarTipoLigacaoMedicao(emitirContaHelper);
Integer tipoLigacao = parmSituacao[0];
Integer tipoMedicao = parmSituacao[1];
// Linha 9
// --------------------------------------------------------------
// cria uma stringBuilder para recuperar o resultado do [SB0003]
// o tamanho da string que vem como resultado � de 20 posi��es
StringBuilder obterDadosConsumoMedicaoAnterior = null;
// chama o [SB0003] -Obter Dados do Consumo e Medi��o Anterior
// passando a quantidade de Meses Igual a 1
// e o tipo de liga��o e medi��o recuperados anteriormente
obterDadosConsumoMedicaoAnterior = obterDadosConsumoAnterior(emitirContaHelper, 1, tipoLigacao, tipoMedicao);
emitirContaHelper
.setDadosConsumoMes1(obterDadosConsumoMedicaoAnterior
.toString());
// chama o [SB0003] -Obter Dados do Consumo e Medi��o Anterior
// passando a quantidade de Meses Igual a 4
// e o tipo de liga��o e medi��o recuperados anteriormente
obterDadosConsumoMedicaoAnterior = obterDadosConsumoAnterior(emitirContaHelper, 4, tipoLigacao, tipoMedicao);
emitirContaHelper
.setDadosConsumoMes4(obterDadosConsumoMedicaoAnterior
.toString());
// Linha 10
// --------------------------------------------------------------
// chama o [SB0003] -Obter Dados do Consumo e Medi��o Anterior
// passando a quantidade de Meses Igual a 2
// e o tipo de liga��o e medi��o recuperados anteriormente
obterDadosConsumoMedicaoAnterior = obterDadosConsumoAnterior(emitirContaHelper, 2, tipoLigacao, tipoMedicao);
emitirContaHelper
.setDadosConsumoMes2(obterDadosConsumoMedicaoAnterior
.toString());
// chama o [SB0003] -Obter Dados do Consumo e Medi��o Anterior
// passando a quantidade de Meses Igual a 5
// e o tipo de liga��o e medi��o recuperados anteriormente
obterDadosConsumoMedicaoAnterior = obterDadosConsumoAnterior(emitirContaHelper, 5, tipoLigacao, tipoMedicao);
emitirContaHelper
.setDadosConsumoMes5(obterDadosConsumoMedicaoAnterior
.toString());
// Inicio Chamar Sub-Fluxo
// recupera os parametros da medi��o historico do
// [SB0004] - Obter Dados da Medi��o da Conta
Object[] parmsMedicaoHistorico = obterDadosMedicaoConta(
emitirContaHelper, tipoMedicao);
// Leitura Anterior
String leituraAnterior = "";
// Leitura Atual
String leituraAtual = "";
// Data Leitura Anterior
String dataLeituraAnterior = "";
// Leitura Anterior
String dataLeituraAtual = "";
// Leitura Situa��o Atual
// String leituraSituacaoAtual = "";
// Leitura Anormalidade Faturamento
String leituraAnormalidadeFaturamento = "";
if (parmsMedicaoHistorico != null) {
if (parmsMedicaoHistorico[0] != null) {
leituraAnterior = "" + (Integer) parmsMedicaoHistorico[0];
}
if (parmsMedicaoHistorico[1] != null) {
leituraAtual = "" + (Integer) parmsMedicaoHistorico[1];
}
if (parmsMedicaoHistorico[3] != null) {
dataLeituraAnterior = Util
.formatarData((Date) parmsMedicaoHistorico[3]);
}
if (parmsMedicaoHistorico[2] != null) {
dataLeituraAtual = Util
.formatarData((Date) parmsMedicaoHistorico[2]);
}
if (parmsMedicaoHistorico[4] != null) {
// leituraSituacaoAtual = ""
// + (Integer) parmsMedicaoHistorico[4];
}
if (parmsMedicaoHistorico[5] != null) {
leituraAnormalidadeFaturamento = ""
+ (Integer) parmsMedicaoHistorico[5];
}
}
emitirContaHelper.setDataLeituraAnterior(dataLeituraAnterior);
emitirContaHelper.setDataLeituraAtual(dataLeituraAtual);
String diasConsumo = "";
if (!dataLeituraAnterior.equals("") && !dataLeituraAtual.equals("")) {
// calcula a quantidade de dias de consumo que � a
// quantidade de dias
// entre a data de leitura
// anterior(parmsMedicaoHistorico[2]) e a data de leitura
// atual(parmsMedicaoHistorico[3])
diasConsumo = ""
+ Util.obterQuantidadeDiasEntreDuasDatas(
(Date) parmsMedicaoHistorico[3],
(Date) parmsMedicaoHistorico[2]);
}
// recupera os parametros de consumo faturamento e consumo m�dio
// di�rio
// [SB0005] - Obter Consumo Faturado e Consumo M�dio Di�rio
String[] parmsConsumo = obterConsumoFaturadoConsumoMedioDiario(
emitirContaHelper, tipoMedicao, diasConsumo);
String consumoFaturamento = parmsConsumo[0];
emitirContaHelper.setConsumoFaturamento(consumoFaturamento);
String consumoMedioDiario = parmsConsumo[1];
emitirContaHelper.setConsumoMedioDiario(consumoMedioDiario);
// Fim Chamar Sub-Fluxo
// Leitura Anterior
leituraAnterior = Util.completaString(leituraAnterior, 7);
emitirContaHelper.setLeituraAnterior(leituraAnterior);
// Leitura Atual
leituraAtual = Util.completaString(leituraAtual, 7);
emitirContaHelper.setLeituraAtual(leituraAtual);
// Dias de consumo
diasConsumo = Util.completaString(diasConsumo, 2);
emitirContaHelper.setDiasConsumo(diasConsumo);
// Linha 11
// --------------------------------------------------------------
// chama o [SB0003] -Obter Dados do Consumo e Medi��o Anterior
// passando a quantidade de Meses Igual a 3
// e o tipo de liga��o e medi��o recuperados anteriormente
obterDadosConsumoMedicaoAnterior = obterDadosConsumoAnterior(emitirContaHelper, 3, tipoLigacao, tipoMedicao);
emitirContaHelper
.setDadosConsumoMes3(obterDadosConsumoMedicaoAnterior
.toString());
// chama o [SB0003] -Obter Dados do Consumo e Medi��o Anterior
// passando a quantidade de Meses Igual a 6
// e o tipo de liga��o e medi��o recuperados anteriormente
obterDadosConsumoMedicaoAnterior = obterDadosConsumoAnterior(emitirContaHelper, 6, tipoLigacao, tipoMedicao);
emitirContaHelper
.setDadosConsumoMes6(obterDadosConsumoMedicaoAnterior
.toString());
// Linha 12
// --------------------------------------------------------------
// Inicio Chamar Sub-Fluxo
// recupera os parametros do consumo historico da conta
// [SB0006] - Obter Dados de Consumo da Conta
Object[] parmsConsumoHistorico = null;
String descricaoAbreviadaTipoConsumo = "";
String descricaoTipoConsumo = "";
String consumoMedio = "";
String descricaoAbreviadaAnormalidadeConsumo = "";
String descricaoAnormalidadeConsumo = "";
String consumoRateio = "";
// caso o tipo de ligacao for diferente de nulo
if (tipoLigacao != null) {
try {
parmsConsumoHistorico = getControladorMicromedicao()
.obterDadosConsumoConta(
emitirContaHelper.getIdImovel(),
emitirContaHelper.getAmReferencia(),
tipoLigacao);
} catch (ControladorException e) {
e.printStackTrace();
}
if (parmsConsumoHistorico != null) {
// descri��o abreviada tipo de consumo
if (parmsConsumoHistorico[0] != null) {
descricaoAbreviadaTipoConsumo = (String) parmsConsumoHistorico[0];
}
// descri��o tipo de consumo
if (parmsConsumoHistorico[1] != null) {
descricaoTipoConsumo = (String) parmsConsumoHistorico[1];
}
// Consumo m�dio
if (parmsConsumoHistorico[2] != null) {
consumoMedio = "" + (Integer) parmsConsumoHistorico[2];
}
// descri��o abreviada anormalidade de consumo
if (parmsConsumoHistorico[3] != null) {
descricaoAbreviadaAnormalidadeConsumo = (String) parmsConsumoHistorico[3];
}
// descri��o anormalidade de consumo
if (parmsConsumoHistorico[4] != null) {
descricaoAnormalidadeConsumo = (String) parmsConsumoHistorico[4];
}
// Consumo m�dio
if (parmsConsumoHistorico[5] != null) {
consumoRateio = "" + (Integer) parmsConsumoHistorico[5];
}
}
}
emitirContaHelper.setDescricaoTipoConsumo(descricaoTipoConsumo);
emitirContaHelper
.setDescricaoAnormalidadeConsumo(descricaoAnormalidadeConsumo);
// Fim Chamar Sub-Fluxo
// Linha 13
// --------------------------------------------------------------
// Inicio Chamar Sub-Fluxo
// soma a quantidades de economias da tabela contaCategoria
// [SB0007] - Obter Dados da Medi��o da Conta
Short quantidadeEconomiaConta = 0;
quantidadeEconomiaConta = obterQuantidadeEconomiasConta(
emitirContaHelper.getIdConta(), true);
emitirContaHelper.setQuantidadeEconomiaConta(""
+ quantidadeEconomiaConta);
// Fim Chamar Sub-Fluxo
// Consumo por Economia
// transforma o consumoFaturamento para um bigDecimal
BigDecimal consumoFaturadoBigDecimal = null;
if (consumoFaturamento != null && !consumoFaturamento.equals("")) {
consumoFaturadoBigDecimal = Util
.formatarMoedaRealparaBigDecimal(consumoFaturamento);
}
// transforma a quantidade de economias da conta para um
// bigDecimal
BigDecimal qtdEconomiasBigDecimal = null;
if (quantidadeEconomiaConta != null
&& !quantidadeEconomiaConta.equals("")) {
qtdEconomiasBigDecimal = Util
.formatarMoedaRealparaBigDecimal(""
+ quantidadeEconomiaConta);
}
String consumoEconomia = "";
if (consumoFaturadoBigDecimal != null
&& qtdEconomiasBigDecimal != null) {
BigDecimal consumoEconomiaBigDecimal = consumoFaturadoBigDecimal
.divide(qtdEconomiasBigDecimal, 2, RoundingMode.UP);
consumoEconomia = Util
.formatarMoedaReal(consumoEconomiaBigDecimal);
emitirContaHelper.setConsumoEconomia(consumoEconomia.substring(
0, (consumoEconomia.length() - 3)));
}
// Inicio Chamar Sub-Fluxo
// concatena os campos dos sub-fluxos anteriores
// [SB0008] - Obter Dados da Medi��o da Conta
StringBuilder codigoAuxiliar = new StringBuilder();
// leitura situa��o atual
// tipo de consumo
codigoAuxiliar.append(Util.completaString(
descricaoAbreviadaTipoConsumo, 1));
// tipo de contrato
codigoAuxiliar.append(Util.completaString("", 1));
// anormalidade de leitura
codigoAuxiliar.append(Util.completaString(
leituraAnormalidadeFaturamento, 2));
// anormalidade de consumo
codigoAuxiliar.append(Util.completaString(
descricaoAbreviadaAnormalidadeConsumo, 2));
// perfil do im�vel
if (emitirContaHelper.getIdImovelPerfil() != null) {
codigoAuxiliar.append(Util.completaString(""
+ emitirContaHelper.getIdImovelPerfil(), 1));
} else {
codigoAuxiliar.append(Util.completaString("", 1));
}
// dias do consumo
codigoAuxiliar.append(Util.completaString(diasConsumo, 2));
// Consumo medio do im�vel
codigoAuxiliar.append(Util.completaString(consumoMedio, 6));
// Fim Chamar Sub-Fluxo
emitirContaHelper
.setCodigoAuxiliarString(codigoAuxiliar.toString());
// chama o [SB0009] - Obter Mensagem de Rateio de Consumo Fixo
// de Esgoto
StringBuilder mesagemConsumo = obterMensagemRateioConsumo(
emitirContaHelper, consumoRateio, parmsMedicaoHistorico,
tipoMedicao);
// mensagem de rateio de consumo ou consumo fixo de esgoto
emitirContaHelper.setMensagemConsumoString(mesagemConsumo
.toString());
// Linha 16
// --------------------------------------------------------------
// chama o [SB0010] - Gerar Linhas da Descri��o dos Servi�os e
// Tarifas
Collection colecaoContaLinhasDescricaoServicosTarifasTotalHelper = gerarLinhasDescricaoServicoTarifasRelatorio(
emitirContaHelper, consumoRateio, parmsMedicaoHistorico,
tipoMedicao, true);
emitirContaHelper
.setColecaoContaLinhasDescricaoServicosTarifasTotalHelper(colecaoContaLinhasDescricaoServicosTarifasTotalHelper);
// Linha 17
// --------------------------------------------------------------
// cria um objeto conta para calcular o valor da conta
Conta conta = new Conta();
conta.setValorAgua(emitirContaHelper.getValorAgua());
conta.setValorEsgoto(emitirContaHelper.getValorEsgoto());
conta.setValorCreditos(emitirContaHelper.getValorCreditos());
conta.setDebitos(emitirContaHelper.getDebitos());
conta.setValorImposto(emitirContaHelper.getValorImpostos());
BigDecimal valorConta = conta.getValorTotalContaBigDecimal();
emitirContaHelper.setValorContaString(Util
.formatarMoedaReal(valorConta));
if (contaSemCodigoBarras.equals(ConstantesSistema.SIM)
|| valorConta.compareTo(new BigDecimal("0.00")) == 0) {
emitirContaHelper.setContaSemCodigoBarras("1");
} else {
emitirContaHelper.setContaSemCodigoBarras("2");
}
// chama o [SB0016] - Obter Mensagem da Conta em 3 Partes
String[] parmsPartesConta = obterMensagemConta3Partes(
emitirContaHelper, sistemaParametro);
// Linha 18
// --------------------------------------------------------------
emitirContaHelper.setPrimeiraParte(parmsPartesConta[0]);
// Linha 19
// --------------------------------------------------------------
emitirContaHelper.setSegundaParte(parmsPartesConta[1]);
// Linha 20
// --------------------------------------------------------------
emitirContaHelper.setTerceiraParte(parmsPartesConta[2]);
// Linha 21
// --------------------------------------------------------------
int anoMesReferenciaSubtraido = Util.subtrairMesDoAnoMes(
emitirContaHelper.getAmReferencia(), 1);
emitirContaHelper.setMesAnoFormatado(Util
.formatarAnoMesParaMesAno(anoMesReferenciaSubtraido));
// Linha 22
// --------------------------------------------------------------
Object[] parmsQualidadeAgua = null;
parmsQualidadeAgua = pesquisarParmsQualidadeAgua(emitirContaHelper);
// numero indice turbidez da qualidade agua
String numeroIndiceTurbidez = "";
// numero cloro residual da qualidade agua
String numeroCloroResidual = "";
if (parmsQualidadeAgua != null) {
if (parmsQualidadeAgua[0] != null) {
numeroIndiceTurbidez = Util
.formatarMoedaReal((BigDecimal) parmsQualidadeAgua[0]);
}
if (parmsQualidadeAgua[1] != null) {
numeroCloroResidual = Util
.formatarMoedaReal((BigDecimal) parmsQualidadeAgua[1]);
}
}
emitirContaHelper.setNumeroIndiceTurbidez(numeroIndiceTurbidez);
emitirContaHelper.setNumeroCloroResidual(numeroCloroResidual);
// Linha 23
// --------------------------------------------------------------
// Considerar as contas do tipo d�bito autom�tico como tipo de conta
// normal
// [SB0018 - Gerar Linhas das DemaisContas]
Integer digitoVerificadorConta = new Integer(""
+ emitirContaHelper.getDigitoVerificadorConta());
// formata ano mes para mes ano
String anoMes = "" + emitirContaHelper.getAmReferencia();
String mesAno = anoMes.substring(4, 6) + anoMes.substring(0, 4);
String representacaoNumericaCodBarra = "";
representacaoNumericaCodBarra = this.getControladorArrecadacao()
.obterRepresentacaoNumericaCodigoBarra(3, valorConta,
emitirContaHelper.getIdLocalidade(),
emitirContaHelper.getIdImovel(), mesAno,
digitoVerificadorConta, null, null, null, null,
null, null,null);
// Linha 24
// 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);
emitirContaHelper
.setRepresentacaoNumericaCodBarraFormatada(representacaoNumericaCodBarraFormatada);
// Linha 25
String representacaoNumericaCodBarraSemDigito = representacaoNumericaCodBarra
.substring(0, 11)
+ representacaoNumericaCodBarra.substring(12, 23)
+ representacaoNumericaCodBarra.substring(24, 35)
+ representacaoNumericaCodBarra.substring(36, 47);
emitirContaHelper
.setRepresentacaoNumericaCodBarraSemDigito(representacaoNumericaCodBarraSemDigito);
// Linha28
if (emitirContaHelper.getDataValidadeConta().compareTo(new Date()) == 1) {
emitirContaHelper
.setDataValidade(Util.formatarData(emitirContaHelper
.getDataValidadeConta()));
} else {
// soma 60 dias a data atual
Date dataValidadeConta = Util.adicionarNumeroDiasDeUmaData(
new Date(), 60);
int ano = Util.getAno(dataValidadeConta);
int mes = Util.getMes(dataValidadeConta);
Calendar calendar = new GregorianCalendar();
calendar.set(Calendar.MONTH, mes - 1);
calendar.set(Calendar.YEAR, ano);
Collection colecaoNacionalFeriado = getControladorUtil()
.pesquisarFeriadosNacionais();
Collection colecaoDatasFeriados = new ArrayList();
Iterator iterNacionalFeriado = colecaoNacionalFeriado
.iterator();
while (iterNacionalFeriado.hasNext()) {
NacionalFeriado nacionalFeriado = (NacionalFeriado) iterNacionalFeriado
.next();
colecaoDatasFeriados.add(nacionalFeriado.getData());
}
calendar.set(Calendar.DAY_OF_MONTH, Util.obterUltimoDiaUtilMes(
mes, ano, colecaoDatasFeriados));
dataValidadeConta = calendar.getTime();
emitirContaHelper.setDataValidade(Util
.formatarData(dataValidadeConta));
}
if (emitirContaHelper.getDebitoCreditoSituacaoAtualConta().equals(
DebitoCreditoSituacao.NORMAL)
|| emitirContaHelper.getDebitoCreditoSituacaoAtualConta()
.equals(DebitoCreditoSituacao.RETIFICADA)
|| emitirContaHelper.getDebitoCreditoSituacaoAtualConta()
.equals(DebitoCreditoSituacao.INCLUIDA)) {
emitirContaHelper.setContaPaga("1");
}
//Se valor da conta maior que o valor limite
//emite uma Ficha de Compensa��o(Boleto bancario)
if (sistemaParametro.getValorContaFichaComp() != null
&& !sistemaParametro.getValorContaFichaComp().equals(new BigDecimal("0.00"))
&& valorConta!= null && valorConta.compareTo(sistemaParametro.getValorContaFichaComp()) == 1){
StringBuilder nossoNumero = obterNossoNumeroFichaCompensacao("1",emitirContaHelper.getIdConta().toString()) ;
emitirContaHelper.setNossoNumero(nossoNumero.toString());
}
colecaoEmitirContaHelper.add(emitirContaHelper);
if (cobrarTaxaEmissaoConta) {
this.gerarDebitoACobrarTaxaEmissaoConta(emitirContaHelper
.getIdImovel(), emitirContaHelper.getAmReferencia());
}
}
return colecaoEmitirContaHelper;
}
/**
* [UC0482] Emitir 2 Via de Contas
*
* [SB00011] Gerar Linhas da Tarifa de �gua
*
* @author Vivianne Sousa
* @date 25/04/2007
*
* @param colecaoConta
* @throws ControladorException
*/
protected Collection gerarLinhasTarifaAguaRelatorioContaHistorico(
EmitirContaHelper emitirContaHelper, String consumoRateio,
Object[] parmsMedicaoHistorico, Integer tipoMedicao,
Collection colecaoLinhasDescricaoServicosTarifasTotal)
throws ControladorException {
Collection colecaoContaLinhasDescricaoServicosTarifasTotalHelper = colecaoLinhasDescricaoServicosTarifasTotal;
ContaLinhasDescricaoServicosTarifasTotalHelper contaLinhasDescricaoServicosTarifasTotalHelper = null;
String descricaoServicosTarifas1 = "";
// -- Linha 1 --//
descricaoServicosTarifas1 = "AGUA";
contaLinhasDescricaoServicosTarifasTotalHelper = new ContaLinhasDescricaoServicosTarifasTotalHelper();
contaLinhasDescricaoServicosTarifasTotalHelper
.setDescricaoServicosTarifas(descricaoServicosTarifas1);
contaLinhasDescricaoServicosTarifasTotalHelper.setConsumoFaixa("");
contaLinhasDescricaoServicosTarifasTotalHelper.setValor("");
colecaoContaLinhasDescricaoServicosTarifasTotalHelper
.add(contaLinhasDescricaoServicosTarifasTotalHelper);
Collection colecaoContaCategoriaComFaixas = null;
try {
colecaoContaCategoriaComFaixas = repositorioFaturamento
.pesquisarContaHistoricoCategoriaSubCategoria(emitirContaHelper
.getIdConta());
} catch (ErroRepositorioException e) {
sessionContext.setRollbackOnly();
throw new ControladorException("erro.sistema", e);
}
if (colecaoContaCategoriaComFaixas != null
&& !colecaoContaCategoriaComFaixas.isEmpty()) {
Iterator iteratorContaCategoriaComFaixas = colecaoContaCategoriaComFaixas
.iterator();
while (iteratorContaCategoriaComFaixas.hasNext()) {
ContaCategoriaHistorico contaCategoriaHistorico = (ContaCategoriaHistorico) iteratorContaCategoriaComFaixas
.next();
String descricaoServicosTarifas2 = "";
// -- Linha 2 --//
descricaoServicosTarifas2 = " ";
// descricao da categoria
descricaoServicosTarifas2 = descricaoServicosTarifas2
+ Util.completaString(contaCategoriaHistorico
.getComp_id().getSubcategoria()
.getDescricaoAbreviada(), 21);
// quantidade de economias
descricaoServicosTarifas2 = descricaoServicosTarifas2
+ Util.adicionarZerosEsquedaNumero(3, ""
+ contaCategoriaHistorico
.getQuantidadeEconomia());
if (contaCategoriaHistorico.getQuantidadeEconomia() == 1) {
descricaoServicosTarifas2 = descricaoServicosTarifas2
+ " UNIDADE ";
} else {
descricaoServicosTarifas2 = descricaoServicosTarifas2
+ " UNIDADES ";
}
contaLinhasDescricaoServicosTarifasTotalHelper = new ContaLinhasDescricaoServicosTarifasTotalHelper();
contaLinhasDescricaoServicosTarifasTotalHelper
.setDescricaoServicosTarifas(descricaoServicosTarifas2);
contaLinhasDescricaoServicosTarifasTotalHelper
.setConsumoFaixa("");
contaLinhasDescricaoServicosTarifasTotalHelper.setValor("");
colecaoContaLinhasDescricaoServicosTarifasTotalHelper
.add(contaLinhasDescricaoServicosTarifasTotalHelper);
// -- Linha 3 --//
contaLinhasDescricaoServicosTarifasTotalHelper = new ContaLinhasDescricaoServicosTarifasTotalHelper();
String descricaoServicosTarifas3 = "";
String consumoFaixa3 = "";
String valor3 = "";
Integer debitoCreditoSituacaoAtualConta = null;
try {
debitoCreditoSituacaoAtualConta = repositorioFaturamento
.pesquisarDebitoCreditoSituacaoAtualContaHistorico(emitirContaHelper
.getIdConta());
} catch (ErroRepositorioException e) {
sessionContext.setRollbackOnly();
throw new ControladorException("erro.sistema", e);
}
if (parmsMedicaoHistorico == null
&& debitoCreditoSituacaoAtualConta
.equals(DebitoCreditoSituacao.NORMAL)) {
descricaoServicosTarifas3 = " TARIFA M�NIMA";
// Valor da tarifa m�nima de �gua para a categoria por
// economia
BigDecimal qtdEconomia = Util
.formatarMoedaRealparaBigDecimal(""
+ contaCategoriaHistorico
.getQuantidadeEconomia());
String valorTarifaMinima = "";
if (contaCategoriaHistorico.getValorTarifaMinimaAgua() != null
&& qtdEconomia != null) {
BigDecimal valorTarifaMinimaBigDecimal = contaCategoriaHistorico
.getValorTarifaMinimaAgua().divide(qtdEconomia,
2, RoundingMode.UP);
valorTarifaMinima = Util
.formatarMoedaReal(valorTarifaMinimaBigDecimal);
}
descricaoServicosTarifas3 = descricaoServicosTarifas3
+ Util.completaStringComEspacoAEsquerda(
valorTarifaMinima, 6);
descricaoServicosTarifas3 = descricaoServicosTarifas3
+ " POR UNIDADE";
consumoFaixa3 = "MINIMO";
consumoFaixa3 = consumoFaixa3 + Util.completaString("", 11);
// valor da �gua para categoria
String valorAgua = Util.formatarMoedaReal(emitirContaHelper
.getValorAgua());
// String valorAgua = Util.formatarMoedaReal(contaCategoriaHistorico.getValorAgua());
valor3 = valorAgua;
contaLinhasDescricaoServicosTarifasTotalHelper = new ContaLinhasDescricaoServicosTarifasTotalHelper();
contaLinhasDescricaoServicosTarifasTotalHelper
.setDescricaoServicosTarifas(descricaoServicosTarifas3);
contaLinhasDescricaoServicosTarifasTotalHelper
.setConsumoFaixa(consumoFaixa3);
contaLinhasDescricaoServicosTarifasTotalHelper
.setValor(valor3);
colecaoContaLinhasDescricaoServicosTarifasTotalHelper
.add(contaLinhasDescricaoServicosTarifasTotalHelper);
} else {
// recupera a cole��o de conta categoria consumo faixa
Collection colecaoContaCategoriaConsumoFaixa = null;
try {
colecaoContaCategoriaConsumoFaixa = repositorioFaturamento
.pesquisarContaCategoriaHistoricoFaixas(
emitirContaHelper.getIdConta(),
contaCategoriaHistorico.getComp_id()
.getCategoria().getId(),
contaCategoriaHistorico.getComp_id()
.getSubcategoria().getId());
} catch (ErroRepositorioException e) {
sessionContext.setRollbackOnly();
throw new ControladorException("erro.sistema", e);
}
// 2.3.1 caso existam faixas de consumo para conta/categoria
if (colecaoContaCategoriaConsumoFaixa != null
&& !colecaoContaCategoriaConsumoFaixa.isEmpty()) {
descricaoServicosTarifas3 = " ATE ";
// Consumo m�nimo de �gua para a categoria por economia
BigDecimal qtdEconomia = Util
.formatarMoedaRealparaBigDecimal(""
+ contaCategoriaHistorico
.getQuantidadeEconomia());
BigDecimal consumoMinimoAgua = null;
if (contaCategoriaHistorico.getConsumoMinimoAgua() != null) {
consumoMinimoAgua = Util
.formatarMoedaRealparaBigDecimal(""
+ contaCategoriaHistorico
.getConsumoMinimoAgua());
}
BigDecimal consumoMinimaBigDecimal = new BigDecimal(
"0.00");
if (consumoMinimoAgua != null && qtdEconomia != null) {
consumoMinimaBigDecimal = consumoMinimoAgua.divide(
qtdEconomia, 2, RoundingMode.UP);
}
String consumoMinima = ""
+ consumoMinimaBigDecimal.intValue();
descricaoServicosTarifas3 = descricaoServicosTarifas3
+ Util.completaStringComEspacoAEsquerda(
consumoMinima, 2);
descricaoServicosTarifas3 = descricaoServicosTarifas3
+ " M3" + Util.completaString("", 7);
descricaoServicosTarifas3 = descricaoServicosTarifas3
+ "- R$";
// valor da tarifa minima de agua para a categoria por
// economia
BigDecimal valorTarifaMinimaBigDecimal = null;
if (contaCategoriaHistorico.getValorTarifaMinimaAgua() != null
&& qtdEconomia != null) {
valorTarifaMinimaBigDecimal = contaCategoriaHistorico
.getValorTarifaMinimaAgua().divide(
qtdEconomia, 2, RoundingMode.UP);
}
String valorTarifaMinima = Util
.completaStringComEspacoAEsquerda(
""
+ Util
.formatarMoedaReal(valorTarifaMinimaBigDecimal),
6);
descricaoServicosTarifas3 = descricaoServicosTarifas3
+ valorTarifaMinima + " (POR UNIDADE)";
// Consumo m�nimo de �gua para a categoria
if (contaCategoriaHistorico.getConsumoMinimoAgua() != null
&& !contaCategoriaHistorico
.getConsumoMinimoAgua().equals("")) {
consumoFaixa3 = Util
.completaStringComEspacoAEsquerda(""
+ contaCategoriaHistorico
.getConsumoMinimoAgua(), 4);
} else {
consumoFaixa3 = Util
.completaStringComEspacoAEsquerda("", 4);
}
consumoFaixa3 = consumoFaixa3 + " M3";
// valor da tarifa m�nima de agua para categoria
String valorAguaCategoria = "";
if (contaCategoriaHistorico.getValorTarifaMinimaAgua() != null) {
valorAguaCategoria = Util
.formatarMoedaReal(contaCategoriaHistorico
.getValorTarifaMinimaAgua());
}
valor3 = valorAguaCategoria;
contaLinhasDescricaoServicosTarifasTotalHelper = new ContaLinhasDescricaoServicosTarifasTotalHelper();
contaLinhasDescricaoServicosTarifasTotalHelper
.setDescricaoServicosTarifas(descricaoServicosTarifas3);
contaLinhasDescricaoServicosTarifasTotalHelper
.setConsumoFaixa(consumoFaixa3.trim());
contaLinhasDescricaoServicosTarifasTotalHelper
.setValor(valor3);
colecaoContaLinhasDescricaoServicosTarifasTotalHelper
.add(contaLinhasDescricaoServicosTarifasTotalHelper);
Iterator iteratorContaCategoriaConsumoFaixa = colecaoContaCategoriaConsumoFaixa
.iterator();
while (iteratorContaCategoriaConsumoFaixa.hasNext()) {
ContaCategoriaConsumoFaixaHistorico contaCategoriaConsumoFaixa = (ContaCategoriaConsumoFaixaHistorico) iteratorContaCategoriaConsumoFaixa
.next();
contaLinhasDescricaoServicosTarifasTotalHelper = new ContaLinhasDescricaoServicosTarifasTotalHelper();
String descricaoServicosTarifas4 = "";
String consumoFaixa4 = "";
String valor4 = "";
// -- Linha 4 --//
descricaoServicosTarifas4 = " ";
// caso a faixa seja a ultima da tarifa de consumo
if (contaCategoriaConsumoFaixa.getConsumoFaixaFim()
.equals(999999)) {
// Consumo inicial da faixa menos 1 m3
String consumoInicialFaixa = ""
+ (contaCategoriaConsumoFaixa
.getConsumoFaixaInicio() - 1);
// valor da tarifa na faixa
String valorTarifaFaixa = Util
.formatarMoedaReal(contaCategoriaConsumoFaixa
.getValorTarifaFaixa());
descricaoServicosTarifas4 = descricaoServicosTarifas4
+ "ACIMA DE";
descricaoServicosTarifas4 = descricaoServicosTarifas4
+ Util
.completaStringComEspacoAEsquerda(
consumoInicialFaixa, 3);
descricaoServicosTarifas4 = descricaoServicosTarifas4
+ " M3 - R$";
descricaoServicosTarifas4 = descricaoServicosTarifas4
+ Util
.completaStringComEspacoAEsquerda(
valorTarifaFaixa, 6);
descricaoServicosTarifas4 = descricaoServicosTarifas4
+ " POR M3";
// consumo da agua na faixa
// consumoFaixa4 = Util
// .completaStringComEspacoAEsquerda(""
// + contaCategoriaConsumoFaixa
// .getConsumoAgua(), 6)
consumoFaixa4 = Util
.completaStringComEspacoAEsquerda(
""
+ contaCategoriaConsumoFaixa
.getConsumoAgua()
* contaCategoriaHistorico
.getQuantidadeEconomia(),
6)
+ " M3";
// valor da agua na faixa
BigDecimal valorAguaFaixa = contaCategoriaConsumoFaixa
.getValorAgua().multiply(qtdEconomia)
.setScale(Parcelamento.CASAS_DECIMAIS);
valor4 = ""
+ Util
.formatarMoedaReal(valorAguaFaixa);
contaLinhasDescricaoServicosTarifasTotalHelper = new ContaLinhasDescricaoServicosTarifasTotalHelper();
contaLinhasDescricaoServicosTarifasTotalHelper
.setDescricaoServicosTarifas(descricaoServicosTarifas4);
contaLinhasDescricaoServicosTarifasTotalHelper
.setConsumoFaixa(consumoFaixa4.trim());
contaLinhasDescricaoServicosTarifasTotalHelper
.setValor(valor4);
colecaoContaLinhasDescricaoServicosTarifasTotalHelper
.add(contaLinhasDescricaoServicosTarifasTotalHelper);
} else {
// Consumo inicial da faixa
String consumoInicialFaixa = ""
+ (contaCategoriaConsumoFaixa
.getConsumoFaixaInicio());
// consumo final da faixa
String consumoFinalFaixa = ""
+ (contaCategoriaConsumoFaixa
.getConsumoFaixaFim());
// valor da tarifa na faixa
String valorTarifaFaixa = Util
.formatarMoedaReal(contaCategoriaConsumoFaixa
.getValorTarifaFaixa());
descricaoServicosTarifas4 = descricaoServicosTarifas4
+ Util
.completaStringComEspacoAEsquerda(
consumoInicialFaixa, 2)
+ " M3 A";
descricaoServicosTarifas4 = descricaoServicosTarifas4
+ Util
.completaStringComEspacoAEsquerda(
consumoFinalFaixa, 3)
+ " M3";
descricaoServicosTarifas4 = descricaoServicosTarifas4
+ " - R$";
descricaoServicosTarifas4 = descricaoServicosTarifas4
+ Util
.completaStringComEspacoAEsquerda(
valorTarifaFaixa, 6)
+ " POR M3";
// consumo de Agua na faixa
// consumoFaixa4 = Util
// .completaStringComEspacoAEsquerda(""
// + contaCategoriaConsumoFaixa
// .getConsumoAgua(), 6)
consumoFaixa4 = Util
.completaStringComEspacoAEsquerda(
""
+ contaCategoriaConsumoFaixa
.getConsumoAgua()
* contaCategoriaHistorico
.getQuantidadeEconomia(),
6)
+ " M3";
// valor da agua na faixa
BigDecimal valorAguaFaixa = contaCategoriaConsumoFaixa
.getValorAgua().multiply(qtdEconomia)
.setScale(Parcelamento.CASAS_DECIMAIS);
valor4 = ""
+ Util
.formatarMoedaReal(valorAguaFaixa);
// String valorAguaFaixa = Util
// .formatarMoedaReal(contaCategoriaConsumoFaixa
// .getValorAgua());
//
// valor4 = valorAguaFaixa;
contaLinhasDescricaoServicosTarifasTotalHelper = new ContaLinhasDescricaoServicosTarifasTotalHelper();
contaLinhasDescricaoServicosTarifasTotalHelper
.setDescricaoServicosTarifas(descricaoServicosTarifas4);
contaLinhasDescricaoServicosTarifasTotalHelper
.setConsumoFaixa(consumoFaixa4.trim());
contaLinhasDescricaoServicosTarifasTotalHelper
.setValor(valor4);
colecaoContaLinhasDescricaoServicosTarifasTotalHelper
.add(contaLinhasDescricaoServicosTarifasTotalHelper);
}
}
} else {
// 2.3.2.
descricaoServicosTarifas3 = " CONSUMO DE �GUA";
consumoFaixa3 = Util.completaStringComEspacoAEsquerda(
"" + contaCategoriaHistorico.getConsumoAgua(),
6)
+ " M3";
valor3 = Util.formatarMoedaReal(contaCategoriaHistorico
.getValorAgua());
contaLinhasDescricaoServicosTarifasTotalHelper = new ContaLinhasDescricaoServicosTarifasTotalHelper();
contaLinhasDescricaoServicosTarifasTotalHelper
.setDescricaoServicosTarifas(descricaoServicosTarifas3);
contaLinhasDescricaoServicosTarifasTotalHelper
.setConsumoFaixa(consumoFaixa3.trim());
contaLinhasDescricaoServicosTarifasTotalHelper
.setValor(valor3);
colecaoContaLinhasDescricaoServicosTarifasTotalHelper
.add(contaLinhasDescricaoServicosTarifasTotalHelper);
}
}
}
}
return colecaoContaLinhasDescricaoServicosTarifasTotalHelper;
}
/**
* Retificar Conjunto de Conta
*
* @author Raphael Rossiter
* @date 27/08/2007
*
* @throws ControladorException
*/
public void retificarConjuntoContaCliente(Integer codigoCliente,
Short relacaoTipo, Integer anoMes,ContaMotivoRetificacao contaMotivoRetificacao,
Collection debitosTipoRetirar, Usuario usuarioLogado,Date dataVencimentoContaInicio,
Date dataVencimentoContaFim,Integer anoMesFim)
throws ControladorException {
Collection colecaoContasManutencao = new ArrayList();
try {
colecaoContasManutencao =
repositorioFaturamento.obterContasCliente(codigoCliente,
relacaoTipo,
anoMes,
dataVencimentoContaInicio,
dataVencimentoContaFim,
anoMesFim);
if (colecaoContasManutencao != null && !colecaoContasManutencao.isEmpty()) {
Iterator colecaoContasManutencaoIterator = colecaoContasManutencao.iterator();
while (colecaoContasManutencaoIterator.hasNext()) {
// Obt�m os dados do cr�dito realizado
Object[] contaArray = (Object[]) colecaoContasManutencaoIterator.next();
Conta conta = (Conta) contaArray[0];
conta.setUltimaAlteracao(new Date());
Imovel imovel = (Imovel) contaArray[1];
Collection colecaoSubCategoria =
getControladorImovel().obterQuantidadeEconomiasContaCategoriaPorSubcategoria(conta);
Collection colecaoCreditoRealizado = obterCreditosRealizadosConta(conta);
Collection colecaoDebitoCobrado = obterDebitosCobradosConta(conta);
Collection<CalcularValoresAguaEsgotoHelper> valoresConta =
calcularValoresConta(
Util.formatarAnoMesParaMesAno(conta.getReferencia()),
imovel.getId().toString(),
conta.getLigacaoAguaSituacao().getId(),
conta.getLigacaoEsgotoSituacao().getId(),
colecaoSubCategoria,
conta.getConsumoAgua().toString(),
conta.getConsumoEsgoto().toString(),
conta.getPercentualEsgoto().toString(),
conta.getConsumoTarifa().getId(),
usuarioLogado);
boolean achouDebitoRetirar = false;
if (colecaoDebitoCobrado != null && !colecaoDebitoCobrado.isEmpty()) {
Iterator colecaoDebitoCobradoIterator = colecaoDebitoCobrado.iterator();
while (colecaoDebitoCobradoIterator.hasNext()) {
DebitoCobrado debitoCobrado =
(DebitoCobrado) colecaoDebitoCobradoIterator.next();
DebitoTipo debitoTipo = debitoCobrado.getDebitoTipo();
if (debitosTipoRetirar.contains(debitoTipo)) {
achouDebitoRetirar = true;
colecaoDebitoCobradoIterator.remove();
}
}
if (achouDebitoRetirar) {
getControladorRetificarConta().retificarConta(
new Integer(conta.getReferencia()),
conta,
imovel,
colecaoDebitoCobrado,
colecaoCreditoRealizado,
conta.getLigacaoAguaSituacao(),
conta.getLigacaoEsgotoSituacao(),
colecaoSubCategoria,
conta.getConsumoAgua().toString(),
conta.getConsumoEsgoto().toString(),
conta.getPercentualEsgoto().toString(),
conta.getDataVencimentoConta(),
valoresConta,
contaMotivoRetificacao,
null,
usuarioLogado,
conta.getConsumoTarifa().getId()+"", false,
null,null,false , null,null,null,null,null, null);
}
}
}
}
} catch (ErroRepositorioException ex) {
sessionContext.setRollbackOnly();
new ControladorException("erro.sistema", ex);
}
}
/**
* Retificar Conjunto de Conta
*
* @author Raphael Rossiter
* @date 27/08/2007
*
* @throws ControladorException
*/
public void retificarConjuntoConta(Collection colecaoImovel,
Integer anoMes, ContaMotivoRetificacao contaMotivoRetificacao,
Collection debitosTipoRetirar, Usuario usuarioLogado,
Date dataVencimentoContaInicio, Date dataVencimentoContaFim,
Integer anoMesFim, String indicadorContaPaga) throws ControladorException {
Collection colecaoContasManutencao = new ArrayList();
List colecaoAuxiliar = new ArrayList();
colecaoAuxiliar.addAll(colecaoImovel);
int i = 0;
int cont = 500;
Collection colecao = new ArrayList();
while (i <= colecaoImovel.size()) {
if (colecaoImovel.size() - i >= cont) {
colecao = colecaoAuxiliar.subList(i, i + cont);
} else {
colecao = colecaoAuxiliar.subList(i, colecaoImovel.size());
}
i = i + cont;
try {
colecaoContasManutencao = repositorioFaturamento
.obterContasImoveis(anoMes, colecao,
dataVencimentoContaInicio,
dataVencimentoContaFim, anoMesFim, indicadorContaPaga);
if (colecaoContasManutencao != null
&& !colecaoContasManutencao.isEmpty()) {
Iterator colecaoContasManutencaoIterator = colecaoContasManutencao
.iterator();
while (colecaoContasManutencaoIterator.hasNext()) {
// Obt�m os dados do cr�dito realizado
Object[] contaArray = (Object[]) colecaoContasManutencaoIterator
.next();
Conta conta = (Conta) contaArray[0];
conta.setUltimaAlteracao(new Date());
Imovel imovel = (Imovel) contaArray[1];
Collection colecaoSubCategoria = getControladorImovel()
.obterQuantidadeEconomiasContaCategoriaPorSubcategoria(
conta);
Collection colecaoCreditoRealizado = obterCreditosRealizadosConta(conta);
Collection colecaoDebitoCobrado = obterDebitosCobradosConta(conta);
Collection<CalcularValoresAguaEsgotoHelper> valoresConta = calcularValoresConta(
Util.formatarAnoMesParaMesAno(conta
.getReferencia()), imovel.getId()
.toString(), conta
.getLigacaoAguaSituacao().getId(),
conta.getLigacaoEsgotoSituacao().getId(),
colecaoSubCategoria, conta.getConsumoAgua()
.toString(), conta.getConsumoEsgoto()
.toString(), conta
.getPercentualEsgoto().toString(),
conta.getConsumoTarifa().getId(), usuarioLogado);
boolean achouDebitoRetirar = false;
if (colecaoDebitoCobrado != null
&& !colecaoDebitoCobrado.isEmpty()) {
Iterator colecaoDebitoCobradoIterator = colecaoDebitoCobrado
.iterator();
while (colecaoDebitoCobradoIterator.hasNext()) {
DebitoCobrado debitoCobrado = (DebitoCobrado) colecaoDebitoCobradoIterator
.next();
DebitoTipo debitoTipo = debitoCobrado
.getDebitoTipo();
if (debitosTipoRetirar.contains(debitoTipo)) {
achouDebitoRetirar = true;
colecaoDebitoCobradoIterator.remove();
}
}
if (achouDebitoRetirar) {
getControladorRetificarConta().retificarConta(new Integer(conta
.getReferencia()), conta, imovel,
colecaoDebitoCobrado,
colecaoCreditoRealizado, conta
.getLigacaoAguaSituacao(),
conta.getLigacaoEsgotoSituacao(),
colecaoSubCategoria, conta
.getConsumoAgua().toString(),
conta.getConsumoEsgoto().toString(),
conta.getPercentualEsgoto().toString(),
conta.getDataVencimentoConta(),
valoresConta, contaMotivoRetificacao,
null, usuarioLogado,
conta.getConsumoTarifa().getId()+"",
false,null,null,false, null,null,null,null,null, null);
}
}
}
}
} catch (ErroRepositorioException ex) {
sessionContext.setRollbackOnly();
new ControladorException("erro.sistema", ex);
}
}
}
/**
* Retificar Conjunto de Conta
*
* @author Raphael Rossiter
* @date 21/08/2007
*
* @throws ControladorException
*/
public void retificarConjuntoConta(Integer idGrupoFaturamento,
Integer anoMes, ContaMotivoRetificacao contaMotivoRetificacao,
Collection debitosTipoRetirar, Usuario usuarioLogado,
Date dataVencimentoContaInicio, Date dataVencimentoContaFim,
Integer anoMesFim) throws ControladorException {
Collection colecaoContasManutencao = new ArrayList();
try {
colecaoContasManutencao = repositorioFaturamento
.obterContasGrupoFaturamento(anoMes, idGrupoFaturamento,
dataVencimentoContaInicio, dataVencimentoContaFim,
anoMesFim);
if (colecaoContasManutencao != null
&& !colecaoContasManutencao.isEmpty()) {
Iterator colecaoContasManutencaoIterator = colecaoContasManutencao
.iterator();
while (colecaoContasManutencaoIterator.hasNext()) {
// Obt�m os dados do cr�dito realizado
Object[] contaArray = (Object[]) colecaoContasManutencaoIterator
.next();
Conta conta = (Conta) contaArray[0];
conta.setUltimaAlteracao(new Date());
Imovel imovel = (Imovel) contaArray[1];
Collection colecaoSubCategoria = getControladorImovel()
.obterQuantidadeEconomiasContaCategoriaPorSubcategoria(
conta);
Collection colecaoCreditoRealizado = obterCreditosRealizadosConta(conta);
Collection colecaoDebitoCobrado = obterDebitosCobradosConta(conta);
Collection<CalcularValoresAguaEsgotoHelper> valoresConta = calcularValoresConta(
Util
.formatarAnoMesParaMesAno(conta
.getReferencia()), imovel.getId()
.toString(), conta.getLigacaoAguaSituacao()
.getId(), conta.getLigacaoEsgotoSituacao()
.getId(), colecaoSubCategoria, conta
.getConsumoAgua().toString(), conta
.getConsumoEsgoto().toString(), conta
.getPercentualEsgoto().toString(), conta
.getConsumoTarifa().getId(), usuarioLogado);
boolean achouDebitoRetirar = false;
if (colecaoDebitoCobrado != null
&& !colecaoDebitoCobrado.isEmpty()) {
Iterator colecaoDebitoCobradoIterator = colecaoDebitoCobrado
.iterator();
while (colecaoDebitoCobradoIterator.hasNext()) {
DebitoCobrado debitoCobrado = (DebitoCobrado) colecaoDebitoCobradoIterator
.next();
DebitoTipo debitoTipo = debitoCobrado
.getDebitoTipo();
if (debitosTipoRetirar.contains(debitoTipo)) {
achouDebitoRetirar = true;
colecaoDebitoCobradoIterator.remove();
}
}
if (achouDebitoRetirar) {
getControladorRetificarConta().retificarConta(new Integer(conta.getReferencia()),
conta, imovel, colecaoDebitoCobrado,
colecaoCreditoRealizado, conta
.getLigacaoAguaSituacao(), conta
.getLigacaoEsgotoSituacao(),
colecaoSubCategoria, conta.getConsumoAgua()
.toString(), conta
.getConsumoEsgoto().toString(),
conta.getPercentualEsgoto().toString(),
conta.getDataVencimentoConta(),
valoresConta, contaMotivoRetificacao, null,
usuarioLogado, conta.getConsumoTarifa().getId()+"",
false,null,null,false, null,null,null,null,null, null);
}
}
}
}
} catch (ErroRepositorioException ex) {
sessionContext.setRollbackOnly();
new ControladorException("erro.sistema", ex);
}
}
/**
* [UC0113] - Faturar Grupo de Faturamento
*
* Determina o tipo de conta que ser� associado na impress�o da conta, para
* caern n�o tem o tipo de conta retida por BC ou retida por EC.
*
* [SB0006 - ]
*
* @author Raphael Rossiter,S�vio Luiz
* @date 09/12/2005,14/11/2007
*
* @param imovel
* @throws ControladorException
*/
protected ContaTipo obterContaTipoParaContaImpressao(Conta conta,
Integer idClienteResponsavel, Imovel imovel) {
ContaTipo contaTipo = new ContaTipo();
contaTipo.setId(ContaTipo.CONTA_NORMAL);
// Comentado por Raphael Rossiter em 01/03/2007 (Analista Respons�vel:
// Aryed)
/*
* else if (idClienteResponsavel != null) {
*
* contaTipo.setId(ContaTipo.CONTA_CLIENTE_RESPONSAVEL); }
*/
// Colocado por Raphael Rossiter em 01/03/2007 (Analista Respons�vel:
// Aryed)
if (idClienteResponsavel != null
&& imovel.getIndicadorDebitoConta().shortValue() == ConstantesSistema.NAO
.shortValue()) {
contaTipo.setId(ContaTipo.CONTA_CLIENTE_RESPONSAVEL);
}
else if (idClienteResponsavel != null
&& imovel.getIndicadorDebitoConta().shortValue() == ConstantesSistema.SIM
.shortValue()) {
contaTipo.setId(ContaTipo.CONTA_DEBITO_AUTO_COM_CLIENTE_RESP);
}
// Comentado por Raphael Rossiter em 01/03/2007 (Analista Respons�vel:
// Aryed)
/*
* else if (imovel.getIndicadorDebitoConta() != null &&
* imovel.getIndicadorDebitoConta().equals( ConstantesSistema.SIM)) {
*
* contaTipo.setId(ContaTipo.CONTA_DEBITO_AUTOMATICO); }
*/
// Colocado por Raphael Rossiter em 01/03/2007 (Analista Respons�vel:
// Aryed)
else if (idClienteResponsavel == null
&& imovel.getIndicadorDebitoConta().shortValue() == ConstantesSistema.SIM
.shortValue()) {
contaTipo.setId(ContaTipo.CONTA_DEBITO_AUTOMATICO);
}
return contaTipo;
}
// /**
// * [UC1008] Gerar TXT declara��o de quita��o anual de d�bitos
// *
// * Este caso de uso permite a gera��o do TXT da declara��o de quita��o de d�bitos.
// *
// * @author Hugo Amorim
// * @date 23/03/2010
// */
// public void gerarArquivoTextoDeclaracaoQuitacaoAnualDebitos(
// Integer idFuncionalidadeIniciada, Integer idGrupoFaturamento, Empresa empresa)
// throws ControladorException{
//
//
// int idUnidadeIniciada = 0;
//
// // -------------------------
// // Registrar o in�cio do processamento da Unidade de
// // Processamento do Batch
// // -------------------------
//
// idUnidadeIniciada = getControladorBatch()
// .iniciarUnidadeProcessamentoBatch(idFuncionalidadeIniciada,
// UnidadeProcessamento.EMPRESA, empresa.getId());
//
// try {
//
//
// Collection<Integer> anosParaGeracaoArquivoTexto =
// this.pesquisarAnosParaGerarArquivoTextoDeclaracaoQuitacaoAnualDebitos();
//
// for (Integer ano : anosParaGeracaoArquivoTexto) {
//
//
// // Vari�veis para controle das partes dos arquivos de 3000 em 3000 registros
// // ========================================================================
// int parte = 1;
// boolean flagTerminouParte = false;
// int contadorDosTresMil = 0;
// // ========================================================================
//
//
// // Vari�veis para a pagina��o da pesquisa
// // ========================================================================
// boolean flagTerminou = false;
// final int quantidadeMaxima = 500;
// // ========================================================================
//
// Integer sequencial = 0;
//
// StringBuilder linha = null;
//
// while(!flagTerminou){
//
// // Cria��o do Arquivo
// // ========================================================================
// Date dataAtual = new Date();
// String nomeZip = null;
// nomeZip = "DECLARACAO_DE_QUITACAO_ANUAL_DEBITOS_G"+idGrupoFaturamento+"_"+ano+"_Emp"
// +empresa.getId()+"_PARTE_"+parte+"_"
// + Util.formatarData(dataAtual) +"_"+ Util.formatarHoraSemDataSemDoisPontos(dataAtual);
// nomeZip = nomeZip.replace("/", "_");
// File compactado = new File(nomeZip + ".zip");
// File leitura = new File(nomeZip + ".txt");
// ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(compactado));
// BufferedWriter out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(leitura.getAbsolutePath())));
// // ========================================================================
//
//
// flagTerminouParte = false;
// parte++;
//
//
// while(!flagTerminouParte){
//
// //[SB0001 Verifica��o para gera��o do TXT];
// Collection colecaoExtratos = this.repositorioFaturamento
// .pesquisarExtratoQuitacaoParaGeracaoArquivoTextoCAERN(
// ano,empresa.getId(),quantidadeMaxima,idGrupoFaturamento);
//
// if(colecaoExtratos!=null && !colecaoExtratos.isEmpty()){
//
//
// Iterator<Object[]> itera = colecaoExtratos.iterator();
//
// while(itera.hasNext()){
//
// Object[] dados = itera.next();
//
// DeclaracaoQuitacaoAnualDebitosHelper helper = new DeclaracaoQuitacaoAnualDebitosHelper();
//
// ExtratoQuitacao extratoQuitacao = new ExtratoQuitacao();
// extratoQuitacao.setId(new Integer(dados[0].toString()));
// extratoQuitacao.setImovel(new Imovel((Integer) dados[1]));
// extratoQuitacao.setAnoReferencia(new Integer(dados[2].toString()));
// extratoQuitacao.setIndicadorImpressao(new Integer(dados[5].toString()));
// extratoQuitacao.setUltimaAlteracao((Date) dados[6]);
// extratoQuitacao.setValorTotalDasContas(new BigDecimal(dados[3].toString()));
// extratoQuitacao.setAnoMesMensagemConta(new Integer(dados[7].toString()));
//
//
// Integer idImovel = new Integer(dados[1].toString());
// Integer anoReferencia = new Integer(dados[2].toString());
// String matriculaFormatada = Util.retornaMatriculaImovelFormatada(idImovel);
// String inscricaoImovel = this.getControladorImovel().pesquisarInscricaoImovel(idImovel);
// String nomeCliente = this.getControladorImovel().consultarClienteUsuarioImovel(idImovel);
// String endereco = this.getControladorEndereco().pesquisarEndereco(idImovel);
// FaturamentoGrupo faturamentoGrupo = this.getControladorImovel().pesquisarGrupoImovel(idImovel);
// String[] enderecoDividido = this.getControladorEndereco().pesquisarEnderecoFormatadoDividido(idImovel);
// Object[] rotaESequencialRotaDoImovel =
// this.getControladorMicromedicao().obterRotaESequencialRotaDoImovelSeparados(idImovel);
//
// Short codigoRota = (Short) rotaESequencialRotaDoImovel[0];
// Integer sequencialRota = (Integer) rotaESequencialRotaDoImovel[1];
//
// helper.setAnoMesArrecadacao(anoReferencia);
// helper.setMatriculaFormatada(matriculaFormatada);
// helper.setInscricaoImovel(inscricaoImovel);
// helper.setNomeClienteUsuario(nomeCliente);
// helper.setEndereco(endereco);
// helper.setFirma(dados[4].toString());
// helper.setIdGrupo(faturamentoGrupo.getId().toString());
// helper.setEnderecoDestinatario(enderecoDividido[0]);
// helper.setBairro(enderecoDividido[3]);
// helper.setMunicipio(enderecoDividido[1]);
// helper.setUf(enderecoDividido[2]);
// helper.setCep(enderecoDividido[4]);
// helper.setExtratoQuitacaoParaAtualizacao(extratoQuitacao);
// helper.setCodigoRota(codigoRota.toString());
// helper.setSeguencialRota(sequencialRota.toString());
//
// Collection<ExtratoQuitacaoItem> colecaoExtratosItens = this.repositorioFaturamento
// .pesquisarExtratoQuitacaoItensParaGeracaoArquivoTexto(extratoQuitacao.getId());
//
// helper.setFaturas(colecaoExtratosItens);
//
// sequencial++;
//
// linha = this.gerarlinhaArquivoExtratoQuitacao(helper,sequencial);
//
// out.write(linha.toString());
// out.flush();
//
// // O sistema atualiza o campo EXTRATO_QUITACAO.EXQT_ICIMPRESSAO,
// // para os registros em que foram gerados o TXT, para o valor 1;
// ExtratoQuitacao extratoQuitacaoParaAtualizacao =
// helper.getExtratoQuitacaoParaAtualizacao();
//
// extratoQuitacaoParaAtualizacao.setIndicadorImpressao(ConstantesSistema.SIM.intValue());
//
// getControladorBatch().atualizarObjetoParaBatch(extratoQuitacaoParaAtualizacao);
//
// linha = null;
//
//
// }
//
// }
//
// contadorDosTresMil++;
//
// /**
// * Caso a cole��o de dados retornados for menor que a
// * quantidade de registros seta a flag indicando que a
// * pagina��o terminou.
// */
// if (colecaoExtratos == null ||
// colecaoExtratos.size() < quantidadeMaxima) {
//
// flagTerminou = true;
// flagTerminouParte = true;
// }
//
// if (colecaoExtratos != null) {
// colecaoExtratos.clear();
// colecaoExtratos = null;
// }
//
// if(contadorDosTresMil==4 || flagTerminou){
//
// try{
// out.close();
// ZipUtil.adicionarArquivo(zos, leitura);
//
// // close the stream
// zos.close();
// leitura.delete();
// } catch (IOException e) {
// getControladorBatch().encerrarUnidadeProcessamentoBatch(e,idUnidadeIniciada, true);
// throw new EJBException(e);
// }
// contadorDosTresMil = 0;
// flagTerminouParte = true;
// }
//
// }//Terminou Parte
//
// }//Terminou
// }
//
// getControladorBatch().encerrarUnidadeProcessamentoBatch(null,
// idUnidadeIniciada, false);
//
// } catch (Exception e) {
//
// e.printStackTrace();
//
// // Este catch serve para interceptar
// // qualquer exce��o que o processo batch
// // venha a lan�ar e garantir que a unidade
// // de processamento do batch ser� atualizada
// // com o erro ocorrido
// getControladorBatch().encerrarUnidadeProcessamentoBatch(e,
// idUnidadeIniciada, true);
// }
//
// }
// private StringBuilder gerarlinhaArquivoExtratoQuitacao(
// DeclaracaoQuitacaoAnualDebitosHelper helper,Integer sequencial) {
//
// StringBuilder linha = new StringBuilder();
//
// linha.append(
// Util.completaStringComEspacoADireitaCondicaoTamanhoMaximoTruncando(
// helper.getAnoMesArrecadacao().toString(),4));
// linha.append(
// Util.completaStringComEspacoADireitaCondicaoTamanhoMaximoTruncando(
// helper.getNomeClienteUsuario(),50));
// linha.append(
// Util.completaStringComEspacoADireitaCondicaoTamanhoMaximoTruncando(
// helper.getEndereco(),120));
// linha.append(
// Util.completaStringComEspacoADireitaCondicaoTamanhoMaximoTruncando(
// helper.getMatriculaFormatada(),9));
// linha.append(
// Util.completaStringComEspacoADireitaCondicaoTamanhoMaximoTruncando(
// sequencial.toString(),50));
// linha.append(
// Util.completaStringComEspacoADireitaCondicaoTamanhoMaximoTruncando(
// helper.getInscricaoImovel(),20));
// linha.append(
// Util.completaStringComEspacoADireitaCondicaoTamanhoMaximoTruncando(
// helper.getFirma(),10));
// linha.append(
// Util.completaStringComEspacoADireitaCondicaoTamanhoMaximoTruncando(
// helper.getIdGrupo().toString(),2));
// linha.append(
// Util.completaStringComEspacoADireitaCondicaoTamanhoMaximoTruncando(
// helper.getNomeClienteUsuario(),50));
// linha.append(
// Util.completaStringComEspacoADireitaCondicaoTamanhoMaximoTruncando(
// helper.getEnderecoDestinatario(),70));
// linha.append(
// Util.completaStringComEspacoADireitaCondicaoTamanhoMaximoTruncando(
// helper.getBairro(),30));
// linha.append(
// Util.completaStringComEspacoADireitaCondicaoTamanhoMaximoTruncando(
// helper.getMunicipio(),30));
// linha.append(
// Util.completaStringComEspacoADireitaCondicaoTamanhoMaximoTruncando(
// helper.getUf(),2));
// linha.append(
// Util.completaStringComEspacoADireitaCondicaoTamanhoMaximoTruncando(
// Util.formatarCEP(helper.getCep()),10));
//
// for (ExtratoQuitacaoItem item : helper.getFaturas()) {
//
// linha.append(
// Util.completaStringComEspacoADireitaCondicaoTamanhoMaximoTruncando(
// Util.formatarAnoMesParaMesAno(item.getAnoMesReferenciaConta()),7));
// linha.append(
// Util.completaStringComEspacoADireitaCondicaoTamanhoMaximoTruncando(
// item.getDescricaoSituacao(),30));
// linha.append(
// Util.completaStringComEspacoADireitaCondicaoTamanhoMaximoTruncando(
// Util.formatarData(item.getDataSituacao()),10));
// linha.append(
// Util.completaStringComEspacoADireitaCondicaoTamanhoMaximoTruncando(
// Util.formatarMoedaReal(item.getValorConta()),14));
//
// }
//
// linha.append(
// Util.completaStringComEspacoADireitaCondicaoTamanhoMaximoTruncando(
// Util.formatarMoedaReal(helper.getExtratoQuitacaoParaAtualizacao().getValorTotalDasContas()),14));
//
// linha.append(
// Util.completaStringComEspacoADireitaCondicaoTamanhoMaximoTruncando(
// helper.getAnoMesArrecadacao().toString(),4));
// linha.append(
// Util.completaStringComEspacoADireitaCondicaoTamanhoMaximoTruncando(
// helper.getCodigoRota().toString(),5));
// linha.append(
// Util.completaStringComEspacoADireitaCondicaoTamanhoMaximoTruncando(
// helper.getSeguencialRota().toString(),5));
//
// linha.append(System.getProperty("line.separator"));
//
// return linha;
//
// }
/**
* [UC0352] Emitir Contas e Cartas
*
* [SB0029] Gerar Arquivo TXT das fichas de Compens��o
*
* @author Vivianne Sousa
* @date 12/11/2007
*
* @param emitirContaHelper
* @throws ControladorException
*/
public void emitirFichaCompensacao(Collection colecaoEmitirContaHelper, int tipoConta ,
FaturamentoGrupo faturamentoGrupo, Integer idEmpresa,
Integer anoMesReferenciaFaturamento) throws ControladorException {
SistemaParametro sistemaParametro = null;
int quantidadeContas = 0;
try {
sistemaParametro = getControladorUtil().pesquisarParametrosDoSistema();
// recebe todos as contas da lista
StringBuilder contasTxtLista = null;
Map<Integer, Integer> mapAtualizaSequencial = null;
try {
Integer sequencialImpressao = 0;
contasTxtLista = new StringBuilder();
mapAtualizaSequencial = new HashMap();
if (colecaoEmitirContaHelper != null && !colecaoEmitirContaHelper.isEmpty()) {
EmitirContaHelper emitirContaHelper = null;
int countOrdem = 0;
Iterator iteratorConta = colecaoEmitirContaHelper.iterator();
while (iteratorConta.hasNext()) {
emitirContaHelper = null;
emitirContaHelper = (EmitirContaHelper) iteratorConta.next();
sequencialImpressao += 1;
quantidadeContas++;
// S� para exibir no console a quantidade de contas
if (emitirContaHelper != null) {
StringBuilder contaTxt = new StringBuilder();
String descricaoLocalidade = emitirContaHelper.getDescricaoLocalidade();
contaTxt.append(Util.completaString(descricaoLocalidade,30));
contaTxt.append(Util.adicionarZerosEsquedaNumero(3,
emitirContaHelper.getCodigoSetorComercialConta().toString()));
Imovel imovelEmitido = getControladorImovel()
.pesquisarImovel(emitirContaHelper.getIdImovel());
contaTxt.append(Util.adicionarZerosEsquedaNumero(
2,imovelEmitido.getQuadra().getRota().getCodigo().toString()));
contaTxt.append(".");
contaTxt.append(Util.adicionarZerosEsquedaNumero(4,
imovelEmitido.getNumeroSequencialRota().toString()));
contaTxt.append(Util.adicionarZerosEsquedaNumero(8,
emitirContaHelper.getIdImovel().toString()));
// caso a cole��o de contas seja de entrega
// para o cliente respons�vel
String nomeClienteUsuario = null;
if (tipoConta == 3 || tipoConta == 4) {
if (emitirContaHelper.getNomeImovel() != null
&& !emitirContaHelper.getNomeImovel().equals("")) {
nomeClienteUsuario = emitirContaHelper.getNomeImovel();
} else {
try {
nomeClienteUsuario = repositorioFaturamento
.pesquisarNomeClienteUsuarioConta(
emitirContaHelper.getIdConta());
} catch (ErroRepositorioException e) {
throw new ControladorException("erro.sistema",e);
}
}
contaTxt.append(Util.completaString(nomeClienteUsuario,30));
} else {
contaTxt.append(Util.completaString(
emitirContaHelper.getNomeCliente(),30));
}
String[] enderecoImovel = getControladorEndereco()
.pesquisarEnderecoFormatadoDividido(
emitirContaHelper.getIdImovel());
// endere�o
contaTxt.append(Util.completaString(enderecoImovel[0],60));
// bairro
contaTxt.append(Util.completaString(enderecoImovel[3],30));
// numero indice turbidez da qualidade agua
// numero cloro residual da qualidade agua
FiltroLocalidade filtroLocalidade = new FiltroLocalidade();
filtroLocalidade.adicionarParametro(new ParametroSimples(
FiltroLocalidade.ID,emitirContaHelper.getIdLocalidade()));
filtroLocalidade.adicionarCaminhoParaCarregamentoEntidade("logradouroCep");
filtroLocalidade.adicionarCaminhoParaCarregamentoEntidade("logradouroCep.cep");
filtroLocalidade.adicionarCaminhoParaCarregamentoEntidade("logradouroCep.logradouro");
filtroLocalidade.adicionarCaminhoParaCarregamentoEntidade("logradouroCep.logradouro.logradouroTipo");
filtroLocalidade.adicionarCaminhoParaCarregamentoEntidade("logradouroCep.logradouro.logradouroTitulo");
filtroLocalidade.adicionarCaminhoParaCarregamentoEntidade("enderecoReferencia");
filtroLocalidade.adicionarCaminhoParaCarregamentoEntidade("logradouroBairro");
filtroLocalidade.adicionarCaminhoParaCarregamentoEntidade("logradouroBairro.bairro");
filtroLocalidade.adicionarCaminhoParaCarregamentoEntidade("logradouroBairro.bairro.municipio");
filtroLocalidade.adicionarCaminhoParaCarregamentoEntidade("logradouroBairro.bairro.municipio.unidadeFederacao");
filtroLocalidade.adicionarCaminhoParaCarregamentoEntidade("enderecoReferencia");
Collection cLocalidade = (Collection) getControladorUtil().pesquisar(
filtroLocalidade,Localidade.class.getName());
Localidade localidade = (Localidade) cLocalidade.iterator().next();
FiltroQualidadeAgua filtroQualidadeAgua = new FiltroQualidadeAgua();
Collection colecaoQualidadeAgua = null;
filtroQualidadeAgua.adicionarParametro(new ParametroSimples(
FiltroQualidadeAgua.LOCALIDADE_ID,localidade.getId()));
filtroQualidadeAgua.adicionarParametro(new ParametroSimples(
FiltroQualidadeAgua.SETOR_COMERCIAL_ID,
emitirContaHelper.getIdSetorComercial().toString()));
filtroQualidadeAgua.adicionarParametro(new ParametroSimples(
FiltroQualidadeAgua.ANO_MES_REFERENCIA,emitirContaHelper.getAmReferencia()));
filtroQualidadeAgua.adicionarCaminhoParaCarregamentoEntidade("fonteCaptacao");
colecaoQualidadeAgua = getControladorUtil().pesquisar(
filtroQualidadeAgua,QualidadeAgua.class.getName());
if (colecaoQualidadeAgua == null || colecaoQualidadeAgua.isEmpty()) {
filtroQualidadeAgua.limparListaParametros();
colecaoQualidadeAgua = null;
filtroQualidadeAgua.adicionarParametro(new ParametroSimples(
FiltroQualidadeAgua.LOCALIDADE_ID,localidade.getId()));
filtroQualidadeAgua.adicionarParametro(new ParametroSimples(
FiltroQualidadeAgua.ANO_MES_REFERENCIA,emitirContaHelper.getAmReferencia()));
filtroQualidadeAgua.adicionarCaminhoParaCarregamentoEntidade("fonteCaptacao");
colecaoQualidadeAgua = getControladorUtil().pesquisar(
filtroQualidadeAgua, QualidadeAgua.class.getName());
}
if (colecaoQualidadeAgua != null && !colecaoQualidadeAgua.isEmpty()) {
QualidadeAgua qualidadeAgua = (QualidadeAgua) colecaoQualidadeAgua.iterator().next();
// fonte
if (qualidadeAgua.getFonteCaptacao() != null) {
contaTxt.append(Util.completaString(qualidadeAgua.getFonteCaptacao().getDescricao(),30));
} else {
contaTxt.append(Util.completaString(" ",30));
}
// cloro
if (qualidadeAgua.getNumeroCloroResidual() != null
&& !qualidadeAgua.getNumeroCloroResidual().equals(0)) {
contaTxt.append(Util.completaString(
qualidadeAgua.getNumeroCloroResidual().toString(),3));
} else {
contaTxt.append(Util.completaString(" ",3));
}
// coliformes
if (qualidadeAgua.getNumeroIndiceColiformesTotais() != null
&& !qualidadeAgua.getNumeroIndiceColiformesTotais().equals(0)) {
contaTxt.append(Util.completaString(
qualidadeAgua.getNumeroIndiceColiformesTotais().toString(),8));
} else {
contaTxt.append(Util.completaString(" ", 8));
}
// nitrato
if (qualidadeAgua.getNumeroNitrato() != null
&& !qualidadeAgua.getNumeroNitrato().equals(0)) {
contaTxt.append(Util.completaString(
qualidadeAgua.getNumeroNitrato().toString(),4));
} else {
contaTxt.append(Util.completaString(" ",4));
}
// //ph
if (qualidadeAgua.getNumeroIndicePh() != null
&& !qualidadeAgua.getNumeroIndicePh().equals(0)) {
contaTxt.append(Util.completaString(
qualidadeAgua.getNumeroIndicePh().toString(),4));
} else {
contaTxt.append(Util.completaString(" ",4));
}
// //turbidez
if (qualidadeAgua.getNumeroIndiceTurbidez() != null
&& !qualidadeAgua.getNumeroIndiceTurbidez().equals(0)) {
contaTxt.append(Util.completaString(
qualidadeAgua.getNumeroIndiceTurbidez().toString(),4));
} else {
contaTxt.append(Util.completaString(" ",4));
}
} else {
contaTxt.append(Util.completaString(" ", 53));
}
Collection colecaoSubCategoria = getControladorImovel()
.obterQuantidadeEconomiasSubCategoria(imovelEmitido.getId());
String economias = "";
for (Iterator iter = colecaoSubCategoria.iterator(); iter.hasNext();) {
Subcategoria subcategoria = (Subcategoria) iter.next();
//agora a subcategoria ja tem o id da categoria no codigo.
economias = economias + Util.adicionarZerosEsquedaNumero(
3, subcategoria.getCodigo()+ "") + "/"
+ Util.adicionarZerosEsquedaNumero(3,
subcategoria.getQuantidadeEconomias().toString()) + " ";
}
contaTxt.append(Util.adicionarZerosEsquedaNumero(
7,quantidadeContas + ""));
contaTxt.append(Util.completaString(localidade.getDescricao(),30));
contaTxt.append(Util.completaString(localidade
.getEnderecoFormatadoTituloAbreviado(),35));
contaTxt.append(Util.completaString(localidade.getFone(),20));
contaTxt.append(Util.completaString("0800-84-0195",15));
// cria um objeto conta para calcular o valor da conta
Conta conta = new Conta();
conta.setValorAgua(emitirContaHelper.getValorAgua());
conta.setValorEsgoto(emitirContaHelper.getValorEsgoto());
conta.setValorCreditos(emitirContaHelper.getValorCreditos());
conta.setDebitos(emitirContaHelper.getDebitos());
conta.setValorImposto(emitirContaHelper.getValorImpostos());
BigDecimal valorConta = conta.getValorTotalContaBigDecimal();
emitirContaHelper.setValorConta(valorConta);
// [SB0018 - Gerar Linhas das Demais Contas]
String anoMesString = "" + emitirContaHelper.getAmReferencia();
// formata ano mes para mes ano
String mesNumero = anoMesString.substring(4, 6);
String mesExtenso = Util.retornaDescricaoMes(
new Integer(mesNumero).intValue()).toUpperCase();
String dataExtensa = mesExtenso + "/"
+ anoMesString.substring(0, 4);
// String mesAnoFormatado = anoMesString.substring(4, 6)+ anoMesString .substring(0, 4);
// Integer digitoVerificadorConta = new Integer(""
// + emitirContaHelper.getDigitoVerificadorConta());
// String representacaoNumericaCodBarra = null;
//
// representacaoNumericaCodBarra = this.getControladorArrecadacao()
// .obterRepresentacaoNumericaCodigoBarra(
// 3,
// valorConta,
// emitirContaHelper.getIdLocalidade(),
// emitirContaHelper.getIdImovel(),
// mesAnoFormatado,
// digitoVerificadorConta,
// null, null,
// null, null,
// null, null,
// null);
//
// contaTxt.append(Util.completaString(
// representacaoNumericaCodBarra,48));
contaTxt.append(Util.completaString("",48));
// determinar Mensagem
String[] parmsPartesConta = obterMensagemConta3Partes(
emitirContaHelper,sistemaParametro);
String primeiraParte = parmsPartesConta[0];
String segundaParte = parmsPartesConta[1];
contaTxt.append(Util.completaString(primeiraParte,65));
contaTxt.append(Util.completaString(segundaParte,65));
contaTxt.append(System.getProperty("line.separator"));
contaTxt.append(Util.completaString(descricaoLocalidade,30));
contaTxt.append(Util.adicionarZerosEsquedaNumero(2,
imovelEmitido.getQuadra().getRota().getCodigo().toString()));
contaTxt.append(".");
contaTxt.append(Util.adicionarZerosEsquedaNumero(4,
imovelEmitido.getNumeroSequencialRota().toString()));
Imovel imovel = new Imovel();
Localidade localidade2 = new Localidade();
localidade2.setId(emitirContaHelper.getIdLocalidade());
imovel.setLocalidade(localidade2);
SetorComercial setorComercial = new SetorComercial();
setorComercial.setCodigo(emitirContaHelper.getCodigoSetorComercialConta());
imovel.setSetorComercial(setorComercial);
Quadra quadra = new Quadra();
quadra.setNumeroQuadra(emitirContaHelper.getIdQuadraConta());
imovel.setQuadra(quadra);
imovel.setLote(emitirContaHelper.getLoteConta());
imovel.setSubLote(emitirContaHelper.getSubLoteConta());
String inscricao = imovel.getInscricaoFormatada();
imovel = null;
setorComercial = null;
quadra = null;
contaTxt.append(Util.completaString(inscricao, 20));
contaTxt.append(Util.completaString(" ", 12));
String mesAnoReferencia = Util.formatarAnoMesParaMesAno(
emitirContaHelper.getAmReferencia());
contaTxt.append(Util.completaString(mesAnoReferencia,9));
// data de vencimento da conta
String dataVencimento = Util.formatarData(
emitirContaHelper.getDataVencimentoConta());
contaTxt.append(Util.completaString(dataVencimento,10));
String valorContaString = Util.formatarMoedaReal(valorConta);
// valor da conta
FiltroContaImpressao filtroContaImpressao = new FiltroContaImpressao();
filtroContaImpressao.adicionarParametro(new ParametroSimples(
FiltroContaImpressao.ID,
emitirContaHelper.getIdConta().toString()));
filtroContaImpressao.adicionarCaminhoParaCarregamentoEntidade("contaTipo");
Collection<ContaImpressao> cContaIm = getControladorUtil()
.pesquisar(filtroContaImpressao,ContaImpressao.class.getName());
ContaImpressao contaImpressao = cContaIm.iterator().next();
Integer contaTipo = contaImpressao.getContaTipo().getId();
contaTxt.append(Util.completaStringComEspacoAEsquerda(
valorContaString,15));
if (contaTipo.equals(ContaTipo.CONTA_DEBITO_AUTOMATICO)
|| contaTipo.equals(ContaTipo.CONTA_DEBITO_AUTO_COM_CLIENTE_RESP.intValue())) {
contaTxt.append(Util.completaString("N�O PODE SER PAGO EM BANCO",65));
contaTxt.append(Util.completaString("D�BITO AUTOM�TICO EM CONTA CORRENTE",65));
} else {
contaTxt.append(Util.completaString(" ", 65));
contaTxt.append(Util.completaString(" ", 65));
}
// M�s/Ano refer�ncia da conta digito verificador
contaTxt.append(Util.completaString(dataExtensa,14));
contaTxt.append(Util.adicionarZerosEsquedaNumero(8,
imovelEmitido.getId().toString()));
contaTxt.append(Util.completaString(
emitirContaHelper.getIdLocalidade().toString(),3));
contaTxt.append(Util.adicionarZerosEsquedaNumero(3,
emitirContaHelper.getCodigoSetorComercialConta().toString()));
contaTxt.append(Util.adicionarZerosEsquedaNumero(3,
emitirContaHelper.getIdQuadraConta().toString()));
contaTxt.append(Util.adicionarZerosEsquedaNumero(4,
emitirContaHelper.getLoteConta().toString()));
contaTxt.append(Util.completaString(Util.adicionarZerosEsquedaNumero(2,
emitirContaHelper.getSubLoteConta().toString()), 2));
// DIGITO ?????
contaTxt.append(Util.adicionarZerosEsquedaNumero(1, "0"));
Integer[] parmSituacao = determinarTipoLigacaoMedicao(emitirContaHelper);
Integer tipoLigacao = parmSituacao[0];
Integer tipoMedicao = parmSituacao[1];
Object[] parmsMedicaoHistorico = obterDadosMedicaoConta(
emitirContaHelper,tipoMedicao);
// Leitura Anterior
String leituraAnterior = "";
// Leitura Atual
String leituraAtual = "";
// Data Leitura Anterior
String dataLeituraAnterior = "";
// Leitura Anterior
String dataLeituraAtual = "";
if (parmsMedicaoHistorico != null) {
if (parmsMedicaoHistorico[0] != null) {
leituraAnterior = "" + (Integer) parmsMedicaoHistorico[0];
}
if (parmsMedicaoHistorico[1] != null) {
leituraAtual = "" + (Integer) parmsMedicaoHistorico[1];
}
if (parmsMedicaoHistorico[3] != null) {
dataLeituraAnterior = Util.formatarData((Date) parmsMedicaoHistorico[3]);
}
if (parmsMedicaoHistorico[2] != null) {
dataLeituraAtual = Util.formatarData((Date) parmsMedicaoHistorico[2]);
}
}
Object[] parmsConsumoHistorico = null;
String consumoMedio = "";
if (tipoLigacao != null) {
try {
parmsConsumoHistorico = repositorioMicromedicao
.obterDadosConsumoConta(emitirContaHelper.getIdImovel(),
emitirContaHelper.getAmReferencia(),tipoLigacao);
} catch (ErroRepositorioException e) {
sessionContext.setRollbackOnly();
throw new ControladorException("erro.sistema",e);
}
if (parmsConsumoHistorico != null) {
// Consumo m�dio
if (parmsConsumoHistorico[2] != null) {
consumoMedio = "" + (Integer) parmsConsumoHistorico[2];
}
}
}
// Data Leitura Atual
contaTxt.append(Util.completaString(dataLeituraAtual,5));
contaTxt.append(Util.completaString(leituraAnterior,6));
// Leitura Atual
contaTxt.append(Util.completaString(leituraAtual,6));
String diasConsumo = "";
if (!dataLeituraAnterior.equals("") && !dataLeituraAtual.equals("")) {
diasConsumo = "" + Util.obterQuantidadeDiasEntreDuasDatas(
(Date) parmsMedicaoHistorico[3],(Date) parmsMedicaoHistorico[2]);
}
String[] parmsConsumo = obterConsumoFaturadoConsumoMedioDiario(
emitirContaHelper,tipoMedicao,diasConsumo);
String consumoFaturamento = parmsConsumo[0];
// Consumo faturado
contaTxt.append(Util.completaString(consumoFaturamento,5));
contaTxt.append(Util.completaString(consumoMedio,5));
contaTxt.append(Util.completaString(this.obterConsumoAnterior(
emitirContaHelper.getIdImovel(),emitirContaHelper.getAmReferencia(),
6, tipoLigacao, tipoMedicao).toString(),12));
contaTxt.append(Util.completaString(this.obterConsumoAnterior(
emitirContaHelper.getIdImovel(),emitirContaHelper.getAmReferencia(),
5, tipoLigacao, tipoMedicao).toString(),12));
contaTxt.append(Util.completaString(this.obterConsumoAnterior(
emitirContaHelper.getIdImovel(),emitirContaHelper.getAmReferencia(),
4,tipoLigacao,tipoMedicao).toString(),12));
contaTxt.append(Util.completaString(this.obterConsumoAnterior(
emitirContaHelper.getIdImovel(),emitirContaHelper.getAmReferencia(),
3,tipoLigacao,tipoMedicao).toString(),12));
contaTxt.append(Util.completaString(this.obterConsumoAnterior(
emitirContaHelper.getIdImovel(),emitirContaHelper.getAmReferencia(),
2,tipoLigacao,tipoMedicao).toString(),12));
contaTxt.append(Util.completaString(this.obterConsumoAnterior(
emitirContaHelper.getIdImovel(),emitirContaHelper.getAmReferencia(),
1,tipoLigacao,tipoMedicao).toString(),12));
contaTxt.append(Util.completaString(economias, 24));
ObterDebitoImovelOuClienteHelper obterDebitoImovelOuClienteHelper = this
.obterDebitoImovelOuClienteHelper(emitirContaHelper,sistemaParametro);
if (obterDebitoImovelOuClienteHelper != null
&& ((obterDebitoImovelOuClienteHelper.getColecaoGuiasPagamentoValores() != null
&& !obterDebitoImovelOuClienteHelper.getColecaoGuiasPagamentoValores().isEmpty())
|| (obterDebitoImovelOuClienteHelper.getColecaoContasValores() != null
&& !obterDebitoImovelOuClienteHelper.getColecaoContasValores().isEmpty()))) {
Collection colecaoContasValores = obterDebitoImovelOuClienteHelper
.getColecaoContasValores();
if (colecaoContasValores != null && !colecaoContasValores.isEmpty()) {
if (colecaoContasValores.size() > 5) {
contaTxt.append(Util.completaString("H� MAIS DE CINCO CONTAS EM ATRASO",40));
} else {
String contasAtraso = "";
for (Iterator iter = colecaoContasValores.iterator(); iter.hasNext();) {
ContaValoresHelper contasValores = (ContaValoresHelper) iter.next();
contasAtraso = contasAtraso+ contasValores.
getConta().getFormatarAnoMesParaMesAno()+ " ";
}
contaTxt.append(Util.completaString(contasAtraso,40));
}
} else {
contaTxt.append(Util.completaString("",40));
}
} else {
contaTxt.append(Util.completaString("",40));
}
if (imovelEmitido.getLigacaoAgua() != null) {
if (imovelEmitido.getLigacaoAgua().getHidrometroInstalacaoHistorico() != null) {
if (imovelEmitido.getLigacaoAgua()
.getHidrometroInstalacaoHistorico().getHidrometro() != null) {
contaTxt.append(Util.completaString(imovelEmitido.getLigacaoAgua()
.getHidrometroInstalacaoHistorico().getHidrometro().getNumero(),10));
} else {
contaTxt.append(Util.completaString(" ",10));
}
} else {
contaTxt.append(Util.completaString(" ",10));
}
} else {
contaTxt.append(Util.completaString(" ", 10));
}
Collection colecaoContaCategoriaConsumoFaixa = null;
try {
colecaoContaCategoriaConsumoFaixa = repositorioFaturamento
.pesquisarContaCategoriaConsumoFaixa(emitirContaHelper.getIdConta());
} catch (ErroRepositorioException e) {
throw new ControladorException("erro.sistema", e);
}
Integer consumoExcesso = 0;
Integer consumoMinimo = 0;
BigDecimal valorExcesso = new BigDecimal("0.0");
BigDecimal valorMinimo = new BigDecimal("0.0");
if (colecaoContaCategoriaConsumoFaixa == null
|| colecaoContaCategoriaConsumoFaixa.isEmpty()) {
consumoMinimo = emitirContaHelper.getConsumoAgua();
valorMinimo = emitirContaHelper.getValorAgua();
} else {
if (!emitirContaHelper.getConsumoAgua().equals(0)) {
for (Iterator iter = colecaoContaCategoriaConsumoFaixa
.iterator(); iter.hasNext();) {
ContaCategoriaConsumoFaixa contaCategoriaConsumoFaixa = (ContaCategoriaConsumoFaixa) iter.next();
if (contaCategoriaConsumoFaixa.getConsumoAgua() != null) {
for (Iterator iteration = colecaoSubCategoria.iterator(); iteration.hasNext();) {
Subcategoria subCategoriaEmitir = (Subcategoria) iteration.next();
if (contaCategoriaConsumoFaixa.getSubcategoria().getId()
.equals(subCategoriaEmitir.getId())) {
consumoExcesso = consumoExcesso
+ contaCategoriaConsumoFaixa.getConsumoAgua()
* subCategoriaEmitir.getQuantidadeEconomias();
valorExcesso = valorExcesso.add(contaCategoriaConsumoFaixa.getValorAgua()
.multiply(new BigDecimal(subCategoriaEmitir.getQuantidadeEconomias())));
}
}
}
}
}
valorMinimo = emitirContaHelper.getValorAgua().subtract(valorExcesso);
consumoMinimo = emitirContaHelper.getConsumoAgua()- consumoExcesso;
}
int i = 0;
BigDecimal valorNullo = new BigDecimal("0.00");
Integer consumoNullo = new Integer(0);
if (!valorMinimo.equals(valorNullo)) {
if (!consumoMinimo.equals(consumoNullo)) {
contaTxt.append("TARIFA M�NIMA �GUA "); // 30
contaTxt.append(Util.completaString(consumoMinimo+ " M3",24));
contaTxt.append(Util.completaStringComEspacoAEsquerda(
Util.formatarMoedaReal(valorMinimo),12));
} else {
contaTxt.append("TARIFA M�NIMA �GUA "); // 30
contaTxt.append(Util.completaString(consumoMinimo+ " ",24));
contaTxt.append(Util.completaStringComEspacoAEsquerda(
Util.formatarMoedaReal(valorMinimo),12));
}
i++;
}
if (!consumoExcesso.equals(consumoNullo)) {
contaTxt.append("TARIFA EXCESSO �GUA "); // 30
contaTxt.append(Util.completaString(consumoExcesso + " M3",24));
contaTxt.append(Util.completaStringComEspacoAEsquerda(
Util.formatarMoedaReal(valorExcesso),12));
i++;
}
if (!emitirContaHelper.getPercentualEsgotoConta().equals(valorNullo)) {
contaTxt.append("TARIFA ESGOTO "); // 30
contaTxt.append(Util.completaString(
emitirContaHelper.getPercentualEsgotoConta()+ "%",24));
contaTxt.append(Util.completaStringComEspacoAEsquerda(
Util.formatarMoedaReal(emitirContaHelper.getValorEsgoto()),12));
i++;
}
if (!emitirContaHelper.getValorCreditos().equals(valorNullo)) {
contaTxt.append("CR�DITOS E DESCONTOS "); // 30
contaTxt.append(Util.completaString(" ", 24));
contaTxt.append(Util.completaStringComEspacoAEsquerda(
Util.formatarMoedaReal(emitirContaHelper.getValorCreditos()),12));
i++;
}
if (!emitirContaHelper.getValorImpostos().equals(valorNullo)) {
contaTxt.append("IMPOSTOS DEDUZIDOS "); // 30
contaTxt.append(Util.completaString(" ", 24));
contaTxt.append(Util.completaStringComEspacoAEsquerda(
Util.formatarMoedaReal(emitirContaHelper.getValorImpostos()),12));
i++;
}
// setando os servicos
Conta contaId = new Conta();
contaId.setId(emitirContaHelper.getIdConta());
Collection<DebitoCobradoAgrupadoHelper> cDebitoCobrado = this
.obterDebitosCobradosContaCAERN(contaId);
int quantidadeLinhasSobrando = 10 - i;
if (cDebitoCobrado != null && !cDebitoCobrado.isEmpty()) {
int quantidadeDebitos = cDebitoCobrado.size();
if (quantidadeLinhasSobrando >= quantidadeDebitos) {
for (Iterator iter = cDebitoCobrado.iterator(); iter.hasNext();) {
DebitoCobradoAgrupadoHelper debitoCobrado = (DebitoCobradoAgrupadoHelper) iter.next();
contaTxt.append(Util.completaString(debitoCobrado.getDescricaoDebitoTipo(),30)); // 30
contaTxt.append(Util.completaString(debitoCobrado.getNumeroPrestacaoDebito()
+ "/" + debitoCobrado.getNumeroPrestacao(),24));
contaTxt.append(Util.completaStringComEspacoAEsquerda(
Util.formatarMoedaReal(debitoCobrado.getValorDebito()),12));
i++;
}
} else {
Iterator iter = cDebitoCobrado.iterator();
int contador = 1;
BigDecimal valorAcumulado = new BigDecimal("0.00");
boolean temOutros = false;
while (iter.hasNext()) {
DebitoCobradoAgrupadoHelper debitoCobrado = (DebitoCobradoAgrupadoHelper) iter.next();
if (quantidadeLinhasSobrando > contador) {
contaTxt.append(Util.completaString(debitoCobrado.getDescricaoDebitoTipo(),30)); // 30
contaTxt.append(Util.completaString(debitoCobrado.getNumeroPrestacaoDebito()
+ "/" + debitoCobrado.getNumeroPrestacao(),24));
contaTxt.append(Util.completaStringComEspacoAEsquerda(
Util.formatarMoedaReal(debitoCobrado.getValorDebito()),12));
i++;
} else {
valorAcumulado = valorAcumulado.add(debitoCobrado.getValorDebito());
temOutros = true;
}
contador++;
}
if (temOutros) {
contaTxt.append("OUTROS SERVI�OS "); // 30
contaTxt.append(Util.completaString(" ",24));
contaTxt.append(Util.completaStringComEspacoAEsquerda(
Util.formatarMoedaReal(valorAcumulado),12));
i++;
}
}
}
int quantidadeLinhasServicosSobraram = 10 - i;
contaTxt.append(Util.completaString(" ",quantidadeLinhasServicosSobraram * 66));
// [SB0018 - Gerar Linhas das DemaisContas]
// anoMesString = "" + emitirContaHelper.getAmReferencia();
// // formata ano mes para mes ano
// mesAnoFormatado = anoMesString.substring(4, 6)
// + anoMesString.substring(0, 4);
// digitoVerificadorConta = new Integer(""
// + emitirContaHelper.getDigitoVerificadorConta());
// representacaoNumericaCodBarra = null;
//
// representacaoNumericaCodBarra = this
// .getControladorArrecadacao()
// .obterRepresentacaoNumericaCodigoBarra(
// 3,
// valorConta,
// emitirContaHelper.getIdLocalidade(),
// emitirContaHelper.getIdImovel(),
// mesAnoFormatado,
// digitoVerificadorConta,
// null, null,
// null, null,
// null, null,
// null);
//
// contaTxt.append(Util.completaString(representacaoNumericaCodBarra,48));
contaTxt.append(Util.completaString(" ",48));
contaTxt.append(Util.completaString(" ", 66)); // Rodap�,
//Altera��o por Tiago Moreno - 23/01/2009 - Determinacao judicial (Nitrato)
Conta contaEmitida = new Conta();
contaEmitida.setId(emitirContaHelper.getIdConta());
CreditoRealizado creditoRealizado = repositorioFaturamento.pesquisarCreditoRealizadoNitrato(contaEmitida);
if (creditoRealizado != null){
contaTxt.append(Util.completaString("Por decis�o judicial de 15/05/08 - proc. 001.07.200202-7, esta conta inclui um desconto de 50% no valor da �gua. R$"
+ Util.completaString(Util.formatarMoedaReal(creditoRealizado.getValorCredito()), 13), 160));
} else {
contaTxt.append(Util.completaString(" ", 160));
}
//*****************************************************
// c�digo do banco
contaTxt.append("001-9");
// representa��o num�rica do c�digo de barras
// [SB0030 - Obter representa��o num�rica do c�digo de barras
// da Ficha de Compensa��o]
StringBuilder nossoNumero = obterNossoNumeroFichaCompensacao("1",emitirContaHelper.getIdConta().toString()) ;
String nossoNumeroSemDV = nossoNumero.toString().substring(0,17);
//RM100 - Colocar fixo o fator de vencimento 0000
//Date dataVencimentoMais90 = Util.adicionarNumeroDiasDeUmaData(new Date(),90);
//String fatorVencimento = obterFatorVencimento(dataVencimentoMais90);
String fatorVencimento = null;
String especificacaoCodigoBarra =
CodigoBarras.obterEspecificacaoCodigoBarraFichaCompensacao(
ConstantesSistema.CODIGO_BANCO_FICHA_COMPENSACAO, ConstantesSistema.CODIGO_MOEDA_FICHA_COMPENSACAO,
emitirContaHelper.getValorConta(), nossoNumeroSemDV.toString(),
ConstantesSistema.CARTEIRA_FICHA_COMPENSACAO, fatorVencimento);
String representacaoNumericaCodigoBarraFichaCompensacao = CodigoBarras.obterRepresentacaoNumericaCodigoBarraFichaCompensacao(especificacaoCodigoBarra);
contaTxt.append(representacaoNumericaCodigoBarraFichaCompensacao);
// local de pagamento
contaTxt.append(Util.completaString("PAG�VEL EM QUALQUER BANCO AT� O VENCIMENTO",45));
// vencimento
contaTxt.append(Util.completaString("Contra-apresenta��o",20));
// cedente
contaTxt.append(Util.completaString("CAERN-Companhia de �guas e Esgotos do RN",50));
// ag�ncia/c�digo cedente
contaTxt.append("3795-8/9121-9");
// data do documento
contaTxt.append(Util.formatarData(new Date()));
String matriculaImovelFormatada = Util.retornaMatriculaImovelFormatada(emitirContaHelper.getIdImovel());
// n�mero do documento
contaTxt.append(Util.completaString(matriculaImovelFormatada,10));
// esp�cie do documento
contaTxt.append("FAT");
// aceite
contaTxt.append("N");
// data do processamento
contaTxt.append(Util.formatarData(new Date()));
// nosso n�mero com DV
contaTxt.append(nossoNumero);
// carteira
contaTxt.append(ConstantesSistema.CARTEIRA_FICHA_COMPENSACAO);
// valor do documento
contaTxt.append(Util.completaStringComEspacoAEsquerda(valorContaString,14));
// Sacado - linha 1.a
if (nomeClienteUsuario != null &&
!nomeClienteUsuario.equalsIgnoreCase("")){
contaTxt.append(Util.completaString(nomeClienteUsuario,30));
}else {
contaTxt.append(Util.completaString(emitirContaHelper.getNomeCliente(), 30));
}
// Sacado - linha 1.b
contaTxt.append(Util.completaString(" Matr�cula: ",16));
// Sacado - linha 1.c
contaTxt.append(Util.completaString(matriculaImovelFormatada,9));
// Sacado - linha 1.d
contaTxt.append(Util.completaString(" Fatura: ",14));
// Sacado - linha 1.d
// D�gito verificador da conta
String digitoVerificador = "" + emitirContaHelper.getDigitoVerificadorConta();
contaTxt.append(Util.completaString(mesAnoReferencia+ "-"+ digitoVerificador,9));
// Sacado - linha 2.a
// contaTxt.append(Util.completaString(enderecoImovel,50));
// endere�o
contaTxt.append(Util.completaString(enderecoImovel[0],60));
// bairro
contaTxt.append(Util.completaString(enderecoImovel[3],30));
// c�digo de barras
if(especificacaoCodigoBarra != null && !especificacaoCodigoBarra.equals("")){
// Cria o objeto para gerar o c�digode barras no
// padr�o intercalado 2 de 5
Interleaved2of5 codigoBarraIntercalado2de5 = new Interleaved2of5();
contaTxt.append(Util.completaString(codigoBarraIntercalado2de5
.encodeValue(especificacaoCodigoBarra), 112));
}else{
contaTxt.append(Util.completaString(" ", 112));
}
if(imovelEmitido.getCodigoDebitoAutomatico() != null){
contaTxt.append(Util.completaString(imovelEmitido.getCodigoDebitoAutomatico().toString(),9));
}
//*****************************************************
// rodap�
// I,
// rodap�
// II,
// rodap�
// III,
contasTxtLista.append(contaTxt.toString());
conta = null;
StringBuilder teste = new StringBuilder();
teste.append(contaTxt);
// PEDRO 19/10/2006
contaTxt = null;
// enquanto estiver
// proximo
// if
// (iteratorConta.hasNext())
// {
contasTxtLista.append(System.getProperty("line.separator"));
// adiciona o id da conta e o sequencial
// no para serem atualizados
mapAtualizaSequencial.put(emitirContaHelper.getIdConta(),sequencialImpressao);
}// fim do la�o que verifica se o
// helper � diferente de nulo
}// fim la�o while do iterator do objeto helper
countOrdem++;
// fim do la�o que verifica se a cole��o � nula
}
repositorioFaturamento.atualizarSequencialContaImpressaoFichaCompensacao(mapAtualizaSequencial);
mapAtualizaSequencial = null;
String idGrupoFaturamento = null;
if (faturamentoGrupo == null) {
idGrupoFaturamento = "G";
} else {
idGrupoFaturamento = "G" + faturamentoGrupo.getId();
}
String mesReferencia = "_Fat"
+ anoMesReferenciaFaturamento.toString().substring(4, 6);
String nomeZip = null;
switch (tipoConta) {
case 0:
nomeZip = "BOLETO_E" + "_" + idGrupoFaturamento + mesReferencia + "_Emp" + idEmpresa + "-";
break;
case 1:
nomeZip = "BOLETO_A" + "_" + idGrupoFaturamento + mesReferencia + "_Emp" + idEmpresa + "-";
break;
case 2:
nomeZip = "BOLETO_D" + "_" + idGrupoFaturamento + mesReferencia + "_Emp" + idEmpresa + "-";
break;
case 3:
nomeZip = "BOLETO_N_R" + "_" + idGrupoFaturamento + mesReferencia + "-";
break;
case 4:
nomeZip = "BOLETO_D_R" + "_" + idGrupoFaturamento + mesReferencia + "-";
break;
case 5:
nomeZip = "BOLETO_N" + "_" + idGrupoFaturamento + mesReferencia + "_Emp" + idEmpresa + "-";
break;
}
BufferedWriter out = null;
ZipOutputStream zos = null;
File compactadoTipo = new File(nomeZip + ".zip");
File leituraTipo = new File(nomeZip + ".txt");
if (contasTxtLista != null && contasTxtLista.length() != 0) {
// fim de arquivo
contasTxtLista.append("\u0004");
// ************ TIPO E *************
zos = new ZipOutputStream(new FileOutputStream(compactadoTipo));
out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(leituraTipo.getAbsolutePath())));
out.write(contasTxtLista.toString());
out.flush();
ZipUtil.adicionarArquivo(zos, leituraTipo);
zos.close();
out.close();
leituraTipo.delete();
}
// limpa todos os campos
nomeZip = null;
out = null;
zos = null;
compactadoTipo = null;
leituraTipo = null;
contasTxtLista = null;
tipoConta++;
} catch (ErroRepositorioException e) {
throw new ControladorException("erro.sistema", e);
}
} catch (IOException e) {
String mensagem = e.getMessage();
String[] inicioMensagem = mensagem.split("\\.");
if (inicioMensagem != null
&& (inicioMensagem[0].equals("erro") || inicioMensagem[0].equals("atencao"))) {
throw new ControladorException(mensagem);
} else {
throw new ControladorException("erro.sistema", e);
}
} catch (Exception e) {
e.printStackTrace();
String mensagem = e.getMessage();
if (mensagem != null) {
String[] inicioMensagem = mensagem.split("\\.");
if (inicioMensagem != null
&& (inicioMensagem[0].equals("erro") || inicioMensagem[0].equals("atencao"))) {
throw new ControladorException(mensagem);
} else {
throw new ControladorException("erro.sistema", e);
}
} else {
throw new ControladorException("erro.sistema", e);
}
}
}
/**
* [UC0352] Emitir Contas e Cartas
*
* [SB0029] Gerar Arquivo TXT das fichas de Compens��o
*
* @author Vivianne Sousa
* @date 12/11/2007
*
* @param emitirContaHelper
* @throws ControladorException
*/
public void emitirFichaCompensacaoOrgaoPublico(Collection colecaoEmitirContaHelper, int tipoConta ,
FaturamentoGrupo faturamentoGrupo, Integer idEmpresa,
Integer anoMesReferenciaFaturamento) throws ControladorException {
SistemaParametro sistemaParametro = null;
int quantidadeContas = 0;
try {
sistemaParametro = getControladorUtil().pesquisarParametrosDoSistema();
// recebe todos as contas da lista
StringBuilder contasTxtLista = null;
Map<Integer, Integer> mapAtualizaSequencial = null;
try {
Integer sequencialImpressao = 0;
contasTxtLista = new StringBuilder();
mapAtualizaSequencial = new HashMap();
if (colecaoEmitirContaHelper != null && !colecaoEmitirContaHelper.isEmpty()) {
EmitirContaHelper emitirContaHelper = null;
int countOrdem = 0;
Iterator iteratorConta = colecaoEmitirContaHelper.iterator();
while (iteratorConta.hasNext()) {
emitirContaHelper = null;
emitirContaHelper = (EmitirContaHelper) iteratorConta.next();
sequencialImpressao += 1;
quantidadeContas++;
if (emitirContaHelper != null) {
StringBuilder contaTxt = new StringBuilder();
String descricaoLocalidade = emitirContaHelper
.getDescricaoLocalidade();
contaTxt
.append(Util
.completaString(
descricaoLocalidade,
30));
contaTxt
.append(Util
.adicionarZerosEsquedaNumero(
3,
emitirContaHelper
.getCodigoSetorComercialConta()
.toString()));
Imovel imovelEmitido = getControladorImovel()
.pesquisarImovel(
emitirContaHelper
.getIdImovel());
contaTxt
.append(Util
.adicionarZerosEsquedaNumero(
2,
imovelEmitido
.getQuadra()
.getRota()
.getCodigo()
.toString()));
contaTxt.append(".");
contaTxt
.append(Util
.adicionarZerosEsquedaNumero(
4,
imovelEmitido
.getNumeroSequencialRota()
.toString()));
contaTxt
.append(Util
.adicionarZerosEsquedaNumero(
8,
emitirContaHelper
.getIdImovel()
.toString()));
// caso a cole��o de
// contas
// seja
// de
// entrega
// para
// o
// cliente
// respons�vel
String nomeClienteUsuario = null;
if (tipoConta == 3
|| tipoConta == 4) {
if (emitirContaHelper
.getNomeImovel() != null
&& !emitirContaHelper
.getNomeImovel()
.equals("")) {
nomeClienteUsuario = emitirContaHelper
.getNomeImovel();
} else {
try {
nomeClienteUsuario = repositorioFaturamento
.pesquisarNomeClienteUsuarioConta(emitirContaHelper
.getIdConta());
} catch (ErroRepositorioException e) {
throw new ControladorException(
"erro.sistema",
e);
}
}
contaTxt
.append(Util
.completaString(
nomeClienteUsuario,
30));
} else {
contaTxt
.append(Util
.completaString(
emitirContaHelper
.getNomeCliente(),
30));
}
String[] enderecoImovel = getControladorEndereco()
.pesquisarEnderecoFormatadoDividido(
emitirContaHelper
.getIdImovel());
// endere�o
contaTxt
.append(Util
.completaString(
enderecoImovel[0],
60));
// bairro
contaTxt
.append(Util
.completaString(
enderecoImovel[3],
30));
FiltroLocalidade filtroLocalidade = new FiltroLocalidade();
filtroLocalidade
.adicionarParametro(new ParametroSimples(
FiltroLocalidade.ID,
emitirContaHelper
.getIdLocalidade()));
filtroLocalidade
.adicionarCaminhoParaCarregamentoEntidade("logradouroCep");
filtroLocalidade
.adicionarCaminhoParaCarregamentoEntidade("logradouroCep.cep");
filtroLocalidade
.adicionarCaminhoParaCarregamentoEntidade("logradouroCep.logradouro");
filtroLocalidade
.adicionarCaminhoParaCarregamentoEntidade("logradouroCep.logradouro.logradouroTipo");
filtroLocalidade
.adicionarCaminhoParaCarregamentoEntidade("logradouroCep.logradouro.logradouroTitulo");
filtroLocalidade
.adicionarCaminhoParaCarregamentoEntidade("enderecoReferencia");
filtroLocalidade
.adicionarCaminhoParaCarregamentoEntidade("logradouroBairro");
filtroLocalidade
.adicionarCaminhoParaCarregamentoEntidade("logradouroBairro.bairro");
filtroLocalidade
.adicionarCaminhoParaCarregamentoEntidade("logradouroBairro.bairro.municipio");
filtroLocalidade
.adicionarCaminhoParaCarregamentoEntidade("logradouroBairro.bairro.municipio.unidadeFederacao");
filtroLocalidade
.adicionarCaminhoParaCarregamentoEntidade("enderecoReferencia");
Collection cLocalidade = (Collection) getControladorUtil()
.pesquisar(
filtroLocalidade,
Localidade.class
.getName());
Localidade localidade = (Localidade) cLocalidade
.iterator().next();
FiltroQualidadeAgua filtroQualidadeAgua = new FiltroQualidadeAgua();
Collection colecaoQualidadeAgua = null;
filtroQualidadeAgua
.adicionarParametro(new ParametroSimples(
FiltroQualidadeAgua.LOCALIDADE_ID,
localidade
.getId()));
filtroQualidadeAgua
.adicionarParametro(new ParametroSimples(
FiltroQualidadeAgua.SETOR_COMERCIAL_ID,
emitirContaHelper
.getIdSetorComercial()
.toString()));
filtroQualidadeAgua
.adicionarParametro(new ParametroSimples(
FiltroQualidadeAgua.ANO_MES_REFERENCIA,
emitirContaHelper
.getAmReferencia()));
filtroQualidadeAgua.adicionarCaminhoParaCarregamentoEntidade("fonteCaptacao");
colecaoQualidadeAgua = getControladorUtil()
.pesquisar(
filtroQualidadeAgua,
QualidadeAgua.class
.getName());
if (colecaoQualidadeAgua == null
|| colecaoQualidadeAgua
.isEmpty()) {
filtroQualidadeAgua
.limparListaParametros();
colecaoQualidadeAgua = null;
filtroQualidadeAgua
.adicionarParametro(new ParametroSimples(
FiltroQualidadeAgua.LOCALIDADE_ID,
localidade
.getId()));
filtroQualidadeAgua
.adicionarParametro(new ParametroSimples(
FiltroQualidadeAgua.ANO_MES_REFERENCIA,
emitirContaHelper
.getAmReferencia()));
filtroQualidadeAgua.adicionarCaminhoParaCarregamentoEntidade("fonteCaptacao");
colecaoQualidadeAgua = getControladorUtil()
.pesquisar(
filtroQualidadeAgua,
QualidadeAgua.class
.getName());
}
if (colecaoQualidadeAgua != null
&& !colecaoQualidadeAgua
.isEmpty()) {
QualidadeAgua qualidadeAgua = (QualidadeAgua) colecaoQualidadeAgua
.iterator().next();
// fonte
if (qualidadeAgua.getFonteCaptacao() != null) {
contaTxt.append(
Util.completaString(qualidadeAgua.getFonteCaptacao().getDescricao(),30));
} else {
contaTxt.append(Util.completaString(" ",30));
}
// cloro
if (qualidadeAgua
.getNumeroCloroResidual() != null
&& !qualidadeAgua
.getNumeroCloroResidual()
.equals(0)) {
contaTxt
.append(Util
.completaString(
qualidadeAgua
.getNumeroCloroResidual()
.toString(),
3));
} else {
contaTxt
.append(Util
.completaString(
" ",
3));
}
// coliformes
if (qualidadeAgua
.getNumeroIndiceColiformesTotais() != null
&& !qualidadeAgua
.getNumeroIndiceColiformesTotais()
.equals(0)) {
contaTxt
.append(Util
.completaString(
qualidadeAgua
.getNumeroIndiceColiformesTotais()
.toString(),
8));
} else {
contaTxt
.append(Util
.completaString(
" ",
8));
}
// nitrato
if (qualidadeAgua
.getNumeroNitrato() != null
&& !qualidadeAgua
.getNumeroNitrato()
.equals(0)) {
contaTxt
.append(Util
.completaString(
qualidadeAgua
.getNumeroNitrato()
.toString(),
4));
} else {
contaTxt
.append(Util
.completaString(
" ",
4));
}
// //ph
if (qualidadeAgua
.getNumeroIndicePh() != null
&& !qualidadeAgua
.getNumeroIndicePh()
.equals(0)) {
contaTxt
.append(Util
.completaString(
qualidadeAgua
.getNumeroIndicePh()
.toString(),
4));
} else {
contaTxt
.append(Util
.completaString(
" ",
4));
}
// //turbidez
if (qualidadeAgua
.getNumeroIndiceTurbidez() != null
&& !qualidadeAgua
.getNumeroIndiceTurbidez()
.equals(0)) {
contaTxt
.append(Util
.completaString(
qualidadeAgua
.getNumeroIndiceTurbidez()
.toString(),
4));
} else {
contaTxt
.append(Util
.completaString(
" ",
4));
}
} else {
contaTxt.append(Util
.completaString(
" ", 53));
}
Collection colecaoSubCategoria = getControladorImovel()
.obterQuantidadeEconomiasSubCategoria(
imovelEmitido
.getId());
String economias = "";
for (Iterator iter = colecaoSubCategoria
.iterator(); iter
.hasNext();) {
Subcategoria subcategoria = (Subcategoria) iter
.next();
economias = economias
+ Util
.adicionarZerosEsquedaNumero(
3,
subcategoria
.getCodigo()
+ "")
+ "/"
+ Util
.adicionarZerosEsquedaNumero(
3,
subcategoria
.getQuantidadeEconomias()
.toString())
+ " ";
}
contaTxt
.append(Util
.adicionarZerosEsquedaNumero(
7,
quantidadeContas
+ ""));
contaTxt
.append(Util
.completaString(
localidade
.getDescricao(),
30));
contaTxt
.append(Util
.completaString(
localidade
.getEnderecoFormatadoTituloAbreviado(),
35));
contaTxt
.append(Util
.completaString(
localidade
.getFone(),
20));
contaTxt.append(Util
.completaString(
"0800-84-0195",
15));
// cria um objeto conta
// para
// calcular o
// valor da
// conta
Conta conta = new Conta();
conta
.setValorAgua(emitirContaHelper
.getValorAgua());
conta
.setValorEsgoto(emitirContaHelper
.getValorEsgoto());
conta
.setValorCreditos(emitirContaHelper
.getValorCreditos());
conta
.setDebitos(emitirContaHelper
.getDebitos());
conta
.setValorImposto(emitirContaHelper
.getValorImpostos());
BigDecimal valorConta = conta
.getValorTotalContaBigDecimal();
emitirContaHelper.setValorConta(valorConta);
// [SB0018 - Gerar
// Linhas
// das
// DemaisContas]
String anoMesString = ""
+ emitirContaHelper
.getAmReferencia();
// formata ano mes para mes ano
String mesNumero = anoMesString
.substring(4, 6);
String mesExtenso = Util
.retornaDescricaoMes(
new Integer(
mesNumero)
.intValue())
.toUpperCase();
String dataExtensa = mesExtenso
+ "/"
+ anoMesString
.substring(0, 4);
// String mesAnoFormatado = anoMesString
// .substring(4, 6)
// + anoMesString
// .substring(0, 4);
// Integer digitoVerificadorConta = new Integer(
// ""
// + emitirContaHelper
// .getDigitoVerificadorConta());
// String representacaoNumericaCodBarra = null;
//
// representacaoNumericaCodBarra = getControladorArrecadacao()
// .obterRepresentacaoNumericaCodigoBarra(
// 3,
// valorConta,
// emitirContaHelper
// .getIdLocalidade(),
// emitirContaHelper
// .getIdImovel(),
// mesAnoFormatado,
// digitoVerificadorConta,
// null, null,
// null, null,
// null, null,
// null);
//
// contaTxt
// .append(Util
// .completaString(
// representacaoNumericaCodBarra,
// 48));
contaTxt.append(Util.completaString("", 48));
// determinar Mensagem
String[] parmsPartesConta = obterMensagemConta3Partes(
emitirContaHelper,
sistemaParametro);
String primeiraParte = parmsPartesConta[0];
String segundaParte = parmsPartesConta[1];
contaTxt.append(Util
.completaString(
primeiraParte,
65));
contaTxt.append(Util
.completaString(
segundaParte,
65));
contaTxt
.append(System
.getProperty("line.separator"));
contaTxt
.append(Util
.completaString(
descricaoLocalidade,
30));
contaTxt
.append(Util
.adicionarZerosEsquedaNumero(
2,
imovelEmitido
.getQuadra()
.getRota()
.getCodigo()
.toString()));
contaTxt.append(".");
contaTxt
.append(Util
.adicionarZerosEsquedaNumero(
4,
imovelEmitido
.getNumeroSequencialRota()
.toString()));
Imovel imovel = new Imovel();
Localidade localidade2 = new Localidade();
localidade2
.setId(emitirContaHelper
.getIdLocalidade());
imovel
.setLocalidade(localidade2);
SetorComercial setorComercial = new SetorComercial();
setorComercial
.setCodigo(emitirContaHelper
.getCodigoSetorComercialConta());
imovel
.setSetorComercial(setorComercial);
Quadra quadra = new Quadra();
quadra
.setNumeroQuadra(emitirContaHelper
.getIdQuadraConta());
imovel.setQuadra(quadra);
imovel
.setLote(emitirContaHelper
.getLoteConta());
imovel
.setSubLote(emitirContaHelper
.getSubLoteConta());
String inscricao = imovel
.getInscricaoFormatada();
imovel = null;
setorComercial = null;
quadra = null;
contaTxt.append(Util
.completaString(
inscricao, 20));
contaTxt
.append(Util
.completaString(
" ", 12));
String mesAnoReferencia = Util
.formatarAnoMesParaMesAno(emitirContaHelper
.getAmReferencia());
contaTxt
.append(Util
.completaString(
mesAnoReferencia,
9));
// data de vencimento da
// conta
String dataVencimento = Util
.formatarData(emitirContaHelper
.getDataVencimentoConta());
contaTxt.append(Util
.completaString(
dataVencimento,
10));
String valorContaString = Util
.formatarMoedaReal(valorConta);
// valor da conta
FiltroContaImpressao filtroContaImpressao = new FiltroContaImpressao();
filtroContaImpressao
.adicionarParametro(new ParametroSimples(
FiltroContaImpressao.ID,
emitirContaHelper
.getIdConta()
.toString()));
filtroContaImpressao
.adicionarCaminhoParaCarregamentoEntidade("contaTipo");
Collection<ContaImpressao> cContaIm = getControladorUtil()
.pesquisar(
filtroContaImpressao,
ContaImpressao.class
.getName());
ContaImpressao contaImpressao = cContaIm
.iterator().next();
Integer contaTipo = contaImpressao
.getContaTipo().getId();
contaTxt
.append(Util
.completaStringComEspacoAEsquerda(
valorContaString,
15));
if (contaTipo
.equals(ContaTipo.CONTA_DEBITO_AUTOMATICO)
|| contaTipo
.equals(ContaTipo.CONTA_DEBITO_AUTO_COM_CLIENTE_RESP
.intValue())) {
contaTxt
.append(Util
.completaString(
"N�O PODE SER PAGO EM BANCO",
65));
contaTxt
.append(Util
.completaString(
"D�BITO AUTOM�TICO EM CONTA CORRENTE",
65));
} else {
contaTxt.append(Util
.completaString(
" ", 65));
contaTxt.append(Util
.completaString(
" ", 65));
}
// M�s/Ano refer�ncia da
// conta
// digito
// verificador
contaTxt
.append(Util
.completaString(
dataExtensa,
14));
contaTxt
.append(Util
.adicionarZerosEsquedaNumero(
8,
imovelEmitido
.getId()
.toString()));
contaTxt
.append(Util
.completaString(
emitirContaHelper
.getIdLocalidade()
.toString(),
3));
contaTxt
.append(Util
.adicionarZerosEsquedaNumero(
3,
emitirContaHelper
.getCodigoSetorComercialConta()
.toString()));
contaTxt
.append(Util
.adicionarZerosEsquedaNumero(
3,
emitirContaHelper
.getIdQuadraConta()
.toString()));
contaTxt
.append(Util
.adicionarZerosEsquedaNumero(
4,
emitirContaHelper
.getLoteConta()
.toString()));
contaTxt
.append(Util
.adicionarZerosEsquedaNumero(
2,
emitirContaHelper
.getSubLoteConta()
.toString()));
// DIGITO ?????
contaTxt
.append(Util
.adicionarZerosEsquedaNumero(
1, "0"));
Integer[] parmSituacao = determinarTipoLigacaoMedicao(emitirContaHelper);
Integer tipoLigacao = parmSituacao[0];
Integer tipoMedicao = parmSituacao[1];
Object[] parmsMedicaoHistorico = obterDadosMedicaoConta(
emitirContaHelper,
tipoMedicao);
// Leitura Anterior
String leituraAnterior = "";
// Leitura Atual
String leituraAtual = "";
// Data Leitura Anterior
String dataLeituraAnterior = "";
// Leitura Anterior
String dataLeituraAtual = "";
if (parmsMedicaoHistorico != null) {
if (parmsMedicaoHistorico[0] != null) {
leituraAnterior = ""
+ (Integer) parmsMedicaoHistorico[0];
}
if (parmsMedicaoHistorico[1] != null) {
leituraAtual = ""
+ (Integer) parmsMedicaoHistorico[1];
}
if (parmsMedicaoHistorico[3] != null) {
dataLeituraAnterior = Util
.formatarData((Date) parmsMedicaoHistorico[3]);
}
if (parmsMedicaoHistorico[2] != null) {
dataLeituraAtual = Util
.formatarData((Date) parmsMedicaoHistorico[2]);
}
}
Object[] parmsConsumoHistorico = null;
String consumoMedio = "";
if (tipoLigacao != null) {
try {
parmsConsumoHistorico = repositorioMicromedicao
.obterDadosConsumoConta(
emitirContaHelper
.getIdImovel(),
emitirContaHelper
.getAmReferencia(),
tipoLigacao);
} catch (ErroRepositorioException e) {
sessionContext
.setRollbackOnly();
throw new ControladorException(
"erro.sistema",
e);
}
if (parmsConsumoHistorico != null) {
// Consumo m�dio
if (parmsConsumoHistorico[2] != null) {
consumoMedio = ""
+ (Integer) parmsConsumoHistorico[2];
}
}
}
// Data Leitura Atual
contaTxt
.append(Util
.completaString(
dataLeituraAtual,
5));
contaTxt
.append(Util
.completaString(
leituraAnterior,
6));
// Leitura Atual
contaTxt
.append(Util
.completaString(
leituraAtual,
6));
String diasConsumo = "";
if (!dataLeituraAnterior
.equals("")
&& !dataLeituraAtual
.equals("")) {
diasConsumo = ""
+ Util
.obterQuantidadeDiasEntreDuasDatas(
(Date) parmsMedicaoHistorico[3],
(Date) parmsMedicaoHistorico[2]);
}
String[] parmsConsumo = obterConsumoFaturadoConsumoMedioDiario(
emitirContaHelper,
tipoMedicao,
diasConsumo);
String consumoFaturamento = parmsConsumo[0];
// Consumo faturado
contaTxt
.append(Util
.completaString(
consumoFaturamento,
5));
contaTxt
.append(Util
.completaString(
consumoMedio,
5));
contaTxt
.append(Util
.completaString(
this
.obterConsumoAnterior(
emitirContaHelper
.getIdImovel(),
emitirContaHelper
.getAmReferencia(),
6,
tipoLigacao,
tipoMedicao)
.toString(),
12));
contaTxt
.append(Util
.completaString(
this
.obterConsumoAnterior(
emitirContaHelper
.getIdImovel(),
emitirContaHelper
.getAmReferencia(),
5,
tipoLigacao,
tipoMedicao)
.toString(),
12));
contaTxt
.append(Util
.completaString(
this
.obterConsumoAnterior(
emitirContaHelper
.getIdImovel(),
emitirContaHelper
.getAmReferencia(),
4,
tipoLigacao,
tipoMedicao)
.toString(),
12));
contaTxt
.append(Util
.completaString(
this
.obterConsumoAnterior(
emitirContaHelper
.getIdImovel(),
emitirContaHelper
.getAmReferencia(),
3,
tipoLigacao,
tipoMedicao)
.toString(),
12));
contaTxt
.append(Util
.completaString(
this
.obterConsumoAnterior(
emitirContaHelper
.getIdImovel(),
emitirContaHelper
.getAmReferencia(),
2,
tipoLigacao,
tipoMedicao)
.toString(),
12));
contaTxt
.append(Util
.completaString(
this
.obterConsumoAnterior(
emitirContaHelper
.getIdImovel(),
emitirContaHelper
.getAmReferencia(),
1,
tipoLigacao,
tipoMedicao)
.toString(),
12));
contaTxt.append(Util
.completaString(
economias, 24));
ObterDebitoImovelOuClienteHelper obterDebitoImovelOuClienteHelper = this
.obterDebitoImovelOuClienteHelper(
emitirContaHelper,
sistemaParametro);
if (obterDebitoImovelOuClienteHelper != null
&& ((obterDebitoImovelOuClienteHelper
.getColecaoGuiasPagamentoValores() != null && !obterDebitoImovelOuClienteHelper
.getColecaoGuiasPagamentoValores()
.isEmpty()) || (obterDebitoImovelOuClienteHelper
.getColecaoContasValores() != null && !obterDebitoImovelOuClienteHelper
.getColecaoContasValores()
.isEmpty()))) {
Collection colecaoContasValores = obterDebitoImovelOuClienteHelper
.getColecaoContasValores();
if (colecaoContasValores != null
&& !colecaoContasValores
.isEmpty()) {
if (colecaoContasValores
.size() > 5) {
contaTxt
.append(Util
.completaString(
"H� MAIS DE CINCO CONTAS EM ATRASO",
40));
} else {
String contasAtraso = "";
for (Iterator iter = colecaoContasValores
.iterator(); iter
.hasNext();) {
ContaValoresHelper contasValores = (ContaValoresHelper) iter
.next();
contasAtraso = contasAtraso
+ contasValores
.getConta()
.getFormatarAnoMesParaMesAno()
+ " ";
}
contaTxt
.append(Util
.completaString(
contasAtraso,
40));
}
} else {
contaTxt
.append(Util
.completaString(
"",
40));
/*contaTxt
.append(Util
.completaString(
"PARAB�NS... N�O CONSTA D�BITOS!",
40));*/
}
} else {
contaTxt
.append(Util
.completaString(
"",
40));
}
if (imovelEmitido
.getLigacaoAgua() != null) {
if (imovelEmitido
.getLigacaoAgua()
.getHidrometroInstalacaoHistorico() != null) {
if (imovelEmitido
.getLigacaoAgua()
.getHidrometroInstalacaoHistorico()
.getHidrometro() != null) {
contaTxt
.append(Util
.completaString(
imovelEmitido
.getLigacaoAgua()
.getHidrometroInstalacaoHistorico()
.getHidrometro()
.getNumero(),
10));
} else {
contaTxt
.append(Util
.completaString(
" ",
10));
}
} else {
contaTxt
.append(Util
.completaString(
" ",
10));
}
} else {
contaTxt.append(Util
.completaString(
" ", 10));
}
Collection colecaoContaCategoriaConsumoFaixa = null;
try {
colecaoContaCategoriaConsumoFaixa = repositorioFaturamento
.pesquisarContaCategoriaConsumoFaixa(emitirContaHelper
.getIdConta());
} catch (ErroRepositorioException e) {
throw new ControladorException(
"erro.sistema", e);
}
Integer consumoExcesso = 0;
Integer consumoMinimo = 0;
BigDecimal valorExcesso = new BigDecimal(
"0.0");
BigDecimal valorMinimo = new BigDecimal(
"0.0");
if (colecaoContaCategoriaConsumoFaixa == null
|| colecaoContaCategoriaConsumoFaixa
.isEmpty()) {
consumoMinimo = emitirContaHelper
.getConsumoAgua();
valorMinimo = emitirContaHelper
.getValorAgua();
} else {
if (!emitirContaHelper
.getConsumoAgua()
.equals(0)) {
for (Iterator iter = colecaoContaCategoriaConsumoFaixa
.iterator(); iter
.hasNext();) {
ContaCategoriaConsumoFaixa contaCategoriaConsumoFaixa = (ContaCategoriaConsumoFaixa) iter
.next();
if (contaCategoriaConsumoFaixa
.getConsumoAgua() != null) {
for (Iterator iteration = colecaoSubCategoria
.iterator(); iteration
.hasNext();) {
Subcategoria subCategoriaEmitir = (Subcategoria) iteration
.next();
if (contaCategoriaConsumoFaixa
.getSubcategoria()
.getId()
.equals(
subCategoriaEmitir
.getId())) {
consumoExcesso = consumoExcesso
+ contaCategoriaConsumoFaixa
.getConsumoAgua()
* subCategoriaEmitir
.getQuantidadeEconomias();
valorExcesso = valorExcesso
.add(contaCategoriaConsumoFaixa
.getValorAgua()
.multiply(
new BigDecimal(
subCategoriaEmitir
.getQuantidadeEconomias())));
}
}
}
}
}
valorMinimo = emitirContaHelper
.getValorAgua()
.subtract(
valorExcesso);
consumoMinimo = emitirContaHelper
.getConsumoAgua()
- consumoExcesso;
}
int i = 0;
BigDecimal valorNullo = new BigDecimal(
"0.00");
Integer consumoNullo = new Integer(
0);
if (!valorMinimo
.equals(valorNullo)) {
if (!consumoMinimo
.equals(consumoNullo)) {
contaTxt
.append("TARIFA M�NIMA �GUA "); // 30
contaTxt
.append(Util
.completaString(
consumoMinimo
+ " M3",
24));
contaTxt
.append(Util
.completaStringComEspacoAEsquerda(
Util
.formatarMoedaReal(valorMinimo),
12));
} else {
contaTxt
.append("TARIFA M�NIMA �GUA "); // 30
contaTxt
.append(Util
.completaString(
consumoMinimo
+ " ",
24));
contaTxt
.append(Util
.completaStringComEspacoAEsquerda(
Util
.formatarMoedaReal(valorMinimo),
12));
}
i++;
}
if (!consumoExcesso
.equals(consumoNullo)) {
contaTxt
.append("TARIFA EXCESSO �GUA "); // 30
contaTxt
.append(Util
.completaString(
consumoExcesso
+ " M3",
24));
contaTxt
.append(Util
.completaStringComEspacoAEsquerda(
Util
.formatarMoedaReal(valorExcesso),
12));
i++;
}
if (!emitirContaHelper
.getPercentualEsgotoConta()
.equals(valorNullo)) {
contaTxt
.append("TARIFA ESGOTO "); // 30
contaTxt
.append(Util
.completaString(
emitirContaHelper
.getPercentualEsgotoConta()
+ "%",
24));
contaTxt
.append(Util
.completaStringComEspacoAEsquerda(
Util
.formatarMoedaReal(emitirContaHelper
.getValorEsgoto()),
12));
i++;
}
if (!emitirContaHelper
.getValorCreditos()
.equals(valorNullo)) {
contaTxt
.append("CR�DITOS E DESCONTOS "); // 30
contaTxt.append(Util
.completaString(
" ", 24));
contaTxt
.append(Util
.completaStringComEspacoAEsquerda(
Util
.formatarMoedaReal(emitirContaHelper
.getValorCreditos()),
12));
i++;
}
if (!emitirContaHelper
.getValorImpostos()
.equals(valorNullo)) {
contaTxt
.append("IMPOSTOS DEDUZIDOS "); // 30
contaTxt.append(Util
.completaString(
" ", 24));
contaTxt
.append(Util
.completaStringComEspacoAEsquerda(
Util
.formatarMoedaReal(emitirContaHelper
.getValorImpostos()),
12));
i++;
}
// setando os servicos
Conta contaId = new Conta();
contaId.setId(emitirContaHelper
.getIdConta());
Collection<DebitoCobradoAgrupadoHelper> cDebitoCobrado = this
.obterDebitosCobradosContaCAERN(contaId);
int quantidadeLinhasSobrando = 10 - i;
if (cDebitoCobrado != null
&& !cDebitoCobrado
.isEmpty()) {
int quantidadeDebitos = cDebitoCobrado
.size();
if (quantidadeLinhasSobrando >= quantidadeDebitos) {
for (Iterator iter = cDebitoCobrado
.iterator(); iter
.hasNext();) {
DebitoCobradoAgrupadoHelper debitoCobrado = (DebitoCobradoAgrupadoHelper) iter
.next();
contaTxt
.append(Util
.completaString(
debitoCobrado
.getDescricaoDebitoTipo(),
30)); // 30
contaTxt
.append(Util
.completaString(
debitoCobrado
.getNumeroPrestacaoDebito()
+ "/"
+ debitoCobrado
.getNumeroPrestacao(),
24));
contaTxt
.append(Util
.completaStringComEspacoAEsquerda(
Util
.formatarMoedaReal(debitoCobrado
.getValorDebito()),
12));
i++;
}
} else {
Iterator iter = cDebitoCobrado
.iterator();
int contador = 1;
BigDecimal valorAcumulado = new BigDecimal(
"0.00");
boolean temOutros = false;
while (iter.hasNext()) {
DebitoCobradoAgrupadoHelper debitoCobrado = (DebitoCobradoAgrupadoHelper) iter
.next();
if (quantidadeLinhasSobrando > contador) {
contaTxt
.append(Util
.completaString(
debitoCobrado
.getDescricaoDebitoTipo(),
30)); // 30
contaTxt
.append(Util
.completaString(
debitoCobrado
.getNumeroPrestacaoDebito()
+ "/"
+ debitoCobrado
.getNumeroPrestacao(),
24));
contaTxt
.append(Util
.completaStringComEspacoAEsquerda(
Util
.formatarMoedaReal(debitoCobrado
.getValorDebito()),
12));
i++;
} else {
valorAcumulado = valorAcumulado
.add(debitoCobrado
.getValorDebito());
temOutros = true;
}
contador++;
}
if (temOutros) {
contaTxt
.append("OUTROS SERVI�OS "); // 30
contaTxt
.append(Util
.completaString(
" ",
24));
contaTxt
.append(Util
.completaStringComEspacoAEsquerda(
Util
.formatarMoedaReal(valorAcumulado),
12));
i++;
}
}
}
int quantidadeLinhasServicosSobraram = 10 - i;
contaTxt
.append(Util
.completaString(
" ",
quantidadeLinhasServicosSobraram * 66));
// [SB0018 - Gerar
// Linhas
// das
// DemaisContas]
anoMesString = ""
+ emitirContaHelper
.getAmReferencia();
// formata ano mes para mes ano
// mesAnoFormatado = anoMesString
// .substring(4, 6)
// + anoMesString
// .substring(0, 4);
// digitoVerificadorConta = new Integer(
// ""
// + emitirContaHelper
// .getDigitoVerificadorConta());
// representacaoNumericaCodBarra = null;
//
// representacaoNumericaCodBarra = getControladorArrecadacao()
// .obterRepresentacaoNumericaCodigoBarra(
// 3,
// valorConta,
// emitirContaHelper
// .getIdLocalidade(),
// emitirContaHelper
// .getIdImovel(),
// mesAnoFormatado,
// digitoVerificadorConta,
// null, null,
// null, null,
// null, null,
// null);
//
// contaTxt.append(Util.completaString(representacaoNumericaCodBarra,48));
contaTxt.append(Util.completaString(" ",48));
contaTxt
.append(Util
.completaString(
" ", 66)); // Rodap�,
//Altera��o por Tiago Moreno - 23/01/2009 - Determinacao judicial (Nitrato)
Conta contaEmitida = new Conta();
contaEmitida.setId(emitirContaHelper.getIdConta());
CreditoRealizado creditoRealizado = repositorioFaturamento.pesquisarCreditoRealizadoNitrato(contaEmitida);
if (creditoRealizado != null){
contaTxt.append(Util.completaString("Por decis�o judicial de 15/05/08 - proc. 001.07.200202-7, esta conta inclui um desconto de 50% no valor da �gua. R$"
+ Util.completaString(Util.formatarMoedaReal(creditoRealizado.getValorCredito()), 13), 160));
} else {
contaTxt.append(Util.completaString(" ", 160));
}
//*****************************************************
// c�digo do banco
contaTxt.append("001-9");
// representa��o num�rica do c�digo de barras
// [SB0030 - Obter representa��o num�rica do c�digo de barras
// da Ficha de Compensa��o]
StringBuilder nossoNumero = obterNossoNumeroFichaCompensacao("1",emitirContaHelper.getIdConta().toString()) ;
String nossoNumeroSemDV = nossoNumero.toString().substring(0,17);
//RM100 - Colocar fixo o fator de vencimento 0000
//Date dataVencimentoMais90 = Util.adicionarNumeroDiasDeUmaData(new Date(),90);
//String fatorVencimento = obterFatorVencimento(dataVencimentoMais90);
String fatorVencimento = null;
String especificacaoCodigoBarra =
CodigoBarras.obterEspecificacaoCodigoBarraFichaCompensacao(
ConstantesSistema.CODIGO_BANCO_FICHA_COMPENSACAO, ConstantesSistema.CODIGO_MOEDA_FICHA_COMPENSACAO,
emitirContaHelper.getValorConta(), nossoNumeroSemDV.toString(),
ConstantesSistema.CARTEIRA_FICHA_COMPENSACAO, fatorVencimento);
String representacaoNumericaCodigoBarraFichaCompensacao = CodigoBarras.obterRepresentacaoNumericaCodigoBarraFichaCompensacao(especificacaoCodigoBarra);
contaTxt.append(representacaoNumericaCodigoBarraFichaCompensacao);
// local de pagamento
contaTxt.append(Util.completaString("PAG�VEL EM QUALQUER BANCO AT� O VENCIMENTO",45));
// vencimento
contaTxt.append(Util.completaString("Contra-apresenta��o",20));
// cedente
contaTxt.append(Util.completaString("CAERN-Companhia de �guas e Esgotos do RN",50));
// ag�ncia/c�digo cedente
contaTxt.append("3795-8/6961-2");
// data do documento
contaTxt.append(Util.formatarData(new Date()));
String matriculaImovelFormatada = Util.retornaMatriculaImovelFormatada(emitirContaHelper.getIdImovel());
// n�mero do documento
contaTxt.append(Util.completaString(matriculaImovelFormatada,10));
// esp�cie do documento
contaTxt.append("FAT");
// aceite
contaTxt.append("N");
// data do processamento
contaTxt.append(Util.formatarData(new Date()));
// nosso n�mero com DV
contaTxt.append(nossoNumero);
// carteira
contaTxt.append(ConstantesSistema.CARTEIRA_FICHA_COMPENSACAO);
// valor do documento
contaTxt.append(Util.completaStringComEspacoAEsquerda(valorContaString,14));
// Sacado - linha 1.a
if (nomeClienteUsuario != null &&
!nomeClienteUsuario.equalsIgnoreCase("")){
contaTxt.append(Util.completaString(nomeClienteUsuario,30));
}else {
contaTxt.append(Util.completaString(emitirContaHelper.getNomeCliente(), 30));
}
// Sacado - linha 1.b
contaTxt.append(Util.completaString(" Matr�cula: ",16));
// Sacado - linha 1.c
contaTxt.append(Util.completaString(matriculaImovelFormatada,9));
// Sacado - linha 1.d
contaTxt.append(Util.completaString(" Fatura: ",14));
// Sacado - linha 1.d
// D�gito verificador da conta
String digitoVerificador = "" + emitirContaHelper.getDigitoVerificadorConta();
contaTxt.append(Util.completaString(mesAnoReferencia+ "-"+ digitoVerificador,9));
// Sacado - linha 2.a
// contaTxt.append(Util.completaString(enderecoImovel,50));
// endere�o
contaTxt.append(Util.completaString(enderecoImovel[0],60));
// bairro
contaTxt.append(Util.completaString(enderecoImovel[3],30));
// c�digo de barras
if(especificacaoCodigoBarra != null && !especificacaoCodigoBarra.equals("")){
// Cria o objeto para gerar o c�digode barras no
// padr�o intercalado 2 de 5
Interleaved2of5 codigoBarraIntercalado2de5 = new Interleaved2of5();
contaTxt.append(Util.completaString(codigoBarraIntercalado2de5
.encodeValue(especificacaoCodigoBarra), 112));
}else{
contaTxt.append(Util.completaString(" ", 112));
}
if(imovelEmitido.getCodigoDebitoAutomatico() != null){
contaTxt.append(Util.completaString(imovelEmitido.getCodigoDebitoAutomatico().toString(),9));
}
//*****************************************************
// rodap�
// I,
// rodap�
// II,
// rodap�
// III,
contasTxtLista.append(contaTxt
.toString());
conta = null;
StringBuilder teste = new StringBuilder();
teste.append(contaTxt);
// PEDRO 19/10/2006
contaTxt = null;
// enquanto estiver
// proximo
// if
// (iteratorConta.hasNext())
// {
contasTxtLista
.append(System
.getProperty("line.separator"));
// adiciona o id da
// conta e o sequencial
// no para serem
// atualizados
mapAtualizaSequencial.put(
emitirContaHelper
.getIdConta(),
sequencialImpressao);
}// fim do la�o que verifica se o
// helper � diferente de nulo
}// fim la�o while do iterator do objeto helper
countOrdem++;
// fim do la�o que verifica se a cole��o � nula
}
repositorioFaturamento.atualizarSequencialContaImpressaoFichaCompensacao(mapAtualizaSequencial);
mapAtualizaSequencial = null;
String idGrupoFaturamento = null;
if (faturamentoGrupo == null) {
idGrupoFaturamento = "G";
} else {
idGrupoFaturamento = "G" + faturamentoGrupo.getId();
}
String mesReferencia = "_Fat"
+ anoMesReferenciaFaturamento.toString().substring(4, 6);
String nomeZip = null;
switch (tipoConta) {
case 0:
nomeZip = "BOLETO_E" + "_" + idGrupoFaturamento + mesReferencia + "_Emp" + idEmpresa + "-";
break;
case 1:
nomeZip = "BOLETO_A" + "_" + idGrupoFaturamento + mesReferencia + "_Emp" + idEmpresa + "-";
break;
case 2:
nomeZip = "BOLETO_D" + "_" + idGrupoFaturamento + mesReferencia + "_Emp" + idEmpresa + "-";
break;
case 3:
nomeZip = "BOLETO_N_R" + "_" + idGrupoFaturamento + mesReferencia + "-";
break;
case 4:
nomeZip = "BOLETO_D_R" + "_" + idGrupoFaturamento + mesReferencia + "-";
break;
case 5:
nomeZip = "BOLETO_N" + "_" + idGrupoFaturamento + mesReferencia + "_Emp" + idEmpresa + "-";
break;
}
BufferedWriter out = null;
ZipOutputStream zos = null;
File compactadoTipo = new File(nomeZip + ".zip");
File leituraTipo = new File(nomeZip + ".txt");
if (contasTxtLista != null && contasTxtLista.length() != 0) {
// fim de arquivo
contasTxtLista.append("\u0004");
// ************ TIPO E *************
zos = new ZipOutputStream(new FileOutputStream(compactadoTipo));
out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(leituraTipo.getAbsolutePath())));
out.write(contasTxtLista.toString());
out.flush();
ZipUtil.adicionarArquivo(zos, leituraTipo);
zos.close();
out.close();
leituraTipo.delete();
}
// limpa todos os campos
nomeZip = null;
out = null;
zos = null;
compactadoTipo = null;
leituraTipo = null;
contasTxtLista = null;
tipoConta++;
} catch (ErroRepositorioException e) {
throw new ControladorException("erro.sistema", e);
}
} catch (IOException e) {
String mensagem = e.getMessage();
String[] inicioMensagem = mensagem.split("\\.");
if (inicioMensagem != null
&& (inicioMensagem[0].equals("erro") || inicioMensagem[0].equals("atencao"))) {
throw new ControladorException(mensagem);
} else {
throw new ControladorException("erro.sistema", e);
}
} catch (Exception e) {
e.printStackTrace();
String mensagem = e.getMessage();
if (mensagem != null) {
String[] inicioMensagem = mensagem.split("\\.");
if (inicioMensagem != null
&& (inicioMensagem[0].equals("erro") || inicioMensagem[0].equals("atencao"))) {
throw new ControladorException(mensagem);
} else {
throw new ControladorException("erro.sistema", e);
}
} else {
throw new ControladorException("erro.sistema", e);
}
}
}
/**
* [UC0352] Emitir Contas e Cartas
*
* [SB0031] Obter Representa��o num�rica do Nosso N�mero da Ficha de Compensa��o
*
* @author Vivianne Sousa
* @date 13/11/2007
*
* @param colecaoConta
* @throws ControladorException
*/
public StringBuilder obterNossoNumeroFichaCompensacao(String idDocumentoTipo, String idDocumentoEmitido)
throws ControladorException {
StringBuilder nossoNumero = new StringBuilder();
// � o numero do conv�nio fornecido pelo Banco
// n�mero fixo e n�o pode ser alterado
nossoNumero.append("1682402");
// id do documento tipo de acordo com o tipo de documento q esta sendo emitido
nossoNumero.append(Util.adicionarZerosEsquedaNumero(2,idDocumentoTipo));
// id do documento q esta sendo emitido
nossoNumero.append(Util.adicionarZerosEsquedaNumero(8,idDocumentoEmitido));
Integer digito = Util.obterDigitoVerificadorModulo11(nossoNumero.toString());
nossoNumero.append("-");
nossoNumero.append(digito);
return nossoNumero;
}
}