package gcom.faturamento;
import gcom.arrecadacao.pagamento.FiltroPagamento;
import gcom.arrecadacao.pagamento.Pagamento;
import gcom.batch.UnidadeProcessamento;
import gcom.cadastro.cliente.Cliente;
import gcom.cadastro.endereco.Cep;
import gcom.cadastro.imovel.Categoria;
import gcom.cadastro.imovel.Imovel;
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.ObterDebitoImovelOuClienteHelper;
import gcom.fachada.Fachada;
import gcom.faturamento.bean.EmitirContaHelper;
import gcom.faturamento.conta.Conta;
import gcom.faturamento.conta.ContaCategoria;
import gcom.faturamento.conta.ContaTipo;
import gcom.faturamento.conta.Fatura;
import gcom.faturamento.conta.FaturaItem;
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.financeiro.FinanciamentoTipo;
import gcom.interceptor.RegistradorOperacao;
import gcom.relatorio.faturamento.conta.ContaLinhasDescricaoServicosTarifasTotalHelper;
import gcom.seguranca.acesso.Operacao;
import gcom.seguranca.acesso.OperacaoEfetuada;
import gcom.seguranca.acesso.usuario.Usuario;
import gcom.seguranca.acesso.usuario.UsuarioAcao;
import gcom.seguranca.acesso.usuario.UsuarioAcaoUsuarioHelper;
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;
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.Collections;
import java.util.Comparator;
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;
/**
* Controlador Faturamento CAER
*
* @author Raphael Rossiter
* @date 25/07/2006
*/
public class ControladorFaturamentoCAERSEJB extends ControladorFaturamento implements SessionBean {
private static final long serialVersionUID = 1L;
//==============================================================================================================
// M�TODOS EXCLUSIVOS DA CAER
//==============================================================================================================
/**
* [UC0482]Emitir 2� Via de Conta
*
* @author Vivianne Sousa
* @date 03/03/2007
*
* @param colecaoConta
* @throws ControladorException
*/
public Collection<EmitirContaHelper> emitir2ViaContas(
Collection idsContaEP, boolean cobrarTaxaEmissaoConta,Short contaSemCodigoBarras)
throws ControladorException {
Collection<EmitirContaHelper> colecaoEmitirContaHelper = new ArrayList();
Collection colecaoNacionalFeriado = getControladorUtil().pesquisarFeriadosNacionais();
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[] enderecoArray =
this.getControladorEndereco().pesquisarEnderecoFormatadoDividido(emitirContaHelper.getIdImovel());
if(enderecoArray != null){
// 3 - Endere�o parte 1
emitirContaHelper.setEnderecoImovel(Util.completaString(enderecoArray[0],100));
// 4 - Endere�o parte 2 (Bairro)
emitirContaHelper.setEnderecoLinha2(Util.completaString(enderecoArray[3],30));
// 5 - Endere�o parte 3(Municipio,Uf,Cep)
String restoEndereco = "";
if(enderecoArray[1] != null){
restoEndereco = enderecoArray[1];
}
if(enderecoArray[2] != null){
if(restoEndereco.equals("")){
restoEndereco = enderecoArray[2];
}else{
restoEndereco = restoEndereco+" "+enderecoArray[2];
}
}
if(enderecoArray[4] != null){
Cep cep = new Cep();
cep.setCodigo(new Integer(enderecoArray[4]));
if(restoEndereco.equals("")){
restoEndereco = cep.getCepFormatado();
}else{
restoEndereco = restoEndereco+" "+cep.getCepFormatado();
}
}
emitirContaHelper.setEnderecoLinha3(Util.completaString(restoEndereco,41));
}else{
// 3 - Endere�o parte 1
// 4 - Endere�o parte 2
// 5 - Endere�o parte 3
emitirContaHelper.setEnderecoImovel("");
emitirContaHelper.setEnderecoLinha2("");
emitirContaHelper.setEnderecoLinha3("");
}
// 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.getIdImovel(), emitirContaHelper.getAmReferencia(), 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.getIdImovel(), emitirContaHelper.getAmReferencia(), 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.getIdImovel(), emitirContaHelper.getAmReferencia(), 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.getIdImovel(), emitirContaHelper.getAmReferencia(), 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.getIdImovel(), emitirContaHelper.getAmReferencia(), 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.getIdImovel(), emitirContaHelper.getAmReferencia(), 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.setConsumoMedio(consumoMedio);
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);
Categoria categoria =
this.getControladorImovel().obterPrincipalCategoriaImovel(emitirContaHelper.getIdImovel());
Collection<Categoria> colecaoCategoria = new ArrayList();
colecaoCategoria.add(categoria);
Imovel imovelNaBase = getControladorImovel().pesquisarImovel(emitirContaHelper.getIdImovel());
int consumoMinimo = this.getControladorMicromedicao().obterConsumoMinimoLigacao(imovelNaBase, colecaoCategoria);
int consumoAtual = Integer.parseInt((consumoEconomia.substring(
0, (consumoEconomia.length() - 3))).replace(".",""));
if (consumoMinimo > consumoAtual) {
emitirContaHelper.setConsumoEconomia(consumoMinimo + "");
} else{
emitirContaHelper.setConsumoEconomia(consumoAtual + "");
}
/*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);
// StringBuilder linhasDescricaoServicosTarifasTotal =
// gerarLinhasDescricaoServicoTarifas(emitirContaHelper,
// consumoRateio, parmsMedicaoHistorico, tipoMedicao);
// emitirContaHelper.setLinhasDescricaoServicosTarifasTotal(linhasDescricaoServicosTarifasTotal);
// 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");
}
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 = "";
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 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));
}
// emitirContaHelper.setDataValidade(Util
// .formatarData(emitirContaHelper.getDataValidadeConta()));
emitirContaHelper.setCategoriaImovel(obterCategoriaImovelConta(idContaEP));
FiltroQualidadeAgua filtroQualidadeAgua = new FiltroQualidadeAgua();
filtroQualidadeAgua.adicionarParametro(new ParametroNulo(
FiltroQualidadeAgua.LOCALIDADE_ID));
filtroQualidadeAgua.adicionarParametro(
new ParametroSimples(FiltroQualidadeAgua.ANO_MES_REFERENCIA,
emitirContaHelper.getAmReferencia()));
Collection colecaoQualidadeAgua =
getControladorUtil().pesquisar(filtroQualidadeAgua,
QualidadeAgua.class.getName());
QualidadeAgua qualidadeAgua = null;
if(colecaoQualidadeAgua != null && !colecaoQualidadeAgua.isEmpty()){
qualidadeAgua = (QualidadeAgua) colecaoQualidadeAgua.iterator().next();
}
FiltroQualidadeAguaPadrao filtroQualidadeAguaPadrao = new FiltroQualidadeAguaPadrao();
Collection colecaoQualidadeAguaPadrao =
getControladorUtil().pesquisar(filtroQualidadeAguaPadrao,
QualidadeAguaPadrao.class.getName());
QualidadeAguaPadrao qualidadeAguaPadrao = null;
if(colecaoQualidadeAguaPadrao != null && !colecaoQualidadeAguaPadrao.isEmpty()){
qualidadeAguaPadrao = (QualidadeAguaPadrao) colecaoQualidadeAguaPadrao.iterator().next();
}
//Turbidez Valor Medio
if(qualidadeAgua != null){
emitirContaHelper.setValorMedioTurbidez(Util.completaString(
Util.formataBigDecimal(qualidadeAgua.getNumeroIndiceTurbidez(),2,true),5));
}else{
emitirContaHelper.setValorMedioTurbidez("");
}
//Turbidez Valor Padrao
if(qualidadeAguaPadrao != null){
emitirContaHelper.setPadraoTurbidez(qualidadeAguaPadrao.getDescricaoPadraoTurbidez());
}else{
emitirContaHelper.setPadraoTurbidez("");
}
//Ph Valor Medio
if(qualidadeAgua != null){
emitirContaHelper.setValorMedioPh(Util.completaString(
Util.formataBigDecimal(qualidadeAgua.getNumeroIndicePh(),2,true),5));
}else{
emitirContaHelper.setValorMedioPh("");
}
//Ph Valor Padrao
if(qualidadeAguaPadrao != null){
emitirContaHelper.setPadraoPh(qualidadeAguaPadrao.getDescricaoPadraoPh());
}else{
emitirContaHelper.setPadraoPh("");
}
//Cor Valor Medio
if(qualidadeAgua != null){
emitirContaHelper.setValorMedioCor(Util.completaString(
Util.formataBigDecimal(qualidadeAgua.getNumeroIndiceCor(),2,true),5));
}else{
emitirContaHelper.setValorMedioCor("");
}
//Cor Valor Padrao
if(qualidadeAguaPadrao != null){
emitirContaHelper.setPadraoCor(qualidadeAguaPadrao.getDescricaoPadraoCor());
}else{
emitirContaHelper.setPadraoCor("");
}
//Cloro Valor Medio
if(qualidadeAgua != null){
emitirContaHelper.setValorMedioCloro(Util.completaString(
Util.formataBigDecimal(qualidadeAgua.getNumeroCloroResidual(),2,true),5));
}else{
emitirContaHelper.setValorMedioCloro("");
}
//Cloro Valor Padrao
if(qualidadeAguaPadrao != null){
emitirContaHelper.setPadraoCloro(qualidadeAguaPadrao.getDescricaoPadraoCloro());
}else{
emitirContaHelper.setPadraoCloro("");
}
//Fluor Valor Medio
if(qualidadeAgua != null){
emitirContaHelper.setValorMedioFluor(Util.completaString(
Util.formataBigDecimal(qualidadeAgua.getNumeroIndiceFluor(),2,true),5));
}else{
emitirContaHelper.setValorMedioFluor("");
}
//Fluor Valor Padrao
if(qualidadeAguaPadrao != null){
emitirContaHelper.setPadraoFluor(qualidadeAguaPadrao.getDescricaoPadraoFluor());
}else{
emitirContaHelper.setPadraoFluor("");
}
//Ferro Valor Medio
if(qualidadeAgua != null){
emitirContaHelper.setValorMedioFerro(Util.completaString(
Util.formataBigDecimal(qualidadeAgua.getNumeroIndiceFerro(),2,true),5));
}else{
emitirContaHelper.setValorMedioFerro("");
}
//Ferro Valor Padrao
if(qualidadeAguaPadrao != null){
emitirContaHelper.setPadraoFerro(qualidadeAguaPadrao.getDescricaoPadraoFerro());
}else{
emitirContaHelper.setPadraoFerro("");
}
//Coliformes Totais Valor Medio
if(qualidadeAgua == null || (qualidadeAgua.getNumeroIndiceColiformesTotais() == null ||
qualidadeAgua.getNumeroIndiceColiformesTotais().compareTo(new BigDecimal("0.00")) == 0 ) ){
emitirContaHelper.setValorMedioColiformesTotais("Ausente");
}else{
emitirContaHelper.setValorMedioColiformesTotais(Util.completaString(
Util.formataBigDecimal(qualidadeAgua.getNumeroIndiceColiformesTotais(),2,true),10));
}
//Coliformes Totais Valor Padrao
if(qualidadeAguaPadrao != null){
emitirContaHelper.setPadraoColiformesTotais(qualidadeAguaPadrao.getDescricaoPadraoColiformesTotais());
}else{
emitirContaHelper.setPadraoColiformesTotais("");
}
//Coliformes Fecais Valor Medio
if(qualidadeAgua == null || (qualidadeAgua.getNumeroIndiceColiformesFecais() == null ||
qualidadeAgua.getNumeroIndiceColiformesFecais().compareTo(new BigDecimal("0.00")) == 0 ) ){
emitirContaHelper.setValorMedioColiformesfecais("Ausente");
}else{
emitirContaHelper.setValorMedioColiformesfecais(Util.completaString(
Util.formataBigDecimal(qualidadeAgua.getNumeroIndiceColiformesFecais(),2,true),10));
}
//Coliformes Fecais Valor Padrao
if(qualidadeAguaPadrao != null){
emitirContaHelper.setPadraoColiformesfecais(qualidadeAguaPadrao.getDescricaoPadraoColiformesFecais());
}else{
emitirContaHelper.setPadraoColiformesfecais("");
}
Integer tipoConta = null;
try {
tipoConta = repositorioFaturamento.pesquisarTipoConta(idContaEP);
} catch (ErroRepositorioException e) {
e.printStackTrace();
}
if (tipoConta != null){
String[] parmsMensagemConta =
obterMensagemConta(emitirContaHelper,sistemaParametro,tipoConta,colecaoNacionalFeriado);
//Mensagem 1
emitirContaHelper.setMsgConta(Util.completaString(parmsMensagemConta[0],40));
//Mensagem 2
emitirContaHelper.setMsgLinha1Conta(Util.completaString(parmsMensagemConta[1],65));
//Mensagem 3
emitirContaHelper.setMsgLinha2Conta(Util.completaString(parmsMensagemConta[2],65));
//Mensagem 4
//S�o as data de vencimento
//emitirContaHelper.setDatasVencimento(Util.completaString(parmsMensagemConta[3],65));
//Mensagem 5
emitirContaHelper.setMsgLinha3Conta(Util.completaString(parmsMensagemConta[3],65));
//Mensagem 6
emitirContaHelper.setMsgLinha4Conta(Util.completaString(parmsMensagemConta[4],65));
//Mensagem 7
emitirContaHelper.setMsgLinha5Conta(Util.completaString(parmsMensagemConta[5],65));
// Mensagem 7
emitirContaHelper.setMsgLinha5Conta(Util.completaString(parmsMensagemConta[6],65));
}
String numeroHidrometro = "";
if(getControladorAtendimentoPublico().obterNumeroHidrometroEmLigacaoAgua(emitirContaHelper.getIdImovel()) != null){
numeroHidrometro = getControladorAtendimentoPublico().obterNumeroHidrometroEmLigacaoAgua(emitirContaHelper.getIdImovel());
}
emitirContaHelper.setNumeroHidrometro(numeroHidrometro);
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
*
* [SB0003] Obter Dados do Consumo e Medicao Anterior
*
* @author Vivianne Sousa
* @date 03/03/2007
*
* @param colecaoConta
* @throws ControladorException
*/
public StringBuilder obterDadosConsumoAnterior(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
dadosConsumoAnterior.append(Util.completaString(mesAnoFormatado, 9));
// caso o tipo de liga��o e medi��o seja diferente de nulo
if (tipoLigacao != null && tipoMedicao != null) {
Object[] parmsConsumoHistorico = null;
// Integer idLeituraAnormalidade = null;
parmsConsumoHistorico = getControladorMicromedicao()
.obterConsumoAnteriorAnormalidadeDoImovel(idImovel,
anoMesSubtraido, tipoLigacao);
Integer numeroConsumoFaturadoMes = null;
// String descricaoAbreviadaAnormalidadeAnterior = null;
if (parmsConsumoHistorico != null) {
if (parmsConsumoHistorico[0] != null) {
numeroConsumoFaturadoMes = (Integer) parmsConsumoHistorico[0];
}
// if (parmsConsumoHistorico[1] != null) {
// descricaoAbreviadaAnormalidadeAnterior = (String) parmsConsumoHistorico[1];
// }
}
// try {
//
// // caso o tipo de medi��o seja agua
// if (tipoLigacao.equals(MedicaoTipo.LIGACAO_AGUA)) {
// idLeituraAnormalidade = repositorioMicromedicao.pesquisarIdLeituraAnormalidadeTipoAgua(idImovel,anoMesSubtraido);
// } else {
// // sen�o caso o tipo de medi��o seja poco
// if (tipoMedicao.equals(MedicaoTipo.POCO)) {
// idLeituraAnormalidade = repositorioMicromedicao.pesquisarIdLeituraAnormalidadeTipoEsgoto(idImovel, anoMesSubtraido);
// }
// }
// } catch (ErroRepositorioException e) {
// throw new ControladorException("erro.sistema", e);
// }
// caso o numero consumo faturado do mes for diferente de nulo
if (numeroConsumoFaturadoMes != null) {
dadosConsumoAnterior.append(Util.completaStringComEspacoAEsquerda("" + numeroConsumoFaturadoMes, 6));
} else {
dadosConsumoAnterior.append(Util.completaStringComEspacoAEsquerda("", 6));
}
} else {
// sen�o completa com espa�os em branco
dadosConsumoAnterior.append(Util.completaString("", 11));
}
return dadosConsumoAnterior;
}
/**
* Met�do respons�vel por emitir os txts das contas.
*
* [UC0352] Emitir Contas
*
* [SB0023] Obter Dados do Consumo Anterior CAER
*
* @author Rafael Pinto
* @date 24/07/2007
*
* @throws ControladorException
*/
private String[] obterDadosConsumoAnteriorEmitirTXTContas(Integer idImovel,
int anoMes, int qtdMeses, Integer tipoLigacao, Integer tipoMedicao)
throws ControladorException {
String[] dadosConsumoAnterior = new String[2];
int anoMesSubtraido = Util.subtrairMesDoAnoMes(anoMes, qtdMeses);
String mesAnoFormatado = Util.formatarAnoMesParaMesAno(anoMesSubtraido);
// adiciona o mes/ano formatado com o tra�o
dadosConsumoAnterior[0] = mesAnoFormatado;
// caso o tipo de liga��o e medi��o seja diferente de nulo
if (tipoLigacao != null && tipoMedicao != null) {
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[1] = ""+numeroConsumoFaturadoMes;
} else {
dadosConsumoAnterior[1] = "";
}
} else {
dadosConsumoAnterior = null;
}
return dadosConsumoAnterior;
}
public String obterCategoriaImovelConta( Integer idConta)throws ControladorException{
Collection colecaoContaCategoriaComFaixas = null;
try{
colecaoContaCategoriaComFaixas = repositorioFaturamento
.pesquisarContaCategoria(idConta);
}catch (ErroRepositorioException e) {
sessionContext.setRollbackOnly();
throw new ControladorException("erro.sistema", e);
}
String categoria = "";
if (colecaoContaCategoriaComFaixas != null
&& !colecaoContaCategoriaComFaixas.isEmpty()) {
Iterator iteratorContaCategoriaComFaixas = colecaoContaCategoriaComFaixas.iterator();
while (iteratorContaCategoriaComFaixas.hasNext()) {
ContaCategoria contaCategoria = (ContaCategoria) iteratorContaCategoriaComFaixas
.next();
categoria = contaCategoria.getComp_id().getCategoria().getDescricao();
}
}
return categoria;
}
/**
* [UC0482] Emitir 2 Via de Contas
*
* [SB00011] Gerar Linhas da Tarifa de �gua
*
* @author Vivianne Sousa
* @date 24/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
.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();
String descricaoServicosTarifas2 = "";
// -- Linha 2 --//
descricaoServicosTarifas2 = " ";
// descricao da categoria
descricaoServicosTarifas2 = descricaoServicosTarifas2
+ Util.completaString(contaCategoria.getComp_id().getCategoria().getDescricao(), 13);
// 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 = "";
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 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
.completaStringComEspacoAEsquerda(""
+ numeroConsumoFaturadoMes, 5));
} else {
dadosConsumoAnterior.append(Util
.completaStringComEspacoAEsquerda("", 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 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;
}
/**
* Met�do respons�vel por emitir os txts das contas.
*
* [UC0348] Emitir Contas - CAER
*
* @author Rafael Pinto
* @date 24/07/2007
*
* @param anoMesReferenciaFaturamento
* @param faturamentoGrupo
* @param idFuncionalidadeIniciada
* @param tipoConta
* @param idEmpresa
* @param indicadorEmissaoExtratoFaturamento
*
* @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 {
SistemaParametro sistemaParametro = null;
Collection<NacionalFeriado> colecaoNacionalFeriado = null;
int quantidadeContas = 0;
final int quantidadeRegistros = 1000;
int numeroIndice = 0;
int numeroIndiceAntecipado = 0;
try {
String mesReferencia = "_Fat" + anoMesReferenciaFaturamento.toString().substring(4, 6);
sistemaParametro = getControladorUtil().pesquisarParametrosDoSistema();
colecaoNacionalFeriado = getControladorUtil().pesquisarFeriadosNacionais();
// recebe todos as contas da lista
StringBuilder contasTxtLista = null;
Map<Integer, Integer> mapAtualizaSequencial = null;
// Alterado por S�vio Luiz Data:12/11/2007 Analista:Aryed Lins
// Se o m�s de faturamento for igual a 11 e o indicador faturamento
// antecipado for igual a 1, ent�o seta o mes de faturamento igual a
// 12 em conta impress�o,e imprime as contas no mes 12 tamb�m.
boolean ehFaturamentoAntecipado = false;
Integer anoMesReferenciaFaturamentoAntecipado = null;
if (Util.obterMes(anoMesReferenciaFaturamento) == 11) {
if(sistemaParametro.getIndicadorFaturamentoAntecipado().equals(ConstantesSistema.SIM)){
ehFaturamentoAntecipado = true;
anoMesReferenciaFaturamentoAntecipado =
Util.somarData(anoMesReferenciaFaturamento);
}
}
try {
boolean flagTerminou = false;
numeroIndice = 0;
numeroIndiceAntecipado = 0;
Integer sequencialImpressao = 0;
Collection colecaoConta = null;
Collection<Integer> colecaoContaTipo = null;
contasTxtLista = new StringBuilder();
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;
if(anoMesReferenciaFaturamentoAntecipado != null &&
anoMesReferenciaFaturamento.intValue() == anoMesReferenciaFaturamentoAntecipado.intValue()){
System.out.println("INDICE_ANTECIPADO_PESQUISA:"+numeroIndiceAntecipado);
numeroIndice = numeroIndiceAntecipado;
}
colecaoContaTipo = new ArrayList<Integer>();
if(tipoConta == 0){
System.out.println("***************************************************");
System.out.println("PESQUISA AS CONTAS COM ENDERE�O NORMAL (�NDICE-"+numeroIndice+")");
System.out.println("**************************************************");
colecaoContaTipo.add(ContaTipo.CONTA_RETIDA_POR_EC);
colecaoContaTipo.add(ContaTipo.CONTA_RETIDA_POR_BC);
colecaoContaTipo.add(ContaTipo.CONTA_DEBITO_AUTOMATICO);
colecaoContaTipo.add(ContaTipo.CONTA_NORMAL);
colecaoContaParms =
repositorioFaturamento.pesquisarContasEmitirCAER(
colecaoContaTipo,
idEmpresa,
numeroIndice,
anoMesReferenciaFaturamento,
faturamentoGrupo.getId());
colecaoConta = formatarEmitirContasHelper(colecaoContaParms, 0);
colecaoContaParms = null;
} else {
System.out.println("***********************************************");
System.out.println("PESQUISA CONTAS COM ENDERE�O RESP. (�NDICE-"+numeroIndice+")");
System.out.println("**********************************************");
colecaoContaTipo.add(ContaTipo.CONTA_CLIENTE_RESPONSAVEL);
colecaoContaTipo.add(ContaTipo.CONTA_DEBITO_AUTO_COM_CLIENTE_RESP);
if (faturamentoGrupo != null) {
colecaoContaParms =
repositorioFaturamento.pesquisarContasClienteResponsavelCAER(
colecaoContaTipo,
numeroIndice,
anoMesReferenciaFaturamento,
faturamentoGrupo.getId(),
indicadorEmissaoExtratoFaturamento);
} else {
colecaoContaParms =
repositorioFaturamento.pesquisarContasClienteResponsavelCAER(
colecaoContaTipo,
numeroIndice,
anoMesReferenciaFaturamento,
indicadorEmissaoExtratoFaturamento);
}
colecaoConta = formatarEmitirContasHelper(colecaoContaParms, 3);
colecaoContaParms = null;
}
if (colecaoConta != null && !colecaoConta.isEmpty()) {
if (colecaoConta.size() < quantidadeRegistros) {
flagTerminou = true;
}else if(ehFaturamentoAntecipado){
numeroIndiceAntecipado = numeroIndiceAntecipado + 1000;
}
int metadeColecao = 0;
if (colecaoConta.size() % 2 == 0) {
metadeColecao = colecaoConta.size() / 2;
} else {
metadeColecao = (colecaoConta.size() / 2) + 1;
}
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();
while (iteratorConta.hasNext()) {
emitirContaHelper = null;
int situacao = 0;
emitirContaHelper = (EmitirContaHelper) iteratorConta.next();
while (situacao < 2) {
if (situacao == 0) {
situacao = 1;
sequencialImpressao += 1;
} else {
emitirContaHelper = mapContasDivididas.get(emitirContaHelper);
situacao = 2;
}
quantidadeContas++;
if (emitirContaHelper != null) {
int contaTipo = emitirContaHelper.getContaTipo();
StringBuilder contaTxt = new StringBuilder();
// 1 - Numero da Conta - Tam 10
contaTxt.append(Util.completaString(emitirContaHelper.getIdConta().toString(),10));
// 2 - Nome do Cliente - Tam 50
if (contaTipo == 3 || contaTipo == 6) {
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,50));
} else {
contaTxt.append(Util.completaString(
emitirContaHelper.getNomeCliente(),50));
}
// 0 - Endere�o sem municipio e UF
// 1 - municipio
// 2 - unidade federe��o
// 3 - bairro
// 4 - CEP
String[] enderecoArray =
this.getControladorEndereco().pesquisarEnderecoFormatadoDividido(emitirContaHelper.getIdImovel());
if(enderecoArray != null){
// 3 - Endere�o parte 1 - Tam 100
contaTxt.append(Util.completaString(enderecoArray[0],100));
// 4 - Endere�o parte 2 (Bairro) - Tam 30
contaTxt.append(Util.completaString(enderecoArray[3],30));
// 5 - Endere�o parte 3(Municipio,Uf,Cep) - Tam 41
String restoEndereco = "";
if(enderecoArray[1] != null){
restoEndereco = enderecoArray[1];
}
if(enderecoArray[2] != null){
if(restoEndereco.equals("")){
restoEndereco = enderecoArray[2];
}else{
restoEndereco = restoEndereco+" "+enderecoArray[2];
}
}
if(enderecoArray[4] != null){
Cep cep = new Cep();
cep.setCodigo(new Integer(enderecoArray[4]));
if(restoEndereco.equals("")){
restoEndereco = cep.getCepFormatado();
}else{
restoEndereco = restoEndereco+" "+cep.getCepFormatado();
}
}
contaTxt.append(Util.completaString(restoEndereco,41));
}else{
// 3 - Endere�o parte 1 - Tam 100
// 4 - Endere�o parte 2 - Tam 30
// 5 - Endere�o parte 3 - Tam 41
contaTxt.append(Util.completaString(" ",171));
}
// 8 - M�s/Ano de Referencia - Tam 7
String mesAnoReferencia =
Util.formatarAnoMesParaMesAno(emitirContaHelper.getAmReferencia());
contaTxt.append(Util.completaString(mesAnoReferencia,7));
// 9 - Data Vencimento - Tam 10
String dataVencimento =
Util.formatarData(emitirContaHelper.getDataVencimentoConta());
contaTxt.append(Util.completaString(dataVencimento,10));
// 10 - Matricula do Imovel - Tam 8
String matriculaImovelFormatada =
Util.retornaMatriculaImovelFormatada(emitirContaHelper.getIdImovel());
contaTxt.append(Util.completaString(matriculaImovelFormatada,8));
// 11 - Inscri��o do Imovel - Tam 20
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());
String inscricao = imovel.getInscricaoFormatada();
contaTxt.append(Util.completaString(inscricao,20));
// 12 - Rota - Tam 8
contaTxt.append(Util.adicionarZerosEsquedaNumero(3,emitirContaHelper.getCodigoRota().toString()));
contaTxt.append(".");
if(emitirContaHelper.getNumeroSequencialRota() != null){
contaTxt.append(Util.adicionarZerosEsquedaNumero(4,emitirContaHelper.getNumeroSequencialRota().toString()));
}else{
contaTxt.append(Util.adicionarZerosEsquedaNumero(4,"0"));
}
// 13 - Descri��o da Categoria - Tam 13
Categoria categoria =
this.getControladorImovel().obterPrincipalCategoriaImovel(emitirContaHelper.getIdImovel());
contaTxt.append(Util.completaString(categoria.getDescricao(),13));
// 14 - Numero de Economias - Tam 4
Short quantidadeEconomiaConta = 0;
try {
quantidadeEconomiaConta = repositorioFaturamento
.obterQuantidadeEconomiasConta(emitirContaHelper
.getIdConta());
} catch (ErroRepositorioException e) {
throw new ControladorException("erro.sistema", e);
}
contaTxt.append(Util.completaString(""+quantidadeEconomiaConta,4));
Imovel imovelEmitido =
getControladorImovel().pesquisarImovel(emitirContaHelper.getIdImovel());
// 15 - Numero do Hidrometro - Tam 10
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));
}
// [SB0003] - Determinar tipo de liga��o e tipo de Medi��o
Integer[] parmSituacao =
determinarTipoLigacaoMedicao(emitirContaHelper);
Integer tipoLigacao = parmSituacao[0];
Integer tipoMedicao = parmSituacao[1];
// 16 - Descri��o do tipo de consumo - Tam 20
Object[] parmsConsumoHistorico = null;
String descricaoTipoConsumo = "";
String consumoMedio = "";
//String descricaoAnormalidadeConsumo = null;
if (tipoLigacao != null) {
try {
parmsConsumoHistorico =
repositorioMicromedicao.obterDadosConsumoConta(
emitirContaHelper.getIdImovel(),
emitirContaHelper.getAmReferencia(),
tipoLigacao);
} catch (ErroRepositorioException e) {
throw new ControladorException("erro.sistema",e);
}
if (parmsConsumoHistorico != null) {
// 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 anormalidade de consumo
/*if (parmsConsumoHistorico[4] != null) {
descricaoAnormalidadeConsumo = (String) parmsConsumoHistorico[4];
}*/
}
}
contaTxt.append(Util.completaString(descricaoTipoConsumo,20));
// 17 - Consumo Faturado - Tam 4
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]);
}
}
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];
Collection<Categoria> colecaoCategoria = new ArrayList();
colecaoCategoria.add(categoria);
Imovel imovelNaBase = getControladorImovel().pesquisarImovel(emitirContaHelper.getIdImovel());
int consumoMinimo =
this.getControladorMicromedicao().obterConsumoMinimoLigacao(imovelNaBase, colecaoCategoria);
int consumoAtual = 0;
if(consumoFaturamento != null && !consumoFaturamento.equals("")){
consumoAtual = Integer.parseInt(consumoFaturamento);
}
if (consumoMinimo > consumoAtual) {
contaTxt.append(Util.completaString(consumoMinimo+"",4));
} else{
contaTxt.append(Util.completaString(consumoAtual+"",4));
}
/*contaTxt.append(Util.completaString(consumoFaturamento,4));*/
// 18 - Consumo Estimado - Tam 4
contaTxt.append(Util.completaString(" ",4));
// 19 - Data da Leitura Anterior - Tam 10
contaTxt.append(Util.completaString(dataLeituraAnterior,10));
// 20 - Data da Leitura Atual - Tam 10
contaTxt.append(Util.completaString(dataLeituraAtual,10));
// 21 - Dias de consumo - Tam 2
contaTxt.append(Util.completaString(diasConsumo,2));
// 22 - Leitura Anterior - Tam 7
contaTxt.append(Util.completaString(leituraAnterior,7));
// 23 - Leitura Atual - Tam 7
contaTxt.append(Util.completaString(leituraAtual,7));
// 24 - M�dia de consumo - Tam 6
contaTxt.append(Util.completaString(consumoMedio,6));
// 25 - Referencia 1 - Tam 7
// 26 - Consumo 1 - Tam 4
String[] obterDadosConsumoMedicaoAnterior =
obterDadosConsumoAnteriorEmitirTXTContas(
emitirContaHelper.getIdImovel(),
emitirContaHelper.getAmReferencia(),
1, tipoLigacao,
tipoMedicao);
if(obterDadosConsumoMedicaoAnterior != null){
contaTxt.append(Util.completaString(obterDadosConsumoMedicaoAnterior[0],7));
contaTxt.append(Util.completaString(obterDadosConsumoMedicaoAnterior[1],4));
}else{
contaTxt.append(Util.completaString(" ",11));
}
// 27 - Referencia 2 - Tam 7
// 28 - Consumo 2 - Tam 4
obterDadosConsumoMedicaoAnterior =
obterDadosConsumoAnteriorEmitirTXTContas(
emitirContaHelper.getIdImovel(),
emitirContaHelper.getAmReferencia(),
2,
tipoLigacao,
tipoMedicao);
if(obterDadosConsumoMedicaoAnterior != null){
contaTxt.append(Util.completaString(obterDadosConsumoMedicaoAnterior[0],7));
contaTxt.append(Util.completaString(obterDadosConsumoMedicaoAnterior[1],4));
}else{
contaTxt.append(Util.completaString(" ",11));
}
// 29 - Referencia 3 - Tam 7
// 30 - Consumo 3 - Tam 4
obterDadosConsumoMedicaoAnterior =
obterDadosConsumoAnteriorEmitirTXTContas(
emitirContaHelper.getIdImovel(),
emitirContaHelper.getAmReferencia(),
3,
tipoLigacao,
tipoMedicao);
if(obterDadosConsumoMedicaoAnterior != null){
contaTxt.append(Util.completaString(obterDadosConsumoMedicaoAnterior[0],7));
contaTxt.append(Util.completaString(obterDadosConsumoMedicaoAnterior[1],4));
}else{
contaTxt.append(Util.completaString(" ",11));
}
// 31 - Referencia 4 - Tam 7
// 32 - Consumo 4 - Tam 4
obterDadosConsumoMedicaoAnterior =
obterDadosConsumoAnteriorEmitirTXTContas(
emitirContaHelper.getIdImovel(),
emitirContaHelper.getAmReferencia(),
4,
tipoLigacao,
tipoMedicao);
if(obterDadosConsumoMedicaoAnterior != null){
contaTxt.append(Util.completaString(obterDadosConsumoMedicaoAnterior[0],7));
contaTxt.append(Util.completaString(obterDadosConsumoMedicaoAnterior[1],4));
}else{
contaTxt.append(Util.completaString(" ",11));
}
// 33 - Referencia 5 - Tam 7
// 34 - Consumo 5 - Tam 4
obterDadosConsumoMedicaoAnterior =
obterDadosConsumoAnteriorEmitirTXTContas(
emitirContaHelper.getIdImovel(),
emitirContaHelper.getAmReferencia(),
5,
tipoLigacao,
tipoMedicao);
if(obterDadosConsumoMedicaoAnterior != null){
contaTxt.append(Util.completaString(obterDadosConsumoMedicaoAnterior[0],7));
contaTxt.append(Util.completaString(obterDadosConsumoMedicaoAnterior[1],4));
}else{
contaTxt.append(Util.completaString(" ",11));
}
// 35 - Referencia 6 - Tam 7
// 36 - Consumo 6 - Tam 4
obterDadosConsumoMedicaoAnterior =
obterDadosConsumoAnteriorEmitirTXTContas(
emitirContaHelper.getIdImovel(),
emitirContaHelper.getAmReferencia(),
6,
tipoLigacao,
tipoMedicao);
if(obterDadosConsumoMedicaoAnterior != null){
contaTxt.append(Util.completaString(obterDadosConsumoMedicaoAnterior[0],7));
contaTxt.append(Util.completaString(obterDadosConsumoMedicaoAnterior[1],4));
}else{
contaTxt.append(Util.completaString(" ",11));
}
StringBuilder linhasTarifa = new StringBuilder();
int quantidadeLinhaTarifa = 0;
// 37 - Descricao Item 1 - Tam 55
// 38 - Valor Item 1 - Tam 14
if (emitirContaHelper.getValorAgua() != null &&
emitirContaHelper.getValorAgua().compareTo(new BigDecimal("0.00")) == 1) {
linhasTarifa.append(Util.completaString("TARIFA DE AGUA", 55));
linhasTarifa.append(Util.completaString(
Util.formatarMoedaReal(emitirContaHelper.getValorAgua()), 14));
quantidadeLinhaTarifa++;
}
// 39 - Descricao Item 2 - Tam 55
// 40 - Valor Item 2 - Tam 14
if (emitirContaHelper.getValorEsgoto() != null &&
emitirContaHelper.getValorEsgoto().compareTo(new BigDecimal("0.00")) == 1) {
StringBuilder descricaoEsgoto = new StringBuilder();
// caso o consumo de agua seja igual ao volume coletado de esgoto e o
// valor de agua seja diferente de 0
if (emitirContaHelper.getConsumoAgua().equals(emitirContaHelper.getConsumoEsgoto()) &&
emitirContaHelper.getValorAgua() != null &&
!emitirContaHelper.getValorAgua().equals("0.00")) {
descricaoEsgoto.append("TARIFA DE ESGOTO=");
// Percentual esgoto
String percentualEsgoto =
Util.formatarMoedaReal(emitirContaHelper.getPercentualEsgotoConta());
descricaoEsgoto.append(percentualEsgoto);
// Constante
descricaoEsgoto.append("% DA TARIFA DE AGUA");
} else {
descricaoEsgoto.append("TARIFA DE ESGOTO REF.A ");
// Volume coletado de esgoto
descricaoEsgoto.append(emitirContaHelper.getConsumoEsgoto());
// Constante
descricaoEsgoto.append(" M3");
}
linhasTarifa.append(Util.completaString(descricaoEsgoto.toString(), 55));
linhasTarifa.append(Util.completaString(
Util.formatarMoedaReal(emitirContaHelper.getValorEsgoto()), 14));
quantidadeLinhaTarifa++;
}
// 41 - Descricao Item 3 - Tam 55
// 42 - Valor Item 3 - Tam 14
BigDecimal valorAcumuladoFinanciamento = new BigDecimal("0.00");
Collection<DebitoCobrado> servicosCobrados = new ArrayList<DebitoCobrado>();
if (emitirContaHelper.getDebitos() != null &&
emitirContaHelper.getDebitos().compareTo(new BigDecimal("0.00")) == 1) {
Conta contaId = new Conta();
contaId.setId(emitirContaHelper.getIdConta());
Collection<DebitoCobrado> cDebitoCobrado =
this.obterDebitosCobradosConta(contaId);
if (cDebitoCobrado != null && !cDebitoCobrado.isEmpty()){
BigDecimal valorAcumuladoParcelamento = new BigDecimal("0.00");
StringBuilder descricaoDebitosParcelamento = null;
for (Iterator iter = cDebitoCobrado.iterator(); iter.hasNext();) {
DebitoCobrado debitoCobrado = (DebitoCobrado) iter.next();
if(debitoCobrado.getDebitoTipo().getFinanciamentoTipo().getId().intValue() ==
FinanciamentoTipo.PARCELAMENTO_AGUA ||
debitoCobrado.getDebitoTipo().getFinanciamentoTipo().getId().intValue() ==
FinanciamentoTipo.PARCELAMENTO_ESGOTO ||
debitoCobrado.getDebitoTipo().getFinanciamentoTipo().getId().intValue() ==
FinanciamentoTipo.PARCELAMENTO_SERVICO){
if(descricaoDebitosParcelamento == null){
descricaoDebitosParcelamento = new StringBuilder();
descricaoDebitosParcelamento.append("PARCELAMENTO DE DEBITOS");
descricaoDebitosParcelamento.append(" PARCELA ");
descricaoDebitosParcelamento.append(Util.completaString(
debitoCobrado.getNumeroPrestacaoDebito() + "/" +
debitoCobrado.getNumeroPrestacao(), 10));
}
valorAcumuladoParcelamento =
valorAcumuladoParcelamento.add(debitoCobrado.getValorPrestacao());
}else{
servicosCobrados.add(debitoCobrado);
valorAcumuladoFinanciamento =
valorAcumuladoFinanciamento.add(debitoCobrado.getValorPrestacao());
}
}
if(valorAcumuladoParcelamento.compareTo(new BigDecimal("0.00")) == 1){
linhasTarifa.append(Util.completaString(descricaoDebitosParcelamento.toString(), 55));
linhasTarifa.append(Util.completaString(
Util.formatarMoedaReal(valorAcumuladoParcelamento), 14));
quantidadeLinhaTarifa++;
}
}
}
if (emitirContaHelper.getValorCreditos() != null &&
emitirContaHelper.getValorCreditos().compareTo(new BigDecimal("0.00")) == 1) {
linhasTarifa.append(Util.completaString("CREDITOS REALIZADOS", 55));
linhasTarifa.append(Util.completaString(
Util.formatarMoedaReal(emitirContaHelper.getValorCreditos()), 14));
quantidadeLinhaTarifa++;
}
// 47 - Descricao Item 6 - Tam 55
// 48 - Valor Item 6 - Tam 14
if (emitirContaHelper.getValorImpostos() != null &&
emitirContaHelper.getValorImpostos().compareTo(new BigDecimal("0.00")) == 1) {
linhasTarifa.append(Util.completaString("IMPOSTOS RETIDOS", 55));
linhasTarifa.append(Util.completaString(
Util.formatarMoedaReal(emitirContaHelper.getValorImpostos()), 14));
quantidadeLinhaTarifa++;
}
//[SB0033] - Gerar Linhas dos D�bitos Cobrados de Servi�os
//Caso tenha algum espa�o sobrando e colocado a descri��o dos servi�os
//ao inv�s do acumulado
if (servicosCobrados != null && !servicosCobrados.isEmpty()){
for (Iterator iter = servicosCobrados.iterator(); iter.hasNext();) {
quantidadeLinhaTarifa++;
if(quantidadeLinhaTarifa < 6){
DebitoCobrado debitoCobrado = (DebitoCobrado) iter.next();
valorAcumuladoFinanciamento =
valorAcumuladoFinanciamento.subtract(debitoCobrado.getValorPrestacao());
String descricaoDebitoTipo =
debitoCobrado.getDebitoTipo().getDescricao();
if(descricaoDebitoTipo.length() < 48){
if(debitoCobrado.getAnoMesReferenciaDebito() != null){
String mesAnoDebito = Util.formatarAnoMesParaMesAno(
debitoCobrado.getAnoMesReferenciaDebito());
descricaoDebitoTipo = descricaoDebitoTipo+" "+mesAnoDebito;
}
if(descricaoDebitoTipo.length() < 50){
descricaoDebitoTipo = descricaoDebitoTipo
+" "+debitoCobrado.getNumeroPrestacaoDebito()
+"/"+debitoCobrado.getNumeroPrestacao();
}
}
linhasTarifa.append(Util.completaString(descricaoDebitoTipo, 55));
linhasTarifa.append(Util.completaString(
Util.formatarMoedaReal(debitoCobrado.getValorPrestacao()), 14));
iter.remove();
}else{
break;
}
}
if(servicosCobrados != null && servicosCobrados.size() > 1){
linhasTarifa.append(Util.completaString("OUTROS D�BITOS DE SERVI�OS", 55));
linhasTarifa.append(Util.completaString(
Util.formatarMoedaReal(valorAcumuladoFinanciamento), 14));
}else if (servicosCobrados != null && servicosCobrados.size() == 1){
DebitoCobrado debitoCobrado =
(DebitoCobrado) Util.retonarObjetoDeColecao(servicosCobrados);
String descricaoDebitoCobrado =
debitoCobrado.getDebitoTipo().getDescricao();
if(descricaoDebitoCobrado.length() < 48){
if(debitoCobrado.getAnoMesReferenciaDebito() != null){
String mesAnoDebito = Util.formatarAnoMesParaMesAno(
debitoCobrado.getAnoMesReferenciaDebito());
descricaoDebitoCobrado = descricaoDebitoCobrado+" "+mesAnoDebito;
}
if(descricaoDebitoCobrado.length() < 50){
descricaoDebitoCobrado = descricaoDebitoCobrado
+" "+debitoCobrado.getNumeroPrestacaoDebito()
+"/"+debitoCobrado.getNumeroPrestacao();
}
}
linhasTarifa.append(Util.completaString(
descricaoDebitoCobrado, 55));
linhasTarifa.append(Util.completaString(
Util.formatarMoedaReal(debitoCobrado.getValorPrestacao()), 14));
}
}
contaTxt.append(Util.completaString(linhasTarifa.toString(),414));
// 49 - Valor Total - Tam 14
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();
conta = null;
String valorContaString = Util.formatarMoedaReal(valorConta);
contaTxt.append(Util.completaString(valorContaString,14));
// 50 - Mensagem 1 - Tam 70
String[] parmsMensagemConta =
obterMensagemConta(emitirContaHelper,sistemaParametro,
contaTipo,colecaoNacionalFeriado);
//[SB0034] - Formatar mensagem com anormalidade de consumo
/*if(descricaoAnormalidadeConsumo != null && !descricaoAnormalidadeConsumo.equals("")){
for (int i = 0; i < parmsMensagemConta.length; i++) {
String msg = parmsMensagemConta[i];
if(msg == null || msg.equals("")){
parmsMensagemConta[i] =
"ANORMALIDADE DE CONSUMO - "+descricaoAnormalidadeConsumo.trim();
break;
}
}
}*/
contaTxt.append(Util.completaString(parmsMensagemConta[0],70));
// 51 - Mensagem 2 - Tam 65
contaTxt.append(Util.completaString(parmsMensagemConta[1],65));
// 52 - Mensagem 3 - Tam 65
contaTxt.append(Util.completaString(parmsMensagemConta[2],65));
// 53 - Mensagem 4 - Tam 65
contaTxt.append(Util.completaString(parmsMensagemConta[3],65));
// 54 - Mensagem 5 - Tam 65
contaTxt.append(Util.completaString(parmsMensagemConta[4],65));
// 55 - Mensagem 6 - Tam 65
//contaTxt.append(Util.completaString(parmsMensagemConta[5],65));
contaTxt.append(Util.completaString("",65));
// 56 - Mensagem 7 - Tam 65
//contaTxt.append(Util.completaString(parmsMensagemConta[6],65));
contaTxt.append(Util.completaString("",65));
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()));
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());
}
QualidadeAgua qualidadeAgua = null;
if(colecaoQualidadeAgua != null && !colecaoQualidadeAgua.isEmpty()){
qualidadeAgua =
(QualidadeAgua) colecaoQualidadeAgua.iterator().next();
}
FiltroQualidadeAguaPadrao filtroQualidadeAguaPadrao = new FiltroQualidadeAguaPadrao();
Collection colecaoQualidadeAguaPadrao =
getControladorUtil().pesquisar(filtroQualidadeAguaPadrao,
QualidadeAguaPadrao.class.getName());
QualidadeAguaPadrao qualidadeAguaPadrao = null;
if(colecaoQualidadeAguaPadrao != null && !colecaoQualidadeAguaPadrao.isEmpty()){
qualidadeAguaPadrao =
(QualidadeAguaPadrao) colecaoQualidadeAguaPadrao.iterator().next();
}
// 57 - Turbidez Valor Medio - Tam 5
if(qualidadeAgua != null){
contaTxt.append(Util.completaString(
Util.formataBigDecimal(qualidadeAgua.getNumeroIndiceTurbidez(),2,true),5));
}else{
contaTxt.append(Util.completaString("",5));
}
// 58 - Turbidez Valor Padrao - Tam 20
if(qualidadeAguaPadrao != null){
contaTxt.append(Util.completaString(
qualidadeAguaPadrao.getDescricaoPadraoTurbidez(),20));
}else{
contaTxt.append(Util.completaString("",20));
}
// 59 - Ph Valor Medio - Tam 5
if(qualidadeAgua != null){
contaTxt.append(Util.completaString(
Util.formataBigDecimal(qualidadeAgua.getNumeroIndicePh(),2,true),5));
}else{
contaTxt.append(Util.completaString("",5));
}
// 60 - Ph Valor Padrao - Tam 20
if(qualidadeAguaPadrao != null){
contaTxt.append(Util.completaString(qualidadeAguaPadrao.getDescricaoPadraoPh(),20));
}else{
contaTxt.append(Util.completaString("",20));
}
// 61 - Cor Valor Medio - Tam 5
if(qualidadeAgua != null){
contaTxt.append(Util.completaString(
Util.formataBigDecimal(qualidadeAgua.getNumeroIndiceCor(),2,true),5));
}else{
contaTxt.append(Util.completaString("",5));
}
// 62 - Cor Valor Padrao - Tam 20
if(qualidadeAguaPadrao != null){
contaTxt.append(Util.completaString(qualidadeAguaPadrao.getDescricaoPadraoCor(),20));
}else{
contaTxt.append(Util.completaString("",20));
}
// 63 - Cloro Valor Medio - Tam 5
if(qualidadeAgua != null){
contaTxt.append(Util.completaString(
Util.formataBigDecimal(qualidadeAgua.getNumeroCloroResidual(),2,true),5));
}else{
contaTxt.append(Util.completaString("",5));
}
// 64 - Cloro Valor Padrao - Tam 20
if(qualidadeAguaPadrao != null){
contaTxt.append(Util.completaString(qualidadeAguaPadrao.getDescricaoPadraoCloro(),20));
}else{
contaTxt.append(Util.completaString("",20));
}
// 65 - Fluor Valor Medio - Tam 5
if(qualidadeAgua != null){
contaTxt.append(Util.completaString(
Util.formataBigDecimal(qualidadeAgua.getNumeroIndiceFluor(),2,true),5));
}else{
contaTxt.append(Util.completaString("",5));
}
// 66 - Fluor Valor Padrao - Tam 20
if(qualidadeAguaPadrao != null){
contaTxt.append(Util.completaString(qualidadeAguaPadrao.getDescricaoPadraoFluor(),20));
}else{
contaTxt.append(Util.completaString("",20));
}
// 67 - Ferro Valor Medio - Tam 5
if(qualidadeAgua != null){
contaTxt.append(Util.completaString(
Util.formataBigDecimal(qualidadeAgua.getNumeroIndiceFerro(),2,true),5));
}else{
contaTxt.append(Util.completaString("",5));
}
// 68 - Ferro Valor Padrao - Tam 20
if(qualidadeAguaPadrao != null){
contaTxt.append(Util.completaString(qualidadeAguaPadrao.getDescricaoPadraoFerro(),20));
}else{
contaTxt.append(Util.completaString("",20));
}
// 69 - Coliformes Totais Valor Medio - Tam 10
if(qualidadeAgua == null || (qualidadeAgua.getNumeroIndiceColiformesTotais() == null ||
qualidadeAgua.getNumeroIndiceColiformesTotais().compareTo(new BigDecimal("0.00")) == 0 ) ){
contaTxt.append(Util.completaString("Ausente",10));
}else{
contaTxt.append(Util.completaString(
Util.formataBigDecimal(qualidadeAgua.getNumeroIndiceColiformesTotais(),2,true),10));
}
// 70 - Coliformes Totais Valor Padrao - Tam 20
if(qualidadeAguaPadrao != null){
contaTxt.append(Util.completaString(qualidadeAguaPadrao.getDescricaoPadraoColiformesTotais(),20));
}else{
contaTxt.append(Util.completaString("",20));
}
// 71 - Coliformes Fecais Valor Medio - Tam 10
if(qualidadeAgua == null || (qualidadeAgua.getNumeroIndiceColiformesFecais() == null ||
qualidadeAgua.getNumeroIndiceColiformesFecais().compareTo(new BigDecimal("0.00")) == 0 ) ){
contaTxt.append(Util.completaString("Ausente",10));
}else{
contaTxt.append(Util.completaString(
Util.formataBigDecimal(qualidadeAgua.getNumeroIndiceColiformesFecais(),2,true),10));
}
// 72 - Coliformes Fecais Valor Padrao - Tam 20
if(qualidadeAguaPadrao != null){
contaTxt.append(Util.completaString(qualidadeAguaPadrao.getDescricaoPadraoColiformesFecais(),20));
}else{
contaTxt.append(Util.completaString("",20));
}
// 73 - Representa��o Numerica Codigo de Barras - Tam 55
//Caso seja debito automatico n�o gera codigo de barras
if(contaTipo == 4 || contaTipo == 6){
contaTxt.append(Util.completaString("", 55));
contaTxt.append(Util.completaString("", 40));
}else{
String anoMesString = "" + emitirContaHelper.getAmReferencia();
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, 55));
// 74 - Codigo de Barras - Tam 40
String representacaoNumericaCodBarraSemDigito = "";
if (representacaoNumericaCodBarra != null) {
representacaoNumericaCodBarraSemDigito = representacaoNumericaCodBarra
.substring(0, 11)
+ representacaoNumericaCodBarra.substring(12, 23)
+ representacaoNumericaCodBarra.substring(24, 35)
+ representacaoNumericaCodBarra.substring(36, 47);
}
// Cria o objeto para gerar o c�digode barras no
// padr�o intercalado 2 de 5
Interleaved2of5 codigoBarraIntercalado2de5 = new Interleaved2of5();
// Recupera a representa��o n�merica do c�digo de
// barras sem os d�gitos verificadores
if (representacaoNumericaCodBarraSemDigito != null &&
!representacaoNumericaCodBarraSemDigito.equals("")) {
contaTxt.append(
Util.completaString(
codigoBarraIntercalado2de5.encodeValue(
representacaoNumericaCodBarraSemDigito),40));
} else {
contaTxt.append(Util.completaString("", 40));
}
}
// 75 - Origem - Tam 3
if(emitirContaHelper.getDebitoCreditoSituacaoAtualConta() != null){
if(emitirContaHelper.getDebitoCreditoSituacaoAtualConta().intValue() == 0){
contaTxt.append(Util.completaString("1-9", 3));
}else if(emitirContaHelper.getDebitoCreditoSituacaoAtualConta().intValue() == 1){
contaTxt.append(Util.completaString("2-7", 3));
}else if(emitirContaHelper.getDebitoCreditoSituacaoAtualConta().intValue() == 2){
contaTxt.append(Util.completaString("3-5", 3));
}else{
contaTxt.append(Util.completaString("", 3));
}
}else{
contaTxt.append(Util.completaString("", 3));
}
// 76 - Data Limite para Pagamento - Tam 10
String dataLimite =
Util.formatarData(emitirContaHelper.getDataValidadeConta());
contaTxt.append(Util.completaString(dataLimite,10));
// 77 - Grupo Faturamento - Tam 3
String grupo = "";
if(faturamentoGrupo != null){
grupo = faturamentoGrupo.getId().toString();
}
contaTxt.append(Util.completaString(grupo,3));
// incrementa o sequencial de impressao
sequencialImpressao =
atualizaSequencial(sequencialImpressao,situacao, metadeColecao);
//78 - Sequencial de Impressao - Tam 7
String sequencialImpressaoFormatada =
Util.adicionarZerosEsquedaNumero(6,""+ sequencialImpressao);
sequencialImpressaoFormatada =
sequencialImpressaoFormatada.substring(0, 3)
+ "."
+ sequencialImpressaoFormatada.substring(3, 6);
contaTxt.append(Util.completaString(""+ sequencialImpressaoFormatada,7));
//79 - Informa��o para entrega do usuario responsavel - Tam 16
Object[] arrayRota = null;
if(contaTipo == 3 || contaTipo == 6){
if(emitirContaHelper.getIdRotaEntrega() != null){
Object[] arrayPesquisaRota =
this.repositorioCadastro.
pesquisarDadosRotaEntregaContaPorRota(
new Integer(emitirContaHelper.getIdRotaEntrega()));
arrayRota = new Object[4];
arrayRota[0] = arrayPesquisaRota[0];
arrayRota[1] = arrayPesquisaRota[1];
arrayRota[2] = arrayPesquisaRota[2];
arrayRota[3] = emitirContaHelper.getNumeroSequencialRotaEntrega();
}else if (emitirContaHelper.getIdClienteResponsavel() != null &&
!emitirContaHelper.getIdClienteResponsavel().equals("")) {
arrayRota =
this.repositorioClienteImovel.
pesquisarCodigoSequencialRotaPorUsuario(
new Integer(emitirContaHelper.getIdClienteResponsavel()));
}
}
if(arrayRota != null){
Integer idLocalidade = (Integer) arrayRota[0];
Integer codigoSetor = (Integer) arrayRota[1];
Short codigoRota = (Short) arrayRota[2];
Integer sequencialRota = (Integer) arrayRota[3];
String numeroQuadraEntrega = null;
if(emitirContaHelper.getNumeroQuadraEntrega() != null){
numeroQuadraEntrega = emitirContaHelper.getNumeroQuadraEntrega().toString();
}
contaTxt.append(Util.adicionarZerosEsquedaNumero(3,idLocalidade.toString()));
contaTxt.append(".");
contaTxt.append(Util.adicionarZerosEsquedaNumero(3,codigoSetor.toString()));
contaTxt.append(".");
contaTxt.append(Util.adicionarZerosEsquedaNumero(4,numeroQuadraEntrega));
contaTxt.append(".");
contaTxt.append(Util.adicionarZerosEsquedaNumero(3,codigoRota.toString()));
contaTxt.append(".");
contaTxt.append(Util.adicionarZerosEsquedaNumero(4,sequencialRota.toString()));
}else{
contaTxt.append(Util.completaString("", 21));
}
//80 - Matricula do Funcionario para desc. em folha - Tam 8
if(emitirContaHelper.getIdFuncionario() != null){
contaTxt.append(Util.completaString(emitirContaHelper.getIdFuncionario().toString(), 8));
}else{
contaTxt.append(Util.completaString("", 8));
}
//81 - Nome do Funcionario para desc. em folha - Tam 70
if(emitirContaHelper.getNomeFuncionario() != null){
contaTxt.append(Util.completaString(emitirContaHelper.getNomeFuncionario(), 70));
}else{
contaTxt.append(Util.completaString("", 70));
}
// txt recupera a string
// builder
// da
// conta da
// lista
// de
// contas
contasTxtLista.append(contaTxt.toString());
contasTxtLista.append(System.getProperty("line.separator"));
contaTxt = null;
// adiciona o id da
// conta e o sequencial
// no para serem
// atualizados
mapAtualizaSequencial.put(emitirContaHelper.getIdConta(),sequencialImpressao);
if(flagTerminou && ehFaturamentoAntecipado){
if(anoMesReferenciaFaturamentoAntecipado != null &&
anoMesReferenciaFaturamento.intValue() != anoMesReferenciaFaturamentoAntecipado.intValue()){
anoMesReferenciaFaturamento = anoMesReferenciaFaturamentoAntecipado;
flagTerminou = false;
numeroIndiceAntecipado = 0;
}
}
}// 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;
if(ehFaturamentoAntecipado){
if(anoMesReferenciaFaturamentoAntecipado != null &&
anoMesReferenciaFaturamento.intValue() != anoMesReferenciaFaturamentoAntecipado.intValue()){
anoMesReferenciaFaturamento = anoMesReferenciaFaturamentoAntecipado;
flagTerminou = false;
numeroIndiceAntecipado = 0;
}
}
}
numeroIndice = numeroIndice + 1000;
if(mapAtualizaSequencial != null){
System.out.println("NUMERO_INDICE_ANTECIPADO:"+numeroIndiceAntecipado);
System.out.println("NUMERO_INDICE:"+numeroIndice);
System.out.println("QTD_CONTAS:"+quantidadeContas);
repositorioFaturamento
.atualizarSequencialContaImpressao(mapAtualizaSequencial);
}
mapAtualizaSequencial = null;
}// fim la�o if da pagina��o
String idGrupoFaturamento = null;
if (faturamentoGrupo == null) {
idGrupoFaturamento = "G";
} else {
idGrupoFaturamento = "G" + faturamentoGrupo.getId();
}
String nomeZip = null;
switch (tipoConta) {
case 0:
nomeZip = "CONTA_NORMAL"+"_"+idGrupoFaturamento+mesReferencia;
break;
case 1:
nomeZip = "CONTA_OUTRO_ENDERECO"+"_"+idGrupoFaturamento+mesReferencia;
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 *************
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;
} 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);
}
}
/**
* [UC0099] Emitir TXT de Fatura de Cliente Respons�vel
*
* @author Rafael Pinto
* @date 13/08/2007
*
* @param colecaoFatura,anoMesFaturamentoCorrente
* @throws ControladorException
*/
public void emitirFaturaClienteResponsavel(Collection<Fatura> colecaoFatura,
Integer anoMesFaturamentoCorrente) throws ControladorException, IOException {
// Ordena a cole��o de faturas pelo c�digo do cliente respons�vel
Collections.sort((List) colecaoFatura, new Comparator() {
public int compare(Object a, Object b) {
Integer cliente1 = ((Fatura) a).getCliente().getId();
Integer cliente2 = ((Fatura) b).getCliente().getId();
return cliente1.compareTo(cliente2);
}
});
// Cria a vari�vel que vai armazenar o txt de fatura
StringBuilder arquivoFaturaTXT = new StringBuilder();
// Caso a cole��o de faturas esteja preenchida
// Emiti todas as faturas informadas
if (colecaoFatura != null) {
// Cria o sequ�ncial da fatura
int quantidadeFaturas = 0;
Integer quantidadeRegistros = FaturaItem.QTD_ITENS_RELATORIO_FATURA;
Collection<NacionalFeriado> colecaoNacionalFeriado =
getControladorUtil().pesquisarFeriadosNacionais();
// La�o para emitir todas as faturas
for (Fatura fatura : colecaoFatura) {
try {
quantidadeFaturas++;
System.out.println("QUANTIDADE FATURAS CLIENTE RESPONSAVEL :"+ quantidadeFaturas);
// 1 - Numero da Fatura - Tam 9
String numeroFatura = Util.completaString(fatura.getId().toString(),9);
// 2 - Responsavel pelo Pagamento - Tam 50
Cliente cliente = getControladorCliente().pesquisarCliente(fatura.getCliente().getId());
String responsavelPagamento = Util.completaString(cliente.getNome(),50);
// 3.1 - Endere�o de Correspondencia (Parte 1) - Tam 100
// 3.2 - Endere�o de Correspondencia (Bairro) (Parte 2) - Tam 30
// 3.3 - Endere�o de Correspondencia (Municipio,Uf,Cep) (Parte 3) - Tam 41
String enderecoParte1 = "";
String bairro = "";
String municipio = "";
String uf = "";
String cep = "";
String[] endereco =
getControladorEndereco().pesquisarEnderecoClienteAbreviadoDividido(fatura.getCliente().getId());
// endere�o sem municipio e unidade federa��o
enderecoParte1 = Util.completaString(endereco[0], 100);
// nome do bairro
bairro = Util.completaString(endereco[3], 30);
// nome do municipio
municipio = Util.completaString(endereco[1], 30);
// sigla da unidade federa��o
uf = Util.completaString(endereco[2], 2);
if(endereco[4] != null && !endereco[4].equals("")){
Cep objetoCep = new Cep();
objetoCep.setCodigo(new Integer(endereco[4]));
cep = Util.completaString(objetoCep.getCepFormatado(), 9);
}else{
cep = Util.completaString("", 9);
}
// 4 - M�s/Ano - Tam 7
String mesAno =
Util.completaString(Util.formatarAnoMesParaMesAno(fatura.getAnoMesReferencia()),7);
// 5 - Tipo do Cliente Respons�vel - Tam 50
String tipoCliente = Util.completaString(cliente.getClienteTipo().getDescricao(), 50);
// 7 - Data de Emiss�o - Tam 10
String dataEmissao = Util.completaString(Util.formatarData(fatura.getEmissao()), 10);
// 8 - Data de Vencimento - Tam 10
String dataVencimento = Util.completaString(Util.formatarData(fatura.getVencimento()), 10);
// 9 - Valor Total - Tam 14
String valorTotal = Util.completaString(Util.formatarMoedaReal(fatura.getDebito()),14);
// 10 - Sequencia da Impressao
String sequencialImpressao = Util.completaString(""+quantidadeFaturas,7);
// 11 - Representa��o Numerica do c�digo de Barras - Tam 55
// Formata o ano/m�s em m�s/ano de refer�ncia da
// conta no formato MM/AAAA
String mesAnoReferenciaConta = Util
.formatarAnoMesParaMesAno(fatura
.getAnoMesReferencia());
// Formata o ano/m�s em m�s/ano de refer�ncia da
// conta no formato MMAAAA(sem a barra)
String mesAnoReferenciaContaSemABarra = mesAnoReferenciaConta
.substring(0, 2)
+ mesAnoReferenciaConta.substring(3, 7);
// Obt�mo d�gito verificador da refer�ncia da conta
// no modulo 10(dez)
Integer digitoVerificadorReferenciaContaModulo10 = Util
.obterDigitoVerificadorModulo10(new Long(
mesAnoReferenciaContaSemABarra));
// Vari�vel que vai armazenar a representa��o
// num�rica do c�digo de barras
String representacaoNumericaCodBarra = "";
// Obt�m a representa��o num�rica do c�digode
// barra
representacaoNumericaCodBarra =
Util.completaString(
this.getControladorArrecadacao().obterRepresentacaoNumericaCodigoBarra(
7,
fatura.getDebito(),
null,
null,
mesAnoReferenciaContaSemABarra,
digitoVerificadorReferenciaContaModulo10,
null, null, null, null,
cliente.getId(),
fatura.getSequencial(), null
),55
);
// 12 - C�digo de Barras da Fatura - Tam 112
Interleaved2of5 codigoBarraIntercalado2de5 = new Interleaved2of5();
// Recupera a representa��o n�merica do c�digo de
// barras sem os d�gitos verificadores
String representacaoCodigoBarrasSemDigitoVerificador =
representacaoNumericaCodBarra.substring(0, 11) +
representacaoNumericaCodBarra.substring(12, 23) +
representacaoNumericaCodBarra.substring(24, 35) +
representacaoNumericaCodBarra.substring(36, 47);
String codigoBarrasFatura =
Util.completaString(codigoBarraIntercalado2de5.encodeValue(
representacaoCodigoBarrasSemDigitoVerificador),112);
// 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);
FiltroQualidadeAguaPadrao filtroQualidadeAguaPadrao = new FiltroQualidadeAguaPadrao();
Collection colecaoQualidadeAguaPadrao =
getControladorUtil().pesquisar(filtroQualidadeAguaPadrao,
QualidadeAguaPadrao.class.getName());
QualidadeAguaPadrao qualidadeAguaPadrao = null;
if(colecaoQualidadeAguaPadrao != null && !colecaoQualidadeAguaPadrao.isEmpty()){
qualidadeAguaPadrao =
(QualidadeAguaPadrao) colecaoQualidadeAguaPadrao.iterator().next();
}
FiltroQualidadeAgua filtroQualidadeAgua = new FiltroQualidadeAgua();
filtroQualidadeAgua.adicionarParametro(new ParametroNulo(
FiltroQualidadeAgua.LOCALIDADE_ID));
filtroQualidadeAgua.adicionarParametro(new ParametroSimples(
FiltroQualidadeAgua.ANO_MES_REFERENCIA,
fatura.getAnoMesReferencia()));
Collection colecaoQualidadeAgua =
getControladorUtil().pesquisar(filtroQualidadeAgua,
QualidadeAgua.class.getName());
QualidadeAgua qualidadeAgua = null;
if(colecaoQualidadeAgua != null && !colecaoQualidadeAgua.isEmpty()){
qualidadeAgua =
(QualidadeAgua) colecaoQualidadeAgua.iterator().next();
}
// 13 - Turbidez Valor Medio - Tam 5
String turbidezValorMedio = "";
if(qualidadeAgua != null){
turbidezValorMedio = Util.completaString(
Util.formataBigDecimal(qualidadeAgua.getNumeroIndiceTurbidez(),2,true),5);
}else{
turbidezValorMedio = Util.completaString("",5);
}
// 14 - Turbidez Valor Padrao - Tam 20
String turbidezValorPadrao = "";
if(qualidadeAguaPadrao != null){
turbidezValorPadrao = Util.completaString(
qualidadeAguaPadrao.getDescricaoPadraoTurbidez(),20);
}else{
turbidezValorPadrao = Util.completaString("",20);
}
// 15 - Ph Valor Medio - Tam 5
String phValorMedio = "";
if(qualidadeAgua != null){
phValorMedio = Util.completaString(
Util.formataBigDecimal(qualidadeAgua.getNumeroIndicePh(),2,true),5);
}else{
phValorMedio = Util.completaString("",5);
}
// 16 - Ph Valor Padrao - Tam 20
String phValorPadrao = "";
if(qualidadeAguaPadrao != null){
phValorPadrao = Util.completaString(qualidadeAguaPadrao.getDescricaoPadraoPh(),20);
}else{
phValorPadrao = Util.completaString("",20);
}
// 17 - Cor Valor Medio - Tam 5
String corValorMedio = "";
if(qualidadeAgua != null){
corValorMedio = Util.completaString(
Util.formataBigDecimal(qualidadeAgua.getNumeroIndiceCor(),2,true),5);
}else{
corValorMedio = Util.completaString("",5);
}
// 18 - Cor Valor Padrao - Tam 20
String corValorPadrao = "";
if(qualidadeAguaPadrao != null){
corValorPadrao = Util.completaString(qualidadeAguaPadrao.getDescricaoPadraoCor(),20);
}else{
corValorPadrao = Util.completaString("",20);
}
// 19 - Cloro Valor Medio - Tam 5
String cloroValorMedio = "";
if(qualidadeAgua != null){
cloroValorMedio = Util.completaString(
Util.formataBigDecimal(qualidadeAgua.getNumeroCloroResidual(),2,true),5);
}else{
cloroValorMedio = Util.completaString("",5);
}
// 20 - Cloro Valor Padrao - Tam 20
String cloroValorPadrao = "";
if(qualidadeAguaPadrao != null){
cloroValorPadrao = Util.completaString(qualidadeAguaPadrao.getDescricaoPadraoCloro(),20);
}else{
cloroValorPadrao = Util.completaString("",20);
}
// 21 - Fluor Valor Medio - Tam 5
String fluorValorMedio = "";
if(qualidadeAgua != null){
fluorValorMedio = Util.completaString(
Util.formataBigDecimal(qualidadeAgua.getNumeroIndiceFluor(),2,true),5);
}else{
fluorValorMedio = Util.completaString("",5);
}
// 22 - Fluor Valor Padrao - Tam 20
String fluorValorPadrao = "";
if(qualidadeAguaPadrao != null){
fluorValorPadrao = Util.completaString(qualidadeAguaPadrao.getDescricaoPadraoFluor(),20);
}else{
fluorValorPadrao = Util.completaString("",20);
}
// 23 - Ferro Valor Medio - Tam 5
String ferroValorMedio = "";
if(qualidadeAgua != null){
ferroValorMedio = Util.completaString(
Util.formataBigDecimal(qualidadeAgua.getNumeroIndiceFerro(),2,true),5);
}else{
ferroValorMedio = Util.completaString("",5);
}
// 24 - Ferro Valor Padrao - Tam 20
String ferroValorPadrao = "";
if(qualidadeAguaPadrao != null){
ferroValorPadrao = Util.completaString(qualidadeAguaPadrao.getDescricaoPadraoFerro(),20);
}else{
ferroValorPadrao = Util.completaString("",20);
}
// 25 - Coliformes Totais Valor Medio - Tam 10
String coliformesTotaisValorMedio = "";
if(qualidadeAgua == null || (qualidadeAgua.getNumeroIndiceColiformesTotais() == null ||
qualidadeAgua.getNumeroIndiceColiformesTotais().compareTo(new BigDecimal("0.00")) == 0 ) ){
coliformesTotaisValorMedio = Util.completaString("Ausente",10);
}else{
coliformesTotaisValorMedio = Util.completaString(
Util.formataBigDecimal(qualidadeAgua.getNumeroIndiceColiformesTotais(),2,true),10);
}
// 26 - Coliformes Totais Valor Padrao - Tam 20
String coliformesTotaisValorPadrao = "";
if(qualidadeAguaPadrao != null){
coliformesTotaisValorPadrao =
Util.completaString(qualidadeAguaPadrao.getDescricaoPadraoColiformesTotais(),20);
}else{
coliformesTotaisValorPadrao = Util.completaString("",20);
}
// 27 - Coliformes Fecais Valor Medio - Tam 10
String coliformesFecaisValorMedio = "";
if(qualidadeAgua == null || (qualidadeAgua.getNumeroIndiceColiformesFecais() == null ||
qualidadeAgua.getNumeroIndiceColiformesFecais().compareTo(new BigDecimal("0.00")) == 0 ) ){
coliformesFecaisValorMedio = Util.completaString("Ausente",10);
}else{
coliformesFecaisValorMedio = Util.completaString(
Util.formataBigDecimal(qualidadeAgua.getNumeroIndiceColiformesFecais(),2,true),10);
}
// 28 - Coliformes Fecais Valor Padrao - Tam 20
String coliformesFecaisValorPadrao = "";
if(qualidadeAguaPadrao != null){
coliformesFecaisValorPadrao =
Util.completaString(qualidadeAguaPadrao.getDescricaoPadraoColiformesFecais(),20);
}else{
coliformesFecaisValorPadrao = Util.completaString("",20);
}
// 29 - Vencimento Alternativo 1 - Tam 10
// 30 - Vencimento Alternativo 2 - Tam 10
// 31 - Vencimento Alternativo 3 - Tam 10
// 32 - Vencimento Alternativo 4 - Tam 10
// 33 - Vencimento Alternativo 5 - Tam 10
// 34 - Vencimento Alternativo 6 - Tam 10
Date dataVencimentoFatura = fatura.getVencimento();
Date dataSubtraida = null;
String datasVencimentos = Util.formatarData(dataVencimentoFatura);
for (int i = 0; i < 5; i++) {
boolean naoEhValida = true;
while(naoEhValida){
if(dataSubtraida == null){
dataSubtraida = Util.adicionarNumeroDiasDeUmaData(dataVencimentoFatura,-2);
}else{
dataSubtraida = Util.adicionarNumeroDiasDeUmaData(dataSubtraida,-2);
}
// N�o considera os feriados municipais
if(Util.ehDiaUtil(dataSubtraida,colecaoNacionalFeriado,null)){
datasVencimentos = Util.formatarData(dataSubtraida)+datasVencimentos;
naoEhValida = false;
}else{
dataSubtraida = Util.adicionarNumeroDiasDeUmaData(dataSubtraida,+1);
}
}
}
// Obt�m a cole��o dos itens da fatura atual
List<FaturaItem> colecaoFaturaItem =
(ArrayList) repositorioFaturamento.pesquisarItemsFatura(fatura.getId());
BigDecimal valorTotalImpostos = new BigDecimal("0.00");
// Caso a cole��o de itens da fatura estejam preenchidos
if (colecaoFaturaItem != null && colecaoFaturaItem.size() > 0) {
// 6 - Quantidade Itens da Fatura - Tam 4
String quantidadeItemFatura = Util.completaString(""+colecaoFaturaItem.size(),4);
// Calcula a quantidade de p�ginas
Integer quantidadePaginas =
((Double) Math.ceil(Double.parseDouble(quantidadeItemFatura) / quantidadeRegistros)).intValue();
int quantidadeItens = 0;
for (int i = 1; i <= quantidadePaginas; i++) {
//1
arquivoFaturaTXT.append(numeroFatura);
//2
arquivoFaturaTXT.append(responsavelPagamento);
//3
arquivoFaturaTXT.append(enderecoParte1);
arquivoFaturaTXT.append(bairro);
arquivoFaturaTXT.append(municipio);
arquivoFaturaTXT.append(uf);
arquivoFaturaTXT.append(cep);
//4
arquivoFaturaTXT.append(mesAno);
//5
arquivoFaturaTXT.append(tipoCliente);
//6
arquivoFaturaTXT.append(quantidadeItemFatura);
//7
arquivoFaturaTXT.append(dataEmissao);
//8
arquivoFaturaTXT.append(dataVencimento);
//9
arquivoFaturaTXT.append(valorTotal);
//10
arquivoFaturaTXT.append(sequencialImpressao);
//11
arquivoFaturaTXT.append(representacaoNumericaCodBarraFormatada);
//S� deve ser gerado na �ltima P�gina de cada Fatura
if(i == quantidadePaginas){
//12
arquivoFaturaTXT.append(codigoBarrasFatura);
}else{
arquivoFaturaTXT.append(Util.completaString("",112));
}
//13
arquivoFaturaTXT.append(turbidezValorMedio);
//14
arquivoFaturaTXT.append(turbidezValorPadrao);
//15
arquivoFaturaTXT.append(phValorMedio);
//16
arquivoFaturaTXT.append(phValorPadrao);
//17
arquivoFaturaTXT.append(corValorMedio);
//18
arquivoFaturaTXT.append(corValorPadrao);
//19
arquivoFaturaTXT.append(cloroValorMedio);
//20
arquivoFaturaTXT.append(cloroValorPadrao);
//21
arquivoFaturaTXT.append(fluorValorMedio);
//22
arquivoFaturaTXT.append(fluorValorPadrao);
//23
arquivoFaturaTXT.append(ferroValorMedio);
//24
arquivoFaturaTXT.append(ferroValorPadrao);
//25
arquivoFaturaTXT.append(coliformesTotaisValorMedio);
//26
arquivoFaturaTXT.append(coliformesTotaisValorPadrao);
//27
arquivoFaturaTXT.append(coliformesFecaisValorMedio);
//28
arquivoFaturaTXT.append(coliformesFecaisValorPadrao);
//29,30,31,32,33,34
arquivoFaturaTXT.append(datasVencimentos);
for (int j = 0; j < quantidadeRegistros; j++) {
if(quantidadeItens >= colecaoFaturaItem.size()){
arquivoFaturaTXT.append(Util.completaString("",82));
}else{
FaturaItem faturaItem =
(FaturaItem) colecaoFaturaItem.get(quantidadeItens);
// 35.1 - Nome do Usuario - Tam 50
String nomeUsuario =
Util.completaString(
this.getControladorCliente().pesquisarNomeClientePorImovel(
faturaItem.getImovel().getId()),50);
// 35.2 - Matricula do Imovel - Tam 9
String matriculaImovel =
Util.adicionarZerosEsquedaNumero(9,
Util.retornaMatriculaImovelFormatada(faturaItem.getImovel().getId()));
valorTotalImpostos = valorTotalImpostos.add(faturaItem.getValorImposto());
// 35.3 - Consumo - Tam 9
String consumo = Util.completaString(faturaItem.getNumeroConsumo().toString(),9);
// 35.4 - Valor da Conta - Tam 14
BigDecimal valorContaBruto = faturaItem.getValorConta().add(faturaItem.getValorImposto());
String valorConta =
Util.completaString(Util.formatarMoedaReal(valorContaBruto),14);
//35.1
arquivoFaturaTXT.append(nomeUsuario);
//35.2
arquivoFaturaTXT.append(matriculaImovel);
//35.3
arquivoFaturaTXT.append(consumo);
//35.4
arquivoFaturaTXT.append(valorConta);
quantidadeItens++;
}
}
//36 Valor Bruto - Tam 14
BigDecimal valTotalBruto = fatura.getDebito().add(valorTotalImpostos);
String valorTotalBruto = Util.completaString(Util.formatarMoedaReal(valTotalBruto),14);
arquivoFaturaTXT.append(valorTotalBruto);
//37 Valor Impostos
String valorTotImpostos = Util.completaString(Util.formatarMoedaReal(valorTotalImpostos),14);
arquivoFaturaTXT.append(valorTotImpostos);
arquivoFaturaTXT.append(System.getProperty("line.separator"));
}
}
// Erro no reposit�rio
} catch (ErroRepositorioException ex) {
// Seta o roolback na base
// sessionContext.setRollbackOnly();
// Levanta a exce��o para o usu�rio
throw new ControladorException("erro.sistema", ex);
}
}
String mesReferencia = anoMesFaturamentoCorrente.toString().substring(4, 6);
String anoReferencia = anoMesFaturamentoCorrente.toString().substring(0, 4);
String nomeZip = "FATURAS_CLIENTE_RESPONSAVEL_" + mesReferencia+ "_" + anoReferencia;
BufferedWriter out = null;
ZipOutputStream zos = null;
File compactadoTipo = new File(nomeZip + ".zip");
File leituraTipo = new File(nomeZip + ".txt");
if (arquivoFaturaTXT != null && arquivoFaturaTXT.length() != 0) {
try {
System.out.println("CRIANDO ZIP");
zos = new ZipOutputStream(new FileOutputStream(compactadoTipo));
out = new BufferedWriter(new OutputStreamWriter(
new FileOutputStream(leituraTipo.getAbsolutePath())));
out.write(arquivoFaturaTXT.toString());
out.flush();
ZipUtil.adicionarArquivo(zos, leituraTipo);
zos.close();
leituraTipo.delete();
out.close();
} catch (IOException ex) {
throw new ControladorException("erro.sistema", ex);
} catch (Exception e) {
throw new ControladorException("erro.sistema", e);
}
nomeZip = null;
out = null;
zos = null;
compactadoTipo = null;
leituraTipo = null;
}
this.emitirRelacaoAnaliticaFaturas(colecaoFatura,anoMesFaturamentoCorrente);
this.getControladorRelatorioFaturamento().emitirRelacaoSinteticaFaturas(colecaoFatura,anoMesFaturamentoCorrente);
}
}
/**
* [UC0482]Emitir 2� Via de Conta
*
* @author Vivianne Sousa
* @date 21/08/2007
*
* @param colecaoConta
* @throws ControladorException
*/
public Collection<EmitirContaHelper> emitir2ViaContasHistorico(
Collection idsContaEP, boolean cobrarTaxaEmissaoConta,Short contaSemCodigoBarras)
throws ControladorException {
Collection<EmitirContaHelper> colecaoEmitirContaHelper = new ArrayList();
Collection colecaoNacionalFeriado = getControladorUtil().pesquisarFeriadosNacionais();
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[] enderecoArray =
this.getControladorEndereco().pesquisarEnderecoFormatadoDividido(emitirContaHelper.getIdImovel());
if(enderecoArray != null){
// 3 - Endere�o parte 1
emitirContaHelper.setEnderecoImovel(Util.completaString(enderecoArray[0],100));
// 4 - Endere�o parte 2 (Bairro)
emitirContaHelper.setEnderecoLinha2(Util.completaString(enderecoArray[3],30));
// 5 - Endere�o parte 3(Municipio,Uf,Cep)
String restoEndereco = "";
if(enderecoArray[1] != null){
restoEndereco = enderecoArray[1];
}
if(enderecoArray[2] != null){
if(restoEndereco.equals("")){
restoEndereco = enderecoArray[2];
}else{
restoEndereco = restoEndereco+" "+enderecoArray[2];
}
}
if(enderecoArray[4] != null){
Cep cep = new Cep();
cep.setCodigo(new Integer(enderecoArray[4]));
if(restoEndereco.equals("")){
restoEndereco = cep.getCepFormatado();
}else{
restoEndereco = restoEndereco+" "+cep.getCepFormatado();
}
}
emitirContaHelper.setEnderecoLinha3(Util.completaString(restoEndereco,41));
}else{
// 3 - Endere�o parte 1
// 4 - Endere�o parte 2
// 5 - Endere�o parte 3
emitirContaHelper.setEnderecoImovel("");
emitirContaHelper.setEnderecoLinha2("");
emitirContaHelper.setEnderecoLinha3("");
}
// 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.getIdImovel(), emitirContaHelper.getAmReferencia(), 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.getIdImovel(), emitirContaHelper.getAmReferencia(), 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.getIdImovel(), emitirContaHelper.getAmReferencia(), 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.getIdImovel(), emitirContaHelper.getAmReferencia(), 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.getIdImovel(), emitirContaHelper.getAmReferencia(), 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.getIdImovel(), emitirContaHelper.getAmReferencia(), 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.setConsumoMedio(consumoMedio);
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, true);
emitirContaHelper
.setColecaoContaLinhasDescricaoServicosTarifasTotalHelper(colecaoContaLinhasDescricaoServicosTarifasTotalHelper);
// StringBuilder linhasDescricaoServicosTarifasTotal =
// gerarLinhasDescricaoServicoTarifas(emitirContaHelper,
// consumoRateio, parmsMedicaoHistorico, tipoMedicao);
// emitirContaHelper.setLinhasDescricaoServicosTarifasTotal(linhasDescricaoServicosTarifasTotal);
// 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 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));
}
// emitirContaHelper.setDataValidade(Util
// .formatarData(emitirContaHelper.getDataValidadeConta()));
emitirContaHelper.setCategoriaImovel(obterCategoriaImovelConta(idContaEP));
FiltroQualidadeAgua filtroQualidadeAgua = new FiltroQualidadeAgua();
filtroQualidadeAgua.adicionarParametro(new ParametroSimples(FiltroQualidadeAgua.LOCALIDADE_ID, localidade.getId()));
filtroQualidadeAgua.adicionarParametro(new ParametroSimples(FiltroQualidadeAgua.ANO_MES_REFERENCIA, emitirContaHelper.getAmReferencia()));
Collection colecaoQualidadeAgua = getControladorUtil().pesquisar(filtroQualidadeAgua, QualidadeAgua.class.getName());
QualidadeAgua qualidadeAgua = null;
if(colecaoQualidadeAgua != null && !colecaoQualidadeAgua.isEmpty()){
qualidadeAgua = (QualidadeAgua) colecaoQualidadeAgua.iterator().next();
}
FiltroQualidadeAguaPadrao filtroQualidadeAguaPadrao = new FiltroQualidadeAguaPadrao();
Collection colecaoQualidadeAguaPadrao = getControladorUtil().pesquisar(filtroQualidadeAguaPadrao, QualidadeAguaPadrao.class.getName());
QualidadeAguaPadrao qualidadeAguaPadrao = null;
if(colecaoQualidadeAguaPadrao != null && !colecaoQualidadeAguaPadrao.isEmpty()){
qualidadeAguaPadrao = (QualidadeAguaPadrao) colecaoQualidadeAguaPadrao.iterator().next();
}
//Turbidez Valor Medio
if(qualidadeAgua != null){
emitirContaHelper.setValorMedioTurbidez(Util.completaString(
Util.formataBigDecimal(qualidadeAgua.getNumeroIndiceTurbidez(),2,true),5));
}else{
emitirContaHelper.setValorMedioTurbidez("");
}
//Turbidez Valor Padrao
if(qualidadeAguaPadrao != null){
emitirContaHelper.setPadraoTurbidez(qualidadeAguaPadrao.getDescricaoPadraoTurbidez());
}else{
emitirContaHelper.setPadraoTurbidez("");
}
//Ph Valor Medio
if(qualidadeAgua != null){
emitirContaHelper.setValorMedioPh(Util.completaString(
Util.formataBigDecimal(qualidadeAgua.getNumeroIndicePh(),2,true),5));
}else{
emitirContaHelper.setValorMedioPh("");
}
//Ph Valor Padrao
if(qualidadeAguaPadrao != null){
emitirContaHelper.setPadraoPh(qualidadeAguaPadrao.getDescricaoPadraoPh());
}else{
emitirContaHelper.setPadraoPh("");
}
//Cor Valor Medio
if(qualidadeAgua != null){
emitirContaHelper.setValorMedioCor(Util.completaString(
Util.formataBigDecimal(qualidadeAgua.getNumeroIndiceCor(),2,true),5));
}else{
emitirContaHelper.setValorMedioCor("");
}
//Cor Valor Padrao
if(qualidadeAguaPadrao != null){
emitirContaHelper.setPadraoCor(qualidadeAguaPadrao.getDescricaoPadraoCor());
}else{
emitirContaHelper.setPadraoCor("");
}
//Cloro Valor Medio
if(qualidadeAgua != null){
emitirContaHelper.setValorMedioCloro(Util.completaString(
Util.formataBigDecimal(qualidadeAgua.getNumeroCloroResidual(),2,true),5));
}else{
emitirContaHelper.setValorMedioCloro("");
}
//Cloro Valor Padrao
if(qualidadeAguaPadrao != null){
emitirContaHelper.setPadraoCloro(qualidadeAguaPadrao.getDescricaoPadraoCloro());
}else{
emitirContaHelper.setPadraoCloro("");
}
//Fluor Valor Medio
if(qualidadeAgua != null){
emitirContaHelper.setValorMedioFluor(Util.completaString(
Util.formataBigDecimal(qualidadeAgua.getNumeroIndiceFluor(),2,true),5));
}else{
emitirContaHelper.setValorMedioFluor("");
}
//Fluor Valor Padrao
if(qualidadeAguaPadrao != null){
emitirContaHelper.setPadraoFluor(qualidadeAguaPadrao.getDescricaoPadraoFluor());
}else{
emitirContaHelper.setPadraoFluor("");
}
//Ferro Valor Medio
if(qualidadeAgua != null){
emitirContaHelper.setValorMedioFerro(Util.completaString(
Util.formataBigDecimal(qualidadeAgua.getNumeroIndiceFerro(),2,true),5));
}else{
emitirContaHelper.setValorMedioFerro("");
}
//Ferro Valor Padrao
if(qualidadeAguaPadrao != null){
emitirContaHelper.setPadraoFerro(qualidadeAguaPadrao.getDescricaoPadraoFerro());
}else{
emitirContaHelper.setPadraoFerro("");
}
//Coliformes Totais Valor Medio
if(qualidadeAgua == null || (qualidadeAgua.getNumeroIndiceColiformesTotais() == null ||
qualidadeAgua.getNumeroIndiceColiformesTotais().compareTo(new BigDecimal("0.00")) == 0 ) ){
emitirContaHelper.setValorMedioColiformesTotais("Ausente");
}else{
emitirContaHelper.setValorMedioColiformesTotais(Util.completaString(
Util.formataBigDecimal(qualidadeAgua.getNumeroIndiceColiformesTotais(),2,true),10));
}
//Coliformes Totais Valor Padrao
if(qualidadeAguaPadrao != null){
emitirContaHelper.setPadraoColiformesTotais(qualidadeAguaPadrao.getDescricaoPadraoColiformesTotais());
}else{
emitirContaHelper.setPadraoColiformesTotais("");
}
//Coliformes Fecais Valor Medio
if(qualidadeAgua == null || (qualidadeAgua.getNumeroIndiceColiformesFecais() == null ||
qualidadeAgua.getNumeroIndiceColiformesFecais().compareTo(new BigDecimal("0.00")) == 0 ) ){
emitirContaHelper.setValorMedioColiformesfecais("Ausente");
}else{
emitirContaHelper.setValorMedioColiformesfecais(Util.completaString(
Util.formataBigDecimal(qualidadeAgua.getNumeroIndiceColiformesFecais(),2,true),10));
}
//Coliformes Fecais Valor Padrao
if(qualidadeAguaPadrao != null){
emitirContaHelper.setPadraoColiformesfecais(qualidadeAguaPadrao.getDescricaoPadraoColiformesFecais());
}else{
emitirContaHelper.setPadraoColiformesfecais("");
}
Integer tipoConta = null;
try {
tipoConta = repositorioFaturamento.pesquisarTipoConta(idContaEP);
} catch (ErroRepositorioException e) {
e.printStackTrace();
}
if (tipoConta != null){
String[] parmsMensagemConta =
obterMensagemConta(emitirContaHelper,sistemaParametro,tipoConta,colecaoNacionalFeriado);
//Mensagem 1
emitirContaHelper.setMsgConta(Util.completaString(parmsMensagemConta[0],40));
//Mensagem 2
emitirContaHelper.setMsgLinha1Conta(Util.completaString(parmsMensagemConta[1],65));
//Mensagem 3
emitirContaHelper.setMsgLinha2Conta(Util.completaString(parmsMensagemConta[2],65));
//Mensagem 4
emitirContaHelper.setDatasVencimento(Util.completaString(parmsMensagemConta[3],65));
//Mensagem 5
emitirContaHelper.setMsgLinha3Conta(Util.completaString(parmsMensagemConta[4],65));
//Mensagem 6
emitirContaHelper.setMsgLinha4Conta(Util.completaString(parmsMensagemConta[5],65));
//Mensagem 7
emitirContaHelper.setMsgLinha5Conta(Util.completaString(parmsMensagemConta[6],65));
}
colecaoEmitirContaHelper.add(emitirContaHelper);
if (cobrarTaxaEmissaoConta) {
this.gerarDebitoACobrarTaxaEmissaoConta(emitirContaHelper
.getIdImovel(), emitirContaHelper.getAmReferencia());
}
}
return colecaoEmitirContaHelper;
}
/**
* [UC0482] Emitir Segunda Via de Conta
*
* @author Vivianne Sousa
* @date 04/09/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());
// 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);
}
}
/**
* [UC0596] Inserir Qualidade de Agua
*
* @author K�ssia Albuquerque
* @date 06/08/2007
*
* @return
* @throws ControladorException
*/
public void inserirQualidadeAgua(QualidadeAgua qualidadeAgua,Collection colecaoQualidadeAgua,
Usuario usuarioLogado,QualidadeAguaPadrao qualidadeAguaPadrao) throws ControladorException{
if (colecaoQualidadeAgua!= null && !colecaoQualidadeAgua.isEmpty()){
Iterator IteratorColecaoQualidadeAgua = colecaoQualidadeAgua.iterator();
while (IteratorColecaoQualidadeAgua.hasNext()){
QualidadeAgua qualidadeAguaColecao = (QualidadeAgua)IteratorColecaoQualidadeAgua.next();
// -------- REGISTRAR TRANSA��O------------------
RegistradorOperacao registradorOperacao = new RegistradorOperacao( Operacao.OPERACAO_QUALIDADE_AGUA_INSERIR,
new UsuarioAcaoUsuarioHelper(usuarioLogado,UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO));
Operacao operacao = new Operacao();
operacao.setId(Operacao.OPERACAO_QUALIDADE_AGUA_INSERIR);
OperacaoEfetuada operacaoEfetuada = new OperacaoEfetuada();
operacaoEfetuada.setOperacao(operacao);
qualidadeAguaColecao.setOperacaoEfetuada(operacaoEfetuada);
qualidadeAguaColecao.adicionarUsuario(usuarioLogado, UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO);
registradorOperacao.registrarOperacao(qualidadeAguaColecao);
// ------------ REGISTRAR TRANSA��O----------------------------
getControladorUtil().inserir(qualidadeAguaColecao);
}
}else{
// [FS0005 - VERIFICAR EXIST�NCIA DA QUALIDADE DE �GUA PARA LOCALIDADE]
if ((qualidadeAgua.getSetorComercial()== null || qualidadeAgua.getSetorComercial().equals(""))
&& (qualidadeAgua.getLocalidade()!= null && !qualidadeAgua.getLocalidade().equals(""))){
FiltroQualidadeAgua filtroQualidadeAgua= new FiltroQualidadeAgua();
filtroQualidadeAgua.adicionarCaminhoParaCarregamentoEntidade("localidade");
filtroQualidadeAgua.adicionarParametro(new ParametroSimples(FiltroQualidadeAgua.ANO_MES_REFERENCIA,
qualidadeAgua.getAnoMesReferencia().toString()));
filtroQualidadeAgua.adicionarParametro(new ParametroSimples(FiltroQualidadeAgua.LOCALIDADE_ID,
qualidadeAgua.getLocalidade().getId().toString()));
filtroQualidadeAgua.adicionarParametro(new ParametroNulo(FiltroQualidadeAgua.SETOR_COMERCIAL_ID));
Collection colecaoExistenciaQualidadeAgua = getControladorUtil().pesquisar(filtroQualidadeAgua,
QualidadeAgua.class.getName());
if (colecaoExistenciaQualidadeAgua != null && !colecaoExistenciaQualidadeAgua.isEmpty()){
throw new ControladorException( "atencao.faturamento.qualidade_agua_existente", null,
qualidadeAgua.getLocalidade().getId().toString());
}
}else if ((qualidadeAgua.getSetorComercial()!= null && !qualidadeAgua.getSetorComercial().equals(""))
&& (qualidadeAgua.getLocalidade()!= null && !qualidadeAgua.getLocalidade().equals(""))){
// [FS0006 - VERIFICAR EXIST�NCIA DA QUALIDADE DE �GUA PARA SETOR COMERCIAL]
FiltroQualidadeAgua filtroQualidadeAgua= new FiltroQualidadeAgua();
filtroQualidadeAgua.adicionarCaminhoParaCarregamentoEntidade("localidade");
filtroQualidadeAgua.adicionarCaminhoParaCarregamentoEntidade("setorComercial");
filtroQualidadeAgua.adicionarParametro(new ParametroSimples(FiltroQualidadeAgua.ANO_MES_REFERENCIA,
qualidadeAgua.getAnoMesReferencia().toString()));
filtroQualidadeAgua.adicionarParametro(new ParametroSimples(FiltroQualidadeAgua.LOCALIDADE_ID,
qualidadeAgua.getLocalidade().getId().toString()));
filtroQualidadeAgua.adicionarParametro(new ParametroSimples(FiltroQualidadeAgua.SETOR_COMERCIAL_ID,
qualidadeAgua.getSetorComercial().getId().toString()));
Collection colecaoExistenciaQualidadeAgua = getControladorUtil().pesquisar(filtroQualidadeAgua,
QualidadeAgua.class.getName());
if (colecaoExistenciaQualidadeAgua != null && !colecaoExistenciaQualidadeAgua.isEmpty()){
QualidadeAgua qualidadeAguaExistente = (QualidadeAgua)colecaoExistenciaQualidadeAgua.iterator().next();
throw new ControladorException( "atencao.faturamento.qualidade_agua_existente_setor_comercial", null,
""+qualidadeAguaExistente.getLocalidade().getId()+"/" + qualidadeAguaExistente.getSetorComercial().getCodigo());
}
}
qualidadeAgua.setUltimaAlteracao(new Date());
// -------- REGISTRAR TRANSA��O------------------
RegistradorOperacao registradorOperacao = new RegistradorOperacao( Operacao.OPERACAO_QUALIDADE_AGUA_INSERIR,
new UsuarioAcaoUsuarioHelper(usuarioLogado,UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO));
Operacao operacao = new Operacao();
operacao.setId(Operacao.OPERACAO_QUALIDADE_AGUA_INSERIR);
OperacaoEfetuada operacaoEfetuada = new OperacaoEfetuada();
operacaoEfetuada.setOperacao(operacao);
qualidadeAgua.setOperacaoEfetuada(operacaoEfetuada);
qualidadeAgua.adicionarUsuario(usuarioLogado, UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO);
registradorOperacao.registrarOperacao(qualidadeAgua);
// ------------ REGISTRAR TRANSA��O-----------------
getControladorUtil().inserir(qualidadeAgua);
// ----------- INSERINDO QUALIDADE DE AGUA PADRAO -----------------
qualidadeAguaPadrao.setUltimaAlteracao(new Date());
getControladorUtil().atualizar(qualidadeAguaPadrao);
}
}
/**
* [UC0113] - Faturar Grupo de Faturamento
*
* Determina o tipo de conta que ser� associado na impress�o da conta, para
* caer 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;
}
}