package gcom.cobranca; import gcom.arrecadacao.ArrecadacaoForma; import gcom.arrecadacao.Arrecadador; import gcom.arrecadacao.ArrecadadorContratoTarifa; import gcom.arrecadacao.ControladorArrecadacaoLocal; import gcom.arrecadacao.ControladorArrecadacaoLocalHome; import gcom.arrecadacao.DeducaoTipo; import gcom.arrecadacao.Devolucao; import gcom.arrecadacao.FiltroArrecadador; import gcom.arrecadacao.FiltroDevolucao; import gcom.arrecadacao.IRepositorioArrecadacao; import gcom.arrecadacao.RepositorioArrecadacaoHBM; import gcom.arrecadacao.aviso.AvisoBancario; import gcom.arrecadacao.aviso.AvisoDeducoes; import gcom.arrecadacao.aviso.AvisoDeducoesPK; import gcom.arrecadacao.banco.Agencia; import gcom.arrecadacao.banco.ContaBancaria; import gcom.arrecadacao.debitoautomatico.DebitoAutomatico; import gcom.arrecadacao.pagamento.FiltroGuiaPagamento; import gcom.arrecadacao.pagamento.FiltroGuiaPagamentoCategoria; import gcom.arrecadacao.pagamento.FiltroPagamento; import gcom.arrecadacao.pagamento.GuiaPagamento; import gcom.arrecadacao.pagamento.GuiaPagamentoCategoria; import gcom.arrecadacao.pagamento.GuiaPagamentoCategoriaPK; import gcom.arrecadacao.pagamento.GuiaPagamentoItem; import gcom.arrecadacao.pagamento.GuiaPagamentoParcelamentoCartao; import gcom.arrecadacao.pagamento.GuiaPagamentoParcelamentoCartaoPK; import gcom.arrecadacao.pagamento.Pagamento; import gcom.arrecadacao.pagamento.PagamentoCartaoDebito; import gcom.arrecadacao.pagamento.PagamentoCartaoDebitoItem; import gcom.atendimentopublico.ControladorAtendimentoPublicoLocal; import gcom.atendimentopublico.ControladorAtendimentoPublicoLocalHome; import gcom.atendimentopublico.IRepositorioAtendimentoPublico; import gcom.atendimentopublico.RepositorioAtendimentoPublicoHBM; import gcom.atendimentopublico.ligacaoagua.CorteTipo; import gcom.atendimentopublico.ligacaoagua.FiltroLigacaoAgua; import gcom.atendimentopublico.ligacaoagua.FiltroLigacaoAguaSituacao; import gcom.atendimentopublico.ligacaoagua.LigacaoAgua; import gcom.atendimentopublico.ligacaoagua.LigacaoAguaSituacao; import gcom.atendimentopublico.ligacaoesgoto.ControladorLigacaoEsgotoLocal; import gcom.atendimentopublico.ligacaoesgoto.ControladorLigacaoEsgotoLocalHome; import gcom.atendimentopublico.ligacaoesgoto.FiltroLigacaoEsgotoSituacao; import gcom.atendimentopublico.ligacaoesgoto.LigacaoEsgotoSituacao; import gcom.atendimentopublico.ordemservico.ControladorOrdemServicoLocal; import gcom.atendimentopublico.ordemservico.ControladorOrdemServicoLocalHome; import gcom.atendimentopublico.ordemservico.FiltroOrdemServico; import gcom.atendimentopublico.ordemservico.FiltroServicoTipo; import gcom.atendimentopublico.ordemservico.FiscalizacaoSituacao; import gcom.atendimentopublico.ordemservico.OrdemServico; import gcom.atendimentopublico.ordemservico.OrdemServicoFiscSit; import gcom.atendimentopublico.ordemservico.OrdemServicoUnidade; import gcom.atendimentopublico.ordemservico.ServicoTipo; import gcom.atendimentopublico.registroatendimento.AtendimentoMotivoEncerramento; import gcom.atendimentopublico.registroatendimento.AtendimentoRelacaoTipo; import gcom.atendimentopublico.registroatendimento.EspecificacaoTipoValidacao; import gcom.atendimentopublico.registroatendimento.FiltroAtendimentoMotivoEncerramento; import gcom.atendimentopublico.registroatendimento.RegistroAtendimento; import gcom.batch.ControladorBatchLocal; import gcom.batch.ControladorBatchLocalHome; import gcom.batch.IRepositorioBatch; import gcom.batch.RepositorioBatchHBM; import gcom.batch.UnidadeProcessamento; import gcom.batch.auxiliarbatch.CobrancaDocumentoControleGeracao; import gcom.cadastro.ControladorCadastroLocal; import gcom.cadastro.ControladorCadastroLocalHome; import gcom.cadastro.EnvioEmail; import gcom.cadastro.IRepositorioCadastro; import gcom.cadastro.RepositorioCadastroHBM; import gcom.cadastro.cliente.Cliente; import gcom.cadastro.cliente.ClienteFone; import gcom.cadastro.cliente.ClienteGuiaPagamento; import gcom.cadastro.cliente.ClienteImovel; import gcom.cadastro.cliente.ClienteRelacaoTipo; import gcom.cadastro.cliente.ClienteTipo; import gcom.cadastro.cliente.ControladorClienteLocal; import gcom.cadastro.cliente.ControladorClienteLocalHome; import gcom.cadastro.cliente.EsferaPoder; import gcom.cadastro.cliente.FiltroCliente; import gcom.cadastro.cliente.FiltroClienteImovel; import gcom.cadastro.cliente.FiltroClienteRelacaoTipo; import gcom.cadastro.cliente.FiltroEsferaPoder; import gcom.cadastro.cliente.FoneTipo; import gcom.cadastro.cliente.IClienteConta; import gcom.cadastro.cliente.IRepositorioClienteImovel; import gcom.cadastro.cliente.RepositorioClienteImovelHBM; import gcom.cadastro.empresa.Empresa; import gcom.cadastro.empresa.FiltroEmpresa; import gcom.cadastro.endereco.ControladorEnderecoLocal; import gcom.cadastro.endereco.ControladorEnderecoLocalHome; import gcom.cadastro.endereco.FiltroLogradouroTipo; import gcom.cadastro.endereco.Logradouro; import gcom.cadastro.endereco.LogradouroTipo; import gcom.cadastro.geografico.Municipio; import gcom.cadastro.imovel.Categoria; import gcom.cadastro.imovel.ControladorImovelLocal; import gcom.cadastro.imovel.ControladorImovelLocalHome; import gcom.cadastro.imovel.FiltroCategoria; import gcom.cadastro.imovel.FiltroImovel; import gcom.cadastro.imovel.FiltroImovelCobrancaSituacao; import gcom.cadastro.imovel.FiltroImovelPerfil; import gcom.cadastro.imovel.FiltroSubCategoria; import gcom.cadastro.imovel.IRepositorioImovel; import gcom.cadastro.imovel.Imovel; import gcom.cadastro.imovel.ImovelCobrancaSituacao; import gcom.cadastro.imovel.ImovelContaEnvio; import gcom.cadastro.imovel.ImovelPerfil; import gcom.cadastro.imovel.ImovelSituacao; import gcom.cadastro.imovel.ImovelSituacaoTipo; import gcom.cadastro.imovel.ImovelSubcategoria; import gcom.cadastro.imovel.PocoTipo; import gcom.cadastro.imovel.RepositorioImovelHBM; import gcom.cadastro.imovel.Subcategoria; import gcom.cadastro.imovel.bean.GerarRelacaoDebitosHelper; import gcom.cadastro.imovel.bean.GerarRelacaoDebitosImovelHelper; import gcom.cadastro.imovel.bean.ImovelCobrancaSituacaoHelper; import gcom.cadastro.localidade.ControladorLocalidadeLocal; import gcom.cadastro.localidade.ControladorLocalidadeLocalHome; import gcom.cadastro.localidade.FiltroGerenciaRegional; import gcom.cadastro.localidade.FiltroLocalidade; import gcom.cadastro.localidade.FiltroQuadra; import gcom.cadastro.localidade.FiltroSetorComercial; import gcom.cadastro.localidade.FiltroUnidadeNegocio; import gcom.cadastro.localidade.GerenciaRegional; import gcom.cadastro.localidade.Localidade; import gcom.cadastro.localidade.Quadra; import gcom.cadastro.localidade.SetorComercial; import gcom.cadastro.localidade.UnidadeNegocio; import gcom.cadastro.sistemaparametro.FiltroSistemaParametro; import gcom.cadastro.sistemaparametro.NacionalFeriado; import gcom.cadastro.sistemaparametro.SistemaParametro; import gcom.cadastro.unidade.ControladorUnidadeLocal; import gcom.cadastro.unidade.ControladorUnidadeLocalHome; import gcom.cadastro.unidade.UnidadeOrganizacional; import gcom.cobranca.bean.CalcularAcrescimoPorImpontualidadeHelper; import gcom.cobranca.bean.CalcularValorDataVencimentoAnteriorHelper; import gcom.cobranca.bean.CalcularValorDescontoAntiguidadeDebitoHelper; import gcom.cobranca.bean.CancelarDocumentosCobrancaHelper; import gcom.cobranca.bean.CobrancaAcaoAtividadeHelper; import gcom.cobranca.bean.CobrancaAcaoHelper; import gcom.cobranca.bean.CobrancaCronogramaHelper; import gcom.cobranca.bean.CobrancaDocumentoHelper; import gcom.cobranca.bean.ConcluirParcelamentoDebitosHelper; import gcom.cobranca.bean.ConsultarTransferenciasDebitoHelper; import gcom.cobranca.bean.ContaValoresHelper; import gcom.cobranca.bean.DadosCobrancaDocumentoHelper; import gcom.cobranca.bean.DadosConsultaNegativacaoHelper; import gcom.cobranca.bean.DadosPesquisaCobrancaDocumentoHelper; import gcom.cobranca.bean.DebitoCreditoParcelamentoHelper; import gcom.cobranca.bean.DeterminarValorDescontoAcrescimosImpontualidadeHelper; import gcom.cobranca.bean.DeterminarValorDescontoPagamentoAVistaHelper; import gcom.cobranca.bean.EmissaoDocumentoCobrancaHelper; import gcom.cobranca.bean.EmitirDocumentoCobrancaHelper; import gcom.cobranca.bean.FiltrarDocumentoCobrancaHelper; import gcom.cobranca.bean.FiltrarRelacaoParcelamentoHelper; import gcom.cobranca.bean.FiltroSupressoesReligacoesReestabelecimentoHelper; import gcom.cobranca.bean.GerarAtividadeAcaoCobrancaHelper; import gcom.cobranca.bean.GerarResumoAcoesCobrancaCronogramaHelper; import gcom.cobranca.bean.GuiaPagamentoValoresHelper; import gcom.cobranca.bean.IncluirConfirmacaoParcelamentoHelper; import gcom.cobranca.bean.IndicadoresParcelamentoHelper; import gcom.cobranca.bean.NegociacaoOpcoesParcelamentoHelper; import gcom.cobranca.bean.ObterDadosConfirmarCartaoCreditoDebitoHelper; import gcom.cobranca.bean.ObterDebitoImovelOuClienteHelper; import gcom.cobranca.bean.ObterOpcoesDeParcelamentoHelper; import gcom.cobranca.bean.OpcoesParcelamentoHelper; import gcom.cobranca.bean.ParcelamentoCartaoCreditoHelper; import gcom.cobranca.bean.ParcelamentoRelatorioHelper; import gcom.cobranca.bean.PesquisarQtdeRotasSemCriteriosParaAcoesCobranca; import gcom.cobranca.bean.SituacaoEspecialCobrancaHelper; import gcom.cobranca.bean.TransferenciasDebitoHelper; import gcom.cobranca.bean.VerificarCriterioCobrancaParaImovelHelper; import gcom.cobranca.cobrancaporresultado.ConsultarComandosContasCobrancaEmpresaHelper; import gcom.cobranca.cobrancaporresultado.RegistrarArquivoTxtEncerramentoOSCobrancaHelper; import gcom.cobranca.contratoparcelamento.ContratoParcelamento; import gcom.cobranca.contratoparcelamento.ContratoParcelamentoItem; import gcom.cobranca.parcelamento.FiltroParcDesctoInativVista; import gcom.cobranca.parcelamento.FiltroParcelamento; import gcom.cobranca.parcelamento.FiltroParcelamentoDescontoAntiguidade; import gcom.cobranca.parcelamento.FiltroParcelamentoDescontoInatividade; import gcom.cobranca.parcelamento.FiltroParcelamentoFaixaValor; import gcom.cobranca.parcelamento.FiltroParcelamentoItem; import gcom.cobranca.parcelamento.FiltroParcelamentoPagamentoCartaoCredito; import gcom.cobranca.parcelamento.FiltroParcelamentoPerfil; import gcom.cobranca.parcelamento.FiltroParcelamentoQuantidadePrestacao; import gcom.cobranca.parcelamento.FiltroParcelamentoQuantidadeReparcelamento; import gcom.cobranca.parcelamento.ParcDesctoInativVista; import gcom.cobranca.parcelamento.Parcelamento; import gcom.cobranca.parcelamento.ParcelamentoDescontoAntiguidade; import gcom.cobranca.parcelamento.ParcelamentoDescontoInatividade; import gcom.cobranca.parcelamento.ParcelamentoFaixaDescontoBO; import gcom.cobranca.parcelamento.ParcelamentoFaixaValor; import gcom.cobranca.parcelamento.ParcelamentoItem; import gcom.cobranca.parcelamento.ParcelamentoMotivoDesfazer; import gcom.cobranca.parcelamento.ParcelamentoPagamentoCartaoCredito; import gcom.cobranca.parcelamento.ParcelamentoPerfil; import gcom.cobranca.parcelamento.ParcelamentoQuantidadePrestacao; import gcom.cobranca.parcelamento.ParcelamentoQuantidadePrestacaoHelper; import gcom.cobranca.parcelamento.ParcelamentoQuantidadeReparcelamento; import gcom.cobranca.parcelamento.ParcelamentoQuantidadeReparcelamentoHelper; import gcom.cobranca.parcelamento.ParcelamentoQuantidadeReparcelamentoRelatorioHelper; import gcom.cobranca.parcelamento.ParcelamentoSituacao; import gcom.cobranca.parcelamento.ParcelamentoTipo; import gcom.fachada.Fachada; import gcom.faturamento.ControladorFaturamentoLocal; import gcom.faturamento.ControladorFaturamentoLocalHome; import gcom.faturamento.FaturamentoAtividade; import gcom.faturamento.FaturamentoGrupo; import gcom.faturamento.FaturamentoSituacaoTipo; import gcom.faturamento.GuiaPagamentoGeral; import gcom.faturamento.IRepositorioFaturamento; import gcom.faturamento.QualidadeAgua; import gcom.faturamento.RepositorioFaturamentoHBM; import gcom.faturamento.bean.CalcularValoresAguaEsgotoHelper; import gcom.faturamento.bean.EmitirContaHelper; import gcom.faturamento.consumotarifa.ConsumoTarifa; import gcom.faturamento.conta.Conta; import gcom.faturamento.conta.ContaCategoria; import gcom.faturamento.conta.ContaCategoriaConsumoFaixa; import gcom.faturamento.conta.ContaGeral; import gcom.faturamento.conta.ContaImpostosDeduzidos; import gcom.faturamento.conta.ContaMotivoCancelamento; import gcom.faturamento.conta.ContaMotivoInclusao; import gcom.faturamento.conta.ContaMotivoRevisao; import gcom.faturamento.conta.FiltroConta; import gcom.faturamento.conta.FiltroContaCategoria; import gcom.faturamento.conta.FiltroContaCategoriaConsumoFaixa; import gcom.faturamento.conta.FiltroContaImpostosDeduzidos; import gcom.faturamento.conta.ImpostoDeduzidoHelper; import gcom.faturamento.credito.CreditoARealizar; import gcom.faturamento.credito.CreditoARealizarCategoria; import gcom.faturamento.credito.CreditoARealizarCategoriaPK; import gcom.faturamento.credito.CreditoARealizarGeral; import gcom.faturamento.credito.CreditoOrigem; import gcom.faturamento.credito.CreditoRealizado; import gcom.faturamento.credito.CreditoRealizadoCategoria; import gcom.faturamento.credito.CreditoRealizadoCategoriaPK; import gcom.faturamento.credito.CreditoTipo; import gcom.faturamento.credito.FiltroCreditoARealizar; import gcom.faturamento.credito.FiltroCreditoARealizarCategoria; import gcom.faturamento.credito.FiltroCreditoRealizado; import gcom.faturamento.credito.FiltroCreditoRealizadoCategoria; import gcom.faturamento.credito.FiltroCreditoTipo; import gcom.faturamento.debito.DebitoACobrar; import gcom.faturamento.debito.DebitoACobrarCategoria; import gcom.faturamento.debito.DebitoACobrarCategoriaPK; import gcom.faturamento.debito.DebitoACobrarGeral; import gcom.faturamento.debito.DebitoCobrado; import gcom.faturamento.debito.DebitoCobradoCategoria; import gcom.faturamento.debito.DebitoCobradoCategoriaPK; import gcom.faturamento.debito.DebitoCreditoSituacao; import gcom.faturamento.debito.DebitoTipo; import gcom.faturamento.debito.FiltroDebitoACobrar; import gcom.faturamento.debito.FiltroDebitoACobrarCategoria; import gcom.faturamento.debito.FiltroDebitoCobrado; import gcom.faturamento.debito.FiltroDebitoCobradoCategoria; import gcom.faturamento.debito.FiltroDebitoCreditoSituacao; import gcom.faturamento.debito.FiltroDebitoTipo; import gcom.financeiro.FinanciamentoTipo; import gcom.gerencial.bean.InformarDadosGeracaoResumoAcaoConsultaEventualHelper; import gcom.gerencial.bean.InformarDadosGeracaoResumoAcaoConsultaHelper; import gcom.gui.ActionServletException; import gcom.gui.cobranca.cobrancaporresultado.MovimentarOrdemServicoEncerrarOSHelper; import gcom.gui.cobranca.cobrancaporresultado.MovimentarOrdemServicoGerarOSHelper; import gcom.gui.portal.RelatorioDocumentosParcelamentoPortal; import gcom.gui.relatorio.cobranca.FaixaHelper; import gcom.gui.relatorio.cobranca.FiltroRelatorioDocumentosAReceberHelper; import gcom.interceptor.Interceptador; import gcom.interceptor.RegistradorOperacao; import gcom.micromedicao.ContratoEmpresaServico; import gcom.micromedicao.ControladorMicromedicaoLocal; import gcom.micromedicao.ControladorMicromedicaoLocalHome; import gcom.micromedicao.FiltroRota; import gcom.micromedicao.IRepositorioMicromedicao; import gcom.micromedicao.ItemServico; import gcom.micromedicao.RateioTipo; import gcom.micromedicao.RepositorioMicromedicaoHBM; import gcom.micromedicao.Rota; import gcom.micromedicao.bean.ConsultarHistoricoMedicaoIndividualizadaHelper; import gcom.micromedicao.bean.ConsumoHistoricoCondominio; import gcom.micromedicao.consumo.ConsumoAnormalidade; import gcom.micromedicao.consumo.ConsumoHistorico; import gcom.micromedicao.consumo.ConsumoTipo; import gcom.micromedicao.consumo.LigacaoTipo; import gcom.micromedicao.hidrometro.FiltroHidrometroInstalacaoHistorico; import gcom.micromedicao.hidrometro.HidrometroInstalacaoHistorico; import gcom.micromedicao.leitura.LeituraAnormalidade; import gcom.micromedicao.medicao.MedicaoHistorico; import gcom.relatorio.RelatorioDataSource; import gcom.relatorio.cobranca.CurvaAbcDebitosHelper; import gcom.relatorio.cobranca.FiltrarRelatorioBoletimMedicaoCobrancaHelper; import gcom.relatorio.cobranca.RelatorioAcompanhamentoAcoesCobrancaHelper; import gcom.relatorio.cobranca.RelatorioAnalisePerdasCreditosBean; import gcom.relatorio.cobranca.RelatorioBoletimMedicaoCobrancaHelper; import gcom.relatorio.cobranca.RelatorioDocumentoCobrancaOrdemCorteBean; import gcom.relatorio.cobranca.RelatorioDocumentoCobrancaOrdemFiscalizacaoBean; import gcom.relatorio.cobranca.RelatorioDocumentoCobrancaOrdemFiscalizacaoSubBean; import gcom.relatorio.cobranca.RelatorioDocumentosAReceberBean; import gcom.relatorio.cobranca.RelatorioEmitirDeclaracaoTransferenciaDebitoBean; import gcom.relatorio.cobranca.RelatorioImoveisComAcordoBean; import gcom.relatorio.cobranca.RelatorioNotificacaoDebitoBean; import gcom.relatorio.cobranca.RelatorioPagamentosContasCobrancaEmpresaBean; import gcom.relatorio.cobranca.RelatorioVisitaCobrancaBean; import gcom.relatorio.cobranca.RelatorioVisitaCobrancaSubBean; import gcom.relatorio.cobranca.parcelamento.ExtratoDebitoRelatorioHelper; import gcom.relatorio.cobranca.parcelamento.RelacaoParcelamentoRelatorioHelper; import gcom.relatorio.cobranca.parcelamento.RelatorioParcelamento; import gcom.relatorio.cobranca.parcelamento.RelatorioRelacaoParcelamentoAnaliticoBean; import gcom.relatorio.cobranca.parcelamento.RelatorioRelacaoParcelamentoCartaoCreditoBean; import gcom.relatorio.faturamento.conta.RelatorioContaBean; import gcom.relatorio.faturamento.conta.RelatorioContaConsumosAnterioresBean; import gcom.relatorio.faturamento.conta.RelatorioContaDetailBean; import gcom.seguranca.ControladorPermissaoEspecialLocal; import gcom.seguranca.ControladorPermissaoEspecialLocalHome; import gcom.seguranca.acesso.Abrangencia; import gcom.seguranca.acesso.ControladorAcessoLocal; import gcom.seguranca.acesso.ControladorAcessoLocalHome; import gcom.seguranca.acesso.Operacao; import gcom.seguranca.acesso.OperacaoEfetuada; import gcom.seguranca.acesso.PermissaoEspecial; import gcom.seguranca.acesso.usuario.ControladorUsuarioLocal; import gcom.seguranca.acesso.usuario.ControladorUsuarioLocalHome; import gcom.seguranca.acesso.usuario.FiltroUsuario; import gcom.seguranca.acesso.usuario.Usuario; import gcom.seguranca.acesso.usuario.UsuarioAcao; import gcom.seguranca.acesso.usuario.UsuarioAcaoUsuarioHelper; import gcom.seguranca.transacao.AlteracaoTipo; import gcom.seguranca.transacao.ControladorTransacaoLocal; import gcom.seguranca.transacao.ControladorTransacaoLocalHome; import gcom.spcserasa.ControladorSpcSerasaLocal; import gcom.spcserasa.ControladorSpcSerasaLocalHome; import gcom.util.CodigoBarras; import gcom.util.ConstantesJNDI; import gcom.util.ConstantesSistema; import gcom.util.ControladorException; import gcom.util.ControladorUtilLocal; import gcom.util.ControladorUtilLocalHome; import gcom.util.ErroRepositorioException; import gcom.util.IRepositorioUtil; import gcom.util.IoUtil; import gcom.util.RepositorioUtilHBM; import gcom.util.ServiceLocator; import gcom.util.ServiceLocatorException; import gcom.util.SistemaException; import gcom.util.Util; import gcom.util.ZipUtil; import gcom.util.email.ErroEmailException; import gcom.util.email.ServicosEmail; import gcom.util.filtro.ComparacaoTexto; import gcom.util.filtro.ConectorOr; import gcom.util.filtro.Filtro; import gcom.util.filtro.FiltroParametro; import gcom.util.filtro.Intervalo; import gcom.util.filtro.MaiorQue; import gcom.util.filtro.MenorQue; import gcom.util.filtro.MenorQueComparacaoColuna; import gcom.util.filtro.ParametroNaoNulo; import gcom.util.filtro.ParametroNulo; import gcom.util.filtro.ParametroSimples; import gcom.util.filtro.ParametroSimplesDiferenteDe; import gcom.util.filtro.ParametroSimplesIn; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.math.BigDecimal; import java.sql.Timestamp; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Arrays; import java.util.Calendar; import java.util.Collection; import java.util.Collections; import java.util.Date; import java.util.GregorianCalendar; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.StringTokenizer; import java.util.TreeMap; import java.util.zip.ZipOutputStream; import javax.ejb.CreateException; import javax.ejb.EJBException; import javax.ejb.SessionBean; import javax.ejb.SessionContext; import javax.mail.SendFailedException; import org.apache.commons.fileupload.FileItem; import org.apache.log4j.Logger; import org.hibernate.cache.HashtableCache; import br.com.danhil.BarCode.Interleaved2of5; /** * @author Raphael Rossiter * @date 26/06/2007 */ public class ControladorCobranca implements SessionBean { protected static final long serialVersionUID = 1L; SessionContext sessionContext; protected IRepositorioImovel repositorioImovel = null; protected IRepositorioCobranca repositorioCobranca = null; protected IRepositorioArrecadacao repositorioarrecadacao = null; protected IRepositorioMicromedicao repositorioMicromedicao = null; protected IRepositorioUtil repositorioUtil = null; protected IRepositorioClienteImovel repositorioClienteImovel = null; protected IRepositorioBatch repositorioBatch = null; protected IRepositorioFaturamento repositorioFaturamento = null; protected IRepositorioAtendimentoPublico repositorioAtendimentoPublico = null; protected IRepositorioCadastro repositorioCadastro = null; private static Logger logger = Logger.getLogger(ControladorCobranca.class); /** * < <Descri��o do m�todo>> * * @exception CreateException * Descri��o da exce��o */ public void ejbCreate() throws CreateException { repositorioImovel = RepositorioImovelHBM.getInstancia(); repositorioCobranca = RepositorioCobrancaHBM.getInstancia(); repositorioarrecadacao = RepositorioArrecadacaoHBM.getInstancia(); repositorioMicromedicao = RepositorioMicromedicaoHBM.getInstancia(); repositorioUtil = RepositorioUtilHBM.getInstancia(); repositorioClienteImovel = RepositorioClienteImovelHBM.getInstancia(); repositorioBatch = RepositorioBatchHBM.getInstancia(); repositorioFaturamento = RepositorioFaturamentoHBM.getInstancia(); repositorioAtendimentoPublico = RepositorioAtendimentoPublicoHBM.getInstancia(); repositorioCadastro = RepositorioCadastroHBM.getInstancia(); } /** * < <Descri��o do m�todo>> */ public void ejbRemove() { } /** * < <Descri��o do m�todo>> */ public void ejbActivate() { } /** * < <Descri��o do m�todo>> */ public void ejbPassivate() { } /** * Seta o valor de sessionContext * * @param sessionContext * O novo valor de sessionContext */ public void setSessionContext(SessionContext sessionContext) { this.sessionContext = sessionContext; } /** * [UC0xxx] Emitir Documentos de Cobran�a Em Lote * * @author Mariana Vcitor * @date 13/07/2011 */ public Date obterDataVencimentoDocumentoCobranca(CobrancaDocumento cobrancaDocumento) throws ControladorException { Date dataValidade = cobrancaDocumento.getEmissao(); try { if (dataValidade != null && cobrancaDocumento.getCobrancaAcao() != null && cobrancaDocumento.getCobrancaAcao().getNumeroDiasVencimento() != null) { Calendar dataCalendar = Calendar.getInstance(); dataCalendar.setTime(dataValidade); dataCalendar.add(Calendar.DAY_OF_MONTH, cobrancaDocumento.getCobrancaAcao().getNumeroDiasVencimento().intValue()); dataValidade = dataCalendar.getTime(); } else { Short numeroDiasValidadeExtrato = 0; SistemaParametro sistemaParametro = getControladorUtil().pesquisarParametrosDoSistema(); // se o numero de validade do extrato para permiss�o especial // n�o for nulo if (sistemaParametro.getNumeroDiasValidadeExtratoPermissaoEspecial() != null) { numeroDiasValidadeExtrato = sistemaParametro.getNumeroDiasValidadeExtratoPermissaoEspecial(); } else { numeroDiasValidadeExtrato = sistemaParametro.getNumeroDiasValidadeExtrato(); } dataValidade = Util.adicionarNumeroDiasDeUmaData(dataValidade, numeroDiasValidadeExtrato.intValue()); } } catch (ControladorException e) { e.printStackTrace(); throw new ControladorException("erro.sistema", e); } return dataValidade; } /** * [UC1151] Gerar Boletim de Medi��o * * * @author S�vio Luiz * @throws ControladorException * @data 22/03/2011 * * @throws ControladorException * */ public void gerarBoletimMedicao(Integer idGrupoCobranca, Integer referencia, Usuario usuarioLogado) throws ControladorException { String mensagemEmail = null; String emailResponsavel = null; String assuntoEmail = "GERAR BOLETIM DE MEDI��O"; try { // Seleciona os itens do servi�o de contrato Collection<Object[]> dadosItensContrato = this.repositorioCobranca.pesquisarItemServicoContrato(idGrupoCobranca); Collection collCobrancaBoletimExecutado = new ArrayList(); Collection collCobrancaBoletimDescontado = new ArrayList(); Collection collCobrancaBoletimSucesso = new ArrayList(); BigDecimal valorTotalExecutado = BigDecimal.ZERO; BigDecimal valorTotalDescontado = BigDecimal.ZERO; BigDecimal valorTotalTaxaSucesso = BigDecimal.ZERO; Collection<Integer> collIdsOS = new ArrayList(); Collection<Integer> collIdsOSNaoAceitas = new ArrayList(); Integer idContratoEmpresaServico = null; if (dadosItensContrato != null && !dadosItensContrato.isEmpty()) { for (Object[] dadoItemContrato : dadosItensContrato) { if (dadoItemContrato != null) { // recupera os dados da query Integer codigoConstanteCalculo = (Integer) dadoItemContrato[0]; Integer idItemServicoContrato = (Integer) dadoItemContrato[1]; BigDecimal vlItemServicoContrato = (BigDecimal) dadoItemContrato[2]; idContratoEmpresaServico = (Integer) dadoItemContrato[3]; if (dadoItemContrato[4] != null) { emailResponsavel = (String) dadoItemContrato[4]; } // OS EXECUTADAS // 1.1 o c�digo da constante do item seja de 01 e 05 if (codigoConstanteCalculo.equals(ItemServico.CODIGO_CONSTANTE_1) || codigoConstanteCalculo.equals(ItemServico.CODIGO_CONSTANTE_5)) { // 1.1.1 O sistema dever� selecionar as ordens de // servi�o encerradas por execu��o dos im�veis // relacionados // ao grupo de cobran�a que ainda n�o tenham sido // inclu�das em boletim, que tenham o tipo de // servi�o relacionado ao item do contrato Collection<Object[]> dadosOS = this.repositorioCobranca.pesquisarOSEncerradasPorBoletim(idGrupoCobranca, idItemServicoContrato, referencia); // dados OS de rotas alternativas Collection<Object[]> dadosOSRotasAlternativas = this.repositorioCobranca .pesquisarOSEncerradasPorBoletimRotaAlternativa(idGrupoCobranca, idItemServicoContrato, referencia); if (dadosOSRotasAlternativas != null && !dadosOSRotasAlternativas.isEmpty()) { dadosOS.addAll(dadosOSRotasAlternativas); } for (Object[] dadoOS : dadosOS) { if (dadoOS != null) { Integer idOs = (Integer) dadoOS[0]; Integer idLocalidade = (Integer) dadoOS[1]; if (!collIdsOS.contains(idOs)) { Localidade localidade = new Localidade(); localidade.setId(idLocalidade); OrdemServico ordemServico = new OrdemServico(); ordemServico.setId(idOs); // cria o objeto de cobran�a boletim // executado CobrancaBoletimExecutado cobrancaBoletimExecutado = new CobrancaBoletimExecutado(); cobrancaBoletimExecutado.setLocalidade(localidade); cobrancaBoletimExecutado.setOrdemServico(ordemServico); cobrancaBoletimExecutado.setValorServico(vlItemServicoContrato); collCobrancaBoletimExecutado.add(cobrancaBoletimExecutado); valorTotalExecutado = valorTotalExecutado.add(vlItemServicoContrato); collIdsOS.add(idOs); } } } } // 1.2 o c�digo da constante do item seja 02 e 06 if (codigoConstanteCalculo.equals(ItemServico.CODIGO_CONSTANTE_2) || codigoConstanteCalculo.equals(ItemServico.CODIGO_CONSTANTE_6)) { // 1.2.1 O sistema dever� selecionar as ordens de // servi�o encerradas por execu��o dos im�veis // relacionados ao grupo de cobran�a que ainda n�o // tenham sido inclu�das em boletim, // que tenham o tipo de servi�o relacionado ao item // do contrato e tenha sido executada no nicho Collection<Object[]> dadosOS = this.repositorioCobranca.pesquisarOSEncerradasPorBoletimComIndicadorPavimento( idGrupoCobranca, idItemServicoContrato, new Short("3"), referencia); // dados OS de rotas alternativas Collection<Object[]> dadosOSRotasAlternativas = this.repositorioCobranca .pesquisarOSEncerradasPorBoletimComIndicadorPavimentoRotaAlternativa(idGrupoCobranca, idItemServicoContrato, new Short("3"), referencia); if (dadosOSRotasAlternativas != null && !dadosOSRotasAlternativas.isEmpty()) { dadosOS.addAll(dadosOSRotasAlternativas); } for (Object[] dadoOS : dadosOS) { if (dadoOS != null) { Integer idOs = (Integer) dadoOS[0]; Integer idLocalidade = (Integer) dadoOS[1]; if (!collIdsOS.contains(idOs)) { Localidade localidade = new Localidade(); localidade.setId(idLocalidade); OrdemServico ordemServico = new OrdemServico(); ordemServico.setId(idOs); // cria o objeto de cobran�a boletim // executado CobrancaBoletimExecutado cobrancaBoletimExecutado = new CobrancaBoletimExecutado(); cobrancaBoletimExecutado.setLocalidade(localidade); cobrancaBoletimExecutado.setOrdemServico(ordemServico); cobrancaBoletimExecutado.setValorServico(vlItemServicoContrato); collCobrancaBoletimExecutado.add(cobrancaBoletimExecutado); valorTotalExecutado = valorTotalExecutado.add(vlItemServicoContrato); collIdsOS.add(idOs); } } } } // 1.3 o c�digo da constante do item seja 03, 07, 09, 11 // e 12 if (codigoConstanteCalculo.equals(ItemServico.CODIGO_CONSTANTE_3) || codigoConstanteCalculo.equals(ItemServico.CODIGO_CONSTANTE_7) || codigoConstanteCalculo.equals(ItemServico.CODIGO_CONSTANTE_9) || codigoConstanteCalculo.equals(ItemServico.CODIGO_CONSTANTE_11) || codigoConstanteCalculo.equals(ItemServico.CODIGO_CONSTANTE_13)) { // 1.3.1 O sistema dever� selecionar as ordens de // servi�o encerradas por execu��o dos im�veis // relacionados // ao grupo de cobran�a que ainda n�o tenham sido // inclu�das em boletim, que tenham o tipo de // servi�o relacionado ao item do contrato e tenha // sido executada sem pavimento Collection<Object[]> dadosOS = this.repositorioCobranca.pesquisarOSEncerradasPorBoletimComIndicadorPavimento( idGrupoCobranca, idItemServicoContrato, new Short("2"), referencia); // dados OS de rotas alternativas Collection<Object[]> dadosOSRotasAlternativas = this.repositorioCobranca .pesquisarOSEncerradasPorBoletimComIndicadorPavimentoRotaAlternativa(idGrupoCobranca, idItemServicoContrato, new Short("2"), referencia); if (dadosOSRotasAlternativas != null && !dadosOSRotasAlternativas.isEmpty()) { dadosOS.addAll(dadosOSRotasAlternativas); } for (Object[] dadoOS : dadosOS) { if (dadoOS != null) { Integer idOs = (Integer) dadoOS[0]; Integer idLocalidade = (Integer) dadoOS[1]; if (!collIdsOS.contains(idOs)) { Localidade localidade = new Localidade(); localidade.setId(idLocalidade); OrdemServico ordemServico = new OrdemServico(); ordemServico.setId(idOs); // cria o objeto de cobran�a boletim // executado CobrancaBoletimExecutado cobrancaBoletimExecutado = new CobrancaBoletimExecutado(); cobrancaBoletimExecutado.setLocalidade(localidade); cobrancaBoletimExecutado.setOrdemServico(ordemServico); cobrancaBoletimExecutado.setValorServico(vlItemServicoContrato); collCobrancaBoletimExecutado.add(cobrancaBoletimExecutado); valorTotalExecutado = valorTotalExecutado.add(vlItemServicoContrato); collIdsOS.add(idOs); } } } } // 1.4 o c�digo da constante do item seja 04, 08, 10, 13 // e 14 if (codigoConstanteCalculo.equals(ItemServico.CODIGO_CONSTANTE_4) || codigoConstanteCalculo.equals(ItemServico.CODIGO_CONSTANTE_8) || codigoConstanteCalculo.equals(ItemServico.CODIGO_CONSTANTE_10) || codigoConstanteCalculo.equals(ItemServico.CODIGO_CONSTANTE_12) || codigoConstanteCalculo.equals(ItemServico.CODIGO_CONSTANTE_14)) { // 1.4.1 O sistema dever� selecionar as ordens de // servi�o encerradas por execu��o dos // im�veis relacionados ao grupo de cobran�a que // ainda n�o tenham sido inclu�das em boletim, // que tenham o tipo de servi�o relacionado ao item // do contrato e tenha sido executada sem pavimento Collection<Object[]> dadosOS = this.repositorioCobranca.pesquisarOSEncerradasPorBoletimComIndicadorPavimento( idGrupoCobranca, idItemServicoContrato, new Short("1"), referencia); // dados OS de rotas alternativas Collection<Object[]> dadosOSRotasAlternativas = this.repositorioCobranca .pesquisarOSEncerradasPorBoletimComIndicadorPavimentoRotaAlternativa(idGrupoCobranca, idItemServicoContrato, new Short("1"), referencia); if (dadosOSRotasAlternativas != null && !dadosOSRotasAlternativas.isEmpty()) { dadosOS.addAll(dadosOSRotasAlternativas); } for (Object[] dadoOS : dadosOS) { if (dadoOS != null) { Integer idOs = (Integer) dadoOS[0]; Integer idLocalidade = (Integer) dadoOS[1]; if (!collIdsOS.contains(idOs)) { Localidade localidade = new Localidade(); localidade.setId(idLocalidade); OrdemServico ordemServico = new OrdemServico(); ordemServico.setId(idOs); // cria o objeto de cobran�a boletim // executado CobrancaBoletimExecutado cobrancaBoletimExecutado = new CobrancaBoletimExecutado(); cobrancaBoletimExecutado.setLocalidade(localidade); cobrancaBoletimExecutado.setOrdemServico(ordemServico); cobrancaBoletimExecutado.setValorServico(vlItemServicoContrato); collCobrancaBoletimExecutado.add(cobrancaBoletimExecutado); valorTotalExecutado = valorTotalExecutado.add(vlItemServicoContrato); collIdsOS.add(idOs); } } } } // 1.5 o c�digo da constante do item seja 15 if (codigoConstanteCalculo.equals(ItemServico.CODIGO_CONSTANTE_15)) { // 1.5.1 O sistema dever� selecionar as ordens de // servi�o encerradas por execu��o dos im�veis // relacionados ao grupo de cobran�a que ainda n�o // tenham sido inclu�das em boletim, // que tenham o tipo de servi�o relacionado ao item // do contrato e tenha sido executada com reposi��o // de asfalto Collection<Object[]> dadosOS = this.repositorioCobranca.pesquisarOSEncerradasPorBoletimRepAsfalto( idGrupoCobranca, idItemServicoContrato, referencia); // dados OS de rotas alternativas Collection<Object[]> dadosOSRotasAlternativas = this.repositorioCobranca .pesquisarOSEncerradasPorBoletimRepAsfaltoRotaAlternativa(idGrupoCobranca, idItemServicoContrato, referencia); if (dadosOSRotasAlternativas != null && !dadosOSRotasAlternativas.isEmpty()) { dadosOS.addAll(dadosOSRotasAlternativas); } for (Object[] dadoOS : dadosOS) { if (dadoOS != null) { Integer idOs = (Integer) dadoOS[0]; Integer idLocalidade = (Integer) dadoOS[1]; BigDecimal numeroRepAsfalto = (BigDecimal) dadoOS[2]; BigDecimal vlItemServicoContratoMult = vlItemServicoContrato.multiply(numeroRepAsfalto); if (!collIdsOS.contains(idOs)) { Localidade localidade = new Localidade(); localidade.setId(idLocalidade); OrdemServico ordemServico = new OrdemServico(); ordemServico.setId(idOs); // cria o objeto de cobran�a boletim // executado CobrancaBoletimExecutado cobrancaBoletimExecutado = new CobrancaBoletimExecutado(); cobrancaBoletimExecutado.setLocalidade(localidade); cobrancaBoletimExecutado.setOrdemServico(ordemServico); cobrancaBoletimExecutado.setValorServico(vlItemServicoContratoMult); collCobrancaBoletimExecutado.add(cobrancaBoletimExecutado); collIdsOS.add(idOs); } valorTotalExecutado = valorTotalExecutado.add(vlItemServicoContratoMult); } } } // 1.6 o c�digo da constante do item seja 16 if (codigoConstanteCalculo.equals(ItemServico.CODIGO_CONSTANTE_16)) { // 1.6.1 O sistema dever� selecionar as ordens de // servi�o encerradas por execu��o dos im�veis // relacionados ao grupo de cobran�a que ainda n�o // tenham sido inclu�das em boletim, que tenham o // tipo de servi�o relacionado ao item do contrato e // tenha sido executada com reposi��o de // paralelep�pedo Collection<Object[]> dadosOS = this.repositorioCobranca.pesquisarOSEncerradasPorBoletimRepParalalo( idGrupoCobranca, idItemServicoContrato, referencia); // dados OS de rotas alternativas Collection<Object[]> dadosOSRotasAlternativas = this.repositorioCobranca .pesquisarOSEncerradasPorBoletimRepParalaloRotaAlternativa(idGrupoCobranca, idItemServicoContrato, referencia); if (dadosOSRotasAlternativas != null && !dadosOSRotasAlternativas.isEmpty()) { dadosOS.addAll(dadosOSRotasAlternativas); } for (Object[] dadoOS : dadosOS) { if (dadoOS != null) { Integer idOs = (Integer) dadoOS[0]; Integer idLocalidade = (Integer) dadoOS[1]; BigDecimal numeroRepParalelo = (BigDecimal) dadoOS[2]; BigDecimal vlItemServicoContratoMult = vlItemServicoContrato.multiply(numeroRepParalelo); if (!collIdsOS.contains(idOs)) { Localidade localidade = new Localidade(); localidade.setId(idLocalidade); OrdemServico ordemServico = new OrdemServico(); ordemServico.setId(idOs); // cria o objeto de cobran�a boletim // executado CobrancaBoletimExecutado cobrancaBoletimExecutado = new CobrancaBoletimExecutado(); cobrancaBoletimExecutado.setLocalidade(localidade); cobrancaBoletimExecutado.setOrdemServico(ordemServico); cobrancaBoletimExecutado.setValorServico(vlItemServicoContratoMult); collCobrancaBoletimExecutado.add(cobrancaBoletimExecutado); collIdsOS.add(idOs); } valorTotalExecutado = valorTotalExecutado.add(vlItemServicoContratoMult); } } } // 1.7 o c�digo da constante do item seja 17 if (codigoConstanteCalculo.equals(ItemServico.CODIGO_CONSTANTE_17)) { // 1.7.1 O sistema dever� selecionar as ordens de // servi�o encerradas por execu��o dos im�veis // relacionados ao grupo de cobran�a que ainda n�o // tenham sido inclu�das em boletim, que tenham o // tipo // de servi�o relacionado ao item do contrato e // tenha sido executada com reposi��o de cal�ada Collection<Object[]> dadosOS = this.repositorioCobranca.pesquisarOSEncerradasPorBoletimRepCalcada( idGrupoCobranca, idItemServicoContrato, referencia); // dados OS de rotas alternativas Collection<Object[]> dadosOSRotasAlternativas = this.repositorioCobranca .pesquisarOSEncerradasPorBoletimRepCalcadaRotaAlternativa(idGrupoCobranca, idItemServicoContrato, referencia); if (dadosOSRotasAlternativas != null && !dadosOSRotasAlternativas.isEmpty()) { dadosOS.addAll(dadosOSRotasAlternativas); } for (Object[] dadoOS : dadosOS) { if (dadoOS != null) { Integer idOs = (Integer) dadoOS[0]; Integer idLocalidade = (Integer) dadoOS[1]; BigDecimal numeroRepCalcada = (BigDecimal) dadoOS[2]; BigDecimal vlItemServicoContratoMult = vlItemServicoContrato.multiply(numeroRepCalcada); if (!collIdsOS.contains(idOs)) { Localidade localidade = new Localidade(); localidade.setId(idLocalidade); OrdemServico ordemServico = new OrdemServico(); ordemServico.setId(idOs); // cria o objeto de cobran�a boletim // executado CobrancaBoletimExecutado cobrancaBoletimExecutado = new CobrancaBoletimExecutado(); cobrancaBoletimExecutado.setLocalidade(localidade); cobrancaBoletimExecutado.setOrdemServico(ordemServico); cobrancaBoletimExecutado.setValorServico(vlItemServicoContratoMult); collCobrancaBoletimExecutado.add(cobrancaBoletimExecutado); collIdsOS.add(idOs); } valorTotalExecutado = valorTotalExecutado.add(vlItemServicoContratoMult); } } } // 2. OS CANCELADAS QUE DEVEM SER DESCONTADAS // 2.1 o c�digo da constante do item seja de 01, 02 e 05 if (codigoConstanteCalculo.equals(ItemServico.CODIGO_CONSTANTE_1) || codigoConstanteCalculo.equals(ItemServico.CODIGO_CONSTANTE_2) || codigoConstanteCalculo.equals(ItemServico.CODIGO_CONSTANTE_5)) { // 2.1.1 O sistema dever� selecionar as ordens de // servi�o encerradas por decurso de prazo dos // im�veis // relacionados ao grupo de cobran�a que ainda n�o // tenham sido inclu�das em boletim, que tenham o // tipo de servi�o relacionado ao item do contrato Collection<Object[]> dadosOS = this.repositorioCobranca.pesquisarOSEncerradasPorBoletimPorDesconto( idGrupoCobranca, idItemServicoContrato, referencia); // dados OS de rotas alternativas Collection<Object[]> dadosOSRotasAlternativas = this.repositorioCobranca .pesquisarOSEncerradasPorBoletimPorDescontoRotaAlternativa(idGrupoCobranca, idItemServicoContrato, referencia); if (dadosOSRotasAlternativas != null && !dadosOSRotasAlternativas.isEmpty()) { dadosOS.addAll(dadosOSRotasAlternativas); } for (Object[] dadoOS : dadosOS) { if (dadoOS != null) { Integer idOs = (Integer) dadoOS[0]; Integer idLocalidade = (Integer) dadoOS[1]; Localidade localidade = new Localidade(); localidade.setId(idLocalidade); OrdemServico ordemServico = new OrdemServico(); ordemServico.setId(idOs); // cria o objeto de cobran�a boletim // executado CobrancaBoletimDesconto cobrancaBoletimDesconto = new CobrancaBoletimDesconto(); cobrancaBoletimDesconto.setLocalidade(localidade); cobrancaBoletimDesconto.setOrdemServico(ordemServico); cobrancaBoletimDesconto.setValorDesconto(vlItemServicoContrato); collCobrancaBoletimDescontado.add(cobrancaBoletimDesconto); valorTotalDescontado = valorTotalDescontado.add(vlItemServicoContrato); collIdsOS.add(idOs); } } } // 3.O sistema dever� selecionar os itens do contrato de // cobran�a relacionado ao grupo de cobran�a para // calcular // os valores dos descontos do boletim das ordens de // servi�o com justificativa n�o aceita // 3.1 o c�digo da constante do item seja de 01, 02 e 05 if (codigoConstanteCalculo.equals(ItemServico.CODIGO_CONSTANTE_1) || codigoConstanteCalculo.equals(ItemServico.CODIGO_CONSTANTE_2) || codigoConstanteCalculo.equals(ItemServico.CODIGO_CONSTANTE_5)) { // 3.1.1 O sistema dever� selecionar as ordens de // servi�o encerradas sem execu��o, // menos decurso de prazo, dos im�veis relacionados // ao grupo de cobran�a que ainda n�o tenham sido // inclu�das em boletim, // que tenham o tipo de servi�o relacionado ao item // do contrato Collection<Object[]> dadosOS = this.repositorioCobranca .pesquisarOSEncerradasPorBoletimPorDescontoSemDecursoPrazo(idGrupoCobranca, idItemServicoContrato, referencia); // dados OS de rotas alternativas Collection<Object[]> dadosOSRotasAlternativas = this.repositorioCobranca .pesquisarOSEncerradasPorBoletimPorDescontoSemDecursoPrazoRotaAlternativa(idGrupoCobranca, idItemServicoContrato, referencia); if (dadosOSRotasAlternativas != null && !dadosOSRotasAlternativas.isEmpty()) { dadosOS.addAll(dadosOSRotasAlternativas); } for (Object[] dadoOS : dadosOS) { if (dadoOS != null) { Integer idOs = (Integer) dadoOS[0]; Integer idLocalidade = (Integer) dadoOS[1]; Localidade localidade = new Localidade(); localidade.setId(idLocalidade); OrdemServico ordemServico = new OrdemServico(); ordemServico.setId(idOs); // cria o objeto de cobran�a boletim // executado CobrancaBoletimDesconto cobrancaBoletimDesconto = new CobrancaBoletimDesconto(); cobrancaBoletimDesconto.setLocalidade(localidade); cobrancaBoletimDesconto.setOrdemServico(ordemServico); cobrancaBoletimDesconto.setValorDesconto(vlItemServicoContrato); collCobrancaBoletimDescontado.add(cobrancaBoletimDesconto); valorTotalDescontado = valorTotalDescontado.add(vlItemServicoContrato); collIdsOS.add(idOs); collIdsOSNaoAceitas.add(idOs); } } } } } } // 4. O sistema dever� selecionar os im�veis que tiveram seus // d�bitos quitados e/ou parcelados no per�odo do ciclo da cobran�a // e a ordem de servi�o referente � visita de cobran�a tenha sido // executada no ciclo Collection<Object[]> dadosConta = this.repositorioCobranca.pesquisarSituacaoAtualContaPeloCronogramaCobranca(idGrupoCobranca, referencia); if (dadosConta != null && !dadosConta.equals("")) { boolean contaApta = true; Integer idImovelAnterior = 0; Integer idImovel = null; Integer idLocalidade = null; int tamanhoColecao = dadosConta.size(); BigDecimal valorObtidoAcumulado = BigDecimal.ZERO; for (Object[] dadoConta : dadosConta) { if (dadoConta != null) { idImovel = (Integer) dadoConta[0]; idLocalidade = (Integer) dadoConta[1]; Integer idSituacaoAtualConta = (Integer) dadoConta[2]; BigDecimal valorPagamento = null; if (dadoConta[3] != null) { valorPagamento = (BigDecimal) dadoConta[3]; } BigDecimal percentualTaxaSucesso = (BigDecimal) dadoConta[4]; Integer referenciaConta = (Integer) dadoConta[5]; BigDecimal valorConta = (BigDecimal) dadoConta[6]; // caso seja a primeira vez if (idImovelAnterior.equals(0)) { idImovelAnterior = idImovel; } if (idImovelAnterior.equals(idImovel)) { // 4.1.1.1.1 O sistema dever� verificar se a conta // est� parcelada ou O sistema dever� verificar se a // conta est� paga // ou o sistema dever� verificar se a conta foi // cancelada if (!idSituacaoAtualConta.equals(DebitoCreditoSituacao.PARCELADA) && !idSituacaoAtualConta.equals(DebitoCreditoSituacao.CANCELADA) && !idSituacaoAtualConta.equals(DebitoCreditoSituacao.CANCELADA_POR_RETIFICACAO) && (valorPagamento == null || valorPagamento.equals(""))) { contaApta = false; } else { // caso exista valor de pagamento, ent�o acumula // esse valor do pagamento if (valorPagamento != null && !valorPagamento.equals("")) { valorObtidoAcumulado = valorObtidoAcumulado.add(valorPagamento); } else { // caso contr�rio, se a conta for parcelada, // ent�o acumula o valor da conta if (idSituacaoAtualConta.equals(DebitoCreditoSituacao.PARCELADA)) { valorObtidoAcumulado = valorObtidoAcumulado.add(valorConta); } else { // caso contr�rio, se a conta for // parcelada por retifica��o ent�o // verifica se // a conta retificada foi paga. Caso // tenha sido paga ela est� apta e o // valor do // pagamento � acumulado, caso // contr�rio, o im�vel deixa de ser apta // para a cobran�a if (idSituacaoAtualConta.equals(DebitoCreditoSituacao.CANCELADA_POR_RETIFICACAO)) { Collection valorPagamentos = repositorioCobranca.pesquisarValorContaouContaHistorico(idImovel, referenciaConta); BigDecimal valorPagamentoRetificada = null; if (valorPagamentos != null && !valorPagamentos.isEmpty()) { valorPagamentoRetificada = (BigDecimal) Util.retonarObjetoDeColecao(valorPagamentos); } if (valorPagamentoRetificada != null && !valorPagamentoRetificada.equals("")) { valorObtidoAcumulado = valorObtidoAcumulado.add(valorPagamentoRetificada); } else { contaApta = false; } } } } } } else { // se a conta anterior est� apta, ent�o if (contaApta) { Imovel imovel = new Imovel(); imovel.setId(idImovelAnterior); Localidade localidade = new Localidade(); localidade.setId(idLocalidade); CobrancaBoletimSucesso cobrancaBoletimSucesso = new CobrancaBoletimSucesso(); cobrancaBoletimSucesso.setImovel(imovel); cobrancaBoletimSucesso.setLocalidade(localidade); BigDecimal valorTaxaSucesso = valorObtidoAcumulado.multiply(percentualTaxaSucesso); valorTaxaSucesso = valorTaxaSucesso.divide(new BigDecimal("100")); cobrancaBoletimSucesso.setValorTaxaSucesso(valorTaxaSucesso); cobrancaBoletimSucesso.setValorRecuperado(valorObtidoAcumulado); valorTotalTaxaSucesso = valorTotalTaxaSucesso.add(valorTaxaSucesso); collCobrancaBoletimSucesso.add(cobrancaBoletimSucesso); valorObtidoAcumulado = BigDecimal.ZERO; } // mudan�a de im�vel contaApta = true; idImovelAnterior = idImovel; valorObtidoAcumulado = BigDecimal.ZERO; // 4.1.1.1.1 O sistema dever� verificar se a conta // est� parcelada ou O sistema dever� verificar se a // conta est� paga // ou o sistema dever� verificar se a conta foi // cancelada if (!idSituacaoAtualConta.equals(DebitoCreditoSituacao.PARCELADA) && !idSituacaoAtualConta.equals(DebitoCreditoSituacao.CANCELADA) && !idSituacaoAtualConta.equals(DebitoCreditoSituacao.CANCELADA_POR_RETIFICACAO) && (valorPagamento == null || valorPagamento.equals(""))) { contaApta = false; } else { // caso exista valor de pagamento, ent�o acumula // esse valor do pagamento if (valorPagamento != null && !valorPagamento.equals("")) { valorObtidoAcumulado = valorObtidoAcumulado.add(valorPagamento); } else { // caso contr�rio, se a conta for parcelada, // ent�o acumula o valor da conta if (idSituacaoAtualConta.equals(DebitoCreditoSituacao.PARCELADA)) { valorObtidoAcumulado = valorObtidoAcumulado.add(valorConta); } else { // caso contr�rio, se a conta for // parcelada por retifica��o ent�o // verifica se // a conta retificada foi paga. Caso // tenha sido paga ela est� apta e o // valor do // pagamento � acumulado, caso // contr�rio, o im�vel deixa de ser apta // para a cobran�a if (idSituacaoAtualConta.equals(DebitoCreditoSituacao.CANCELADA_POR_RETIFICACAO)) { Collection valorPagamentos = repositorioCobranca.pesquisarValorContaouContaHistorico(idImovel, referenciaConta); BigDecimal valorPagamentoRetificada = null; if (valorPagamentos != null && !valorPagamentos.isEmpty()) { valorPagamentoRetificada = (BigDecimal) Util.retonarObjetoDeColecao(valorPagamentos); } if (valorPagamentoRetificada != null && !valorPagamentoRetificada.equals("")) { valorObtidoAcumulado = valorObtidoAcumulado.add(valorPagamentoRetificada); } else { contaApta = false; } } } } } } tamanhoColecao = tamanhoColecao - 1; if (tamanhoColecao == 0) { // se a conta anterior est� apta, ent�o if (contaApta) { Imovel imovel = new Imovel(); imovel.setId(idImovel); Localidade localidade = new Localidade(); localidade.setId(idLocalidade); CobrancaBoletimSucesso cobrancaBoletimSucesso = new CobrancaBoletimSucesso(); cobrancaBoletimSucesso.setImovel(imovel); cobrancaBoletimSucesso.setLocalidade(localidade); BigDecimal valorTaxaSucesso = valorObtidoAcumulado.multiply(percentualTaxaSucesso); valorTaxaSucesso = valorTaxaSucesso.divide(new BigDecimal("100")); cobrancaBoletimSucesso.setValorTaxaSucesso(valorTaxaSucesso); cobrancaBoletimSucesso.setValorRecuperado(valorObtidoAcumulado); valorTotalTaxaSucesso = valorTotalTaxaSucesso.add(valorTaxaSucesso); collCobrancaBoletimSucesso.add(cobrancaBoletimSucesso); valorObtidoAcumulado = BigDecimal.ZERO; } } } } } // [SB0001] Gerar Atualiza��o do Banco de Dados atualizarDadosBoletimMedicao(idContratoEmpresaServico, collCobrancaBoletimExecutado, collCobrancaBoletimDescontado, valorTotalExecutado, valorTotalDescontado, valorTotalTaxaSucesso, collIdsOS, collIdsOSNaoAceitas, idGrupoCobranca, referencia, collCobrancaBoletimSucesso); mensagemEmail = "ALTERADO COM SUCESSO."; } catch (Exception ex) { ex.printStackTrace(); sessionContext.setRollbackOnly(); mensagemEmail = "ALTERA��O N�O FOI REALIZADA COM SUCESSO."; throw new ControladorException("erro.sistema", ex); } finally { String emailReceptor = null; if (emailResponsavel != null) { emailReceptor = emailResponsavel; } else { emailReceptor = usuarioLogado.getDescricaoEmail(); } if (emailReceptor != null) { try { ServicosEmail.enviarMensagem("gcom@caern.rn.gov.br", emailReceptor, assuntoEmail, mensagemEmail); } catch (ErroEmailException e) { // throw new ControladorException("erro.envio.mensagem"); } } } } /** * * [UC1182] Recepcionar Arquivo TXT Encerramento OS Cobran�a * * @author Mariana Victor * @date 17/06/2011 * * @param FileItem * @throws ControladorException */ public StringBuilder validarArquivoTxtEncerramentoOSCobranca(FileItem arquivoAnexo) throws ControladorException { // cria uma string builder que recupera o txt e retorna para o // processamento StringBuilder stringBuilderTxt = new StringBuilder(); final int TAMANHO_REGISTRO = 46; if (arquivoAnexo == null || arquivoAnexo.get().length == 0) { sessionContext.setRollbackOnly(); throw new ControladorException("atencao.campo.informado", null, "Arquivo"); } // S� poder�o ser informados arquivos com a extens�o TXT String arquivoExtensao = Util.obterExtensaoDoArquivo(arquivoAnexo); if (!arquivoExtensao.equalsIgnoreCase("TXT")) { sessionContext.setRollbackOnly(); throw new ControladorException("atencao.arquivo_invalido"); } // O tamanho m�ximo para o arquivo ser� de 2mb if (arquivoAnexo.getSize() > 2097152) { sessionContext.setRollbackOnly(); throw new ControladorException("atencao.imagem_tamanho_maximo"); } // cria um contador para saber quantas linhas ter� o txt int quantidadeRegistros = 0; String nomeItem = ""; try { // verifica se n�o � diretorio if (!arquivoAnexo.isFormField()) { // abre, l� e escreve o arquivo InputStreamReader reader = new InputStreamReader(arquivoAnexo.getInputStream()); BufferedReader buffer = new BufferedReader(reader); nomeItem = arquivoAnexo.getName(); File file = new File(arquivoAnexo.getName()); FileOutputStream fout = new FileOutputStream(file); PrintWriter pw = new PrintWriter(fout); // cria uma variavel do tipo boolean boolean eof = false; // enquanto a variavel for false while (!eof) { // pega a linha do arquivo String linhaLida = buffer.readLine(); if (linhaLida != null && linhaLida.length() > 0) { if (linhaLida.trim().length() != TAMANHO_REGISTRO || !this.registroFormatoValido(linhaLida)) { throw new ControladorException("atencao.formato.registros.invalido"); } pw.println(linhaLida); stringBuilderTxt.append(linhaLida); stringBuilderTxt.append("\n"); quantidadeRegistros = quantidadeRegistros + 1; } else { break; } } // fecha o arquivo buffer.close(); reader.close(); arquivoAnexo.getInputStream().close(); pw.flush(); pw.close(); } // [FS0004] � Verificar a exist�ncia do arquivo da empresa de // cobran�a if ("".equals(nomeItem)) { throw new ActionServletException("atencao.arquivo.nao_existe", null, nomeItem); } // [FS0003] - Verificar exist�ncia de dados no arquivo if (quantidadeRegistros == 0) { throw new ControladorException("atencao.arquivo_sem_dados", null, nomeItem); } } catch (IOException ex) { throw new ControladorException("erro.importacao.nao_foi_concluida"); } return stringBuilderTxt; } private boolean registroFormatoValido(String linhaLida) { boolean registroValido = true; char[] registro = linhaLida.toCharArray(); String codigoComando = this.getConteudo(1, 10, linhaLida.toCharArray()); String idOS = this.getConteudo(12, 10, linhaLida.toCharArray()); String motivoEncerramento = this.getConteudo(23, 4, linhaLida.toCharArray()); String dataEncerramento = this.getConteudo(28, 8, linhaLida.toCharArray()); String idUsuario = this.getConteudo(37, 10, linhaLida.toCharArray()); if (!Util.validarStringNumerica(codigoComando) || !Util.validarStringNumerica(idOS) || !Util.validarStringNumerica(motivoEncerramento) || !Util.validarStringNumerica(dataEncerramento) || !Util.validarStringNumerica(idUsuario)) { return false; } if (!(registro[10] + "").equalsIgnoreCase("#") || !(registro[21] + "").equalsIgnoreCase("#") || !(registro[26] + "").equalsIgnoreCase("#") || !(registro[35] + "").equalsIgnoreCase("#")) { return false; } return registroValido; } /** * * [UC1182] Recepcionar Arquivo TXT Encerramento OS Cobran�a * * [SB0001] - Validar Registro. * * @author Mariana Victor * @date 20/06/2011 * * @param stringBuilderTxt * @throws ControladorException */ private Object[] validarConteudoArquivoTxtEncerramentoOSCobranca(StringBuilder stringBuilderTxt, Empresa empresa) throws ControladorException { Object[] retorno = new Object[2]; int countRegistro = 0; Collection<String> collRetornoRegistro = new ArrayList(); Boolean mensagemErro = false; StringTokenizer stk = new StringTokenizer(stringBuilderTxt.toString(), "\n"); try { while (stk.hasMoreTokens()) { countRegistro = countRegistro + 1; String registro = stk.nextToken(); RegistrarArquivoTxtEncerramentoOSCobrancaHelper helper = new RegistrarArquivoTxtEncerramentoOSCobrancaHelper(); // 01. C�digo do Comando - posi��o 01 at� 10 String codigoComando = this.getConteudo(1, 10, registro.toCharArray()); // [FS0006] � Validar comando. ComandoEmpresaCobrancaConta comando = this.repositorioCobranca.pesquisarComandoEmpresaCobrancaConta(new Integer( codigoComando)); /* * // Caso o comando n�o exista if (comando == null) { String * msg = "#Comando informado n�o existe."; registro = * registro.concat(msg); collRetornoRegistro.add(registro); * mensagemErro = true; continue; } * * // Caso o comando n�o seja da empresa selecionada if * (comando.getEmpresa() == null || comando.getEmpresa().getId() * == null || * comando.getEmpresa().getId().compareTo(empresa.getId()) != 0) * { String msg = * "#Empresa do comando difere da empresa selecionada."; * registro = registro.concat(msg); * collRetornoRegistro.add(registro); mensagemErro = true; * continue; } * * // Caso o comando esteja encerrado if * (comando.getDataEncerramento() != null) { String msg = * "#Comando Encerrado."; registro = registro.concat(msg); * collRetornoRegistro.add(registro); mensagemErro = true; * continue; } * * // Caso o comando n�o tenha sido gerado o TXT if * (comando.getIndicadorGeracaoTxt() == null || * comando.getIndicadorGeracaoTxt().compareTo(new Integer(2)) == * 0) { String msg = "#Arquivo TXT n�o gerado."; registro = * registro.concat(msg); collRetornoRegistro.add(registro); * mensagemErro = true; continue; } * * helper.setComandoEmpresaCobrancaConta(comando); */ // 02. N�mero da Ordem de Servi�o - posi��o 11 at� 20 String numeroOS = this.getConteudo(12, 10, registro.toCharArray()); // [FS0007] � Validar OS. // Caso a ordem de servi�o informada n�o exista Short codigoSituacaoOS = this.repositorioCobranca.pesquisarSituacaoOrdemServico(new Integer(numeroOS)); if (codigoSituacaoOS == null) { String msg = "#Ordem de Servi�o informada n�o existe."; registro = registro.concat(msg); collRetornoRegistro.add(registro); mensagemErro = true; continue; } // Caso a ordem de servi�o informada n�o seja do comando // informado if (!this.repositorioCobranca.verificarOrdemServicoComando(new Integer(numeroOS), comando.getId())) { String msg = "#Ordem de Servi�o n�o � do comando informado."; registro = registro.concat(msg); collRetornoRegistro.add(registro); mensagemErro = true; continue; } // Caso a ordem de servi�o informada esteja encerrada if (codigoSituacaoOS.compareTo(ConstantesSistema.NAO) == 0) { String msg = "#Ordem de Servi�o informada j� encerrada."; registro = registro.concat(msg); collRetornoRegistro.add(registro); mensagemErro = true; continue; } OrdemServico ordemServico = new OrdemServico(); ordemServico.setId(new Integer(numeroOS)); helper.setOrdemServico(ordemServico); // 03. Motivo do Encerramento - posi��o 21 at� 24 String idMotivoEncerramento = this.getConteudo(23, 4, registro.toCharArray()); // [FS0008] � Validar Motivo de Encerramento. if (!this.repositorioAtendimentoPublico.verificarAtendimentoMotivoEncerramento(new Integer(idMotivoEncerramento))) { String msg = "#Motivo do Encerramento inv�lido."; registro = registro.concat(msg); collRetornoRegistro.add(registro); mensagemErro = true; continue; } helper.setMotivoEncerramento(new Integer(idMotivoEncerramento)); // 04. Data Encerramento - posi��o 25 at� 35 String dataEncerramento = this.getConteudo(28, 8, registro.toCharArray()); // [FS0009] � Validar Data do Encerramento. // Caso a data do encerramento esteja inv�lida. if (!Util.validarDiaMesAnoSemBarraNovo(dataEncerramento)) { String msg = "#Data do encerramento inv�lida."; registro = registro.concat(msg); collRetornoRegistro.add(registro); mensagemErro = true; continue; } // Caso a data do encerramento esteja maior que a data corrente. Date dataEnc = Util.converteStringSemBarraParaDate(dataEncerramento); if (dataEnc.compareTo(new Date()) > 0) { String msg = "#Data do encerramento maior que a data corrente."; registro = registro.concat(msg); collRetornoRegistro.add(registro); mensagemErro = true; continue; } helper.setDataEncerramento(dataEnc); // 05. Identifica��o do Usu�rio - posi��o 36 at� 46 String idUsuario = this.getConteudo(37, 10, registro.toCharArray()); // [FS0010] � Validar Identifica��o do Usu�rio. // Caso a identifica��o do usu�rio n�o exista if (!this.repositorioCadastro.verificarIdentificacaoUsuario(new Integer(idUsuario))) { String msg = "#Usu�rio n�o existe."; registro = registro.concat(msg); collRetornoRegistro.add(registro); mensagemErro = true; continue; } // Caso a empresa do usu�rio n�o seja a empresa do comando // informado if (!this.repositorioCadastro.verificarUsuarioEmpresaComandoCobranca(new Integer(idUsuario), comando.getId())) { String msg = "#Empresa do usu�rio n�o � a do comando."; registro = registro.concat(msg); collRetornoRegistro.add(registro); mensagemErro = true; continue; } helper.setIdUsuario(new Integer(idUsuario)); collRetornoRegistro.add(registro); } } catch (ErroRepositorioException e) { sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", e); } retorno[0] = collRetornoRegistro; retorno[1] = mensagemErro; return retorno; // -------------------------------------------------------------------------------------------- } private String getConteudo(int posicaoInicial, int tamanho, char[] registro) { String retorno = ""; while (retorno.length() != tamanho) { retorno = retorno + registro[(retorno.length() + posicaoInicial) - 1]; } return retorno; } /** * [UC1182] Recepcionar Arquivo TXT Encerramento OS Cobran�a * * Processamento do batch * * @author Mariana Victor * @date 21/06/2011 */ public void processarArquivoTxtEncerramentoOSCobranca(int idFuncionalidadeIniciada, String idEmpresa, Usuario usuario, StringBuilder stringBuilder, String nomeArquivo) throws ControladorException { int idUnidadeIniciada = 0; System.out.println("*********************************"); System.out.println("INICIO DO RECEPCIONAR ARQUIVO TXT ENCERRAMENTO OS COBRAN�A"); System.out.println("*********************************"); idUnidadeIniciada = getControladorBatch().iniciarUnidadeProcessamentoBatch(idFuncionalidadeIniciada, UnidadeProcessamento.FUNCIONALIDADE, 0); try { Empresa empresa = new Empresa(); empresa.setId(new Integer(idEmpresa)); Object[] dadosArquivo = this.validarConteudoArquivoTxtEncerramentoOSCobranca(stringBuilder, empresa); Collection<String> collRetornoRegistro = (Collection<String>) dadosArquivo[0]; Boolean mensagemErro = (Boolean) dadosArquivo[1]; String emailDestinatario = this.repositorioCadastro.pesquisarEmailEmpresa(empresa.getId()); if (mensagemErro) { // 5. O sistema dever� enviar um e-mail com as ocorr�ncias // relacionadas a cada um dos registros informados // no arquivo para o endere�o informado na tela de registro do // arquivo. this.enviarEmailErroEncerramentoOSCobranca(nomeArquivo, collRetornoRegistro, emailDestinatario); } else { // 4. Para cada ordem de servi�o identificada sem cr�ticas no // arquivo, // o sistema dever� efetuar o encerramento da ordem de servi�o // liberando o sistema para usu�rio. // [SB0002 � Encerrar Ordens de Servi�o]. StringBuilder log = this.efetuarEncerramentoOSCobranca(collRetornoRegistro); // 5. O sistema dever� enviar um e-mail com as ocorr�ncias // relacionadas a cada um dos registros informados // no arquivo para o endere�o informado na tela de registro do // arquivo. this.enviarEmailConfirmacaoEncerramentoOSCobranca(nomeArquivo, log, emailDestinatario); } // -------------------------------------------------------- // Registrar o fim da execu��o da Unidade de Processamento // -------------------------------------------------------- getControladorBatch().encerrarUnidadeProcessamentoBatch(null, idUnidadeIniciada, false); } catch (Throwable e) { // Este catch serve para interceptar qualquer exce��o que o processo // batch venha a lan�ar e garantir que a unidade de processamento do // batch ser� atualizada com o erro ocorrido e.printStackTrace(); getControladorBatch().encerrarUnidadeProcessamentoBatch(e, idUnidadeIniciada, true); throw new ControladorException("erro.sistema", e); } } /** * [UC1182] Recepcionar Arquivo TXT Encerramento OS Cobran�a * * Envia email com as informa��es de erro da valida��o do arquivo Txt * * @author Mariana Victor * @throws SendFailedException * @date 21/06/2011 */ private void enviarEmailErroEncerramentoOSCobranca(String nomeArquivo, Collection<String> collRetornoRegistro, String emailDestinatario) throws ControladorException, SendFailedException { StringBuilder log = new StringBuilder(""); Iterator iterator = collRetornoRegistro.iterator(); while (iterator.hasNext()) { String registro = (String) iterator.next(); log.append(registro); log.append(System.getProperty("line.separator")); } EnvioEmail envioEmail = getControladorCadastro() .pesquisarEnvioEmail(EnvioEmail.PROCESSAR_ARQUIVO_TXT_ENCERRAMENTO_OS_COBRANCA_ERRO); String emailRemetente = envioEmail.getEmailReceptor(); String tituloMensagem = envioEmail.getTituloMensagem(); String corpoMensagem = envioEmail.getCorpoMensagem(); try { Date data = new Date(); String AAAAMMDD = Util.formatarDataAAAAMMDD(data); String HHMM = Util.formatarDataHHMM(data); String formatodatahora = AAAAMMDD + "_" + HHMM; File leitura = new File(nomeArquivo + "_" + formatodatahora + ".txt"); BufferedWriter out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(leitura.getAbsolutePath()))); out.write(log.toString()); out.close(); // 5. O sistema dever� enviar um e-mail com as ocorr�ncias // relacionadas a cada um dos registros informados // no arquivo para o endere�o informado na tela de registro do // arquivo. ServicosEmail.enviarMensagemArquivoAnexado(emailDestinatario, emailRemetente, tituloMensagem, corpoMensagem, leitura); } catch (SendFailedException e) { throw e; } catch (IOException e) { throw new ControladorException("erro.sistema", e); } catch (Exception e) { throw new ControladorException("erro.sistema", e); } } /** * [UC1182] Recepcionar Arquivo TXT Encerramento OS Cobran�a * * [SB0002] � Encerrar Ordens de Servi�o. * * Efetua o encerramento das ordens de servi�o * * @author Mariana Victor * @date 21/06/2011 */ private StringBuilder efetuarEncerramentoOSCobranca(Collection<String> collRetornoRegistro) throws ControladorException { StringBuilder log = new StringBuilder(""); Iterator iterator = collRetornoRegistro.iterator(); // 4. Para cada ordem de servi�o identificada sem cr�ticas no arquivo, while (iterator.hasNext()) { String registro = (String) iterator.next(); // 02. N�mero da Ordem de Servi�o - posi��o 11 at� 20 Integer idOrdemServico = new Integer(this.getConteudo(12, 10, registro.toCharArray())); // 03. Motivo do Encerramento - posi��o 21 at� 24 Short idMotivoEncerramento = new Short(this.getConteudo(23, 4, registro.toCharArray())); // 04. Data Encerramento - posi��o 25 at� 35 String dataEncerramento = this.getConteudo(28, 8, registro.toCharArray()); Date dataEnc = Util.converteStringSemBarraParaDate(dataEncerramento); // 05. Identifica��o do Usu�rio - posi��o 36 at� 46 String idUsuario = this.getConteudo(37, 10, registro.toCharArray()); FiltroUsuario filtroUsuario = new FiltroUsuario(); filtroUsuario.adicionarParametro(new ParametroSimples(FiltroUsuario.ID, idUsuario)); filtroUsuario.adicionarCaminhoParaCarregamentoEntidade(FiltroUsuario.UNIDADE_ORGANIZACIONAL); Collection colecaoUsuario = Fachada.getInstancia().pesquisar(filtroUsuario, Usuario.class.getName()); Usuario usuarioLogado = (Usuario) Util.retonarObjetoDeColecao(colecaoUsuario); // O sistema dever� efetuar o encerramento da ordem de servi�o // liberando o sistema para usu�rio. // [UC0457] - Encerrar Ordem de Servi�o this.getControladorOrdemServico().encerrarOSSemExecucao(idOrdemServico, dataEnc, usuarioLogado, idMotivoEncerramento.toString(), new Date(), null, null, null, null, null, null); // 2. Atualizar o retorno como String msg = "#Ordem de Servi�o Encerrada."; registro = registro.concat(msg); log.append(registro); log.append(System.getProperty("line.separator")); } return log; } /** * [UC1182] Recepcionar Arquivo TXT Encerramento OS Cobran�a * * Envia email com confirma��o ap�s processamento do arquivo Txt * * @author Mariana Victor * @throws SendFailedException * @date 21/06/2011 */ private void enviarEmailConfirmacaoEncerramentoOSCobranca(String nomeArquivo, StringBuilder log, String emailDestinatario) throws ControladorException, SendFailedException { EnvioEmail envioEmail = getControladorCadastro().pesquisarEnvioEmail(EnvioEmail.PROCESSAR_ARQUIVO_TXT_ENCERRAMENTO_OS_COBRANCA); String emailRemetente = envioEmail.getEmailReceptor(); String tituloMensagem = envioEmail.getTituloMensagem(); String corpoMensagem = envioEmail.getCorpoMensagem(); try { Date data = new Date(); String AAAAMMDD = Util.formatarDataAAAAMMDD(data); String HHMM = Util.formatarDataHHMM(data); String formatodatahora = AAAAMMDD + "_" + HHMM; File leitura = new File(nomeArquivo + "_" + formatodatahora + ".txt"); BufferedWriter out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(leitura.getAbsolutePath()))); out.write(log.toString()); out.close(); // 5. O sistema dever� enviar um e-mail com as ocorr�ncias // relacionadas a cada um dos registros informados // no arquivo para o endere�o informado na tela de registro do // arquivo. ServicosEmail.enviarMensagemArquivoAnexado(emailDestinatario, emailRemetente, tituloMensagem, corpoMensagem, leitura); } catch (SendFailedException e) { throw e; } catch (IOException e) { throw new ControladorException("erro.sistema", e); } catch (Exception e) { throw new ControladorException("erro.sistema", e); } } /** * [UC1140] Cancelar Contrato de Parcelamento por Cliente [SB0001] � * Cancelar Contrato de Parcelamento Por Cliente * * @author R�mulo Aur�lio * @throws ControladorException * @date 12/05/2011 */ public void cancelarContratoParcelamentoCliente(ContratoParcelamento contratoParcelamento, Usuario usuarioLogado) throws ControladorException { // 1.1 ParcelamentoSituacao parcelamentoSituacao = new ParcelamentoSituacao(); parcelamentoSituacao.setId(ParcelamentoSituacao.CANCELADO); contratoParcelamento.setParcelamentoSituacao(parcelamentoSituacao); contratoParcelamento.setUltimaAlteracao(new Date()); try { getControladorTransacao().registrarTransacao(contratoParcelamento); getControladorUtil().atualizar(contratoParcelamento); // 1.2 // 1.2.1 TIPO DE DOCUMENTO: CONTA Collection colecaoContasContratoParcelamentoItem = repositorioCobranca.pesquisarDebitoContratoParcelamentoPorTipoDocumento( contratoParcelamento, DocumentoTipo.CONTA); if (colecaoContasContratoParcelamentoItem != null && !colecaoContasContratoParcelamentoItem.isEmpty()) { Iterator iteratorConta = colecaoContasContratoParcelamentoItem.iterator(); ContratoParcelamentoItem contratoParcelamentoItem = new ContratoParcelamentoItem(); Collection colecaoContasContratoParcelamento = new ArrayList<Conta>(); while (iteratorConta.hasNext()) { contratoParcelamentoItem = (ContratoParcelamentoItem) iteratorConta.next(); ContaMotivoRevisao contaMotivoRevisao = repositorioFaturamento.pesquisarContaMotivoRevisao(contratoParcelamentoItem .getContaGeral().getId()); if (contaMotivoRevisao != null && contaMotivoRevisao.getId().intValue() == ContaMotivoRevisao.CONTA_EM_CONTRATO_PARCELAMENTO.intValue()) { colecaoContasContratoParcelamento.add(contratoParcelamentoItem.getContaGeral().getConta()); } // 1.2.2.2 contratoParcelamentoItem.setIndicadorItemCancelado((new Integer(1)).shortValue()); contratoParcelamentoItem.setUltimaAlteracao(new Date()); contratoParcelamentoItem.getContrato().setParcelamentoSituacao(parcelamentoSituacao); // ------------ REGISTRAR TRANSA��O ---------------- RegistradorOperacao registradorOperacao = new RegistradorOperacao( Operacao.OPERACAO_CANCELAR_CONTRATO_PARCELAMENTO_CLIENTE, contratoParcelamentoItem.getId(), contratoParcelamentoItem.getId(), new UsuarioAcaoUsuarioHelper(usuarioLogado, UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO)); registradorOperacao.registrarOperacao(contratoParcelamentoItem); // ------------ REGISTRAR TRANSA��O ---------------- getControladorUtil().atualizar(contratoParcelamentoItem); } // 1.2.2.1 if (colecaoContasContratoParcelamento != null && !colecaoContasContratoParcelamento.isEmpty()) { getControladorFaturamento().retirarRevisaoConta(colecaoContasContratoParcelamento, null, usuarioLogado, false, null); } } // 1.2.3 TIPO DE DOCUMENTO: DEBITO A COBRAR // 1.2.3. Seleciona os itens de d�bito do contrato, atuais e sem // pagamento, do tipo d�bito a cobrar // Collection colecaoDebitosACobrarContratoParcelamentoItem = repositorioCobranca .pesquisarDebitoContratoParcelamentoPorTipoDocumento(contratoParcelamento, DocumentoTipo.DEBITO_A_COBRAR); if (colecaoDebitosACobrarContratoParcelamentoItem != null && !colecaoDebitosACobrarContratoParcelamentoItem.isEmpty()) { Iterator iteratorDebitosACobrar = colecaoDebitosACobrarContratoParcelamentoItem.iterator(); // 1.2.4. Para cada item de d�bito do tipo d�bito a cobrar // selecionado while (iteratorDebitosACobrar.hasNext()) { ContratoParcelamentoItem item = (ContratoParcelamentoItem) iteratorDebitosACobrar.next(); DebitoACobrar debitoACobrar = (item).getDebitoACobrarGeral().getDebitoACobrar(); // 1.2.4.1. Caso o d�bito a cobrar esteja em revis�o pelo // motivo "DEBITO A COBRAR EM CONTRATO DE PARCELAMENTO" if (debitoACobrar.getContaMotivoRevisao() != null && debitoACobrar.getContaMotivoRevisao().getId() .compareTo(ContaMotivoRevisao.DEBITO_A_COBRAR_EM_CONTRATO_PARCELAMENTO) == 0) { Collection colecaoDebitoACobrar = new ArrayList(); colecaoDebitoACobrar.add(debitoACobrar); this.getControladorFaturamento().retirarRevisaoDebitoACobrar(colecaoDebitoACobrar, usuarioLogado); // 1.2.4.2. Desvincula o d�bito a cobrar do contrato de // parcelamento item.setIndicadorItemCancelado((new Integer(1)).shortValue()); item.setUltimaAlteracao(new Date()); // ------------ REGISTRAR TRANSA��O ---------------- RegistradorOperacao registradorOperacao = new RegistradorOperacao( Operacao.OPERACAO_CANCELAR_CONTRATO_PARCELAMENTO_CLIENTE, item.getId(), item.getId(), new UsuarioAcaoUsuarioHelper(usuarioLogado, UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO)); registradorOperacao.registrarOperacao(item); // ------------ REGISTRAR TRANSA��O ---------------- getControladorUtil().atualizar(item); } } } // 1.2.5 TIPO DE DOCUMENTO: GUIA DE PAGAMENTO Collection colecaoGuiaPagamentoContratoParcelamentoItem = repositorioCobranca .pesquisarDebitoContratoParcelamentoPorTipoDocumento(contratoParcelamento, DocumentoTipo.GUIA_PAGAMENTO); if (colecaoGuiaPagamentoContratoParcelamentoItem != null && !colecaoGuiaPagamentoContratoParcelamentoItem.isEmpty()) { Iterator iteratorGuiaPagamento = colecaoGuiaPagamentoContratoParcelamentoItem.iterator(); Collection colecaoGuiaPagamentoContratoParcelamento = new ArrayList<GuiaPagamento>(); GuiaPagamento guiaPagamento = new GuiaPagamento(); String[] registrosRemocao = null; registrosRemocao = new String[colecaoGuiaPagamentoContratoParcelamentoItem.size()]; int posicao = 0; while (iteratorGuiaPagamento.hasNext()) { GuiaPagamento guia = ((ContratoParcelamentoItem) iteratorGuiaPagamento.next()).getGuiaPagamentoGeral() .getGuiaPagamento(); colecaoGuiaPagamentoContratoParcelamento.add(guia); registrosRemocao[posicao] = guia.getId().toString(); if (posicao == 0) { if (guia.getCliente() != null) { guiaPagamento.setCliente(guia.getCliente()); } else { guiaPagamento.setCliente(new Cliente()); } if (guia.getImovel() != null) { guiaPagamento.setImovel(guia.getImovel()); } else { guiaPagamento.setImovel(new Imovel()); } } posicao++; } // 1.2.6.1.1 // [UC0188] Manter Guia de Pagamento // [SB0001] Cancelar Guia de Pagamento this.getControladorFaturamento().manterGuiaPagamento(guiaPagamento, colecaoGuiaPagamentoContratoParcelamento, registrosRemocao, null, usuarioLogado); } } catch (ErroRepositorioException e) { sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", e); } } /** * [UC0630] Solicitar Emiss�o do Extrato de D�bitos * * [SB0001] Calcular valor dos descontos pagamento � vista. * * @author Vivianne Sousa, Raphael Rossiter * @date 21/10/2010, 12/01/2011 */ public NegociacaoOpcoesParcelamentoHelper calcularValorDosDescontosPagamentoAVista(ObterOpcoesDeParcelamentoHelper helper) throws ControladorException { NegociacaoOpcoesParcelamentoHelper negociacaoOpcoesParcelamentoHelper = new NegociacaoOpcoesParcelamentoHelper(); // [SB0004] - Verificar Situa��o do Im�vel e Perfil Parcelamento Object[] situacaoImovelPerfilParcelamento = this.verificarSituacaoImovelPerfilParcelamento(helper.getIdLigacaoAguaSituacao(), helper.getIdLigacaoEsgotoSituacao(), helper.getIdImovel(), helper.getIdImovelPerfil(), helper.getIdResolucaoDiretoria(), helper.getNumeroReparcelamentoConsecutivos(), helper.getValorDebitoACobrarParcelamentoImovel()); ParcelamentoPerfil parcelamentoPerfil = (ParcelamentoPerfil) situacaoImovelPerfilParcelamento[0]; ImovelSituacao imovelSituacao = (ImovelSituacao) situacaoImovelPerfilParcelamento[1]; negociacaoOpcoesParcelamentoHelper.setParcelamentoPerfil(parcelamentoPerfil); // 2. O sistema dever� calcular o valor dos descontos por antiguidade BigDecimal valorDescontoAntiguidade = new BigDecimal("0.00"); BigDecimal valorTotalAcrescimosImpontualidadePorAntiguidadeMulta = new BigDecimal("0.00"); BigDecimal valorTotalAcrescimosImpontualidadePorAntiguidadeJurosMora = new BigDecimal("0.00"); BigDecimal valorTotalAcrescimosImpontualidadePorAntiguidadeAtualizacaoMonetaria = new BigDecimal("0.00"); CalcularValorDescontoAntiguidadeDebitoHelper descontoAntiguidadeDebito = calcularValorDescontoAntiguidadeDebito( helper.getIdResolucaoDiretoria(), helper.getIdImovel(), helper.getValorEntradaInformado(), helper.getIdLigacaoAguaSituacao(), helper.getIdLigacaoEsgotoSituacao(), helper.getColecaoContaValores(), parcelamentoPerfil, helper.getIndicadorRestabelecimento(), helper.getValorTotalMultas(), helper.getValorTotalJurosMora(), helper.getValorTotalAtualizacoesMonetarias(), negociacaoOpcoesParcelamentoHelper); valorDescontoAntiguidade = descontoAntiguidadeDebito.getValorDescontoAntiguidade(); valorTotalAcrescimosImpontualidadePorAntiguidadeMulta = descontoAntiguidadeDebito.getValorTotalAcrescimosImpontualidadeMulta(); valorTotalAcrescimosImpontualidadePorAntiguidadeJurosMora = descontoAntiguidadeDebito .getValorTotalAcrescimosImpontualidadeJurosMora(); valorTotalAcrescimosImpontualidadePorAntiguidadeAtualizacaoMonetaria = descontoAntiguidadeDebito .getValorTotalAcrescimosImpontualidadeAtualizacaoMonetaria(); negociacaoOpcoesParcelamentoHelper.setColecaoContasEmAntiguidade(descontoAntiguidadeDebito.getColecaoContasEmAntiguidade()); negociacaoOpcoesParcelamentoHelper.setColecaoContasParaParcelamento(descontoAntiguidadeDebito.getColecaoContasParaParcelamento()); // 3.O sistema dever� calcular o valor dos descontos nos acr�scimos por impontualidade: BigDecimal valorAcrescimosImpontualidadeGuiaPagamentoAtualizacaoMonetaria = new BigDecimal("0.00"); valorAcrescimosImpontualidadeGuiaPagamentoAtualizacaoMonetaria.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); BigDecimal valorAcrescimosImpontualidadeGuiaPagamentoJurosMora = new BigDecimal("0.00"); valorAcrescimosImpontualidadeGuiaPagamentoJurosMora.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); BigDecimal valorAcrescimosImpontualidadeGuiaPagamentoMulta = new BigDecimal("0.00"); valorAcrescimosImpontualidadeGuiaPagamentoMulta.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); if (!parcelamentoPerfil.getPercentualDescontoAcrescimoMulta().equals(new BigDecimal("0.00")) && !parcelamentoPerfil.getPercentualDescontoAcrescimoJurosMora().equals(new BigDecimal("0.00")) && !parcelamentoPerfil.getPercentualDescontoAcrescimoAtualizacaoMonetaria().equals(new BigDecimal("0.00"))) { // Pega os acr�scimos de Guias de Pagamento if (helper.getColecaoGuiaPagamento() != null && !helper.getColecaoGuiaPagamento().isEmpty()) { Iterator guiaPagamentoValores = helper.getColecaoGuiaPagamento().iterator(); while (guiaPagamentoValores.hasNext()) { GuiaPagamentoValoresHelper guiaPagamentoValoresHelper = (GuiaPagamentoValoresHelper) guiaPagamentoValores.next(); if (guiaPagamentoValoresHelper.getValorAtualizacaoMonetaria() != null && !guiaPagamentoValoresHelper.getValorAtualizacaoMonetaria().equals("")) { valorAcrescimosImpontualidadeGuiaPagamentoAtualizacaoMonetaria = valorAcrescimosImpontualidadeGuiaPagamentoAtualizacaoMonetaria .add(guiaPagamentoValoresHelper.getValorAtualizacaoMonetaria().setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO)); } if (guiaPagamentoValoresHelper.getValorJurosMora() != null && !guiaPagamentoValoresHelper.getValorJurosMora().equals("")) { valorAcrescimosImpontualidadeGuiaPagamentoJurosMora = valorAcrescimosImpontualidadeGuiaPagamentoJurosMora .add(guiaPagamentoValoresHelper.getValorJurosMora().setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO)); } if (guiaPagamentoValoresHelper.getValorMulta() != null && !guiaPagamentoValoresHelper.getValorMulta().equals("")) { valorAcrescimosImpontualidadeGuiaPagamentoMulta = valorAcrescimosImpontualidadeGuiaPagamentoMulta .add(guiaPagamentoValoresHelper.getValorMulta().setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO)); } } } } FiltroResolucaoDiretoria filtroRD = new FiltroResolucaoDiretoria(); filtroRD.adicionarParametro(new ParametroSimples(FiltroResolucaoDiretoria.CODIGO, helper.getIdResolucaoDiretoria())); Collection colecaoRD = getControladorUtil().pesquisar(filtroRD, ResolucaoDiretoria.class.getName()); ResolucaoDiretoria rd = (ResolucaoDiretoria) Util.retonarObjetoDeColecao(colecaoRD); // CALCULANDO O VALOR DO DESCONTO POR FAIXA DE REFERENCIA DA CONTA BigDecimal valorDescontoFaixaReferenciaConta = new BigDecimal("0.00"); if (rd.getIndicadorDescontoFaixaReferenciaConta().equals(ConstantesSistema.SIM)) { valorDescontoFaixaReferenciaConta = this.determinarValorDescontoFaixaReferenciaConta(helper.getColecaoContaValores()); } // CALCULANDO O VALOR DO DESCONTO DOS ACR�SCIMOS POR IMPONTUALIDADE DeterminarValorDescontoAcrescimosImpontualidadeHelper valorDescontoAcrescimosImpontualidadeHelper = new DeterminarValorDescontoAcrescimosImpontualidadeHelper( parcelamentoPerfil, valorTotalAcrescimosImpontualidadePorAntiguidadeMulta, valorTotalAcrescimosImpontualidadePorAntiguidadeJurosMora, valorTotalAcrescimosImpontualidadePorAntiguidadeAtualizacaoMonetaria, valorAcrescimosImpontualidadeGuiaPagamentoMulta, valorAcrescimosImpontualidadeGuiaPagamentoJurosMora, valorAcrescimosImpontualidadeGuiaPagamentoAtualizacaoMonetaria, new BigDecimal("0.00")); BigDecimal valorDescontoAcrescimosImpontualidade = this.determinarValorDescontoAcrescimosImpontualidade(valorDescontoAcrescimosImpontualidadeHelper); // ============================================================================================================= // Caso o tipo da situa��o do imovel seja INATIVO (com situa��o da // LIGACAO_AGUA igual a Suprimido, Suprimido Parcial a Pedido ou // Suprimido Parcial BigDecimal valorDescontoInatividade = new BigDecimal("0.00"); BigDecimal valorDescontoInatividadePagamentoAVista = new BigDecimal("0.00"); // Valor do D�bito Total menos os descontos de Acrescimo e Antiguidade BigDecimal valorDebitoDescontoInatividade = new BigDecimal("0.00"); valorDebitoDescontoInatividade = helper.getValorDebitoAtualizado().setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO) .subtract(valorDescontoAcrescimosImpontualidade.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO)); valorDebitoDescontoInatividade = valorDebitoDescontoInatividade.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO) .subtract(valorDescontoAntiguidade.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO)); valorDebitoDescontoInatividade = valorDebitoDescontoInatividade.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO) .subtract(valorDescontoFaixaReferenciaConta.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO)); if (imovelSituacao.getImovelSituacaoTipo().getId().equals(ImovelSituacaoTipo.INATIVO) || imovelSituacao.getImovelSituacaoTipo().getId().equals(ImovelSituacaoTipo.LIGADO_SO_ESGOTO)) { // 3.1 Calcula a qtd de meses de inatividade de liga��o de �gua FiltroLigacaoAgua filtroLigacaoAgua = new FiltroLigacaoAgua(); filtroLigacaoAgua.adicionarParametro(new ParametroSimples(FiltroLigacaoAgua.ID, helper.getIdImovel())); Collection<LigacaoAgua> colecaoLigacaoAgua = getControladorUtil().pesquisar(filtroLigacaoAgua, LigacaoAgua.class.getName()); Calendar dataAnoMesReferencia = new GregorianCalendar(); dataAnoMesReferencia.set(Calendar.YEAR, new Integer(helper.getInicioIntervaloParcelamento().substring(3, 4)).intValue()); dataAnoMesReferencia.set(Calendar.MONTH, new Integer(helper.getInicioIntervaloParcelamento().substring(0, 2)).intValue()); dataAnoMesReferencia.set(Calendar.DATE, 01); Date dataCorrente = new Date(); int quantidadeMeses = 0; if (Util.isVazioOrNulo(colecaoLigacaoAgua)) { // [FS0008] - Verificar a exist�ncia da data de supress�o da // liga��o de �gua quantidadeMeses = Util.dataDiff(dataAnoMesReferencia.getTime(), dataCorrente); } else { // Pega a primeira ocorr�ncia da cole��o LigacaoAgua ligacaoAgua = (LigacaoAgua) Util.retonarObjetoDeColecao(colecaoLigacaoAgua); Date dataSupressao = null; if (ligacaoAgua != null) { dataSupressao = ligacaoAgua.getDataSupressao(); } if (dataSupressao != null && !dataSupressao.equals("")) { quantidadeMeses = Util.dataDiff(dataSupressao, dataCorrente); } else { // [FS0008] - Verificar a exist�ncia da data de supress�o da // liga��o de �gua quantidadeMeses = Util.dataDiff(dataAnoMesReferencia.getTime(), dataCorrente); } } // 3.2 Obtem os percentuais de desconto por tempo de inatividade ParcelamentoDescontoInatividade parcelamentoDescontoInatividadeMenor = null; try { parcelamentoDescontoInatividadeMenor = repositorioCobranca.obterPercentualDescontoInatividade(parcelamentoPerfil.getId(), quantidadeMeses); } catch (ErroRepositorioException e) { e.printStackTrace(); } if (parcelamentoDescontoInatividadeMenor != null) { BigDecimal percentualDescontoInatividade = null; if (helper.getIndicadorRestabelecimento().equals(2)) { // 3.3.1 Com restabelecimento percentualDescontoInatividade = parcelamentoDescontoInatividadeMenor.getPercentualDescontoSemRestabelecimento(); valorDescontoInatividade = Util.dividirArredondando( percentualDescontoInatividade.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO), new BigDecimal("100.00")); valorDescontoInatividade = valorDescontoInatividade.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO).multiply( valorDebitoDescontoInatividade.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO)); } else if (helper.getIndicadorRestabelecimento().equals(1)) { // 3.3.2 Sem restabelecimento percentualDescontoInatividade = parcelamentoDescontoInatividadeMenor.getPercentualDescontoComRestabelecimento() .setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); valorDescontoInatividade = Util.dividirArredondando( percentualDescontoInatividade.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO), new BigDecimal("100.00")); valorDescontoInatividade = valorDescontoInatividade.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO).multiply( valorDebitoDescontoInatividade.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO)); } else { valorDescontoInatividade = new BigDecimal("0.00"); } negociacaoOpcoesParcelamentoHelper.setPercentualDescontoInatividadeLigacaoAgua(percentualDescontoInatividade); } else { // 3.3 Caso nenhuma ocorr�ncia tenha sido selecionada valorDescontoInatividade = new BigDecimal("0.00"); } // Obtem os percentuais de desconto por tempo de inatividade ParcDesctoInativVista parcelamentoDescontoInatividadeAVistaMenor = null; try { parcelamentoDescontoInatividadeAVistaMenor = repositorioCobranca.obterPercentualDescontoInatividadeAVista( parcelamentoPerfil.getId(), quantidadeMeses); } catch (ErroRepositorioException e) { e.printStackTrace(); } if (parcelamentoDescontoInatividadeAVistaMenor != null) { BigDecimal percentualDescontoInatividadeAVista = null; if (helper.getIndicadorRestabelecimento().equals(2)) { // Com restabelecimento percentualDescontoInatividadeAVista = parcelamentoDescontoInatividadeAVistaMenor .getPercentualDescontoSemRestabelecimento(); valorDescontoInatividadePagamentoAVista = Util.dividirArredondando( percentualDescontoInatividadeAVista.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO), new BigDecimal("100.00")); valorDescontoInatividadePagamentoAVista = valorDescontoInatividadePagamentoAVista.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO).multiply( valorDebitoDescontoInatividade.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO)); } else if (helper.getIndicadorRestabelecimento().equals(1)) { // Sem restabelecimento percentualDescontoInatividadeAVista = parcelamentoDescontoInatividadeAVistaMenor .getPercentualDescontoComRestabelecimento().setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); valorDescontoInatividadePagamentoAVista = Util.dividirArredondando( percentualDescontoInatividadeAVista.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO), new BigDecimal("100.00")); valorDescontoInatividadePagamentoAVista = valorDescontoInatividadePagamentoAVista.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO).multiply( valorDebitoDescontoInatividade.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO)); } else { valorDescontoInatividadePagamentoAVista = new BigDecimal("0.00"); } negociacaoOpcoesParcelamentoHelper.setPercentualDescontoInatividadeAvistaLigacaoAgua(percentualDescontoInatividadeAVista); } else { valorDescontoInatividadePagamentoAVista = new BigDecimal("0.00"); } } else { valorDescontoInatividadePagamentoAVista = new BigDecimal("0.00"); } BigDecimal valorDebitoDesconto = new BigDecimal("0.00"); valorDebitoDesconto = helper.getValorDebitoAtualizado().setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO) .subtract(valorDescontoAcrescimosImpontualidade.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO)); valorDebitoDesconto = valorDebitoDesconto.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO) .subtract(valorDescontoFaixaReferenciaConta.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO)); valorDebitoDesconto = valorDebitoDesconto.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO) .subtract(valorDescontoInatividade.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO)); valorDebitoDesconto = valorDebitoDesconto.subtract(valorDescontoAntiguidade.setScale(Parcelamento.CASAS_DECIMAIS,Parcelamento.TIPO_ARREDONDAMENTO)); DeterminarValorDescontoPagamentoAVistaHelper valorDescontoPagamentoAVistaHelper = new DeterminarValorDescontoPagamentoAVistaHelper( helper, parcelamentoPerfil, valorDescontoFaixaReferenciaConta, valorDescontoAcrescimosImpontualidade, valorDescontoInatividade, valorDescontoAntiguidade, new BigDecimal("0.00"), new BigDecimal("0.00"), helper.getAnoMesFinalReferenciaDebito(), rd, helper.getValorCreditoARealizarParcelamentoImovel(), valorDescontoInatividadePagamentoAVista); BigDecimal valorDescontoPagamentoAVista = this.determinarValorDescontoPagamentoAVista(valorDescontoPagamentoAVistaHelper, valorDescontoAcrescimosImpontualidadeHelper, false); // Coloca os valores dos descontos no objeto helper negociacaoOpcoesParcelamentoHelper.setValorDescontoFaixaReferenciaConta(valorDescontoFaixaReferenciaConta); negociacaoOpcoesParcelamentoHelper.setValorDescontoAcrecismosImpotualidade(valorDescontoAcrescimosImpontualidade); negociacaoOpcoesParcelamentoHelper.setValorDescontoInatividade(valorDescontoInatividade); negociacaoOpcoesParcelamentoHelper.setValorDescontoAntiguidade(valorDescontoAntiguidade); negociacaoOpcoesParcelamentoHelper.setValorTotalDescontoPagamentoAVista(valorDescontoPagamentoAVista); return negociacaoOpcoesParcelamentoHelper; } /** * Retorna o valor de controladorPermissaoEspecial * * @return O valor de controladorPermissaoEspecial */ protected ControladorPermissaoEspecialLocal getControladorPermissaoEspecial() { ControladorPermissaoEspecialLocalHome localHome = null; ControladorPermissaoEspecialLocal local = null; // pega a inst�ncia do ServiceLocator. ServiceLocator locator = null; try { locator = ServiceLocator.getInstancia(); localHome = (ControladorPermissaoEspecialLocalHome) locator.getLocalHome(ConstantesJNDI.CONTROLADOR_PERMISSAO_ESPECIAL_SEJB); // guarda a referencia de um objeto capaz de fazer chamadas � // objetos remotamente local = localHome.create(); return local; } catch (CreateException e) { throw new SistemaException(e); } catch (ServiceLocatorException e) { throw new SistemaException(e); } } protected ControladorSpcSerasaLocal getControladorSpcSerasa() { ControladorSpcSerasaLocalHome localHome = null; ControladorSpcSerasaLocal local = null; // pega a inst�ncia do ServiceLocator. ServiceLocator locator = null; try { locator = ServiceLocator.getInstancia(); localHome = (ControladorSpcSerasaLocalHome) locator.getLocalHome(ConstantesJNDI.CONTROLADOR_SPC_SERASA_SEJB); // guarda a referencia de um objeto capaz de fazer chamadas � // objetos remotamente local = localHome.create(); return local; } catch (CreateException e) { throw new SistemaException(e); } catch (ServiceLocatorException e) { throw new SistemaException(e); } } private ControladorCadastroLocal getControladorCadastro() { ControladorCadastroLocalHome localHome = null; ControladorCadastroLocal local = null; ServiceLocator locator = null; try { locator = ServiceLocator.getInstancia(); localHome = (ControladorCadastroLocalHome) locator.getLocalHomePorEmpresa(ConstantesJNDI.CONTROLADOR_CADASTRO_SEJB); local = localHome.create(); return local; } catch (CreateException e) { throw new SistemaException(e); } catch (ServiceLocatorException e) { throw new SistemaException(e); } } /** * Retorna a interface remota de ControladorUnidade * * @return A interface remota do controlador unidade */ protected ControladorUnidadeLocal getControladorUnidade() { ControladorUnidadeLocalHome localHome = null; ControladorUnidadeLocal local = null; ServiceLocator locator = null; try { locator = ServiceLocator.getInstancia(); localHome = (ControladorUnidadeLocalHome) locator.getLocalHome(ConstantesJNDI.CONTROLADOR_UNIDADE_SEJB); local = localHome.create(); return local; } catch (CreateException e) { throw new SistemaException(e); } catch (ServiceLocatorException e) { throw new SistemaException(e); } } /** * Retorna o controladorLigacaoEsgoto * * @author S�vio Luiz * @date 21/12/2006 * */ protected ControladorLigacaoEsgotoLocal getControladorLigacaoEsgoto() { ControladorLigacaoEsgotoLocalHome localHome = null; ControladorLigacaoEsgotoLocal local = null; ServiceLocator locator = null; try { locator = ServiceLocator.getInstancia(); localHome = (ControladorLigacaoEsgotoLocalHome) locator.getLocalHome(ConstantesJNDI.CONTROLADOR_LIGACAO_ESGOTO_SEJB); local = localHome.create(); return local; } catch (CreateException e) { throw new SistemaException(e); } catch (ServiceLocatorException e) { throw new SistemaException(e); } } /** * Retorna o valor de controladorUtil * * @return O valor de controladorUtil */ protected ControladorUtilLocal getControladorUtil() { ControladorUtilLocalHome localHome = null; ControladorUtilLocal local = null; // pega a inst�ncia do ServiceLocator. ServiceLocator locator = null; try { locator = ServiceLocator.getInstancia(); localHome = (ControladorUtilLocalHome) locator.getLocalHome(ConstantesJNDI.CONTROLADOR_UTIL_SEJB); // guarda a referencia de um objeto capaz de fazer chamadas � // objetos remotamente local = localHome.create(); return local; } catch (CreateException e) { throw new SistemaException(e); } catch (ServiceLocatorException e) { throw new SistemaException(e); } } /** * Retorna o valor de controladorImovel * * @return O valor de controladorImovel */ protected ControladorImovelLocal getControladorImovel() { ControladorImovelLocalHome localHome = null; ControladorImovelLocal local = null; // pega a inst�ncia do ServiceLocator. ServiceLocator locator = null; try { locator = ServiceLocator.getInstancia(); localHome = (ControladorImovelLocalHome) locator.getLocalHome(ConstantesJNDI.CONTROLADOR_IMOVEL_SEJB); // guarda a referencia de um objeto capaz de fazer chamadas � // objetos remotamente local = localHome.create(); return local; } catch (CreateException e) { throw new SistemaException(e); } catch (ServiceLocatorException e) { throw new SistemaException(e); } } /** * Retorna o valor de controladorFaturamento * * @return O valor de controladorFaturamento */ protected ControladorFaturamentoLocal getControladorFaturamento() { ControladorFaturamentoLocalHome localHome = null; ControladorFaturamentoLocal local = null; // pega a inst�ncia do ServiceLocator. ServiceLocator locator = null; try { locator = ServiceLocator.getInstancia(); localHome = (ControladorFaturamentoLocalHome) locator.getLocalHomePorEmpresa(ConstantesJNDI.CONTROLADOR_FATURAMENTO_SEJB); // guarda a referencia de um objeto capaz de fazer chamadas � // objetos remotamente local = localHome.create(); return local; } catch (CreateException e) { throw new SistemaException(e); } catch (ServiceLocatorException e) { throw new SistemaException(e); } } /** * Retorna o valor de controladorFaturamento * * @return O valor de controladorFaturamento */ protected ControladorAtendimentoPublicoLocal getControladorAtendimentoPublico() { ControladorAtendimentoPublicoLocalHome localHome = null; ControladorAtendimentoPublicoLocal local = null; // pega a inst�ncia do ServiceLocator. ServiceLocator locator = null; try { locator = ServiceLocator.getInstancia(); localHome = (ControladorAtendimentoPublicoLocalHome) locator.getLocalHome(ConstantesJNDI.CONTROLADOR_ATENDIMENTO_PUBLICO_SEJB); // guarda a referencia de um objeto capaz de fazer chamadas � // objetos remotamente local = localHome.create(); return local; } catch (CreateException e) { throw new SistemaException(e); } catch (ServiceLocatorException e) { throw new SistemaException(e); } } /** * Retorna o valor de controladorFaturamento * * @return O valor de controladorFaturamento */ protected ControladorClienteLocal getControladorCliente() { ControladorClienteLocalHome localHome = null; ControladorClienteLocal local = null; // pega a inst�ncia do ServiceLocator. ServiceLocator locator = null; try { locator = ServiceLocator.getInstancia(); localHome = (ControladorClienteLocalHome) locator.getLocalHome(ConstantesJNDI.CONTROLADOR_CLIENTE_SEJB); // guarda a referencia de um objeto capaz de fazer chamadas � // objetos remotamente local = localHome.create(); return local; } catch (CreateException e) { throw new SistemaException(e); } catch (ServiceLocatorException e) { throw new SistemaException(e); } } /** * Retorna o valor de controladorMicromedicao * * @return O valor de controladorMicromedicao */ protected ControladorMicromedicaoLocal getControladorMicromedicao() { ControladorMicromedicaoLocalHome localHome = null; ControladorMicromedicaoLocal local = null; // pega a inst�ncia do ServiceLocator. ServiceLocator locator = null; try { locator = ServiceLocator.getInstancia(); localHome = (ControladorMicromedicaoLocalHome) locator.getLocalHomePorEmpresa(ConstantesJNDI.CONTROLADOR_MICROMEDICAO_SEJB); // guarda a referencia de um objeto capaz de fazer chamadas � // objetos remotamente local = localHome.create(); return local; } catch (CreateException e) { throw new SistemaException(e); } catch (ServiceLocatorException e) { throw new SistemaException(e); } } /** * Retorna o valor de controladorAcesso * * @return O valor de controladorAcesso */ protected ControladorAcessoLocal getControladorAcesso() { ControladorAcessoLocalHome localHome = null; ControladorAcessoLocal local = null; // pega a inst�ncia do ServiceLocator. ServiceLocator locator = null; try { locator = ServiceLocator.getInstancia(); localHome = (ControladorAcessoLocalHome) locator.getLocalHome(ConstantesJNDI.CONTROLADOR_ACESSO_SEJB); // guarda a referencia de um objeto capaz de fazer chamadas � // objetos remotamente local = localHome.create(); return local; } catch (CreateException e) { throw new SistemaException(e); } catch (ServiceLocatorException e) { throw new SistemaException(e); } } protected ControladorTransacaoLocal getControladorTransacao() { ControladorTransacaoLocalHome localHome = null; ControladorTransacaoLocal local = null; // pega a inst�ncia do ServiceLocator. ServiceLocator locator = null; try { locator = ServiceLocator.getInstancia(); localHome = (ControladorTransacaoLocalHome) locator.getLocalHome(ConstantesJNDI.CONTROLADOR_TRANSACAO_SEJB); // guarda a referencia de um objeto capaz de fazer chamadas � // objetos remotamente local = localHome.create(); return local; } catch (CreateException e) { throw new SistemaException(e); } catch (ServiceLocatorException e) { throw new SistemaException(e); } } /** * Retorna o valor de controladorAcesso * * @return O valor de controladorAcesso */ protected ControladorArrecadacaoLocal getControladorArrecadacao() { ControladorArrecadacaoLocalHome localHome = null; ControladorArrecadacaoLocal local = null; // pega a inst�ncia do ServiceLocator. ServiceLocator locator = null; try { locator = ServiceLocator.getInstancia(); localHome = (ControladorArrecadacaoLocalHome) locator.getLocalHomePorEmpresa(ConstantesJNDI.CONTROLADOR_ARRECADACAO_SEJB); // guarda a referencia de um objeto capaz de fazer chamadas � // objetos remotamente local = localHome.create(); return local; } catch (CreateException e) { throw new SistemaException(e); } catch (ServiceLocatorException e) { throw new SistemaException(e); } } /** * Retorna o controladorLocalidade * * @author Ivan Sergio * @date 21/05/2009 * */ protected ControladorLocalidadeLocal getControladorLocalidade() { ControladorLocalidadeLocalHome localHome = null; ControladorLocalidadeLocal local = null; ServiceLocator locator = null; try { locator = ServiceLocator.getInstancia(); localHome = (ControladorLocalidadeLocalHome) locator.getLocalHome(ConstantesJNDI.CONTROLADOR_LOCALIDADE_SEJB); local = localHome.create(); return local; } catch (CreateException e) { throw new SistemaException(e); } catch (ServiceLocatorException e) { throw new SistemaException(e); } } /** * Retorna a interface remota de ControladorParametro * * @return A interface remota do controlador de par�metro */ private ControladorUsuarioLocal getControladorUsuario() { ControladorUsuarioLocalHome localHome = null; ControladorUsuarioLocal local = null; // pega a inst�ncia do ServiceLocator. ServiceLocator locator = null; try { locator = ServiceLocator.getInstancia(); localHome = (ControladorUsuarioLocalHome) locator.getLocalHome(ConstantesJNDI.CONTROLADOR_USUARIO_SEJB); // guarda a referencia de um objeto capaz de fazer chamadas � // objetos remotamente local = localHome.create(); return local; } catch (CreateException e) { throw new SistemaException(e); } catch (ServiceLocatorException e) { throw new SistemaException(e); } } /** * [UC0xxx] Emitir Documentos de Cobran�a Em Lote * * @author Mariana Victor * @date 17/01/2011 * * @return * @throws ErroRepositorioException */ public Collection<RelatorioVisitaCobrancaBean> gerarRelatorioVisitaCobranca(Integer idCobrancaAcaoCronograma, Integer idCobrancaAcaoComando, int tamanhoMaximoDebito, String quantidadeRelatorios, Collection<CobrancaDocumento> colecaoDocumentoCobranca) throws ControladorException { Collection<RelatorioVisitaCobrancaBean> retorno = new ArrayList<RelatorioVisitaCobrancaBean>(); try { FiltroSistemaParametro filtroSistemaParametro = new FiltroSistemaParametro(); Collection colecaoSistemaParametro = Fachada.getInstancia().pesquisar(filtroSistemaParametro, SistemaParametro.class.getName()); SistemaParametro sistemaParametro = (SistemaParametro) colecaoSistemaParametro.iterator().next(); if (colecaoDocumentoCobranca == null || colecaoDocumentoCobranca.isEmpty()) { colecaoDocumentoCobranca = repositorioCobranca.pesquisarCobrancaDocumentoParaRelatorio(idCobrancaAcaoCronograma, idCobrancaAcaoComando); } int count = 1; for (CobrancaDocumento cobrancaDocumento : colecaoDocumentoCobranca) { int count2 = 0; BigDecimal valor = new BigDecimal(0); Collection<Conta> contas = repositorioCobranca.pesquisarCobrancaDocumentoItem(cobrancaDocumento.getId()); String inscricao = getControladorImovel().pesquisarInscricaoImovel(cobrancaDocumento.getImovel().getId()); Cliente clienteUsuario = getControladorCliente().retornaDadosClienteUsuario(cobrancaDocumento.getImovel().getId()); String telefoneCliente = ""; String codigoRota = cobrancaDocumento.getImovel().getQuadra().getRota().getCodigo().toString(); String sequencialRota = ""; String descricaoSituacaoLigacaoAgua = cobrancaDocumento.getLigacaoAguaSituacao().getDescricao(); String descricaoSituacaoLigacaoEsgoto = cobrancaDocumento.getLigacaoEsgotoSituacao().getDescricao(); Date dataVencimento = null; if (colecaoDocumentoCobranca == null || colecaoDocumentoCobranca.isEmpty()) { Util.adicionarNumeroDiasDeUmaData(new Date(), cobrancaDocumento.getCobrancaAcao().getNumeroDiasVencimento()); } else { dataVencimento = this.obterDataVencimentoDocumentoCobranca(cobrancaDocumento); } if (cobrancaDocumento.getImovel().getNumeroSequencialRota() != null) { sequencialRota = cobrancaDocumento.getImovel().getNumeroSequencialRota().toString(); } Integer idOrdemServico = null; idOrdemServico = repositorioCobranca.obterOrdemServicoAssociadaDocumentoCobranca(cobrancaDocumento.getId()); Integer categoriaRES = 0; Integer categoriaPUB = 0; Integer categoriaIND = 0; Integer categoriaCOM = 0; // Inclui [UC0108] - Obter Quantidade de Economias por Categoria Collection<Categoria> colecaoCategorias = getControladorImovel().obterQuantidadeEconomiasCategoria( cobrancaDocumento.getImovel()); Iterator iteratorCategoria = colecaoCategorias.iterator(); while (iteratorCategoria.hasNext()) { Categoria categoria = (Categoria) iteratorCategoria.next(); if (categoria.getDescricaoAbreviada().equals(Categoria.RESIDENCIAL_DESCRICAO_ABREVIADA)) { categoriaRES++; } else if (categoria.getDescricaoAbreviada().equals(Categoria.COMERCIAL_DESCRICAO_ABREVIADA)) { categoriaCOM++; } else if (categoria.getDescricaoAbreviada().equals(Categoria.INDUSTRIAL_DESCRICAO_ABREVIADA)) { categoriaIND++; } else if (categoria.getDescricaoAbreviada().equals(Categoria.PUBLICO_DESCRICAO_ABREVIADA)) { categoriaPUB++; } } Collection colecaoClienteFone = getControladorCliente().pesquisarClienteFone(clienteUsuario.getId()); ClienteFone clienteFone = null; if (colecaoClienteFone != null && !colecaoClienteFone.isEmpty()) { Iterator colecaoClienteFoneIterator = colecaoClienteFone.iterator(); while (colecaoClienteFoneIterator.hasNext()) { clienteFone = (ClienteFone) colecaoClienteFoneIterator.next(); if (clienteFone.getIndicadorTelefonePadrao() != null && clienteFone.getIndicadorTelefonePadrao().equals(ClienteFone.INDICADOR_FONE_PADRAO)) { break; } } telefoneCliente = clienteFone.getDddTelefone(); } FiltroCobrancaDocumento filtroCobrancaDocumento = new FiltroCobrancaDocumento(); filtroCobrancaDocumento.adicionarParametro(new ParametroSimples(FiltroCobrancaDocumento.ID, cobrancaDocumento.getId())); filtroCobrancaDocumento.adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaDocumento.PERFIL_IMOVEL); Collection colecaoCobrancaDocumento = Fachada.getInstancia().pesquisar(filtroCobrancaDocumento, CobrancaDocumento.class.getName()); ImovelPerfil imovelPerfil = ((CobrancaDocumento) Util.retonarObjetoDeColecao(colecaoCobrancaDocumento)).getImovelPerfil(); // [SB0004 � Obter Representa��o num�rica do Nosso N�mero da // Ficha de Compensa��o] StringBuilder nossoNumero = Fachada.getInstancia().obterNossoNumeroFichaCompensacao( cobrancaDocumento.getDocumentoTipo().getId().toString(), cobrancaDocumento.getId().toString()); String sacadoParte01; if (cobrancaDocumento.getImovel().getNomeImovel() != null) { sacadoParte01 = cobrancaDocumento.getImovel().getNomeImovel(); } else { sacadoParte01 = clienteUsuario.getNome(); } String sacadoParte03 = Util.retornaMatriculaImovelFormatada(cobrancaDocumento.getImovel().getId()); String enderecoImovel = getControladorEndereco().pesquisarEnderecoFormatado(cobrancaDocumento.getImovel().getId()); // representa��o num�rica do c�digo de barras String representacaoNumericaCodBarra = ""; // Obt�m a representa��o num�rica do // c�digode // barra representacaoNumericaCodBarra = this.getControladorArrecadacao().obterRepresentacaoNumericaCodigoBarra(5, cobrancaDocumento.getValorDocumento(), cobrancaDocumento.getLocalidade().getId(), cobrancaDocumento.getImovel().getId(), null, null, null, null, String.valueOf(cobrancaDocumento.getNumeroSequenciaDocumento()), cobrancaDocumento.getDocumentoTipo().getId(), null, null, null); // Formata a representa��o n�merica do // c�digo de // barras String representacaoNumericaCodBarraFormatada = representacaoNumericaCodBarra.substring(0, 11) + "-" + representacaoNumericaCodBarra.substring(11, 12) + " " + representacaoNumericaCodBarra.substring(12, 23) + "-" + representacaoNumericaCodBarra.substring(23, 24) + " " + representacaoNumericaCodBarra.substring(24, 35) + "-" + representacaoNumericaCodBarra.substring(35, 36) + " " + representacaoNumericaCodBarra.substring(36, 47) + "-" + representacaoNumericaCodBarra.substring(47, 48); String representacaoNumericaCodBarraSemDigito = representacaoNumericaCodBarra.substring(0, 11) + representacaoNumericaCodBarra.substring(12, 23) + representacaoNumericaCodBarra.substring(24, 35) + representacaoNumericaCodBarra.substring(36, 47); String nossoNumeroSemDV = nossoNumero.toString().substring(0, 17); String fatorVencimento = CodigoBarras.obterFatorVencimento(dataVencimento); String especificacaoCodigoBarra = CodigoBarras.obterEspecificacaoCodigoBarraFichaCompensacao( ConstantesSistema.CODIGO_BANCO_FICHA_COMPENSACAO, ConstantesSistema.CODIGO_MOEDA_FICHA_COMPENSACAO, cobrancaDocumento.getValorDocumento(), nossoNumeroSemDV.toString(), ConstantesSistema.CARTEIRA_FICHA_COMPENSACAO, fatorVencimento); String representacaoNumericaCodigoBarraFichaCompensacao = CodigoBarras.obterRepresentacaoNumericaCodigoBarraFichaCompensacao(especificacaoCodigoBarra); boolean registroAdicionado = false; BigDecimal valorTotal = BigDecimal.ZERO; for (Conta conta : contas) { count2++; if ((contas.size() - count2) > tamanhoMaximoDebito) { valor = valor.add(conta.getValorTotal()); } else { RelatorioVisitaCobrancaBean bean = new RelatorioVisitaCobrancaBean(); bean.setSequencial(Util.retornaSequencialFormatado(count)); if (idOrdemServico != null) { bean.setOrdemServico(idOrdemServico.toString()); } else { bean.setOrdemServico(""); } bean.setDataEmissao(Util.formatarData(cobrancaDocumento.getEmissao())); bean.setDataValidade(Util.formatarData(dataVencimento)); bean.setGrupo(cobrancaDocumento.getQuadra().getRota().getCobrancaGrupo().getId().toString()); bean.setMatricula(cobrancaDocumento.getImovel().getMatriculaFormatada()); bean.setInscricao(inscricao); bean.setRota(codigoRota); bean.setSequencialRota(sequencialRota); bean.setCategoriaRES(categoriaRES.toString()); bean.setCategoriaCOM(categoriaCOM.toString()); bean.setCategoriaIND(categoriaIND.toString()); bean.setCategoriaPUB(categoriaPUB.toString()); bean.setSituacaoLigacaoAgua(descricaoSituacaoLigacaoAgua); bean.setSituacaoLigacaoEsgoto(descricaoSituacaoLigacaoEsgoto); bean.setNomeClienteUsuario(clienteUsuario.getNome()); bean.setPerfilCliente(imovelPerfil.getDescricao()); if (clienteUsuario.getCpf() != null) bean.setCpfCliente(Util.formatarCpf(clienteUsuario.getCpf())); else if (clienteUsuario.getCnpj() != null) bean.setCpfCliente(Util.formatarCnpj(clienteUsuario.getCnpj())); else bean.setCpfCliente(""); bean.setTelefoneCliente(telefoneCliente); bean.setEnderecoImovel(enderecoImovel); bean.setSequencialDocumentoCobranca("" + cobrancaDocumento.getNumeroSequenciaDocumento()); RelatorioVisitaCobrancaSubBean relatorioVisitaCobrancaSubBean = new RelatorioVisitaCobrancaSubBean(); // relatorioVisitaCobrancaSubBean.setRepresentacaoNumericaCodBarraSemDigito(representacaoNumericaCodBarraSemDigito); relatorioVisitaCobrancaSubBean.setIdImovel(cobrancaDocumento.getImovel().getId().toString()); relatorioVisitaCobrancaSubBean.setNossoNumero(nossoNumero.toString()); relatorioVisitaCobrancaSubBean.setSacadoParte01(sacadoParte01); relatorioVisitaCobrancaSubBean.setSacadoParte03(sacadoParte03); if ((contas.size() - count2) == tamanhoMaximoDebito) { valor = valor.add(conta.getValorTotal()); valorTotal = valorTotal.add(valor); bean.setValor(Util.formatarMoedaReal(valor)); bean.setMesAno("DEB. AT� " + conta.getReferenciaFormatada()); bean.setDataVencimento(Util.formatarData(conta.getDataVencimentoConta())); } else { valorTotal = valorTotal.add(conta.getValorTotal()); bean.setValor(Util.formatarMoedaReal(conta.getValorTotal())); bean.setMesAno(conta.getReferenciaFormatada()); bean.setDataVencimento(Util.formatarData(conta.getDataVencimentoConta())); } bean.setValorTotal(Util.formatarMoedaReal(valorTotal)); BigDecimal valorDocumento = valorTotal; if (cobrancaDocumento.getValorAcrescimos() != null) { valorDocumento.add(cobrancaDocumento.getValorAcrescimos()); } if (cobrancaDocumento.getValorDesconto() != null) { valorDocumento.subtract(cobrancaDocumento.getValorDesconto()); } relatorioVisitaCobrancaSubBean.setValorDocumento(Util.formatarMoedaReal(valorDocumento)); if (sistemaParametro.getValorExtratoFichaComp() != null && !sistemaParametro.getValorExtratoFichaComp().equals(BigDecimal.ZERO)) { if (valorDocumento.compareTo(sistemaParametro.getValorExtratoFichaComp()) != -1) { relatorioVisitaCobrancaSubBean .setRepresentacaoNumericaCodBarraFormatada(representacaoNumericaCodigoBarraFichaCompensacao); relatorioVisitaCobrancaSubBean.setRepresentacaoNumericaCodBarraSemDigito(especificacaoCodigoBarra); bean.setSubRelatorio("relatorioVisitaCobrancaEmissaoFichaCompensacao.jasper"); } else { relatorioVisitaCobrancaSubBean .setRepresentacaoNumericaCodBarraFormatada(representacaoNumericaCodBarraFormatada); relatorioVisitaCobrancaSubBean .setRepresentacaoNumericaCodBarraSemDigito(representacaoNumericaCodBarraSemDigito); bean.setSubRelatorio("relatorioVisitaCobrancaEmissaoPadrao.jasper"); } } else { relatorioVisitaCobrancaSubBean .setRepresentacaoNumericaCodBarraFormatada(representacaoNumericaCodBarraFormatada); relatorioVisitaCobrancaSubBean .setRepresentacaoNumericaCodBarraSemDigito(representacaoNumericaCodBarraSemDigito); bean.setSubRelatorio("relatorioVisitaCobrancaEmissaoPadrao.jasper"); } bean.setRelatorioVisitaCobrancaSubBean(relatorioVisitaCobrancaSubBean); registroAdicionado = true; retorno.add(bean); } } // adiciona linhas em branco no relatorio para alinhar, // quando a quantidade de relatorios/pagina = 2 // e o numero de contas for menor que a metade do // "tamanhoMaximoDebito" int metadeTamanhoMaxDebito = (tamanhoMaximoDebito + 1) / 2; if (quantidadeRelatorios != null && quantidadeRelatorios.equals("2") && contas.size() < metadeTamanhoMaxDebito) { for (int i = 0; i < (metadeTamanhoMaxDebito - contas.size()); i++) { RelatorioVisitaCobrancaBean bean = new RelatorioVisitaCobrancaBean(); bean.setSequencial(Util.retornaSequencialFormatado(count)); if (idOrdemServico != null) { bean.setOrdemServico(idOrdemServico.toString()); } else { bean.setOrdemServico(""); } bean.setDataEmissao(Util.formatarData(cobrancaDocumento.getEmissao())); bean.setDataValidade(Util.formatarData(dataVencimento)); bean.setGrupo(cobrancaDocumento.getQuadra().getRota().getCobrancaGrupo().getId().toString()); bean.setMatricula(cobrancaDocumento.getImovel().getMatriculaFormatada()); bean.setInscricao(inscricao); bean.setRota(codigoRota); bean.setSequencialRota(sequencialRota); bean.setCategoriaRES(categoriaRES.toString()); bean.setCategoriaCOM(categoriaCOM.toString()); bean.setCategoriaIND(categoriaIND.toString()); bean.setCategoriaPUB(categoriaPUB.toString()); bean.setSituacaoLigacaoAgua(descricaoSituacaoLigacaoAgua); bean.setSituacaoLigacaoEsgoto(descricaoSituacaoLigacaoEsgoto); bean.setNomeClienteUsuario(clienteUsuario.getNome()); bean.setPerfilCliente(imovelPerfil.getDescricao()); if (clienteUsuario.getCpf() != null) bean.setCpfCliente(Util.formatarCpf(clienteUsuario.getCpf())); else if (clienteUsuario.getCnpj() != null) bean.setCpfCliente(Util.formatarCnpj(clienteUsuario.getCnpj())); else bean.setCpfCliente(""); bean.setTelefoneCliente(telefoneCliente); bean.setEnderecoImovel(enderecoImovel); bean.setSequencialDocumentoCobranca("" + cobrancaDocumento.getNumeroSequenciaDocumento()); RelatorioVisitaCobrancaSubBean relatorioVisitaCobrancaSubBean = new RelatorioVisitaCobrancaSubBean(); relatorioVisitaCobrancaSubBean.setRepresentacaoNumericaCodBarraSemDigito(representacaoNumericaCodBarraSemDigito); relatorioVisitaCobrancaSubBean.setIdImovel(cobrancaDocumento.getImovel().getId().toString()); relatorioVisitaCobrancaSubBean.setNossoNumero(nossoNumero.toString()); relatorioVisitaCobrancaSubBean.setSacadoParte01(sacadoParte01); relatorioVisitaCobrancaSubBean.setSacadoParte03(sacadoParte03); BigDecimal valorDocumento = valorTotal; if (cobrancaDocumento.getValorAcrescimos() != null) { valorDocumento.add(cobrancaDocumento.getValorAcrescimos()); } if (cobrancaDocumento.getValorDesconto() != null) { valorDocumento.subtract(cobrancaDocumento.getValorDesconto()); } relatorioVisitaCobrancaSubBean.setValorDocumento(Util.formatarMoedaReal(valorDocumento)); if (sistemaParametro.getValorExtratoFichaComp() != null && !sistemaParametro.getValorExtratoFichaComp().equals(BigDecimal.ZERO)) { if (valorDocumento.compareTo(sistemaParametro.getValorExtratoFichaComp()) != -1) { bean.setSubRelatorio("relatorioVisitaCobrancaEmissaoFichaCompensacao.jasper"); relatorioVisitaCobrancaSubBean .setRepresentacaoNumericaCodBarraFormatada(representacaoNumericaCodigoBarraFichaCompensacao); } else { bean.setSubRelatorio("relatorioVisitaCobrancaEmissaoPadrao.jasper"); relatorioVisitaCobrancaSubBean .setRepresentacaoNumericaCodBarraFormatada(representacaoNumericaCodBarraFormatada); } } else { bean.setSubRelatorio("relatorioVisitaCobrancaEmissaoPadrao.jasper"); relatorioVisitaCobrancaSubBean .setRepresentacaoNumericaCodBarraFormatada(representacaoNumericaCodBarraFormatada); } bean.setRelatorioVisitaCobrancaSubBean(relatorioVisitaCobrancaSubBean); registroAdicionado = true; retorno.add(bean); } } if (registroAdicionado) { count++; } } } catch (ErroRepositorioException e) { throw new ControladorException("erro.sistema", e); } return retorno; } /** * * [UC1038] Prescrever D�bitos de Im�veis * * @author Hugo Leonardo * @date 07/07/2010 * */ public void gerarPrescreverDebitosDeImoveis(Integer idFuncionalidadeIniciada, Integer anoMesFaturamento, Date dataPrescricao, Integer usuario, String idsCobrancaSituacao) throws ControladorException { int idUnidadeIniciada = 0; // --------------------------------------------------- // Registrar o in�cio do processamento da Unidade de // Processamento do Batch // --------------------------------------------------- idUnidadeIniciada = getControladorBatch().iniciarUnidadeProcessamentoBatch(idFuncionalidadeIniciada, UnidadeProcessamento.FUNCIONALIDADE, 0); try { SimpleDateFormat formater = new SimpleDateFormat("yyyy-MM-dd"); String dataFormatada = formater.format(dataPrescricao); this.repositorioCobranca.prescreverDebitosDeImoveis(anoMesFaturamento, dataFormatada, usuario); this.repositorioCobranca.prescreverDebitosDeImoveisContasInlcuidas(anoMesFaturamento, dataFormatada, usuario); getControladorBatch().encerrarUnidadeProcessamentoBatch(null, idUnidadeIniciada, false); } catch (ErroRepositorioException e) { e.printStackTrace(); getControladorBatch().encerrarUnidadeProcessamentoBatch(e, idUnidadeIniciada, true); throw new EJBException(e); } } /** * [UC0998] Gerar Rela��o de Parcelamento - Vis�o Cart�o de Cr�dito * * Bean que preencher� o relatorio * * @author Hugo Amorim * @date 11/06/2010 * */ public Collection<RelatorioRelacaoParcelamentoCartaoCreditoBean> filtrarRelacaoParcelamentoCartaoCredito( FiltrarRelacaoParcelamentoHelper filtrarRelacaoParcelamento) throws ControladorException { Collection<Object[]> colecaoRelacaoParcelamento = new ArrayList(); Collection<RelatorioRelacaoParcelamentoCartaoCreditoBean> beans = new ArrayList(); try { colecaoRelacaoParcelamento = repositorioCobranca.filtrarRelacaoParcelamentoCartaoCredito(filtrarRelacaoParcelamento); if (colecaoRelacaoParcelamento != null && colecaoRelacaoParcelamento.size() > 0) { Iterator iteRelacaoParcelamento = colecaoRelacaoParcelamento.iterator(); while (iteRelacaoParcelamento.hasNext()) { Object[] linha = (Object[]) iteRelacaoParcelamento.next(); RelatorioRelacaoParcelamentoCartaoCreditoBean bean = new RelatorioRelacaoParcelamentoCartaoCreditoBean(); bean.setIdLocalidade((String) linha[1]); bean.setDescricaoLocalidade((String) linha[2]); bean.setIdGerencia((String) linha[3]); bean.setDescricaoGerencia((String) linha[4]); bean.setNome((String) linha[5]); bean.setMatricula(Util.retornaMatriculaImovelFormatada((Integer) linha[6])); if (linha[13] != null) { Date dataConfirmacaoParcelamento = (Date) linha[13]; Short nnDiasFloat = repositorioCobranca.pesquisarNumeroDiasFloatCartao((Integer) linha[11], ArrecadacaoForma.CARTAO_CREDITO); dataConfirmacaoParcelamento = Util.adicionarNumeroDiasDeUmaData(dataConfirmacaoParcelamento, nnDiasFloat); bean.setDataPrimeiroVencimento(Util.formatarData(dataConfirmacaoParcelamento)); } bean.setValorDebito((BigDecimal) linha[7]); bean.setValorParcela((BigDecimal) linha[8]); bean.setDataParcelamento(Util.formatarData((Date) linha[9])); bean.setQuantidadeParcelas((String) linha[10]); bean.setUsuarioConfirmacaoCartaoCredito((String) linha[12]); bean.setDataConfirmacaoCartaoCredito(Util.formatarData((Date) linha[13])); bean.setDataConfirmacaoCartaoCreditoOperadora(Util.formatarData((Date) linha[14])); bean.setValorConfirmado((BigDecimal) linha[15]); if (!Util.isVazioOrNulo(filtrarRelacaoParcelamento.getColecaoMunicipiosAssociados())) { bean.setIdMunicipio((String) linha[16]); bean.setDescricaoMunicipio((String) linha[17]); } beans.add(bean); } } } catch (ErroRepositorioException ex) { sessionContext.setRollbackOnly(); ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } return beans; } /** * [UC0252] � Consultar Parcelamentos de D�bitos * * @author Raphael Rossiter * @date 20/05/2010 * * @param colecaoParcelamentoPagamentoCartaoCredito * @param usuarioLogado * @throws ControladorException */ public void atualizarParcelamentoPagamentoCartaoCredito(Collection colecaoParcelamentoPagamentoCartaoCredito, Usuario usuarioLogado) throws ControladorException { if (colecaoParcelamentoPagamentoCartaoCredito != null && !colecaoParcelamentoPagamentoCartaoCredito.isEmpty()) { Iterator iterator = colecaoParcelamentoPagamentoCartaoCredito.iterator(); BigDecimal valorTotalTransacao = BigDecimal.ZERO; ParcelamentoPagamentoCartaoCredito parcelamentoPagamentoCartaoCredito = null; while (iterator.hasNext()) { parcelamentoPagamentoCartaoCredito = (ParcelamentoPagamentoCartaoCredito) iterator.next(); valorTotalTransacao = valorTotalTransacao.add(parcelamentoPagamentoCartaoCredito.getValorParcelado()); } BigDecimal valorParcelado = parcelamentoPagamentoCartaoCredito.getParcelamento().getValorParcelado(); /* * [FS0005] � Somat�rio Inv�lido. * * Caso o somat�rio dos cart�es esteja maior ou menor que o valor * total dos d�bitos selecionados, exibir a mensagem �Valor * informado para os cart�es est� inv�lido� + menor ou maior �que o * valor dos d�bitos selecionados�. */ if ((valorTotalTransacao.compareTo(valorParcelado) != 0)) { if (valorTotalTransacao.compareTo(valorParcelado) < 0) { throw new ControladorException("atencao.somatorio_invalido", null, "menor"); } else { throw new ControladorException("atencao.somatorio_invalido", null, "maior"); } } iterator = colecaoParcelamentoPagamentoCartaoCredito.iterator(); while (iterator.hasNext()) { parcelamentoPagamentoCartaoCredito = (ParcelamentoPagamentoCartaoCredito) iterator.next(); // ULTIMA ALTERACAO parcelamentoPagamentoCartaoCredito.setUltimaAlteracao(new Date()); // ------------ REGISTRAR TRANSA��O ---------------- RegistradorOperacao registradorOperacao = new RegistradorOperacao( Operacao.OPERACAO_ATUALIZAR_PARCELAMENTO_PAGAMENTO_CARTAO_CREDITO, parcelamentoPagamentoCartaoCredito .getParcelamento().getId(), parcelamentoPagamentoCartaoCredito.getId(), new UsuarioAcaoUsuarioHelper( usuarioLogado, UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO)); registradorOperacao.registrarOperacao(parcelamentoPagamentoCartaoCredito); // ------------ REGISTRAR TRANSA��O ---------------- getControladorUtil().atualizar(parcelamentoPagamentoCartaoCredito); } } } /** * [UC0252] � Consultar Parcelamentos de D�bitos * * @author Raphael Rossiter * @date 25/05/2010 * * @param idParcelamento * @return boolean * @throws ControladorException */ public boolean parcelamentoPagamentoCartaoCreditoJaConfirmado(Integer idParcelamento) throws ControladorException { boolean retorno = false; FiltroParcelamentoPagamentoCartaoCredito filtroParcelamentoPagamentoCartaoCredito = new FiltroParcelamentoPagamentoCartaoCredito(); filtroParcelamentoPagamentoCartaoCredito.adicionarParametro(new ParametroSimples( FiltroParcelamentoPagamentoCartaoCredito.ID_PARCELAMENTO, idParcelamento)); Collection colecaoParcelamentoPagamentoCartaoCredito = this.getControladorUtil().pesquisar( filtroParcelamentoPagamentoCartaoCredito, ParcelamentoPagamentoCartaoCredito.class.getName()); if (colecaoParcelamentoPagamentoCartaoCredito != null && !colecaoParcelamentoPagamentoCartaoCredito.isEmpty()) { Iterator iterator = colecaoParcelamentoPagamentoCartaoCredito.iterator(); while (iterator.hasNext()) { ParcelamentoPagamentoCartaoCredito parcelamentoPagamentoCartaoCredito = (ParcelamentoPagamentoCartaoCredito) iterator .next(); if (parcelamentoPagamentoCartaoCredito.getIndicadorConfirmadoOperadora().equals(ConstantesSistema.SIM)) { retorno = true; break; } } } return retorno; } /** * [UC0178] Religar Automaticamente Im�vel Cortado BATCH - Permite a * Religa��o autom�tica de im�veis cortados Author: Rafael Santos Data: * 02/01/2006 * * @throws ControladorException */ public void religarAutomaticamenteImovelCortado() throws ControladorException { Collection colecaoMatriculasImoveis = null; String anoMesReferencia = getControladorUtil().pesquisarParametrosDoSistema().getAnoMesFaturamento() + ""; Calendar data = new GregorianCalendar(); data.set(Calendar.YEAR, new Integer(anoMesReferencia.substring(0, 4)).intValue()); data.set(Calendar.MONTH, new Integer(anoMesReferencia.substring(4, 6)).intValue() - 1); data.set(Calendar.DATE, 31); data.add(Calendar.DATE, -60); try { colecaoMatriculasImoveis = repositorioCobranca.pesquisarImoveisCortados(LigacaoEsgotoSituacao.LIGADO.toString(), LigacaoAguaSituacao.CORTADO.toString(), data.getTime()); } catch (ErroRepositorioException ex) { sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", ex); } if (colecaoMatriculasImoveis != null && !colecaoMatriculasImoveis.isEmpty()) { Iterator icolecaoMatriculasImoveis = colecaoMatriculasImoveis.iterator(); // itera as matriculas dos imoveis, verificando cada um String idConsumoHistorico = null; while (icolecaoMatriculasImoveis.hasNext()) { String id = ((Integer) icolecaoMatriculasImoveis.next()).toString(); try { // pesquisa do consumo historico idConsumoHistorico = repositorioCobranca.pesquisarImoveisHidrometroAguaConsumoFaturadoReal(id, anoMesReferencia, ConsumoTipo.REAL.toString(), LigacaoTipo.LIGACAO_AGUA.toString()); } catch (ErroRepositorioException ex) { sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", ex); } if (idConsumoHistorico != null) { data.setTime(new Date()); this.religarImovelCortado(id, LigacaoAguaSituacao.LIGADO.toString(), data.getTime()); } else {// pesquisa agora o consumo historico com a data de // referencia de faturamento menos 1 m�s data = new GregorianCalendar(); data.set(Calendar.YEAR, new Integer(anoMesReferencia.substring(0, 4)).intValue()); data.set(Calendar.MONTH, new Integer(anoMesReferencia.substring(4, 6)).intValue()); data.add(Calendar.MONTH, -1); if ((data.get(Calendar.MONTH) + 1) < 10) { anoMesReferencia = data.get(Calendar.YEAR) + "0" + (data.get(Calendar.MONTH) + 1); } else { anoMesReferencia = data.get(Calendar.YEAR) + "" + (data.get(Calendar.MONTH) + 1); } try { idConsumoHistorico = repositorioCobranca.pesquisarImoveisHidrometroAguaConsumoFaturadoReal(id, anoMesReferencia, ConsumoTipo.REAL.toString(), LigacaoTipo.LIGACAO_AGUA.toString()); } catch (ErroRepositorioException ex) { sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", ex); } if (idConsumoHistorico != null) { data.setTime(new Date()); this.religarImovelCortado(id, LigacaoAguaSituacao.LIGADO.toString(), data.getTime()); } } if (idConsumoHistorico == null) { // obter debito do imovel ou cliente String anoMesArrecadacao = getControladorUtil().pesquisarParametrosDoSistema().getAnoMesArrecadacao() + ""; Calendar dataArrecadacao = new GregorianCalendar(); dataArrecadacao.set(Calendar.YEAR, new Integer(anoMesArrecadacao.substring(0, 4)).intValue()); dataArrecadacao.set(Calendar.MONTH, new Integer(anoMesArrecadacao.substring(4, 6)).intValue() - 1); dataArrecadacao.set(Calendar.DATE, 30); dataArrecadacao.add(Calendar.MONTH, -1); Calendar dataInicioVencimentoDebito = new GregorianCalendar(); dataInicioVencimentoDebito.set(Calendar.YEAR, 1); dataInicioVencimentoDebito.set(Calendar.MONTH, 0); dataInicioVencimentoDebito.set(Calendar.DATE, 1); StringBuffer dataFinalReferenciaDebito = new StringBuffer().append(dataArrecadacao.get(Calendar.YEAR)).append( Calendar.MONTH); ObterDebitoImovelOuClienteHelper obterDebitoImovelOuClienteHelper = this.obterDebitoImovelOuCliente(1, id, null, null, "000101", dataFinalReferenciaDebito.toString(), dataInicioVencimentoDebito.getTime(), dataArrecadacao.getTime(), 1, 2, 2, 2, 1, 1, 2, null); if (obterDebitoImovelOuClienteHelper == null) { data.setTime(new Date()); this.religarImovelCortado(id, LigacaoAguaSituacao.LIGADO.toString(), data.getTime()); } } } } } /** * [UC0178] Religar Automaticamente Im�vel Cortado Auhtor: Rafael Santos * Data: 03/01/2006 * * @param id * Matricula do Imovel * @param situacaoAguaLigado * Situa��o Agua * @param dataReligacaoAgua * Data Religacao Agua * @throws ControladorException * Controlador Exception */ public void religarImovelCortado(String id, String situacaoAguaLigado, Date dataReligacaoAgua) throws ControladorException { try { repositorioCobranca.religarImovelCortado(id, situacaoAguaLigado, dataReligacaoAgua); } catch (ErroRepositorioException ex) { sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", ex); } } /** * Permite a obten��o dos d�bitos de um im�vel ou de um cliente * * [UC0067] Obter D�bito do Im�vel ou Cliente * * @author Rafael Santos ,Rafael Santos, Pedro Alexandre * @date 04/01/2006,22/03/2006,13/03/2007 * * @param indicadorDebito * @param idImovel * @param codigoCliente * @param clienteRelacaoTipo * @param anoMesInicialReferenciaDebito * @param anoMesFinalReferenciaDebito * @param anoMesInicialVencimentoDebito * @param anoMesFinalVencimentoDebito * @param indicadorPagamento * @param indicadorConta * @param indicadorDebitoACobrar * @param indicadorCreditoARealizar * @param indicadorNotasPromissorias * @param indicadorGuiasPagamento * @param indicadorCalcularAcrescimoImpontualidade * @param indicadorContas * @return * @throws ControladorException */ public ObterDebitoImovelOuClienteHelper obterDebitoImovelOuCliente(int indicadorDebito, String idImovel, String codigoCliente, Short clienteRelacaoTipo, String anoMesInicialReferenciaDebito, String anoMesFinalReferenciaDebito, Date anoMesInicialVencimentoDebito, Date anoMesFinalVencimentoDebito, int indicadorPagamento, int indicadorConta, int indicadorDebitoACobrar, int indicadorCreditoARealizar, int indicadorNotasPromissorias, int indicadorGuiasPagamento, int indicadorCalcularAcrescimoImpontualidade, Boolean indicadorContas) throws ControladorException { return this.obterDebitoImovelOuCliente(indicadorDebito, idImovel, codigoCliente, clienteRelacaoTipo, anoMesInicialReferenciaDebito, anoMesFinalReferenciaDebito, anoMesInicialVencimentoDebito, anoMesFinalVencimentoDebito, indicadorPagamento, indicadorConta, indicadorDebitoACobrar, indicadorCreditoARealizar, indicadorNotasPromissorias, indicadorGuiasPagamento, indicadorCalcularAcrescimoImpontualidade, indicadorContas, 3); } public ObterDebitoImovelOuClienteHelper obterDebitoPreteritoImovelOuCliente(int indicadorDebito, String idImovel, String codigoCliente, Short clienteRelacaoTipo, String anoMesInicialReferenciaDebito, String anoMesFinalReferenciaDebito, Date anoMesInicialVencimentoDebito, Date anoMesFinalVencimentoDebito, int indicadorPagamento, int indicadorConta, int indicadorDebitoACobrar, int indicadorCreditoARealizar, int indicadorNotasPromissorias, int indicadorGuiasPagamento, int indicadorCalcularAcrescimoImpontualidade, Boolean indicadorContas) throws ControladorException { return this.obterDebitoPreteritoImovelOuCliente(indicadorDebito, idImovel, codigoCliente, clienteRelacaoTipo, anoMesInicialReferenciaDebito, anoMesFinalReferenciaDebito, anoMesInicialVencimentoDebito, anoMesFinalVencimentoDebito, indicadorPagamento, indicadorConta, indicadorDebitoACobrar, indicadorCreditoARealizar, indicadorNotasPromissorias, indicadorGuiasPagamento, indicadorCalcularAcrescimoImpontualidade, indicadorContas, 3); } // /// /** * Permite a obten��o dos d�bitos de um im�vel ou de um cliente * * [UC0067] Obter D�bito do Im�vel ou Cliente * * @author Rafael Santos ,Rafael Santos, Pedro Alexandre * @date 04/01/2006,22/03/2006,13/03/2007 * * @param indicadorDebito * @param idImovel * @param codigoCliente * @param clienteRelacaoTipo * @param anoMesInicialReferenciaDebito * @param anoMesFinalReferenciaDebito * @param anoMesInicialVencimentoDebito * @param anoMesFinalVencimentoDebito * @param indicadorPagamento * @param indicadorConta * @param indicadorDebitoACobrar * @param indicadorCreditoARealizar * @param indicadorNotasPromissorias * @param indicadorGuiasPagamento * @param indicadorCalcularAcrescimoImpontualidade * @param indicadorContas * @param indicadorDividaAtiva * @return * @throws ControladorException */ public ObterDebitoImovelOuClienteHelper obterDebitoImovelOuCliente(int indicadorDebito, String idImovel, String codigoCliente, Short clienteRelacaoTipo, String anoMesInicialReferenciaDebito, String anoMesFinalReferenciaDebito, Date anoMesInicialVencimentoDebito, Date anoMesFinalVencimentoDebito, int indicadorPagamento, int indicadorConta, int indicadorDebitoACobrar, int indicadorCreditoARealizar, int indicadorNotasPromissorias, int indicadorGuiasPagamento, int indicadorCalcularAcrescimoImpontualidade, Boolean indicadorContas, int indicadorDividaAtiva) throws ControladorException { SistemaParametro sistemaParametro = getControladorUtil().pesquisarParametrosDoSistema(); String anoMesArrecadacao = getControladorUtil().pesquisarParametrosDoSistema().getAnoMesArrecadacao() + ""; ObterDebitoImovelOuClienteHelper obterDebitoImovelOuClienteHelper = new ObterDebitoImovelOuClienteHelper(); Collection idImoveis = null; Collection idImoveisAtuais = null; Integer idCliente = null; if (codigoCliente != null && !codigoCliente.trim().equals("")) { idCliente = new Integer(codigoCliente); } Integer idImovelFormatado = null; if (idImovel != null && !idImovel.trim().equals("")) { idImovelFormatado = new Integer(idImovel); } try { if (indicadorDebito == 2) { // caso cliente idImoveis = repositorioCobranca.pesquisarIDImoveisClienteImovel(codigoCliente, clienteRelacaoTipo); } else if (indicadorDebito == 3) { // Verifica se � pesquisa por cliente superior (o c�digo 99 � // apenas um identificador) if (clienteRelacaoTipo != null && clienteRelacaoTipo.equals(new Short("99"))) { clienteRelacaoTipo = null; idImoveis = repositorioCobranca.pesquisarIdImoveisClienteSuperiorSemRelacaoFim(codigoCliente); } else { idImoveis = repositorioCobranca.pesquisarIdImoveisClienteSemRelacaoFim(codigoCliente, clienteRelacaoTipo); } } else if (indicadorDebito == 4) { // Verifica se � pesquisa por cliente superior (o c�digo 99 � // apenas um identificador) if (clienteRelacaoTipo != null && clienteRelacaoTipo.equals(new Short("99"))) { clienteRelacaoTipo = null; idImoveisAtuais = repositorioCobranca.pesquisarIdImoveisClienteSuperiorSemRelacaoFim(codigoCliente); } else { idImoveisAtuais = repositorioCobranca.pesquisarIdImoveisClienteSemRelacaoFim(codigoCliente, clienteRelacaoTipo); } idImoveis = repositorioCobranca.pesquisarIDImoveisClienteImovel(codigoCliente, clienteRelacaoTipo); } } catch (ErroRepositorioException ex) { sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", ex); } if (indicadorContas == null || indicadorContas) { Collection<ContaValoresHelper> colecaoContasValores = this.pesquisarContasDebito(idCliente, clienteRelacaoTipo, idImovelFormatado, idImoveis, idImoveisAtuais, indicadorDebito, indicadorPagamento, indicadorConta, indicadorCalcularAcrescimoImpontualidade, anoMesInicialReferenciaDebito, anoMesFinalReferenciaDebito, anoMesInicialVencimentoDebito, anoMesFinalVencimentoDebito, anoMesArrecadacao, indicadorDividaAtiva); // adcionando a colecao de contas de valores if (colecaoContasValores != null) { Collection<ContaValoresHelper> colecaoContasValoresFinal = new ArrayList<ContaValoresHelper>(); // Retira as contas em revis�o vinculadas a um contrato // parcelamento por cliente if (sistemaParametro.getIndicadorBloqueioContasContratoParcelDebitos().intValue() == 1) { for (ContaValoresHelper contaValoresHelper : colecaoContasValores) { try { if (repositorioCobranca.verificaContaVinculadaAContratoParcelAtivo(contaValoresHelper.getConta().getId() .intValue()) == false) { colecaoContasValoresFinal.add(contaValoresHelper); } } catch (ErroRepositorioException e) { sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", e); } } } else { colecaoContasValoresFinal = colecaoContasValores; } obterDebitoImovelOuClienteHelper.setColecaoContasValores(colecaoContasValoresFinal); obterDebitoImovelOuClienteHelper.setColecaoContasValoresImovel(colecaoContasValoresFinal); } // Contas preteritas Collection<ContaValoresHelper> colecaoContasValoresPreteritos = this.pesquisarContasDebitoPreteritos(idCliente, clienteRelacaoTipo, idImovelFormatado, idImoveis, idImoveisAtuais, indicadorDebito, indicadorPagamento, indicadorConta, indicadorCalcularAcrescimoImpontualidade, anoMesInicialReferenciaDebito, anoMesFinalReferenciaDebito, anoMesInicialVencimentoDebito, anoMesFinalVencimentoDebito, anoMesArrecadacao, indicadorDividaAtiva); // adcionando a colecao de contas de valores if (colecaoContasValoresPreteritos != null) { Collection<ContaValoresHelper> colecaoContasValoresFinal = new ArrayList<ContaValoresHelper>(); // Retira as contas em revis�o vinculadas a um contrato // parcelamento por cliente if (sistemaParametro.getIndicadorBloqueioContasContratoParcelDebitos().intValue() == 1) { for (ContaValoresHelper contaValoresHelper : colecaoContasValoresPreteritos) { try { if (repositorioCobranca.verificaContaVinculadaAContratoParcelAtivo(contaValoresHelper.getConta().getId().intValue()) == false) { colecaoContasValoresFinal.add(contaValoresHelper); } } catch (ErroRepositorioException e) { sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", e); } } } else { colecaoContasValoresFinal = colecaoContasValoresPreteritos; } obterDebitoImovelOuClienteHelper.setColecaoContasValoresPreteritos(colecaoContasValoresPreteritos); } }// fim de if(contas != null && !contas.isEmpty()){ // ////////////////////////////////////////////////////////////////////// if (indicadorDividaAtiva != 1) { // Indicador de Debito A Cobrar if (indicadorDebitoACobrar == 1) { Collection<DebitoACobrar> debitosACobrar = this.pesquisarDebitosACobrarDebito(idImovel, idImoveis, indicadorDebito); // adcionando a colecao de d�bitos a cobrar if (debitosACobrar != null) { Collection<DebitoACobrar> colecaoDebitosACobrarFinal = new ArrayList<DebitoACobrar>(); // 3.4. E caso o indicador de bloqueio de d�bitos a cobrar // vinculados ao contrato de parcelamento // na composi��o do d�bito do im�vel ou cliente esteja // ativo, Retirar da lista de // d�bitos a cobrar selecionadas os d�bitos a cobrar // vinculados a algum contrato de parcelamento ativo if (sistemaParametro.getIndicadorBloqueioDebitoACobrarContratoParcelDebito().intValue() == 1) { for (DebitoACobrar debitoACobrar : debitosACobrar) { try { if (repositorioCobranca .verificaDebitoACobrarVinculadoAContratoParcelAtivo(debitoACobrar.getId().intValue()) == false) { colecaoDebitosACobrarFinal.add(debitoACobrar); } } catch (ErroRepositorioException e) { sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", e); } } } else { colecaoDebitosACobrarFinal = debitosACobrar; } obterDebitoImovelOuClienteHelper.setColecaoDebitoACobrar(colecaoDebitosACobrarFinal); } } // Indicador de Credito a Realizar if (indicadorCreditoARealizar == 1) { Collection creditosARealizar = this.pesquisarCreditosARealizarDebito(idImovel, idImoveis, indicadorDebito); obterDebitoImovelOuClienteHelper.setColecaoCreditoARealizar(creditosARealizar); } // Indicador de Guias de Pagamentos if (indicadorGuiasPagamento == 1) { Collection<GuiaPagamentoValoresHelper> colecaoGuiasPagamentoValores = this.pesquisarGuiasPagamentoDebito(idCliente, clienteRelacaoTipo, idImovelFormatado, idImoveis, idImoveisAtuais, indicadorDebito, indicadorPagamento, indicadorCalcularAcrescimoImpontualidade, anoMesInicialVencimentoDebito, anoMesFinalVencimentoDebito, anoMesArrecadacao); // adcionando a colecao de guias de pagamento de valores if (colecaoGuiasPagamentoValores != null) { Collection<GuiaPagamentoValoresHelper> colecaoGuiasPagamentoValoresFinal = new ArrayList<GuiaPagamentoValoresHelper>(); // Retira as contas em revis�o vinculadas a um contrato // parcelamento por cliente if (sistemaParametro.getIndicadorBloqueioGuiasOuAcresContratoParcelDebito().intValue() == 1) { for (GuiaPagamentoValoresHelper guiaPagamentoValoresHelper : colecaoGuiasPagamentoValores) { try { if (repositorioCobranca.verificaGuiaVinculadaAContratoParcelAtivo(guiaPagamentoValoresHelper .getGuiaPagamento().getId().intValue()) == false) { colecaoGuiasPagamentoValoresFinal.add(guiaPagamentoValoresHelper); } } catch (ErroRepositorioException e) { sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", e); } } } else { colecaoGuiasPagamentoValoresFinal = colecaoGuiasPagamentoValores; } obterDebitoImovelOuClienteHelper.setColecaoGuiasPagamentoValores(colecaoGuiasPagamentoValoresFinal); } } } return obterDebitoImovelOuClienteHelper; } public ObterDebitoImovelOuClienteHelper obterDebitoPreteritoImovelOuCliente(int indicadorDebito, String idImovel, String codigoCliente, Short clienteRelacaoTipo, String anoMesInicialReferenciaDebito, String anoMesFinalReferenciaDebito, Date anoMesInicialVencimentoDebito, Date anoMesFinalVencimentoDebito, int indicadorPagamento, int indicadorConta, int indicadorDebitoACobrar, int indicadorCreditoARealizar, int indicadorNotasPromissorias, int indicadorGuiasPagamento, int indicadorCalcularAcrescimoImpontualidade, Boolean indicadorContas, int indicadorDividaAtiva) throws ControladorException { SistemaParametro sistemaParametro = getControladorUtil().pesquisarParametrosDoSistema(); String anoMesArrecadacao = getControladorUtil().pesquisarParametrosDoSistema().getAnoMesArrecadacao() + ""; ObterDebitoImovelOuClienteHelper obterDebitoImovelOuClienteHelper = new ObterDebitoImovelOuClienteHelper(); Collection idImoveis = null; Collection idImoveisAtuais = null; Integer idCliente = null; if (codigoCliente != null && !codigoCliente.trim().equals("")) { idCliente = new Integer(codigoCliente); } Integer idImovelFormatado = null; if (idImovel != null && !idImovel.trim().equals("")) { idImovelFormatado = new Integer(idImovel); } try { if (indicadorDebito == 2) { // caso cliente idImoveis = repositorioCobranca.pesquisarIDImoveisClienteImovel(codigoCliente, clienteRelacaoTipo); } else if (indicadorDebito == 3) { // Verifica se � pesquisa por cliente superior (o c�digo 99 � // apenas um identificador) if (clienteRelacaoTipo != null && clienteRelacaoTipo.equals(new Short("99"))) { clienteRelacaoTipo = null; idImoveis = repositorioCobranca.pesquisarIdImoveisClienteSuperiorSemRelacaoFim(codigoCliente); } else { idImoveis = repositorioCobranca.pesquisarIdImoveisClienteSemRelacaoFim(codigoCliente, clienteRelacaoTipo); } } else if (indicadorDebito == 4) { // Verifica se � pesquisa por cliente superior (o c�digo 99 � // apenas um identificador) if (clienteRelacaoTipo != null && clienteRelacaoTipo.equals(new Short("99"))) { clienteRelacaoTipo = null; idImoveisAtuais = repositorioCobranca.pesquisarIdImoveisClienteSuperiorSemRelacaoFim(codigoCliente); } else { idImoveisAtuais = repositorioCobranca.pesquisarIdImoveisClienteSemRelacaoFim(codigoCliente, clienteRelacaoTipo); } idImoveis = repositorioCobranca.pesquisarIDImoveisClienteImovel(codigoCliente, clienteRelacaoTipo); } } catch (ErroRepositorioException ex) { sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", ex); } if (indicadorContas == null || indicadorContas) { Collection<ContaValoresHelper> colecaoContasValores = this.pesquisarContasDebitoPreteritos(idCliente, clienteRelacaoTipo, idImovelFormatado, idImoveis, idImoveisAtuais, indicadorDebito, indicadorPagamento, indicadorConta, indicadorCalcularAcrescimoImpontualidade, anoMesInicialReferenciaDebito, anoMesFinalReferenciaDebito, anoMesInicialVencimentoDebito, anoMesFinalVencimentoDebito, anoMesArrecadacao, indicadorDividaAtiva); // adcionando a colecao de contas de valores if (colecaoContasValores != null) { Collection<ContaValoresHelper> colecaoContasValoresFinal = new ArrayList<ContaValoresHelper>(); // Retira as contas em revis�o vinculadas a um contrato // parcelamento por cliente if (sistemaParametro.getIndicadorBloqueioContasContratoParcelDebitos().intValue() == 1) { for (ContaValoresHelper contaValoresHelper : colecaoContasValores) { try { if (repositorioCobranca.verificaContaVinculadaAContratoParcelAtivo(contaValoresHelper.getConta().getId() .intValue()) == false) { colecaoContasValoresFinal.add(contaValoresHelper); } } catch (ErroRepositorioException e) { sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", e); } } } else { colecaoContasValoresFinal = colecaoContasValores; } obterDebitoImovelOuClienteHelper.setColecaoContasValores(colecaoContasValoresFinal); obterDebitoImovelOuClienteHelper.setColecaoContasValoresImovel(colecaoContasValoresFinal); } }// fim de if(contas != null && !contas.isEmpty()){ // ////////////////////////////////////////////////////////////////////// if (indicadorDividaAtiva != 1) { // Indicador de Debito A Cobrar if (indicadorDebitoACobrar == 1) { Collection<DebitoACobrar> debitosACobrar = this.pesquisarDebitosACobrarDebito(idImovel, idImoveis, indicadorDebito); // adcionando a colecao de d�bitos a cobrar if (debitosACobrar != null) { Collection<DebitoACobrar> colecaoDebitosACobrarFinal = new ArrayList<DebitoACobrar>(); // 3.4. E caso o indicador de bloqueio de d�bitos a cobrar // vinculados ao contrato de parcelamento // na composi��o do d�bito do im�vel ou cliente esteja // ativo, Retirar da lista de // d�bitos a cobrar selecionadas os d�bitos a cobrar // vinculados a algum contrato de parcelamento ativo if (sistemaParametro.getIndicadorBloqueioDebitoACobrarContratoParcelDebito().intValue() == 1) { for (DebitoACobrar debitoACobrar : debitosACobrar) { try { if (repositorioCobranca .verificaDebitoACobrarVinculadoAContratoParcelAtivo(debitoACobrar.getId().intValue()) == false) { colecaoDebitosACobrarFinal.add(debitoACobrar); } } catch (ErroRepositorioException e) { sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", e); } } } else { colecaoDebitosACobrarFinal = debitosACobrar; } obterDebitoImovelOuClienteHelper.setColecaoDebitoACobrar(colecaoDebitosACobrarFinal); } } // Indicador de Credito a Realizar if (indicadorCreditoARealizar == 1) { Collection creditosARealizar = this.pesquisarCreditosARealizarDebito(idImovel, idImoveis, indicadorDebito); obterDebitoImovelOuClienteHelper.setColecaoCreditoARealizar(creditosARealizar); } // Indicador de Notas Promissorias if (indicadorNotasPromissorias == 1) { if (indicadorDebito == 1) { // caso imovel } else if (indicadorDebito == 2) { // caso cliente } } // Indicador de Guias de Pagamentos if (indicadorGuiasPagamento == 1) { Collection<GuiaPagamentoValoresHelper> colecaoGuiasPagamentoValores = this.pesquisarGuiasPagamentoDebito(idCliente, clienteRelacaoTipo, idImovelFormatado, idImoveis, idImoveisAtuais, indicadorDebito, indicadorPagamento, indicadorCalcularAcrescimoImpontualidade, anoMesInicialVencimentoDebito, anoMesFinalVencimentoDebito, anoMesArrecadacao); // adcionando a colecao de guias de pagamento de valores if (colecaoGuiasPagamentoValores != null) { Collection<GuiaPagamentoValoresHelper> colecaoGuiasPagamentoValoresFinal = new ArrayList<GuiaPagamentoValoresHelper>(); // Retira as contas em revis�o vinculadas a um contrato // parcelamento por cliente if (sistemaParametro.getIndicadorBloqueioGuiasOuAcresContratoParcelDebito().intValue() == 1) { for (GuiaPagamentoValoresHelper guiaPagamentoValoresHelper : colecaoGuiasPagamentoValores) { try { if (repositorioCobranca.verificaGuiaVinculadaAContratoParcelAtivo(guiaPagamentoValoresHelper .getGuiaPagamento().getId().intValue()) == false) { colecaoGuiasPagamentoValoresFinal.add(guiaPagamentoValoresHelper); } } catch (ErroRepositorioException e) { sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", e); } } } else { colecaoGuiasPagamentoValoresFinal = colecaoGuiasPagamentoValores; } obterDebitoImovelOuClienteHelper.setColecaoGuiasPagamentoValores(colecaoGuiasPagamentoValoresFinal); } } } return obterDebitoImovelOuClienteHelper; } /** * Permite a obten��o dos d�bitos de um im�vel ou de um cliente * * [UC0067] Obter D�bito do Im�vel ou Cliente * * @author Rafael Santos ,Rafael Santos, Pedro Alexandre * @date 04/01/2006,22/03/2006,13/03/2007 * * @param idCliente * @param relacaoTipo * @param idImovel * @param idImoveis * @param idImoveisAtuais * @param indicadorDebito * @param indicadorPagamento * @param indicadorConta * @param indicadorCalcularAcrescimoImpontualidade * @param anoMesInicialReferenciaDebito * @param anoMesFinalReferenciaDebito * @param anoMesInicialVencimentoDebito * @param anoMesFinalVencimentoDebito * @param anoMesArrecadacao * @param indicadorDividaAtiva * @return * @throws ControladorException */ public Collection<ContaValoresHelper> pesquisarContasDebito(Integer idCliente, Short relacaoTipo, Integer idImovel, Collection idImoveis, Collection idImoveisAtuais, int indicadorDebito, int indicadorPagamento, int indicadorConta, int indicadorCalcularAcrescimoImpontualidade, String anoMesInicialReferenciaDebito, String anoMesFinalReferenciaDebito, Date anoMesInicialVencimentoDebito, Date anoMesFinalVencimentoDebito, String anoMesArrecadacao, int indicadorDividaAtiva) throws ControladorException { Collection<ContaValoresHelper> retorno = new ArrayList<ContaValoresHelper>(); Collection contas = null; Short indicadorAcrescimosCliente = null; if (indicadorDebito == 1) { // contas do imovel try { contas = repositorioCobranca.pesquisarContasImovel(idImovel, indicadorPagamento, indicadorConta, DebitoCreditoSituacao.NORMAL.toString(), DebitoCreditoSituacao.RETIFICADA.toString(), DebitoCreditoSituacao.INCLUIDA.toString(), DebitoCreditoSituacao.PARCELADA.toString(), anoMesInicialReferenciaDebito, anoMesFinalReferenciaDebito, anoMesInicialVencimentoDebito, anoMesFinalVencimentoDebito, indicadorDividaAtiva, false); indicadorAcrescimosCliente = this.obterIndicadorAcrescimosClienteResponsavel(idImovel); } catch (ErroRepositorioException ex) { sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", ex); } } else if (indicadorDebito == 2) { // contas do cliente try { contas = repositorioCobranca.pesquisarContasCliente(idCliente, relacaoTipo, indicadorPagamento, indicadorConta, DebitoCreditoSituacao.NORMAL.toString(), DebitoCreditoSituacao.RETIFICADA.toString(), DebitoCreditoSituacao.INCLUIDA.toString(), DebitoCreditoSituacao.PARCELADA.toString(), anoMesInicialReferenciaDebito, anoMesFinalReferenciaDebito, anoMesInicialVencimentoDebito, anoMesFinalVencimentoDebito, indicadorDividaAtiva); indicadorAcrescimosCliente = this.obterIndicadorAcrescimosCliente(idCliente); } catch (ErroRepositorioException ex) { throw new ControladorException("erro.sistema", ex); } } else if (indicadorDebito == 3) { // contas do cliente respons�vel try { if (idImoveis != null && !idImoveis.isEmpty()) { contas = repositorioCobranca.pesquisarContasImoveis(idImoveis, indicadorPagamento, indicadorConta, DebitoCreditoSituacao.NORMAL.toString(), DebitoCreditoSituacao.RETIFICADA.toString(), DebitoCreditoSituacao.INCLUIDA.toString(), DebitoCreditoSituacao.PARCELADA.toString(), anoMesInicialReferenciaDebito, anoMesFinalReferenciaDebito, anoMesInicialVencimentoDebito, anoMesFinalVencimentoDebito, indicadorDividaAtiva); if (idCliente != null) { indicadorAcrescimosCliente = this.obterIndicadorAcrescimosCliente(idCliente); } } } catch (ErroRepositorioException ex) { sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", ex); } } else if (indicadorDebito == 4) { try { if (idImoveisAtuais != null && !idImoveisAtuais.isEmpty()) { contas = repositorioCobranca.pesquisarDebitosCliente(idCliente, relacaoTipo, idImoveisAtuais, indicadorPagamento, indicadorConta, DebitoCreditoSituacao.NORMAL.toString(), DebitoCreditoSituacao.RETIFICADA.toString(), DebitoCreditoSituacao.INCLUIDA.toString(), DebitoCreditoSituacao.PARCELADA.toString(), anoMesInicialReferenciaDebito, anoMesFinalReferenciaDebito, anoMesInicialVencimentoDebito, anoMesFinalVencimentoDebito, indicadorDividaAtiva); indicadorAcrescimosCliente = this.obterIndicadorAcrescimosCliente(idCliente); } } catch (ErroRepositorioException ex) { sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", ex); } } if (contas != null && !contas.isEmpty()) { Iterator icolecaoContas = contas.iterator(); Collection colecaoIdImoveisContas = new HashSet(); boolean temContaParcelada = false; boolean verificaParcelamentoConfirmado = false; // dados da conta while (icolecaoContas.hasNext()) { Conta conta = new Conta(); ContaValoresHelper contaValores = new ContaValoresHelper(); temContaParcelada = false; Object[] dadosConta = (Object[]) icolecaoContas.next(); if (dadosConta[0] != null) {// 0 // Id de contas conta.setId(new Integer(dadosConta[0].toString())); } if (dadosConta[1] != null) {// 1 // Valor Agua conta.setValorAgua((BigDecimal) dadosConta[1]); } if (dadosConta[2] != null) {// 2 // Valor Esgoto conta.setValorEsgoto((BigDecimal) dadosConta[2]); } if (dadosConta[3] != null) {// 3 // Valor Debitos conta.setDebitos((BigDecimal) dadosConta[3]); } if (dadosConta[4] != null) {// 4 // Valor Creditos conta.setValorCreditos((BigDecimal) dadosConta[4]); } else { conta.setValorCreditos(new BigDecimal("0.00")); } if (dadosConta[5] != null) {// 5 // Data Revisao conta.setDataRevisao((Date) dadosConta[5]); } if (dadosConta[6] != null) {// 6 // Referencia conta.setReferencia(((Integer) dadosConta[6]).intValue()); } if (dadosConta[7] != null) {// 7 // Data Vencimento Conta conta.setDataVencimentoConta((Date) dadosConta[7]); } if (dadosConta[8] != null) {// 8 // Indicador de Cobranca de Multa conta.setIndicadorCobrancaMulta(((Short) dadosConta[8]).shortValue()); } if (dadosConta[9] != null) {// 9 Integer idDebitoCreditoSituacaoAtual = (Integer) dadosConta[9]; FiltroDebitoCreditoSituacao filtroDebitoCreditoSituacao = new FiltroDebitoCreditoSituacao(); filtroDebitoCreditoSituacao.adicionarParametro(new ParametroSimples(FiltroDebitoCreditoSituacao.ID, idDebitoCreditoSituacaoAtual)); Collection<DebitoCreditoSituacao> colecaoDebitoCreditoSituacao = this.getControladorUtil().pesquisar( filtroDebitoCreditoSituacao, DebitoCreditoSituacao.class.getName()); if (colecaoDebitoCreditoSituacao != null && !colecaoDebitoCreditoSituacao.isEmpty()) { DebitoCreditoSituacao debitoCreditoSituacao = (DebitoCreditoSituacao) Util .retonarObjetoDeColecao(colecaoDebitoCreditoSituacao); conta.setDebitoCreditoSituacaoAtual(debitoCreditoSituacao); if (debitoCreditoSituacao.getId().intValue() == DebitoCreditoSituacao.PARCELADA.intValue()) { temContaParcelada = true; verificaParcelamentoConfirmado = true; } } } if (dadosConta[10] != null) {// 10 // Digito Verificador conta.setDigitoVerificadorConta(((Short) dadosConta[10]).shortValue()); } if (dadosConta[11] != null) {// 11 // Conta Motivo Revisao ContaMotivoRevisao contaMotivoRevisao = new ContaMotivoRevisao(); contaMotivoRevisao.setId((Integer) dadosConta[11]); conta.setContaMotivoRevisao(contaMotivoRevisao); } else { conta.setContaMotivoRevisao(null); } if (dadosConta[12] != null) {// 12 // �ltima Altera��o conta.setUltimaAlteracao((Date) dadosConta[12]); } if (dadosConta[13] != null) {// 13 // Imovel Imovel imovel = new Imovel(); imovel.setId((Integer) dadosConta[13]); conta.setImovel(imovel); } if (dadosConta[14] != null) { conta.setConsumoAgua((Integer) dadosConta[14]); } if (dadosConta[15] != null) {// 15 // Valor impostos conta.setValorImposto((BigDecimal) (dadosConta[15])); } else { conta.setValorImposto(new BigDecimal("0.00")); } if (dadosConta[16] != null) { conta.setConsumoEsgoto((Integer) dadosConta[16]); } // adicionado por Vivianne Sousa - 21/06/2010 // Parcelamento if (dadosConta[19] != null) { Parcelamento parcelamento = new Parcelamento(); parcelamento.setId((Integer) dadosConta[19]); conta.setParcelamento(parcelamento); } contaValores.setConta(conta); Date dataPagamento = null; if (dadosConta[17] != null) { BigDecimal valor = (BigDecimal) dadosConta[17]; if (valor.floatValue() != 0.0) { contaValores.setValorPago(valor); } } if (dadosConta[18] != null) { dataPagamento = (Date) dadosConta[18]; } boolean indicadorCobrancaAcrescimos = true; /** * Colocado por Raphael Rossiter em 19/09/2011 Analista: Eduardo * Borges * * Caso a principal categoria do im�vel esteja indicando que * somente deve ser gerado acr�scimos por impontualidade para a * categoria (catg_icgeracaoacrescimos=NAO) da principal * categoria do im�vel, passa para o pr�ximo im�vel. */ Categoria categoriaPrincipal = this.getControladorImovel().obterPrincipalCategoriaImovel(conta.getImovel().getId()); if (categoriaPrincipal.getIndicadorCobrancaAcrescimos().equals(ConstantesSistema.NAO)) { indicadorCobrancaAcrescimos = false; } /** * Colocado por Raphael Rossiter em 19/09/2011 Analista: Eduardo * Borges * * Caso esteja indicado que n�o de ve ser gerado acr�cimos por * impontualidade para o cliente (CLIE_ICCOBRANCAACRESCIMOS=NAO) * , passar para o pr�ximo im�vel */ Short indicadorAcrescimosClienteResponsavel = null; if (indicadorAcrescimosCliente == null) { indicadorAcrescimosClienteResponsavel = this.obterIndicadorAcrescimosClienteResponsavel(conta.getImovel().getId()); } else { indicadorAcrescimosClienteResponsavel = indicadorAcrescimosCliente; } if (indicadorAcrescimosClienteResponsavel != null && indicadorAcrescimosClienteResponsavel.equals(ConstantesSistema.NAO)) { indicadorCobrancaAcrescimos = false; } // Calcular o Acrescimo por Impontualidade if (indicadorCalcularAcrescimoImpontualidade == 1 && indicadorCobrancaAcrescimos) { /** altera��o por pedro alexandre dia 21/05/2007 */ BigDecimal valorConta = conta.getValorTotal(); // Calcula o valor das multas cobradas para a conta BigDecimal valorMultasCobradas = null; valorMultasCobradas = getControladorFaturamento().pesquisarValorMultasCobradas(conta.getId()); CalcularAcrescimoPorImpontualidadeHelper calcularAcrescimoPorImpontualidade = null; calcularAcrescimoPorImpontualidade = this.calcularAcrescimoPorImpontualidade(conta.getReferencia(), conta.getDataVencimentoConta(), dataPagamento, valorConta, valorMultasCobradas, conta.getIndicadorCobrancaMulta(), anoMesArrecadacao, conta.getId(), ConstantesSistema.INDICADOR_ARRECADACAO_DESATIVO); // set os Valores if (calcularAcrescimoPorImpontualidade != null) { // seta valor de multa contaValores.setValorMulta(calcularAcrescimoPorImpontualidade.getValorMulta()); // seta valor de juros mora contaValores.setValorJurosMora(calcularAcrescimoPorImpontualidade.getValorJurosMora()); // seta valor de atualizacao monetaria contaValores.setValorAtualizacaoMonetaria(calcularAcrescimoPorImpontualidade.getValorAtualizacaoMonetaria()); } } if (temContaParcelada) { if (indicadorDebito == 2) { colecaoIdImoveisContas.add(conta.getImovel().getId()); } } retorno.add(contaValores); }// fim do loop // Caso na lista de contas existam contas com situa��o atual // correspondente a parcelada, // o sitema verifica se o parcelamento est� confirmado if (verificaParcelamentoConfirmado) { // Caso tenha sido recebido o cliente,sistema obt�m os im�veis // da // lista das contas que possuem // conta com a situacao atual com o valor correspondente a // parcelada // Caso contr�rio,considerar apenas o im�vel recebido if (indicadorDebito == 1) { colecaoIdImoveisContas = new HashSet(); colecaoIdImoveisContas.add(new Integer(idImovel)); } retorno = this.verificarParcelamentoConfirmado(colecaoIdImoveisContas, retorno); } } return retorno; } /** * Permite a obten��o dos d�bitos de um im�vel ou de um cliente * * [UC0067] Obter D�bito do Im�vel ou Cliente * * @author Rafael Santos ,Rafael Santos, Pedro Alexandre * @date 04/01/2006,22/03/2006,13/03/2007 * * @param idCliente * @param relacaoTipo * @param idImovel * @param idImoveis * @param idImoveisAtuais * @param indicadorDebito * @param indicadorPagamento * @param indicadorConta * @param indicadorCalcularAcrescimoImpontualidade * @param anoMesInicialReferenciaDebito * @param anoMesFinalReferenciaDebito * @param anoMesInicialVencimentoDebito * @param anoMesFinalVencimentoDebito * @param anoMesArrecadacao * @param indicadorDividaAtiva * @return * @throws ControladorException */ public Collection<ContaValoresHelper> pesquisarContasDebitoPreteritos(Integer idCliente, Short relacaoTipo, Integer idImovel, Collection idImoveis, Collection idImoveisAtuais, int indicadorDebito, int indicadorPagamento, int indicadorConta, int indicadorCalcularAcrescimoImpontualidade, String anoMesInicialReferenciaDebito, String anoMesFinalReferenciaDebito, Date anoMesInicialVencimentoDebito, Date anoMesFinalVencimentoDebito, String anoMesArrecadacao, int indicadorDividaAtiva) throws ControladorException { Collection<ContaValoresHelper> retorno = new ArrayList<ContaValoresHelper>(); Collection contas = null; Short indicadorAcrescimosCliente = null; if (indicadorDebito == 1) { // contas do imovel try { contas = repositorioCobranca.pesquisarContasImovel(idImovel, indicadorPagamento, indicadorConta, DebitoCreditoSituacao.NORMAL.toString(), DebitoCreditoSituacao.RETIFICADA.toString(), DebitoCreditoSituacao.INCLUIDA.toString(), DebitoCreditoSituacao.PARCELADA.toString(), anoMesInicialReferenciaDebito, anoMesFinalReferenciaDebito, anoMesInicialVencimentoDebito, anoMesFinalVencimentoDebito, indicadorDividaAtiva, true); indicadorAcrescimosCliente = this.obterIndicadorAcrescimosClienteResponsavel(idImovel); } catch (ErroRepositorioException ex) { sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", ex); } } else if (indicadorDebito == 2) { // contas do cliente try { contas = repositorioCobranca.pesquisarContasCliente(idCliente, relacaoTipo, indicadorPagamento, indicadorConta, DebitoCreditoSituacao.NORMAL.toString(), DebitoCreditoSituacao.RETIFICADA.toString(), DebitoCreditoSituacao.INCLUIDA.toString(), DebitoCreditoSituacao.PARCELADA.toString(), anoMesInicialReferenciaDebito, anoMesFinalReferenciaDebito, anoMesInicialVencimentoDebito, anoMesFinalVencimentoDebito, indicadorDividaAtiva); indicadorAcrescimosCliente = this.obterIndicadorAcrescimosCliente(idCliente); } catch (ErroRepositorioException ex) { throw new ControladorException("erro.sistema", ex); } } else if (indicadorDebito == 3) { // contas do cliente respons�vel try { if (idImoveis != null && !idImoveis.isEmpty()) { contas = repositorioCobranca.pesquisarContasImoveis(idImoveis, indicadorPagamento, indicadorConta, DebitoCreditoSituacao.NORMAL.toString(), DebitoCreditoSituacao.RETIFICADA.toString(), DebitoCreditoSituacao.INCLUIDA.toString(), DebitoCreditoSituacao.PARCELADA.toString(), anoMesInicialReferenciaDebito, anoMesFinalReferenciaDebito, anoMesInicialVencimentoDebito, anoMesFinalVencimentoDebito, indicadorDividaAtiva); if (idCliente != null) { indicadorAcrescimosCliente = this.obterIndicadorAcrescimosCliente(idCliente); } } } catch (ErroRepositorioException ex) { sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", ex); } } else if (indicadorDebito == 4) { try { if (idImoveisAtuais != null && !idImoveisAtuais.isEmpty()) { contas = repositorioCobranca.pesquisarDebitosCliente(idCliente, relacaoTipo, idImoveisAtuais, indicadorPagamento, indicadorConta, DebitoCreditoSituacao.NORMAL.toString(), DebitoCreditoSituacao.RETIFICADA.toString(), DebitoCreditoSituacao.INCLUIDA.toString(), DebitoCreditoSituacao.PARCELADA.toString(), anoMesInicialReferenciaDebito, anoMesFinalReferenciaDebito, anoMesInicialVencimentoDebito, anoMesFinalVencimentoDebito, indicadorDividaAtiva); indicadorAcrescimosCliente = this.obterIndicadorAcrescimosCliente(idCliente); } } catch (ErroRepositorioException ex) { sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", ex); } } if (contas != null && !contas.isEmpty()) { Iterator icolecaoContas = contas.iterator(); Collection colecaoIdImoveisContas = new HashSet(); boolean temContaParcelada = false; boolean verificaParcelamentoConfirmado = false; // dados da conta while (icolecaoContas.hasNext()) { Conta conta = new Conta(); ContaValoresHelper contaValores = new ContaValoresHelper(); temContaParcelada = false; Object[] dadosConta = (Object[]) icolecaoContas.next(); if (dadosConta[0] != null) {// 0 // Id de contas conta.setId(new Integer(dadosConta[0].toString())); } if (dadosConta[1] != null) {// 1 // Valor Agua conta.setValorAgua((BigDecimal) dadosConta[1]); } if (dadosConta[2] != null) {// 2 // Valor Esgoto conta.setValorEsgoto((BigDecimal) dadosConta[2]); } if (dadosConta[3] != null) {// 3 // Valor Debitos conta.setDebitos((BigDecimal) dadosConta[3]); } if (dadosConta[4] != null) {// 4 // Valor Creditos conta.setValorCreditos((BigDecimal) dadosConta[4]); } else { conta.setValorCreditos(new BigDecimal("0.00")); } if (dadosConta[5] != null) {// 5 // Data Revisao conta.setDataRevisao((Date) dadosConta[5]); } if (dadosConta[6] != null) {// 6 // Referencia conta.setReferencia(((Integer) dadosConta[6]).intValue()); } if (dadosConta[7] != null) {// 7 // Data Vencimento Conta conta.setDataVencimentoConta((Date) dadosConta[7]); } if (dadosConta[8] != null) {// 8 // Indicador de Cobranca de Multa conta.setIndicadorCobrancaMulta(((Short) dadosConta[8]).shortValue()); } if (dadosConta[9] != null) {// 9 Integer idDebitoCreditoSituacaoAtual = (Integer) dadosConta[9]; FiltroDebitoCreditoSituacao filtroDebitoCreditoSituacao = new FiltroDebitoCreditoSituacao(); filtroDebitoCreditoSituacao.adicionarParametro(new ParametroSimples(FiltroDebitoCreditoSituacao.ID, idDebitoCreditoSituacaoAtual)); Collection<DebitoCreditoSituacao> colecaoDebitoCreditoSituacao = this.getControladorUtil().pesquisar( filtroDebitoCreditoSituacao, DebitoCreditoSituacao.class.getName()); if (colecaoDebitoCreditoSituacao != null && !colecaoDebitoCreditoSituacao.isEmpty()) { DebitoCreditoSituacao debitoCreditoSituacao = (DebitoCreditoSituacao) Util .retonarObjetoDeColecao(colecaoDebitoCreditoSituacao); conta.setDebitoCreditoSituacaoAtual(debitoCreditoSituacao); if (debitoCreditoSituacao.getId().intValue() == DebitoCreditoSituacao.PARCELADA.intValue()) { temContaParcelada = true; verificaParcelamentoConfirmado = true; } } } if (dadosConta[10] != null) {// 10 // Digito Verificador conta.setDigitoVerificadorConta(((Short) dadosConta[10]).shortValue()); } if (dadosConta[11] != null) {// 11 // Conta Motivo Revisao ContaMotivoRevisao contaMotivoRevisao = new ContaMotivoRevisao(); contaMotivoRevisao.setId((Integer) dadosConta[11]); conta.setContaMotivoRevisao(contaMotivoRevisao); } else { conta.setContaMotivoRevisao(null); } if (dadosConta[12] != null) {// 12 // �ltima Altera��o conta.setUltimaAlteracao((Date) dadosConta[12]); } if (dadosConta[13] != null) {// 13 // Imovel Imovel imovel = new Imovel(); imovel.setId((Integer) dadosConta[13]); conta.setImovel(imovel); } if (dadosConta[14] != null) { conta.setConsumoAgua((Integer) dadosConta[14]); } if (dadosConta[15] != null) {// 15 // Valor impostos conta.setValorImposto((BigDecimal) (dadosConta[15])); } else { conta.setValorImposto(new BigDecimal("0.00")); } if (dadosConta[16] != null) { conta.setConsumoEsgoto((Integer) dadosConta[16]); } // adicionado por Vivianne Sousa - 21/06/2010 // Parcelamento if (dadosConta[19] != null) { Parcelamento parcelamento = new Parcelamento(); parcelamento.setId((Integer) dadosConta[19]); conta.setParcelamento(parcelamento); } contaValores.setConta(conta); Date dataPagamento = null; if (dadosConta[17] != null) { BigDecimal valor = (BigDecimal) dadosConta[17]; if (valor.floatValue() != 0.0) { contaValores.setValorPago(valor); } } if (dadosConta[18] != null) { dataPagamento = (Date) dadosConta[18]; } boolean indicadorCobrancaAcrescimos = true; /** * Colocado por Raphael Rossiter em 19/09/2011 Analista: Eduardo * Borges * * Caso a principal categoria do im�vel esteja indicando que * somente deve ser gerado acr�scimos por impontualidade para a * categoria (catg_icgeracaoacrescimos=NAO) da principal * categoria do im�vel, passa para o pr�ximo im�vel. */ Categoria categoriaPrincipal = this.getControladorImovel().obterPrincipalCategoriaImovel(conta.getImovel().getId()); if (categoriaPrincipal.getIndicadorCobrancaAcrescimos().equals(ConstantesSistema.NAO)) { indicadorCobrancaAcrescimos = false; } /** * Colocado por Raphael Rossiter em 19/09/2011 Analista: Eduardo * Borges * * Caso esteja indicado que n�o de ve ser gerado acr�cimos por * impontualidade para o cliente (CLIE_ICCOBRANCAACRESCIMOS=NAO) * , passar para o pr�ximo im�vel */ Short indicadorAcrescimosClienteResponsavel = null; if (indicadorAcrescimosCliente == null) { indicadorAcrescimosClienteResponsavel = this.obterIndicadorAcrescimosClienteResponsavel(conta.getImovel().getId()); } else { indicadorAcrescimosClienteResponsavel = indicadorAcrescimosCliente; } if (indicadorAcrescimosClienteResponsavel != null && indicadorAcrescimosClienteResponsavel.equals(ConstantesSistema.NAO)) { indicadorCobrancaAcrescimos = false; } // Calcular o Acrescimo por Impontualidade if (indicadorCalcularAcrescimoImpontualidade == 1 && indicadorCobrancaAcrescimos) { /** altera��o por pedro alexandre dia 21/05/2007 */ BigDecimal valorConta = conta.getValorTotal(); // Calcula o valor das multas cobradas para a conta BigDecimal valorMultasCobradas = null; valorMultasCobradas = getControladorFaturamento().pesquisarValorMultasCobradas(conta.getId()); CalcularAcrescimoPorImpontualidadeHelper calcularAcrescimoPorImpontualidade = null; calcularAcrescimoPorImpontualidade = this.calcularAcrescimoPorImpontualidade(conta.getReferencia(), conta.getDataVencimentoConta(), dataPagamento, valorConta, valorMultasCobradas, conta.getIndicadorCobrancaMulta(), anoMesArrecadacao, conta.getId(), ConstantesSistema.INDICADOR_ARRECADACAO_DESATIVO); // set os Valores if (calcularAcrescimoPorImpontualidade != null) { // seta valor de multa contaValores.setValorMulta(calcularAcrescimoPorImpontualidade.getValorMulta()); // seta valor de juros mora contaValores.setValorJurosMora(calcularAcrescimoPorImpontualidade.getValorJurosMora()); // seta valor de atualizacao monetaria contaValores.setValorAtualizacaoMonetaria(calcularAcrescimoPorImpontualidade.getValorAtualizacaoMonetaria()); } } if (temContaParcelada) { if (indicadorDebito == 2) { colecaoIdImoveisContas.add(conta.getImovel().getId()); } } retorno.add(contaValores); }// fim do loop // Caso na lista de contas existam contas com situa��o atual // correspondente a parcelada, // o sitema verifica se o parcelamento est� confirmado if (verificaParcelamentoConfirmado) { // Caso tenha sido recebido o cliente,sistema obt�m os im�veis // da // lista das contas que possuem // conta com a situacao atual com o valor correspondente a // parcelada // Caso contr�rio,considerar apenas o im�vel recebido if (indicadorDebito == 1) { colecaoIdImoveisContas = new HashSet(); colecaoIdImoveisContas.add(new Integer(idImovel)); } retorno = this.verificarParcelamentoConfirmado(colecaoIdImoveisContas, retorno); } } return retorno; } private Collection pesquisarDebitosACobrarDebito(String idImovel, Collection idImoveis, int indicadorDebito) throws ControladorException { Collection retorno = null; Collection colecaoDadosDebitosACobrar = null; // caso imovel if (indicadorDebito == 1) { try { colecaoDadosDebitosACobrar = repositorioCobranca.pesquisarDebitosACobrarImovel(idImovel, DebitoCreditoSituacao.NORMAL.toString()); } catch (ErroRepositorioException ex) { sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", ex); } // caso cliente } else if (indicadorDebito == 2 || indicadorDebito == 3 || indicadorDebito == 4) { try { // idImoveis = repositorioCobranca // .pesquisarIDImoveisClienteImovel(codigoCliente,clienteRelacaoTipo); if (idImoveis != null && !idImoveis.isEmpty()) { colecaoDadosDebitosACobrar = repositorioCobranca.pesquisarDebitosACobrarCliente(idImoveis, DebitoCreditoSituacao.NORMAL.toString()); } } catch (ErroRepositorioException ex) { sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", ex); } } // adicionar os debitos a cobrar if (colecaoDadosDebitosACobrar != null) { retorno = new ArrayList(); if (colecaoDadosDebitosACobrar != null && !colecaoDadosDebitosACobrar.isEmpty()) { Iterator iteratorColecaoDadosDebitosACobrar = colecaoDadosDebitosACobrar.iterator(); while (iteratorColecaoDadosDebitosACobrar.hasNext()) { Object[] dadosDebitoACobrar = (Object[]) iteratorColecaoDadosDebitosACobrar.next(); DebitoACobrar debitoACobrar = null; if (dadosDebitoACobrar[0] != null) { debitoACobrar = (DebitoACobrar) dadosDebitoACobrar[0]; } if (dadosDebitoACobrar[2] != null) { DebitoTipo debitoTipo = new DebitoTipo(); debitoTipo.setDescricao((String) dadosDebitoACobrar[1]); debitoTipo.setId((Integer) dadosDebitoACobrar[2]); debitoACobrar.setDebitoTipo(debitoTipo); } retorno.add(debitoACobrar); } } } return retorno; } private Collection pesquisarCreditosARealizarDebito(String idImovel, Collection idImoveis, int indicadorDebito) throws ControladorException { Collection retorno = null; Collection colecaoDadosCreditosARealizar = null; // caso imovel if (indicadorDebito == 1) { try { colecaoDadosCreditosARealizar = repositorioCobranca.pesquisarCreditosARealizarImovel(idImovel, DebitoCreditoSituacao.NORMAL.toString()); } catch (ErroRepositorioException ex) { sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", ex); } // caso cliente } else if (indicadorDebito == 2 || indicadorDebito == 3 || indicadorDebito == 4) { try { // idImoveis = repositorioCobranca // .pesquisarIDImoveisClienteImovel(codigoCliente,clienteRelacaoTipo); if (idImoveis != null && !idImoveis.isEmpty()) { colecaoDadosCreditosARealizar = repositorioCobranca.pesquisarCreditosARealizarCliente(idImoveis, DebitoCreditoSituacao.NORMAL.toString()); } } catch (ErroRepositorioException ex) { sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", ex); } } // Adciona os credtios a reliazar if (colecaoDadosCreditosARealizar != null) { retorno = new ArrayList(); if (colecaoDadosCreditosARealizar != null && !colecaoDadosCreditosARealizar.isEmpty()) { Iterator iteratorColecaoDadosCreditosARealizar = colecaoDadosCreditosARealizar.iterator(); while (iteratorColecaoDadosCreditosARealizar.hasNext()) { Object[] dadosCreditoARealizar = (Object[]) iteratorColecaoDadosCreditosARealizar.next(); CreditoARealizar creditoARealizar = null; if (dadosCreditoARealizar[0] != null) { creditoARealizar = (CreditoARealizar) dadosCreditoARealizar[0]; } if (dadosCreditoARealizar[1] != null) { CreditoTipo creditoTipo = new CreditoTipo(); creditoTipo.setId((Integer) dadosCreditoARealizar[2]); creditoTipo.setDescricao((String) dadosCreditoARealizar[1]); creditoARealizar.setCreditoTipo(creditoTipo); } /* * Colocado por Raphael Rossiter em 07/11/2007 - Analista: * Aryed e Rosana OBJ: Retornar os cr�ditos que n�o sejam de * devolu��o. */ try { if (!repositorioCobranca.existeDevolucao(creditoARealizar)) { retorno.add(creditoARealizar); } } catch (ErroRepositorioException ex) { sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", ex); } } } } return retorno; } private Collection<GuiaPagamentoValoresHelper> pesquisarGuiasPagamentoDebito(Integer idCliente, Short relacaoTipo, Integer idImovel, Collection idImoveis, Collection idImoveisAtuais, int indicadorDebito, int indicadorPagamento, int indicadorCalcularAcrescimoImpontualidade, Date anoMesInicialVencimentoDebito, Date anoMesFinalVencimentoDebito, String anoMesArrecadacao) throws ControladorException { Collection<GuiaPagamentoValoresHelper> retorno = new ArrayList<GuiaPagamentoValoresHelper>(); Collection guiasPagamentos = null; if (indicadorDebito == 1) { try { guiasPagamentos = repositorioCobranca.pesquisarGuiasPagamentoImovel(idImovel, indicadorPagamento, DebitoCreditoSituacao.NORMAL.toString(), anoMesInicialVencimentoDebito, anoMesFinalVencimentoDebito); } catch (ErroRepositorioException ex) { sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", ex); } } else if (indicadorDebito == 2) { try { guiasPagamentos = repositorioCobranca.pesquisarGuiasPagamentoCliente(idCliente, indicadorPagamento, DebitoCreditoSituacao.NORMAL.toString(), relacaoTipo, anoMesInicialVencimentoDebito, anoMesFinalVencimentoDebito); } catch (ErroRepositorioException ex) { sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", ex); } } else if (indicadorDebito == 3) { try { guiasPagamentos = repositorioCobranca.pesquisarGuiasPagamentoIdsImoveis(idCliente, idImoveis, indicadorPagamento, DebitoCreditoSituacao.NORMAL.toString(), anoMesInicialVencimentoDebito, anoMesFinalVencimentoDebito); } catch (ErroRepositorioException ex) { sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", ex); } } else if (indicadorDebito == 4) { try { guiasPagamentos = repositorioCobranca.pesquisarGuiasPagamentoIdsImoveis(idCliente, idImoveisAtuais, indicadorPagamento, DebitoCreditoSituacao.NORMAL.toString(), relacaoTipo, anoMesInicialVencimentoDebito, anoMesFinalVencimentoDebito); } catch (ErroRepositorioException ex) { sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", ex); } } if (guiasPagamentos != null && !guiasPagamentos.isEmpty()) { Iterator icolecaoGuiasPagamentos = guiasPagamentos.iterator(); // dados da conta while (icolecaoGuiasPagamentos.hasNext()) { GuiaPagamento guiaPagamento = new GuiaPagamento(); GuiaPagamentoValoresHelper guiaPagamentoValores = new GuiaPagamentoValoresHelper(); Object[] dadosGuiaPagamento = (Object[]) icolecaoGuiasPagamentos.next(); // Id da Guia de Pagamento // 0 if (dadosGuiaPagamento[0] != null) { guiaPagamento.setId((Integer) dadosGuiaPagamento[0]); } // Valor de Debito // 1 if (dadosGuiaPagamento[1] != null) { guiaPagamento.setValorDebito((BigDecimal) dadosGuiaPagamento[1]); } // Ano Mes Referencia Contabil // 2 if (dadosGuiaPagamento[2] != null) { guiaPagamento.setAnoMesReferenciaContabil((Integer) dadosGuiaPagamento[2]); } // Data Vencimento // 3 if (dadosGuiaPagamento[3] != null) { guiaPagamento.setDataVencimento((Date) dadosGuiaPagamento[3]); } // Indicador Cobranca Multa // 4 if (dadosGuiaPagamento[4] != null) { guiaPagamento.setIndicadoCobrancaMulta((Short) dadosGuiaPagamento[4]); } // Descricao de Debito Tipo // 5 if (dadosGuiaPagamento[5] != null) { DebitoTipo debitoTipo = new DebitoTipo(); debitoTipo.setId((Integer) dadosGuiaPagamento[7]); debitoTipo.setDescricao((String) dadosGuiaPagamento[5]); guiaPagamento.setDebitoTipo(debitoTipo); } // Data Emiss�o // 6 if (dadosGuiaPagamento[6] != null) { guiaPagamento.setDataEmissao((Date) dadosGuiaPagamento[6]); } // Numero de Presta��o do D�bto // 8 if (dadosGuiaPagamento[8] != null) { guiaPagamento.setNumeroPrestacaoDebito((Short) dadosGuiaPagamento[8]); } // Numero de Presta��o Total // 9 if (dadosGuiaPagamento[9] != null) { guiaPagamento.setNumeroPrestacaoTotal((Short) dadosGuiaPagamento[9]); } Date dataPagamento = null; if (dadosGuiaPagamento[10] != null) { guiaPagamentoValores.setValorPago((BigDecimal) dadosGuiaPagamento[10]); } if (dadosGuiaPagamento[11] != null) { dataPagamento = (Date) dadosGuiaPagamento[11]; } if (dadosGuiaPagamento[12] != null) { guiaPagamento.setDocumentoTipo(new DocumentoTipo((Integer) dadosGuiaPagamento[12])); } guiaPagamentoValores.setGuiaPagamento(guiaPagamento); // calcular acrescimo por impontualidade if (indicadorCalcularAcrescimoImpontualidade == 1) { CalcularAcrescimoPorImpontualidadeHelper calcularAcrescimoPorImpontualidade = null; calcularAcrescimoPorImpontualidade = this.calcularAcrescimoPorImpontualidade( guiaPagamento.getAnoMesReferenciaContabil(), guiaPagamento.getDataVencimento(), dataPagamento, guiaPagamento.getValorDebito(), BigDecimal.ZERO, guiaPagamento.getIndicadoCobrancaMulta().shortValue(), anoMesArrecadacao, null, ConstantesSistema.INDICADOR_ARRECADACAO_DESATIVO); // set os Valores if (calcularAcrescimoPorImpontualidade != null) { // seta valor de multa guiaPagamentoValores.setValorMulta(calcularAcrescimoPorImpontualidade.getValorMulta()); // seta valor de juros mora guiaPagamentoValores.setValorJurosMora(calcularAcrescimoPorImpontualidade.getValorJurosMora()); // seta valor de atualizacao monetaria guiaPagamentoValores .setValorAtualizacaoMonetaria(calcularAcrescimoPorImpontualidade.getValorAtualizacaoMonetaria()); } } retorno.add(guiaPagamentoValores); }// fim do loop } return retorno; } /** * [UC0067] Obter D�bito do Im�vel ou Cliente * * [SB0001] - Verificar parcelamento confirmado * * Author: Rafael Pinto * * @param colecaoImoveis * Cole��o de Imoveis * * @return estahConfirmado Parcelamento esta confirmado * @throws ControladorException * * @exception ControladorException */ protected Collection verificarParcelamentoConfirmado(Collection colecaoImoveis, Collection colecaoContasValores) throws ControladorException { boolean estahConfirmado = false; if (colecaoImoveis != null && !colecaoImoveis.isEmpty()) { Iterator itera = colecaoImoveis.iterator(); // Retorna o �nico objeto da tabela sistemaParametro SistemaParametro sistemaParametro = this.getControladorUtil().pesquisarParametrosDoSistema(); // Para cada imovel obtido,o sistema: while (itera.hasNext()) { Integer idImovel = (Integer) itera.next(); // Seleciona o parcelamento ativo para o im�vel FiltroParcelamento filtroParcelamento = new FiltroParcelamento(); filtroParcelamento.adicionarParametro(new ParametroSimples(FiltroParcelamento.IMOVEL_ID, idImovel)); filtroParcelamento.adicionarParametro(new ParametroSimples(FiltroParcelamento.PARCELAMENTO_SITUACAO, ParcelamentoSituacao.NORMAL)); filtroParcelamento.adicionarParametro(new ParametroSimples(FiltroParcelamento.ANO_MES_REFERENCIA_FATURAMENTO, sistemaParametro.getAnoMesArrecadacao())); Collection<Parcelamento> colecaoParcelamento = this.getControladorUtil().pesquisar(filtroParcelamento, Parcelamento.class.getName()); if (colecaoParcelamento != null && !colecaoParcelamento.isEmpty()) { Parcelamento parcelamento = (Parcelamento) Util.retonarObjetoDeColecao(colecaoParcelamento); // Caso o parcelamento tenha sido efetuado sem entrada, // indicar que o parcelamento est� confirmado if (parcelamento.getValorEntrada() == null || parcelamento.getValorEntrada().equals(BigDecimal.ZERO) || parcelamento.getIndicadorConfirmacaoParcelamento().shortValue() == ConstantesSistema.SIM.shortValue()) { estahConfirmado = true; // Caso contrario,o sistema verifica se a entrada de // parcelamento ainda est� pendente } else { FiltroGuiaPagamento filtroGuiaPagamento = new FiltroGuiaPagamento(); filtroGuiaPagamento.adicionarParametro(new ParametroSimples(FiltroGuiaPagamento.PARCELAMENTO_ID, parcelamento .getId())); Collection<GuiaPagamento> colecaoGuiaPagamento = this.getControladorUtil().pesquisar(filtroGuiaPagamento, GuiaPagamento.class.getName()); // Caso exista a guia de pagamento referente a entrada // do parcelamento if (colecaoGuiaPagamento != null && !colecaoGuiaPagamento.isEmpty()) { GuiaPagamento guiaPagamento = (GuiaPagamento) Util.retonarObjetoDeColecao(colecaoGuiaPagamento); FiltroPagamento filtroPagamento = new FiltroPagamento(); filtroPagamento.adicionarParametro(new ParametroSimples(FiltroPagamento.GUIA_PAGAMENTO_ID, guiaPagamento .getId())); Collection<Pagamento> colecaoPagamento = this.getControladorUtil().pesquisar(filtroPagamento, Pagamento.class.getName()); // Caso exista pagamento para a guia de pagamento // indicar // que o parcelamento esta confirmado if (colecaoPagamento != null && !colecaoPagamento.isEmpty()) { estahConfirmado = true; } else { estahConfirmado = false; } // Caso contrario,e caso exista uma ou mais contas // referente a entrada // do parcelamento } else { FiltroConta filtroConta = new FiltroConta(); filtroConta.adicionarParametro(new ParametroSimples(FiltroConta.PARCELAMENTO_ID, parcelamento.getId())); // filtroConta // .adicionarCaminhoParaCarregamentoEntidade("cobrancaForma"); Collection<Conta> colecaoConta = this.getControladorUtil().pesquisar(filtroConta, Conta.class.getName()); if (colecaoConta != null && !colecaoConta.isEmpty()) { Iterator iteraConta = colecaoConta.iterator(); int quantidadeContasComPagamento = 0; while (iteraConta.hasNext()) { Conta conta = (Conta) iteraConta.next(); FiltroPagamento filtroPagamento = new FiltroPagamento(); filtroPagamento.adicionarParametro(new ParametroSimples(FiltroPagamento.CONTA_ID, conta.getId())); Collection<Pagamento> colecaoPagamento = this.getControladorUtil().pesquisar(filtroPagamento, Pagamento.class.getName()); if (colecaoPagamento != null && !colecaoPagamento.isEmpty()) { quantidadeContasComPagamento++; } } // Caso existam pagamentos para todos as contas // referentes a entrada do parcelamento // indicar que o parcelamento estah confirmado if (quantidadeContasComPagamento == colecaoConta.size()) { estahConfirmado = true; } else { estahConfirmado = false; } // [FS0002} - Verificar exitencia de guia de // pagamento ou conta associada ao parcelamento // com entrada indicar que o parcelamento estah // confirmado } else { estahConfirmado = true; } } } // Caso n�o exista parcelamento ativo para o im�vel // indicar que o parcelamento est� confirmado } else { estahConfirmado = true; } // Caso esteja indicado que o parcelamento para o im�vel esta // confirmado // o sistema retira da lista de contas,as contas do im�vel com // situa��o correpondente a // parcelada if (estahConfirmado) { if (colecaoContasValores != null && !colecaoContasValores.isEmpty()) { Iterator iteraConta = colecaoContasValores.iterator(); while (iteraConta.hasNext()) { ContaValoresHelper contaValoresHelper = (ContaValoresHelper) iteraConta.next(); Conta conta = contaValoresHelper.getConta(); if (conta.getImovel().getId().intValue() == idImovel.intValue()) { DebitoCreditoSituacao debito = conta.getDebitoCreditoSituacaoAtual(); if (debito.getId().intValue() == DebitoCreditoSituacao.PARCELADA.intValue()) { iteraConta.remove(); } } } } } }// fim do while de imoveis } return colecaoContasValores; } /** * Calcula os acrescimmos por Impontualidade(multa,juros de mora e atualiza��o monetaria) * * @param anoMesReferenciaDebito * @param dataVencimento * @param dataPagamento * @param valorDebito * @param indicadorMulta * @param anoMesArrecadacao * @param idConta * * @return CalcularAcrescimoPorImpontualidadeHelper * @throws ControladorException */ public CalcularAcrescimoPorImpontualidadeHelper calcularAcrescimoPorImpontualidade(int anoMesReferenciaDebito, Date dataVencimento, Date dataPagamento, BigDecimal valorDebito, BigDecimal valorMultasCobradas, short indicadorMulta, String anoMesArrecadacao, Integer idConta, Short indicadorArrecadacao) throws ControladorException { CalcularAcrescimoPorImpontualidadeHelper calcularAcrescimoPorImpontualidade = new CalcularAcrescimoPorImpontualidadeHelper(); BigDecimal valorMulta = BigDecimal.ZERO; BigDecimal valorJurosMora = BigDecimal.ZERO; BigDecimal valorAtualizacao = BigDecimal.ZERO; boolean calcular = true; if (idConta != null) { SistemaParametro sistemaParametros = getControladorUtil().pesquisarParametrosDoSistema(); Object[] parmsConta = null; try { parmsConta = repositorioFaturamento.pesquisarContaParaAcrescimoPorImpontualidade(idConta); if (parmsConta != null) { Municipio municipio = new Municipio((Integer) parmsConta[1]); /* * Caso o im�vel tenha d�bito autom�tico e o recebimento, mesmo em atraso, tenha sido atrav�s de d�bito autom�tico, * o sistema n�o calcula os acr�scimos de impontualidade */ Integer pagamentoPorDebitoAutomatico = null; try { pagamentoPorDebitoAutomatico = this.repositorioCobranca.pesquisarPagamentoDeContaPorDebitoAutomatico(idConta); } catch (ErroRepositorioException ex) { sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", ex); } if (pagamentoPorDebitoAutomatico != null && pagamentoPorDebitoAutomatico.intValue() > 0) { calcular = false; } else { /* * Caso a data de pagamento n�o seja nula, passar a data de pagamento, caso contr�rio, passar a data corrente * menos a quantidade m�nima de dias para in�cio da cobran�a da conta parm_nndiasvenctocobranca. */ if (dataPagamento == null) { dataPagamento = new Date(); Util.subtrairNumeroDiasDeUmaData(dataPagamento, sistemaParametros.getNumeroDiasVencimentoCobranca()); } // [UC0747] - Calcular diferen�a de dias �teis entre duas datas Integer qtdDiasUteis = getControladorUtil().calcularDiferencaDiasUteisEntreDuasDatas(dataVencimento, dataPagamento, municipio); /* * Caso a diferen�a retornada seja igual ou menor que o valor da coluna parm_nndiascalculoacrescimos da * tabela SISTEMA_PARAMETROS n�o calcular acr�scimos */ if (qtdDiasUteis.intValue() <= sistemaParametros.getNumeroDiasCalculoAcrescimos()) { calcular = false; } } } else { calcular = false; } if (calcular) { BigDecimal indiceMulta = null; BigDecimal indiceJurosMora = null; BigDecimal fatorAtualizacaMonetaria = null; Short indicadorMultaMensal = null; BigDecimal percentualLimiteMulta = null; Short indicadorJurosMensal = null; BigDecimal percentualLimiteJuros = null; IndicesAcrescimosImpontualidade indicesAcrescimosImpontualidade = null; Integer mesAnoDataReferenciaConta = Util.recuperaAnoMesDaData(dataVencimento); // Considerar m�sAno anterior ao de vencimento da conta no calculo de atualiza��o monet�ria mesAnoDataReferenciaConta = Util.subtrairMesDoAnoMes(mesAnoDataReferenciaConta, 1); indicesAcrescimosImpontualidade = repositorioCobranca.pesquisarIndiceAcrescimoImpontualidade(mesAnoDataReferenciaConta); if (indicesAcrescimosImpontualidade != null) { indiceMulta = indicesAcrescimosImpontualidade.getPercentualMulta(); indiceJurosMora = indicesAcrescimosImpontualidade.getPercentualJurosMora(); fatorAtualizacaMonetaria = indicesAcrescimosImpontualidade.getFatorAtualizacaoMonetaria(); indicadorMultaMensal = indicesAcrescimosImpontualidade.getIndicadorMultaMensal(); percentualLimiteMulta = indicesAcrescimosImpontualidade.getPercentualLimiteMulta(); indicadorJurosMensal = indicesAcrescimosImpontualidade.getIndicadorJurosMensal(); percentualLimiteJuros = indicesAcrescimosImpontualidade.getPercentualLimiteJuros(); } // [FS001] - Verificar Existencia dos Indices para // Acrescimos por Impontualidade if (indicesAcrescimosImpontualidade == null) { indicesAcrescimosImpontualidade = repositorioCobranca .pesquisarMenorIndiceAcrescimoImpontualidade(anoMesReferenciaDebito); if (indicesAcrescimosImpontualidade != null) { indiceMulta = indicesAcrescimosImpontualidade.getPercentualMulta(); indiceJurosMora = indicesAcrescimosImpontualidade.getPercentualJurosMora(); fatorAtualizacaMonetaria = indicesAcrescimosImpontualidade.getFatorAtualizacaoMonetaria(); indicadorMultaMensal = indicesAcrescimosImpontualidade.getIndicadorMultaMensal(); percentualLimiteMulta = indicesAcrescimosImpontualidade.getPercentualLimiteMulta(); indicadorJurosMensal = indicesAcrescimosImpontualidade.getIndicadorJurosMensal(); percentualLimiteJuros = indicesAcrescimosImpontualidade.getPercentualLimiteJuros(); } } /* * Colocado por Raphael Rossiter em 04/10/2007 [FS001] - * Verificar Existencia dos Indices para Acrescimos por * Impontualidade */ if (indicesAcrescimosImpontualidade == null) { indicesAcrescimosImpontualidade = repositorioCobranca.pesquisarMenorIndiceAcrescimoImpontualidade(); if (indicesAcrescimosImpontualidade != null) { indiceMulta = indicesAcrescimosImpontualidade.getPercentualMulta(); indiceJurosMora = indicesAcrescimosImpontualidade.getPercentualJurosMora(); fatorAtualizacaMonetaria = indicesAcrescimosImpontualidade.getFatorAtualizacaoMonetaria(); indicadorMultaMensal = indicesAcrescimosImpontualidade.getIndicadorMultaMensal(); percentualLimiteMulta = indicesAcrescimosImpontualidade.getPercentualLimiteMulta(); indicadorJurosMensal = indicesAcrescimosImpontualidade.getIndicadorJurosMensal(); percentualLimiteJuros = indicesAcrescimosImpontualidade.getPercentualLimiteJuros(); } } if (indicesAcrescimosImpontualidade == null) { indiceMulta = new BigDecimal(0); indiceJurosMora = new BigDecimal(0); fatorAtualizacaMonetaria = new BigDecimal(0); indicadorMultaMensal = ConstantesSistema.SIM; percentualLimiteMulta = BigDecimal.ZERO; indicadorJurosMensal = ConstantesSistema.SIM; percentualLimiteJuros = BigDecimal.ZERO; } // Diferen�a de dias em atraso (�teis e Feriados) Integer qtdDias = Util.obterQuantidadeDiasEntreDuasDatas(dataVencimento, dataPagamento); // CALCULAR VALOR DA MULTA // ======================================================================================================== if (indicadorMulta == ConstantesSistema.INDICADOR_USO_DESATIVO.shortValue()) { if (valorMultasCobradas == null) { valorMultasCobradas = BigDecimal.ZERO; } // MULTA DI�RIA - Determinando o percentual da multa if (indicadorMultaMensal.equals(ConstantesSistema.NAO)) { /* * O sistema calcula o valor do percentual de multa * = IACI_PCMULTA * diferen�a de dias em atraso. */ indiceMulta = indiceMulta.multiply(new BigDecimal(qtdDias.toString())); // O sistema verifica se o percentual calculado � // maior que o limite de multa informado if (indiceMulta.compareTo(percentualLimiteMulta) > 0) { indiceMulta = percentualLimiteMulta; } } // Calculando o valor da multa de acordo com o // percentual determinado (MENSAL ou DI�RIO) valorMulta = valorDebito.subtract(valorMultasCobradas).multiply( Util.dividirArredondando(indiceMulta, new BigDecimal(100))); } // ======================================================================================================== /* * O sistema dever� verificar se o MMAAAA do vencimento da * conta � maior que o MMAAAA da arrecada��o.Caso esta * situa��o ocorra os valores de juros de mora e atualiza��o * tarif�ria ou monet�ria ser�o iguais a zero. */ if (indicadorArrecadacao.equals(ConstantesSistema.INDICADOR_ARRECADACAO_ATIVO)) { Integer anoMesDataVencimento = Util.getAnoMesComoInteger(dataVencimento); if (anoMesDataVencimento.intValue() > (new Integer(anoMesArrecadacao)).intValue()) { calcular = false; } } if (calcular) { // CALCULAR VALOR DE JUROS DE MORA // ===================================================================================================== // JUROS MENSAL if (indicadorJurosMensal.equals(ConstantesSistema.SIM)) { int mesesEmAtraso = Util.dataDiff(dataPagamento, dataVencimento); if (mesesEmAtraso <= 0) { valorJurosMora = BigDecimal.ZERO; } else { valorJurosMora = valorDebito.multiply(new BigDecimal(mesesEmAtraso).multiply(Util.dividirArredondando( indiceJurosMora, new BigDecimal(100)))); } } // JUROS DI�RIO else { /* * O sistema calcula o valor do percentual de juros * = IACI_PCJUROS * diferen�a de dias em atraso. */ indiceJurosMora = indiceJurosMora.multiply(new BigDecimal(qtdDias.toString())); // O sistema verifica se o percentual calculado � // maior que o limite de juros informado if (indiceJurosMora.compareTo(percentualLimiteJuros) > 0) { indiceJurosMora = percentualLimiteJuros; } valorJurosMora = valorDebito.multiply(Util.dividirArredondando(indiceJurosMora, new BigDecimal(100))); } // ======================================================================================================= /* * CALCULAR ATUALIZA��O TARIF�RIA OU MONET�RIA * * Alterado por Raphael Rossiter em 27/08/2007 OBJ: * Calcular atualiza��o tarif�ria */ if (sistemaParametros.getIndicadorAtualizacaoTarifaria() == ConstantesSistema.NAO) { // Calcular Valor de Atualiza��o Monet�ria valorAtualizacao = this.calcularValorAtualizacaoMonetaria(dataVencimento, dataPagamento, fatorAtualizacaMonetaria, indicesAcrescimosImpontualidade, valorDebito, indiceMulta, indiceJurosMora); } else { // Calcular Valor de Atualiza��o Tarif�ria valorAtualizacao = this.calcularValorAtualizacaoTarifaria(sistemaParametros, idConta); } } } } catch (ErroRepositorioException ex) { throw new ControladorException("erro.sistema", ex); } } calcularAcrescimoPorImpontualidade.setValorMulta(valorMulta.setScale(2, BigDecimal.ROUND_HALF_UP)); calcularAcrescimoPorImpontualidade.setValorJurosMora(valorJurosMora.setScale(2, BigDecimal.ROUND_HALF_UP)); calcularAcrescimoPorImpontualidade.setValorAtualizacaoMonetaria(valorAtualizacao.setScale(2, BigDecimal.ROUND_HALF_UP)); return calcularAcrescimoPorImpontualidade; } /** * [UC0216] Calcular Acrescimo por Impontualidade * * Author: Raphael Rossiter * * @param dataVencimento * @param dataPagamento * @param fatorAtualizacaMonetaria * @param indicesAcrescimosImpontualidade * @param valorDebito * @param indiceMulta * @param indiceJurosMora * * @return BigDecimal valorAtualizacaoMonetaria * @throws ControladorException */ public BigDecimal calcularValorAtualizacaoMonetaria(Date dataVencimento, Date dataPagamento, BigDecimal fatorAtualizacaMonetaria, IndicesAcrescimosImpontualidade indicesAcrescimosImpontualidade, BigDecimal valorDebito, BigDecimal indiceMulta, BigDecimal indiceJurosMora) throws ControladorException { BigDecimal valorAtualizacaoMonetaria = new BigDecimal("0.00"); /* * Caso o n�mero de meses de c�lculo de corre��o esteja diferente de * nulo (parm_nnmesescalculocorrecao) da tabela SISTEMA_PARAMETROS: O * sistema dever� verificar a diferen�a de meses entre MMAA da Data de * Vencimento e MMAA da Data de Pagamento caso n�o seja nula, caso * contr�rio o MMAA da Data Corrente menos a quantidade m�nima de dias * para in�cio da cobran�a da conta (parm_nndiascalculoacrescimos) * * OBS - A data de pagamento j� est� sendo manipulada no m�todo [UC0216] * Calcular Acrescimo por Impontualidadede. */ SistemaParametro sistemaParametros = getControladorUtil().pesquisarParametrosDoSistema(); Integer diferencaMeses = Util.dataDiff(dataVencimento, dataPagamento); if (sistemaParametros.getNumeroMesesCalculoCorrecao() == null || (sistemaParametros.getNumeroMesesCalculoCorrecao() != null && diferencaMeses.intValue() > sistemaParametros .getNumeroMesesCalculoCorrecao().intValue())) { BigDecimal fatorAtualizacaoMonetariaInicial = fatorAtualizacaMonetaria; String anoMesReferenciaFatorAtualizacaoMonetariaFinal = ""; if (dataPagamento != null) { Calendar data = new GregorianCalendar(); data.setTime(dataPagamento); anoMesReferenciaFatorAtualizacaoMonetariaFinal = data.get(Calendar.YEAR) + ""; if (data.get(Calendar.MONTH) < 10) { anoMesReferenciaFatorAtualizacaoMonetariaFinal = anoMesReferenciaFatorAtualizacaoMonetariaFinal + "0" + (data.get(Calendar.MONTH) + 1); } else { anoMesReferenciaFatorAtualizacaoMonetariaFinal = anoMesReferenciaFatorAtualizacaoMonetariaFinal + "" + (data.get(Calendar.MONTH) + 1); } } else { // alterado por Vivianne Sousa anoMesReferenciaFatorAtualizacaoMonetariaFinal = Util.getAnoMesComoString(new Date()); } // pesquisar o fator atualizacao monetaria final try { indicesAcrescimosImpontualidade = repositorioCobranca.pesquisarIndiceAcrescimoImpontualidade(new Integer( anoMesReferenciaFatorAtualizacaoMonetariaFinal).intValue()); if (indicesAcrescimosImpontualidade != null) { indiceMulta = indicesAcrescimosImpontualidade.getPercentualMulta(); indiceJurosMora = indicesAcrescimosImpontualidade.getPercentualJurosMora(); fatorAtualizacaMonetaria = indicesAcrescimosImpontualidade.getFatorAtualizacaoMonetaria(); } } catch (ErroRepositorioException ex) { sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", ex); } if (indicesAcrescimosImpontualidade == null) { try { indicesAcrescimosImpontualidade = repositorioCobranca.pesquisarMenorIndiceAcrescimoImpontualidade(new Integer( anoMesReferenciaFatorAtualizacaoMonetariaFinal).intValue()); if (indicesAcrescimosImpontualidade != null) { indiceMulta = indicesAcrescimosImpontualidade.getPercentualMulta(); indiceJurosMora = indicesAcrescimosImpontualidade.getPercentualJurosMora(); fatorAtualizacaMonetaria = indicesAcrescimosImpontualidade.getFatorAtualizacaoMonetaria(); } } catch (ErroRepositorioException ex) { sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", ex); } } if (indicesAcrescimosImpontualidade == null) { indiceMulta = new BigDecimal(0); indiceJurosMora = new BigDecimal(0); fatorAtualizacaMonetaria = new BigDecimal(0); } BigDecimal fatorAtualizacaoMonetariaFinal = fatorAtualizacaMonetaria; BigDecimal percentualAtualizacaoMonetaria = null; if (((fatorAtualizacaoMonetariaInicial.compareTo(new BigDecimal(0))) != 0) && ((fatorAtualizacaoMonetariaFinal.compareTo(new BigDecimal(0))) != 0)) { percentualAtualizacaoMonetaria = Util.dividirArredondando(fatorAtualizacaoMonetariaFinal, fatorAtualizacaoMonetariaInicial); valorAtualizacaoMonetaria = (valorDebito.multiply(percentualAtualizacaoMonetaria)).subtract(valorDebito); } } return valorAtualizacaoMonetaria; } /** * [UC0216] Calcular Acrescimo por Impontualidade * * Author: Raphael Rossiter * * @param dataVencimento * @param dataPagamento * @param dataArrecadacao * @param fatorAtualizacaoMonetariaInicial * @param fatorAtualizacaMonetaria * @param indicesAcrescimosImpontualidade * @param valorDebito * @param indiceMulta * @param indiceJurosMora * @param dataVencimentoInteger * * @return BigDecimal valorAtualizacaoMonetaria * @throws ControladorException */ public BigDecimal calcularValorAtualizacaoTarifaria(SistemaParametro sistemaParametro, Integer idConta) throws ControladorException { BigDecimal valorAtualizacaoMonetaria = new BigDecimal("0.00"); if (idConta != null) { Conta conta = this.getControladorFaturamento().pesquisarContaAtualizacaoTarifaria(idConta); /* * Alterado por Raphael Rossiter em 11/09/2007 (Analista: Rosana * Carvalho) OBJ: N�o calcular a atualiza��o tarifaria caso o * CNTA_AMREFERENCIACONTA seja maior ou igual que * PARM_AMATUALIZACAOTARIFARIA */ if (sistemaParametro.getAnoMesAtualizacaoTarifaria() != null && conta.getReferencia() < sistemaParametro.getAnoMesAtualizacaoTarifaria().intValue()) { /* * Para simular o c�lculo a partir dos dados que est�o na conta, * ser� preciso substituir o ConsumoTarifa do im�vel pelo * ConsumoTarifa que est� na conta. */ Imovel imovel = conta.getImovel(); imovel.setConsumoTarifa(conta.getConsumoTarifa()); // [UC0105] - Obter Consumo M�nimo da Liga��o Integer consumoMinimoLigacao = getControladorMicromedicao().obterConsumoMinimoLigacao(imovel, null); // [UC0108] - Obter Quantidade de Economias por Categoria Collection colecaoCategorias = getControladorImovel().obterQuantidadeEconomiasContaCategoria(conta); Integer anoMesReferencia = sistemaParametro.getAnoMesFaturamento(); // Data de Leitura Anterior Integer anoMesReferenciaAnterior = Util.subtrairMesDoAnoMes(anoMesReferencia, 1); Date dataLeituraAnterior = null; try { dataLeituraAnterior = (Date) this.repositorioFaturamento.pesquisarFaturamentoAtividadeCronogramaDataRealizacao(imovel .getQuadra().getRota().getFaturamentoGrupo().getId(), FaturamentoAtividade.EFETUAR_LEITURA, anoMesReferenciaAnterior); } catch (ErroRepositorioException ex) { sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", ex); } // Data de Leitura Atual Date dataLeituraAtual = null; try { dataLeituraAtual = (Date) this.repositorioFaturamento.pesquisarFaturamentoAtividadeCronogramaDataRealizacao(imovel .getQuadra().getRota().getFaturamentoGrupo().getId(), FaturamentoAtividade.EFETUAR_LEITURA, anoMesReferencia); } catch (ErroRepositorioException ex) { sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", ex); } /* * Caso N�O existe cronograma para o anoMes informado */ if (dataLeituraAnterior == null || dataLeituraAtual == null) { int mesConta = Util.obterMes(anoMesReferencia); int anoConta = Util.obterAno(anoMesReferencia); int ultimoDiaMes = new Integer(Util.obterUltimoDiaMes(mesConta, anoConta)); dataLeituraAtual = Util.criarData(ultimoDiaMes, mesConta, anoConta); dataLeituraAnterior = Util.criarData(1, mesConta, anoConta); } BigDecimal percentualEsgoto = new BigDecimal(0); if (conta.getLigacaoEsgotoSituacao().getId().equals(LigacaoEsgotoSituacao.LIGADO)) { percentualEsgoto = conta.getPercentualEsgoto(); } // Valores de �gua e esgoto que est�o na conta (VALOR ANTIGO) BigDecimal valorAguaEsgotoAnterior = new BigDecimal(0); if (conta.getValorAgua() != null) { valorAguaEsgotoAnterior = valorAguaEsgotoAnterior.add(conta.getValorAgua()); } if (conta.getValorEsgoto() != null) { valorAguaEsgotoAnterior = valorAguaEsgotoAnterior.add(conta.getValorEsgoto()); } // Valores de �gua e esgoto (VALOR ATUAL) BigDecimal valorAguaEsgotoAtual = new BigDecimal(0); // [UC0120] - Calcular Valores de �gua e/ou Esgoto Collection<CalcularValoresAguaEsgotoHelper> colecaoCalcularValoresAguaEsgotoHelper = this.getControladorFaturamento() .calcularValoresAguaEsgoto(anoMesReferencia, conta.getLigacaoAguaSituacao().getId(), conta.getLigacaoEsgotoSituacao().getId(), new Short("1"), new Short("1"), colecaoCategorias, conta.getConsumoAgua(), conta.getConsumoEsgoto(), consumoMinimoLigacao, dataLeituraAnterior, dataLeituraAtual, percentualEsgoto, conta.getConsumoTarifa().getId(), null, null); if (colecaoCalcularValoresAguaEsgotoHelper != null && !colecaoCalcularValoresAguaEsgotoHelper.isEmpty()) { CalcularValoresAguaEsgotoHelper valoresAguaEsgoto = null; if (colecaoCalcularValoresAguaEsgotoHelper.size() > 1) { Iterator itAguaEsgoto = colecaoCalcularValoresAguaEsgotoHelper.iterator(); while (itAguaEsgoto.hasNext()) { valoresAguaEsgoto = (CalcularValoresAguaEsgotoHelper) itAguaEsgoto.next(); if (valoresAguaEsgoto.getValorFaturadoAguaCategoria() != null) { valorAguaEsgotoAtual = valorAguaEsgotoAtual.add(valoresAguaEsgoto.getValorFaturadoAguaCategoria()); } if (valoresAguaEsgoto.getValorFaturadoEsgotoCategoria() != null) { valorAguaEsgotoAtual = valorAguaEsgotoAtual.add(valoresAguaEsgoto.getValorFaturadoEsgotoCategoria()); } } } else { valoresAguaEsgoto = (CalcularValoresAguaEsgotoHelper) Util .retonarObjetoDeColecao(colecaoCalcularValoresAguaEsgotoHelper); if (valoresAguaEsgoto.getValorFaturadoAguaCategoria() != null) { valorAguaEsgotoAtual = valorAguaEsgotoAtual.add(valoresAguaEsgoto.getValorFaturadoAguaCategoria()); } if (valoresAguaEsgoto.getValorFaturadoEsgotoCategoria() != null) { valorAguaEsgotoAtual = valorAguaEsgotoAtual.add(valoresAguaEsgoto.getValorFaturadoEsgotoCategoria()); } } valorAtualizacaoMonetaria = valorAguaEsgotoAtual.subtract(valorAguaEsgotoAnterior); if (valorAtualizacaoMonetaria.compareTo(BigDecimal.ZERO) == -1) { valorAtualizacaoMonetaria = BigDecimal.ZERO; } } } } return valorAtualizacaoMonetaria; } /** * [UC0200] Inserir D�bito Autom�tico * * @author Roberta Costa * @created 04/01/2006 * * @param matriculaImovel * Matr�cula do Imovel * @param codigoBanco * C�digo do Banco * @param codigoAgencia * C�digo da Ag�ncia * @param identificacaoCliente * Identifica��o do Cliente no Banco * @param dataOpcao * Data da Op��o * @throws ControladorException * Controlador Exception */ public String inserirDebitoAutomatico(String matriculaImovel, String codigoBanco, String codigoAgencia, String identificacaoCliente, Date dataOpcao) throws ControladorException { // Vari�vel de mensagem de retorno String descricaoOcorrencia = "OK"; try { Calendar dataAtual = Calendar.getInstance(); dataAtual.set(Calendar.HOUR, 0); dataAtual.set(Calendar.MINUTE, 0); dataAtual.set(Calendar.SECOND, 0); dataAtual.set(Calendar.MILLISECOND, 0); if (dataOpcao.after(dataAtual.getTime())) { descricaoOcorrencia = "DATA OP��O MAIOR QUE A DATA ATUAL"; } else { // [FS0001] - Verificar exist�ncia da matr�cula do im�vel Integer existeImovel = null; try { existeImovel = repositorioImovel.verificarExistenciaImovel(new Integer(matriculaImovel)); } catch (NumberFormatException e) { existeImovel = null; } if (existeImovel == null || existeImovel == 0) { descricaoOcorrencia = "IDENTIFICA��O DO IM�VEL N�O CADASTRADA"; } else { // [FS0002] - Verificar exist�ncia do Banco Integer existeBanco = null; try { existeBanco = repositorioarrecadacao.verificarExistenciaBanco(new Integer(codigoBanco)); } catch (NumberFormatException e) { existeBanco = null; } if (existeBanco == null) { descricaoOcorrencia = "BANCO N�O CADASTRADO"; } else { // [FS0003] - Verificar exist�ncia do Ag�ncia Integer existeAgencia = repositorioarrecadacao.verificarExistenciaAgencia(codigoAgencia, new Integer(codigoBanco)); if (existeAgencia == null) { descricaoOcorrencia = "AG�NCIA N�O CADASTRADA"; } else { // [FS0004] - Verifica a data de Op��o posterior j� // informanda String resultadoDataOpcao = repositorioCobranca.verificarDataOpcao(matriculaImovel, dataOpcao, identificacaoCliente, codigoAgencia); // [FS0006] - Verificar data de op��o j� exclu�da String resultadoDataOpcaoJaExcluida = repositorioCobranca.verificarDataOpcaoJaExcluida(matriculaImovel, dataOpcao); if (resultadoDataOpcao != null) { descricaoOcorrencia = "IM�VEL J� � D�BITO AUTOM�TICO"; } else if (resultadoDataOpcaoJaExcluida != null) { descricaoOcorrencia = "IM�VEL J� FOI EXCLU�DO DO D�BITO AUTOM�TICO"; } else { // Verifica se o Im�vel j� � D�bito Autom�tico String resultadoDebitoAutomatico = repositorioCobranca.verificarDebitoAutomatico(matriculaImovel); if (resultadoDebitoAutomatico != null) { // Atualiza a data da exclus�o com a data // corrente em D�bio Autom�tico repositorioCobranca.atualizarDataExclusao(matriculaImovel); } Agencia agencia = new Agencia(); agencia.setId(existeAgencia); Imovel imovel = new Imovel(); imovel.setId(new Integer(matriculaImovel)); DebitoAutomatico debitoAutomatico = new DebitoAutomatico(identificacaoCliente, dataOpcao, new Date(), null, new Date(), agencia, imovel); // Insere o Im�vel em D�bito Autom�tico repositorioCobranca.inserirDebitoAutomatico(debitoAutomatico); // Atualiza o indicador de d�bio autom�tico em // Im�vel Integer indicadorDebito = 1; repositorioCobranca.atualizarIndicadorDebitoAutomatico(matriculaImovel, indicadorDebito); } } } } } } catch (ErroRepositorioException ex) { sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", ex); } return descricaoOcorrencia; } public String removerDebitoAutomatico(String matriculaImovel, String codigoBanco, String codigoAgencia, String identificacaoCliente, Date dataOpcao) throws ControladorException { String descricaoOcorrencia = "OK"; try { Integer existeImovel = null; try { existeImovel = repositorioImovel.verificarExistenciaImovel(new Integer(matriculaImovel)); } catch (NumberFormatException e) { existeImovel = null; } if (existeImovel == null) { descricaoOcorrencia = "IDENTIFICA��O DO IM�VEL N�O CADASTRADA"; } else { Integer existeBanco = null; try { existeBanco = repositorioarrecadacao.verificarExistenciaBanco(new Integer(codigoBanco)); } catch (NumberFormatException e) { existeBanco = null; } if (existeBanco == null) { descricaoOcorrencia = "BANCO N�O CADASTRADO"; } else { Integer existeAgencia = null; existeAgencia = repositorioarrecadacao.verificarExistenciaAgencia(codigoAgencia, new Integer(codigoBanco)); if (existeAgencia == null) { descricaoOcorrencia = "AG�NCIA N�O CADASTRADA"; } else { String idAgenciaDebitoAutomatico = repositorioCobranca.verificarDebitoAutomatico(matriculaImovel); if (idAgenciaDebitoAutomatico == null) { descricaoOcorrencia = "IM�VEL N�O � D�BITO AUTOM�TICO"; } else { String idAgencia = repositorioCobranca.verificarDebitoAutomaticoBancoAgencia(codigoBanco, codigoAgencia); if (!idAgenciaDebitoAutomatico.equals(idAgencia)) { descricaoOcorrencia = "IM�VEL � D�BITO AUTOM�TICO DE OUTRO BANCO/AG�NCIA"; } else { String resultadoDataOpcao = repositorioCobranca.verificarDataOpcaoExclusao(matriculaImovel, dataOpcao, identificacaoCliente); if (resultadoDataOpcao != null) { descricaoOcorrencia = "DATA OP��O DO DEB. AUT. MAIOR QUE DATA INFORMADA"; } else { repositorioCobranca.atualizarDataExclusao(matriculaImovel, Integer.valueOf(idAgencia)); getControladorArrecadacao().atualizarIndicadorDebitoAutomaticoComDataExclusao( Integer.valueOf(matriculaImovel)); } } } } } } } catch (ErroRepositorioException ex) { sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", ex); } return descricaoOcorrencia; } /** * [UC0251] Gerar Atividade de A��o de Cobran�a * * @author Pedro Alexandre * @created 01/02/2006 * * @param grupoCobranca * Grupo de Cobran�a * @param anoMesReferencia * Ano/M�s de refer�ncia do ciclo de cobran�a * @param idCronogramaAtividadeAcaoCobranca * C�digo do cronograma da atividade da a��o de cobran�a * @param idComandoAtividadeAcaoCobranca * C�digo do comando da atividade da a��o de cobran�a * @param rotas * Cole��o de rotas * @param acaoCobranca * A��o de cobran�a * @param atividadeCobranca * Atividade de cobran�a * @param indicadorCriterio * Indicador do crit�rio a ser utilizado * @param criterioCobranca * Crit�rio de cobran�a * @param cliente * Cliente * @param relacaoClienteImovel * Tipo de rela��o entre cliente e im�vel * @param anoMesReferenciaInicial * Ano/M�s de refer�ncia inicial * @param anoMesReferenciaFinal * Ano/M�s de refer�ncia final * @param dataVencimentoInicial * Data de vencimento inicial * @param dataVencimentoFinal * Data de vencimento final * @throws ControladorException * Controlador Exception */ /* * public void gerarAtividadeAcaoCobranca(CobrancaGrupo grupoCobranca, int * anoMesReferencia, Integer idCronogramaAtividadeAcaoCobranca, Integer * idComandoAtividadeAcaoCobranca, Collection<Rota> rotas, CobrancaAcao * acaoCobranca, CobrancaAtividade atividadeCobranca, Integer * indicadorCriterio, CobrancaCriterio criterioCobranca, Cliente cliente, * Integer relacaoClienteImovel, int anoMesReferenciaInicial, int * anoMesReferenciaFinal, Date dataVencimentoInicial, Date * dataVencimentoFinal) throws ControladorException{ * * //IMPLEMENTAR QUANDO O MAPEAMENTO DA QUINTA ITERACAO ESTIVER PRONTO } */ /** * Consultar Dados do Cliente Imovel Vinculado Auhtor: Rafael Santos Data: * 23/01/2006 * * @param imovel * Imovel * @return Dados do Imovel Vinculado * @throws ControladorException */ public Cliente consultarDadosClienteImovelUsuario(Imovel imovel) throws ControladorException { Cliente cliente = null; Object[] colecaoClienteArray = null; try { colecaoClienteArray = repositorioMicromedicao.consultarDadosClienteImovelUsuario(imovel); } catch (ErroRepositorioException ex) { sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", ex); } if (colecaoClienteArray != null && !(colecaoClienteArray.length < 0)) { cliente = new Cliente(); // Seta o id do cliente if (colecaoClienteArray[0] != null) { cliente.setId((Integer) colecaoClienteArray[0]); } // Seta o nome do cliente if (colecaoClienteArray[1] != null) { cliente.setNome((String) colecaoClienteArray[1]); } } return cliente; } /** * Consultar Dados do Cliente Imovel Vinculado Auhtor: Rafael Santos Data: * 23/01/2006 * * @param consumoHistorico * Consumo Historico * @return Consumo Tipo * @throws ControladorException */ public ConsumoTipo consultarDadosConsumoTipoConsumoHistorico(ConsumoHistorico consumoHistorico) throws ControladorException { ConsumoTipo consumoTipo = null; Object[] colecaoConsumoTipoArray = null; try { colecaoConsumoTipoArray = repositorioMicromedicao.consultarDadosConsumoTipoConsumoHistorico(consumoHistorico); } catch (ErroRepositorioException ex) { sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", ex); } if (colecaoConsumoTipoArray != null && !(colecaoConsumoTipoArray.length < 0)) { consumoTipo = new ConsumoTipo(); // Descricao Abreviada if (colecaoConsumoTipoArray[0] != null) { consumoTipo.setDescricaoAbreviada((String) colecaoConsumoTipoArray[0]); } // Id if (colecaoConsumoTipoArray[1] != null) { consumoTipo.setId((Integer) colecaoConsumoTipoArray[1]); } } return consumoTipo; } /** * Consultar Historico Medi��o Individualizada Auhtor: Rafael Santos Data: * 23/01/2006 [UC001779] Consultar Hist�rico Medi��o Individualizada * * @param imovelCondominio * Imovel Condominio * @param anoMesFaturamento * Ano M�s Fauramento * @return Dados do Historico Medi��o Individualizada * @throws ControladorException */ public Collection consultarHistoricoMedicaoIndividualizada(Imovel imovelCondominio, String anoMesFaturamento) throws ControladorException { Collection colecaoHistoricosMedicaoIndividualizada = null; MedicaoHistorico medicaoHistorico = null; ConsumoHistorico consumoHistorico = null; ConsumoHistorico consumoHistoricoAgua = null; LigacaoTipo ligacaoTipo = null; Cliente cliente = null; ConsumoTipo consumoTipo = null; /* * Matricula Nome do Cliente Tipo de Consumo Consumo de �gua Medido * Consumo de �gua Faturado Consumo Esgoto Faturado Consumo do Rateio */ ConsultarHistoricoMedicaoIndividualizadaHelper consultarHistoricoMedicaoIndividualizadaHelper = null; if (imovelCondominio != null) { colecaoHistoricosMedicaoIndividualizada = new ArrayList(); // imovel condominio consultarHistoricoMedicaoIndividualizadaHelper = new ConsultarHistoricoMedicaoIndividualizadaHelper(); ligacaoTipo = new LigacaoTipo(); ligacaoTipo.setId(LigacaoTipo.LIGACAO_AGUA); // consultar consumo Historico imovel condominio Ligacao Agua consumoHistoricoAgua = this.obterConsumoHistoricoMedicaoIndividualizada(imovelCondominio, ligacaoTipo, new Integer( anoMesFaturamento).intValue()); // inscri��o do imovel condominio consultarHistoricoMedicaoIndividualizadaHelper.setMatriculaImovel(imovelCondominio.getId().toString()); cliente = this.consultarDadosClienteImovelUsuario(imovelCondominio); // nome do cliente do imovel condominio // consultarHistoricoMedicaoIndividualizadaHelper.setNomeClienteUsuario(cliente.getNome()); if (cliente != null) { consultarHistoricoMedicaoIndividualizadaHelper.setNomeClienteUsuario(cliente.getNome()); } else { consultarHistoricoMedicaoIndividualizadaHelper.setNomeClienteUsuario(""); } consumoTipo = consultarDadosConsumoTipoConsumoHistorico(consumoHistoricoAgua); if (consumoTipo != null) { // tipo de consumo do imovel condominio consultarHistoricoMedicaoIndividualizadaHelper.setTipoConsumo(consumoTipo.getDescricaoAbreviada()); } else { // tipo de consumo do imovel condominio consultarHistoricoMedicaoIndividualizadaHelper.setTipoConsumo(""); } try { medicaoHistorico = repositorioMicromedicao.pesquisarMedicaoHistoricoTipoAgua(imovelCondominio.getId(), new Integer( anoMesFaturamento)); } catch (ErroRepositorioException e) { sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", e); } if (medicaoHistorico != null) { // consumo agua medido do imovel condominio consultarHistoricoMedicaoIndividualizadaHelper.setConsumoAguaMedido(medicaoHistorico.getNumeroConsumoMes().toString()); } else { consultarHistoricoMedicaoIndividualizadaHelper.setConsumoAguaMedido(""); } // consumo agua faturado do imovel condominio consultarHistoricoMedicaoIndividualizadaHelper.setConsumoAguaFaturado(consumoHistoricoAgua.getNumeroConsumoFaturadoMes() .toString()); // consumo rateio do imovel condominio consultarHistoricoMedicaoIndividualizadaHelper.setConsumoRateio(consumoHistoricoAgua.getConsumoRateio().toString()); ligacaoTipo.setId(LigacaoTipo.LIGACAO_ESGOTO); // consultar consumo Historico imovel condominio Ligacao Esgoto consumoHistorico = this.obterConsumoHistorico(imovelCondominio, ligacaoTipo, new Integer(anoMesFaturamento).intValue()); // consumo esgoto do imovel condominio if (consumoHistorico != null) { consultarHistoricoMedicaoIndividualizadaHelper.setConsumoEsgoto(consumoHistorico.getNumeroConsumoFaturadoMes().toString()); } else { consultarHistoricoMedicaoIndividualizadaHelper.setConsumoEsgoto(""); } // adicionando dados do imovel condominio colecaoHistoricosMedicaoIndividualizada.add(consultarHistoricoMedicaoIndividualizadaHelper); ConsumoHistoricoCondominio pesquisa = new ConsumoHistoricoCondominio(imovelCondominio.getId(), new Integer(anoMesFaturamento), ligacaoTipo); Collection colecaoConsumoHistoricoImoveisVinculados = this.consultarConsumoHistoricoImoveisVinculados(pesquisa); // obter os dados para os imoveis vinculados // cole��o de ids dos imoveis vinculados ao condominio if (colecaoConsumoHistoricoImoveisVinculados != null && !colecaoConsumoHistoricoImoveisVinculados.isEmpty()) { Iterator iColecaoConsumoHistoricoImoveisVinculados = colecaoConsumoHistoricoImoveisVinculados.iterator(); while (iColecaoConsumoHistoricoImoveisVinculados.hasNext()) { String idImovelVinculados = ((Integer) iColecaoConsumoHistoricoImoveisVinculados.next()).toString(); // imovel vinculado consultarHistoricoMedicaoIndividualizadaHelper = new ConsultarHistoricoMedicaoIndividualizadaHelper(); ligacaoTipo = new LigacaoTipo(); ligacaoTipo.setId(LigacaoTipo.LIGACAO_AGUA); Imovel imovelVinculado = new Imovel(); imovelVinculado.setId(new Integer(idImovelVinculados)); // consultar consumo Historico imovel vinculado Ligacao Agua consumoHistorico = this.obterConsumoHistoricoMedicaoIndividualizada(imovelVinculado, ligacaoTipo, new Integer( anoMesFaturamento).intValue()); // inscri��o do imovel vinculado consultarHistoricoMedicaoIndividualizadaHelper.setMatriculaImovel(imovelVinculado.getId().toString()); cliente = this.consultarDadosClienteImovelUsuario(imovelVinculado); // nome do cliente do imovel vinculado if (cliente != null) { consultarHistoricoMedicaoIndividualizadaHelper.setNomeClienteUsuario(cliente.getNome()); } else { consultarHistoricoMedicaoIndividualizadaHelper.setNomeClienteUsuario(""); } consumoTipo = consultarDadosConsumoTipoConsumoHistorico(consumoHistorico); if (consumoTipo != null) { // tipo de consumo do imovel vinculado consultarHistoricoMedicaoIndividualizadaHelper.setTipoConsumo(consumoTipo.getDescricaoAbreviada()); } else { // tipo de consumo do imovel vinculado consultarHistoricoMedicaoIndividualizadaHelper.setTipoConsumo(""); } try { medicaoHistorico = repositorioMicromedicao.pesquisarMedicaoHistoricoTipoAgua(imovelVinculado.getId(), new Integer( anoMesFaturamento)); } catch (ErroRepositorioException e) { sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", e); } if (medicaoHistorico != null) { // consumo agua medido do imovel vinculado consultarHistoricoMedicaoIndividualizadaHelper.setConsumoAguaMedido(medicaoHistorico.getNumeroConsumoMes() .toString()); } else { consultarHistoricoMedicaoIndividualizadaHelper.setConsumoAguaMedido(""); } // consumo agua faturado do imovel vinculado consultarHistoricoMedicaoIndividualizadaHelper.setConsumoAguaFaturado(consumoHistorico.getNumeroConsumoFaturadoMes() .toString()); // consumo rateio do imovel vinculado consultarHistoricoMedicaoIndividualizadaHelper.setConsumoRateio(consumoHistorico.getConsumoRateio().toString()); ligacaoTipo.setId(LigacaoTipo.LIGACAO_ESGOTO); // consultar consumo Historico imovel vinculado Ligacao // Esgoto consumoHistorico = this.obterConsumoHistorico(imovelVinculado, ligacaoTipo, new Integer(anoMesFaturamento).intValue()); // consumo esgoto do imovel vinculado if (consumoHistorico != null) { consultarHistoricoMedicaoIndividualizadaHelper.setConsumoEsgoto(consumoHistorico.getNumeroConsumoFaturadoMes() .toString()); } else { consultarHistoricoMedicaoIndividualizadaHelper.setConsumoEsgoto(""); } // adicionando dados do imovel vinculado colecaoHistoricosMedicaoIndividualizada.add(consultarHistoricoMedicaoIndividualizadaHelper); } } } return colecaoHistoricosMedicaoIndividualizada; } /** * Consultar Matriculas dos Imoveis Vinculados do Imovel condominio Auhtor: * Rafael Santos Data: 23/01/2006 [UC0179] Consultar Historico Medi��o * Indiviualizada * * @param consumoHistorico * Consumo Historico * @return * @throws ControladorException */ public Collection consultarConsumoHistoricoImoveisVinculados(ConsumoHistoricoCondominio consumoHistorico) throws ControladorException { try { return repositorioMicromedicao.consultarConsumoHistoricoImoveisVinculados(consumoHistorico); } catch (ErroRepositorioException e) { sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", e); } } /** * Consultar Matriculas dos Imoveis Vinculados do Imovel condominio Auhtor: * Rafael Santos Data: 23/01/2006 [UC0179] Consultar Historico Medi��o * Indiviualizada * * @param imovel * Imovel * @param ligcaoTipo * Tipo de Ligaca��o * @param anoMesFaturamento * Ano Mes Faturamento * @exception ControladorException * @return Consumo Historico do Imovel */ private ConsumoHistorico obterConsumoHistoricoMedicaoIndividualizada(Imovel imovel, LigacaoTipo ligacaoTipo, int anoMesReferencia) throws ControladorException { ConsumoHistorico consumoHistorico = null; try { consumoHistorico = repositorioMicromedicao.obterConsumoHistoricoMedicaoIndividualizada(imovel, ligacaoTipo, anoMesReferencia); } catch (ErroRepositorioException ex) { sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", ex); } return consumoHistorico; } /** * [UC0213] Desfazer Parcelamento Debito * * @author Fernanda Paiva * @created 14/02/2006 * * @param DebitoCreditoSituacaoAnterior * DebitoCreditoSituacaoAtual idConta * @exception controladorException * controlador Exception */ public void atualizarSituacaoConta(String codigoConta, int situacaoAtual, int anoMesReferenciaContabil) throws ControladorException { try { repositorioCobranca.atualizarSituacaoConta(codigoConta, situacaoAtual, anoMesReferenciaContabil); } catch (ErroRepositorioException ex) { sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", ex); } } /** * [UC0213] Desfazer Parcelamento Debito * * @author Fernanda Paiva * @created 15/02/2006 * * @param DebitoCreditoSituacaoAtual * idGuiaPagamento * @exception controladorException * controlador Exception */ public void atualizarSituacaoGuiaPagamento(String codigoGuiaPagamento, int situacaoAtualGuia, int anoMesReferenciaContabil) throws ControladorException { try { repositorioCobranca.atualizarSituacaoGuiaPagamento(codigoGuiaPagamento, situacaoAtualGuia, anoMesReferenciaContabil); } catch (ErroRepositorioException ex) { sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", ex); } } /** * [UC0213] Desfazer Parcelamento Debito * * @author Fernanda Paiva * @created 15/02/2006 * * @param DebitoCreditoSituacaoAtual * idGuiaPagamento * @exception controladorException * controlador Exception */ public void atualizarParcelamento(Integer codigoParcelamento, Integer parcelamentoSituacao, String motivo, Integer usuarioId) throws ControladorException { try { repositorioCobranca.atualizarParcelamento(codigoParcelamento, parcelamentoSituacao, motivo, usuarioId); } catch (ErroRepositorioException ex) { sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", ex); } } /** * [UC0213] Desfazer Parcelamento Debito * * @author Fernanda Paiva * @created 16/02/2006 * * @param DebitoCreditoSituacaoAtual * idDebitoACobrar * @exception controladorException * controlador Exception */ public void atualizarSituacaoDebitoACobrar(String codigoDebitoACobrar, int situacaoAtualDebito, int anoMesReferenciaContabil) throws ControladorException { try { repositorioCobranca.atualizarSituacaoDebitoACobrar(codigoDebitoACobrar, situacaoAtualDebito, anoMesReferenciaContabil); } catch (ErroRepositorioException ex) { sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", ex); } } /** * [UC0213] Desfazer Parcelamento Debito * * @author Fernanda Paiva * @created 16/02/2006 * * @param DebitoCreditoSituacaoAtual * idCreditoARealizar * @exception controladorException * controlador Exception */ public void atualizarSituacaoCreditoARealizar(String codigoCreditoARealizar, int situacaoAtualCredito, int anoMesReferenciaContabil) throws ControladorException { try { repositorioCobranca.atualizarSituacaoCreditoARealizar(codigoCreditoARealizar, situacaoAtualCredito, anoMesReferenciaContabil); } catch (ErroRepositorioException ex) { sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", ex); } } /** * [UC0213] Desfazer Parcelamento Debito - remover debito a cobrar referente * ao parcelamento * * @author Fernanda Paiva * @created 20/02/2006 * * @param idImovel * idParcelamento * @exception controladorException * controlador Exception */ public void removerDebitoACobrarDoParcelamento(Integer codigoImovel, Integer codigoParcelamento) throws ControladorException { try { if (repositorioCobranca.pesquisarDebitoCobradoParcelamento(codigoParcelamento)) { throw new ControladorException("atencao.parcelamento_ja_cobrado_em_conta"); } repositorioCobranca.removerDebitoACobrarDoParcelamento(codigoImovel, codigoParcelamento); } catch (ErroRepositorioException ex) { sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", ex); } } /** * [UC0213] Desfazer Parcelamento Debito - remover debito a cobrar categoria * referente ao parcelamento * * @author Fernanda Paiva * @created 20/02/2006 * * @param idImovel * idParcelamento * @exception controladorException * controlador Exception */ public void removerDebitoACobrarCategoriaDoParcelamento(Integer codigoParcelamento, Integer idDebito) throws ControladorException { try { if (repositorioCobranca.pesquisarDebitoCobradoParcelamento(codigoParcelamento)) { throw new ControladorException("atencao.parcelamento_ja_cobrado_em_conta"); } repositorioCobranca.removerDebitoACobrarCategoriaDoParcelamento(idDebito); } catch (ErroRepositorioException ex) { sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", ex); } } /** * [UC0213] Desfazer Parcelamento Debito - remover credito a realizar * referente ao parcelamento * * @author Fernanda Paiva * @created 20/02/2006 * * @param idImovel * idParcelamento * @exception controladorException * controlador Exception */ public void removerCreditoARealizarDoParcelamento(Integer codigoImovel, Integer codigoParcelamento) throws ControladorException { try { repositorioCobranca.removerCreditoARealizarDoParcelamento(codigoImovel, codigoParcelamento); } catch (ErroRepositorioException ex) { sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", ex); } } /** * [UC0213] Desfazer Parcelamento Debito - remover guia pagamento referente * ao parcelamento * * @author Fernanda Paiva * @created 20/02/2006 * * @param idImovel * idParcelamento * @exception controladorException * controlador Exception */ public void removerGuiaPagamentoDoParcelamento(Integer codigoImovel, Integer codigoParcelamento) throws ControladorException { try { FiltroGuiaPagamento filtroGuiaPagamento = new FiltroGuiaPagamento(); filtroGuiaPagamento.adicionarParametro(new ParametroSimples(FiltroGuiaPagamento.IMOVEL_ID, codigoImovel)); filtroGuiaPagamento.adicionarParametro(new ParametroSimples(FiltroGuiaPagamento.PARCELAMENTO_ID, codigoParcelamento)); Collection colecaoGuiasPagamentos = repositorioUtil.pesquisar(filtroGuiaPagamento, GuiaPagamento.class.getName()); GuiaPagamento guiaPagamento = (GuiaPagamento) Util.retonarObjetoDeColecao(colecaoGuiasPagamentos); if (guiaPagamento != null && !guiaPagamento.equals("") && guiaPagamento.getId() != null && !guiaPagamento.getId().equals("")) { FiltroPagamento filtroPagamento = new FiltroPagamento(); filtroPagamento.adicionarParametro(new ParametroSimples(FiltroPagamento.GUIA_PAGAMENTO_ID, guiaPagamento.getId())); Collection colecaoPagamentos = repositorioUtil.pesquisar(filtroPagamento, Pagamento.class.getName()); if (colecaoPagamentos != null && !colecaoPagamentos.isEmpty()) { Iterator iter = colecaoPagamentos.iterator(); while (iter.hasNext()) { Pagamento pagamento = (Pagamento) iter.next(); getControladorArrecadacao().removerGuiaPagamentoPagamento(pagamento.getId()); } // sessionContext.setRollbackOnly(); // throw new ControladorException( // "atencao.parcelamento.nao.pode.ser.desfeito"); } repositorioCobranca.removerClienteGuiaPagamentoDoParcelamento(guiaPagamento.getId()); repositorioCobranca.removerGuiaPagamentoCobrancaDoParcelamento(guiaPagamento.getId()); repositorioCobranca.removerGuiaPagamentoDoParcelamento(codigoImovel, codigoParcelamento); } } catch (ErroRepositorioException ex) { sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", ex); } } /** * [UC0246] Executar Atividade de A��o de Cobran�a * * @author Pedro Alexandre * @created 03/02/2006 * * @param idsAtividadesCobrancaCronograma * Array de id's de atividades de cobran�a do cronograma * @param idsAtividadesCobrancaEventuais * Array de id�s de atividades de cobran�a eventuais * @throws ControladorException * Controlador Exception */ @Deprecated public void executarAtividadeAcaoCobranca(String[] idsAtividadesCobrancaCronograma, String[] idsAtividadesCobrancaEventuais) throws ControladorException { // pesquisa os parametros do sistem na base SistemaParametro sistemaParametros = getControladorUtil().pesquisarParametrosDoSistema(); // recupera o n� de dias ap�s vencimento para in�cio de cobran�a short numeroDiasVencimentoCobranca = sistemaParametros.getNumeroDiasVencimentoCobranca(); // recupera o ano/m�s corrente de faturamento Integer anoMesFaturamentoCorrente = sistemaParametros.getAnoMesFaturamento(); // cria o filtro de rota FiltroRota filtroRota = new FiltroRota(); // cria a vari�vel que vai armazenar a cole��o de rotas pesquisada Collection<Rota> colecaoRotas = null; // recupera a data corrente Date dataCorrente = new Date(); // cria o indicador do crit�rio de rota final int indicadorCriterioRota = 1; // cria o ano/m�s de refer�ncia inicial String anoMesReferenciaInicial = "000101"; // cria o ano/m�s de refer�ncia final // o ano/m�s final vai ser o ano/m�s de faturamento corrente mais um m�s String anoMesReferenciaFinal = (new Integer(Util.somarData(anoMesFaturamentoCorrente))).toString(); // cria o formato da data SimpleDateFormat formato = new SimpleDateFormat("dd/MM/yyyy"); // cria a vari�vel que vai armazenar a data de vencimento inicial Date dataVencimentoInicial = null; // cria a vari�vel que vai armazenar a data de vencimento final Date dataVencimentoFinal = null; try { // cria a data de vencimento inicial dataVencimentoInicial = formato.parse("01/01/0001"); // erro na cria��o da data } catch (ParseException e) { // seta a data de vencimento inicial para nula dataVencimentoInicial = null; } // recupera a data de vencimento final dataVencimentoFinal = Util.subtrairNumeroDiasDeUmaData(dataCorrente, numeroDiasVencimentoCobranca); /* * Executa as atividades de cobran�a do cronograma que foram previamente * comandas * ============================================================== * ================= */ // se o usu�rio selecionou alguma atividade de cobran�a de cronograma if (idsAtividadesCobrancaCronograma != null) { // la�o para executar as atividades de cobran�a do cronograma for (int i = 0; idsAtividadesCobrancaCronograma.length > i; i++) { // cria o filtro de cobran�a de a��o da atividade do cronograma FiltroCobrancaAcaoAtividadeCronograma filtroCobrancaAcaoAtividadeCronograma = new FiltroCobrancaAcaoAtividadeCronograma(); // seta o c�digo no filtro filtroCobrancaAcaoAtividadeCronograma.adicionarParametro(new ParametroSimples(FiltroCobrancaAcaoAtividadeCronograma.ID, idsAtividadesCobrancaCronograma[i])); // carrega os objetos da pesquisa filtroCobrancaAcaoAtividadeCronograma.adicionarCaminhoParaCarregamentoEntidade("cobrancaAcaoCronograma.cobrancaAcao"); // Carrega a a��o precedente filtroCobrancaAcaoAtividadeCronograma .adicionarCaminhoParaCarregamentoEntidade("cobrancaAcaoCronograma.cobrancaAcao.cobrancaAcaoPredecessora.servicoTipo"); filtroCobrancaAcaoAtividadeCronograma .adicionarCaminhoParaCarregamentoEntidade("cobrancaAcaoCronograma.cobrancaAcao.servicoTipo"); filtroCobrancaAcaoAtividadeCronograma .adicionarCaminhoParaCarregamentoEntidade("cobrancaAcaoCronograma.cobrancaGrupoCronogramaMes.cobrancaGrupo"); filtroCobrancaAcaoAtividadeCronograma.adicionarCaminhoParaCarregamentoEntidade("cobrancaAtividade"); // pesquisa a atividade de a��o do cronograma no sistema Collection atividadesCobrancaCronograma = getControladorUtil().pesquisar(filtroCobrancaAcaoAtividadeCronograma, CobrancaAcaoAtividadeCronograma.class.getName()); // recupera oobjeto CobrancaAcaoAtividadeCronograma da cole��o CobrancaAcaoAtividadeCronograma cobrancaAcaoAtividadeCronograma = (CobrancaAcaoAtividadeCronograma) Util .retonarObjetoDeColecao(atividadesCobrancaCronograma); // repera o grupo de cobran�a CobrancaGrupo grupoCobranca = cobrancaAcaoAtividadeCronograma.getCobrancaAcaoCronograma().getCobrancaGrupoCronogramaMes() .getCobrancaGrupo(); // recupera o ano/m�s de refer�ncia do ciclo de cobran�a int anoMesReferenciaCicloCobranca = cobrancaAcaoAtividadeCronograma.getCobrancaAcaoCronograma() .getCobrancaGrupoCronogramaMes().getAnoMesReferencia(); // recupera o c�digo da atividade Integer atividade = cobrancaAcaoAtividadeCronograma.getCobrancaAtividade().getId(); // seta o c�digo do grupo de cobran�a no filtro de rota filtroRota.adicionarParametro(new ParametroSimples(FiltroRota.COBRANCA_GRUPO_ID, grupoCobranca.getId())); // carrega os objetos necess�rios de rota // filtroRota.adicionarCaminhoParaCarregamentoEntidade("cobrancaCriterio"); // pesqusia a cole��o de rotas colecaoRotas = getControladorUtil().pesquisar(filtroRota, Rota.class.getName()); // se a atividade for "simular" ou "emitir" if (atividade.intValue() == CobrancaAtividade.SIMULAR || atividade.intValue() == CobrancaAtividade.EMITIR) { // chama o met�do de gerar atividade de a��o de cobran�a // o met�do vai retornar um objeto // GerarAtividadeAcaoCobrancaHelper contendo // a quantidade de documentos, a quantidade de itens // cobrados e o valor dos documentos GerarAtividadeAcaoCobrancaHelper gerarAtividadeAcaoCobrancaHelper = this .gerarAtividadeAcaoCobranca(grupoCobranca, anoMesReferenciaCicloCobranca, cobrancaAcaoAtividadeCronograma, null, colecaoRotas, cobrancaAcaoAtividadeCronograma.getCobrancaAcaoCronograma().getCobrancaAcao(), cobrancaAcaoAtividadeCronograma.getCobrancaAtividade(), indicadorCriterioRota, null, null, null, anoMesReferenciaInicial, anoMesReferenciaFinal, dataVencimentoInicial, dataVencimentoFinal, new Date(), 1, null); // Soma os valores atuais mais os valores calculados Integer quantidadeDocumentosAtual = cobrancaAcaoAtividadeCronograma.getQuantidadeDocumentos(); Integer quantidadeItensCobradosAtual = cobrancaAcaoAtividadeCronograma.getQuantidadeDocumentos(); BigDecimal valorDocumentoAtual = cobrancaAcaoAtividadeCronograma.getValorDocumentos(); if (quantidadeDocumentosAtual == null) { quantidadeDocumentosAtual = new Integer(0); } if (quantidadeItensCobradosAtual == null) { quantidadeItensCobradosAtual = new Integer(0); } if (valorDocumentoAtual == null) { valorDocumentoAtual = new BigDecimal("0.00"); } cobrancaAcaoAtividadeCronograma.setQuantidadeDocumentos(quantidadeDocumentosAtual + gerarAtividadeAcaoCobrancaHelper.getQuantidadeDocumentosCobranca()); cobrancaAcaoAtividadeCronograma.setQuantidadeItensCobrados(quantidadeItensCobradosAtual + gerarAtividadeAcaoCobrancaHelper.getQuantidadeItensCobradosDocumentos()); cobrancaAcaoAtividadeCronograma.setValorDocumentos(valorDocumentoAtual.add(gerarAtividadeAcaoCobrancaHelper .getValorDocumentosCobranca())); cobrancaAcaoAtividadeCronograma.setRealizacao(dataCorrente); getControladorUtil().atualizar(cobrancaAcaoAtividadeCronograma); // se a atividade for encerrar atividade de a��o de cobran�a } else if (atividade == CobrancaAtividade.ENCERRAR) { // CHAMAR O [UC0000] Encerrar Atividade de A��o de Cobran�a // O caso de uso ainda n�o foi especificado dia:06/02/2006 } } } /* * Executa as atividades de cobran�a eventuais que foram previamente * comandas * ============================================================== * =========== */ // se o usu�rio selecionou alguma atividade de cobran�a eventual if (idsAtividadesCobrancaEventuais != null) { // la�o para executar as atividades de cobran�a eventuais for (int i = 0; idsAtividadesCobrancaEventuais.length > i; i++) { // cria o filtro de cobran�a a��o atividade comando FiltroCobrancaAcaoAtividadeComando filtroCobrancaAcaoAtividadeComando = new FiltroCobrancaAcaoAtividadeComando(); // adiciona o c�digo da atividade de cobran�a eventual no filtro filtroCobrancaAcaoAtividadeComando.adicionarParametro(new ParametroSimples(FiltroCobrancaAcaoAtividadeComando.ID, idsAtividadesCobrancaEventuais[i])); // carrega os objetos da pesquisa filtroCobrancaAcaoAtividadeComando.adicionarCaminhoParaCarregamentoEntidade("cobrancaGrupo"); filtroCobrancaAcaoAtividadeComando.adicionarCaminhoParaCarregamentoEntidade("cobrancaAtividade"); filtroCobrancaAcaoAtividadeComando.adicionarCaminhoParaCarregamentoEntidade("cobrancaAcao"); // Carrega a a��o precedente filtroCobrancaAcaoAtividadeComando .adicionarCaminhoParaCarregamentoEntidade("cobrancaAcao.cobrancaAcaoPredecessora.servicoTipo"); filtroCobrancaAcaoAtividadeComando.adicionarCaminhoParaCarregamentoEntidade("cobrancaAcao.servicoTipo"); filtroCobrancaAcaoAtividadeComando.adicionarCaminhoParaCarregamentoEntidade("cobrancaAcao.documentoTipo"); filtroCobrancaAcaoAtividadeComando.adicionarCaminhoParaCarregamentoEntidade("cobrancaCriterio"); filtroCobrancaAcaoAtividadeComando.adicionarCaminhoParaCarregamentoEntidade("cobrancaCriterio.criteriosSituacaoCobranca"); filtroCobrancaAcaoAtividadeComando .adicionarCaminhoParaCarregamentoEntidade("cobrancaCriterio.criteriosSituacaoLigacaoAgua"); filtroCobrancaAcaoAtividadeComando .adicionarCaminhoParaCarregamentoEntidade("cobrancaCriterio.criteriosSituacaoLigacaoEsgoto"); // pesquisa a atividade de cobran�a de comando no sistema Collection atividadesCobrancaComando = getControladorUtil().pesquisar(filtroCobrancaAcaoAtividadeComando, CobrancaAcaoAtividadeComando.class.getName()); // recupera o objeto CobrancaAcaoAtividadeComando da cole��o CobrancaAcaoAtividadeComando cobrancaAcaoAtividadeComando = (CobrancaAcaoAtividadeComando) Util .retonarObjetoDeColecao(atividadesCobrancaComando); // recupera o grupo de cobran�a CobrancaGrupo grupoCobranca = cobrancaAcaoAtividadeComando.getCobrancaGrupo(); // recupera o c�digo da atividade Integer atividade = cobrancaAcaoAtividadeComando.getCobrancaAtividade().getId(); Integer indicadorCriterio = null; if (cobrancaAcaoAtividadeComando.getIndicadorCriterio() != null) { indicadorCriterio = cobrancaAcaoAtividadeComando.getIndicadorCriterio().intValue(); } // pesquisa a cole��o de rotas colecaoRotas = this.pesquisarListaRotasComando(grupoCobranca, cobrancaAcaoAtividadeComando); // se a atividade for "simular" ou "emitir" if (atividade.intValue() == CobrancaAtividade.SIMULAR || atividade.intValue() == CobrancaAtividade.EMITIR) { // chama o met�do de gerar atividade de a��o de cobran�a // o met�do vai retornar um objeto // GerarAtividadeAcaoCobrancaHelper contendo // a quantidade de documentos, a quantidade de itens // cobrados e o valor dos documentos GerarAtividadeAcaoCobrancaHelper gerarAtividadeAcaoCobrancaHelper = this.gerarAtividadeAcaoCobranca(grupoCobranca, anoMesFaturamentoCorrente, null, cobrancaAcaoAtividadeComando, colecaoRotas, cobrancaAcaoAtividadeComando .getCobrancaAcao(), cobrancaAcaoAtividadeComando.getCobrancaAtividade(), indicadorCriterio, cobrancaAcaoAtividadeComando.getCobrancaCriterio(), cobrancaAcaoAtividadeComando.getCliente(), cobrancaAcaoAtividadeComando.getClienteRelacaoTipo(), cobrancaAcaoAtividadeComando .getAnoMesReferenciaContaInicial().toString(), cobrancaAcaoAtividadeComando .getAnoMesReferenciaContaFinal().toString(), cobrancaAcaoAtividadeComando .getDataVencimentoContaInicial(), cobrancaAcaoAtividadeComando.getDataVencimentoContaFinal(), new Date(), 1, null); // Soma os valores atuais mais os valores calculados // Recupera Integer quantidadeDocumentosAtual = cobrancaAcaoAtividadeComando.getQuantidadeDocumentos(); Integer quantidadeItensCobradosAtual = cobrancaAcaoAtividadeComando.getQuantidadeDocumentos(); BigDecimal valorDocumentoAtual = cobrancaAcaoAtividadeComando.getValorDocumentos(); if (quantidadeDocumentosAtual == null) { quantidadeDocumentosAtual = new Integer(0); } if (quantidadeItensCobradosAtual == null) { quantidadeItensCobradosAtual = new Integer(0); } if (valorDocumentoAtual == null) { valorDocumentoAtual = new BigDecimal("0.00"); } cobrancaAcaoAtividadeComando.setQuantidadeDocumentos(quantidadeDocumentosAtual + gerarAtividadeAcaoCobrancaHelper.getQuantidadeDocumentosCobranca()); cobrancaAcaoAtividadeComando.setQuantidadeItensCobrados(quantidadeItensCobradosAtual + gerarAtividadeAcaoCobrancaHelper.getQuantidadeItensCobradosDocumentos()); cobrancaAcaoAtividadeComando.setValorDocumentos(valorDocumentoAtual.add(gerarAtividadeAcaoCobrancaHelper .getValorDocumentosCobranca())); cobrancaAcaoAtividadeComando.setRealizacao(dataCorrente); getControladorUtil().atualizar(cobrancaAcaoAtividadeComando); // se a atividade for encerrar atividade de a��o de cobran�a } else if (atividade == CobrancaAtividade.ENCERRAR) { // CHAMAR O [UC0000] Encerrar Atividade de A��o de Cobran�a // O caso de uso ainda n�o foi especificado dia:06/02/2006 } } } } /** * [UC0251] Gerar Atividade de A��o de Cobran�a * * @author Pedro Alexandre, Ivan Sergio, Raphael Rossiter * @date 01/02/2006, 18/05/2009, 20/07/2009 * * @param grupoCobranca * @param anoMesReferenciaCicloCobranca * @param cobrancaAcaoAtividadeCronograma * @param cobrancaAcaoAtividadeComando * @param rotas * @param acaoCobranca * @param atividadeCobranca * @param indicadorCriterio * @param criterioCobranca * @param cliente * @param relacaoClienteImovel * @param anoMesReferenciaInicial * @param anoMesReferenciaFinal * @param dataVencimentoInicial * @param dataVencimentoFinal * @param dataAtual * @param idFuncionalidadeIniciada * @param clienteSuperior * @return GerarAtividadeAcaoCobrancaHelper * @throws ControladorException */ public GerarAtividadeAcaoCobrancaHelper gerarAtividadeAcaoCobranca(CobrancaGrupo grupoCobranca, int anoMesReferenciaCicloCobranca, CobrancaAcaoAtividadeCronograma cobrancaAcaoAtividadeCronograma, CobrancaAcaoAtividadeComando cobrancaAcaoAtividadeComando, Collection<Rota> rotas, CobrancaAcao acaoCobranca, CobrancaAtividade atividadeCobranca, Integer indicadorCriterio, CobrancaCriterio criterioCobranca, Cliente cliente, ClienteRelacaoTipo relacaoClienteImovel, String anoMesReferenciaInicial, String anoMesReferenciaFinal, Date dataVencimentoInicial, Date dataVencimentoFinal, Date dataAtual, int idFuncionalidadeIniciada, Cliente clienteSuperior) throws ControladorException { int idUnidadeIniciada = 0; System.out.println("*********************************"); System.out.println("INICIO DO GERAR ACAO DE COBRANCA"); System.out.println("*********************************"); // ------------------------- // // Registrar o in�cio do processamento da Unidade de // Processamento // do Batch // // ------------------------- if (cobrancaAcaoAtividadeComando != null) { idUnidadeIniciada = getControladorBatch().iniciarUnidadeProcessamentoBatch(idFuncionalidadeIniciada, UnidadeProcessamento.COB_ACAO_ATIV_COMAND, cobrancaAcaoAtividadeComando.getId()); } else { idUnidadeIniciada = getControladorBatch().iniciarUnidadeProcessamentoBatch(idFuncionalidadeIniciada, UnidadeProcessamento.COB_ACAO_ATIV_CRONOG, cobrancaAcaoAtividadeCronograma.getId()); } try { Date dataCorrente = new Date(); // cria o objeto que vai armazenar o dados da atividade de a��o de // cobran�a GerarAtividadeAcaoCobrancaHelper gerarAtividadeAcaoCobrancaHelper = null; // cria uma vari�vel que vai armazenar uma cole��o de // CobrancaCriterioLinha // CobrancaCriterio cobrancaCriterioComando = null; Collection<CobrancaCriterioLinha> colecaoCobrancaCriterioLinhaComando = null; // se o indicador do crit�rio for igual a 2(dois) - "usa o crit�rio // do // comando" if (indicadorCriterio.intValue() == 2) { /* * try { cobrancaCriterioComando = this.repositorioCobranca * .pesquisarCobrancaCriterioIdCriterio(criterioCobranca * .getId()); } catch (ErroRepositorioException ex) { * ex.printStackTrace(); throw new * ControladorException("erro.sistema", ex); } */ try { colecaoCobrancaCriterioLinhaComando = repositorioCobranca.pesquisarCobrancaCriterioLinhaCriterio(criterioCobranca .getId()); } catch (ErroRepositorioException ex) { ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } } if (colecaoCobrancaCriterioLinhaComando != null) { System.out.println("*********************************"); System.out.println("QTD DE COBRANCA CRITERIO LINHA:" + colecaoCobrancaCriterioLinhaComando.size()); System.out.println("*********************************"); } // se o cliente for informado if (cliente != null || clienteSuperior != null) { // [SB0001] - Gerar Atividade de A��o de Cobran�a para os // Im�veis do // Cliente System.out.println("*********************************"); System.out.println("INICIO gerarAtividadeAcaoCobrancaParaImoveisCliente:"); System.out.println("*********************************"); gerarAtividadeAcaoCobrancaHelper = this.gerarAtividadeAcaoCobrancaParaImoveisCliente(cobrancaAcaoAtividadeCronograma, cobrancaAcaoAtividadeComando, cliente, relacaoClienteImovel, indicadorCriterio, acaoCobranca, atividadeCobranca, colecaoCobrancaCriterioLinhaComando, criterioCobranca, anoMesReferenciaInicial, anoMesReferenciaFinal, dataVencimentoInicial, dataVencimentoFinal, dataAtual, clienteSuperior, null); System.out.println("*********************************"); System.out.println("FIM gerarAtividadeAcaoCobrancaParaImoveisCliente:"); System.out.println("*********************************"); } else if (cobrancaAcaoAtividadeComando != null && cobrancaAcaoAtividadeComando.getLogradouro() != null) { // Gerar Atividade de A��o de Cobran�a para os // Im�veis do // Logradouro System.out.println("*********************************"); System.out.println("INICIO gerarAtividadeAcaoCobrancaParaImoveisLogradouro:"); System.out.println("*********************************"); gerarAtividadeAcaoCobrancaHelper = this.gerarAtividadeAcaoCobrancaParaImoveisLogradouro(cobrancaAcaoAtividadeCronograma, cobrancaAcaoAtividadeComando, cliente, relacaoClienteImovel, indicadorCriterio, acaoCobranca, atividadeCobranca, colecaoCobrancaCriterioLinhaComando, criterioCobranca, anoMesReferenciaInicial, anoMesReferenciaFinal, dataVencimentoInicial, dataVencimentoFinal, dataAtual, clienteSuperior, null); System.out.println("*********************************"); System.out.println("FIM gerarAtividadeAcaoCobrancaParaImoveisLogradouro:"); System.out.println("*********************************"); } else { // [SB0002] - Gerar Atividade de A��o de Cobran�a para os // im�veis da // Lista de Rotas System.out.println("*********************************"); System.out.println("INICIO gerarAtividadeAcaoCobrancaParaImoveisListaRotas:"); System.out.println("*********************************"); gerarAtividadeAcaoCobrancaHelper = this.gerarAtividadeAcaoCobrancaParaImoveisListaRotasAntigo( cobrancaAcaoAtividadeCronograma, cobrancaAcaoAtividadeComando, rotas, indicadorCriterio, acaoCobranca, atividadeCobranca, colecaoCobrancaCriterioLinhaComando, criterioCobranca, anoMesReferenciaInicial, anoMesReferenciaFinal, dataVencimentoInicial, dataVencimentoFinal, dataAtual); System.out.println("*********************************"); System.out.println("FIM gerarAtividadeAcaoCobrancaParaImoveisListaRotas:"); System.out.println("*********************************"); } // [SB0006] - Remover documentos de cobran�a excedentes // Alterado por Francisco / Ana Breda em 14/04/09 // Foi solicitada uma meta de quantidade de documentos a serem // gerados // al�m dessa meta, s� dever�o permanecer documentos com valores // acima // do valor limite definido na tabela de ciclometa boolean houveRemocaoDocumentos = removerDocumentosCobrancaExcedentes(grupoCobranca, anoMesReferenciaCicloCobranca, cobrancaAcaoAtividadeCronograma, cobrancaAcaoAtividadeComando, acaoCobranca, null); /** * Item 6 * *********************************************************** * *********************** */ Integer quantidadeDocumentosAtual = null; Integer quantidadeItensCobradosAtual = null; BigDecimal valorDocumentoAtual = null; /** * Item 6.1 * ********************************************************* * ********************** */ if (cobrancaAcaoAtividadeCronograma != null && cobrancaAcaoAtividadeCronograma.getId() != null) { // Alterado por Francisco, em 30/07/09 // Caso a acao de cobranca use metas, os documentos gerados // podem ter sido reduzidos // para contemplar as metas, dai, os totais de quantidade de // documento, valor total realizado, e quantidade // de itens dever� ser calculados neste momento, apos a execucao // do procedimento de removerDocumentosCobrancaExcedentes if (houveRemocaoDocumentos) { Object[] totais = repositorioCobranca.calcularTotaisCronogramaAcaoCobranca(cobrancaAcaoAtividadeCronograma.getId()); quantidadeItensCobradosAtual = (Integer) totais[0]; valorDocumentoAtual = (BigDecimal) totais[1]; quantidadeDocumentosAtual = (Integer) totais[2]; cobrancaAcaoAtividadeCronograma.setQuantidadeDocumentos(quantidadeDocumentosAtual); cobrancaAcaoAtividadeCronograma.setQuantidadeItensCobrados(quantidadeItensCobradosAtual); cobrancaAcaoAtividadeCronograma.setValorDocumentos(valorDocumentoAtual); } else { quantidadeDocumentosAtual = cobrancaAcaoAtividadeCronograma.getQuantidadeDocumentos(); quantidadeItensCobradosAtual = cobrancaAcaoAtividadeCronograma.getQuantidadeDocumentos(); valorDocumentoAtual = cobrancaAcaoAtividadeCronograma.getValorDocumentos(); if (quantidadeDocumentosAtual == null) { quantidadeDocumentosAtual = new Integer(0); } if (quantidadeItensCobradosAtual == null) { quantidadeItensCobradosAtual = new Integer(0); } if (valorDocumentoAtual == null) { valorDocumentoAtual = new BigDecimal("0.00"); } cobrancaAcaoAtividadeCronograma.setQuantidadeDocumentos(quantidadeDocumentosAtual + gerarAtividadeAcaoCobrancaHelper.getQuantidadeDocumentosCobranca()); cobrancaAcaoAtividadeCronograma.setQuantidadeItensCobrados(quantidadeItensCobradosAtual + gerarAtividadeAcaoCobrancaHelper.getQuantidadeItensCobradosDocumentos()); cobrancaAcaoAtividadeCronograma.setValorDocumentos(valorDocumentoAtual.add(gerarAtividadeAcaoCobrancaHelper .getValorDocumentosCobranca())); } cobrancaAcaoAtividadeCronograma.setRealizacao(dataCorrente); cobrancaAcaoAtividadeCronograma.setUltimaAlteracao(dataCorrente); getControladorUtil().atualizar(cobrancaAcaoAtividadeCronograma); /** * Item 6.2 - alterado por pedro alexandre dia 16/11/2006 * ********************************** */ } else if (cobrancaAcaoAtividadeComando != null && cobrancaAcaoAtividadeComando.getId() != null) { quantidadeDocumentosAtual = cobrancaAcaoAtividadeComando.getQuantidadeDocumentos(); quantidadeItensCobradosAtual = cobrancaAcaoAtividadeComando.getQuantidadeDocumentos(); valorDocumentoAtual = cobrancaAcaoAtividadeComando.getValorDocumentos(); if (quantidadeDocumentosAtual == null) { quantidadeDocumentosAtual = new Integer(0); } if (quantidadeItensCobradosAtual == null) { quantidadeItensCobradosAtual = new Integer(0); } if (valorDocumentoAtual == null) { valorDocumentoAtual = new BigDecimal("0.00"); } // caso a quantidade de dias de realiza��o seja diferente de // nulo if (cobrancaAcaoAtividadeComando.getQuantidadeDiasRealizacao() != null) { // caso a atividade seja diferente de nulo if (cobrancaAcaoAtividadeComando.getCobrancaAtividade() != null) { // caso a atividade seja EMITIR, ent�o a data de // encerramento prevista recebe soma a data de // realiza��o com a quantidade de dias de realiza��o if (cobrancaAcaoAtividadeComando.getCobrancaAtividade().getId().equals(CobrancaAtividade.EMITIR)) { Date dataEncerramentoPrevista = Util.adicionarNumeroDiasDeUmaData(dataCorrente, cobrancaAcaoAtividadeComando.getQuantidadeDiasRealizacao()); cobrancaAcaoAtividadeComando.setDataEncerramentoPrevista(dataEncerramentoPrevista); } } } if (cobrancaAcaoAtividadeComando.getCobrancaAtividade().getId().equals(CobrancaAtividade.SIMULAR)) { cobrancaAcaoAtividadeComando.setDataEncerramentoPrevista(dataCorrente); cobrancaAcaoAtividadeComando.setDataEncerramentoRealizada(dataCorrente); } cobrancaAcaoAtividadeComando.setQuantidadeDocumentos(quantidadeDocumentosAtual + gerarAtividadeAcaoCobrancaHelper.getQuantidadeDocumentosCobranca()); cobrancaAcaoAtividadeComando.setQuantidadeItensCobrados(quantidadeItensCobradosAtual + gerarAtividadeAcaoCobrancaHelper.getQuantidadeItensCobradosDocumentos()); cobrancaAcaoAtividadeComando.setValorDocumentos(valorDocumentoAtual.add(gerarAtividadeAcaoCobrancaHelper .getValorDocumentosCobranca())); cobrancaAcaoAtividadeComando.setRealizacao(dataCorrente); cobrancaAcaoAtividadeComando.setUltimaAlteracao(dataCorrente); getControladorUtil().atualizar(cobrancaAcaoAtividadeComando); gerarAtividadeAcaoCobrancaHelper = null; } /** * Fim Item 6 * ******************************************************* * *************************** */ System.out.println("**************************"); System.out.println("FIM GERAR ACAO DE COBRANCA"); System.out.println("**************************"); // 7. O sistema emite os documento de cobran�a gerados if (acaoCobranca.getId() != null) { EmissaoDocumentoCobrancaHelper helper = new EmissaoDocumentoCobrancaHelper(); helper.setAcaoCobranca(acaoCobranca); helper.setCobrancaAcaoAtividadeCronograma(cobrancaAcaoAtividadeCronograma); helper.setCobrancaAcaoAtividadeComando(cobrancaAcaoAtividadeComando); helper.setDataAtual(dataAtual); helper.setGrupoCobranca(grupoCobranca); helper.setCriterioCobranca(criterioCobranca); this.gerarAtividadeAcaoCobrancaEmissaoDocumento(helper); } // retornar um objeto que vai conter a quantidade de documentos de // cobran�a, a quantidade de itens cobradosnos documentos // de cobran�a e o valor dos documentos de cobran�a // -------------------------------------------------------- // // Registrar o fim da execu��o da Unidade de Processamento // // -------------------------------------------------------- getControladorBatch().encerrarUnidadeProcessamentoBatch(null, idUnidadeIniciada, false); // return gerarAtividadeAcaoCobrancaHelper; return null; } catch (Throwable e) { // Este catch serve para interceptar qualquer exce��o que o processo // batch venha a lan�ar e garantir que a unidade de processamento do // batch ser� atualizada com o erro ocorrido e.printStackTrace(); getControladorBatch().encerrarUnidadeProcessamentoBatch(e, idUnidadeIniciada, true); throw new ControladorException("erro.sistema", e); } } /** * [UC0251] Gerar Atividade de A��o de Cobran�a [SB0001] Gerar Atividade de * A��o de Cobran�a para os Im�veis do Cliente */ public GerarAtividadeAcaoCobrancaHelper gerarAtividadeAcaoCobrancaParaImoveisCliente( CobrancaAcaoAtividadeCronograma cobrancaAcaoAtividadeCronograma, CobrancaAcaoAtividadeComando cobrancaAcaoAtividadeComando, Cliente cliente, ClienteRelacaoTipo relacaoClienteImovel, Integer indicadorCriterio, CobrancaAcao acaoCobranca, CobrancaAtividade atividadeCobranca, Collection<CobrancaCriterioLinha> colecaoCobrancaCriterioLinhaComando, CobrancaCriterio cobrancaCriterioComando, String anoMesReferenciaInicial, String anoMesReferenciaFinal, Date dataVencimentoInicial, Date dataVencimentoFinal, Date dataAtual, Cliente clienteSuperior, Integer idCobrancaDocumentoControleGeracao) throws ControladorException { GerarAtividadeAcaoCobrancaHelper gerarAtividadeAcaoCobrancaHelper = new GerarAtividadeAcaoCobrancaHelper(); gerarAtividadeAcaoCobrancaHelper.setQuantidadeDocumentosCobranca(0); gerarAtividadeAcaoCobrancaHelper.setQuantidadeItensCobradosDocumentos(0); gerarAtividadeAcaoCobrancaHelper.setValorDocumentosCobranca(new BigDecimal("0.00")); CobrancaCriterio cobrancaCriterio = null; Collection<CobrancaCriterioLinha> colecaoCobrancaCriterioLinha = new ArrayList(); if (indicadorCriterio.intValue() != 1) { colecaoCobrancaCriterioLinha = colecaoCobrancaCriterioLinhaComando; cobrancaCriterio = cobrancaCriterioComando; } boolean flagTerminou = false; int numeroInicial = 0; while (!flagTerminou) { Object[] arrayImovel = null; Imovel imovel = null; Collection colecaoImoveis = null; Rota rota = null; if (clienteSuperior != null) { Collection<Integer> colecaoIdsClientes = getControladorCadastro().pesquisarClientesSubordinados(clienteSuperior.getId()); if (colecaoIdsClientes != null && !colecaoIdsClientes.isEmpty()) { colecaoIdsClientes.add(clienteSuperior.getId()); colecaoImoveis = getControladorImovel().pesquisarImoveisClientesRelacao(colecaoIdsClientes, numeroInicial); } else { colecaoIdsClientes = new ArrayList(); colecaoIdsClientes.add(clienteSuperior.getId()); colecaoImoveis = getControladorImovel().pesquisarImoveisClientesRelacao(colecaoIdsClientes, numeroInicial); } } else { colecaoImoveis = getControladorImovel().pesquisarImoveisClientesRelacao(cliente, relacaoClienteImovel, numeroInicial); colecaoImoveis = this.verificarClienteResponsavelImovel(colecaoImoveis, cliente); } if (colecaoImoveis != null && !colecaoImoveis.isEmpty()) { if (colecaoImoveis.size() < 500) { flagTerminou = true; } Iterator iteratorColecaoImoveis = colecaoImoveis.iterator(); LigacaoAguaSituacao ligacaoAguaSituacao = null; LigacaoEsgotoSituacao ligacaoEsgotoSituacao = null; ImovelPerfil imovelPerfil = null; Empresa empresa = null; Quadra quadra = null; Localidade localidade = null; SetorComercial setorComercial = null; CobrancaSituacaoTipo cobrancaSituacaoTipo = null; labelRotasClientes: while (iteratorColecaoImoveis.hasNext()) { arrayImovel = (Object[]) iteratorColecaoImoveis.next(); imovel = new Imovel(); rota = new Rota(); ligacaoAguaSituacao = new LigacaoAguaSituacao(); ligacaoEsgotoSituacao = new LigacaoEsgotoSituacao(); imovelPerfil = new ImovelPerfil(); empresa = new Empresa(); quadra = new Quadra(); localidade = new Localidade(); setorComercial = new SetorComercial(); if (arrayImovel[0] != null) { imovel.setId((Integer) arrayImovel[0]); } if (arrayImovel[1] != null) { rota.setId((Integer) arrayImovel[1]); } if (arrayImovel[2] != null) { ligacaoAguaSituacao.setId((Integer) arrayImovel[2]); } if (arrayImovel[3] != null) { ligacaoEsgotoSituacao.setId((Integer) arrayImovel[3]); } if (arrayImovel[4] != null) { imovelPerfil.setId((Integer) arrayImovel[4]); } if (acaoCobranca.getServicoTipo() != null && acaoCobranca.getServicoTipo().getId() != null) { if (arrayImovel[14] != null) { empresa.setId((Integer) arrayImovel[14]); } } else { if (arrayImovel[5] != null) { empresa.setId((Integer) arrayImovel[5]); } } if (arrayImovel[6] != null) { localidade.setId((Integer) arrayImovel[6]); } if (arrayImovel[7] != null) { setorComercial.setCodigo(((Integer) arrayImovel[7]).intValue()); } if (arrayImovel[8] != null) { quadra.setNumeroQuadra(((Integer) arrayImovel[8]).intValue()); } if (arrayImovel[9] != null) { imovel.setLote(((Short) arrayImovel[9]).shortValue()); } if (arrayImovel[10] != null) { imovel.setLote(((Short) arrayImovel[10]).shortValue()); } if (arrayImovel[11] != null) { quadra.setId(((Integer) arrayImovel[11]).intValue()); } if (arrayImovel[12] != null) { cobrancaSituacaoTipo = new CobrancaSituacaoTipo(); cobrancaSituacaoTipo.setId(((Integer) arrayImovel[12]).intValue()); } if (arrayImovel[13] != null) { imovel.setIndicadorDebitoConta((Short) arrayImovel[13]); } imovel.setLigacaoAguaSituacao(ligacaoAguaSituacao); imovel.setLigacaoEsgotoSituacao(ligacaoEsgotoSituacao); imovel.setImovelPerfil(imovelPerfil); rota.setEmpresa(empresa); quadra.setRota(rota); imovel.setQuadra(quadra); imovel.setLocalidade(localidade); imovel.setSetorComercial(setorComercial); imovel.setCobrancaSituacaoTipo(cobrancaSituacaoTipo); if (indicadorCriterio.intValue() == 1) { try { cobrancaCriterio = repositorioCobranca.pesquisarCriterioCobrancaRota(rota.getId(), acaoCobranca.getId()); colecaoCobrancaCriterioLinha = repositorioCobranca.pesquisarCobrancaCriterioLinhaCriterio(cobrancaCriterio.getId()); } catch (ErroRepositorioException ex) { throw new ControladorException("erro.sistema", ex); } } GerarAtividadeAcaoCobrancaHelper gerarAtividadeAcaoCobrancaHelperTemp = new GerarAtividadeAcaoCobrancaHelper(); gerarAtividadeAcaoCobrancaHelperTemp = gerarAtividadeAcaoCobrancaParaImovel(cobrancaAcaoAtividadeCronograma, cobrancaAcaoAtividadeComando, imovel, indicadorCriterio, acaoCobranca, atividadeCobranca, cobrancaCriterio, colecaoCobrancaCriterioLinha, anoMesReferenciaInicial, anoMesReferenciaFinal, dataVencimentoInicial, dataVencimentoFinal, dataAtual); if (gerarAtividadeAcaoCobrancaHelperTemp != null) { gerarAtividadeAcaoCobrancaHelper .setQuantidadeDocumentosCobranca(gerarAtividadeAcaoCobrancaHelper.getQuantidadeDocumentosCobranca() + 1); gerarAtividadeAcaoCobrancaHelper.setQuantidadeItensCobradosDocumentos(gerarAtividadeAcaoCobrancaHelper .getQuantidadeItensCobradosDocumentos() + gerarAtividadeAcaoCobrancaHelperTemp.getQuantidadeItensCobradosDocumentos()); gerarAtividadeAcaoCobrancaHelper.setValorDocumentosCobranca(gerarAtividadeAcaoCobrancaHelper.getValorDocumentosCobranca().add( gerarAtividadeAcaoCobrancaHelperTemp.getValorDocumentosCobranca())); gerarAtividadeAcaoCobrancaHelper.getColecaoDocumentosCobranca().addAll(gerarAtividadeAcaoCobrancaHelperTemp.getColecaoDocumentosCobranca()); // Caso seja um comando eventual e a quantidade de documentos gerados seja igual a quantidade m�xima de documentos especificada no comando // caso seja um comando de cronograma, verificar � foi preenchida a quantidade maxima de documentos a ser gerada if ((cobrancaAcaoAtividadeComando != null && cobrancaAcaoAtividadeComando.getQuantidadeMaximaDocumentos() != null && cobrancaAcaoAtividadeComando .getQuantidadeMaximaDocumentos().equals(gerarAtividadeAcaoCobrancaHelper.getQuantidadeDocumentosCobranca())) || (cobrancaAcaoAtividadeCronograma != null && cobrancaAcaoAtividadeCronograma.getQuantidadeMaximaDocumentos() != null && cobrancaAcaoAtividadeCronograma .getQuantidadeMaximaDocumentos().equals(gerarAtividadeAcaoCobrancaHelper.getQuantidadeDocumentosCobranca()))) { break labelRotasClientes; } } ligacaoAguaSituacao = null; ligacaoEsgotoSituacao = null; imovelPerfil = null; empresa = null; quadra = null; localidade = null; setorComercial = null; cobrancaSituacaoTipo = null; rota = null; imovel = null; } } else { flagTerminou = true; } numeroInicial = numeroInicial + 500; colecaoImoveis = null; } // atualizar a quantidade de documentos cobrados, a quantidade de itens cobrados e o valor total dos documentos na tabela cobranca_documento_controle_geracao this.atualizarCobrancaDocumentoControleGeracao(idCobrancaDocumentoControleGeracao, gerarAtividadeAcaoCobrancaHelper.getQuantidadeDocumentosCobranca(), gerarAtividadeAcaoCobrancaHelper.getQuantidadeItensCobradosDocumentos(), gerarAtividadeAcaoCobrancaHelper.getValorDocumentosCobranca()); return gerarAtividadeAcaoCobrancaHelper; } /** * [UC0251] Gerar Atividade de A��o de Cobran�a --- Gerar Atividade de A��o * de Cobran�a para os Im�veis do Logradouro * * @author Hugo Amorim * @created 11/11/2006 * * @param cobrancaAcaoAtividadeCronograma * Atividade de A��o de Cobran�a de Cronograma * @param cobrancaAcaoAtividadeComando * Atividade de A��o de Cobran�a de Comando * @param cliente * Cliente * @param relacaoClienteImovel * Tipo de rela��o entre cliente e im�vel * @param indicadorCriterio * Indicador do crit�rio a ser utilizado * @param acaoCobranca * A��o de Cobran�a * @param atividadeCobranca * Atividade de Cobran�a * @param colecaoCobrancaCriterioLinhaComando * Cole��o de linha de crit�rio de cobran�a do comando * @param cobrancaCriterioComando * Crit�rio de Cobran�a do Comando * @param anoMesReferenciaInicial * Ano/M�s de refer�ncia inicial * @param anoMesReferenciaFinal * Ano/M�s de refer�ncia final * @param dataVencimentoInicial * Data de vencimento inicial * @param dataVencimentoFinal * Data de vencimento final * * @throws ControladorException * Controlador Exception */ public GerarAtividadeAcaoCobrancaHelper gerarAtividadeAcaoCobrancaParaImoveisLogradouro( CobrancaAcaoAtividadeCronograma cobrancaAcaoAtividadeCronograma, CobrancaAcaoAtividadeComando cobrancaAcaoAtividadeComando, Cliente cliente, ClienteRelacaoTipo relacaoClienteImovel, Integer indicadorCriterio, CobrancaAcao acaoCobranca, CobrancaAtividade atividadeCobranca, Collection<CobrancaCriterioLinha> colecaoCobrancaCriterioLinhaComando, CobrancaCriterio cobrancaCriterioComando, String anoMesReferenciaInicial, String anoMesReferenciaFinal, Date dataVencimentoInicial, Date dataVencimentoFinal, Date dataAtual, Cliente clienteSuperior, Integer idCobrancaDocumentoControleGeracao) throws ControladorException { GerarAtividadeAcaoCobrancaHelper gerarAtividadeAcaoCobrancaHelper = new GerarAtividadeAcaoCobrancaHelper(); gerarAtividadeAcaoCobrancaHelper.setQuantidadeDocumentosCobranca(0); gerarAtividadeAcaoCobrancaHelper.setQuantidadeItensCobradosDocumentos(0); gerarAtividadeAcaoCobrancaHelper.setValorDocumentosCobranca(new BigDecimal("0.00")); CobrancaCriterio cobrancaCriterio = null; Collection<CobrancaCriterioLinha> colecaoCobrancaCriterioLinha = new ArrayList(); Imovel fluxoImovel = null; Collection colecaoImoveis = null; if (indicadorCriterio.intValue() != 1) { colecaoCobrancaCriterioLinha = colecaoCobrancaCriterioLinhaComando; cobrancaCriterio = cobrancaCriterioComando; } FiltroImovel filtroImovel = new FiltroImovel(); filtroImovel.adicionarParametro(new ParametroSimples(FiltroImovel.LOGRADOURO_ID, cobrancaAcaoAtividadeComando.getId())); filtroImovel.adicionarCaminhoParaCarregamentoEntidade("localidade"); filtroImovel.adicionarCaminhoParaCarregamentoEntidade("ligacaoAguaSituacao"); filtroImovel.adicionarCaminhoParaCarregamentoEntidade("ligacaoEsgotoSituacao"); filtroImovel.adicionarCaminhoParaCarregamentoEntidade("imovelPerfil"); filtroImovel.adicionarCaminhoParaCarregamentoEntidade("quadra"); filtroImovel.adicionarCaminhoParaCarregamentoEntidade("quadra.rota"); filtroImovel.adicionarCaminhoParaCarregamentoEntidade("quadra.rota.empresa"); filtroImovel.adicionarCaminhoParaCarregamentoEntidade("quadra.rota.empresaCobranca"); filtroImovel.adicionarCaminhoParaCarregamentoEntidade("localidade"); filtroImovel.adicionarCaminhoParaCarregamentoEntidade("setorComercial"); filtroImovel.adicionarCaminhoParaCarregamentoEntidade("cobrancaSituacaoTipo"); colecaoImoveis = this.getControladorUtil().pesquisar(filtroImovel, Imovel.class.getName()); if (colecaoImoveis != null && !colecaoImoveis.isEmpty()) { Iterator iteratorColecaoImoveis = colecaoImoveis.iterator(); labelRotasClientes: while (iteratorColecaoImoveis.hasNext()) { fluxoImovel = (Imovel) iteratorColecaoImoveis.next(); if (acaoCobranca.getServicoTipo() != null && acaoCobranca.getServicoTipo().getId() != null) { fluxoImovel.getQuadra().getRota().setEmpresa(null); } else { fluxoImovel.getQuadra().getRota().setEmpresaCobranca(null); } if (indicadorCriterio.intValue() == 1) { try { // O crit�rio de cobran�a a ser utilizado ser� o da rota cobrancaCriterio = repositorioCobranca.pesquisarCriterioCobrancaRota(fluxoImovel.getQuadra().getRota().getId(), acaoCobranca.getId()); colecaoCobrancaCriterioLinha = repositorioCobranca.pesquisarCobrancaCriterioLinhaCriterio(cobrancaCriterio.getId()); } catch (ErroRepositorioException ex) { throw new ControladorException("erro.sistema", ex); } } GerarAtividadeAcaoCobrancaHelper gerarAtividadeAcaoCobrancaHelperTemp = new GerarAtividadeAcaoCobrancaHelper(); gerarAtividadeAcaoCobrancaHelperTemp = gerarAtividadeAcaoCobrancaParaImovel(cobrancaAcaoAtividadeCronograma, cobrancaAcaoAtividadeComando, fluxoImovel, indicadorCriterio, acaoCobranca, atividadeCobranca, cobrancaCriterio, colecaoCobrancaCriterioLinha, anoMesReferenciaInicial, anoMesReferenciaFinal, dataVencimentoInicial, dataVencimentoFinal, dataAtual); if (gerarAtividadeAcaoCobrancaHelperTemp != null) { // recupera a quantidade de documentos de cobran�a, quantidade de itens cobrados e o valor do documento do objeto retornado pelo [SB0003] gerarAtividadeAcaoCobrancaHelper.setQuantidadeDocumentosCobranca(gerarAtividadeAcaoCobrancaHelper.getQuantidadeDocumentosCobranca() + 1); gerarAtividadeAcaoCobrancaHelper.setQuantidadeItensCobradosDocumentos(gerarAtividadeAcaoCobrancaHelper .getQuantidadeItensCobradosDocumentos() + gerarAtividadeAcaoCobrancaHelperTemp.getQuantidadeItensCobradosDocumentos()); gerarAtividadeAcaoCobrancaHelper.setValorDocumentosCobranca(gerarAtividadeAcaoCobrancaHelper.getValorDocumentosCobranca().add( gerarAtividadeAcaoCobrancaHelperTemp.getValorDocumentosCobranca())); gerarAtividadeAcaoCobrancaHelper.getColecaoDocumentosCobranca().addAll(gerarAtividadeAcaoCobrancaHelperTemp.getColecaoDocumentosCobranca()); // Caso seja um comando eventual e a quantidade de documentos gerados seja igual a quantidade m�xima de documentos especificada no comando // caso seja um comando de cronograma, verificar � foi preenchida a quantidade maxima de documentos a ser gerada if ((cobrancaAcaoAtividadeComando != null && cobrancaAcaoAtividadeComando.getQuantidadeMaximaDocumentos() != null && cobrancaAcaoAtividadeComando .getQuantidadeMaximaDocumentos().equals(gerarAtividadeAcaoCobrancaHelper.getQuantidadeDocumentosCobranca())) || (cobrancaAcaoAtividadeCronograma != null && cobrancaAcaoAtividadeCronograma.getQuantidadeMaximaDocumentos() != null && cobrancaAcaoAtividadeCronograma .getQuantidadeMaximaDocumentos().equals(gerarAtividadeAcaoCobrancaHelper.getQuantidadeDocumentosCobranca()))) { break labelRotasClientes; } } } } this.atualizarCobrancaDocumentoControleGeracao(idCobrancaDocumentoControleGeracao, gerarAtividadeAcaoCobrancaHelper.getQuantidadeDocumentosCobranca(), gerarAtividadeAcaoCobrancaHelper.getQuantidadeItensCobradosDocumentos(), gerarAtividadeAcaoCobrancaHelper.getValorDocumentosCobranca()); return gerarAtividadeAcaoCobrancaHelper; } /** * [UC0251] Gerar Atividade de A��o de Cobran�a [SB0002] Gerar Atividade de * A��o de Cobran�a para os Im�veis da Lista de Rotas * * @author Pedro Alexandre * @created 07/02/2006 * * @param cobrancaAcaoAtividadeCronograma * Atividade de A��o de Cobran�a de Cronograma * @param cobrancaAcaoAtividadeComando * Atividade de A��o de Cobran�a de Comando * @param colecaoRotas * Cole��o de rotas * @param indicadorCriterio * Indicador do crit�rio a ser utilizado * @param acaoCobranca * A��o de Cobran�a * @param atividadeCobranca * Atividade de Cobran�a * @param colecaoCobrancaCriterioLinhaComando * Cole��o de linha de crit�rio de cobran�a do comando * @param cobrancaCriterioComando * Crit�rio de Cobran�a do Comando * @param anoMesReferenciaInicial * Ano/M�s de refer�ncia inicial * @param anoMesReferenciaFinal * Ano/M�s de refer�ncia final * @param dataVencimentoInicial * Data de vencimento inicial * @param dataVencimentoFinal * Data de vencimento final * * @throws ControladorException * Controlador Exception */ public GerarAtividadeAcaoCobrancaHelper gerarAtividadeAcaoCobrancaParaImoveisListaRotasAntigo( CobrancaAcaoAtividadeCronograma cobrancaAcaoAtividadeCronograma, CobrancaAcaoAtividadeComando cobrancaAcaoAtividadeComando, Collection<Rota> colecaoRotas, Integer indicadorCriterio, CobrancaAcao acaoCobranca, CobrancaAtividade atividadeCobranca, Collection<CobrancaCriterioLinha> colecaoCobrancaCriterioLinhaComando, CobrancaCriterio cobrancaCriterioComando, String anoMesReferenciaInicial, String anoMesReferenciaFinal, Date dataVencimentoInicial, Date dataVencimentoFinal, Date dataAtual) throws ControladorException { // cria o objeto que vai armazenas os dados GerarAtividadeAcaoCobrancaHelper gerarAtividadeAcaoCobrancaHelper = new GerarAtividadeAcaoCobrancaHelper(); SistemaParametro sistemaParametro = getControladorUtil().pesquisarParametrosDoSistema(); // inicializa os valores de quantidade de documentos, quantidade de // itens cobrados e valor do documento de cobran�a gerarAtividadeAcaoCobrancaHelper.setQuantidadeDocumentosCobranca(0); gerarAtividadeAcaoCobrancaHelper.setQuantidadeItensCobradosDocumentos(0); gerarAtividadeAcaoCobrancaHelper.setValorDocumentosCobranca(new BigDecimal("0.00")); // cria a vari�vel que vai armazenar o crit�rio de cobran�a CobrancaCriterio cobrancaCriterio = null; // cria a vari�vel que vai armazenar a cole��o de linhas de crit�rio de // cobran�a Collection<CobrancaCriterioLinha> colecaoCobrancaCriterioLinha = new ArrayList(); Object[] arrayImovel = null; // item 1 // se a cole��o de rotas for nula ou estiver vazia if (colecaoRotas == null || colecaoRotas.isEmpty()) { if (acaoCobranca.getId() != null && acaoCobranca.getId().equals(CobrancaAcao.CORTE_ADMINISTRATIVO) && sistemaParametro.getCodigoEmpresaFebraban() != null && sistemaParametro.getCodigoEmpresaFebraban().equals(Empresa.EMPRESA_FEBRABAN_COMPESA)) { // Obt�m a cole��o de todas as rotas do sistema com // empresaCobranca igual a 1 colecaoRotas = getControladorMicromedicao().pesquisarListaRotasEspecificas(); } else { // Obt�m a cole��o de todas as rotas do sistema colecaoRotas = getControladorMicromedicao().pesquisarListaRotas(); } } // fim item 1 // item 2 // cria o objeto que vai armazenar temporariamente os dados retornados // pelo [SB0003], para cada im�vel GerarAtividadeAcaoCobrancaHelper gerarAtividadeAcaoCobrancaHelperTemp = new GerarAtividadeAcaoCobrancaHelper(); int quantidadeImoveis = 0; int indiceRotas = 1; // la�o para verificar todas as rotas labelRotas: for (Rota rota : colecaoRotas) { System.out.println("*************************"); System.out.println("Gerar Documento Cobranca.ROTA:" + rota.getId() + " - " + indiceRotas++ + "/" + colecaoRotas.size()); System.out.println("*************************"); // se o indicador do crit�rio for igual a 1(um) - "usa crit�rio da // rota" if (indicadorCriterio.intValue() == 1) { CobrancaCriterio cobrancaCriterioRota = null; try { cobrancaCriterioRota = repositorioCobranca.pesquisarCriterioCobrancaRota(rota.getId(), acaoCobranca.getId()); } catch (ErroRepositorioException ex) { // levanta a exce��o para a pr�xima camada throw new ControladorException("erro.sistema", ex); } try { // pesquisa a cole��o de linhas de crit�rio de cobran�a colecaoCobrancaCriterioLinha = repositorioCobranca.pesquisarCobrancaCriterioLinhaCriterio(cobrancaCriterioRota.getId()); } catch (ErroRepositorioException ex) { // levanta a exce��o para a pr�xima camada throw new ControladorException("erro.sistema", ex); } // o crit�rio de cobran�a utilizado vai ser o da rota cobrancaCriterio = cobrancaCriterioRota; // se o indicador do crit�rio for igual a 2(dois) - "usa o // crit�rio do comando" } else { // a cole��o de linha de crit�rio de cobran�a vai ser a do // comando colecaoCobrancaCriterioLinha = colecaoCobrancaCriterioLinhaComando; // o crit�rio de cobran�a utilizado vai ser o do comando cobrancaCriterio = cobrancaCriterioComando; } // Verificar as situacoes de ligacao de agua e esgoto validas para o // criterio ou acao de cobranca Collection idsSituacaoLigacaoAgua = new ArrayList(); Collection idsSituacaoLigacaoEsgoto = new ArrayList(); try { Collection colecaoSituacoesLigacaoAgua = repositorioCobranca.pesquisarCobrancaCriterioSituacaoLigacaoAgua(cobrancaCriterio .getId()); if (colecaoSituacoesLigacaoAgua != null && !colecaoSituacoesLigacaoAgua.isEmpty()) { for (Iterator iter = colecaoSituacoesLigacaoAgua.iterator(); iter.hasNext();) { CriterioSituacaoLigacaoAgua critSitLigAgua = (CriterioSituacaoLigacaoAgua) iter.next(); idsSituacaoLigacaoAgua.add(critSitLigAgua.getComp_id().getLigacaoAguaSituacao().getId()); } } else { if (acaoCobranca.getLigacaoAguaSituacao() != null) { idsSituacaoLigacaoAgua.add(acaoCobranca.getLigacaoAguaSituacao().getId()); } } Collection colecaoSituacoesLigacaoEsgoto = repositorioCobranca .pesquisarCobrancaCriterioSituacaoLigacaoEsgoto(cobrancaCriterio.getId()); if (colecaoSituacoesLigacaoEsgoto != null && !colecaoSituacoesLigacaoEsgoto.isEmpty()) { for (Iterator iter = colecaoSituacoesLigacaoEsgoto.iterator(); iter.hasNext();) { CriterioSituacaoLigacaoEsgoto critSitLigEsgoto = (CriterioSituacaoLigacaoEsgoto) iter.next(); idsSituacaoLigacaoEsgoto.add(critSitLigEsgoto.getComp_id().getLigacaoEsgotoSituacao().getId()); } } else { if (acaoCobranca.getLigacaoEsgotoSituacao() != null) { idsSituacaoLigacaoEsgoto.add(acaoCobranca.getLigacaoEsgotoSituacao().getId()); } } } catch (ErroRepositorioException e) { throw new ControladorException(e.getMessage()); } Imovel imovel = null; LigacaoAguaSituacao ligacaoAguaSituacao = null; LigacaoEsgotoSituacao ligacaoEsgotoSituacao = null; ImovelPerfil imovelPerfil = null; Empresa empresa = null; Quadra quadra = null; // Rota rotaEmpresa = null; Localidade localidade = null; SetorComercial setorComercial = null; CobrancaSituacaoTipo cobrancaSituacaoTipo = null; boolean flagTerminou = false; int numeroInicial = 0; while (!flagTerminou) { Collection colecaoImoveis = getControladorImovel().pesquisarImoveisPorRotaComPaginacao(rota, idsSituacaoLigacaoAgua, idsSituacaoLigacaoEsgoto, numeroInicial, 1000); System.out.println(" Gerar Doc Cob - Qtd Imoveis iniciais: " + colecaoImoveis.size()); if (colecaoImoveis != null && !colecaoImoveis.isEmpty()) { Iterator iteratorColecaoImoveis = colecaoImoveis.iterator(); if (colecaoImoveis.size() < 1000) { flagTerminou = true; } while (iteratorColecaoImoveis.hasNext()) { arrayImovel = (Object[]) iteratorColecaoImoveis.next(); quantidadeImoveis++; imovel = new Imovel(); ligacaoAguaSituacao = new LigacaoAguaSituacao(); ligacaoEsgotoSituacao = new LigacaoEsgotoSituacao(); imovelPerfil = new ImovelPerfil(); empresa = new Empresa(); quadra = new Quadra(); // rotaEmpresa = new Rota(); localidade = new Localidade(); setorComercial = new SetorComercial(); if (arrayImovel[0] != null) { imovel.setId((Integer) arrayImovel[0]); } if (arrayImovel[1] != null) { ligacaoAguaSituacao.setId((Integer) arrayImovel[1]); } if (arrayImovel[2] != null) { ligacaoEsgotoSituacao.setId((Integer) arrayImovel[2]); } if (arrayImovel[3] != null) { imovelPerfil.setId((Integer) arrayImovel[3]); } // caso a a��o de cobran�a gere a ordem de servi�o if (acaoCobranca.getServicoTipo() != null && acaoCobranca.getServicoTipo().getId() != null) { // seta a empresa cobranca if (arrayImovel[13] != null) { empresa.setId((Integer) arrayImovel[13]); } } else { // seta a empresa if (arrayImovel[4] != null) { empresa.setId((Integer) arrayImovel[4]); } } if (arrayImovel[5] != null) { localidade.setId((Integer) arrayImovel[5]); } if (arrayImovel[6] != null) { setorComercial.setCodigo(((Integer) arrayImovel[6]).intValue()); } if (arrayImovel[7] != null) { quadra.setNumeroQuadra(((Integer) arrayImovel[7]).intValue()); } if (arrayImovel[8] != null) { imovel.setLote(((Short) arrayImovel[8]).shortValue()); } if (arrayImovel[9] != null) { imovel.setLote(((Short) arrayImovel[9]).shortValue()); } if (arrayImovel[10] != null) { quadra.setId(((Integer) arrayImovel[10]).intValue()); } if (arrayImovel[11] != null) { cobrancaSituacaoTipo = new CobrancaSituacaoTipo(); cobrancaSituacaoTipo.setId(((Integer) arrayImovel[11]).intValue()); } if (arrayImovel[12] != null) { imovel.setIndicadorDebitoConta((Short) arrayImovel[12]); } imovel.setLigacaoAguaSituacao(ligacaoAguaSituacao); imovel.setLigacaoEsgotoSituacao(ligacaoEsgotoSituacao); imovel.setImovelPerfil(imovelPerfil); rota.setEmpresa(empresa); quadra.setRota(rota); imovel.setQuadra(quadra); imovel.setLocalidade(localidade); imovel.setSetorComercial(setorComercial); imovel.setCobrancaSituacaoTipo(cobrancaSituacaoTipo); // [SB0003] - Gerar Atividade de A��o de Cobran�a para o // im�vel gerarAtividadeAcaoCobrancaHelperTemp = gerarAtividadeAcaoCobrancaParaImovel(cobrancaAcaoAtividadeCronograma, cobrancaAcaoAtividadeComando, imovel, indicadorCriterio, acaoCobranca, atividadeCobranca, cobrancaCriterio, colecaoCobrancaCriterioLinha, anoMesReferenciaInicial, anoMesReferenciaFinal, dataVencimentoInicial, dataVencimentoFinal, dataAtual); // se o objeto for diferente de nulo if (gerarAtividadeAcaoCobrancaHelperTemp != null) { // recupera a quantidade de documentos de cobran�a, // quantidade de itens cobrados e o valor do // documento // do objeto retornado pelo [SB0003] gerarAtividadeAcaoCobrancaHelper.setQuantidadeDocumentosCobranca(gerarAtividadeAcaoCobrancaHelper .getQuantidadeDocumentosCobranca() + 1); gerarAtividadeAcaoCobrancaHelper.setQuantidadeItensCobradosDocumentos(gerarAtividadeAcaoCobrancaHelper .getQuantidadeItensCobradosDocumentos() + gerarAtividadeAcaoCobrancaHelperTemp.getQuantidadeItensCobradosDocumentos()); gerarAtividadeAcaoCobrancaHelper.setValorDocumentosCobranca(gerarAtividadeAcaoCobrancaHelper .getValorDocumentosCobranca().add(gerarAtividadeAcaoCobrancaHelperTemp.getValorDocumentosCobranca())); /** alterado por pedro alexandre dia 16/11/2006 */ gerarAtividadeAcaoCobrancaHelper.getColecaoDocumentosCobranca().addAll( gerarAtividadeAcaoCobrancaHelperTemp.getColecaoDocumentosCobranca()); // Caso seja um comando eventual e a quantidade de // documentos gerados seja igual a quantidade m�xima // de documentos especificada no comando // Alterado por Chico, 06/06/08, analista: Ana Breda // caso seja um comando de cronograma, verificar se // foi preenchida a quantidade // maxima de documentos a ser gerada /* * Alteracao feita por Chico, em 21/05/09, analista: * Ana Breda Caso o eventual tenha valor limite * obrigatorio preenchido ou a a��o de cobran�a * tenha indicador de uso de ordenamento igual a 1 * (SIM) ENTAO: nao devera ser considerada a * quantidade maxima de documentos nesta fase, * deixara ser gerado todos os documentos * normalmente e no final, ser� analisado os que * ficar�o. */ Integer quantidadeMaxima = null; boolean possuiValorLimiteEventual = false; boolean usaOrdenamento = false; if (cobrancaAcaoAtividadeComando != null) { quantidadeMaxima = cobrancaAcaoAtividadeComando.getQuantidadeMaximaDocumentos(); possuiValorLimiteEventual = (cobrancaAcaoAtividadeComando.getValorLimiteObrigatoria() != null); usaOrdenamento = acaoCobranca.getIndicadorOrdenamentoEventual() == null ? acaoCobranca .getIndicadorOrdenamentoEventual().intValue() == ConstantesSistema.SIM.intValue() : acaoCobranca .getIndicadorOrdenamentoEventual().intValue() == ConstantesSistema.SIM.intValue(); } else if (cobrancaAcaoAtividadeCronograma != null) { quantidadeMaxima = cobrancaAcaoAtividadeCronograma.getQuantidadeMaximaDocumentos(); usaOrdenamento = acaoCobranca.getIndicadorOrdenamentoCronograma() == null ? acaoCobranca .getIndicadorOrdenamentoCronograma().intValue() == ConstantesSistema.SIM.intValue() : acaoCobranca .getIndicadorOrdenamentoCronograma().intValue() == ConstantesSistema.SIM.intValue(); } if (quantidadeMaxima != null) { if (!possuiValorLimiteEventual && !usaOrdenamento && quantidadeMaxima.equals(gerarAtividadeAcaoCobrancaHelper.getQuantidadeDocumentosCobranca())) { // n�o roda mais os im�veis das rotas // posteriores break labelRotas; } } } gerarAtividadeAcaoCobrancaHelperTemp = null; imovel = null; ligacaoAguaSituacao = null; ligacaoEsgotoSituacao = null; imovelPerfil = null; empresa = null; quadra = null; localidade = null; setorComercial = null; cobrancaSituacaoTipo = null; } } else { flagTerminou = true; } numeroInicial = numeroInicial + 1000; colecaoImoveis = null; } } // retorna o objeto contendo o total de quantidades de documentos de // cobran�a, quantidade de itens cobrados e total do valor dos // documentos de cobran�a return gerarAtividadeAcaoCobrancaHelper; } /** * [UC0251] Gerar Atividade de A��o de Cobran�a [SB0003] Gerar Atividade de A��o de Cobran�a para Im�vel */ public GerarAtividadeAcaoCobrancaHelper gerarAtividadeAcaoCobrancaParaImovel( CobrancaAcaoAtividadeCronograma cobrancaAcaoAtividadeCronograma, CobrancaAcaoAtividadeComando cobrancaAcaoAtividadeComando, Imovel imovel, Integer indicadorCriterio, CobrancaAcao acaoCobranca, CobrancaAtividade atividadeCobranca, CobrancaCriterio criterioCobranca, Collection<CobrancaCriterioLinha> colecaoCobrancaCriterioLinha, String anoMesReferenciaInicial, String anoMesReferenciaFinal, Date dataVencimentoInicial, Date dataVencimentoFinal, Date dataAtual) throws ControladorException { try { GerarAtividadeAcaoCobrancaHelper gerarAtividadeAcaoCobrancaHelper = null; Date dataCorrente = new Date(); Collection<CobrancaDocumentoItem> colecaoDebitosNotificados = new ArrayList(); ImovelNaoGerado imovelNaoGerado = new ImovelNaoGerado(); imovelNaoGerado.setCobrancaAcaoAtividadeCronograma(cobrancaAcaoAtividadeCronograma); imovelNaoGerado.setCobrancaAcaoAtividadeComando(cobrancaAcaoAtividadeComando); imovelNaoGerado.setImovel(imovel); imovelNaoGerado.setUltimaAlteracao(new Date()); Integer idImovel = getControladorImovel().verificarExistenciaImovel(imovel.getId()); if (idImovel == null) { MotivoNaoGeracaoDocCobranca motivoNaoGeracao = new MotivoNaoGeracaoDocCobranca(); motivoNaoGeracao.setId(MotivoNaoGeracaoDocCobranca.IMOVEL_EXCLUIDO); imovelNaoGerado.setMotivoNaoGeracaoDocCobranca(motivoNaoGeracao); getControladorUtil().inserir(imovelNaoGerado); imovelNaoGerado = null; return gerarAtividadeAcaoCobrancaHelper; } // se a situa��o da liga��o de �gua para a qual a a��o de cobran�a deve ser gerada esteja preenchida e seja diferente da situa��o da liga��o de �gua do im�vel // Validacao da situacao da ligacao de agua foi para o criterio de cobranca // se a situa��o da liga��o de esgoto para a qual a a��o de cobran�a deve ser gerada esteja preenchida e seja diferente da situa��o da liga��o de esgoto do im�vel // Validacao da situacao da ligacao de agua foi para o criterio de cobranca CobrancaAcao cobrancaAcaoPrecedente = acaoCobranca.getCobrancaAcaoPredecessora(); CobrancaDocumento cobrancaDocumentoPredecessor = null; boolean validacaoPorItemCobrado = false; Integer idDocumentoCobrancaAcaoPrecedente = null; // se a a��o de cobran�a precedente for diferente de nulo e n�o tenha valida��o por item cobrado (CBAC_ICVALITEMCOBRADO com valor igual a 2 (N�o)) if (cobrancaAcaoPrecedente != null && !cobrancaAcaoPrecedente.equals("")) { Date dataMinimaEmissaoRealizacaoAcaoPrecente = Util.subtrairNumeroDiasDeUmaData(dataCorrente, acaoCobranca.getNumeroDiasMinimoAcaoPrecedente()); Date dataEmissaoValidacaoAcaoPrecente = Util.subtrairNumeroDiasDeUmaData(dataCorrente, cobrancaAcaoPrecedente.getNumeroDiasValidade()); Calendar dataCalendar = new GregorianCalendar(); dataCalendar.setTime(dataMinimaEmissaoRealizacaoAcaoPrecente); dataCalendar.set(Calendar.HOUR, 23); dataCalendar.set(Calendar.MINUTE, 59); dataCalendar.set(Calendar.SECOND, 59); dataCalendar.set(Calendar.MILLISECOND, 999); dataMinimaEmissaoRealizacaoAcaoPrecente = dataCalendar.getTime(); dataCalendar = new GregorianCalendar(); dataCalendar.setTime(dataEmissaoValidacaoAcaoPrecente); dataCalendar.set(Calendar.HOUR, 00); dataCalendar.set(Calendar.MINUTE, 00); dataCalendar.set(Calendar.SECOND, 00); dataCalendar.set(Calendar.MILLISECOND, 000); dataEmissaoValidacaoAcaoPrecente = dataCalendar.getTime(); idDocumentoCobrancaAcaoPrecedente = repositorioCobranca.pesquisarDocumentoCobrancaRelativoAcaoPrecedente(imovel.getId(), cobrancaAcaoPrecedente .getDocumentoTipo().getId(), dataMinimaEmissaoRealizacaoAcaoPrecente, dataEmissaoValidacaoAcaoPrecente); if (!acaoCobranca.getIndicadorValidarItem().equals(ConstantesSistema.NAO)) { validacaoPorItemCobrado = true; } if (!validacaoPorItemCobrado) { if (idDocumentoCobrancaAcaoPrecedente == null) { MotivoNaoGeracaoDocCobranca motivoNaoGeracao = new MotivoNaoGeracaoDocCobranca(); motivoNaoGeracao.setId(MotivoNaoGeracaoDocCobranca.NAO_EXISTE_DOCUMENTO_PRECEDENTE_VALIDO); imovelNaoGerado.setMotivoNaoGeracaoDocCobranca(motivoNaoGeracao); getControladorUtil().inserir(imovelNaoGerado); imovelNaoGerado = null; return gerarAtividadeAcaoCobrancaHelper; } } if (cobrancaAcaoPrecedente.getServicoTipo() != null) { idDocumentoCobrancaAcaoPrecedente = repositorioCobranca.pesquisarDocumentoCobrancaAcaoPrecedente(imovel.getId(), cobrancaAcaoPrecedente .getServicoTipo().getId(), AtendimentoMotivoEncerramento.INDICADOR_EXECUCAO_SIM, dataMinimaEmissaoRealizacaoAcaoPrecente); if (idDocumentoCobrancaAcaoPrecedente == null) { MotivoNaoGeracaoDocCobranca motivoNaoGeracao = new MotivoNaoGeracaoDocCobranca(); motivoNaoGeracao.setId(MotivoNaoGeracaoDocCobranca.NAO_EXISTE_ORDEM_SERVICO_ACAO_PRECEDENTE_EXECUTADA_PRAZO); imovelNaoGerado.setMotivoNaoGeracaoDocCobranca(motivoNaoGeracao); getControladorUtil().inserir(imovelNaoGerado); imovelNaoGerado = null; return gerarAtividadeAcaoCobrancaHelper; } } colecaoDebitosNotificados = repositorioCobranca.pesquisarCobrancaDocumentoItemContaGuiaPagamentoDebitoACobrar(idDocumentoCobrancaAcaoPrecedente); FiltroCobrancaDocumento filtroCobrancaDocumento = new FiltroCobrancaDocumento(); filtroCobrancaDocumento.adicionarParametro(new ParametroSimples("id", idDocumentoCobrancaAcaoPrecedente)); Collection<CobrancaDocumento> colecaoCobrancaDocumento = getControladorUtil().pesquisar(filtroCobrancaDocumento, CobrancaDocumento.class.getName()); cobrancaDocumentoPredecessor = (CobrancaDocumento) Util.retonarObjetoDeColecao(colecaoCobrancaDocumento); } Collection colecaoParmsCobrancaAcao = null; colecaoParmsCobrancaAcao = repositorioCobranca.pesqsuisarAcaoCobrancaPelaPrecedente(acaoCobranca.getId()); if (colecaoParmsCobrancaAcao != null && !colecaoParmsCobrancaAcao.isEmpty()) { Iterator iteParmsCobrancaAcao = colecaoParmsCobrancaAcao.iterator(); while (iteParmsCobrancaAcao.hasNext()) { Object[] parmsCobrancaAcao = (Object[]) iteParmsCobrancaAcao.next(); if (parmsCobrancaAcao != null) { Integer idDocumentoTipo = null; int numeroDiasValidade = 0; if (parmsCobrancaAcao[0] != null) { idDocumentoTipo = (Integer) parmsCobrancaAcao[0]; } if (parmsCobrancaAcao[1] != null) { numeroDiasValidade = ((Short) parmsCobrancaAcao[1]).intValue(); } Date dataEmissaoValidacao = Util.subtrairNumeroDiasDeUmaData(dataCorrente, numeroDiasValidade); Calendar dataCalendar = new GregorianCalendar(); dataCalendar = new GregorianCalendar(); dataCalendar.setTime(dataEmissaoValidacao); dataCalendar.set(Calendar.HOUR, 00); dataCalendar.set(Calendar.MINUTE, 00); dataCalendar.set(Calendar.SECOND, 00); dataCalendar.set(Calendar.MILLISECOND, 000); dataEmissaoValidacao = dataCalendar.getTime(); Object[] retorno = repositorioCobranca.pesquisarIdDocumentoCobranca(imovel.getId(), idDocumentoTipo, dataEmissaoValidacao); if (retorno != null) { MotivoNaoGeracaoDocCobranca motivoNaoGeracao = new MotivoNaoGeracaoDocCobranca(); motivoNaoGeracao.setId(MotivoNaoGeracaoDocCobranca.EXISTE_DOCUMENTO_VALIDO_ACAO_SUCESSORA); imovelNaoGerado.setMotivoNaoGeracaoDocCobranca(motivoNaoGeracao); getControladorUtil().inserir(imovelNaoGerado); imovelNaoGerado = null; return gerarAtividadeAcaoCobrancaHelper; } } } } CobrancaDocumento cobrancaDocumento = null; int idTipoDocumentoAGerar = acaoCobranca.getDocumentoTipo().getId(); int[] idsTipoDocumentoAIgnorar = {}; switch (idTipoDocumentoAGerar) { case DocumentoTipo.ORDEM_FISCALIZACAO_TOTAL: idsTipoDocumentoAIgnorar = new int[6]; idsTipoDocumentoAIgnorar[0] = DocumentoTipo.ORDEM_FISCALIZACAO_CORTADO; idsTipoDocumentoAIgnorar[1] = DocumentoTipo.ORDEM_FISCALIZACAO_FACTIVEL; idsTipoDocumentoAIgnorar[2] = DocumentoTipo.ORDEM_FISCALIZACAO_LIGADO; idsTipoDocumentoAIgnorar[3] = DocumentoTipo.ORDEM_FISCALIZACAO_POTENCIAL; idsTipoDocumentoAIgnorar[4] = DocumentoTipo.ORDEM_FISCALIZACAO_SUPRIMIDO; idsTipoDocumentoAIgnorar[5] = DocumentoTipo.ORDEM_FISCALIZACAO_TOTAL; break; case DocumentoTipo.ORDEM_FISCALIZACAO_CORTADO: case DocumentoTipo.ORDEM_FISCALIZACAO_FACTIVEL: case DocumentoTipo.ORDEM_FISCALIZACAO_LIGADO: case DocumentoTipo.ORDEM_FISCALIZACAO_POTENCIAL: case DocumentoTipo.ORDEM_FISCALIZACAO_SUPRIMIDO: idsTipoDocumentoAIgnorar = new int[2]; idsTipoDocumentoAIgnorar[0] = idTipoDocumentoAGerar; idsTipoDocumentoAIgnorar[1] = DocumentoTipo.ORDEM_FISCALIZACAO_TOTAL; break; default: idsTipoDocumentoAIgnorar = new int[1]; idsTipoDocumentoAIgnorar[0] = idTipoDocumentoAGerar; break; } for (int i = 0; i < idsTipoDocumentoAIgnorar.length; i++) { cobrancaDocumento = repositorioCobranca.pesquisarCobrancaDocumento(imovel.getId(), idsTipoDocumentoAIgnorar[i]); if (cobrancaDocumento != null) { Date dataEmissaoValidade = Util.adicionarNumeroDiasDeUmaData(cobrancaDocumento.getEmissao(), acaoCobranca.getNumeroDiasValidade()); if (!(dataEmissaoValidade.compareTo(dataCorrente) < 0)) { if (cobrancaDocumento.getCobrancaAcaoSituacao() == null) { MotivoNaoGeracaoDocCobranca motivoNaoGeracao = new MotivoNaoGeracaoDocCobranca(); motivoNaoGeracao.setId(MotivoNaoGeracaoDocCobranca.EXISTE_DOCUMENTO_VALIDO_MESMO_TIPO); imovelNaoGerado.setMotivoNaoGeracaoDocCobranca(motivoNaoGeracao); getControladorUtil().inserir(imovelNaoGerado); imovelNaoGerado = null; return gerarAtividadeAcaoCobrancaHelper; } else { if (cobrancaDocumento.getCobrancaAcaoSituacao().getId() != null && (!cobrancaDocumento.getCobrancaAcaoSituacao().getId().equals(CobrancaAcaoSituacao.CANCELADA_PRAZO))) { MotivoNaoGeracaoDocCobranca motivoNaoGeracao = new MotivoNaoGeracaoDocCobranca(); motivoNaoGeracao.setId(MotivoNaoGeracaoDocCobranca.EXISTE_DOCUMENTO_VALIDO_MESMO_TIPO); imovelNaoGerado.setMotivoNaoGeracaoDocCobranca(motivoNaoGeracao); getControladorUtil().inserir(imovelNaoGerado); imovelNaoGerado = null; return gerarAtividadeAcaoCobrancaHelper; } } } } } VerificarCriterioCobrancaParaImovelHelper verificarCriterioCobrancaParaImovelHelper = null; SistemaParametro sistemaParametros = getControladorUtil().pesquisarParametrosDoSistema(); verificarCriterioCobrancaParaImovelHelper = this.verificarCriterioCobrancaParaImovel(imovel, acaoCobranca, criterioCobranca, colecaoCobrancaCriterioLinha, anoMesReferenciaInicial, anoMesReferenciaFinal, dataVencimentoInicial, dataVencimentoFinal, colecaoDebitosNotificados, sistemaParametros, cobrancaAcaoAtividadeComando, imovelNaoGerado, idDocumentoCobrancaAcaoPrecedente, validacaoPorItemCobrado); boolean flagCriterioCobrancaImovel = verificarCriterioCobrancaParaImovelHelper.isFlagCriterioCobrancaImovel(); if (flagCriterioCobrancaImovel) { gerarAtividadeAcaoCobrancaHelper = new GerarAtividadeAcaoCobrancaHelper(); if (atividadeCobranca.getId().intValue() == CobrancaAtividade.EMITIR) { DocumentoEmissaoForma documentoEmissaoForma = new DocumentoEmissaoForma(); if (cobrancaAcaoAtividadeCronograma != null) { documentoEmissaoForma.setId(DocumentoEmissaoForma.CRONOGRAMA); } else { documentoEmissaoForma.setId(DocumentoEmissaoForma.EVENTUAL); } BigDecimal somatorioAcrescimos = new BigDecimal("0.00"); if (acaoCobranca.getIndicadorCobrancaDebACobrar() != null && acaoCobranca.getIndicadorCobrancaDebACobrar().equals(ConstantesSistema.INDICADOR_USO_ATIVO)) { if (verificarCriterioCobrancaParaImovelHelper.getColecaoContasValores() != null && !verificarCriterioCobrancaParaImovelHelper.getColecaoContasValores().isEmpty()) { for (ContaValoresHelper contaValorHelper : verificarCriterioCobrancaParaImovelHelper.getColecaoContasValores()) { if (contaValorHelper.getValorMulta() != null) { somatorioAcrescimos = somatorioAcrescimos.add(contaValorHelper.getValorMulta()); } if (contaValorHelper.getValorJurosMora() != null) { somatorioAcrescimos = somatorioAcrescimos.add(contaValorHelper.getValorJurosMora()); } if (contaValorHelper.getValorAtualizacaoMonetaria() != null) { somatorioAcrescimos = somatorioAcrescimos.add(contaValorHelper.getValorAtualizacaoMonetaria()); } } } if (verificarCriterioCobrancaParaImovelHelper.getColecaoGuiasPagamentoValores() != null && !verificarCriterioCobrancaParaImovelHelper.getColecaoGuiasPagamentoValores().isEmpty()) { for (GuiaPagamentoValoresHelper guiaPagamentoValorHelper : verificarCriterioCobrancaParaImovelHelper .getColecaoGuiasPagamentoValores()) { if (guiaPagamentoValorHelper.getValorMulta() != null) { somatorioAcrescimos = somatorioAcrescimos.add(guiaPagamentoValorHelper.getValorMulta()); } if (guiaPagamentoValorHelper.getValorJurosMora() != null) { somatorioAcrescimos = somatorioAcrescimos.add(guiaPagamentoValorHelper.getValorJurosMora()); } if (guiaPagamentoValorHelper.getValorAtualizacaoMonetaria() != null) { somatorioAcrescimos = somatorioAcrescimos.add(guiaPagamentoValorHelper.getValorAtualizacaoMonetaria()); } } } } Date dataEmissaoPredecessor = null; if (cobrancaDocumentoPredecessor != null) { dataEmissaoPredecessor = cobrancaDocumentoPredecessor.getEmissao(); } ExtratoDebitoRelatorioHelper extratoDebitoRelatorioHelper = this.gerarDocumentoCobranca(imovel, acaoCobranca.getIndicadorGeracaoTaxa() .shortValue(), verificarCriterioCobrancaParaImovelHelper.getColecaoContasValores(), verificarCriterioCobrancaParaImovelHelper .getColecaoGuiasPagamentoValores(), verificarCriterioCobrancaParaImovelHelper.getColecaoDebitoACobrar(), somatorioAcrescimos, new BigDecimal("0.00"), sistemaParametros.getAnoMesFaturamento(), // anoMesReferenciaDebito documentoEmissaoForma, acaoCobranca.getDocumentoTipo(), cobrancaAcaoAtividadeComando, // cobrancaAcaoAtividadeComando cobrancaAcaoAtividadeCronograma, // cobrancaAcaoAtividadeCronograma imovel.getQuadra().getRota().getEmpresa(), // Empresa criterioCobranca, // CobrancaCriterio acaoCobranca, // CobrancaAcao verificarCriterioCobrancaParaImovelHelper.getValorDebitoImovel(), dataAtual, null, null, null, dataEmissaoPredecessor, null, null); // valorDocumento if (extratoDebitoRelatorioHelper != null) { gerarAtividadeAcaoCobrancaHelper.getColecaoDocumentosCobranca().add(extratoDebitoRelatorioHelper.getDocumentoCobranca()); } extratoDebitoRelatorioHelper = null; } gerarAtividadeAcaoCobrancaHelper.setQuantidadeDocumentosCobranca(1); gerarAtividadeAcaoCobrancaHelper.setQuantidadeItensCobradosDocumentos(verificarCriterioCobrancaParaImovelHelper.getQuantidadeItensEmDebito()); gerarAtividadeAcaoCobrancaHelper.setValorDocumentosCobranca(verificarCriterioCobrancaParaImovelHelper.getValorDebitoImovel()); } else { return gerarAtividadeAcaoCobrancaHelper; } imovelNaoGerado = null; return gerarAtividadeAcaoCobrancaHelper; } catch (ErroRepositorioException ex) { throw new ControladorException("erro.sistema", ex); } } /** * [UC0251] Gerar Atividade de A��o de Cobran�a [SB0004] Verificar Crit�rio * de Cobran�a para Im�vel * * @author Pedro Alexandre * @created 08/02/2006 * * @param imovel * Im�vel * @param acaoCobranca * A��o de Cobran�a * @param cobrancaCriterio * Crit�riode cobran�a para ser utilizado * @param colecaoCobrancaCriterioLinha * Cole��o de linha de crit�rio de cobran�a * @param anoMesReferenciaInicial * Ano/M�s de refer�ncia inicial * @param anoMesReferenciaFinal * Ano/M�s de refer�ncia final * @param dataVencimentoInicial * Data de vencimento inicial * @param dataVencimentoFinal * Data de vencimento final * @param colecaoDebitosNotificados * Cole��o de D�bitos Notificados * @param sistemaParametros * Par�metros do Sistema * * @throws ControladorException * Controlador Exception * * @return Retorna um objeto contendo todas as informa��es necess�rias prara * identificar se um im�vel satisfaz os crit�rios de cobran�a */ public VerificarCriterioCobrancaParaImovelHelper verificarCriterioCobrancaParaImovel(Imovel imovel, CobrancaAcao acaoCobranca, CobrancaCriterio cobrancaCriterio, Collection<CobrancaCriterioLinha> colecaoCobrancaCriterioLinha, String anoMesReferenciaInicial, String anoMesReferenciaFinal, Date dataVencimentoInicial, Date dataVencimentoFinal, Collection<CobrancaDocumentoItem> colecaoDebitosNotificados, SistemaParametro sistemaParametros, CobrancaAcaoAtividadeComando cobrancaAcaoAtividadeComando, ImovelNaoGerado imovelNaoGerado, Integer idDocumentoTipoCobrancaAcaoPrecedente, boolean validacaoPorItemCobrado) throws ControladorException { // cria o objeto de retorno do met�do VerificarCriterioCobrancaParaImovelHelper verificarCriterioCobrancaParaImovelHelper = new VerificarCriterioCobrancaParaImovelHelper(); // seta a flag do crit�rio de cobran�a para false(o im�vel n�o satisfaz // o crit�rio de cobran�a) verificarCriterioCobrancaParaImovelHelper.setFlagCriterioCobrancaImovel(false); // item 1 // se o indicador de emiss�o da a��o de cobran�a para im�vel,com // situa��o especial de cobran�a // e o im�vel esteja com algum tipo de situa��o especial de cobran�a if (cobrancaCriterio.getIndicadorEmissaoImovelParalisacao().shortValue() == 2 && imovel.getCobrancaSituacaoTipo() != null) { MotivoNaoGeracaoDocCobranca motivoNaoGeracao = new MotivoNaoGeracaoDocCobranca(); motivoNaoGeracao.setId(MotivoNaoGeracaoDocCobranca.IMOVEL_EM_SITUACAO_ESPECIAL_COBRANCA); imovelNaoGerado.setMotivoNaoGeracaoDocCobranca(motivoNaoGeracao); getControladorUtil().inserir(imovelNaoGerado); imovelNaoGerado = null; // indica que o im�vel n�o satisfaz o crit�rio de cobran�a return verificarCriterioCobrancaParaImovelHelper; } // fim item 1 // item 2 Collection colecaoImovelCobrancaSituacao = null; try { colecaoImovelCobrancaSituacao = repositorioCobranca.pesquisarImovelCobrancaSituacao(imovel.getId()); // erro nohibernate } catch (ErroRepositorioException ex) { // levanta a exce��o para a pr�xima camada throw new ControladorException("erro.sistema", ex); } if (colecaoImovelCobrancaSituacao != null && !colecaoImovelCobrancaSituacao.isEmpty()) { if (cobrancaCriterio.getIndicadorEmissaoImovelSituacaoCobranca().shortValue() == 2) { MotivoNaoGeracaoDocCobranca motivoNaoGeracao = new MotivoNaoGeracaoDocCobranca(); motivoNaoGeracao.setId(MotivoNaoGeracaoDocCobranca.CRITERIO_NAO_PERMITE_SITUACAO_COBRANCA); imovelNaoGerado.setMotivoNaoGeracaoDocCobranca(motivoNaoGeracao); getControladorUtil().inserir(imovelNaoGerado); imovelNaoGerado = null; return verificarCriterioCobrancaParaImovelHelper; } else { boolean situacaoCobrancaImovelContidaNasSelecionadas = false; FiltroCriterioSituacaoCobranca filtroCritSitCobranca = new FiltroCriterioSituacaoCobranca(); filtroCritSitCobranca.adicionarParametro(new ParametroSimples(FiltroCriterioSituacaoCobranca.COBRANCA_CRITERIO_ID,cobrancaCriterio.getId())); filtroCritSitCobranca.adicionarCaminhoParaCarregamentoEntidade(FiltroCriterioSituacaoCobranca.COBRANCA_SITUACAO); Collection colecaoSituacoesCobrancaSelecionadas = getControladorUtil().pesquisar(filtroCritSitCobranca,CriterioSituacaoCobranca.class.getName()); if (colecaoSituacoesCobrancaSelecionadas != null && !colecaoSituacoesCobrancaSelecionadas.isEmpty()) { for (Iterator iterSitImov = colecaoImovelCobrancaSituacao.iterator(); iterSitImov.hasNext();) { Integer idSitCobImov = (Integer) iterSitImov.next(); for (Iterator iter = colecaoSituacoesCobrancaSelecionadas.iterator(); iter.hasNext();) { CriterioSituacaoCobranca critSitCob = (CriterioSituacaoCobranca) iter.next(); if (critSitCob.getComp_id().getCobrancaSituacao().getId().intValue() == idSitCobImov.intValue()) { situacaoCobrancaImovelContidaNasSelecionadas = true; break; } } } } if (!situacaoCobrancaImovelContidaNasSelecionadas) { MotivoNaoGeracaoDocCobranca motivoNaoGeracao = new MotivoNaoGeracaoDocCobranca(); motivoNaoGeracao.setId(MotivoNaoGeracaoDocCobranca.IMOVEL_EM_SITUACAO_COBRANCA_NAO_PERMITIDA); imovelNaoGerado.setMotivoNaoGeracaoDocCobranca(motivoNaoGeracao); getControladorUtil().inserir(imovelNaoGerado); imovelNaoGerado = null; return verificarCriterioCobrancaParaImovelHelper; } } } boolean flagPerfilImovel = false; labelLoop: for (CobrancaCriterioLinha cobrancaCriterioLinha : colecaoCobrancaCriterioLinha) { if (cobrancaCriterioLinha.getImovelPerfil().getId().intValue() == imovel.getImovelPerfil().getId().intValue()) { flagPerfilImovel = true; break labelLoop; } } if (!flagPerfilImovel) { MotivoNaoGeracaoDocCobranca motivoNaoGeracao = new MotivoNaoGeracaoDocCobranca(); motivoNaoGeracao.setId(MotivoNaoGeracaoDocCobranca.NAO_HA_CRITERIO_PARA_O_PERFIL); imovelNaoGerado.setMotivoNaoGeracaoDocCobranca(motivoNaoGeracao); getControladorUtil().inserir(imovelNaoGerado); imovelNaoGerado = null; return verificarCriterioCobrancaParaImovelHelper; } final int indicadorDebitoImovel = 1; String matriculaImovel = imovel.getId().toString(); String codigoCliente = null; Short clienteRelacaoTipo = null; int indicadorPagamento = 1; int indicadorConta = cobrancaCriterio.getIndicadorEmissaoContaRevisao(); int indicadorDebitoACobrar = acaoCobranca.getIndicadorCobrancaDebACobrar(); int indicadorCreditoARalizar = acaoCobranca.getIndicadorCreditosARealizar().intValue(); int indicadorNotasPromissorias = acaoCobranca.getIndicadorNotasPromissoria().intValue(); int indicadorGuiaPagamento = 2; int indicadorCalcularAcrescimoImpontualidade = acaoCobranca.getIndicadorAcrescimoImpontualidade().intValue(); if (acaoCobranca != null && acaoCobranca.getId().compareTo(CobrancaAcao.CARTA_FINAL_DE_ANO) == 0) { indicadorGuiaPagamento = 1; indicadorConta = 2; } try { int totalContas = repositorioCobranca.pesquisarQuantidadeContasVencidasPorImovel( new Integer(matriculaImovel), indicadorPagamento, indicadorConta, 3); if (totalContas > 1) { Date dataAtual = Util.subtrairNumeroDiasDeUmaData(new Date(), 1); SimpleDateFormat formato = new SimpleDateFormat("yyyy-MM-dd"); dataVencimentoFinal = formato.parse(formato.format(dataAtual)); } } catch (ErroRepositorioException e) { e.printStackTrace(); } catch (ParseException e) { e.printStackTrace(); } ObterDebitoImovelOuClienteHelper debitoImovel = this.obterDebitoImovelOuCliente(indicadorDebitoImovel, matriculaImovel, codigoCliente, clienteRelacaoTipo, anoMesReferenciaInicial, anoMesReferenciaFinal, dataVencimentoInicial, dataVencimentoFinal, indicadorPagamento, indicadorConta, indicadorDebitoACobrar, indicadorCreditoARalizar, indicadorNotasPromissorias, indicadorGuiaPagamento, indicadorCalcularAcrescimoImpontualidade, null); Collection<ContaValoresHelper> colecaoContasValores = debitoImovel.getColecaoContasValores(); // Na gera��o do documento de cobran�a n�o ser�o consideradas as contas cujo titular seja diferente ao respons�vel do im�vel. colecaoContasValores = retirarContasClienteResponsavelImovelDiferenteConta(colecaoContasValores); Collection<DebitoACobrar> colecaoDebitoACobrar = debitoImovel.getColecaoDebitoACobrar(); Collection<GuiaPagamentoValoresHelper> colecaoGuiasPagamentoValores = debitoImovel.getColecaoGuiasPagamentoValores(); Collection<ContaValoresHelper> colecaoContasValoresParaRemocao = new ArrayList(); Collection<DebitoACobrar> colecaoDebitoACobrarParaRemocao = new ArrayList(); Collection<GuiaPagamentoValoresHelper> colecaoGuiasPagamentoValoresRemocao = new ArrayList(); if (colecaoContasValores != null) { for (ContaValoresHelper contaValorHelper : colecaoContasValores) { if (contaValorHelper.getValorPago() != null && contaValorHelper.getValorPago().compareTo(new BigDecimal(0)) == 1) { colecaoContasValoresParaRemocao.add(contaValorHelper); } else { boolean flagAchouConta = false; if (colecaoDebitosNotificados != null && !colecaoDebitosNotificados.isEmpty()) { labelConta: for (CobrancaDocumentoItem cobrancaDocumentoItem : colecaoDebitosNotificados) { if (cobrancaDocumentoItem.getContaGeral() != null) { if (cobrancaDocumentoItem.getContaGeral().getId().intValue() == contaValorHelper.getConta().getId().intValue()) { flagAchouConta = true; break labelConta; } } } } if (!flagAchouConta && acaoCobranca.getCobrancaAcaoPredecessora() != null) { colecaoContasValoresParaRemocao.add(contaValorHelper); } else { if (contaValorHelper.getConta() != null) { if (contaValorHelper.getConta().getDebitoCreditoSituacaoAtual() != null && contaValorHelper.getConta().getDebitoCreditoSituacaoAtual().getId().equals(DebitoCreditoSituacao.PARCELADA)) { colecaoContasValoresParaRemocao.add(contaValorHelper); } } } } } } if (colecaoDebitoACobrar != null) { for (DebitoACobrar debitoACobrar : colecaoDebitoACobrar) { boolean flagAchouDebitoACobrar = false; // se a cole��o de d�bitos notificados n�o estiver vazia if (colecaoDebitosNotificados != null && !colecaoDebitosNotificados.isEmpty()) { // la�o para verificar os items de documento de cobran�a labelDebitoACobrar: for (CobrancaDocumentoItem cobrancaDocumentoItem : colecaoDebitosNotificados) { // se o item � um d�bito a cobrar if (cobrancaDocumentoItem.getDebitoACobrarGeral() != null) { // se o d�bito a cobrar � o mesmo do item if (cobrancaDocumentoItem.getDebitoACobrarGeral().getId().intValue() == debitoACobrar.getId().intValue()) { // seta que o d�bito a cobrar consta nos d�bitos // notificados flagAchouDebitoACobrar = true; // para o la�o de item de documento de cobran�a // e passa para o pr�ximo d�bito a cobrar break labelDebitoACobrar; } } } } // se o d�bito a cobrar n�o consta nos items if (!flagAchouDebitoACobrar) { // adiciona o d�bito a cobrar na cole��o que vai ser // removida colecaoDebitoACobrarParaRemocao.add(debitoACobrar); } } } // la�o para verificar quais guias de pagamento n�o constam nos // d�bitos notificados if (colecaoGuiasPagamentoValores != null) { for (GuiaPagamentoValoresHelper guiaPagamentoValoresHelper : colecaoGuiasPagamentoValores) { if (guiaPagamentoValoresHelper.getValorPago() != null && guiaPagamentoValoresHelper.getValorPago().compareTo(new BigDecimal(0)) == 1) { // adiciona a conta na cole��o que vai ser removida colecaoGuiasPagamentoValoresRemocao.add(guiaPagamentoValoresHelper); } else { // cria a flag que vai indicar se a guia de pagamento // consta // nos // d�bitos notificados boolean flagAchouGuiaPagamento = false; // se a cole��o de d�bitos notificados n�o estiver vazia if (colecaoDebitosNotificados != null && !colecaoDebitosNotificados.isEmpty()) { // la�o para verificar os items de documento de // cobran�a labelGuiaPagamento: for (CobrancaDocumentoItem cobrancaDocumentoItem : colecaoDebitosNotificados) { // se o item � uma guia de pagamento if (cobrancaDocumentoItem.getGuiaPagamentoGeral() != null) { // se a guia de pagamento � o mesmo do item if (cobrancaDocumentoItem.getGuiaPagamentoGeral().getId().intValue() == guiaPagamentoValoresHelper .getGuiaPagamento().getId().intValue()) { // seta que a guia de pagamento consta // nos // d�bitos // notificados flagAchouGuiaPagamento = true; // para o la�o de item de documento de // cobran�a // e passa para a pr�xima guia de // pagamento break labelGuiaPagamento; } } } // se a guia de pagamento n�o consta nos items if (!flagAchouGuiaPagamento) { // adiciona a guia de pagamento na cole��o que vai // ser // removida colecaoGuiasPagamentoValoresRemocao.add(guiaPagamentoValoresHelper); } } } } } // remove as contas, d�bitos a cobrar e guias de pagamento // que n�o constam nos itens de documentode cobran�a if (colecaoContasValores != null) { colecaoContasValores.removeAll(colecaoContasValoresParaRemocao); } if (colecaoDebitoACobrar != null) { colecaoDebitoACobrar.removeAll(colecaoDebitoACobrarParaRemocao); } if (colecaoGuiasPagamentoValores != null) { colecaoGuiasPagamentoValores.removeAll(colecaoGuiasPagamentoValoresRemocao); } // fim item 5 // RM93 - adicionado por Vivianne Sousa - 23/12/2010 - analista:Rosana // Carvalho if (validacaoPorItemCobrado || acaoCobranca.getCobrancaAcaoPredecessoraAlternativa() != null) { if (idDocumentoTipoCobrancaAcaoPrecedente == null) { if (acaoCobranca.getCobrancaAcaoPredecessoraAlternativa().getDocumentoTipo() != null && acaoCobranca.getCobrancaAcaoPredecessoraAlternativa().getDocumentoTipo().getId() != null) { idDocumentoTipoCobrancaAcaoPrecedente = acaoCobranca.getCobrancaAcaoPredecessoraAlternativa().getDocumentoTipo() .getId(); } } if (idDocumentoTipoCobrancaAcaoPrecedente != null) { boolean verificaValidacaoPorItemCobrado = verificaValidacaoPorItemCobrado(imovel.getId(), idDocumentoTipoCobrancaAcaoPrecedente, colecaoContasValores, colecaoDebitoACobrar); // e qualquer um dos itens cobrados n�o tenha sido cobrado nas // �ltimas // 6(seis) a��es relativa � a��o precedente passar para o // pr�ximo im�vel if (!verificaValidacaoPorItemCobrado) { MotivoNaoGeracaoDocCobranca motivoNaoGeracao = new MotivoNaoGeracaoDocCobranca(); motivoNaoGeracao.setId(MotivoNaoGeracaoDocCobranca.NAO_EXISTE_DOCUMENTO_PRECEDENTE_VALIDO); imovelNaoGerado.setMotivoNaoGeracaoDocCobranca(motivoNaoGeracao); getControladorUtil().inserir(imovelNaoGerado); imovelNaoGerado = null; return verificarCriterioCobrancaParaImovelHelper; } } } // inicio item 6 // Desenvolvedor:Hugo Amorim Analista:Ana Cristina Data:30/06/2010 // Verifica Consumo e Tipo de Medi��o, // Caso consumo medio inicial, final e tipo de consumo // tenham sido informados no comando eventual. if (cobrancaAcaoAtividadeComando != null && cobrancaAcaoAtividadeComando.getConsumoMedioInicial() != null && !cobrancaAcaoAtividadeComando.getConsumoMedioInicial().toString().equals("") && cobrancaAcaoAtividadeComando.getConsumoMedioFinal() != null && !cobrancaAcaoAtividadeComando.getConsumoMedioFinal().toString().equals("") && cobrancaAcaoAtividadeComando.getTipoConsumo() != null && !cobrancaAcaoAtividadeComando.getTipoConsumo().toString().equals("")) { Integer consumoMes = null; // Pesquisa consumo do imovel nos ultimos 6 meses, // se houver verifica se atende ao intervalo informado // no comando. labelPesquisaConsumoUltimos6Meses: for (int i = 0; i <= 6; i++) { Integer anoMes = Util.subtrairMesDoAnoMes(sistemaParametros.getAnoMesFaturamento(), i); consumoMes = getControladorMicromedicao().pesquisarNumeroConsumoMedioImovel(imovel.getId(), anoMes); if (consumoMes != null) { break labelPesquisaConsumoUltimos6Meses; } } boolean naoAtendeAoCriterioDeConsumo = true; if (consumoMes != null) { if (consumoMes.compareTo(cobrancaAcaoAtividadeComando.getConsumoMedioInicial()) >= 0 && consumoMes.compareTo(cobrancaAcaoAtividadeComando.getConsumoMedioFinal()) <= 0) { boolean existeHidrometro = getControladorAtendimentoPublico() .verificarExistenciaHidrometroEmLigacaoAgua(imovel.getId()); // MEDIDO if (cobrancaAcaoAtividadeComando.getTipoConsumo().compareTo(new Short("1")) == 0 && existeHidrometro) { naoAtendeAoCriterioDeConsumo = false; } // NAO MEDIDO if (cobrancaAcaoAtividadeComando.getTipoConsumo().compareTo(new Short("2")) == 0 && !existeHidrometro) { naoAtendeAoCriterioDeConsumo = false; } // AMBOS if (cobrancaAcaoAtividadeComando.getTipoConsumo().compareTo(new Short("3")) == 0) { naoAtendeAoCriterioDeConsumo = false; } } } if (naoAtendeAoCriterioDeConsumo) { MotivoNaoGeracaoDocCobranca motivoNaoGeracao = new MotivoNaoGeracaoDocCobranca(); motivoNaoGeracao.setId(MotivoNaoGeracaoDocCobranca.CONSUMO_MEDIO_FORA_INTERVALO_DEFINIDO_CRITERIO); imovelNaoGerado.setMotivoNaoGeracaoDocCobranca(motivoNaoGeracao); getControladorUtil().inserir(imovelNaoGerado); imovelNaoGerado = null; return verificarCriterioCobrancaParaImovelHelper; } } // Verifica Consumo e Tipo de Medi��o, Caso consumo medio inicial, final e tipo de consumo tenham sido informados no comando eventual. boolean existeSituacaoFiscalizacaoFiltro = false; Collection<CobrancaAcaoAtividadeComandoFiscalizacaoSituacao> colecaoCobrancaAcaoFisc = null; if (cobrancaAcaoAtividadeComando != null) { FiltroCobrancaAcaoAtividadeComandoFiscalizacaoSituacao filtroCobrancaAcaoFisc = new FiltroCobrancaAcaoAtividadeComandoFiscalizacaoSituacao(); filtroCobrancaAcaoFisc.adicionarParametro(new ParametroSimples( FiltroCobrancaAcaoAtividadeComandoFiscalizacaoSituacao.COBRANCA_ACAO_ATIVIDADE_COMANDO_ID, cobrancaAcaoAtividadeComando .getId())); filtroCobrancaAcaoFisc .adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAcaoAtividadeComandoFiscalizacaoSituacao.FISCALIZACAO_SITUACAO); colecaoCobrancaAcaoFisc = getControladorUtil().pesquisar(filtroCobrancaAcaoFisc, CobrancaAcaoAtividadeComandoFiscalizacaoSituacao.class.getName()); if (!Util.isVazioOrNulo(colecaoCobrancaAcaoFisc)) { existeSituacaoFiscalizacaoFiltro = true; } } if (cobrancaAcaoAtividadeComando != null && ((cobrancaAcaoAtividadeComando.getPeriodoInicialFiscalizacao() != null && !cobrancaAcaoAtividadeComando .getPeriodoInicialFiscalizacao().equals("")) || (cobrancaAcaoAtividadeComando.getPeriodoFinalFiscalizacao() != null && !cobrancaAcaoAtividadeComando .getPeriodoFinalFiscalizacao().equals("")) || existeSituacaoFiscalizacaoFiltro)) { Collection<OrdemServico> colecaoOs = null; if ((cobrancaAcaoAtividadeComando.getPeriodoInicialFiscalizacao() != null && !cobrancaAcaoAtividadeComando .getPeriodoInicialFiscalizacao().equals("")) || (cobrancaAcaoAtividadeComando.getPeriodoFinalFiscalizacao() != null && !cobrancaAcaoAtividadeComando .getPeriodoFinalFiscalizacao().equals(""))) { FiltroOrdemServico filtroOrdemServico = new FiltroOrdemServico(); filtroOrdemServico.adicionarParametro(new ParametroSimples(FiltroOrdemServico.ID_IMOVEL, imovel.getId())); if ((cobrancaAcaoAtividadeComando.getPeriodoInicialFiscalizacao() != null && !cobrancaAcaoAtividadeComando .getPeriodoInicialFiscalizacao().equals(""))) { filtroOrdemServico.adicionarParametro(new MaiorQue(FiltroOrdemServico.DATA_FISCALIZACAO_SITUACAO, cobrancaAcaoAtividadeComando.getPeriodoInicialFiscalizacao())); } if ((cobrancaAcaoAtividadeComando.getPeriodoFinalFiscalizacao() != null && !cobrancaAcaoAtividadeComando .getPeriodoFinalFiscalizacao().equals(""))) { filtroOrdemServico.adicionarParametro(new MenorQue(FiltroOrdemServico.DATA_FISCALIZACAO_SITUACAO, cobrancaAcaoAtividadeComando.getPeriodoFinalFiscalizacao())); } colecaoOs = this.getControladorUtil().pesquisar(filtroOrdemServico, OrdemServico.class.getName()); if (Util.isVazioOrNulo(colecaoOs)) { MotivoNaoGeracaoDocCobranca motivoNaoGeracao = new MotivoNaoGeracaoDocCobranca(); motivoNaoGeracao.setId(MotivoNaoGeracaoDocCobranca.SITUACAO_FISCALIZACAO_NAO_ATENDE_CRITERIO); imovelNaoGerado.setMotivoNaoGeracaoDocCobranca(motivoNaoGeracao); getControladorUtil().inserir(imovelNaoGerado); imovelNaoGerado = null; return verificarCriterioCobrancaParaImovelHelper; } // Caso exista fiscaliza��o para o im�vel else { if (existeSituacaoFiscalizacaoFiltro) { // Verifica se situa��es de fiscaliza��o do im�vel // estejam // contidas nas situa��es selecionadas para o comando. situacoesFiscalizacaoComandoAcao: for (OrdemServico ordemServico : colecaoOs) { boolean atendeCriteiro = false; for (CobrancaAcaoAtividadeComandoFiscalizacaoSituacao cobAcaoFisc : colecaoCobrancaAcaoFisc) { if (cobAcaoFisc.getFiscalizacaoSituacao().getId().compareTo(ordemServico.getFiscalizacaoSituacao().getId()) == 0) { atendeCriteiro = true; } if (atendeCriteiro) { continue situacoesFiscalizacaoComandoAcao; } // Caso as situa��es de fiscaliza��o do im�vel // n�o // estejam contidas nas situa��es selecionadas // para o comando. else { MotivoNaoGeracaoDocCobranca motivoNaoGeracao = new MotivoNaoGeracaoDocCobranca(); motivoNaoGeracao.setId(MotivoNaoGeracaoDocCobranca.SITUACAO_FISCALIZACAO_NAO_ATENDE_CRITERIO); imovelNaoGerado.setMotivoNaoGeracaoDocCobranca(motivoNaoGeracao); getControladorUtil().inserir(imovelNaoGerado); imovelNaoGerado = null; // indica que o im�vel n�o satisfaz o // crit�rio de cobran�a return verificarCriterioCobrancaParaImovelHelper; } } } } } } // Caso contr�rio (par�metro Per�odo de Fiscaliza��o do Im�vel n�o // informado) e // caso o par�metro Situa��o da Fiscaliza��o esteja informado else if (existeSituacaoFiscalizacaoFiltro) { Collection<Integer> colecaoIdsSituacaoFiscalizacao = new ArrayList<Integer>(); for (CobrancaAcaoAtividadeComandoFiscalizacaoSituacao helper : colecaoCobrancaAcaoFisc) { colecaoIdsSituacaoFiscalizacao.add(helper.getFiscalizacaoSituacao().getId()); } FiltroOrdemServico filtroOrdemServico = new FiltroOrdemServico(); filtroOrdemServico.adicionarParametro(new ParametroSimples(FiltroOrdemServico.ID_IMOVEL, imovel.getId())); filtroOrdemServico.adicionarParametro(new ParametroSimplesIn(FiltroOrdemServico.DATA_FISCALIZACAO_SITUACAO, colecaoIdsSituacaoFiscalizacao)); colecaoOs = this.getControladorUtil().pesquisar(filtroOrdemServico, OrdemServico.class.getName()); // Caso n�o exista fiscaliza��o para o im�vel com situa��o // correspondente a alguma // das situa��es selecionadas para o comando if (Util.isVazioOrNulo(colecaoOs)) { MotivoNaoGeracaoDocCobranca motivoNaoGeracao = new MotivoNaoGeracaoDocCobranca(); motivoNaoGeracao.setId(MotivoNaoGeracaoDocCobranca.SITUACAO_FISCALIZACAO_NAO_ATENDE_CRITERIO); imovelNaoGerado.setMotivoNaoGeracaoDocCobranca(motivoNaoGeracao); getControladorUtil().inserir(imovelNaoGerado); imovelNaoGerado = null; // indica que o im�vel n�o satisfaz o crit�rio de cobran�a return verificarCriterioCobrancaParaImovelHelper; } } } // fim item Per�odo de Fiscaliza��o do Im�vel // item 7 // se as cole��es de contas, d�bitos a cobrar e guias de pagamento // estiverem vazia if ((colecaoContasValores == null || colecaoContasValores.isEmpty()) && (colecaoDebitoACobrar == null || colecaoDebitoACobrar.isEmpty()) && (colecaoGuiasPagamentoValores == null || colecaoGuiasPagamentoValores.isEmpty())) { // item 7.1 // Caso seja comando eventual e o indicador de selecionar apenas // im�veis com d�bitos seja igual a sim(1) descarta o im�vel if (cobrancaAcaoAtividadeComando != null && cobrancaAcaoAtividadeComando.getIndicadorBoletim() != null && cobrancaAcaoAtividadeComando.getIndicadorDebito().equals(CobrancaAcaoAtividadeComando.INDICADOR_DEBITO_SIM)) { MotivoNaoGeracaoDocCobranca motivoNaoGeracao = new MotivoNaoGeracaoDocCobranca(); motivoNaoGeracao.setId(MotivoNaoGeracaoDocCobranca.IMOVEL_SEM_DEBITOS); imovelNaoGerado.setMotivoNaoGeracaoDocCobranca(motivoNaoGeracao); getControladorUtil().inserir(imovelNaoGerado); imovelNaoGerado = null; // indica que o im�vel n�o satisfaz o crit�rio de cobran�a return verificarCriterioCobrancaParaImovelHelper; } else { // caso n�o seja cmando, seja cronograma ent�o descarta if (cobrancaAcaoAtividadeComando == null) { MotivoNaoGeracaoDocCobranca motivoNaoGeracao = new MotivoNaoGeracaoDocCobranca(); motivoNaoGeracao.setId(MotivoNaoGeracaoDocCobranca.IMOVEL_SEM_DEBITOS); imovelNaoGerado.setMotivoNaoGeracaoDocCobranca(motivoNaoGeracao); getControladorUtil().inserir(imovelNaoGerado); imovelNaoGerado = null; // indica que o im�vel n�o satisfaz o crit�rio de cobran�a return verificarCriterioCobrancaParaImovelHelper; } } } // fim item 6 // item 7 // se o indicador de emiss�o de d�bito da conta do m�s for igual a // 2(dois) - N�O if (cobrancaCriterio.getIndicadorEmissaoDebitoContaMes().intValue() == 2) { if (colecaoContasValores != null) { // se existe somente uma conta if (colecaoContasValores.size() == 1) { // recupera a conta Conta conta = (colecaoContasValores.iterator().next()).getConta(); // se a conta for a conta do m�s if (conta.getReferencia() == Util.subtrairData(sistemaParametros.getAnoMesFaturamento())) { MotivoNaoGeracaoDocCobranca motivoNaoGeracao = new MotivoNaoGeracaoDocCobranca(); motivoNaoGeracao.setId(MotivoNaoGeracaoDocCobranca.CRITERIO_NAO_PERMITE_DEBITO_APENAS_CONTA_MES); imovelNaoGerado.setMotivoNaoGeracaoDocCobranca(motivoNaoGeracao); getControladorUtil().inserir(imovelNaoGerado); imovelNaoGerado = null; // indica que o im�vel n�o satisfaz o crit�rio de // cobran�a return verificarCriterioCobrancaParaImovelHelper; } } } } // fim item 7 // item 8 // se o indicador de emiss�o de d�bito da conta antiga for igual a // 2(dois) - N�O if (cobrancaCriterio.getIndicadorEmissaoDebitoContaAntiga().intValue() == 2) { if (colecaoContasValores != null) { // se existe somente uma conta if (colecaoContasValores.size() == 1) { // recupera a conta Conta conta = (colecaoContasValores.iterator().next()).getConta(); // se a conta for uma conta antiga if (conta.getReferencia() <= (sistemaParametros.getAnoMesFaturamento() - (cobrancaCriterio.getNumeroContaAntiga() * 100))) { MotivoNaoGeracaoDocCobranca motivoNaoGeracao = new MotivoNaoGeracaoDocCobranca(); motivoNaoGeracao.setId(MotivoNaoGeracaoDocCobranca.CRITERIO_NAO_PERMITE_DEBITO_APENAS_CONTA_ANTIGA); imovelNaoGerado.setMotivoNaoGeracaoDocCobranca(motivoNaoGeracao); getControladorUtil().inserir(imovelNaoGerado); imovelNaoGerado = null; // indica que o im�vel n�o satisfaz o crit�rio de // cobran�a return verificarCriterioCobrancaParaImovelHelper; } } } } // fim item 8 // item 9 // se o indicador de emiss�o de d�bito da conta do m�s for igual a // 2(dois) - N�O // e o indicador de emiss�o de d�bito da conta antiga for igual a // 2(dois) - N�O if (cobrancaCriterio.getIndicadorEmissaoDebitoContaMes().intValue() == 2 && cobrancaCriterio.getIndicadorEmissaoDebitoContaAntiga().intValue() == 2) { if (colecaoContasValores != null) { // se existe s� duas contas if (colecaoContasValores.size() == 2) { // flag que indica que a conta � do m�s boolean flagContaMes = false; // flag que indica que a conta � uma conta antiga boolean flagContaAntiga = false; // la�o para verificar se as contas � uma do m�s e outra // antiga for (ContaValoresHelper contaValorHelper : colecaoContasValores) { // recupera a conta Conta conta = contaValorHelper.getConta(); // se a conta for a do m�s if (conta.getReferencia() == Util.subtrairData(sistemaParametros.getAnoMesFaturamento())) { flagContaMes = true; } // se a conta n�o for antiga if (conta.getReferencia() <= (sistemaParametros.getAnoMesFaturamento() - (cobrancaCriterio.getNumeroContaAntiga() * 100))) { flagContaAntiga = true; } } // se as contas for uma antiga e a outra a do m�s if (flagContaMes && flagContaAntiga) { MotivoNaoGeracaoDocCobranca motivoNaoGeracao = new MotivoNaoGeracaoDocCobranca(); motivoNaoGeracao.setId(MotivoNaoGeracaoDocCobranca.CRITERIO_NAO_PERMITE_DEBITO_APENAS_CONTA_MES_E_ANTIGA); imovelNaoGerado.setMotivoNaoGeracaoDocCobranca(motivoNaoGeracao); getControladorUtil().inserir(imovelNaoGerado); imovelNaoGerado = null; // indica que o im�vel n�o satisfaz o crit�rio de // cobran�a return verificarCriterioCobrancaParaImovelHelper; } } } } // fim item 9 // item 10 // o sistema calcula a quantidade de contas com parcelamento do im�vel int quantidadeContasParcelamento = getControladorFaturamento().pesquisarQuantidadeDebitosCobradosComParcelamento( colecaoContasValores); // item 11 // cria a vari�vel que vai armazenar o d�bito do im�vel BigDecimal valorDebitoImovel = new BigDecimal("0.00"); // cria a vari�vel que vai armazenar a quantidades de itens em d�bito Integer quantidadeItensEmDebito = new Integer("0"); if (colecaoContasValores != null && !colecaoContasValores.isEmpty()) { // la�o para somar os valores das contas no valor do d�bito do // im�vel for (ContaValoresHelper contaValorHelp : colecaoContasValores) { // recupera a conta Conta conta = contaValorHelp.getConta(); // adiciona os valores da conta ao valor do d�bito do im�vel valorDebitoImovel = valorDebitoImovel.add(conta.getValorAgua()); valorDebitoImovel = valorDebitoImovel.add(conta.getValorEsgoto()); valorDebitoImovel = valorDebitoImovel.add(conta.getDebitos()); valorDebitoImovel = valorDebitoImovel.subtract(conta.getValorCreditos()); valorDebitoImovel = valorDebitoImovel.subtract(conta.getValorImposto()); } // item 12 // calcula a quantidade de itens em d�bito do im�vel quantidadeItensEmDebito = quantidadeItensEmDebito + colecaoContasValores.size(); } if (acaoCobranca == null || acaoCobranca != null && acaoCobranca.getId().compareTo(CobrancaAcao.CARTA_FINAL_DE_ANO) != 0) { // la�o para somar os valores das guias de pagamento no valor do // d�bito // do im�vel if (colecaoGuiasPagamentoValores != null && !colecaoGuiasPagamentoValores.isEmpty()) { for (GuiaPagamentoValoresHelper guiaPagamentoValoresHelper : colecaoGuiasPagamentoValores) { // recupera a guia de pagamento GuiaPagamento guiaPagamento = guiaPagamentoValoresHelper.getGuiaPagamento(); // adiciona o valor do d�bito da guia ao valor do d�bito do // im�vel valorDebitoImovel = valorDebitoImovel.add(guiaPagamento.getValorDebito()); } // item 12 // calcula a quantidade de itens em d�bito do im�vel quantidadeItensEmDebito = quantidadeItensEmDebito + colecaoGuiasPagamentoValores.size(); } // la�o para somar os valores dos d�bitos a cobrar no valor do // d�bito do // im�vel if (colecaoDebitoACobrar != null && !colecaoDebitoACobrar.isEmpty()) { for (DebitoACobrar debitoACobrar : colecaoDebitoACobrar) { // adiciona o valor do d�bito ao valor do d�bito do im�vel valorDebitoImovel = valorDebitoImovel.add(debitoACobrar.getValorTotalComBonus()); } // item 12 // calcula a quantidade de itens em d�bito do im�vel quantidadeItensEmDebito = quantidadeItensEmDebito + colecaoDebitoACobrar.size(); } // fim item 11 } if (acaoCobranca != null && acaoCobranca.getId().compareTo(CobrancaAcao.CARTA_FINAL_DE_ANO) == 0) { ResolucaoDiretoria resolucaoDiretoria = new ResolucaoDiretoria(); resolucaoDiretoria.setId(14); // 4. caso de lista de conta n�o esteja vazia if (debitoImovel.getColecaoContasValores() != null && !debitoImovel.getColecaoContasValores().isEmpty() && debitoImovel.getColecaoContasValores().size() >= 2) { BigDecimal valorDebitoTotalAtualizado = BigDecimal.ZERO; BigDecimal valorTotalRestanteParcelamentosACobrar = BigDecimal.ZERO; BigDecimal valorCreditoARealizar = BigDecimal.ZERO; BigDecimal valorTotalMultasDasContas = BigDecimal.ZERO; BigDecimal valorTotalJurosMoraDasContas = BigDecimal.ZERO; BigDecimal valorTotalAtualizacoesMonetariasDasContas = BigDecimal.ZERO; BigDecimal descontoTotalPagamentoAVista = new BigDecimal("0.00"); BigDecimal valorPagamentoAVista = new BigDecimal("0.00"); BigDecimal valorTotalImpostosConta = new BigDecimal("0.00"); IndicadoresParcelamentoHelper indicadoresParcelamentoHelper = new IndicadoresParcelamentoHelper(); indicadoresParcelamentoHelper.setIndicadorDebitosACobrar(indicadorDebitoACobrar); indicadoresParcelamentoHelper.setIndicadorCreditoARealizar(indicadorCreditoARalizar); indicadoresParcelamentoHelper.setIndicadorGuiasPagamento(indicadorGuiaPagamento); indicadoresParcelamentoHelper.setIndicadorAcrescimosImpotualidade(indicadorCalcularAcrescimoImpontualidade); indicadoresParcelamentoHelper.setIndicadorContasRevisao(indicadorConta); indicadoresParcelamentoHelper.setIndicadorDividaAtiva(new Integer("3")); Object[] valorDebitoTotalEAcrescimoImpontualidadeTotal = calcularValorTotalDebitoAtualizadoParaParcelamento(debitoImovel, indicadoresParcelamentoHelper, false); if (valorDebitoTotalEAcrescimoImpontualidadeTotal != null) { valorDebitoTotalAtualizado = (BigDecimal) valorDebitoTotalEAcrescimoImpontualidadeTotal[0]; valorTotalRestanteParcelamentosACobrar = (BigDecimal) valorDebitoTotalEAcrescimoImpontualidadeTotal[5]; valorCreditoARealizar = (BigDecimal) valorDebitoTotalEAcrescimoImpontualidadeTotal[6]; valorTotalMultasDasContas = (BigDecimal) valorDebitoTotalEAcrescimoImpontualidadeTotal[7]; valorTotalJurosMoraDasContas = (BigDecimal) valorDebitoTotalEAcrescimoImpontualidadeTotal[8]; valorTotalAtualizacoesMonetariasDasContas = (BigDecimal) valorDebitoTotalEAcrescimoImpontualidadeTotal[9]; } Integer numeroReparcelamentoConsecutivos = 0; if (imovel.getNumeroReparcelamentoConsecutivos() != null) { numeroReparcelamentoConsecutivos = new Integer(imovel.getNumeroReparcelamentoConsecutivos().toString()); } // CARREGANDO O HELPER COM AS INFORMA��ES DO PARCELAMENTO ObterOpcoesDeParcelamentoHelper helper = new ObterOpcoesDeParcelamentoHelper(resolucaoDiretoria.getId(), imovel.getId(), null, imovel.getLigacaoAguaSituacao().getId(), imovel.getLigacaoEsgotoSituacao().getId(), imovel.getImovelPerfil().getId(), "010001", // Refer�ncia inicial do d�bito new Integer("2"), // indicadorRestabelecimento debitoImovel.getColecaoContasValores(), valorDebitoTotalAtualizado, valorTotalMultasDasContas, valorTotalJurosMoraDasContas, valorTotalAtualizacoesMonetariasDasContas, numeroReparcelamentoConsecutivos, debitoImovel.getColecaoGuiasPagamentoValores(), Usuario.USUARIO_BATCH, valorTotalRestanteParcelamentosACobrar, cobrancaAcaoAtividadeComando.getAnoMesReferenciaContaInicial(), // Refer�ncia // inicial // do // d�bito cobrancaAcaoAtividadeComando.getAnoMesReferenciaContaFinal(), // Refer�ncia // final // do // d�bito indicadoresParcelamentoHelper, valorCreditoARealizar); NegociacaoOpcoesParcelamentoHelper opcoesParcelamento = this.obterOpcoesDeParcelamento(helper); // Defini��o do valor do documento e do valor do desconto if (opcoesParcelamento.getValorTotalDescontoPagamentoAVista() != null) { descontoTotalPagamentoAVista = opcoesParcelamento.getValorTotalDescontoPagamentoAVista(); } valorTotalImpostosConta = debitoImovel.obterValorImpostosDasContas(debitoImovel.getColecaoContasValores()); valorPagamentoAVista = valorDebitoTotalAtualizado.subtract(descontoTotalPagamentoAVista); valorPagamentoAVista = valorPagamentoAVista.subtract(valorTotalImpostosConta); valorDebitoImovel = valorPagamentoAVista; } else { MotivoNaoGeracaoDocCobranca motivoNaoGeracao = new MotivoNaoGeracaoDocCobranca(); motivoNaoGeracao.setId(MotivoNaoGeracaoDocCobranca.QTD_CONTAS_INVALIDA_PARA_PARCELAMENTO); imovelNaoGerado.setMotivoNaoGeracaoDocCobranca(motivoNaoGeracao); getControladorUtil().inserir(imovelNaoGerado); imovelNaoGerado = null; // indica que o im�vel n�o satisfaz o crit�rio de // cobran�a return verificarCriterioCobrancaParaImovelHelper; } } // item 12 // calcula a quantidade de itens em d�bito do im�vel /* * comentado por pedro alexandre dia 01/04/2006 quantidadeItensEmDebito * = colecaoContasValores.size(); quantidadeItensEmDebito = * colecaoGuiasPagamentoValores.size(); quantidadeItensEmDebito = * colecaoDebitoACobrar.size(); */ // fim item 12 // cria uma flag para o indicador de cobran�a boolean flagIndicadorCriterioCobranca = false; // item 13 // la�o para verificar se alguma linha do crit�rio de cobran�a satisfaz // o crit�rio de cobran�a do im�vel labelLinha: for (CobrancaCriterioLinha cobrancaCriterioLinha : colecaoCobrancaCriterioLinha) { // item 13.1 // se o perfil do im�vel for igual ao da linha if (!imovel.getImovelPerfil().getId().equals((cobrancaCriterioLinha.getImovelPerfil().getId()))) { // passa para a pr�xima linha do crit�rio de cobran�a continue labelLinha; } // fim item 13.1 Integer existenciaImovelSubCategoria = null; // item 13.2 // cria o filtro de im�vel sub-categoria existenciaImovelSubCategoria = getControladorImovel().pesquisarExistenciaImovelSubCategoria(imovel.getId(), cobrancaCriterioLinha.getCategoria().getId()); // se n�o existir nenhuma subcategoria if (existenciaImovelSubCategoria == null) { // passa para a pr�xima linha do crit�rio de cobran�a continue labelLinha; } // fim item 13.2 // item 13.3 // se o valor do d�bito do im�vel for menor que o valor minimo do // d�bito da linha de crit�rio de cobran�a // ou se o valor do d�bito do im�vel for maior que o valor m�ximo do // d�bito da linha de crit�rio de cobran�a if (valorDebitoImovel.doubleValue() < cobrancaCriterioLinha.getValorMinimoDebito().doubleValue() || valorDebitoImovel.doubleValue() > cobrancaCriterioLinha.getValorMaximoDebito().doubleValue()) { MotivoNaoGeracaoDocCobranca motivoNaoGeracao = new MotivoNaoGeracaoDocCobranca(); motivoNaoGeracao.setId(MotivoNaoGeracaoDocCobranca.VALOR_DEBITO_FORA_INTERVALO_DEFINIDO_CRITERIO); imovelNaoGerado.setMotivoNaoGeracaoDocCobranca(motivoNaoGeracao); getControladorUtil().inserir(imovelNaoGerado); // passa para a pr�xima linha do crit�rio de cobran�a continue labelLinha; } // fim item 13.3 // item 13.4 // se a quantidade de itens em d�bito do im�vel for menor que a // quantidade minima de contas da linha de crit�rio de cobran�a // ou se a quantidade de itens em d�bito do im�vel for maior que a // quantidade m�xima de contas da linha de crit�rio de cobran�a if (quantidadeItensEmDebito.intValue() < cobrancaCriterioLinha.getQuantidadeMinimaContas().intValue() || quantidadeItensEmDebito.intValue() > cobrancaCriterioLinha.getQuantidadeMaximaContas().intValue()) { MotivoNaoGeracaoDocCobranca motivoNaoGeracao = new MotivoNaoGeracaoDocCobranca(); motivoNaoGeracao.setId(MotivoNaoGeracaoDocCobranca.QTD_ITENS_FORA_INTERVALO_DEFINIDO_CRITERIO); imovelNaoGerado.setMotivoNaoGeracaoDocCobranca(motivoNaoGeracao); getControladorUtil().inserir(imovelNaoGerado); // passa para a pr�xima linha do crit�rio de cobran�a continue labelLinha; } // fim item 13.4 // item 13.5 // caso o im�vel esteja cadastrado como d�bito autom�tico if (imovel.getIndicadorDebitoConta() != null && imovel.getIndicadorDebitoConta().shortValue() == 1) { // item 13.5.1 // se o valor do d�bito do im�vel seja menor que o valor minimo // para d�bito autom�tico if (valorDebitoImovel.doubleValue() < cobrancaCriterioLinha.getValorMinimoDebitoDebitoAutomatico().doubleValue()) { MotivoNaoGeracaoDocCobranca motivoNaoGeracao = new MotivoNaoGeracaoDocCobranca(); motivoNaoGeracao.setId(MotivoNaoGeracaoDocCobranca.VALOR_DEBITO_AUTOMATICO_MENOR_QUE_MINIMO); imovelNaoGerado.setMotivoNaoGeracaoDocCobranca(motivoNaoGeracao); getControladorUtil().inserir(imovelNaoGerado); // passa para a pr�xima linha do crit�rio de cobran�a continue labelLinha; } // fim item 13.5.1 // item 13.5.2 // se a quantidade de itens em d�bito do im�vel for menor que a // quantidade minima de itens para d�bito autom�tico if (quantidadeItensEmDebito.intValue() < cobrancaCriterioLinha.getQuantidadeMinimaContasDebitoAutomatico()) { MotivoNaoGeracaoDocCobranca motivoNaoGeracao = new MotivoNaoGeracaoDocCobranca(); motivoNaoGeracao.setId(MotivoNaoGeracaoDocCobranca.QTD_ITENS_MENOR_MINIMA_PARA_DEBITO_AUTOMATICO); imovelNaoGerado.setMotivoNaoGeracaoDocCobranca(motivoNaoGeracao); getControladorUtil().inserir(imovelNaoGerado); // passa para a pr�xima linha do crit�rio de cobran�a continue labelLinha; } // fim item 13.5.2 } // fim item 13.5 // item 13.6 // caso o im�vel possua d�bito somente da conta do m�s if (colecaoContasValores != null && !colecaoContasValores.isEmpty()) { // --ALTERADO POR LEONARDO VIEIRA boolean flagContaMes = false; Conta conta = null; for (ContaValoresHelper contaValorHelper : colecaoContasValores) { // recupera a conta conta = contaValorHelper.getConta(); // se a conta for a do m�s if (conta.getReferencia() == Util.subtrairData(sistemaParametros.getAnoMesFaturamento())) { flagContaMes = true; } } if (colecaoContasValores.size() == 1 && flagContaMes) { if (cobrancaCriterio.getIndicadorEmissaoInquilinoDebitoContaMes() == 1) { boolean usuarioNaoIquilino = getControladorCliente().verificaUsuarioinquilino( Util.converterStringParaInteger(matriculaImovel)); if (usuarioNaoIquilino) { // se o valor do d�bito do im�vel for menor que a // valor // m�nimo // para a conta do m�s if (valorDebitoImovel.doubleValue() < cobrancaCriterioLinha.getValorMinimoContaMes().doubleValue()) { MotivoNaoGeracaoDocCobranca motivoNaoGeracao = new MotivoNaoGeracaoDocCobranca(); motivoNaoGeracao.setId(MotivoNaoGeracaoDocCobranca.VALOR_DEBITO_MENOR_QUE_MINIMO_CASO_INQUILINO_CONTA_MES); imovelNaoGerado.setMotivoNaoGeracaoDocCobranca(motivoNaoGeracao); getControladorUtil().inserir(imovelNaoGerado); // passa para a pr�xima linha do crit�rio de // cobran�a continue labelLinha; } } } else { // se o valor do d�bito do im�vel for menor que a // valor // m�nimo // para a conta do m�s if (valorDebitoImovel.doubleValue() < cobrancaCriterioLinha.getValorMinimoContaMes().doubleValue()) { MotivoNaoGeracaoDocCobranca motivoNaoGeracao = new MotivoNaoGeracaoDocCobranca(); motivoNaoGeracao.setId(MotivoNaoGeracaoDocCobranca.VALOR_DEBITO_MENOR_QUE_MINIMO_CASO_INQUILINO); imovelNaoGerado.setMotivoNaoGeracaoDocCobranca(motivoNaoGeracao); getControladorUtil().inserir(imovelNaoGerado); // passa para a pr�xima linha do crit�rio de // cobran�a continue labelLinha; } } } } // fim item 13.6 // item 13.7 // Caso a quantidade de contas do im�vel com parcelamento seja maior // que a quantidade minima de contas com parcelamento para emiss�o // de a��o de cobran�a if (quantidadeContasParcelamento < cobrancaCriterioLinha.getQuantidadeMinimaContasParcelamento().intValue()) { MotivoNaoGeracaoDocCobranca motivoNaoGeracao = new MotivoNaoGeracaoDocCobranca(); motivoNaoGeracao.setId(MotivoNaoGeracaoDocCobranca.QTD_CONTAS_PARCELADAS_MENOR_QUE_MINIMA); imovelNaoGerado.setMotivoNaoGeracaoDocCobranca(motivoNaoGeracao); getControladorUtil().inserir(imovelNaoGerado); // passa para a pr�xima linha do crit�rio de // cobran�a continue labelLinha; } // caso o im�vel satisfazer todos os crit�rios anteriores // seta a flag pra true (indica que o im�vel satisfaz o crit�rio de // cobran�a) flagIndicadorCriterioCobranca = true; // termina o la�o das linhas de crit�rio de cobran�a break labelLinha; } // fim item 13 // item 14 // se o im�vel satisfaz o crit�rio de cobran�a if (flagIndicadorCriterioCobranca) { // seta os dados no objeto que vai ser retornado pelo met�do verificarCriterioCobrancaParaImovelHelper.setFlagCriterioCobrancaImovel(true); verificarCriterioCobrancaParaImovelHelper.setQuantidadeItensEmDebito(quantidadeItensEmDebito); verificarCriterioCobrancaParaImovelHelper.setValorDebitoImovel(valorDebitoImovel); verificarCriterioCobrancaParaImovelHelper.setColecaoContasValores(colecaoContasValores); verificarCriterioCobrancaParaImovelHelper.setColecaoDebitoACobrar(colecaoDebitoACobrar); verificarCriterioCobrancaParaImovelHelper.setColecaoGuiasPagamentoValores(colecaoGuiasPagamentoValores); } imovelNaoGerado = null; // retorna o objeto com todas as informa��es necess�rias // para identificar se o im�vel satisfaz ou n�o o crit�rio de cobran�a return verificarCriterioCobrancaParaImovelHelper; // fim item 14 } /** * [UC0246] Executar Atividade de A��o de Cobran�a [SF0001] Selecionar Lista * de Rotas * * @author Pedro Alexandre * @created 06/02/2006 * * @param cobrancaGrupo * Grupo de cobran�a * @param cobrancaAcaoAtividadeComando * Cobran�a A��o Atividade Comando * @throws ControladorException * Controlador Exception */ public Collection<Rota> pesquisarListaRotasComando(CobrancaGrupo cobrancaGrupo, CobrancaAcaoAtividadeComando cobrancaAcaoAtividadeComando) throws ControladorException { // cria a vari�vel que vai armazenar a cole��o de rotas pesquisadas Collection<Rota> colecaoRotas = null; // crio filtro de rota FiltroRota filtroRota = new FiltroRota(); // se o grupo de cobran�a n�o estiver nulo if (cobrancaGrupo != null) { // seta o c�digo do grupo de cobran�a no filtro de rota filtroRota.adicionarParametro(new ParametroSimples(FiltroRota.COBRANCA_GRUPO_ID, cobrancaGrupo.getId())); // carrega os objetos necess�rios de rota // filtroRota.adicionarCaminhoParaCarregamentoEntidade("cobrancaCriterio"); // pesquisa a cole��o de rotas colecaoRotas = getControladorUtil().pesquisar(filtroRota, Rota.class.getName()); } else { // cria o objeto da cole��o de rotas colecaoRotas = new ArrayList(); // cria o filtro de cobran�a de atividade do comando de rotas FiltroCobrancaAtividadeComandoRotas filtroCobrancaAtividadeComandoRotas = new FiltroCobrancaAtividadeComandoRotas(); // seta o c�digo da cobran�a de a��o de atividade do comando no // filtro filtroCobrancaAtividadeComandoRotas.adicionarParametro(new ParametroSimples( FiltroCobrancaAtividadeComandoRotas.COBRANCA_ACAO_ATIVIDADE_COMANDO_ID, cobrancaAcaoAtividadeComando.getId())); // carrega os objetos necess�rios para a pesquisa filtroCobrancaAtividadeComandoRotas.adicionarCaminhoParaCarregamentoEntidade("rota"); // filtroCobrancaAtividadeComandoRotas.adicionarCaminhoParaCarregamentoEntidade("rota.cobrancaCriterio"); // pesquisa a cole��o de CobrancaAtividadeComandoRota Collection<CobrancaAtividadeComandoRota> colecaoCobrancaAtividadeRotas = getControladorUtil().pesquisar( filtroCobrancaAtividadeComandoRotas, CobrancaAtividadeComandoRota.class.getName()); // la�o para recuperar todas as rotas for (CobrancaAtividadeComandoRota cobrancaAtividadeComandoRota : colecaoCobrancaAtividadeRotas) { // adiciona a rota na cole��o colecaoRotas.add(cobrancaAtividadeComandoRota.getRota()); } } // retorna a cole��o de rotas pesquisadas return colecaoRotas; } /** * [UC0246] Executar Atividade de A��o de Cobran�a Pesquisa uma cole��o de * CobrancaAcaoAtividadeCronograma * * @author Pedro Alexandre * @created 01/02/2006 * * @throws ControladorException * Controlador Exception */ public Collection<CobrancaAcaoAtividadeCronograma> pesquisarCobrancaAcaoAtividadeCronograma() throws ControladorException { try { // chama o met�do de pesquisar do reposit�rio return repositorioCobranca.pesquisarCobrancaAcaoAtividadeCronograma(); // erro nohibernate } catch (ErroRepositorioException ex) { // seta o rollback sessionContext.setRollbackOnly(); // levanta a exce��o para a pr�xima camada throw new ControladorException("erro.sistema", ex); } } /** * [UC0246] Executar Atividade de A��o de Cobran�a Pesquisa uma cole��o de * CobrancaAcaoAtividadeComando * * @author Pedro Alexandre * @created 01/02/2006 * * @throws ControladorException * Controlador Exception */ public Collection<CobrancaAcaoAtividadeComando> pesquisarCobrancaAcaoAtividadeComando() throws ControladorException { try { // chama o met�do de pesquisar do reposit�rio return repositorioCobranca.pesquisarCobrancaAcaoAtividadeComando(); // erro no hibernate } catch (ErroRepositorioException ex) { // seta o rollback sessionContext.setRollbackOnly(); // levanta a exce��o para a pr�xima camada throw new ControladorException("erro.sistema", ex); } } /** * M�todo utilizado obter o consumo hist�rico de um im�vel de acordo com o * tipo de liga��o e ano m�s de refer�ncia */ public ConsumoHistorico obterConsumoHistorico(Imovel imovel, LigacaoTipo ligacaoTipo, int anoMesReferencia) throws ControladorException { ConsumoHistorico consumoHistorico = null; Collection colecaoConsumoHistoricoArray = null; try { colecaoConsumoHistoricoArray = repositorioMicromedicao.pesquisarConsumoHistorico(imovel, ligacaoTipo, anoMesReferencia); } catch (ErroRepositorioException ex) { sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", ex); } if (colecaoConsumoHistoricoArray != null && !colecaoConsumoHistoricoArray.isEmpty()) { Object[] consumoHistoricoArray = (Object[]) Util.retonarObjetoDeColecaoArray(colecaoConsumoHistoricoArray); consumoHistorico = new ConsumoHistorico(); // Seta o id do hist�rico if (consumoHistoricoArray[0] != null) { consumoHistorico.setId((Integer) consumoHistoricoArray[0]); } // Seta o id do im�vel if (consumoHistoricoArray[1] != null) { imovel.setId(imovel.getId()); } // Seta o tipo de liga��o if (consumoHistoricoArray[2] != null) { consumoHistorico.setLigacaoTipo(ligacaoTipo); } // Seta o ano mes de refer�ncia if (consumoHistoricoArray[3] != null) { consumoHistorico.setReferenciaFaturamento(anoMesReferencia); } // Seta o indicador de altera��o dos �ltimos consumos if (consumoHistoricoArray[4] != null) { consumoHistorico .setIndicadorAlteracaoUltimosConsumos(new Short("2")); } // Seta o indicador de ajuste if (consumoHistoricoArray[5] != null) { consumoHistorico .setIndicadorAjuste((Short) consumoHistoricoArray[5]); } // Seta o consumo a ser cobrado no m�s if (consumoHistoricoArray[6] != null) { consumoHistorico .setNumeroConsumoFaturadoMes((Integer) consumoHistoricoArray[6]); } // Seta o consumo rateio if (consumoHistoricoArray[7] != null) { consumoHistorico .setConsumoRateio((Integer) consumoHistoricoArray[7]); } // Seta o consumo hist�rico condom�nio if (consumoHistoricoArray[8] != null) { ConsumoHistorico consumoHistoricoCondominio = new ConsumoHistorico(); consumoHistoricoCondominio .setId((Integer) consumoHistoricoArray[8]); consumoHistorico .setConsumoHistoricoCondominio(consumoHistoricoCondominio); } // Seta o indicador im�vel condom�nio if (consumoHistoricoArray[9] != null) { consumoHistorico .setIndicadorImovelCondominio((Short) consumoHistoricoArray[9]); } // Seta o consumo m�dio if (consumoHistoricoArray[10] != null) { consumoHistorico .setConsumoMedio((Integer) consumoHistoricoArray[10]); } // Seta o consumo m�nimo de �gua if (consumoHistoricoArray[11] != null) { consumoHistorico .setConsumoMinimo((Integer) consumoHistoricoArray[11]); } // Seta o percentual de coleta if (consumoHistoricoArray[12] != null) { consumoHistorico .setPercentualColeta((BigDecimal) consumoHistoricoArray[12]); } // Seta a �ltima altera��o if (consumoHistoricoArray[13] != null) { consumoHistorico .setUltimaAlteracao((Date) consumoHistoricoArray[13]); } // Seta o rateio tipo if (consumoHistoricoArray[14] != null) { RateioTipo rateioTipo = new RateioTipo(); rateioTipo.setId((Integer) consumoHistoricoArray[14]); consumoHistorico.setRateioTipo(rateioTipo); } // Seta o consumo tipo if (consumoHistoricoArray[15] != null) { ConsumoTipo consumoTipo = new ConsumoTipo(); consumoTipo.setId((Integer) consumoHistoricoArray[15]); consumoHistorico.setConsumoTipo(consumoTipo); } // Seta a anormalidade de consumo if (consumoHistoricoArray[16] != null) { ConsumoAnormalidade consumoAnormalidade = new ConsumoAnormalidade(); consumoAnormalidade.setId((Integer) consumoHistoricoArray[16]); consumoHistorico.setConsumoAnormalidade(consumoAnormalidade); } // Seta o po�o tipo if (consumoHistoricoArray[17] != null) { PocoTipo pocoTipo = new PocoTipo(); pocoTipo.setId((Integer) consumoHistoricoArray[17]); consumoHistorico.setPocoTipo(pocoTipo); } // Seta o faturamento situa��o tipo if (consumoHistoricoArray[18] != null) { FaturamentoSituacaoTipo faturamentoSituacaoTipo = new FaturamentoSituacaoTipo(); faturamentoSituacaoTipo .setId((Integer) consumoHistoricoArray[18]); consumoHistorico .setFaturamentoSituacaoTipo(faturamentoSituacaoTipo); } // Seta o faturamento situa��o tipo if (consumoHistoricoArray[19] != null) { consumoHistorico .setIndicadorFaturamento((Short) consumoHistoricoArray[19]); } } return consumoHistorico; } /** * Inseri a cobran�a situa��o historico na base passando a cole��o de * cobran�a situa��o historico * * [UC0177] Informar Situacao Especial de Cobran�a * * @author S�vio Luiz * @date 20/03/2006 * * @param collectionCobrancaSituacaoHistorico * @return */ public void inserirCobrancaSituacaoHistorico(Collection collectionCobrancaSituacaoHistorico) throws ControladorException { try { Iterator iterator = collectionCobrancaSituacaoHistorico.iterator(); // ------------ REGISTRAR TRANSA��O ---------------- while (iterator.hasNext()) { CobrancaSituacaoHistorico csh = (CobrancaSituacaoHistorico) iterator.next(); RegistradorOperacao registradorOperacao = new RegistradorOperacao(Operacao.OPERACAO_INFORMAR_SITUACAO_ESPECIAL_COBRANCA, csh.getImovel().getId(), csh.getImovel().getId(), new UsuarioAcaoUsuarioHelper(csh.getUsuario(), UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO)); registradorOperacao.registrarOperacao(csh); this.repositorioUtil.inserir(csh); } // ------------ REGISTRAR TRANSA��O ---------------- // this.repositorioCobranca.inserirCobrancaSituacaoHistorico(collectionCobrancaSituacaoHistorico); } catch (ErroRepositorioException ex) { sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", ex); } } /** * Permite efetuar o parcelamento dos d�bitos de um im�vel * * [UC0214] Efetuar Parcelamento de D�bitos * * Verifica a exist�ncia de parcelamento no m�s * * [FS0012] Verifica a exist�ncia de parcelamento no m�s * * @author Roberta Costa * @date 21/03/2006 * * @param codigoImovel * @return Collection<Parcelamento> */ public Collection<Parcelamento> verificarParcelamentoMesImovel(Integer codigoImovel) throws ControladorException { FiltroParcelamento filtroParcelamento = new FiltroParcelamento(); filtroParcelamento.adicionarParametro(new ParametroSimples(FiltroParcelamento.IMOVEL_ID, codigoImovel)); filtroParcelamento.adicionarParametro(new ParametroSimples(FiltroParcelamento.ANO_MES_REFERENCIA_FATURAMENTO, Util .getAnoMesComoInteger(new Date()))); filtroParcelamento.adicionarParametro(new ParametroSimples(FiltroParcelamento.PARCELAMENTO_SITUACAO, ParcelamentoSituacao.NORMAL)); Collection<Parcelamento> colecaoParcelamento = getControladorUtil().pesquisar(filtroParcelamento, Parcelamento.class.getName()); return colecaoParcelamento; } /** * Permite efetuar o parcelamento dos d�bitos de um im�vel * * [UC0214] Efetuar Parcelamento de D�bitos * * Atualiza a situa��o das Contas para Efetuar Parcelamento * * atualizarContaEfetuarParcelamentoDebito * * @author Roberta Costa * @date 21/03/2006 * * @param efetuarParcelamentoDebitosActionForm * @param colecaoContaValores * @return Collection */ public void atualizarContaEfetuarParcelamentoDebito(Conta conta, boolean isContaEntradaParcelamento, Integer maiorAnoMesContas) throws ControladorException { SistemaParametro sistemaParametros = null; sistemaParametros = getControladorUtil().pesquisarParametrosDoSistema(); Integer situacaoAnterior = null; if (conta.getDebitoCreditoSituacaoAtual().getId().equals(DebitoCreditoSituacao.NORMAL) && (conta.getReferenciaContabil() >= sistemaParametros.getAnoMesFaturamento()) || (conta.getDebitoCreditoSituacaoAtual().getId().equals(DebitoCreditoSituacao.RETIFICADA) || conta .getDebitoCreditoSituacaoAtual().getId().equals(DebitoCreditoSituacao.INCLUIDA)) && (conta.getReferenciaContabil() >= sistemaParametros.getAnoMesFaturamento())) { situacaoAnterior = conta.getDebitoCreditoSituacaoAtual().getId(); } else { situacaoAnterior = null; } // 6.1.1.2 Situa��o atual DebitoCreditoSituacao debitoCreditoSituacaoAtual = new DebitoCreditoSituacao(); debitoCreditoSituacaoAtual.setId(DebitoCreditoSituacao.PARCELADA); conta.setDebitoCreditoSituacaoAtual(debitoCreditoSituacaoAtual); if (situacaoAnterior == null) { conta.setDebitoCreditoSituacaoAnterior(null); } else { DebitoCreditoSituacao debitoCreditoSituacaoAnterior = new DebitoCreditoSituacao(); debitoCreditoSituacaoAnterior.setId(situacaoAnterior); conta.setDebitoCreditoSituacaoAnterior(debitoCreditoSituacaoAnterior); } conta.setUltimaAlteracao(new Date()); // conta.setReferenciaContabil(Util.recuperaAnoMesDaData(new Date())); // alterado por Vivianne Sousa 01/09/2008 // analista :Aryed Integer referenciaContabil = obterReferenciaContabilParcelamentoOUConta(isContaEntradaParcelamento, null, maiorAnoMesContas); conta.setReferenciaContabil(referenciaContabil); // Atualiza na Base de dados getControladorUtil().atualizar(conta); // Alterado por Francisco - 27/05/08, por conta do Resumo de A��es de // cobran�a // Analista: Ana Breda try { // Atualizar documento de cobranca da conta, se houver, para // parcelado repositorioCobranca.atualizarSituacaoCobrancaDocumentoItem(CobrancaDebitoSituacao.PARCELADO, new Date(), conta.getId(), null, null); } catch (ErroRepositorioException ex) { sessionContext.setRollbackOnly(); new ControladorException("erro.sistema", ex); } } /** * Permite efetuar o parcelamento dos d�bitos de um im�vel * * [UC0214] Efetuar Parcelamento de D�bitos * * Obt�m as Op��es de Parcelamento do D�bito do Im�vel * * [SB0002] Obter Op��es Parcelamento * * @author Roberta Costa, Vivianne Sousa, Raphael Rossiter * @date 21/03/2006, 30/10/2006, 12/09/2008 * * @param efetuarParcelamentoDebitosActionForm * @param colecaoContaValores * @return Collection */ public NegociacaoOpcoesParcelamentoHelper obterOpcoesDeParcelamento(ObterOpcoesDeParcelamentoHelper helper) throws ControladorException { NegociacaoOpcoesParcelamentoHelper negociacaoOpcoesParcelamentoHelper = new NegociacaoOpcoesParcelamentoHelper(); // [SB0004] - Verificar Situa��o do Im�vel e Perfil Parcelamento Object[] situacaoImovelPerfilParcelamento = this.verificarSituacaoImovelPerfilParcelamento( helper.getIdLigacaoAguaSituacao(), helper.getIdLigacaoEsgotoSituacao(), helper.getIdImovel(), helper.getIdImovelPerfil(), helper.getIdResolucaoDiretoria(), helper.getNumeroReparcelamentoConsecutivos(), helper.getValorDebitoACobrarParcelamentoImovel()); ParcelamentoPerfil parcelamentoPerfil = (ParcelamentoPerfil) situacaoImovelPerfilParcelamento[0]; ImovelSituacao imovelSituacao = (ImovelSituacao) situacaoImovelPerfilParcelamento[1]; Collection colecaoParcelamentoQuantidadePrestacao = (Collection) situacaoImovelPerfilParcelamento[2]; ParcelamentoQuantidadeReparcelamento parcelamentoQuantidadeReparcelamento = (ParcelamentoQuantidadeReparcelamento) situacaoImovelPerfilParcelamento[3]; negociacaoOpcoesParcelamentoHelper.setParcelamentoPerfil(parcelamentoPerfil); // 1. [SB0003]- Calcular valor do desconto por antiguidade do d�bito BigDecimal valorDescontoAntiguidade = new BigDecimal("0.00"); BigDecimal valorTotalAcrescimosImpontualidadePorAntiguidadeMulta = new BigDecimal("0.00"); BigDecimal valorTotalAcrescimosImpontualidadePorAntiguidadeJurosMora = new BigDecimal("0.00"); BigDecimal valorTotalAcrescimosImpontualidadePorAntiguidadeAtualizacaoMonetaria = new BigDecimal("0.00"); int quantidadeMinimaMesesAntiguidade = 0; CalcularValorDescontoAntiguidadeDebitoHelper descontoAntiguidadeDebito = calcularValorDescontoAntiguidadeDebito(helper.getIdResolucaoDiretoria(), helper.getIdImovel(), helper.getValorEntradaInformado(), helper.getIdLigacaoAguaSituacao(), helper.getIdLigacaoEsgotoSituacao(), helper.getColecaoContaValores(), parcelamentoPerfil, helper.getIndicadorRestabelecimento(), helper.getValorTotalMultas(), helper.getValorTotalJurosMora(), helper.getValorTotalAtualizacoesMonetarias(), negociacaoOpcoesParcelamentoHelper); valorDescontoAntiguidade = descontoAntiguidadeDebito.getValorDescontoAntiguidade(); valorTotalAcrescimosImpontualidadePorAntiguidadeMulta = descontoAntiguidadeDebito.getValorTotalAcrescimosImpontualidadeMulta(); valorTotalAcrescimosImpontualidadePorAntiguidadeJurosMora = descontoAntiguidadeDebito.getValorTotalAcrescimosImpontualidadeJurosMora(); valorTotalAcrescimosImpontualidadePorAntiguidadeAtualizacaoMonetaria = descontoAntiguidadeDebito.getValorTotalAcrescimosImpontualidadeAtualizacaoMonetaria(); quantidadeMinimaMesesAntiguidade = descontoAntiguidadeDebito.getMaiorQuantidadeMinimaMesesAntiguidade().intValue(); negociacaoOpcoesParcelamentoHelper.setColecaoContasEmAntiguidade(descontoAntiguidadeDebito.getColecaoContasEmAntiguidade()); negociacaoOpcoesParcelamentoHelper.setColecaoContasParaParcelamento(descontoAntiguidadeDebito.getColecaoContasParaParcelamento()); BigDecimal valorAcrescimosImpontualidadeGuiaPagamentoAtualizacaoMonetaria = new BigDecimal("0.00"); valorAcrescimosImpontualidadeGuiaPagamentoAtualizacaoMonetaria.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); BigDecimal valorAcrescimosImpontualidadeGuiaPagamentoJurosMora = new BigDecimal("0.00"); valorAcrescimosImpontualidadeGuiaPagamentoJurosMora.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); BigDecimal valorAcrescimosImpontualidadeGuiaPagamentoMulta = new BigDecimal("0.00"); valorAcrescimosImpontualidadeGuiaPagamentoMulta.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); if (!parcelamentoPerfil.getPercentualDescontoAcrescimoMulta().equals(new BigDecimal("0.00")) && !parcelamentoPerfil.getPercentualDescontoAcrescimoJurosMora().equals(new BigDecimal("0.00")) && !parcelamentoPerfil.getPercentualDescontoAcrescimoAtualizacaoMonetaria().equals(new BigDecimal("0.00"))) { if (helper.getColecaoGuiaPagamento() != null && !helper.getColecaoGuiaPagamento().isEmpty()) { Iterator guiaPagamentoValores = helper.getColecaoGuiaPagamento().iterator(); while (guiaPagamentoValores.hasNext()) { GuiaPagamentoValoresHelper guiaPagamentoValoresHelper = (GuiaPagamentoValoresHelper) guiaPagamentoValores.next(); if (guiaPagamentoValoresHelper.getValorAtualizacaoMonetaria() != null && !guiaPagamentoValoresHelper.getValorAtualizacaoMonetaria().equals("")) { valorAcrescimosImpontualidadeGuiaPagamentoAtualizacaoMonetaria = valorAcrescimosImpontualidadeGuiaPagamentoAtualizacaoMonetaria.add( guiaPagamentoValoresHelper.getValorAtualizacaoMonetaria().setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO)); } if (guiaPagamentoValoresHelper.getValorJurosMora() != null && !guiaPagamentoValoresHelper.getValorJurosMora().equals("")) { valorAcrescimosImpontualidadeGuiaPagamentoJurosMora = valorAcrescimosImpontualidadeGuiaPagamentoJurosMora.add( guiaPagamentoValoresHelper.getValorJurosMora().setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO)); } valorAcrescimosImpontualidadeGuiaPagamentoMulta = new BigDecimal("0.00"); if (guiaPagamentoValoresHelper.getValorMulta() != null && !guiaPagamentoValoresHelper.getValorMulta().equals("")) { valorAcrescimosImpontualidadeGuiaPagamentoMulta = valorAcrescimosImpontualidadeGuiaPagamentoMulta.add( guiaPagamentoValoresHelper.getValorMulta().setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO)); } } } } FiltroResolucaoDiretoria filtroResolucaoDiretoria = new FiltroResolucaoDiretoria(); filtroResolucaoDiretoria.adicionarParametro(new ParametroSimples(FiltroResolucaoDiretoria.CODIGO, helper.getIdResolucaoDiretoria())); Collection colecaoRD = getControladorUtil().pesquisar(filtroResolucaoDiretoria, ResolucaoDiretoria.class.getName()); ResolucaoDiretoria rd = (ResolucaoDiretoria) Util.retonarObjetoDeColecao(colecaoRD); // ==================== RD especial ======================= BigDecimal valorDescontoSancoesRDEspecial = BigDecimal.ZERO; BigDecimal valorDescontoAcrescimosImpontualidadeRDEspecial = BigDecimal.ZERO; BigDecimal valorDescontoTarifaSocialRDEspecial = BigDecimal.ZERO; Integer anoMesAtualMenosQuantMinimaMesesAntiguidade = 0; if (quantidadeMinimaMesesAntiguidade != 0) { Date data = Util.adcionarOuSubtrairMesesAData(new Date(), -quantidadeMinimaMesesAntiguidade, 0); anoMesAtualMenosQuantMinimaMesesAntiguidade = Util.getAnoMesComoInteger(data); } Integer anoMesLimiteMinimo = null; if (parcelamentoPerfil.getAnoMesReferenciaLimiteInferior() != null) { anoMesLimiteMinimo = parcelamentoPerfil.getAnoMesReferenciaLimiteInferior(); } Integer anoMesLimiteMaximo = null; if (parcelamentoPerfil.getAnoMesReferenciaLimiteSuperior() != null) { anoMesLimiteMaximo = parcelamentoPerfil.getAnoMesReferenciaLimiteSuperior(); } if (anoMesLimiteMinimo == null || helper.getAnoMesInicialReferenciaDebito().compareTo(anoMesLimiteMinimo) > 0) { anoMesLimiteMinimo = helper.getAnoMesInicialReferenciaDebito(); } if (anoMesLimiteMinimo != null && anoMesLimiteMinimo.compareTo(anoMesAtualMenosQuantMinimaMesesAntiguidade) < 0) { anoMesLimiteMinimo = anoMesAtualMenosQuantMinimaMesesAntiguidade; } if (helper.getAnoMesInicialReferenciaDebito() != null && helper.getAnoMesInicialReferenciaDebito().compareTo(anoMesAtualMenosQuantMinimaMesesAntiguidade) == 1) { anoMesAtualMenosQuantMinimaMesesAntiguidade = helper.getAnoMesInicialReferenciaDebito(); } if (anoMesLimiteMaximo == null && helper.getAnoMesFinalReferenciaDebito() != null) { anoMesLimiteMaximo = helper.getAnoMesFinalReferenciaDebito(); } else if (anoMesLimiteMaximo != null && helper.getAnoMesFinalReferenciaDebito() != null && helper.getAnoMesFinalReferenciaDebito().compareTo(anoMesLimiteMaximo) < 0) { anoMesLimiteMaximo = helper.getAnoMesFinalReferenciaDebito(); } if (rd.getIndicadorDescontoSancoes().equals(ConstantesSistema.SIM)) { BigDecimal valorDescontoSancoesRDEspecialDebitoACobrar = BigDecimal.ZERO; BigDecimal valorDescontoSancoesRDEspecialDebitoCobrado = BigDecimal.ZERO; BigDecimal valorDescontoAcrescimosImpontualidadeRDEspecialDebitoACobrar = BigDecimal.ZERO; BigDecimal valorDescontoAcrescimosImpontualidadeRDEspecialDebitoCobrado = BigDecimal.ZERO; if (parcelamentoPerfil.getPercentualDescontoSancao() != null && !parcelamentoPerfil.getPercentualDescontoSancao().equals(BigDecimal.ZERO)) { valorDescontoSancoesRDEspecialDebitoACobrar = pesquisarValorDebitoACobrarSancoes(helper.getIdImovel(), helper.getAnoMesInicialReferenciaDebito(), anoMesLimiteMaximo); if (valorDescontoSancoesRDEspecialDebitoACobrar == null) { valorDescontoSancoesRDEspecialDebitoACobrar = BigDecimal.ZERO; } valorDescontoSancoesRDEspecialDebitoCobrado = pesquisarValorDebitoCobradoSancoes(helper.getIdImovel(), anoMesAtualMenosQuantMinimaMesesAntiguidade, anoMesLimiteMaximo, helper .getIndicadoresParcelamentoHelper().getIndicadorDividaAtiva()); if (valorDescontoSancoesRDEspecialDebitoCobrado == null) { valorDescontoSancoesRDEspecialDebitoCobrado = BigDecimal.ZERO; } valorDescontoSancoesRDEspecial = valorDescontoSancoesRDEspecialDebitoACobrar.add(valorDescontoSancoesRDEspecialDebitoCobrado); valorDescontoSancoesRDEspecial = valorDescontoSancoesRDEspecial.multiply(parcelamentoPerfil.getPercentualDescontoSancao().divide(new BigDecimal("100.00"))); } if (helper.getAnoMesInicialReferenciaDebito() != null && anoMesLimiteMaximo != null) { valorDescontoAcrescimosImpontualidadeRDEspecialDebitoACobrar = pesquisarValorDebitoACobrar(helper.getIdImovel(), helper.getAnoMesInicialReferenciaDebito(), anoMesLimiteMaximo); } if (valorDescontoAcrescimosImpontualidadeRDEspecialDebitoACobrar == null) { valorDescontoAcrescimosImpontualidadeRDEspecialDebitoACobrar = BigDecimal.ZERO; } if (anoMesLimiteMaximo != null && anoMesAtualMenosQuantMinimaMesesAntiguidade != null) { valorDescontoAcrescimosImpontualidadeRDEspecialDebitoCobrado = pesquisarValorDebitoCobradoContas(helper.getIdImovel(), anoMesAtualMenosQuantMinimaMesesAntiguidade, anoMesLimiteMaximo, helper.getIndicadoresParcelamentoHelper().getIndicadorDividaAtiva()); } if (valorDescontoAcrescimosImpontualidadeRDEspecialDebitoCobrado == null) { valorDescontoAcrescimosImpontualidadeRDEspecialDebitoCobrado = BigDecimal.ZERO; } valorDescontoAcrescimosImpontualidadeRDEspecial = valorDescontoAcrescimosImpontualidadeRDEspecialDebitoCobrado.add(valorDescontoAcrescimosImpontualidadeRDEspecialDebitoACobrar); } if (helper.getIdImovelPerfil().equals(ImovelPerfil.TARIFA_SOCIAL) && parcelamentoPerfil.getIndicadorRetroativoTarifaSocial() != null && parcelamentoPerfil.getIndicadorRetroativoTarifaSocial().equals(ConstantesSistema.SIM)) { valorDescontoTarifaSocialRDEspecial = obterDescontoTarifaSocial(helper.getIdImovel(), anoMesLimiteMinimo, anoMesLimiteMaximo, parcelamentoPerfil, helper.getIndicadoresParcelamentoHelper() .getIndicadorContasRevisao()); } // CALCULANDO O VALOR DO DESCONTO POR FAIXA DE REFERENCIA DA CONTA BigDecimal valorDescontoFaixaReferenciaConta = new BigDecimal("0.00"); if (rd.getIndicadorDescontoFaixaReferenciaConta().equals(ConstantesSistema.SIM)) { valorDescontoFaixaReferenciaConta = this.determinarValorDescontoFaixaReferenciaConta(helper.getColecaoContaValores()); } // CALCULANDO O VALOR DO DESCONTO DOS ACR�SCIMOS POR IMPONTUALIDADE DeterminarValorDescontoAcrescimosImpontualidadeHelper valorDescontoAcrescimosImpontualidadeHelper = new DeterminarValorDescontoAcrescimosImpontualidadeHelper(parcelamentoPerfil, valorTotalAcrescimosImpontualidadePorAntiguidadeMulta, valorTotalAcrescimosImpontualidadePorAntiguidadeJurosMora, valorTotalAcrescimosImpontualidadePorAntiguidadeAtualizacaoMonetaria, valorAcrescimosImpontualidadeGuiaPagamentoMulta, valorAcrescimosImpontualidadeGuiaPagamentoJurosMora, valorAcrescimosImpontualidadeGuiaPagamentoAtualizacaoMonetaria, valorDescontoAcrescimosImpontualidadeRDEspecial); BigDecimal valorDescontoAcrescimosImpontualidade = this.determinarValorDescontoAcrescimosImpontualidade(valorDescontoAcrescimosImpontualidadeHelper); // 3. Caso o tipo da situa��o do imovel seja INATIVO (com situa��o da LIGACAO_AGUA igual a Suprimido, Suprimido Parcial a Pedido ou Suprimido Parcial BigDecimal valorDescontoInatividade = new BigDecimal("0.00"); BigDecimal valorDescontoInatividadePagamentoAVista = new BigDecimal("0.00"); // Valor do D�bito Total menos os descontos de Acrescimo e Antiguidade BigDecimal valorDebitoDescontoInatividade = new BigDecimal("0.00"); valorDebitoDescontoInatividade = helper.getValorDebitoAtualizado().setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO) .subtract(valorDescontoAcrescimosImpontualidade.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO)); valorDebitoDescontoInatividade = valorDebitoDescontoInatividade.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO).subtract( valorDescontoAntiguidade.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO)); valorDebitoDescontoInatividade = valorDebitoDescontoInatividade.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO).subtract( valorDescontoSancoesRDEspecial.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO)); valorDebitoDescontoInatividade = valorDebitoDescontoInatividade.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO).subtract( valorDescontoTarifaSocialRDEspecial.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO)); if (imovelSituacao.getImovelSituacaoTipo().getId().equals(ImovelSituacaoTipo.INATIVO) || imovelSituacao.getImovelSituacaoTipo().getId().equals(ImovelSituacaoTipo.LIGADO_SO_ESGOTO)) { // 3.1 Calcula a qtd de meses de inatividade de liga��o de �gua FiltroLigacaoAgua filtroLigacaoAgua = new FiltroLigacaoAgua(); filtroLigacaoAgua.adicionarParametro(new ParametroSimples(FiltroLigacaoAgua.ID, helper.getIdImovel())); Collection<LigacaoAgua> colecaoLigacaoAgua = getControladorUtil().pesquisar(filtroLigacaoAgua, LigacaoAgua.class.getName()); Calendar dataAnoMesReferencia = new GregorianCalendar(); dataAnoMesReferencia.set(Calendar.YEAR, new Integer(helper.getInicioIntervaloParcelamento().substring(3, 4)).intValue()); dataAnoMesReferencia.set(Calendar.MONTH, new Integer(helper.getInicioIntervaloParcelamento().substring(0, 2)).intValue()); dataAnoMesReferencia.set(Calendar.DATE, 01); Date dataCorrente = new Date(); int quantidadeMeses = 0; if (Util.isVazioOrNulo(colecaoLigacaoAgua)) { // [FS0008] - Verificar a exist�ncia da data de supress�o da liga��o de �gua quantidadeMeses = Util.dataDiff(dataAnoMesReferencia.getTime(), dataCorrente); } else { // Pega a primeira ocorr�ncia da cole��o LigacaoAgua ligacaoAgua = (LigacaoAgua) Util.retonarObjetoDeColecao(colecaoLigacaoAgua); Date dataSupressao = null; if (ligacaoAgua != null) { dataSupressao = ligacaoAgua.getDataSupressao(); } if (dataSupressao != null && !dataSupressao.equals("")) { quantidadeMeses = Util.dataDiff(dataSupressao, dataCorrente); } else { // [FS0008] - Verificar a exist�ncia da data de supress�o da liga��o de �gua quantidadeMeses = Util.dataDiff(dataAnoMesReferencia.getTime(), dataCorrente); } } // 3.2 Obtem os percentuais de desconto por tempo de inatividade ParcelamentoDescontoInatividade parcelamentoDescontoInatividadeMenor = null; try { parcelamentoDescontoInatividadeMenor = repositorioCobranca.obterPercentualDescontoInatividade(parcelamentoPerfil.getId(), quantidadeMeses); } catch (ErroRepositorioException e) { e.printStackTrace(); } if (parcelamentoDescontoInatividadeMenor != null) { BigDecimal percentualDescontoInatividade = null; if (helper.getIndicadorRestabelecimento().equals(2)) { // 3.3.1 Com restabelecimento percentualDescontoInatividade = parcelamentoDescontoInatividadeMenor.getPercentualDescontoSemRestabelecimento(); valorDescontoInatividade = Util .dividirArredondando(percentualDescontoInatividade.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO), new BigDecimal("100.00")); valorDescontoInatividade = valorDescontoInatividade.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO).multiply( valorDebitoDescontoInatividade.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO)); } else if (helper.getIndicadorRestabelecimento().equals(1)) { // 3.3.2 Sem restabelecimento percentualDescontoInatividade = parcelamentoDescontoInatividadeMenor.getPercentualDescontoComRestabelecimento().setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); valorDescontoInatividade = Util .dividirArredondando(percentualDescontoInatividade.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO), new BigDecimal("100.00")); valorDescontoInatividade = valorDescontoInatividade.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO).multiply( valorDebitoDescontoInatividade.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO)); } else { valorDescontoInatividade = new BigDecimal("0.00"); } negociacaoOpcoesParcelamentoHelper.setPercentualDescontoInatividadeLigacaoAgua(percentualDescontoInatividade); } else { // 3.3 Caso nenhuma ocorr�ncia tenha sido selecionada valorDescontoInatividade = new BigDecimal("0.00"); } // Obtem os percentuais de desconto por tempo de inatividade ParcDesctoInativVista parcelamentoDescontoInatividadeAVistaMenor = null; try { parcelamentoDescontoInatividadeAVistaMenor = repositorioCobranca.obterPercentualDescontoInatividadeAVista(parcelamentoPerfil.getId(), quantidadeMeses); } catch (ErroRepositorioException e) { e.printStackTrace(); } if (parcelamentoDescontoInatividadeAVistaMenor != null) { BigDecimal percentualDescontoInatividadeAVista = null; if (helper.getIndicadorRestabelecimento().equals(2)) { // Com restabelecimento percentualDescontoInatividadeAVista = parcelamentoDescontoInatividadeAVistaMenor.getPercentualDescontoSemRestabelecimento(); valorDescontoInatividadePagamentoAVista = Util.dividirArredondando(percentualDescontoInatividadeAVista.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO), new BigDecimal("100.00")); valorDescontoInatividadePagamentoAVista = valorDescontoInatividadePagamentoAVista.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO).multiply( valorDebitoDescontoInatividade.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO)); } else if (helper.getIndicadorRestabelecimento().equals(1)) { // Sem restabelecimento percentualDescontoInatividadeAVista = parcelamentoDescontoInatividadeAVistaMenor.getPercentualDescontoComRestabelecimento().setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); valorDescontoInatividadePagamentoAVista = Util.dividirArredondando(percentualDescontoInatividadeAVista.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO), new BigDecimal("100.00")); valorDescontoInatividadePagamentoAVista = valorDescontoInatividadePagamentoAVista.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO).multiply( valorDebitoDescontoInatividade.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO)); } else { valorDescontoInatividadePagamentoAVista = new BigDecimal("0.00"); } negociacaoOpcoesParcelamentoHelper.setPercentualDescontoInatividadeAvistaLigacaoAgua(percentualDescontoInatividadeAVista); } else { // Caso nenhuma ocorr�ncia tenha sido selecionada valorDescontoInatividadePagamentoAVista = new BigDecimal("0.00"); } } else { valorDescontoInatividade = new BigDecimal("0.00"); valorDescontoInatividadePagamentoAVista = new BigDecimal("0.00"); } BigDecimal valorDebitoDesconto = new BigDecimal("0.00"); valorDebitoDesconto = helper.getValorDebitoAtualizado().setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO) .subtract(valorDescontoAcrescimosImpontualidade.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO)); valorDebitoDesconto = valorDebitoDesconto.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO) .subtract(valorDescontoInatividade.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO)); valorDebitoDesconto = valorDebitoDesconto.subtract(valorDescontoAntiguidade.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO)); valorDebitoDesconto = valorDebitoDesconto.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO) .subtract(valorDescontoSancoesRDEspecial.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO)); valorDebitoDesconto = valorDebitoDesconto.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO) .subtract(valorDescontoTarifaSocialRDEspecial.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO)); valorDebitoDesconto = valorDebitoDesconto.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO) .subtract(valorDescontoFaixaReferenciaConta.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO)); negociacaoOpcoesParcelamentoHelper.setValorDebitoDesconto(valorDebitoDesconto); // CALCULANDO O VALOR TOTAL DOS DESCONTOS PARA PAGAMENTO � VISTA DeterminarValorDescontoPagamentoAVistaHelper valorDescontoPagamentoAVistaHelper = new DeterminarValorDescontoPagamentoAVistaHelper( helper, parcelamentoPerfil, valorDescontoFaixaReferenciaConta, valorDescontoAcrescimosImpontualidade, valorDescontoInatividade, valorDescontoAntiguidade, valorDescontoSancoesRDEspecial, valorDescontoTarifaSocialRDEspecial, anoMesLimiteMaximo, rd, helper.getValorCreditoARealizarParcelamentoImovel(), valorDescontoInatividadePagamentoAVista); BigDecimal valorDescontoPagamentoAVista = this.determinarValorDescontoPagamentoAVista(valorDescontoPagamentoAVistaHelper, valorDescontoAcrescimosImpontualidadeHelper, true); valorDescontoPagamentoAVista = calcularDescontoTotalPagamentoAVista(helper, parcelamentoPerfil, valorDescontoPagamentoAVista); negociacaoOpcoesParcelamentoHelper.setValorDescontoFaixaReferenciaConta(valorDescontoFaixaReferenciaConta); negociacaoOpcoesParcelamentoHelper.setValorDescontoAcrecismosImpotualidade(valorDescontoAcrescimosImpontualidade); negociacaoOpcoesParcelamentoHelper.setValorDescontoInatividade(valorDescontoInatividade); negociacaoOpcoesParcelamentoHelper.setValorDescontoAntiguidade(valorDescontoAntiguidade); negociacaoOpcoesParcelamentoHelper.setValorDescontoSancoesRDEspecial(valorDescontoSancoesRDEspecial); negociacaoOpcoesParcelamentoHelper.setValorDescontoTarifaSocialRDEspecial(valorDescontoTarifaSocialRDEspecial); negociacaoOpcoesParcelamentoHelper.setValorTotalDescontoPagamentoAVista(valorDescontoPagamentoAVista); BigDecimal valorEntrada = new BigDecimal("0.00"); BigDecimal valorEntradaSugerida = null; if (colecaoParcelamentoQuantidadePrestacao != null && !colecaoParcelamentoQuantidadePrestacao.isEmpty()) { Short quantidadePrestacao = 1; FiltroImovel filtroImovel = new FiltroImovel(); filtroImovel.adicionarParametro(new ParametroSimples(FiltroImovel.ID, helper.getIdImovel())); filtroImovel.adicionarCaminhoParaCarregamentoEntidade(FiltroImovel.CONSUMO_TARIFA); Collection<Imovel> imovelPesquisado = getControladorUtil().pesquisar(filtroImovel, Imovel.class.getName()); // Verificar exist�ncioa da matr�cula do im�vel Imovel imovel = null; if (imovelPesquisado != null && !imovelPesquisado.isEmpty()) { imovel = (Imovel) Util.retonarObjetoDeColecao(imovelPesquisado); } // Calcula o valor minimo da tarifa de �gua do im�vel BigDecimal valorTarifaMinimaAguaImovel = getControladorFaturamento().obterTarifaMinimaAguaImovel(imovel).setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); // Valor min�mo da presta��o na op��o de parcelamento aba de negocia��o BigDecimal valorMinimoPrestacao = valorTarifaMinimaAguaImovel.multiply(parcelamentoPerfil.getPercentualTarifaMinimaPrestacao().divide(new BigDecimal("100.00"))); valorMinimoPrestacao.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); negociacaoOpcoesParcelamentoHelper.setValorMinimoPrestacao(valorMinimoPrestacao); Boolean existeParcelamentoEmAndamento = verificaSeExisteParcelamentoEmAndamento(helper.getIdImovel(), rd); Short indicadorExisteParcelamentoEmAndamento = ConstantesSistema.SIM; if (!existeParcelamentoEmAndamento) { indicadorExisteParcelamentoEmAndamento = ConstantesSistema.NAO; if (rd.getIndicadorNegociacaoSoAVista().equals(ConstantesSistema.NAO)) { // 5.4. Para cada ocorr�ncia selecionada da tabela PARCELAMENTO_QUANTIDADE_PRESTACAO Iterator parcelamentoQuantidadePrestacaoValores = colecaoParcelamentoQuantidadePrestacao.iterator(); int qtdeMaxParcQtdePrestacao = colecaoParcelamentoQuantidadePrestacao.size(); int qtdeAtualParcQtdePrestacao = 0; BigDecimal taxaJuros = new BigDecimal("0.00"); BigDecimal valorAParcelar = new BigDecimal("0.00"); BigDecimal fatorPrestacao = new BigDecimal("0.00"); BigDecimal valorUm = new BigDecimal("1.00"); BigDecimal valorZero = new BigDecimal("0.00"); BigDecimal valorCem = new BigDecimal("100.00"); BigDecimal valorPrestacao = new BigDecimal("0.00"); boolean minimoPermitido = true; BigDecimal percentualEntradaSugerida = new BigDecimal("0.00"); // caso o valor de percentual de entrada sugerida esteja informado if (parcelamentoQuantidadeReparcelamento.getPercentualEntradaSugerida() != null && !parcelamentoQuantidadeReparcelamento.getPercentualEntradaSugerida().setScale(Parcelamento.CASAS_DECIMAIS).equals(valorZero)) { percentualEntradaSugerida = parcelamentoQuantidadeReparcelamento.getPercentualEntradaSugerida().setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); valorEntradaSugerida = valorDebitoDesconto.multiply(percentualEntradaSugerida.divide(valorCem)); } negociacaoOpcoesParcelamentoHelper.setOpcoesParcelamento(new ArrayList()); // Verificar permiss�o especial boolean temPermissaoValMinimoPrestacao = getControladorPermissaoEspecial().verificarPermissaoEspecial(PermissaoEspecial.TESTAR_VAL_MINIMO_PRESTACAO, helper.getUsuario()); boolean temPermissaoNaoTestarQtdePrestacao = getControladorPermissaoEspecial().verificarPermissaoNaoTestarQtdePrestacaoParcelamento(helper.getUsuario()); while (parcelamentoQuantidadePrestacaoValores.hasNext()) { qtdeAtualParcQtdePrestacao++; ParcelamentoQuantidadePrestacao parcelamentoQuantidadePrestacao = (ParcelamentoQuantidadePrestacao) parcelamentoQuantidadePrestacaoValores.next(); // CALCULANDO O VALOR DA ENTRADA DO PARCELAMENTO valorEntrada = this.determinarValorEntradaParcelamento(helper, parcelamentoQuantidadePrestacao, valorTarifaMinimaAguaImovel, valorDebitoDesconto, valorEntradaSugerida, descontoAntiguidadeDebito.getColecaoContasParaParcelamento()); // CALCULANDO A QUANTIDADE M�XIMA DE PRESTA��ES Short quantidadeMaxPrestacao = this.determinarQuantidadeMaximaPrestacoes(descontoAntiguidadeDebito.getColecaoContasParaParcelamento(), parcelamentoQuantidadePrestacao); Short quantidadeMaxPrestacaoEspecial = parcelamentoQuantidadePrestacao.getQuantidadeMaxPrestacaoEspecial(); while ((quantidadePrestacao <= quantidadeMaxPrestacao && minimoPermitido || (qtdeAtualParcQtdePrestacao == qtdeMaxParcQtdePrestacao && quantidadeMaxPrestacaoEspecial != null && quantidadePrestacao <= quantidadeMaxPrestacaoEspecial && temPermissaoNaoTestarQtdePrestacao))) { OpcoesParcelamentoHelper parcelamento = new OpcoesParcelamentoHelper(); parcelamento.setValorEntradaMinima(valorEntrada.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO)); // 5.4.1. Para cada quantidade de presta��es at� que a quantidade de presta��es seja maior que a quantidade m�xima de parcelamentoQuantidadePrestacao if (quantidadePrestacao <= quantidadeMaxPrestacao || (quantidadeMaxPrestacaoEspecial != null && quantidadePrestacao <= quantidadeMaxPrestacaoEspecial && temPermissaoNaoTestarQtdePrestacao)) { parcelamento.setQuantidadePrestacao(quantidadePrestacao); // 5.4.1.5. Taxa de Juros taxaJuros = Util.dividirArredondando(parcelamentoQuantidadePrestacao.getTaxaJuros(), valorCem); parcelamento.setTaxaJuros(parcelamentoQuantidadePrestacao.getTaxaJuros().setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO)); // 5.4.1.6. Valor da Presta��o f�rmula 01 // 5.4.1.6.1. Calcula o valor a parcelar valorAParcelar = valorDebitoDesconto.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO).subtract( valorEntrada.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO)); // 5.4.1.6.2.Caso taxa de juros seja maior que zero if (taxaJuros.compareTo(valorZero) == 1) { // 5.4.1.6.2.1 Calcula o fator da presta��o SistemaParametro sp = this.getControladorUtil().pesquisarParametrosDoSistema(); if (sp.getIndicadorTabelaPrice() != null && sp.getIndicadorTabelaPrice().equals(ConstantesSistema.SIM)) { valorPrestacao = getControladorFaturamento().calcularPrestacao(taxaJuros.multiply(new BigDecimal(100)), quantidadePrestacao.intValue(), valorDebitoDesconto, valorEntrada); } else { fatorPrestacao = valorUm.add(taxaJuros.setScale(4, BigDecimal.ROUND_HALF_UP)); fatorPrestacao = fatorPrestacao.setScale(4, BigDecimal.ROUND_HALF_UP).pow(quantidadePrestacao); BigDecimal valorFuturo = (valorAParcelar.multiply(fatorPrestacao)).setScale(4, BigDecimal.ROUND_HALF_UP); // 5.4.1.6.2.2. Calcula o valor da presta��o valorPrestacao = Util.dividirArredondando(valorFuturo.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO), new BigDecimal(quantidadePrestacao)); } } else { // 5.4.1.6.3. Calcula o valor da presta��o valorPrestacao = Util.dividirArredondando(valorAParcelar.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO), new BigDecimal(quantidadePrestacao)); } parcelamento.setValorPrestacao(valorPrestacao.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO)); // RD Especial if (parcelamentoPerfil.getIndicadorAlertaParcelaMinima() != null && parcelamentoPerfil.getIndicadorAlertaParcelaMinima().equals(ConstantesSistema.SIM)) { if (valorPrestacao.compareTo(valorTarifaMinimaAguaImovel) == 1) { parcelamento.setIndicadorValorPrestacaoMaiorValorLimite(ConstantesSistema.SIM); } else { parcelamento.setIndicadorValorPrestacaoMaiorValorLimite(ConstantesSistema.NAO); } } else { parcelamento.setIndicadorValorPrestacaoMaiorValorLimite(ConstantesSistema.NAO); } if ((valorPrestacao.compareTo(valorMinimoPrestacao) == -1 && !temPermissaoValMinimoPrestacao) || valorPrestacao.compareTo(valorZero) <= 0) { minimoPermitido = false; } else { negociacaoOpcoesParcelamentoHelper.getOpcoesParcelamento().add(parcelamento); } quantidadePrestacao++; } } } } } negociacaoOpcoesParcelamentoHelper.setIndicadorExisteParcelamentoEmAndamento(indicadorExisteParcelamentoEmAndamento); } negociacaoOpcoesParcelamentoHelper.setValorEntradaMinima(valorEntrada.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO)); return negociacaoOpcoesParcelamentoHelper; } private BigDecimal calcularDescontoTotalPagamentoAVista(ObterOpcoesDeParcelamentoHelper helper, ParcelamentoPerfil parcelamentoPerfil, BigDecimal valorDescontoPagamentoAVista) { if (parcelamentoPerfil.getPercentualDescontoTotalPagamentoAVista() != null && !parcelamentoPerfil.getPercentualDescontoTotalPagamentoAVista().equals(new BigDecimal("0.00"))) { BigDecimal percentualDescontoTotalPagamentoAVista = Util.dividirArredondando(parcelamentoPerfil.getPercentualDescontoTotalPagamentoAVista(),ConstantesSistema.CEM); BigDecimal valorDebitoTotalAVista = helper.getValorDebitoAtualizado().subtract(valorDescontoPagamentoAVista); BigDecimal valorDescontoTotalPagamentoAVista = valorDebitoTotalAVista.multiply(percentualDescontoTotalPagamentoAVista); valorDescontoPagamentoAVista = valorDescontoPagamentoAVista.add(valorDescontoTotalPagamentoAVista); } return valorDescontoPagamentoAVista; } /** * Permite efetuar o parcelamento dos d�bitos de um im�vel * * [UC0214] Efetuar Parcelamento de D�bitos * * Calcula o valor do desconto por antiguidade do d�bito * * [SB0003] - Calcular valor do desconto por antiguidade do d�bito * * @author Roberta Costa * @date 21/03/2006 * * @param resolucaoDiretoria * @param codigoImovel * @param valorEntrada * @param situacaoAgua * @param situacaoEsgoto * @return */ public CalcularValorDescontoAntiguidadeDebitoHelper calcularValorDescontoAntiguidadeDebito(Integer resolucaoDiretoria, Integer codigoImovel, BigDecimal valorEntrada, Integer situacaoAgua, Integer situacaoEsgoto, Collection colecaoContaValores, ParcelamentoPerfil parcelamentoPerfil, Integer indicadorRestabelecimento, BigDecimal valorTotalMultas, BigDecimal valorTotalJurosMora, BigDecimal valorTotalAtualizacoesMonetarias, NegociacaoOpcoesParcelamentoHelper negociacaoOpcoesParcelamentoHelper) throws ControladorException { CalcularValorDescontoAntiguidadeDebitoHelper retorno = null; // Campos Formul�rio BigDecimal valorDescontoAntiguidade = new BigDecimal("0.00"); /* * Felipe Santos * * Desconto sobre os Acrescimos por Impotualidade calculado * individualmente por item. */ BigDecimal valorTotalAcrescimosImpontualidadeMulta = new BigDecimal("0.00"); BigDecimal valorTotalAcrescimosImpontualidadeJurosMora = new BigDecimal("0.00"); BigDecimal valorTotalAcrescimosImpontualidadeAtualizacaoMonetaria = new BigDecimal("0.00"); // fim altera��o int quantidadeMinimaMesesAntiguidade = 0; int maiorQuantidadeMinimaMesesAntiguidade = 0; Collection colecaoContasEmAntiguidade = new ArrayList(); Collection colecaoContasParaParcelamento = new ArrayList(); // 2. Para cada conta da lista de conta de D�bitos BigDecimal valorDescontoAntiguidadeConta = new BigDecimal("0.00"); BigDecimal valorDescontoAntiguidadeMulta = new BigDecimal("0.00"); BigDecimal valorDescontoAntiguidadeJurosMora = new BigDecimal("0.00"); BigDecimal valorDescontoAntiguidadeAtualizacoesMonetarias = new BigDecimal("0.00"); BigDecimal valorDescontoAntiguidadeMultaTotal = new BigDecimal("0.00"); BigDecimal valorDescontoAntiguidadeJurosMoraTotal = new BigDecimal("0.00"); BigDecimal valorDescontoAntiguidadeAtualizacoesMonetariasTotal = new BigDecimal("0.00"); if (colecaoContaValores != null && !colecaoContaValores.equals("")) { Iterator contaValores = colecaoContaValores.iterator(); while (contaValores.hasNext()) { ContaValoresHelper contaValoresHelper = (ContaValoresHelper) contaValores.next(); if (contaValoresHelper.getIndicadorContasDebito() == null || !contaValoresHelper.getIndicadorContasDebito().equals(new Integer("2"))) { // Colocado por Raphael Rossiter em 29/08/2008 Collection<ParcelamentoDescontoAntiguidade> colecaoParcelamentoDescontoAntiguidade = this .obterParcelamentoDescontoAntiguidadeParaConta(parcelamentoPerfil, contaValoresHelper.getConta()); ParcelamentoDescontoAntiguidade parcelamentoDescontoAntiguidadeMaior = new ParcelamentoDescontoAntiguidade(); BigDecimal percentualDescontoAntiguidade = new BigDecimal("0.00"); // 2.3 Caso nenhuma ocorr�ncia tenha sido selecionada passar // para a pr�xima conta if (colecaoParcelamentoDescontoAntiguidade != null && !colecaoParcelamentoDescontoAntiguidade.isEmpty()) { // CONTAS EM ANTIGUIDADE colecaoContasEmAntiguidade.add(contaValoresHelper); Iterator parcelamentoDescontoAntiguidadeValores = colecaoParcelamentoDescontoAntiguidade.iterator(); quantidadeMinimaMesesAntiguidade = 0; maiorQuantidadeMinimaMesesAntiguidade = 0; // 2.4 Determina o percentual de desconto por // antiguidade do d�bito while (parcelamentoDescontoAntiguidadeValores.hasNext()) { ParcelamentoDescontoAntiguidade parcelamentoDescontoAntiguidade = (ParcelamentoDescontoAntiguidade) parcelamentoDescontoAntiguidadeValores .next(); quantidadeMinimaMesesAntiguidade = parcelamentoDescontoAntiguidade.getQuantidadeMinimaMesesDebito(); if (quantidadeMinimaMesesAntiguidade > maiorQuantidadeMinimaMesesAntiguidade) { maiorQuantidadeMinimaMesesAntiguidade = quantidadeMinimaMesesAntiguidade; parcelamentoDescontoAntiguidadeMaior = parcelamentoDescontoAntiguidade; } } // 2.4.1 Caso a situa��o da liga��o de �gua do im�vel // corresponda suprimido, suprimido parcial ou // suprimido parcial a pedido if (situacaoAgua.equals(LigacaoAguaSituacao.SUPRIMIDO) || situacaoAgua.equals(LigacaoAguaSituacao.SUPR_PARC) || situacaoAgua.equals(LigacaoAguaSituacao.SUPR_PARC_PEDIDO)) { // 2.4.1.1 Caso tenha sido informado que haver� // restabelecimento if (indicadorRestabelecimento.equals(new Integer("1"))) { percentualDescontoAntiguidade = parcelamentoDescontoAntiguidadeMaior .getPercentualDescontoComRestabelecimento(); } else if (indicadorRestabelecimento.equals(new Integer("2"))) { percentualDescontoAntiguidade = parcelamentoDescontoAntiguidadeMaior .getPercentualDescontoSemRestabelecimento(); } } else { // 2.4.2 Casoa a situa��o do im�vel seja diferente // de 2 percentualDescontoAntiguidade = parcelamentoDescontoAntiguidadeMaior.getPercentualDescontoAtivo(); } negociacaoOpcoesParcelamentoHelper.setPercentualDescontoAntiguidadeDebito(percentualDescontoAntiguidade.setScale( Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO)); // 2.5 Calcula os valores BigDecimal percentual = Util.dividirArredondando(percentualDescontoAntiguidade, new BigDecimal("100")); // 2.5.1 Valor desconto por antiguidade da conta valorDescontoAntiguidadeConta = contaValoresHelper.getConta().getValorTotal() .setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO).multiply(percentual); // 2.5.2 Valor desconto por antiguidade da multa if (contaValoresHelper.getValorMulta() != null) { valorDescontoAntiguidadeMulta = contaValoresHelper.getValorMulta() .setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO).multiply(percentual); } // 2.5.3 Valor desconto por antiguidade nos juros de // mora if (contaValoresHelper.getValorJurosMora() != null) { valorDescontoAntiguidadeJurosMora = contaValoresHelper.getValorJurosMora() .setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO).multiply(percentual); } // 2.5.4 Valor desconto por antiguidade nas atualiza��es // monet�rias if (contaValoresHelper.getValorAtualizacaoMonetaria() != null) { valorDescontoAntiguidadeAtualizacoesMonetarias = contaValoresHelper.getValorAtualizacaoMonetaria() .setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO).multiply(percentual); } /* * Colocado por Raphael Rossiter em 03/12/2008 As contas * onde o perfil de parcelamento para desconto de * antiguidade estiver com o motivo de revis�o informado * N�O entrar�o no parcelamento. */ // 2.6 Acumula o valor do desconto por antiguidade valorDescontoAntiguidade = valorDescontoAntiguidade.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO).add( valorDescontoAntiguidadeConta.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO)); valorDescontoAntiguidade = valorDescontoAntiguidade.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO).add( valorDescontoAntiguidadeMulta.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO)); valorDescontoAntiguidade = valorDescontoAntiguidade.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO).add( valorDescontoAntiguidadeJurosMora.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO)); valorDescontoAntiguidade = valorDescontoAntiguidade.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO).add( valorDescontoAntiguidadeAtualizacoesMonetarias.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO)); valorDescontoAntiguidadeMultaTotal = valorDescontoAntiguidadeMultaTotal.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO).add( valorDescontoAntiguidadeMulta.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO)); valorDescontoAntiguidadeJurosMoraTotal = valorDescontoAntiguidadeJurosMoraTotal.setScale( Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO).add( valorDescontoAntiguidadeJurosMora.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO)); valorDescontoAntiguidadeAtualizacoesMonetariasTotal = valorDescontoAntiguidadeAtualizacoesMonetariasTotal.setScale( Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO).add( valorDescontoAntiguidadeAtualizacoesMonetarias.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO)); } else { // CONTAS PARA PARCELAMENTO colecaoContasParaParcelamento.add(contaValoresHelper); } } } // 2.7 Subtrai o valor das multas if (valorTotalMultas != new BigDecimal("0.00")) { valorTotalMultas = valorTotalMultas.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO).subtract( valorDescontoAntiguidadeMultaTotal.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO)); } // 2.8 Subtrai o valor total dos juros de mora if (valorTotalJurosMora != new BigDecimal("0.00")) { valorTotalJurosMora = valorTotalJurosMora.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO).subtract( valorDescontoAntiguidadeJurosMoraTotal.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO)); } // 2.7 Subtrai o valor total das atualiza��es monet�rias if (valorTotalAtualizacoesMonetarias != new BigDecimal("0.00")) { valorTotalAtualizacoesMonetarias = valorTotalAtualizacoesMonetarias.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO).subtract( valorDescontoAntiguidadeAtualizacoesMonetariasTotal.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO)); } } // 3. Recalcula o valor total dos acrescimos por impontualidade /* * Felipe Santos * * Desconto sobre os Acrescimos por Impotualidade calculado * individualmente por item. */ valorTotalAcrescimosImpontualidadeMulta = valorTotalAcrescimosImpontualidadeMulta.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO).add( valorTotalMultas.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO)); valorTotalAcrescimosImpontualidadeJurosMora = valorTotalAcrescimosImpontualidadeJurosMora.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO).add( valorTotalJurosMora.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO)); valorTotalAcrescimosImpontualidadeAtualizacaoMonetaria = valorTotalAcrescimosImpontualidadeAtualizacaoMonetaria.setScale( Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO).add( valorTotalAtualizacoesMonetarias.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO)); // fim altera��o // 4. Retorna o valor do desconto por antiguidade e o valor total dos // acrescimos por impontualidade // BigDecimal[] valorDescontoAntiguidadeDebito = new BigDecimal[3]; // // valorDescontoAntiguidadeDebito[0] = // valorDescontoAntiguidade.setScale( // Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); // // valorDescontoAntiguidadeDebito[1] = // valorTotalAcrescimosImpontualidade // .setScale(Parcelamento.CASAS_DECIMAIS, // Parcelamento.TIPO_ARREDONDAMENTO); // // valorDescontoAntiguidadeDebito[2] = new // BigDecimal(maiorQuantidadeMinimaMesesAntiguidade); retorno = new CalcularValorDescontoAntiguidadeDebitoHelper(valorDescontoAntiguidade, valorTotalAcrescimosImpontualidadeMulta, valorTotalAcrescimosImpontualidadeJurosMora, valorTotalAcrescimosImpontualidadeAtualizacaoMonetaria, new BigDecimal( maiorQuantidadeMinimaMesesAntiguidade), colecaoContasEmAntiguidade, colecaoContasParaParcelamento); return retorno; } /** * Permite efetuar o parcelamento dos d�bitos de um im�vel * * [UC0214] Efetuar Parcelamento de D�bitos * * Obt�m o Perfil do parcelamento para o im�vel * * @author Roberta Costa * @date 21/03/2006 * * @param codigoImovel * @param imovelSituacao * @param subcategoria * @param resolucaoDiretoria * @return ParcelamentoPerfil */ public ParcelamentoPerfil obterPerfilParcelamento(Integer codigoImovel, Integer imovelSituacaoId, Integer perfilImovelId, Integer subcategoriaId, Integer resolucaoDiretoria, Integer categoriaId) throws ControladorException { FiltroParcelamentoPerfil filtroParcelamentoPerfil = new FiltroParcelamentoPerfil(); filtroParcelamentoPerfil.adicionarCaminhoParaCarregamentoEntidade("categoria"); if (perfilImovelId != null && !perfilImovelId.equals("")) { filtroParcelamentoPerfil.adicionarParametro(new ParametroSimples(FiltroParcelamentoPerfil.IMOVEL_PERFIL_ID, perfilImovelId)); } else { filtroParcelamentoPerfil.adicionarParametro(new ParametroNulo(FiltroParcelamentoPerfil.IMOVEL_PERFIL_ID)); } if (imovelSituacaoId != null && !imovelSituacaoId.equals("")) { filtroParcelamentoPerfil.adicionarParametro(new ParametroSimples(FiltroParcelamentoPerfil.IMOVEL_SITUACAO_TIPO_ID, imovelSituacaoId)); } if (subcategoriaId != null && !subcategoriaId.equals("")) { filtroParcelamentoPerfil.adicionarParametro(new ParametroSimples(FiltroParcelamentoPerfil.SUBCATEGORIA_ID, subcategoriaId)); } else { filtroParcelamentoPerfil.adicionarParametro(new ParametroNulo(FiltroParcelamentoPerfil.SUBCATEGORIA_ID)); } if (categoriaId != null && !categoriaId.equals("")) { filtroParcelamentoPerfil.adicionarParametro(new ParametroSimples(FiltroParcelamentoPerfil.CATEGORIA_ID, categoriaId)); } else { filtroParcelamentoPerfil.adicionarParametro(new ParametroNulo(FiltroParcelamentoPerfil.CATEGORIA_ID)); } filtroParcelamentoPerfil.adicionarParametro(new ParametroSimples(FiltroParcelamentoPerfil.RESOLUCAO_DIRETORIA_ID, resolucaoDiretoria)); Collection<ParcelamentoPerfil> colecaoParcelamentoPerfil = getControladorUtil().pesquisar(filtroParcelamentoPerfil, ParcelamentoPerfil.class.getName()); // Verificar exist�ncia da situacao do im�vel ParcelamentoPerfil perfilParcelamento = null; if (colecaoParcelamentoPerfil != null && !colecaoParcelamentoPerfil.isEmpty()) { // Pega a primeira ocorr�ncia da cole��o perfilParcelamento = (ParcelamentoPerfil) Util.retonarObjetoDeColecao(colecaoParcelamentoPerfil); } return perfilParcelamento; } /** * Obtem a Lista de Rotas * * [UC0244] Manter Comando A��o Cobran�a * * @author Rafael Santos * @date 22/03/2006 * * @param codigoImovel * @param idRotaInicial * @param idRotaFinal * @param idSetorComercialInicial * @param idSetorComercialFinal * @param idLocalidadeInicial * @param idLocalidadeFinal * @param idGerenciaRegional * @return * @throws ControladorException */ public Collection obterListasRotas(String idRotaInicial, String idRotaFinal, String codigoSetorComercialInicial, String codigoSetorComercialFinal, String idLocalidadeInicial, String idLocalidadeFinal, String idGerenciaRegional, String idUnidadeNegocio, String codigoRotaInicial, String codigoRotaFinal, String numeroQuadraInicial, String numeroQuadraFinal) throws ControladorException { Collection colecaoRotas = new ArrayList(); if ((idRotaInicial != null && !idRotaInicial.equals("")) && (idRotaFinal != null && !idRotaFinal.equals(""))) { FiltroRota filtroRota = new FiltroRota(); Intervalo intervalo = new Intervalo(FiltroRota.ID_ROTA, idRotaInicial, idRotaFinal); filtroRota.adicionarParametro(intervalo); colecaoRotas = this.getControladorUtil().pesquisar(filtroRota, Rota.class.getName()); } else if ((numeroQuadraInicial != null && !numeroQuadraInicial.equals("")) && (numeroQuadraFinal != null && !numeroQuadraFinal.equals(""))) { Collection<Integer> colecaoIdRotas = null; try { colecaoIdRotas = this.repositorioMicromedicao.obterIdRotaPorQuadra(new Integer(idLocalidadeInicial), new Integer( idLocalidadeFinal), new Integer(codigoSetorComercialInicial), new Integer(codigoSetorComercialFinal), new Integer( numeroQuadraInicial), new Integer(numeroQuadraFinal)); } catch (Exception e) { sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", e); } if (colecaoIdRotas != null && !colecaoIdRotas.isEmpty()) { Iterator itera = colecaoIdRotas.iterator(); while (itera.hasNext()) { Integer idRota = (Integer) itera.next(); Rota rota = new Rota(); rota.setId(idRota); colecaoRotas.add(rota); } } } else if ((idLocalidadeInicial != null && !idLocalidadeInicial.equals("")) && (idLocalidadeFinal != null && !idLocalidadeFinal.equals(""))) { FiltroRota filtroRota = new FiltroRota(); Intervalo intervalo = new Intervalo(FiltroRota.LOCALIDADE_ID, idLocalidadeInicial, idLocalidadeFinal); filtroRota.adicionarParametro(intervalo); if ((codigoSetorComercialInicial != null && !codigoSetorComercialInicial.equals("")) && (codigoSetorComercialFinal != null && !codigoSetorComercialFinal.equals(""))) { Intervalo intervaloSetor = new Intervalo(FiltroRota.SETOR_COMERCIAL_CODIGO, codigoSetorComercialInicial, codigoSetorComercialFinal); filtroRota.adicionarParametro(intervaloSetor); } if (codigoRotaInicial != null && !codigoRotaInicial.equals("")) { Intervalo intervaloCodigoRota = new Intervalo(FiltroRota.CODIGO_ROTA, new Integer(codigoRotaInicial), new Integer( codigoRotaFinal)); filtroRota.adicionarParametro(intervaloCodigoRota); } colecaoRotas = this.getControladorUtil().pesquisar(filtroRota, Rota.class.getName()); } else if (idUnidadeNegocio != null && !idUnidadeNegocio.equals("") && !idUnidadeNegocio.equals(ConstantesSistema.NUMERO_NAO_INFORMADO + "")) { FiltroLocalidade filtroLocalidade = new FiltroLocalidade(); filtroLocalidade.adicionarParametro(new ParametroSimples(FiltroLocalidade.ID_UNIDADE_NEGOCIO, idUnidadeNegocio)); Collection colecaoLocalidades = this.getControladorUtil().pesquisar(filtroLocalidade, Localidade.class.getName()); if (colecaoLocalidades != null && !colecaoLocalidades.isEmpty()) { Iterator iteratorColecaoLocalidades = colecaoLocalidades.iterator(); while (iteratorColecaoLocalidades.hasNext()) { Localidade localidade = (Localidade) iteratorColecaoLocalidades.next(); FiltroSetorComercial filtroSetorComercial = new FiltroSetorComercial(); filtroSetorComercial.adicionarParametro(new ParametroSimples(FiltroSetorComercial.ID_LOCALIDADE, localidade.getId())); Collection colecaoSetoresComerciais = this.getControladorUtil().pesquisar(filtroSetorComercial, SetorComercial.class.getName()); if (colecaoSetoresComerciais != null && !colecaoSetoresComerciais.isEmpty()) { Iterator iteratorColecaoSetoresComerciais = colecaoSetoresComerciais.iterator(); while (iteratorColecaoSetoresComerciais.hasNext()) { SetorComercial setorComercial = (SetorComercial) iteratorColecaoSetoresComerciais.next(); FiltroRota filtroRota = new FiltroRota(); // filtroRota // .adicionarCaminhoParaCarregamentoEntidade(FiltroRota.COBRANCA_CRITERIO); filtroRota.adicionarParametro(new ParametroSimples(FiltroRota.SETOR_COMERCIAL_ID, setorComercial.getId())); Collection colecaoRotasSetorComercialLocalidadeGerencia = this.getControladorUtil().pesquisar(filtroRota, Rota.class.getName()); if (colecaoRotasSetorComercialLocalidadeGerencia != null && !colecaoRotasSetorComercialLocalidadeGerencia.isEmpty()) { Iterator iteratorColecaoRotasSetorComercialLocalidadeGerencia = colecaoRotasSetorComercialLocalidadeGerencia .iterator(); while (iteratorColecaoRotasSetorComercialLocalidadeGerencia.hasNext()) { Rota rota = (Rota) iteratorColecaoRotasSetorComercialLocalidadeGerencia.next(); colecaoRotas.add(rota); } } } } } } } else if (idGerenciaRegional != null && !idGerenciaRegional.equals("") && !idGerenciaRegional.equals(ConstantesSistema.NUMERO_NAO_INFORMADO + "")) { FiltroUnidadeNegocio filtroUnidadeNegocio = new FiltroUnidadeNegocio(); filtroUnidadeNegocio.adicionarParametro(new ParametroSimples(FiltroUnidadeNegocio.ID_GERENCIA, idGerenciaRegional)); Collection colecaoUnidadeNegocio = this.getControladorUtil().pesquisar(filtroUnidadeNegocio, UnidadeNegocio.class.getName()); if (colecaoUnidadeNegocio != null && !colecaoUnidadeNegocio.isEmpty()) { Iterator iteratorColecaoUnidadeNegocio = colecaoUnidadeNegocio.iterator(); while (iteratorColecaoUnidadeNegocio.hasNext()) { UnidadeNegocio unidadeNegocio = (UnidadeNegocio) iteratorColecaoUnidadeNegocio.next(); FiltroLocalidade filtroLocalidade = new FiltroLocalidade(); filtroLocalidade.adicionarParametro(new ParametroSimples(FiltroLocalidade.ID_UNIDADE_NEGOCIO, unidadeNegocio.getId())); Collection colecaoLocalidades = this.getControladorUtil().pesquisar(filtroLocalidade, Localidade.class.getName()); if (colecaoLocalidades != null && !colecaoLocalidades.isEmpty()) { Iterator iteratorColecaoLocalidades = colecaoLocalidades.iterator(); while (iteratorColecaoLocalidades.hasNext()) { Localidade localidade = (Localidade) iteratorColecaoLocalidades.next(); FiltroSetorComercial filtroSetorComercial = new FiltroSetorComercial(); filtroSetorComercial.adicionarParametro(new ParametroSimples(FiltroSetorComercial.ID_LOCALIDADE, localidade .getId())); Collection colecaoSetoresComerciais = this.getControladorUtil().pesquisar(filtroSetorComercial, SetorComercial.class.getName()); if (colecaoSetoresComerciais != null && !colecaoSetoresComerciais.isEmpty()) { Iterator iteratorColecaoSetoresComerciais = colecaoSetoresComerciais.iterator(); while (iteratorColecaoSetoresComerciais.hasNext()) { SetorComercial setorComercial = (SetorComercial) iteratorColecaoSetoresComerciais.next(); FiltroRota filtroRota = new FiltroRota(); // filtroRota // .adicionarCaminhoParaCarregamentoEntidade(FiltroRota.COBRANCA_CRITERIO); filtroRota.adicionarParametro(new ParametroSimples(FiltroRota.SETOR_COMERCIAL_ID, setorComercial .getId())); Collection colecaoRotasSetorComercialLocalidadeGerencia = this.getControladorUtil().pesquisar( filtroRota, Rota.class.getName()); if (colecaoRotasSetorComercialLocalidadeGerencia != null && !colecaoRotasSetorComercialLocalidadeGerencia.isEmpty()) { Iterator iteratorColecaoRotasSetorComercialLocalidadeGerencia = colecaoRotasSetorComercialLocalidadeGerencia .iterator(); while (iteratorColecaoRotasSetorComercialLocalidadeGerencia.hasNext()) { Rota rota = (Rota) iteratorColecaoRotasSetorComercialLocalidadeGerencia.next(); colecaoRotas.add(rota); } } } } } } } } } return colecaoRotas; } /** * * Obter Lista de Rotas Comando * * [UC0243] - Inserir Comando de A��o de Cobran�a * * Selecionar as Lsitas de Rotas do Comando * * [SF0009] - Selecionar Lista de Rotas do Comando * * @author Rafael Santos * @date 22/03/2006 * * @param idCobrancaGrupo * @return */ public Collection obterListaRotasComando(String idCobrancaGrupo, Collection colecaoIdCobrancaAtividadeComandoRota) throws ControladorException { Collection colecaoListaRotasComando = null; if (idCobrancaGrupo != null && !idCobrancaGrupo.equals("")) { FiltroRota filtroRota = new FiltroRota(); filtroRota.adicionarParametro(new ParametroSimples(FiltroRota.COBRANCA_GRUPO_ID, idCobrancaGrupo)); colecaoListaRotasComando = this.getControladorUtil().pesquisar(filtroRota, Rota.class.getName()); } else { colecaoListaRotasComando = new ArrayList(); if (colecaoIdCobrancaAtividadeComandoRota != null && !colecaoIdCobrancaAtividadeComandoRota.isEmpty()) { Iterator iteratorColecaoIdCobrancaAtividadeComandoRota = colecaoIdCobrancaAtividadeComandoRota.iterator(); while (iteratorColecaoIdCobrancaAtividadeComandoRota.hasNext()) { CobrancaAtividadeComandoRotaPK compIDCobrancaAtividadeComandoRotaPK = (CobrancaAtividadeComandoRotaPK) iteratorColecaoIdCobrancaAtividadeComandoRota .next(); FiltroCobrancaAtividadeComandoRotas filtroCobrancaAtividadeComandoRotas = new FiltroCobrancaAtividadeComandoRotas(); filtroCobrancaAtividadeComandoRotas.adicionarCaminhoParaCarregamentoEntidade("rota"); filtroCobrancaAtividadeComandoRotas.adicionarParametro(new ParametroSimples( FiltroCobrancaAtividadeComandoRotas.COMP_ID_COBRANCA_ACAO_ATIVIDADE_COMANDO_ID, compIDCobrancaAtividadeComandoRotaPK.getCobrancaAcaoAtividadeComandoId())); filtroCobrancaAtividadeComandoRotas.adicionarParametro(new ParametroSimples( FiltroCobrancaAtividadeComandoRotas.COMP_ID_ROTA_ID, compIDCobrancaAtividadeComandoRotaPK.getRotaId())); Collection colecaoRotasCobrancaAtividadeComandoRota = this.getControladorUtil().pesquisar( filtroCobrancaAtividadeComandoRotas, CobrancaAtividadeComandoRota.class.getName()); if (colecaoRotasCobrancaAtividadeComandoRota != null && !colecaoRotasCobrancaAtividadeComandoRota.isEmpty()) { Iterator iteratorColecaoRotasCobrancaAtividadeComandoRota = colecaoRotasCobrancaAtividadeComandoRota.iterator(); while (iteratorColecaoRotasCobrancaAtividadeComandoRota.hasNext()) { CobrancaAtividadeComandoRota cobrancaAtividadeComandoRota = (CobrancaAtividadeComandoRota) iteratorColecaoRotasCobrancaAtividadeComandoRota .next(); colecaoListaRotasComando.add(cobrancaAtividadeComandoRota.getRota()); } } } } } return colecaoListaRotasComando; } /** * Permite efetuar o parcelamento dos d�bitos de um im�vel * * [UC0214] Efetuar Parcelamento de D�bitos * * Gera os D�bitos a Cobrar dos Acr�scimos por Impontualidade * * [SB0005] - Gerar D�bitos a Cobrar dos Acr�scimos por Impontualidade * * @author Roberta Costa * @date 29/03/2006 * * @param resolucaoDiretoria * @param codigoImovel * @param valorEntrada * @param situacaoAgua * @param situacaoEsgoto * @return */ public void gerarDebitosACobrarAcrescimosImpontualidade(Imovel imovel, BigDecimal valorAtualizacaoMonetaria, BigDecimal valorJurosMora, BigDecimal valorMulta, BigDecimal taxaJuros, Integer parcelamentoId, Collection<Categoria> colecaoCategoria, Usuario usuarioLogado, boolean isContaEntradaParcelamento, Integer anoMesGuiaEntrada, Integer maiorAnoMesConta) throws ControladorException { // Atualiza��o Monet�ria if (valorAtualizacaoMonetaria != null && valorAtualizacaoMonetaria.doubleValue() > 0) { DebitoTipo debitoTipoAtualizacaMonetaria = filtrarDebitoTipo(DebitoTipo.ATUALIZACAO_MONETARIA); // Inclui o d�bito a cobrar para Atualiza��o Monet�ria inserirDebitoACobrarDebitoTipo(debitoTipoAtualizacaMonetaria, imovel, new Short("1"), valorAtualizacaoMonetaria, taxaJuros, parcelamentoId, colecaoCategoria, null, DebitoCreditoSituacao.PARCELADA, DebitoCreditoSituacao.NORMAL, usuarioLogado, isContaEntradaParcelamento, anoMesGuiaEntrada, maiorAnoMesConta); } // Juros Mora if (valorJurosMora != null && valorJurosMora.doubleValue() > 0) { DebitoTipo debitoTipoJurosMora = filtrarDebitoTipo(DebitoTipo.JUROS_MORA); // Inclui o d�bito a cobrar para Juros Mora inserirDebitoACobrarDebitoTipo(debitoTipoJurosMora, imovel, new Short("1"), valorJurosMora, taxaJuros, parcelamentoId, colecaoCategoria, null, DebitoCreditoSituacao.PARCELADA, DebitoCreditoSituacao.NORMAL, usuarioLogado, isContaEntradaParcelamento, anoMesGuiaEntrada, maiorAnoMesConta); } // Multa por Impontualidade if (valorMulta != null && valorMulta.doubleValue() > 0) { DebitoTipo debitoTipoMultaImpontualidade = filtrarDebitoTipo(DebitoTipo.MULTA_IMPONTUALIDADE); // Inclui o d�bito a cobrar para Multa inserirDebitoACobrarDebitoTipo(debitoTipoMultaImpontualidade, imovel, new Short("1"), valorMulta, taxaJuros, parcelamentoId, colecaoCategoria, null, DebitoCreditoSituacao.PARCELADA, DebitoCreditoSituacao.NORMAL, usuarioLogado, isContaEntradaParcelamento, anoMesGuiaEntrada, maiorAnoMesConta); } } /** * Permite efetuar o parcelamento dos d�bitos de um im�vel * * [UC0214] Efetuar Parcelamento de D�bitos * * Pega o Tipo do D�bito de acordo com a constante informada * * filtrarDebitoTipo * * @author Roberta Costa * @date 05/04/2006 * * @param debitoTipo * @param imovel * @param valorDebito * @param taxaJuros * @param parcelamentoId */ public DebitoTipo filtrarDebitoTipo(Integer tipoDebito) throws ControladorException { FiltroDebitoTipo filtroDebitoTipo = new FiltroDebitoTipo(); filtroDebitoTipo.adicionarParametro(new ParametroSimples(FiltroDebitoTipo.ID, tipoDebito)); Collection colecaoDebitoTipo = this.getControladorUtil().pesquisar(filtroDebitoTipo, DebitoTipo.class.getName()); DebitoTipo debitoTipo = new DebitoTipo(); if (colecaoDebitoTipo != null && !colecaoDebitoTipo.isEmpty()) { debitoTipo = (DebitoTipo) colecaoDebitoTipo.iterator().next(); } return debitoTipo; } /** * Permite efetuar o parcelamento dos d�bitos de um im�vel * * [UC0214] Efetuar Parcelamento de D�bitos * * Insere D�bito A Cobrar de acordo com Tipo do D�bito do Im�vel * * inserirDebitoACobrarDebitoTipo * * @author Roberta Costa * @date 05/04/2006 * * @param debitoTipo * @param imovel * @param valorDebito * @param taxaJuros * @param parcelamentoId */ public void inserirDebitoACobrarDebitoTipo(DebitoTipo debitoTipo, Imovel imovel, Short numeroPrestacao, BigDecimal valorDebito, BigDecimal taxaJuros, Integer parcelamentoId, Collection<Categoria> colecaoCategoria, Integer parcelamentoGrupoId, Integer debitoCreditoSituacaoId, Integer debitoCreditoSituacaoAnteriorId, Usuario usuarioLogado, boolean isContaEntradaParcelamento, Integer anoMesGuiaEntrada, Integer maiorAnoMesConta) throws ControladorException { SistemaParametro sistemaParametros = getControladorUtil().pesquisarParametrosDoSistema(); // Insere o d�bito a cobrar na tabela DEBITO_A_COBRAR_GERAL DebitoACobrarGeral debitoACobrarGeral = new DebitoACobrarGeral(); debitoACobrarGeral.setIndicadorHistorico(new Short("2")); debitoACobrarGeral.setUltimaAlteracao(new Date()); // Recupera o c�digo do d�bito a cobrar geral inserido Integer Integer debitoACobrarGeralIdBase = (Integer) getControladorUtil().inserir(debitoACobrarGeral); debitoACobrarGeral.setId(debitoACobrarGeralIdBase); // Seta o objeto d�bito a cobrar com os par�metros solicitados DebitoACobrar debitoACobrar = new DebitoACobrar(); debitoACobrar.setId(debitoACobrarGeralIdBase); debitoACobrar.setDebitoACobrarGeral(debitoACobrarGeral); debitoACobrar.setImovel(imovel); debitoACobrar.setDebitoTipo(debitoTipo); debitoACobrar.setGeracaoDebito(new Date()); debitoACobrar.setAnoMesReferenciaDebito(sistemaParametros.getAnoMesFaturamento()); debitoACobrar.setAnoMesCobrancaDebito(sistemaParametros.getAnoMesArrecadacao()); // debitoACobrar.setAnoMesReferenciaContabil(sistemaParametros.getAnoMesFaturamento()); // alterado por Vivianne Sousa 01/09/2008 // analista :Aryed Integer referenciaContabil = obterReferenciaContabilParcelamentoOUConta(isContaEntradaParcelamento, anoMesGuiaEntrada, maiorAnoMesConta); debitoACobrar.setAnoMesReferenciaContabil(referenciaContabil); debitoACobrar.setValorDebito(valorDebito); debitoACobrar.setNumeroPrestacaoDebito(numeroPrestacao); debitoACobrar.setNumeroPrestacaoCobradas(new Short("0")); debitoACobrar.setLocalidade(imovel.getLocalidade()); debitoACobrar.setQuadra(imovel.getQuadra()); debitoACobrar.setCodigoSetorComercial(imovel.getSetorComercial().getCodigo()); debitoACobrar.setNumeroQuadra(imovel.getQuadra().getNumeroQuadra()); debitoACobrar.setNumeroLote(imovel.getLote()); debitoACobrar.setNumeroSubLote(imovel.getSubLote()); debitoACobrar.setPercentualTaxaJurosFinanciamento(taxaJuros); RegistroAtendimento registroAtendimento = new RegistroAtendimento(); registroAtendimento.setId(null); debitoACobrar.setRegistroAtendimento(registroAtendimento); debitoACobrar.setOrdemServico(null); debitoACobrar.setFinanciamentoTipo(debitoTipo.getFinanciamentoTipo()); debitoACobrar.setLancamentoItemContabil(debitoTipo.getLancamentoItemContabil()); debitoACobrar.setUsuario(usuarioLogado); DebitoCreditoSituacao debitoCreditoSituacaoAtual = new DebitoCreditoSituacao(); debitoCreditoSituacaoAtual.setId(debitoCreditoSituacaoId); debitoACobrar.setDebitoCreditoSituacaoAtual(debitoCreditoSituacaoAtual); // Alterado por S�vio Luiz Analista:Aryed // Data:17/01/2008 DebitoCreditoSituacao debitoCreditoSituacaoAnterior = new DebitoCreditoSituacao(); debitoCreditoSituacaoAnterior.setId(debitoCreditoSituacaoAnteriorId); debitoACobrar.setDebitoCreditoSituacaoAnterior(debitoCreditoSituacaoAnterior); ParcelamentoGrupo parcelamentoGrupo = new ParcelamentoGrupo(); parcelamentoGrupo.setId(parcelamentoGrupoId); debitoACobrar.setParcelamentoGrupo(parcelamentoGrupo); CobrancaForma cobrancaForma = new CobrancaForma(); cobrancaForma.setId(CobrancaForma.COBRANCA_EM_CONTA); debitoACobrar.setCobrancaForma(cobrancaForma); if (parcelamentoId != null && !parcelamentoId.equals("")) { Parcelamento parcelamento = new Parcelamento(); parcelamento.setId(parcelamentoId); debitoACobrar.setParcelamento(parcelamento); } else { debitoACobrar.setParcelamento(null); } debitoACobrar.setUltimaAlteracao(new Date()); // Recupera o c�digo do d�bito a cobrar inserido Integer // Integer debitoACobrarIdBase = (Integer) getControladorUtil().inserir(debitoACobrar); // 2.1. [UC0185] Obter Valor por Categoria Collection<BigDecimal> colecaoValorCategoria = getControladorImovel().obterValorPorCategoria(colecaoCategoria, valorDebito); // Cria as itera��es de categoria e valor Iterator iteratorCategoria = colecaoCategoria.iterator(); Iterator iteratorValorCategoria = colecaoValorCategoria.iterator(); // La�o para criar os d�bitos a cobrar por categoria while (iteratorCategoria.hasNext()) { // Recupera a categoria Categoria categoria = (Categoria) iteratorCategoria.next(); // Recupera o valor da categoria BigDecimal valorPorCategoria = (BigDecimal) iteratorValorCategoria.next(); // Cria o d�bito a cobrar categoria DebitoACobrarCategoria debitoACobrarCategoria = new DebitoACobrarCategoria(); DebitoACobrarCategoriaPK debitoACobrarCategoriaPK = new DebitoACobrarCategoriaPK(debitoACobrar, categoria); debitoACobrarCategoria.setComp_id(debitoACobrarCategoriaPK); /* * DebitoACobrar debitoACobrarBase = new DebitoACobrar(); * debitoACobrarBase.setId(debitoACobrarGeralIdBase); * debitoACobrarCategoria.setDebitoACobrar(debitoACobrarBase); */ debitoACobrarCategoria.setDebitoACobrar(debitoACobrar); debitoACobrarCategoria.setCategoria(categoria); debitoACobrarCategoria.setQuantidadeEconomia(categoria.getQuantidadeEconomiasCategoria()); debitoACobrarCategoria.setValorCategoria(valorPorCategoria); debitoACobrarCategoria.setUltimaAlteracao(new Date()); // 2.2. Inclui na tabela DEBITO_A_COBRAR_CATEGORIA getControladorUtil().inserir(debitoACobrarCategoria); } } /** * Permite efetuar o parcelamento dos d�bitos de um im�vel * * [UC0214] Efetuar Parcelamento de D�bitos * * Verifica a Situa��o do Im�vel e o Perfil Parcelamento * * [SB0004] - Verificar Situa��o do Im�vel e Perfil Parcelamento * * @author Roberta Costa * @date 29/03/2006 * * @param resolucaoDiretoria * @param codigoImovel * @param valorEntrada * @param situacaoAgua * @param situacaoEsgoto * @return */ public Object[] verificarSituacaoImovelPerfilParcelamento(Integer situacaoAguaId, Integer situacaoEsgotoId, Integer codigoImovel, Integer perfilImovelId, Integer resolucaoDiretoria, Integer numeroReparcelamentoConsecutivos, BigDecimal valorDebitoACobrarParcelamentoImovel) throws ControladorException { // 1. Obtem a situa��o do imovel ImovelSituacao imovelSituacao = null; // Condi��o 1 if (situacaoAguaId != null && situacaoEsgotoId != null) { imovelSituacao = getControladorImovel().obterSituacaoImovel(situacaoAguaId, situacaoEsgotoId); // Condi��o 2 if (imovelSituacao == null) { imovelSituacao = getControladorImovel().obterSituacaoImovel(situacaoAguaId, null); } } // [FS004] Verificar exist�ncia da situa��o do im�vel if (imovelSituacao == null) { throw new ControladorException("atencao.nao.existe.situacao.imovel.correspondente.situacao.agua.esgoto"); } // 2. Obt�m o perfil do parcelamento para o im�vel ParcelamentoPerfil parcelamentoPerfil = new ParcelamentoPerfil(); if (imovelSituacao != null) { // Pega a subcategoria do im�vel Imovel imovel = new Imovel(); imovel.setId(codigoImovel); Collection colecaoImovelSubCategoria = getControladorImovel().obterColecaoImovelSubcategorias(imovel, 1); Subcategoria subcategoria = null; Categoria categoria = null; if (colecaoImovelSubCategoria != null && !colecaoImovelSubCategoria.isEmpty()) { Iterator iteretorImovelSubCategoria = colecaoImovelSubCategoria.iterator(); int quantidadeEconomisas = 0; int maiorQuantidadeEconomisas = 0; while (iteretorImovelSubCategoria.hasNext()) { ImovelSubcategoria imovelSubCategoria = (ImovelSubcategoria) iteretorImovelSubCategoria.next(); quantidadeEconomisas = imovelSubCategoria.getQuantidadeEconomias(); if (quantidadeEconomisas > maiorQuantidadeEconomisas) { maiorQuantidadeEconomisas = quantidadeEconomisas; subcategoria = imovelSubCategoria.getComp_id().getSubcategoria(); categoria = subcategoria.getCategoria(); } } } parcelamentoPerfil = obterPerfilParcelamento(codigoImovel, imovelSituacao.getImovelSituacaoTipo().getId(), perfilImovelId, subcategoria.getId(), resolucaoDiretoria, categoria.getId()); if (parcelamentoPerfil == null) { // Condi��o 1 - iper_id = iper_id do imovel e scat_id = scat_id // do imovel parcelamentoPerfil = obterPerfilParcelamento(codigoImovel, imovelSituacao.getImovelSituacaoTipo().getId(), perfilImovelId, subcategoria.getId(), resolucaoDiretoria, null); if (parcelamentoPerfil == null) { parcelamentoPerfil = obterPerfilParcelamento(codigoImovel, imovelSituacao.getImovelSituacaoTipo().getId(), perfilImovelId, null, resolucaoDiretoria, categoria.getId()); // Condi��o 2 - iper_id = iper_id do imovel e scat_id = null // do imovel if (parcelamentoPerfil == null) { parcelamentoPerfil = obterPerfilParcelamento(codigoImovel, imovelSituacao.getImovelSituacaoTipo().getId(), perfilImovelId, null, resolucaoDiretoria, null); if (parcelamentoPerfil == null) { parcelamentoPerfil = obterPerfilParcelamento(codigoImovel, imovelSituacao.getImovelSituacaoTipo().getId(), null, subcategoria.getId(), resolucaoDiretoria, categoria.getId()); // Condi��o 3 - iper_id = null do imovel e scat_id = // scat_id do imovel if (parcelamentoPerfil == null) { parcelamentoPerfil = obterPerfilParcelamento(codigoImovel, imovelSituacao.getImovelSituacaoTipo().getId(), null, subcategoria.getId(), resolucaoDiretoria, null); if (parcelamentoPerfil == null) { parcelamentoPerfil = obterPerfilParcelamento(codigoImovel, imovelSituacao.getImovelSituacaoTipo() .getId(), null, null, resolucaoDiretoria, categoria.getId()); // Condi��o 4 - iper_id = null do imovel e // scat_id = null if (parcelamentoPerfil == null) { parcelamentoPerfil = obterPerfilParcelamento(codigoImovel, imovelSituacao.getImovelSituacaoTipo() .getId(), null, null, resolucaoDiretoria, null); } } } } } } } // // Condi��o 1 - iper_id = iper_id do imovel e scat_id = scat_id // do imovel // parcelamentoPerfil = // obterPerfilParcelamento(codigoImovel,imovelSituacao.getImovelSituacaoTipo().getId(), // perfilImovelId, subcategoria.getId(), resolucaoDiretoria,null); // // // Condi��o 2 - iper_id = iper_id do imovel e scat_id = null do // imovel // if (parcelamentoPerfil == null) { // parcelamentoPerfil = // obterPerfilParcelamento(codigoImovel,imovelSituacao.getImovelSituacaoTipo().getId(), // perfilImovelId, null, resolucaoDiretoria,null); // // // Condi��o 3 - iper_id = null do imovel e scat_id = scat_id do // imovel // if (parcelamentoPerfil == null) { // parcelamentoPerfil = // obterPerfilParcelamento(codigoImovel,imovelSituacao.getImovelSituacaoTipo().getId(), // null, subcategoria.getId(), resolucaoDiretoria,null); // // // Condi��o 4 - iper_id = null do imovel e scat_id = null // if (parcelamentoPerfil == null) { // parcelamentoPerfil = // obterPerfilParcelamento(codigoImovel,imovelSituacao.getImovelSituacaoTipo().getId(), // null, null, resolucaoDiretoria,null); // } // } // } } // [FS005] Verificar exist�ncia do perfil de parcelamento if (parcelamentoPerfil == null) { throw new ControladorException("atencao.nao.existe.perfil.parcelamento.correspondente.situacao.imovel"); } // 3. Obtem a condi��o referente a quantidade de reparcelamentos // consecutivos j� realizados para perfil do parcelamento para o im�vel Integer numeroReparcelamentoConsecutivosMaisUm = numeroReparcelamentoConsecutivos; // se o valorDebitoACobrarParcelamentoImovel for diferente de 0 // somar 1 ao numero de reparcelamento if (valorDebitoACobrarParcelamentoImovel.compareTo(new BigDecimal("0.00")) != 0) { numeroReparcelamentoConsecutivosMaisUm++; } ParcelamentoQuantidadeReparcelamento parcelamentoQuantidadeReparcelamento = null; try { parcelamentoQuantidadeReparcelamento = repositorioCobranca.obterQtdeReparcelamentoPerfil(parcelamentoPerfil.getId(), new Short( numeroReparcelamentoConsecutivosMaisUm.shortValue())); } catch (ErroRepositorioException e) { e.printStackTrace(); } if (parcelamentoQuantidadeReparcelamento == null) { // [FS0006] Verificar a esxist�ncia da quantidade de reparcelamentos // para o perfil throw new ControladorException("atencao.nao.existe.condicao.por.quantidade.reparcelamentos.perfil"); } // // // if (parcelamentoQuantidadeReparcelamento == null){ // // [FS0006] Verificar a exist�ncia da quantidade de reparcelamentos // // para o perfil // throw new // ControladorException("atencao.nao.existe.condicao.por.quantidade.reparcelamentos.perfil"); // } // FiltroParcelamentoQuantidadeReparcelamento // filtroParcelamentoQuantidadeReparcelamento = new // FiltroParcelamentoQuantidadeReparcelamento(); // // filtroParcelamentoQuantidadeReparcelamento.adicionarParametro(new // ParametroSimples(FiltroParcelamentoQuantidadeReparcelamento.PARCELAMENTO_PERFIL, // parcelamentoPerfil.getId())); // filtroParcelamentoQuantidadeReparcelamento.adicionarParametro(new // MenorQue(FiltroParcelamentoQuantidadeReparcelamento.QUANTIDADE_MAXIMA_REPARCELAMENTO, // numeroReparcelamentoConsecutivos)); // // Collection<ParcelamentoQuantidadeReparcelamento> // colecaoParcelamentoQuantidadeReparcelamento = // getControladorUtil().pesquisar(filtroParcelamentoQuantidadeReparcelamento, // ParcelamentoQuantidadeReparcelamento.class.getName()); // // Verificar exist�ncia da situacao do im�vel // Integer parcelamentoQuantidadeReparcelamentoId = null; // // if (colecaoParcelamentoQuantidadeReparcelamento != null && // !colecaoParcelamentoQuantidadeReparcelamento.isEmpty()) { // Iterator parcelamentoQuantidadeReparcelamentoValores = // colecaoParcelamentoQuantidadeReparcelamento.iterator(); // // int quantidadeMaximaReparcelamento = 0; // int menorQuantidadeMaximaReparcelamento = 999; // // while (parcelamentoQuantidadeReparcelamentoValores.hasNext()) { // ParcelamentoQuantidadeReparcelamento // parcelamentoQuantidadeReparcelamento = // (ParcelamentoQuantidadeReparcelamento) // parcelamentoQuantidadeReparcelamentoValores.next(); // quantidadeMaximaReparcelamento = // parcelamentoQuantidadeReparcelamento.getQuantidadeMaximaReparcelamento(); // if (quantidadeMaximaReparcelamento < // menorQuantidadeMaximaReparcelamento) { // menorQuantidadeMaximaReparcelamento = quantidadeMaximaReparcelamento; // parcelamentoQuantidadeReparcelamentoId = // parcelamentoQuantidadeReparcelamento.getId(); // } // } // } else { // // [FS0006] Verificar a esxist�ncia da quantidade de reparcelamentos // // para o perfil // throw new // ControladorException("atencao.nao.existe.condicao.por.quantidade.reparcelamentos.perfil"); // } // 8. Obtem o percentual de entrada m�nimo e taxa de juros por qtd de // presta��es FiltroParcelamentoQuantidadePrestacao filtroParcelamentoQuantidadePrestacao = new FiltroParcelamentoQuantidadePrestacao( FiltroParcelamentoQuantidadePrestacao.TAXA_JUROS); filtroParcelamentoQuantidadePrestacao .adicionarParametro(new ParametroSimples(FiltroParcelamentoQuantidadePrestacao.PARCELAMENTO_QUANTIDADE_REPARCELAMENTO, parcelamentoQuantidadeReparcelamento.getId())); filtroParcelamentoQuantidadePrestacao.setCampoOrderBy(FiltroParcelamentoQuantidadePrestacao.QUANTIDADE_MAXIMA_PRESTACAO); Collection<ParcelamentoQuantidadePrestacao> colecaoParcelamentoQuantidadePrestacao = getControladorUtil().pesquisar( filtroParcelamentoQuantidadePrestacao, ParcelamentoQuantidadePrestacao.class.getName()); // [FS0007] Verificar a exist�ncia das condi��es do parcelamento por // quantidade de presta��es if (colecaoParcelamentoQuantidadePrestacao == null || colecaoParcelamentoQuantidadePrestacao.isEmpty()) { throw new ControladorException("atencao.nao.existe.condicao.parcelamento.quantidade.prestacoes"); } Object[] situacaoImovelPerfilParcelamento = new Object[4]; situacaoImovelPerfilParcelamento[0] = (ParcelamentoPerfil) parcelamentoPerfil; situacaoImovelPerfilParcelamento[1] = (ImovelSituacao) imovelSituacao; situacaoImovelPerfilParcelamento[2] = (Collection) colecaoParcelamentoQuantidadePrestacao; situacaoImovelPerfilParcelamento[3] = (ParcelamentoQuantidadeReparcelamento) parcelamentoQuantidadeReparcelamento; return situacaoImovelPerfilParcelamento; } /** * Permite efetuar o parcelamento dos d�bitos de um im�vel * * [UC0214] Efetuar Parcelamento de D�bitos * * Gera os D�bitos a Cobrar do Parcelamento * * [SB0005] - Gerar D�bitos a Cobrar do Parcelamento * * @author Roberta Costa * @date 29/03/2006 * * @param resolucaoDiretoria * @param codigoImovel * @param valorEntrada * @param situacaoAgua * @param situacaoEsgoto * @return */ public void gerarDebitosACobrarParcelamento(Imovel imovel, Short numeroPrestacao, BigDecimal valorTotalContas, BigDecimal valorTotalGuiasPagamento, BigDecimal valorTotalAcrescimosImpontualidade, BigDecimal valorTotalServicosDebitosACobrarCurtoPrazo, BigDecimal valorTotalServicosDebitosACobrarLongoPrazo, BigDecimal valorTotalReparcelamentosCurtoPrazo, BigDecimal valorTotalReparcelamentosLongoPrazo, BigDecimal valorTotalJurosParcelamento, BigDecimal taxaJuros, Integer parcelamentoId, Collection<Categoria> colecaoCategoria, BigDecimal valorEntrada, Integer indicadorDividaAtiva, Usuario usuarioLogado, boolean isContaEntradaParcelamento, Integer anoMesGuiaEntrada, Integer maiorAnoMesConta) throws ControladorException { BigDecimal valorZero = new BigDecimal("0.00"); // 1. Parcelamento de Contas if (valorTotalContas != null && valorTotalContas.doubleValue() > 0) { DebitoTipo debitoTipoParcelamentoContas = null; if (indicadorDividaAtiva.intValue() == 1) { debitoTipoParcelamentoContas = filtrarDebitoTipo(DebitoTipo.PARCELAMENTO_CONTAS_DIVIDA_ATIVA); } else { debitoTipoParcelamentoContas = filtrarDebitoTipo(DebitoTipo.PARCELAMENTO_CONTAS); } if (valorEntrada.compareTo(valorZero) != 0 && valorEntrada.compareTo(valorTotalContas) < 0) { // valor entrada diferente de Zero e // menor q o valor total de contas valorTotalContas = valorTotalContas.subtract(valorEntrada); valorEntrada = valorZero; } else if (valorEntrada.compareTo(valorZero) != 0 && valorEntrada.compareTo(valorTotalContas) == 0) { // valor entrada diferente de Zero e // valor entrada igual a valor total de contas valorEntrada = valorZero; valorTotalContas = valorZero; } else if (valorEntrada.compareTo(valorZero) != 0 && valorEntrada.compareTo(valorTotalContas) > 0) { // valor entrada diferente de Zero e // valor entrada maior q o valor total de contas valorEntrada = valorEntrada.subtract(valorTotalContas); valorTotalContas = valorZero; } if (!valorTotalContas.equals(valorZero)) { // 1. Inclui o d�bito a cobrar para Parcelamento de Contas inserirDebitoACobrarDebitoTipo(debitoTipoParcelamentoContas, imovel, numeroPrestacao, valorTotalContas, taxaJuros, parcelamentoId, colecaoCategoria, ParcelamentoGrupo.DOCUMENTOS_EMITIDOS, DebitoCreditoSituacao.NORMAL, null, usuarioLogado, isContaEntradaParcelamento, anoMesGuiaEntrada, maiorAnoMesConta); } } // 2. Parcelamento de Guias de Pagamento if (valorTotalGuiasPagamento != null && valorTotalGuiasPagamento.doubleValue() > 0) { DebitoTipo debitoTipoParcelamentoGuiasPagamento = filtrarDebitoTipo(DebitoTipo.PARCELAMENTO_GUIAS_PAGAMENTO); if (valorEntrada.compareTo(valorZero) != 0 && valorEntrada.compareTo(valorTotalGuiasPagamento) < 0) { // valor entrada diferente de Zero e // menor q o valor total de Guias de Pagamento valorTotalGuiasPagamento = valorTotalGuiasPagamento.subtract(valorEntrada); valorEntrada = valorZero; } else if (valorEntrada.compareTo(valorZero) != 0 && valorEntrada.compareTo(valorTotalGuiasPagamento) == 0) { // valor entrada diferente de Zero e // valor entrada igual a valor total de Guias de Pagamento valorEntrada = valorZero; valorTotalGuiasPagamento = valorZero; } else if (valorEntrada.compareTo(valorZero) != 0 && valorEntrada.compareTo(valorTotalGuiasPagamento) > 0) { // valor entrada diferente de Zero e // valor entrada maior q o valor total de Guias de Pagamento valorEntrada = valorEntrada.subtract(valorTotalGuiasPagamento); valorTotalGuiasPagamento = valorZero; } if (valorTotalGuiasPagamento.compareTo(valorZero) != 0) { // 2. Inclui o d�bito a cobrar para Parcelamento de Guias de // Pagamento inserirDebitoACobrarDebitoTipo(debitoTipoParcelamentoGuiasPagamento, imovel, numeroPrestacao, valorTotalGuiasPagamento, taxaJuros, parcelamentoId, colecaoCategoria, ParcelamentoGrupo.DOCUMENTOS_EMITIDOS, DebitoCreditoSituacao.NORMAL, null, usuarioLogado, isContaEntradaParcelamento, anoMesGuiaEntrada, maiorAnoMesConta); } } // 3. Parcelamento de Acrescimos por Impontualidade if (valorTotalAcrescimosImpontualidade != null && valorTotalAcrescimosImpontualidade.doubleValue() > 0) { DebitoTipo debitoTipoParcelamentoAcrescimosImpontualidade = null; if (indicadorDividaAtiva.intValue() == 1) { debitoTipoParcelamentoAcrescimosImpontualidade = filtrarDebitoTipo(DebitoTipo.PARCELAMENTO_ACRESCIMOS_IMPONTUALIDADE_DIVIDA_ATIVA); } else { debitoTipoParcelamentoAcrescimosImpontualidade = filtrarDebitoTipo(DebitoTipo.PARCELAMENTO_ACRESCIMOS_IMPONTUALIDADE); } if (valorEntrada.compareTo(valorZero) != 0 && valorEntrada.compareTo(valorTotalAcrescimosImpontualidade) < 0) { // valor entrada diferente de Zero e // menor q o valor total de Acrescimos por Impontualidade valorTotalAcrescimosImpontualidade = valorTotalAcrescimosImpontualidade.subtract(valorEntrada); valorEntrada = valorZero; } else if (valorEntrada.compareTo(valorZero) != 0 && valorEntrada.compareTo(valorTotalAcrescimosImpontualidade) == 0) { // valor entrada diferente de Zero e // valor entrada igual a valor total de Acrescimos por // Impontualidade valorEntrada = valorZero; valorTotalAcrescimosImpontualidade = valorZero; } else if (valorEntrada.compareTo(valorZero) != 0 && valorEntrada.compareTo(valorTotalAcrescimosImpontualidade) > 0) { // valor entrada diferente de Zero e // valor entrada maior q o valor total de Acrescimos por // Impontualidade valorEntrada = valorEntrada.subtract(valorTotalAcrescimosImpontualidade); valorTotalAcrescimosImpontualidade = valorZero; } if (valorTotalAcrescimosImpontualidade.compareTo(valorZero) != 0) { System.out.println(" ====== ControladorCobran�a >> gerarDebitosACobrarParcelamento ====== " + "\n Matricula: " + imovel.getId() + "\n Acr�scimos de Impontualidade: " + valorTotalAcrescimosImpontualidade); // 3. Inclui o d�bito a cobrar para Parcelamento de Acrescimos // por // Impontualidade inserirDebitoACobrarDebitoTipo(debitoTipoParcelamentoAcrescimosImpontualidade, imovel, numeroPrestacao, valorTotalAcrescimosImpontualidade, taxaJuros, parcelamentoId, colecaoCategoria, ParcelamentoGrupo.FINANCIAMENTOS_A_COBRAR_CURTO_PRAZO, DebitoCreditoSituacao.NORMAL, null, usuarioLogado, isContaEntradaParcelamento, anoMesGuiaEntrada, maiorAnoMesConta); } } // 4. Parcelamento de Debitos A Cobrar de Curto Prazo if (valorTotalServicosDebitosACobrarCurtoPrazo != null && valorTotalServicosDebitosACobrarCurtoPrazo.doubleValue() > 0) { DebitoTipo debitoTipoParcelamentoDebitosACobrarCurtoPrazo = filtrarDebitoTipo(DebitoTipo.PARCELAMENTO_DEBITO_A_COBRAR_CURTO_PRAZO); if (valorEntrada.compareTo(valorZero) != 0 && valorEntrada.compareTo(valorTotalServicosDebitosACobrarCurtoPrazo) < 0) { // valor entrada diferente de Zero e // menor q o valor total de Debitos A Cobrar de Curto Prazo valorTotalServicosDebitosACobrarCurtoPrazo = valorTotalServicosDebitosACobrarCurtoPrazo.subtract(valorEntrada); valorEntrada = valorZero; } else if (valorEntrada.compareTo(valorZero) != 0 && valorEntrada.compareTo(valorTotalServicosDebitosACobrarCurtoPrazo) == 0) { // valor entrada diferente de Zero e // valor entrada igual a valor total de Debitos A Cobrar de // Curto Prazo valorEntrada = valorZero; valorTotalServicosDebitosACobrarCurtoPrazo = valorZero; } else if (valorEntrada.compareTo(valorZero) != 0 && valorEntrada.compareTo(valorTotalServicosDebitosACobrarCurtoPrazo) > 0) { // valor entrada diferente de Zero e // valor entrada maior q o valor total de Debitos A Cobrar de // Curto Prazo valorEntrada = valorEntrada.subtract(valorTotalServicosDebitosACobrarCurtoPrazo); valorTotalServicosDebitosACobrarCurtoPrazo = valorZero; } if (valorTotalServicosDebitosACobrarCurtoPrazo.compareTo(valorZero) != 0) { // 4. Inclui o d�bito a cobrar para Parcelamento de ADebitos A // Cobrar de // Curto Prazo inserirDebitoACobrarDebitoTipo(debitoTipoParcelamentoDebitosACobrarCurtoPrazo, imovel, numeroPrestacao, valorTotalServicosDebitosACobrarCurtoPrazo, taxaJuros, parcelamentoId, colecaoCategoria, ParcelamentoGrupo.FINANCIAMENTOS_A_COBRAR_CURTO_PRAZO, DebitoCreditoSituacao.NORMAL, null, usuarioLogado, isContaEntradaParcelamento, anoMesGuiaEntrada, maiorAnoMesConta); } } // 5. Parcelamento de Debitos A Cobrar de Longo Prazo if (valorTotalServicosDebitosACobrarLongoPrazo != null && valorTotalServicosDebitosACobrarLongoPrazo.doubleValue() > 0) { DebitoTipo debitoTipoParcelamentoDebitosACobrarLongoPrazo = filtrarDebitoTipo(DebitoTipo.PARCELAMENTO_DEBITO_A_COBRAR_LONGO_PRAZO); if (valorEntrada.compareTo(valorZero) != 0 && valorEntrada.compareTo(valorTotalServicosDebitosACobrarLongoPrazo) < 0) { // valor entrada diferente de Zero e // menor q o valor total de Debitos A Cobrar de Longo Prazo valorTotalServicosDebitosACobrarLongoPrazo = valorTotalServicosDebitosACobrarLongoPrazo.subtract(valorEntrada); valorEntrada = valorZero; } else if (valorEntrada.compareTo(valorZero) != 0 && valorEntrada.compareTo(valorTotalServicosDebitosACobrarLongoPrazo) == 0) { // valor entrada diferente de Zero e // valor entrada igual a valor total de Debitos A Cobrar de // Longo Prazo valorEntrada = valorZero; valorTotalServicosDebitosACobrarLongoPrazo = valorZero; } else if (valorEntrada.compareTo(valorZero) != 0 && valorEntrada.compareTo(valorTotalServicosDebitosACobrarLongoPrazo) > 0) { // valor entrada diferente de Zero e // valor entrada maior q o valor total de Debitos A Cobrar de // Longo Prazo valorEntrada = valorEntrada.subtract(valorTotalServicosDebitosACobrarLongoPrazo); valorTotalServicosDebitosACobrarLongoPrazo = valorZero; } if (valorTotalServicosDebitosACobrarLongoPrazo.compareTo(valorZero) != 0) { // 5. Inclui o d�bito a cobrar para Parcelamento de Debitos A // Cobrar // de // Longo Prazo inserirDebitoACobrarDebitoTipo(debitoTipoParcelamentoDebitosACobrarLongoPrazo, imovel, numeroPrestacao, valorTotalServicosDebitosACobrarLongoPrazo, taxaJuros, parcelamentoId, colecaoCategoria, ParcelamentoGrupo.FINANCIAMENTOS_A_COBRAR_LONGO_PRAZO, DebitoCreditoSituacao.NORMAL, null, usuarioLogado, isContaEntradaParcelamento, anoMesGuiaEntrada, maiorAnoMesConta); } } // 6. Reparcelamentos Curto Prazo if (valorTotalReparcelamentosCurtoPrazo != null && valorTotalReparcelamentosCurtoPrazo.doubleValue() > 0) { DebitoTipo debitoTipoReparcelamentosCurtoPrazo = null; if (indicadorDividaAtiva.intValue() == 1) { debitoTipoReparcelamentosCurtoPrazo = filtrarDebitoTipo(DebitoTipo.REPARCELAMENTOS_CURTO_PRAZO_DIVIDA_ATIVA); } else { debitoTipoReparcelamentosCurtoPrazo = filtrarDebitoTipo(DebitoTipo.REPARCELAMENTOS_CURTO_PRAZO); } if (valorEntrada.compareTo(valorZero) != 0 && valorEntrada.compareTo(valorTotalReparcelamentosCurtoPrazo) < 0) { // valor entrada diferente de Zero e // menor q o valor total de Reparcelamentos Curto Prazo valorTotalReparcelamentosCurtoPrazo = valorTotalReparcelamentosCurtoPrazo.subtract(valorEntrada); valorEntrada = valorZero; } else if (valorEntrada.compareTo(valorZero) != 0 && valorEntrada.compareTo(valorTotalReparcelamentosCurtoPrazo) == 0) { // valor entrada diferente de Zero e // valor entrada igual a valor total de Reparcelamentos Curto // Prazo valorEntrada = valorZero; valorTotalReparcelamentosCurtoPrazo = valorZero; } else if (valorEntrada.compareTo(valorZero) != 0 && valorEntrada.compareTo(valorTotalReparcelamentosCurtoPrazo) > 0) { // valor entrada diferente de Zero e // valor entrada maior q o valor total de Reparcelamentos Curto // Prazo valorEntrada = valorEntrada.subtract(valorTotalReparcelamentosCurtoPrazo); valorTotalReparcelamentosCurtoPrazo = valorZero; } if (valorTotalReparcelamentosCurtoPrazo.compareTo(valorZero) != 0) { // 6. Inclui Reparcelamentos Longo Prazo inserirDebitoACobrarDebitoTipo(debitoTipoReparcelamentosCurtoPrazo, imovel, numeroPrestacao, valorTotalReparcelamentosCurtoPrazo, taxaJuros, parcelamentoId, colecaoCategoria, ParcelamentoGrupo.PARCELAMENTOS_A_COBRAR_CURTO_PRAZO, DebitoCreditoSituacao.NORMAL, null, usuarioLogado, isContaEntradaParcelamento, anoMesGuiaEntrada, maiorAnoMesConta); } } // 7. Reparcelamentos Longo Prazo if (valorTotalReparcelamentosLongoPrazo != null && valorTotalReparcelamentosLongoPrazo.doubleValue() > 0) { DebitoTipo debitoTipoReparcelamentosLongoPrazo = null; if (indicadorDividaAtiva.intValue() == 1) { debitoTipoReparcelamentosLongoPrazo = filtrarDebitoTipo(DebitoTipo.REPARCELAMENTOS_LONGO_PRAZO_DIVIDA_ATIVA); } else { debitoTipoReparcelamentosLongoPrazo = filtrarDebitoTipo(DebitoTipo.REPARCELAMENTOS_LONGO_PRAZO); } if (valorEntrada.compareTo(valorZero) != 0 && valorEntrada.compareTo(valorTotalReparcelamentosLongoPrazo) < 0) { // valor entrada diferente de Zero e // menor q o valor total de Reparcelamentos Longo Prazo valorTotalReparcelamentosLongoPrazo = valorTotalReparcelamentosLongoPrazo.subtract(valorEntrada); valorEntrada = valorZero; } else if (valorEntrada.compareTo(valorZero) != 0 && valorEntrada.compareTo(valorTotalReparcelamentosLongoPrazo) == 0) { // valor entrada diferente de Zero e // valor entrada igual a valor total de Reparcelamentos Longo // Prazo valorEntrada = valorZero; valorTotalReparcelamentosLongoPrazo = valorZero; } else if (valorEntrada.compareTo(valorZero) != 0 && valorEntrada.compareTo(valorTotalReparcelamentosLongoPrazo) > 0) { // valor entrada diferente de Zero e // valor entrada maior q o valor total de Reparcelamentos Longo // Prazo valorEntrada = valorEntrada.subtract(valorTotalReparcelamentosLongoPrazo); valorTotalReparcelamentosLongoPrazo = valorZero; } if (valorTotalReparcelamentosLongoPrazo.compareTo(valorZero) != 0) { // 7. Inclui Reparcelamentos Longo Prazo inserirDebitoACobrarDebitoTipo(debitoTipoReparcelamentosLongoPrazo, imovel, numeroPrestacao, valorTotalReparcelamentosLongoPrazo, taxaJuros, parcelamentoId, colecaoCategoria, ParcelamentoGrupo.PARCELAMENTOS_A_COBRAR_LONGO_PRAZO, DebitoCreditoSituacao.NORMAL, null, usuarioLogado, isContaEntradaParcelamento, anoMesGuiaEntrada, maiorAnoMesConta); } } // 8. Juros sobre Parcelamento if (valorTotalJurosParcelamento != null && valorTotalJurosParcelamento.doubleValue() > 0) { DebitoTipo debitoTipoJurosParcelamento = null; if (indicadorDividaAtiva.intValue() == 1) { debitoTipoJurosParcelamento = filtrarDebitoTipo(DebitoTipo.JUROS_SOBRE_PARCELAMENTO_DIVIDA_ATIVA); } else { debitoTipoJurosParcelamento = filtrarDebitoTipo(DebitoTipo.JUROS_SOBRE_PARCELAMENTO); } if (valorEntrada.compareTo(valorZero) != 0 && valorEntrada.compareTo(valorTotalJurosParcelamento) < 0) { // valor entrada diferente de Zero e // menor q o valor total de Reparcelamentos Longo Prazo valorTotalJurosParcelamento = valorTotalJurosParcelamento.subtract(valorEntrada); valorEntrada = valorZero; } else if (valorEntrada.compareTo(valorZero) != 0 && valorEntrada.compareTo(valorTotalJurosParcelamento) == 0) { // valor entrada diferente de Zero e // valor entrada igual a valor total de Reparcelamentos Longo // Prazo valorEntrada = valorZero; valorTotalJurosParcelamento = valorZero; } else if (valorEntrada.compareTo(valorZero) != 0 && valorEntrada.compareTo(valorTotalJurosParcelamento) > 0) { // valor entrada diferente de Zero e // valor entrada maior q o valor total de Reparcelamentos Longo // Prazo valorEntrada = valorEntrada.subtract(valorTotalJurosParcelamento); valorTotalJurosParcelamento = valorZero; } if (valorTotalJurosParcelamento.compareTo(valorZero) != 0) { // 8. Juros sobre Parcelamento inserirDebitoACobrarDebitoTipo(debitoTipoJurosParcelamento, imovel, numeroPrestacao, valorTotalJurosParcelamento, taxaJuros, parcelamentoId, colecaoCategoria, ParcelamentoGrupo.JUROS_COBRADOS, DebitoCreditoSituacao.NORMAL, null, usuarioLogado, isContaEntradaParcelamento, anoMesGuiaEntrada, maiorAnoMesConta); } } } /** * Permite efetuar o parcelamento dos d�bitos de um im�vel * * [UC0214] Efetuar Parcelamento de D�bitos * * [SB0006] - Gerar Cr�dito a Realizar do Parcelamento */ private void gerarCreditoARealizarParcelamento( Imovel imovel, Short numeroPrestacao, BigDecimal taxaJuros, Integer parcelamentoId, BigDecimal valorDescontoFaixaReferenciaConta, BigDecimal valorDescontoAcresimosImpontualidade, BigDecimal valorDescontoAntiguidadeDebito, BigDecimal valorDescontoInatividadeLigacaoAgua, BigDecimal valorCreditoAnteriores, Collection<Categoria> colecaoCategoria, BigDecimal valorDescontoSancoesRDEspecial, BigDecimal descontoTarifaSocialRDEspecial, boolean isContaEntradaParcelamento, Integer anoMesEntradaGuia, Integer maiorAnoMesConta, BigDecimal valorCreditosAnterioresCurtoPrazo, BigDecimal valorCreditosAnterioresLongoPrazo) throws ControladorException { // 1. Desconto por Acr�scimo por Impontualidade if (valorDescontoAcresimosImpontualidade != null && valorDescontoAcresimosImpontualidade.doubleValue() > 0) { CreditoTipo creditoTipo = filtrarCreditoTipo(CreditoTipo.DESCONTO_ACRESCIMOS_IMPONTUALIDADE); // 1. Inclui o cr�dito a realizar para Desconto Acr�scimo por Impontualidade inserirCreditoARealizarCreditoTipo(creditoTipo, imovel, valorDescontoAcresimosImpontualidade, numeroPrestacao, parcelamentoId, colecaoCategoria, isContaEntradaParcelamento, anoMesEntradaGuia, maiorAnoMesConta, CreditoOrigem.DESCONTOS_CONCEDIDOS_NO_PARCELAMENTO); } // 2. Desconto por Antiguidade do D�bito if (valorDescontoAntiguidadeDebito != null && valorDescontoAntiguidadeDebito.doubleValue() > 0) { CreditoTipo creditoTipo = filtrarCreditoTipo(CreditoTipo.DESCONTO_ANTIGUIDADE_DEBITO); // 2. Inclui o cr�dito a realizar para Desconto por Antiguidade do D�bito inserirCreditoARealizarCreditoTipo(creditoTipo, imovel, valorDescontoAntiguidadeDebito, numeroPrestacao, parcelamentoId, colecaoCategoria, isContaEntradaParcelamento, anoMesEntradaGuia, maiorAnoMesConta, CreditoOrigem.DESCONTOS_CONCEDIDOS_NO_PARCELAMENTO); } // 3. Desconto por Inatividade dea Liga��o da �gua if (valorDescontoInatividadeLigacaoAgua != null && valorDescontoInatividadeLigacaoAgua.doubleValue() > 0) { CreditoTipo creditoTipo = filtrarCreditoTipo(CreditoTipo.DESCONTO_INATIVIDADE_LIGACAO_AGUA); // 3. Inclui o cr�dito a realizar para Desconto por Inatividade de Liga��o da �gua inserirCreditoARealizarCreditoTipo(creditoTipo, imovel, valorDescontoInatividadeLigacaoAgua, numeroPrestacao, parcelamentoId, colecaoCategoria, isContaEntradaParcelamento, anoMesEntradaGuia, maiorAnoMesConta, CreditoOrigem.DESCONTOS_CONCEDIDOS_NO_PARCELAMENTO); } // 4. Cr�ditos Anteriores - CURTO PRAZO if (valorCreditosAnterioresCurtoPrazo != null && valorCreditosAnterioresCurtoPrazo.doubleValue() > 0) { CreditoTipo creditoTipo = filtrarCreditoTipo(CreditoTipo.CREDITOS_ANTERIORES_CURTO_PRAZO); Short prestacoesCurtoPrazo = 0; inserirCreditoARealizarCreditoTipo(creditoTipo, imovel, valorCreditosAnterioresCurtoPrazo, numeroPrestacao, parcelamentoId, colecaoCategoria, isContaEntradaParcelamento, anoMesEntradaGuia, maiorAnoMesConta, CreditoOrigem.DESCONTOS_CREDITOS_ANTERIORES_CURTO_PRAZO); } // 4.1 Cr�ditos Anteriores - LONGO PRAZO if (valorCreditosAnterioresLongoPrazo != null && valorCreditosAnterioresLongoPrazo.doubleValue() > 0) { CreditoTipo creditoTipo = filtrarCreditoTipo(CreditoTipo.CREDITOS_ANTERIORES_LONGO_PRAZO); Short prestacoesLongoPrazo = 0; inserirCreditoARealizarCreditoTipo(creditoTipo, imovel, valorCreditosAnterioresLongoPrazo, numeroPrestacao, parcelamentoId, colecaoCategoria, isContaEntradaParcelamento, anoMesEntradaGuia, maiorAnoMesConta, CreditoOrigem.DESCONTOS_CREDITOS_ANTERIORES_LONGO_PRAZO); } // 5. Desconto por San��es if (valorDescontoSancoesRDEspecial != null && valorDescontoSancoesRDEspecial.doubleValue() > 0) { CreditoTipo creditoTipo = filtrarCreditoTipo(CreditoTipo.DESCONTO_SANCOES); // 5. Inclui o cr�dito a realizar para Desconto por San��es inserirCreditoARealizarCreditoTipo(creditoTipo, imovel, valorDescontoSancoesRDEspecial, numeroPrestacao, parcelamentoId, colecaoCategoria, isContaEntradaParcelamento, anoMesEntradaGuia, maiorAnoMesConta, CreditoOrigem.DESCONTOS_CONCEDIDOS_NO_PARCELAMENTO); } // 6. Desconto por Tarifa Social if (descontoTarifaSocialRDEspecial != null && descontoTarifaSocialRDEspecial.doubleValue() > 0) { CreditoTipo creditoTipo = filtrarCreditoTipo(CreditoTipo.DESCONTO_TARIFA_SOCIAL); // 5. Inclui o cr�dito a realizar para Desconto por Tarifa Social inserirCreditoARealizarCreditoTipo(creditoTipo, imovel, descontoTarifaSocialRDEspecial, numeroPrestacao, parcelamentoId, colecaoCategoria, isContaEntradaParcelamento, anoMesEntradaGuia, maiorAnoMesConta, CreditoOrigem.DESCONTOS_CONCEDIDOS_NO_PARCELAMENTO); } // 7. Desconto por Acr�scimo por Impontualidade if (valorDescontoFaixaReferenciaConta != null && valorDescontoFaixaReferenciaConta.doubleValue() > 0) { CreditoTipo creditoTipo = filtrarCreditoTipo(CreditoTipo.DESCONTO_FAIXA_REFERENCIA_CONTA); // 7. Inclui o cr�dito a realizar para Desconto Acr�scimo por Impontualidade inserirCreditoARealizarCreditoTipo(creditoTipo, imovel, valorDescontoFaixaReferenciaConta, numeroPrestacao, parcelamentoId, colecaoCategoria, isContaEntradaParcelamento, anoMesEntradaGuia, maiorAnoMesConta, CreditoOrigem.DESCONTOS_CONCEDIDOS_PARCELAMENTO_FAIXA_CONTA); } } private Short obterNumeroParcelas(Short indicador, Short totalParcelas) { if (indicador.shortValue() == ConstantesSistema.INDICADOR_CURTO_PRAZO) { if (totalParcelas <= 12) return totalParcelas; else return new Short("12"); } else if (indicador.shortValue() == ConstantesSistema.INDICADOR_LONGO_PRAZO) { if (totalParcelas <= 12) return new Short("0"); else { Integer total = totalParcelas.intValue() - 12; return total.shortValue(); } } else { return 0; } } /** * Permite efetuar o parcelamento dos d�bitos de um im�vel * * [UC0214] Efetuar Parcelamento de D�bitos */ public void inserirCreditoARealizarCreditoTipo( CreditoTipo creditoTipo, Imovel imovel, BigDecimal valorCredito, Short numeroPrestacao, Integer parcelamentoId, Collection<Categoria> colecaoCategoria, boolean isContaEntradaParcelamento, Integer anoMesEntradaGuia, Integer maiorAnoMesConta, Integer idCreditoOrigem) throws ControladorException { SistemaParametro sistemaParametros = getControladorUtil().pesquisarParametrosDoSistema(); CreditoARealizarGeral creditoARealizarGeral = new CreditoARealizarGeral(); creditoARealizarGeral.setIndicadorHistorico(new Short("2")); creditoARealizarGeral.setUltimaAlteracao(new Date()); Integer creditoARealizarGeralIdBase = (Integer) getControladorUtil().inserir(creditoARealizarGeral); creditoARealizarGeral.setId(creditoARealizarGeralIdBase); CreditoARealizar creditoARealizar = new CreditoARealizar(); creditoARealizar.setId(creditoARealizarGeralIdBase); creditoARealizar.setCreditoARealizarGeral(creditoARealizarGeral); creditoARealizar.setImovel(imovel); creditoARealizar.setCreditoTipo(creditoTipo); creditoARealizar.setGeracaoCredito(new Date()); creditoARealizar.setAnoMesReferenciaCredito(sistemaParametros.getAnoMesFaturamento()); creditoARealizar.setAnoMesCobrancaCredito(sistemaParametros.getAnoMesArrecadacao()); Integer referenciaContabil = obterReferenciaContabilParcelamentoOUConta(isContaEntradaParcelamento, anoMesEntradaGuia, maiorAnoMesConta); creditoARealizar.setAnoMesReferenciaContabil(referenciaContabil); creditoARealizar.setValorCredito(valorCredito); creditoARealizar.setValorResidualMesAnterior(new BigDecimal("0.00")); creditoARealizar.setNumeroPrestacaoCredito(numeroPrestacao); creditoARealizar.setNumeroPrestacaoRealizada(new Short("0")); creditoARealizar.setLocalidade(imovel.getLocalidade()); creditoARealizar.setQuadra(imovel.getQuadra()); creditoARealizar.setCodigoSetorComercial(imovel.getSetorComercial().getCodigo()); creditoARealizar.setNumeroQuadra(imovel.getQuadra().getNumeroQuadra()); creditoARealizar.setNumeroLote(imovel.getLote()); creditoARealizar.setNumeroSubLote(imovel.getSubLote()); creditoARealizar.setRegistroAtendimento(null); creditoARealizar.setOrdemServico(null); creditoARealizar.setLancamentoItemContabil(creditoTipo.getLancamentoItemContabil()); DebitoCreditoSituacao debitoCreditoSituacaoAtual = new DebitoCreditoSituacao(); debitoCreditoSituacaoAtual.setId(DebitoCreditoSituacao.NORMAL); creditoARealizar.setDebitoCreditoSituacaoAtual(debitoCreditoSituacaoAtual); creditoARealizar.setDebitoCreditoSituacaoAnterior(null); CreditoOrigem creditoOrigem = new CreditoOrigem(idCreditoOrigem); creditoARealizar.setCreditoOrigem(creditoOrigem); Parcelamento parcelamento = new Parcelamento(); parcelamento.setId(parcelamentoId); creditoARealizar.setParcelamento(parcelamento); creditoARealizar.setUltimaAlteracao(new Date()); getControladorUtil().inserir(creditoARealizar); Collection<BigDecimal> colecaoValorCategoria = getControladorImovel().obterValorPorCategoria(colecaoCategoria, valorCredito); Iterator iteratorCategoria = colecaoCategoria.iterator(); Iterator iteratorValorCategoria = colecaoValorCategoria.iterator(); while (iteratorCategoria.hasNext()) { Categoria categoria = (Categoria) iteratorCategoria.next(); BigDecimal valorPorCategoria = (BigDecimal) iteratorValorCategoria.next(); CreditoARealizarCategoria creditoARealizarCategoria = new CreditoARealizarCategoria(); CreditoARealizarCategoriaPK creditoARealizarCategoriaPK = new CreditoARealizarCategoriaPK(creditoARealizar.getId(), categoria.getId()); creditoARealizarCategoria.setComp_id(creditoARealizarCategoriaPK); creditoARealizarCategoria.setCreditoARealizar(creditoARealizar); creditoARealizarCategoria.setCategoria(categoria); creditoARealizarCategoria.setQuantidadeEconomia(categoria.getQuantidadeEconomiasCategoria()); creditoARealizarCategoria.setValorCategoria(valorPorCategoria); creditoARealizarCategoria.setUltimaAlteracao(new Date()); getControladorUtil().inserir(creditoARealizarCategoria); } } /** * Permite efetuar o parcelamento dos d�bitos de um im�vel * * [UC0214] Efetuar Parcelamento de D�bitos * * Pega o Tipo do Cr�dito de acordo com a constante informada * * filtrarCreditoTipo * * @author Roberta Costa * @date 05/04/2006 * * @param tipoCredito * @return * @throws ControladorException */ public CreditoTipo filtrarCreditoTipo(Integer tipoCredito) throws ControladorException { FiltroCreditoTipo filtroCreditoTipo = new FiltroCreditoTipo(); filtroCreditoTipo.adicionarParametro(new ParametroSimples(FiltroCreditoTipo.ID, tipoCredito)); Collection colecaoCreditoTipo = this.getControladorUtil().pesquisar(filtroCreditoTipo, CreditoTipo.class.getName()); CreditoTipo creditoTipo = new CreditoTipo(); if (colecaoCreditoTipo != null && !colecaoCreditoTipo.isEmpty()) { creditoTipo = (CreditoTipo) colecaoCreditoTipo.iterator().next(); } return creditoTipo; } /** * Permite efetuar o parcelamento dos d�bitos de um im�vel * * [UC0214] Efetuar Parcelamento de D�bitos * * Gera os a Entrada do Parcelamento * * [SB0007] - Gerar a Entrada do Parcelamento * * @author Roberta Costa * @date 29/03/2006 * * @param resolucaoDiretoria * @param codigoImovel * @param valorEntrada * @param situacaoAgua * @param situacaoEsgoto * @return */ public void gerarEntradaParcelamento(Imovel imovel, BigDecimal valorEntrada, BigDecimal taxaJuros, Integer parcelamentoId, Collection<Categoria> colecaoCategoria, Collection<ContaValoresHelper> colecaoContaValores, Usuario usuarioLogado, SistemaParametro sistemaParametro, boolean isContaEntradaParcelamento, Integer anoMesEntradaGuia, Integer maiorAnoMesConta) throws ControladorException { Collection<Conta> colecaoContaEP = new ArrayList<Conta>(); boolean marcadaEP = false; if (colecaoContaValores != null && !colecaoContaValores.isEmpty()) { Iterator contaValores = colecaoContaValores.iterator(); while (contaValores.hasNext()) { ContaValoresHelper contaValoresHelper = (ContaValoresHelper) contaValores.next(); if (contaValoresHelper.getIndicadorContasDebito() != null && contaValoresHelper.getIndicadorContasDebito().equals(new Integer("1"))) { marcadaEP = true; colecaoContaEP.add(contaValoresHelper.getConta()); } } } // 1. Caso existam contas marcadas como entrada de parcelamento(EP) if (marcadaEP) { // 1.1 Colocar as contas marcadas como EP em revis�o // com o motivo correspondente a entrada de Parcelamento ContaMotivoRevisao contaMotivoRevisao = new ContaMotivoRevisao(); contaMotivoRevisao.setId(ContaMotivoRevisao.REVISAO_ENTRADA_DE_PARCELAMENTO); getControladorFaturamento().colocarRevisaoConta(colecaoContaEP, null, contaMotivoRevisao, usuarioLogado); // 1.2 Alterar o vencimento das contas marcadas como EP para a data // corrente mais 3 dias Date novaDataVencimento = Util.adicionarNumeroDiasDeUmaData(new Date(), 3); getControladorFaturamento().alterarVencimentoConta(colecaoContaEP, null, novaDataVencimento, usuarioLogado); // 1.3 Associar as contas marcadas como EP ao parcelamento // atualiza PARC_ID da tabela CONTA com o id do parcelamento Parcelamento parcelamento = new Parcelamento(); parcelamento.setId(parcelamentoId); Iterator iteratorConta = colecaoContaEP.iterator(); while (iteratorConta.hasNext()) { Conta conta = (Conta) iteratorConta.next(); conta.setParcelamento(parcelamento); try { repositorioCobranca.associarContaParcelamento(conta); } catch (ErroRepositorioException e) { e.printStackTrace(); } } } else { // 2. if (valorEntrada.doubleValue() > 0) { // Insere a guia de pagamento na tabela GUIA_PAGAMENTO_GERAL GuiaPagamentoGeral guiaPagamentoGeral = new GuiaPagamentoGeral(); guiaPagamentoGeral.setIndicadorHistorico(new Short("2")); guiaPagamentoGeral.setUltimaAlteracao(new Date()); // Recupera o c�digo da guia de pagamento geral inserido Integer Integer guiaPagamentoGeralIdBase = (Integer) getControladorUtil().inserir(guiaPagamentoGeral); guiaPagamentoGeral.setId(guiaPagamentoGeralIdBase); // 1. Gera os dados relativos a entrada do parcelamento GuiaPagamento guiaPagamento = new GuiaPagamento(); guiaPagamento.setId(guiaPagamentoGeralIdBase); guiaPagamento.setGuiaPagamentoGeral(guiaPagamentoGeral); guiaPagamento.setLocalidade(imovel.getLocalidade()); guiaPagamento.setImovel(imovel); guiaPagamento.setCliente(null); // guiaPagamento.setAnoMesReferenciaContabil(sistemaParametros.getAnoMesFaturamento()); // alterado por Vivianne Sousa 01/09/2008 // analista :Aryed Integer referenciaContabil = obterReferenciaContabilParcelamentoOUConta(isContaEntradaParcelamento, anoMesEntradaGuia, maiorAnoMesConta); guiaPagamento.setAnoMesReferenciaContabil(referenciaContabil); guiaPagamento.setDataEmissao(new Date()); // CRC_4379 // alterado por Hugo Leonardo 11/05/2010 // analista: Ana Cristina // guiaPagamento.setDataVencimento(Util.adicionarNumeroDiasDeUmaData(new // Date(), 3)); int numeroDiasVencimentoEntradaParcelamento = sistemaParametro.getNumeroDiasVencimentoEntradaParcelamento().intValue(); guiaPagamento.setDataVencimento(Util.adicionarNumeroDiasDeUmaData(new Date(), numeroDiasVencimentoEntradaParcelamento)); guiaPagamento.setValorDebito(valorEntrada); guiaPagamento.setUltimaAlteracao(new Date()); RegistroAtendimento registroAtendimento = new RegistroAtendimento(); registroAtendimento.setId(null); guiaPagamento.setRegistroAtendimento(registroAtendimento); guiaPagamento.setOrdemServico(null); DebitoTipo debitoTipo = filtrarDebitoTipo(DebitoTipo.ENTRADA_PARCELAMENTO); guiaPagamento.setLancamentoItemContabil(debitoTipo.getLancamentoItemContabil()); guiaPagamento.setDebitoTipo(debitoTipo); guiaPagamento.setFinanciamentoTipo(debitoTipo.getFinanciamentoTipo()); guiaPagamento.setDebitoCreditoSituacaoAnterior(null); DebitoCreditoSituacao debitoCreditoSituacaoAtual = new DebitoCreditoSituacao(); debitoCreditoSituacaoAtual.setId(DebitoCreditoSituacao.NORMAL); guiaPagamento.setDebitoCreditoSituacaoAtual(debitoCreditoSituacaoAtual); Parcelamento parcelamento = new Parcelamento(); parcelamento.setId(parcelamentoId); guiaPagamento.setParcelamento(parcelamento); guiaPagamento.setIndicadoCobrancaMulta(new Short("2")); DocumentoTipo documentoTipo = new DocumentoTipo(); documentoTipo.setId(DocumentoTipo.ENTRADA_DE_PARCELAMENTO); guiaPagamento.setDocumentoTipo(documentoTipo); guiaPagamento.setNumeroPrestacaoDebito(new Short("1")); guiaPagamento.setNumeroPrestacaoTotal(new Short("1")); // Alterado por S�vio Luiz Data:17/12/2008 guiaPagamento.setIndicadorEmitirObservacao(ConstantesSistema.NAO); // Insere Guia de Pagamento na base // Integer guiaPagamentoIdBase = (Integer) getControladorUtil().inserir(guiaPagamento); // 1.1. [UC0185] Obter Valor po Categoria Collection<BigDecimal> colecaoValorCategoria = getControladorImovel() .obterValorPorCategoria(colecaoCategoria, valorEntrada); // Cria as itera��es de categoria e valor Iterator iteratorCategoria = colecaoCategoria.iterator(); Iterator iteratorValorCategoria = colecaoValorCategoria.iterator(); // La�o para criar os d�bitos a cobrar por categoria while (iteratorCategoria.hasNext()) { // Recupera a categoria Categoria categoria = (Categoria) iteratorCategoria.next(); // Recupera o valor da categoria BigDecimal valorPorCategoria = (BigDecimal) iteratorValorCategoria.next(); // Cria a guia de pagamento por categoria GuiaPagamentoCategoria guiaPagamentoCategoria = new GuiaPagamentoCategoria(); GuiaPagamentoCategoriaPK guiaPagamentoCategoriaPK = new GuiaPagamentoCategoriaPK(categoria.getId(), guiaPagamentoGeralIdBase); guiaPagamentoCategoria.setComp_id(guiaPagamentoCategoriaPK); /* * GuiaPagamento guiaPagamentoBase = new GuiaPagamento(); * guiaPagamentoBase.setId(guiaPagamentoIdBase); * guiaPagamentoCategoria * .setGuiaPagamento(guiaPagamentoBase); */ guiaPagamentoCategoria.setGuiaPagamento(guiaPagamento); guiaPagamentoCategoria.setCategoria(categoria); guiaPagamentoCategoria.setQuantidadeEconomia(categoria.getQuantidadeEconomiasCategoria()); guiaPagamentoCategoria.setValorCategoria(valorPorCategoria); guiaPagamentoCategoria.setUltimaAlteracao(new Date()); // 2.2. Inclui na tabela DEBITO_A_COBRAR_CATEGORIA getControladorUtil().inserir(guiaPagamentoCategoria); } FiltroClienteImovel filtroClienteImovel = new FiltroClienteImovel(); filtroClienteImovel.adicionarCaminhoParaCarregamentoEntidade("cliente"); filtroClienteImovel.adicionarCaminhoParaCarregamentoEntidade("clienteRelacaoTipo"); filtroClienteImovel.adicionarParametro(new ParametroSimples(FiltroClienteImovel.IMOVEL_ID, imovel.getId())); filtroClienteImovel.adicionarParametro(new ParametroNulo(FiltroClienteImovel.DATA_FIM_RELACAO)); Collection clientesImovel = getControladorUtil().pesquisar(filtroClienteImovel, ClienteImovel.class.getName()); if (clientesImovel != null && !clientesImovel.isEmpty()) { Iterator clienteImovelIterator = clientesImovel.iterator(); while (clienteImovelIterator.hasNext()) { ClienteImovel clienteImovel = (ClienteImovel) clienteImovelIterator.next(); ClienteGuiaPagamento clienteGuiaPagamento = new ClienteGuiaPagamento(); clienteGuiaPagamento.setGuiaPagamento(guiaPagamento); clienteGuiaPagamento.setCliente(clienteImovel.getCliente()); clienteGuiaPagamento.setClienteRelacaoTipo(clienteImovel.getClienteRelacaoTipo()); clienteGuiaPagamento.setUltimaAlteracao(new Date()); getControladorUtil().inserir(clienteGuiaPagamento); } } } } } /** * Permite efetuar o parcelamento dos d�bitos de um im�vel * * [UC0214] Efetuar Parcelamento de D�bitos * * [SB0009] - Gerar Dados do Parcelamento */ private Integer gerarDadosParcelamento(ConcluirParcelamentoDebitosHelper helper, Collection colecaoContasParaParcelamento, BigDecimal valorJurosParcelamento, Integer anoMesReferenciaContabil) throws ControladorException { Short indicadorRestabelecimento = helper.getIndicadorRestabelecimento().equals("") ? null : new Short(helper.getIndicadorRestabelecimento()); Short indicadorContasRevisao = helper.getIndicadorContasRevisao().equals("") ? null : new Short(helper.getIndicadorContasRevisao()); Short indicadorGuiasPagamento = helper.getIndicadorGuiasPagamento().equals("") ? null : new Short(helper.getIndicadorGuiasPagamento()); Short indicadorAcrescimosImpotualidade = helper.getIndicadorAcrescimosImpotualidade().equals("") ? null : new Short(helper.getIndicadorAcrescimosImpotualidade()); Short indicadorDebitosACobrar = helper.getIndicadorDebitosACobrar().equals("") ? null : new Short(helper.getIndicadorDebitosACobrar()); Short indicadorCreditoARealizar = helper.getIndicadorCreditoARealizar().equals("") ? null : new Short(helper.getIndicadorCreditoARealizar()); Short indicadorConfirmacaoParcelamento = helper.getIndicadorConfirmacaoParcelamento().equals("") ? ConstantesSistema.SIM : new Short(helper.getIndicadorConfirmacaoParcelamento()); /* helper.getValorGuiasPagamento(), valorGuiaPapagamento helper.getValorDebitoACobrarServico(), valorServicosACobrar helper.getValorDebitoACobrarParcelamento(), valorParcelamentosACobrar helper.getValorCreditoARealizar(), valorCreditoARealizar helper.getValorAtualizacaoMonetaria(), valorAtualizacaoMonetaria helper.getValorJurosMora(), valorJurosMora helper.getValorMulta(), valorMulta helper.getValorDebitoTotalAtualizado(), valorDebitoAtualizado helper.getDescontoFaixaReferenciaConta(), valorDescontoFaixaReferenciaConta helper.getDescontoAcrescimosImpontualidade(), valorDescontoAcrescimos helper.getDescontoAntiguidadeDebito(), valorDescontoAntiguidade, helper.getDescontoInatividadeLigacaoAgua(), valorDescontoInatividade helper.getValorEntradaInformado(), valorEntrada valorJurosParcelamento, helper.getNumeroPrestacoes(), numeroPrestacoes helper.getValorPrestacao(), valorPrestacao helper.getPercentualDescontoAcrescimosImpontualidade(), percentualDescontoAcrescimos helper.getPercentualDescontoAntiguidadeDebito(), percentualDescontoAntiguidade helper.getPercentualDescontoInatividadeLigacaoAgua(), percentualDescontoInatividadeLigacaoAgua , helper.getUsuarioLogado(), usuario helper.getParcelamentoPerfilId(), parcelamentoPerfilId colecaoContasParaParcelamento, helper.getColecaoGuiaPagamentoValores(), colecaoGuiaPagamentoValores helper.getColecaoDebitoACobrar(), colecaoDebitoACobrar helper.getColecaoCreditoARealizar(), colecaoCreditoARealizar helper.getTaxaJuros(), taxaJuros helper.getCliente(), cliente helper.getDescontoSancoesRDEspecial(), descontoSancoesRDEspecial helper.getDescontoTarifaSocialRDEspecial(), descontoTarifaSocialRDEspecial referenciaContabil);*/ try { // 1. Gera os dados relativos a parcelamento String dia = Util.formatarData(helper.getDataParcelamento()).substring(0, 2); String mes = Util.formatarData(helper.getDataParcelamento()).substring(3, 5); String ano = Util.formatarData(helper.getDataParcelamento()).substring(6, 10); Calendar dataHoraParcelamento = GregorianCalendar.getInstance(); dataHoraParcelamento.set(Calendar.DATE, new Integer(dia).intValue()); dataHoraParcelamento.set(Calendar.MONTH, new Integer(mes).intValue() - 1); dataHoraParcelamento.set(Calendar.YEAR, new Integer(ano).intValue()); Parcelamento parcelamento = new Parcelamento(); parcelamento.setParcelamento(dataHoraParcelamento.getTime()); ParcelamentoSituacao parcelamentoSituacao = new ParcelamentoSituacao(); parcelamentoSituacao.setId(ParcelamentoSituacao.NORMAL); parcelamento.setParcelamentoSituacao(parcelamentoSituacao); parcelamento.setAnoMesReferenciaFaturamento(anoMesReferenciaContabil); parcelamento.setValorConta(helper.getValorTotalContaValores()); parcelamento.setValorGuiaPapagamento(helper.getValorGuiasPagamento()); parcelamento.setValorServicosACobrar(helper.getValorDebitoACobrarServico()); parcelamento.setValorParcelamentosACobrar(helper.getValorDebitoACobrarParcelamento()); parcelamento.setValorCreditoARealizar(helper.getValorCreditoARealizar()); parcelamento.setValorAtualizacaoMonetaria(helper.getValorAtualizacaoMonetaria()); parcelamento.setValorJurosMora(helper.getValorJurosMora()); parcelamento.setValorMulta(helper.getValorMulta()); parcelamento.setValorDebitoAtualizado(helper.getValorDebitoTotalAtualizado()); parcelamento.setValorDescontoFaixaReferenciaConta(helper.getDescontoFaixaReferenciaConta()); parcelamento.setValorDescontoAcrescimos(helper.getDescontoAcrescimosImpontualidade()); parcelamento.setValorDescontoAntiguidade(helper.getDescontoAntiguidadeDebito()); parcelamento.setValorDescontoInatividade(helper.getDescontoInatividadeLigacaoAgua()); parcelamento.setValorDescontoSancao(helper.getDescontoSancoesRDEspecial()); parcelamento.setValorDescontoTarifaSocial(helper.getDescontoTarifaSocialRDEspecial()); parcelamento.setValorEntrada(helper.getValorEntradaInformado()); parcelamento.setValorJurosParcelamento(valorJurosParcelamento); parcelamento.setNumeroPrestacoes(helper.getNumeroPrestacoes()); parcelamento.setValorPrestacao(helper.getValorPrestacao()); parcelamento.setIndicadorRestabelecimento(indicadorRestabelecimento); parcelamento.setIndicadorContasRevisao(indicadorContasRevisao); parcelamento.setIndicadorGuiasPagamento(indicadorGuiasPagamento); parcelamento.setIndicadorAcrescimosImpontualdade(indicadorAcrescimosImpotualidade); parcelamento.setIndicadorDebitoACobrar(indicadorDebitosACobrar); parcelamento.setIndicadorCreditoARealizar(indicadorCreditoARealizar); parcelamento.setPercentualDescontoAcrescimos(helper.getPercentualDescontoAcrescimosImpontualidade()); parcelamento.setPercentualDescontoAntiguidade(helper.getPercentualDescontoAntiguidadeDebito()); parcelamento.setPercentualDescontoInatividade(helper.getPercentualDescontoInatividadeLigacaoAgua()); parcelamento.setUltimaAlteracao(new Date()); parcelamento.setImovel(helper.getImovel()); ImovelPerfil imovelPerfil = new ImovelPerfil(); imovelPerfil.setId(helper.getImovel().getImovelPerfil().getId()); parcelamento.setImovelPerfil(imovelPerfil); parcelamento.setRegistroAtendimento(null); parcelamento.setUsuario(helper.getUsuarioLogado()); parcelamento.setFuncionario(null); LigacaoAguaSituacao ligacaoAguaSituacao = new LigacaoAguaSituacao(); ligacaoAguaSituacao.setId(helper.getImovel().getLigacaoAguaSituacao().getId()); parcelamento.setLigacaoAguaSituacao(ligacaoAguaSituacao); LigacaoEsgotoSituacao ligacaoEsgotoSituacao = new LigacaoEsgotoSituacao(); ligacaoEsgotoSituacao.setId(helper.getImovel().getLigacaoEsgotoSituacao().getId()); parcelamento.setLigacaoEsgotoSituacao(ligacaoEsgotoSituacao); Localidade localidade = new Localidade(); localidade.setId(helper.getImovel().getLocalidade().getId()); parcelamento.setLocalidade(localidade); Quadra quadra = new Quadra(); quadra.setId(helper.getImovel().getQuadra().getId()); parcelamento.setQuadra(quadra); parcelamento.setCodigoSetorComercial(helper.getImovel().getSetorComercial().getCodigo()); parcelamento.setNumeroQuadra(helper.getImovel().getQuadra().getNumeroQuadra()); CobrancaForma cobrancaForma = new CobrancaForma(); cobrancaForma.setId(CobrancaForma.COBRANCA_EM_CONTA); parcelamento.setCobrancaForma(cobrancaForma); FiltroParcelamentoPerfil filtroParcelamentoPerfil = new FiltroParcelamentoPerfil(); filtroParcelamentoPerfil.adicionarParametro(new ParametroSimples(FiltroParcelamentoPerfil.ID, helper.getParcelamentoPerfilId())); filtroParcelamentoPerfil.adicionarCaminhoParaCarregamentoEntidade("resolucaoDiretoria"); Collection colecaoParcelamentoPerfil = getControladorUtil().pesquisar(filtroParcelamentoPerfil, ParcelamentoPerfil.class.getName()); ParcelamentoPerfil parcelamentoPerfilCarregado = (ParcelamentoPerfil) Util.retonarObjetoDeColecao(colecaoParcelamentoPerfil); parcelamento.setParcelamentoPerfil(parcelamentoPerfilCarregado); parcelamento.setResolucaoDiretoria(parcelamentoPerfilCarregado.getResolucaoDiretoria()); ParcelamentoTipo parcelamentoTipo = new ParcelamentoTipo(); parcelamentoTipo.setId(ParcelamentoTipo.POR_IMOVEL); parcelamento.setParcelamentoTipo(parcelamentoTipo); // Taxa de Juros do Parcelamento parcelamento.setTaxaJuros(helper.getTaxaJuros()); parcelamento.setIndicadorConfirmacaoParcelamento(indicadorConfirmacaoParcelamento); parcelamento.setCliente(helper.getCliente()); // [FS0012] Verificar exist�ncia de parcelamento no m�s Collection<Parcelamento> colecaoParcelamento = verificarParcelamentoMesImovel(helper.getImovel().getId()); if (colecaoParcelamento != null && !colecaoParcelamento.isEmpty()) { sessionContext.setRollbackOnly(); throw new ControladorException("atencao.parcelamento.processado"); } Integer parcelamentoId = (Integer) getControladorUtil().inserir(parcelamento); parcelamento.setId(parcelamentoId); // 2. Gera Itens que foram parcelados ParcelamentoItem parcelamentoItem = new ParcelamentoItem(); parcelamentoItem.setUltimaAlteracao(new Date()); if (colecaoContasParaParcelamento != null && !colecaoContasParaParcelamento.isEmpty()) { Iterator contaValores = colecaoContasParaParcelamento.iterator(); while (contaValores.hasNext()) { ContaValoresHelper contaValoresHelper = (ContaValoresHelper) contaValores.next(); // N�o inserir as contas com indicador de que a conta j� foi paga , esteja (NB) marcado ou que o indicador entrada de parcelamento esteja (EP) marcado. if (contaValoresHelper.getIndicadorContasDebito() == null || (!contaValoresHelper.getIndicadorContasDebito().equals(new Integer(ConstantesSistema.NAO)) && !contaValoresHelper.getIndicadorContasDebito().equals( ConstantesSistema.SIM))) { ContaGeral contaGeral = new ContaGeral(); contaGeral.setId(contaValoresHelper.getConta().getId()); Parcelamento parcelamentoBase = new Parcelamento(); parcelamentoBase.setId(parcelamentoId); parcelamentoItem.setParcelamento(parcelamentoBase); DocumentoTipo documentoTipo = new DocumentoTipo(); documentoTipo.setId(DocumentoTipo.CONTA); parcelamentoItem.setDocumentoTipo(documentoTipo); parcelamentoItem.setDebitoACobrarGeral(null); parcelamentoItem.setCreditoARealizarGeral(null); parcelamentoItem.setGuiaPagamentoGeral(null); parcelamentoItem.setContaGeral(contaGeral); getControladorUtil().inserir(parcelamentoItem); } if (contaValoresHelper.getIndicadorContasDebito() == null || contaValoresHelper.getIndicadorContasDebito().equals(new Integer(ConstantesSistema.SIM))) { getControladorSpcSerasa().verificarRelacaoDoParcelamentoComItensNegativacao(parcelamento, contaValoresHelper.getConta(), null); } } } // Inserindo itens para as Guias de Pagamento if (helper.getColecaoGuiaPagamentoValores() != null && !helper.getColecaoGuiaPagamentoValores().isEmpty()) { Iterator guiaPagamentoValores = helper.getColecaoGuiaPagamentoValores().iterator(); while (guiaPagamentoValores.hasNext()) { GuiaPagamentoValoresHelper guiaPagamentoValoresHelper = (GuiaPagamentoValoresHelper) guiaPagamentoValores.next(); // Guia de Pagamento Geral Geral GuiaPagamentoGeral guiaPagamentoGeral = new GuiaPagamentoGeral(); guiaPagamentoGeral.setId(guiaPagamentoValoresHelper.getGuiaPagamento().getId()); Parcelamento parcelamentoBase = new Parcelamento(); parcelamentoBase.setId(parcelamentoId); parcelamentoItem.setParcelamento(parcelamentoBase); DocumentoTipo documentoTipo = new DocumentoTipo(); documentoTipo.setId(DocumentoTipo.GUIA_PAGAMENTO); parcelamentoItem.setDocumentoTipo(documentoTipo); parcelamentoItem.setDebitoACobrarGeral(null); parcelamentoItem.setCreditoARealizarGeral(null); parcelamentoItem.setGuiaPagamentoGeral(guiaPagamentoGeral); parcelamentoItem.setContaGeral(null); getControladorUtil().inserir(parcelamentoItem); getControladorSpcSerasa().verificarRelacaoDoParcelamentoComItensNegativacao(parcelamento, null, guiaPagamentoValoresHelper.getGuiaPagamento()); } } // Inserindo itens para D�bitos a Cobrar if (helper.getColecaoDebitoACobrar() != null && !helper.getColecaoDebitoACobrar().isEmpty()) { Iterator debitoACobrarValores = helper.getColecaoDebitoACobrar().iterator(); while (debitoACobrarValores.hasNext()) { DebitoACobrar debitoACobrar = (DebitoACobrar) debitoACobrarValores.next(); // Debito A Cobrar Geral DebitoACobrarGeral debitoACobrarGeral = new DebitoACobrarGeral(); debitoACobrarGeral.setId(debitoACobrar.getId()); Parcelamento parcelamentoBase = new Parcelamento(); parcelamentoBase.setId(parcelamentoId); parcelamentoItem.setParcelamento(parcelamentoBase); DocumentoTipo documentoTipo = new DocumentoTipo(); documentoTipo.setId(DocumentoTipo.DEBITO_A_COBRAR); parcelamentoItem.setDocumentoTipo(documentoTipo); parcelamentoItem.setDebitoACobrarGeral(debitoACobrarGeral); parcelamentoItem.setCreditoARealizarGeral(null); parcelamentoItem.setGuiaPagamentoGeral(null); parcelamentoItem.setContaGeral(null); getControladorUtil().inserir(parcelamentoItem); } } // Inserindo itens para Cr�dito a Realizar if (helper.getColecaoCreditoARealizar() != null && !helper.getColecaoCreditoARealizar().isEmpty()) { Iterator creditoARealizarValores = helper.getColecaoCreditoARealizar().iterator(); while (creditoARealizarValores.hasNext()) { CreditoARealizar creditoARealizar = (CreditoARealizar) creditoARealizarValores.next(); // Credito A Realizar Geral CreditoARealizarGeral creditoARealizarGeral = new CreditoARealizarGeral(); creditoARealizarGeral.setId(creditoARealizar.getId()); Parcelamento parcelamentoBase = new Parcelamento(); parcelamentoBase.setId(parcelamentoId); parcelamentoItem.setParcelamento(parcelamentoBase); DocumentoTipo documentoTipo = new DocumentoTipo(); documentoTipo.setId(DocumentoTipo.CREDITO_A_REALIZAR); parcelamentoItem.setDocumentoTipo(documentoTipo); parcelamentoItem.setDebitoACobrarGeral(null); parcelamentoItem.setCreditoARealizarGeral(creditoARealizar.getCreditoARealizarGeral()); parcelamentoItem.setGuiaPagamentoGeral(null); // Inseri Parcelamento Item na Base getControladorUtil().inserir(parcelamentoItem); } } return parcelamentoId; } catch (ControladorException e) { sessionContext.setRollbackOnly(); throw e; } catch (Exception e) { sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", e); } } /** * Permite inserir uma ResolucaoDiretoria * * [UC0217] Inserir Resolu��o de Diretoria * * @author Rafael Corr�a * @param usuarioLogado * @date 30/03/2006 * */ public Integer inserirResolucaoDiretoria(ResolucaoDiretoria resolucaoDiretoria, Usuario usuarioLogado) throws ControladorException { // [FS0001] - Validar Per�odo de Vig�ncia if (resolucaoDiretoria.getDataVigenciaFim() != null) { if (resolucaoDiretoria.getDataVigenciaInicio().compareTo(resolucaoDiretoria.getDataVigenciaFim()) >= 0) { throw new ControladorException("atencao.termino_vigencia.anterior.inicio_vigencia"); } } FiltroResolucaoDiretoria filtroResolucaoDiretoria = new FiltroResolucaoDiretoria(); filtroResolucaoDiretoria.adicionarParametro(new ParametroSimples(FiltroResolucaoDiretoria.NUMERO, resolucaoDiretoria .getNumeroResolucaoDiretoria())); Collection colecaoResolucaoDiretoria = getControladorUtil().pesquisar(filtroResolucaoDiretoria, ResolucaoDiretoria.class.getName()); if (colecaoResolucaoDiretoria != null && !colecaoResolucaoDiretoria.isEmpty()) { throw new ControladorException("atencao.numero_resolucao_ja_existente"); } resolucaoDiretoria.setUltimaAlteracao(new Date()); // ------------ REGISTRAR TRANSA��O---------------------------- RegistradorOperacao registradorOperacao = new RegistradorOperacao(Operacao.OPERACAO_RESOLUCAO_DIRETORIA_INSERIR, new UsuarioAcaoUsuarioHelper(usuarioLogado, UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO)); Operacao operacao = new Operacao(); operacao.setId(Operacao.OPERACAO_RESOLUCAO_DIRETORIA_INSERIR); OperacaoEfetuada operacaoEfetuada = new OperacaoEfetuada(); operacaoEfetuada.setOperacao(operacao); resolucaoDiretoria.setOperacaoEfetuada(operacaoEfetuada); resolucaoDiretoria.adicionarUsuario(usuarioLogado, UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO); registradorOperacao.registrarOperacao(resolucaoDiretoria); // ------------ REGISTRAR TRANSA��O---------------------------- Integer id = (Integer) getControladorUtil().inserir(resolucaoDiretoria); return id; } /** * Permite inserir um ComandoEmpresaCobrancaConta * * [UC0866] Gerar Comando Contas em Cobran�a por Empresa * * @author Rafael Corr�a * @param usuarioLogado * @date 28/10/2008 * */ public Integer inserirComandoEmpresaCobrancaConta(ComandoEmpresaCobrancaConta comandoEmpresaCobrancaConta, Usuario usuarioLogado) throws ControladorException { comandoEmpresaCobrancaConta.setUltimaAlteracao(new Date()); // ------------ REGISTRAR TRANSA��O---------------------------- RegistradorOperacao registradorOperacao = new RegistradorOperacao(Operacao.OPERACAO_INFORMAR_CONTAS_EM_COBRANCA, new UsuarioAcaoUsuarioHelper(usuarioLogado, UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO)); Operacao operacao = new Operacao(); operacao.setId(Operacao.OPERACAO_INFORMAR_CONTAS_EM_COBRANCA); OperacaoEfetuada operacaoEfetuada = new OperacaoEfetuada(); operacaoEfetuada.setOperacao(operacao); comandoEmpresaCobrancaConta.setOperacaoEfetuada(operacaoEfetuada); comandoEmpresaCobrancaConta.adicionarUsuario(usuarioLogado, UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO); registradorOperacao.registrarOperacao(comandoEmpresaCobrancaConta); // ------------ REGISTRAR TRANSA��O---------------------------- Integer id = (Integer) getControladorUtil().inserir(comandoEmpresaCobrancaConta); return id; } /** * * Este caso de uso permite a consulta de documentos de cobran�a * * [UC0257] - Consultar Documentos de Cobran�a * * Apresenta os itens dos documentos de cobran�a * * [SB0001] - Apresenta Itens do Documento de Cobran�a * * @author Rafael Corr�a & Raphael Rossiter * @date 05/04/2006 */ public CobrancaDocumentoHelper apresentaItensDocumentoCobranca(CobrancaDocumento cobrancaDocumento) throws ControladorException { CobrancaDocumentoHelper retorno = new CobrancaDocumentoHelper(); FiltroCobrancaDocumento filtroCobrancaDocumento = new FiltroCobrancaDocumento(); filtroCobrancaDocumento.adicionarParametro(new ParametroSimples(FiltroCobrancaDocumento.ID, cobrancaDocumento.getId())); filtroCobrancaDocumento.adicionarCaminhoParaCarregamentoEntidade("imovel.localidade"); filtroCobrancaDocumento.adicionarCaminhoParaCarregamentoEntidade("imovel.quadra"); filtroCobrancaDocumento.adicionarCaminhoParaCarregamentoEntidade("imovel.setorComercial.municipio.unidadeFederacao"); filtroCobrancaDocumento.adicionarCaminhoParaCarregamentoEntidade("imovel.logradouroBairro.bairro.municipio.unidadeFederacao"); filtroCobrancaDocumento.adicionarCaminhoParaCarregamentoEntidade("imovel.ligacaoAguaSituacao"); filtroCobrancaDocumento.adicionarCaminhoParaCarregamentoEntidade("imovel.ligacaoEsgotoSituacao"); filtroCobrancaDocumento.adicionarCaminhoParaCarregamentoEntidade("imovel.logradouroCep.logradouro.logradouroTipo"); filtroCobrancaDocumento.adicionarCaminhoParaCarregamentoEntidade("imovel.logradouroCep.logradouro.logradouroTitulo"); filtroCobrancaDocumento.adicionarCaminhoParaCarregamentoEntidade("imovel.enderecoReferencia"); filtroCobrancaDocumento.adicionarCaminhoParaCarregamentoEntidade("imovel.logradouroCep.cep"); filtroCobrancaDocumento.adicionarCaminhoParaCarregamentoEntidade("documentoEmissaoForma"); filtroCobrancaDocumento.adicionarCaminhoParaCarregamentoEntidade("motivoNaoEntregaDocumento"); filtroCobrancaDocumento.adicionarCaminhoParaCarregamentoEntidade("imovel.perimetroInicial.logradouroTipo"); filtroCobrancaDocumento.adicionarCaminhoParaCarregamentoEntidade("imovel.perimetroInicial.logradouroTitulo"); filtroCobrancaDocumento.adicionarCaminhoParaCarregamentoEntidade("imovel.perimetroFinal.logradouroTipo"); filtroCobrancaDocumento.adicionarCaminhoParaCarregamentoEntidade("imovel.perimetroFinal.logradouroTitulo"); filtroCobrancaDocumento.adicionarCaminhoParaCarregamentoEntidade("usuario"); Collection colecaoCobrancaDocumento = getControladorUtil().pesquisar(filtroCobrancaDocumento, CobrancaDocumento.class.getName()); CobrancaDocumento cobrancaDocumentoCarregado = (CobrancaDocumento) Util.retonarObjetoDeColecao(colecaoCobrancaDocumento); retorno.setCobrancaDocumento(cobrancaDocumentoCarregado); FiltroCobrancaDocumentoItem filtroCobrancaDocumentoItem = new FiltroCobrancaDocumentoItem(); filtroCobrancaDocumentoItem.setConsultaSemLimites(true); filtroCobrancaDocumentoItem.adicionarCaminhoParaCarregamentoEntidade("contaGeral.conta.debitoCreditoSituacaoAtual"); filtroCobrancaDocumentoItem.adicionarCaminhoParaCarregamentoEntidade("contaGeral.contaHistorico.debitoCreditoSituacaoAtual"); filtroCobrancaDocumentoItem.adicionarCaminhoParaCarregamentoEntidade("debitoACobrarGeral.debitoACobrar.debitoTipo"); filtroCobrancaDocumentoItem.adicionarCaminhoParaCarregamentoEntidade("debitoACobrarGeral.debitoACobrarHistorico.debitoTipo"); filtroCobrancaDocumentoItem.adicionarCaminhoParaCarregamentoEntidade("creditoARealizarGeral.creditoARealizar.creditoTipo"); filtroCobrancaDocumentoItem.adicionarCaminhoParaCarregamentoEntidade("creditoARealizarGeral.creditoARealizarHistorico.creditoTipo"); filtroCobrancaDocumentoItem.adicionarCaminhoParaCarregamentoEntidade("guiaPagamentoGeral.guiaPagamento.debitoTipo"); filtroCobrancaDocumentoItem.adicionarCaminhoParaCarregamentoEntidade("guiaPagamentoGeral.guiaPagamentoHistorico.debitoTipo"); filtroCobrancaDocumentoItem.adicionarCaminhoParaCarregamentoEntidade("documentoTipo"); filtroCobrancaDocumentoItem.adicionarParametro(new ParametroSimples(FiltroCobrancaDocumentoItem.COBRANCA_DOCUMENTO_ID, cobrancaDocumentoCarregado.getId())); Collection colecaoCobrancaDocumentoItem = getControladorUtil().pesquisar(filtroCobrancaDocumentoItem, CobrancaDocumentoItem.class.getName()); if (colecaoCobrancaDocumentoItem != null && !colecaoCobrancaDocumentoItem.isEmpty()) { retorno.setQuantidadeItensCobrancaDocumento(colecaoCobrancaDocumentoItem.size()); Iterator iteratorColecaoCobrancaDocumentoItem = colecaoCobrancaDocumentoItem.iterator(); CobrancaDocumentoItem cobrancaDocumentoItem = null; Collection colecaoCobrancaDocumentoItemConta = new ArrayList(); Collection colecaoCobrancaDocumentoItemDebitoACobrar = new ArrayList(); Collection colecaoCobrancaDocumentoItemCreditoARealizar = new ArrayList(); Collection colecaoCobrancaDocumentoItemGuiaPagamento = new ArrayList(); while (iteratorColecaoCobrancaDocumentoItem.hasNext()) { cobrancaDocumentoItem = (CobrancaDocumentoItem) iteratorColecaoCobrancaDocumentoItem.next(); if (cobrancaDocumentoItem.getDocumentoTipo().getId().equals(DocumentoTipo.CONTA)) { colecaoCobrancaDocumentoItemConta.add(cobrancaDocumentoItem); } else if (cobrancaDocumentoItem.getDocumentoTipo().getId().equals(DocumentoTipo.DEBITO_A_COBRAR)) { colecaoCobrancaDocumentoItemDebitoACobrar.add(cobrancaDocumentoItem); } else if (cobrancaDocumentoItem.getDocumentoTipo().getId().equals(DocumentoTipo.CREDITO_A_REALIZAR)) { colecaoCobrancaDocumentoItemCreditoARealizar.add(cobrancaDocumentoItem); } else if (cobrancaDocumentoItem.getDocumentoTipo().getId().equals(DocumentoTipo.GUIA_PAGAMENTO)) { colecaoCobrancaDocumentoItemGuiaPagamento.add(cobrancaDocumentoItem); } } retorno.setColecaoCobrancaDocumentoItemConta(colecaoCobrancaDocumentoItemConta); retorno.setColecaoCobrancaDocumentoItemDebitoACobrar(colecaoCobrancaDocumentoItemDebitoACobrar); retorno.setColecaoCobrancaDocumentoItemCreditoARealizar(colecaoCobrancaDocumentoItemCreditoARealizar); retorno.setColecaoCobrancaDocumentoItemGuiaPagamento(colecaoCobrancaDocumentoItemGuiaPagamento); } else { retorno.setQuantidadeItensCobrancaDocumento(0); } return retorno; } /** * * Inserir um comando de atividade de cobran�a eventual * * [UC0243] - Inserir Comando A��o de Cobran�a * * Inserir cobranca acao atividade comando * * [SB0007] - Inserir cobranca acao atividade comando * * @author Rafael Santos * @throws ControladorException * @date 04/04/2006 */ public void inserirComandoAcaoCobrancaEventual(String idCobrancaAcao, String idCobrancaAtividade, String idCobrancaGrupo, String idGerenciaRegional, String idLocalidadeInicial, String idLocalidadeFinal, String codigoSetorComercialInicial, String codigoSetorComercialFinal, String idSetorComercialInicial, String idSetorComercialFinal, String idCliente, String idClienteRelacaoTipo, String anoMesReferencialInicial, String anoMesReferencialFinal, String dataVencimentoContaInicial, String dataVencimentoContaFinal, String indicador, String idRotaInicial, String idRotaFinal, String idUnidadeNegocio, String codigoRotaInicial, String codigoRotaFinal, String numeroQuadraInicial, String numeroQuadraFinal) throws ControladorException { // executar comando CobrancaAcaoAtividadeComando cobrancaAcaoAtividadeComando = new CobrancaAcaoAtividadeComando(); // id gerado pelo sistema CobrancaAcao cobrancaAcao = new CobrancaAcao(); FiltroCobrancaAcao filtroCobrancaAcao = new FiltroCobrancaAcao(); filtroCobrancaAcao.adicionarParametro(new ParametroSimples(FiltroCobrancaAcao.ID, idCobrancaAcao)); filtroCobrancaAcao.adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAcao.DOCUMENTO_TIPO); filtroCobrancaAcao.adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAcao.SERVICO_TIPO); filtroCobrancaAcao.adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAcao.SERVICO_TIPO_PREDECESSORA); Collection colecaoCobrancaAcao = this.getControladorUtil().pesquisar(filtroCobrancaAcao, CobrancaAcao.class.getName()); cobrancaAcao = (CobrancaAcao) colecaoCobrancaAcao.iterator().next(); // id da a��o de cobranca selecionada cobrancaAcaoAtividadeComando.setCobrancaAcao(cobrancaAcao); // id da atividade de cobranca FiltroCobrancaAtividade filtroCobrancaAtividade = new FiltroCobrancaAtividade(); filtroCobrancaAtividade.adicionarParametro(new ParametroSimples(FiltroCobrancaAtividade.ID, idCobrancaAtividade)); Collection colecaoCobrancaAtividade = this.getControladorUtil().pesquisar(filtroCobrancaAtividade, CobrancaAtividade.class.getName()); CobrancaAtividade cobrancaAtividade = (CobrancaAtividade) colecaoCobrancaAtividade.iterator().next(); cobrancaAcaoAtividadeComando.setCobrancaAtividade(cobrancaAtividade); // comando cobrancaAcaoAtividadeComando.setComando(new Date()); // realizacao cobrancaAcaoAtividadeComando.setRealizacao(null); // ultima alteracao cobrancaAcaoAtividadeComando.setUltimaAlteracao(new Date()); // usuario Usuario usuario = new Usuario(); usuario.setId(new Integer(1)); cobrancaAcaoAtividadeComando.setUsuario(usuario); // empresa cobrancaAcaoAtividadeComando.setEmpresa(null); // id Cobranca Grupo if (idCobrancaGrupo != null && !idCobrancaGrupo.equals(ConstantesSistema.NUMERO_NAO_INFORMADO + "")) { CobrancaGrupo cobrancaGrupo = new CobrancaGrupo(); cobrancaGrupo.setId(new Integer(idCobrancaGrupo)); cobrancaAcaoAtividadeComando.setCobrancaGrupo(cobrancaGrupo); } else { cobrancaAcaoAtividadeComando.setCobrancaGrupo(null); } // id Gerencia Regional if (idGerenciaRegional != null && !idGerenciaRegional.equals(ConstantesSistema.NUMERO_NAO_INFORMADO + "")) { GerenciaRegional gerenciaRegional = new GerenciaRegional(); gerenciaRegional.setId(new Integer(idGerenciaRegional)); cobrancaAcaoAtividadeComando.setGerenciaRegional(gerenciaRegional); } else { cobrancaAcaoAtividadeComando.setGerenciaRegional(null); } // localidade inicial e final if ((idLocalidadeInicial != null && !idLocalidadeInicial.equals("")) && (idLocalidadeFinal != null && !idLocalidadeFinal.equals(""))) { Localidade localidadeInicial = new Localidade(); localidadeInicial.setId(new Integer(idLocalidadeInicial)); cobrancaAcaoAtividadeComando.setLocalidadeInicial(localidadeInicial); Localidade localidadeFinal = new Localidade(); localidadeFinal.setId(new Integer(idLocalidadeFinal)); cobrancaAcaoAtividadeComando.setLocalidadeFinal(localidadeFinal); } else { cobrancaAcaoAtividadeComando.setLocalidadeInicial(null); cobrancaAcaoAtividadeComando.setLocalidadeFinal(null); } // codigo do setor comercial inicial e final if ((codigoSetorComercialInicial != null && !codigoSetorComercialInicial.equals("")) && (codigoSetorComercialFinal != null && !codigoSetorComercialFinal.equals(""))) { cobrancaAcaoAtividadeComando.setCodigoSetorComercialInicial(new Integer(codigoSetorComercialInicial)); cobrancaAcaoAtividadeComando.setCodigoSetorComercialFinal(new Integer(codigoSetorComercialFinal)); } else { cobrancaAcaoAtividadeComando.setCodigoSetorComercialInicial(null); cobrancaAcaoAtividadeComando.setCodigoSetorComercialFinal(null); }// // rota inicial e final if ((idRotaInicial != null && !idRotaInicial.equals(ConstantesSistema.NUMERO_NAO_INFORMADO + "")) && (idRotaFinal != null && !idRotaFinal.equals(ConstantesSistema.NUMERO_NAO_INFORMADO + ""))) { Rota rotaInicial = new Rota(); rotaInicial.setId(new Integer(idRotaInicial)); cobrancaAcaoAtividadeComando.setRotaInicial(rotaInicial); Rota rotaFinal = new Rota(); rotaFinal.setId(new Integer(idRotaFinal)); cobrancaAcaoAtividadeComando.setRotaFinal(rotaFinal); } else { cobrancaAcaoAtividadeComando.setRotaInicial(null); cobrancaAcaoAtividadeComando.setRotaFinal(null); } // id do cliente if (idCliente != null && !idCliente.equals("")) { Cliente cliente = new Cliente(); cliente.setId(new Integer(idCliente)); cobrancaAcaoAtividadeComando.setCliente(cliente); } else { cobrancaAcaoAtividadeComando.setCliente(null); } // id cliente rela��o tipo if (idClienteRelacaoTipo != null && !idClienteRelacaoTipo.equals(ConstantesSistema.NUMERO_NAO_INFORMADO + "")) { ClienteRelacaoTipo clienteRelacaoTipo = new ClienteRelacaoTipo(); clienteRelacaoTipo.setId(new Integer(idClienteRelacaoTipo)); cobrancaAcaoAtividadeComando.setClienteRelacaoTipo(clienteRelacaoTipo); } else { cobrancaAcaoAtividadeComando.setClienteRelacaoTipo(null); } // inicial referencial if (anoMesReferencialInicial != null && !anoMesReferencialInicial.equals("")) { String anoInicial = anoMesReferencialInicial.substring(3, 7); String mesInicial = anoMesReferencialInicial.substring(0, 2); String anoMes = anoInicial + mesInicial; cobrancaAcaoAtividadeComando.setAnoMesReferenciaContaInicial(new Integer(anoMes)); } else { cobrancaAcaoAtividadeComando.setAnoMesReferenciaContaInicial(new Integer("198001")); } // final referencial if (anoMesReferencialFinal != null && !anoMesReferencialFinal.equals("")) { String anoFinal = anoMesReferencialFinal.substring(3, 7); String mesFinal = anoMesReferencialFinal.substring(0, 2); String anoMes = anoFinal + mesFinal; cobrancaAcaoAtividadeComando.setAnoMesReferenciaContaFinal(new Integer(anoMes)); } else { String periodoFinalConta = this.getControladorUtil().pesquisarParametrosDoSistema().getAnoMesArrecadacao() + ""; String ano = periodoFinalConta.substring(0, 4); String mes = periodoFinalConta.substring(4, 6); cobrancaAcaoAtividadeComando.setAnoMesReferenciaContaFinal(new Integer(ano + mes)); } // data inicial conta if (dataVencimentoContaInicial != null && !dataVencimentoContaInicial.equals("")) { cobrancaAcaoAtividadeComando.setDataVencimentoContaInicial(Util.converteStringParaDate(dataVencimentoContaInicial)); } else { cobrancaAcaoAtividadeComando.setDataVencimentoContaInicial(Util.converteStringParaDate("01/01/1980")); } // data final conta if (dataVencimentoContaFinal != null && !dataVencimentoContaFinal.equals("")) { cobrancaAcaoAtividadeComando.setDataVencimentoContaFinal(Util.converteStringParaDate(dataVencimentoContaFinal)); } else { Calendar calendarNova = Calendar.getInstance(); calendarNova.add(Calendar.MONTH, -1); String dataNova = ""; dataNova = calendarNova.getActualMaximum(Calendar.DAY_OF_MONTH) + ""; if (calendarNova.get(Calendar.MONTH) < 10) { dataNova = dataNova + "/0" + (calendarNova.get(Calendar.MONTH) + 1); } else { dataNova = dataNova + "/" + (calendarNova.get(Calendar.MONTH) + 1); } dataNova = dataNova + "/" + calendarNova.get(Calendar.YEAR); cobrancaAcaoAtividadeComando.setDataVencimentoContaFinal(Util.converteStringParaDate(dataNova)); } // indicador de crit�rio if (indicador != null && !indicador.equals("")) { if (indicador.equals("Rota")) { cobrancaAcaoAtividadeComando.setIndicadorCriterio(new Short((short) 1)); } else { cobrancaAcaoAtividadeComando.setIndicadorCriterio(new Short((short) 2)); } cobrancaAcaoAtividadeComando.setCobrancaCriterio(null); } cobrancaAcaoAtividadeComando.setQuantidadeDocumentos(null); cobrancaAcaoAtividadeComando.setValorDocumentos(null); cobrancaAcaoAtividadeComando.setQuantidadeItensCobrados(null); // inserir cobranca acao atividade comando Integer idCobrancaAcaoAtividadeComando = (Integer) this.getControladorUtil().inserir(cobrancaAcaoAtividadeComando); cobrancaAcaoAtividadeComando.setId(idCobrancaAcaoAtividadeComando); Collection colecaoIdCobrancaAtividadeComandoRota = new ArrayList(); if ((idGerenciaRegional != null && !idGerenciaRegional.equals("")) && (idLocalidadeInicial != null && !idLocalidadeInicial.equals(""))) { // [FS008] - Obter Lista de Rotas Collection colecaoRotas = this.obterListasRotas(null, null, idSetorComercialInicial, idSetorComercialFinal, idLocalidadeInicial, idLocalidadeFinal, idGerenciaRegional, idUnidadeNegocio, codigoRotaInicial, codigoRotaFinal, numeroQuadraInicial, numeroQuadraFinal); if (colecaoRotas != null && !colecaoRotas.isEmpty()) { CobrancaAtividadeComandoRota cobrancaAtividadeComandoRota = null; Iterator iteratorColecaoRotas = colecaoRotas.iterator(); while (iteratorColecaoRotas.hasNext()) { Rota rota = (Rota) iteratorColecaoRotas.next(); CobrancaAtividadeComandoRotaPK cobrancaAtividadeComandoRotaPK = new CobrancaAtividadeComandoRotaPK(); cobrancaAtividadeComandoRotaPK.setCobrancaAcaoAtividadeComandoId(cobrancaAcaoAtividadeComando.getId()); cobrancaAtividadeComandoRotaPK.setRotaId(rota.getId()); cobrancaAtividadeComandoRota = new CobrancaAtividadeComandoRota(); cobrancaAtividadeComandoRota.setComp_id(cobrancaAtividadeComandoRotaPK); cobrancaAtividadeComandoRota.setCobrancaAcaoAtividadeComando(cobrancaAcaoAtividadeComando); cobrancaAtividadeComandoRota.setRota(rota); cobrancaAtividadeComandoRota.setUltimaAlteracao(new Date()); // inserir cobranca atividade comando rota CobrancaAtividadeComandoRotaPK compIDCobrancaAtividadeComandoRotaPK = (CobrancaAtividadeComandoRotaPK) this .getControladorUtil().inserir(cobrancaAtividadeComandoRota); colecaoIdCobrancaAtividadeComandoRota.add(compIDCobrancaAtividadeComandoRotaPK); } } } } /** * * Inserir Comando de A��o de Cobran�a * * [UC0243] Inserir Comando A��o de Cobran�a * * Consultar Cobranca A��o * * @author Rafael Santos * @date 04/04/2006 * * @param idCobrancaAcaoAtividadeComando * @return * @throws ControladorException */ public CobrancaAcao consultarCobrancaAcao(String idCobrancaAcao) throws ControladorException { CobrancaAcao cobrancaAcao = null; FiltroCobrancaAcao filtroCobrancaAcao = new FiltroCobrancaAcao(); filtroCobrancaAcao.adicionarParametro(new ParametroSimples(FiltroCobrancaAcao.ID, idCobrancaAcao)); Collection colecaoCobrancaAcao = this.getControladorUtil().pesquisar(filtroCobrancaAcao, CobrancaAcao.class.getName()); if (colecaoCobrancaAcao != null && !colecaoCobrancaAcao.isEmpty()) { cobrancaAcao = (CobrancaAcao) colecaoCobrancaAcao.iterator().next(); } return cobrancaAcao; } /** * * Obter Lista de Rotas Comando * * [UC0243] - Inserir Comando de A��o de Cobran�a * * Selecionar as Lsitas de Rotas do Comando * * [SF0009] - Selecionar Lista de Rotas do Comando * * @author Rafael Santos * @date 22/03/2006 * * @param idCobrancaGrupo * @return */ public Collection obterListaRotasComando(String idCobrancaGrupo, String idCobrancaAcaoAtividadeComando) throws ControladorException { Collection colecaoListaRotasComando = null; if (idCobrancaGrupo != null && !idCobrancaGrupo.equals("")) { FiltroRota filtroRota = new FiltroRota(); filtroRota.adicionarParametro(new ParametroSimples(FiltroRota.COBRANCA_GRUPO_ID, idCobrancaGrupo)); // filtroRota // .adicionarCaminhoParaCarregamentoEntidade(FiltroRota.COBRANCA_CRITERIO); colecaoListaRotasComando = this.getControladorUtil().pesquisar(filtroRota, Rota.class.getName()); } else { if (idCobrancaAcaoAtividadeComando != null && !idCobrancaAcaoAtividadeComando.equals("")) { colecaoListaRotasComando = new ArrayList(); FiltroCobrancaAtividadeComandoRotas filtroCobrancaAtividadeComandoRotas = new FiltroCobrancaAtividadeComandoRotas(); filtroCobrancaAtividadeComandoRotas.adicionarCaminhoParaCarregamentoEntidade("rota"); filtroCobrancaAtividadeComandoRotas.adicionarCaminhoParaCarregamentoEntidade("rota"); filtroCobrancaAtividadeComandoRotas.adicionarParametro(new ParametroSimples( FiltroCobrancaAtividadeComandoRotas.COMP_ID_COBRANCA_ACAO_ATIVIDADE_COMANDO_ID, idCobrancaAcaoAtividadeComando)); Collection colecaoRotasCobrancaAtividadeComandoRota = this.getControladorUtil().pesquisar( filtroCobrancaAtividadeComandoRotas, CobrancaAtividadeComandoRota.class.getName()); if (colecaoRotasCobrancaAtividadeComandoRota != null && !colecaoRotasCobrancaAtividadeComandoRota.isEmpty()) { Iterator iteratorColecaoRotasCobrancaAtividadeComandoRota = colecaoRotasCobrancaAtividadeComandoRota.iterator(); while (iteratorColecaoRotasCobrancaAtividadeComandoRota.hasNext()) { CobrancaAtividadeComandoRota cobrancaAtividadeComandoRota = (CobrancaAtividadeComandoRota) iteratorColecaoRotasCobrancaAtividadeComandoRota .next(); FiltroRota filtroRota = new FiltroRota(); filtroRota.adicionarParametro(new ParametroSimples(FiltroRota.ID_ROTA, cobrancaAtividadeComandoRota.getRota() .getId())); // filtroRota // .adicionarCaminhoParaCarregamentoEntidade(FiltroRota.COBRANCA_CRITERIO); Collection colecaoRota = this.getControladorUtil().pesquisar(filtroRota, Rota.class.getName()); if (colecaoListaRotasComando != null && !colecaoListaRotasComando.isEmpty()) { colecaoListaRotasComando.add((Rota) colecaoRota.iterator().next()); } } } } } return colecaoListaRotasComando; } /** * * Permite excluir um comando de atividade de cobran�a do crongrama ou * alterar/excluir um comando deatividade de cobran�a eventual * * [UC0244] Manter Comando A��o de Cobran�a * * Executa o Comando Eventual * * [SF0009] Executar Comando Eventual * * @author Rafael Santos * @date 23/03/2006 * * @param cobrancaAtividade * @param cobrancaAcaoAtividadeComando * @param cobrancaAcao * @param colecaoRotas * @return * @throws ControladorException */ public GerarAtividadeAcaoCobrancaHelper executarComandoEventual(CobrancaAtividade cobrancaAtividade, CobrancaAcaoAtividadeComando cobrancaAcaoAtividadeComando, CobrancaAcao cobrancaAcao, Collection colecaoRotas) throws ControladorException { GerarAtividadeAcaoCobrancaHelper gerarAtividadeAcaoCobrancaHelper = null; if (cobrancaAtividade.getId().intValue() == CobrancaAtividade.ENCERRAR.intValue()) { // [UC0000] - Encerrar Atividade de A ��o de Cobran�a } else { String[] idComandos = new String[1]; idComandos[0] = cobrancaAcaoAtividadeComando.getId().toString(); // [UC0251] - Gerar Atividade de A��o de Cobran�a /* gerarAtividadeAcaoCobrancaHelper = */this.executarAtividadeAcaoCobranca(null, idComandos); } return gerarAtividadeAcaoCobrancaHelper; } /** * * Permite excluir um comando de atividade de cobran�a do crongrama ou * alterar/excluir um comando deatividade de cobran�a eventual * * [UC0244] Manter Comando A��o de Cobran�a * * Verificar Sele��o de pelo menos uma atividade de cobran�a * * [FS0002] - Verificar Sele��o de pelo menos uma atividade de cobran�a * * @author Rafael Santos * @date 23/03/2006 * * @return * @throws ControladorException */ public Collection obterListaAtividadeCronogramaAcaoCobrancaComandadas() throws ControladorException { Collection colecaoAtividadeCronogramaAcaoCobrancaComandadas = null; FiltroCobrancaAcaoAtividadeCronograma filtroCobrancaAcaoAtividadeCronograma = new FiltroCobrancaAcaoAtividadeCronograma(); filtroCobrancaAcaoAtividadeCronograma.adicionarParametro(new ParametroNaoNulo(FiltroCobrancaAcaoAtividadeCronograma.COMANDO)); ConectorOr conectorOr = new ConectorOr(new ParametroNulo(FiltroCobrancaAcaoAtividadeCronograma.REALIZACAO), new MenorQue( FiltroCobrancaAcaoAtividadeCronograma.REALIZACAO, FiltroCobrancaAcaoAtividadeCronograma.COMANDO)); filtroCobrancaAcaoAtividadeCronograma .adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAcaoAtividadeCronograma.COBRANCA_ATIVIDADE); filtroCobrancaAcaoAtividadeCronograma .adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAcaoAtividadeCronograma.COBRANCA_GRUPO); filtroCobrancaAcaoAtividadeCronograma.adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAcaoAtividadeCronograma.COBRANCA_ACAO); filtroCobrancaAcaoAtividadeCronograma.setConsultaSemLimites(true); filtroCobrancaAcaoAtividadeCronograma.adicionarParametro(conectorOr); String orderBy[] = { FiltroCobrancaAcaoAtividadeCronograma.COBRANCA_GRUPO_CRONOGRAMA_MES_MES_ANO, FiltroCobrancaAcaoAtividadeCronograma.COBRANCA_GRUPO_CRONOGRAMA_MES_COBRANCA_GRUPO_DESCRICAO_ABREVIADA }; filtroCobrancaAcaoAtividadeCronograma.setCampoOrderBy(orderBy); colecaoAtividadeCronogramaAcaoCobrancaComandadas = this.getControladorUtil().pesquisar(filtroCobrancaAcaoAtividadeCronograma, CobrancaAcaoAtividadeCronograma.class.getName()); return colecaoAtividadeCronogramaAcaoCobrancaComandadas; } /** * * Permite excluir um comando de atividade de cobran�a do crongrama ou * alterar/excluir um comando deatividade de cobran�a eventual * * [UC0244] Manter Comando A��o de Cobran�a * * Verificar Sele��o de pelo menos uma atividade de cobran�a * * [FS0002] - Verificar Sele��o de pelo menos uma atividade de cobran�a * * @author Rafael Santos * @date 23/03/2006 * * @return * @throws ControladorException */ public Collection obterListaAtividadesEventuaisAcaoCobrancaComandadas() throws ControladorException { Collection colecaoAtividadesEventuaisAcaoCobrancaComandadas = null; FiltroCobrancaAcaoAtividadeComando filtroCobrancaAcaoAtividadeComando = new FiltroCobrancaAcaoAtividadeComando(); filtroCobrancaAcaoAtividadeComando.adicionarParametro(new ParametroNaoNulo(FiltroCobrancaAcaoAtividadeComando.COMANDO)); filtroCobrancaAcaoAtividadeComando.adicionarParametro(new ParametroNulo( FiltroCobrancaAcaoAtividadeComando.DATA_ENCERRAMENTO_REALIZADA)); filtroCobrancaAcaoAtividadeComando.adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAcaoAtividadeComando.COBRANCA_ACAO); filtroCobrancaAcaoAtividadeComando.adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAcaoAtividadeComando.COBRANCA_ATIVIDADE); filtroCobrancaAcaoAtividadeComando.adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAcaoAtividadeComando.COBRANCA_CRITERIO); filtroCobrancaAcaoAtividadeComando.setConsultaSemLimites(true); filtroCobrancaAcaoAtividadeComando.setCampoOrderBy(FiltroCobrancaAcaoAtividadeComando.COMANDO); colecaoAtividadesEventuaisAcaoCobrancaComandadas = this.getControladorUtil().pesquisar(filtroCobrancaAcaoAtividadeComando, CobrancaAcaoAtividadeComando.class.getName()); return colecaoAtividadesEventuaisAcaoCobrancaComandadas; } /** * * Permite excluir um comando de atividade de cobran�a do crongrama ou * alterar/excluir um comando deatividade de cobran�a eventual * * [UC0244] Manter Comando A��o de Cobran�a * * Exclui Comando de Atividade do Cronograma de A��o de Cobran�a * * [SB0001] - Excluir Comando de Atividade de A��o de Cobran�a * * @author Rafael Santos * @date 24/03/2006 * * @param idCobrancaAcaoAtividadeCrongrama */ public void excluirComandoAtividadeCronogramaAcaoCobranca(String[] idsCobrancaAcaoAtividadeCronograma) throws ControladorException { FiltroCobrancaAcaoAtividadeCronograma filtroCobrancaAcaoAtividadeCronograma = new FiltroCobrancaAcaoAtividadeCronograma(); for (int i = 0; i < idsCobrancaAcaoAtividadeCronograma.length; i++) { String idCobrancaAcaoAtividadeCrongrama = idsCobrancaAcaoAtividadeCronograma[i]; filtroCobrancaAcaoAtividadeCronograma.limparListaParametros(); // Seta o filtro para buscar filtroCobrancaAcaoAtividadeCronograma.adicionarParametro(new ParametroSimples(FiltroCobrancaAcaoAtividadeCronograma.ID, idCobrancaAcaoAtividadeCrongrama)); filtroCobrancaAcaoAtividadeCronograma .adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAcaoAtividadeCronograma.COBRANCA_ACAO_CRONOGRAMA); filtroCobrancaAcaoAtividadeCronograma .adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAcaoAtividadeCronograma.COBRANCA_ATIVIDADE); CobrancaAcaoAtividadeCronograma cobrancaAcaoAtividadeCronograma = (CobrancaAcaoAtividadeCronograma) ((List) (getControladorUtil() .pesquisar(filtroCobrancaAcaoAtividadeCronograma, CobrancaAcaoAtividadeCronograma.class.getName()))).get(0); filtroCobrancaAcaoAtividadeCronograma.limparListaParametros(); // Seta o filtro para buscar filtroCobrancaAcaoAtividadeCronograma.adicionarParametro(new ParametroSimples(FiltroCobrancaAcaoAtividadeCronograma.ID, idCobrancaAcaoAtividadeCrongrama)); filtroCobrancaAcaoAtividadeCronograma .adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAcaoAtividadeCronograma.COBRANCA_ACAO_CRONOGRAMA); filtroCobrancaAcaoAtividadeCronograma .adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAcaoAtividadeCronograma.COBRANCA_ATIVIDADE); // Procura na base CobrancaAcaoAtividadeCronograma cobrancaAcaoAtividadeCronogramaNaBase = (CobrancaAcaoAtividadeCronograma) ((List) (getControladorUtil() .pesquisar(filtroCobrancaAcaoAtividadeCronograma, CobrancaAcaoAtividadeCronograma.class.getName()))).get(0); // Verificar se o CobrancaAcaoAtividadeCronograma j� foi atualizado // por outro usu�rio if (cobrancaAcaoAtividadeCronogramaNaBase.getUltimaAlteracao().after(cobrancaAcaoAtividadeCronograma.getUltimaAlteracao())) { sessionContext.setRollbackOnly(); throw new ControladorException("atencao.atualizacao.timestamp"); } cobrancaAcaoAtividadeCronograma.setComando(null); cobrancaAcaoAtividadeCronograma.setUltimaAlteracao(new Date()); // atualiza // ------------ REGISTRAR TRANSA��O ---------------- /* * RegistradorOperacao registradorOperacao = new * RegistradorOperacao( * Operacao.OPERACAO_REMOVER_COMANDO_ACAO_COBRANCA_CRONOGRAMA, new * UsuarioAcaoUsuarioHelper(usuarioLogado, * UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO)); * * Operacao operacao = new Operacao(); operacao.setId(Operacao. * OPERACAO_REMOVER_COMANDO_ACAO_COBRANCA_CRONOGRAMA); * * OperacaoEfetuada operacaoEfetuada = new OperacaoEfetuada(); * operacaoEfetuada.setOperacao(operacao); * cobrancaAcaoAtividadeCronograma * .setOperacaoEfetuada(operacaoEfetuada); * cobrancaAcaoAtividadeCronograma.adicionarUsuario(usuarioLogado, * UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO); * registradorOperacao.registrarOperacao * (cobrancaAcaoAtividadeCronograma); //------------ REGISTRAR * TRANSA��O ---------------- */ getControladorUtil().atualizar(cobrancaAcaoAtividadeCronograma); } } /** * * Permite excluir um comando de atividade de cobran�a do crongrama ou * alterar/excluir um comando deatividade de cobran�a eventual * * [UC0244] Manter Comando A��o de Cobran�a * * Exclui Comando de Atividade de Eventual de A��o de Cobran�a * * [SB0003] - Excluir Comando de Atividade Eventual de A��o de Cobran�a * * @author Rafael Santos * @date 24/03/2006 * * @param idCobrancaAcaoAtividadeCrongrama */ public void excluirComandoAtividadeEventualAcaoCobranca(String[] idsCobrancaAcaoAtividadeEventual) throws ControladorException { FiltroCobrancaAcaoAtividadeComando filtroCobrancaAcaoAtividadeComando = new FiltroCobrancaAcaoAtividadeComando(); for (int i = 0; i < idsCobrancaAcaoAtividadeEventual.length; i++) { String idCobrancaAcaoAtividadeEventual = idsCobrancaAcaoAtividadeEventual[i]; filtroCobrancaAcaoAtividadeComando.limparListaParametros(); // Seta o filtro para buscar filtroCobrancaAcaoAtividadeComando.adicionarParametro(new ParametroSimples(FiltroCobrancaAcaoAtividadeComando.ID, idCobrancaAcaoAtividadeEventual)); filtroCobrancaAcaoAtividadeComando.adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAcaoAtividadeComando.ROTA_INICIAL); filtroCobrancaAcaoAtividadeComando.adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAcaoAtividadeComando.ROTA_FINAL); filtroCobrancaAcaoAtividadeComando .adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAcaoAtividadeComando.COBRANCA_CRITERIO); filtroCobrancaAcaoAtividadeComando.adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAcaoAtividadeComando.CLIENTE); filtroCobrancaAcaoAtividadeComando.adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAcaoAtividadeComando.COBRANCA_ACAO); filtroCobrancaAcaoAtividadeComando.adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAcaoAtividadeComando.USUARIO); filtroCobrancaAcaoAtividadeComando.adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAcaoAtividadeComando.EMPRESA); filtroCobrancaAcaoAtividadeComando .adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAcaoAtividadeComando.CLIENTE_RELACAO_TIPO); filtroCobrancaAcaoAtividadeComando .adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAcaoAtividadeComando.COBRANCA_ATIVIDADE); filtroCobrancaAcaoAtividadeComando .adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAcaoAtividadeComando.GERENCIAL_REGIONAL); filtroCobrancaAcaoAtividadeComando .adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAcaoAtividadeComando.LOCALIDADE_INICIAL); filtroCobrancaAcaoAtividadeComando.adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAcaoAtividadeComando.COBRANCA_GRUPO); CobrancaAcaoAtividadeComando cobrancaAcaoAtividadeComando = (CobrancaAcaoAtividadeComando) ((List) (getControladorUtil() .pesquisar(filtroCobrancaAcaoAtividadeComando, CobrancaAcaoAtividadeComando.class.getName()))).get(0); filtroCobrancaAcaoAtividadeComando.limparListaParametros(); // Seta o filtro para buscar filtroCobrancaAcaoAtividadeComando.adicionarParametro(new ParametroSimples(FiltroCobrancaAcaoAtividadeComando.ID, idCobrancaAcaoAtividadeEventual)); filtroCobrancaAcaoAtividadeComando.adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAcaoAtividadeComando.ROTA_INICIAL); filtroCobrancaAcaoAtividadeComando.adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAcaoAtividadeComando.ROTA_FINAL); filtroCobrancaAcaoAtividadeComando .adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAcaoAtividadeComando.COBRANCA_CRITERIO); filtroCobrancaAcaoAtividadeComando.adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAcaoAtividadeComando.CLIENTE); filtroCobrancaAcaoAtividadeComando.adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAcaoAtividadeComando.COBRANCA_ACAO); filtroCobrancaAcaoAtividadeComando.adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAcaoAtividadeComando.USUARIO); filtroCobrancaAcaoAtividadeComando.adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAcaoAtividadeComando.EMPRESA); filtroCobrancaAcaoAtividadeComando .adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAcaoAtividadeComando.CLIENTE_RELACAO_TIPO); filtroCobrancaAcaoAtividadeComando .adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAcaoAtividadeComando.COBRANCA_ATIVIDADE); filtroCobrancaAcaoAtividadeComando .adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAcaoAtividadeComando.GERENCIAL_REGIONAL); filtroCobrancaAcaoAtividadeComando .adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAcaoAtividadeComando.LOCALIDADE_INICIAL); filtroCobrancaAcaoAtividadeComando.adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAcaoAtividadeComando.COBRANCA_GRUPO); // Procura na base CobrancaAcaoAtividadeComando cobrancaAcaoAtividadeComandoNaBase = (CobrancaAcaoAtividadeComando) ((List) (getControladorUtil() .pesquisar(filtroCobrancaAcaoAtividadeComando, CobrancaAcaoAtividadeComando.class.getName()))).get(0); // Verificar se o CobrancaAcaoAtividadeComando j� foi atualizado por // outro usu�rio if (cobrancaAcaoAtividadeComandoNaBase.getUltimaAlteracao().after(cobrancaAcaoAtividadeComando.getUltimaAlteracao())) { sessionContext.setRollbackOnly(); throw new ControladorException("atencao.atualizacao.timestamp"); } // filtrar as rotas dos comandos FiltroCobrancaAtividadeComandoRotas filtroCobrancaAtividadeComandoRotas = new FiltroCobrancaAtividadeComandoRotas(); filtroCobrancaAtividadeComandoRotas.adicionarParametro(new ParametroSimples( FiltroCobrancaAtividadeComandoRotas.COMP_ID_COBRANCA_ACAO_ATIVIDADE_COMANDO_ID, idCobrancaAcaoAtividadeEventual)); filtroCobrancaAtividadeComandoRotas .adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAtividadeComandoRotas.COBRANCA_ACAO_ATIVIDADE_COMANDO); Collection colecaoCobrancaAtividadeComandoRotas = getControladorUtil().pesquisar(filtroCobrancaAtividadeComandoRotas, CobrancaAtividadeComandoRota.class.getName()); if (colecaoCobrancaAtividadeComandoRotas != null && !colecaoCobrancaAtividadeComandoRotas.isEmpty()) { Iterator iteratorColecaoCobrancaAtividadeComandoRotas = colecaoCobrancaAtividadeComandoRotas.iterator(); while (iteratorColecaoCobrancaAtividadeComandoRotas.hasNext()) { CobrancaAtividadeComandoRota cobrancaAtividadeComandoRota = (CobrancaAtividadeComandoRota) iteratorColecaoCobrancaAtividadeComandoRotas .next(); // exclui cobrancaAtividadeComandoRota getControladorUtil().remover(cobrancaAtividadeComandoRota); } } try { // excluir os registros de Im�veis N�o Gerados this.repositorioCobranca.removerImoveisNaoGerados(null, new Integer(idCobrancaAcaoAtividadeEventual)); } catch (ErroRepositorioException ex) { sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", ex); } // Exclui as situa��es de fiscaliza��o do comando (ocorr�ncias da // tabela COB_ACAO_ATV_CMD_FIS_SIT // para CACM_ID=Id do Comando selecionado, caso existam). this.removerCobrancaAcaoAtividadeComandoFiscalizacaoSituacao(cobrancaAcaoAtividadeComandoNaBase.getId()); // exclui cobrancaAcaoAtividadeComando // ------------ REGISTRAR TRANSA��O ---------------- /* * RegistradorOperacao registradorOperacao = new * RegistradorOperacao( * Operacao.OPERACAO_REMOVER_COMANDO_ACAO_COBRANCA_EVENTUAL, new * UsuarioAcaoUsuarioHelper(usuarioLogado, * UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO)); * * Operacao operacao = new Operacao(); operacao.setId(Operacao. * OPERACAO_REMOVER_COMANDO_ACAO_COBRANCA_EVENTUAL); * * OperacaoEfetuada operacaoEfetuada = new OperacaoEfetuada(); * operacaoEfetuada.setOperacao(operacao); * cobrancaAcaoAtividadeComando * .setOperacaoEfetuada(operacaoEfetuada); * cobrancaAcaoAtividadeComando.adicionarUsuario(usuarioLogado, * UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO); * registradorOperacao.registrarOperacao * (cobrancaAcaoAtividadeComando); */ // ------------ REGISTRAR TRANSA��O ---------------- getControladorUtil().remover(cobrancaAcaoAtividadeComando); } } /** * Permite excluir um comando de atividade de cobran�a do crongrama ou * alterar/excluir um comando deatividade de cobran�a eventual * * [UC0244] Manter Comando A��o de Cobran�a * * Consultar Linhas do Criterios * * [SB0005] - Consultar Linhas do Criterios * * @author Rafael Santos * @date 24/03/2006 * * @param idCriterioCobranca * @return * @throws ControladorException */ public Collection consultarLinhasCriterio(String idCriterioCobranca) throws ControladorException { FiltroCobrancaCriterioLinha filtroCobrancaCriterioLinha = new FiltroCobrancaCriterioLinha(); filtroCobrancaCriterioLinha.adicionarParametro(new ParametroSimples(FiltroCobrancaCriterioLinha.COBRANCA_CRITERIO_ID, idCriterioCobranca)); filtroCobrancaCriterioLinha.adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaCriterioLinha.CATEGORIA); filtroCobrancaCriterioLinha.adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaCriterioLinha.IMOVEL_PERFIL); filtroCobrancaCriterioLinha.setCampoOrderBy(FiltroCobrancaCriterioLinha.ID_IMOVEL_PERFIL, FiltroCobrancaCriterioLinha.ID_CATEGORIA); Collection colecaoCobrancaCriterioLinha = getControladorUtil().pesquisar(filtroCobrancaCriterioLinha, CobrancaCriterioLinha.class.getName()); if (colecaoCobrancaCriterioLinha == null || colecaoCobrancaCriterioLinha.isEmpty()) { throw new ControladorException("atencao.pesquisa.nenhum_registro_tabela", null, "Tabela Cobran�a Crit�rio Linha"); } return colecaoCobrancaCriterioLinha; } /** * * Permite excluir um comando de atividade de cobran�a do crongrama ou * alterar/excluir um comando deatividade de cobran�a eventual * * [UC0244] Manter Comando A��o de Cobran�a * * Selecionar Crit�rios do Comando * * [SB0004] - Selecionar Crit�rios do Comando * * @author Rafael Santos * @date 24/03/2006 * * @param idCobrancaAcao * @param idCobrancaAcaoAtividadeComando * @param indicadorCriterioComandoMarcado * @return * @throws ControladorException */ public Collection consultarCriteriosComando(String idCobrancaAcao) throws ControladorException { FiltroCobrancaCriterio filtroCobrancaCriterio = new FiltroCobrancaCriterio(); filtroCobrancaCriterio.adicionarParametro(new ParametroSimples(FiltroCobrancaCriterio.ID_COBRANCA_ACAO, idCobrancaAcao)); // filtroCobrancaCriterio // .adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaCriterio.COBRANCA_ACAO); Collection colecaoCriterioCobranca = getControladorUtil().pesquisar(filtroCobrancaCriterio, CobrancaCriterio.class.getName()); if (colecaoCriterioCobranca == null || colecaoCriterioCobranca.isEmpty()) { throw new ControladorException("atencao.pesquisa.nenhum_registro_tabela", null, "Tabela Cobran�a Crit�rio"); } return colecaoCriterioCobranca; } /** * * Permite excluir um comando de atividade de cobran�a do crongrama ou * alterar/excluir um comando deatividade de cobran�a eventual * * [UC0244] Manter Comando A��o de Cobran�a * * Consultar O Periodo Final da Conta para usar em Cobranca A��o Atividade * Comando * * @author Rafael Santos * @date 25/03/2006 * * @return * @throws ControladorException */ public String consultarPeriodoFinalContaCobrancaAcaoAtividadeComando() throws ControladorException { String periodoFinalContaCobrancaAcaoAtividadeComando = null; String periodoFinalConta = this.getControladorUtil().pesquisarParametrosDoSistema().getAnoMesArrecadacao() + ""; if (periodoFinalConta != null && !periodoFinalConta.equals("")) { String ano = periodoFinalConta.substring(0, 4); String mes = periodoFinalConta.substring(4, 6); periodoFinalContaCobrancaAcaoAtividadeComando = mes + "/" + ano; } return periodoFinalContaCobrancaAcaoAtividadeComando; } /** * * Permite excluir um comando de atividade de cobran�a do crongrama ou * alterar/excluir um comando deatividade de cobran�a eventual * * [UC0244] Manter Comando A��o de Cobran�a * * Consultar O Periodo Vencimento da Conta para usar em Cobranca A��o * Atividade Comando * * @author Rafael Santos * @date 25/03/2006 * * @return */ public String consultarPeriodoVencimentoContaFinalCobrancaAcaoAtividadeComando() throws ControladorException { Calendar calendar = new GregorianCalendar(); calendar.add(Calendar.MONTH, -1); String periodoVencimentoContaFinalCobrancaAcaoAtividadeComando = ""; if (calendar.get(Calendar.DAY_OF_MONTH) < 10) { periodoVencimentoContaFinalCobrancaAcaoAtividadeComando = periodoVencimentoContaFinalCobrancaAcaoAtividadeComando + "0" + calendar.get(Calendar.DAY_OF_MONTH); } else { periodoVencimentoContaFinalCobrancaAcaoAtividadeComando = calendar.get(Calendar.DAY_OF_MONTH) + ""; } if (calendar.get(Calendar.MONTH) < 10) { periodoVencimentoContaFinalCobrancaAcaoAtividadeComando = periodoVencimentoContaFinalCobrancaAcaoAtividadeComando + "/0" + calendar.get(Calendar.MONTH); } else { periodoVencimentoContaFinalCobrancaAcaoAtividadeComando = periodoVencimentoContaFinalCobrancaAcaoAtividadeComando + "/" + calendar.get(Calendar.MONTH); } periodoVencimentoContaFinalCobrancaAcaoAtividadeComando = periodoVencimentoContaFinalCobrancaAcaoAtividadeComando + "/" + calendar.get(Calendar.YEAR); return periodoVencimentoContaFinalCobrancaAcaoAtividadeComando; } /** * * Permite excluir um comando de atividade de cobran�a do crongrama ou * alterar/excluir um comando deatividade de cobran�a eventual * * [UC0244] Manter Comando A��o de Cobran�a * * Consultar as Cobranca Grupo * * @author Rafael Santos * @date 25/03/2006 * * @return * @throws ControladorException */ public Collection obterColecaoCobrancaGrupo() throws ControladorException { FiltroCobrancaGrupo filtroCobrancaGrupo = new FiltroCobrancaGrupo(); filtroCobrancaGrupo.setCampoOrderBy(FiltroCobrancaGrupo.DESCRICAO); Collection colecaoCobrancaGrupo = this.getControladorUtil().pesquisar(filtroCobrancaGrupo, CobrancaGrupo.class.getName()); if (colecaoCobrancaGrupo == null || colecaoCobrancaGrupo.isEmpty()) { throw new ControladorException("atencao.pesquisa.nenhum_registro_tabela", null, "Tabela Cobran�a Grupo"); } return colecaoCobrancaGrupo; } /** * * Permite excluir um comando de atividade de cobran�a do crongrama ou * alterar/excluir um comando deatividade de cobran�a eventual * * [UC0244] Manter Comando A��o de Cobran�a * * Consultar as Cobranca Atividade * * @author Rafael Santos * @date 25/03/2006 * * @return * @throws ControladorException */ public Collection obterColecaoCobrancaAtividade() throws ControladorException { FiltroCobrancaAtividade filtroCobrancaAtividade = new FiltroCobrancaAtividade(); filtroCobrancaAtividade.setCampoOrderBy(FiltroCobrancaAtividade.DESCRICAO); Collection colecaoCobrancaAtividade = this.getControladorUtil().pesquisar(filtroCobrancaAtividade, CobrancaAtividade.class.getName()); if (colecaoCobrancaAtividade == null || colecaoCobrancaAtividade.isEmpty()) { throw new ControladorException("atencao.pesquisa.nenhum_registro_tabela", null, "Tabela Cobran�a Atividade"); } return colecaoCobrancaAtividade; } /** * * Permite excluir um comando de atividade de cobran�a do crongrama ou * alterar/excluir um comando deatividade de cobran�a eventual * * [UC0244] Manter Comando A��o de Cobran�a * * Consultar as Cobranca Acao * * @author Rafael Santos * @date 25/03/2006 * * @return * @throws ControladorException */ public Collection obterColecaoCobrancaAcao() throws ControladorException { FiltroCobrancaAcao filtroCobrancaAcao = new FiltroCobrancaAcao(); filtroCobrancaAcao.setCampoOrderBy(FiltroCobrancaAcao.DESCRICAO); Collection colecaoCobrancaAcao = this.getControladorUtil().pesquisar(filtroCobrancaAcao, CobrancaAcao.class.getName()); if (Util.isVazioOrNulo(colecaoCobrancaAcao)) { throw new ControladorException("atencao.pesquisa.nenhum_registro_tabela", null, "Tabela Cobran�a A��o"); } return colecaoCobrancaAcao; } /** * * Permite excluir um comando de atividade de cobran�a do crongrama ou * alterar/excluir um comando deatividade de cobran�a eventual * * [UC0244] Manter Comando A��o de Cobran�a * * Consultar as Gerencia Regionais * * @author Rafael Santos * @date 25/03/2006 * * @return * @throws ControladorException */ public Collection obterColecaoGerenciaRegional() throws ControladorException { FiltroGerenciaRegional filtroGerenciaRegional = new FiltroGerenciaRegional(); filtroGerenciaRegional.setCampoOrderBy(FiltroGerenciaRegional.NOME_ABREVIADO); Collection colecaoGerenciaRegional = this.getControladorUtil().pesquisar(filtroGerenciaRegional, GerenciaRegional.class.getName()); if (colecaoGerenciaRegional == null || colecaoGerenciaRegional.isEmpty()) { throw new ControladorException("atencao.pesquisa_inexistente", null, "Tabela Ger�ncia Regional"); } return colecaoGerenciaRegional; } /** * * Permite excluir um comando de atividade de cobran�a do crongrama ou * alterar/excluir um comando deatividade de cobran�a eventual * * [UC0244] Manter Comando A��o de Cobran�a * * Consultar as Unidade de Negocio * * @author Rafael Santos * @date 11/10/2006 * * @return * @throws ControladorException */ public Collection obterColecaoUnidadeNegocio() throws ControladorException { FiltroUnidadeNegocio filtroUnidadeNegocio = new FiltroUnidadeNegocio(); filtroUnidadeNegocio.setCampoOrderBy(FiltroGerenciaRegional.NOME_ABREVIADO); Collection colecaoUnidadeNegocio = this.getControladorUtil().pesquisar(filtroUnidadeNegocio, UnidadeNegocio.class.getName()); if (colecaoUnidadeNegocio == null || colecaoUnidadeNegocio.isEmpty()) { throw new ControladorException("atencao.pesquisa_inexistente", null, "Tabela Unidade Negocio"); } return colecaoUnidadeNegocio; } /** * * Permite excluir um comando de atividade de cobran�a do crongrama ou * alterar/excluir um comando deatividade de cobran�a eventual * * [UC0244] Manter Comando A��o de Cobran�a * * Consultar as Rela��es Cliente Tipo * * @author Rafael Santos * @date 25/03/2006 * * @return * @throws ControladorException */ public Collection obterColecaoClienteRelacaoTipo() throws ControladorException { FiltroClienteRelacaoTipo filtroClienteRelacaoTipo = new FiltroClienteRelacaoTipo(); filtroClienteRelacaoTipo.setCampoOrderBy(FiltroClienteRelacaoTipo.DESCRICAO); // carrega os cliente rela��o tipo Collection colecaoClienteRelacaoTipo = this.getControladorUtil().pesquisar(filtroClienteRelacaoTipo, ClienteRelacaoTipo.class.getName()); if (colecaoClienteRelacaoTipo == null || colecaoClienteRelacaoTipo.isEmpty()) { throw new ControladorException("atencao.pesquisa_inexistente", null, "Tabela Cliente Rela��o Tipo"); } return colecaoClienteRelacaoTipo; } /** * * Permite excluir um comando de atividade de cobran�a do crongrama ou * alterar/excluir um comando deatividade de cobran�a eventual * * [UC0244] Manter Comando A��o de Cobran�a * * Consultar as Cobran�a Atividade pela Atividade * * @author Rafael Santos * @date 25/03/2006 * * @return * @throws ControladorException */ public CobrancaAtividade obterCobrancaAtividade(String idCobrancaAtividade) throws ControladorException { CobrancaAtividade cobrancaAtividade = null; FiltroCobrancaAtividade filtroCobrancaAtividade = new FiltroCobrancaAtividade(); filtroCobrancaAtividade.adicionarParametro(new ParametroSimples(FiltroCobrancaAtividade.ID, idCobrancaAtividade)); Collection colecaoCobrancaAtividade = this.getControladorUtil().pesquisar(filtroCobrancaAtividade, CobrancaAtividade.class.getName()); if (colecaoCobrancaAtividade != null && !colecaoCobrancaAtividade.isEmpty()) { cobrancaAtividade = (CobrancaAtividade) colecaoCobrancaAtividade.iterator().next(); } return cobrancaAtividade; } /** * * Permite excluir um comando de atividade de cobran�a do crongrama ou * alterar/excluir um comando deatividade de cobran�a eventual * * [UC0244] Manter Comando A��o de Cobran�a * * Consultar as Cole��o de Rotas do Setor Comercial * * @author Rafael Santos * @date 25/03/2006 * * @return * @throws ControladorException */ public Collection obterColecaoRota(String idSetorComercial) throws ControladorException { FiltroRota filtroRota = new FiltroRota(); filtroRota.adicionarCaminhoParaCarregamentoEntidade("setorComercial"); filtroRota.adicionarParametro(new ParametroSimples(FiltroRota.SETOR_COMERCIAL_ID, idSetorComercial)); Collection colecaoRota = this.getControladorUtil().pesquisar(filtroRota, Rota.class.getName()); return colecaoRota; } /** * * Inserir um comando de atividade de cobran�a eventual * * [UC0243] - Inserir Comando A��o de Cobran�a * * Verificar exist�ncia do comando eventual na base * * [FS0016] - Verificar exist�ncia do comando eventual * * @author Rafael Santos,S�vio Luiz * @throws ControladorException * @date 04/04/2006,05/07/2007 */ public void verficarExistenciaComandoEventual(String[] idsCobrancaAcao, String idCobrancaAtividade, String idCobrancaGrupo, String idGerenciaRegional, String idLocalidadeInicial, String idLocalidadeFinal, String codigoSetorComercialInicial, String codigoSetorComercialFinal, String idCliente, String idClienteRelacaoTipo, String anoMesReferencialInicial, String anoMesReferencialFinal, String dataVencimentoContaInicial, String dataVencimentoContaFinal, String indicador, String rotaInicial, String rotaFinal, String idComando, String idUnidadeNegocio, String codigoClienteSuperior, String numeroQuadraInicial, String numeroQuadraFinal) throws ControladorException { FiltroCobrancaAcaoAtividadeComando filtroCobrancaAcaoAtividadeComando = new FiltroCobrancaAcaoAtividadeComando(); for (int i = 0; i < idsCobrancaAcao.length; i++) { if (idsCobrancaAcao.length == 1) { filtroCobrancaAcaoAtividadeComando.adicionarParametro(new ParametroSimples( FiltroCobrancaAcaoAtividadeComando.ID_COBRANCA_ACAO, idsCobrancaAcao[i])); } else { // caso seja a primeira vez ent�o inserino filtro, a mais, a // quantidade de vezes que ter� o conector or // (idsCobrancaAcao.length) if (i == 0) { filtroCobrancaAcaoAtividadeComando.adicionarParametro(new ParametroSimples( FiltroCobrancaAcaoAtividadeComando.ID_COBRANCA_ACAO, idsCobrancaAcao[i], FiltroParametro.CONECTOR_OR, idsCobrancaAcao.length)); } else { // sen�o se for o ultimo la�o do for ent�o inseri no filtro // sem // o conector or if (idsCobrancaAcao.length == i + 1) { filtroCobrancaAcaoAtividadeComando.adicionarParametro(new ParametroSimples( FiltroCobrancaAcaoAtividadeComando.ID_COBRANCA_ACAO, idsCobrancaAcao[i])); } else { // sen�o inseri no filtro o conector or filtroCobrancaAcaoAtividadeComando.adicionarParametro(new ParametroSimples( FiltroCobrancaAcaoAtividadeComando.ID_COBRANCA_ACAO, idsCobrancaAcao[i], FiltroParametro.CONECTOR_OR)); } } } } filtroCobrancaAcaoAtividadeComando.adicionarParametro(new ParametroSimples( FiltroCobrancaAcaoAtividadeComando.ID_COBRANCA_ATIVIDADE, idCobrancaAtividade)); // //data de realiza��o e comando // ParametroNulo parametro1 = new // ParametroNulo(FiltroCobrancaAcaoAtividadeComando.REALIZACAO); // MenorQueComparacaoColuna parametro2 = // ConectorOr conectorOr = new ConectorOr(parametro1,parametro2); // filtroCobrancaAcaoAtividadeComando.adicionarParametro(new ParametroNulo(FiltroCobrancaAcaoAtividadeComando.REALIZACAO, FiltroParametro.CONECTOR_OR, 2)); filtroCobrancaAcaoAtividadeComando.adicionarParametro(new MenorQueComparacaoColuna(FiltroCobrancaAcaoAtividadeComando.REALIZACAO, FiltroCobrancaAcaoAtividadeComando.COMANDO)); // id Cobranca Grupo if (idCobrancaGrupo != null && !idCobrancaGrupo.equals("") && !idCobrancaGrupo.equals(ConstantesSistema.NUMERO_NAO_INFORMADO + "")) { filtroCobrancaAcaoAtividadeComando.adicionarParametro(new ParametroSimples( FiltroCobrancaAcaoAtividadeComando.ID_COBRANCA_GRUPO, idCobrancaGrupo)); } else { filtroCobrancaAcaoAtividadeComando.adicionarParametro(new ParametroNulo(FiltroCobrancaAcaoAtividadeComando.ID_COBRANCA_GRUPO)); } // id Gerencia Regional if (idGerenciaRegional != null && !idGerenciaRegional.equals("") && !idGerenciaRegional.equals(ConstantesSistema.NUMERO_NAO_INFORMADO + "")) { filtroCobrancaAcaoAtividadeComando.adicionarParametro(new ParametroSimples( FiltroCobrancaAcaoAtividadeComando.ID_GERENCIA_REGIONAL, idGerenciaRegional)); } else { filtroCobrancaAcaoAtividadeComando .adicionarParametro(new ParametroNulo(FiltroCobrancaAcaoAtividadeComando.ID_GERENCIA_REGIONAL)); } // id Unidade Negocio if (idUnidadeNegocio != null && !idUnidadeNegocio.equals(ConstantesSistema.NUMERO_NAO_INFORMADO + "")) { filtroCobrancaAcaoAtividadeComando.adicionarParametro(new ParametroSimples( FiltroCobrancaAcaoAtividadeComando.ID_UNIDADE_NEGOCIO, idUnidadeNegocio)); } else { filtroCobrancaAcaoAtividadeComando.adicionarParametro(new ParametroNulo(FiltroCobrancaAcaoAtividadeComando.ID_UNIDADE_NEGOCIO)); } // localidade inicial e final if ((idLocalidadeInicial != null && !idLocalidadeInicial.equals("")) && (idLocalidadeFinal != null && !idLocalidadeFinal.equals(""))) { filtroCobrancaAcaoAtividadeComando.adicionarParametro(new ParametroSimples( FiltroCobrancaAcaoAtividadeComando.ID_LOCALIDADE_INICIAL, idLocalidadeInicial)); filtroCobrancaAcaoAtividadeComando.adicionarParametro(new ParametroSimples( FiltroCobrancaAcaoAtividadeComando.ID_LOCALIDADE_FINAL, idLocalidadeFinal)); } else { filtroCobrancaAcaoAtividadeComando.adicionarParametro(new ParametroNulo( FiltroCobrancaAcaoAtividadeComando.ID_LOCALIDADE_INICIAL)); filtroCobrancaAcaoAtividadeComando .adicionarParametro(new ParametroNulo(FiltroCobrancaAcaoAtividadeComando.ID_LOCALIDADE_FINAL)); } // setor comercial inicial e final if ((codigoSetorComercialInicial != null && !codigoSetorComercialInicial.equals("")) && (codigoSetorComercialFinal != null && !codigoSetorComercialFinal.equals(""))) { filtroCobrancaAcaoAtividadeComando.adicionarParametro(new ParametroSimples( FiltroCobrancaAcaoAtividadeComando.CODIGO_SETOR_COMERCIAL_INICIAL, codigoSetorComercialInicial)); filtroCobrancaAcaoAtividadeComando.adicionarParametro(new ParametroSimples( FiltroCobrancaAcaoAtividadeComando.CODIGO_SETOR_COMERCIAL_FINAL, codigoSetorComercialFinal)); } else { filtroCobrancaAcaoAtividadeComando.adicionarParametro(new ParametroNulo( FiltroCobrancaAcaoAtividadeComando.CODIGO_SETOR_COMERCIAL_INICIAL)); filtroCobrancaAcaoAtividadeComando.adicionarParametro(new ParametroNulo( FiltroCobrancaAcaoAtividadeComando.CODIGO_SETOR_COMERCIAL_FINAL)); } // id do cliente superior if (codigoClienteSuperior != null && !codigoClienteSuperior.equals("")) { filtroCobrancaAcaoAtividadeComando.adicionarParametro(new ParametroSimples( FiltroCobrancaAcaoAtividadeComando.ID_CLIENTE_SUPERIOR, codigoClienteSuperior)); } else { filtroCobrancaAcaoAtividadeComando .adicionarParametro(new ParametroNulo(FiltroCobrancaAcaoAtividadeComando.ID_CLIENTE_SUPERIOR)); } // id do cliente if (idCliente != null && !idCliente.equals("")) { filtroCobrancaAcaoAtividadeComando.adicionarParametro(new ParametroSimples(FiltroCobrancaAcaoAtividadeComando.ID_CLIENTE, idCliente)); } else { filtroCobrancaAcaoAtividadeComando.adicionarParametro(new ParametroNulo(FiltroCobrancaAcaoAtividadeComando.ID_CLIENTE)); } // id cliente rela��o tipo if (idClienteRelacaoTipo != null && !idClienteRelacaoTipo.equals("") && !idClienteRelacaoTipo.equals(ConstantesSistema.NUMERO_NAO_INFORMADO + "")) { filtroCobrancaAcaoAtividadeComando.adicionarParametro(new ParametroSimples( FiltroCobrancaAcaoAtividadeComando.ID_CLIENTE_RELACAO_TIPO, idClienteRelacaoTipo)); } else { filtroCobrancaAcaoAtividadeComando.adicionarParametro(new ParametroNulo( FiltroCobrancaAcaoAtividadeComando.ID_CLIENTE_RELACAO_TIPO)); } // ano mes referencial inicial // ano mes referencial final // inicial if (anoMesReferencialInicial != null && !anoMesReferencialInicial.equals("")) { String anoInicial = anoMesReferencialInicial.substring(3, 7); String mesInicial = anoMesReferencialInicial.substring(0, 2); String anoMes = anoInicial + mesInicial; filtroCobrancaAcaoAtividadeComando.adicionarParametro(new ParametroSimples( FiltroCobrancaAcaoAtividadeComando.ANO_MES_REFERENCIA_CONTA_INICIAL, anoMes)); } else { filtroCobrancaAcaoAtividadeComando.adicionarParametro(new ParametroSimples( FiltroCobrancaAcaoAtividadeComando.ANO_MES_REFERENCIA_CONTA_INICIAL, "198001")); } // final if (anoMesReferencialFinal != null && !anoMesReferencialFinal.equals("")) { String anoFinal = anoMesReferencialFinal.substring(3, 7); String mesFinal = anoMesReferencialFinal.substring(0, 2); String anoMes = anoFinal + mesFinal; filtroCobrancaAcaoAtividadeComando.adicionarParametro(new ParametroSimples( FiltroCobrancaAcaoAtividadeComando.ANO_MES_REFERENCIA_CONTA_FINAL, anoMes)); } else { filtroCobrancaAcaoAtividadeComando.adicionarParametro(new ParametroSimples( FiltroCobrancaAcaoAtividadeComando.ANO_MES_REFERENCIA_CONTA_FINAL, "999912")); } // data vencimento conta inicial // data vencimento conta final // data inicial if (dataVencimentoContaInicial != null && !dataVencimentoContaInicial.equals("")) { filtroCobrancaAcaoAtividadeComando.adicionarParametro(new ParametroSimples( FiltroCobrancaAcaoAtividadeComando.DATA_VENCIMENTO_CONTA_INICIAL, Util .converteStringParaDate(dataVencimentoContaInicial))); } else { filtroCobrancaAcaoAtividadeComando.adicionarParametro(new ParametroSimples( FiltroCobrancaAcaoAtividadeComando.DATA_VENCIMENTO_CONTA_INICIAL, Util.converteStringParaDate("01/01/1980"))); } // data final if (dataVencimentoContaFinal != null && !dataVencimentoContaFinal.equals("")) { filtroCobrancaAcaoAtividadeComando.adicionarParametro(new ParametroSimples( FiltroCobrancaAcaoAtividadeComando.DATA_VENCIMENTO_CONTA_FINAL, Util.converteStringParaDate(dataVencimentoContaFinal))); } else { filtroCobrancaAcaoAtividadeComando.adicionarParametro(new ParametroSimples( FiltroCobrancaAcaoAtividadeComando.DATA_VENCIMENTO_CONTA_FINAL, Util.converteStringParaDate("31/12/9999"))); } // indicador de crit�rio if (indicador != null && !indicador.equals("")) { if (indicador.equals("Rota")) { filtroCobrancaAcaoAtividadeComando.adicionarParametro(new ParametroSimples( FiltroCobrancaAcaoAtividadeComando.INDICADOR_CRITERIO, 1)); } else { filtroCobrancaAcaoAtividadeComando.adicionarParametro(new ParametroSimples( FiltroCobrancaAcaoAtividadeComando.INDICADOR_CRITERIO, 2)); } } // cobran�a criterio if (idComando != null && !idComando.equals("")) { filtroCobrancaAcaoAtividadeComando.adicionarParametro(new ParametroSimples( FiltroCobrancaAcaoAtividadeComando.ID_COBRANCA_CRITERIO, idComando)); } else { filtroCobrancaAcaoAtividadeComando .adicionarParametro(new ParametroNulo(FiltroCobrancaAcaoAtividadeComando.ID_COBRANCA_CRITERIO)); } // rota inicial e final if ((rotaInicial != null && !rotaInicial.equals("")) && (rotaFinal != null && !rotaFinal.equals(""))) { filtroCobrancaAcaoAtividadeComando.adicionarParametro(new ParametroSimples(FiltroCobrancaAcaoAtividadeComando.ID_ROTA_INICIAL, rotaInicial)); filtroCobrancaAcaoAtividadeComando.adicionarParametro(new ParametroSimples(FiltroCobrancaAcaoAtividadeComando.ID_ROTA_FINAL, rotaFinal)); } else { filtroCobrancaAcaoAtividadeComando.adicionarParametro(new ParametroNulo(FiltroCobrancaAcaoAtividadeComando.ID_ROTA_INICIAL)); filtroCobrancaAcaoAtividadeComando.adicionarParametro(new ParametroNulo(FiltroCobrancaAcaoAtividadeComando.ID_ROTA_FINAL)); } // numero Quadra inicial e final if ((numeroQuadraInicial != null && !numeroQuadraInicial.equals("")) && (numeroQuadraFinal != null && !numeroQuadraFinal.equals(""))) { filtroCobrancaAcaoAtividadeComando.adicionarParametro(new ParametroSimples( FiltroCobrancaAcaoAtividadeComando.NUMERO_QUADRA_INICIAL, numeroQuadraInicial)); filtroCobrancaAcaoAtividadeComando.adicionarParametro(new ParametroSimples( FiltroCobrancaAcaoAtividadeComando.NUMERO_QUADRA_FINAL, numeroQuadraFinal)); } else { filtroCobrancaAcaoAtividadeComando.adicionarParametro(new ParametroNulo( FiltroCobrancaAcaoAtividadeComando.NUMERO_QUADRA_INICIAL)); filtroCobrancaAcaoAtividadeComando .adicionarParametro(new ParametroNulo(FiltroCobrancaAcaoAtividadeComando.NUMERO_QUADRA_FINAL)); } Collection colecaoCobrancaAcaoAtividadeComando = getControladorUtil().pesquisar(filtroCobrancaAcaoAtividadeComando, CobrancaAcaoAtividadeComando.class.getName()); if (colecaoCobrancaAcaoAtividadeComando != null && !colecaoCobrancaAcaoAtividadeComando.isEmpty()) { // Existe comando n�o realizado para esta atividade com estes mesmos // parametros throw new ControladorException("atencao.existe.comando"); } } /** * * Inserir um comando de atividade de cobran�a eventual * * [UC0243] - Inserir Comando A��o de Cobran�a * * Verificar refer�ncia final menor que refer�ncia inicial * * [FS0012] - Verificar refer�ncia final menor que refer�ncia inicial * * @author Rafael Santos * @throws ControladorException * @date 04/04/2006 */ public void validarAnoMesInicialFinalComandoAcaoCobranca(String anoMesContaInicial, String anoMesContaFinal) throws ControladorException { if (anoMesContaFinal != null && !anoMesContaFinal.equals("")) { String anoFinal = anoMesContaFinal.substring(3, 7); String mesFinal = anoMesContaFinal.substring(0, 2); Calendar periodoFinal = new GregorianCalendar(); periodoFinal.set(Calendar.DATE, 1); periodoFinal.set(Calendar.MONTH, (new Integer(mesFinal).intValue() - 1)); periodoFinal.set(Calendar.YEAR, new Integer(anoFinal).intValue()); String periodoFinalConta = this.getControladorUtil().pesquisarParametrosDoSistema().getAnoMesArrecadacao() + ""; String anoFinalArrecadacao = periodoFinalConta.substring(0, 4); String mesFinalArrecadacao = periodoFinalConta.substring(4, 6); Calendar periodoAnoMesArrecadacao = new GregorianCalendar(); periodoAnoMesArrecadacao.set(Calendar.DATE, 1); periodoAnoMesArrecadacao.set(Calendar.MONTH, (new Integer(mesFinalArrecadacao).intValue() - 1)); periodoAnoMesArrecadacao.set(Calendar.YEAR, new Integer(anoFinalArrecadacao).intValue()); if (periodoFinal.compareTo(periodoAnoMesArrecadacao) > 0) { throw new ControladorException( // M�s/Ano Final do Per�odo de Refer�ncia das Contas maior que o // m�s ano da arrecada��o({0}) "atencao.periodo_final.maior.mes_ano", null, mesFinalArrecadacao + "/" + anoFinalArrecadacao); } } if ((anoMesContaInicial != null && !anoMesContaInicial.equals("")) && (anoMesContaFinal != null && !anoMesContaFinal.equals(""))) { if (anoMesContaInicial.length() == 7 & anoMesContaFinal.length() == 7) { String anoInicial = anoMesContaInicial.substring(3, 7); String mesInicial = anoMesContaInicial.substring(0, 2); String anoFinal = anoMesContaFinal.substring(3, 7); String mesFinal = anoMesContaFinal.substring(0, 2); boolean valida = Util.validarAnoMes(anoMesContaInicial); if (valida) { throw new ControladorException("errors.invalid", null, "M�s/Ano Inicial do Per�odo da Refer�ncia das Contas"); } valida = Util.validarAnoMes(anoMesContaFinal); if (valida) { throw new ControladorException("errors.invalid", null, "M�s/Ano Final do Per�odo da Refer�ncia das Contas"); } Calendar periodoInicial = new GregorianCalendar(); periodoInicial.set(Calendar.DATE, 1); periodoInicial.set(Calendar.MONTH, (new Integer(mesInicial).intValue() - 1)); periodoInicial.set(Calendar.YEAR, new Integer(anoInicial).intValue()); Calendar periodoFinal = new GregorianCalendar(); periodoFinal.set(Calendar.DATE, 1); periodoFinal.set(Calendar.MONTH, (new Integer(mesFinal).intValue() - 1)); periodoFinal.set(Calendar.YEAR, new Integer(anoFinal).intValue()); if (periodoInicial.compareTo(new GregorianCalendar()) > 0) { throw new ControladorException(// // M�s/Ano Final do Per�odo de Refer�ncia das Contas // posterior ao m�s e ano corrente "atencao.periodo_inicial.maior.data_corrente"); } if (periodoInicial.compareTo(periodoFinal) > 0) { throw new ControladorException( // M�s/Ano Inicial do Per�odo da Refer�ncia das Contas // posterior ao M�s/Ano Final do Per�odo de // Refer�ncia das // Contas "atencao.referencia_inicial.maior.referencia_final"); } } else { if (anoMesContaInicial.length() < 7) { throw new ControladorException("errors.invalid", null, "M�s/Ano Inicial do Per�odo da Refer�ncia das Contas"); } if (anoMesContaFinal.length() < 7) { throw new ControladorException("errors.invalid", null, "M�s/Ano Final do Per�odo da Refer�ncia das Contas"); } } } } /** * * Inserir um comando de atividade de cobran�a eventual * * [UC0243] - Inserir Comando A��o de Cobran�a * * Verificar data final menos que data inicial * * [FS0014] - Verificar data final menos que data inicial * * @author Rafael Santos * @throws ControladorException * @date 04/04/2006 */ public void verificarVencimentoContaComandoAcaoCobranca(String anoMesVencimentoInicial, String anoMesVencimentoFinal) throws ControladorException { if (anoMesVencimentoInicial != null && !anoMesVencimentoInicial.equals("")) { String anoInicial = anoMesVencimentoInicial.substring(6, 10); String mesInicial = anoMesVencimentoInicial.substring(3, 5); String diaInicial = anoMesVencimentoInicial.substring(0, 2); boolean valida = Util.validarDiaMesAno(anoMesVencimentoInicial); if (valida) { throw new ControladorException("errors.invalid", null, "Data Inicial do Per�odo de Vencimento das Contas"); } Calendar periodoInicial = new GregorianCalendar(); periodoInicial.set(Calendar.DATE, new Integer(diaInicial).intValue()); periodoInicial.set(Calendar.MONTH, (new Integer(mesInicial).intValue() - 1)); periodoInicial.set(Calendar.YEAR, new Integer(anoInicial).intValue()); if (periodoInicial.compareTo(new GregorianCalendar()) > 0) { throw new ControladorException( // Data Final do Per�odo de Vencimento das Contas posterior � // data corrente "atencao.data_final.maior.data_corrente"); } } if ((anoMesVencimentoInicial != null && !anoMesVencimentoInicial.equals("")) && (anoMesVencimentoFinal != null && !anoMesVencimentoFinal.equals(""))) { if (anoMesVencimentoInicial.length() == 10 & anoMesVencimentoFinal.length() == 10) { String anoInicial = anoMesVencimentoInicial.substring(6, 10); String mesInicial = anoMesVencimentoInicial.substring(3, 5); String diaInicial = anoMesVencimentoInicial.substring(0, 2); String anoFinal = anoMesVencimentoFinal.substring(6, 10); String mesFinal = anoMesVencimentoFinal.substring(3, 5); String diaFinal = anoMesVencimentoInicial.substring(0, 2); boolean valida = Util.validarDiaMesAno(anoMesVencimentoInicial); if (valida) { throw new ControladorException("errors.invalid", null, "Data Inicial do Per�odo de Vencimento das Contas"); } valida = Util.validarDiaMesAno(anoMesVencimentoFinal); if (valida) { throw new ControladorException("errors.invalid", null, "Data Final do Per�odo de Vencimento das Contas"); } Calendar periodoInicial = new GregorianCalendar(); periodoInicial.set(Calendar.DATE, new Integer(diaInicial).intValue()); periodoInicial.set(Calendar.MONTH, (new Integer(mesInicial).intValue() - 1)); periodoInicial.set(Calendar.YEAR, new Integer(anoInicial).intValue()); Calendar periodoFinal = new GregorianCalendar(); periodoFinal.set(Calendar.DATE, new Integer(diaFinal).intValue()); periodoFinal.set(Calendar.MONTH, (new Integer(mesFinal).intValue() - 1)); periodoFinal.set(Calendar.YEAR, new Integer(anoFinal).intValue()); if (periodoInicial.compareTo(periodoFinal) > 0) { throw new ControladorException( // Data Inicial do Per�odo de Vencimento das Contas // posterior � Data Final do Per�odo de Vencimento // das // Contas "atencao.data_inicial.maior.data_final"); } } else { if (anoMesVencimentoInicial.length() < 10) { throw new ControladorException("errors.invalid", null, "Data Inicial do Per�odo de Vencimento das Contas"); } if (anoMesVencimentoFinal.length() < 10) { throw new ControladorException("errors.invalid", null, "Data Final do Per�odo de Vencimento das Contas"); } } } } /** * * Inserir um comando de atividade de cobran�a eventual * * [UC0243] - Inserir Comando A��o de Cobran�a * * Inserir cobranca acao atividade comando * * [SB0007] - Inserir cobranca acao atividade comando * * @author Rafael Santos * @param usuarioLogado * @throws ControladorException * @date 04/04/2006 */ public Collection inserirComandoAcaoCobrancaCriterioEventual(String[] idsCobrancaAcao, String idCobrancaAtividade, String idCobrancaGrupo, String idGerenciaRegional, String idLocalidadeInicial, String idLocalidadeFinal, String codigoSetorComercialInicial, String codigoSetorComercialFinal, String idSetorComercialInicial, String idSetorComercialFinal, String idCliente, String idClienteRelacaoTipo, String anoMesReferencialInicial, String anoMesReferencialFinal, String dataVencimentoContaInicial, String dataVencimentoContaFinal, String indicador, String idRotaInicial, String idRotaFinal, String idComando, String unidadeNegocio, Usuario usuarioLogado, String titulo, String descricaoSolicitacao, String prazoExecucao, String quantidadeMaximaDocumentos, String valorLimiteObrigatoria, String indicadorImoveisDebito, String indicadorGerarBoletimCadastro, String codigoClienteSuperior, String codigoRotaInicial, String codigoRotaFinal, String logradouroId, String consumoMedioInicial, String consumoMedioFinal, String tipoConsumo, String periodoInicialFiscalizacao, String periodoFinalFiscalizacao, String[] situacaoFiscalizacao, String numeroQuadraInicial, String numeroQuadraFinal) throws ControladorException { // ------------ REGISTRAR TRANSA��O ---------------- RegistradorOperacao registradorOperacao = null; Operacao operacao = new Operacao(); OperacaoEfetuada operacaoEfetuada = new OperacaoEfetuada(); // ------------ REGISTRAR TRANSA��O ---------------- Collection colecaoCobrancaAcaoAtividadeComando = new ArrayList(); // executar comando CobrancaAcaoAtividadeComando cobrancaAcaoAtividadeComando = new CobrancaAcaoAtividadeComando(); // id gerado pelo sistema CobrancaAcao cobrancaAcao = null; // id da atividade de cobranca FiltroCobrancaAtividade filtroCobrancaAtividade = new FiltroCobrancaAtividade(); filtroCobrancaAtividade.adicionarParametro(new ParametroSimples(FiltroCobrancaAtividade.ID, idCobrancaAtividade)); Collection colecaoCobrancaAtividade = this.getControladorUtil().pesquisar(filtroCobrancaAtividade, CobrancaAtividade.class.getName()); CobrancaAtividade cobrancaAtividade = (CobrancaAtividade) colecaoCobrancaAtividade.iterator().next(); cobrancaAcaoAtividadeComando.setCobrancaAtividade(cobrancaAtividade); // comando cobrancaAcaoAtividadeComando.setComando(new Date()); // realizacao cobrancaAcaoAtividadeComando.setRealizacao(null); // ultima alteracao cobrancaAcaoAtividadeComando.setUltimaAlteracao(new Date()); // usuario cobrancaAcaoAtividadeComando.setUsuario(usuarioLogado); // empresa cobrancaAcaoAtividadeComando.setEmpresa(null); // id Cobranca Grupo if (idCobrancaGrupo != null && !idCobrancaGrupo.equals(ConstantesSistema.NUMERO_NAO_INFORMADO + "") && !idCobrancaGrupo.equals("")) { CobrancaGrupo cobrancaGrupo = new CobrancaGrupo(); cobrancaGrupo.setId(new Integer(idCobrancaGrupo)); cobrancaAcaoAtividadeComando.setCobrancaGrupo(cobrancaGrupo); } else { cobrancaAcaoAtividadeComando.setCobrancaGrupo(null); } // id Gerencia Regional if (idGerenciaRegional != null && !idGerenciaRegional.equals(ConstantesSistema.NUMERO_NAO_INFORMADO + "") && !idGerenciaRegional.equals("")) { GerenciaRegional gerenciaRegional = new GerenciaRegional(); gerenciaRegional.setId(new Integer(idGerenciaRegional)); cobrancaAcaoAtividadeComando.setGerenciaRegional(gerenciaRegional); } else { cobrancaAcaoAtividadeComando.setGerenciaRegional(null); } // id Unidade Negocio if (unidadeNegocio != null && !unidadeNegocio.equals(ConstantesSistema.NUMERO_NAO_INFORMADO + "") && !unidadeNegocio.equals("")) { UnidadeNegocio unidadeNegocioObj = new UnidadeNegocio(); unidadeNegocioObj.setId(new Integer(unidadeNegocio)); cobrancaAcaoAtividadeComando.setUnidadeNegocio(unidadeNegocioObj); } else { cobrancaAcaoAtividadeComando.setUnidadeNegocio(null); } // localidade inicial e final if ((idLocalidadeInicial != null && !idLocalidadeInicial.equals("")) && (idLocalidadeFinal != null && !idLocalidadeFinal.equals(""))) { Localidade localidadeInicial = new Localidade(); localidadeInicial.setId(new Integer(idLocalidadeInicial)); cobrancaAcaoAtividadeComando.setLocalidadeInicial(localidadeInicial); Localidade localidadeFinal = new Localidade(); localidadeFinal.setId(new Integer(idLocalidadeFinal)); cobrancaAcaoAtividadeComando.setLocalidadeFinal(localidadeFinal); } else { cobrancaAcaoAtividadeComando.setLocalidadeInicial(null); cobrancaAcaoAtividadeComando.setLocalidadeFinal(null); } // codigo do setor comercial inicial e final if ((codigoSetorComercialInicial != null && !codigoSetorComercialInicial.equals("")) && (codigoSetorComercialFinal != null && !codigoSetorComercialFinal.equals(""))) { cobrancaAcaoAtividadeComando.setCodigoSetorComercialInicial(new Integer(codigoSetorComercialInicial)); cobrancaAcaoAtividadeComando.setCodigoSetorComercialFinal(new Integer(codigoSetorComercialFinal)); } else { cobrancaAcaoAtividadeComando.setCodigoSetorComercialInicial(null); cobrancaAcaoAtividadeComando.setCodigoSetorComercialFinal(null); }// // rota inicial e final if ((idRotaInicial != null && !idRotaInicial.equals(ConstantesSistema.NUMERO_NAO_INFORMADO + "")) && (idRotaFinal != null && !idRotaFinal.equals(ConstantesSistema.NUMERO_NAO_INFORMADO + ""))) { Rota rotaInicial = new Rota(); rotaInicial.setId(new Integer(idRotaInicial)); cobrancaAcaoAtividadeComando.setRotaInicial(rotaInicial); Rota rotaFinal = new Rota(); rotaFinal.setId(new Integer(idRotaFinal)); cobrancaAcaoAtividadeComando.setRotaFinal(rotaFinal); } else { cobrancaAcaoAtividadeComando.setRotaInicial(null); cobrancaAcaoAtividadeComando.setRotaFinal(null); } // numero quadra inicial e final if ((numeroQuadraInicial != null && !numeroQuadraInicial.equals(ConstantesSistema.NUMERO_NAO_INFORMADO + "") && !numeroQuadraInicial .equals("")) && (numeroQuadraFinal != null && !numeroQuadraFinal.equals(ConstantesSistema.NUMERO_NAO_INFORMADO + "") && !numeroQuadraFinal .equals(""))) { cobrancaAcaoAtividadeComando.setNumeroQuadraInicial(new Integer(numeroQuadraInicial)); cobrancaAcaoAtividadeComando.setNumeroQuadraFinal(new Integer(numeroQuadraFinal)); } else { cobrancaAcaoAtividadeComando.setNumeroQuadraInicial(null); cobrancaAcaoAtividadeComando.setNumeroQuadraFinal(null); } // id do cliente if (idCliente != null && !idCliente.equals("")) { Cliente cliente = new Cliente(); cliente.setId(new Integer(idCliente)); cobrancaAcaoAtividadeComando.setCliente(cliente); } else { cobrancaAcaoAtividadeComando.setCliente(null); } // id do cliente superior if (codigoClienteSuperior != null && !codigoClienteSuperior.equals("")) { Cliente cliente = new Cliente(); cliente.setId(new Integer(codigoClienteSuperior)); cobrancaAcaoAtividadeComando.setSuperior(cliente); } else { cobrancaAcaoAtividadeComando.setSuperior(null); } // id cliente rela��o tipo if (idClienteRelacaoTipo != null && !idClienteRelacaoTipo.equals(ConstantesSistema.NUMERO_NAO_INFORMADO + "") && !idClienteRelacaoTipo.equals("")) { ClienteRelacaoTipo clienteRelacaoTipo = new ClienteRelacaoTipo(); clienteRelacaoTipo.setId(new Integer(idClienteRelacaoTipo)); cobrancaAcaoAtividadeComando.setClienteRelacaoTipo(clienteRelacaoTipo); } else { cobrancaAcaoAtividadeComando.setClienteRelacaoTipo(null); } // inicial referencial if (anoMesReferencialInicial != null && !anoMesReferencialInicial.equals("")) { String anoInicial = anoMesReferencialInicial.substring(3, 7); String mesInicial = anoMesReferencialInicial.substring(0, 2); String anoMes = anoInicial + mesInicial; cobrancaAcaoAtividadeComando.setAnoMesReferenciaContaInicial(new Integer(anoMes)); } else { cobrancaAcaoAtividadeComando.setAnoMesReferenciaContaInicial(new Integer("198001")); } // final referencial if (anoMesReferencialFinal != null && !anoMesReferencialFinal.equals("")) { String anoFinal = anoMesReferencialFinal.substring(3, 7); String mesFinal = anoMesReferencialFinal.substring(0, 2); String anoMes = anoFinal + mesFinal; cobrancaAcaoAtividadeComando.setAnoMesReferenciaContaFinal(new Integer(anoMes)); } else { cobrancaAcaoAtividadeComando.setAnoMesReferenciaContaFinal(new Integer("999912")); } // data inicial conta if (dataVencimentoContaInicial != null && !dataVencimentoContaInicial.equals("")) { cobrancaAcaoAtividadeComando.setDataVencimentoContaInicial(Util.converteStringParaDate(dataVencimentoContaInicial)); } else { cobrancaAcaoAtividadeComando.setDataVencimentoContaInicial(Util.converteStringParaDate("01/01/1980")); } // data final conta if (dataVencimentoContaFinal != null && !dataVencimentoContaFinal.equals("")) { cobrancaAcaoAtividadeComando.setDataVencimentoContaFinal(Util.converteStringParaDate(dataVencimentoContaFinal)); } else { cobrancaAcaoAtividadeComando.setDataVencimentoContaFinal(Util.converteStringParaDate("31/12/9999")); } // indicador de crit�rio if (indicador != null && !indicador.equals("")) { if (indicador.equals("Rota")) { cobrancaAcaoAtividadeComando.setIndicadorCriterio(new Short((short) 1)); } else { cobrancaAcaoAtividadeComando.setIndicadorCriterio(new Short((short) 2)); } } // Logradouro if (logradouroId != null && !logradouroId.equals("")) { Logradouro logradouro = new Logradouro(); logradouro.setId(new Integer(logradouroId)); cobrancaAcaoAtividadeComando.setLogradouro(logradouro); } cobrancaAcaoAtividadeComando.setQuantidadeDocumentos(null); cobrancaAcaoAtividadeComando.setValorDocumentos(null); cobrancaAcaoAtividadeComando.setQuantidadeItensCobrados(null); cobrancaAcaoAtividadeComando.setDescricaoTitulo(titulo); cobrancaAcaoAtividadeComando.setDescricaoSolicitacao(descricaoSolicitacao); cobrancaAcaoAtividadeComando.setDataEncerramentoPrevista(null); if (prazoExecucao != null && !prazoExecucao.equals("")) { cobrancaAcaoAtividadeComando.setQuantidadeDiasRealizacao(new Short(prazoExecucao)); } if (quantidadeMaximaDocumentos != null && !quantidadeMaximaDocumentos.equals("")) { cobrancaAcaoAtividadeComando.setQuantidadeMaximaDocumentos(new Integer(quantidadeMaximaDocumentos)); } if (valorLimiteObrigatoria != null && !valorLimiteObrigatoria.equals("")) { valorLimiteObrigatoria = valorLimiteObrigatoria.replace(".", "").replace(",", "."); cobrancaAcaoAtividadeComando.setValorLimiteObrigatoria(new BigDecimal(valorLimiteObrigatoria)); } if (indicadorGerarBoletimCadastro != null && !indicadorGerarBoletimCadastro.equals("")) { cobrancaAcaoAtividadeComando.setIndicadorBoletim(new Short(indicadorGerarBoletimCadastro)); } if (indicadorImoveisDebito != null && !indicadorImoveisDebito.equals("")) { cobrancaAcaoAtividadeComando.setIndicadorDebito(new Short(indicadorImoveisDebito)); } if (consumoMedioInicial != null && !consumoMedioInicial.equals("")) { cobrancaAcaoAtividadeComando.setConsumoMedioInicial(new Integer(consumoMedioInicial)); } if (consumoMedioFinal != null && !consumoMedioFinal.equals("")) { cobrancaAcaoAtividadeComando.setConsumoMedioFinal(new Integer(consumoMedioFinal)); } if (tipoConsumo != null) { cobrancaAcaoAtividadeComando.setTipoConsumo(new Short(tipoConsumo)); } // data inicial fiscaliza��o if (periodoInicialFiscalizacao != null && !periodoInicialFiscalizacao.equals("")) { cobrancaAcaoAtividadeComando.setPeriodoInicialFiscalizacao(Util.converteStringParaDate(periodoInicialFiscalizacao)); } else if (periodoFinalFiscalizacao != null && !periodoFinalFiscalizacao.equals("")) { cobrancaAcaoAtividadeComando.setPeriodoInicialFiscalizacao(Util.converteStringParaDate("01/01/0001")); } else { cobrancaAcaoAtividadeComando.setPeriodoInicialFiscalizacao(null); } // data final fiscaliza��o if (periodoFinalFiscalizacao != null && !periodoFinalFiscalizacao.equals("")) { cobrancaAcaoAtividadeComando.setPeriodoFinalFiscalizacao(Util.converteStringParaDate(periodoFinalFiscalizacao)); } else if (periodoInicialFiscalizacao != null && !periodoInicialFiscalizacao.equals("")) { cobrancaAcaoAtividadeComando.setPeriodoFinalFiscalizacao(Util.converteStringParaDate("31/12/9999")); } else { cobrancaAcaoAtividadeComando.setPeriodoFinalFiscalizacao(null); } FiltroCobrancaAcao filtroCobrancaAcao = new FiltroCobrancaAcao(); for (int i = 0; i < idsCobrancaAcao.length; i++) { if (idsCobrancaAcao.length == 1) { filtroCobrancaAcao.adicionarParametro(new ParametroSimples(FiltroCobrancaAcao.ID, idsCobrancaAcao[i])); } else { // caso seja a primeira vez ent�o inserino filtro, a mais, a // quantidade de vezes que ter� o conector or // (idsCobrancaAcao.length) if (i == 0) { filtroCobrancaAcao.adicionarParametro(new ParametroSimples(FiltroCobrancaAcao.ID, idsCobrancaAcao[i], FiltroParametro.CONECTOR_OR, idsCobrancaAcao.length)); } else { // sen�o se for o ultimo la�o do for ent�o inseri no filtro // sem // o conector or if (idsCobrancaAcao.length == i + 1) { filtroCobrancaAcao.adicionarParametro(new ParametroSimples(FiltroCobrancaAcao.ID, idsCobrancaAcao[i])); } else { // sen�o inseri no filtro o conector or filtroCobrancaAcao.adicionarParametro(new ParametroSimples(FiltroCobrancaAcao.ID, idsCobrancaAcao[i], FiltroParametro.CONECTOR_OR)); } } } } filtroCobrancaAcao.adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAcao.DOCUMENTO_TIPO); filtroCobrancaAcao.adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAcao.SERVICO_TIPO_PREDECESSORA); filtroCobrancaAcao.adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAcao.SERVICO_TIPO); Collection colecaoCobrancaAcao = this.getControladorUtil().pesquisar(filtroCobrancaAcao, CobrancaAcao.class.getName()); if (idComando != null && !idComando.equals("")) { FiltroCobrancaCriterio filtroCobrancaCriterio = new FiltroCobrancaCriterio(); filtroCobrancaCriterio.adicionarParametro(new ParametroSimples(FiltroCobrancaCriterio.ID, idComando)); Collection colecaoCobrancaCriterio = this.getControladorUtil().pesquisar(filtroCobrancaCriterio, CobrancaCriterio.class.getName()); CobrancaCriterio cobrancaCriterio = (CobrancaCriterio) colecaoCobrancaCriterio.iterator().next(); cobrancaAcaoAtividadeComando.setCobrancaCriterio(cobrancaCriterio); } if (colecaoCobrancaAcao != null && !colecaoCobrancaAcao.isEmpty()) { Iterator iterator = colecaoCobrancaAcao.iterator(); while (iterator.hasNext()) { cobrancaAcao = (CobrancaAcao) iterator.next(); CobrancaAcaoAtividadeComando cobrancaAcaoAtividadeComandoColecao = new CobrancaAcaoAtividadeComando(); cobrancaAcaoAtividadeComandoColecao = cobrancaAcaoAtividadeComando; // id da a��o de cobranca selecionada cobrancaAcaoAtividadeComandoColecao.setCobrancaAcao(cobrancaAcao); if (cobrancaAcao.getIndicadorBoletim() != null && cobrancaAcao.getIndicadorBoletim().equals(CobrancaAcao.INDICADOR_BOLETIM_NAO)) { if (indicadorGerarBoletimCadastro != null && !indicadorGerarBoletimCadastro.equals("")) { Short indicadorBoletim = new Short(indicadorGerarBoletimCadastro); if (indicadorBoletim.equals(CobrancaAcao.INDICADOR_BOLETIM_SIM)) { sessionContext.setRollbackOnly(); throw new ControladorException("atencao.acoes.selecionada.nao.boletim"); } } } if (cobrancaAcao.getIndicadorDebito() != null && cobrancaAcao.getIndicadorDebito().equals(CobrancaAcao.INDICADOR_DEBITO_NAO)) { if (indicadorImoveisDebito != null && !indicadorImoveisDebito.equals("")) { Short indicadorDebito = new Short(indicadorImoveisDebito); if (indicadorDebito.equals(CobrancaAcao.INDICADOR_BOLETIM_NAO)) { sessionContext.setRollbackOnly(); throw new ControladorException("atencao.acoes.selecionada.nao.debito"); } } } if (idComando != null && !idComando.equals("")) { // ------------ REGISTRAR TRANSA��O ---------------- registradorOperacao = new RegistradorOperacao(Operacao.OPERACAO_INSERIR_COMANDO_ACAO_COBRANCA_EVENTUAL_COMANDO, new UsuarioAcaoUsuarioHelper(usuarioLogado, UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO)); operacao.setId(Operacao.OPERACAO_INSERIR_COMANDO_ACAO_COBRANCA_EVENTUAL_COMANDO); operacaoEfetuada.setOperacao(operacao); cobrancaAcaoAtividadeComando.setOperacaoEfetuada(operacaoEfetuada); cobrancaAcaoAtividadeComando.adicionarUsuario(usuarioLogado, UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO); registradorOperacao.registrarOperacao(cobrancaAcaoAtividadeComando); // ------------ REGISTRAR TRANSA��O ---------------- } else { // ------------ REGISTRAR TRANSA��O ---------------- registradorOperacao = new RegistradorOperacao(Operacao.OPERACAO_INSERIR_COMANDO_ACAO_COBRANCA_EVENTUAL_ROTA, new UsuarioAcaoUsuarioHelper(usuarioLogado, UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO)); operacao.setId(Operacao.OPERACAO_INSERIR_COMANDO_ACAO_COBRANCA_EVENTUAL_ROTA); operacaoEfetuada.setOperacao(operacao); cobrancaAcaoAtividadeComando.setOperacaoEfetuada(operacaoEfetuada); cobrancaAcaoAtividadeComando.adicionarUsuario(usuarioLogado, UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO); registradorOperacao.registrarOperacao(cobrancaAcaoAtividadeComando); // ------------ REGISTRAR TRANSA��O ---------------- } // inserir cobranca acao atividade comando Integer idCobrancaAcaoAtividadeComando = (Integer) this.getControladorUtil().inserir(cobrancaAcaoAtividadeComandoColecao); colecaoCobrancaAcaoAtividadeComando.add(idCobrancaAcaoAtividadeComando); } } // [FS008] - Obter Lista de Rotas Collection colecaoRotas = this.obterListasRotas(null, null, codigoSetorComercialInicial, codigoSetorComercialFinal, idLocalidadeInicial, idLocalidadeFinal, idGerenciaRegional, unidadeNegocio, codigoRotaInicial, codigoRotaFinal, numeroQuadraInicial, numeroQuadraFinal); // -- Validar se todas as rotas do grupo informado possui um criterio // definido para a a�ao de cobran�a if (colecaoRotas != null && !colecaoRotas.isEmpty()) { Collection<Integer> colecaoIdsAcoesCobranca = new ArrayList<Integer>(); for (String idCobrancaAcao : idsCobrancaAcao) { colecaoIdsAcoesCobranca.add(new Integer(idCobrancaAcao)); } Collection<Integer> colecaoIdsRotas = new ArrayList<Integer>(); for (Rota rota : (Collection<Rota>) colecaoRotas) { colecaoIdsRotas.add(new Integer(rota.getId())); } PesquisarQtdeRotasSemCriteriosParaAcoesCobranca filtro = new PesquisarQtdeRotasSemCriteriosParaAcoesCobranca(); filtro.setIdsRotas(colecaoIdsRotas); filtro.setIdsAcoesCobranca(colecaoIdsAcoesCobranca); if (cobrancaAcaoAtividadeComando.getCobrancaGrupo() != null) { filtro.setIdGrupoCobranca(cobrancaAcaoAtividadeComando.getCobrancaGrupo().getId()); } Integer qtdeRotasSemCriterios = this.pesquisarQtdeRotasSemCriteriosParaAcoesCobranca(filtro); if (qtdeRotasSemCriterios != null && qtdeRotasSemCriterios.intValue() > 0) { sessionContext.setRollbackOnly(); throw new ControladorException("atencao.rotas.sem.criterio.para.acao.cobranca"); } } // --------- if (colecaoRotas != null && !colecaoRotas.isEmpty()) { CobrancaAtividadeComandoRota cobrancaAtividadeComandoRota = null; Iterator iteratorColecaoRotas = colecaoRotas.iterator(); while (iteratorColecaoRotas.hasNext()) { Rota rota = (Rota) iteratorColecaoRotas.next(); registradorOperacao = null; operacao = new Operacao(); operacaoEfetuada = new OperacaoEfetuada(); if (colecaoCobrancaAcaoAtividadeComando != null && !colecaoCobrancaAcaoAtividadeComando.isEmpty()) { Iterator iteCobrancaAtividadeComando = colecaoCobrancaAcaoAtividadeComando.iterator(); while (iteCobrancaAtividadeComando.hasNext()) { Integer idCobrancaAcaoAtividadeComandoColecao = (Integer) iteCobrancaAtividadeComando.next(); CobrancaAtividadeComandoRotaPK cobrancaAtividadeComandoRotaPK = new CobrancaAtividadeComandoRotaPK(); cobrancaAtividadeComandoRotaPK.setCobrancaAcaoAtividadeComandoId(idCobrancaAcaoAtividadeComandoColecao); cobrancaAtividadeComandoRotaPK.setRotaId(rota.getId()); cobrancaAtividadeComandoRota = new CobrancaAtividadeComandoRota(); cobrancaAtividadeComandoRota.setComp_id(cobrancaAtividadeComandoRotaPK); CobrancaAcaoAtividadeComando cobrancaAcaoAtividadeComandoAux = new CobrancaAcaoAtividadeComando(); cobrancaAcaoAtividadeComandoAux.setId(idCobrancaAcaoAtividadeComandoColecao); cobrancaAtividadeComandoRota.setCobrancaAcaoAtividadeComando(cobrancaAcaoAtividadeComandoAux); cobrancaAtividadeComandoRota.setRota(rota); cobrancaAtividadeComandoRota.setUltimaAlteracao(new Date()); if (idComando != null && !idComando.equals("")) { // ------------ REGISTRAR TRANSA��O ---------------- registradorOperacao = new RegistradorOperacao(Operacao.OPERACAO_INSERIR_COMANDO_ACAO_COBRANCA_EVENTUAL_COMANDO, new UsuarioAcaoUsuarioHelper(usuarioLogado, UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO)); operacao.setId(Operacao.OPERACAO_INSERIR_COMANDO_ACAO_COBRANCA_EVENTUAL_COMANDO); operacaoEfetuada.setOperacao(operacao); cobrancaAtividadeComandoRota.setOperacaoEfetuada(operacaoEfetuada); cobrancaAtividadeComandoRota.adicionarUsuario(usuarioLogado, UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO); registradorOperacao.registrarOperacao(cobrancaAtividadeComandoRota); // ------------ REGISTRAR TRANSA��O ---------------- } else { // ------------ REGISTRAR TRANSA��O ---------------- registradorOperacao = new RegistradorOperacao(Operacao.OPERACAO_INSERIR_COMANDO_ACAO_COBRANCA_EVENTUAL_ROTA, new UsuarioAcaoUsuarioHelper(usuarioLogado, UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO)); operacao.setId(Operacao.OPERACAO_INSERIR_COMANDO_ACAO_COBRANCA_EVENTUAL_ROTA); operacaoEfetuada.setOperacao(operacao); cobrancaAtividadeComandoRota.setOperacaoEfetuada(operacaoEfetuada); cobrancaAtividadeComandoRota.adicionarUsuario(usuarioLogado, UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO); registradorOperacao.registrarOperacao(cobrancaAtividadeComandoRota); // ------------ REGISTRAR TRANSA��O ---------------- } // inserir cobranca atividade comando rota this.getControladorUtil().inserir(cobrancaAtividadeComandoRota); } } } } colecaoRotas = new ArrayList(); if (cobrancaAcaoAtividadeComando.getCobrancaGrupo() != null) { FiltroRota filtroRota = new FiltroRota(); filtroRota.adicionarParametro(new ParametroSimples(FiltroRota.COBRANCA_GRUPO_ID, cobrancaAcaoAtividadeComando .getCobrancaGrupo().getId())); colecaoRotas = getControladorUtil().pesquisar(filtroRota, Rota.class.getName()); } else { try { colecaoRotas = repositorioBatch.pesquisarRotasProcessamentoBatchCobrancaGrupoNaoInformado(cobrancaAcaoAtividadeComando .getId()); } catch (ErroRepositorioException e) { e.printStackTrace(); } } if (colecaoRotas == null || colecaoRotas.isEmpty()) { if (idCliente == null && codigoClienteSuperior == null && logradouroId == null) { throw new ControladorException("atencao.comando.nao.existe.rotas"); } } if (colecaoCobrancaAcaoAtividadeComando != null && !colecaoCobrancaAcaoAtividadeComando.isEmpty()) { Iterator iteCobrancaAtividadeComando = colecaoCobrancaAcaoAtividadeComando.iterator(); while (iteCobrancaAtividadeComando.hasNext()) { Integer idCobrancaAcaoAtividadeComandoColecao = (Integer) iteCobrancaAtividadeComando.next(); CobrancaAcaoAtividadeComando cobrancaAcaoAtividadeComandoAux = new CobrancaAcaoAtividadeComando(); cobrancaAcaoAtividadeComandoAux.setId(idCobrancaAcaoAtividadeComandoColecao); // Para cada Situa��o da Fiscaliza��o selecionada, inclui a // situa��o da fiscaliza��o // na tabela COB_ACAO_ATV_CMD_FIS_SIT. this.atualizarCobrancaAcaoAtividadeComandoFiscalizacaoSituacao(cobrancaAcaoAtividadeComando, situacaoFiscalizacao); // Fim insert de // CobrancaAcaoAtividadeComandoFiscalizacaoSituacao. } } return colecaoCobrancaAcaoAtividadeComando; } /** * * Inserir Comando de A��o de Cobran�a * * [UC0243] Inserir Comando A��o de Cobran�a * * Consultar CobrancaAtividade * * @author Rafael Santos * @date 04/04/2006 * * @param idCobrancaAcaoAtividadeComando * @return * @throws ControladorException */ public CobrancaAtividade consultarCobrancaAtividade(String idCobrancaAtividade) throws ControladorException { CobrancaAtividade cobrancaAtividade = null; FiltroCobrancaAtividade filtroCobrancaAtividade = new FiltroCobrancaAtividade(); filtroCobrancaAtividade.adicionarParametro(new ParametroSimples(FiltroCobrancaAcao.ID, idCobrancaAtividade)); Collection colecaoCobrancaAtividade = this.getControladorUtil().pesquisar(filtroCobrancaAtividade, CobrancaAtividade.class.getName()); if (colecaoCobrancaAtividade != null && !colecaoCobrancaAtividade.isEmpty()) { cobrancaAtividade = (CobrancaAtividade) colecaoCobrancaAtividade.iterator().next(); } return cobrancaAtividade; } /** * * Inserir Comando de A��o de Cobran�a * * [UC0243] Inserir Comando A��o de Cobran�a * * Atualizar Comando * * @author Rafael Santos * @date 05/04/2006 * * @param idCobrancaAcaoAtividadeComando * @return * @throws ControladorException */ public void atualizarCobrancaAcaoAtividadeComando(CobrancaAcaoAtividadeComando cobrancaAcaoAtividadeComando, GerarAtividadeAcaoCobrancaHelper gerarAtividadeAcaoCobrancaHelper) throws ControladorException { if (gerarAtividadeAcaoCobrancaHelper != null) { // incluir os dados gerados pela atividade a��o cobran�a cobrancaAcaoAtividadeComando.setQuantidadeDocumentos(gerarAtividadeAcaoCobrancaHelper.getQuantidadeDocumentosCobranca()); cobrancaAcaoAtividadeComando.setValorDocumentos(gerarAtividadeAcaoCobrancaHelper.getValorDocumentosCobranca()); cobrancaAcaoAtividadeComando .setQuantidadeItensCobrados(gerarAtividadeAcaoCobrancaHelper.getQuantidadeItensCobradosDocumentos()); cobrancaAcaoAtividadeComando.setRealizacao(new Date()); // atualizar os dados de cobranca acao atividade comando this.getControladorUtil().atualizar(cobrancaAcaoAtividadeComando); } } /** * * Inserir Comando de A��o de Cobran�a * * [UC0243] Inserir Comando A��o de Cobran�a * * Concluir Comando de A��o de Cobran�a * * @author Rafael Santos * @date 05/04/2006 * * @param idCobrancaAcaoAtividadeComando * @return * @throws ControladorException */ public Collection concluirComandoAcaoCobranca(String periodoInicialConta, String periodoFinalConta, String periodoVencimentoContaInicial, String periodoVencimentoContaFinal, String[] idsCobrancaAcao, String idCobrancaAtividade, String idCobrancaGrupo, String idGerenciaRegional, String localidadeOrigemID, String localidadeDestinoID, String setorComercialOrigemCD, String setorComercialDestinoCD, String idCliente, String clienteRelacaoTipo, String indicador, String rotaInicial, String rotaFinal, String setorComercialOrigemID, String setorComercialDestinoID, String idComando, String unidadeNegocio, Usuario usuarioLogado, String titulo, String descricaoSolicitacao, String prazoExecucao, String quantidadeMaximaDocumentos, String valorLimiteObrigatoria, String indicadorImoveisDebito, String indicadorGerarBoletimCadastro, String codigoClienteSuperior, String codigoRotaInicial, String codigoRotaFinal, String logradouroId, String consumoMedioInicial, String consumoMedioFinal, String tipoConsumo, String periodoInicialFiscalizacao, String periodoFinalFiscalizacao, String[] situacaoFiscalizacao, String numeroQuadraInicial, String numeroQuadraFinal) throws ControladorException { // [FS0012] - Verificar refer�ncia final menor que refer�ncia inicial this.validarAnoMesInicialFinalComandoAcaoCobranca(periodoInicialConta, periodoFinalConta); // [FS0014] - Verificar data final menos que data inicial this.verificarVencimentoContaComandoAcaoCobranca(periodoVencimentoContaInicial, periodoVencimentoContaFinal); // [FS0014] - Verificar data final menos que data inicial this.verificarPeriodoFiscalizacaoComandoAcaoCobranca(periodoInicialFiscalizacao, periodoFinalFiscalizacao); // [FS0016] - Verificar exist�ncia do comando eventual this.verficarExistenciaComandoEventual(idsCobrancaAcao, idCobrancaAtividade, idCobrancaGrupo, idGerenciaRegional, localidadeOrigemID, localidadeDestinoID, setorComercialOrigemCD, setorComercialDestinoCD, idCliente, clienteRelacaoTipo, periodoInicialConta, periodoFinalConta, periodoVencimentoContaInicial, periodoVencimentoContaFinal, indicador, rotaInicial, rotaFinal, idComando, unidadeNegocio, codigoClienteSuperior, numeroQuadraInicial, numeroQuadraFinal); // inserir comando de a��o de coban�a // [SB0007] Collection colecaoCobrancaAcaoAtividadeComando = this.inserirComandoAcaoCobrancaCriterioEventual(idsCobrancaAcao, idCobrancaAtividade, idCobrancaGrupo, idGerenciaRegional, localidadeOrigemID, localidadeDestinoID, setorComercialOrigemCD, setorComercialDestinoCD, setorComercialOrigemID, setorComercialDestinoID, idCliente, clienteRelacaoTipo, periodoInicialConta, periodoFinalConta, periodoVencimentoContaInicial, periodoVencimentoContaFinal, indicador, rotaInicial, rotaFinal, idComando, unidadeNegocio, usuarioLogado, titulo, descricaoSolicitacao, prazoExecucao, quantidadeMaximaDocumentos, valorLimiteObrigatoria, indicadorImoveisDebito, indicadorGerarBoletimCadastro, codigoClienteSuperior, codigoRotaInicial, codigoRotaFinal, logradouroId, consumoMedioInicial, consumoMedioFinal, tipoConsumo, periodoInicialFiscalizacao, periodoFinalFiscalizacao, situacaoFiscalizacao, numeroQuadraInicial, numeroQuadraFinal); return colecaoCobrancaAcaoAtividadeComando; } /** * * Inserir Comando de A��o de Cobran�a * * [UC0243] Inserir Comando A��o de Cobran�a * * Executar Comando Concluir Comando de A��o de Cobran�a * * @author Rafael Santos * @date 05/04/2006 * * @param idCobrancaAcaoAtividadeComando * @return * @throws ControladorException */ public Collection executarComandoAcaoCobranca(String periodoInicialConta, String periodoFinalConta, String periodoVencimentoContaInicial, String periodoVencimentoContaFinal, String[] idsCobrancaAcao, String idCobrancaAtividade, String idCobrancaGrupo, String idGerenciaRegional, String localidadeOrigemID, String localidadeDestinoID, String setorComercialOrigemCD, String setorComercialDestinoCD, String idCliente, String clienteRelacaoTipo, String indicador, String rotaInicial, String rotaFinal, String setorComercialOrigemID, String setorComercialDestinoID, String idComando, Usuario usuarioLogado, String titulo, String descricaoSolicitacao, String prazoExecucao, String quantidadeMaximaDocumentos, String valorLimiteObrigatoria, String indicadorImoveisDebito, String indicadorGerarBoletimCadastro, String codigoClienteSuperior, String codigoRotaInicial, String codigoRotaFinal, String consumoMedioInicial, String consumoMedioFinal, String tipoConsumo, String periodoInicialFiscalizacao, String periodoFinalFiscalizacao, String[] situacaoFiscalizacao, String numeroQuadraInicial, String numeroQuadraFinal) throws ControladorException { // [FS0012] - Verificar refer�ncia final menor que refer�ncia inicial this.validarAnoMesInicialFinalComandoAcaoCobranca(periodoInicialConta, periodoFinalConta); // [FS0014] - Verificar data final menos que data inicial this.verificarVencimentoContaComandoAcaoCobranca(periodoVencimentoContaInicial, periodoVencimentoContaFinal); // [FS0014] - Verificar data final menos que data inicial this.verificarPeriodoFiscalizacaoComandoAcaoCobranca(periodoInicialFiscalizacao, periodoFinalFiscalizacao); // [FS0016] - Verificar exist�ncia do comando eventual this.verficarExistenciaComandoEventual(idsCobrancaAcao, idCobrancaAtividade, idCobrancaGrupo, idGerenciaRegional, localidadeOrigemID, localidadeDestinoID, setorComercialOrigemCD, setorComercialDestinoCD, idCliente, clienteRelacaoTipo, periodoInicialConta, periodoFinalConta, periodoVencimentoContaInicial, periodoVencimentoContaFinal, indicador, rotaInicial, rotaFinal, idComando, null, codigoClienteSuperior, numeroQuadraInicial, numeroQuadraFinal); // inserir comando de a��o de coban�a // [SB0007] Collection colecaoCobrancaAcaoAtividadeComando = this.inserirComandoAcaoCobrancaCriterioEventual(idsCobrancaAcao, idCobrancaAtividade, idCobrancaGrupo, idGerenciaRegional, localidadeOrigemID, localidadeDestinoID, setorComercialOrigemCD, setorComercialDestinoCD, setorComercialOrigemID, setorComercialDestinoID, idCliente, clienteRelacaoTipo, periodoInicialConta, periodoFinalConta, periodoVencimentoContaInicial, periodoVencimentoContaFinal, indicador, rotaInicial, rotaFinal, idComando, null, usuarioLogado, titulo, descricaoSolicitacao, prazoExecucao, quantidadeMaximaDocumentos, valorLimiteObrigatoria, indicadorImoveisDebito, indicadorGerarBoletimCadastro, codigoClienteSuperior, codigoRotaInicial, codigoRotaFinal, codigoRotaFinal, consumoMedioInicial, consumoMedioFinal, tipoConsumo, periodoInicialFiscalizacao, periodoFinalFiscalizacao, situacaoFiscalizacao, numeroQuadraInicial, numeroQuadraFinal); Iterator iteCobrancaAcaoAtividadeComando = colecaoCobrancaAcaoAtividadeComando.iterator(); while (iteCobrancaAcaoAtividadeComando.hasNext()) { CobrancaAcaoAtividadeComando cobrancaAcaoAtividadeComando = (CobrancaAcaoAtividadeComando) iteCobrancaAcaoAtividadeComando .next(); // [SF0009] - Selecionar Lista de Rotas do Comando Collection colecaoRotas = this.obterListaRotasComando(idCobrancaGrupo, cobrancaAcaoAtividadeComando.getId().toString()); // pesquisar cobranca atividade CobrancaAtividade cobrancaAtividade = this.consultarCobrancaAtividade(idCobrancaAtividade); // pesquisar cobranca acao // CobrancaAcao cobrancaAcao = this // .consultarCobrancaAcao(.getId()); // [SF0010] - Executar Comando Eventual GerarAtividadeAcaoCobrancaHelper gerarAtividadeAcaoCobrancaHelper = this.executarComandoEventual(cobrancaAtividade, cobrancaAcaoAtividadeComando, cobrancaAcaoAtividadeComando.getCobrancaAcao(), colecaoRotas); // atualizar os dados de cobranca acao atividade comando this.atualizarCobrancaAcaoAtividadeComando(cobrancaAcaoAtividadeComando, gerarAtividadeAcaoCobrancaHelper); } return colecaoCobrancaAcaoAtividadeComando; } /** * * Permite excluir um comando de atividade de cobran�a do crongrama ou * alterar/excluir um comando deatividade de cobran�a eventual * * [UC0244] Manter Comando A��o de Cobran�a * * Consultar Cobranca A��o CAtividade Comando * * @author Rafael Santos * @date 25/03/2006 * * @param idCobrancaAcaoAtividadeComando * @return * @throws ControladorException */ public CobrancaAcaoAtividadeComando consultarCobrancaAcaoAtividadeComando(String idCobrancaAcaoAtividadeComando) throws ControladorException { CobrancaAcaoAtividadeComando cobrancaAcaoAtividadeComando = null; if (idCobrancaAcaoAtividadeComando != null && !idCobrancaAcaoAtividadeComando.equals("")) { FiltroCobrancaAcaoAtividadeComando filtroCobrancaAcaoAtividadeComando = new FiltroCobrancaAcaoAtividadeComando(); filtroCobrancaAcaoAtividadeComando.adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAcaoAtividadeComando.COBRANCA_ACAO); filtroCobrancaAcaoAtividadeComando.adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAcaoAtividadeComando.COBRANCA_GRUPO); filtroCobrancaAcaoAtividadeComando .adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAcaoAtividadeComando.COBRANCA_ATIVIDADE); filtroCobrancaAcaoAtividadeComando .adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAcaoAtividadeComando.COBRANCA_CRITERIO); filtroCobrancaAcaoAtividadeComando.adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAcaoAtividadeComando.USUARIO); filtroCobrancaAcaoAtividadeComando.adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAcaoAtividadeComando.EMPRESA); filtroCobrancaAcaoAtividadeComando .adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAcaoAtividadeComando.GERENCIAL_REGIONAL); filtroCobrancaAcaoAtividadeComando .adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAcaoAtividadeComando.LOCALIDADE_INICIAL); filtroCobrancaAcaoAtividadeComando.adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAcaoAtividadeComando.ROTA_INICIAL); filtroCobrancaAcaoAtividadeComando.adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAcaoAtividadeComando.ROTA_FINAL); filtroCobrancaAcaoAtividadeComando.adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAcaoAtividadeComando.CLIENTE); filtroCobrancaAcaoAtividadeComando .adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAcaoAtividadeComando.CLIENTE_SUPERIOR); filtroCobrancaAcaoAtividadeComando .adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAcaoAtividadeComando.CLIENTE_RELACAO_TIPO); filtroCobrancaAcaoAtividadeComando.adicionarParametro(new ParametroSimples(FiltroCobrancaAcaoAtividadeComando.ID, idCobrancaAcaoAtividadeComando)); Collection colecaoCobrancaAcaoAtividadeComando = this.getControladorUtil().pesquisar(filtroCobrancaAcaoAtividadeComando, CobrancaAcaoAtividadeComando.class.getName()); if (colecaoCobrancaAcaoAtividadeComando != null && !colecaoCobrancaAcaoAtividadeComando.isEmpty()) { cobrancaAcaoAtividadeComando = (CobrancaAcaoAtividadeComando) colecaoCobrancaAcaoAtividadeComando.iterator().next(); } } return cobrancaAcaoAtividadeComando; } /** * * Permite atualizar os dados de uma resolu��o de diretoria * * [UC0218] Manter Resolu��o de Diretoria * * [SB0001] Atualizar Resolu��o de Diretoria * * @author Rafael Corr�a * @param usuarioLogado * @date 10/04/2006 * */ public void atualizarResolucaoDiretoria(ResolucaoDiretoria resolucaoDiretoria, Usuario usuarioLogado) throws ControladorException { // [FS0001] - Validar Per�odo de Vig�ncia if (resolucaoDiretoria.getDataVigenciaFim() != null) { if (resolucaoDiretoria.getDataVigenciaInicio().compareTo(resolucaoDiretoria.getDataVigenciaFim()) >= 0) { throw new ControladorException("atencao.termino_vigencia.anterior.inicio_vigencia"); } } // [FS0003] - Atualiza��o realizada por outro usu�rio FiltroResolucaoDiretoria filtroResolucaoDiretoria = new FiltroResolucaoDiretoria(); filtroResolucaoDiretoria.adicionarParametro(new ParametroSimples(FiltroResolucaoDiretoria.CODIGO, resolucaoDiretoria.getId())); Collection colecaoResolucaoDiretoriaBase = getControladorUtil().pesquisar(filtroResolucaoDiretoria, ResolucaoDiretoria.class.getName()); if (colecaoResolucaoDiretoriaBase == null || colecaoResolucaoDiretoriaBase.isEmpty()) { sessionContext.setRollbackOnly(); throw new ControladorException("atencao.atualizacao.timestamp"); } ResolucaoDiretoria resolucaoDiretoriaBase = (ResolucaoDiretoria) colecaoResolucaoDiretoriaBase.iterator().next(); if (resolucaoDiretoriaBase.getUltimaAlteracao().after(resolucaoDiretoria.getUltimaAlteracao())) { sessionContext.setRollbackOnly(); throw new ControladorException("atencao.atualizacao.timestamp"); } resolucaoDiretoria.setUltimaAlteracao(new Date()); // ------------ REGISTRAR TRANSA��O---------------------------- RegistradorOperacao registradorOperacao = new RegistradorOperacao(Operacao.OPERACAO_RESOLUCAO_DIRETORIA_ATUALIZAR, new UsuarioAcaoUsuarioHelper(usuarioLogado, UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO)); Operacao operacao = new Operacao(); operacao.setId(Operacao.OPERACAO_RESOLUCAO_DIRETORIA_ATUALIZAR); OperacaoEfetuada operacaoEfetuada = new OperacaoEfetuada(); operacaoEfetuada.setOperacao(operacao); resolucaoDiretoria.setOperacaoEfetuada(operacaoEfetuada); resolucaoDiretoria.adicionarUsuario(usuarioLogado, UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO); registradorOperacao.registrarOperacao(resolucaoDiretoria); // ------------ REGISTRAR TRANSA��O---------------------------- getControladorUtil().atualizar(resolucaoDiretoria); } /** * * Manter Comando de A��o de Cobran�a * * [UC0244] Manter Comando A��o de Cobran�a * * Concluir Comando de A��o de Cobran�a * * @author Rafael Santos * @date 24/04/2006 * * @param idCobrancaAcaoAtividadeComando * @return * @throws ControladorException */ public void concluirManterComandoAcaoCobranca(String periodoInicialConta, String periodoFinalConta, String periodoVencimentoContaInicial, String periodoVencimentoContaFinal, String idCobrancaAcao, String idCobrancaAtividade, String idCobrancaGrupo, String idGerenciaRegional, String localidadeOrigemID, String localidadeDestinoID, String setorComercialOrigemCD, String setorComercialDestinoCD, String idCliente, String clienteRelacaoTipo, String indicador, String rotaInicial, String rotaFinal, String setorComercialOrigemID, String setorComercialDestinoID, String idCobrancaAcaoAtividadeComando, Date realizacao, Date comando, Date ultimaDataAtualizacao, Usuario usuario, Empresa empresa, Integer quantidadeDocumentos, BigDecimal valorDocumentos, Integer quantidadeItensCobrados, String idComando, String unidadeNegocio, String titulo, String descricaoSolicitacao, String prazoExecucao, String quantidadeMaximaDocumentos, String valorLimiteObrigatoria, String indicadorImoveisDebito, String indicadorGerarBoletimCadastro, String codigoClienteSuperior, String codigoRotaInicial, String codigoRotaFinal, String consumoMedioInicial, String consumoMedioFinal, String tipoConsumo, String periodoInicialFiscalizacao, String periodoFinalFiscalizacao, String[] situacaoFiscalizacao, String numeroQuadraInicial, String numeroQuadraFinal) throws ControladorException { // [FS0011] - Verificar execu��o do comando if (realizacao == null) { // [FS0012] - Verificar refer�ncia final menor que refer�ncia // inicial this.validarAnoMesInicialFinalComandoAcaoCobranca(periodoInicialConta, periodoFinalConta); // [FS0014] - Verificar data final menos que data inicial this.verificarVencimentoContaComandoAcaoCobranca(periodoVencimentoContaInicial, periodoVencimentoContaFinal); this.verificarPeriodoFiscalizacaoComandoAcaoCobranca(periodoInicialFiscalizacao, periodoFinalFiscalizacao); } // inserir comando de a��o de coban�a // [SB0007] this.atualizarComandoAcaoCobrancaEventual(idCobrancaAcao, idCobrancaAtividade, idCobrancaGrupo, idGerenciaRegional, localidadeOrigemID, localidadeDestinoID, setorComercialOrigemCD, setorComercialDestinoCD, setorComercialOrigemID, setorComercialDestinoID, idCliente, clienteRelacaoTipo, periodoInicialConta, periodoFinalConta, periodoVencimentoContaInicial, periodoVencimentoContaFinal, indicador, rotaInicial, rotaFinal, idCobrancaAcaoAtividadeComando, ultimaDataAtualizacao, comando, realizacao, usuario, empresa, quantidadeDocumentos, valorDocumentos, quantidadeItensCobrados, idComando, unidadeNegocio, titulo, descricaoSolicitacao, prazoExecucao, quantidadeMaximaDocumentos, valorLimiteObrigatoria, indicadorImoveisDebito, indicadorGerarBoletimCadastro, codigoClienteSuperior, codigoRotaInicial, codigoRotaFinal, consumoMedioInicial, consumoMedioFinal, tipoConsumo, periodoInicialFiscalizacao, periodoFinalFiscalizacao, situacaoFiscalizacao, numeroQuadraInicial, numeroQuadraFinal); } /** * * Manter Comando de A��o de Cobran�a * * [UC0244] Manter Comando A��o de Cobran�a * * Executar Comando Concluir Comando de A��o de Cobran�a * * @author Rafael Santos * @date 24/04/2006 * * @param idCobrancaAcaoAtividadeComando * @return * @throws ControladorException */ public void executarComandoManterAcaoCobranca(String periodoInicialConta, String periodoFinalConta, String periodoVencimentoContaInicial, String periodoVencimentoContaFinal, String idCobrancaAcao, String idCobrancaAtividade, String idCobrancaGrupo, String idGerenciaRegional, String localidadeOrigemID, String localidadeDestinoID, String setorComercialOrigemCD, String setorComercialDestinoCD, String idCliente, String clienteRelacaoTipo, String indicador, String rotaInicial, String rotaFinal, String setorComercialOrigemID, String setorComercialDestinoID, String idComando, String idCobrancaAcaoAtividadeComando, Date ultimaDataAtualizacao, Date comando, Date realizacao, Usuario usuario, Empresa empresa, Integer quantidadeDocumentos, BigDecimal valorDocumentos, Integer quantidadeItensCobrados, String titulo, String descricaoSolicitacao, String prazoExecucao, String quantidadeMaximaDocumentos, String valorLimiteObrigatoria, String indicadorImoveisDebito, String indicadorGerarBoletimCadastro, String codigoClienteSuperior, String codigoRotaInicial, String codigoRotaFinal, String consumoMedioInicial, String consumoMedioFinal, String tipoConsumo, String periodoInicialFiscalizacao, String periodoFinalFiscalizacao, String[] situacaoFiscalizacao, String numeroQuadraInicial, String numeroQuadraFinal) throws ControladorException { // [FS0012] - Verificar refer�ncia final menor que refer�ncia inicial this.validarAnoMesInicialFinalComandoAcaoCobranca(periodoInicialConta, periodoFinalConta); // [FS0014] - Verificar data final menos que data inicial this.verificarVencimentoContaComandoAcaoCobranca(periodoVencimentoContaInicial, periodoVencimentoContaFinal); // [FS0014] - Verificar data final menos que data inicial this.verificarPeriodoFiscalizacaoComandoAcaoCobranca(periodoInicialFiscalizacao, periodoFinalFiscalizacao); // atualizar comando de a��o de coban�a // [SB0006] CobrancaAcaoAtividadeComando cobrancaAcaoAtividadeComando = this.atualizarComandoAcaoCobrancaEventual(idCobrancaAcao, idCobrancaAtividade, idCobrancaGrupo, idGerenciaRegional, localidadeOrigemID, localidadeDestinoID, setorComercialOrigemCD, setorComercialDestinoCD, setorComercialOrigemID, setorComercialDestinoID, idCliente, clienteRelacaoTipo, periodoInicialConta, periodoFinalConta, periodoVencimentoContaInicial, periodoVencimentoContaFinal, indicador, rotaInicial, rotaFinal, idCobrancaAcaoAtividadeComando, ultimaDataAtualizacao, comando, realizacao, usuario, empresa, quantidadeDocumentos, valorDocumentos, quantidadeItensCobrados, idComando, null, titulo, descricaoSolicitacao, prazoExecucao, quantidadeMaximaDocumentos, valorLimiteObrigatoria, indicadorImoveisDebito, indicadorGerarBoletimCadastro, codigoClienteSuperior, codigoRotaInicial, codigoRotaFinal, consumoMedioInicial, consumoMedioFinal, tipoConsumo, periodoInicialFiscalizacao, periodoFinalFiscalizacao, situacaoFiscalizacao, numeroQuadraInicial, numeroQuadraFinal); // [SF0008] - Selecionar Lista de Rotas do Comando Collection colecaoRotas = this.obterListaRotasComando(idCobrancaGrupo, cobrancaAcaoAtividadeComando.getId().toString()); // pesquisar cobranca atividade CobrancaAtividade cobrancaAtividade = this.consultarCobrancaAtividade(idCobrancaAtividade); // pesquisar cobranca acao CobrancaAcao cobrancaAcao = this.consultarCobrancaAcao(idCobrancaAcao); // [SF0009] - Executar Comando Eventual GerarAtividadeAcaoCobrancaHelper gerarAtividadeAcaoCobrancaHelper = this.executarComandoEventual(cobrancaAtividade, cobrancaAcaoAtividadeComando, cobrancaAcao, colecaoRotas); // atualizar os dados de cobranca acao atividade comando this.atualizarCobrancaAcaoAtividadeComando(cobrancaAcaoAtividadeComando, gerarAtividadeAcaoCobrancaHelper); this.atualizarCobrancaAcaoAtividadeComandoFiscalizacaoSituacao(cobrancaAcaoAtividadeComando, situacaoFiscalizacao); } private void atualizarCobrancaAcaoAtividadeComandoFiscalizacaoSituacao(CobrancaAcaoAtividadeComando cobrancaAcaoAtividadeComando, String[] situacaoFiscalizacao) throws ControladorException { // Para cada Situa��o da Fiscaliza��o selecionada, inclui a situa��o da // fiscaliza��o // na tabela COB_ACAO_ATV_CMD_FIS_SIT. if (situacaoFiscalizacao != null) { Date dataAtual = new Date(); for (int i = 0; i < situacaoFiscalizacao.length; i++) { FiscalizacaoSituacao fiscSituacao = new FiscalizacaoSituacao(); fiscSituacao.setId(new Integer(situacaoFiscalizacao[i])); CobrancaAcaoAtividadeComandoFiscalizacaoSituacao cobAcaoAtividadeFiscSit = new CobrancaAcaoAtividadeComandoFiscalizacaoSituacao( cobrancaAcaoAtividadeComando, fiscSituacao, dataAtual); this.getControladorUtil().inserir(cobAcaoAtividadeFiscSit); } } // Fim insert de CobrancaAcaoAtividadeComandoFiscalizacaoSituacao. } /** * * Manter um comando de atividade de cobran�a eventual * * [UC0244] - Inserir Comando A��o de Cobran�a * * Manter cobranca acao atividade comando * * [SB0006] - Atualizar Comando Eventual * * @author Rafael Santos * @throws ControladorException * @date 24/04/2006 */ public CobrancaAcaoAtividadeComando atualizarComandoAcaoCobrancaEventual(String idCobrancaAcao, String idCobrancaAtividade, String idCobrancaGrupo, String idGerenciaRegional, String idLocalidadeInicial, String idLocalidadeFinal, String codigoSetorComercialInicial, String codigoSetorComercialFinal, String idSetorComercialInicial, String idSetorComercialFinal, String idCliente, String idClienteRelacaoTipo, String anoMesReferencialInicial, String anoMesReferencialFinal, String dataVencimentoContaInicial, String dataVencimentoContaFinal, String indicador, String idRotaInicial, String idRotaFinal, String idCobrancaAcaoAtividadeComando, Date ultimaDataAtualizacao, Date comando, Date realizacao, Usuario usuario, Empresa empresa, Integer quantidadeDocumentos, BigDecimal valorDocumentos, Integer quantidadeItensCobrados, String idComando, String unidadeNegocio, String titulo, String descricaoSolicitacao, String prazoExecucao, String quantidadeMaximaDocumentos, String valorLimiteObrigatoria, String indicadorImoveisDebito, String indicadorGerarBoletimCadastro, String codigoClienteSuperior, String codigoRotaInicial, String codigoRotaFinal, String consumoMedioInicial, String consumoMedioFinal, String tipoConsumo, String periodoInicialFiscalizacao, String periodoFinalFiscalizacao, String[] situacaoFiscalizacao, String numeroQuadraInicial, String numeroQuadraFinal) throws ControladorException { // executar comando CobrancaAcaoAtividadeComando cobrancaAcaoAtividadeComando = null; // ------------ REGISTRAR TRANSA��O ---------------- // RegistradorOperacao registradorOperacao = null; // Operacao operacao = new Operacao(); // OperacaoEfetuada operacaoEfetuada = new OperacaoEfetuada(); // ------------ REGISTRAR TRANSA��O ---------------- // em caso de j� existir a data de realiza��o, ent�o atualiza s� o prazo // de execu��o if (realizacao != null) { FiltroCobrancaAcaoAtividadeComando filtroCobrancaAcaoAtividadeComando = new FiltroCobrancaAcaoAtividadeComando(); filtroCobrancaAcaoAtividadeComando.adicionarParametro(new ParametroSimples(FiltroCobrancaAcaoAtividadeComando.ID, idCobrancaAcaoAtividadeComando)); Collection colecaoCobrancaAcaoAtividadeComando = getControladorUtil().pesquisar(filtroCobrancaAcaoAtividadeComando, CobrancaAcaoAtividadeComando.class.getName()); if (colecaoCobrancaAcaoAtividadeComando == null || colecaoCobrancaAcaoAtividadeComando.isEmpty()) { sessionContext.setRollbackOnly(); throw new ControladorException("atencao.atualizacao.timestamp"); } CobrancaAcaoAtividadeComando cobrancaAcaoAtividadeComandoBase = (CobrancaAcaoAtividadeComando) Util .retonarObjetoDeColecao(colecaoCobrancaAcaoAtividadeComando); if (cobrancaAcaoAtividadeComandoBase.getUltimaAlteracao().after(ultimaDataAtualizacao)) { sessionContext.setRollbackOnly(); throw new ControladorException("atencao.atualizacao.timestamp"); } if (prazoExecucao != null && !prazoExecucao.equals("")) { cobrancaAcaoAtividadeComandoBase.setQuantidadeDiasRealizacao(new Short(prazoExecucao)); cobrancaAcaoAtividadeComandoBase.setUltimaAlteracao(new Date()); getControladorUtil().atualizar(cobrancaAcaoAtividadeComandoBase); } cobrancaAcaoAtividadeComando = cobrancaAcaoAtividadeComandoBase; } else { // executar comando cobrancaAcaoAtividadeComando = new CobrancaAcaoAtividadeComando(); cobrancaAcaoAtividadeComando.setId(new Integer(idCobrancaAcaoAtividadeComando)); cobrancaAcaoAtividadeComando.setUltimaAlteracao(ultimaDataAtualizacao); // id gerado pelo sistema CobrancaAcao cobrancaAcao = new CobrancaAcao(); FiltroCobrancaAcao filtroCobrancaAcao = new FiltroCobrancaAcao(); filtroCobrancaAcao.adicionarParametro(new ParametroSimples(FiltroCobrancaAcao.ID, idCobrancaAcao)); filtroCobrancaAcao.adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAcao.DOCUMENTO_TIPO); filtroCobrancaAcao.adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAcao.SERVICO_TIPO); filtroCobrancaAcao.adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAcao.SERVICO_TIPO_PREDECESSORA); Collection colecaoCobrancaAcao = this.getControladorUtil().pesquisar(filtroCobrancaAcao, CobrancaAcao.class.getName()); cobrancaAcao = (CobrancaAcao) colecaoCobrancaAcao.iterator().next(); // id da a��o de cobranca selecionada cobrancaAcaoAtividadeComando.setCobrancaAcao(cobrancaAcao); // id da atividade de cobranca FiltroCobrancaAtividade filtroCobrancaAtividade = new FiltroCobrancaAtividade(); filtroCobrancaAtividade.adicionarParametro(new ParametroSimples(FiltroCobrancaAtividade.ID, idCobrancaAtividade)); Collection colecaoCobrancaAtividade = this.getControladorUtil().pesquisar(filtroCobrancaAtividade, CobrancaAtividade.class.getName()); CobrancaAtividade cobrancaAtividade = (CobrancaAtividade) colecaoCobrancaAtividade.iterator().next(); cobrancaAcaoAtividadeComando.setCobrancaAtividade(cobrancaAtividade); // id Cobranca Grupo if (idCobrancaGrupo != null && !idCobrancaGrupo.equals("") && !idCobrancaGrupo.equals(ConstantesSistema.NUMERO_NAO_INFORMADO + "")) { CobrancaGrupo cobrancaGrupo = new CobrancaGrupo(); cobrancaGrupo.setId(new Integer(idCobrancaGrupo)); cobrancaAcaoAtividadeComando.setCobrancaGrupo(cobrancaGrupo); } else { cobrancaAcaoAtividadeComando.setCobrancaGrupo(null); } // id Gerencia Regional if (idGerenciaRegional != null && !idGerenciaRegional.equals("") && !idGerenciaRegional.equals(ConstantesSistema.NUMERO_NAO_INFORMADO + "")) { GerenciaRegional gerenciaRegional = new GerenciaRegional(); gerenciaRegional.setId(new Integer(idGerenciaRegional)); cobrancaAcaoAtividadeComando.setGerenciaRegional(gerenciaRegional); } else { cobrancaAcaoAtividadeComando.setGerenciaRegional(null); } // Unidade Negocio if (unidadeNegocio != null && !unidadeNegocio.equals("") && !unidadeNegocio.equals(ConstantesSistema.NUMERO_NAO_INFORMADO + "")) { UnidadeNegocio unidadeNegocioObj = new UnidadeNegocio(); unidadeNegocioObj.setId(new Integer(unidadeNegocio)); cobrancaAcaoAtividadeComando.setUnidadeNegocio(unidadeNegocioObj); } else { cobrancaAcaoAtividadeComando.setUnidadeNegocio(null); } // localidade inicial e final if ((idLocalidadeInicial != null && !idLocalidadeInicial.equals("")) && (idLocalidadeFinal != null && !idLocalidadeFinal.equals(""))) { Localidade localidadeInicial = new Localidade(); localidadeInicial.setId(new Integer(idLocalidadeInicial)); cobrancaAcaoAtividadeComando.setLocalidadeInicial(localidadeInicial); Localidade localidadeFinal = new Localidade(); localidadeFinal.setId(new Integer(idLocalidadeFinal)); cobrancaAcaoAtividadeComando.setLocalidadeFinal(localidadeFinal); } else { cobrancaAcaoAtividadeComando.setLocalidadeInicial(null); cobrancaAcaoAtividadeComando.setLocalidadeFinal(null); } // codigo do setor comercial inicial e final if ((codigoSetorComercialInicial != null && !codigoSetorComercialInicial.equals("")) && (codigoSetorComercialFinal != null && !codigoSetorComercialFinal.equals(""))) { cobrancaAcaoAtividadeComando.setCodigoSetorComercialInicial(new Integer(codigoSetorComercialInicial)); cobrancaAcaoAtividadeComando.setCodigoSetorComercialFinal(new Integer(codigoSetorComercialFinal)); } else { cobrancaAcaoAtividadeComando.setCodigoSetorComercialInicial(null); cobrancaAcaoAtividadeComando.setCodigoSetorComercialFinal(null); }// // rota inicial e final if ((idRotaInicial != null && !idRotaInicial.equals("")) && (idRotaFinal != null && !idRotaFinal.equals(""))) { Rota rotaInicial = new Rota(); rotaInicial.setId(new Integer(idRotaInicial)); cobrancaAcaoAtividadeComando.setRotaInicial(rotaInicial); Rota rotaFinal = new Rota(); rotaFinal.setId(new Integer(idRotaFinal)); cobrancaAcaoAtividadeComando.setRotaFinal(rotaFinal); } else { cobrancaAcaoAtividadeComando.setRotaInicial(null); cobrancaAcaoAtividadeComando.setRotaFinal(null); } // rota inicial e final if ((numeroQuadraInicial != null && !numeroQuadraInicial.equals("")) && (numeroQuadraFinal != null && !numeroQuadraFinal.equals(""))) { cobrancaAcaoAtividadeComando.setNumeroQuadraInicial(new Integer(numeroQuadraInicial)); cobrancaAcaoAtividadeComando.setNumeroQuadraFinal(new Integer(numeroQuadraFinal)); } else { cobrancaAcaoAtividadeComando.setNumeroQuadraInicial(null); cobrancaAcaoAtividadeComando.setNumeroQuadraFinal(null); } // codigo do cliente superior if (codigoClienteSuperior != null && !codigoClienteSuperior.equals("")) { Cliente cliente = new Cliente(); cliente.setId(new Integer(codigoClienteSuperior)); cobrancaAcaoAtividadeComando.setSuperior(cliente); } else { cobrancaAcaoAtividadeComando.setSuperior(null); } // id do cliente if (idCliente != null && !idCliente.equals("")) { Cliente cliente = new Cliente(); cliente.setId(new Integer(idCliente)); cobrancaAcaoAtividadeComando.setCliente(cliente); } else { cobrancaAcaoAtividadeComando.setCliente(null); } // id cliente rela��o tipo if (idClienteRelacaoTipo != null && !idClienteRelacaoTipo.equals("") && !idClienteRelacaoTipo.equals(ConstantesSistema.NUMERO_NAO_INFORMADO + "")) { ClienteRelacaoTipo clienteRelacaoTipo = new ClienteRelacaoTipo(); clienteRelacaoTipo.setId(new Integer(idClienteRelacaoTipo)); cobrancaAcaoAtividadeComando.setClienteRelacaoTipo(clienteRelacaoTipo); } else { cobrancaAcaoAtividadeComando.setClienteRelacaoTipo(null); } // inicial referencial if (anoMesReferencialInicial != null && !anoMesReferencialInicial.equals("")) { String anoInicial = anoMesReferencialInicial.substring(3, 7); String mesInicial = anoMesReferencialInicial.substring(0, 2); String anoMes = anoInicial + mesInicial; cobrancaAcaoAtividadeComando.setAnoMesReferenciaContaInicial(new Integer(anoMes)); } else { cobrancaAcaoAtividadeComando.setAnoMesReferenciaContaInicial(new Integer("198001")); } // final referencial if (anoMesReferencialFinal != null && !anoMesReferencialFinal.equals("")) { String anoFinal = anoMesReferencialFinal.substring(3, 7); String mesFinal = anoMesReferencialFinal.substring(0, 2); String anoMes = anoFinal + mesFinal; cobrancaAcaoAtividadeComando.setAnoMesReferenciaContaFinal(new Integer(anoMes)); } else { String periodoFinalConta = this.getControladorUtil().pesquisarParametrosDoSistema().getAnoMesArrecadacao() + ""; String ano = periodoFinalConta.substring(0, 4); String mes = periodoFinalConta.substring(4, 6); cobrancaAcaoAtividadeComando.setAnoMesReferenciaContaFinal(new Integer(ano + mes)); } // data inicial conta if (dataVencimentoContaInicial != null && !dataVencimentoContaInicial.equals("")) { cobrancaAcaoAtividadeComando.setDataVencimentoContaInicial(Util.converteStringParaDate(dataVencimentoContaInicial)); } else { cobrancaAcaoAtividadeComando.setDataVencimentoContaInicial(Util.converteStringParaDate("01/01/1980")); } // data final conta if (dataVencimentoContaFinal != null && !dataVencimentoContaFinal.equals("")) { cobrancaAcaoAtividadeComando.setDataVencimentoContaFinal(Util.converteStringParaDate(dataVencimentoContaFinal)); } else { Calendar calendarNova = Calendar.getInstance(); calendarNova.add(Calendar.MONTH, -1); String dataNova = ""; dataNova = calendarNova.getActualMaximum(Calendar.DAY_OF_MONTH) + ""; if (calendarNova.get(Calendar.MONTH) < 10) { dataNova = dataNova + "/0" + (calendarNova.get(Calendar.MONTH) + 1); } else { dataNova = dataNova + "/" + (calendarNova.get(Calendar.MONTH) + 1); } dataNova = dataNova + "/" + calendarNova.get(Calendar.YEAR); cobrancaAcaoAtividadeComando.setDataVencimentoContaFinal(Util.converteStringParaDate(dataNova)); } // indicador de crit�rio if (indicador != null && !indicador.equals("")) { if (indicador.equals("Rota")) { cobrancaAcaoAtividadeComando.setIndicadorCriterio(new Short((short) 1)); } else { cobrancaAcaoAtividadeComando.setIndicadorCriterio(new Short((short) 2)); } } if (consumoMedioInicial != null && !consumoMedioInicial.equals("")) { cobrancaAcaoAtividadeComando.setConsumoMedioInicial(new Integer(consumoMedioInicial)); } if (consumoMedioFinal != null && !consumoMedioFinal.equals("")) { cobrancaAcaoAtividadeComando.setConsumoMedioFinal(new Integer(consumoMedioFinal)); } if (tipoConsumo != null) { cobrancaAcaoAtividadeComando.setTipoConsumo(new Short(tipoConsumo)); } // Criterio de Cobranca if (idComando != null && !idComando.equals("")) { CobrancaCriterio cobrancaCriterio = new CobrancaCriterio(); cobrancaCriterio.setId(new Integer(idComando)); cobrancaAcaoAtividadeComando.setCobrancaCriterio(cobrancaCriterio); // ------------ REGISTRAR TRANSA��O ---------------- /* * registradorOperacao = new RegistradorOperacao( Operacao. * OPERACAO_ATUALIZAR_COMANDO_ACAO_COBRANCA_EVENTUAL_COMANDO, * new UsuarioAcaoUsuarioHelper(usuarioLogado, * UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO)); * operacao.setId(Operacao * .OPERACAO_ATUALIZAR_COMANDO_ACAO_COBRANCA_EVENTUAL_COMANDO); * operacaoEfetuada.setOperacao(operacao); * cobrancaAcaoAtividadeComando * .setOperacaoEfetuada(operacaoEfetuada); * cobrancaAcaoAtividadeComando.adicionarUsuario(usuarioLogado, * UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO); * registradorOperacao * .registrarOperacao(cobrancaAcaoAtividadeComando); */ // ------------ REGISTRAR TRANSA��O ---------------- } else { // ------------ REGISTRAR TRANSA��O ---------------- /* * registradorOperacao = new RegistradorOperacao( * Operacao.OPERACAO_ATUALIZAR_COMANDO_ACAO_COBRANCA_EVENTUAL_ROTA * , new UsuarioAcaoUsuarioHelper(usuarioLogado, /* * UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO)); * operacao.setId(Operacao * .OPERACAO_ATUALIZAR_COMANDO_ACAO_COBRANCA_EVENTUAL_ROTA); * operacaoEfetuada.setOperacao(operacao); * cobrancaAcaoAtividadeComando * .setOperacaoEfetuada(operacaoEfetuada); * cobrancaAcaoAtividadeComando.adicionarUsuario(usuarioLogado, * UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO); * registradorOperacao * .registrarOperacao(cobrancaAcaoAtividadeComando); */ // ------------ REGISTRAR TRANSA��O ---------------- } // campos que mantiveram o valor // comando cobrancaAcaoAtividadeComando.setComando(comando); // realizacao cobrancaAcaoAtividadeComando.setRealizacao(realizacao); // usuario cobrancaAcaoAtividadeComando.setUsuario(usuario); // empresa cobrancaAcaoAtividadeComando.setEmpresa(empresa); cobrancaAcaoAtividadeComando.setQuantidadeDocumentos(quantidadeDocumentos); cobrancaAcaoAtividadeComando.setValorDocumentos(valorDocumentos); cobrancaAcaoAtividadeComando.setQuantidadeItensCobrados(quantidadeItensCobrados); // [FS0003] - Atualiza��o realizada por outro usu�rio FiltroCobrancaAcaoAtividadeComando filtroCobrancaAcaoAtividadeComando = new FiltroCobrancaAcaoAtividadeComando(); filtroCobrancaAcaoAtividadeComando.adicionarParametro(new ParametroSimples(FiltroCobrancaAcaoAtividadeComando.ID, idCobrancaAcaoAtividadeComando)); Collection colecaoCobrancaAcaoAtividadeComandoBase = getControladorUtil().pesquisar(filtroCobrancaAcaoAtividadeComando, CobrancaAcaoAtividadeComando.class.getName()); if (colecaoCobrancaAcaoAtividadeComandoBase == null || colecaoCobrancaAcaoAtividadeComandoBase.isEmpty()) { sessionContext.setRollbackOnly(); throw new ControladorException("atencao.atualizacao.timestamp"); } CobrancaAcaoAtividadeComando cobrancaAcaoAtividadeComandoBase = (CobrancaAcaoAtividadeComando) colecaoCobrancaAcaoAtividadeComandoBase .iterator().next(); if (cobrancaAcaoAtividadeComandoBase.getUltimaAlteracao().after(cobrancaAcaoAtividadeComando.getUltimaAlteracao())) { sessionContext.setRollbackOnly(); throw new ControladorException("atencao.atualizacao.timestamp"); } cobrancaAcaoAtividadeComando.setUltimaAlteracao(new Date()); cobrancaAcaoAtividadeComando.setDescricaoTitulo(titulo); cobrancaAcaoAtividadeComando.setDescricaoSolicitacao(descricaoSolicitacao); if (prazoExecucao != null && !prazoExecucao.equals("")) { cobrancaAcaoAtividadeComando.setQuantidadeDiasRealizacao(new Short(prazoExecucao)); } if (quantidadeMaximaDocumentos != null && !quantidadeMaximaDocumentos.equals("")) { cobrancaAcaoAtividadeComando.setQuantidadeMaximaDocumentos(new Integer(quantidadeMaximaDocumentos)); } if (valorLimiteObrigatoria != null && !valorLimiteObrigatoria.equals("")) { valorLimiteObrigatoria = valorLimiteObrigatoria.replace(".", "").replace(",", "."); cobrancaAcaoAtividadeComando.setValorLimiteObrigatoria(new BigDecimal(valorLimiteObrigatoria)); } if (indicadorGerarBoletimCadastro != null && !indicadorGerarBoletimCadastro.equals("")) { cobrancaAcaoAtividadeComando.setIndicadorBoletim(new Short(indicadorGerarBoletimCadastro)); } if (indicadorImoveisDebito != null && !indicadorImoveisDebito.equals("")) { cobrancaAcaoAtividadeComando.setIndicadorDebito(new Short(indicadorImoveisDebito)); } // data inicial fiscaliza��o if (periodoInicialFiscalizacao != null && !periodoInicialFiscalizacao.equals("")) { cobrancaAcaoAtividadeComando.setPeriodoInicialFiscalizacao(Util.converteStringParaDate(periodoInicialFiscalizacao)); } else if (periodoFinalFiscalizacao != null && !periodoFinalFiscalizacao.equals("")) { cobrancaAcaoAtividadeComando.setPeriodoInicialFiscalizacao(Util.converteStringParaDate("01/01/0001")); } else { cobrancaAcaoAtividadeComando.setPeriodoInicialFiscalizacao(null); } // data final fiscaliza��o if (periodoFinalFiscalizacao != null && !periodoFinalFiscalizacao.equals("")) { cobrancaAcaoAtividadeComando.setPeriodoFinalFiscalizacao(Util.converteStringParaDate(periodoFinalFiscalizacao)); } else if (periodoInicialFiscalizacao != null && !periodoInicialFiscalizacao.equals("")) { cobrancaAcaoAtividadeComando.setPeriodoFinalFiscalizacao(Util.converteStringParaDate("31/12/9999")); } else { cobrancaAcaoAtividadeComando.setPeriodoFinalFiscalizacao(null); } getControladorUtil().atualizar(cobrancaAcaoAtividadeComando); Collection colecaoIdCobrancaAtividadeComandoRota = new ArrayList(); FiltroCobrancaAtividadeComandoRotas filtroCobrancaAtividadeComandoRotas = new FiltroCobrancaAtividadeComandoRotas(); filtroCobrancaAtividadeComandoRotas.adicionarParametro(new ParametroSimples( FiltroCobrancaAtividadeComandoRotas.COBRANCA_ACAO_ATIVIDADE_COMANDO_ID, idCobrancaAcaoAtividadeComando)); Collection colecaoCobrancaAtividadeComandoRotas = this.getControladorUtil().pesquisar(filtroCobrancaAtividadeComandoRotas, CobrancaAtividadeComandoRota.class.getName()); if (colecaoCobrancaAtividadeComandoRotas != null && !colecaoCobrancaAtividadeComandoRotas.isEmpty()) { Iterator iteratorColecaoCobrancaAtividadeComandoRotas = colecaoCobrancaAtividadeComandoRotas.iterator(); while (iteratorColecaoCobrancaAtividadeComandoRotas.hasNext()) { CobrancaAtividadeComandoRota cobrancaAtividadeComandoRota = (CobrancaAtividadeComandoRota) iteratorColecaoCobrancaAtividadeComandoRotas .next(); // registradorOperacao = null; // operacao = new Operacao(); // operacaoEfetuada = new OperacaoEfetuada(); // Criterio de Cobranca if (idComando != null && !idComando.equals("")) { // ------------ REGISTRAR TRANSA��O ---------------- /* * registradorOperacao = new RegistradorOperacao( * Operacao. * OPERACAO_ATUALIZAR_COMANDO_ACAO_COBRANCA_EVENTUAL_COMANDO * , new UsuarioAcaoUsuarioHelper(usuarioLogado, * UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO)); * operacao.setId(Operacao. * OPERACAO_ATUALIZAR_COMANDO_ACAO_COBRANCA_EVENTUAL_COMANDO * ); operacaoEfetuada.setOperacao(operacao); * cobrancaAtividadeComandoRota * .setOperacaoEfetuada(operacaoEfetuada); * cobrancaAtividadeComandoRota * .adicionarUsuario(usuarioLogado, * UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO); * registradorOperacao * .registrarOperacao(cobrancaAtividadeComandoRota); */ // ------------ REGISTRAR TRANSA��O ---------------- } else { // ------------ REGISTRAR TRANSA��O ---------------- /* * registradorOperacao = new RegistradorOperacao( * Operacao * .OPERACAO_ATUALIZAR_COMANDO_ACAO_COBRANCA_EVENTUAL_ROTA * , new UsuarioAcaoUsuarioHelper(usuarioLogado, * UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO)); * operacao.setId(Operacao. * OPERACAO_ATUALIZAR_COMANDO_ACAO_COBRANCA_EVENTUAL_ROTA * ); operacaoEfetuada.setOperacao(operacao); * cobrancaAtividadeComandoRota * .setOperacaoEfetuada(operacaoEfetuada); * cobrancaAtividadeComandoRota * .adicionarUsuario(usuarioLogado, * UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO); * registradorOperacao * .registrarOperacao(cobrancaAtividadeComandoRota); */ // ------------ REGISTRAR TRANSA��O ---------------- } this.getControladorUtil().remover(cobrancaAtividadeComandoRota); } } // [FS008] - Obter Lista de Rotas Collection colecaoRotas = this.obterListasRotas(null, null, codigoSetorComercialInicial, codigoSetorComercialFinal, idLocalidadeInicial, idLocalidadeFinal, idGerenciaRegional, unidadeNegocio, codigoRotaInicial, codigoRotaFinal, numeroQuadraInicial, numeroQuadraFinal); // -- Validar se todas as rotas do grupo informado possui um // criterio definido para a a�ao de cobran�a { Collection<Integer> colecaoIdsAcoesCobranca = new ArrayList<Integer>(); colecaoIdsAcoesCobranca.add(new Integer(idCobrancaAcao)); Collection<Integer> colecaoIdsRotas = new ArrayList<Integer>(); for (Rota rota : (Collection<Rota>) colecaoRotas) { colecaoIdsRotas.add(new Integer(rota.getId())); } PesquisarQtdeRotasSemCriteriosParaAcoesCobranca filtro = new PesquisarQtdeRotasSemCriteriosParaAcoesCobranca(); filtro.setIdsRotas(colecaoIdsRotas); filtro.setIdsAcoesCobranca(colecaoIdsAcoesCobranca); if (cobrancaAcaoAtividadeComando.getCobrancaGrupo() != null) { filtro.setIdGrupoCobranca(cobrancaAcaoAtividadeComando.getCobrancaGrupo().getId()); } Integer qtdeRotasSemCriterios = this.pesquisarQtdeRotasSemCriteriosParaAcoesCobranca(filtro); if (qtdeRotasSemCriterios != null && qtdeRotasSemCriterios.intValue() > 0) { sessionContext.setRollbackOnly(); throw new ControladorException("atencao.rotas.sem.criterio.para.acao.cobranca"); } } // --------- if (colecaoRotas != null && !colecaoRotas.isEmpty()) { CobrancaAtividadeComandoRota cobrancaAtividadeComandoRota = null; Iterator iteratorColecaoRotas = colecaoRotas.iterator(); while (iteratorColecaoRotas.hasNext()) { Rota rota = (Rota) iteratorColecaoRotas.next(); // registradorOperacao = null; // operacao = new Operacao(); // operacaoEfetuada = new OperacaoEfetuada(); CobrancaAtividadeComandoRotaPK cobrancaAtividadeComandoRotaPK = new CobrancaAtividadeComandoRotaPK(); cobrancaAtividadeComandoRotaPK.setCobrancaAcaoAtividadeComandoId(cobrancaAcaoAtividadeComando.getId()); cobrancaAtividadeComandoRotaPK.setRotaId(rota.getId()); cobrancaAtividadeComandoRota = new CobrancaAtividadeComandoRota(); cobrancaAtividadeComandoRota.setComp_id(cobrancaAtividadeComandoRotaPK); cobrancaAtividadeComandoRota.setCobrancaAcaoAtividadeComando(cobrancaAcaoAtividadeComando); cobrancaAtividadeComandoRota.setRota(rota); cobrancaAtividadeComandoRota.setUltimaAlteracao(new Date()); // Criterio de Cobranca if (idComando != null && !idComando.equals("")) { // ------------ REGISTRAR TRANSA��O ---------------- /* * registradorOperacao = new RegistradorOperacao( * Operacao. * OPERACAO_ATUALIZAR_COMANDO_ACAO_COBRANCA_EVENTUAL_COMANDO * , new UsuarioAcaoUsuarioHelper(usuarioLogado, * UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO)); * operacao.setId(Operacao. * OPERACAO_ATUALIZAR_COMANDO_ACAO_COBRANCA_EVENTUAL_COMANDO * ); operacaoEfetuada.setOperacao(operacao); * cobrancaAtividadeComandoRota * .setOperacaoEfetuada(operacaoEfetuada); * cobrancaAtividadeComandoRota * .adicionarUsuario(usuarioLogado, * UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO); * registradorOperacao * .registrarOperacao(cobrancaAtividadeComandoRota); */ // ------------ REGISTRAR TRANSA��O ---------------- } else { // ------------ REGISTRAR TRANSA��O ---------------- /* * registradorOperacao = new RegistradorOperacao( * Operacao * .OPERACAO_ATUALIZAR_COMANDO_ACAO_COBRANCA_EVENTUAL_ROTA * , new UsuarioAcaoUsuarioHelper(usuarioLogado, * UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO)); * operacao.setId(Operacao. * OPERACAO_ATUALIZAR_COMANDO_ACAO_COBRANCA_EVENTUAL_ROTA * ); operacaoEfetuada.setOperacao(operacao); * cobrancaAtividadeComandoRota * .setOperacaoEfetuada(operacaoEfetuada); * cobrancaAtividadeComandoRota * .adicionarUsuario(usuarioLogado, * UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO); * registradorOperacao * .registrarOperacao(cobrancaAtividadeComandoRota); */ // ------------ REGISTRAR TRANSA��O ---------------- } // inserir cobranca atividade comando rota CobrancaAtividadeComandoRotaPK compIDCobrancaAtividadeComandoRotaPK = (CobrancaAtividadeComandoRotaPK) this .getControladorUtil().inserir(cobrancaAtividadeComandoRota); colecaoIdCobrancaAtividadeComandoRota.add(compIDCobrancaAtividadeComandoRotaPK); } } } // } // Para cada Situa��o da Fiscaliza��o selecionada, inclui a situa��o da // fiscaliza��o // na tabela COB_ACAO_ATV_CMD_FIS_SIT this.atualizarCobrancaAcaoAtividadeComandoFiscalizacaoSituacao(cobrancaAcaoAtividadeComando, situacaoFiscalizacao); return cobrancaAcaoAtividadeComando; } /** * Permite efetuar o parcelamento dos d�bitos de um im�vel * * [UC0214] Efetuar Parcelamento de D�bitos * * Faz as atualiza��es e inser��es do parcelamento do d�bito * * @param ConcluirParcelamentoDebitosHelper * @return Integer * @throws ControladorException */ public Integer concluirParcelamentoDebitos(ConcluirParcelamentoDebitosHelper helper, Usuario usuarioLogado) throws ControladorException { Integer parcelamentoId = 0; try { SistemaParametro sistemaParametros = getControladorUtil().pesquisarParametrosDoSistema(); Collection colecaoContasParaParcelamento = helper.getColecaoContaValores(); // Caso a informa��o do motivo de revis�o esteja preenchido, o sistema dever� colocar em revisao as contas que est�o em antiguidade. Collection colecaoContasEmRevisaoPorAntiguidade = new ArrayList(); Integer maiorAnoMesContas = null; if (helper.getColecaoContasEmAntiguidade() != null && !helper.getColecaoContasEmAntiguidade().isEmpty()) { ParcelamentoPerfil parcelamentoPerfil = new ParcelamentoPerfil(); parcelamentoPerfil.setId(helper.getParcelamentoPerfilId()); maiorAnoMesContas = this.recuperaMaiorAnoMesContasParcelamento(helper.getColecaoContasEmAntiguidade()); Iterator iteratorContasEmAntiguidade = helper.getColecaoContasEmAntiguidade().iterator(); while (iteratorContasEmAntiguidade.hasNext()) { ContaValoresHelper contaEmAntiguidade = (ContaValoresHelper) iteratorContasEmAntiguidade.next(); Collection<ParcelamentoDescontoAntiguidade> colecaoParcelamentoDescontoAntiguidade = this.obterParcelamentoDescontoAntiguidadeParaConta( parcelamentoPerfil, contaEmAntiguidade.getConta()); if (colecaoParcelamentoDescontoAntiguidade != null && !colecaoParcelamentoDescontoAntiguidade.isEmpty()) { ParcelamentoDescontoAntiguidade parcelamentoDescontoAntiguidade = null; if (colecaoParcelamentoDescontoAntiguidade.size() == 1) { parcelamentoDescontoAntiguidade = (ParcelamentoDescontoAntiguidade) Util.retonarObjetoDeColecao(colecaoParcelamentoDescontoAntiguidade); } else { Iterator parcelamentoDescontoAntiguidadeValores = colecaoParcelamentoDescontoAntiguidade.iterator(); int quantidadeMinimaMesesAntiguidade = 0; int maiorQuantidadeMinimaMesesAntiguidade = 0; while (parcelamentoDescontoAntiguidadeValores.hasNext()) { ParcelamentoDescontoAntiguidade parcelamentoDescontoAntiguidadeColecao = (ParcelamentoDescontoAntiguidade) parcelamentoDescontoAntiguidadeValores.next(); quantidadeMinimaMesesAntiguidade = parcelamentoDescontoAntiguidadeColecao.getQuantidadeMinimaMesesDebito(); if (quantidadeMinimaMesesAntiguidade > maiorQuantidadeMinimaMesesAntiguidade) { maiorQuantidadeMinimaMesesAntiguidade = quantidadeMinimaMesesAntiguidade; parcelamentoDescontoAntiguidade = parcelamentoDescontoAntiguidadeColecao; } } } if (parcelamentoDescontoAntiguidade.getContaMotivoRevisao() != null) { Collection colecaoContaParaRevisao = new ArrayList(); colecaoContaParaRevisao.add(contaEmAntiguidade.getConta()); getControladorFaturamento().colocarRevisaoConta(colecaoContaParaRevisao, null, parcelamentoDescontoAntiguidade.getContaMotivoRevisao(), helper.getUsuarioLogado()); // ESSAS CONTAS N�O FAR�O PARTE DO PARCELAMENTO colecaoContasEmRevisaoPorAntiguidade.add(contaEmAntiguidade); } } } } // S� entrar� no parcelamento as contas que est�o em antiguidade e n�o for�o colocadas em revis�o com o motivo associado ao PARCELAMENTO_DESCONTO_ANTIGUIDADE. if (colecaoContasEmRevisaoPorAntiguidade != null && !colecaoContasEmRevisaoPorAntiguidade.isEmpty()) { colecaoContasParaParcelamento.removeAll(colecaoContasEmRevisaoPorAntiguidade); } // Verificando se foram selecionadas contas que far�o parte da entrada do parcelamento boolean isContaEntradaParcelamento = false; Collection<Conta> colecaoContaEP = this.obterContasEntradaParcelamento(colecaoContasParaParcelamento); if ((colecaoContaEP != null && !colecaoContaEP.isEmpty()) || (helper.getValorEntradaInformado() != null && !(helper.getValorEntradaInformado().toString().equals("0.00")))) { isContaEntradaParcelamento = true; } // 6.1.1 Para cada conta da lista de contas em d�bito cujo indicador de que a conta j� foi paga, n�o esteja marcada, atualizar if (colecaoContasParaParcelamento != null && !colecaoContasParaParcelamento.isEmpty()) { Iterator contaValores = colecaoContasParaParcelamento.iterator(); Collection<Conta> colecaoContas = new ArrayList(); while (contaValores.hasNext()) { ContaValoresHelper contaValoresHelper = (ContaValoresHelper) contaValores.next(); colecaoContas.add(contaValoresHelper.getConta()); } maiorAnoMesContas = this.recuperaMaiorAnoMesContasParcelamento(colecaoContas); contaValores = colecaoContasParaParcelamento.iterator(); while (contaValores.hasNext()) { ContaValoresHelper contaValoresHelper = (ContaValoresHelper) contaValores.next(); FiltroConta filtroConta = new FiltroConta(); filtroConta.adicionarParametro(new ParametroSimples(FiltroConta.ID, contaValoresHelper.getConta().getId())); filtroConta.adicionarCaminhoParaCarregamentoEntidade("debitoCreditoSituacaoAtual"); Collection<Conta> contaPesquisada = getControladorUtil().pesquisar(filtroConta, Conta.class.getName()); Conta conta = new Conta(); if (contaPesquisada != null && !contaPesquisada.isEmpty()) { conta = contaPesquisada.iterator().next(); } conta.setUltimaAlteracao(new Date()); if (contaValoresHelper.getIndicadorContasDebito() != null) { // Caso n�o seja marcarda como NB e tb n esteja marcada como EP if (!contaValoresHelper.getIndicadorContasDebito().equals(new Integer(ConstantesSistema.NAO)) && !contaValoresHelper.getIndicadorContasDebito().equals(new Integer(ConstantesSistema.SIM))) { // Atualiza Contas na Base de Dados atualizarContaEfetuarParcelamentoDebito(conta, isContaEntradaParcelamento, maiorAnoMesContas); } else if (contaValoresHelper.getIndicadorContasDebito().equals(ConstantesSistema.NAO)) { // 6.1.2. Colocar em revis�o como motivo correspondente a pagamento comprovado as contas que estejam marcardas como NB. ContaMotivoRevisao contaMotivoRevisao = new ContaMotivoRevisao(); // REVISAO POR PAGAMENTO COMPROVADO contaMotivoRevisao.setId(ContaMotivoRevisao.REVISAO_POR_PAGAMENTO_COMPROVADO); // [UC0148] Colocar Conta em Revis�o getControladorFaturamento().colocarRevisaoConta(colecaoContas, conta.getId().toString(), contaMotivoRevisao, helper.getUsuarioLogado()); } } else { // Atualiza Contas na Base de Dados atualizarContaEfetuarParcelamentoDebito(conta, isContaEntradaParcelamento, maiorAnoMesContas); } } } GuiaPagamento guiaPagamentoParcelamento = null; Integer anoMesVencimentoGuia = null; // 6.1.3. Para cada guia de pagamento if (helper.getIndicadorGuiasPagamento().equals(ConstantesSistema.SIM.toString())) { if (helper.getColecaoGuiaPagamentoValores() != null && !helper.getColecaoGuiaPagamentoValores().isEmpty()) { Iterator guiPagamentoValores = helper.getColecaoGuiaPagamentoValores().iterator(); Integer situacaoAnterior = null; while (guiPagamentoValores.hasNext()) { GuiaPagamentoValoresHelper guiaPagamentoValoresHelper = (GuiaPagamentoValoresHelper) guiPagamentoValores.next(); FiltroGuiaPagamento filtroGuiaPagamento = new FiltroGuiaPagamento(); filtroGuiaPagamento.adicionarParametro(new ParametroSimples(FiltroDebitoTipo.ID, guiaPagamentoValoresHelper.getGuiaPagamento().getId())); Collection colecaoGuiaPagamento = getControladorUtil().pesquisar(filtroGuiaPagamento, GuiaPagamento.class.getName()); GuiaPagamento guiaPagamento = new GuiaPagamento(); if (colecaoGuiaPagamento != null && !colecaoGuiaPagamento.isEmpty()) { guiaPagamento = (GuiaPagamento) colecaoGuiaPagamento.iterator().next(); } // 6.1.3.1 Situa��o anterior if (guiaPagamento.getAnoMesReferenciaContabil().equals(sistemaParametros.getAnoMesFaturamento())) { situacaoAnterior = guiaPagamento.getDebitoCreditoSituacaoAtual().getId(); } else { situacaoAnterior = null; } // 6.1.3.2 Situa��o atual DebitoCreditoSituacao debitoCreditoSituacaoAtual = new DebitoCreditoSituacao(); debitoCreditoSituacaoAtual.setId(DebitoCreditoSituacao.PARCELADA); guiaPagamento.setDebitoCreditoSituacaoAtual(debitoCreditoSituacaoAtual); if (situacaoAnterior == null) { guiaPagamento.setDebitoCreditoSituacaoAnterior(null); } else { DebitoCreditoSituacao debitoCreditoSituacaoAnterior = new DebitoCreditoSituacao(); debitoCreditoSituacaoAnterior.setId(situacaoAnterior); guiaPagamento.setDebitoCreditoSituacaoAnterior(debitoCreditoSituacaoAnterior); } guiaPagamento.setUltimaAlteracao(new Date()); anoMesVencimentoGuia = Util.recuperaAnoMesDaData(guiaPagamento.getDataVencimento()); Integer referenciaContabil = obterReferenciaContabilParcelamentoOUConta(isContaEntradaParcelamento, anoMesVencimentoGuia, maiorAnoMesContas); guiaPagamento.setAnoMesReferenciaContabil(referenciaContabil); guiaPagamento.getIndicadorEmitirObservacao(); guiaPagamentoParcelamento = guiaPagamento; getControladorUtil().atualizar(guiaPagamento); try { // Atualizar documento de cobranca da conta, se houver, para cancelado repositorioCobranca.atualizarSituacaoCobrancaDocumentoItem(CobrancaDebitoSituacao.PARCELADO, new Date(), null, guiaPagamento.getId(), null); } catch (ErroRepositorioException ex) { sessionContext.setRollbackOnly(); new ControladorException("erro.sistema", ex); } } } } // 6.1.4 Para cada d�bito a cobrar if (helper.getIndicadorDebitosACobrar().equals(ConstantesSistema.SIM.toString())) { if (helper.getColecaoDebitoACobrar() != null && !helper.getColecaoDebitoACobrar().isEmpty()) { Iterator debitoACobrarValores = helper.getColecaoDebitoACobrar().iterator(); Integer situacaoAnterior = null; while (debitoACobrarValores.hasNext()) { DebitoACobrar debitoACobrar = (DebitoACobrar) debitoACobrarValores.next(); FiltroDebitoACobrar filtroDebitoACobrar = new FiltroDebitoACobrar(); filtroDebitoACobrar.adicionarParametro(new ParametroSimples(FiltroDebitoACobrar.ID, debitoACobrar.getId())); Collection debitoACobrarPesquisada = getControladorUtil().pesquisar(filtroDebitoACobrar, DebitoACobrar.class.getName()); DebitoACobrar debitoACobrarParaAtualizacao = new DebitoACobrar(); if (debitoACobrarPesquisada != null && !debitoACobrarPesquisada.isEmpty()) { debitoACobrarParaAtualizacao = (DebitoACobrar) debitoACobrarPesquisada.iterator().next(); } // 6.1.4.1 Situa��o anterior if (debitoACobrar.getAnoMesReferenciaContabil().equals(sistemaParametros.getAnoMesFaturamento())) { situacaoAnterior = debitoACobrar.getDebitoCreditoSituacaoAtual().getId(); } else { situacaoAnterior = null; } // 6.1.4.2 Situa��o atual DebitoCreditoSituacao debitoCreditoSituacaoAtual = new DebitoCreditoSituacao(); if (debitoACobrar.getDebitoTipo().getId().equals(DebitoTipo.JUROS_SOBRE_PARCELAMENTO)) { debitoCreditoSituacaoAtual.setId(DebitoCreditoSituacao.CANCELADA); } else { debitoCreditoSituacaoAtual.setId(DebitoCreditoSituacao.PARCELADA); } debitoACobrarParaAtualizacao.setDebitoCreditoSituacaoAtual(debitoCreditoSituacaoAtual); if (situacaoAnterior == null) { debitoACobrarParaAtualizacao.setDebitoCreditoSituacaoAnterior(null); } else { DebitoCreditoSituacao debitoCreditoSituacaoAnterior = new DebitoCreditoSituacao(); debitoCreditoSituacaoAnterior.setId(situacaoAnterior); debitoACobrarParaAtualizacao.setDebitoCreditoSituacaoAnterior(debitoCreditoSituacaoAnterior); } debitoACobrarParaAtualizacao.setUltimaAlteracao(new Date()); Integer referenciaContabil = obterReferenciaContabilParcelamentoOUConta(isContaEntradaParcelamento, guiaPagamentoParcelamento != null ? guiaPagamentoParcelamento.getAnoMesReferenciaContabil() : null, maiorAnoMesContas); debitoACobrarParaAtualizacao.setAnoMesReferenciaContabil(referenciaContabil); // Atualiza D�bito a Cobrar a base de dados getControladorUtil().atualizar(debitoACobrarParaAtualizacao); try { // Atualizar documento de cobranca da conta, se houver, para cancelado repositorioCobranca.atualizarSituacaoCobrancaDocumentoItem(CobrancaDebitoSituacao.PARCELADO, new Date(), null, null, debitoACobrarParaAtualizacao.getId()); } catch (ErroRepositorioException ex) { sessionContext.setRollbackOnly(); new ControladorException("erro.sistema", ex); } } } } // 6.1.5 Para cada cr�dito a realizar if (helper.getIndicadorCreditoARealizar().equals(ConstantesSistema.SIM.toString())) { if (helper.getColecaoCreditoARealizar() != null && !helper.getColecaoCreditoARealizar().isEmpty()) { Iterator creditoARealizarValores = helper.getColecaoCreditoARealizar().iterator(); Integer situacaoAnterior = null; while (creditoARealizarValores.hasNext()) { CreditoARealizar creditoARealizar = (CreditoARealizar) creditoARealizarValores.next(); FiltroCreditoARealizar filtroCreditoARealizar = new FiltroCreditoARealizar(); filtroCreditoARealizar.adicionarParametro(new ParametroSimples(FiltroCreditoARealizar.ID, creditoARealizar.getId())); Collection creditoARealizarPesquisada = getControladorUtil().pesquisar(filtroCreditoARealizar, CreditoARealizar.class.getName()); CreditoARealizar creditoARealizarParaAtualizacao = new CreditoARealizar(); if (creditoARealizarPesquisada != null && !creditoARealizarPesquisada.isEmpty()) { creditoARealizarParaAtualizacao = (CreditoARealizar) creditoARealizarPesquisada.iterator().next(); } // 6.1.5.1 Situa��o anterior if (creditoARealizar.getAnoMesReferenciaContabil().equals(sistemaParametros.getAnoMesFaturamento())) { situacaoAnterior = creditoARealizar.getDebitoCreditoSituacaoAtual().getId(); } else { situacaoAnterior = null; } // 6.1.5.2 Situa��o atual DebitoCreditoSituacao debitoCreditoSituacaoAtual = new DebitoCreditoSituacao(); debitoCreditoSituacaoAtual.setId(DebitoCreditoSituacao.PARCELADA); creditoARealizarParaAtualizacao.setDebitoCreditoSituacaoAtual(debitoCreditoSituacaoAtual); if (situacaoAnterior == null) { creditoARealizarParaAtualizacao.setDebitoCreditoSituacaoAnterior(null); } else { DebitoCreditoSituacao debitoCreditoSituacaoAnterior = new DebitoCreditoSituacao(); debitoCreditoSituacaoAnterior.setId(situacaoAnterior); creditoARealizarParaAtualizacao.setDebitoCreditoSituacaoAnterior(debitoCreditoSituacaoAnterior); } creditoARealizarParaAtualizacao.setUltimaAlteracao(new Date()); Integer referenciaContabil = obterReferenciaContabilParcelamentoOUConta(isContaEntradaParcelamento, guiaPagamentoParcelamento != null ? guiaPagamentoParcelamento.getAnoMesReferenciaContabil() : null, maiorAnoMesContas); creditoARealizarParaAtualizacao.setAnoMesReferenciaContabil(referenciaContabil); // Atualiza Cr�dito a Realizar na base de dados getControladorUtil().atualizar(creditoARealizarParaAtualizacao); } } } // 6.1.7 [SB0008] Gerar Dados do Parcelamento BigDecimal valorJurosParcelamento = BigDecimal.ZERO; if (helper.getTaxaJuros() != null && !helper.getTaxaJuros().equals(new BigDecimal("0.00"))) { valorJurosParcelamento = helper.getValorASerParcelado().add(helper.getValorEntradaInformado()); valorJurosParcelamento = valorJurosParcelamento.subtract(helper.getValorASerNegociado()); if (valorJurosParcelamento.compareTo(BigDecimal.ZERO) == -1) { valorJurosParcelamento = BigDecimal.ZERO; } } Integer referenciaContabil = obterReferenciaContabilParcelamentoOUConta(isContaEntradaParcelamento, anoMesVencimentoGuia, maiorAnoMesContas); parcelamentoId = gerarDadosParcelamento(helper, colecaoContasParaParcelamento, valorJurosParcelamento, referenciaContabil); // 6.1.8 [UC0108] Determinar a quantidade de economias por categoria Collection<Categoria> colecaoCategoria = getControladorImovel().obterQuantidadeEconomiasCategoria(helper.getImovel()); // 6.1.6 [SB0004] Gerar D�bitos a Cobrar dos Acr�scimos por Impontualidade gerarDebitosACobrarAcrescimosImpontualidade( helper.getImovel(), helper.getValorAtualizacaoMonetaria(), helper.getValorJurosMora(), helper.getValorMulta(), helper.getTaxaJuros(), parcelamentoId, colecaoCategoria, usuarioLogado, isContaEntradaParcelamento, anoMesVencimentoGuia, maiorAnoMesContas); BigDecimal valorEntrada = BigDecimal.ZERO; if (helper.getValorEntradaInformado().equals(BigDecimal.ZERO)) { valorEntrada = helper.getValorEntradaMinima(); } else { valorEntrada = helper.getValorEntradaInformado(); } // 6.1.9 [SB0005] Gerar D�bitos a Cobrar gerarDebitosACobrarParcelamento( helper.getImovel(), helper.getNumeroPrestacoes(), helper.getValorTotalContaValores(), helper.getValorGuiasPagamento(), helper.getValorAcrescimosImpontualidade(), helper.getValorDebitoACobrarServicoCurtoPrazo(), helper.getValorDebitoACobrarServicoLongoPrazo(), helper.getValorDebitoACobrarParcelamentoCurtoPrazo(), helper.getValorDebitoACobrarParcelamentoLongoPrazo(), valorJurosParcelamento, helper.getTaxaJuros(), parcelamentoId, colecaoCategoria, valorEntrada, new Integer(helper.getIndicadorDividaAtiva()), usuarioLogado, isContaEntradaParcelamento, anoMesVencimentoGuia, maiorAnoMesContas); // 6.1.10 [SB0006] Gera os cr�dito a realizar gerarCreditoARealizarParcelamento( helper.getImovel(), helper.getNumeroPrestacoes(), valorJurosParcelamento, parcelamentoId, helper.getDescontoFaixaReferenciaConta(), helper.getDescontoAcrescimosImpontualidade(), helper.getDescontoAntiguidadeDebito(), helper.getDescontoInatividadeLigacaoAgua(), helper.getValorCreditoARealizar(), colecaoCategoria, helper.getDescontoSancoesRDEspecial(), helper.getDescontoTarifaSocialRDEspecial(), isContaEntradaParcelamento, anoMesVencimentoGuia, maiorAnoMesContas, helper.getValorCreditosAnterioresCurtoPrazo(), helper.getValorCreditosAnterioresLongoPrazo()); // 6.1.13.1 [SB0007] Gera a entrada do parcelamento gerarEntradaParcelamento( helper.getImovel(), valorEntrada, valorJurosParcelamento, parcelamentoId, colecaoCategoria, colecaoContasParaParcelamento, helper.getUsuarioLogado(), sistemaParametros, isContaEntradaParcelamento, anoMesVencimentoGuia, maiorAnoMesContas); FiltroDebitoACobrar filtroDebitoACobrar = new FiltroDebitoACobrar(); filtroDebitoACobrar.adicionarParametro(new ParametroSimples(FiltroDebitoACobrar.IMOVEL_ID, helper.getImovel().getId())); filtroDebitoACobrar.adicionarParametro(new ParametroSimples(FiltroDebitoACobrar.FINANCIAMENTO_TIPO_ID, FinanciamentoTipo.PARCELAMENTO_AGUA, FiltroParametro.CONECTOR_OR, 3)); filtroDebitoACobrar.adicionarParametro(new ParametroSimples(FiltroDebitoACobrar.FINANCIAMENTO_TIPO_ID, FinanciamentoTipo.PARCELAMENTO_ESGOTO, FiltroParametro.CONECTOR_OR)); filtroDebitoACobrar.adicionarParametro(new ParametroSimples(FiltroDebitoACobrar.FINANCIAMENTO_TIPO_ID, FinanciamentoTipo.PARCELAMENTO_SERVICO)); Collection colecaoDebitoACobrarParcelamento = getControladorUtil().pesquisar(filtroDebitoACobrar, DebitoACobrar.class.getName()); Collection colecaoDebitoCobradoParcelamento = null; if (colecaoContasParaParcelamento != null && !colecaoContasParaParcelamento.isEmpty()) { Iterator contaValores = colecaoContasParaParcelamento.iterator(); while (contaValores.hasNext()) { ContaValoresHelper contaValoresHelper = (ContaValoresHelper) contaValores.next(); FiltroDebitoCobrado filtroDebitoCobrado = new FiltroDebitoCobrado(); filtroDebitoCobrado.adicionarParametro(new ParametroSimples(FiltroDebitoCobrado.CONTA_ID, contaValoresHelper.getConta().getId())); filtroDebitoCobrado.adicionarParametro(new ParametroSimples(FiltroDebitoCobrado.FINANCIAMENTO_TIPO_ID, FinanciamentoTipo.PARCELAMENTO_AGUA, FiltroParametro.CONECTOR_OR, 3)); filtroDebitoCobrado.adicionarParametro(new ParametroSimples(FiltroDebitoCobrado.FINANCIAMENTO_TIPO_ID, FinanciamentoTipo.PARCELAMENTO_ESGOTO, FiltroParametro.CONECTOR_OR)); filtroDebitoCobrado.adicionarParametro(new ParametroSimples(FiltroDebitoCobrado.FINANCIAMENTO_TIPO_ID, FinanciamentoTipo.PARCELAMENTO_SERVICO)); colecaoDebitoCobradoParcelamento = getControladorUtil().pesquisar(filtroDebitoCobrado, DebitoCobrado.class.getName()); } } Short numeroReparcelamento = new Short("0"); Short numeroReparcelamentoConsecutivos = new Short("0"); if (colecaoDebitoACobrarParcelamento != null && !colecaoDebitoACobrarParcelamento.isEmpty() || colecaoDebitoCobradoParcelamento != null && !colecaoDebitoCobradoParcelamento.isEmpty()) { if (helper.getImovel().getNumeroReparcelamento() == null) { numeroReparcelamento = new Short("0"); } else { numeroReparcelamento = (short) (helper.getImovel().getNumeroReparcelamento() + 1); } if (helper.getImovel().getNumeroReparcelamentoConsecutivos() == null) { numeroReparcelamentoConsecutivos = new Short("0"); } else { numeroReparcelamentoConsecutivos = (short) (helper.getImovel().getNumeroReparcelamentoConsecutivos() + 1); } } Short numeroParcelamento = 0; if (helper.getImovel().getNumeroParcelamento() == null) { numeroParcelamento = new Short("1"); } else { numeroParcelamento = (short) (helper.getImovel().getNumeroParcelamento() + 1); } helper.getImovel().setNumeroParcelamento(numeroParcelamento); helper.getImovel().setNumeroReparcelamento(numeroReparcelamento); helper.getImovel().setNumeroReparcelamentoConsecutivos(numeroReparcelamentoConsecutivos); helper.getImovel().setUltimaAlteracao(new Date()); getControladorUtil().atualizar(helper.getImovel()); if (helper.getCpfClienteParcelamentoDigitado() != null && !helper.getCpfClienteParcelamentoDigitado().equals("")) { getControladorCliente().atualizarCPFCliente(helper.getCpfClienteParcelamentoDigitado(), helper.getCliente().getId(), helper.getUsuarioLogado()); } } catch (ControladorException e) { sessionContext.setRollbackOnly(); throw e; } catch (Exception e) { sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", e); } return parcelamentoId; } /** * * Inseri um Cornograma de Cobran�a com as A��es de Cobran�as e suas * Atividades * * [UC0312] Inserir Cornograma de Cobran�a * * @author Fl�vio Cordeiro * @param usuarioLogado * @data 25/04/2006 * * @param cobrancaGrupoCronogramaMes * , cobrancaAcaoCronograma, * cobrancasAtividadesParaInsercao(Collection) */ public void inserirCobrancaCronograma(Collection colecaoCobrancaCronogramaHelper, Usuario usuarioLogado) throws ControladorException { SistemaParametro sistemaParametro = getControladorUtil().pesquisarParametrosDoSistema(); // ------------ REGISTRAR TRANSA��O ---------------------------- RegistradorOperacao registradorOperacao = new RegistradorOperacao(Operacao.OPERACAO_INSERIR_CRONOGRAMA_COBRANCA, new UsuarioAcaoUsuarioHelper(usuarioLogado, UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO)); // ------------ REGISTRAR TRANSA��O ---------------------------- Iterator iteratorHelper = colecaoCobrancaCronogramaHelper.iterator(); // -- Validar se todas as rotas do grupo informado possui um criterio // definido para cada a��o Integer idGrupoCobranca = null; Collection<Integer> idsAcoesCobranca = new ArrayList<Integer>(); for (CobrancaCronogramaHelper cobrancaCronograma : (Collection<CobrancaCronogramaHelper>) colecaoCobrancaCronogramaHelper) { idGrupoCobranca = cobrancaCronograma.getCobrancaGrupoCronogramaMes().getCobrancaGrupo().getId(); idsAcoesCobranca.add(cobrancaCronograma.getCobrancaAcaoCronograma().getCobrancaAcao().getId()); } if (idsAcoesCobranca.size() > 0) { PesquisarQtdeRotasSemCriteriosParaAcoesCobranca filtro = new PesquisarQtdeRotasSemCriteriosParaAcoesCobranca(); filtro.setIdGrupoCobranca(idGrupoCobranca); filtro.setIdsAcoesCobranca(idsAcoesCobranca); Integer qtdeRotasSemCriterios = pesquisarQtdeRotasSemCriteriosParaAcoesCobranca(filtro); if (qtdeRotasSemCriterios != null && qtdeRotasSemCriterios.intValue() > 0) { throw new ControladorException("atencao.rotas.sem.criterio.para.acao.cobranca"); } } // ------------- Map<CobrancaAcaoAtividadeHelper, Date> mapAcaoAtividadeDataPrevista = new HashMap(); CobrancaCronogramaHelper cobrancaCronogramaHelper = null; CobrancaGrupoCronogramaMes cobrancaGrupoCronogramaMes = null; CobrancaAcaoCronograma cobrancaAcaoCronograma = null; Collection cobrancasAtividadesParaInsercao = null; // Collection colecaoCobrancaAcao = null; Collection colecaoAtividades = null; Integer idCobrancaGrupoCronogramaMesRetorno = null; Integer idCobrancaAcaoCronogramaRetorno = null; CobrancaGrupoCronogramaMes cobrancaGrupoCronogramaMesRetorno = null; CobrancaAcaoCronograma cobrancaAcaoCronogramaRetorno = null; // CobrancaAcaoCronograma cobrancaAcaoCronogramaAnterior = null; // FiltroCobrancaAcao filtroCobrancaAcao = null; FiltroCobrancaAtividade filtroCobrancaAtividade = new FiltroCobrancaAtividade(); filtroCobrancaAtividade.adicionarParametro(new ParametroSimples(FiltroCobrancaAtividade.INDICADOR_USO, ConstantesSistema.INDICADOR_USO_ATIVO)); colecaoAtividades = getControladorUtil().pesquisar(filtroCobrancaAtividade, CobrancaAtividade.class.getName()); // ----Usado para comparar a ultima data da acao anterior com a primeira // da atual Calendar ultimaDataAcaoAnterior = Calendar.getInstance(); int inserirCronograma = 0; int comparaGrupo = 0; CobrancaAcaoAtividadeCronograma cobrancaAcaoAtividadeCronogramaTeste = null; // CobrancaAcaoAtividadeCronograma // cobrancaAcaoAtividadeCronogramaAnterior = null; while (iteratorHelper.hasNext()) { // inserirCronograma = 0; cobrancaCronogramaHelper = (CobrancaCronogramaHelper) iteratorHelper.next(); cobrancaGrupoCronogramaMes = cobrancaCronogramaHelper.getCobrancaGrupoCronogramaMes(); cobrancasAtividadesParaInsercao = cobrancaCronogramaHelper.getCobrancasAtividadesParaInsercao(); cobrancaAcaoCronograma = cobrancaCronogramaHelper.getCobrancaAcaoCronograma(); // verifica se existe rotas para o cronograma e a a��o especifica FiltroRota filtroRota = new FiltroRota(); filtroRota.adicionarParametro(new ParametroSimples(FiltroRota.COBRANCA_GRUPO_ID, cobrancaGrupoCronogramaMes.getCobrancaGrupo() .getId())); if (cobrancaAcaoCronograma.getCobrancaAcao().getId() != null && cobrancaAcaoCronograma.getCobrancaAcao().getId().equals(CobrancaAcao.CORTE_ADMINISTRATIVO) && sistemaParametro.getCodigoEmpresaFebraban() != null && sistemaParametro.getCodigoEmpresaFebraban().equals(Empresa.EMPRESA_FEBRABAN_COMPESA)) { filtroRota.adicionarParametro(new ParametroSimplesDiferenteDe(FiltroRota.EMPRESA_COBRANCA_ID, 1)); } Collection<Rota> colecaoRotas = getControladorUtil().pesquisar(filtroRota, Rota.class.getName()); if (colecaoRotas == null || colecaoRotas.isEmpty()) { sessionContext.setRollbackOnly(); throw new ControladorException("atencao.cobranca.nao.existe.rotas.grupo"); } if (comparaGrupo == 0) { comparaGrupo = 1; /** * [FS0002] Validar refer�ncia do cronograma */ FiltroCobrancaGrupo filtroCobrancaGrupo = new FiltroCobrancaGrupo(); filtroCobrancaGrupo.adicionarParametro(new ParametroSimples(FiltroCobrancaGrupo.ID, cobrancaGrupoCronogramaMes .getCobrancaGrupo().getId())); Collection cobrancaGrupos; cobrancaGrupos = getControladorUtil().pesquisar(filtroCobrancaGrupo, CobrancaGrupo.class.getName()); CobrancaGrupo cobrancaGrupo = null; if (!cobrancaGrupos.isEmpty()) { cobrancaGrupo = (CobrancaGrupo) cobrancaGrupos.iterator().next(); if (cobrancaGrupoCronogramaMes.getAnoMesReferencia() < cobrancaGrupo.getAnoMesReferencia()) { sessionContext.setRollbackOnly(); throw new ControladorException("atencao.cobranca.mes_ano_anterior_grupo", null, Util.formatarAnoMesParaMesAno(cobrancaGrupo.getAnoMesReferencia())); } } /** * [FS0003] Verificar exist�ncia do cronograma para o grupo */ FiltroCobrancaGrupoCronogramaMes filtroCobrancaGrupoCronogramaMes = new FiltroCobrancaGrupoCronogramaMes(); filtroCobrancaGrupoCronogramaMes.adicionarParametro(new ParametroSimples( FiltroCobrancaGrupoCronogramaMes.ID_COBRANCA_GRUPO, cobrancaGrupoCronogramaMes.getCobrancaGrupo().getId())); filtroCobrancaGrupoCronogramaMes.adicionarParametro(new ParametroSimples( FiltroCobrancaGrupoCronogramaMes.ANO_MES_REFERENCIA, cobrancaGrupoCronogramaMes.getAnoMesReferencia())); Collection colecaoCobrancaGrupoCronogramaMes = getControladorUtil().pesquisar(filtroCobrancaGrupoCronogramaMes, CobrancaGrupoCronogramaMes.class.getName()); if (!colecaoCobrancaGrupoCronogramaMes.isEmpty()) { sessionContext.setRollbackOnly(); throw new ControladorException("atencao.cobranca.existencia_cronograma_grupo", null, cobrancaGrupo.getDescricao(), Util.formatarAnoMesParaMesAno(cobrancaGrupoCronogramaMes.getAnoMesReferencia())); } } /** * [FS0004] Validar Datas Previstas */ Iterator iteratorTestaDatas = cobrancasAtividadesParaInsercao.iterator(); // int mes = 0; // int ano = 0; int mudarCronograma = 0; // String anoMes = null; Calendar dataCobrancaTeste = Calendar.getInstance(); // Calendar dataCobrancaAnterior = null; while (iteratorTestaDatas.hasNext()) { // if (cobrancaAcaoAtividadeCronogramaAnterior == null) { cobrancaAcaoAtividadeCronogramaTeste = (CobrancaAcaoAtividadeCronograma) iteratorTestaDatas.next(); dataCobrancaTeste.setTime(cobrancaAcaoAtividadeCronogramaTeste.getDataPrevista()); /** * [FS0006] Verifica A��o Predecessora */ mapAcaoAtividadeDataPrevista = validarAtividadeAcaoPredecessora(cobrancaAcaoCronograma.getCobrancaAcao(), cobrancaAcaoCronograma.getCobrancaAcao().getCobrancaAcaoPredecessora(), cobrancaAcaoAtividadeCronogramaTeste, mapAcaoAtividadeDataPrevista); // Retirado por Romulo Aurelio Data:21/07/2010 // Correcao da CRC 4660 // Analista:Eduardo Borges /* * if (cobrancaAcaoAtividadeCronogramaTeste.getDataPrevista() != * null) { dataCobrancaTeste * .setTime(cobrancaAcaoAtividadeCronogramaTeste * .getDataPrevista()); * * ano = dataCobrancaTeste.get(Calendar.YEAR); mes = * dataCobrancaTeste.get(Calendar.MONTH) + 1; * * if (mes < 10) { anoMes = ano + "0" + mes; } else { anoMes = * ano + "" + mes; } if * (cobrancaGrupoCronogramaMes.getAnoMesReferencia() > Integer * .parseInt(anoMes)) { sessionContext.setRollbackOnly(); throw * new ControladorException( * "atencao.cobranca.data_prevista_mes_ano_menor", null, * cobrancaAcaoAtividadeCronogramaTeste .getCobrancaAtividade() * .getDescricaoCobrancaAtividade(), * cobrancaAcaoCronograma.getCobrancaAcao() * .getDescricaoCobrancaAcao()); } } */ if (mudarCronograma == 0) { if (inserirCronograma == 0) { // ------------ REGISTRAR TRANSA��O ---------------- registradorOperacao.registrarOperacao(cobrancaGrupoCronogramaMes); // ------------ REGISTRAR TRANSA��O --------------- inserirCronograma = 1; cobrancaGrupoCronogramaMes.setUltimaAlteracao(new Date()); idCobrancaGrupoCronogramaMesRetorno = (Integer) getControladorUtil().inserir(cobrancaGrupoCronogramaMes); cobrancaGrupoCronogramaMesRetorno = new CobrancaGrupoCronogramaMes(); cobrancaGrupoCronogramaMesRetorno.setId(idCobrancaGrupoCronogramaMesRetorno); } // ------------ REGISTRAR TRANSA��O ---------------- registradorOperacao.registrarOperacao(cobrancaAcaoCronograma); // ------------ REGISTRAR TRANSA��O --------------- if (cobrancaAcaoCronograma.getCobrancaAcao().getIndicadorObrigatoriedade().intValue() == 2 && cobrancaAcaoAtividadeCronogramaTeste.getDataPrevista() == null) { } else { mudarCronograma = colecaoAtividades.size(); cobrancaAcaoCronograma.setUltimaAlteracao(new Date()); cobrancaAcaoCronograma.setCobrancaGrupoCronogramaMes(cobrancaGrupoCronogramaMesRetorno); idCobrancaAcaoCronogramaRetorno = (Integer) getControladorUtil().inserir(cobrancaAcaoCronograma); cobrancaAcaoCronogramaRetorno = new CobrancaAcaoCronograma(); cobrancaAcaoCronogramaRetorno.setId(idCobrancaAcaoCronogramaRetorno); } } // ------------ REGISTRAR TRANSA��O ---------------- registradorOperacao.registrarOperacao(cobrancaAcaoAtividadeCronogramaTeste); // ------------ REGISTRAR TRANSA��O --------------- if (cobrancaAcaoCronograma.getCobrancaAcao().getIndicadorObrigatoriedade().intValue() == 2 && cobrancaAcaoAtividadeCronogramaTeste.getDataPrevista() == null) { } else { cobrancaAcaoAtividadeCronogramaTeste.setCobrancaAcaoCronograma(cobrancaAcaoCronogramaRetorno); cobrancaAcaoAtividadeCronogramaTeste.setUltimaAlteracao(new Date()); cobrancaAcaoAtividadeCronogramaTeste.setQuantidadeDocumentos(new Integer(0)); cobrancaAcaoAtividadeCronogramaTeste.setValorDocumentos(new BigDecimal(0)); cobrancaAcaoAtividadeCronogramaTeste.setQuantidadeItensCobrados(new Integer(0)); getControladorUtil().inserir(cobrancaAcaoAtividadeCronogramaTeste); if (cobrancaAcaoAtividadeCronogramaTeste.getDataPrevista() != null) { ultimaDataAcaoAnterior.setTime(cobrancaAcaoAtividadeCronogramaTeste.getDataPrevista()); } // cobrancaAcaoAtividadeCronogramaAnterior = // cobrancaAcaoAtividadeCronogramaTeste; // diminui um no contador de mudanca de Cronograma mudarCronograma -= 1; } } // cobrancaAcaoCronogramaAnterior = cobrancaAcaoCronograma; } } public void validarAcaoCobrancaCronogramaPredecessora(Collection colecaoCobrancaCronogramaHelper, CobrancaCronogramaHelper cobrancaCronogramaHelperAtual) throws ControladorException { if (cobrancaCronogramaHelperAtual.getCobrancaAcaoCronograma() != null && cobrancaCronogramaHelperAtual.getCobrancaAcaoCronograma().getCobrancaAcao().getCobrancaAcaoPredecessora() != null) { CobrancaCronogramaHelper cobrancaCronogramaHelperAnterior = null; CobrancaAcaoAtividadeCronograma cobrancaAcaoAtividadeCronogramaAnterior = null; // Calendar dataAtividadeAcaoPredecesora = Calendar.getInstance(); CobrancaAcaoAtividadeCronograma cobrancaAcaoAtividadeCronogramaAtual = (CobrancaAcaoAtividadeCronograma) cobrancaCronogramaHelperAtual .getCobrancasAtividadesParaInsercao().iterator().next(); Iterator iteratorAcao = colecaoCobrancaCronogramaHelper.iterator(); while (iteratorAcao.hasNext()) { cobrancaCronogramaHelperAnterior = (CobrancaCronogramaHelper) iteratorAcao.next(); if (cobrancaCronogramaHelperAtual.getCobrancaAcaoCronograma().getCobrancaAcao().getCobrancaAcaoPredecessora().getId() .equals(cobrancaCronogramaHelperAnterior.getCobrancaAcaoCronograma().getCobrancaAcao().getId())) { break; } } Iterator iteratorAtividadeCronograma = cobrancaCronogramaHelperAnterior.getCobrancasAtividadesParaInsercao().iterator(); while (iteratorAtividadeCronograma.hasNext()) { cobrancaAcaoAtividadeCronogramaAnterior = (CobrancaAcaoAtividadeCronograma) iteratorAtividadeCronograma.next(); } if ((cobrancaAcaoAtividadeCronogramaAnterior.getDataPrevista() != null) && cobrancaAcaoAtividadeCronogramaAtual.getDataPrevista() != null && cobrancaAcaoAtividadeCronogramaAnterior.getDataPrevista().after( cobrancaAcaoAtividadeCronogramaAtual.getDataPrevista())) { sessionContext.setRollbackOnly(); throw new ControladorException("atencao.cobranca.data_prevista_predecessora_maior"); } if ((cobrancaAcaoAtividadeCronogramaAnterior != null) && (cobrancaAcaoAtividadeCronogramaAnterior.getDataPrevista() == null) && (cobrancaCronogramaHelperAtual.getCobrancaAcaoCronograma().getCobrancaAcao().getCobrancaAcaoPredecessora() != null) && cobrancaAcaoAtividadeCronogramaAtual.getDataPrevista() != null) { sessionContext.setRollbackOnly(); throw new ControladorException("atencao.cobranca.data_predecessora_nula", null, cobrancaCronogramaHelperAtual .getCobrancaAcaoCronograma().getCobrancaAcao().getDescricaoCobrancaAcao()); } if ((cobrancaAcaoAtividadeCronogramaAnterior != null) && (cobrancaAcaoAtividadeCronogramaAnterior.getComando() == null) && (cobrancaAcaoAtividadeCronogramaAtual.getComando() != null)) { sessionContext.setRollbackOnly(); throw new ControladorException("atencao.cobranca.comandar_predecessora", null, cobrancaCronogramaHelperAtual .getCobrancaAcaoCronograma().getCobrancaAcao().getDescricaoCobrancaAcao()); } if ((cobrancaAcaoAtividadeCronogramaAtual.getCobrancaAtividade().getCobrancaAtividadePredecessora() != null) && (cobrancaAcaoAtividadeCronogramaAnterior.getComando() == null) && (cobrancaAcaoAtividadeCronogramaAtual.getComando() != null)) { sessionContext.setRollbackOnly(); throw new ControladorException("atencao.cobranca.comandar_predecessora", null, cobrancaCronogramaHelperAtual .getCobrancaAcaoCronograma().getCobrancaAcao().getDescricaoCobrancaAcao()); } if (cobrancaAcaoAtividadeCronogramaAnterior.getDataPrevista() != null && cobrancaAcaoAtividadeCronogramaAtual.getDataPrevista() != null && cobrancaAcaoAtividadeCronogramaAnterior.getDataPrevista().after( cobrancaAcaoAtividadeCronogramaAtual.getDataPrevista())) { sessionContext.setRollbackOnly(); throw new ControladorException("atencao.cobranca.data_acao_anterior", null, cobrancaCronogramaHelperAtual .getCobrancaAcaoCronograma().getCobrancaAcao().getDescricaoCobrancaAcao()); } } } /** * * Filtrar Cronograma de Cobran�a com as A��es de Cobran�as e suas * Atividades * * [UC03125] Inserir Cronograma de Cobran�a * * @author Fl�vio Cordeiro * @data 29/04/2006 * * @param idGrupoCobranca * , mesAno * @return Colecao de CobrancaAcaoAtividadeCronograma */ public FiltroCobrancaAcaoAtividadeCronograma filtrarCobrancaCronograma(String idGrupoCobranca, String mesAno) throws ControladorException { FiltroCobrancaGrupo filtroCobrancaGrupo = new FiltroCobrancaGrupo(); if (idGrupoCobranca != null && !idGrupoCobranca.equals("-1") && !idGrupoCobranca.equals("")) { filtroCobrancaGrupo.adicionarParametro(new ParametroSimples(FiltroCobrancaGrupo.ID, idGrupoCobranca)); } Collection colecaoCobrancaGrupo = getControladorUtil().pesquisar(filtroCobrancaGrupo, CobrancaGrupo.class.getName()); CobrancaGrupo cobrancaGrupo = (CobrancaGrupo) colecaoCobrancaGrupo.iterator().next(); FiltroCobrancaAcaoAtividadeCronograma filtroCobrancaAcaoAtividadeCronograma = new FiltroCobrancaAcaoAtividadeCronograma(); /** * [FS0002] Verifica exist�ncia de cronograma */ // filtroCobrancaAcaoAtividadeCronograma // .adicionarCaminhoParaCarregamentoEntidade("cobrancaGrupo"); // filtroCobrancaAcaoAtividadeCronograma.adicionarCaminhoParaCarregamentoEntidade("cobrancaAcaoCronograma.cobrancaGrupoCronogramaMes.cobrancaGrupo"); // filtroCobrancaAcaoAtividadeCronograma.adicionarCaminhoParaCarregamentoEntidade("cobrancaAtividade"); // filtroCobrancaAcaoAtividadeCronograma // .adicionarParametro(new ParametroNulo( // FiltroCobrancaAcaoAtividadeCronograma.REALIZACAO)); if (idGrupoCobranca != null && !idGrupoCobranca.equals("-1") && !idGrupoCobranca.equals("")) { filtroCobrancaAcaoAtividadeCronograma.adicionarParametro(new ParametroSimples( FiltroCobrancaAcaoAtividadeCronograma.COBRANCA_GRUPO, idGrupoCobranca)); } // filtroCobrancaAcaoAtividadeCronograma.setCampoOrderBy(filtroCobrancaAcaoAtividadeCronograma.COBRANCA_GRUPO_CRONOGRAMA_MES_MES_ANO); if (mesAno != null && !mesAno.trim().equals("")) { filtroCobrancaAcaoAtividadeCronograma.adicionarParametro(new ParametroSimples( FiltroCobrancaAcaoAtividadeCronograma.COBRANCA_GRUPO_CRONOGRAMA_MES_MES_ANO, Util .formatarMesAnoComBarraParaAnoMes(mesAno))); } else { filtroCobrancaAcaoAtividadeCronograma.adicionarParametro(new MaiorQue( FiltroCobrancaAcaoAtividadeCronograma.COBRANCA_GRUPO_CRONOGRAMA_MES_MES_ANO, cobrancaGrupo.getAnoMesReferencia())); } /* * Collection colecaoCobrancaAcaoAtividadeCronograma = * getControladorUtil().pesquisar(filtroCobrancaAcaoAtividadeCronograma, * CobrancaAcaoAtividadeCronograma.class.getName()); * * if(colecaoCobrancaAcaoAtividadeCronograma.isEmpty()){ throw new * ControladorException("atencao.naocadastrado", null, "grupo de * cobranca"); } */ return filtroCobrancaAcaoAtividadeCronograma; } /** * [UC0213] Desfazer Parcelamento Debito * * @author Fernanda Paiva * @created 29/04/2006 * * @param codigoImovel * @throws ControladorException * Controlador Exception */ public void atualizarDadosParcelamentoParaImovel(Integer codigoImovel) throws ControladorException { try { FiltroImovel filtroImovel = new FiltroImovel(); Imovel imovel = null; filtroImovel.adicionarParametro(new ParametroSimples(FiltroImovel.ID, codigoImovel)); Collection<Imovel> colecaoImovel = getControladorUtil().pesquisar(filtroImovel, Imovel.class.getName()); imovel = ((Imovel) ((List) colecaoImovel).get(0)); Short numeroParcelamento = imovel.getNumeroParcelamento(); Short numeroReparcelamentoConsecutivo = imovel.getNumeroReparcelamentoConsecutivos(); Short numeroReparcelamento = imovel.getNumeroReparcelamento(); if (numeroParcelamento > 0) { numeroParcelamento = (short) (imovel.getNumeroParcelamento() - 1); } if (numeroReparcelamentoConsecutivo > 0) { numeroReparcelamento = (short) (imovel.getNumeroReparcelamento() - 1); numeroReparcelamentoConsecutivo = (short) (imovel.getNumeroReparcelamentoConsecutivos() - 1); } repositorioCobranca.atualizarDadosParcelamentoImovel(codigoImovel, numeroParcelamento, numeroReparcelamento, numeroReparcelamentoConsecutivo); } catch (ErroRepositorioException ex) { sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", ex); } } /** * [UC0213] Desfazer Parcelamentos por entrada n�o paga * * Este caso de uso permite desfazer os parcelamentos de d�bitos efetuados * no m�s cuja entrada n�o tenha sido paga. * * @author Fernanda Paiva * @created 02/05/2006 * * @throws ControladorException * Controlador Exception */ public void desfazerParcelamentosPorEntradaNaoPaga(int idFuncionalidadeIniciada) throws ControladorException { int idUnidadeIniciada = 0; idUnidadeIniciada = getControladorBatch().iniciarUnidadeProcessamentoBatch(idFuncionalidadeIniciada, UnidadeProcessamento.FUNCIONALIDADE, 0); // cria uma cole��o de parcelamentos de d�bitos efetuados no m�s // corrente Collection parcelamentosMes = null; // cria uma cole��o de guias de pagamento correspondente a entrada do // parcelamento Collection guiaPagamento = null; // cria uma cole��o de contas correspondente a entrada do // parcelamento Collection conta = null; // cria uma cole��o de pagamentos para a guia de pagamento // correspondente a entrada do parcelamento Collection pagamento = null; // cria uma cole��o de pagamentos para a guia de pagamento // correspondente a entrada do parcelamento Collection pagamentoConta = null; try { // pesquisa os parametros do sistem na base SistemaParametro sistemaParametros = getControladorUtil().pesquisarParametrosDoSistema(); // recupera o ano/m�s corrente de faturamento int anoMesReferenciaArrecadacao = sistemaParametros.getAnoMesArrecadacao(); int anoMesReferenciaArrecadacaoMenosUm = anoMesReferenciaArrecadacao; // recupera todos os parcelamentos no mes atual e que esteja com a // situacao normal parcelamentosMes = repositorioCobranca.pesquisarParcelamentosSituacaoNormalNoMes(ParcelamentoSituacao.NORMAL.toString(), anoMesReferenciaArrecadacao); if (!Util.isVazioOrNulo(parcelamentosMes)) { Iterator parcelamentosMesIterator = parcelamentosMes.iterator(); while (parcelamentosMesIterator.hasNext()) { // Obt�m os dados do cr�dito realizado Object[] dadosParcelamento = (Object[]) parcelamentosMesIterator.next(); Integer numeroParcelamentosMes = (Integer) dadosParcelamento[0]; Integer idImovel = (Integer) dadosParcelamento[2]; // recupera todos os parcelamentos no mes atual e que // esteja com a situacao normal System.out.println(" **** PESQUISAR GUIA POR PARCELAMENTO **** "); System.out.println(" ------------------------------------------ "); guiaPagamento = repositorioCobranca.pesquisarGuiaPagamentoDoParcelamento(numeroParcelamentosMes.toString()); if (guiaPagamento != null && !guiaPagamento.isEmpty()) { Iterator guiaPagamentoIterator = guiaPagamento.iterator(); while (guiaPagamentoIterator.hasNext()) { Object[] dadosGuiaPagamento = (Object[]) guiaPagamentoIterator.next(); Integer numeroGuiaPagamento = (Integer) dadosGuiaPagamento[0]; /* * Calendar calendario = new GregorianCalendar(); * String anoMesArrecadacao = * anoMesReferenciaArrecadacaoMenosUm + ""; * * calendario.set(Calendar.YEAR, new Integer( * anoMesArrecadacao.substring(0, 4)).intValue()); * calendario.set(Calendar.MONTH, new Integer( * anoMesArrecadacao.substring(4, 6)).intValue() - * 1); calendario.set(Calendar.DAY_OF_MONTH, * calendario * .getActualMaximum(Calendar.DAY_OF_MONTH)); * * if (((Date) dadosGuiaPagamento[1]) * .compareTo(calendario.getTime()) <= 0) { */ /** * * * @autor Adriana Muniz * @date 07/02/2012 * * Mudan�a do parametro de compara��o com a * data do vencimento. */ if (((Date) dadosGuiaPagamento[1]).compareTo(new Date()) <= 0) { // retorno da pesquisa // recupera todos os parcelamentos no mes // atual e que esteja com a situacao normal System.out.println(" **** PESQUISAR PAGAMENTO DA GUIA **** "); System.out.println(" ------------------------------------------ "); pagamento = repositorioCobranca.pesquisarPagamentoParaGuiaPagamentoDoParcelamento( numeroGuiaPagamento.toString(), idImovel); if (pagamento == null || pagamento.isEmpty()) { System.out.println(""); System.out.println(""); System.out.println(" ---------------------------------------------- "); System.out.println(" **** DESFAZER " + numeroParcelamentosMes + " **** "); System.out.println(" ---------------------------------------------- "); System.out.println(""); System.out.println(""); Usuario usuarioBatch = this.getControladorUsuario().pesquisarUsuarioRotinaBatch(); if (usuarioBatch == null) { throw new ControladorException("atencao.usuario_rotina_batch_nao_cadastrado"); } else { this.desfazerParcelamentosDebito(ParcelamentoMotivoDesfazer.ENTRADA_NAO_PAGA.toString(), numeroParcelamentosMes, usuarioBatch); } } } } } else { /* * ====================================================== * ========================= PARTE NOVA - CONTAS * ======== * ============================================== * ======================== */ System.out.println(" **** PESQUISAR CONTA POR PARCELAMENTO **** "); System.out.println(" ------------------------------------------ "); conta = repositorioCobranca.pesquisarContaDoParcelamento(numeroParcelamentosMes); if (conta != null && !conta.isEmpty()) { Iterator contaIterator = conta.iterator(); while (contaIterator.hasNext()) { Integer numeroConta = (Integer) contaIterator.next(); System.out.println(" **** PESQUISAR PAGAMENTO DA CONTA **** "); System.out.println(" ------------------------------------------ "); pagamentoConta = repositorioCobranca.pesquisarPagamentoParaContaDoParcelamento(numeroConta.toString()); if (pagamentoConta == null || pagamentoConta.isEmpty()) { System.out.println(""); System.out.println(""); System.out.println(" ------------------------------------- "); System.out.println(" **** DESFAZER CONTA " + numeroParcelamentosMes + " **** "); System.out.println(" ------------------------------------- "); System.out.println(""); System.out.println(""); Usuario usuarioBatch = this.getControladorUsuario().pesquisarUsuarioRotinaBatch(); if (usuarioBatch == null) { throw new ControladorException("atencao.usuario_rotina_batch_nao_cadastrado"); } else { this.desfazerParcelamentosDebito(ParcelamentoMotivoDesfazer.ENTRADA_NAO_PAGA.toString(), numeroParcelamentosMes, usuarioBatch); } break; } } } } } } getControladorBatch().encerrarUnidadeProcessamentoBatch(null, idUnidadeIniciada, false); } catch (Exception ex) { getControladorBatch().encerrarUnidadeProcessamentoBatch(ex, idUnidadeIniciada, true); ex.printStackTrace(); sessionContext.setRollbackOnly(); throw new EJBException(ex); } } /** * Desfazer Parcelamentos D�bito * * Este caso de uso permite desfazer os parcelamentos de d�bitos * * @author Fernanda Paiva,Vivianne Sousa, Raphael Rossiter * @created 02/05/2006,19/10/2006, 30/09/2008 * * @throws ControladorException * Controlador Exception */ public Integer desfazerParcelamentosDebito(String motivo, Integer codigo, Usuario usuario) throws ControladorException { try { Integer retorno = 0; FiltroParcelamentoItem filtroParcelamentoItem = new FiltroParcelamentoItem(); filtroParcelamentoItem.adicionarParametro(new ParametroSimples(FiltroParcelamentoItem.PARCELAMENTO, codigo)); filtroParcelamentoItem.adicionarCaminhoParaCarregamentoEntidade("contaGeral.conta"); filtroParcelamentoItem.adicionarCaminhoParaCarregamentoEntidade("parcelamento.imovel"); filtroParcelamentoItem.adicionarCaminhoParaCarregamentoEntidade("guiaPagamentoGeral.guiaPagamento"); filtroParcelamentoItem.adicionarCaminhoParaCarregamentoEntidade("debitoACobrarGeral.debitoACobrar"); filtroParcelamentoItem.adicionarCaminhoParaCarregamentoEntidade("creditoARealizarGeral.creditoARealizar"); // Procura ParcelamentoItem na base Collection colecaoParcelamentoItem = getControladorUtil().pesquisar(filtroParcelamentoItem, ParcelamentoItem.class.getName()); Iterator parcelamentoItemIterator = colecaoParcelamentoItem.iterator(); ParcelamentoItem parcelamentoItem = null; Integer codigoImovel = null; while (parcelamentoItemIterator.hasNext()) { parcelamentoItem = (ParcelamentoItem) parcelamentoItemIterator.next(); codigoImovel = parcelamentoItem.getParcelamento().getImovel().getId(); if (parcelamentoItem.getContaGeral() != null && parcelamentoItem.getContaGeral().getConta() != null) { int situacaoAtual = 0; if (parcelamentoItem.getContaGeral().getConta() != null) { Conta conta = parcelamentoItem.getContaGeral().getConta(); if (conta.getDebitoCreditoSituacaoAnterior() == null) { situacaoAtual = DebitoCreditoSituacao.NORMAL.intValue(); } else { situacaoAtual = conta.getDebitoCreditoSituacaoAnterior().getId(); } int anoMesReferenciaContabil = 0; Collection colecaoContaCanceladaRetificacao = repositorioCobranca.pesquisarContaCanceladaRetificacao(codigoImovel, conta.getReferencia()); // M�s/ano de refer�ncia cont�bil // Caso exista conta com situa��o atual correspondete a // cancelada por retifica��o // CNTA_AMREFERENCIACONTABIL = CNTA_AMREFERENCIACONTABIL // da // conta cancelada por retifica��o if (colecaoContaCanceladaRetificacao != null && !colecaoContaCanceladaRetificacao.isEmpty()) { anoMesReferenciaContabil = ((Integer) colecaoContaCanceladaRetificacao.iterator().next()).intValue(); } else { // caso contr�rio // CNTA_AMREFERENCIACONTABIL = // CNTA_AMREFERENCIACONTA da // conta parcelada anoMesReferenciaContabil = conta.getReferencia(); } this.atualizarSituacaoConta(conta.getId().toString(), situacaoAtual, anoMesReferenciaContabil); // CRC2725 - alterado por Vivianne Sousa - 24/09/2009 // analista:F�tima // 1.1.4. Verificar se h� rela��o do desfazer // parcelamento com itens de negativa��o: getControladorSpcSerasa().verificarRelacaoDoParcelamentoComItensNegativacao(null, conta, null); // Alterado por Francisco - 27/05/08, por conta do // Resumo de A��es de cobran�a // Analista: Ana Breda // Atualizar item de documento de cobranca da conta, se // houver, para pendente repositorioCobranca.atualizarSituacaoCobrancaDocumentoItem(CobrancaDebitoSituacao.PENDENTE, new Date(), conta.getId(), null, null); } } int situacaoAtualGuia = 0; if (parcelamentoItem.getGuiaPagamentoGeral() != null && parcelamentoItem.getGuiaPagamentoGeral().getGuiaPagamento() != null) { GuiaPagamento guiaPagamento = parcelamentoItem.getGuiaPagamentoGeral().getGuiaPagamento(); if (guiaPagamento.getDebitoCreditoSituacaoAnterior() != null) { situacaoAtualGuia = guiaPagamento.getDebitoCreditoSituacaoAnterior().getId(); } else { situacaoAtualGuia = DebitoCreditoSituacao.NORMAL.intValue(); } int anoMesReferenciaContabil = Util.recuperaAnoMesDaData(guiaPagamento.getDataEmissao()); this.atualizarSituacaoGuiaPagamento(guiaPagamento.getId().toString(), situacaoAtualGuia, anoMesReferenciaContabil); // CRC2725 - alterado por Vivianne Sousa - 24/09/2009 // analista:F�tima // 1.4.4. Verificar se h� rela��o do desfazer parcelamento // com itens de negativa��o: getControladorSpcSerasa().verificarRelacaoDoParcelamentoComItensNegativacao(null, null, guiaPagamento); // Alterado por Francisco - 27/05/08, por conta do Resumo de // A��es de cobran�a // Analista: Ana Breda // Atualizar item de documento de cobranca da conta, se // houver, para pendente repositorioCobranca.atualizarSituacaoCobrancaDocumentoItem(CobrancaDebitoSituacao.PENDENTE, new Date(), null, guiaPagamento.getId(), null); } int situacaoAtualDebito = 0; if (parcelamentoItem.getDebitoACobrarGeral() != null && parcelamentoItem.getDebitoACobrarGeral().getDebitoACobrar() != null) { DebitoACobrar debitoACobrar = parcelamentoItem.getDebitoACobrarGeral().getDebitoACobrar(); if (debitoACobrar.getDebitoCreditoSituacaoAnterior() == null) { situacaoAtualDebito = DebitoCreditoSituacao.NORMAL.intValue(); } else { situacaoAtualDebito = debitoACobrar.getDebitoCreditoSituacaoAnterior().getId(); } int anoMesReferenciaContabil = Util.recuperaAnoMesDaData(debitoACobrar.getGeracaoDebito()); this.atualizarSituacaoDebitoACobrar(debitoACobrar.getId().toString(), situacaoAtualDebito, anoMesReferenciaContabil); // Alterado por Francisco - 27/05/08, por conta do Resumo de // A��es de cobran�a // Analista: Ana Breda // Atualizar item de documento de cobranca da conta, se // houver, para pendente repositorioCobranca.atualizarSituacaoCobrancaDocumentoItem(CobrancaDebitoSituacao.PENDENTE, new Date(), null, null, debitoACobrar.getId()); } int situacaoAtualCredito = 0; if (parcelamentoItem.getCreditoARealizarGeral() != null && parcelamentoItem.getCreditoARealizarGeral().getCreditoARealizar() != null) { CreditoARealizar creditoARealizar = parcelamentoItem.getCreditoARealizarGeral().getCreditoARealizar(); if (creditoARealizar.getDebitoCreditoSituacaoAnterior() == null) { situacaoAtualCredito = DebitoCreditoSituacao.NORMAL.intValue(); } else { situacaoAtualCredito = creditoARealizar.getDebitoCreditoSituacaoAnterior().getId(); } int anoMesReferenciaContabil = Util.recuperaAnoMesDaData(creditoARealizar.getGeracaoCredito()); this.atualizarSituacaoCreditoARealizar(creditoARealizar.getId().toString(), situacaoAtualCredito, anoMesReferenciaContabil); } } repositorioCobranca.atualizarDocumentoDeCobrancaHistorico(codigoImovel, codigo); if (codigoImovel != null) { FiltroConta filtroConta = new FiltroConta(); filtroConta.adicionarCaminhoParaCarregamentoEntidade("debitoCreditoSituacaoAtual"); filtroConta.adicionarParametro(new ParametroSimples(FiltroConta.IMOVEL_ID, codigoImovel)); filtroConta.adicionarParametro(new ParametroSimples(FiltroConta.CONTA_MOTIVO_REVISAO_ID, ContaMotivoRevisao.REVISAO_POR_PAGAMENTO_COMPROVADO, FiltroParametro.CONECTOR_OR, 2)); filtroConta.adicionarParametro(new ParametroSimples(FiltroConta.CONTA_MOTIVO_REVISAO_ID, ContaMotivoRevisao.REVISAO_POR_ANTIGUIDADE)); Collection<Conta> colecaoConta = getControladorUtil().pesquisar(filtroConta, Conta.class.getName()); Collection<Conta> colecaoContasRetirarRevisao = new ArrayList(); if (colecaoConta != null && !colecaoConta.isEmpty()) { Iterator iteratorConta = colecaoConta.iterator(); while (iteratorConta.hasNext()) { Conta conta = null; conta = (Conta) iteratorConta.next(); if (((conta.getDebitoCreditoSituacaoAtual().getId().intValue() == DebitoCreditoSituacao.NORMAL.intValue()) || (conta.getDebitoCreditoSituacaoAtual().getId().intValue() == DebitoCreditoSituacao.RETIFICADA.intValue()) || (conta .getDebitoCreditoSituacaoAtual().getId().intValue() == DebitoCreditoSituacao.INCLUIDA.intValue())) && conta.getDataRevisao() != null) { colecaoContasRetirarRevisao.add(conta); } } // 1.2 /* * chama o caso de uso [UC0149] para retirar contas de * revisao */ getControladorFaturamento().retirarRevisaoConta(colecaoContasRetirarRevisao, null, usuario, false, null); } // recupera todos os parcelamentos no mes atual e // que esteja com a situacao normal Collection debitoACobrarColecao = repositorioCobranca.pesquisarDebitoACobrarDoParcelamento(codigoImovel, new Integer(codigo)); /* remove o parcelamento das respectivas tabelas */ Iterator debitoACobrarIterator = debitoACobrarColecao.iterator(); while (debitoACobrarIterator.hasNext()) { DebitoACobrar debitoACobrar = (DebitoACobrar) debitoACobrarIterator.next(); Integer idDebito = debitoACobrar.getId(); if (idDebito != null) { this.removerDebitoACobrarCategoriaDoParcelamento(codigo, idDebito); } } // 1.6 Exclui os d�bitos a cobrar referente ao Parcelamento this.removerDebitoACobrarDoParcelamento(codigoImovel, new Integer(codigo)); // 1.7 Exclui os cr�ditos a cobrar referente ao Parcelamento this.removerCreditoARealizarDoParcelamento(codigoImovel, new Integer(codigo)); Collection<Conta> colecaoContasEP = new ArrayList<Conta>(); Collection<Conta> colecaoContasEPRetirarRevisao = new ArrayList<Conta>(); if (codigoImovel != null) { filtroConta.limparListaParametros(); filtroConta.adicionarParametro(new ParametroSimples(FiltroConta.IMOVEL_ID, codigoImovel)); filtroConta.adicionarParametro(new ParametroSimples(FiltroConta.PARCELAMENTO_ID, codigo)); Collection colecaoConta2 = getControladorUtil().pesquisar(filtroConta, Conta.class.getName()); if (colecaoConta2 != null && !colecaoConta2.isEmpty()) { Iterator iteratorConta = colecaoConta2.iterator(); while (iteratorConta.hasNext()) { Conta conta = null; conta = (Conta) iteratorConta.next(); if ((conta.getDebitoCreditoSituacaoAtual().getId().intValue() == DebitoCreditoSituacao.NORMAL.intValue()) || (conta.getDebitoCreditoSituacaoAtual().getId().intValue() == DebitoCreditoSituacao.RETIFICADA .intValue()) || (conta.getDebitoCreditoSituacaoAtual().getId().intValue() == DebitoCreditoSituacao.INCLUIDA .intValue())) { colecaoContasEP.add(conta); if (conta.getDataRevisao() != null) { colecaoContasEPRetirarRevisao.add(conta); } } } } } // 1.8.1 Caso a entrada do parcelamento tenha sido atrav�s de // contas // marcadas como EP, // ou seja,existem contas do �movel associados ao parcelamento(a // partir da tabela // CONTA com IMOV_ID = IMOV_ID da tabela IMOVEL) e situa��o // atual // DCST_IDATUAL com o // valor correspondente a normal ,retificada ou conclu�da e // PARC_ID=PARC_ID do parcelamento if (colecaoContasEP != null && !colecaoContasEP.isEmpty()) { // 1.8.1.1 Retirar as contas de revis�o getControladorFaturamento().retirarRevisaoConta(colecaoContasEPRetirarRevisao, null, usuario, false, null); // 1.8.1.3 desassociar a conta do parcelamento // atualiza PARC_ID da tabela CONTA com valor nulo Iterator iteratorContaEP = colecaoContasEP.iterator(); while (iteratorContaEP.hasNext()) { Conta conta = null; conta = (Conta) iteratorContaEP.next(); conta.setParcelamento(null); // 1.8.1.2 Para cada conta alterar o vencimento para // vencimento // original // passando o vencimento original da conta // (CNTA_DTVENCIMENTOORIGINAL) getControladorFaturamento().alterarVencimentoConta(Collections.singletonList(conta), null, conta.getDataVencimentoOriginal(), null); repositorioCobranca.desassociarContaParcelamento(conta.getId()); } } else { // 1.8.2 Exclui a guia de pagamento correspondente a entrada // do // Parcelamento this.removerGuiaPagamentoDoParcelamento(codigoImovel, new Integer(codigo)); } Imovel imovel = null; imovel = getControladorImovel().consultarParcelamentosDebitosImovel(codigoImovel); if (imovel != null) { Integer numeroParcelamento = 0; if (imovel.getNumeroParcelamento() != null && imovel.getNumeroParcelamento() > 0) { numeroParcelamento = imovel.getNumeroParcelamento() - 1; } Integer numeroReparcelamentoConsecutivo = 0; Integer numeroReparcelamento = 0; if (imovel.getNumeroReparcelamentoConsecutivos() != null && imovel.getNumeroReparcelamentoConsecutivos() > 0) { numeroReparcelamentoConsecutivo = imovel.getNumeroReparcelamentoConsecutivos() - 1; numeroReparcelamento = imovel.getNumeroReparcelamento() - 1; } // 1.9 Atualiza a tabela IMOVEL repositorioImovel.atualizarDadosImovel(codigoImovel, numeroParcelamento, numeroReparcelamentoConsecutivo, numeroReparcelamento); } // 1.10 atualiza a tabela parcelamento this.atualizarParcelamento(new Integer(codigo), ParcelamentoSituacao.DESFEITO, motivo, usuario.getId()); this.atualizarDadosParcelamentoParaImovel(codigoImovel); } return retorno; } catch (ErroRepositorioException e) { sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", e); } catch (ControladorException e) { sessionContext.setRollbackOnly(); throw e; } catch (Exception e) { sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", e); } } /** * [UC0316] Inserir Crit�rio de Cobran�a * * Este caso de uso inseri a cobran�a crit�rio e as linhas da cobran�a * crit�rio * * @author S�vio luiz * @param usuarioLogado * @created 04/05/2006 * * @throws ControladorException * Controlador Exception */ public Integer inserirCobrancaCriterio(CobrancaCriterio cobrancaCriterio, Usuario usuarioLogado) throws ControladorException { Integer idCobrancaCriterio = null; try { // ------------ REGISTRAR TRANSA��O ---------------------------- // RegistradorOperacao registradorOperacaoCriterioCobranca = new // RegistradorOperacao( // Operacao.OPERACAO_CRITERIO_COBRANCA_INSERIR, // new UsuarioAcaoUsuarioHelper(usuarioLogado, // UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO)); // // registradorOperacaoCriterioCobranca // .registrarOperacao(cobrancaCriterio); // ------------ REGISTRAR TRANSA��O ---------------------------- Collection colecaoCobrancaCriterioLinha = cobrancaCriterio.getCobrancaCriterioLinhas(); Collection colecaoCobrancaCriterioSituacaoCobranca = cobrancaCriterio.getCriteriosSituacaoCobranca(); Collection colecaoCobrancaCriterioSituacaoLigacaoAgua = cobrancaCriterio.getCriteriosSituacaoLigacaoAgua(); Collection colecaoCobrancaCriterioSituacaoLigacaoEsgoto = cobrancaCriterio.getCriteriosSituacaoLigacaoEsgoto(); cobrancaCriterio.setCobrancaCriterioLinhas(null); cobrancaCriterio.setCriteriosSituacaoCobranca(null); cobrancaCriterio.setCriteriosSituacaoLigacaoAgua(null); cobrancaCriterio.setCriteriosSituacaoLigacaoEsgoto(null); idCobrancaCriterio = (Integer) repositorioUtil.inserir(cobrancaCriterio); cobrancaCriterio.setId(idCobrancaCriterio); // inserindo as situacoes de cobranca if (colecaoCobrancaCriterioSituacaoCobranca != null) { Iterator iterSitCob = colecaoCobrancaCriterioSituacaoCobranca.iterator(); while (iterSitCob.hasNext()) { CriterioSituacaoCobranca critSitCob = (CriterioSituacaoCobranca) iterSitCob.next(); critSitCob.getComp_id().setCobrancaCriterio(cobrancaCriterio); critSitCob.setUltimaAlteracao(new Date()); repositorioUtil.inserir(critSitCob); } } // inserindo as situacoes de ligacao de agua para o criterio if (colecaoCobrancaCriterioSituacaoLigacaoAgua != null) { Iterator iterSitLigAgua = colecaoCobrancaCriterioSituacaoLigacaoAgua.iterator(); while (iterSitLigAgua.hasNext()) { CriterioSituacaoLigacaoAgua critSitLigAgua = (CriterioSituacaoLigacaoAgua) iterSitLigAgua.next(); critSitLigAgua.getComp_id().setCobrancaCriterio(cobrancaCriterio); critSitLigAgua.setUltimaAlteracao(new Date()); repositorioUtil.inserir(critSitLigAgua); } } // inserindo as Situacaoes de ligacao de esgoto para o criterio if (colecaoCobrancaCriterioSituacaoLigacaoEsgoto != null) { Iterator iterSitLigEsgoto = colecaoCobrancaCriterioSituacaoLigacaoEsgoto.iterator(); while (iterSitLigEsgoto.hasNext()) { CriterioSituacaoLigacaoEsgoto critSitLigEsgoto = (CriterioSituacaoLigacaoEsgoto) iterSitLigEsgoto.next(); critSitLigEsgoto.getComp_id().setCobrancaCriterio(cobrancaCriterio); critSitLigEsgoto.setUltimaAlteracao(new Date()); repositorioUtil.inserir(critSitLigEsgoto); } } // inserindo as Situacaoes de ligacao de esgoto para o criterio if (colecaoCobrancaCriterioLinha != null) { Iterator cobrancaCriterioLinhaIterator = colecaoCobrancaCriterioLinha.iterator(); while (cobrancaCriterioLinhaIterator.hasNext()) { // inseri cada cobran�a criterio linha CobrancaCriterioLinha cobrancaCriterioLinha = (CobrancaCriterioLinha) cobrancaCriterioLinhaIterator.next(); cobrancaCriterioLinha.setCobrancaCriterio(cobrancaCriterio); // caso n�o tenha informado o valor minimo d�bito if (cobrancaCriterioLinha.getValorMinimoDebito() == null) { cobrancaCriterioLinha.setValorMinimoDebito(new BigDecimal("0.00")); } // caso n�o tenha informado o valor m�ximo d�bito if (cobrancaCriterioLinha.getValorMaximoDebito() == null) { cobrancaCriterioLinha.setValorMaximoDebito(new BigDecimal("99999999999.99")); } // caso n�o tenha informado a quantidade minima de contas if (cobrancaCriterioLinha.getQuantidadeMinimaContas() == null) { cobrancaCriterioLinha.setQuantidadeMinimaContas(new Short("0")); } // caso n�o tenha informado a quantidade m�xima de contas if (cobrancaCriterioLinha.getQuantidadeMaximaContas() == null) { cobrancaCriterioLinha.setQuantidadeMaximaContas(new Short("9999")); } // caso n�o tenha informado o valor minimo do d�bito para // cliente // com d�bito autom�tico if (cobrancaCriterioLinha.getValorMinimoDebitoDebitoAutomatico() == null) { cobrancaCriterioLinha.setValorMinimoDebitoDebitoAutomatico(new BigDecimal("0.00")); } // caso n�o tenha informado a quantidade minima de contas // para // cliente com // d�bito autom�tico if (cobrancaCriterioLinha.getQuantidadeMinimaContasDebitoAutomatico() == null) { cobrancaCriterioLinha.setQuantidadeMinimaContasDebitoAutomatico(new Short("0")); } // caso n�o tenha informado valor m�nimo da conta do m�s if (cobrancaCriterioLinha.getValorMinimoContaMes() == null) { cobrancaCriterioLinha.setValorMinimoContaMes(new BigDecimal("0.00")); } repositorioUtil.inserir(cobrancaCriterioLinha); } } } catch (ErroRepositorioException e) { sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", e); } return idCobrancaCriterio; } /** * [UC0317] Manter Crit�rio de Cobran�a * * Este caso de uso atualiza a cobran�a crit�rio e as linhas da cobran�a * crit�rio * * [SB0001] Atualizar Crit�rio de Cobran�a * * @author S�vio luiz * @param usuarioLogado * @created 11/05/2006 * * @throws ControladorException * Controlador Exception */ public void atualizarCobrancaCriterio(CobrancaCriterio cobrancaCriterio, Collection colecaoCobrancaCriterioLinha, Collection colecaoCobrancaCriterioLinhaRemovidas, Collection colecaoCriterioSituacaoCobrancaNovos, Collection colecaoCriterioSituacaoLigacaoAguaNovos, Collection colecaoCriterioSituacaoLigacaoEsgotoNovos, Usuario usuarioLogado) throws ControladorException { try { CobrancaCriterio cobrancaCriterioNaBase = null; FiltroCobrancaCriterio filtroCobrancaCriterio = new FiltroCobrancaCriterio(); filtroCobrancaCriterio.adicionarParametro(new ParametroSimples(FiltroCobrancaCriterio.ID, cobrancaCriterio.getId())); Collection<CobrancaCriterio> collectionCobrancaCriterio = repositorioUtil.pesquisar(filtroCobrancaCriterio, CobrancaCriterio.class.getName()); // ------------ REGISTRAR TRANSA��O ---------------------------- RegistradorOperacao registradorOperacaoCriterioCobranca = new RegistradorOperacao( Operacao.OPERACAO_CRITERIO_COBRANCA_ATUALIZAR, new UsuarioAcaoUsuarioHelper(usuarioLogado, UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO)); registradorOperacaoCriterioCobranca.registrarOperacao(cobrancaCriterio); // ------------ REGISTRAR TRANSA��O ---------------------------- // Caso a pesquisa tenha retornado o crit�rio de cobran�a if (collectionCobrancaCriterio != null && !collectionCobrancaCriterio.isEmpty()) { // Recupera da cole��o a rota que vai ser atualizada cobrancaCriterioNaBase = (CobrancaCriterio) Util.retonarObjetoDeColecao(collectionCobrancaCriterio); } // Verificar se o logradouro j� foi atualizado por outro usu�rio // durante // esta atualiza��o if (cobrancaCriterioNaBase == null || cobrancaCriterioNaBase.getUltimaAlteracao().after(cobrancaCriterio.getUltimaAlteracao())) { sessionContext.setRollbackOnly(); throw new ControladorException("atencao.atualizacao.timestamp"); } cobrancaCriterio.setUltimaAlteracao(new Date()); repositorioUtil.atualizar(cobrancaCriterio); Iterator cobrancaCriterioLinhaIterator = colecaoCobrancaCriterioLinha.iterator(); while (cobrancaCriterioLinhaIterator.hasNext()) { // inseri cada cobran�a criterio linha CobrancaCriterioLinha cobrancaCriterioLinha = (CobrancaCriterioLinha) cobrancaCriterioLinhaIterator.next(); cobrancaCriterioLinha.setCobrancaCriterio(cobrancaCriterio); // caso n�o tenha informado o valor minimo d�bito if (cobrancaCriterioLinha.getValorMinimoDebito() == null) { cobrancaCriterioLinha.setValorMinimoDebito(new BigDecimal("0.00")); } // caso n�o tenha informado o valor m�ximo d�bito if (cobrancaCriterioLinha.getValorMaximoDebito() == null) { cobrancaCriterioLinha.setValorMaximoDebito(new BigDecimal("99999999999.99")); } // caso n�o tenha informado a quantidade minima de contas if (cobrancaCriterioLinha.getQuantidadeMinimaContas() == null) { cobrancaCriterioLinha.setQuantidadeMinimaContas(new Short("0")); } // caso n�o tenha informado a quantidade m�xima de contas if (cobrancaCriterioLinha.getQuantidadeMaximaContas() == null) { cobrancaCriterioLinha.setQuantidadeMaximaContas(new Short("9999")); } // caso n�o tenha informado o valor minimo do d�bito para // cliente // com d�bito autom�tico if (cobrancaCriterioLinha.getValorMinimoDebitoDebitoAutomatico() == null) { cobrancaCriterioLinha.setValorMinimoDebitoDebitoAutomatico(new BigDecimal("0.00")); } // caso n�o tenha informado a quantidade minima de contas para // cliente com // d�bito autom�tico if (cobrancaCriterioLinha.getQuantidadeMinimaContasDebitoAutomatico() == null) { cobrancaCriterioLinha.setQuantidadeMinimaContasDebitoAutomatico(new Short("0")); } // caso n�o tenha informado valor m�nimo da conta do m�s if (cobrancaCriterioLinha.getValorMinimoContaMes() == null) { cobrancaCriterioLinha.setValorMinimoContaMes(new BigDecimal("0.00")); } cobrancaCriterioLinha.setUltimaAlteracao(new Date()); repositorioUtil.inserirOuAtualizar(cobrancaCriterioLinha); } if (colecaoCobrancaCriterioLinhaRemovidas != null && !colecaoCobrancaCriterioLinhaRemovidas.isEmpty()) { Iterator cobrancaCriterioLinhaRemovidasIterator = colecaoCobrancaCriterioLinhaRemovidas.iterator(); while (cobrancaCriterioLinhaRemovidasIterator.hasNext()) { // inseri cada cobran�a criterio linha CobrancaCriterioLinha cobrancaCriterioLinhaRemovida = (CobrancaCriterioLinha) cobrancaCriterioLinhaRemovidasIterator .next(); repositorioUtil.remover(cobrancaCriterioLinhaRemovida); } } // removendo criterios de situacao de cobranca antigos if (cobrancaCriterio.getCriteriosSituacaoCobranca() != null && !cobrancaCriterio.getCriteriosSituacaoCobranca().isEmpty()) { for (Iterator iter = cobrancaCriterio.getCriteriosSituacaoCobranca().iterator(); iter.hasNext();) { CriterioSituacaoCobranca critSitCob = (CriterioSituacaoCobranca) iter.next(); repositorioUtil.remover(critSitCob); } } // removendo criterios de situacao de ligacao de agua antigos if (cobrancaCriterio.getCriteriosSituacaoLigacaoAgua() != null && !cobrancaCriterio.getCriteriosSituacaoLigacaoAgua().isEmpty()) { for (Iterator iter = cobrancaCriterio.getCriteriosSituacaoLigacaoAgua().iterator(); iter.hasNext();) { CriterioSituacaoLigacaoAgua critSitLigacaoAgua = (CriterioSituacaoLigacaoAgua) iter.next(); repositorioUtil.remover(critSitLigacaoAgua); } } // removendo criterios de situacao de ligacao de esgoto antigos if (cobrancaCriterio.getCriteriosSituacaoLigacaoEsgoto() != null && !cobrancaCriterio.getCriteriosSituacaoLigacaoEsgoto().isEmpty()) { for (Iterator iter = cobrancaCriterio.getCriteriosSituacaoLigacaoEsgoto().iterator(); iter.hasNext();) { CriterioSituacaoLigacaoEsgoto critSitLigacaoEsgoto = (CriterioSituacaoLigacaoEsgoto) iter.next(); repositorioUtil.remover(critSitLigacaoEsgoto); } } // Inserindo os novos criterios de situacao de cobranca if (colecaoCriterioSituacaoCobrancaNovos != null && !colecaoCriterioSituacaoCobrancaNovos.isEmpty()) { for (Iterator iter = colecaoCriterioSituacaoCobrancaNovos.iterator(); iter.hasNext();) { CriterioSituacaoCobranca critSitCob = (CriterioSituacaoCobranca) iter.next(); critSitCob.setUltimaAlteracao(new Date()); repositorioUtil.inserir(critSitCob); } } // Inserindo os novos criterios de situacao de ligacao de agua if (colecaoCriterioSituacaoLigacaoAguaNovos != null && !colecaoCriterioSituacaoLigacaoAguaNovos.isEmpty()) { for (Iterator iter = colecaoCriterioSituacaoLigacaoAguaNovos.iterator(); iter.hasNext();) { CriterioSituacaoLigacaoAgua critSitLigacaoAgua = (CriterioSituacaoLigacaoAgua) iter.next(); critSitLigacaoAgua.setUltimaAlteracao(new Date()); repositorioUtil.inserir(critSitLigacaoAgua); } } // Inserindo os novos criterios de situacao de ligacao de esgoto if (colecaoCriterioSituacaoLigacaoEsgotoNovos != null && !colecaoCriterioSituacaoLigacaoEsgotoNovos.isEmpty()) { for (Iterator iter = colecaoCriterioSituacaoLigacaoEsgotoNovos.iterator(); iter.hasNext();) { CriterioSituacaoLigacaoEsgoto critSitLigacaoEsgoto = (CriterioSituacaoLigacaoEsgoto) iter.next(); critSitLigacaoEsgoto.setUltimaAlteracao(new Date()); repositorioUtil.inserir(critSitLigacaoEsgoto); } } } catch (ErroRepositorioException e) { sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", e); } } /** * [UC0317] Manter Crit�rio de Cobran�a * * Este caso de uso remove a cobran�a crit�rio e as linhas da cobran�a * crit�rio * * [SB0002] Excluir Crit�rio de Cobran�a * * @author S�vio luiz * @param usuarioLogado * @created 11/05/2006 * * @throws ControladorException * Controlador Exception */ public void removerCobrancaCriterio(String[] idsCobrancaCriterio, Usuario usuarioLogado) throws ControladorException { try { // remove primeiro as linhas do crit�rio cobran�a // ------------ REGISTRAR TRANSA��O ---------------- Operacao operacao = new Operacao(); operacao.setId(Operacao.OPERACAO_CRITERIO_COBRANCA_REMOVER); OperacaoEfetuada operacaoEfetuada = new OperacaoEfetuada(); operacaoEfetuada.setOperacao(operacao); // ------------ REGISTRAR TRANSA��O ---------------- repositorioCobranca.removerCobrancaCriterioLinha(idsCobrancaCriterio); // ------------ REGISTRAR TRANSA��O ---------------- UsuarioAcaoUsuarioHelper usuarioAcaoUsuarioHelper = new UsuarioAcaoUsuarioHelper(usuarioLogado, UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO); Collection<UsuarioAcaoUsuarioHelper> colecaoUsuarios = new ArrayList(); colecaoUsuarios.add(usuarioAcaoUsuarioHelper); // ------------ REGISTRAR TRANSA��O ---------------- // remove os crit�rios cobran�a getControladorUtil().remover(idsCobrancaCriterio, CobrancaCriterio.class.getName(), operacaoEfetuada, colecaoUsuarios); } catch (ErroRepositorioException e) { sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", e); } } /** * [UC0313] Manter Cornograma de Cobran�a * * Testa se a atividade cronograma � para ser inserido ou atualizado */ public CobrancaCronogramaHelper testeInserirAtualizarAtividadeCronograma(CobrancaCronogramaHelper cobrancaCronogramaHelper) { try { Iterator iteratorAtividadeCronograma = cobrancaCronogramaHelper.getCobrancasAtividadesParaInsercao().iterator(); FiltroCobrancaAcaoAtividadeCronograma filtroCobrancaAcaoAtividadeCronograma = new FiltroCobrancaAcaoAtividadeCronograma(); filtroCobrancaAcaoAtividadeCronograma.adicionarParametro(new ParametroSimples( FiltroCobrancaAcaoAtividadeCronograma.ID_COBRANCA_ACAO_CRONOGRAMA, cobrancaCronogramaHelper.getCobrancaAcaoCronograma() .getId())); // filtroCobrancaAcaoAtividadeCronograma.adicionarCaminhoParaCarregamentoEntidade("cobrancaAtividade"); Collection colecaoAtividadeCrongramaBase = getControladorUtil().pesquisar(filtroCobrancaAcaoAtividadeCronograma, CobrancaAcaoAtividadeCronograma.class.getName()); Iterator iteratorBase = colecaoAtividadeCrongramaBase.iterator(); while (iteratorAtividadeCronograma.hasNext()) { CobrancaAcaoAtividadeCronograma cobrancaAcaoAtividadeCronograma = (CobrancaAcaoAtividadeCronograma) iteratorAtividadeCronograma .next(); iteratorBase = colecaoAtividadeCrongramaBase.iterator(); while (iteratorBase.hasNext()) { CobrancaAcaoAtividadeCronograma cobrancaAcaoAtividadeCronogramaBase = (CobrancaAcaoAtividadeCronograma) iteratorBase .next(); if (cobrancaAcaoAtividadeCronograma.getCobrancaAtividade().getId() .equals(cobrancaAcaoAtividadeCronogramaBase.getCobrancaAtividade().getId())) { cobrancaAcaoAtividadeCronograma.setId(cobrancaAcaoAtividadeCronogramaBase.getId()); } } } } catch (ControladorException e) { e.printStackTrace(); } return cobrancaCronogramaHelper; } /** * [UC0313] Manter Cornograma de Cobran�a * * Testa se o Acao cronograma � para ser inserido ou atualizado */ public CobrancaCronogramaHelper testeInserirAtualizarCronograma(CobrancaCronogramaHelper cobrancaCronogramaHelper) { try { if (cobrancaCronogramaHelper.getCobrancaAcaoCronograma() != null && cobrancaCronogramaHelper.getCobrancaAcaoCronograma().getId() != null) { FiltroCobrancaAcaoCronograma filtroCobrancaAcaoCronograma = new FiltroCobrancaAcaoCronograma(); filtroCobrancaAcaoCronograma.adicionarParametro(new ParametroSimples( FiltroCobrancaAcaoCronograma.ID_COBRANCA_GRUPO_CRONOGRAMA_MES, cobrancaCronogramaHelper .getCobrancaGrupoCronogramaMes().getId())); filtroCobrancaAcaoCronograma.adicionarParametro(new ParametroSimples(FiltroCobrancaAcaoCronograma.ID, cobrancaCronogramaHelper.getCobrancaAcaoCronograma().getId())); Collection colecaoCobrancaAcaoBase = getControladorUtil().pesquisar(filtroCobrancaAcaoCronograma, CobrancaAcaoCronograma.class.getName()); if (!colecaoCobrancaAcaoBase.isEmpty()) { CobrancaAcaoCronograma cobrancaAcaoCronograma = (CobrancaAcaoCronograma) colecaoCobrancaAcaoBase.iterator().next(); cobrancaCronogramaHelper.getCobrancaAcaoCronograma().setId(cobrancaAcaoCronograma.getId()); cobrancaCronogramaHelper = this.testeInserirAtualizarAtividadeCronograma(cobrancaCronogramaHelper); } } } catch (ControladorException e) { e.printStackTrace(); } return cobrancaCronogramaHelper; } /** * * Manter - Atualizar um Cornograma de Cobran�a com as A��es de Cobran�as e * suas Atividades * * [UC0313] Manter Cornograma de Cobran�a * * @author Fl�vio Cordeiro * @param usuarioLogado * @data 05/05/2006 * * @param cobrancaGrupoCronogramaMes * , cobrancaAcaoCronograma, * cobrancasAtividadesParaInsercao(Collection) */ public void atualizarCobrancaCronograma(Collection colecaoCobrancaCronogramaHelper, Collection colecaoCronogramaHelperErroAtualizacao, Usuario usuarioLogado) throws ControladorException { SistemaParametro sistemaParametro = getControladorUtil().pesquisarParametrosDoSistema(); // ------------ REGISTRAR TRANSA��O ---------------------------- RegistradorOperacao registradorOperacao = new RegistradorOperacao(Operacao.OPERACAO_ATUALIZAR_CRONOGRAMA_COBRANCA, new UsuarioAcaoUsuarioHelper(usuarioLogado, UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO)); // ------------ REGISTRAR TRANSA��O ---------------------------- Iterator iteratorHelper = colecaoCobrancaCronogramaHelper.iterator(); // -- Validar se todas as rotas do grupo informado possui um criterio // definido para cada a��o Integer idGrupoCobranca = null; Collection<Integer> idsAcoesCobranca = new ArrayList<Integer>(); for (CobrancaCronogramaHelper cobrancaCronograma : (Collection<CobrancaCronogramaHelper>) colecaoCobrancaCronogramaHelper) { idGrupoCobranca = cobrancaCronograma.getCobrancaGrupoCronogramaMes().getCobrancaGrupo().getId(); idsAcoesCobranca.add(cobrancaCronograma.getCobrancaAcaoCronograma().getCobrancaAcao().getId()); } if (idsAcoesCobranca.size() > 0) { PesquisarQtdeRotasSemCriteriosParaAcoesCobranca filtro = new PesquisarQtdeRotasSemCriteriosParaAcoesCobranca(); filtro.setIdGrupoCobranca(idGrupoCobranca); filtro.setIdsAcoesCobranca(idsAcoesCobranca); Integer qtdeRotasSemCriterios = pesquisarQtdeRotasSemCriteriosParaAcoesCobranca(filtro); if (qtdeRotasSemCriterios != null && qtdeRotasSemCriterios.intValue() > 0) { throw new ControladorException("atencao.rotas.sem.criterio.para.acao.cobranca"); } } // ------------- CobrancaCronogramaHelper cobrancaCronogramaHelper = null; CobrancaGrupoCronogramaMes cobrancaGrupoCronogramaMes = null; CobrancaAcaoCronograma cobrancaAcaoCronograma = null; Collection cobrancasAtividadesParaInsercao = null; // Collection colecaoCobrancaAcao = null; Collection colecaoAtividades = null; Map<CobrancaAcaoAtividadeHelper, Date> mapAcaoAtividadeDataPrevista = new HashMap(); Integer idCobrancaGrupoCronogramaMesRetorno = null; Integer idCobrancaAcaoCronogramaRetorno = null; CobrancaGrupoCronogramaMes cobrancaGrupoCronogramaMesRetorno = null; CobrancaAcaoCronograma cobrancaAcaoCronogramaRetorno = null; FiltroCobrancaAtividade filtroCobrancaAtividade = new FiltroCobrancaAtividade(); filtroCobrancaAtividade.adicionarParametro(new ParametroSimples(FiltroCobrancaAtividade.INDICADOR_USO, ConstantesSistema.INDICADOR_USO_ATIVO)); colecaoAtividades = getControladorUtil().pesquisar(filtroCobrancaAtividade, CobrancaAtividade.class.getName()); // ----Usado para comparar a ultima data da acao anterior com a primeira // da atual Calendar ultimaDataAcaoAnterior = Calendar.getInstance(); int inserirCronograma = 0; int comparaGrupo = 0; int mudarAcao = 0; CobrancaAcaoAtividadeCronograma cobrancaAcaoAtividadeCronogramaTeste = null; while (iteratorHelper.hasNext()) { // inserirCronograma = 0; mudarAcao = 0; cobrancaCronogramaHelper = (CobrancaCronogramaHelper) iteratorHelper.next(); cobrancaGrupoCronogramaMes = cobrancaCronogramaHelper.getCobrancaGrupoCronogramaMes(); // if (cobrancaCronogramaHelper.getCobrancaGrupoCronogramaMes() != // null) { // cobrancaGrupoCronogramaMesParaRemocao = cobrancaCronogramaHelper // .getCobrancaGrupoCronogramaMes(); // } cobrancaCronogramaHelper = this.testeInserirAtualizarCronograma(cobrancaCronogramaHelper); cobrancasAtividadesParaInsercao = cobrancaCronogramaHelper.getCobrancasAtividadesParaInsercao(); cobrancaAcaoCronograma = cobrancaCronogramaHelper.getCobrancaAcaoCronograma(); // verifica se existe rotas para o cronograma e a a��o especifica FiltroRota filtroRota = new FiltroRota(); filtroRota.adicionarParametro(new ParametroSimples(FiltroRota.COBRANCA_GRUPO_ID, cobrancaGrupoCronogramaMes.getCobrancaGrupo() .getId())); if (cobrancaAcaoCronograma.getCobrancaAcao().getId() != null && cobrancaAcaoCronograma.getCobrancaAcao().getId().equals(CobrancaAcao.CORTE_ADMINISTRATIVO) && sistemaParametro.getCodigoEmpresaFebraban() != null && sistemaParametro.getCodigoEmpresaFebraban().equals(Empresa.EMPRESA_FEBRABAN_COMPESA)) { filtroRota.adicionarParametro(new ParametroSimplesDiferenteDe(FiltroRota.EMPRESA_COBRANCA_ID, 1)); } Collection<Rota> colecaoRotas = getControladorUtil().pesquisar(filtroRota, Rota.class.getName()); if (colecaoRotas == null || colecaoRotas.isEmpty()) { sessionContext.setRollbackOnly(); throw new ControladorException("atencao.cobranca.nao.existe.rotas.grupo"); } if (comparaGrupo == 0) { comparaGrupo = 1; /** * [FS0002] Validar refer�ncia do cronograma */ FiltroCobrancaGrupo filtroCobrancaGrupo = new FiltroCobrancaGrupo(); filtroCobrancaGrupo.adicionarParametro(new ParametroSimples(FiltroCobrancaGrupo.ID, cobrancaGrupoCronogramaMes .getCobrancaGrupo().getId())); // Collection cobrancaGrupos; // cobrancaGrupos = getControladorUtil().pesquisar( // filtroCobrancaGrupo, CobrancaGrupo.class.getName()); // CobrancaGrupo cobrancaGrupo = null; /** * * MODIFICAR PARA TESTAR SE O REGISTRO J� FOI ALTERADO * * [FS0003] ----------------------------- */ FiltroCobrancaGrupoCronogramaMes filtroCobrancaGrupoCronogramaMes = new FiltroCobrancaGrupoCronogramaMes(); filtroCobrancaGrupoCronogramaMes.adicionarParametro(new ParametroSimples(FiltroCobrancaGrupoCronogramaMes.ID, cobrancaCronogramaHelper.getCobrancaGrupoCronogramaMes().getId())); Collection colecaoCobrancaGrupoCronogramaMes = getControladorUtil().pesquisar(filtroCobrancaGrupoCronogramaMes, CobrancaGrupoCronogramaMes.class.getName()); if (!colecaoCobrancaGrupoCronogramaMes.isEmpty()) { CobrancaGrupoCronogramaMes cobrancaGrupoCronogramaMesBase = (CobrancaGrupoCronogramaMes) colecaoCobrancaGrupoCronogramaMes .iterator().next(); if (cobrancaGrupoCronogramaMesBase.getUltimaAlteracao().after( cobrancaCronogramaHelper.getCobrancaGrupoCronogramaMes().getUltimaAlteracao())) { sessionContext.setRollbackOnly(); throw new ControladorException("atencao.atualizacao.timestamp"); } } } /** * [FS0004] Validar Datas Previstas */ Iterator iteratorTestaDatas = cobrancasAtividadesParaInsercao.iterator(); // int mes = 0; // int ano = 0; int mudarCronograma = 0; // boolean remover = true; // String anoMes = null; Calendar dataCobrancaTeste = Calendar.getInstance(); // Calendar dataCobrancaAnterior = null; while (iteratorTestaDatas.hasNext()) { // if (cobrancaAcaoAtividadeCronogramaAnterior == null) { cobrancaAcaoAtividadeCronogramaTeste = (CobrancaAcaoAtividadeCronograma) iteratorTestaDatas.next(); if (cobrancaAcaoAtividadeCronogramaTeste.getDataPrevista() != null && !cobrancaAcaoAtividadeCronogramaTeste.getDataPrevista().toString().equals("")) { dataCobrancaTeste.setTime(cobrancaAcaoAtividadeCronogramaTeste.getDataPrevista()); } mapAcaoAtividadeDataPrevista = validarAtividadeAcaoPredecessora(cobrancaAcaoCronograma.getCobrancaAcao(), cobrancaAcaoCronograma.getCobrancaAcao().getCobrancaAcaoPredecessora(), cobrancaAcaoAtividadeCronogramaTeste, mapAcaoAtividadeDataPrevista); /** * [FS0006] Verifica A��o Predecessora */ // if (primeiraVez == 0) { // primeiraVez = 1; // } else { // filtroCobrancaAcao = new FiltroCobrancaAcao(); // filtroCobrancaAcao // .adicionarParametro(new ParametroSimples( // FiltroCobrancaAcao.ID, // cobrancaAcaoCronograma // .getCobrancaAcao().getId())); // filtroCobrancaAcao // .adicionarParametro(new ParametroNaoNulo( // FiltroCobrancaAcao.COBRANCA_ACAO_PRECEDENTE_ID)); // colecaoCobrancaAcao = getControladorUtil().pesquisar( // filtroCobrancaAcao, // CobrancaAcao.class.getName()); /* * this.validarAcaoCobrancaCronogramaPredecessora( * colecaoCobrancaCronogramaHelper, cobrancaCronogramaHelper); */ /* * Autor: Hugo Leonardo Data:08/10/2010 Correcao da CRC_5227 * Analista: Eduardo Borges */ if (cobrancaAcaoAtividadeCronogramaTeste.getComando() == null || cobrancaAcaoAtividadeCronogramaTeste.getComando().equals("")) { if (cobrancaAcaoAtividadeCronogramaTeste.getDataPrevista() != null) { if (Util.compararData(cobrancaAcaoAtividadeCronogramaTeste.getDataPrevista(), new Date()) < 0) { sessionContext.setRollbackOnly(); throw new ControladorException("atencao.cobranca.data_prevista_mes_ano_menor_data_atual", null, cobrancaAcaoAtividadeCronogramaTeste.getCobrancaAtividade().getDescricaoCobrancaAtividade(), cobrancaAcaoCronograma.getCobrancaAcao().getDescricaoCobrancaAcao()); } } } // } else { // cobrancaAcaoAtividadeCronogramaTeste = // (CobrancaAcaoAtividadeCronograma) iteratorTestaDatas // .next(); // anoMes = null; // if (cobrancaAcaoAtividadeCronogramaTeste.getDataPrevista() != // null) { // dataCobrancaTeste = Calendar.getInstance(); // dataCobrancaTeste // .setTime(cobrancaAcaoAtividadeCronogramaTeste // .getDataPrevista()); // // ano = dataCobrancaTeste.get(Calendar.YEAR); // mes = dataCobrancaTeste.get(Calendar.MONTH) + 1; // // if (mes < 10) { // anoMes = ano + "0" + mes; // } else { // anoMes = ano + "" + mes; // } // } else { // dataCobrancaTeste = null; // } // // if (anoMes != null // && cobrancaGrupoCronogramaMes.getAnoMesReferencia() > Integer // .parseInt(anoMes)) { // sessionContext.setRollbackOnly(); // throw new ControladorException( // "atencao.cobranca.data_prevista_mes_ano_menor"); // } // // /* // * if ((cobrancaAcaoAtividadeCronogramaAnterior // * .getDataPrevista() != null) && // * cobrancaAcaoAtividadeCronogramaTeste .getDataPrevista() != // * null && cobrancaAcaoAtividadeCronogramaAnterior // * .getDataPrevista().after( // * cobrancaAcaoAtividadeCronogramaTeste .getDataPrevista())) { // * sessionContext.setRollbackOnly(); throw new // * ControladorException( // * "atencao.cobranca.data_prevista_predecessora_maior"); } // */ // // Collections.sort((List) colecaoCobrancaCronogramaHelper, // new Comparator() { // public int compare(Object a, Object b) { // String posicao1 = "" // + ((CobrancaCronogramaHelper) a) // .getCobrancaAcaoCronograma() // .getCobrancaAcao() // .getOrdemRealizacao(); // String posicao2 = "" // + ((CobrancaCronogramaHelper) b) // .getCobrancaAcaoCronograma() // .getCobrancaAcao() // .getOrdemRealizacao(); // // return posicao1.compareTo(posicao2); // } // }); // // // this.validarAcaoCobrancaCronogramaPredecessora( // // colecaoCobrancaCronogramaHelper, // // cobrancaCronogramaHelper); // } /** * Testa para saber se o objeto vai ser inserido ou atualizado. */ if (cobrancaCronogramaHelper.getCobrancaGrupoCronogramaMes() == null && cobrancaCronogramaHelper.getCobrancaGrupoCronogramaMes().getId() == null) { if (mudarCronograma == 0) { if (inserirCronograma == 0) { // ------------ REGISTRAR TRANSA��O ---------------- registradorOperacao.registrarOperacao(cobrancaGrupoCronogramaMes); // ------------ REGISTRAR TRANSA��O ---------------- inserirCronograma = 1; cobrancaGrupoCronogramaMes.setUltimaAlteracao(new Date()); idCobrancaGrupoCronogramaMesRetorno = (Integer) getControladorUtil().inserir(cobrancaGrupoCronogramaMes); cobrancaGrupoCronogramaMesRetorno = new CobrancaGrupoCronogramaMes(); cobrancaGrupoCronogramaMesRetorno.setId(idCobrancaGrupoCronogramaMesRetorno); } if (cobrancaAcaoCronograma.getCobrancaAcao().getIndicadorObrigatoriedade().intValue() == 2 && cobrancaAcaoAtividadeCronogramaTeste.getDataPrevista() == null) { } else { // ------------ REGISTRAR TRANSA��O ---------------- registradorOperacao.registrarOperacao(cobrancaAcaoCronograma); // ------------ REGISTRAR TRANSA��O ---------------- mudarCronograma = colecaoAtividades.size(); cobrancaAcaoCronograma.setUltimaAlteracao(new Date()); cobrancaAcaoCronograma.setCobrancaGrupoCronogramaMes(cobrancaGrupoCronogramaMesRetorno); idCobrancaAcaoCronogramaRetorno = (Integer) getControladorUtil().inserir(cobrancaAcaoCronograma); cobrancaAcaoCronogramaRetorno = new CobrancaAcaoCronograma(); cobrancaAcaoCronogramaRetorno.setId(idCobrancaAcaoCronogramaRetorno); } } if (cobrancaAcaoCronograma.getCobrancaAcao().getIndicadorObrigatoriedade().intValue() == 2 && cobrancaAcaoAtividadeCronogramaTeste.getDataPrevista() == null) { } else { // ------------ REGISTRAR TRANSA��O ---------------- registradorOperacao.registrarOperacao(cobrancaAcaoAtividadeCronogramaTeste); // ------------ REGISTRAR TRANSA��O ---------------- cobrancaAcaoAtividadeCronogramaTeste.setCobrancaAcaoCronograma(cobrancaAcaoCronogramaRetorno); cobrancaAcaoAtividadeCronogramaTeste.setUltimaAlteracao(new Date()); cobrancaAcaoAtividadeCronogramaTeste.setQuantidadeDocumentos(new Integer(0)); cobrancaAcaoAtividadeCronogramaTeste.setValorDocumentos(new BigDecimal(0)); cobrancaAcaoAtividadeCronogramaTeste.setQuantidadeItensCobrados(new Integer(0)); getControladorUtil().inserir(cobrancaAcaoAtividadeCronogramaTeste); // diminui um no contador de mudanca de Cronograma mudarCronograma -= 1; } } else { if (mudarAcao == 0) { mudarAcao = 1; // ------------ REGISTRAR TRANSA��O ---------------- registradorOperacao.registrarOperacao(cobrancaGrupoCronogramaMes); // ------------ REGISTRAR TRANSA��O ---------------- cobrancaGrupoCronogramaMes.setUltimaAlteracao(new Date()); cobrancaAcaoAtividadeCronogramaTeste.setUltimaAlteracao(new Date()); cobrancaAcaoCronograma.setUltimaAlteracao(new Date()); getControladorUtil().atualizar(cobrancaGrupoCronogramaMes); cobrancaAcaoCronograma.setCobrancaGrupoCronogramaMes(cobrancaGrupoCronogramaMes); // cobrancaAcaoCronograma.setId(null); if (cobrancaAcaoCronograma.getCobrancaGrupoCronogramaMes() == null || cobrancaAcaoCronograma.getCobrancaGrupoCronogramaMes().getId() == null) { cobrancaAcaoCronograma.setCobrancaGrupoCronogramaMes(cobrancaGrupoCronogramaMes); } if (cobrancaAcaoCronograma.getCobrancaAcao().getIndicadorObrigatoriedade().intValue() == 2 && cobrancaAcaoAtividadeCronogramaTeste.getDataPrevista() == null) { } else { // ------------ REGISTRAR TRANSA��O ---------------- registradorOperacao.registrarOperacao(cobrancaAcaoCronograma); // ------------ REGISTRAR TRANSA��O ---------------- if (cobrancaAcaoCronograma.getId() == null) { Integer idCobrancaAcaoCronograma = (Integer) getControladorUtil().inserir(cobrancaAcaoCronograma); cobrancaAcaoCronograma.setId(idCobrancaAcaoCronograma); } else { getControladorUtil().atualizar(cobrancaAcaoCronograma); } } } if (cobrancaAcaoCronograma.getCobrancaAcao().getIndicadorObrigatoriedade().intValue() == 2 && cobrancaAcaoAtividadeCronogramaTeste.getDataPrevista() == null) { } else { // ------------ REGISTRAR TRANSA��O ---------------- registradorOperacao.registrarOperacao(cobrancaAcaoAtividadeCronogramaTeste); // ------------ REGISTRAR TRANSA��O ---------------- cobrancaAcaoAtividadeCronogramaTeste.setCobrancaAcaoCronograma(cobrancaAcaoCronograma); cobrancaAcaoAtividadeCronogramaTeste.setUltimaAlteracao(new Date()); if (cobrancaAcaoAtividadeCronogramaTeste.getId() == null) { cobrancaAcaoAtividadeCronogramaTeste.setQuantidadeDocumentos(new Integer(0)); cobrancaAcaoAtividadeCronogramaTeste.setValorDocumentos(new BigDecimal(0)); cobrancaAcaoAtividadeCronogramaTeste.setQuantidadeItensCobrados(new Integer(0)); getControladorUtil().inserir(cobrancaAcaoAtividadeCronogramaTeste); } else { getControladorUtil().atualizar(cobrancaAcaoAtividadeCronogramaTeste); } } } if (cobrancaAcaoAtividadeCronogramaTeste.getDataPrevista() != null) { ultimaDataAcaoAnterior.setTime(cobrancaAcaoAtividadeCronogramaTeste.getDataPrevista()); } } } } /** * [UC0313] Manter Cronograma Cobran�a * * [SB0002] Excluir Cronograma de Cobran�a * * @param ids * @throws ControladorException */ public void removerCobrancaCronograma(String[] idsCobrancaCronograma, Usuario usuarioLogado) throws ControladorException { // ------------ REGISTRAR TRANSA��O---------------------------- RegistradorOperacao registradorOperacao = new RegistradorOperacao(Operacao.OPERACAO_COBRANCA_CRONOGRAMA_REMOVER, new UsuarioAcaoUsuarioHelper(usuarioLogado, UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO)); Operacao operacao = new Operacao(); operacao.setId(Operacao.OPERACAO_COBRANCA_CRONOGRAMA_REMOVER); OperacaoEfetuada operacaoEfetuada = new OperacaoEfetuada(); operacaoEfetuada.setOperacao(operacao); // ------------ REGISTRAR TRANSA��O---------------------------- for (int i = 0; i < idsCobrancaCronograma.length; i++) { String idCobrancaCronograma = idsCobrancaCronograma[i]; FiltroCobrancaGrupoCronogramaMes filtroCobrancaGrupoCronogramaMes = new FiltroCobrancaGrupoCronogramaMes(); filtroCobrancaGrupoCronogramaMes.adicionarParametro(new ParametroSimples(FiltroCobrancaGrupoCronogramaMes.ID, idCobrancaCronograma)); Collection colecaoCobrancaGrupoCronogramaMes = getControladorUtil().pesquisar(filtroCobrancaGrupoCronogramaMes, CobrancaGrupoCronogramaMes.class.getName()); if (colecaoCobrancaGrupoCronogramaMes != null && !colecaoCobrancaGrupoCronogramaMes.isEmpty()) { CobrancaGrupoCronogramaMes cobrancaCronograma = (CobrancaGrupoCronogramaMes) Util .retonarObjetoDeColecao(colecaoCobrancaGrupoCronogramaMes); // Remove os dados das tabelas dependentes removerCobrancaAcaoAtividadeCronograma(idCobrancaCronograma); removerCobrancaAcaoCronograma(idCobrancaCronograma); // ------------ REGISTRAR TRANSA��O---------------------------- cobrancaCronograma.setOperacaoEfetuada(operacaoEfetuada); cobrancaCronograma.adicionarUsuario(usuarioLogado, UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO); registradorOperacao.registrarOperacao(cobrancaCronograma); // ------------ REGISTRAR TRANSA��O---------------------------- getControladorUtil().remover(cobrancaCronograma); } } } private void removerCobrancaAcaoCronograma(String idCobrancaCronograma) throws ControladorException { FiltroCobrancaAcaoCronograma filtroCobrancaAcaoCronograma = new FiltroCobrancaAcaoCronograma(); filtroCobrancaAcaoCronograma.adicionarParametro(new ParametroSimples(FiltroCobrancaAcaoCronograma.ID_COBRANCA_GRUPO_CRONOGRAMA_MES, idCobrancaCronograma)); Collection colecaoCobrancaAcaoCronograma = getControladorUtil().pesquisar(filtroCobrancaAcaoCronograma, CobrancaAcaoCronograma.class.getName()); getControladorBatch().removerColecaoObjetoParaBatch(colecaoCobrancaAcaoCronograma); } private void removerCobrancaAcaoAtividadeCronograma(String idCobrancaCronograma) throws ControladorException { FiltroCobrancaAcaoAtividadeCronograma filtroCobrancaAcaoAtividadeCronograma = new FiltroCobrancaAcaoAtividadeCronograma(); filtroCobrancaAcaoAtividadeCronograma.adicionarParametro(new ParametroSimples( FiltroCobrancaAcaoAtividadeCronograma.COBRANCA_GRUPO_CRONOGRAMA_MES_ID, idCobrancaCronograma)); filtroCobrancaAcaoAtividadeCronograma.adicionarParametro(new ParametroNaoNulo(FiltroCobrancaAcaoAtividadeCronograma.REALIZACAO)); Collection colecaoCobrancaAcaoAtividadeCronograma = getControladorUtil().pesquisar(filtroCobrancaAcaoAtividadeCronograma, CobrancaAcaoAtividadeCronograma.class.getName()); if (colecaoCobrancaAcaoAtividadeCronograma != null && !colecaoCobrancaAcaoAtividadeCronograma.isEmpty()) { sessionContext.setRollbackOnly(); throw new ControladorException("atencao.faturamento.exclusao_nao_permitida"); } filtroCobrancaAcaoAtividadeCronograma.limparListaParametros(); filtroCobrancaAcaoAtividadeCronograma.adicionarParametro(new ParametroSimples( FiltroCobrancaAcaoAtividadeCronograma.COBRANCA_GRUPO_CRONOGRAMA_MES_ID, idCobrancaCronograma)); colecaoCobrancaAcaoAtividadeCronograma = getControladorUtil().pesquisar(filtroCobrancaAcaoAtividadeCronograma, CobrancaAcaoAtividadeCronograma.class.getName()); getControladorBatch().removerColecaoObjetoParaBatch(colecaoCobrancaAcaoAtividadeCronograma); } /** * [UC0313] Manter Cronograma Cobran�a * * [SB0002] Excluir Cronograma de Cobran�a * * @param ids * @throws ControladorException */ public void removerCobrancaCronograma(Collection<CobrancaCronogramaHelper> colecaocobrancaCronogramaHelperRemover) throws ControladorException { int i = 1; // filtro para testar se as acoes passadas para serem removidas sa // predecessoras de alguma acao FiltroCobrancaAcaoCronograma filtroCobrancaAcaoCronograma = new FiltroCobrancaAcaoCronograma(); for (CobrancaCronogramaHelper cobrancaCronogramaHelper : colecaocobrancaCronogramaHelperRemover) { if (colecaocobrancaCronogramaHelperRemover.size() == 1) { filtroCobrancaAcaoCronograma.adicionarParametro(new ParametroSimples(FiltroCobrancaAcaoCronograma.ID_COBRANCA_ACAO, cobrancaCronogramaHelper.getCobrancaAcaoCronograma().getCobrancaAcao().getId())); filtroCobrancaAcaoCronograma.adicionarParametro(new ParametroSimples( FiltroCobrancaAcaoCronograma.ID_COBRANCA_GRUPO_CRONOGRAMA_MES, cobrancaCronogramaHelper .getCobrancaGrupoCronogramaMes().getId())); } else { // caso seja a primeira vez ent�o inserino filtro, a mais, a // quantidade de vezes que ter� o conector or // (idsCobrancaAcao.length) if (i == 1) { filtroCobrancaAcaoCronograma.adicionarParametro(new ParametroSimples(FiltroCobrancaAcaoCronograma.ID_COBRANCA_ACAO, cobrancaCronogramaHelper.getCobrancaAcaoCronograma().getCobrancaAcao().getId(), FiltroParametro.CONECTOR_OR, colecaocobrancaCronogramaHelperRemover.size())); } else { // sen�o se for o ultimo la�o do for ent�o inseri no filtro // sem // o conector or if (colecaocobrancaCronogramaHelperRemover.size() == i) { filtroCobrancaAcaoCronograma.adicionarParametro(new ParametroSimples(FiltroCobrancaAcaoCronograma.ID_COBRANCA_ACAO, cobrancaCronogramaHelper.getCobrancaAcaoCronograma().getCobrancaAcao().getId())); filtroCobrancaAcaoCronograma.adicionarParametro(new ParametroSimples( FiltroCobrancaAcaoCronograma.ID_COBRANCA_GRUPO_CRONOGRAMA_MES, cobrancaCronogramaHelper .getCobrancaGrupoCronogramaMes().getId())); } else { // sen�o inseri no filtro o conector or filtroCobrancaAcaoCronograma .adicionarParametro(new ParametroSimples(FiltroCobrancaAcaoCronograma.ID_COBRANCA_ACAO, cobrancaCronogramaHelper.getCobrancaAcaoCronograma().getCobrancaAcao().getId(), FiltroParametro.CONECTOR_OR)); } } } i++; } Collection<CobrancaAcaoCronograma> colecaoCobrancaAcaoCronograma = getControladorUtil().pesquisar(filtroCobrancaAcaoCronograma, CobrancaAcaoCronograma.class.getName()); if (colecaoCobrancaAcaoCronograma == null || colecaoCobrancaAcaoCronograma.isEmpty()) { sessionContext.setRollbackOnly(); throw new ControladorException("atencao.registro_remocao_nao_existente"); } Collection colecaoCobrancaAcaoCronogramaRemover = new ArrayList(); i = 1; FiltroCobrancaAcaoAtividadeCronograma filtroCobrancaAcaoAtividadeCronograma = new FiltroCobrancaAcaoAtividadeCronograma(); for (CobrancaAcaoCronograma cobrancaAcaoCronograma : colecaoCobrancaAcaoCronograma) { if (colecaocobrancaCronogramaHelperRemover.size() == 1) { filtroCobrancaAcaoAtividadeCronograma.adicionarParametro(new ParametroSimples( FiltroCobrancaAcaoAtividadeCronograma.ID_COBRANCA_ACAO_CRONOGRAMA, cobrancaAcaoCronograma.getId())); } else { // caso seja a primeira vez ent�o inserino filtro, a mais, a // quantidade de vezes que ter� o conector or // (idsCobrancaAcao.length) if (i == 1) { filtroCobrancaAcaoAtividadeCronograma.adicionarParametro(new ParametroSimples( FiltroCobrancaAcaoAtividadeCronograma.ID_COBRANCA_ACAO_CRONOGRAMA, cobrancaAcaoCronograma.getId(), FiltroParametro.CONECTOR_OR, colecaocobrancaCronogramaHelperRemover.size())); } else { // sen�o se for o ultimo la�o do for ent�o inseri no filtro // sem // o conector or if (colecaocobrancaCronogramaHelperRemover.size() == i) { filtroCobrancaAcaoAtividadeCronograma.adicionarParametro(new ParametroSimples( FiltroCobrancaAcaoAtividadeCronograma.ID_COBRANCA_ACAO_CRONOGRAMA, cobrancaAcaoCronograma.getId())); } else { // sen�o inseri no filtro o conector or filtroCobrancaAcaoAtividadeCronograma.adicionarParametro(new ParametroSimples( FiltroCobrancaAcaoAtividadeCronograma.ID_COBRANCA_ACAO_CRONOGRAMA, cobrancaAcaoCronograma.getId(), FiltroParametro.CONECTOR_OR)); } } } i++; colecaoCobrancaAcaoCronogramaRemover.add(cobrancaAcaoCronograma); } // filtro para testar se as acoes passadas para serem removidas sa // predecessoras de alguma acao Collection colecaoCobrancaAcaoAtividadeCronograma = getControladorUtil().pesquisar(filtroCobrancaAcaoAtividadeCronograma, CobrancaAcaoAtividadeCronograma.class.getName()); FiltroCobrancaAcaoAtividadeCronograma filtroCobrancaAcaoAtividadeCronogramaTeste = filtroCobrancaAcaoAtividadeCronograma; filtroCobrancaAcaoAtividadeCronogramaTeste .adicionarParametro(new ParametroNaoNulo(FiltroCobrancaAcaoAtividadeCronograma.REALIZACAO)); // filtro para testar se as acoes passadas para serem removidas sa // predecessoras de alguma acao Collection colecaoCobrancaAcaoAtividadeCronogramaTeste = getControladorUtil().pesquisar(filtroCobrancaAcaoAtividadeCronogramaTeste, CobrancaAcaoAtividadeCronograma.class.getName()); if (!colecaoCobrancaAcaoAtividadeCronogramaTeste.isEmpty()) { sessionContext.setRollbackOnly(); throw new ControladorException("atencao.dependencias.acao_realizada"); } try { // remove as cole��es pesquisadas getControladorBatch().removerColecaoObjetoParaBatch(colecaoCobrancaAcaoAtividadeCronograma); getControladorBatch().removerColecaoObjetoParaBatch(colecaoCobrancaAcaoCronogramaRemover); } catch (ControladorException ex) { sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", ex); } // filtroCobrancaAcaoAtividadeCronograma // .adicionarParametro(new ParametroNaoNulo( // FiltroCobrancaAcaoAtividadeCronograma.REALIZACAO)); // // filtroCobrancaAcaoAtividadeCronograma // .adicionarParametro(new ParametroSimples( // FiltroCobrancaAcaoCronograma.ID_COBRANCA_ACAO, // cobrancaAcaoCronograma.getId())); // // filtroCobrancaAcaoAtividadeCronograma // .adicionarCaminhoParaCarregamentoEntidade("cobrancaAtividade"); // filtroCobrancaAcaoAtividadeCronograma // .adicionarCaminhoParaCarregamentoEntidade("cobrancaAcaoCronograma.cobrancaGrupoCronogramaMes"); // // FiltroCobrancaAcaoCronograma filtroCobrancaAcaoCronograma = new // FiltroCobrancaAcaoCronograma(); // filtroCobrancaAcaoCronograma // .adicionarCaminhoParaCarregamentoEntidade("cobrancaGrupoCronogramaMes"); // filtroCobrancaAcaoCronograma // .adicionarCaminhoParaCarregamentoEntidade("cobrancaAcao.cobrancaAcaoPredecessora"); // // // filtro para testar se as acoes passadas para serem removidas sa // // predecessoras de alguma acao // FiltroCobrancaAcaoCronograma filtroCobrancaAcaoCronogramaTeste = // filtroCobrancaAcaoCronograma; // // /** // * [FS0004] Cronograma de cobranca possui atividades ja realizadas // */ // for (int i = 0; i < ids.length; i++) { // // if ((i + 1) == ids.length) { // filtroCobrancaAcaoAtividadeCronograma // .adicionarParametro(new ParametroSimples( // FiltroCobrancaAcaoAtividadeCronograma.COBRANCA_GRUPO_CRONOGRAMA_MES, // ids[i])); // // filtroCobrancaAcaoCronograma // .adicionarParametro(new ParametroSimples( // FiltroCobrancaAcaoCronograma.ID_COBRANCA_GRUPO_CRONOGRAMA_MES, // ids[i])); // // filtroCobrancaAcaoCronogramaTeste // .adicionarParametro(new ParametroSimples( // FiltroCobrancaAcaoCronograma.COBRANCA_ACAO_PREDECESSORA, // ids[i])); // // } else { // filtroCobrancaAcaoAtividadeCronograma // .adicionarParametro(new ParametroSimples( // FiltroCobrancaAcaoAtividadeCronograma.COBRANCA_GRUPO_CRONOGRAMA_MES, // ids[i], ParametroSimples.CONECTOR_OR)); // // filtroCobrancaAcaoCronograma // .adicionarParametro(new ParametroSimples( // FiltroCobrancaAcaoCronograma.ID_COBRANCA_GRUPO_CRONOGRAMA_MES, // ids[i], ParametroSimples.CONECTOR_OR)); // // filtroCobrancaAcaoCronogramaTeste // .adicionarParametro(new ParametroSimples( // FiltroCobrancaAcaoCronograma.COBRANCA_ACAO_PREDECESSORA, // ids[i], ParametroSimples.CONECTOR_OR)); // } // } // // filtroCobrancaAcaoAtividadeCronograma // .adicionarParametro(new ParametroNaoNulo( // FiltroCobrancaAcaoAtividadeCronograma.REALIZACAO)); // // // filtro para testar se as acoes passadas para serem removidas sa // // predecessoras de alguma acao // Collection colecaoCobrancaAtividadeTeste = getControladorUtil() // .pesquisar(filtroCobrancaAcaoCronogramaTeste, // CobrancaAcaoCronograma.class.getName()); // if (!colecaoCobrancaAtividadeTeste.isEmpty()) { // sessionContext.setRollbackOnly(); // throw new ControladorException( // "atencao.dependencias.nao_remover_com_acao_sucessora"); // } // // Collection colecaoCobrancaAcaoAtividade = getControladorUtil() // .pesquisar(filtroCobrancaAcaoAtividadeCronograma, // CobrancaAcaoAtividadeCronograma.class.getName()); // // if (!colecaoCobrancaAcaoAtividade.isEmpty()) { // sessionContext.setRollbackOnly(); // throw new ControladorException("atencao.dependencias.existentes"); // } // // filtroCobrancaAcaoAtividadeCronograma.limparListaParametros(); // filtroCobrancaAcaoCronograma.limparListaParametros(); // for (int i = 0; i < ids.length; i++) { // // if ((i + 1) == ids.length) { // filtroCobrancaAcaoAtividadeCronograma // .adicionarParametro(new ParametroSimples( // FiltroCobrancaAcaoAtividadeCronograma.COBRANCA_GRUPO_CRONOGRAMA_MES, // ids[i])); // // filtroCobrancaAcaoCronograma // .adicionarParametro(new ParametroSimples( // FiltroCobrancaAcaoCronograma.ID_COBRANCA_GRUPO_CRONOGRAMA_MES, // ids[i])); // } else { // filtroCobrancaAcaoAtividadeCronograma // .adicionarParametro(new ParametroSimples( // FiltroCobrancaAcaoAtividadeCronograma.COBRANCA_GRUPO_CRONOGRAMA_MES, // ids[i], ParametroSimples.CONECTOR_OR)); // // filtroCobrancaAcaoCronograma // .adicionarParametro(new ParametroSimples( // FiltroCobrancaAcaoCronograma.ID_COBRANCA_GRUPO_CRONOGRAMA_MES, // ids[i], ParametroSimples.CONECTOR_OR)); // } // } // // colecaoCobrancaAcaoAtividade = getControladorUtil().pesquisar( // filtroCobrancaAcaoAtividadeCronograma, // CobrancaAcaoAtividadeCronograma.class.getName()); // // CobrancaAcaoAtividadeCronograma cobrancaAcaoAtividadeCronograma = // null; // Iterator iteratorRemoveAtividades = colecaoCobrancaAcaoAtividade // .iterator(); // while (iteratorRemoveAtividades.hasNext()) { // cobrancaAcaoAtividadeCronograma = (CobrancaAcaoAtividadeCronograma) // iteratorRemoveAtividades // .next(); // // if (cobrancaAcaoAtividadeCronograma.getRealizacao() != null) { // sessionContext.setRollbackOnly(); // throw new ControladorException( // "atencao.dependencias.acao_realizada"); // } // getControladorUtil().remover(cobrancaAcaoAtividadeCronograma); // } // // Collection colecaoAcaoCronograma = getControladorUtil().pesquisar( // filtroCobrancaAcaoCronograma, // CobrancaAcaoCronograma.class.getName()); // Iterator iteratorAcaoCronogramaRemover = colecaoAcaoCronograma // .iterator(); // // CobrancaAcaoCronograma cobrancaAcaoCronograma = null; // // while (iteratorAcaoCronogramaRemover.hasNext()) { // cobrancaAcaoCronograma = (CobrancaAcaoCronograma) // iteratorAcaoCronogramaRemover // .next(); // // getControladorUtil().remover(cobrancaAcaoCronograma); // } // // getControladorUtil().remover(ids, // CobrancaGrupoCronogramaMes.class.getName(), null, null); } /** * [UC0313] Manter Cronograma Cobran�a * * [SB0002] Excluir Cobran�a Cronograma * * @param ids * @throws ControladorException */ public void removerCobrancaAtividadeCronograma(String[] ids) throws ControladorException { FiltroCobrancaAcaoAtividadeCronograma filtroCobrancaAcaoAtividadeCronograma = new FiltroCobrancaAcaoAtividadeCronograma(); filtroCobrancaAcaoAtividadeCronograma.adicionarCaminhoParaCarregamentoEntidade("cobrancaAcaoCronograma"); Collection colecaoAtividadeCronograma = null; for (int i = 0; i < (ids.length + 1); i++) { filtroCobrancaAcaoAtividadeCronograma.adicionarParametro(new ParametroSimples( FiltroCobrancaAcaoAtividadeCronograma.COBRANCA_ACAO, ids[i], ParametroSimples.CONECTOR_OR)); } colecaoAtividadeCronograma = getControladorUtil().pesquisar(filtroCobrancaAcaoAtividadeCronograma, CobrancaAcaoAtividadeCronograma.class.getName()); Iterator iteratorAtividadeCronograma = colecaoAtividadeCronograma.iterator(); CobrancaAcaoAtividadeCronograma cobrancaAcaoAtividadeCronograma = null; while (iteratorAtividadeCronograma.hasNext()) { cobrancaAcaoAtividadeCronograma = (CobrancaAcaoAtividadeCronograma) iteratorAtividadeCronograma.next(); getControladorUtil().remover(cobrancaAcaoAtividadeCronograma); } getControladorUtil().remover(ids, CobrancaAcaoCronograma.class.getName(), null, null); } /** * [UC0220] Inserir Perfil de Parcelamento [UC0221] Manter Perfil de * Parcelamento * * Validar Inserir Perfil de Parcelamento e Manter Perfil de Parcelamento * * @author Vivianne Sousa * @date 10/05/2006 * * @param numeroResolucaoDiretoria * @param idImovelSituacaoTipo * @param idImovelPerfil * @param idSubcategoria * @param percentualDescontoAcrescimo * * @return */ protected void validacaoFinalPerfilParcelamento(ParcelamentoPerfil parcelamentoPerfil, Collection collectionParcelamentoQuantidadeReparcelamentoHelper, Collection collectionParcelamentoDescontoInatividade, Collection collectionParcelamentoDescontoAntiguidade, String acao, Collection collectionParcelamentoDescontoInatividadeAVista) throws ControladorException { String idResolucaoDiretoria = "" + parcelamentoPerfil.getResolucaoDiretoria().getId(); String idImovelSituacaoTipo = "" + parcelamentoPerfil.getImovelSituacaoTipo().getId(); String idImovelPerfil = null; if (parcelamentoPerfil.getImovelPerfil() != null) { idImovelPerfil = "" + parcelamentoPerfil.getImovelPerfil().getId(); } String idSubcategoria = null; if (parcelamentoPerfil.getSubcategoria() != null) { idSubcategoria = "" + parcelamentoPerfil.getSubcategoria().getId(); } if (acao.equals("INSERIR") && (idResolucaoDiretoria == null || idResolucaoDiretoria.equalsIgnoreCase(""))) { // Informe Numero da RD. throw new ControladorException("atencao.numero_rd_nao_informado"); } if (acao.equals("INSERIR") && (idImovelSituacaoTipo == null || idImovelSituacaoTipo.equals("" + ConstantesSistema.NUMERO_NAO_INFORMADO))) { // Informe Tipo da Situa��o do Im�vel throw new ControladorException("atencao.tipo_situacao_imovel_nao_informado"); } if (parcelamentoPerfil.getPercentualTarifaMinimaPrestacao() == null || parcelamentoPerfil.getPercentualTarifaMinimaPrestacao().equals("")) { // Informe Percentual da Tarifa M�nima para C�lculo do Valor M�nimo // da Presta��o throw new ControladorException("atencao.required", null, " Percentual da Tarifa M�nima para C�lculo do Valor M�nimo da Presta��o"); } if (acao.equals("INSERIR")) { // [FS0008]Verificar exist�ncia do perfil de parcelamento FiltroParcelamentoPerfil filtroParcelamentoPerfil = new FiltroParcelamentoPerfil(); filtroParcelamentoPerfil.adicionarCaminhoParaCarregamentoEntidade("resolucaoDiretoria"); filtroParcelamentoPerfil.adicionarParametro(new ParametroSimples(FiltroParcelamentoPerfil.RESOLUCAO_DIRETORIA_ID, idResolucaoDiretoria)); filtroParcelamentoPerfil.adicionarCaminhoParaCarregamentoEntidade("imovelSituacaoTipo"); filtroParcelamentoPerfil.adicionarParametro(new ParametroSimples(FiltroParcelamentoPerfil.IMOVEL_SITUACAO_TIPO_ID, idImovelSituacaoTipo)); filtroParcelamentoPerfil.adicionarCaminhoParaCarregamentoEntidade("imovelPerfil"); if (idImovelPerfil == null) { filtroParcelamentoPerfil.adicionarParametro(new ParametroNulo(FiltroParcelamentoPerfil.IMOVEL_PERFIL_ID)); } else { filtroParcelamentoPerfil .adicionarParametro(new ParametroSimples(FiltroParcelamentoPerfil.IMOVEL_PERFIL_ID, idImovelPerfil)); } filtroParcelamentoPerfil.adicionarCaminhoParaCarregamentoEntidade("subcategoria"); if (idSubcategoria == null) { filtroParcelamentoPerfil.adicionarParametro(new ParametroNulo(FiltroParcelamentoPerfil.SUBCATEGORIA_ID)); } else { filtroParcelamentoPerfil.adicionarParametro(new ParametroSimples(FiltroParcelamentoPerfil.SUBCATEGORIA_ID, idSubcategoria)); } Collection colecaoParcelamentoPerfil = null; colecaoParcelamentoPerfil = getControladorUtil().pesquisar(filtroParcelamentoPerfil, ParcelamentoPerfil.class.getName()); if (colecaoParcelamentoPerfil != null && !colecaoParcelamentoPerfil.isEmpty()) { throw new ControladorException("atencao.perfil_parcelamento_ja_existe"); } } // else { // // [FS0002]Verificar se perfil de parcelamento j� foi utilizado // FiltroParcelamento filtroParcelamento = new FiltroParcelamento(); // // filtroParcelamento.adicionarParametro(new ParametroSimples( // FiltroParcelamento.PARCELAMENTO_PERFIL_ID, // idPerfilParcelamento)); // // Collection colecaoParcelamento = getControladorUtil().pesquisar( // filtroParcelamento, Parcelamento.class.getName()); // // if (colecaoParcelamento != null && !colecaoParcelamento.isEmpty()) { // // Perfil de Parcelamento j� utilizado, n�o pode ser alterado // // nem exclu�do. // throw new ControladorException( // "atencao.perfil_parcelamento_ja_utilizado"); // } // } if (collectionParcelamentoQuantidadeReparcelamentoHelper == null || collectionParcelamentoQuantidadeReparcelamentoHelper.isEmpty()) { throw new ControladorException( // Informe Reparcelamento Consecutivo "atencao.required", null, " Reparcelamento Consecutivo"); } else { Iterator iterator = collectionParcelamentoQuantidadeReparcelamentoHelper.iterator(); while (iterator.hasNext()) { ParcelamentoQuantidadeReparcelamentoHelper parcelamentoQuantidadeReparcelamentoHelper = (ParcelamentoQuantidadeReparcelamentoHelper) iterator .next(); /* * if (parcelamentoQuantidadeReparcelamentoHelper * .getValorMinimoPrestacao() == null) { //Informe Valor M�nimo * da Presta��o throw new ControladorException( * "atencao.required", null, " Valor M�nimo da Presta��o"); } * * BigDecimal valorMinPrest = * parcelamentoQuantidadeReparcelamentoHelper * .getValorMinimoPrestacao(); if (valorMinPrest.equals(new * BigDecimal(0))){ //Valor M�nimo da Presta��o deve somente * conter n�meros decimais positivos. throw new * ControladorException( "atencao.float", null," Valor M�nimo da * Presta��o"); } */ Collection collectionParcelamentoQuantidadePrestacaoHelper = parcelamentoQuantidadeReparcelamentoHelper .getCollectionParcelamentoQuantidadePrestacaoHelper(); if (collectionParcelamentoQuantidadePrestacaoHelper == null || collectionParcelamentoQuantidadePrestacaoHelper.isEmpty()) { throw new ControladorException( // Informa��es do Parcelamento por Quantidade de // Reparcelamentos deve ser informado "atencao.campo.informado", null, "Informa��es do Parcelamento por Quantidade de Reparcelamentos"); } } } // filtro para descobrir o percentual m�ximo de desconto permitido para // financiamento /* * FiltroSistemaParametro filtroSistemaParametro = new * FiltroSistemaParametro(); Collection colecaoSistemaParametros; * * colecaoSistemaParametros = getControladorUtil().pesquisar( * filtroSistemaParametro, SistemaParametro.class.getName()); * SistemaParametro sistemaParametro = (SistemaParametro) * colecaoSistemaParametros .iterator().next(); BigDecimal * percentualMaximoAbatimentoPermitido = sistemaParametro * .getPercentualMaximoAbatimento(); */ if (collectionParcelamentoDescontoAntiguidade != null && !collectionParcelamentoDescontoAntiguidade.isEmpty()) { Iterator iteratorParcelamentoDescontoAntiguidade = collectionParcelamentoDescontoAntiguidade.iterator(); while (iteratorParcelamentoDescontoAntiguidade.hasNext()) { ParcelamentoDescontoAntiguidade parcelamentoDescontoAntiguidade = (ParcelamentoDescontoAntiguidade) iteratorParcelamentoDescontoAntiguidade .next(); if (parcelamentoDescontoAntiguidade.getPercentualDescontoSemRestabelecimento() == null) { // Percentual de Desconto Sem Restabelecimento throw new ControladorException("atencao.required", null, "Percentual de Desconto Sem Restabelecimento"); } else { // [FS0006]Verificar percentual de desconto BigDecimal percentualDescontoSemRestabelecimento = parcelamentoDescontoAntiguidade .getPercentualDescontoSemRestabelecimento(); if (percentualDescontoSemRestabelecimento.equals(new BigDecimal(0))) { // Percentual de Desconto Sem Restabelecimento deve // somente conter n�meros decimais positivos. throw new ControladorException("atencao.float", null, "Percentual de Desconto Sem Restabelecimento"); } /* * else if (percentualDescontoSemRestabelecimento * .compareTo(percentualMaximoAbatimentoPermitido) > 0) { // * Percentual de Desconto Sem Restabelecimento � // superior * ao // Percentual M�ximo de Desconto de << // * percentualMaximoAbatimento >> permitido para // * Financiamneto throw new ControladorException( * "atencao.percentual_desconto_sem_rest_superior_percentual_max" * , null, "" + percentualMaximoAbatimentoPermitido); } */ } if (parcelamentoDescontoAntiguidade.getPercentualDescontoComRestabelecimento() == null) { throw new ControladorException( // Informe Percentual de Desconto Com Restabelecimento "atencao.required", null, " Percentual de Desconto Com Restabelecimento"); } else { // [FS0006]Verificar percentual de desconto BigDecimal percentualDescontoComRestabelecimento = parcelamentoDescontoAntiguidade .getPercentualDescontoComRestabelecimento(); if (percentualDescontoComRestabelecimento.equals(new BigDecimal(0))) { // Percentual de Desconto Com Restabelecimento deve // somente conter n�meros decimais positivos. throw new ControladorException("atencao.float", null, "Percentual de Desconto Com Restabelecimento"); }/* * else if (percentualDescontoComRestabelecimento * .compareTo(percentualMaximoAbatimentoPermitido) > 0) { // * Percentual de Desconto Cem Restabelecimento � // superior * ao // Percentual M�ximo de Desconto de << // * percentualMaximoAbatimento >> permitido para // * Financiamneto throw new ControladorException( * "atencao.percentual_desconto_sem_rest_superior_percentual_max" * , null, "" + percentualMaximoAbatimentoPermitido); } */ } if (parcelamentoDescontoAntiguidade.getPercentualDescontoAtivo() == null) { // Informe Percentual de Desconto Ativo throw new ControladorException("atencao.required", null, " Percentual de Desconto Ativo"); } else { // [FS0006]Verificar percentual de desconto BigDecimal percentualDescontoAtivo = parcelamentoDescontoAntiguidade.getPercentualDescontoAtivo(); if (percentualDescontoAtivo.equals(new BigDecimal(0))) { // Percentual de Desconto Ativo deve somente conter // n�meros decimais positivos. throw new ControladorException("atencao.float", null, "Percentual de Desconto Ativo"); }/* * else if (percentualDescontoAtivo * .compareTo(percentualMaximoAbatimentoPermitido) > 0) { // * Percentual de Desconto Ativo � superior ao // Percentual * M�ximo de Desconto de << // percentualMaximoAbatimento >> * permitido para // Financiamneto throw new * ControladorException( * "atencao.percentual_desconto_sem_rest_superior_percentual_max" * , null, "" + percentualMaximoAbatimentoPermitido); } */ } } } if (collectionParcelamentoDescontoInatividade != null && !collectionParcelamentoDescontoInatividade.isEmpty()) { Iterator iteratorParcelamentoDescontoInatividade = collectionParcelamentoDescontoInatividade.iterator(); while (iteratorParcelamentoDescontoInatividade.hasNext()) { ParcelamentoDescontoInatividade parcelamentoDescontoInatividade = (ParcelamentoDescontoInatividade) iteratorParcelamentoDescontoInatividade .next(); if (parcelamentoDescontoInatividade.getPercentualDescontoSemRestabelecimento() == null) { // Informe Percentual de Desconto Sem Restabelecimento throw new ControladorException("atencao.required", null, " Percentual de Desconto Sem Restabelecimento"); } else { // [FS0006]Verificar percentual de desconto BigDecimal percentualDescontoSemRestabelecimento = parcelamentoDescontoInatividade .getPercentualDescontoSemRestabelecimento(); if (percentualDescontoSemRestabelecimento.equals(new BigDecimal(0))) { // Percentual de Desconto Sem Restabelecimento deve // somente conter n�meros decimais positivos. throw new ControladorException("atencao.float", null, "Percentual de Desconto Sem Restabelecimento"); } /* * else if (percentualDescontoSemRestabelecimento * .compareTo(percentualMaximoAbatimentoPermitido) > 0) { // * Percentual de Desconto Sem Restabelecimento � // superior * ao // Percentual M�ximo de Desconto de << // * percentualMaximoAbatimento >> permitido para // * Financiamneto throw new ControladorException( * "atencao.percentual_desconto_sem_rest_superior_percentual_max" * , null, "" + percentualMaximoAbatimentoPermitido); } */ } if (parcelamentoDescontoInatividade.getPercentualDescontoComRestabelecimento() == null) { throw new ControladorException( // Informe Percentual de Desconto Com Restabelecimento "atencao.required", null, " Percentual de Desconto Com Restabelecimento"); } else { // [FS0006]Verificar percentual de desconto BigDecimal percentualDescontoComRestabelecimento = parcelamentoDescontoInatividade .getPercentualDescontoComRestabelecimento(); if (percentualDescontoComRestabelecimento.equals(new BigDecimal(0))) { // Percentual de Desconto Com Restabelecimento deve // somente conter n�meros decimais positivos. throw new ControladorException("atencao.float", null, "Percentual de Desconto Com Restabelecimento"); } /* * else if (percentualDescontoComRestabelecimento * .compareTo(percentualMaximoAbatimentoPermitido) > 0) { // * Percentual de Desconto Cem Restabelecimento � // superior * ao // Percentual M�ximo de Desconto de << // * percentualMaximoAbatimento >> permitido para // * Financiamneto throw new ControladorException( * "atencao.percentual_desconto_sem_rest_superior_percentual_max" * , null, "" + percentualMaximoAbatimentoPermitido); } */ } } } if (collectionParcelamentoDescontoInatividadeAVista != null && !collectionParcelamentoDescontoInatividadeAVista.isEmpty()) { Iterator iteratorParcelamentoDescontoInatividade = collectionParcelamentoDescontoInatividadeAVista.iterator(); while (iteratorParcelamentoDescontoInatividade.hasNext()) { ParcDesctoInativVista parcelamentoDescontoInatividade = (ParcDesctoInativVista) iteratorParcelamentoDescontoInatividade .next(); if (parcelamentoDescontoInatividade.getPercentualDescontoSemRestabelecimento() == null) { // Informe Percentual de Desconto Sem Restabelecimento throw new ControladorException("atencao.required", null, " Percentual de Desconto Sem Restabelecimento"); } else { // [FS0006]Verificar percentual de desconto BigDecimal percentualDescontoSemRestabelecimento = parcelamentoDescontoInatividade .getPercentualDescontoSemRestabelecimento(); if (percentualDescontoSemRestabelecimento.equals(new BigDecimal(0))) { // Percentual de Desconto Sem Restabelecimento deve // somente conter n�meros decimais positivos. throw new ControladorException("atencao.float", null, "Percentual de Desconto Sem Restabelecimento"); } } if (parcelamentoDescontoInatividade.getPercentualDescontoComRestabelecimento() == null) { throw new ControladorException( // Informe Percentual de Desconto Com Restabelecimento "atencao.required", null, " Percentual de Desconto Com Restabelecimento"); } else { // [FS0006]Verificar percentual de desconto BigDecimal percentualDescontoComRestabelecimento = parcelamentoDescontoInatividade .getPercentualDescontoComRestabelecimento(); if (percentualDescontoComRestabelecimento.equals(new BigDecimal(0))) { // Percentual de Desconto Com Restabelecimento deve // somente conter n�meros decimais positivos. throw new ControladorException("atencao.float", null, "Percentual de Desconto Com Restabelecimento"); } } } } } /** * Inserir o Perfil de Parcelamento na base * * [UC0220] Inserir Perfil de Parcelamento * * @author Vivianne Sousa * @date 10/05/2006 * * @param parcelamentoPerfilNova * @param collectionParcelamentoQuantidadeReparcelamentoHelper * @param collectionParcelamentoDescontoInatividade * @param collectionParcelamentoDescontoAntiguidade * @param usuarioLogado * @return o idPerfilParcelamneto */ public Integer inserirPerfilParcelamento(ParcelamentoPerfil parcelamentoPerfilNovo, Collection collectionParcelamentoQuantidadeReparcelamentoHelper, Collection collectionParcelamentoDescontoInatividade, Collection collectionParcelamentoDescontoAntiguidade, Usuario usuarioLogado, Collection collectionParcelamentoDescontoInatividadeAVista) throws ControladorException { validacaoFinalPerfilParcelamento(parcelamentoPerfilNovo, collectionParcelamentoQuantidadeReparcelamentoHelper, collectionParcelamentoDescontoInatividade, collectionParcelamentoDescontoAntiguidade, "INSERIR", collectionParcelamentoDescontoInatividadeAVista); // ------------ REGISTRAR TRANSA��O ---------------------------- RegistradorOperacao registradorOperacao = new RegistradorOperacao(Operacao.OPERACAO_PERFIL_PARCELAMENTO_INSERIR, new UsuarioAcaoUsuarioHelper(usuarioLogado, UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO)); Operacao operacao = new Operacao(); operacao.setId(Operacao.OPERACAO_PERFIL_PARCELAMENTO_INSERIR); OperacaoEfetuada operacaoEfetuada = new OperacaoEfetuada(); operacaoEfetuada.setOperacao(operacao); parcelamentoPerfilNovo.setOperacaoEfetuada(operacaoEfetuada); parcelamentoPerfilNovo.adicionarUsuario(usuarioLogado, UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO); registradorOperacao.registrarOperacao(parcelamentoPerfilNovo); // ------------ REGISTRAR TRANSA��O ---------------------------- // insere o objeto PerfilParcelamento e recupera o seu id parcelamentoPerfilNovo.setUltimaAlteracao(new Date()); Integer idPerfilParcelamento = (Integer) this.getControladorUtil().inserir(parcelamentoPerfilNovo); parcelamentoPerfilNovo.setId(idPerfilParcelamento); // inserir a cole��o de ParcelamentoQuantidadeReparcelamento if (collectionParcelamentoQuantidadeReparcelamentoHelper != null && !collectionParcelamentoQuantidadeReparcelamentoHelper.isEmpty()) { Iterator iterator = collectionParcelamentoQuantidadeReparcelamentoHelper.iterator(); while (iterator.hasNext()) { ParcelamentoQuantidadeReparcelamentoHelper parcelamentoQuantidadeReparcelamentoHelper = (ParcelamentoQuantidadeReparcelamentoHelper) iterator .next(); ParcelamentoQuantidadeReparcelamento parcelamentoQuantidadeReparcelamento = new ParcelamentoQuantidadeReparcelamento(); parcelamentoQuantidadeReparcelamento.setParcelamentoPerfil(parcelamentoPerfilNovo); parcelamentoQuantidadeReparcelamento.setQuantidadeMaximaReparcelamento(parcelamentoQuantidadeReparcelamentoHelper .getQuantidadeMaximaReparcelamento()); parcelamentoQuantidadeReparcelamento.setPercentualEntradaSugerida(parcelamentoQuantidadeReparcelamentoHelper .getPercentualEntradaSugerida()); /* * parcelamentoQuantidadeReparcelamento * .setValorMinimoPrestacao( * parcelamentoQuantidadeReparcelamentoHelper * .getValorMinimoPrestacao()); */ parcelamentoQuantidadeReparcelamento.setUltimaAlteracao(new Date()); // ------------ REGISTRAR TRANSA��O ---------------------------- parcelamentoQuantidadeReparcelamento.setOperacaoEfetuada(operacaoEfetuada); parcelamentoQuantidadeReparcelamento.adicionarUsuario(usuarioLogado, UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO); registradorOperacao.registrarOperacao(parcelamentoQuantidadeReparcelamento); // ------------ REGISTRAR TRANSA��O ---------------------------- // insere o objeto ParcelamentoQuantidadeReparcelamento e // recupera o seu id Integer idParcelamentoQuantidadeReparcelamento = (Integer) this.getControladorUtil().inserir( parcelamentoQuantidadeReparcelamento); parcelamentoQuantidadeReparcelamento.setId(idParcelamentoQuantidadeReparcelamento); Collection collectionParcelamentoQuantidadePrestacaoHelper = parcelamentoQuantidadeReparcelamentoHelper .getCollectionParcelamentoQuantidadePrestacaoHelper(); if (collectionParcelamentoQuantidadePrestacaoHelper != null && !collectionParcelamentoQuantidadePrestacaoHelper.isEmpty()) { Iterator iteratorParcelamentoQuantidadePrestacaoHelper = collectionParcelamentoQuantidadePrestacaoHelper.iterator(); while (iteratorParcelamentoQuantidadePrestacaoHelper.hasNext()) { ParcelamentoQuantidadePrestacaoHelper parcelamentoQuantidadePrestacaoHelper = (ParcelamentoQuantidadePrestacaoHelper) iteratorParcelamentoQuantidadePrestacaoHelper .next(); ParcelamentoQuantidadePrestacao parcelamentoQuantidadePrestacao = parcelamentoQuantidadePrestacaoHelper .getParcelamentoQuantidadePrestacao(); parcelamentoQuantidadePrestacao.setParcelamentoQuantidadeReparcelamento(parcelamentoQuantidadeReparcelamento); // parcelamentoQuantidadePrestacao // .setUltimaAlteracao(new Date()); // ------------ REGISTRAR TRANSA��O --------------- parcelamentoQuantidadePrestacao.setOperacaoEfetuada(operacaoEfetuada); parcelamentoQuantidadePrestacao.adicionarUsuario(usuarioLogado, UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO); registradorOperacao.registrarOperacao(parcelamentoQuantidadePrestacao); // ------------ REGISTRAR TRANSA��O --------------- // insere o objeto parcelamentoQuantidadePrestacao Integer idparcelamentoQuantidadePrestacao = (Integer) this.getControladorUtil().inserir( parcelamentoQuantidadePrestacao); parcelamentoQuantidadePrestacao.setId(idparcelamentoQuantidadePrestacao); Collection collectionParcelamentoFaixaValor = parcelamentoQuantidadePrestacaoHelper .getCollectionParcelamentoFaixaValor(); if (collectionParcelamentoFaixaValor != null && !collectionParcelamentoFaixaValor.isEmpty()) { Iterator iteratorParcelamentoFaixaValor = collectionParcelamentoFaixaValor.iterator(); while (iteratorParcelamentoFaixaValor.hasNext()) { ParcelamentoFaixaValor parcelamentoFaixaValor = (ParcelamentoFaixaValor) iteratorParcelamentoFaixaValor .next(); parcelamentoFaixaValor.setParcelamentoQuantidadePrestacao(parcelamentoQuantidadePrestacao); parcelamentoFaixaValor.setUltimaAlteracao(new Date()); // ------------ REGISTRAR TRANSA��O // --------------- parcelamentoFaixaValor.setOperacaoEfetuada(operacaoEfetuada); parcelamentoFaixaValor.adicionarUsuario(usuarioLogado, UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO); registradorOperacao.registrarOperacao(parcelamentoFaixaValor); // ------------ REGISTRAR TRANSA��O // --------------- // insere o objeto parcelamentoFaixaValor this.getControladorUtil().inserir(parcelamentoFaixaValor); } } } } } } // inserir a cole��o de collectionParcelamentoDescontoInatividade if (collectionParcelamentoDescontoInatividade != null && !collectionParcelamentoDescontoInatividade.isEmpty()) { Iterator iterator = collectionParcelamentoDescontoInatividade.iterator(); while (iterator.hasNext()) { ParcelamentoDescontoInatividade parcelamentoDescontoInatividade = (ParcelamentoDescontoInatividade) iterator.next(); parcelamentoDescontoInatividade.setParcelamentoPerfil(parcelamentoPerfilNovo); parcelamentoDescontoInatividade.setUltimaAlteracao(new Date()); // ------------ REGISTRAR TRANSA��O ---------------------------- parcelamentoDescontoInatividade.setOperacaoEfetuada(operacaoEfetuada); parcelamentoDescontoInatividade.adicionarUsuario(usuarioLogado, UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO); registradorOperacao.registrarOperacao(parcelamentoDescontoInatividade); // ------------ REGISTRAR TRANSA��O ---------------------------- // insere o objeto parcelamentoDescontoInatividade this.getControladorUtil().inserir(parcelamentoDescontoInatividade); } } // inserir a cole��o de collectionParcelamentoDescontoAntiguidade if (collectionParcelamentoDescontoAntiguidade != null && !collectionParcelamentoDescontoAntiguidade.isEmpty()) { Iterator iterator = collectionParcelamentoDescontoAntiguidade.iterator(); while (iterator.hasNext()) { ParcelamentoDescontoAntiguidade parcelamentoDescontoAntiguidade = (ParcelamentoDescontoAntiguidade) iterator.next(); parcelamentoDescontoAntiguidade.setParcelamentoPerfil(parcelamentoPerfilNovo); parcelamentoDescontoAntiguidade.setUltimaAlteracao(new Date()); // ------------ REGISTRAR TRANSA��O ---------------------------- parcelamentoDescontoAntiguidade.setOperacaoEfetuada(operacaoEfetuada); parcelamentoDescontoAntiguidade.adicionarUsuario(usuarioLogado, UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO); registradorOperacao.registrarOperacao(parcelamentoDescontoAntiguidade); // ------------ REGISTRAR TRANSA��O ---------------------------- // insere o objeto parcelamentoDescontoAntiguidade this.getControladorUtil().inserir(parcelamentoDescontoAntiguidade); } } // inserir a cole��o de collectionParcelamentoDescontoInatividade if (collectionParcelamentoDescontoInatividadeAVista != null && !collectionParcelamentoDescontoInatividadeAVista.isEmpty()) { Iterator iterator = collectionParcelamentoDescontoInatividadeAVista.iterator(); while (iterator.hasNext()) { ParcDesctoInativVista parcelamentoDescontoInatividade = (ParcDesctoInativVista) iterator.next(); parcelamentoDescontoInatividade.setParcelamentoPerfil(parcelamentoPerfilNovo); parcelamentoDescontoInatividade.setUltimaAlteracao(new Date()); // ------------ REGISTRAR TRANSA��O ---------------------------- parcelamentoDescontoInatividade.setOperacaoEfetuada(operacaoEfetuada); parcelamentoDescontoInatividade.adicionarUsuario(usuarioLogado, UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO); registradorOperacao.registrarOperacao(parcelamentoDescontoInatividade); // ------------ REGISTRAR TRANSA��O ---------------------------- // insere o objeto parcelamentoDescontoInatividade this.getControladorUtil().inserir(parcelamentoDescontoInatividade); } } return idPerfilParcelamento; } /** * [UC0221] Manter Perfil de Parcelamento * * Remove um objeto do tipo ParcelamentoPerfil no BD * * @author Vivianne Sousa * @date 11/05/2006 * * @param ids * @param usuarioLogado * @return */ public void removerPerfilParcelamento(String[] ids, Usuario usuarioLogado) throws ControladorException { // remover // ParcelamentoQuantidadeReparcelamento,ParcelamentoDescontoAntiguidade, // ParcelamentoDescontoInatividade para cada ParcelamentoPerfil a // remover // e remover ParcelamentoQuantidadePrestacao para cada // ParcelamentoQuantidadeReparcelamento remivido // ------------ REGISTRAR TRANSA��O ---------------- Operacao operacao = new Operacao(); operacao.setId(Operacao.OPERACAO_PERFIL_PARCELAMENTO_REMOVER); OperacaoEfetuada operacaoEfetuada = new OperacaoEfetuada(); operacaoEfetuada.setOperacao(operacao); UsuarioAcaoUsuarioHelper usuarioAcaoUsuarioHelper = new UsuarioAcaoUsuarioHelper(usuarioLogado, UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO); Collection<UsuarioAcaoUsuarioHelper> colecaoUsuarios = new ArrayList(); colecaoUsuarios.add(usuarioAcaoUsuarioHelper); // ------------ REGISTRAR TRANSA��O ---------------- int i = 0; while (i < ids.length) { String idPerfilParcelamento = ids[i]; // [FS0002]Verificar se perfil de parcelamento j� foi utilizado FiltroParcelamento filtroParcelamento = new FiltroParcelamento(); filtroParcelamento.adicionarParametro(new ParametroSimples(FiltroParcelamento.PARCELAMENTO_PERFIL_ID, idPerfilParcelamento)); Collection colecaoParcelamento = this.getControladorUtil().pesquisar(filtroParcelamento, Parcelamento.class.getName()); if (colecaoParcelamento != null && !colecaoParcelamento.isEmpty()) { // Perfil de Parcelamento j� utilizado, n�o pode ser alterado // nem exclu�do. throw new ControladorException("atencao.perfil_parcelamento_ja_utilizado"); } // cole��o de ParcelamentoQuantidadeReparcelamento para remover FiltroParcelamentoQuantidadeReparcelamento filtroParcelamentoQuantidadeReparcelamento = new FiltroParcelamentoQuantidadeReparcelamento(); filtroParcelamentoQuantidadeReparcelamento.adicionarCaminhoParaCarregamentoEntidade("parcelamentoPerfil"); filtroParcelamentoQuantidadeReparcelamento.adicionarParametro(new ParametroSimples( FiltroParcelamentoQuantidadeReparcelamento.PARCELAMENTO_PERFIL, idPerfilParcelamento)); Collection collectionParcelamentoQuantidadeReparcelamento = (Collection<ParcelamentoQuantidadeReparcelamento>) this .getControladorUtil().pesquisar(filtroParcelamentoQuantidadeReparcelamento, ParcelamentoQuantidadeReparcelamento.class.getName()); Iterator iteratorReparcelamento = collectionParcelamentoQuantidadeReparcelamento.iterator(); while (iteratorReparcelamento.hasNext()) { ParcelamentoQuantidadeReparcelamento parcelamentoQuantidadeReparcelamento = (ParcelamentoQuantidadeReparcelamento) iteratorReparcelamento .next(); String idParcelamentoQuantidadeReparcelamento = "" + parcelamentoQuantidadeReparcelamento.getId(); // cole��o de ParcelamentoQuantidadePrestacao para remover FiltroParcelamentoQuantidadePrestacao filtroParcelamentoQuantidadePrestacao = new FiltroParcelamentoQuantidadePrestacao(); filtroParcelamentoQuantidadePrestacao.adicionarCaminhoParaCarregamentoEntidade("parcelamentoQuantidadeReparcelamento"); filtroParcelamentoQuantidadePrestacao.adicionarParametro(new ParametroSimples( FiltroParcelamentoQuantidadePrestacao.PARCELAMENTO_QUANTIDADE_REPARCELAMENTO, idParcelamentoQuantidadeReparcelamento)); Collection collectionParcelamentoQuantidadePrestacao = (Collection<ParcelamentoQuantidadePrestacao>) this .getControladorUtil().pesquisar(filtroParcelamentoQuantidadePrestacao, ParcelamentoQuantidadePrestacao.class.getName()); Iterator iteratorPrestacao = collectionParcelamentoQuantidadePrestacao.iterator(); while (iteratorPrestacao.hasNext()) { ParcelamentoQuantidadePrestacao parcelamentoQuantidadePrestacao = (ParcelamentoQuantidadePrestacao) iteratorPrestacao .next(); String idParcelamentoQuantidadePrestacao = "" + parcelamentoQuantidadePrestacao.getId(); // cole��o de ParcelamentoFaixaValor para remover FiltroParcelamentoFaixaValor filtroParcelamentoFaixaValor = new FiltroParcelamentoFaixaValor(); // filtroParcelamentoFaixaValor // .adicionarCaminhoParaCarregamentoEntidade("parcelamentoQuantidadePrestacao"); filtroParcelamentoFaixaValor.adicionarParametro(new ParametroSimples( FiltroParcelamentoFaixaValor.PARCELAMENTO_QUANTIDADE_PRESTACAO, idParcelamentoQuantidadePrestacao)); Collection collectionParcelamentoFaixaValor = (Collection) this.getControladorUtil().pesquisar( filtroParcelamentoFaixaValor, ParcelamentoFaixaValor.class.getName()); Iterator iteratorFaixaValor = collectionParcelamentoFaixaValor.iterator(); while (iteratorFaixaValor.hasNext()) { ParcelamentoFaixaValor parcelamentoFaixaValor = (ParcelamentoFaixaValor) iteratorFaixaValor.next(); // ------------ REGISTRAR TRANSA��O ---------------- parcelamentoFaixaValor.setOperacaoEfetuada(operacaoEfetuada); parcelamentoFaixaValor.adicionarUsuario(usuarioLogado, UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO); // ------------ REGISTRAR TRANSA��O ---------------- // remove objeto ParcelamentoFaixaValor na base this.getControladorUtil().remover(parcelamentoFaixaValor); } // ------------ REGISTRAR TRANSA��O ---------------- parcelamentoQuantidadePrestacao.setOperacaoEfetuada(operacaoEfetuada); parcelamentoQuantidadePrestacao.adicionarUsuario(usuarioLogado, UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO); // ------------ REGISTRAR TRANSA��O ---------------- // remove objeto ParcelamentoQuantidadePrestacao na base this.getControladorUtil().remover(parcelamentoQuantidadePrestacao); } // ------------ REGISTRAR TRANSA��O ---------------- parcelamentoQuantidadeReparcelamento.setOperacaoEfetuada(operacaoEfetuada); parcelamentoQuantidadeReparcelamento.adicionarUsuario(usuarioLogado, UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO); // ------------ REGISTRAR TRANSA��O ---------------- // remove objeto ParcelamentoQuantidadeReparcelamento na base this.getControladorUtil().remover(parcelamentoQuantidadeReparcelamento); } // cole��o de ParcelamentoDescontoAntiguidade para remover FiltroParcelamentoDescontoAntiguidade filtroParcelamentoDescontoAntiguidade = new FiltroParcelamentoDescontoAntiguidade(); filtroParcelamentoDescontoAntiguidade.adicionarCaminhoParaCarregamentoEntidade("parcelamentoPerfil"); filtroParcelamentoDescontoAntiguidade.adicionarParametro(new ParametroSimples( FiltroParcelamentoDescontoAntiguidade.PARCELAMENTO_PERFIL, idPerfilParcelamento)); Collection collectionParcelamentoDescontoAntiguidade = (Collection<ParcelamentoDescontoAntiguidade>) this.getControladorUtil() .pesquisar(filtroParcelamentoDescontoAntiguidade, ParcelamentoDescontoAntiguidade.class.getName()); Iterator iteratorAntiguidade = collectionParcelamentoDescontoAntiguidade.iterator(); while (iteratorAntiguidade.hasNext()) { ParcelamentoDescontoAntiguidade parcelamentoDescontoAntiguidade = (ParcelamentoDescontoAntiguidade) iteratorAntiguidade .next(); // ------------ REGISTRAR TRANSA��O ---------------- parcelamentoDescontoAntiguidade.setOperacaoEfetuada(operacaoEfetuada); parcelamentoDescontoAntiguidade.adicionarUsuario(usuarioLogado, UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO); // ------------ REGISTRAR TRANSA��O ---------------- // remove objeto ParcelamentoDescontoAntiguidade na base this.getControladorUtil().remover(parcelamentoDescontoAntiguidade); } // cole��o de ParcelamentoDescontoInatividade para remover FiltroParcelamentoDescontoInatividade filtroParcelamentoDescontoInatividade = new FiltroParcelamentoDescontoInatividade(); filtroParcelamentoDescontoInatividade.adicionarCaminhoParaCarregamentoEntidade("parcelamentoPerfil"); filtroParcelamentoDescontoInatividade.adicionarParametro(new ParametroSimples( FiltroParcelamentoDescontoInatividade.PARCELAMENTO_PERFIL, idPerfilParcelamento)); Collection collectionParcelamentoDescontoInatividade = (Collection<ParcelamentoDescontoInatividade>) this.getControladorUtil() .pesquisar(filtroParcelamentoDescontoInatividade, ParcelamentoDescontoInatividade.class.getName()); Iterator iteratorInatividade = collectionParcelamentoDescontoInatividade.iterator(); while (iteratorInatividade.hasNext()) { ParcelamentoDescontoInatividade parcelamentoDescontoInatividade = (ParcelamentoDescontoInatividade) iteratorInatividade .next(); // ------------ REGISTRAR TRANSA��O ---------------- parcelamentoDescontoInatividade.setOperacaoEfetuada(operacaoEfetuada); parcelamentoDescontoInatividade.adicionarUsuario(usuarioLogado, UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO); // ------------ REGISTRAR TRANSA��O ---------------- // remove objeto ParcelamentoDescontoInatividade na base this.getControladorUtil().remover(parcelamentoDescontoInatividade); } // cole��o de ParcelamentoDescontoInatividadeAVista para remover FiltroParcDesctoInativVista filtroParcDesctoInativVista = new FiltroParcDesctoInativVista(); filtroParcDesctoInativVista.adicionarCaminhoParaCarregamentoEntidade("parcelamentoPerfil"); filtroParcDesctoInativVista.adicionarParametro(new ParametroSimples(FiltroParcDesctoInativVista.PARCELAMENTO_PERFIL, idPerfilParcelamento)); Collection collectionParcelamentoDescontoInatividadeAVista = (Collection<ParcDesctoInativVista>) this.getControladorUtil() .pesquisar(filtroParcDesctoInativVista, ParcDesctoInativVista.class.getName()); Iterator iteratorInatividadeAVista = collectionParcelamentoDescontoInatividadeAVista.iterator(); while (iteratorInatividadeAVista.hasNext()) { ParcDesctoInativVista parcDesctoInativVista = (ParcDesctoInativVista) iteratorInatividadeAVista.next(); // ------------ REGISTRAR TRANSA��O ---------------- parcDesctoInativVista.setOperacaoEfetuada(operacaoEfetuada); parcDesctoInativVista.adicionarUsuario(usuarioLogado, UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO); // ------------ REGISTRAR TRANSA��O ---------------- // remove objeto ParcelamentoDescontoInatividadeAVista na base this.getControladorUtil().remover(parcDesctoInativVista); } i = i + 1; } // remover ParcelamentoPerfil(s) this.getControladorUtil().remover(ids, ParcelamentoPerfil.class.getName(), operacaoEfetuada, colecaoUsuarios); } /** * Atualizar o Perfil de Parcelamento na base * * [UC0221] Manter Perfil de Parcelamento * * @author Vivianne Sousa * @date 17/05/2006 * * @param parcelamentoPerfilNova * @param collectionParcelamentoQuantidadeReparcelamentoHelper * @param collectionParcelamentoDescontoInatividade * @param collectionParcelamentoDescontoAntiguidade * @param collectionParcelamentoQuantidadeReparcelamentoHelperLinhaRemovidas * @param collectionParcelamentoDescontoInatividadeLinhaRemovidas * @param collectionParcelamentoDescontoAntiguidadeLinhaRemovidas * @param collectionParcelamentoQuantidadePrestacaoLinhaRemovidas * @param usuarioLogado * @return */ public void atualizarPerfilParcelamento(ParcelamentoPerfil parcelamentoPerfil, Collection collectionParcelamentoQuantidadeReparcelamentoHelper, Collection collectionParcelamentoDescontoInatividade, Collection collectionParcelamentoDescontoAntiguidade, Collection collectionParcelamentoQuantidadeReparcelamentoHelperLinhaRemovidas, Collection collectionParcelamentoDescontoInatividadeLinhaRemovidas, Collection collectionParcelamentoDescontoAntiguidadeLinhaRemovidas, Collection collectionParcelamentoQuantidadePrestacaoLinhaRemovidas, Usuario usuarioLogado, Collection collectionParcelamentoDescontoInatividadeAVista, Collection collectionParcelamentoDescontoInatividadeAVistaLinhaRemovidas) throws ControladorException { validacaoFinalPerfilParcelamento(parcelamentoPerfil, collectionParcelamentoQuantidadeReparcelamentoHelper, collectionParcelamentoDescontoInatividade, collectionParcelamentoDescontoAntiguidade, "ATUALIZAR", collectionParcelamentoDescontoInatividadeAVista); // ------------ REGISTRAR TRANSA��O ---------------------------- RegistradorOperacao registradorOperacao = new RegistradorOperacao(Operacao.OPERACAO_PERFIL_PARCELAMENTO_ATUALIZAR, new UsuarioAcaoUsuarioHelper(usuarioLogado, UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO)); Operacao operacao = new Operacao(); operacao.setId(Operacao.OPERACAO_PERFIL_PARCELAMENTO_ATUALIZAR); OperacaoEfetuada operacaoEfetuada = new OperacaoEfetuada(); operacaoEfetuada.setOperacao(operacao); // ------------ REGISTRAR TRANSA��O ---------------------------- String idPerfilParcelamento = "" + parcelamentoPerfil.getId(); FiltroParcelamentoPerfil filtroParcelamentoPerfil = new FiltroParcelamentoPerfil(); // Seta o filtro para buscar o ParcelamentoPerfil na base filtroParcelamentoPerfil.adicionarParametro(new ParametroSimples(FiltroParcelamentoPerfil.ID, idPerfilParcelamento)); // Procura o ParcelamentoPerfil na base ParcelamentoPerfil parcelamentoPerfilNaBase = null; parcelamentoPerfilNaBase = (ParcelamentoPerfil) ((List) (this.getControladorUtil().pesquisar(filtroParcelamentoPerfil, ParcelamentoPerfil.class.getName()))).get(0); // Verificar se o ParcelamentoPerfil j� foi atualizado por outro usu�rio // durante esta atualiza��o if (parcelamentoPerfilNaBase.getUltimaAlteracao().after(parcelamentoPerfil.getUltimaAlteracao())) { sessionContext.setRollbackOnly(); throw new ControladorException("atencao.atualizacao.timestamp"); } // ------------ REGISTRAR TRANSA��O ---------------------------- parcelamentoPerfil.setOperacaoEfetuada(operacaoEfetuada); parcelamentoPerfil.adicionarUsuario(usuarioLogado, UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO); registradorOperacao.registrarOperacao(parcelamentoPerfil); // ------------ REGISTRAR TRANSA��O ---------------------------- // atualiza o objeto PerfilParcelamento parcelamentoPerfil.setUltimaAlteracao(new Date()); this.getControladorUtil().atualizar(parcelamentoPerfil); // atualizar a cole��o de ParcelamentoQuantidadeReparcelamento if (collectionParcelamentoQuantidadeReparcelamentoHelper != null && !collectionParcelamentoQuantidadeReparcelamentoHelper.isEmpty()) { Iterator iterator = collectionParcelamentoQuantidadeReparcelamentoHelper.iterator(); while (iterator.hasNext()) { ParcelamentoQuantidadeReparcelamentoHelper parcelamentoQuantidadeReparcelamentoHelper = (ParcelamentoQuantidadeReparcelamentoHelper) iterator .next(); ParcelamentoQuantidadeReparcelamento parcelamentoQuantidadeReparcelamento = new ParcelamentoQuantidadeReparcelamento(); parcelamentoQuantidadeReparcelamento.setId(parcelamentoQuantidadeReparcelamentoHelper.getId()); parcelamentoQuantidadeReparcelamento.setParcelamentoPerfil(parcelamentoPerfil); parcelamentoQuantidadeReparcelamento.setQuantidadeMaximaReparcelamento(parcelamentoQuantidadeReparcelamentoHelper .getQuantidadeMaximaReparcelamento()); parcelamentoQuantidadeReparcelamento.setPercentualEntradaSugerida(parcelamentoQuantidadeReparcelamentoHelper .getPercentualEntradaSugerida()); /* * parcelamentoQuantidadeReparcelamento * .setValorMinimoPrestacao( * parcelamentoQuantidadeReparcelamentoHelper * .getValorMinimoPrestacao()); */ parcelamentoQuantidadeReparcelamento.setUltimaAlteracao(new Date()); // ------------ REGISTRAR TRANSA��O ---------------------------- parcelamentoQuantidadeReparcelamento.setOperacaoEfetuada(operacaoEfetuada); parcelamentoQuantidadeReparcelamento.adicionarUsuario(usuarioLogado, UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO); registradorOperacao.registrarOperacao(parcelamentoQuantidadeReparcelamento); // ------------ REGISTRAR TRANSA��O ---------------------------- // insere ou atualiza o objeto // ParcelamentoQuantidadeReparcelamento this.getControladorUtil().inserirOuAtualizar(parcelamentoQuantidadeReparcelamento); Collection collectionParcelamentoQuantidadePrestacaoHelper = parcelamentoQuantidadeReparcelamentoHelper .getCollectionParcelamentoQuantidadePrestacaoHelper(); if (collectionParcelamentoQuantidadePrestacaoHelper != null && !collectionParcelamentoQuantidadePrestacaoHelper.isEmpty()) { Iterator iteratorParcelamentoQuantidadePrestacaoHelper = collectionParcelamentoQuantidadePrestacaoHelper.iterator(); while (iteratorParcelamentoQuantidadePrestacaoHelper.hasNext()) { ParcelamentoQuantidadePrestacaoHelper parcelamentoQuantidadePrestacaoHelper = (ParcelamentoQuantidadePrestacaoHelper) iteratorParcelamentoQuantidadePrestacaoHelper .next(); ParcelamentoQuantidadePrestacao parcelamentoQuantidadePrestacao = parcelamentoQuantidadePrestacaoHelper .getParcelamentoQuantidadePrestacao(); parcelamentoQuantidadePrestacao.setParcelamentoQuantidadeReparcelamento(parcelamentoQuantidadeReparcelamento); parcelamentoQuantidadePrestacao.setUltimaAlteracao(new Date()); // ------------ REGISTRAR TRANSA��O // ---------------------------- parcelamentoQuantidadePrestacao.setOperacaoEfetuada(operacaoEfetuada); parcelamentoQuantidadePrestacao.adicionarUsuario(usuarioLogado, UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO); registradorOperacao.registrarOperacao(parcelamentoQuantidadePrestacao); // ------------ REGISTRAR TRANSA��O // ---------------------------- // insere ou atualiza o objeto // parcelamentoQuantidadePrestacao Integer idParcelamentoQuantidadePrestacao = (Integer) this.getControladorUtil().inserirOuAtualizar( parcelamentoQuantidadePrestacao); if (idParcelamentoQuantidadePrestacao != null) { parcelamentoQuantidadePrestacao.setId(idParcelamentoQuantidadePrestacao); } Collection collectionParcelamentoFaixaValor = parcelamentoQuantidadePrestacaoHelper .getCollectionParcelamentoFaixaValor(); if (collectionParcelamentoFaixaValor != null && !collectionParcelamentoFaixaValor.isEmpty()) { Iterator iteratorParcelamentoFaixaValor = collectionParcelamentoFaixaValor.iterator(); while (iteratorParcelamentoFaixaValor.hasNext()) { ParcelamentoFaixaValor parcelamentoFaixaValor = (ParcelamentoFaixaValor) iteratorParcelamentoFaixaValor .next(); parcelamentoFaixaValor.setParcelamentoQuantidadePrestacao(parcelamentoQuantidadePrestacao); parcelamentoFaixaValor.setUltimaAlteracao(new Date()); // ------------ REGISTRAR TRANSA��O ------------ parcelamentoFaixaValor.setOperacaoEfetuada(operacaoEfetuada); parcelamentoFaixaValor.adicionarUsuario(usuarioLogado, UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO); registradorOperacao.registrarOperacao(parcelamentoFaixaValor); // ------------ REGISTRAR TRANSA��O // -------------- // insere ou atualiza o objeto // parcelamentoFaixaValor this.getControladorUtil().inserirOuAtualizar(parcelamentoFaixaValor); } } } } } } // atualizar a cole��o de collectionParcelamentoDescontoInatividade if (collectionParcelamentoDescontoInatividade != null && !collectionParcelamentoDescontoInatividade.isEmpty()) { Iterator iterator = collectionParcelamentoDescontoInatividade.iterator(); while (iterator.hasNext()) { ParcelamentoDescontoInatividade parcelamentoDescontoInatividade = (ParcelamentoDescontoInatividade) iterator.next(); parcelamentoDescontoInatividade.setParcelamentoPerfil(parcelamentoPerfil); // ------------ REGISTRAR TRANSA��O ---------------------------- parcelamentoDescontoInatividade.setOperacaoEfetuada(operacaoEfetuada); parcelamentoDescontoInatividade.adicionarUsuario(usuarioLogado, UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO); registradorOperacao.registrarOperacao(parcelamentoDescontoInatividade); // ------------ REGISTRAR TRANSA��O ---------------------------- parcelamentoDescontoInatividade.setUltimaAlteracao(new Date()); // insere ou atualiza o objeto parcelamentoDescontoInatividade this.getControladorUtil().inserirOuAtualizar(parcelamentoDescontoInatividade); } } // atualizar a cole��o de // collectionParcelamentoDescontoInatividadeAVista if (collectionParcelamentoDescontoInatividadeAVista != null && !collectionParcelamentoDescontoInatividadeAVista.isEmpty()) { Iterator iterator = collectionParcelamentoDescontoInatividadeAVista.iterator(); while (iterator.hasNext()) { ParcDesctoInativVista parcelamentoDescontoInatividade = (ParcDesctoInativVista) iterator.next(); parcelamentoDescontoInatividade.setParcelamentoPerfil(parcelamentoPerfil); // ------------ REGISTRAR TRANSA��O ---------------------------- parcelamentoDescontoInatividade.setOperacaoEfetuada(operacaoEfetuada); parcelamentoDescontoInatividade.adicionarUsuario(usuarioLogado, UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO); registradorOperacao.registrarOperacao(parcelamentoDescontoInatividade); // ------------ REGISTRAR TRANSA��O ---------------------------- parcelamentoDescontoInatividade.setUltimaAlteracao(new Date()); // insere ou atualiza o objeto // parcelamentoDescontoInatividadeAVista this.getControladorUtil().inserirOuAtualizar(parcelamentoDescontoInatividade); } } // atualizar a cole��o de collectionParcelamentoDescontoAntiguidade if (collectionParcelamentoDescontoAntiguidade != null && !collectionParcelamentoDescontoAntiguidade.isEmpty()) { Iterator iterator = collectionParcelamentoDescontoAntiguidade.iterator(); while (iterator.hasNext()) { ParcelamentoDescontoAntiguidade parcelamentoDescontoAntiguidade = (ParcelamentoDescontoAntiguidade) iterator.next(); parcelamentoDescontoAntiguidade.setParcelamentoPerfil(parcelamentoPerfil); // ------------ REGISTRAR TRANSA��O ---------------------------- parcelamentoDescontoAntiguidade.setOperacaoEfetuada(operacaoEfetuada); parcelamentoDescontoAntiguidade.adicionarUsuario(usuarioLogado, UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO); registradorOperacao.registrarOperacao(parcelamentoDescontoAntiguidade); // ------------ REGISTRAR TRANSA��O ---------------------------- parcelamentoDescontoAntiguidade.setUltimaAlteracao(new Date()); // insere ou atualiza o objeto parcelamentoDescontoAntiguidade this.getControladorUtil().inserirOuAtualizar(parcelamentoDescontoAntiguidade); } } if (collectionParcelamentoQuantidadeReparcelamentoHelperLinhaRemovidas != null && !collectionParcelamentoQuantidadeReparcelamentoHelperLinhaRemovidas.isEmpty()) { Iterator parcelamentoQuantidadeReparcelamentoHelperLinhaRemovidasIterator = collectionParcelamentoQuantidadeReparcelamentoHelperLinhaRemovidas .iterator(); while (parcelamentoQuantidadeReparcelamentoHelperLinhaRemovidasIterator.hasNext()) { // remove cada ParcelamentoQuantidadeReparcelamentoHelper linha ParcelamentoQuantidadeReparcelamentoHelper parcelamentoQuantidadeReparcelamentoHelperLinhaRemovida = (ParcelamentoQuantidadeReparcelamentoHelper) parcelamentoQuantidadeReparcelamentoHelperLinhaRemovidasIterator .next(); ParcelamentoQuantidadeReparcelamento parcelamentoQuantidadeReparcelamentoLinhaRemovida = new ParcelamentoQuantidadeReparcelamento(); parcelamentoQuantidadeReparcelamentoLinhaRemovida.setId(parcelamentoQuantidadeReparcelamentoHelperLinhaRemovida.getId()); Collection collectionParcelamentoQuantidadePrestacaoHelperLinhaRemovida = parcelamentoQuantidadeReparcelamentoHelperLinhaRemovida .getCollectionParcelamentoQuantidadePrestacaoHelper(); if (collectionParcelamentoQuantidadePrestacaoHelperLinhaRemovida != null && !collectionParcelamentoQuantidadePrestacaoHelperLinhaRemovida.isEmpty()) { Iterator parcelamentoQuantidadePrestacaoHelperLinhaRemovidasIterator = collectionParcelamentoQuantidadePrestacaoHelperLinhaRemovida .iterator(); while (parcelamentoQuantidadePrestacaoHelperLinhaRemovidasIterator.hasNext()) { // remove cada ParcelamentoFaixaValor e // ParcelamentoQuantidadePrestacao linha ParcelamentoQuantidadePrestacaoHelper parcelamentoQuantidadePrestacaoHelperLinhaRemovida = (ParcelamentoQuantidadePrestacaoHelper) parcelamentoQuantidadePrestacaoHelperLinhaRemovidasIterator .next(); Collection collectionParcelamentoFaixaValor = parcelamentoQuantidadePrestacaoHelperLinhaRemovida .getCollectionParcelamentoFaixaValor(); if (collectionParcelamentoFaixaValor != null && !collectionParcelamentoFaixaValor.isEmpty()) { Iterator iteratorParcelamentoFaixaValor = collectionParcelamentoFaixaValor.iterator(); while (iteratorParcelamentoFaixaValor.hasNext()) { ParcelamentoFaixaValor parcelamentoFaixaValor = (ParcelamentoFaixaValor) iteratorParcelamentoFaixaValor .next(); // ------------ REGISTRAR TRANSA��O // ------------- parcelamentoFaixaValor.setOperacaoEfetuada(operacaoEfetuada); parcelamentoFaixaValor.adicionarUsuario(usuarioLogado, UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO); registradorOperacao.registrarOperacao(parcelamentoFaixaValor); // ------------ REGISTRAR TRANSA��O ------------ try { repositorioUtil.remover(parcelamentoFaixaValor); } catch (ErroRepositorioException e) { e.printStackTrace(); } } } ParcelamentoQuantidadePrestacao parcelamentoQuantidadePrestacaoLinhaRemovida = parcelamentoQuantidadePrestacaoHelperLinhaRemovida .getParcelamentoQuantidadePrestacao(); // ------------ REGISTRAR TRANSA��O // ---------------------------- parcelamentoQuantidadePrestacaoLinhaRemovida.setOperacaoEfetuada(operacaoEfetuada); parcelamentoQuantidadePrestacaoLinhaRemovida.adicionarUsuario(usuarioLogado, UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO); registradorOperacao.registrarOperacao(parcelamentoQuantidadePrestacaoLinhaRemovida); // ------------ REGISTRAR TRANSA��O // ---------------------------- try { repositorioUtil.remover(parcelamentoQuantidadePrestacaoLinhaRemovida); } catch (ErroRepositorioException e) { e.printStackTrace(); } } } // ------------ REGISTRAR TRANSA��O ---------------------------- parcelamentoQuantidadeReparcelamentoLinhaRemovida.setOperacaoEfetuada(operacaoEfetuada); parcelamentoQuantidadeReparcelamentoLinhaRemovida .adicionarUsuario(usuarioLogado, UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO); registradorOperacao.registrarOperacao(parcelamentoQuantidadeReparcelamentoLinhaRemovida); // ------------ REGISTRAR TRANSA��O ---------------------------- try { // remove cada ParcelamentoQuantidadeReparcelamento linha repositorioUtil.remover(parcelamentoQuantidadeReparcelamentoLinhaRemovida); } catch (ErroRepositorioException e) { e.printStackTrace(); } } } if (collectionParcelamentoDescontoInatividadeLinhaRemovidas != null && !collectionParcelamentoDescontoInatividadeLinhaRemovidas.isEmpty()) { Iterator parcelamentoDescontoInatividadeLinhaRemovidasIterator = collectionParcelamentoDescontoInatividadeLinhaRemovidas .iterator(); while (parcelamentoDescontoInatividadeLinhaRemovidasIterator.hasNext()) { // remove cada ParcelamentoDescontoInatividade linha ParcelamentoDescontoInatividade parcelamentoDescontoInatividadeLinhaRemovida = (ParcelamentoDescontoInatividade) parcelamentoDescontoInatividadeLinhaRemovidasIterator .next(); // ------------ REGISTRAR TRANSA��O ---------------------------- parcelamentoDescontoInatividadeLinhaRemovida.setOperacaoEfetuada(operacaoEfetuada); parcelamentoDescontoInatividadeLinhaRemovida.adicionarUsuario(usuarioLogado, UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO); registradorOperacao.registrarOperacao(parcelamentoDescontoInatividadeLinhaRemovida); // ------------ REGISTRAR TRANSA��O ---------------------------- try { repositorioUtil.remover(parcelamentoDescontoInatividadeLinhaRemovida); } catch (ErroRepositorioException e) { e.printStackTrace(); } } } if (collectionParcelamentoDescontoInatividadeAVistaLinhaRemovidas != null && !collectionParcelamentoDescontoInatividadeAVistaLinhaRemovidas.isEmpty()) { Iterator parcelamentoDescontoInatividadeLinhaRemovidasIterator = collectionParcelamentoDescontoInatividadeAVistaLinhaRemovidas .iterator(); while (parcelamentoDescontoInatividadeLinhaRemovidasIterator.hasNext()) { // remove cada ParcelamentoDescontoInatividade linha ParcDesctoInativVista parcelamentoDescontoInatividadeLinhaRemovida = (ParcDesctoInativVista) parcelamentoDescontoInatividadeLinhaRemovidasIterator .next(); // ------------ REGISTRAR TRANSA��O ---------------------------- parcelamentoDescontoInatividadeLinhaRemovida.setOperacaoEfetuada(operacaoEfetuada); parcelamentoDescontoInatividadeLinhaRemovida.adicionarUsuario(usuarioLogado, UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO); registradorOperacao.registrarOperacao(parcelamentoDescontoInatividadeLinhaRemovida); // ------------ REGISTRAR TRANSA��O ---------------------------- try { repositorioUtil.remover(parcelamentoDescontoInatividadeLinhaRemovida); } catch (ErroRepositorioException e) { e.printStackTrace(); } } } if (collectionParcelamentoDescontoAntiguidadeLinhaRemovidas != null && !collectionParcelamentoDescontoAntiguidadeLinhaRemovidas.isEmpty()) { Iterator parcelamentoDescontoAntiguidadeLinhaRemovidasIterator = collectionParcelamentoDescontoAntiguidadeLinhaRemovidas .iterator(); while (parcelamentoDescontoAntiguidadeLinhaRemovidasIterator.hasNext()) { // remove cada ParcelamentoDescontoAntiguidade linha ParcelamentoDescontoAntiguidade parcelamentoDescontoAntiguidadeLinhaRemovida = (ParcelamentoDescontoAntiguidade) parcelamentoDescontoAntiguidadeLinhaRemovidasIterator .next(); // ------------ REGISTRAR TRANSA��O ---------------------------- parcelamentoDescontoAntiguidadeLinhaRemovida.setOperacaoEfetuada(operacaoEfetuada); parcelamentoDescontoAntiguidadeLinhaRemovida.adicionarUsuario(usuarioLogado, UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO); registradorOperacao.registrarOperacao(parcelamentoDescontoAntiguidadeLinhaRemovida); // ------------ REGISTRAR TRANSA��O ---------------------------- try { repositorioUtil.remover(parcelamentoDescontoAntiguidadeLinhaRemovida); } catch (ErroRepositorioException e) { e.printStackTrace(); } } } if (collectionParcelamentoQuantidadePrestacaoLinhaRemovidas != null && !collectionParcelamentoQuantidadePrestacaoLinhaRemovidas.isEmpty()) { Iterator parcelamentoQuantidadePrestacaoLinhaRemovidasIterator = collectionParcelamentoQuantidadePrestacaoLinhaRemovidas .iterator(); while (parcelamentoQuantidadePrestacaoLinhaRemovidasIterator.hasNext()) { // remove cada ParcelamentoQuantidadePrestacao linha ParcelamentoQuantidadePrestacaoHelper parcelamentoQuantidadePrestacaoLinhaRemovida = (ParcelamentoQuantidadePrestacaoHelper) parcelamentoQuantidadePrestacaoLinhaRemovidasIterator .next(); // ------------ REGISTRAR TRANSA��O ---------------------------- parcelamentoQuantidadePrestacaoLinhaRemovida.getParcelamentoQuantidadePrestacao().setOperacaoEfetuada(operacaoEfetuada); parcelamentoQuantidadePrestacaoLinhaRemovida.getParcelamentoQuantidadePrestacao().adicionarUsuario(usuarioLogado, UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO); registradorOperacao.registrarOperacao(parcelamentoQuantidadePrestacaoLinhaRemovida.getParcelamentoQuantidadePrestacao()); // ------------ REGISTRAR TRANSA��O ---------------------------- try { repositorioUtil.remover(parcelamentoQuantidadePrestacaoLinhaRemovida.getParcelamentoQuantidadePrestacao()); } catch (ErroRepositorioException e) { e.printStackTrace(); } } } } /** * * Filtrar os Comandos de A��o de Cobran�a tipo comando Cronograma * * [UC0326] - Filtrar Comandos de A��o de Cobran�a * * @author Rafael Santos * @date 10/05/2006 * * @return filtroCobrancaAcaoAtividadeCronograma * @throws ControladorException */ public FiltroCobrancaAcaoAtividadeCronograma construirFiltroCobrancaAcaoAtividadeCronograma( String anoMesPeriodoReferenciaCobrancaInicial, String anoMesPeriodoReferenciaCobrancaFinal, String[] grupoCobranca, String[] acaoCobranca, String[] atividadeCobranca, String dataPeriodoPrevisaoComandoInicial, String dataPeriodoPrevisaoComandoFinal, String dataPeriodoComandoInicial, String dataPeriodoComandoFinal, String dataPeriodoRealizacaoComandoInicial, String dataPeriodoRealizacaoComandoFinal, String intervaloValorDocumentosInicial, String intervaloValorDocumentosFinal, String intervaloQuantidadeDocumentosInicial, String intervaloQuantidadeDocumentosFinal, String intervaloQuantidadeItensDocumentosInicial, String intervaloQuantidadeItensDocumentosFinal, String situacaoCronograma, String situacaoComando) throws ControladorException { FiltroCobrancaAcaoAtividadeCronograma filtroCobrancaAcaoAtividadeCronograma = new FiltroCobrancaAcaoAtividadeCronograma(); boolean peloMenosUmParametroInformado = false; // validar Per�odo de Refer�ncia da Cobran�a // [FS0001] - Validar Refer�ncia // [FS0002] - Verificar refer�ncia final menor que refer�ncia inicial this.getControladorUtil().validarAnoMesInicialFinalPeriodo(anoMesPeriodoReferenciaCobrancaInicial, anoMesPeriodoReferenciaCobrancaFinal, "Per�odo de Refer�ncia da Cobran�a Inicial", "Per�odo de Refer�ncia da Cobran�a Final", "atencao.referencia.final.menor.referencia.inicial"); // Per�odo de Refer�ncia da Cobran�a if ((anoMesPeriodoReferenciaCobrancaInicial != null && !anoMesPeriodoReferenciaCobrancaInicial.equals("")) && (anoMesPeriodoReferenciaCobrancaFinal != null && !anoMesPeriodoReferenciaCobrancaFinal.equals(""))) { peloMenosUmParametroInformado = true; String anoInicial = anoMesPeriodoReferenciaCobrancaInicial.substring(3, 7); String mesInicial = anoMesPeriodoReferenciaCobrancaInicial.substring(0, 2); String anoFinal = anoMesPeriodoReferenciaCobrancaFinal.substring(3, 7); String mesFinal = anoMesPeriodoReferenciaCobrancaFinal.substring(0, 2); Intervalo intervalo = new Intervalo(FiltroCobrancaAcaoAtividadeCronograma.COBRANCA_GRUPO_CRONOGRAMA_MES_MES_ANO, anoInicial + mesInicial, anoFinal + mesFinal); filtroCobrancaAcaoAtividadeCronograma.adicionarParametro(intervalo); } // grupo cobran�a if (grupoCobranca != null && grupoCobranca.length > 0) { peloMenosUmParametroInformado = true; int i = 0; if (grupoCobranca != null) { while (i < grupoCobranca.length) { if (!grupoCobranca[i].equals("")) { peloMenosUmParametroInformado = true; if (i + 1 < grupoCobranca.length) { filtroCobrancaAcaoAtividadeCronograma.adicionarParametro(new ParametroSimples( FiltroCobrancaAcaoAtividadeCronograma.COBRANCA_GRUPO_CRONOGRAMA_MES_COBRANCA_GRUPO_ID, grupoCobranca[i], ConectorOr.CONECTOR_OR, (grupoCobranca.length))); } else { filtroCobrancaAcaoAtividadeCronograma .adicionarParametro(new ParametroSimples( FiltroCobrancaAcaoAtividadeCronograma.COBRANCA_GRUPO_CRONOGRAMA_MES_COBRANCA_GRUPO_ID, grupoCobranca[i])); } } i++; } } } // a�ao cobran�a if (acaoCobranca != null && acaoCobranca.length > 0) { peloMenosUmParametroInformado = true; int i = 0; if (acaoCobranca != null) { while (i < acaoCobranca.length) { if (!acaoCobranca[i].equals("")) { peloMenosUmParametroInformado = true; if (i + 1 < acaoCobranca.length) { filtroCobrancaAcaoAtividadeCronograma.adicionarParametro(new ParametroSimples( FiltroCobrancaAcaoAtividadeCronograma.COBRANCA_ACAO_CRONOGRAMA_COBRANCA_ACAO_ID, acaoCobranca[i], ConectorOr.CONECTOR_OR, (acaoCobranca.length))); } else { filtroCobrancaAcaoAtividadeCronograma.adicionarParametro(new ParametroSimples( FiltroCobrancaAcaoAtividadeCronograma.COBRANCA_ACAO_CRONOGRAMA_COBRANCA_ACAO_ID, acaoCobranca[i])); } } i++; } } } // atividade cobran�a if (atividadeCobranca != null && atividadeCobranca.length > 0) { peloMenosUmParametroInformado = true; int i = 0; if (atividadeCobranca != null) { while (i < atividadeCobranca.length) { if (!atividadeCobranca[i].equals("")) { peloMenosUmParametroInformado = true; if (i + 1 < atividadeCobranca.length) { filtroCobrancaAcaoAtividadeCronograma.adicionarParametro(new ParametroSimples( FiltroCobrancaAcaoAtividadeCronograma.ID_COBRANCA_ATIVIDADE, atividadeCobranca[i], ConectorOr.CONECTOR_OR, (atividadeCobranca.length))); } else { filtroCobrancaAcaoAtividadeCronograma.adicionarParametro(new ParametroSimples( FiltroCobrancaAcaoAtividadeCronograma.ID_COBRANCA_ATIVIDADE, atividadeCobranca[i])); } } i++; } } } // validar Per�odo de Previs�o do Comando // [FS0004] - Validar Data // [FS0005] - Verificar data final menor que data inicial this.getControladorUtil().verificarDataInicialFinalPeriodo(dataPeriodoPrevisaoComandoInicial, dataPeriodoPrevisaoComandoFinal, "Per�odo de Previs�o do Comando Inicial", "Per�odo de Previs�o do Comando Final", "atencao.data_final_periodo.anterior.data_inicial_periodo"); // Per�odo de Previs�o do Comando if ((dataPeriodoPrevisaoComandoInicial != null && !dataPeriodoPrevisaoComandoInicial.equals("")) && (dataPeriodoPrevisaoComandoFinal != null && !dataPeriodoPrevisaoComandoFinal.equals(""))) { peloMenosUmParametroInformado = true; String anoInicial = dataPeriodoPrevisaoComandoInicial.substring(6, 10); String mesInicial = dataPeriodoPrevisaoComandoInicial.substring(3, 5); String diaInicial = dataPeriodoPrevisaoComandoInicial.substring(0, 2); String anoFinal = dataPeriodoPrevisaoComandoFinal.substring(6, 10); String mesFinal = dataPeriodoPrevisaoComandoFinal.substring(3, 5); String diaFinal = dataPeriodoPrevisaoComandoFinal.substring(0, 2); Calendar periodoInicial = new GregorianCalendar(); periodoInicial.set(Calendar.DATE, new Integer(diaInicial).intValue()); periodoInicial.set(Calendar.MONTH, (new Integer(mesInicial).intValue() - 1)); periodoInicial.set(Calendar.YEAR, new Integer(anoInicial).intValue()); periodoInicial.set(Calendar.HOUR_OF_DAY, 00); periodoInicial.set(Calendar.MINUTE, 00); periodoInicial.set(Calendar.SECOND, 00); Calendar periodoFinal = new GregorianCalendar(); periodoFinal.set(Calendar.DATE, new Integer(diaFinal).intValue()); periodoFinal.set(Calendar.MONTH, (new Integer(mesFinal).intValue() - 1)); periodoFinal.set(Calendar.YEAR, new Integer(anoFinal).intValue()); periodoFinal.set(Calendar.HOUR_OF_DAY, 23); periodoFinal.set(Calendar.MINUTE, 59); periodoFinal.set(Calendar.SECOND, 59); Intervalo intervalo = new Intervalo(FiltroCobrancaAcaoAtividadeCronograma.DATA_PREVISTA, periodoInicial, periodoFinal); filtroCobrancaAcaoAtividadeCronograma.adicionarParametro(intervalo); } // validar Per�odo do Comando // [FS0004] - Validar Data // [FS0005] - Verificar data final menor que data inicial this.getControladorUtil().verificarDataInicialFinalPeriodo(dataPeriodoComandoInicial, dataPeriodoComandoFinal, "Per�odo do Comando Inicial", "Per�odo do Comando Final", "atencao.data_final_periodo.anterior.data_inicial_periodo"); // Per�odo do Comando if ((dataPeriodoComandoInicial != null && !dataPeriodoComandoInicial.equals("")) && (dataPeriodoComandoFinal != null && !dataPeriodoComandoFinal.equals(""))) { peloMenosUmParametroInformado = true; String anoInicial = dataPeriodoComandoInicial.substring(6, 10); String mesInicial = dataPeriodoComandoInicial.substring(3, 5); String diaInicial = dataPeriodoComandoInicial.substring(0, 2); String anoFinal = dataPeriodoComandoFinal.substring(6, 10); String mesFinal = dataPeriodoComandoFinal.substring(3, 5); String diaFinal = dataPeriodoComandoFinal.substring(0, 2); Calendar periodoInicial = new GregorianCalendar(); periodoInicial.set(Calendar.DATE, new Integer(diaInicial).intValue()); periodoInicial.set(Calendar.MONTH, (new Integer(mesInicial).intValue() - 1)); periodoInicial.set(Calendar.YEAR, new Integer(anoInicial).intValue()); periodoInicial.set(Calendar.HOUR_OF_DAY, 0); periodoInicial.set(Calendar.MINUTE, 00); periodoInicial.set(Calendar.SECOND, 00); Calendar periodoFinal = new GregorianCalendar(); periodoFinal.set(Calendar.DATE, new Integer(diaFinal).intValue()); periodoFinal.set(Calendar.MONTH, (new Integer(mesFinal).intValue() - 1)); periodoFinal.set(Calendar.YEAR, new Integer(anoFinal).intValue()); periodoFinal.set(Calendar.HOUR_OF_DAY, 23); periodoFinal.set(Calendar.MINUTE, 59); periodoFinal.set(Calendar.SECOND, 59); Intervalo intervalo = new Intervalo(FiltroCobrancaAcaoAtividadeCronograma.COMANDO, periodoInicial, periodoFinal); filtroCobrancaAcaoAtividadeCronograma.adicionarParametro(intervalo); } // validar Per�odo de Realiza��o do Comando // [FS0004] - Validar Data // [FS0005] - Verificar data final menor que data inicial this.getControladorUtil().verificarDataInicialFinalPeriodo(dataPeriodoRealizacaoComandoInicial, dataPeriodoRealizacaoComandoFinal, "Per�odo de Realiza��o do Comando Inicial", "Per�odo de Realiza��o do Comando Final", "atencao.data_final_periodo.anterior.data_inicial_periodo"); // Per�odo de Realiza��o do Comando // Per�odo Realizacao Comando if ((dataPeriodoRealizacaoComandoInicial != null && !dataPeriodoRealizacaoComandoInicial.equals("")) && (dataPeriodoRealizacaoComandoFinal != null && !dataPeriodoRealizacaoComandoFinal.equals(""))) { peloMenosUmParametroInformado = true; String anoInicial = dataPeriodoRealizacaoComandoInicial.substring(6, 10); String mesInicial = dataPeriodoRealizacaoComandoInicial.substring(3, 5); String diaInicial = dataPeriodoRealizacaoComandoInicial.substring(0, 2); String anoFinal = dataPeriodoRealizacaoComandoFinal.substring(6, 10); String mesFinal = dataPeriodoRealizacaoComandoFinal.substring(3, 5); String diaFinal = dataPeriodoRealizacaoComandoFinal.substring(0, 2); Calendar periodoInicial = new GregorianCalendar(); periodoInicial.set(Calendar.DATE, new Integer(diaInicial).intValue()); periodoInicial.set(Calendar.MONTH, (new Integer(mesInicial).intValue() - 1)); periodoInicial.set(Calendar.YEAR, new Integer(anoInicial).intValue()); periodoInicial.set(Calendar.HOUR_OF_DAY, 0); periodoInicial.set(Calendar.MINUTE, 0); periodoInicial.set(Calendar.SECOND, 0); Calendar periodoFinal = new GregorianCalendar(); periodoFinal.set(Calendar.DATE, new Integer(diaFinal).intValue()); periodoFinal.set(Calendar.MONTH, (new Integer(mesFinal).intValue() - 1)); periodoFinal.set(Calendar.YEAR, new Integer(anoFinal).intValue()); periodoFinal.set(Calendar.HOUR_OF_DAY, 23); periodoFinal.set(Calendar.MINUTE, 59); periodoFinal.set(Calendar.SECOND, 59); Intervalo intervalo = new Intervalo(FiltroCobrancaAcaoAtividadeCronograma.REALIZACAO, periodoInicial, periodoFinal); filtroCobrancaAcaoAtividadeCronograma.adicionarParametro(intervalo); } // Intervalo de Valor dos Documentos if ((intervaloValorDocumentosInicial != null && !intervaloValorDocumentosInicial.equals("")) && (intervaloValorDocumentosFinal != null && !intervaloValorDocumentosFinal.equals(""))) { peloMenosUmParametroInformado = true; BigDecimal valorDocumentosInicial = Util.formatarMoedaRealparaBigDecimal(intervaloValorDocumentosInicial); BigDecimal valorDocumentosFinal = Util.formatarMoedaRealparaBigDecimal(intervaloValorDocumentosFinal); Intervalo intervalo = new Intervalo(FiltroCobrancaAcaoAtividadeCronograma.VALOR_DOCUMENTOS, valorDocumentosInicial, valorDocumentosFinal); filtroCobrancaAcaoAtividadeCronograma.adicionarParametro(intervalo); } // Intervalo de Quantidade dos Documentos if ((intervaloQuantidadeDocumentosInicial != null && !intervaloQuantidadeDocumentosInicial.equals("")) && (intervaloQuantidadeDocumentosFinal != null && !intervaloQuantidadeDocumentosFinal.equals(""))) { peloMenosUmParametroInformado = true; Intervalo intervalo = new Intervalo(FiltroCobrancaAcaoAtividadeCronograma.QUANTIDADE_DOCUMENTOS, intervaloQuantidadeDocumentosInicial, intervaloQuantidadeDocumentosFinal); filtroCobrancaAcaoAtividadeCronograma.adicionarParametro(intervalo); } // Intervalo de Quantidade Itens dos Documentos if ((intervaloQuantidadeItensDocumentosInicial != null && !intervaloQuantidadeItensDocumentosInicial.equals("")) && (intervaloQuantidadeItensDocumentosFinal != null && !intervaloQuantidadeItensDocumentosFinal.equals(""))) { peloMenosUmParametroInformado = true; Intervalo intervalo = new Intervalo(FiltroCobrancaAcaoAtividadeCronograma.QUANTIDADE_ITENS_COBRADOS, intervaloQuantidadeItensDocumentosInicial, intervaloQuantidadeItensDocumentosFinal); filtroCobrancaAcaoAtividadeCronograma.adicionarParametro(intervalo); } // Situa��o do Cronograma // [SB003] - Seleciona Comandos do Crongrama por Situa��o do Cronograma if (situacaoCronograma != null && !situacaoCronograma.equals("")) { if (situacaoCronograma.equals("Comandados")) { filtroCobrancaAcaoAtividadeCronograma .adicionarParametro(new ParametroNaoNulo(FiltroCobrancaAcaoAtividadeCronograma.COMANDO)); } else if (situacaoCronograma.equals("NaoComandados")) { filtroCobrancaAcaoAtividadeCronograma.adicionarParametro(new ParametroNulo(FiltroCobrancaAcaoAtividadeCronograma.COMANDO)); } } // Situa��o do Comando // [SB0004] - Seleciona Comandos do Cronograma por Situa��o do Comando if (situacaoComando != null && !situacaoComando.equals("")) { peloMenosUmParametroInformado = true; if (situacaoComando.equals("Realizados")) { filtroCobrancaAcaoAtividadeCronograma.adicionarParametro(new ParametroNaoNulo( FiltroCobrancaAcaoAtividadeCronograma.REALIZACAO)); } else if (situacaoComando.equals("NaoRealizados")) { filtroCobrancaAcaoAtividadeCronograma .adicionarParametro(new ParametroNulo(FiltroCobrancaAcaoAtividadeCronograma.REALIZACAO)); } } // [FS0006] - Verificar situa��o do crongrama e per�odo do comando if ((situacaoCronograma != null && !situacaoCronograma.equals("") && situacaoCronograma.equals("NaoComandados")) && ((dataPeriodoComandoInicial != null && !dataPeriodoComandoInicial.equals("")) && (dataPeriodoComandoFinal != null && !dataPeriodoComandoFinal .equals("")))) { throw new ControladorException("atencao.periodo_comando.informado.situacao_comando"); } // [FS0007] - Verificar situa��o do comando e per�odo de realiza��o do // comando if ((situacaoComando != null && !situacaoComando.equals("") && situacaoComando.equals("NaoRealizados")) && ((dataPeriodoRealizacaoComandoFinal != null && !dataPeriodoRealizacaoComandoFinal.equals("")) && (dataPeriodoRealizacaoComandoInicial != null && !dataPeriodoRealizacaoComandoInicial .equals("")))) { throw new ControladorException("atencao.periodo_realizacao.informado.situacao_comando"); } // Erro caso o usu�rio mandou filtrar sem nenhum par�metro if (!peloMenosUmParametroInformado) { throw new ControladorException("atencao.filtro.nenhum_parametro_informado"); } filtroCobrancaAcaoAtividadeCronograma .adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAcaoAtividadeCronograma.COBRANCA_ATIVIDADE); filtroCobrancaAcaoAtividadeCronograma .adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAcaoAtividadeCronograma.COBRANCA_GRUPO_CRONOGRAMA_MES); filtroCobrancaAcaoAtividadeCronograma .adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAcaoAtividadeCronograma.COBRANCA_GRUPO_CRONOGRAMA_MES_COBRANCA_GRUPO); filtroCobrancaAcaoAtividadeCronograma .adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAcaoAtividadeCronograma.COBRANCA_ACAO_CRONOGRAMA_COBRANCA_ACAO); return filtroCobrancaAcaoAtividadeCronograma; } /** * Consultar Comando de A��o de Cobran�a * * [UC0325] - Consultar Comandos de A��o de Cobran�a * * @author Rafael Santos * @date 10/05/2006 * * @param filtroCobrancaAcaoAtividadeCronograma * @return * @throws ControladorException */ public Collection<CobrancaAcaoAtividadeCronograma> pesquisarCobrancaAcaoAtividadeCronograma( FiltroCobrancaAcaoAtividadeCronograma filtroCobrancaAcaoAtividadeCronograma) throws ControladorException { Collection colecaoCobrancaAcaoAtividadeCronograma; colecaoCobrancaAcaoAtividadeCronograma = this.getControladorUtil().pesquisar(filtroCobrancaAcaoAtividadeCronograma, CobrancaAcaoAtividadeCronograma.class.getName()); if (colecaoCobrancaAcaoAtividadeCronograma == null || colecaoCobrancaAcaoAtividadeCronograma.isEmpty()) { throw new ControladorException("atencao.pesquisa.nenhumresultado", null, "Comando A��o de Cobran�a - Cronograma"); } return colecaoCobrancaAcaoAtividadeCronograma; } /** * * [UC0325] Consultar Comandos A��o de Cobran�a * * Consultar Comando Cobranca A��o Atividade Cobranca * * [SB0002] - Apresenta Comandos de A��o de cobran�a Eventuais * * @author Rafael Santos * @date 11/05/2006 * * @return * @throws ControladorException */ public CobrancaAcaoAtividadeCronograma obterCobrancaAcaoAtividadeCronograma(String idCobrancaAcaoAtividadeCronograma) throws ControladorException { Collection colecaoAtividadeCronogramaAcaoCobrancaComandadas = null; FiltroCobrancaAcaoAtividadeCronograma filtroCobrancaAcaoAtividadeCronograma = new FiltroCobrancaAcaoAtividadeCronograma(); filtroCobrancaAcaoAtividadeCronograma.adicionarParametro(new ParametroSimples(FiltroCobrancaAcaoAtividadeCronograma.ID, idCobrancaAcaoAtividadeCronograma)); filtroCobrancaAcaoAtividadeCronograma .adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAcaoAtividadeCronograma.COBRANCA_ATIVIDADE); filtroCobrancaAcaoAtividadeCronograma .adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAcaoAtividadeCronograma.COBRANCA_GRUPO); filtroCobrancaAcaoAtividadeCronograma.adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAcaoAtividadeCronograma.COBRANCA_ACAO); colecaoAtividadeCronogramaAcaoCobrancaComandadas = this.getControladorUtil().pesquisar(filtroCobrancaAcaoAtividadeCronograma, CobrancaAcaoAtividadeCronograma.class.getName()); if (colecaoAtividadeCronogramaAcaoCobrancaComandadas == null || colecaoAtividadeCronogramaAcaoCobrancaComandadas.isEmpty()) { throw new ControladorException("atencao.nao.atividade.cobranca.comandadas"); } return (CobrancaAcaoAtividadeCronograma) colecaoAtividadeCronogramaAcaoCobrancaComandadas.iterator().next(); } /** * * Filtrar os Comandos de A��o de Cobran�a tipo comando Eventual * * [UC0326] - Filtrar Comandos de A��o de Cobran�a * * @author Rafael Santos * @date 12/05/2006 * * @return filtroCobrancaAcaoAtividadeComando * @throws ControladorException */ public FiltroCobrancaAcaoAtividadeComando construirFiltroCobrancaAcaoAtividadeEventual(String[] grupoCobranca, String[] acaoCobranca, String[] atividadeCobranca, String anoMesPeriodoReferenciaContasInicial, String anoMesPeriodoReferenciaContasFinal, String dataPeriodoComandoInicial, String dataPeriodoComandoFinal, String dataPeriodoRealizacaoComandoInicial, String dataPeriodoRealizacaoComandoFinal, String dataPeriodoVencimentoContasInicial, String dataPeriodoVencimentoContasFinal, String intervaloValorDocumentosInicial, String intervaloValorDocumentosFinal, String intervaloQuantidadeDocumentosInicial, String intervaloQuantidadeDocumentosFinal, String intervaloQuantidadeItensDocumentosInicial, String intervaloQuantidadeItensDocumentosFinal, String situacaoComando, String indicadorCriterio, String idGerenciaRegional, String idLocalidadeInicial, String idLocalidadeFinal, String codigoSetorComercialInicial, String codigoSetorComercialFinal, String idRotaInicial, String idRotaFinal, String idCliente, String idClienteRelacaoTipo, String criterioCobranca, String unidadeNegocio, String[] idCobrancaAcaoAtividadeComando, String dataEmissaoInicial, String dataEmissaoFinal, String consumoMedioInicial, String consumoMedioFinal, String tipoConsumo, String periodoInicialFiscalizacao, String periodoFinalFiscalizacao, String[] situacaoFiscalizacao, String numeroQuadraInicial, String numeroQuadraFinal) throws ControladorException { FiltroCobrancaAcaoAtividadeComando filtroCobrancaAcaoAtividadeComando = new FiltroCobrancaAcaoAtividadeComando(); boolean peloMenosUmParametroInformado = false; // per�odo de emiss�o/comando if (dataEmissaoInicial != null && dataEmissaoFinal != null) { if ((dataEmissaoInicial.trim().length() == 10) && (dataEmissaoFinal.trim().length() == 10)) { Date dataComandoInicial = Util.converteStringParaDateHora(dataEmissaoInicial + " 00:00:00"); Date dataComandoFinal = Util.converteStringParaDateHora(dataEmissaoFinal + " 23:59:59"); filtroCobrancaAcaoAtividadeComando.adicionarParametro(new Intervalo(FiltroCobrancaAcaoAtividadeComando.COMANDO, dataComandoInicial, dataComandoFinal)); peloMenosUmParametroInformado = true; } } // T�tulo do comando/Id do comando if (idCobrancaAcaoAtividadeComando != null && idCobrancaAcaoAtividadeComando.length > 0) { Collection colecaoIdsFiltro = new ArrayList(); for (int i = 0; i < idCobrancaAcaoAtividadeComando.length; i++) { if (!idCobrancaAcaoAtividadeComando[i].equals("")) { colecaoIdsFiltro.add(new Integer(idCobrancaAcaoAtividadeComando[i])); } } if (!colecaoIdsFiltro.isEmpty()) { filtroCobrancaAcaoAtividadeComando.adicionarParametro(new ParametroSimplesIn(FiltroCobrancaAcaoAtividadeComando.ID, colecaoIdsFiltro)); peloMenosUmParametroInformado = true; } } // Intervalo de Valor dos Documentos if ((intervaloValorDocumentosInicial != null && !intervaloValorDocumentosInicial.equals("")) && (intervaloValorDocumentosFinal != null && !intervaloValorDocumentosFinal.equals(""))) { peloMenosUmParametroInformado = true; BigDecimal valorDocumentosInicial = Util.formatarMoedaRealparaBigDecimal(intervaloValorDocumentosInicial); BigDecimal valorDocumentosFinal = Util.formatarMoedaRealparaBigDecimal(intervaloValorDocumentosFinal); Intervalo intervalo = new Intervalo(FiltroCobrancaAcaoAtividadeComando.VALOR_DOCUMENTOS, valorDocumentosInicial, valorDocumentosFinal); filtroCobrancaAcaoAtividadeComando.adicionarParametro(intervalo); } // Intervalo de Quantidade dos Documentos if ((intervaloQuantidadeDocumentosInicial != null && !intervaloQuantidadeDocumentosInicial.equals("")) && (intervaloQuantidadeDocumentosFinal != null && !intervaloQuantidadeDocumentosFinal.equals(""))) { peloMenosUmParametroInformado = true; Intervalo intervalo = new Intervalo(FiltroCobrancaAcaoAtividadeComando.QUANTIDADE_DOCUMENTOS, intervaloQuantidadeDocumentosInicial, intervaloQuantidadeDocumentosFinal); filtroCobrancaAcaoAtividadeComando.adicionarParametro(intervalo); } // Intervalo de Quantidade Itens dos Documentos if ((intervaloQuantidadeItensDocumentosInicial != null && !intervaloQuantidadeItensDocumentosInicial.equals("")) && (intervaloQuantidadeItensDocumentosFinal != null && !intervaloQuantidadeItensDocumentosFinal.equals(""))) { peloMenosUmParametroInformado = true; Intervalo intervalo = new Intervalo(FiltroCobrancaAcaoAtividadeComando.QUANTIDADE_ITENS_COBRADOS, intervaloQuantidadeItensDocumentosInicial, intervaloQuantidadeItensDocumentosFinal); filtroCobrancaAcaoAtividadeComando.adicionarParametro(intervalo); } // grupo cobran�a if (grupoCobranca != null && grupoCobranca.length > 0) { peloMenosUmParametroInformado = true; int i = 0; if (grupoCobranca != null) { while (i < grupoCobranca.length) { if (!grupoCobranca[i].equals("")) { peloMenosUmParametroInformado = true; if (i + 1 < grupoCobranca.length) { filtroCobrancaAcaoAtividadeComando.adicionarParametro(new ParametroSimples( FiltroCobrancaAcaoAtividadeComando.COBRANCA_GRUPO, grupoCobranca[i], ConectorOr.CONECTOR_OR, (grupoCobranca.length))); } else { filtroCobrancaAcaoAtividadeComando.adicionarParametro(new ParametroSimples( FiltroCobrancaAcaoAtividadeComando.COBRANCA_GRUPO, grupoCobranca[i])); } } i++; } } } // a�ao cobran�a if (acaoCobranca != null && acaoCobranca.length > 0) { peloMenosUmParametroInformado = true; int i = 0; if (acaoCobranca != null) { while (i < acaoCobranca.length) { if (!acaoCobranca[i].equals("")) { peloMenosUmParametroInformado = true; if (i + 1 < acaoCobranca.length) { filtroCobrancaAcaoAtividadeComando.adicionarParametro(new ParametroSimples( FiltroCobrancaAcaoAtividadeComando.COBRANCA_ACAO, acaoCobranca[i], ConectorOr.CONECTOR_OR, (acaoCobranca.length))); } else { filtroCobrancaAcaoAtividadeComando.adicionarParametro(new ParametroSimples( FiltroCobrancaAcaoAtividadeComando.COBRANCA_ACAO, acaoCobranca[i])); } } i++; } } } // atividade cobran�a if (atividadeCobranca != null && atividadeCobranca.length > 0) { peloMenosUmParametroInformado = true; int i = 0; if (atividadeCobranca != null) { while (i < atividadeCobranca.length) { if (!atividadeCobranca[i].equals("")) { peloMenosUmParametroInformado = true; if (i + 1 < atividadeCobranca.length) { filtroCobrancaAcaoAtividadeComando.adicionarParametro(new ParametroSimples( FiltroCobrancaAcaoAtividadeComando.ID_COBRANCA_ATIVIDADE, atividadeCobranca[i], ConectorOr.CONECTOR_OR, (atividadeCobranca.length))); } else { filtroCobrancaAcaoAtividadeComando.adicionarParametro(new ParametroSimples( FiltroCobrancaAcaoAtividadeComando.ID_COBRANCA_ATIVIDADE, atividadeCobranca[i])); } } i++; } } } // validar Per�odo do Comando // [FS0004] - Validar Data // [FS0005] - Verificar data final menor que data inicial this.getControladorUtil().verificarDataInicialFinalPeriodo(dataPeriodoComandoInicial, dataPeriodoComandoFinal, "Per�odo do Comando Inicial", "Per�odo do Comando Final", "atencao.data_final_periodo.anterior.data_inicial_periodo"); // Per�odo do Comando if ((dataPeriodoComandoInicial != null && !dataPeriodoComandoInicial.equals("")) && (dataPeriodoComandoFinal != null && !dataPeriodoComandoFinal.equals(""))) { peloMenosUmParametroInformado = true; String anoInicial = dataPeriodoComandoInicial.substring(6, 10); String mesInicial = dataPeriodoComandoInicial.substring(3, 5); String diaInicial = dataPeriodoComandoInicial.substring(0, 2); String anoFinal = dataPeriodoComandoFinal.substring(6, 10); String mesFinal = dataPeriodoComandoFinal.substring(3, 5); String diaFinal = dataPeriodoComandoFinal.substring(0, 2); Calendar periodoInicial = new GregorianCalendar(); periodoInicial.set(Calendar.DATE, new Integer(diaInicial).intValue()); periodoInicial.set(Calendar.MONTH, (new Integer(mesInicial).intValue() - 1)); periodoInicial.set(Calendar.YEAR, new Integer(anoInicial).intValue()); periodoInicial.set(Calendar.HOUR_OF_DAY, 00); periodoInicial.set(Calendar.MINUTE, 00); periodoInicial.set(Calendar.SECOND, 00); Calendar periodoFinal = new GregorianCalendar(); periodoFinal.set(Calendar.DATE, new Integer(diaFinal).intValue()); periodoFinal.set(Calendar.MONTH, (new Integer(mesFinal).intValue() - 1)); periodoFinal.set(Calendar.YEAR, new Integer(anoFinal).intValue()); periodoFinal.set(Calendar.HOUR_OF_DAY, 23); periodoFinal.set(Calendar.MINUTE, 59); periodoFinal.set(Calendar.SECOND, 59); Intervalo intervalo = new Intervalo(FiltroCobrancaAcaoAtividadeComando.COMANDO, periodoInicial, periodoFinal); filtroCobrancaAcaoAtividadeComando.adicionarParametro(intervalo); } // validar Per�odo de Realiza��o do Comando // [FS0004] - Validar Data // [FS0005] - Verificar data final menor que data inicial this.getControladorUtil().verificarDataInicialFinalPeriodo(dataPeriodoRealizacaoComandoInicial, dataPeriodoRealizacaoComandoFinal, "Per�odo de Realiza��o do Comando Inicial", "Per�odo de Realiza��o do Comando Final", "atencao.data_final_periodo.anterior.data_inicial_periodo"); // Per�odo de Realiza��o do Comando // Per�odo Realizacao Comando if ((dataPeriodoRealizacaoComandoInicial != null && !dataPeriodoRealizacaoComandoInicial.equals("")) && (dataPeriodoRealizacaoComandoFinal != null && !dataPeriodoRealizacaoComandoFinal.equals(""))) { peloMenosUmParametroInformado = true; String anoInicial = dataPeriodoRealizacaoComandoInicial.substring(6, 10); String mesInicial = dataPeriodoRealizacaoComandoInicial.substring(3, 5); String diaInicial = dataPeriodoRealizacaoComandoInicial.substring(0, 2); String anoFinal = dataPeriodoRealizacaoComandoFinal.substring(6, 10); String mesFinal = dataPeriodoRealizacaoComandoFinal.substring(3, 5); String diaFinal = dataPeriodoRealizacaoComandoFinal.substring(0, 2); Calendar periodoInicial = new GregorianCalendar(); periodoInicial.set(Calendar.DATE, new Integer(diaInicial).intValue()); periodoInicial.set(Calendar.MONTH, (new Integer(mesInicial).intValue() - 1)); periodoInicial.set(Calendar.YEAR, new Integer(anoInicial).intValue()); periodoInicial.set(Calendar.HOUR_OF_DAY, 0); periodoInicial.set(Calendar.MINUTE, 00); periodoInicial.set(Calendar.SECOND, 00); Calendar periodoFinal = new GregorianCalendar(); periodoFinal.set(Calendar.DATE, new Integer(diaFinal).intValue()); periodoFinal.set(Calendar.MONTH, (new Integer(mesFinal).intValue() - 1)); periodoFinal.set(Calendar.YEAR, new Integer(anoFinal).intValue()); periodoFinal.set(Calendar.HOUR_OF_DAY, 23); periodoFinal.set(Calendar.MINUTE, 59); periodoFinal.set(Calendar.SECOND, 59); Intervalo intervalo = new Intervalo(FiltroCobrancaAcaoAtividadeComando.REALIZACAO, periodoInicial, periodoFinal); filtroCobrancaAcaoAtividadeComando.adicionarParametro(intervalo); } // validar Per�odo de Vencimentos das Contas // [FS0004] - Validar Data // [FS0005] - Verificar data final menor que data inicial this.getControladorUtil().verificarDataInicialFinalPeriodo(dataPeriodoVencimentoContasInicial, dataPeriodoVencimentoContasFinal, "Per�odo de Vencimentos das Contas Inicial", "Per�odo de Vencimentos das Contas Final", "atencao.data_final_periodo.anterior.data_inicial_periodo"); // Per�odo de Realiza��o do Comando // Per�odo Realizacao Comando if ((dataPeriodoVencimentoContasInicial != null && !dataPeriodoVencimentoContasInicial.equals("")) && (dataPeriodoVencimentoContasFinal != null && !dataPeriodoVencimentoContasFinal.equals(""))) { peloMenosUmParametroInformado = true; String anoInicial = dataPeriodoVencimentoContasInicial.substring(6, 10); String mesInicial = dataPeriodoVencimentoContasInicial.substring(3, 5); String diaInicial = dataPeriodoVencimentoContasInicial.substring(0, 2); String anoFinal = dataPeriodoVencimentoContasFinal.substring(6, 10); String mesFinal = dataPeriodoVencimentoContasFinal.substring(3, 5); String diaFinal = dataPeriodoVencimentoContasFinal.substring(0, 2); Calendar periodoInicial = new GregorianCalendar(); periodoInicial.set(Calendar.DATE, new Integer(diaInicial).intValue()); periodoInicial.set(Calendar.MONTH, (new Integer(mesInicial).intValue() - 1)); periodoInicial.set(Calendar.YEAR, new Integer(anoInicial).intValue()); periodoInicial.set(Calendar.HOUR_OF_DAY, 0); periodoInicial.set(Calendar.MINUTE, 00); periodoInicial.set(Calendar.SECOND, 00); Calendar periodoFinal = new GregorianCalendar(); periodoFinal.set(Calendar.DATE, new Integer(diaFinal).intValue()); periodoFinal.set(Calendar.MONTH, (new Integer(mesFinal).intValue() - 1)); periodoFinal.set(Calendar.YEAR, new Integer(anoFinal).intValue()); periodoFinal.set(Calendar.HOUR_OF_DAY, 23); periodoFinal.set(Calendar.MINUTE, 59); periodoFinal.set(Calendar.SECOND, 59); filtroCobrancaAcaoAtividadeComando.adicionarParametro(new ParametroSimples( FiltroCobrancaAcaoAtividadeComando.DATA_VENCIMENTO_CONTA_INICIAL, periodoInicial)); filtroCobrancaAcaoAtividadeComando.adicionarParametro(new ParametroSimples( FiltroCobrancaAcaoAtividadeComando.DATA_VENCIMENTO_CONTA_FINAL, periodoFinal)); } // validar Per�odo de Refer�ncia das Contas // [FS0001] - Validar Refer�ncia // [FS0002] - Verificar refer�ncia final menor que refer�ncia inicial this.getControladorUtil().validarAnoMesInicialFinalPeriodo(anoMesPeriodoReferenciaContasInicial, anoMesPeriodoReferenciaContasFinal, "Per�odo de Refer�ncia das Contas Inicial", "Per�odo de Refer�ncia das Contas Final", "atencao.referencia.final.menor.referencia.inicial"); // Per�odo de Refer�ncia da Cobran�a if ((anoMesPeriodoReferenciaContasInicial != null && !anoMesPeriodoReferenciaContasInicial.equals("")) && (anoMesPeriodoReferenciaContasFinal != null && !anoMesPeriodoReferenciaContasFinal.equals(""))) { peloMenosUmParametroInformado = true; String anoInicial = anoMesPeriodoReferenciaContasInicial.substring(3, 7); String mesInicial = anoMesPeriodoReferenciaContasInicial.substring(0, 2); String anoFinal = anoMesPeriodoReferenciaContasFinal.substring(3, 7); String mesFinal = anoMesPeriodoReferenciaContasFinal.substring(0, 2); filtroCobrancaAcaoAtividadeComando.adicionarParametro(new ParametroSimples( FiltroCobrancaAcaoAtividadeComando.ANO_MES_REFERENCIA_CONTA_INICIAL, anoInicial + mesInicial)); filtroCobrancaAcaoAtividadeComando.adicionarParametro(new ParametroSimples( FiltroCobrancaAcaoAtividadeComando.ANO_MES_REFERENCIA_CONTA_FINAL, anoFinal + mesFinal)); } // Situa��o do Comando // [SB0006] - Seleciona Comandos Eventuais por Situa��o do Comando if (situacaoComando != null && !situacaoComando.equals("")) { peloMenosUmParametroInformado = true; if (situacaoComando.equals("Realizados")) { filtroCobrancaAcaoAtividadeComando .adicionarParametro(new ParametroNaoNulo(FiltroCobrancaAcaoAtividadeCronograma.REALIZACAO)); } else if (situacaoComando.equals("NaoRealizados")) { filtroCobrancaAcaoAtividadeComando.adicionarParametro(new ParametroNulo(FiltroCobrancaAcaoAtividadeCronograma.REALIZACAO)); } } // [FS0007] - Verificar situa��o do comando e per�odo de realiza��o do // comando if ((situacaoComando != null && !situacaoComando.equals("") && situacaoComando.equals("NaoRealizados")) && ((dataPeriodoRealizacaoComandoFinal != null && !dataPeriodoRealizacaoComandoFinal.equals("")) && (dataPeriodoRealizacaoComandoInicial != null && !dataPeriodoRealizacaoComandoInicial .equals("")))) { throw new ControladorException("atencao.periodo_realizacao.informado.situacao_comando"); } // gerencia regional if (idGerenciaRegional != null && !idGerenciaRegional.equals("") && !idGerenciaRegional.equals(new Integer(ConstantesSistema.NUMERO_NAO_INFORMADO).toString())) { filtroCobrancaAcaoAtividadeComando.adicionarParametro(new ParametroSimples( FiltroCobrancaAcaoAtividadeComando.ID_GERENCIA_REGIONAL, idGerenciaRegional)); } // unidade negocio if (unidadeNegocio != null && !unidadeNegocio.equals("") && !unidadeNegocio.equals(new Integer(ConstantesSistema.NUMERO_NAO_INFORMADO).toString())) { filtroCobrancaAcaoAtividadeComando.adicionarParametro(new ParametroSimples( FiltroCobrancaAcaoAtividadeComando.ID_UNIDADE_NEGOCIO, unidadeNegocio)); } // localidade inicial e final if ((idLocalidadeInicial != null && !idLocalidadeInicial.equals("")) && (idLocalidadeInicial != null && !idLocalidadeFinal.equals(""))) { filtroCobrancaAcaoAtividadeComando.adicionarParametro(new MaiorQue(FiltroCobrancaAcaoAtividadeComando.ID_LOCALIDADE_INICIAL, idLocalidadeInicial)); filtroCobrancaAcaoAtividadeComando.adicionarParametro(new MenorQue(FiltroCobrancaAcaoAtividadeComando.ID_LOCALIDADE_FINAL, idLocalidadeFinal)); } // setor comercial inicial e final if ((codigoSetorComercialInicial != null && !codigoSetorComercialInicial.equals("")) && (codigoSetorComercialFinal != null && !codigoSetorComercialFinal.equals(""))) { filtroCobrancaAcaoAtividadeComando.adicionarParametro(new MaiorQue( FiltroCobrancaAcaoAtividadeComando.CODIGO_SETOR_COMERCIAL_INICIAL, codigoSetorComercialInicial)); filtroCobrancaAcaoAtividadeComando.adicionarParametro(new MenorQue( FiltroCobrancaAcaoAtividadeComando.CODIGO_SETOR_COMERCIAL_FINAL, codigoSetorComercialFinal)); } // setor comercial inicial e final if ((numeroQuadraInicial != null && !numeroQuadraInicial.equals("")) && (numeroQuadraFinal != null && !numeroQuadraFinal.equals(""))) { filtroCobrancaAcaoAtividadeComando.adicionarParametro(new MaiorQue(FiltroCobrancaAcaoAtividadeComando.NUMERO_QUADRA_INICIAL, numeroQuadraInicial)); filtroCobrancaAcaoAtividadeComando.adicionarParametro(new MenorQue(FiltroCobrancaAcaoAtividadeComando.NUMERO_QUADRA_FINAL, numeroQuadraFinal)); } // rota inicial e final if ((idRotaInicial != null && !idRotaInicial.equals("")) && (idRotaFinal != null && !idRotaFinal.equals(""))) { filtroCobrancaAcaoAtividadeComando.adicionarParametro(new MaiorQue(FiltroCobrancaAcaoAtividadeComando.CODIGO_ROTA_INICIAL, idRotaInicial)); filtroCobrancaAcaoAtividadeComando.adicionarParametro(new MenorQue(FiltroCobrancaAcaoAtividadeComando.CODIGO_ROTA_FINAL, idRotaFinal)); } // cliente e cliente rela��o tipo if (idCliente != null && !idCliente.equals("")) { filtroCobrancaAcaoAtividadeComando.adicionarParametro(new ParametroSimples(FiltroCobrancaAcaoAtividadeComando.ID_CLIENTE, idCliente)); } if (idClienteRelacaoTipo != null && !idClienteRelacaoTipo.equals("")) { filtroCobrancaAcaoAtividadeComando.adicionarParametro(new ParametroSimples(FiltroCobrancaAcaoAtividadeComando.ID_CLIENTE, idCliente)); filtroCobrancaAcaoAtividadeComando.adicionarParametro(new ParametroSimples( FiltroCobrancaAcaoAtividadeComando.ID_CLIENTE_RELACAO_TIPO, idClienteRelacaoTipo)); } // Crit�rio de Cobran�a // [SB0005] - Seleciona Comandos por Crit�rios if (indicadorCriterio != null && !indicadorCriterio.equals("")) { peloMenosUmParametroInformado = true; if (indicadorCriterio.equals("Rota")) { filtroCobrancaAcaoAtividadeComando.adicionarParametro(new ParametroSimples( FiltroCobrancaAcaoAtividadeComando.INDICADOR_CRITERIO, 1)); } else if (indicadorCriterio.equals("Comando")) { filtroCobrancaAcaoAtividadeComando.adicionarParametro(new ParametroSimples( FiltroCobrancaAcaoAtividadeComando.INDICADOR_CRITERIO, 2)); } } // criterio de cobranca if (criterioCobranca != null && !criterioCobranca.equals("")) { filtroCobrancaAcaoAtividadeComando.adicionarParametro(new ParametroSimples( FiltroCobrancaAcaoAtividadeComando.ID_COBRANCA_CRITERIO, criterioCobranca)); } // consumo medio inicial e consumo medio final if (consumoMedioInicial != null && !consumoMedioInicial.equals("") && consumoMedioFinal != null && !consumoMedioFinal.equals("")) { filtroCobrancaAcaoAtividadeComando.adicionarParametro(new MaiorQue(FiltroCobrancaAcaoAtividadeComando.CONSUMO_MEDIO_INICIAL, consumoMedioInicial)); filtroCobrancaAcaoAtividadeComando.adicionarParametro(new MenorQue(FiltroCobrancaAcaoAtividadeComando.CONSUMO_MEDIO_FINAL, consumoMedioFinal)); } // tipo consumo if (tipoConsumo != null && !tipoConsumo.equals("") && !tipoConsumo.equals("3")) { filtroCobrancaAcaoAtividadeComando.adicionarParametro(new ParametroSimples(FiltroCobrancaAcaoAtividadeComando.TIPO_CONSUMO, tipoConsumo)); } if (periodoInicialFiscalizacao != null && !periodoInicialFiscalizacao.equals("")) { filtroCobrancaAcaoAtividadeComando.adicionarParametro(new MaiorQue( FiltroCobrancaAcaoAtividadeComando.PERIODO_INICIAL_FISCALIZACAO, Util.formatarData(periodoInicialFiscalizacao))); } else if (periodoFinalFiscalizacao != null && !periodoFinalFiscalizacao.equals("")) { filtroCobrancaAcaoAtividadeComando.adicionarParametro(new MaiorQue( FiltroCobrancaAcaoAtividadeComando.PERIODO_INICIAL_FISCALIZACAO, Util.converteStringParaDate("01/01/0001"))); } if (periodoFinalFiscalizacao != null && !periodoFinalFiscalizacao.equals("")) { filtroCobrancaAcaoAtividadeComando.adicionarParametro(new MenorQue( FiltroCobrancaAcaoAtividadeComando.PERIODO_FINAL_FISCALIZACAO, Util.formatarData(periodoFinalFiscalizacao))); } else if (periodoInicialFiscalizacao != null && !periodoInicialFiscalizacao.equals("")) { filtroCobrancaAcaoAtividadeComando.adicionarParametro(new MenorQue( FiltroCobrancaAcaoAtividadeComando.PERIODO_FINAL_FISCALIZACAO, Util.converteStringParaDate("31/12/9999"))); } filtroCobrancaAcaoAtividadeComando.adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAcaoAtividadeComando.COBRANCA_ATIVIDADE); filtroCobrancaAcaoAtividadeComando.adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAcaoAtividadeComando.COBRANCA_ACAO); filtroCobrancaAcaoAtividadeComando.adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAcaoAtividadeComando.COBRANCA_GRUPO); filtroCobrancaAcaoAtividadeComando.adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAcaoAtividadeComando.COBRANCA_CRITERIO); filtroCobrancaAcaoAtividadeComando.adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAcaoAtividadeComando.GERENCIAL_REGIONAL); filtroCobrancaAcaoAtividadeComando.adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAcaoAtividadeComando.LOCALIDADE_INICIAL); // filtroCobrancaAcaoAtividadeComando // .adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAcaoAtividadeComando.SETOR_COMERCIAL); filtroCobrancaAcaoAtividadeComando.adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAcaoAtividadeComando.ROTA_INICIAL); filtroCobrancaAcaoAtividadeComando.adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAcaoAtividadeComando.CLIENTE); filtroCobrancaAcaoAtividadeComando.adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAcaoAtividadeComando.ROTA_FINAL); filtroCobrancaAcaoAtividadeComando .adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAcaoAtividadeComando.CLIENTE_RELACAO_TIPO); filtroCobrancaAcaoAtividadeComando.adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAcaoAtividadeComando.CLIENTE); // Erro caso o usu�rio mandou filtrar sem nenhum par�metro if (!peloMenosUmParametroInformado) { throw new ControladorException("atencao.filtro.nenhum_parametro_informado"); } return filtroCobrancaAcaoAtividadeComando; } /** * Filtrar os Comandos de A��o de Cobran�a tipo comando Eventual * * [UC0326] - Filtrar Comandos de A��o de Cobran�a * * @author Rafael Santos * @date 15/05/2006 * * @param localidadeID * @param setorComercialCD * @return * @throws ControladorException */ public SetorComercial obterSetorComercialLocalidade(String localidadeID, String setorComercialCD) throws ControladorException { SetorComercial setorComercial = null; FiltroSetorComercial filtroSetorComercial = new FiltroSetorComercial(); // Adiciona o id da localidade que est� no formul�rio para // compor a pesquisa. filtroSetorComercial.adicionarParametro(new ParametroSimples(FiltroSetorComercial.ID_LOCALIDADE, localidadeID)); // Adiciona o c�digo do setor comercial que esta no formul�rio // para compor a pesquisa. filtroSetorComercial.adicionarParametro(new ParametroSimples(FiltroSetorComercial.CODIGO_SETOR_COMERCIAL, setorComercialCD)); filtroSetorComercial.adicionarParametro(new ParametroSimples(FiltroSetorComercial.INDICADORUSO, ConstantesSistema.INDICADOR_USO_ATIVO)); // Retorna setorComercial Collection colecaoPesquisa = getControladorUtil().pesquisar(filtroSetorComercial, SetorComercial.class.getName()); if (colecaoPesquisa != null && !colecaoPesquisa.isEmpty()) { setorComercial = (SetorComercial) Util.retonarObjetoDeColecao(colecaoPesquisa); } return setorComercial; } /** * * Filtrar os Comandos de A��o de Cobran�a tipo comando Eventual * * [UC0326] - Filtrar Comandos de A��o de Cobran�a * * @author Rafael Santos * @date 15/05/2006 * * @param codigoSetorComercial * @return * @throws ControladorException */ public Collection obterColecaoRotaSetorComercialLocalidade(String codigoSetorComercial, String idLocalidade) throws ControladorException { FiltroRota filtroRota = new FiltroRota(); filtroRota.adicionarCaminhoParaCarregamentoEntidade("setorComercial.localidade"); filtroRota.adicionarParametro(new ParametroSimples(FiltroRota.LOCALIDADE_ID, idLocalidade)); filtroRota.adicionarCaminhoParaCarregamentoEntidade("setorComercial"); filtroRota.adicionarParametro(new ParametroSimples(FiltroRota.SETOR_COMERCIAL_CODIGO, codigoSetorComercial)); Collection colecaoRota = getControladorUtil().pesquisar(filtroRota, Rota.class.getName()); return colecaoRota; } /** * * Filtrar os Comandos de A��o de Cobran�a tipo comando Eventual * * [UC0326] - Filtrar Comandos de A��o de Cobran�a * * @author Rafael Santos * @date 15/05/2006 * * @param localidadeID * @return */ public Localidade obterLocalidadeGerenciaRegional(String localidadeID) throws ControladorException { Localidade localidade = null; FiltroLocalidade filtroLocalidade = new FiltroLocalidade(); filtroLocalidade.adicionarParametro(new ParametroSimples(FiltroLocalidade.ID, localidadeID)); // filtroLocalidade.adicionarParametro(new ParametroSimples( // FiltroLocalidade.ID_GERENCIA, gerenciaRegionalID)); filtroLocalidade.adicionarParametro(new ParametroSimples(FiltroLocalidade.INDICADORUSO, ConstantesSistema.INDICADOR_USO_ATIVO)); // Retorna localidade Collection colecaoPesquisa = getControladorUtil().pesquisar(filtroLocalidade, Localidade.class.getName()); if (colecaoPesquisa != null && !colecaoPesquisa.isEmpty()) { localidade = (Localidade) Util.retonarObjetoDeColecao(colecaoPesquisa); } return localidade; } /** * * Filtrar os Comandos de A��o de Cobran�a tipo comando Eventual * * [UC0326] - Filtrar Comandos de A��o de Cobran�a * * @author Rafael Santos * @date 15/05/2006 * * @param idCliente * @return */ public Cliente obterCliente(String idCliente) throws ControladorException { Cliente cliente = null; FiltroCliente filtroCliente = new FiltroCliente(); filtroCliente.adicionarParametro(new ParametroSimples(FiltroCliente.INDICADOR_USO, ConstantesSistema.INDICADOR_USO_ATIVO)); filtroCliente.adicionarParametro(new ParametroSimples(FiltroCliente.ID, new Integer(idCliente))); Collection colecaoPesquisa = getControladorUtil().pesquisar(filtroCliente, Cliente.class.getName()); if (colecaoPesquisa != null && !colecaoPesquisa.isEmpty()) { cliente = (Cliente) Util.retonarObjetoDeColecao(colecaoPesquisa); } return cliente; } /** * * Filtrar os Comandos de A��o de Cobran�a tipo comando Eventual * * [UC0326] - Filtrar Comandos de A��o de Cobran�a * * * * @author Administrador * @date 19/05/2006 * * @param idCobrancaCriterio * @return */ public CobrancaCriterio obterCobrancaCriterio(String idCobrancaCriterio) throws ControladorException { CobrancaCriterio cobrancaCriterio = null; FiltroCobrancaCriterio filtroCobrancaCriterio = new FiltroCobrancaCriterio(); filtroCobrancaCriterio.adicionarParametro(new ParametroSimples(FiltroCobrancaCriterio.ID, idCobrancaCriterio)); Collection colecaoPesquisa = getControladorUtil().pesquisar(filtroCobrancaCriterio, CobrancaCriterio.class.getName()); if (colecaoPesquisa != null && !colecaoPesquisa.isEmpty()) { cobrancaCriterio = (CobrancaCriterio) Util.retonarObjetoDeColecao(colecaoPesquisa); } return cobrancaCriterio; } /** * Consultar Comando de A��o de Cobran�a * * [UC0325] - Consultar Comandos de A��o de Cobran�a - Tipo Eventual * * @author Rafael Santos * @date 10/05/2006 * * @param filtroCobrancaAcaoAtividadeCronograma * @return * @throws ControladorException */ public Collection<CobrancaAcaoAtividadeComando> pesquisarCobrancaAcaoAtividadeEventual( FiltroCobrancaAcaoAtividadeComando filtroCobrancaAcaoAtividadeComando) throws ControladorException { Collection colecaoCobrancaAcaoAtividadeComando; colecaoCobrancaAcaoAtividadeComando = this.getControladorUtil().pesquisar(filtroCobrancaAcaoAtividadeComando, CobrancaAcaoAtividadeComando.class.getName()); if (colecaoCobrancaAcaoAtividadeComando == null || colecaoCobrancaAcaoAtividadeComando.isEmpty()) { throw new ControladorException("atencao.pesquisa.nenhumresultado", null, "Comando A��o de Cobran�a - Eventual"); } return colecaoCobrancaAcaoAtividadeComando; } /** * * [UC0325] Consultar Comandos A��o de Cobran�a * * Consultar Comando Cobranca A��o Atividade Cobranca - Verificar pelo ID * * [SB0004] - Consultar Dados do Comando de A��o de cobran�a Eventual * * @author Rafael Santos * @date 11/05/2006 * * @return * @throws ControladorException */ public CobrancaAcaoAtividadeComando obterCobrancaAcaoAtividadeComando(String idCobrancaAcaoAtividadeComando) throws ControladorException { Collection colecaoAtividadeEventualAcaoCobrancaComandadas = null; FiltroCobrancaAcaoAtividadeComando filtroCobrancaAcaoAtividadeComando = new FiltroCobrancaAcaoAtividadeComando(); filtroCobrancaAcaoAtividadeComando.adicionarParametro(new ParametroSimples(FiltroCobrancaAcaoAtividadeComando.ID, idCobrancaAcaoAtividadeComando)); filtroCobrancaAcaoAtividadeComando.adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAcaoAtividadeComando.COBRANCA_ATIVIDADE); filtroCobrancaAcaoAtividadeComando.adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAcaoAtividadeComando.COBRANCA_ACAO); filtroCobrancaAcaoAtividadeComando.adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAcaoAtividadeComando.COBRANCA_GRUPO); filtroCobrancaAcaoAtividadeComando.adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAcaoAtividadeComando.COBRANCA_CRITERIO); filtroCobrancaAcaoAtividadeComando.adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAcaoAtividadeComando.GERENCIAL_REGIONAL); filtroCobrancaAcaoAtividadeComando.adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAcaoAtividadeComando.LOCALIDADE_INICIAL); filtroCobrancaAcaoAtividadeComando.adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAcaoAtividadeComando.LOCALIDADE_FINAL); // filtroCobrancaAcaoAtividadeComando // .adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAcaoAtividadeComando.SETOR_COMERCIAL); filtroCobrancaAcaoAtividadeComando.adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAcaoAtividadeComando.ROTA_INICIAL); filtroCobrancaAcaoAtividadeComando.adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAcaoAtividadeComando.ROTA_FINAL); filtroCobrancaAcaoAtividadeComando.adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAcaoAtividadeComando.CLIENTE); filtroCobrancaAcaoAtividadeComando .adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAcaoAtividadeComando.CLIENTE_RELACAO_TIPO); filtroCobrancaAcaoAtividadeComando.adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAcaoAtividadeComando.NEGOCIO_UNIDADE); colecaoAtividadeEventualAcaoCobrancaComandadas = this.getControladorUtil().pesquisar(filtroCobrancaAcaoAtividadeComando, CobrancaAcaoAtividadeComando.class.getName()); if (colecaoAtividadeEventualAcaoCobrancaComandadas == null || colecaoAtividadeEventualAcaoCobrancaComandadas.isEmpty()) { throw new ControladorException("atencao.nao.atividade.cobranca.comandadas"); } return (CobrancaAcaoAtividadeComando) colecaoAtividadeEventualAcaoCobrancaComandadas.iterator().next(); } /** * * Gerar Rel��o de Debitos * * [UC0227] - Gerar Rela��o de D�bitos * * @author Rafael Santos * @date 15/06/2006 * * @param idImovelCondominio * @param idImovelPrincipal * @param idNomeConta * @param idSituacaoLigacaoAgua * @param consumoMinimoInicialAgua * @param consumoMinimoFinalAgua * @param idSituacaoLigacaoEsgoto * @param consumoMinimoInicialEsgoto * @param consumoMinimoFinalEsgoto * @param intervaloValorPercentualEsgotoInicial * @param intervaloValorPercentualEsgotoFinal * @param intervaloMediaMinimaImovelInicial * @param intervaloMediaMinimaImovelFinal * @param intervaloMediaMinimaHidrometroInicial * @param intervaloMediaMinimaHidrometroFinal * @param idImovelPerfil * @param idPocoTipo * @param idFaturamentoSituacaoTipo * @param idCobrancaSituacaoTipo * @param idSituacaoEspecialCobranca * @param idEloAnormalidade * @param areaConstruidaInicial * @param areaConstruidaFinal * @param idCadastroOcorrencia * @param idConsumoTarifa * @param idGerenciaRegional * @param idLocalidadeInicial * @param idLocalidadeFinal * @param setorComercialInicial * @param setorComercialFinal * @param quadraInicial * @param quadraFinal * @param loteOrigem * @param loteDestno * @param cep * @param logradouro * @param bairro * @param municipio * @param idTipoMedicao * @param indicadorMedicao * @param idSubCategoria * @param idCategoria * @param quantidadeEconomiasInicial * @param quantidadeEconomiasFinal * @param diaVencimento * @param idCliente * @param idClienteTipo * @param idClienteRelacaoTipo * @param numeroPontosInicial * @param numeroPontosFinal * @param numeroMoradoresInicial * @param numeroMoradoresFinal * @param idAreaConstruidaFaixa * @return * @throws ControladorException */ public Collection gerarRelacaoDebitos(String idImovelCondominio, String idImovelPrincipal, String idNomeConta, String idSituacaoLigacaoAgua, String consumoMinimoInicialAgua, String consumoMinimoFinalAgua, String idSituacaoLigacaoEsgoto, String consumoMinimoInicialEsgoto, String consumoMinimoFinalEsgoto, String intervaloValorPercentualEsgotoInicial, String intervaloValorPercentualEsgotoFinal, String intervaloMediaMinimaImovelInicial, String intervaloMediaMinimaImovelFinal, String intervaloMediaMinimaHidrometroInicial, String intervaloMediaMinimaHidrometroFinal, String idImovelPerfil, String idPocoTipo, String idFaturamentoSituacaoTipo, String idCobrancaSituacaoTipo, String idSituacaoEspecialCobranca, String idEloAnormalidade, String areaConstruidaInicial, String areaConstruidaFinal, String idCadastroOcorrencia, String idConsumoTarifa, String idGerenciaRegional, String idLocalidadeInicial, String idLocalidadeFinal, String setorComercialInicial, String setorComercialFinal, String quadraInicial, String quadraFinal, String loteOrigem, String loteDestno, String cep, String logradouro, String bairro, String municipio, String idTipoMedicao, String indicadorMedicao, String idSubCategoria, String idCategoria, String quantidadeEconomiasInicial, String quantidadeEconomiasFinal, String diaVencimento, String idCliente, String idClienteTipo, String idClienteRelacaoTipo, String numeroPontosInicial, String numeroPontosFinal, String numeroMoradoresInicial, String numeroMoradoresFinal, String idAreaConstruidaFaixa, String[] tipoDebito, String valorDebitoInicial, String valorDebitoFinal, String qtdContasInicial, String qtdContasFinal, String referenciaFaturaInicial, String referenciaFaturaFinal, String vencimentoInicial, String vencimentoFinal, String qtdImoveis, String qtdMaiores, String ordenacao, String indicadorCpfCnpj, String cpfCnpj) throws ControladorException { List colecaoImoveis = null; boolean flagFimPesquisa = false; final int quantidadeImovel = 500; int quantidadeImovelInicio = 0; // colecao com os dados para o relatorio Collection colecaoGerarRelacaoDebitos = new ArrayList(); imovelColecao: while (!flagFimPesquisa) { try { // remove primeiro as linhas do crit�rio cobran�a colecaoImoveis = (List) repositorioCobranca.gerarRelacaoDebitos(idImovelCondominio, idImovelPrincipal, idNomeConta, idSituacaoLigacaoAgua, consumoMinimoInicialAgua, consumoMinimoFinalAgua, idSituacaoLigacaoEsgoto, consumoMinimoInicialEsgoto, consumoMinimoFinalEsgoto, intervaloValorPercentualEsgotoInicial, intervaloValorPercentualEsgotoFinal, intervaloMediaMinimaImovelInicial, intervaloMediaMinimaImovelFinal, intervaloMediaMinimaHidrometroInicial, intervaloMediaMinimaHidrometroFinal, idImovelPerfil, idPocoTipo, idFaturamentoSituacaoTipo, idCobrancaSituacaoTipo, idSituacaoEspecialCobranca, idEloAnormalidade, areaConstruidaInicial, areaConstruidaFinal, idCadastroOcorrencia, idConsumoTarifa, idGerenciaRegional, idLocalidadeInicial, idLocalidadeFinal, setorComercialInicial, setorComercialFinal, quadraInicial, quadraFinal, loteOrigem, loteDestno, cep, logradouro, bairro, municipio, idTipoMedicao, indicadorMedicao, idSubCategoria, idCategoria, quantidadeEconomiasInicial, quantidadeEconomiasFinal, diaVencimento, idCliente, idClienteTipo, idClienteRelacaoTipo, numeroPontosInicial, numeroPontosFinal, numeroMoradoresInicial, numeroMoradoresFinal, idAreaConstruidaFaixa, ordenacao, quantidadeImovelInicio, indicadorCpfCnpj, cpfCnpj); } catch (ErroRepositorioException e) { // sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", e); } Integer numeroImovel = 0; // para cada imovel pega as conta, debitos, creditos e guias if (colecaoImoveis != null && !colecaoImoveis.isEmpty()) { if (colecaoImoveis.size() < quantidadeImovel) { flagFimPesquisa = true; } else { quantidadeImovelInicio = quantidadeImovelInicio + 500; } Iterator iteratorColecaoImoveis = colecaoImoveis.iterator(); GerarRelacaoDebitosImovelHelper gerarRelacaoDebitosImovelHelper = null; GerarRelacaoDebitosHelper gerarRelacaoDebitosHelper = null; // imovel : while (iteratorColecaoImoveis.hasNext()) { Object[] contasDadosRelatorio = (Object[]) iteratorColecaoImoveis.next(); gerarRelacaoDebitosImovelHelper = new GerarRelacaoDebitosImovelHelper(); gerarRelacaoDebitosHelper = new GerarRelacaoDebitosHelper(); // id gerencia regional if (contasDadosRelatorio[0] != null) { // 0 gerarRelacaoDebitosImovelHelper.setIdGerenciaRegional(((Integer) contasDadosRelatorio[0]).toString()); } // nome abreviado gerencia regional if (contasDadosRelatorio[1] != null) { // 1 gerarRelacaoDebitosImovelHelper.setNomeGerenciaRegional((String) contasDadosRelatorio[1]); } // id localidade if (contasDadosRelatorio[2] != null) { // 2 gerarRelacaoDebitosImovelHelper.setIdLocalidade(((Integer) contasDadosRelatorio[2]).toString()); } // descricao localidade if (contasDadosRelatorio[3] != null) { // 3 gerarRelacaoDebitosImovelHelper.setDescricaoLocalidade((String) contasDadosRelatorio[3]); } // id imovel if (contasDadosRelatorio[4] != null) { // 4 gerarRelacaoDebitosImovelHelper.setIdImovel(((Integer) contasDadosRelatorio[4]).toString()); } // quantidade de economias if (contasDadosRelatorio[5] != null) { // 5 gerarRelacaoDebitosImovelHelper.setQuantidadeEconomias(((Short) contasDadosRelatorio[5]).toString()); } // codigo setor comercial if (contasDadosRelatorio[6] != null) { // 6 gerarRelacaoDebitosImovelHelper.setCodigoSetorComercial(((Integer) contasDadosRelatorio[6]).toString()); } // numero quadra if (contasDadosRelatorio[7] != null) { // 7 gerarRelacaoDebitosImovelHelper.setNumeroQuadra(((Integer) contasDadosRelatorio[7]).toString()); } // lote if (contasDadosRelatorio[8] != null) { // 8 gerarRelacaoDebitosImovelHelper.setLote(((Short) contasDadosRelatorio[8]).toString()); } // sub lote if (contasDadosRelatorio[9] != null) { // 9 gerarRelacaoDebitosImovelHelper.setSubLote(((Short) contasDadosRelatorio[9]).toString()); } // descricao ligacao agua situacao if (contasDadosRelatorio[10] != null) { // 10 gerarRelacaoDebitosImovelHelper.setSituacaoAgua((String) contasDadosRelatorio[10]); } // descricao ligacao esgoto situacao if (contasDadosRelatorio[11] != null) { // 11 gerarRelacaoDebitosImovelHelper.setSituacaoEsgoto((String) contasDadosRelatorio[11]); } // percentual if (contasDadosRelatorio[12] != null) { // 12 gerarRelacaoDebitosImovelHelper.setPercentualEsgoto(Util.formatarMoedaReal((BigDecimal) contasDadosRelatorio[12])); } // data corte if (contasDadosRelatorio[13] != null) { // 13 gerarRelacaoDebitosImovelHelper.setDataCorte(Util.formatarData((Date) contasDadosRelatorio[13])); } // gerencia regional - nome if (contasDadosRelatorio[14] != null) { // 14 gerarRelacaoDebitosImovelHelper.setGerenciaRegional((String) contasDadosRelatorio[14]); } // nome cliente usuario if (contasDadosRelatorio[15] != null) { // 15 gerarRelacaoDebitosImovelHelper.setNomeClienteUsuario((String) contasDadosRelatorio[15]); } // nome cliente resposanvel if (contasDadosRelatorio[16] != null) { // 16 gerarRelacaoDebitosImovelHelper.setNomeClienteResponsavel((String) contasDadosRelatorio[16]); } // rota if (contasDadosRelatorio[17] != null) { // 17 gerarRelacaoDebitosImovelHelper.setRota(((Short) contasDadosRelatorio[17]).toString()); } else { gerarRelacaoDebitosImovelHelper.setRota(""); } // sequencial rota if (contasDadosRelatorio[18] != null) { // 18 gerarRelacaoDebitosImovelHelper.setSequencialRota(((Integer) contasDadosRelatorio[18]).toString()); } else { gerarRelacaoDebitosImovelHelper.setSequencialRota(""); } // consumo Medio Integer consumoMedio = this.pesquisarConsumoMedioConsumoHistoricoImovel(new Integer(gerarRelacaoDebitosImovelHelper .getIdImovel())); if (consumoMedio != null) { gerarRelacaoDebitosImovelHelper.setConsumoMediaImovel(consumoMedio.toString()); } Imovel imovel = new Imovel(); Localidade localidadeImovel = new Localidade(); localidadeImovel.setId(new Integer(gerarRelacaoDebitosImovelHelper.getIdLocalidade())); SetorComercial setorComercialImovel = new SetorComercial(); setorComercialImovel.setCodigo(new Integer(gerarRelacaoDebitosImovelHelper.getCodigoSetorComercial()).intValue()); Quadra quadraImovel = new Quadra(); quadraImovel.setNumeroQuadra(new Integer(gerarRelacaoDebitosImovelHelper.getNumeroQuadra()).intValue()); imovel.setLocalidade(localidadeImovel); imovel.setSetorComercial(setorComercialImovel); imovel.setQuadra(quadraImovel); imovel.setLote(new Short(gerarRelacaoDebitosImovelHelper.getLote()).shortValue()); imovel.setSubLote(new Short(gerarRelacaoDebitosImovelHelper.getSubLote()).shortValue()); // inscricao formatada do imovel gerarRelacaoDebitosImovelHelper.setInscricaoImovel(imovel.getInscricaoFormatada()); Calendar dataInicio = new GregorianCalendar(); dataInicio.set(Calendar.YEAR, 1980); dataInicio.set(Calendar.MONTH, 0); dataInicio.set(Calendar.DAY_OF_MONTH, 1); /* * Calendar dataFim = new GregorianCalendar(); * dataFim.add(Calendar.DATE, -45); */ Calendar dataFim = new GregorianCalendar(); dataFim.set(Calendar.YEAR, 9999); dataFim.set(Calendar.MONTH, 11); dataFim.set(Calendar.DAY_OF_MONTH, 31); ObterDebitoImovelOuClienteHelper obterDebitoImovelOuClienteHelper = obterDebitoImovelOuCliente(1, gerarRelacaoDebitosImovelHelper.getIdImovel(), null, null, "198001", "999912", dataInicio.getTime(), dataFim.getTime(), 1, 1, 1, 1, 1, 1, 1, null); if (qtdImoveis != null && !qtdImoveis.equals("")) { Integer qtdImoveisInformada = new Integer(qtdImoveis) - 1; if (numeroImovel.compareTo(qtdImoveisInformada) == 1) { // flagFimPesquisa = true; break imovelColecao; } } if (qtdMaiores != null && !qtdMaiores.equals("")) { Integer qtdMaioresInformada = new Integer(qtdMaiores) - 1; if (numeroImovel.compareTo(qtdMaioresInformada) == 1) { // flagFimPesquisa = true; break imovelColecao; } } if ((obterDebitoImovelOuClienteHelper.getColecaoContasValores() != null && !obterDebitoImovelOuClienteHelper .getColecaoContasValores().isEmpty()) | (obterDebitoImovelOuClienteHelper.getColecaoCreditoARealizar() != null && !obterDebitoImovelOuClienteHelper .getColecaoCreditoARealizar().isEmpty()) | (obterDebitoImovelOuClienteHelper.getColecaoDebitoACobrar() != null && !obterDebitoImovelOuClienteHelper .getColecaoDebitoACobrar().isEmpty()) | (obterDebitoImovelOuClienteHelper.getColecaoGuiasPagamentoValores() != null && !obterDebitoImovelOuClienteHelper .getColecaoGuiasPagamentoValores().isEmpty())) { // obter endereco gerarRelacaoDebitosImovelHelper.setEndereco(getControladorEndereco().pesquisarEndereco( new Integer(gerarRelacaoDebitosImovelHelper.getIdImovel()))); // obter categoria do imovel Integer idImovel = new Integer(gerarRelacaoDebitosImovelHelper.getIdImovel()); Categoria categoriaPrincipal = getControladorImovel().obterPrincipalCategoriaImovel(idImovel); gerarRelacaoDebitosImovelHelper.setCategoriaPrincipal(categoriaPrincipal.getDescricao()); ImovelSubcategoria imovelSubcategoriaPrincipal = getControladorImovel().obterPrincipalSubcategoria( categoriaPrincipal.getId(), idImovel); if (imovelSubcategoriaPrincipal != null) { try { String descricaoSubcategoria = repositorioImovel.obterDescricaoSubcategoria(imovelSubcategoriaPrincipal .getComp_id().getSubcategoria().getId()); gerarRelacaoDebitosImovelHelper.setSubcategoriaPrincipal(descricaoSubcategoria); } catch (ErroRepositorioException ex) { throw new ControladorException("erro.sistema", ex); } } // ///////////////////////////////////////////////////////////// // total de conta BigDecimal totalContas = new BigDecimal("0.00"); // total conta atualizado BigDecimal totalContasAtualizado = new BigDecimal("0.00"); // valor total juros BigDecimal totalJuros = new BigDecimal("0.00"); // valor total multa BigDecimal totalMulta = new BigDecimal("0.00"); // valor total atualizacao monetaria BigDecimal totalAtualizacaoMonetaria = new BigDecimal("0.00"); // valor totoal geral atualizado BigDecimal totalDebito = new BigDecimal("0.00"); // valor total acrescimo por impontualidade BigDecimal totalAcrescimoImpontualidade = new BigDecimal("0.00"); boolean verificarQtdConta = true; boolean verificarValorDebito = true; boolean verificarReferencia = true; boolean verificarVencimento = true; if ((qtdContasInicial != null && !qtdContasInicial.equals("")) && (qtdContasFinal != null && !qtdContasFinal.equals(""))) { Integer qtdContaInicial = new Integer(qtdContasInicial); Integer qtdContaFinal = new Integer(qtdContasFinal); if (obterDebitoImovelOuClienteHelper.getColecaoContasValores() != null && !obterDebitoImovelOuClienteHelper.getColecaoContasValores().isEmpty()) { Integer tamanhoColecaoConta = obterDebitoImovelOuClienteHelper.getColecaoContasValores().size(); if (tamanhoColecaoConta.compareTo(qtdContaInicial) != ConstantesSistema.INVALIDO_ID && tamanhoColecaoConta.compareTo(qtdContaFinal) != 1) { verificarQtdConta = true; } else { verificarQtdConta = false; } } else if (!qtdContaInicial.equals(0)) { verificarQtdConta = false; } } else { verificarQtdConta = true; } Collection<ContaValoresHelper> colecaoContasHelper = new ArrayList(); if (obterDebitoImovelOuClienteHelper.getColecaoContasValores() != null && !obterDebitoImovelOuClienteHelper.getColecaoContasValores().isEmpty()) { Iterator iteratorColecaoContasValores = obterDebitoImovelOuClienteHelper.getColecaoContasValores().iterator(); while (iteratorColecaoContasValores.hasNext()) { ContaValoresHelper contaValoresHelper = (ContaValoresHelper) iteratorColecaoContasValores.next(); if (referenciaFaturaInicial != null && !referenciaFaturaInicial.equals("") && referenciaFaturaFinal != null && !referenciaFaturaFinal.equals("")) { Integer referencia = contaValoresHelper.getConta().getReferencia(); Integer referenciaInicial = Util.formatarMesAnoComBarraParaAnoMes(referenciaFaturaInicial); Integer referenciaFinal = Util.formatarMesAnoComBarraParaAnoMes(referenciaFaturaFinal); if (referencia.compareTo(referenciaInicial) != ConstantesSistema.INVALIDO_ID && referencia.compareTo(referenciaFinal) != 1) { verificarReferencia = true; } else { verificarReferencia = false; } } else { verificarReferencia = true; } if (vencimentoInicial != null && !vencimentoInicial.equals("") && vencimentoFinal != null && !vencimentoFinal.equals("")) { Date vencimento = contaValoresHelper.getConta().getDataVencimentoConta(); Date venInicial = Util.converteStringParaDate(vencimentoInicial); Date venFinal = Util.converteStringParaDate(vencimentoFinal); if (vencimento.compareTo(venInicial) != ConstantesSistema.INVALIDO_ID && vencimento.compareTo(venFinal) != 1) { verificarVencimento = true; } else { verificarVencimento = false; } } else { verificarVencimento = true; } if (verificarReferencia && verificarVencimento) { if (tipoDebito != null && tipoDebito.length > 0) { achou: for (int i = 0; i < tipoDebito.length; i++) { if (new Integer(tipoDebito[i]).intValue() != ConstantesSistema.NUMERO_NAO_INFORMADO && new Integer(tipoDebito[i]).equals(ConstantesSistema.CONTA)) { totalContas = totalContas.add(contaValoresHelper.getConta().getValorTotal()); totalContasAtualizado = totalContasAtualizado.add(contaValoresHelper.getConta() .getValorTotal()); totalContasAtualizado = totalContasAtualizado.add(contaValoresHelper .getValorTotalContaValores()); break achou; } } } else { totalContas = totalContas.add(contaValoresHelper.getConta().getValorTotal()); totalContasAtualizado = totalContasAtualizado.add(contaValoresHelper.getConta().getValorTotal()); totalContasAtualizado = totalContasAtualizado.add(contaValoresHelper.getValorTotalContaValores()); } if (tipoDebito != null && tipoDebito.length > 0) { achou: for (int i = 0; i < tipoDebito.length; i++) { if (new Integer(tipoDebito[i]).intValue() != ConstantesSistema.NUMERO_NAO_INFORMADO && new Integer(tipoDebito[i]).equals(ConstantesSistema.ACRESCIMO)) { totalJuros = totalJuros.add(contaValoresHelper.getValorJurosMora()); totalMulta = totalMulta.add(contaValoresHelper.getValorMulta()); totalAtualizacaoMonetaria = totalAtualizacaoMonetaria.add(contaValoresHelper .getValorAtualizacaoMonetaria()); break achou; } } } else { totalJuros = totalJuros.add(contaValoresHelper.getValorJurosMora()); totalMulta = totalMulta.add(contaValoresHelper.getValorMulta()); totalAtualizacaoMonetaria = totalAtualizacaoMonetaria.add(contaValoresHelper .getValorAtualizacaoMonetaria()); } colecaoContasHelper.add(contaValoresHelper); } } } if (tipoDebito != null && tipoDebito.length > 0) { achou: for (int i = 0; i < tipoDebito.length; i++) { if (new Integer(tipoDebito[i]).intValue() != ConstantesSistema.NUMERO_NAO_INFORMADO && new Integer(tipoDebito[i]).equals(ConstantesSistema.CONTA)) { // colecao de contas gerarRelacaoDebitosHelper.setColecaoContas(colecaoContasHelper); break achou; } } } else { // colecao de contas gerarRelacaoDebitosHelper.setColecaoContas(colecaoContasHelper); } // somando com o total de contas totalDebito = totalDebito.add(totalContas); BigDecimal totalDebitoACobrar = new BigDecimal("0.00"); Collection colecao = new ArrayList(); if (tipoDebito != null && tipoDebito.length > 0) { achou: for (int i = 0; i < tipoDebito.length; i++) { if (new Integer(tipoDebito[i]).intValue() != ConstantesSistema.NUMERO_NAO_INFORMADO && new Integer(tipoDebito[i]).equals(ConstantesSistema.DEBITO_A_COBRAR)) { // debitos a cobrar if (obterDebitoImovelOuClienteHelper.getColecaoDebitoACobrar() != null && !obterDebitoImovelOuClienteHelper.getColecaoDebitoACobrar().isEmpty()) { Iterator iteratorColecaoDebitoACobrar = obterDebitoImovelOuClienteHelper.getColecaoDebitoACobrar() .iterator(); while (iteratorColecaoDebitoACobrar.hasNext()) { DebitoACobrar debitoACobrar = (DebitoACobrar) iteratorColecaoDebitoACobrar.next(); totalDebitoACobrar = totalDebitoACobrar.add(debitoACobrar.getValorTotalComBonus()); colecao.add(debitoACobrar); } } break achou; } } } else { // debitos a cobrar if (obterDebitoImovelOuClienteHelper.getColecaoDebitoACobrar() != null && !obterDebitoImovelOuClienteHelper.getColecaoDebitoACobrar().isEmpty()) { Iterator iteratorColecaoDebitoACobrar = obterDebitoImovelOuClienteHelper.getColecaoDebitoACobrar() .iterator(); while (iteratorColecaoDebitoACobrar.hasNext()) { DebitoACobrar debitoACobrar = (DebitoACobrar) iteratorColecaoDebitoACobrar.next(); totalDebitoACobrar = totalDebitoACobrar.add(debitoACobrar.getValorTotalComBonus()); colecao.add(debitoACobrar); } } } // colecao.addAll(obterDebitoImovelOuClienteHelper.getColecaoDebitoACobrar()); // somando com o total de debitos a cobrar totalDebito = totalDebito.add(totalDebitoACobrar); BigDecimal totalCreditoARealizar = new BigDecimal("0.00"); if (tipoDebito != null && tipoDebito.length > 0) { achou: for (int i = 0; i < tipoDebito.length; i++) { if (new Integer(tipoDebito[i]).intValue() != ConstantesSistema.NUMERO_NAO_INFORMADO && new Integer(tipoDebito[i]).equals(ConstantesSistema.CREDITO_A_REALIZAR)) { // creditos a realizar if (obterDebitoImovelOuClienteHelper.getColecaoCreditoARealizar() != null && !obterDebitoImovelOuClienteHelper.getColecaoCreditoARealizar().isEmpty()) { Iterator iteratorColecaoCreditoARealizar = obterDebitoImovelOuClienteHelper .getColecaoCreditoARealizar().iterator(); while (iteratorColecaoCreditoARealizar.hasNext()) { CreditoARealizar creditoARealizar = (CreditoARealizar) iteratorColecaoCreditoARealizar.next(); totalCreditoARealizar = totalCreditoARealizar.add(creditoARealizar.getValorTotalComBonus()); colecao.add(creditoARealizar); } } break achou; } } } else { // creditos a realizar if (obterDebitoImovelOuClienteHelper.getColecaoCreditoARealizar() != null && !obterDebitoImovelOuClienteHelper.getColecaoCreditoARealizar().isEmpty()) { Iterator iteratorColecaoCreditoARealizar = obterDebitoImovelOuClienteHelper.getColecaoCreditoARealizar() .iterator(); while (iteratorColecaoCreditoARealizar.hasNext()) { CreditoARealizar creditoARealizar = (CreditoARealizar) iteratorColecaoCreditoARealizar.next(); totalCreditoARealizar = totalCreditoARealizar.add(creditoARealizar.getValorTotalComBonus()); colecao.add(creditoARealizar); } } } // colecao de debitos a cobrar e creditos a realizar gerarRelacaoDebitosHelper.setColecaoDebitosACobrarCreditoARealizar(colecao); if (tipoDebito != null && tipoDebito.length > 0) { achou: for (int i = 0; i < tipoDebito.length; i++) { if (new Integer(tipoDebito[i]).intValue() != ConstantesSistema.NUMERO_NAO_INFORMADO && new Integer(tipoDebito[i]).equals(ConstantesSistema.CONTA)) { // colecao guias de pagamento gerarRelacaoDebitosHelper.setColecaoGuiasPagamento(obterDebitoImovelOuClienteHelper .getColecaoGuiasPagamentoValores()); break achou; } } } else { // colecao guias de pagamento gerarRelacaoDebitosHelper.setColecaoGuiasPagamento(obterDebitoImovelOuClienteHelper .getColecaoGuiasPagamentoValores()); } BigDecimal totalGuiasPagamentos = new BigDecimal("0.00"); // guias de pagamentos if (tipoDebito != null && tipoDebito.length > 0) { achou: for (int i = 0; i < tipoDebito.length; i++) { if (new Integer(tipoDebito[i]).intValue() != ConstantesSistema.NUMERO_NAO_INFORMADO && new Integer(tipoDebito[i]).equals(ConstantesSistema.GUIA_PAGAMENTO)) { if (obterDebitoImovelOuClienteHelper.getColecaoGuiasPagamentoValores() != null && !obterDebitoImovelOuClienteHelper.getColecaoGuiasPagamentoValores().isEmpty()) { Iterator iteratorColecaoGuiasPagamentos = obterDebitoImovelOuClienteHelper .getColecaoGuiasPagamentoValores().iterator(); while (iteratorColecaoGuiasPagamentos.hasNext()) { GuiaPagamentoValoresHelper guiaPagamentoValoresHelper = (GuiaPagamentoValoresHelper) iteratorColecaoGuiasPagamentos .next(); totalGuiasPagamentos = totalGuiasPagamentos.add(guiaPagamentoValoresHelper.getGuiaPagamento() .getValorDebito()); totalJuros = totalJuros.add(guiaPagamentoValoresHelper.getValorJurosMora()); totalMulta = totalMulta.add(guiaPagamentoValoresHelper.getValorMulta()); totalAtualizacaoMonetaria = totalAtualizacaoMonetaria.add(guiaPagamentoValoresHelper .getValorAtualizacaoMonetaria()); } } break achou; } } } else { if (obterDebitoImovelOuClienteHelper.getColecaoGuiasPagamentoValores() != null && !obterDebitoImovelOuClienteHelper.getColecaoGuiasPagamentoValores().isEmpty()) { Iterator iteratorColecaoGuiasPagamentos = obterDebitoImovelOuClienteHelper .getColecaoGuiasPagamentoValores().iterator(); while (iteratorColecaoGuiasPagamentos.hasNext()) { GuiaPagamentoValoresHelper guiaPagamentoValoresHelper = (GuiaPagamentoValoresHelper) iteratorColecaoGuiasPagamentos .next(); totalGuiasPagamentos = totalGuiasPagamentos.add(guiaPagamentoValoresHelper.getGuiaPagamento() .getValorDebito()); totalJuros = totalJuros.add(guiaPagamentoValoresHelper.getValorJurosMora()); totalMulta = totalMulta.add(guiaPagamentoValoresHelper.getValorMulta()); totalAtualizacaoMonetaria = totalAtualizacaoMonetaria.add(guiaPagamentoValoresHelper .getValorAtualizacaoMonetaria()); } } } // somando com o totoal de guias totalDebito = totalDebito.add(totalGuiasPagamentos); // somas todas as multas, juros, acrescimos totalAcrescimoImpontualidade = totalAcrescimoImpontualidade.add(totalJuros); totalAcrescimoImpontualidade = totalAcrescimoImpontualidade.add(totalMulta); totalAcrescimoImpontualidade = totalAcrescimoImpontualidade.add(totalAtualizacaoMonetaria); totalDebito = totalDebito.add(totalCreditoARealizar); BigDecimal totalGeralAtualizado = new BigDecimal("0.00"); totalGeralAtualizado = totalGeralAtualizado.add(totalDebito); totalGeralAtualizado = totalGeralAtualizado.add(totalAcrescimoImpontualidade); totalGeralAtualizado = totalGeralAtualizado.setScale(2, BigDecimal.ROUND_HALF_DOWN); // adicionou os dados do imovel gerarRelacaoDebitosHelper.setGerarRelacaoDebitosImovelHelper(gerarRelacaoDebitosImovelHelper); // conta gerarRelacaoDebitosHelper.setTotalContas(totalContas); gerarRelacaoDebitosHelper.setTotalContaAtualizado(totalContasAtualizado); // credito gerarRelacaoDebitosHelper.setTotalCreditoARealizar(totalCreditoARealizar); // debito gerarRelacaoDebitosHelper.setTotalDebitosACobrar(totalDebitoACobrar); // guia gerarRelacaoDebitosHelper.setTotalGuiasPagamento(totalGuiasPagamentos); // acrescimo gerarRelacaoDebitosHelper.setTotalMulta(totalMulta); gerarRelacaoDebitosHelper.setTotalJuros(totalJuros); gerarRelacaoDebitosHelper.setTotalAtualizacaoMonetaria(totalAtualizacaoMonetaria); // total gerarRelacaoDebitosHelper.setTotalGeralAtualizado(totalGeralAtualizado); if ((valorDebitoInicial != null && !valorDebitoInicial.equals("")) && (valorDebitoFinal != null && !valorDebitoFinal.equals(""))) { BigDecimal debitoInicial = Util.formatarMoedaRealparaBigDecimal(valorDebitoInicial); BigDecimal debitoFinal = Util.formatarMoedaRealparaBigDecimal(valorDebitoFinal); if (totalGeralAtualizado.compareTo(debitoInicial) != ConstantesSistema.INVALIDO_ID && totalGeralAtualizado.compareTo(debitoFinal) != 1) { verificarValorDebito = true; } else { verificarValorDebito = false; } } else { verificarValorDebito = true; } if (verificarValorDebito && verificarQtdConta) { numeroImovel = numeroImovel + 1; // adiciona o helper colecaoGerarRelacaoDebitos.add(gerarRelacaoDebitosHelper); } else { gerarRelacaoDebitosHelper = null; } }// fim do if de pesquisasr debitos }// fim while } else {// fim if flagFimPesquisa = true; } } return colecaoGerarRelacaoDebitos; } /** * Retorna o valor de controladorEndereco * * @return O valor de controladorEndereco */ protected ControladorEnderecoLocal getControladorEndereco() { ControladorEnderecoLocalHome localHome = null; ControladorEnderecoLocal local = null; // pega a inst�ncia do ServiceLocator. ServiceLocator locator = null; try { locator = ServiceLocator.getInstancia(); localHome = (ControladorEnderecoLocalHome) locator.getLocalHome(ConstantesJNDI.CONTROLADOR_ENDERECO_SEJB); // guarda a referencia de um objeto capaz de fazer chamadas � // objetos remotamente local = localHome.create(); return local; } catch (CreateException e) { throw new SistemaException(e); } catch (ServiceLocatorException e) { throw new SistemaException(e); } } /** * * Este caso de uso permite a emiss�o de um ou mais documentos de cobran�a * * [UC0349] Emitir Documento de Cobran�a * * @author Raphael Rossiter * @data 26/05/2006 * * @param * @return void */ public void emitirDocumentoCobranca(CobrancaAcaoAtividadeCronograma cobrancaAcaoAtividadeCronograma, CobrancaAcaoAtividadeComando cobrancaAcaoAtividadeComando, Date dataAtualPesquisa, CobrancaAcao acaoCobranca, CobrancaGrupo grupoCobranca, CobrancaCriterio cobrancaCriterio) throws ControladorException { boolean flagFimPesquisa = false; final int quantidadeCobrancaDocumento = 1000; int quantidadeCobrancaDocumentoInicio = 0; StringBuilder cobrancaDocumentoTxt = new StringBuilder(); int sequencialImpressao = 0; Collection colecaoCobrancaDocumento = null; Map<Integer, Integer> mapAtualizaSequencial = null; Integer idCronogramaAtividadeAcaoCobranca = null; Integer idComandoAtividadeAcaoCobranca = null; Integer idAcaoCobranca = null; if (cobrancaAcaoAtividadeCronograma != null && cobrancaAcaoAtividadeCronograma.getId() != null) { idCronogramaAtividadeAcaoCobranca = cobrancaAcaoAtividadeCronograma.getId(); } if (cobrancaAcaoAtividadeComando != null && cobrancaAcaoAtividadeComando.getId() != null) { idComandoAtividadeAcaoCobranca = cobrancaAcaoAtividadeComando.getId(); } if (acaoCobranca != null && acaoCobranca.getId() != null) { idAcaoCobranca = acaoCobranca.getId(); } // Definindo arquivo para escrita Date dataAtual = new Date(); String nomeZip = null; if (idAcaoCobranca.equals(CobrancaAcao.AVISO_CORTE)) { if (idCronogramaAtividadeAcaoCobranca != null) { nomeZip = "AVISO_CORTE_GRUPO_" + grupoCobranca.getId() + "_" + Util.formatarData(dataAtual) + Util.formatarHoraSemDataSemDoisPontos(dataAtual); nomeZip = nomeZip.replace("/", "_"); } else { String descricaoAbrevDocumentoTipo = ""; if (acaoCobranca != null && acaoCobranca.getDocumentoTipo() != null) { descricaoAbrevDocumentoTipo = acaoCobranca.getDocumentoTipo().getDescricaoAbreviado(); } String tituloComandoEventual = cobrancaAcaoAtividadeComando.getDescricaoTitulo(); nomeZip = descricaoAbrevDocumentoTipo + " " + tituloComandoEventual + " " + Util.formatarData(dataAtual) + Util.formatarHoraSemDataSemDoisPontos(dataAtual); nomeZip = nomeZip.replace("/", "_"); nomeZip = nomeZip.replace(" ", "_"); } } else if (idAcaoCobranca.equals(CobrancaAcao.AVISO_CORTE_A_REVELIA)) { if (idCronogramaAtividadeAcaoCobranca != null) { nomeZip = "AVISO_CORTE_A_REVELIA_GRUPO_" + grupoCobranca.getId() + "_" + Util.formatarData(dataAtual) + Util.formatarHoraSemDataSemDoisPontos(dataAtual); nomeZip = nomeZip.replace("/", "_"); } else { String descricaoAbrevDocumentoTipo = ""; if (acaoCobranca != null && acaoCobranca.getDocumentoTipo() != null) { descricaoAbrevDocumentoTipo = acaoCobranca.getDocumentoTipo().getDescricaoAbreviado(); } String tituloComandoEventual = cobrancaAcaoAtividadeComando.getDescricaoTitulo(); nomeZip = descricaoAbrevDocumentoTipo + " " + tituloComandoEventual + " " + Util.formatarData(dataAtual) + Util.formatarHoraSemDataSemDoisPontos(dataAtual); nomeZip = nomeZip.replace("/", "_"); nomeZip = nomeZip.replace(" ", "_"); } } BufferedWriter out = null; ZipOutputStream zos = null; File leitura = null; // pegar o arquivo, zipar pasta e arquivo e escrever no stream try { System.out.println("***************************************"); System.out.println("INICO DA CRIACAO DO ARQUIVO"); System.out.println("***************************************"); // criar o arquivo zip File compactado = new File(getControladorUtil().getCaminhoDownloadArquivos("cobranca") + nomeZip + ".zip"); // nomeZip zos = new ZipOutputStream(new FileOutputStream(compactado)); leitura = new File(getControladorUtil().getCaminhoDownloadArquivos("cobranca") + nomeZip + ".txt"); out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(leitura.getAbsolutePath()))); } catch (IOException e) { e.printStackTrace(); throw new ControladorException("erro.sistema", e); } catch (Exception e) { e.printStackTrace(); throw new ControladorException("erro.sistema", e); } while (!flagFimPesquisa) { // map que armazena o sequencial e o numero da // conta para no final atualizar todos os // sequencias mapAtualizaSequencial = new HashMap(); try { System.out.println("***************************************"); System.out.println("ENTROU NO AVISO DE CORTE"); System.out.println("***************************************"); colecaoCobrancaDocumento = repositorioCobranca.pesquisarCobrancaDocumentoParaEmitir(idCronogramaAtividadeAcaoCobranca, idComandoAtividadeAcaoCobranca, dataAtualPesquisa, idAcaoCobranca, quantidadeCobrancaDocumentoInicio); System.out.println("***************************************"); System.out.println("QTD DE COBRANCA DOCUMENTO:" + colecaoCobrancaDocumento.size()); System.out.println("***************************************"); } catch (ErroRepositorioException ex) { ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } if (colecaoCobrancaDocumento != null && !colecaoCobrancaDocumento.isEmpty()) { System.out.println("***************************************"); System.out.println("QUANTIDADE COBRAN�A:" + colecaoCobrancaDocumento.size()); System.out.println("***************************************"); if (colecaoCobrancaDocumento.size() < quantidadeCobrancaDocumento) { flagFimPesquisa = true; } else { quantidadeCobrancaDocumentoInicio = quantidadeCobrancaDocumentoInicio + 1000; } int metadeColecao = 0; if (colecaoCobrancaDocumento.size() % 2 == 0) { metadeColecao = colecaoCobrancaDocumento.size() / 2; } else { metadeColecao = (colecaoCobrancaDocumento.size() / 2) + 1; } Map<Integer, Map<Object, Object>> mapCobrancaDocumentoOrdenada = dividirColecao(colecaoCobrancaDocumento); if (mapCobrancaDocumentoOrdenada != null) { int countOrdem = 0; while (countOrdem < mapCobrancaDocumentoOrdenada.size()) { Map<Object, Object> mapCobrancaoDocumentoDivididas = mapCobrancaDocumentoOrdenada.get(countOrdem); Iterator iteratorCobrancaDocumento = mapCobrancaoDocumentoDivididas.keySet().iterator(); while (iteratorCobrancaDocumento.hasNext()) { CobrancaDocumento cobrancaDocumento = null; int situacao = 0; cobrancaDocumento = (CobrancaDocumento) iteratorCobrancaDocumento.next(); String nomeCliente = null; Collection colecaoCobrancaDocumentoItem = null; Iterator iteratorColecaoCobrancaDocumento = colecaoCobrancaDocumento.iterator(); /* * Estes objetos auxiliar�o na formata��o da * inscri��o que ser� composta por informa��es do * documento de cobran�a e do im�vel a ele associado */ Imovel inscricao = null; SetorComercial setorComercialInscricao = null; Quadra quadraInscricao = null; /* * Objeto que ser� utilizado para armazenar as * informa��es do documento de cobran�a de acordo * com o layout definido no caso de uso */ sequencialImpressao++; while (situacao < 2) { if (situacao == 0) { situacao = 1; sequencialImpressao = atualizaSequencial(sequencialImpressao, situacao, metadeColecao); } else { cobrancaDocumento = (CobrancaDocumento) mapCobrancaoDocumentoDivididas.get(cobrancaDocumento); situacao = 2; sequencialImpressao = atualizaSequencial(sequencialImpressao, situacao, metadeColecao); } if (cobrancaDocumento != null) { try { nomeCliente = this.repositorioClienteImovel.pesquisarNomeClientePorImovel(cobrancaDocumento .getImovel().getId()); colecaoCobrancaDocumentoItem = this.repositorioCobranca .selecionarCobrancaDocumentoItemReferenteConta(cobrancaDocumento); } catch (ErroRepositorioException ex) { ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } if (colecaoCobrancaDocumentoItem != null && !colecaoCobrancaDocumentoItem.isEmpty()) { // In�cio do processo de gera��o do // arquivo // txt // LINHA 01 // ================================== /* * Canal ("1") Fonte ("1") */ cobrancaDocumentoTxt.append("1"); cobrancaDocumentoTxt.append("1"); cobrancaDocumentoTxt.append(" "); // Nome da Localidade cobrancaDocumentoTxt.append(Util.completaString(cobrancaDocumento.getLocalidade().getDescricao(), 20)); if (cobrancaAcaoAtividadeCronograma != null) { String ciclo = " CICLO:" + Util.formatarAnoMesParaMesAno(cobrancaAcaoAtividadeCronograma .getCobrancaAcaoCronograma().getCobrancaGrupoCronogramaMes() .getAnoMesReferencia()); cobrancaDocumentoTxt.append(ciclo); cobrancaDocumentoTxt.append(Util.completaString("", 46)); } else { cobrancaDocumentoTxt.append(Util.completaString("", 62)); } cobrancaDocumentoTxt.append(System.getProperty("line.separator")); // LINHA 02 // ================================== /* * Canal ("-") Fonte ("1") */ cobrancaDocumentoTxt.append("-"); cobrancaDocumentoTxt.append("1"); cobrancaDocumentoTxt.append(" "); // Inscri��o quadraInscricao = new Quadra(); setorComercialInscricao = new SetorComercial(); inscricao = new Imovel(); quadraInscricao.setNumeroQuadra(cobrancaDocumento.getNumeroQuadra()); setorComercialInscricao.setCodigo(cobrancaDocumento.getCodigoSetorComercial()); inscricao.setLocalidade(cobrancaDocumento.getLocalidade()); inscricao.setSetorComercial(setorComercialInscricao); inscricao.setQuadra(quadraInscricao); inscricao.setLote(cobrancaDocumento.getImovel().getLote()); inscricao.setSubLote(cobrancaDocumento.getImovel().getSubLote()); cobrancaDocumentoTxt.append(Util.completaString(inscricao.getInscricaoFormatada(), 20)); cobrancaDocumentoTxt.append(Util.completaString("", 14)); // Nome do Cliente cobrancaDocumentoTxt.append(Util.completaString(nomeCliente, 50)); cobrancaDocumentoTxt.append(Util.completaString("", 65)); cobrancaDocumentoTxt.append(System.getProperty("line.separator")); // LINHA 03 // ================================== /* * Canal ("+") Fonte ("2") */ cobrancaDocumentoTxt.append("+"); cobrancaDocumentoTxt.append("2"); cobrancaDocumentoTxt.append(Util.completaString("", 69)); // Matr�cula do im�vel String matriculaImovelFormatada = Util.retornaMatriculaImovelFormatada(cobrancaDocumento .getImovel().getId()); cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(matriculaImovelFormatada, 10)); cobrancaDocumentoTxt.append(Util.completaString("", 71)); cobrancaDocumentoTxt.append(System.getProperty("line.separator")); // LINHA 04 // ================================== /* * Canal ("-") Fonte ("1") */ cobrancaDocumentoTxt.append("-"); cobrancaDocumentoTxt.append("1"); cobrancaDocumentoTxt.append(" "); // Endere�o Formatado cobrancaDocumentoTxt.append(Util.completaString(cobrancaDocumento.getImovel() .getEnderecoFormatadoAbreviado(), 72)); cobrancaDocumentoTxt.append(Util.completaString("", 77)); cobrancaDocumentoTxt.append(System.getProperty("line.separator")); // LINHA 05 // ================================== /* * Canal ("+") Fonte ("2") */ cobrancaDocumentoTxt.append("+"); cobrancaDocumentoTxt.append("2"); cobrancaDocumentoTxt.append(Util.completaString("", 66)); // Grupo de Cobran�a cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(cobrancaDocumento.getQuadra() .getRota().getCobrancaGrupo().getId().toString(), 2)); cobrancaDocumentoTxt.append(" "); // Sequencial do Documento de Cobran�a cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda( "" + cobrancaDocumento.getNumeroSequenciaDocumento(), 9)); cobrancaDocumentoTxt.append(Util.completaString("", 72)); cobrancaDocumentoTxt.append(System.getProperty("line.separator")); // LINHA 06 // ================================== /* * Canal ("-") Fonte ("1") */ cobrancaDocumentoTxt.append("-"); cobrancaDocumentoTxt.append("1"); cobrancaDocumentoTxt.append(" "); // C�digo da situa��o da liga��o de �gua cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(cobrancaDocumento.getImovel() .getLigacaoAguaSituacao().getId().toString(), 1)); cobrancaDocumentoTxt.append(Util.completaString("", 2)); // C�digo da situa��o da liga��o de // esgoto cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(cobrancaDocumento.getImovel() .getLigacaoEsgotoSituacao().getId().toString(), 1)); cobrancaDocumentoTxt.append(Util.completaString("", 6)); /* * Quantidades de economias por * categoria: 1� RESID�NCIAL 2� * COMERCIAL 3� INDUSTRIAL 4� P�BLICA */ Collection colecaoCategorias = this.getControladorImovel().obterQuantidadeEconomiasCategoria( cobrancaDocumento.getImovel()); String qtdResidencial = ""; String qtdComercial = ""; String qtdIndustrial = ""; String qtdPublico = ""; if (colecaoCategorias != null && !colecaoCategorias.isEmpty()) { Iterator iteratorColecaoCategorias = colecaoCategorias.iterator(); Categoria categoria = null; while (iteratorColecaoCategorias.hasNext()) { categoria = (Categoria) iteratorColecaoCategorias.next(); if (categoria.getId().equals(Categoria.RESIDENCIAL)) { qtdResidencial = "" + categoria.getQuantidadeEconomiasCategoria(); } else if (categoria.getId().equals(Categoria.COMERCIAL)) { qtdComercial = "" + categoria.getQuantidadeEconomiasCategoria(); } else if (categoria.getId().equals(Categoria.INDUSTRIAL)) { qtdIndustrial = "" + categoria.getQuantidadeEconomiasCategoria(); } else if (categoria.getId().equals(Categoria.PUBLICO)) { qtdPublico = "" + categoria.getQuantidadeEconomiasCategoria(); } } } colecaoCategorias = null; // Resid�ncial if (!qtdResidencial.equals("")) { cobrancaDocumentoTxt.append(Util.adicionarZerosEsquedaNumero(3, qtdResidencial)); } else { cobrancaDocumentoTxt.append(Util.completaString("", 3)); } cobrancaDocumentoTxt.append(Util.completaString("", 5)); // Comercial if (!qtdComercial.equals("")) { cobrancaDocumentoTxt.append(Util.adicionarZerosEsquedaNumero(3, qtdComercial)); } else { cobrancaDocumentoTxt.append(Util.completaString("", 3)); } cobrancaDocumentoTxt.append(Util.completaString("", 8)); // Industrial if (!qtdIndustrial.equals("")) { cobrancaDocumentoTxt.append(Util.adicionarZerosEsquedaNumero(3, qtdIndustrial)); } else { cobrancaDocumentoTxt.append(Util.completaString("", 3)); } cobrancaDocumentoTxt.append(Util.completaString("", 5)); // P�blico if (!qtdPublico.equals("")) { cobrancaDocumentoTxt.append(Util.adicionarZerosEsquedaNumero(3, qtdPublico)); } else { cobrancaDocumentoTxt.append(Util.completaString("", 3)); } cobrancaDocumentoTxt.append(Util.completaString("", 11)); // Perfil do Im�vel cobrancaDocumentoTxt.append(Util.completaString(cobrancaDocumento.getImovelPerfil().getDescricao(), 8)); cobrancaDocumentoTxt.append(Util.completaString("", 6)); // Data de Emiss�o if (cobrancaDocumento.getEmissao() != null) { cobrancaDocumentoTxt.append(Util.formatarData(cobrancaDocumento.getEmissao())); } else { cobrancaDocumentoTxt.append(Util.completaString("", 10)); } cobrancaDocumentoTxt.append(Util.completaString("", 4)); // // Data de Validade // if // (cobrancaDocumento.getDataValidade() // != null) { // cobrancaDocumentoTxt.append(Util // .formatarData(cobrancaDocumento.getDataValidade())); // } else { // cobrancaDocumentoTxt.append(Util // .completaString("", 10)); // } // alterado por Vivianne Sousa // 15/09/2008 // Data de Validade Date dataValidade = this.obterDataValidadeDocumentoCobranca(cobrancaDocumento, null, null); if (dataValidade != null) { cobrancaDocumentoTxt.append(Util.formatarData(dataValidade)); } else { cobrancaDocumentoTxt.append(Util.completaString("", 10)); } cobrancaDocumentoTxt.append(Util.completaString("", 60)); cobrancaDocumentoTxt.append(System.getProperty("line.separator")); // LINHA 07 // ================================== /* * Canal ("1") Fonte ("1") */ cobrancaDocumentoTxt.append("1"); cobrancaDocumentoTxt.append("1"); /* * Selecionar os itens do documento de * cobran�a correspondentes a conta e * ordenar por ano/m�s de refer�ncia da * conta */ if (colecaoCobrancaDocumentoItem != null && !colecaoCobrancaDocumentoItem.isEmpty()) { int countImpressao = colecaoCobrancaDocumentoItem.size() - 26; Iterator iteratorColecaoCobrancaDocumentoItem = null; int contRegistros = 0; CobrancaDocumentoItem cobrancaDocumentoItem = null; cobrancaDocumentoTxt.append(Util.completaString("", 3)); /* * Caso a quantidade de itens * selecionados seja superior a 28 * [SB0001 - Calcular Valor e Data * de Vencimento Anterior] * * Caso contr�rio: Dados do primeiro * e segundo itens selecionados */ if (colecaoCobrancaDocumentoItem.size() > 28) { CalcularValorDataVencimentoAnteriorHelper calcularValorDataVencimentoAnteriorHelper = this .calcularValorDataVencimentoAnterior(colecaoCobrancaDocumentoItem, 28); // Constante "DEBTO.ATE" cobrancaDocumentoTxt.append("DEBTO.ATE"); cobrancaDocumentoTxt.append(Util.completaString("", 5)); // Data de Vencimento anterior // retornado // pelo // [SB0001] cobrancaDocumentoTxt.append(Util.formatarData(calcularValorDataVencimentoAnteriorHelper .getDataVencimentoAnterior())); cobrancaDocumentoTxt.append(" "); // Valor anterior retornado pelo // [SB0001] cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(Util .formatarMoedaReal(calcularValorDataVencimentoAnteriorHelper.getValorAnterior()), 16)); cobrancaDocumentoTxt.append(Util.completaString("", 5)); /* * Dados do primeiro �tem que * n�o foi considerado anterior: */ // M�s/Ano de refer�ncia da // conta cobrancaDocumentoTxt.append(Util.completaString( Util.formatarAnoMesParaMesAno(calcularValorDataVencimentoAnteriorHelper .getCobrancaDocumentoItemNaoAnterior().getContaGeral().getConta() .getReferencia()), 9)); cobrancaDocumentoTxt.append(Util.completaString("", 5)); // Data de vencimento da conta cobrancaDocumentoTxt.append(Util.formatarData(calcularValorDataVencimentoAnteriorHelper .getCobrancaDocumentoItemNaoAnterior().getContaGeral().getConta() .getDataVencimentoConta())); cobrancaDocumentoTxt.append(" "); // Valor do item cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(Util .formatarMoedaReal(calcularValorDataVencimentoAnteriorHelper .getCobrancaDocumentoItemNaoAnterior().getValorItemCobrado()), 16)); cobrancaDocumentoTxt.append(Util.completaString("", 60)); } else { iteratorColecaoCobrancaDocumentoItem = colecaoCobrancaDocumentoItem.iterator(); contRegistros = 0; cobrancaDocumentoItem = null; while (iteratorColecaoCobrancaDocumentoItem.hasNext()) { cobrancaDocumentoItem = (CobrancaDocumentoItem) iteratorColecaoCobrancaDocumentoItem .next(); if (contRegistros == 2) { break; } // M�s/Ano de refer�ncia da // conta cobrancaDocumentoTxt.append(Util.completaString( Util.formatarAnoMesParaMesAno(cobrancaDocumentoItem.getContaGeral().getConta() .getReferencia()), 9)); cobrancaDocumentoTxt.append(Util.completaString("", 5)); // Data de vencimento da // conta cobrancaDocumentoTxt.append(Util.formatarData(cobrancaDocumentoItem.getContaGeral() .getConta().getDataVencimentoConta())); cobrancaDocumentoTxt.append(" "); // Valor do item cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda( Util.formatarMoedaReal(cobrancaDocumentoItem.getValorItemCobrado()), 16)); cobrancaDocumentoTxt.append(Util.completaString("", 5)); contRegistros++; } if (contRegistros < 2) { cobrancaDocumentoTxt.append(Util.completaString("", 101)); } else { cobrancaDocumentoTxt.append(Util.completaString("", 55)); } } cobrancaDocumentoTxt.append(System.getProperty("line.separator")); // LINHA 08 // ================================== /* * Canal ("") Fonte ("1") */ if (countImpressao <= 0) { iteratorColecaoCobrancaDocumentoItem = colecaoCobrancaDocumentoItem.iterator(); contRegistros = 0; cobrancaDocumentoItem = null; while (iteratorColecaoCobrancaDocumentoItem.hasNext()) { cobrancaDocumentoItem = (CobrancaDocumentoItem) iteratorColecaoCobrancaDocumentoItem .next(); if (contRegistros >= 2) { if (contRegistros % 2 == 0) { cobrancaDocumentoTxt.append(" "); cobrancaDocumentoTxt.append("1"); cobrancaDocumentoTxt.append(Util.completaString("", 3)); } // M�s/Ano de refer�ncia // da // conta cobrancaDocumentoTxt.append(Util.completaString( Util.formatarAnoMesParaMesAno(cobrancaDocumentoItem.getContaGeral() .getConta().getReferencia()), 9)); cobrancaDocumentoTxt.append(Util.completaString("", 5)); // Data de vencimento da // conta cobrancaDocumentoTxt.append(Util.formatarData(cobrancaDocumentoItem.getContaGeral() .getConta().getDataVencimentoConta())); cobrancaDocumentoTxt.append(" "); // Valor do item cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda( Util.formatarMoedaReal(cobrancaDocumentoItem.getValorItemCobrado()), 16)); cobrancaDocumentoTxt.append(Util.completaString("", 5)); if (contRegistros % 2 != 0) { cobrancaDocumentoTxt.append(Util.completaString("", 55)); cobrancaDocumentoTxt.append(System.getProperty("line.separator")); } } contRegistros++; } } else { while (countImpressao < colecaoCobrancaDocumentoItem.size()) { cobrancaDocumentoItem = (CobrancaDocumentoItem) ((List) colecaoCobrancaDocumentoItem) .get(countImpressao); if (contRegistros % 2 == 0) { cobrancaDocumentoTxt.append(" "); cobrancaDocumentoTxt.append("1"); cobrancaDocumentoTxt.append(Util.completaString("", 3)); } // M�s/Ano de refer�ncia // da // conta cobrancaDocumentoTxt.append(Util.completaString( Util.formatarAnoMesParaMesAno(cobrancaDocumentoItem.getContaGeral().getConta() .getReferencia()), 9)); cobrancaDocumentoTxt.append(Util.completaString("", 5)); // Data de vencimento da // conta cobrancaDocumentoTxt.append(Util.formatarData(cobrancaDocumentoItem.getContaGeral() .getConta().getDataVencimentoConta())); cobrancaDocumentoTxt.append(" "); // Valor do item cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda( Util.formatarMoedaReal(cobrancaDocumentoItem.getValorItemCobrado()), 16)); cobrancaDocumentoTxt.append(Util.completaString("", 5)); if (contRegistros % 2 != 0) { cobrancaDocumentoTxt.append(Util.completaString("", 55)); cobrancaDocumentoTxt.append(System.getProperty("line.separator")); } countImpressao++; contRegistros++; } } if (contRegistros > 2) { if (contRegistros % 2 != 0) { cobrancaDocumentoTxt.append(Util.completaString("", 101)); cobrancaDocumentoTxt.append(System.getProperty("line.separator")); } } } // LINHA 09 // ================================== /* * Canal ("1") Fonte ("2") */ cobrancaDocumentoTxt.append("1"); cobrancaDocumentoTxt.append("2"); cobrancaDocumentoTxt.append(Util.completaString("", 150)); cobrancaDocumentoTxt.append(System.getProperty("line.separator")); // LINHA 10 // ================================== /* * Canal ("0") Fonte ("2") */ cobrancaDocumentoTxt.append("0"); cobrancaDocumentoTxt.append("2"); cobrancaDocumentoTxt.append(Util.completaString("", 61)); // Valor total do documento de cobran�a cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda( Util.formatarMoedaReal(cobrancaDocumento.getValorDocumento()), 16)); cobrancaDocumentoTxt.append(Util.completaString("", 73)); cobrancaDocumentoTxt.append(System.getProperty("line.separator")); // LINHA 11 // ================================== /* * Canal ("1") Fonte ("1") */ cobrancaDocumentoTxt.append("1"); cobrancaDocumentoTxt.append("1"); cobrancaDocumentoTxt.append(" "); // Constante "GR- " cobrancaDocumentoTxt.append("GR- "); // Grupo de Cobran�a cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(cobrancaDocumento.getQuadra() .getRota().getCobrancaGrupo().getId().toString(), 2)); cobrancaDocumentoTxt.append(Util.completaString("", 2)); // C�digo e descri��o da empresa if (cobrancaDocumento.getEmpresa() != null) { cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(cobrancaDocumento .getEmpresa().getId().toString(), 2)); cobrancaDocumentoTxt.append("- "); cobrancaDocumentoTxt.append(Util.completaString(cobrancaDocumento.getEmpresa() .getDescricaoAbreviada(), 10)); } else { cobrancaDocumentoTxt.append(Util.completaString("", 14)); } cobrancaDocumentoTxt.append(Util.completaString("", 11)); // Sigla e descri�ao da ger�ncia // regional cobrancaDocumentoTxt.append(Util.completaString(cobrancaDocumento.getLocalidade() .getGerenciaRegional().getNomeAbreviado(), 3)); cobrancaDocumentoTxt.append("-"); cobrancaDocumentoTxt.append(Util.completaString(cobrancaDocumento.getLocalidade() .getGerenciaRegional().getNome(), 8)); cobrancaDocumentoTxt.append(Util.completaString("", 25)); // Sequencial de impress�o cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda( Util.retornaSequencialFormatado(sequencialImpressao), 9)); cobrancaDocumentoTxt.append(Util.completaString("", 70)); cobrancaDocumentoTxt.append(System.getProperty("line.separator")); // LINHA 12 // ================================== /* * Canal ("") Fonte ("1") */ cobrancaDocumentoTxt.append(" "); cobrancaDocumentoTxt.append("1"); cobrancaDocumentoTxt.append(Util.completaString("", 150)); cobrancaDocumentoTxt.append(System.getProperty("line.separator")); // LINHA 13 // ================================== /* * Canal ("-") Fonte ("1") */ cobrancaDocumentoTxt.append("-"); cobrancaDocumentoTxt.append("1"); cobrancaDocumentoTxt.append(Util.completaString("", 18)); String representacaoNumericaCodBarra = ""; // Obt�m a representa��o num�rica do // c�digode // barra representacaoNumericaCodBarra = this.getControladorArrecadacao() .obterRepresentacaoNumericaCodigoBarra(5, cobrancaDocumento.getValorDocumento(), cobrancaDocumento.getLocalidade().getId(), cobrancaDocumento.getImovel().getId(), null, null, null, null, String.valueOf(cobrancaDocumento.getNumeroSequenciaDocumento()), cobrancaDocumento.getDocumentoTipo().getId(), null, null, null); // Formata a representa��o n�merica do // c�digo de // barras String representacaoNumericaCodBarraFormatada = representacaoNumericaCodBarra.substring(0, 11) + " " + representacaoNumericaCodBarra.substring(11, 12) + " " + representacaoNumericaCodBarra.substring(12, 23) + " " + representacaoNumericaCodBarra.substring(23, 24) + " " + representacaoNumericaCodBarra.substring(24, 35) + " " + representacaoNumericaCodBarra.substring(35, 36) + " " + representacaoNumericaCodBarra.substring(36, 47) + " " + representacaoNumericaCodBarra.substring(47, 48); cobrancaDocumentoTxt.append(representacaoNumericaCodBarraFormatada); cobrancaDocumentoTxt.append(Util.completaString("", 77)); cobrancaDocumentoTxt.append(System.getProperty("line.separator")); // LINHA 14 // ================================== /* * Canal ("-") Fonte ("1") */ cobrancaDocumentoTxt.append("-"); cobrancaDocumentoTxt.append("1"); cobrancaDocumentoTxt.append(Util.completaString("", 150)); cobrancaDocumentoTxt.append(System.getProperty("line.separator")); // LINHA 15 // ================================== /* * Canal ("") Fonte ("1") */ cobrancaDocumentoTxt.append(" "); cobrancaDocumentoTxt.append("1"); cobrancaDocumentoTxt.append(Util.completaString("", 150)); cobrancaDocumentoTxt.append(System.getProperty("line.separator")); // LINHA 16 // ================================== /* * Canal ("-") Fonte ("3") */ cobrancaDocumentoTxt.append("-"); cobrancaDocumentoTxt.append("3"); // Cria o objeto para gerar o c�digo de // barras // no // padr�o // intercalado 2 de 5 Interleaved2of5 codigoBarraIntercalado2de5 = new Interleaved2of5(); // Recupera a representa��o n�merica do // c�digo // de // barras // sem // os d�gitos verificadores String representacaoCodigoBarrasSemDigitoVerificador = representacaoNumericaCodBarra.substring(0, 11) + representacaoNumericaCodBarra.substring(12, 23) + representacaoNumericaCodBarra.substring(24, 35) + representacaoNumericaCodBarra.substring(36, 47); cobrancaDocumentoTxt.append(Util.completaString("", 21)); cobrancaDocumentoTxt.append(codigoBarraIntercalado2de5 .encodeValue(representacaoCodigoBarrasSemDigitoVerificador)); cobrancaDocumentoTxt.append(Util.completaString("", 17)); cobrancaDocumentoTxt.append(System.getProperty("line.separator")); // LINHA 17 // ================================== /* * Canal ("-") Fonte ("1") */ cobrancaDocumentoTxt.append("-"); cobrancaDocumentoTxt.append("1"); cobrancaDocumentoTxt.append(" "); // Inscri��o cobrancaDocumentoTxt.append(Util.completaString(inscricao.getInscricaoFormatada(), 20)); cobrancaDocumentoTxt.append(Util.completaString("", 14)); // Data de Validade // if // (cobrancaDocumento.getDataValidade() // != null) { // cobrancaDocumentoTxt.append(Util // .formatarData(cobrancaDocumento.getDataValidade())); // } else { // cobrancaDocumentoTxt.append(Util.completaString("", // 10)); // } // alterado por Vivianne Sousa // 15/09/2008 // Data de Validade if (dataValidade != null) { cobrancaDocumentoTxt.append(Util.formatarData(dataValidade)); } else { cobrancaDocumentoTxt.append(Util.completaString("", 10)); } cobrancaDocumentoTxt.append(Util.completaString("", 105)); cobrancaDocumentoTxt.append(System.getProperty("line.separator")); // LINHA 18 // ================================== /* * Canal ("+") Fonte ("2") */ cobrancaDocumentoTxt.append("+"); cobrancaDocumentoTxt.append("2"); cobrancaDocumentoTxt.append(Util.completaString("", 50)); // Matr�cula do im�vel cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(matriculaImovelFormatada, 10)); cobrancaDocumentoTxt.append(Util.completaString("", 7)); // Sequencial do documento de cobran�a cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda( "" + cobrancaDocumento.getNumeroSequenciaDocumento(), 9)); cobrancaDocumentoTxt.append(Util.completaString("", 74)); cobrancaDocumentoTxt.append(System.getProperty("line.separator")); // LINHA 19 // ================================== /* * Canal ("-") Fonte ("1") */ cobrancaDocumentoTxt.append("-"); cobrancaDocumentoTxt.append("1"); cobrancaDocumentoTxt.append(Util.completaString("", 150)); cobrancaDocumentoTxt.append(System.getProperty("line.separator")); // LINHA 20 // ================================== /* * Canal ("0") Fonte ("2") */ cobrancaDocumentoTxt.append("0"); cobrancaDocumentoTxt.append("2"); cobrancaDocumentoTxt.append(Util.completaString("", 61)); // Valor total do documento de cobran�a cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda( Util.formatarMoedaReal(cobrancaDocumento.getValorDocumento()), 16)); cobrancaDocumentoTxt.append(Util.completaString("", 73)); cobrancaDocumentoTxt.append(System.getProperty("line.separator")); // LINHA 21 // ================================== /* * Canal ("0") Fonte ("1") */ cobrancaDocumentoTxt.append("0"); cobrancaDocumentoTxt.append("1"); cobrancaDocumentoTxt.append(Util.completaString("", 150)); cobrancaDocumentoTxt.append(System.getProperty("line.separator")); // LINHA // 22================================== /* * Canal ("-") Fonte ("1") */ cobrancaDocumentoTxt.append("-"); cobrancaDocumentoTxt.append("1"); cobrancaDocumentoTxt.append(" "); // Constante "GR- " cobrancaDocumentoTxt.append("GR- "); // Grupo de Cobran�a cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(cobrancaDocumento.getQuadra() .getRota().getCobrancaGrupo().getId().toString(), 2)); cobrancaDocumentoTxt.append(Util.completaString("", 64)); // Sequencial de impress�o cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda( Util.retornaSequencialFormatado(sequencialImpressao), 9)); cobrancaDocumentoTxt.append(Util.completaString("", 70)); if (iteratorColecaoCobrancaDocumento.hasNext()) { cobrancaDocumentoTxt.append(System.getProperty("line.separator")); } try { out.write(cobrancaDocumentoTxt.toString()); out.flush(); } catch (IOException e) { e.printStackTrace(); throw new ControladorException("erro.sistema", e); } cobrancaDocumentoTxt = new StringBuilder(); } // adiciona o id da // conta e o sequencial // no para serem // atualizados mapAtualizaSequencial.put(cobrancaDocumento.getId(), sequencialImpressao); colecaoCobrancaDocumentoItem = null; } }// fim do la�o que verifica // as 2 // contas }// fim la�o while do iterator do // objeto // helper countOrdem++; mapCobrancaoDocumentoDivididas = null; } } } else { flagFimPesquisa = true; } try { repositorioCobranca.atualizarSequencialCobrancaDocumentoImpressao(mapAtualizaSequencial); } catch (ErroRepositorioException e) { throw new ControladorException("erro.sistema", e); } mapAtualizaSequencial = null; colecaoCobrancaDocumento = null; } // fim de arquivo try { cobrancaDocumentoTxt = new StringBuilder(); cobrancaDocumentoTxt.append("\u0004"); out.write(cobrancaDocumentoTxt.toString()); out.flush(); ZipUtil.adicionarArquivo(zos, leitura); zos.close(); leitura.delete(); out.close(); } catch (IOException e) { e.printStackTrace(); throw new ControladorException("erro.sistema", e); } System.out.println("***************************************"); System.out.println("FIM DA CRIACAO DO ARQUIVO"); System.out.println("***************************************"); } /** * [UC0349] Emitir Documento de Cobran�a * * Calcular valor e Data de vencimento anterior * * [SB0001] - Calcular Valor e Data de Vencimento Anterior * * @author Raphael Rossiter, Vivianne Sousa * @data 30/05/2006, 14/09/2006 * * @param Collection * <CobrancaDocumentoItem> * @return CalcularValorDataVencimentoAnteriorHelper */ public CalcularValorDataVencimentoAnteriorHelper calcularValorDataVencimentoAnterior( Collection<CobrancaDocumentoItem> colecaoCobrancaDocumentoItem, int qtdMaxItens) throws ControladorException { CalcularValorDataVencimentoAnteriorHelper retorno = new CalcularValorDataVencimentoAnteriorHelper(); /* * Calcular a quantidade de itens anteriores = (quantidade de itens * selecionados - qtdMaxItens) + 1 */ int qtdItensAnteriores = (colecaoCobrancaDocumentoItem.size() - qtdMaxItens) + 1; /* * Calcular o valor anterior que � o somat�rio do valor dos itens * selecionados (CDIT_VLITEMCOBRADO) do primeiro item at� o item com * sequencial igual a quantidade itens anteriores */ BigDecimal vlAnterior = new BigDecimal("0.00"); BigDecimal vlAnteriorAcrescimos = new BigDecimal("0.00"); Date dataVencimentoAnterior = null; int sequencia = 0; Iterator iteratorColecaoCobrancaDocumentoItem = colecaoCobrancaDocumentoItem.iterator(); CobrancaDocumentoItem cobrancaDocumentoItem = null; CobrancaDocumentoItem cobrancaDocumentoItemNaoAnterior = null; while (iteratorColecaoCobrancaDocumentoItem.hasNext()) { cobrancaDocumentoItem = (CobrancaDocumentoItem) iteratorColecaoCobrancaDocumentoItem.next(); if (cobrancaDocumentoItem.getValorItemCobrado() != null) { vlAnterior = vlAnterior.add(cobrancaDocumentoItem.getValorItemCobrado()); } if (cobrancaDocumentoItem.getValorAcrescimos() != null) { vlAnteriorAcrescimos = vlAnteriorAcrescimos.add(cobrancaDocumentoItem.getValorAcrescimos()); } sequencia++; if (sequencia == qtdItensAnteriores) { /* * Atribuir � date de vencimento anterior o vencimento da conta * referente ao item coma sequ�ncia igual a quantidade de itens * anteriores */ dataVencimentoAnterior = cobrancaDocumentoItem.getContaGeral().getConta().getDataVencimentoConta(); cobrancaDocumentoItemNaoAnterior = (CobrancaDocumentoItem) iteratorColecaoCobrancaDocumentoItem.next(); break; } } retorno.setValorAnterior(vlAnterior); retorno.setDataVencimentoAnterior(dataVencimentoAnterior); retorno.setCobrancaDocumentoItemNaoAnterior(cobrancaDocumentoItemNaoAnterior); retorno.setValorAcrescimosAnterior(vlAnteriorAcrescimos); return retorno; } /** * * Gerar Rela��o de D�bitos * * [UC0227] Gerar Rela��o de D�bitos * * @author Rafael Santos * @date 12/06/2006 * */ public Integer obterQuantidadaeRelacaoImoveisDebitos(String idImovelCondominio, String idImovelPrincipal, String idNomeConta, String idSituacaoLigacaoAgua, String consumoMinimoInicialAgua, String consumoMinimoFinalAgua, String idSituacaoLigacaoEsgoto, String consumoMinimoInicialEsgoto, String consumoMinimoFinalEsgoto, String intervaloValorPercentualEsgotoInicial, String intervaloValorPercentualEsgotoFinal, String intervaloMediaMinimaImovelInicial, String intervaloMediaMinimaImovelFinal, String intervaloMediaMinimaHidrometroInicial, String intervaloMediaMinimaHidrometroFinal, String idImovelPerfil, String idPocoTipo, String idFaturamentoSituacaoTipo, String idCobrancaSituacaoTipo, String idSituacaoEspecialCobranca, String idEloAnormalidade, String areaConstruidaInicial, String areaConstruidaFinal, String idCadastroOcorrencia, String idConsumoTarifa, String idGerenciaRegional, String idLocalidadeInicial, String idLocalidadeFinal, String setorComercialInicial, String setorComercialFinal, String quadraInicial, String quadraFinal, String loteOrigem, String loteDestno, String cep, String logradouro, String bairro, String municipio, String idTipoMedicao, String indicadorMedicao, String idSubCategoria, String idCategoria, String quantidadeEconomiasInicial, String quantidadeEconomiasFinal, String diaVencimento, String idCliente, String idClienteTipo, String idClienteRelacaoTipo, String numeroPontosInicial, String numeroPontosFinal, String numeroMoradoresInicial, String numeroMoradoresFinal, String idAreaConstruidaFaixa) throws ControladorException { Integer quantidade; try { // remove primeiro as linhas do crit�rio cobran�a quantidade = repositorioCobranca.obterQuantidadaeRelacaoImoveisDebitos(idImovelCondominio, idImovelPrincipal, idNomeConta, idSituacaoLigacaoAgua, consumoMinimoInicialAgua, consumoMinimoFinalAgua, idSituacaoLigacaoEsgoto, consumoMinimoInicialEsgoto, consumoMinimoFinalEsgoto, intervaloValorPercentualEsgotoInicial, intervaloValorPercentualEsgotoFinal, intervaloMediaMinimaImovelInicial, intervaloMediaMinimaImovelFinal, intervaloMediaMinimaHidrometroInicial, intervaloMediaMinimaHidrometroFinal, idImovelPerfil, idPocoTipo, idFaturamentoSituacaoTipo, idCobrancaSituacaoTipo, idSituacaoEspecialCobranca, idEloAnormalidade, areaConstruidaInicial, areaConstruidaFinal, idCadastroOcorrencia, idConsumoTarifa, idGerenciaRegional, idLocalidadeInicial, idLocalidadeFinal, setorComercialInicial, setorComercialFinal, quadraInicial, quadraFinal, loteOrigem, loteDestno, cep, logradouro, bairro, municipio, idTipoMedicao, indicadorMedicao, idSubCategoria, idCategoria, quantidadeEconomiasInicial, quantidadeEconomiasFinal, diaVencimento, idCliente, idClienteTipo, idClienteRelacaoTipo, numeroPontosInicial, numeroPontosFinal, numeroMoradoresInicial, numeroMoradoresFinal, idAreaConstruidaFaixa); } catch (ErroRepositorioException e) { sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", e); } return quantidade; } /** * Retorna o count do resultado da pesquisa de Cobran�a Cronograma * * * @author Fl�vio Leonardo * @date 14/06/2006 * * @return Integer retorno * @throws ErroRepositorioException */ public Integer pesquisarCobrancaCronogramaCount(Filtro filtro) throws ControladorException { Integer totalRegistros = null; try { totalRegistros = repositorioCobranca.pesquisarCobrancaCronogramaCount(filtro); } catch (ErroRepositorioException ex) { ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } return totalRegistros; } /** * * Consultar Rela��o de Debitos do Imovel Consulta o Consumo Medio do Imovel * * [UC0227] - Gerar Rel��o de D�bitos * * @author Rafael Santos * @date 15/06/2006 * * @param imovelId * @return * @throws ErroRepositorioException */ public Integer pesquisarConsumoMedioConsumoHistoricoImovel(Integer imovelId) throws ControladorException { Integer consumoMedio = null; try { consumoMedio = repositorioCobranca.pesquisarConsumoMedioConsumoHistoricoImovel(imovelId); } catch (ErroRepositorioException ex) { ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } return consumoMedio; } /** * Gerar Relat�rio de Crit�rio de Cobran�a * * Pesquisa as linhas de crit�rio de cobran�a atrav�s do id do crit�rio de * cobran�a * * @author Rafael Corr�a * @data 09/08/2006 * * @param CobrancaDocumento * @return Collection<CobrancaDocumentoItem> */ public Collection pesquisarCobrancaCriterioLinha(Integer idCriterioCobranca) throws ControladorException { Collection retorno = new ArrayList(); try { Collection colecaoCobrancaCriterioLinha = repositorioCobranca.pesquisarCobrancaCriterioLinha(idCriterioCobranca); if (colecaoCobrancaCriterioLinha != null && !colecaoCobrancaCriterioLinha.isEmpty()) { Iterator colecaoCobrancaCriterioLinhaIterator = colecaoCobrancaCriterioLinha.iterator(); Object[] objetoCriterioCobrancaLinha = null; while (colecaoCobrancaCriterioLinhaIterator.hasNext()) { objetoCriterioCobrancaLinha = (Object[]) colecaoCobrancaCriterioLinhaIterator.next(); CobrancaCriterioLinha cobrancaCriterioLinha = new CobrancaCriterioLinha(); // Im�vel Perfil if (objetoCriterioCobrancaLinha[0] != null) { ImovelPerfil imovelPerfil = new ImovelPerfil(); imovelPerfil.setDescricao((String) objetoCriterioCobrancaLinha[0]); cobrancaCriterioLinha.setImovelPerfil(imovelPerfil); } // Categoria if (objetoCriterioCobrancaLinha[1] != null) { Categoria categoria = new Categoria(); categoria.setDescricao((String) objetoCriterioCobrancaLinha[1]); cobrancaCriterioLinha.setCategoria(categoria); } // Valor M�nimo D�bito if (objetoCriterioCobrancaLinha[2] != null) { cobrancaCriterioLinha.setValorMinimoDebito((BigDecimal) objetoCriterioCobrancaLinha[2]); } // Valor M�ximo D�bito if (objetoCriterioCobrancaLinha[3] != null) { cobrancaCriterioLinha.setValorMaximoDebito((BigDecimal) objetoCriterioCobrancaLinha[3]); } // Quantidade M�nima Contas if (objetoCriterioCobrancaLinha[4] != null) { cobrancaCriterioLinha.setQuantidadeMinimaContas((Short) objetoCriterioCobrancaLinha[4]); } // Quantidade M�xima Contas if (objetoCriterioCobrancaLinha[5] != null) { cobrancaCriterioLinha.setQuantidadeMaximaContas((Short) objetoCriterioCobrancaLinha[5]); } // Valor M�nimo da Conta do M�s if (objetoCriterioCobrancaLinha[6] != null) { cobrancaCriterioLinha.setValorMinimoContaMes((BigDecimal) objetoCriterioCobrancaLinha[6]); } // Valor M�nimo do D�bito para Cliente com D�bito Autom�tico if (objetoCriterioCobrancaLinha[7] != null) { cobrancaCriterioLinha.setValorMinimoDebitoDebitoAutomatico((BigDecimal) objetoCriterioCobrancaLinha[7]); } // Quantidade M�nima de Contas para Cliente com D�bito // Autom�tico if (objetoCriterioCobrancaLinha[8] != null) { cobrancaCriterioLinha.setQuantidadeMinimaContasDebitoAutomatico((Short) objetoCriterioCobrancaLinha[8]); } retorno.add(cobrancaCriterioLinha); } } } catch (ErroRepositorioException ex) { ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } return retorno; } /** * Gerar Relat�rio de Perfil de Parcelamento * * Pesquisa os Parcelamentos Desconto Antiguidade atrav�s do id de Perfil de * Parcelamento * * @author Rafael Corr�a * @data 22/08/2006 */ public Collection pesquisarParcelamentoDescontoAntiguidade(Integer idParcelamentoPerfil) throws ControladorException { Collection retorno = new ArrayList(); try { Collection colecaoParcelamentoDescontoAntiguidade = repositorioCobranca .pesquisarParcelamentoDescontoAntiguidade(idParcelamentoPerfil); if (colecaoParcelamentoDescontoAntiguidade != null && !colecaoParcelamentoDescontoAntiguidade.isEmpty()) { Iterator colecaoParcelamentoDescontoAntiguidadeIterator = colecaoParcelamentoDescontoAntiguidade.iterator(); Object[] objetoParcelamentoDescontoAntiguidade = null; while (colecaoParcelamentoDescontoAntiguidadeIterator.hasNext()) { objetoParcelamentoDescontoAntiguidade = (Object[]) colecaoParcelamentoDescontoAntiguidadeIterator.next(); ParcelamentoDescontoAntiguidade parcelamentoDescontoAntiguidade = new ParcelamentoDescontoAntiguidade(); // Id if (objetoParcelamentoDescontoAntiguidade[0] != null) { parcelamentoDescontoAntiguidade.setId((Integer) objetoParcelamentoDescontoAntiguidade[0]); } // Quantidade M�nima Meses D�bito if (objetoParcelamentoDescontoAntiguidade[1] != null) { parcelamentoDescontoAntiguidade.setQuantidadeMinimaMesesDebito((Integer) objetoParcelamentoDescontoAntiguidade[1]); } // Percentual de Desconto Sem Restabelecimento if (objetoParcelamentoDescontoAntiguidade[2] != null) { parcelamentoDescontoAntiguidade .setPercentualDescontoSemRestabelecimento((BigDecimal) objetoParcelamentoDescontoAntiguidade[2]); } // Percentual de Desconto Com Restabelecimento if (objetoParcelamentoDescontoAntiguidade[3] != null) { parcelamentoDescontoAntiguidade .setPercentualDescontoComRestabelecimento((BigDecimal) objetoParcelamentoDescontoAntiguidade[3]); } // Percentual de Desconto Ativo if (objetoParcelamentoDescontoAntiguidade[4] != null) { parcelamentoDescontoAntiguidade.setPercentualDescontoAtivo((BigDecimal) objetoParcelamentoDescontoAntiguidade[4]); } retorno.add(parcelamentoDescontoAntiguidade); } } } catch (ErroRepositorioException ex) { ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } return retorno; } /** * Gerar Relat�rio de Perfil de Parcelamento * * Pesquisa os Parcelamentos Desconto Inatividade atrav�s do id de Perfil de * Parcelamento * * @author Rafael Corr�a * @data 22/08/2006 */ public Collection pesquisarParcelamentoDescontoInatividade(Integer idParcelamentoPerfil) throws ControladorException { Collection retorno = new ArrayList(); try { Collection colecaoParcelamentoDescontoInatividade = repositorioCobranca .pesquisarParcelamentoDescontoInatividade(idParcelamentoPerfil); if (colecaoParcelamentoDescontoInatividade != null && !colecaoParcelamentoDescontoInatividade.isEmpty()) { Iterator colecaoParcelamentoDescontoInatividadeIterator = colecaoParcelamentoDescontoInatividade.iterator(); Object[] objetoParcelamentoDescontoInatividade = null; while (colecaoParcelamentoDescontoInatividadeIterator.hasNext()) { objetoParcelamentoDescontoInatividade = (Object[]) colecaoParcelamentoDescontoInatividadeIterator.next(); ParcelamentoDescontoInatividade parcelamentoDescontoInatividade = new ParcelamentoDescontoInatividade(); // Id if (objetoParcelamentoDescontoInatividade[0] != null) { parcelamentoDescontoInatividade.setId((Integer) objetoParcelamentoDescontoInatividade[0]); } // Quantidade M�xima Meses de Inatividade if (objetoParcelamentoDescontoInatividade[1] != null) { parcelamentoDescontoInatividade .setQuantidadeMaximaMesesInatividade((Integer) objetoParcelamentoDescontoInatividade[1]); } // Percentual de Desconto Sem Restabelecimento if (objetoParcelamentoDescontoInatividade[2] != null) { parcelamentoDescontoInatividade .setPercentualDescontoSemRestabelecimento((BigDecimal) objetoParcelamentoDescontoInatividade[2]); } // Valor M�ximo D�bito if (objetoParcelamentoDescontoInatividade[3] != null) { parcelamentoDescontoInatividade .setPercentualDescontoComRestabelecimento((BigDecimal) objetoParcelamentoDescontoInatividade[3]); } retorno.add(parcelamentoDescontoInatividade); } } } catch (ErroRepositorioException ex) { ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } return retorno; } /** * Gerar Relat�rio de Perfil de Parcelamento * * Pesquisa os Reparcelamentos Consecutivos atrav�s do id de Perfil de * Parcelamento * * @author Rafael Corr�a * @data 22/08/2006 */ public Collection pesquisarReparcelamentoConsecutivo(Integer idParcelamentoPerfil) throws ControladorException { Collection retorno = new ArrayList(); try { Collection colecaoReparcelamentoConsecutivo = repositorioCobranca.pesquisarReparcelamentoConsecutivo(idParcelamentoPerfil); if (colecaoReparcelamentoConsecutivo != null && !colecaoReparcelamentoConsecutivo.isEmpty()) { Iterator colecaoReparcelamentoConsecutivoIterator = colecaoReparcelamentoConsecutivo.iterator(); Object[] objetoReparcelamentoConsecutivo = null; while (colecaoReparcelamentoConsecutivoIterator.hasNext()) { objetoReparcelamentoConsecutivo = (Object[]) colecaoReparcelamentoConsecutivoIterator.next(); ParcelamentoQuantidadeReparcelamentoRelatorioHelper parcelamentoQuantidadeReparcelamentoRelatorioHelper = new ParcelamentoQuantidadeReparcelamentoRelatorioHelper(); // Id Reparcelamento if (objetoReparcelamentoConsecutivo[0] != null) { parcelamentoQuantidadeReparcelamentoRelatorioHelper .setIdReparcelamento((Integer) objetoReparcelamentoConsecutivo[0]); } // Quantidade M�xima de Reparcelamentos Consecutivos if (objetoReparcelamentoConsecutivo[1] != null) { parcelamentoQuantidadeReparcelamentoRelatorioHelper .setQuantidadeMaximaReparcelamento((Short) objetoReparcelamentoConsecutivo[1]); } // Id Presta��o if (objetoReparcelamentoConsecutivo[2] != null) { parcelamentoQuantidadeReparcelamentoRelatorioHelper.setIdPrestacao((Integer) objetoReparcelamentoConsecutivo[2]); } // Quantidade M�xima de Presta��es do Parcelamento if (objetoReparcelamentoConsecutivo[3] != null) { parcelamentoQuantidadeReparcelamentoRelatorioHelper .setQuantidadeMaximaPrestacoes((Short) objetoReparcelamentoConsecutivo[3]); } // Taxa de Juros if (objetoReparcelamentoConsecutivo[4] != null) { parcelamentoQuantidadeReparcelamentoRelatorioHelper.setTaxaJuros((BigDecimal) objetoReparcelamentoConsecutivo[4]); } // Percentual M�nimo de Entrada if (objetoReparcelamentoConsecutivo[5] != null) { parcelamentoQuantidadeReparcelamentoRelatorioHelper .setPercentualMinimoEntrada((BigDecimal) objetoReparcelamentoConsecutivo[5]); } retorno.add(parcelamentoQuantidadeReparcelamentoRelatorioHelper); } } } catch (ErroRepositorioException ex) { ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } return retorno; } /** * Permite efetuar o parcelamento dos d�bitos de um im�vel * * [UC0214] Efetuar Parcelamento de D�bitos * * Pesquisa os d�bitos do im�vel a partir das informa��es do formul�rio * * pesquisarDebitosImovel * * @author Roberta Costa * @date 23/08/2006 * * @param codigoImovel * @param codigoImovelAntes * @param dataParcelamento * @param resolucaoDiretoria * @param fimIntervaloParcelamento * @param inicioIntervaloParcelamento * @param indicadorContasRevisao * @param indicadorGuiasPagamento * @param indicadorAcrescimosImpotualidade * @param indicadorDebitosACobrar * @param indicadorCreditoARealizar * @return Object[] * @throws ControladorException */ public Object[] pesquisarDebitosImovel(String codigoImovel, String codigoImovelAntes, String dataParcelamento, String resolucaoDiretoria, String fimIntervaloParcelamento, String inicioIntervaloParcelamento, String indicadorContasRevisao, String indicadorGuiasPagamento, String indicadorAcrescimosImpotualidade, String indicadorDebitosACobrar, String indicadorCreditoARealizar, Boolean indicadorContas, String indicadorDividaAtiva) throws ControladorException { Object[] debitosImovel = new Object[25]; // Defini��o dos indices do array debitosImovel final Integer COLECAO_CONTAS = new Integer("0"); final Integer VALOR_TOTAL_CONTAS = new Integer("1"); final Integer COLECAO_GUIA_PAGAMENTO = new Integer("2"); final Integer VALOR_TOTAL_GUIA_PAGAMENTO = new Integer("3"); final Integer VALOR_ACRESCIMOS_IMPONTUALIDADE = new Integer("4"); final Integer COLECAO_DEBITO_A_COBRAR = new Integer("5"); final Integer VALOR_DEBITO_A_COBRAR_SERVICO = new Integer("6"); final Integer VALOR_DEBITO_A_COBRAR_SERVICO_LONGO_PRAZO = new Integer("7"); final Integer VALOR_DEBITO_A_COBRAR_SERVICO_CURTO_PRAZO = new Integer("8"); final Integer VALOR_DEBITO_A_COBRAR_PARCELAMENTO = new Integer("9"); final Integer VALOR_DEBITO_A_COBRAR_PARCELAMENTO_LONGO_PRAZO = new Integer("10"); final Integer VALOR_DEBITO_A_COBRAR_PARCELAMENTO_CURTO_PRAZO = new Integer("11"); final Integer COLECAO_CREDITO_A_REALIZAR = new Integer("12"); final Integer VALOR_CREDITO_A_REALIZAR = new Integer("13"); final Integer VALOR_DEBITO_TOTAL_ATUALIZADO_IMOVEL = new Integer("14"); // final Integer CODIGO_IMOVEL_ANTES = new Integer("15"); final Integer DATA_PARCELAMENTO = new Integer("16"); final Integer RESOLUCAO_DIRETORIA = new Integer("17"); final Integer INICIO_INTERVALO_PARCELAMENTO = new Integer("18"); final Integer FIM_INTERVALO_PARCELAMENTO = new Integer("19"); final Integer INDICADOR_CONTAS_REVISAO = new Integer("20"); final Integer INDICADOR_GUIAS_PAGAMENTO = new Integer("21"); final Integer INDICADOR_ACRESCIMOS_IMPONTUALIDADE = new Integer("22"); final Integer INDICADOR_DEBITO_A_COBRAR = new Integer("23"); final Integer INDICADOR_CREDITO_A_REALIZAR = new Integer("24"); // [FS0012] Verificar exist�ncia de parcelamento no m�s Collection<Parcelamento> colecaoParcelamento = this.verificarParcelamentoMesImovel(new Integer(codigoImovel)); if (colecaoParcelamento != null && !colecaoParcelamento.isEmpty()) { throw new ActionServletException("atencao.debito.ja.parcelado.mes.faturamento.corrente"); } // [UC0067] Obter D�bito do Im�vel ou Cliente ObterDebitoImovelOuClienteHelper colecaoDebitoImovel = this.obterDebitoImovelOuCliente(1, // Indicador // de // d�bito // do // im�vel codigoImovel, // Matr�cula do im�vel null, // C�digo do cliente null, // Tipo de rela��o cliente im�vel Util.formatarMesAnoParaAnoMesSemBarra(inicioIntervaloParcelamento), // Refer�ncia // inicial // do // d�bito Util.formatarMesAnoParaAnoMesSemBarra(fimIntervaloParcelamento), // Fim // do // d�bito Util.converteStringParaDate("01/01/0001"), // Inicio // vencimento Util.converteStringParaDate("31/12/9999"), // Fim // vencimento 1, // Indicador de pagamento new Integer(indicadorContasRevisao), // conta em // revis�o new Integer(indicadorDebitosACobrar), // D�bito a // cobrar new Integer(indicadorCreditoARealizar), // cr�dito a // realizar 1, // Indicador de notas promiss�rias new Integer(indicadorGuiasPagamento), // guias // pagamento new Integer(indicadorAcrescimosImpotualidade),// acr�scimos // impontualidade indicadorContas, new Integer(indicadorDividaAtiva) // divida // ativa ); // [FS0014] Verificar exist�ncia de d�bitos para o im�vel // Caso n�o exista d�bito if ((colecaoDebitoImovel.getColecaoContasValoresImovel() == null || colecaoDebitoImovel.getColecaoContasValoresImovel().size() == 0) && (colecaoDebitoImovel.getColecaoGuiasPagamentoValores() == null || colecaoDebitoImovel.getColecaoGuiasPagamentoValores() .size() == 0) && (colecaoDebitoImovel.getColecaoDebitoACobrar() == null || colecaoDebitoImovel.getColecaoDebitoACobrar().size() == 0)) { throw new ControladorException("atencao.imovel.sem.debitos", null, codigoImovel); } // Para o c�lculo do D�bito Total Atualizado BigDecimal valorTotalContas = new BigDecimal("0.00"); BigDecimal valorTotalAcrescimoImpontualidade = new BigDecimal("0.00"); BigDecimal valorTotalRestanteServicosACobrar = new BigDecimal("0.00"); BigDecimal valorTotalRestanteServicosACobrarCurtoPrazo = new BigDecimal("0.00"); BigDecimal valorTotalRestanteServicosACobrarLongoPrazo = new BigDecimal("0.00"); BigDecimal valorTotalRestanteParcelamentosACobrar = new BigDecimal("0.00"); BigDecimal valorTotalRestanteParcelamentosACobrarCurtoPrazo = new BigDecimal("0.00"); BigDecimal valorTotalRestanteParcelamentosACobrarLongoPrazo = new BigDecimal("0.00"); BigDecimal valorTotalGuiasPagamento = new BigDecimal("0.00"); BigDecimal valorTotalAcrescimoImpontualidadeContas = new BigDecimal("0.00"); BigDecimal valorTotalAcrescimoImpontualidadeGuias = new BigDecimal("0.00"); BigDecimal valorCreditoARealizar = new BigDecimal("0.00"); BigDecimal valorRestanteACobrar = new BigDecimal("0.00"); BigDecimal valorAtualizacaoMonetaria = new BigDecimal("0.00"); BigDecimal valorJurosMora = new BigDecimal("0.00"); BigDecimal valorMulta = new BigDecimal("0.00"); // Dados do D�bito do Im�vel - Contas Collection<ContaValoresHelper> colecaoContasImovel = colecaoDebitoImovel.getColecaoContasValoresImovel(); if (colecaoContasImovel != null && !colecaoContasImovel.isEmpty()) { Iterator contaValores = colecaoContasImovel.iterator(); while (contaValores.hasNext()) { ContaValoresHelper contaValoresHelper = (ContaValoresHelper) contaValores.next(); valorTotalContas.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); valorTotalContas = valorTotalContas.add(contaValoresHelper.getValorTotalConta()); if (contaValoresHelper.getValorAtualizacaoMonetaria() != null && !contaValoresHelper.getValorAtualizacaoMonetaria().equals("")) { valorAtualizacaoMonetaria = valorAtualizacaoMonetaria.add(contaValoresHelper.getValorAtualizacaoMonetaria()); valorAtualizacaoMonetaria.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); } if (contaValoresHelper.getValorJurosMora() != null && !contaValoresHelper.getValorJurosMora().equals("")) { valorJurosMora.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); valorJurosMora = valorJurosMora.add(contaValoresHelper.getValorJurosMora()); } if (contaValoresHelper.getValorMulta() != null && !contaValoresHelper.getValorMulta().equals("")) { valorMulta.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); valorMulta = valorMulta.add(contaValoresHelper.getValorMulta()); } // Para c�lculo do Acrescimo de Impontualidade valorTotalAcrescimoImpontualidadeContas.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); valorTotalAcrescimoImpontualidadeContas = valorTotalAcrescimoImpontualidadeContas.add(contaValoresHelper .getValorTotalContaValoresParcelamento()); } debitosImovel[COLECAO_CONTAS] = colecaoContasImovel; debitosImovel[VALOR_TOTAL_CONTAS] = valorTotalContas; } else { debitosImovel[VALOR_TOTAL_CONTAS] = new BigDecimal("0.00"); } // Guias de Pagamento Collection<GuiaPagamentoValoresHelper> colecaoGuiaPagamentoValoresImovel = colecaoDebitoImovel.getColecaoGuiasPagamentoValores(); if (colecaoGuiaPagamentoValoresImovel != null && !colecaoGuiaPagamentoValoresImovel.isEmpty()) { Iterator guiaPagamentoValores = colecaoGuiaPagamentoValoresImovel.iterator(); while (guiaPagamentoValores.hasNext()) { GuiaPagamentoValoresHelper guiaPagamentoValoresHelper = (GuiaPagamentoValoresHelper) guiaPagamentoValores.next(); if (guiaPagamentoValoresHelper.getGuiaPagamento() != null && !guiaPagamentoValoresHelper.getGuiaPagamento().equals("")) { valorTotalGuiasPagamento.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); valorTotalGuiasPagamento = valorTotalGuiasPagamento.add(guiaPagamentoValoresHelper.getGuiaPagamento().getValorDebito()); } if (guiaPagamentoValoresHelper.getValorAtualizacaoMonetaria() != null && !guiaPagamentoValoresHelper.getValorAtualizacaoMonetaria().equals("")) { valorAtualizacaoMonetaria.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); valorAtualizacaoMonetaria = valorAtualizacaoMonetaria.add(guiaPagamentoValoresHelper.getValorAtualizacaoMonetaria()); } if (guiaPagamentoValoresHelper.getValorJurosMora() != null && !guiaPagamentoValoresHelper.getValorJurosMora().equals("")) { valorJurosMora.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); valorJurosMora = valorJurosMora.add(guiaPagamentoValoresHelper.getValorJurosMora()); } if (guiaPagamentoValoresHelper.getValorMulta() != null && !guiaPagamentoValoresHelper.getValorMulta().equals("")) { valorMulta.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); valorMulta = valorMulta.add(guiaPagamentoValoresHelper.getValorMulta()); } // Para c�lculo do Acrescimo de Impontualidade if (guiaPagamentoValoresHelper.getValorAcrescimosImpontualidade() != null && !guiaPagamentoValoresHelper.getValorAcrescimosImpontualidade().equals("")) { valorTotalAcrescimoImpontualidadeGuias.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); valorTotalAcrescimoImpontualidadeGuias = valorTotalAcrescimoImpontualidadeGuias.add(guiaPagamentoValoresHelper .getValorAcrescimosImpontualidade()); } } debitosImovel[COLECAO_GUIA_PAGAMENTO] = colecaoGuiaPagamentoValoresImovel; debitosImovel[VALOR_TOTAL_GUIA_PAGAMENTO] = valorTotalGuiasPagamento; } else { debitosImovel[VALOR_TOTAL_GUIA_PAGAMENTO] = new BigDecimal("0.00"); } // Acrescimos por Impotualidade BigDecimal retornoSoma = new BigDecimal("0.00"); retornoSoma.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); retornoSoma = retornoSoma.add(valorTotalAcrescimoImpontualidadeContas); retornoSoma = retornoSoma.add(valorTotalAcrescimoImpontualidadeGuias); debitosImovel[VALOR_ACRESCIMOS_IMPONTUALIDADE] = retornoSoma; // Para o c�lculo do D�bito Total Atualizado valorTotalAcrescimoImpontualidade = retornoSoma; // Debitos A Cobrar Collection<DebitoACobrar> colecaoDebitoACobrar = colecaoDebitoImovel.getColecaoDebitoACobrar(); if (colecaoDebitoACobrar != null && !colecaoDebitoACobrar.isEmpty()) { Iterator debitoACobrarValores = colecaoDebitoACobrar.iterator(); final int indiceCurtoPrazo = 0; final int indiceLongoPrazo = 1; while (debitoACobrarValores.hasNext()) { DebitoACobrar debitoACobrar = (DebitoACobrar) debitoACobrarValores.next(); // Debitos A Cobrar - Servi�o if (debitoACobrar.getFinanciamentoTipo().getId().equals(FinanciamentoTipo.SERVICO_NORMAL)) { // [SB0001] Obter Valores de Curto e Longo Prazo valorRestanteACobrar = debitoACobrar.getValorTotalComBonus(); BigDecimal[] valoresDeCurtoELongoPrazo = getControladorFaturamento().obterValorCurtoELongoPrazo( debitoACobrar.getNumeroPrestacaoDebito(), debitoACobrar.getNumeroPrestacaoCobradasMaisBonus(), valorRestanteACobrar); valorTotalRestanteServicosACobrarCurtoPrazo = valorTotalRestanteServicosACobrarCurtoPrazo .add(valoresDeCurtoELongoPrazo[indiceCurtoPrazo]); valorTotalRestanteServicosACobrarLongoPrazo = valorTotalRestanteServicosACobrarLongoPrazo .add(valoresDeCurtoELongoPrazo[indiceLongoPrazo]); } // Debitos A Cobrar - Parcelamento if (debitoACobrar.getFinanciamentoTipo().getId().equals(FinanciamentoTipo.PARCELAMENTO_AGUA) || debitoACobrar.getFinanciamentoTipo().getId().equals(FinanciamentoTipo.PARCELAMENTO_ESGOTO) || debitoACobrar.getFinanciamentoTipo().getId().equals(FinanciamentoTipo.PARCELAMENTO_SERVICO)) { // [SB0001] Obter Valores de Curto e Longo Prazo valorRestanteACobrar = debitoACobrar.getValorTotalComBonus(); BigDecimal[] valoresDeCurtoELongoPrazo = getControladorFaturamento().obterValorCurtoELongoPrazo( debitoACobrar.getNumeroPrestacaoDebito(), debitoACobrar.getNumeroPrestacaoCobradasMaisBonus(), valorRestanteACobrar); valorTotalRestanteParcelamentosACobrarCurtoPrazo = valorTotalRestanteParcelamentosACobrarCurtoPrazo .add(valoresDeCurtoELongoPrazo[indiceCurtoPrazo]); valorTotalRestanteParcelamentosACobrarLongoPrazo = valorTotalRestanteParcelamentosACobrarLongoPrazo .add(valoresDeCurtoELongoPrazo[indiceLongoPrazo]); } } debitosImovel[COLECAO_DEBITO_A_COBRAR] = colecaoDebitoACobrar; // Servi�os valorTotalRestanteServicosACobrar = valorTotalRestanteServicosACobrarCurtoPrazo .add(valorTotalRestanteServicosACobrarLongoPrazo); debitosImovel[VALOR_DEBITO_A_COBRAR_SERVICO_LONGO_PRAZO] = valorTotalRestanteServicosACobrarLongoPrazo; debitosImovel[VALOR_DEBITO_A_COBRAR_SERVICO_CURTO_PRAZO] = valorTotalRestanteServicosACobrarCurtoPrazo; debitosImovel[VALOR_DEBITO_A_COBRAR_SERVICO] = valorTotalRestanteServicosACobrar; // Parcelamentos valorTotalRestanteParcelamentosACobrar = valorTotalRestanteParcelamentosACobrarCurtoPrazo .add(valorTotalRestanteParcelamentosACobrarLongoPrazo); debitosImovel[VALOR_DEBITO_A_COBRAR_PARCELAMENTO_LONGO_PRAZO] = valorTotalRestanteParcelamentosACobrarLongoPrazo; debitosImovel[VALOR_DEBITO_A_COBRAR_PARCELAMENTO_CURTO_PRAZO] = valorTotalRestanteParcelamentosACobrarCurtoPrazo; debitosImovel[VALOR_DEBITO_A_COBRAR_PARCELAMENTO] = valorTotalRestanteParcelamentosACobrar; } else { debitosImovel[VALOR_DEBITO_A_COBRAR_SERVICO] = new BigDecimal("0.00"); debitosImovel[VALOR_DEBITO_A_COBRAR_PARCELAMENTO] = new BigDecimal("0.00"); } // Caso n�o exista d�bito de servi�o nem contas if ((colecaoDebitoImovel.getColecaoContasValoresImovel() == null || colecaoDebitoImovel.getColecaoContasValoresImovel().isEmpty()) && (colecaoDebitoImovel.getColecaoGuiasPagamentoValores() == null || colecaoDebitoImovel.getColecaoGuiasPagamentoValores() .size() == 0) && (colecaoDebitoImovel.getColecaoDebitoACobrar() == null || colecaoDebitoImovel.getColecaoDebitoACobrar().size() == 0)) { throw new ControladorException("atencao.imovel.sem.debitos", null, codigoImovel); } // Cr�dito A Realizar Collection<CreditoARealizar> colecaoCreditoARealizar = colecaoDebitoImovel.getColecaoCreditoARealizar(); if (colecaoCreditoARealizar != null && !colecaoCreditoARealizar.isEmpty()) { Iterator creditoARealizarValores = colecaoCreditoARealizar.iterator(); while (creditoARealizarValores.hasNext()) { CreditoARealizar creditoARealizar = (CreditoARealizar) creditoARealizarValores.next(); valorCreditoARealizar = valorCreditoARealizar.add(creditoARealizar.getValorTotalComBonus()); } debitosImovel[COLECAO_CREDITO_A_REALIZAR] = colecaoCreditoARealizar; debitosImovel[VALOR_CREDITO_A_REALIZAR] = valorCreditoARealizar; } else { debitosImovel[VALOR_CREDITO_A_REALIZAR] = new BigDecimal("0.00"); } // D�bito Total Atualizado BigDecimal debitoTotalAtualizado = new BigDecimal("0.00"); debitoTotalAtualizado = debitoTotalAtualizado.add(valorTotalContas); debitoTotalAtualizado = debitoTotalAtualizado.add(valorTotalGuiasPagamento); debitoTotalAtualizado = debitoTotalAtualizado.add(valorTotalAcrescimoImpontualidade); debitoTotalAtualizado = debitoTotalAtualizado.add(valorTotalRestanteServicosACobrar); debitoTotalAtualizado = debitoTotalAtualizado.add(valorTotalRestanteParcelamentosACobrar); debitoTotalAtualizado = debitoTotalAtualizado.subtract(valorCreditoARealizar); debitosImovel[VALOR_DEBITO_TOTAL_ATUALIZADO_IMOVEL] = debitoTotalAtualizado; // Quando mudar de im�vel iniciar a data do parcelamento com a data // atual, limpar // a resolu��o de diretoria if (!codigoImovelAntes.equals(codigoImovel)) { // Reinicia a Data do Parcelamento SimpleDateFormat formatoData = new SimpleDateFormat("dd/MM/yyyy"); Calendar dataCorrente = new GregorianCalendar(); debitosImovel[DATA_PARCELAMENTO] = formatoData.format(dataCorrente.getTime()); // Limpa Resolu��o de Diretoria debitosImovel[RESOLUCAO_DIRETORIA] = ""; // Limpa fim do Intervalo do Parcelamento debitosImovel[FIM_INTERVALO_PARCELAMENTO] = ""; // Limpa as perguntas debitosImovel[INDICADOR_CONTAS_REVISAO] = ""; debitosImovel[INDICADOR_GUIAS_PAGAMENTO] = ""; debitosImovel[INDICADOR_ACRESCIMOS_IMPONTUALIDADE] = ""; debitosImovel[INDICADOR_DEBITO_A_COBRAR] = ""; debitosImovel[INDICADOR_CREDITO_A_REALIZAR] = ""; } // Intervalo do Parcelamento if (colecaoContasImovel != null) { Iterator contaValores = colecaoContasImovel.iterator(); int anoMesReferenciaColecao = 0; int menorAnoMesReferencia = 999999; int maiorAnoMesReferencia = 0; while (contaValores.hasNext()) { ContaValoresHelper contaValoresHelper = (ContaValoresHelper) contaValores.next(); anoMesReferenciaColecao = contaValoresHelper.getConta().getReferencia(); if (anoMesReferenciaColecao < menorAnoMesReferencia) { menorAnoMesReferencia = anoMesReferenciaColecao; } if (anoMesReferenciaColecao > maiorAnoMesReferencia) { maiorAnoMesReferencia = anoMesReferenciaColecao; } } // Quando n�o houver intervalo de parcelamento inicial e final debitosImovel[INICIO_INTERVALO_PARCELAMENTO] = Util.formatarAnoMesParaMesAno(menorAnoMesReferencia); if (maiorAnoMesReferencia != 0) { if ((fimIntervaloParcelamento == null || fimIntervaloParcelamento.equals(""))) { debitosImovel[FIM_INTERVALO_PARCELAMENTO] = Util.formatarAnoMesParaMesAno(maiorAnoMesReferencia); } } else { debitosImovel[FIM_INTERVALO_PARCELAMENTO] = "00/0000"; } } else { // [FS0015] Verificar exist�ncia de contas // Caso m�o existam contas para o im�vel deixar indispon�vel o campo // m�s/ano // de refer�ncia inicial e m�s/ano de refer�ncia final debitosImovel[INICIO_INTERVALO_PARCELAMENTO] = ""; debitosImovel[FIM_INTERVALO_PARCELAMENTO] = ""; } return debitosImovel; } /** * [UC0444] Gerar e Emitir Extrato de D�bitos * [UC0251] Gerar Atividade de A��o de Cobranca * * @param imovel * @param indicadorGeracaoTaxaCobranca * @param colecaoContas * @param colecaoGuiasPagamento * @param colecaoDebitosACobrar * @param valorAcrescimosImpontualidade * @param valorDesconto * @param anoMesReferenciaDebito * @param documentoEmissaoForma * @param documentoTipo * @param cobrancaAcaoAtividadeComando * @param cobrancaAcaoAtividadeCronograma * @param empresa * @param cobrancaCriterio * @param cobrancaAcao * @param valorDocumento * @throws ControladorException */ public ExtratoDebitoRelatorioHelper gerarDocumentoCobranca(Imovel imovel, Short indicadorGeracaoTaxaCobranca, Collection<ContaValoresHelper> colecaoContas, Collection<GuiaPagamentoValoresHelper> colecaoGuiasPagamento, Collection<DebitoACobrar> colecaoDebitosACobrar, BigDecimal valorAcrescimosImpontualidade, BigDecimal valorDesconto, Integer anoMesReferenciaDebito, DocumentoEmissaoForma documentoEmissaoForma, DocumentoTipo documentoTipo, CobrancaAcaoAtividadeComando cobrancaAcaoAtividadeComando, CobrancaAcaoAtividadeCronograma cobrancaAcaoAtividadeCronograma, Empresa empresa, CobrancaCriterio cobrancaCriterio, CobrancaAcao cobrancaAcao, BigDecimal valorDocumento, Date dataAtual, Collection<CreditoARealizar> colecaoCreditoARealizar, Cliente cliente, ResolucaoDiretoria resolucaoDiretoria, Date dataEmissaoPredecessor, Collection<DebitoCreditoParcelamentoHelper> colecaoAntecipacaoDebitosDeParcelamento, Collection<DebitoCreditoParcelamentoHelper> colecaoAntecipacaoCreditosDeParcelamento) throws ControladorException { ExtratoDebitoRelatorioHelper extratoDebitoRelatorioHelper = new ExtratoDebitoRelatorioHelper(new ArrayList(), new ArrayList(), new ArrayList(), new ArrayList()); SistemaParametro sistemaParametro = this.getControladorUtil().pesquisarParametrosDoSistema(); BigDecimal valorTaxa = new BigDecimal("0.00"); /* * Caso tenha sido passado o par�metro imovel, bem como esteja indicado que � para gerar a taxa de cobran�a (indicador de gera��o de taxa de * cobran�a = 1 ou 3), o sistema gera o debito a cobrar para o im�vel relativo a taxa de cobran�a */ if (indicadorGeracaoTaxaCobranca.intValue() != ConstantesSistema.NAO.intValue() && imovel != null) { valorTaxa = this.obterValorTaxaDocumentoCobranca(imovel, indicadorGeracaoTaxaCobranca); DebitoTipo debitoTipo = null; try { debitoTipo = repositorioCobranca.pesquisarDebitoTipo(DebitoTipo.TAXA_COBRANCA); } catch (ErroRepositorioException ex) { ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } DebitoCreditoSituacao debitoCreditoSituacaoAtual = new DebitoCreditoSituacao(DebitoCreditoSituacao.NORMAL); CobrancaForma cobrancaForma = new CobrancaForma(CobrancaForma.COBRANCA_EM_CONTA); DebitoACobrarGeral debitoACobrarGeral = new DebitoACobrarGeral(); debitoACobrarGeral.setIndicadorHistorico(new Short("2")); debitoACobrarGeral.setUltimaAlteracao(new Date()); Integer idDebitoACobrarGeral = (Integer) getControladorUtil().inserir(debitoACobrarGeral); DebitoACobrar debitoACobrar = new DebitoACobrar(); debitoACobrar.setImovel(imovel); debitoACobrar.setDebitoTipo(debitoTipo); debitoACobrar.setGeracaoDebito(new Date()); debitoACobrar.setAnoMesReferenciaDebito(anoMesReferenciaDebito); debitoACobrar.setAnoMesCobrancaDebito(sistemaParametro.getAnoMesArrecadacao()); int anoMesParametros = sistemaParametro.getAnoMesFaturamento(); int anoMesCorrente = Util.getAnoMesComoInt(new Date()); if (anoMesParametros > anoMesCorrente) { debitoACobrar.setAnoMesReferenciaContabil(anoMesParametros); } else { debitoACobrar.setAnoMesReferenciaContabil(anoMesCorrente); } debitoACobrar.setValorDebito(valorTaxa); debitoACobrar.setNumeroPrestacaoDebito((new Short("1")).shortValue()); debitoACobrar.setNumeroPrestacaoCobradas((new Short("0")).shortValue()); debitoACobrar.setLocalidade(imovel.getLocalidade()); debitoACobrar.setQuadra(imovel.getQuadra()); debitoACobrar.setCodigoSetorComercial(imovel.getSetorComercial().getCodigo()); debitoACobrar.setNumeroQuadra(imovel.getQuadra().getNumeroQuadra()); debitoACobrar.setNumeroLote(imovel.getLote()); debitoACobrar.setNumeroSubLote(imovel.getSubLote()); debitoACobrar.setPercentualTaxaJurosFinanciamento(new BigDecimal("0.00")); debitoACobrar.setRegistroAtendimento(null); debitoACobrar.setOrdemServico(null); debitoACobrar.setFinanciamentoTipo(debitoTipo.getFinanciamentoTipo()); debitoACobrar.setLancamentoItemContabil(debitoTipo.getLancamentoItemContabil()); debitoACobrar.setDebitoCreditoSituacaoAtual(debitoCreditoSituacaoAtual); debitoACobrar.setDebitoCreditoSituacaoAnterior(null); debitoACobrar.setParcelamentoGrupo(null); debitoACobrar.setCobrancaForma(cobrancaForma); debitoACobrar.setUltimaAlteracao(new Date()); debitoACobrar.setId(idDebitoACobrarGeral); debitoACobrar.setDebitoACobrarGeral(debitoACobrarGeral); getControladorUtil().inserir(debitoACobrar); Collection<Categoria> colecaoCategoriasImovel = getControladorImovel().obterQuantidadeEconomiasCategoria(imovel); Collection<BigDecimal> colecaoValorePorCategoria = getControladorImovel().obterValorPorCategoria(colecaoCategoriasImovel, valorTaxa); Iterator iteratorCategoria = colecaoCategoriasImovel.iterator(); Iterator iteratorValorPorCategoria = colecaoValorePorCategoria.iterator(); // Inclui na tabela DEBITO_A_COBRAR_CATEGORIA a(s) categoria(s) e sua(s) respectiva(s) quantidade(s) de // economia retornados pels [UC0108] e os valores retornados pelo [UC0185] para cada categoria while (iteratorCategoria.hasNext()) { Categoria categoria = (Categoria) iteratorCategoria.next(); BigDecimal valorPorCategoria = (BigDecimal) iteratorValorPorCategoria.next(); DebitoACobrarCategoria debitoACobrarCategoria = new DebitoACobrarCategoria(); DebitoACobrarCategoriaPK debitoACobrarCategoriaPK = new DebitoACobrarCategoriaPK(debitoACobrar, categoria); debitoACobrarCategoria.setComp_id(debitoACobrarCategoriaPK); debitoACobrarCategoria.setQuantidadeEconomia(categoria.getQuantidadeEconomiasCategoria()); debitoACobrarCategoria.setValorCategoria(valorPorCategoria); debitoACobrarCategoria.setUltimaAlteracao(new Date()); getControladorUtil().inserir(debitoACobrarCategoria); } } CobrancaDocumento documentoCobranca = new CobrancaDocumento(); documentoCobranca.setDocumentoTipo(documentoTipo); documentoCobranca.setNumeroSequenciaDocumento((new Integer(1)).intValue()); documentoCobranca.setCobrancaAcaoAtividadeComando(cobrancaAcaoAtividadeComando); documentoCobranca.setCobrancaAcaoAtividadeCronograma(cobrancaAcaoAtividadeCronograma); if (imovel != null) { documentoCobranca.setImovel(imovel); documentoCobranca.setLocalidade(imovel.getLocalidade()); documentoCobranca.setQuadra(imovel.getQuadra()); documentoCobranca.setCodigoSetorComercial(imovel.getSetorComercial().getCodigo()); documentoCobranca.setNumeroQuadra(imovel.getQuadra().getNumeroQuadra()); documentoCobranca.setImovelPerfil(imovel.getImovelPerfil()); documentoCobranca.setLigacaoAguaSituacao(imovel.getLigacaoAguaSituacao()); documentoCobranca.setLigacaoEsgotoSituacao(imovel.getLigacaoEsgotoSituacao()); // De acordo com o metodo ControladorImovel.obterPrincipalCategoriaImovel caso seja a empresa FEBRABAN, // a categoria principal sera a que tiver o maior codigo, caso contrario, a principal ser� a que tiver menor codigo boolean ehFEBRABAN = sistemaParametro.getCodigoEmpresaFebraban().equals(SistemaParametro.CODIGO_EMPRESA_FEBRABAN_CAERN); try { Integer idCategoria = repositorioImovel.obterIdCategoriaPrincipal(imovel.getId(), ehFEBRABAN); Categoria categoria = new Categoria(); categoria.setId(idCategoria); documentoCobranca.setCategoria(categoria); Integer idEsferaPoder = repositorioImovel.obterIdEsferaPoder(imovel.getId()); EsferaPoder esferaPoder = new EsferaPoder(idEsferaPoder); documentoCobranca.setEsferaPoder(esferaPoder); } catch (ErroRepositorioException e) { e.printStackTrace(); throw new ControladorException("erro.sistema", e); } } documentoCobranca.setEmissao(dataAtual); documentoCobranca.setValorTaxa(new BigDecimal("0.00")); documentoCobranca.setValorDocumento(valorDocumento); /* * Alterado por Raphael Rossiter em 18/09/2007 (Analistas: Aryed Lins e Rosana Carvalho) OBJ: Gravar o valor dos acr�scimos e o valor do * desconto para os documentos de cobranca que forem de EXTRATO DE D�BITO */ if (documentoTipo.getId() != null && (documentoTipo.getId().equals(DocumentoTipo.CARTA_COBRANCA_SUPRIMIDO) || documentoTipo.getId().equals(DocumentoTipo.CARTA_COBRANCA_CORTADO) || documentoTipo.getId().equals(DocumentoTipo.CARTA_COBRANCA_LIGADO) || documentoTipo.getId().equals(DocumentoTipo.EXTRATO_DE_DEBITO) || documentoTipo.getId().equals(DocumentoTipo.CARTA_SOLIDARIEDADE_DA_CRIANCA) || documentoTipo.getId().equals( DocumentoTipo.CARTA_DE_FINAL_DE_ANO_2009))) { documentoCobranca.setValorAcrescimos(valorAcrescimosImpontualidade); documentoCobranca.setValorDesconto(valorDesconto); } else { documentoCobranca.setValorAcrescimos(new BigDecimal("0.00")); } documentoCobranca.setDocumentoEmissaoForma(documentoEmissaoForma); documentoCobranca.setMotivoNaoEntregaDocumento(null); documentoCobranca.setEmpresa(empresa); documentoCobranca.setUltimaAlteracao(new Date()); documentoCobranca.setCobrancaCriterio(cobrancaCriterio); documentoCobranca.setCobrancaAcao(cobrancaAcao); CobrancaAcaoSituacao cas = new CobrancaAcaoSituacao(); if (cobrancaAcao != null && cobrancaAcao.getServicoTipo() != null) { cas.setId(CobrancaAcaoSituacao.PENDENTE); } else { cas.setId(CobrancaAcaoSituacao.ENVIADOS); documentoCobranca.setDataSituacaoAcao(dataAtual); } documentoCobranca.setCobrancaAcaoSituacao(cas); CobrancaDebitoSituacao cds = new CobrancaDebitoSituacao(); if ((colecaoContas != null && !colecaoContas.isEmpty()) || (colecaoDebitosACobrar != null && !colecaoDebitosACobrar.isEmpty()) || (colecaoGuiasPagamento != null && !colecaoGuiasPagamento.isEmpty()) || (colecaoCreditoARealizar != null && !colecaoCreditoARealizar.isEmpty())) { cds.setId(CobrancaDebitoSituacao.PENDENTE); } else { cds.setId(CobrancaDebitoSituacao.SEM_DEBITOS); } documentoCobranca.setCobrancaDebitoSituacao(cds); documentoCobranca.setCliente(cliente); documentoCobranca.setResolucaoDiretoria(resolucaoDiretoria); documentoCobranca.setDataEmissaoPredecessor(dataEmissaoPredecessor); Integer idDocumentoCobranca = (Integer) getControladorUtil().inserir(documentoCobranca); documentoCobranca.setId(idDocumentoCobranca); extratoDebitoRelatorioHelper.setDocumentoCobranca(documentoCobranca); CobrancaDocumentoItem cobrancaDocumentoItem = new CobrancaDocumentoItem(); // Contas DocumentoTipo documentoTipoConta = new DocumentoTipo(DocumentoTipo.CONTA); BigDecimal valorAcrescimos = null; BigDecimal valorImpostos = null; if (colecaoContas != null && !colecaoContas.isEmpty()) { valorImpostos = new BigDecimal("0.00"); for (ContaValoresHelper contaValorHelper : colecaoContas) { cobrancaDocumentoItem = new CobrancaDocumentoItem(); valorAcrescimos = new BigDecimal("0.00"); BigDecimal valorItemCobrado = new BigDecimal("0.00"); valorItemCobrado = valorItemCobrado.add(contaValorHelper.getConta().getValorAgua()); valorItemCobrado = valorItemCobrado.add(contaValorHelper.getConta().getValorEsgoto()); valorItemCobrado = valorItemCobrado.add(contaValorHelper.getConta().getDebitos()); valorItemCobrado = valorItemCobrado.subtract(contaValorHelper.getConta().getValorCreditos()); if (contaValorHelper.getConta().getValorImposto() != null) { valorItemCobrado = valorItemCobrado.subtract(contaValorHelper.getConta().getValorImposto()); valorImpostos = Util.somaBigDecimal(valorImpostos, contaValorHelper.getConta().getValorImposto()); } if (contaValorHelper.getValorMulta() != null) { valorAcrescimos = valorAcrescimos.add(contaValorHelper.getValorMulta()); } if (contaValorHelper.getValorJurosMora() != null) { valorAcrescimos = valorAcrescimos.add(contaValorHelper.getValorJurosMora()); } if (contaValorHelper.getValorAtualizacaoMonetaria() != null) { valorAcrescimos = valorAcrescimos.add(contaValorHelper.getValorAtualizacaoMonetaria()); } // Caso seja extrato de d�bito conta n�o deve-se gerar acr�scimos CDDO_VLACESCIMOS e CDIT_VLACRESCIMOS if (valorAcrescimosImpontualidade != null && valorAcrescimosImpontualidade.equals(new BigDecimal("0.00"))) { valorAcrescimos = new BigDecimal("0.00"); } cobrancaDocumentoItem.setValorAcrescimos(valorAcrescimos); cobrancaDocumentoItem.setCobrancaDocumento(documentoCobranca); cobrancaDocumentoItem.setDocumentoTipo(documentoTipoConta); ContaGeral contaGeral = new ContaGeral(); if (contaValorHelper.getConta() != null && !contaValorHelper.getConta().equals("")) { contaGeral.setId(contaValorHelper.getConta().getId()); contaGeral.setConta(contaValorHelper.getConta()); cobrancaDocumentoItem.setContaGeral(contaGeral); } cobrancaDocumentoItem.setDebitoACobrarGeral(null); cobrancaDocumentoItem.setGuiaPagamentoGeral(null); cobrancaDocumentoItem.setCreditoARealizarGeral(null); cobrancaDocumentoItem.setValorItemCobrado(valorItemCobrado); cobrancaDocumentoItem.setUltimaAlteracao(new Date()); // Documento item ja iniciado com situacao de debito PENDENTE - Alterado por Francisco, 27/06/08 CobrancaDebitoSituacao situacaoDebito = new CobrancaDebitoSituacao(CobrancaDebitoSituacao.PENDENTE); cobrancaDocumentoItem.setCobrancaDebitoSituacao(situacaoDebito); getControladorUtil().inserir(cobrancaDocumentoItem); extratoDebitoRelatorioHelper.getColecaoCobrancaDocumentoItemContas().add(cobrancaDocumentoItem); } } // Inseri valor total dos impostos, caso esfera de poder // do tipo do cliente seja igual a Federal, caso contrario // seta valor com null. if (documentoCobranca.getCliente() != null && documentoCobranca.getCliente().getClienteTipo() != null && documentoCobranca.getCliente().getClienteTipo().getEsferaPoder() != null && documentoCobranca.getCliente().getClienteTipo().getEsferaPoder().getId().compareTo(EsferaPoder.FEDERAL.intValue()) == 0) { documentoCobranca.setValorImpostos(valorImpostos); } else { documentoCobranca.setValorImpostos(null); } DocumentoTipo documentoTipoDebito = new DocumentoTipo(); documentoTipoDebito.setId(DocumentoTipo.DEBITO_A_COBRAR); if (colecaoDebitosACobrar != null && !colecaoDebitosACobrar.isEmpty()) { for (DebitoACobrar debitoACobrar : colecaoDebitosACobrar) { cobrancaDocumentoItem = new CobrancaDocumentoItem(); valorAcrescimos = new BigDecimal("0.00"); BigDecimal valorItemCobrado = new BigDecimal("0.00"); valorItemCobrado = debitoACobrar.getValorTotalComBonus(); cobrancaDocumentoItem.setCobrancaDocumento(documentoCobranca); cobrancaDocumentoItem.setDocumentoTipo(documentoTipoDebito); cobrancaDocumentoItem.setContaGeral(null); DebitoACobrarGeral debitoACobrarGeral = new DebitoACobrarGeral(); debitoACobrarGeral.setDebitoACobrar(debitoACobrar); debitoACobrarGeral.setId(debitoACobrar.getId()); cobrancaDocumentoItem.setDebitoACobrarGeral(debitoACobrarGeral); cobrancaDocumentoItem.setGuiaPagamentoGeral(null); cobrancaDocumentoItem.setCreditoARealizarGeral(null); cobrancaDocumentoItem.setValorItemCobrado(valorItemCobrado); cobrancaDocumentoItem.setUltimaAlteracao(new Date()); // Documento item ja iniciado com situacao de debito PENDENTE // Alterado por Francisco, 27/06/08 CobrancaDebitoSituacao situacaoDebito = new CobrancaDebitoSituacao(); situacaoDebito.setId(CobrancaDebitoSituacao.PENDENTE); cobrancaDocumentoItem.setCobrancaDebitoSituacao(situacaoDebito); cobrancaDocumentoItem.setValorAcrescimos(valorAcrescimos); // inseri o item de documento de cobran�a getControladorUtil().inserir(cobrancaDocumentoItem); extratoDebitoRelatorioHelper.getColecaoCobrancaDocumentoItemDebitosACobrar().add(cobrancaDocumentoItem); } } // Guias de Pagamento DocumentoTipo documentoTipoGuia = new DocumentoTipo(); documentoTipoGuia.setId(DocumentoTipo.GUIA_PAGAMENTO); if (colecaoGuiasPagamento != null && !colecaoGuiasPagamento.isEmpty()) { for (GuiaPagamentoValoresHelper guiaPagamentoValorHelper : colecaoGuiasPagamento) { cobrancaDocumentoItem = new CobrancaDocumentoItem(); valorAcrescimos = new BigDecimal("0.00"); // cria o item de documento de cobran�a cobrancaDocumentoItem.setCobrancaDocumento(documentoCobranca); cobrancaDocumentoItem.setDocumentoTipo(documentoTipoGuia); cobrancaDocumentoItem.setContaGeral(null); cobrancaDocumentoItem.setDebitoACobrarGeral(null); cobrancaDocumentoItem.setCreditoARealizarGeral(null); GuiaPagamentoGeral guiaPagamentoGeral = new GuiaPagamentoGeral(); guiaPagamentoGeral.setGuiaPagamento(guiaPagamentoValorHelper.getGuiaPagamento()); if (guiaPagamentoValorHelper.getGuiaPagamento() != null && !guiaPagamentoValorHelper.getGuiaPagamento().equals("")) { guiaPagamentoGeral.setId(guiaPagamentoValorHelper.getGuiaPagamento().getId()); } // alterado por S�vio Luiz data:03/04/2007 if (guiaPagamentoValorHelper.getValorMulta() != null) { valorAcrescimos = valorAcrescimos.add(guiaPagamentoValorHelper.getValorMulta()); } if (guiaPagamentoValorHelper.getValorJurosMora() != null) { valorAcrescimos = valorAcrescimos.add(guiaPagamentoValorHelper.getValorJurosMora()); } if (guiaPagamentoValorHelper.getValorAtualizacaoMonetaria() != null) { valorAcrescimos = valorAcrescimos.add(guiaPagamentoValorHelper.getValorAtualizacaoMonetaria()); } cobrancaDocumentoItem.setValorAcrescimos(valorAcrescimos); // valoresTotalAcrescimos = valoresTotalAcrescimos // .add(valorAcrescimos); cobrancaDocumentoItem.setGuiaPagamentoGeral(guiaPagamentoGeral); cobrancaDocumentoItem.setValorItemCobrado(guiaPagamentoValorHelper.getGuiaPagamento().getValorDebito()); cobrancaDocumentoItem.setUltimaAlteracao(new Date()); // Documento item ja iniciado com situacao de debito PENDENTE // Alterado por Francisco, 27/06/08 CobrancaDebitoSituacao situacaoDebito = new CobrancaDebitoSituacao(); situacaoDebito.setId(CobrancaDebitoSituacao.PENDENTE); cobrancaDocumentoItem.setCobrancaDebitoSituacao(situacaoDebito); // inseri o item de documento de cobran�a getControladorUtil().inserir(cobrancaDocumentoItem); extratoDebitoRelatorioHelper.getColecaoCobrancaDocumentoItemGuiasPagamento().add(cobrancaDocumentoItem); } } // Cr�dito a Realizar DocumentoTipo documentoTipoCredito = new DocumentoTipo(); documentoTipoCredito.setId(DocumentoTipo.CREDITO_A_REALIZAR); if (colecaoCreditoARealizar != null && !colecaoCreditoARealizar.isEmpty()) { // Cria os itens de cobran�a de documento para os creditos a // realizar for (CreditoARealizar creditoARealizar : colecaoCreditoARealizar) { cobrancaDocumentoItem = new CobrancaDocumentoItem(); valorAcrescimos = new BigDecimal("0.00"); // cria o item de documento de cobran�a cobrancaDocumentoItem.setCobrancaDocumento(documentoCobranca); cobrancaDocumentoItem.setDocumentoTipo(documentoTipoCredito); cobrancaDocumentoItem.setContaGeral(null); CreditoARealizarGeral creditoARealizarGeral = new CreditoARealizarGeral(); creditoARealizarGeral.setCreditoARealizar(creditoARealizar); creditoARealizarGeral.setId(creditoARealizar.getId()); cobrancaDocumentoItem.setCreditoARealizarGeral(creditoARealizarGeral); cobrancaDocumentoItem.setGuiaPagamentoGeral(null); cobrancaDocumentoItem.setDebitoACobrarGeral(null); cobrancaDocumentoItem.setValorItemCobrado(creditoARealizar.getValorTotalComBonus()); cobrancaDocumentoItem.setUltimaAlteracao(new Date()); CobrancaDebitoSituacao situacaoDebito = new CobrancaDebitoSituacao(); situacaoDebito.setId(CobrancaDebitoSituacao.PENDENTE); cobrancaDocumentoItem.setCobrancaDebitoSituacao(situacaoDebito); cobrancaDocumentoItem.setValorAcrescimos(valorAcrescimos); getControladorUtil().inserir(cobrancaDocumentoItem); extratoDebitoRelatorioHelper.getColecaoCobrancaDocumentoItemCreditoARealizar().add(cobrancaDocumentoItem); } } /* * ANTECIPA��O DE PARCELAS DE PARCELAMENTO (D�BITOS) */ if (colecaoAntecipacaoDebitosDeParcelamento != null && !colecaoAntecipacaoDebitosDeParcelamento.isEmpty()) { // COLE��O POR PARCELAMENTO Iterator itAntecipacaoDebitoDeParcelamento = colecaoAntecipacaoDebitosDeParcelamento.iterator(); DebitoCreditoParcelamentoHelper antecipacaoDebitoDeParcelamento = null; while (itAntecipacaoDebitoDeParcelamento.hasNext()) { antecipacaoDebitoDeParcelamento = (DebitoCreditoParcelamentoHelper) itAntecipacaoDebitoDeParcelamento.next(); // COLE��O POR D�BITOS A COBRAR DO PARCELAMENTO Collection<DebitoACobrar> colecaoDebitosACobrarAntecipacaoDeParcelamento = antecipacaoDebitoDeParcelamento .getColecaoDebitoACobrarParcelamento(); for (DebitoACobrar debitoACobrar : colecaoDebitosACobrarAntecipacaoDeParcelamento) { cobrancaDocumentoItem = new CobrancaDocumentoItem(); BigDecimal valorItemCobrado = debitoACobrar.getValorAntecipacaoParcela(antecipacaoDebitoDeParcelamento .getQuantidadeAntecipacaoParcelas()); // cria o item de documento de cobran�a cobrancaDocumentoItem.setCobrancaDocumento(documentoCobranca); cobrancaDocumentoItem.setDocumentoTipo(documentoTipoDebito); cobrancaDocumentoItem.setContaGeral(null); DebitoACobrarGeral debitoACobrarGeral = new DebitoACobrarGeral(); debitoACobrarGeral.setDebitoACobrar(debitoACobrar); debitoACobrarGeral.setId(debitoACobrar.getId()); cobrancaDocumentoItem.setDebitoACobrarGeral(debitoACobrarGeral); cobrancaDocumentoItem.setGuiaPagamentoGeral(null); cobrancaDocumentoItem.setCreditoARealizarGeral(null); cobrancaDocumentoItem.setValorItemCobrado(valorItemCobrado); cobrancaDocumentoItem.setUltimaAlteracao(new Date()); CobrancaDebitoSituacao situacaoDebito = new CobrancaDebitoSituacao(); situacaoDebito.setId(CobrancaDebitoSituacao.PENDENTE); cobrancaDocumentoItem.setCobrancaDebitoSituacao(situacaoDebito); cobrancaDocumentoItem.setValorAcrescimos(new BigDecimal("0.00")); // QUANTIDADE DE PARCELAS ANTECIPADAS cobrancaDocumentoItem.setNumeroParcelasAntecipadas(antecipacaoDebitoDeParcelamento.getQuantidadeAntecipacaoParcelas()); // inseri o item de documento de cobran�a getControladorUtil().inserir(cobrancaDocumentoItem); extratoDebitoRelatorioHelper.getColecaoCobrancaDocumentoItemDebitosACobrar().add(cobrancaDocumentoItem); } } } /* * ANTECIPA��O DE PARCELAS DE PARCELAMENTO (CR�DITO) */ if (colecaoAntecipacaoCreditosDeParcelamento != null && !colecaoAntecipacaoCreditosDeParcelamento.isEmpty()) { // COLE��O POR PARCELAMENTO Iterator itAntecipacaoCreditosDeParcelamento = colecaoAntecipacaoCreditosDeParcelamento.iterator(); DebitoCreditoParcelamentoHelper antecipacaoCreditosDeParcelamento = null; while (itAntecipacaoCreditosDeParcelamento.hasNext()) { antecipacaoCreditosDeParcelamento = (DebitoCreditoParcelamentoHelper) itAntecipacaoCreditosDeParcelamento.next(); // COLE��O POR CR�DITOS A REALIZAR DO PARCELAMENTO Collection<CreditoARealizar> colecaoCreditosARealizarAntecipacaoDeParcelamento = antecipacaoCreditosDeParcelamento .getColecaoCreditoARealizarParcelamento(); for (CreditoARealizar creditoARealizar : colecaoCreditosARealizarAntecipacaoDeParcelamento) { cobrancaDocumentoItem = new CobrancaDocumentoItem(); cobrancaDocumentoItem.setCobrancaDocumento(documentoCobranca); cobrancaDocumentoItem.setDocumentoTipo(documentoTipoCredito); cobrancaDocumentoItem.setContaGeral(null); CreditoARealizarGeral creditoARealizarGeral = new CreditoARealizarGeral(); creditoARealizarGeral.setCreditoARealizar(creditoARealizar); creditoARealizarGeral.setId(creditoARealizar.getId()); cobrancaDocumentoItem.setCreditoARealizarGeral(creditoARealizarGeral); cobrancaDocumentoItem.setGuiaPagamentoGeral(null); cobrancaDocumentoItem.setDebitoACobrarGeral(null); cobrancaDocumentoItem.setValorItemCobrado(creditoARealizar.getValorAntecipacaoParcela(Integer .valueOf(antecipacaoCreditosDeParcelamento.getQuantidadeAntecipacaoParcelas()))); cobrancaDocumentoItem.setUltimaAlteracao(new Date()); CobrancaDebitoSituacao situacaoDebito = new CobrancaDebitoSituacao(); situacaoDebito.setId(CobrancaDebitoSituacao.PENDENTE); cobrancaDocumentoItem.setCobrancaDebitoSituacao(situacaoDebito); cobrancaDocumentoItem.setValorAcrescimos(new BigDecimal("0.00")); // QUANTIDADE DE PARCELAS ANTECIPADAS cobrancaDocumentoItem .setNumeroParcelasAntecipadas(antecipacaoCreditosDeParcelamento.getQuantidadeAntecipacaoParcelas()); // inseri o item de documento de cobran�a getControladorUtil().inserir(cobrancaDocumentoItem); extratoDebitoRelatorioHelper.getColecaoCobrancaDocumentoItemCreditoARealizar().add(cobrancaDocumentoItem); } } } // atualiza o valor dos acrescimos e do nuumero do sequencial do // documento de cobran�a // Atualiza o n�mero do sequencial do documento com o c�digo do // documento de cobran�a gerado documentoCobranca.setNumeroSequenciaDocumento(documentoCobranca.getId().intValue()); // Atualiza documento cobran�a na base de dados getControladorUtil().atualizar(documentoCobranca); // Item 4 // Caso o tipo de servi�o da a��o de cobran�a(SVTP_ID da tabela // COBRANCA_ACAO) // tenha um valor diferente de nulo, o sistema gera a ordem de servi�o // referente // ao documento de cobran�a if (cobrancaAcao != null) { if (cobrancaAcao.getServicoTipo() != null) { /* * RegistroAtendimento registroAtendimento = new * RegistroAtendimento(); registroAtendimento.setId(0); * OrdemServico ordemServico = new OrdemServico(new Date(), * registroAtendimento, cobrancaAcao.getServicoTipo(), * documentoCobranca); * getControladorUtil().inserir(ordemServico); */ OrdemServico ordemServico = new OrdemServico(); ordemServico.setCobrancaDocumento(documentoCobranca); ordemServico.setServicoTipo(cobrancaAcao.getServicoTipo()); ordemServico.setImovel(imovel); ordemServico.setDataEmissao(dataAtual); getControladorOrdemServico().gerarOrdemServicoSemValidacao(ordemServico, imovel.getLocalidade().getId(), Usuario.USUARIO_BATCH); } } // Fim item 4 return extratoDebitoRelatorioHelper; } /** * Este caso de uso permite iniciar processos batch de faturamento ou * cobran�a previdamento comandados e processos mensais ou eventuais * * [UC0001] - Iniciar Processo * * Este subfluxo inicia os processo batch de cobran�a do sistema * * [SB0002] - Iniciar Process de Cobran�a Comandado * * @author Rodrigo Silveira * @date 17/08/2006 * * @return * @throws ErroRepositorioException */ public Collection<CobrancaAcaoAtividadeCronograma> pesquisarCobrancaAcaoAtividadeCronogramaComandadosNaoRealizados() throws ControladorException { Collection<CobrancaAcaoAtividadeCronograma> retorno = null; try { retorno = repositorioCobranca.pesquisarCobrancaAcaoAtividadeCronogramaComandadosNaoRealizados(); } catch (ErroRepositorioException ex) { ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } return retorno; } /** * Este caso de uso permite iniciar processos batch de faturamento ou * cobran�a previdamento comandados e processos mensais ou eventuais * * [UC0001] - Iniciar Processo * * Este subfluxo inicia os processo batch de cobran�a do sistema * * [SB0002] - Iniciar Process de Cobran�a Comandado * * @author Rodrigo Silveira * @date 17/08/2006 * * @return * @throws ErroRepositorioException */ public Collection<CobrancaAcaoAtividadeComando> pesquisarCobrancaAcaoAtividadeCronogramaEventuaisComandadosNaoRealizados() throws ControladorException { Collection<CobrancaAcaoAtividadeComando> retorno = null; try { retorno = repositorioCobranca.pesquisarCobrancaAcaoAtividadeCronogramaEventuaisComandadosNaoRealizados(); } catch (ErroRepositorioException ex) { ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } return retorno; } /** * Este caso de uso permite gerar e emitir extrato dos d�bitos de um im�vel * * [UC0444] Gerar e Emitir Extrato de D�bito * * @author Roberta Costa, Vivianne Sousa * @date 06/09/2006, 11/09/2006 * * @param imovel * @param indicadorGeracaoTaxaCobranca * @param colecaoContas * @param colecaoGuiasPagamento * @param colecaoDebitosACobrar * @param valorAcrescimosImpontualidade * @param valorDesconto * @param valorDocumento * @param colecaoCreditoARealizar * @param cliente * @param resolucaoDiretoria * @param colecaoAntecipacaoDebitosDeParcelamento * @param colecaoAntecipacaoCreditosDeParcelamento * @return * @throws ControladorException */ // Quando implementar Notas Promiss�rias acrescentar nos par�metros public ExtratoDebitoRelatorioHelper gerarEmitirExtratoDebito(Imovel imovel, Short indicadorGeracaoTaxaCobranca, Collection colecaoContas, Collection colecaoGuiasPagamento, Collection colecaoDebitosACobrar, BigDecimal valorAcrescimosImpontualidade, BigDecimal valorDesconto, BigDecimal valorDocumento, Collection<CreditoARealizar> colecaoCreditoARealizar, Cliente cliente, ResolucaoDiretoria resolucaoDiretoria, Collection<DebitoCreditoParcelamentoHelper> colecaoAntecipacaoDebitosDeParcelamento, Collection<DebitoCreditoParcelamentoHelper> colecaoAntecipacaoCreditosDeParcelamento) throws ControladorException { // [SB0001] - Gerar Documento de Cobran�a DocumentoEmissaoForma documentoEmissaoForma = new DocumentoEmissaoForma(); documentoEmissaoForma.setId(DocumentoEmissaoForma.INDIVIDUAL); DocumentoTipo documentoTipo = new DocumentoTipo(); documentoTipo.setId(DocumentoTipo.EXTRATO_DE_DEBITO); if (imovel != null && imovel.getImovelContaEnvio() != null && imovel.getImovelContaEnvio().getId().equals(ImovelContaEnvio.ENVIAR_CLIENTE_RESPONSAVEL_FINAL_GRUPO)) { throw new ControladorException( "atencao.nao_permitido_emissao_de_extrato_de_debito_para_cliente_com_fatura_agrupada_utilizar_simulador_de_debitos"); } else { ExtratoDebitoRelatorioHelper extratoDebitoRelatorioHelper = this.gerarDocumentoCobranca(imovel, indicadorGeracaoTaxaCobranca, colecaoContas, colecaoGuiasPagamento, colecaoDebitosACobrar, valorAcrescimosImpontualidade, valorDesconto, null, // anoMesReferenciaDebito // � // nulo // para o parcelamento documentoEmissaoForma, documentoTipo, null, // cobrancaAcaoAtividadeComando // � nulo // para o // parcelamento null, // cobrancaAcaoAtividadeCronograma � nulo para o // parcelamento null, // Empresa � nulo para o parcelamento null, // CobrancaCriterio � nulo para o parcelamento null, // CobrancaAcao � nulo para o parcelamento valorDocumento, new Date(), colecaoCreditoARealizar, cliente, resolucaoDiretoria, null, colecaoAntecipacaoDebitosDeParcelamento, colecaoAntecipacaoCreditosDeParcelamento); return extratoDebitoRelatorioHelper; } } /** * * Este caso de uso permite a emiss�o de um ou mais documentos de cobran�a * * [UC0476] Emitir Documento de Cobran�a - Ordem de Corte * * @author Ana Maria * @data 07/09/2006 * * @param * @return void */ public void emitirDocumentoCobrancaOrdemCorte(CobrancaAcaoAtividadeCronograma cobrancaAcaoAtividadeCronograma, CobrancaAcaoAtividadeComando cobrancaAcaoAtividadeComando, Date dataAtualPesquisa, CobrancaAcao acaoCobranca, CobrancaGrupo grupoCobranca, CobrancaCriterio cobrancaCriterio) throws ControladorException { boolean flagFimPesquisa = false; final int quantidadeCobrancaDocumento = 1000; int quantidadeCobrancaDocumentoInicio = 0; StringBuilder cobrancaDocumentoTxt = new StringBuilder(); int sequencialImpressao = 0; System.out.println("***************************************"); System.out.println("ENTROU NO CORTE ADMINISTRATIVO OU FISICO OU ORDEM DE SUPRESS�O"); System.out.println("***************************************"); Collection colecaoEmitirDocumentoCobranca = null; Map<Integer, Integer> mapAtualizaSequencial = null; Integer idCronogramaAtividadeAcaoCobranca = null; Integer idComandoAtividadeAcaoCobranca = null; Integer idAcaoCobranca = null; if (cobrancaAcaoAtividadeCronograma != null && cobrancaAcaoAtividadeCronograma.getId() != null) { idCronogramaAtividadeAcaoCobranca = cobrancaAcaoAtividadeCronograma.getId(); } if (cobrancaAcaoAtividadeComando != null && cobrancaAcaoAtividadeComando.getId() != null) { idComandoAtividadeAcaoCobranca = cobrancaAcaoAtividadeComando.getId(); } if (acaoCobranca != null && acaoCobranca.getId() != null) { idAcaoCobranca = acaoCobranca.getId(); } Date dataAtual = new Date(); String nomeZip = ""; // caso seja cronograma if (idCronogramaAtividadeAcaoCobranca != null) { if (idAcaoCobranca.equals(CobrancaAcao.CORTE_ADMINISTRATIVO)) { nomeZip = "ORDEM_CORTE_ADMINISTRATIVO_GRUPO_" + grupoCobranca.getId() + "_" + Util.formatarData(dataAtual) + Util.formatarHoraSemDataSemDoisPontos(dataAtual); } else if (idAcaoCobranca.equals(CobrancaAcao.CORTE_FISICO)) { nomeZip = "ORDEM_CORTE_FISICO_GRUPO_" + grupoCobranca.getId() + "_" + Util.formatarData(dataAtual) + Util.formatarHoraSemDataSemDoisPontos(dataAtual); } else if (idAcaoCobranca.equals(CobrancaAcao.CORTE_FISICO_LIGADO_A_REVELIA)) { nomeZip = "ORDEM_CORTE_FISICO_LIGADO_A_REVELIA_GRUPO_" + grupoCobranca.getId() + "_" + Util.formatarData(dataAtual) + Util.formatarHoraSemDataSemDoisPontos(dataAtual); } else if (idAcaoCobranca.equals(CobrancaAcao.CORTE_ADMINISTRATIVO_LIGADO_A_REVELIA)) { nomeZip = "ORDEM_CORTE_ADMINISTRATIVO_LIGADO_A_REVELIA_GRUPO_" + grupoCobranca.getId() + "_" + Util.formatarData(dataAtual) + Util.formatarHoraSemDataSemDoisPontos(dataAtual); } else if (idAcaoCobranca.equals(CobrancaAcao.CORTE_FISICO_PUBLICO)) { nomeZip = "ORDEM_CORTE_FISICO_PUBLICO_GRUPO_" + grupoCobranca.getId() + "_" + Util.formatarData(dataAtual) + Util.formatarHoraSemDataSemDoisPontos(dataAtual); } else if (idAcaoCobranca.equals(CobrancaAcao.RECORTE)) { nomeZip = "ORDEM_RECORTE_GRUPO_" + grupoCobranca.getId() + "_" + Util.formatarData(dataAtual) + Util.formatarHoraSemDataSemDoisPontos(dataAtual); } else if (idAcaoCobranca.equals(CobrancaAcao.SUPRESSAO_PARCIAL)) { nomeZip = "ORDEM_SUPRESSAO_PARCIAL_GRUPO_" + grupoCobranca.getId() + "_" + Util.formatarData(dataAtual) + Util.formatarHoraSemDataSemDoisPontos(dataAtual); } else if (idAcaoCobranca.equals(CobrancaAcao.SUPRESSAO_TOTAL)) { nomeZip = "ORDEM_SUPRESSAO_TOTAL_GRUPO_" + grupoCobranca.getId() + "_" + Util.formatarData(dataAtual) + Util.formatarHoraSemDataSemDoisPontos(dataAtual); } else if (idAcaoCobranca.equals(CobrancaAcao.FISCALIZACAO_SITUACAO_ESGOTO)) { nomeZip = "ORDEM_FISCALIZACAO_SITUACAO_ESGOTO_" + grupoCobranca.getId() + "_" + Util.formatarData(dataAtual) + Util.formatarHoraSemDataSemDoisPontos(dataAtual); } // para o caso de eventual } else { String descricaoAbrevDocumentoTipo = ""; if (acaoCobranca != null && acaoCobranca.getDocumentoTipo() != null) { descricaoAbrevDocumentoTipo = acaoCobranca.getDocumentoTipo().getDescricaoAbreviado(); } String tituloComandoEventual = cobrancaAcaoAtividadeComando.getDescricaoTitulo(); nomeZip = descricaoAbrevDocumentoTipo + " " + tituloComandoEventual + " " + Util.formatarData(dataAtual) + Util.formatarHoraSemDataSemDoisPontos(dataAtual); } nomeZip = nomeZip.replace("/", "_"); nomeZip = nomeZip.replace(" ", "_"); BufferedWriter out = null; ZipOutputStream zos = null; File leitura = null; // pegar o arquivo, zipar pasta e arquivo e escrever no stream try { System.out.println("***************************************"); System.out.println("INICO DA CRIACAO DO ARQUIVO"); System.out.println("***************************************"); // criar o arquivo zip File compactado = new File(nomeZip + ".zip"); // nomeZip zos = new ZipOutputStream(new FileOutputStream(compactado)); leitura = new File(nomeZip + ".txt"); out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(leitura.getAbsolutePath()))); } catch (IOException e) { e.printStackTrace(); throw new ControladorException("erro.sistema", e); } catch (Exception e) { e.printStackTrace(); throw new ControladorException("erro.sistema", e); } while (!flagFimPesquisa) { // map que armazena o sequencial e o numero da // conta para no final atualizar todos os // sequencias mapAtualizaSequencial = new HashMap(); try { colecaoEmitirDocumentoCobranca = repositorioCobranca.pesquisarCobrancaDocumentoOrdemCorte( idCronogramaAtividadeAcaoCobranca, idComandoAtividadeAcaoCobranca, dataAtualPesquisa, idAcaoCobranca, quantidadeCobrancaDocumentoInicio); } catch (ErroRepositorioException ex) { ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } if (colecaoEmitirDocumentoCobranca != null && !colecaoEmitirDocumentoCobranca.isEmpty()) { System.out.println("***************************************"); System.out.println("QUANTIDADE DE COBRAN�A:" + colecaoEmitirDocumentoCobranca.size()); System.out.println("***************************************"); String nomeCliente = null; Collection colecaoCobrancaDocumentoItem = null; if (colecaoEmitirDocumentoCobranca.size() < quantidadeCobrancaDocumento) { flagFimPesquisa = true; } else { quantidadeCobrancaDocumentoInicio = quantidadeCobrancaDocumentoInicio + 1000; } int metadeColecao = 0; if (colecaoEmitirDocumentoCobranca.size() % 2 == 0) { metadeColecao = colecaoEmitirDocumentoCobranca.size() / 2; } else { metadeColecao = (colecaoEmitirDocumentoCobranca.size() / 2) + 1; } System.out.println("***************************************"); System.out.println("INICIO DIVIDE A COLECAO:"); System.out.println("***************************************"); Map<Integer, Map<Object, Object>> mapCobrancaDocumentoOrdenada = dividirColecao(colecaoEmitirDocumentoCobranca); System.out.println("***************************************"); System.out.println("FIM DIVIDE A COLECAO:"); System.out.println("***************************************"); EmitirDocumentoCobrancaHelper emitirDocumentoCobrancaHelper = null; if (mapCobrancaDocumentoOrdenada != null) { int countOrdem = 0; while (countOrdem < mapCobrancaDocumentoOrdenada.size()) { Map<Object, Object> mapCobrancaoDocumentoDivididas = mapCobrancaDocumentoOrdenada.get(countOrdem); Iterator iteratorColecaoCobrancaDocumento = mapCobrancaoDocumentoDivididas.keySet().iterator(); while (iteratorColecaoCobrancaDocumento.hasNext()) { emitirDocumentoCobrancaHelper = null; int situacao = 0; emitirDocumentoCobrancaHelper = (EmitirDocumentoCobrancaHelper) iteratorColecaoCobrancaDocumento.next(); /* * Estes objetos auxiliar�o na formata��o da * inscri��o que ser� composta por informa��es do * documento de cobran�a e do im�vel a ele associado */ Imovel inscricao = null; SetorComercial setorComercialInscricao = null; Quadra quadraInscricao = null; Localidade localidade = null; sequencialImpressao++; while (situacao < 2) { if (situacao == 0) { situacao = 1; sequencialImpressao = atualizaSequencial(sequencialImpressao, situacao, metadeColecao); } else { emitirDocumentoCobrancaHelper = (EmitirDocumentoCobrancaHelper) mapCobrancaoDocumentoDivididas .get(emitirDocumentoCobrancaHelper); situacao = 2; sequencialImpressao = atualizaSequencial(sequencialImpressao, situacao, metadeColecao); } if (emitirDocumentoCobrancaHelper != null) { /* * Objeto que ser� utilizado para armazenar * as informa��es do documento de cobran�a * de acordo com o layout definido no caso * de uso */ try { nomeCliente = this.repositorioClienteImovel .pesquisarNomeClientePorImovel(emitirDocumentoCobrancaHelper.getIdImovel()); CobrancaDocumento cobrancaDocumento = new CobrancaDocumento(); cobrancaDocumento.setId(emitirDocumentoCobrancaHelper.getIdDocumentoCobranca()); colecaoCobrancaDocumentoItem = this.repositorioCobranca .selecionarCobrancaDocumentoItemReferenteConta(cobrancaDocumento); } catch (ErroRepositorioException ex) { ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } if (colecaoCobrancaDocumentoItem != null && !colecaoCobrancaDocumentoItem.isEmpty()) { // In�cio do processo de gera��o do // arquivo txt // LINHA 01 // ================================== /* * Canal ("1") Fonte ("1") */ cobrancaDocumentoTxt.append("1"); cobrancaDocumentoTxt.append("1"); cobrancaDocumentoTxt.append(" "); // Nome da Localidade cobrancaDocumentoTxt.append(Util.completaString( emitirDocumentoCobrancaHelper.getDescricaoLocalidade(), 20)); if (cobrancaAcaoAtividadeCronograma != null) { String ciclo = " CICLO:" + Util.formatarAnoMesParaMesAno(cobrancaAcaoAtividadeCronograma .getCobrancaAcaoCronograma().getCobrancaGrupoCronogramaMes() .getAnoMesReferencia()); cobrancaDocumentoTxt.append(ciclo); cobrancaDocumentoTxt.append(Util.completaString("", 46)); } else { cobrancaDocumentoTxt.append(Util.completaString("", 62)); } cobrancaDocumentoTxt.append(System.getProperty("line.separator")); // LINHA 02 // ================================== /* * Canal ("-") Fonte ("1") */ cobrancaDocumentoTxt.append("-"); cobrancaDocumentoTxt.append("1"); cobrancaDocumentoTxt.append(" "); // Inscri��o quadraInscricao = new Quadra(); setorComercialInscricao = new SetorComercial(); localidade = new Localidade(); inscricao = new Imovel(); quadraInscricao.setNumeroQuadra(emitirDocumentoCobrancaHelper.getNumeroQuadra()); setorComercialInscricao.setCodigo(emitirDocumentoCobrancaHelper.getCodigoSetorComercial()); localidade.setId(emitirDocumentoCobrancaHelper.getIdLocalidade()); inscricao.setLocalidade(localidade); inscricao.setSetorComercial(setorComercialInscricao); inscricao.setQuadra(quadraInscricao); inscricao.setLote(emitirDocumentoCobrancaHelper.getLote()); inscricao.setSubLote(emitirDocumentoCobrancaHelper.getSubLote()); cobrancaDocumentoTxt.append(Util.completaString(inscricao.getInscricaoFormatada(), 20)); cobrancaDocumentoTxt.append(Util.completaString("", 14)); // Nome do Cliente cobrancaDocumentoTxt.append(Util.completaString(nomeCliente, 50)); cobrancaDocumentoTxt.append(Util.completaString("", 65)); cobrancaDocumentoTxt.append(System.getProperty("line.separator")); // LINHA 03 // ================================== /* * Canal ("+") Fonte ("2") */ cobrancaDocumentoTxt.append("+"); cobrancaDocumentoTxt.append("2"); cobrancaDocumentoTxt.append(Util.completaString("", 66)); // Matr�cula do im�vel String matriculaImovelFormatada = Util .retornaMatriculaImovelFormatada(emitirDocumentoCobrancaHelper.getIdImovel()); cobrancaDocumentoTxt.append(Util.completaString(matriculaImovelFormatada, 10)); cobrancaDocumentoTxt.append(Util.completaString("", 74)); cobrancaDocumentoTxt.append(System.getProperty("line.separator")); // LINHA 04 // ================================== String enderecoFormatado = getControladorEndereco().pesquisarEnderecoFormatado( emitirDocumentoCobrancaHelper.getIdImovel()); /* * Canal ("-") Fonte ("1") */ cobrancaDocumentoTxt.append("-"); cobrancaDocumentoTxt.append("1"); cobrancaDocumentoTxt.append(" "); // Endere�o Formatado cobrancaDocumentoTxt.append(Util.completaString(enderecoFormatado, 61)); cobrancaDocumentoTxt.append(" "); // Data de Validade if (emitirDocumentoCobrancaHelper.getEmissao() != null) { if (emitirDocumentoCobrancaHelper.getNumeroDiasValidade() != null) { cobrancaDocumentoTxt.append(Util.formatarData(Util.adicionarNumeroDiasDeUmaData( emitirDocumentoCobrancaHelper.getEmissao(), emitirDocumentoCobrancaHelper .getNumeroDiasValidade().intValue()))); } else { cobrancaDocumentoTxt.append(Util.formatarData(emitirDocumentoCobrancaHelper.getEmissao())); } } else { cobrancaDocumentoTxt.append(Util.completaString("", 10)); } cobrancaDocumentoTxt.append(Util.completaString("", 75)); cobrancaDocumentoTxt.append(System.getProperty("line.separator")); // LINHA 05 // ================================== /* * Canal ("+") Fonte ("2") */ cobrancaDocumentoTxt.append("+"); cobrancaDocumentoTxt.append("2"); cobrancaDocumentoTxt.append(Util.completaString("", 67)); // Sequencial de impress�o cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda("" + emitirDocumentoCobrancaHelper.getNumeroOS(), 9)); // CRC2574 alterado por Vivianne Sousa // 19/08/2009 - Francisco // "" + // emitirDocumentoCobrancaHelper.getNumeroSequenciaDocumento(),9)); cobrancaDocumentoTxt.append(Util.completaString("", 74)); cobrancaDocumentoTxt.append(System.getProperty("line.separator")); // LINHA 06 // ================================== /* * Canal ("-") Fonte ("1") */ cobrancaDocumentoTxt.append("-"); cobrancaDocumentoTxt.append("1"); cobrancaDocumentoTxt.append(" "); /* * Quantidades de economias por * categoria: 1� RESID�NCIAL 2� * COMERCIAL 3� INDUSTRIAL 4� P�BLICA */ Imovel imovel = new Imovel(); imovel.setId(emitirDocumentoCobrancaHelper.getIdImovel()); Collection colecaoCategorias = getControladorImovel().obterQuantidadeEconomiasCategoria(imovel); String qtdResidencial = ""; String qtdComercial = ""; String qtdIndustrial = ""; String qtdPublico = ""; if (colecaoCategorias != null && !colecaoCategorias.isEmpty()) { Iterator iteratorColecaoCategorias = colecaoCategorias.iterator(); Categoria categoria = null; while (iteratorColecaoCategorias.hasNext()) { categoria = (Categoria) iteratorColecaoCategorias.next(); if (categoria.getId().equals(Categoria.RESIDENCIAL)) { qtdResidencial = "" + categoria.getQuantidadeEconomiasCategoria(); } else if (categoria.getId().equals(Categoria.COMERCIAL)) { qtdComercial = "" + categoria.getQuantidadeEconomiasCategoria(); } else if (categoria.getId().equals(Categoria.INDUSTRIAL)) { qtdIndustrial = "" + categoria.getQuantidadeEconomiasCategoria(); } else if (categoria.getId().equals(Categoria.PUBLICO)) { qtdPublico = "" + categoria.getQuantidadeEconomiasCategoria(); } } } colecaoCategorias = null; // Resid�ncial if (!qtdResidencial.equals("")) { cobrancaDocumentoTxt.append(Util.adicionarZerosEsquedaNumero(3, qtdResidencial)); } else { cobrancaDocumentoTxt.append(Util.completaString("", 3)); } cobrancaDocumentoTxt.append(Util.completaString("", 3)); // Comercial if (!qtdComercial.equals("")) { cobrancaDocumentoTxt.append(Util.adicionarZerosEsquedaNumero(3, qtdComercial)); } else { cobrancaDocumentoTxt.append(Util.completaString("", 3)); } cobrancaDocumentoTxt.append(Util.completaString("", 3)); // Industrial if (!qtdIndustrial.equals("")) { cobrancaDocumentoTxt.append(Util.adicionarZerosEsquedaNumero(3, qtdIndustrial)); } else { cobrancaDocumentoTxt.append(Util.completaString("", 3)); } cobrancaDocumentoTxt.append(Util.completaString("", 6)); // P�blico if (!qtdPublico.equals("")) { cobrancaDocumentoTxt.append(Util.adicionarZerosEsquedaNumero(3, qtdPublico)); } else { cobrancaDocumentoTxt.append(Util.completaString("", 3)); } cobrancaDocumentoTxt.append(Util.completaString("", 4)); // Data de Emiss�o if (emitirDocumentoCobrancaHelper.getEmissao() != null) { cobrancaDocumentoTxt.append(Util.formatarData(emitirDocumentoCobrancaHelper.getEmissao())); } else { cobrancaDocumentoTxt.append(Util.completaString("", 10)); } cobrancaDocumentoTxt.append(Util.completaString("", 4)); // Perfil do Im�vel cobrancaDocumentoTxt.append(Util.completaString( emitirDocumentoCobrancaHelper.getDescricaoImovelPerfil(), 8)); cobrancaDocumentoTxt.append(Util.completaString("", 6)); String numeroHidrometro = getControladorAtendimentoPublico().pesquisarNumeroHidrometroLigacaoAgua( emitirDocumentoCobrancaHelper.getIdImovel()); // N�mero Hidr�metro if (numeroHidrometro != null) { cobrancaDocumentoTxt.append(Util.completaString(numeroHidrometro, 10)); } else { cobrancaDocumentoTxt.append(Util.completaString("", 10)); } cobrancaDocumentoTxt.append(Util.completaString("", 7)); // Grupo de Cobran�a cobrancaDocumentoTxt.append(Util.completaString( "" + emitirDocumentoCobrancaHelper.getIdCobrancaGrupo(), 6)); // Sequencial de impress�o cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda( Util.retornaSequencialFormatado(sequencialImpressao), 9)); cobrancaDocumentoTxt.append(Util.completaString("", 61)); cobrancaDocumentoTxt.append(System.getProperty("line.separator")); // LINHA 07 // ================================== /* * Canal ("1") Fonte ("1") */ cobrancaDocumentoTxt.append("1"); cobrancaDocumentoTxt.append("1"); /* * Selecionar os itens do documento de * cobran�a correspondentes a conta e * ordenar por ano/m�s de refer�ncia da * conta */ if (colecaoCobrancaDocumentoItem != null && !colecaoCobrancaDocumentoItem.isEmpty()) { Iterator iteratorColecaoCobrancaDocumentoItem = null; CobrancaDocumentoItem cobrancaDocumentoItem = null; int countImpressao = colecaoCobrancaDocumentoItem.size() - 13; cobrancaDocumentoTxt.append(Util.completaString("", 1)); /* * Caso a quantidade de itens * selecionados seja superior a 15 * [SB0001 - Calcular Valor e Data * de Vencimento Anterior] * * Caso contr�rio: Dados do primeiro * e segundo itens selecionados */ if (colecaoCobrancaDocumentoItem.size() > 15) { CalcularValorDataVencimentoAnteriorHelper calcularValorDataVencimentoAnteriorHelper = this .calcularValorDataVencimentoAnterior(colecaoCobrancaDocumentoItem, 15); // Constante "DEBTO.ATE" cobrancaDocumentoTxt.append("DEBTO.ATE"); cobrancaDocumentoTxt.append(Util.completaString("", 3)); // Data de Vencimento anterior // retornado // pelo // [SB0001] cobrancaDocumentoTxt.append(Util.formatarData(calcularValorDataVencimentoAnteriorHelper .getDataVencimentoAnterior())); cobrancaDocumentoTxt.append(Util.completaString("", 127)); } else { iteratorColecaoCobrancaDocumentoItem = colecaoCobrancaDocumentoItem.iterator(); cobrancaDocumentoItem = null; cobrancaDocumentoItem = (CobrancaDocumentoItem) iteratorColecaoCobrancaDocumentoItem.next(); // M�s/Ano de refer�ncia da // conta cobrancaDocumentoTxt.append(Util.completaString( Util.formatarAnoMesParaMesAno(cobrancaDocumentoItem.getContaGeral().getConta() .getReferencia()), 7)); cobrancaDocumentoTxt.append("."); // D�gito verificador da conta cobrancaDocumentoTxt.append(cobrancaDocumentoItem.getContaGeral().getConta() .getDigitoVerificadorConta()); cobrancaDocumentoTxt.append(Util.completaString("", 3)); // Data de vencimento da conta cobrancaDocumentoTxt.append(Util.formatarData(cobrancaDocumentoItem.getContaGeral() .getConta().getDataVencimentoConta())); cobrancaDocumentoTxt.append(Util.completaString("", 127)); } cobrancaDocumentoTxt.append(System.getProperty("line.separator")); // LINHA 08 // ================================== /* * Canal ("") Fonte ("1") */ if (countImpressao <= 0) { iteratorColecaoCobrancaDocumentoItem = colecaoCobrancaDocumentoItem.iterator(); cobrancaDocumentoItem = null; int countRegistros = 0; while (iteratorColecaoCobrancaDocumentoItem.hasNext()) { cobrancaDocumentoItem = (CobrancaDocumentoItem) iteratorColecaoCobrancaDocumentoItem .next(); if (countRegistros > 0) { cobrancaDocumentoTxt.append(" "); cobrancaDocumentoTxt.append("1"); cobrancaDocumentoTxt.append(" "); // M�s/Ano de refer�ncia // da // conta cobrancaDocumentoTxt.append(Util.completaString( Util.formatarAnoMesParaMesAno(cobrancaDocumentoItem.getContaGeral() .getConta().getReferencia()), 7)); cobrancaDocumentoTxt.append("."); // D�gito verificador da // conta cobrancaDocumentoTxt.append(cobrancaDocumentoItem.getContaGeral().getConta() .getDigitoVerificadorConta()); cobrancaDocumentoTxt.append(Util.completaString("", 3)); // Data de vencimento da // conta cobrancaDocumentoTxt.append(Util.formatarData(cobrancaDocumentoItem.getContaGeral() .getConta().getDataVencimentoConta())); cobrancaDocumentoTxt.append(Util.completaString("", 127)); cobrancaDocumentoTxt.append(System.getProperty("line.separator")); } countRegistros++; } } else { while (countImpressao < colecaoCobrancaDocumentoItem.size()) { cobrancaDocumentoItem = (CobrancaDocumentoItem) ((List) colecaoCobrancaDocumentoItem) .get(countImpressao); cobrancaDocumentoTxt.append(" "); cobrancaDocumentoTxt.append("1"); cobrancaDocumentoTxt.append(" "); // M�s/Ano de refer�ncia da // conta cobrancaDocumentoTxt.append(Util.completaString( Util.formatarAnoMesParaMesAno(cobrancaDocumentoItem.getContaGeral().getConta() .getReferencia()), 7)); cobrancaDocumentoTxt.append("."); // D�gito verificador da // conta cobrancaDocumentoTxt.append(cobrancaDocumentoItem.getContaGeral().getConta() .getDigitoVerificadorConta()); cobrancaDocumentoTxt.append(Util.completaString("", 3)); // Data de vencimento da // conta cobrancaDocumentoTxt.append(Util.formatarData(cobrancaDocumentoItem.getContaGeral() .getConta().getDataVencimentoConta())); cobrancaDocumentoTxt.append(Util.completaString("", 127)); cobrancaDocumentoTxt.append(System.getProperty("line.separator")); countImpressao++; } } } // LINHA 09 // ================================== /* * Canal ("1") Fonte ("2") */ cobrancaDocumentoTxt.append("1"); cobrancaDocumentoTxt.append("2"); cobrancaDocumentoTxt.append(Util.completaString("", 6)); // Valor total do documento de cobran�a cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda( Util.formatarMoedaReal(emitirDocumentoCobrancaHelper.getValorDocumento()), 16)); cobrancaDocumentoTxt.append(Util.completaString("", 128)); cobrancaDocumentoTxt.append(System.getProperty("line.separator")); // LINHA 10 // ================================== /* * Canal ("1") Fonte ("4") */ cobrancaDocumentoTxt.append("1"); cobrancaDocumentoTxt.append("4"); cobrancaDocumentoTxt.append(Util.completaString("", 1)); float valorDocumento = emitirDocumentoCobrancaHelper.getValorDocumento().floatValue(); if (valorDocumento > 500) { cobrancaDocumentoTxt.append("PRIORIDADE - D�BITO ACIMA DE R$ 500,00"); } else { cobrancaDocumentoTxt.append(Util.completaString("", 38)); } cobrancaDocumentoTxt.append(Util.completaString("", 111)); cobrancaDocumentoTxt.append(System.getProperty("line.separator")); // LINHA 11 // ================================== /* * Canal ("-") Fonte ("2") */ cobrancaDocumentoTxt.append("-"); cobrancaDocumentoTxt.append("2"); cobrancaDocumentoTxt.append(Util.completaString("", 150)); cobrancaDocumentoTxt.append(System.getProperty("line.separator")); // LINHA 12 // ================================== /* * Canal (" ") Fonte ("2") */ cobrancaDocumentoTxt.append(" "); cobrancaDocumentoTxt.append("2"); cobrancaDocumentoTxt.append(" "); // Grupo de Cobran�a cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(emitirDocumentoCobrancaHelper .getIdCobrancaGrupo().toString(), 2)); cobrancaDocumentoTxt.append("-"); // Sigla e descri�ao da ger�ncia // regional cobrancaDocumentoTxt.append(Util.completaString( emitirDocumentoCobrancaHelper.getNomeAbreviadoGerencia(), 3)); cobrancaDocumentoTxt.append("-"); cobrancaDocumentoTxt .append(Util.completaString(emitirDocumentoCobrancaHelper.getNomeGerencia(), 25)); cobrancaDocumentoTxt.append(Util.completaString("", 25)); // C�digo e descri��o da empresa if (emitirDocumentoCobrancaHelper.getIdEmpresa() != null) { cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(emitirDocumentoCobrancaHelper .getIdEmpresa().toString(), 4)); cobrancaDocumentoTxt.append("- "); cobrancaDocumentoTxt.append(Util.completaString( emitirDocumentoCobrancaHelper.getDescricaoEmpresa(), 10)); } else { cobrancaDocumentoTxt.append(Util.completaString("", 16)); } cobrancaDocumentoTxt.append(Util.completaString("", 76)); cobrancaDocumentoTxt.append(System.getProperty("line.separator")); // LINHA 13 // ================================== /* * Canal ("1") Fonte ("1") */ cobrancaDocumentoTxt.append("1"); cobrancaDocumentoTxt.append("1"); cobrancaDocumentoTxt.append(" "); cobrancaDocumentoTxt.append(Util.completaString(inscricao.getInscricaoFormatada(), 20)); cobrancaDocumentoTxt.append(Util.completaString("", 14)); // Nome do Cliente cobrancaDocumentoTxt.append(Util.completaString(nomeCliente, 50)); cobrancaDocumentoTxt.append(Util.completaString("", 65)); cobrancaDocumentoTxt.append(System.getProperty("line.separator")); // LINHA 14 // ================================== /* * Canal ("+") Fonte ("2") */ cobrancaDocumentoTxt.append("+"); cobrancaDocumentoTxt.append("2"); cobrancaDocumentoTxt.append(Util.completaString("", 66)); cobrancaDocumentoTxt.append(Util.completaString(matriculaImovelFormatada, 10)); cobrancaDocumentoTxt.append(Util.completaString("", 74)); cobrancaDocumentoTxt.append(System.getProperty("line.separator")); // LINHA 15 // ================================== /* * Canal ("-") Fonte ("1") */ cobrancaDocumentoTxt.append("-"); cobrancaDocumentoTxt.append("1"); cobrancaDocumentoTxt.append(" "); // Endere�o Formatado cobrancaDocumentoTxt.append(Util.completaString(enderecoFormatado, 62)); cobrancaDocumentoTxt.append(Util.completaString("", 87)); cobrancaDocumentoTxt.append(System.getProperty("line.separator")); // LINHA 16 // ================================== /* * Canal ("+") Fonte ("2") */ cobrancaDocumentoTxt.append("+"); cobrancaDocumentoTxt.append("2"); cobrancaDocumentoTxt.append(Util.completaString("", 67)); // CRC2574 alterado por Vivianne Sousa // 19/08/2009 - Francisco // Sequencial do Documento de Cobran�a cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda("" + emitirDocumentoCobrancaHelper.getNumeroOS(), 9)); // ""+ // emitirDocumentoCobrancaHelper.getNumeroSequenciaDocumento(),9)); cobrancaDocumentoTxt.append(Util.completaString("", 74)); cobrancaDocumentoTxt.append(System.getProperty("line.separator")); // LINHA 17 // ================================== /* * Canal ("-") Fonte ("1") */ cobrancaDocumentoTxt.append("-"); cobrancaDocumentoTxt.append("1"); cobrancaDocumentoTxt.append(" "); // Resid�ncial if (!qtdResidencial.equals("")) { cobrancaDocumentoTxt.append(Util.adicionarZerosEsquedaNumero(3, qtdResidencial)); } else { cobrancaDocumentoTxt.append(Util.completaString("", 3)); } cobrancaDocumentoTxt.append(Util.completaString("", 3)); // Comercial if (!qtdComercial.equals("")) { cobrancaDocumentoTxt.append(Util.adicionarZerosEsquedaNumero(3, qtdComercial)); } else { cobrancaDocumentoTxt.append(Util.completaString("", 3)); } cobrancaDocumentoTxt.append(Util.completaString("", 3)); // Industrial if (!qtdIndustrial.equals("")) { cobrancaDocumentoTxt.append(Util.adicionarZerosEsquedaNumero(3, qtdIndustrial)); } else { cobrancaDocumentoTxt.append(Util.completaString("", 3)); } cobrancaDocumentoTxt.append(Util.completaString("", 5)); // P�blico if (!qtdPublico.equals("")) { cobrancaDocumentoTxt.append(Util.adicionarZerosEsquedaNumero(3, qtdPublico)); } else { cobrancaDocumentoTxt.append(Util.completaString("", 3)); } cobrancaDocumentoTxt.append(Util.completaString("", 1)); // Data de Emiss�o if (emitirDocumentoCobrancaHelper.getEmissao() != null) { cobrancaDocumentoTxt.append(Util.formatarData(emitirDocumentoCobrancaHelper.getEmissao())); } else { cobrancaDocumentoTxt.append(Util.completaString("", 10)); } cobrancaDocumentoTxt.append(Util.completaString("", 4)); // Perfil do Im�vel cobrancaDocumentoTxt.append(Util.completaString( emitirDocumentoCobrancaHelper.getDescricaoImovelPerfil(), 8)); cobrancaDocumentoTxt.append(Util.completaString("", 10)); // C�digo da situa��o da liga��o de �gua cobrancaDocumentoTxt.append(Util.completaString( "" + emitirDocumentoCobrancaHelper.getIdLigacaoAguaSituacao(), 3)); // C�digo da situa��o da liga��o do // esgoto cobrancaDocumentoTxt.append(Util.completaString( "" + emitirDocumentoCobrancaHelper.getIdLigacaoEsgotoSituacao(), 3)); cobrancaDocumentoTxt.append(Util.completaString("", 3)); // Grupo de Cobran�a cobrancaDocumentoTxt.append(Util.completaString( "" + emitirDocumentoCobrancaHelper.getIdCobrancaGrupo(), 6)); cobrancaDocumentoTxt.append(Util.completaString("", 9)); // Sequencial de impress�o cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda( Util.retornaSequencialFormatado(sequencialImpressao), 7)); cobrancaDocumentoTxt.append(Util.completaString("", 62)); cobrancaDocumentoTxt.append(System.getProperty("line.separator")); try { out.write(cobrancaDocumentoTxt.toString()); out.flush(); } catch (IOException e) { e.printStackTrace(); throw new ControladorException("erro.sistema", e); } cobrancaDocumentoTxt = new StringBuilder(); } // adiciona o id da // conta e o sequencial // no para serem // atualizados mapAtualizaSequencial.put(emitirDocumentoCobrancaHelper.getIdDocumentoCobranca(), sequencialImpressao); colecaoCobrancaDocumentoItem = null; } } } mapCobrancaoDocumentoDivididas = null; countOrdem++; } mapCobrancaDocumentoOrdenada = null; } } else { flagFimPesquisa = true; } try { repositorioCobranca.atualizarSequencialCobrancaDocumentoImpressao(mapAtualizaSequencial); } catch (ErroRepositorioException e) { throw new ControladorException("erro.sistema", e); } mapAtualizaSequencial = null; colecaoEmitirDocumentoCobranca = null; } // fim de arquivo try { cobrancaDocumentoTxt = new StringBuilder(); cobrancaDocumentoTxt.append("\u0004"); out.write(cobrancaDocumentoTxt.toString()); out.flush(); ZipUtil.adicionarArquivo(zos, leitura); zos.close(); leitura.delete(); out.close(); } catch (IOException e) { e.printStackTrace(); throw new ControladorException("erro.sistema", e); } System.out.println("***************************************"); System.out.println("FIM DO CORTE ADMINISTRATIVO OU FISICO OU ORDEM DE SUPRESS�O"); System.out.println("***************************************"); } /** * Este caso de consulta os dados do imovel, esse metodo consulta os * documentos de cobran�a do imovel * * [UC0472] - Consultar Imovel * * @author Rafael Santos * @date 18/09/2006 * * @return * @throws ErroRepositorioException */ public Collection<CobrancaDocumento> consultarImovelDocumentosCobranca(Integer idImovel, Integer numeroPagina) throws ControladorException { Collection colecaoDocumentosCobranca = null; Collection<CobrancaDocumento> imoveisDocumentosCobranca = null; try { colecaoDocumentosCobranca = this.repositorioCobranca.consultarImovelDocumentosCobranca(idImovel, numeroPagina); } catch (ErroRepositorioException ex) { ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } if (colecaoDocumentosCobranca != null && !colecaoDocumentosCobranca.isEmpty()) { imoveisDocumentosCobranca = new ArrayList(); Iterator iteratorColecaoDocumentosCobranca = colecaoDocumentosCobranca.iterator(); while (iteratorColecaoDocumentosCobranca.hasNext()) { Object[] array = (Object[]) iteratorColecaoDocumentosCobranca.next(); CobrancaDocumento cobrancaDocumento = new CobrancaDocumento(); Imovel imovel = new Imovel(); imovel.setId(idImovel); // imovel do documento de cobranca cobrancaDocumento.setImovel(imovel); // 0 - descricao A��o de Cobranca CobrancaAcao cobrancaAcao = null; if (array[0] != null) { cobrancaAcao = new CobrancaAcao(); cobrancaAcao.setDescricaoCobrancaAcao((String) array[0]); cobrancaDocumento.setCobrancaAcao(cobrancaAcao); } // 1 - Data e Hora de Emiss�o if (array[1] != null) { cobrancaDocumento.setEmissao((Date) array[1]); } // 2 - descricao Forma de Emiss�o DocumentoEmissaoForma documentoEmissaoForma = null; if (array[2] != null) { documentoEmissaoForma = new DocumentoEmissaoForma(); documentoEmissaoForma.setDescricaoDocumentoEmissaoForma((String) array[2]); cobrancaDocumento.setDocumentoEmissaoForma(documentoEmissaoForma); } // 3 - descricao Tipo Documento DocumentoTipo documentoTipo = null; if (array[3] != null) { documentoTipo = new DocumentoTipo(); documentoTipo.setDescricaoDocumentoTipo((String) array[3]); cobrancaDocumento.setDocumentoTipo(documentoTipo); } // 4 - VAlor do Documento if (array[4] != null) { cobrancaDocumento.setValorDocumento((BigDecimal) array[4]); } // 5 - id Cobranca Documento if (array[5] != null) { cobrancaDocumento.setId((Integer) array[5]); } imoveisDocumentosCobranca.add(cobrancaDocumento); }// fim do while } return imoveisDocumentosCobranca; } /** * Este caso de consulta os dados do imovel, esse metodo consulta a * quantidade de documentos de cobran�a do imovel * * [UC0472] - Consultar Imovel * * @author Rafael Santos * @date 18/09/2006 * * @return * @throws ErroRepositorioException */ public Integer consultarQuantidadeImovelDocumentosCobranca(Integer idImovel) throws ControladorException { Integer quantidadeDocumentosCobranca = null; try { quantidadeDocumentosCobranca = this.repositorioCobranca.consultarQuantidadeImovelDocumentosCobranca(idImovel); } catch (ErroRepositorioException ex) { ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } return quantidadeDocumentosCobranca; } /** * Este caso de consulta os dados do imovel, esse metodo consulta a * quantidade de documentos de itens de cobran�a do imovel * * [UC0472] - Consultar Imovel * * @author Rafael Santos * @date 18/09/2006 * * @return * @throws ErroRepositorioException */ public Integer consultarQuantidadeImovelDocumentosItemCobranca(Integer idImovel) throws ControladorException { Integer quantidadeDocumentosCobrancaItem = null; try { quantidadeDocumentosCobrancaItem = this.repositorioCobranca.consultarQuantidadeImovelDocumentosItemCobranca(idImovel); } catch (ErroRepositorioException ex) { ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } return quantidadeDocumentosCobrancaItem; } /** * * Este caso de uso permite a emiss�o de um ou mais documentos de cobran�a * * [UC0477] Emitir Documento de Cobran�a - Ordem de Supress�o * * @author Ana Maria * @data 15/09/2006 * * @param * @return void */ public void emitirDocumentoCobrancaOrdemSupressao(CobrancaAcaoAtividadeCronograma cobrancaAcaoAtividadeCronograma, CobrancaAcaoAtividadeComando cobrancaAcaoAtividadeComando, Date dataAtualPesquisa, CobrancaAcao acaoCobranca, CobrancaGrupo cobrancaGrupo, CobrancaCriterio cobrancaCriterio) throws ControladorException { System.out.println("********************"); System.out.println("INICIO SUPRESS�O"); System.out.println("********************"); boolean flagFimPesquisa = false; final int quantidadeCobrancaDocumento = 1000; int quantidadeCobrancaDocumentoInicio = 0; StringBuilder cobrancaDocumentoTxt = new StringBuilder(); int sequencialImpressao = 0; Collection colecaoEmitirDocumentoCobranca = null; Map<Integer, Integer> mapAtualizaSequencial = null; Integer idCronogramaAtividadeAcaoCobranca = null; Integer idComandoAtividadeAcaoCobranca = null; Integer idAcaoCobranca = null; if (cobrancaAcaoAtividadeCronograma != null && cobrancaAcaoAtividadeCronograma.getId() != null) { idCronogramaAtividadeAcaoCobranca = cobrancaAcaoAtividadeCronograma.getId(); } if (cobrancaAcaoAtividadeComando != null && cobrancaAcaoAtividadeComando.getId() != null) { idComandoAtividadeAcaoCobranca = cobrancaAcaoAtividadeComando.getId(); } if (acaoCobranca != null && acaoCobranca.getId() != null) { idAcaoCobranca = acaoCobranca.getId(); } while (!flagFimPesquisa) { // map que armazena o sequencial e o numero da // conta para no final atualizar todos os // sequencias mapAtualizaSequencial = new HashMap(); try { colecaoEmitirDocumentoCobranca = repositorioCobranca.pesquisarCobrancaDocumentoOrdemCorte( idCronogramaAtividadeAcaoCobranca, idComandoAtividadeAcaoCobranca, dataAtualPesquisa, idAcaoCobranca, quantidadeCobrancaDocumentoInicio); } catch (ErroRepositorioException ex) { ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } if (colecaoEmitirDocumentoCobranca != null && !colecaoEmitirDocumentoCobranca.equals("")) { System.out.println("********************"); System.out.println("QUANTIDADE COBRAN�A:" + colecaoEmitirDocumentoCobranca.size()); System.out.println("********************"); if (colecaoEmitirDocumentoCobranca.size() < quantidadeCobrancaDocumento) { flagFimPesquisa = true; } else { quantidadeCobrancaDocumentoInicio = quantidadeCobrancaDocumentoInicio + 1000; } int metadeColecao = 0; if (colecaoEmitirDocumentoCobranca.size() % 2 == 0) { metadeColecao = colecaoEmitirDocumentoCobranca.size() / 2; } else { metadeColecao = (colecaoEmitirDocumentoCobranca.size() / 2) + 1; } Map<Integer, Map<Object, Object>> mapCobrancaDocumentoOrdenada = dividirColecao(colecaoEmitirDocumentoCobranca); if (mapCobrancaDocumentoOrdenada != null) { int countOrdem = 0; EmitirDocumentoCobrancaHelper emitirDocumentoCobrancaHelper = null; while (countOrdem < mapCobrancaDocumentoOrdenada.size()) { Map<Object, Object> mapCobrancaoDocumentoDivididas = mapCobrancaDocumentoOrdenada.get(countOrdem); Iterator iteratorColecaoCobrancaDocumento = mapCobrancaoDocumentoDivididas.keySet().iterator(); while (iteratorColecaoCobrancaDocumento.hasNext()) { int situacao = 0; emitirDocumentoCobrancaHelper = null; emitirDocumentoCobrancaHelper = (EmitirDocumentoCobrancaHelper) iteratorColecaoCobrancaDocumento.next(); String nomeCliente = null; Collection colecaoCobrancaDocumentoItem = null; /* * Estes objetos auxiliar�o na formata��o da * inscri��o que ser� composta por informa��es do * documento de cobran�a e do im�vel a ele associado */ Imovel inscricao = null; SetorComercial setorComercialInscricao = null; Quadra quadraInscricao = null; Localidade localidade = null; sequencialImpressao++; while (situacao < 2) { if (situacao == 0) { situacao = 1; sequencialImpressao = atualizaSequencial(sequencialImpressao, situacao, metadeColecao); } else { emitirDocumentoCobrancaHelper = (EmitirDocumentoCobrancaHelper) mapCobrancaoDocumentoDivididas .get(emitirDocumentoCobrancaHelper); situacao = 2; sequencialImpressao = atualizaSequencial(sequencialImpressao, situacao, metadeColecao); } if (emitirDocumentoCobrancaHelper != null) { /* * Objeto que ser� utilizado para armazenar * as informa��es do documento de cobran�a * de acordo com o layout definido no caso * de uso */ try { nomeCliente = this.repositorioClienteImovel .pesquisarNomeClientePorImovel(emitirDocumentoCobrancaHelper.getIdImovel()); CobrancaDocumento cobrancaDocumento = new CobrancaDocumento(); cobrancaDocumento.setId(emitirDocumentoCobrancaHelper.getIdDocumentoCobranca()); colecaoCobrancaDocumentoItem = this.repositorioCobranca .selecionarCobrancaDocumentoItemReferenteConta(cobrancaDocumento); cobrancaDocumento = null; } catch (ErroRepositorioException ex) { ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } if (colecaoCobrancaDocumentoItem != null && !colecaoCobrancaDocumentoItem.isEmpty()) { // In�cio do processo de gera��o do // arquivo txt // LINHA 01 // ================================== /* * Canal ("1") Fonte ("3") */ cobrancaDocumentoTxt.append("1"); cobrancaDocumentoTxt.append("3"); cobrancaDocumentoTxt.append(Util.completaString("", 140)); cobrancaDocumentoTxt.append(System.getProperty("line.separator")); // LINHA 02 // ================================== /* * Canal (" ") Fonte ("4") */ cobrancaDocumentoTxt.append(" "); cobrancaDocumentoTxt.append("4"); cobrancaDocumentoTxt.append(Util.completaString("", 140)); cobrancaDocumentoTxt.append(System.getProperty("line.separator")); // LINHA 03 // ================================== /* * Canal (" ") Fonte (" ") */ cobrancaDocumentoTxt.append(" "); cobrancaDocumentoTxt.append(" "); cobrancaDocumentoTxt.append(Util.completaString("", 140)); cobrancaDocumentoTxt.append(System.getProperty("line.separator")); // LINHA 03 // ================================== /* * Canal ("-") Fonte ("1") */ cobrancaDocumentoTxt.append("-"); cobrancaDocumentoTxt.append("1"); cobrancaDocumentoTxt.append(Util.completaString("", 34)); // Data de Validade if (emitirDocumentoCobrancaHelper.getEmissao() != null) { if (emitirDocumentoCobrancaHelper.getNumeroDiasValidade() != null) { cobrancaDocumentoTxt.append(Util.formatarData(Util.adicionarNumeroDiasDeUmaData( emitirDocumentoCobrancaHelper.getEmissao(), emitirDocumentoCobrancaHelper .getNumeroDiasValidade().intValue()))); } else { cobrancaDocumentoTxt.append(Util.formatarData(emitirDocumentoCobrancaHelper.getEmissao())); } } else { cobrancaDocumentoTxt.append(Util.completaString("", 10)); } // CRC2574 alterado por Vivianne Sousa // 19/08/2009 - Francisco // Sequencial do Documento de Cobran�a cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda("" + emitirDocumentoCobrancaHelper.getNumeroOS(), 13)); // ""+ // emitirDocumentoCobrancaHelper.getNumeroSequenciaDocumento(),13)); cobrancaDocumentoTxt.append(Util.completaString("", 43)); // Data de Validade if (emitirDocumentoCobrancaHelper.getEmissao() != null) { if (emitirDocumentoCobrancaHelper.getNumeroDiasValidade() != null) { cobrancaDocumentoTxt.append(Util.formatarData(Util.adicionarNumeroDiasDeUmaData( emitirDocumentoCobrancaHelper.getEmissao(), emitirDocumentoCobrancaHelper .getNumeroDiasValidade().intValue()))); } else { cobrancaDocumentoTxt.append(Util.formatarData(emitirDocumentoCobrancaHelper.getEmissao())); } } else { cobrancaDocumentoTxt.append(Util.completaString("", 10)); } // CRC2574 alterado por Vivianne Sousa // 19/08/2009 - Francisco // Sequencial do Documento de Cobran�a cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda("" + emitirDocumentoCobrancaHelper.getNumeroOS(), 13)); // ""+ // emitirDocumentoCobrancaHelper.getNumeroSequenciaDocumento(),13)); cobrancaDocumentoTxt.append(Util.completaString("", 17)); cobrancaDocumentoTxt.append(System.getProperty("line.separator")); // LINHA 04 // ================================== /* * Canal ("0") Fonte ("1") */ cobrancaDocumentoTxt.append("0"); cobrancaDocumentoTxt.append("1"); // Inscri��o quadraInscricao = new Quadra(); setorComercialInscricao = new SetorComercial(); localidade = new Localidade(); inscricao = new Imovel(); quadraInscricao.setNumeroQuadra(emitirDocumentoCobrancaHelper.getNumeroQuadra()); setorComercialInscricao.setCodigo(emitirDocumentoCobrancaHelper.getCodigoSetorComercial()); localidade.setId(emitirDocumentoCobrancaHelper.getIdLocalidade()); inscricao.setLocalidade(localidade); inscricao.setSetorComercial(setorComercialInscricao); inscricao.setQuadra(quadraInscricao); inscricao.setLote(emitirDocumentoCobrancaHelper.getLote()); inscricao.setSubLote(emitirDocumentoCobrancaHelper.getSubLote()); cobrancaDocumentoTxt.append(Util.completaString(inscricao.getInscricaoFormatada(), 20)); cobrancaDocumentoTxt.append(Util.completaString("", 5)); // Nome do Cliente cobrancaDocumentoTxt.append(Util.completaString(nomeCliente, 39)); // Inscri��o cobrancaDocumentoTxt.append(Util.completaString(inscricao.getInscricaoFormatada(), 20)); cobrancaDocumentoTxt.append(Util.completaString("", 5)); // Nome do Cliente cobrancaDocumentoTxt.append(Util.completaString(nomeCliente, 39)); cobrancaDocumentoTxt.append(Util.completaString("", 12)); cobrancaDocumentoTxt.append(System.getProperty("line.separator")); // LINHA 05 // ================================== /* * Canal ("0") Fonte ("1") */ cobrancaDocumentoTxt.append("0"); cobrancaDocumentoTxt.append("1"); String enderecoFormatado = getControladorEndereco().pesquisarEnderecoFormatado( emitirDocumentoCobrancaHelper.getIdImovel()); // Endere�o Formatado cobrancaDocumentoTxt.append(Util.completaString(enderecoFormatado, 62)); cobrancaDocumentoTxt.append(Util.completaString("", 2)); // Endere�o Formatado cobrancaDocumentoTxt.append(Util.completaString(enderecoFormatado, 62)); cobrancaDocumentoTxt.append(Util.completaString("", 14)); cobrancaDocumentoTxt.append(System.getProperty("line.separator")); // LINHA 06 // ================================== /* * Canal (" ") Fonte ("1") */ cobrancaDocumentoTxt.append(" "); cobrancaDocumentoTxt.append("1"); cobrancaDocumentoTxt.append(Util.completaString("", 11)); // Nome da Localidade cobrancaDocumentoTxt.append(Util.completaString( emitirDocumentoCobrancaHelper.getDescricaoLocalidade(), 62)); cobrancaDocumentoTxt.append(Util.completaString("", 2)); // Nome da Localidade cobrancaDocumentoTxt.append(Util.completaString( emitirDocumentoCobrancaHelper.getDescricaoLocalidade(), 62)); cobrancaDocumentoTxt.append(Util.completaString("", 3)); cobrancaDocumentoTxt.append(System.getProperty("line.separator")); // LINHA 07 // ================================== /* * Canal ("0") Fonte ("1") */ cobrancaDocumentoTxt.append("0"); cobrancaDocumentoTxt.append("1"); cobrancaDocumentoTxt.append(" "); cobrancaDocumentoTxt.append(" "); /* * Quantidades de economias por * categoria: 1� RESID�NCIAL 2� * COMERCIAL 3� INDUSTRIAL 4� P�BLICA */ Imovel imovel = new Imovel(); imovel.setId(emitirDocumentoCobrancaHelper.getIdImovel()); Collection colecaoCategorias = getControladorImovel().obterQuantidadeEconomiasCategoria(imovel); String qtdResidencial = ""; String qtdComercial = ""; String qtdIndustrial = ""; String qtdPublico = ""; if (colecaoCategorias != null && !colecaoCategorias.isEmpty()) { Iterator iteratorColecaoCategorias = colecaoCategorias.iterator(); Categoria categoria = null; while (iteratorColecaoCategorias.hasNext()) { categoria = (Categoria) iteratorColecaoCategorias.next(); if (categoria.getId().equals(Categoria.RESIDENCIAL)) { qtdResidencial = "" + categoria.getQuantidadeEconomiasCategoria(); } else if (categoria.getId().equals(Categoria.COMERCIAL)) { qtdComercial = "" + categoria.getQuantidadeEconomiasCategoria(); } else if (categoria.getId().equals(Categoria.INDUSTRIAL)) { qtdIndustrial = "" + categoria.getQuantidadeEconomiasCategoria(); } else if (categoria.getId().equals(Categoria.PUBLICO)) { qtdPublico = "" + categoria.getQuantidadeEconomiasCategoria(); } } } colecaoCategorias = null; // Resid�ncial if (!qtdResidencial.equals("")) { cobrancaDocumentoTxt.append(Util.adicionarZerosEsquedaNumero(3, qtdResidencial)); } else { cobrancaDocumentoTxt.append(Util.completaString("", 3)); } cobrancaDocumentoTxt.append(Util.completaString("", 5)); // Comercial if (!qtdComercial.equals("")) { cobrancaDocumentoTxt.append(Util.adicionarZerosEsquedaNumero(3, qtdComercial)); } else { cobrancaDocumentoTxt.append(Util.completaString("", 3)); } cobrancaDocumentoTxt.append(Util.completaString("", 5)); // Industrial if (!qtdIndustrial.equals("")) { cobrancaDocumentoTxt.append(Util.adicionarZerosEsquedaNumero(3, qtdIndustrial)); } else { cobrancaDocumentoTxt.append(Util.completaString("", 3)); } cobrancaDocumentoTxt.append(Util.completaString("", 5)); // P�blico if (!qtdPublico.equals("")) { cobrancaDocumentoTxt.append(Util.adicionarZerosEsquedaNumero(3, qtdPublico)); } else { cobrancaDocumentoTxt.append(Util.completaString("", 3)); } cobrancaDocumentoTxt.append(Util.completaString("", 6)); // Data de Emiss�o if (emitirDocumentoCobrancaHelper.getEmissao() != null) { cobrancaDocumentoTxt.append(Util.formatarData(emitirDocumentoCobrancaHelper.getEmissao())); } else { cobrancaDocumentoTxt.append(Util.completaString("", 10)); } // Grupo de Cobran�a cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda("" + emitirDocumentoCobrancaHelper.getIdCobrancaGrupo(), 11)); cobrancaDocumentoTxt.append(Util.completaString("", 11)); // Resid�ncial if (!qtdResidencial.equals("")) { cobrancaDocumentoTxt.append(Util.adicionarZerosEsquedaNumero(3, qtdResidencial)); } else { cobrancaDocumentoTxt.append(Util.completaString("", 3)); } cobrancaDocumentoTxt.append(Util.completaString("", 5)); // Comercial if (!qtdComercial.equals("")) { cobrancaDocumentoTxt.append(Util.adicionarZerosEsquedaNumero(3, qtdComercial)); } else { cobrancaDocumentoTxt.append(Util.completaString("", 3)); } cobrancaDocumentoTxt.append(Util.completaString("", 5)); // Industrial if (!qtdIndustrial.equals("")) { cobrancaDocumentoTxt.append(Util.adicionarZerosEsquedaNumero(3, qtdIndustrial)); } else { cobrancaDocumentoTxt.append(Util.completaString("", 3)); } cobrancaDocumentoTxt.append(Util.completaString("", 5)); // P�blico if (!qtdPublico.equals("")) { cobrancaDocumentoTxt.append(Util.adicionarZerosEsquedaNumero(3, qtdPublico)); } else { cobrancaDocumentoTxt.append(Util.completaString("", 3)); } cobrancaDocumentoTxt.append(Util.completaString("", 7)); // Data de Emiss�o if (emitirDocumentoCobrancaHelper.getEmissao() != null) { cobrancaDocumentoTxt.append(Util.formatarData(emitirDocumentoCobrancaHelper.getEmissao())); } else { cobrancaDocumentoTxt.append(Util.completaString("", 10)); } // Grupo de Cobran�a cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda("" + emitirDocumentoCobrancaHelper.getIdCobrancaGrupo(), 5)); cobrancaDocumentoTxt.append(Util.completaString("", 1)); // Sequencial de impress�o cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda( Util.retornaSequencialFormatado(sequencialImpressao), 7)); cobrancaDocumentoTxt.append(Util.completaString("", 16)); cobrancaDocumentoTxt.append(System.getProperty("line.separator")); // LINHA 08 // ================================== /* * Canal ("+") Fonte ("1") */ cobrancaDocumentoTxt.append("+"); cobrancaDocumentoTxt.append("1"); // Matr�cula do im�vel String matriculaImovelFormatada = Util .retornaMatriculaImovelFormatada(emitirDocumentoCobrancaHelper.getIdImovel()); cobrancaDocumentoTxt.append(Util.completaString(matriculaImovelFormatada, 10)); cobrancaDocumentoTxt.append(Util.completaString("", 66)); cobrancaDocumentoTxt.append(System.getProperty("line.separator")); // LINHA 09 // ================================== /* * Canal ("-") Fonte ("2") */ cobrancaDocumentoTxt.append("-"); cobrancaDocumentoTxt.append("2"); cobrancaDocumentoTxt.append(" "); /* * Selecionar os itens do documento de * cobran�a correspondentes a conta e * ordenar por ano/m�s de refer�ncia da * conta */ if (colecaoCobrancaDocumentoItem != null && !colecaoCobrancaDocumentoItem.isEmpty()) { Iterator iteratorColecaoCobrancaDocumentoItem = null; CobrancaDocumentoItem cobrancaDocumentoItem = null; int countImpressao1 = colecaoCobrancaDocumentoItem.size() - 6; cobrancaDocumentoTxt.append(Util.completaString("", 1)); /* * Caso a quantidade de itens * selecionados seja superior a 07 * [SB0001 - Calcular Valor e Data * de Vencimento Anterior] * * Caso contr�rio: Dados do primeiro * item selecionado */ if (colecaoCobrancaDocumentoItem.size() > 7) { CalcularValorDataVencimentoAnteriorHelper calcularValorDataVencimentoAnteriorHelper = this .calcularValorDataVencimentoAnterior(colecaoCobrancaDocumentoItem, 7); // Constante "DEBTO.ATE" cobrancaDocumentoTxt.append("DEB.ATE"); cobrancaDocumentoTxt.append(Util.completaString("", 7)); // Data de Vencimento anterior // retornado // pelo // [SB0001] cobrancaDocumentoTxt.append(Util.formatarData(calcularValorDataVencimentoAnteriorHelper .getDataVencimentoAnterior())); // Valor anterior retornado pelo // [SB0001] cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(Util .formatarMoedaReal(calcularValorDataVencimentoAnteriorHelper.getValorAnterior()), 16)); } else { iteratorColecaoCobrancaDocumentoItem = colecaoCobrancaDocumentoItem.iterator(); cobrancaDocumentoItem = null; cobrancaDocumentoItem = (CobrancaDocumentoItem) iteratorColecaoCobrancaDocumentoItem.next(); // M�s/Ano de refer�ncia da // conta cobrancaDocumentoTxt.append(Util.completaString( Util.formatarAnoMesParaMesAno(cobrancaDocumentoItem.getContaGeral().getConta() .getReferencia()), 7)); cobrancaDocumentoTxt.append("."); // D�gito verificador da conta cobrancaDocumentoTxt.append(cobrancaDocumentoItem.getContaGeral().getConta() .getDigitoVerificadorConta()); cobrancaDocumentoTxt.append(Util.completaString("", 5)); // Data de vencimento da conta cobrancaDocumentoTxt.append(Util.formatarData(cobrancaDocumentoItem.getContaGeral() .getConta().getDataVencimentoConta())); // Valor do item cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda( Util.formatarMoedaReal(cobrancaDocumentoItem.getValorItemCobrado()), 16)); } // C�digo da situa��o da liga��o de // �gua cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda("" + emitirDocumentoCobrancaHelper.getIdLigacaoAguaSituacao(), 9)); // C�digo da situa��o da liga��o do // esgoto cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda("" + emitirDocumentoCobrancaHelper.getIdLigacaoEsgotoSituacao(), 5)); cobrancaDocumentoTxt.append(Util.completaString("", 3)); // Sequencial de impress�o cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda( Util.retornaSequencialFormatado(sequencialImpressao), 11)); cobrancaDocumentoTxt.append(Util.completaString("", 11)); if (colecaoCobrancaDocumentoItem.size() > 7) { CalcularValorDataVencimentoAnteriorHelper calcularValorDataVencimentoAnteriorHelper = this .calcularValorDataVencimentoAnterior(colecaoCobrancaDocumentoItem, 7); // Constante "DEBTO.ATE" cobrancaDocumentoTxt.append("DEB.ATE"); cobrancaDocumentoTxt.append(Util.completaString("", 4)); // Data de Vencimento anterior // retornado // pelo // [SB0001] cobrancaDocumentoTxt.append(Util.formatarData(calcularValorDataVencimentoAnteriorHelper .getDataVencimentoAnterior())); cobrancaDocumentoTxt.append(Util.completaString("", 3)); } else { iteratorColecaoCobrancaDocumentoItem = colecaoCobrancaDocumentoItem.iterator(); cobrancaDocumentoItem = null; cobrancaDocumentoItem = (CobrancaDocumentoItem) iteratorColecaoCobrancaDocumentoItem.next(); // M�s/Ano de refer�ncia da // conta cobrancaDocumentoTxt.append(Util.completaString( Util.formatarAnoMesParaMesAno(cobrancaDocumentoItem.getContaGeral().getConta() .getReferencia()), 7)); cobrancaDocumentoTxt.append("."); // D�gito verificador da conta cobrancaDocumentoTxt.append(cobrancaDocumentoItem.getContaGeral().getConta() .getDigitoVerificadorConta()); cobrancaDocumentoTxt.append(Util.completaString("", 5)); // Data de vencimento da conta cobrancaDocumentoTxt.append(Util.formatarData(cobrancaDocumentoItem.getContaGeral() .getConta().getDataVencimentoConta())); } cobrancaDocumentoTxt.append(Util.completaString("", 35)); cobrancaDocumentoTxt.append(System.getProperty("line.separator")); // LINHA 10 // ================================== /* * Canal (" ") Fonte ("2") */ if (countImpressao1 <= 0) { iteratorColecaoCobrancaDocumentoItem = colecaoCobrancaDocumentoItem.iterator(); cobrancaDocumentoItem = null; int countRegistros = 0; while (iteratorColecaoCobrancaDocumentoItem.hasNext()) { cobrancaDocumentoItem = (CobrancaDocumentoItem) iteratorColecaoCobrancaDocumentoItem .next(); if (countRegistros > 0) { cobrancaDocumentoTxt.append(" "); cobrancaDocumentoTxt.append("2"); // M�s/Ano de refer�ncia // da // conta cobrancaDocumentoTxt.append(Util.completaString( Util.formatarAnoMesParaMesAno(cobrancaDocumentoItem.getContaGeral() .getConta().getReferencia()), 7)); cobrancaDocumentoTxt.append("."); // D�gito verificador da // conta cobrancaDocumentoTxt.append(cobrancaDocumentoItem.getContaGeral().getConta() .getDigitoVerificadorConta()); cobrancaDocumentoTxt.append(Util.completaString("", 7)); // Data de vencimento da // conta cobrancaDocumentoTxt.append(Util.formatarData(cobrancaDocumentoItem.getContaGeral() .getConta().getDataVencimentoConta())); cobrancaDocumentoTxt.append(Util.completaString("", 1)); // Valor do item cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda( Util.formatarMoedaReal(cobrancaDocumentoItem.getValorItemCobrado()), 13)); cobrancaDocumentoTxt.append(Util.completaString("", 38)); // M�s/Ano de refer�ncia // da // conta cobrancaDocumentoTxt.append(Util.completaString( Util.formatarAnoMesParaMesAno(cobrancaDocumentoItem.getContaGeral() .getConta().getReferencia()), 7)); cobrancaDocumentoTxt.append("."); // D�gito verificador da // conta cobrancaDocumentoTxt.append(cobrancaDocumentoItem.getContaGeral().getConta() .getDigitoVerificadorConta()); cobrancaDocumentoTxt.append(Util.completaString("", 4)); // Data de vencimento da // conta cobrancaDocumentoTxt.append(Util.formatarData(cobrancaDocumentoItem.getContaGeral() .getConta().getDataVencimentoConta())); cobrancaDocumentoTxt.append(Util.completaString("", 39)); cobrancaDocumentoTxt.append(System.getProperty("line.separator")); } countRegistros++; } } else { while (countImpressao1 < colecaoCobrancaDocumentoItem.size()) { cobrancaDocumentoItem = (CobrancaDocumentoItem) ((List) colecaoCobrancaDocumentoItem) .get(countImpressao1); cobrancaDocumentoTxt.append(" "); cobrancaDocumentoTxt.append("2"); // M�s/Ano de refer�ncia da // conta cobrancaDocumentoTxt.append(Util.completaString( Util.formatarAnoMesParaMesAno(cobrancaDocumentoItem.getContaGeral().getConta() .getReferencia()), 7)); cobrancaDocumentoTxt.append("."); // D�gito verificador da // conta cobrancaDocumentoTxt.append(cobrancaDocumentoItem.getContaGeral().getConta() .getDigitoVerificadorConta()); cobrancaDocumentoTxt.append(Util.completaString("", 7)); // Data de vencimento da // conta cobrancaDocumentoTxt.append(Util.formatarData(cobrancaDocumentoItem.getContaGeral() .getConta().getDataVencimentoConta())); cobrancaDocumentoTxt.append(Util.completaString("", 1)); // Valor do item cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda( Util.formatarMoedaReal(cobrancaDocumentoItem.getValorItemCobrado()), 13)); cobrancaDocumentoTxt.append(Util.completaString("", 38)); // M�s/Ano de refer�ncia da // conta cobrancaDocumentoTxt.append(Util.completaString( Util.formatarAnoMesParaMesAno(cobrancaDocumentoItem.getContaGeral().getConta() .getReferencia()), 7)); cobrancaDocumentoTxt.append("."); // D�gito verificador da // conta cobrancaDocumentoTxt.append(cobrancaDocumentoItem.getContaGeral().getConta() .getDigitoVerificadorConta()); cobrancaDocumentoTxt.append(Util.completaString("", 4)); // Data de vencimento da // conta cobrancaDocumentoTxt.append(Util.formatarData(cobrancaDocumentoItem.getContaGeral() .getConta().getDataVencimentoConta())); cobrancaDocumentoTxt.append(Util.completaString("", 39)); cobrancaDocumentoTxt.append(System.getProperty("line.separator")); countImpressao1++; } } } // LINHA 11 // ================================== /* * Canal ("-") Fonte ("2") */ cobrancaDocumentoTxt.append("-"); cobrancaDocumentoTxt.append("2"); cobrancaDocumentoTxt.append(Util.completaString("", 22)); // Valor total do documento de cobran�a cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda( Util.formatarMoedaReal(emitirDocumentoCobrancaHelper.getValorDocumento()), 18)); cobrancaDocumentoTxt.append(Util.completaString("", 100)); cobrancaDocumentoTxt.append(System.getProperty("line.separator")); // LINHA 12 // ================================== /* * Canal ("0") Fonte ("1") */ cobrancaDocumentoTxt.append("0"); cobrancaDocumentoTxt.append("1"); cobrancaDocumentoTxt.append(Util.completaString("", 64)); // Perfil do Im�vel cobrancaDocumentoTxt.append(Util.completaString( emitirDocumentoCobrancaHelper.getDescricaoImovelPerfil(), 20)); cobrancaDocumentoTxt.append(Util.completaString("", 56)); cobrancaDocumentoTxt.append(System.getProperty("line.separator")); // LINHA 13 // ================================== /* * Canal ("0") Fonte ("1") */ cobrancaDocumentoTxt.append("0"); cobrancaDocumentoTxt.append("1"); cobrancaDocumentoTxt.append(Util.completaString("", 140)); cobrancaDocumentoTxt.append(System.getProperty("line.separator")); // LINHA 14 // ================================== /* * Canal ("0") Fonte ("1") */ cobrancaDocumentoTxt.append("0"); cobrancaDocumentoTxt.append("1"); cobrancaDocumentoTxt.append(Util.completaString("", 89)); String numeroHidrometro = getControladorAtendimentoPublico().pesquisarNumeroHidrometroLigacaoAgua( emitirDocumentoCobrancaHelper.getIdImovel()); // N�mero Hidr�metro if (numeroHidrometro != null) { cobrancaDocumentoTxt.append(Util.completaString(numeroHidrometro, 10)); } else { cobrancaDocumentoTxt.append(Util.completaString("", 10)); } cobrancaDocumentoTxt.append(Util.completaString("", 7)); Object[] dadosLigacaoAgua = null; // Dados da Liga��o de �gua(a partir da // tabela // LIGACAO_AGUA // lagu_id=imov_id da tabela IMOVEL) dadosLigacaoAgua = getControladorAtendimentoPublico().pesquisarDadosLigacaoAgua( emitirDocumentoCobrancaHelper.getIdImovel()); if (dadosLigacaoAgua != null) { if (dadosLigacaoAgua[1] != null) { // Data do Corte(lagu_dtcorte) cobrancaDocumentoTxt.append(Util.completaString( (String) Util.formatarData((Date) dadosLigacaoAgua[1]), 10)); } else { cobrancaDocumentoTxt.append(Util.completaString("", 10)); } cobrancaDocumentoTxt.append(Util.completaString("", 2)); if (dadosLigacaoAgua[0] != null) { // Tipo da liga��o de // �gua(cotp_id) cobrancaDocumentoTxt.append(Util.completaString(("" + (Integer) dadosLigacaoAgua[0]), 8)); } else { cobrancaDocumentoTxt.append(Util.completaString("", 8)); } cobrancaDocumentoTxt.append(Util.completaString("", 14)); } else { cobrancaDocumentoTxt.append(Util.completaString("", 34)); } cobrancaDocumentoTxt.append(System.getProperty("line.separator")); // LINHA 15 // ================================== /* * Canal ("1") Fonte ("1") */ cobrancaDocumentoTxt.append("1"); cobrancaDocumentoTxt.append("1"); cobrancaDocumentoTxt.append(Util.completaString("", 5)); // C�digo, Sigla e Descri��o da Ger�ncia // Regional cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(emitirDocumentoCobrancaHelper .getIdGerencia().toString(), 4)); cobrancaDocumentoTxt.append("-"); cobrancaDocumentoTxt.append(Util.completaString( emitirDocumentoCobrancaHelper.getNomeAbreviadoGerencia(), 3)); cobrancaDocumentoTxt.append("-"); cobrancaDocumentoTxt .append(Util.completaString(emitirDocumentoCobrancaHelper.getNomeGerencia(), 28)); // Constante cobrancaDocumentoTxt.append("EXECUTOR"); // Descri��o da empresa if (emitirDocumentoCobrancaHelper.getIdEmpresa() != null) { cobrancaDocumentoTxt.append("-"); cobrancaDocumentoTxt.append(Util.completaString( emitirDocumentoCobrancaHelper.getDescricaoEmpresa(), 47)); } else { cobrancaDocumentoTxt.append(Util.completaString("", 48)); } cobrancaDocumentoTxt.append("SEQ."); // Sequencial de impress�o cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda( Util.retornaSequencialFormatado(sequencialImpressao), 9)); // Descri��o da empresa if (emitirDocumentoCobrancaHelper.getIdEmpresa() != null) { cobrancaDocumentoTxt.append("-"); cobrancaDocumentoTxt.append(Util.completaString( emitirDocumentoCobrancaHelper.getDescricaoEmpresa(), 28)); } else { cobrancaDocumentoTxt.append(Util.completaString("", 29)); } cobrancaDocumentoTxt.append(System.getProperty("line.separator")); } // adiciona o id da // conta e o sequencial // no para serem // atualizados mapAtualizaSequencial.put(emitirDocumentoCobrancaHelper.getIdDocumentoCobranca(), sequencialImpressao); colecaoCobrancaDocumentoItem = null; } } } mapCobrancaoDocumentoDivididas = null; countOrdem++; } mapCobrancaDocumentoOrdenada = null; } } else { flagFimPesquisa = true; } try { repositorioCobranca.atualizarSequencialCobrancaDocumentoImpressao(mapAtualizaSequencial); } catch (ErroRepositorioException e) { throw new ControladorException("erro.sistema", e); } mapAtualizaSequencial = null; colecaoEmitirDocumentoCobranca = null; } System.out.println("********************"); System.out.println("FIM SUPRESS�O"); System.out.println("********************"); Date dataAtual = new Date(); String nomeZip = null; if (idAcaoCobranca.equals(CobrancaAcao.SUPRESSAO_PARCIAL)) { if (idCronogramaAtividadeAcaoCobranca != null) { nomeZip = "ORDEM_SUPRESSAO_PARCIAL_GRUPO_" + cobrancaGrupo.getId() + "_" + Util.formatarData(dataAtual) + Util.formatarHoraSemDataSemDoisPontos(dataAtual); nomeZip = nomeZip.replace("/", "_"); } else { String descricaoAbrevDocumentoTipo = ""; if (acaoCobranca != null && acaoCobranca.getDocumentoTipo() != null) { descricaoAbrevDocumentoTipo = acaoCobranca.getDocumentoTipo().getDescricaoAbreviado(); } String tituloComandoEventual = cobrancaAcaoAtividadeComando.getDescricaoTitulo(); nomeZip = descricaoAbrevDocumentoTipo + " " + tituloComandoEventual + " " + Util.formatarData(dataAtual) + Util.formatarHoraSemDataSemDoisPontos(dataAtual); nomeZip = nomeZip.replace("/", "_"); nomeZip = nomeZip.replace(" ", "_"); } } else { if (idAcaoCobranca.equals(CobrancaAcao.SUPRESSAO_TOTAL)) { if (idCronogramaAtividadeAcaoCobranca != null) { nomeZip = "ORDEM_SUPRESSAO_TOTAL_GRUPO_" + cobrancaGrupo.getId() + "_" + Util.formatarData(dataAtual) + Util.formatarHoraSemDataSemDoisPontos(dataAtual); } else { String descricaoAbrevDocumentoTipo = ""; if (acaoCobranca != null && acaoCobranca.getDocumentoTipo() != null) { descricaoAbrevDocumentoTipo = acaoCobranca.getDocumentoTipo().getDescricaoAbreviado(); } String tituloComandoEventual = cobrancaAcaoAtividadeComando.getDescricaoTitulo(); nomeZip = descricaoAbrevDocumentoTipo + " " + tituloComandoEventual + " " + Util.formatarData(dataAtual) + Util.formatarHoraSemDataSemDoisPontos(dataAtual); nomeZip = nomeZip.replace("/", "_"); nomeZip = nomeZip.replace(" ", "_"); } } } try { if (cobrancaDocumentoTxt != null && cobrancaDocumentoTxt.length() != 0) { cobrancaDocumentoTxt.append("\u0004"); // criar o arquivo zip File compactado = new File(getControladorUtil().getCaminhoDownloadArquivos("cobranca") + nomeZip + ".zip"); // nomeZip ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(compactado)); File leitura = new File(getControladorUtil().getCaminhoDownloadArquivos("cobranca") + nomeZip + ".txt"); BufferedWriter out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(leitura.getAbsolutePath()))); out.write(cobrancaDocumentoTxt.toString()); out.close(); ZipUtil.adicionarArquivo(zos, leitura); // close the stream zos.close(); leitura.delete(); } System.out.println("********************"); System.out.println("FIM GERA��O ARQUIVO"); System.out.println("********************"); } catch (IOException e) { e.printStackTrace(); throw new ControladorException("erro.sistema", e); } catch (Exception e) { e.printStackTrace(); throw new ControladorException("erro.sistema", e); } } /** * Pesquisa os dados do parcelamento necess�rios para o relat�rio atrav�s do * id do parcelamento * * @author Rafael Corr�a * @date 25/09/2006 * * @return * @throws ControladorException */ public ParcelamentoRelatorioHelper pesquisarParcelamentoRelatorio(Integer idParcelamento) throws ControladorException { Collection colecaoParcelamentos = null; ParcelamentoRelatorioHelper helper = null; try { colecaoParcelamentos = repositorioCobranca.pesquisarParcelamentoRelatorio(idParcelamento); } catch (ErroRepositorioException ex) { sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", ex); } if (colecaoParcelamentos != null && !colecaoParcelamentos.isEmpty()) { Iterator colecaoParcelamentosIterator = colecaoParcelamentos.iterator(); // dados da conta while (colecaoParcelamentosIterator.hasNext()) { helper = new ParcelamentoRelatorioHelper(); Object[] dadosParcelamento = (Object[]) colecaoParcelamentosIterator.next(); // Cria as vari�veis do total de d�bitos e do total de descontos // para ser acrescido de cada d�bito e desconto existente BigDecimal totalDebitos = new BigDecimal("0.00"); BigDecimal totalDescontos = new BigDecimal("0.00"); BigDecimal totalDescontosSemValorCreditos = new BigDecimal("0.00"); if (dadosParcelamento[0] != null) {// 0 // Im�vel helper.setIdImovel((Integer) dadosParcelamento[0]); } if (dadosParcelamento[1] != null) {// 1 // Nome do Munic�pio helper.setNomeMunicipio(dadosParcelamento[1].toString()); } if (dadosParcelamento[2] != null) {// 2 // Data do Parcelamento helper.setDataParcelamento((Date) dadosParcelamento[2]); } // D�bitos if (dadosParcelamento[3] != null) {// 3 // Valor das Faturas em Aberto helper.setValorFaturasEmAberto((BigDecimal) dadosParcelamento[3]); totalDebitos = totalDebitos.add(helper.getValorFaturasEmAberto()); } else { helper.setValorFaturasEmAberto(new BigDecimal("0.00")); } if (dadosParcelamento[4] != null) {// 4 // Valor dos Servi�os A Cobrar helper.setValorServicosACobrar((BigDecimal) dadosParcelamento[4]); totalDebitos = totalDebitos.add(helper.getValorServicosACobrar()); } else { helper.setValorServicosACobrar(new BigDecimal("0.00")); } if (dadosParcelamento[5] != null) {// 5 // Valor das Atualiza��es Monet�rias helper.setValorAtualizacaoMonetaria((BigDecimal) dadosParcelamento[5]); totalDebitos = totalDebitos.add(helper.getValorAtualizacaoMonetaria()); } else { helper.setValorAtualizacaoMonetaria(new BigDecimal("0.00")); } if (dadosParcelamento[6] != null) {// 6 // Valor dos Juros/Mora helper.setValorJurosMora((BigDecimal) dadosParcelamento[6]); totalDebitos = totalDebitos.add(helper.getValorJurosMora()); } else { helper.setValorJurosMora(new BigDecimal("0.00")); } if (dadosParcelamento[7] != null) {// 7 // Valor das Multas helper.setValorMultas((BigDecimal) dadosParcelamento[7]); totalDebitos = totalDebitos.add(helper.getValorMultas()); } else { helper.setValorMultas(new BigDecimal("0.00")); } if (dadosParcelamento[8] != null) {// 8 // Valor das Guais de Pagamento helper.setValorGuiaPagamento((BigDecimal) dadosParcelamento[8]); totalDebitos = totalDebitos.add(helper.getValorGuiaPagamento()); } else { helper.setValorGuiaPagamento(new BigDecimal("0.00")); } if (dadosParcelamento[9] != null) {// 9 // Valor do Parcelamento a Cobrar helper.setValorParcelamentoACobrar((BigDecimal) dadosParcelamento[9]); totalDebitos = totalDebitos.add(helper.getValorParcelamentoACobrar()); } else { helper.setValorParcelamentoACobrar(new BigDecimal("0.00")); } // Seta o valor do total dos d�bitos, pois todos os dados de // d�bito j� foram passados helper.setValorTotalDebitos(totalDebitos); // Descontos/Cr�ditos if (dadosParcelamento[41] != null) { helper.setValorDescontoFaixaReferenciaConta((BigDecimal) dadosParcelamento[41]); totalDescontos = totalDescontos.add(helper.getValorDescontoFaixaReferenciaConta()); totalDescontosSemValorCreditos = totalDescontosSemValorCreditos.add(helper.getValorDescontoFaixaReferenciaConta()); } else { helper.setValorDescontoFaixaReferenciaConta(new BigDecimal("0.00")); } if (dadosParcelamento[10] != null) {// 10 // Valor dos Descontos de Acr�scimo helper.setValorDescontoAcrescimo((BigDecimal) dadosParcelamento[10]); totalDescontos = totalDescontos.add(helper.getValorDescontoAcrescimo()); totalDescontosSemValorCreditos = totalDescontosSemValorCreditos.add(helper.getValorDescontoAcrescimo()); } else { helper.setValorDescontoAcrescimo(new BigDecimal("0.00")); } if (dadosParcelamento[11] != null) {// 11 // Valor dos Descontos de Antiguidade helper.setValorDescontoAntiguidade((BigDecimal) dadosParcelamento[11]); totalDescontos = totalDescontos.add(helper.getValorDescontoAntiguidade()); totalDescontosSemValorCreditos = totalDescontosSemValorCreditos.add(helper.getValorDescontoAntiguidade()); } else { helper.setValorDescontoAntiguidade(new BigDecimal("0.00")); } if (dadosParcelamento[12] != null) {// 12 // Valor dos Descontos de Inatividade helper.setValorDescontoInatividade((BigDecimal) dadosParcelamento[12]); totalDescontos = totalDescontos.add(helper.getValorDescontoInatividade()); totalDescontosSemValorCreditos = totalDescontosSemValorCreditos.add(helper.getValorDescontoInatividade()); } else { helper.setValorDescontoInatividade(new BigDecimal("0.00")); } if (dadosParcelamento[13] != null) {// 13 // Valor dos Cr�ditos a Realizar helper.setValorCreditosRealizar((BigDecimal) dadosParcelamento[13]); totalDescontos = totalDescontos.add(helper.getValorCreditosRealizar()); } else { helper.setValorCreditosRealizar(new BigDecimal("0.00")); } if (dadosParcelamento[24] != null) {// 24 // Valor Desconto de San��es Regulamentares helper.setValorDescontoSancoesRegulamentares((BigDecimal) dadosParcelamento[24]); totalDescontos = totalDescontos.add(helper.getValorDescontoSancoesRegulamentares()); totalDescontosSemValorCreditos = totalDescontosSemValorCreditos.add(helper.getValorDescontoSancoesRegulamentares()); } else { helper.setValorDescontoSancoesRegulamentares(new BigDecimal("0.00")); } if (dadosParcelamento[25] != null) {// 25 // Valor Desconto de San��es Regulamentares helper.setValorDescontoTarifaSocial((BigDecimal) dadosParcelamento[25]); totalDescontos = totalDescontos.add(helper.getValorDescontoTarifaSocial()); totalDescontosSemValorCreditos = totalDescontosSemValorCreditos.add(helper.getValorDescontoTarifaSocial()); } else { helper.setValorDescontoTarifaSocial(new BigDecimal("0.00")); } // Seta o valor do total dos descontos/cr�ditos, pois todos os // dados de desconto/cr�dito j� foram passados helper.setValorTotalDescontos(totalDescontos); helper.setValorTotalDescontosSemValorCreditos(totalDescontosSemValorCreditos); if (dadosParcelamento[14] != null) {// 14 // Valor a Ser Negociado helper.setValorASerNegociado((BigDecimal) dadosParcelamento[14]); } else { helper.setValorASerNegociado(new BigDecimal("0.00")); } if (dadosParcelamento[15] != null) {// 15 // Valor da Entrada helper.setValorEntrada((BigDecimal) dadosParcelamento[15]); } else { helper.setValorEntrada(new BigDecimal("0.00")); } if (dadosParcelamento[16] != null) {// 16 // N�mero de Parcelas helper.setNumeroParcelas((Short) dadosParcelamento[16]); } if (dadosParcelamento[17] != null) {// 17 // Valor da Parcela helper.setValorParcela((BigDecimal) dadosParcelamento[17]); // Valor a Ser Parcelado BigDecimal valorASerParcelado = helper.getValorParcela(); valorASerParcelado = valorASerParcelado.multiply(new BigDecimal(helper.getNumeroParcelas().toString())); helper.setValorASerParcelado(valorASerParcelado); } else { helper.setValorParcela(new BigDecimal("0.00")); helper.setValorASerParcelado(new BigDecimal("0.00")); } if (dadosParcelamento[18] != null) {// 18 // Indicador Restabelecimento if (((Short) dadosParcelamento[18]).equals(ConstantesSistema.SIM)) { helper.setSolicitacaoRestabelecimento("SIM"); } else { helper.setSolicitacaoRestabelecimento("N�O"); } } else { helper.setSolicitacaoRestabelecimento(""); } if (dadosParcelamento[19] != null) {// 19 // Id do Funcion�rio helper.setIdFuncionario((Integer) dadosParcelamento[19]); } else if (dadosParcelamento[26] != null) {// 26 // Id do Funcion�rio helper.setIdFuncionario((Integer) dadosParcelamento[26]); } if (dadosParcelamento[20] != null) {// 20 // Nome do Cliente do Parcelamento helper.setNomeClienteParcelamento((String) dadosParcelamento[20]); } else { helper.setNomeClienteParcelamento(""); } if (dadosParcelamento[21] != null && !((String) dadosParcelamento[21]).equals("")) {// 21 // CPF do Cliente do Parcelamento String cpfFormatado = (String) dadosParcelamento[21]; String zeros = ""; for (int a = 0; a < (11 - cpfFormatado.length()); a++) { zeros = zeros.concat("0"); } // concatena os zeros ao numero // caso o numero seja diferente de nulo cpfFormatado = zeros.concat(cpfFormatado); cpfFormatado = cpfFormatado.substring(0, 3) + "." + cpfFormatado.substring(3, 6) + "." + cpfFormatado.substring(6, 9) + "-" + cpfFormatado.substring(9, 11); helper.setCpfClienteParcelamento(cpfFormatado); } else if (dadosParcelamento[22] != null && !((String) dadosParcelamento[22]).equals("")) {// 21 // CNPJ do Cliente do Parcelamento String cnpjFormatado = (String) dadosParcelamento[22]; String zeros = ""; for (int a = 0; a < (14 - cnpjFormatado.length()); a++) { zeros = zeros.concat("0"); } // concatena os zeros ao numero // caso o numero seja diferente de nulo cnpjFormatado = zeros.concat(cnpjFormatado); cnpjFormatado = cnpjFormatado.substring(0, 2) + "." + cnpjFormatado.substring(2, 5) + "." + cnpjFormatado.substring(5, 8) + "/" + cnpjFormatado.substring(8, 12) + "-" + cnpjFormatado.substring(12, 14); helper.setCpfClienteParcelamento(cnpjFormatado); } else { helper.setCpfClienteParcelamento(""); } if (dadosParcelamento[23] != null) { // taxaJuros helper.setTaxaJuros(Util.formatarMoedaReal((BigDecimal) dadosParcelamento[23])); } else { helper.setTaxaJuros("0,00"); } String rgClienteParcelamento = ""; Cliente clienteParcelamento = getControladorCliente().pesquisarDadosClienteDoParcelamentoRelatorioParcelamento(idParcelamento); if (clienteParcelamento != null) { if (clienteParcelamento.getRg() != null) { if (clienteParcelamento.getOrgaoExpedidorRg() != null && clienteParcelamento.getUnidadeFederacao() != null) { rgClienteParcelamento = clienteParcelamento.getRg() + "-" + clienteParcelamento.getOrgaoExpedidorRg().getDescricao().trim() + "/" + clienteParcelamento.getUnidadeFederacao().getSigla(); } else { rgClienteParcelamento = clienteParcelamento.getRg(); } } helper.setRgClienteParcelamento(rgClienteParcelamento); } if (dadosParcelamento[27] != null) { helper.setNomeDiretorComercial((String) dadosParcelamento[27]); } if (dadosParcelamento[28] != null) { helper.setCpfDiretorComercial(Util.formatarCpf((String) dadosParcelamento[28])); } if (dadosParcelamento[29] != null) { helper.setProfissao((String) dadosParcelamento[29]); } if (dadosParcelamento[30] != null) { helper.setIndicadorPessoaJuridica((Short) dadosParcelamento[30]); } if (dadosParcelamento[31] != null) { helper.setNomeDevedor((String) dadosParcelamento[31]); } if (dadosParcelamento[32] != null) { helper.setCnpjDevedor(Util.formatarCnpj((String) dadosParcelamento[32])); } if (dadosParcelamento[33] != null) { helper.setIdDevedor((Integer) dadosParcelamento[33]); } // Endere�o String endereco = getControladorEndereco().pesquisarEndereco(helper.getIdImovel()); helper.setEndereco(endereco); helper.setEnderecoDevedor(getControladorEndereco().pesquisarEnderecoClienteAbreviado(helper.getIdDevedor())); // Dados do Cliente Cliente cliente = getControladorCliente().pesquisarDadosClienteRelatorioParcelamentoPorImovel(helper.getIdImovel()); // NomeRepositorio helper.setNomeCliente(cliente.getNome()); // RG helper.setRgCliente(cliente.getRg()); // CPF/CNPJ if (cliente.getCpf() != null) { helper.setCpfCnpj(cliente.getCpfFormatado()); } else if (cliente.getCnpj() != null) { helper.setCpfCnpj(cliente.getCnpjFormatado()); } else { helper.setCpfCnpj(""); } if (cliente.getOrgaoExpedidorRg() != null && cliente.getOrgaoExpedidorRg().getDescricao() != null) { helper.setDescOrgaoExpRgCliente(cliente.getOrgaoExpedidorRg().getDescricao()); } if (cliente.getUnidadeFederacao() != null && cliente.getUnidadeFederacao().getSigla() != null) { helper.setSiglaUnidadeFederacaoRgCliente(cliente.getUnidadeFederacao().getSigla()); } // Telefone Collection colecaoClienteFone = getControladorCliente().pesquisarClienteFone(cliente.getId()); ClienteFone clienteFone = null; if (colecaoClienteFone != null && !colecaoClienteFone.isEmpty()) { Iterator colecaoClienteFoneIterator = colecaoClienteFone.iterator(); while (colecaoClienteFoneIterator.hasNext()) { clienteFone = (ClienteFone) colecaoClienteFoneIterator.next(); if (clienteFone.getIndicadorTelefonePadrao() != null && clienteFone.getIndicadorTelefonePadrao().equals(ClienteFone.INDICADOR_FONE_PADRAO)) { break; } } helper.setTelefone(clienteFone.getDddTelefone()); } else { helper.setTelefone(""); } // Telefone do Devedor Collection colecaoDevedorFone = getControladorCliente().pesquisarClienteFone(helper.getIdDevedor()); ClienteFone devedorFone = null; if (colecaoDevedorFone != null && !colecaoDevedorFone.isEmpty()) { Iterator colecaoDevedorFoneIterator = colecaoDevedorFone.iterator(); while (colecaoDevedorFoneIterator.hasNext()) { devedorFone = (ClienteFone) colecaoDevedorFoneIterator.next(); if (devedorFone.getIndicadorTelefonePadrao() != null && devedorFone.getIndicadorTelefonePadrao().equals(ClienteFone.INDICADOR_FONE_PADRAO)) { break; } } helper.setTelefoneDevedor(devedorFone.getDddTelefone()); } else { helper.setTelefoneDevedor(""); } int numeroParcelas = helper.getNumeroParcelas().intValue(); helper.setMesAnoInicioParcelamento(Util.formatarAnoMesParaMesAno(Util.somaMesAnoMesReferencia((Integer) dadosParcelamento[35], 1))); helper.setMesAnoFinalParcelamento(Util.formatarAnoMesParaMesAno(Util.somaMesAnoMesReferencia((Integer) dadosParcelamento[35], numeroParcelas))); if (dadosParcelamento[34] != null) {// 34 // nome do usuario que efetuou parcelamento helper.setNomeUsuarioParcelamento((String) dadosParcelamento[34]); } else { helper.setNomeUsuarioParcelamento(""); } // Bairro if (dadosParcelamento[36] != null) { helper.setBairro((String) dadosParcelamento[36]); } else { helper.setBairro(""); } // Codigo da rota if (dadosParcelamento[37] != null) { helper.setCodigoRota((Short) dadosParcelamento[37]); } else { helper.setCodigoRota(new Short("")); } // Localidade if (dadosParcelamento[38] != null) { helper.setLocalidade((String) dadosParcelamento[38]); } else { helper.setLocalidade(""); } // Setor Comercial if (dadosParcelamento[39] != null) { int setorCodigo = (Integer) dadosParcelamento[39]; helper.setSetorComercial(String.valueOf(setorCodigo)); } else { helper.setSetorComercial(""); } // CPF Usuario if (dadosParcelamento[40] != null) { helper.setCpfUsuario(String.valueOf(dadosParcelamento[40])); } else { helper.setCpfUsuario(""); } } } return helper; } /** * Pesquisa os itens do parcelamento necess�rios para o relat�rio atrav�s do * id do parcelamento * * @author Rafael Corr�a * @date 25/09/2006 * * @return * @throws ControladorException */ public Collection pesquisarParcelamentoItemPorIdParcelamentoRelatorio(Integer idParcelamento) throws ControladorException { Collection colecaoParcelamentosItens = null; Collection colecaoParcelamentosItensRelatorio = null; try { colecaoParcelamentosItens = this.repositorioCobranca.pesquisarParcelamentoItemPorIdParcelamentoRelatorio(idParcelamento); } catch (ErroRepositorioException ex) { ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } if (colecaoParcelamentosItens != null && !colecaoParcelamentosItens.isEmpty()) { colecaoParcelamentosItensRelatorio = new ArrayList(); Iterator colecaoParcelamentosItensIterator = colecaoParcelamentosItens.iterator(); while (colecaoParcelamentosItensIterator.hasNext()) { Object[] dadosParcelamentoItem = (Object[]) colecaoParcelamentosItensIterator.next(); ParcelamentoItem parcelamentoItem = new ParcelamentoItem(); // Dados das Contas ContaGeral contaGeral = new ContaGeral(); Conta conta = new Conta(); // Refer�ncia da Conta if (dadosParcelamentoItem[0] != null) { // 0 conta.setReferencia(((Integer) dadosParcelamentoItem[0]).intValue()); } // Valor de �gua da Conta if (dadosParcelamentoItem[1] != null) { // 1 conta.setValorAgua((BigDecimal) dadosParcelamentoItem[1]); } // Valor de Esgoto da Conta if (dadosParcelamentoItem[2] != null) { // 2 conta.setValorEsgoto((BigDecimal) dadosParcelamentoItem[2]); } // Valor dos D�bitos da Conta if (dadosParcelamentoItem[4] != null) { // 4 conta.setDebitos((BigDecimal) dadosParcelamentoItem[4]); } // Valor dos Cr�ditos da Conta if (dadosParcelamentoItem[3] != null) { // 3 conta.setValorCreditos((BigDecimal) dadosParcelamentoItem[3]); } contaGeral.setConta(conta); parcelamentoItem.setContaGeral(contaGeral); // Dados das Guias de Pagamento GuiaPagamentoGeral guiaPagamentoGeral = new GuiaPagamentoGeral(); GuiaPagamento guiaPagamento = new GuiaPagamento(); DebitoTipo debitoTipoGuiaPagamento = new DebitoTipo(); // Id da Guia de Pagamento if (dadosParcelamentoItem[5] != null) { // 5 guiaPagamento.setId((Integer) dadosParcelamentoItem[5]); } // Descri��o do Tipo de D�bito das Guias Pagamento if (dadosParcelamentoItem[6] != null) { // 6 debitoTipoGuiaPagamento.setDescricao((String) dadosParcelamentoItem[6]); } guiaPagamento.setDebitoTipo(debitoTipoGuiaPagamento); // Valor das Guias de Pagamento if (dadosParcelamentoItem[7] != null) { // 7 guiaPagamento.setValorDebito((BigDecimal) dadosParcelamentoItem[7]); } guiaPagamentoGeral.setGuiaPagamento(guiaPagamento); parcelamentoItem.setGuiaPagamentoGeral(guiaPagamentoGeral); // Dados do D�bito a Cobrar DebitoACobrarGeral debitoACobrarGeral = new DebitoACobrarGeral(); DebitoACobrar debitoACobrar = new DebitoACobrar(); DebitoTipo debitoTipoDebitoACobrar = new DebitoTipo(); // Id do Tipo de D�bito dos D�bitos a Cobrar if (dadosParcelamentoItem[8] != null) { // 8 debitoTipoDebitoACobrar.setId((Integer) dadosParcelamentoItem[8]); } // Descri��o do Tipo de D�bito dos D�bitos a Cobrar if (dadosParcelamentoItem[9] != null) { // 9 debitoTipoDebitoACobrar.setDescricao((String) dadosParcelamentoItem[9]); } debitoACobrar.setDebitoTipo(debitoTipoDebitoACobrar); // N�mero de Presta��es do D�bito a Cobrar if (dadosParcelamentoItem[10] != null) { // 10 debitoACobrar.setNumeroPrestacaoDebito(((Short) dadosParcelamentoItem[10]).shortValue()); } // N�mero de Presta��es Cobradas do D�bito a Cobrar if (dadosParcelamentoItem[11] != null) { // 11 debitoACobrar.setNumeroPrestacaoCobradas(((Short) dadosParcelamentoItem[11]).shortValue()); } // Valor do D�bito a Cobrar if (dadosParcelamentoItem[12] != null) { // 12 debitoACobrar.setValorDebito(((BigDecimal) dadosParcelamentoItem[12])); } // n�mero de parcelas bonus if (dadosParcelamentoItem[18] != null) { // 18 debitoACobrar.setNumeroParcelaBonus(((Short) dadosParcelamentoItem[18])); } debitoACobrarGeral.setDebitoACobrar(debitoACobrar); parcelamentoItem.setDebitoACobrarGeral(debitoACobrarGeral); // Dados do Cr�dito a Realizar CreditoARealizarGeral creditoARealizarGeral = new CreditoARealizarGeral(); CreditoARealizar creditoARealizar = new CreditoARealizar(); CreditoTipo creditoTipoCreditoARealizar = new CreditoTipo(); // Id do Tipo de Cr�dito dos D�bitos a Cobrar if (dadosParcelamentoItem[13] != null) { // 13 creditoTipoCreditoARealizar.setId((Integer) dadosParcelamentoItem[13]); } // Descri��o do Tipo de Cr�dito dos D�bitos a Cobrar if (dadosParcelamentoItem[14] != null) { // 14 creditoTipoCreditoARealizar.setDescricao((String) dadosParcelamentoItem[14]); } creditoARealizar.setCreditoTipo(creditoTipoCreditoARealizar); // N�mero de Presta��es do Cr�dito a Realizar if (dadosParcelamentoItem[15] != null) { // 15 creditoARealizar.setNumeroPrestacaoCredito(((Short) dadosParcelamentoItem[15]).shortValue()); } // N�mero de Presta��es Realizadas do Cr�dito a Realizar if (dadosParcelamentoItem[16] != null) { // 16 creditoARealizar.setNumeroPrestacaoRealizada(((Short) dadosParcelamentoItem[16]).shortValue()); } // Valor do Cr�dito a Realizar if (dadosParcelamentoItem[17] != null) { // 17 creditoARealizar.setValorCredito(((BigDecimal) dadosParcelamentoItem[17])); } // n�mero de parcelas bonus if (dadosParcelamentoItem[19] != null) { // 19 creditoARealizar.setNumeroParcelaBonus(((Short) dadosParcelamentoItem[19])); } creditoARealizarGeral.setCreditoARealizar(creditoARealizar); parcelamentoItem.setCreditoARealizarGeral(creditoARealizarGeral); colecaoParcelamentosItensRelatorio.add(parcelamentoItem); }// fim do while } return colecaoParcelamentosItensRelatorio; } /** * Este caso de uso permite a emiss�o de um ou mais documentos de cobran�a * * * [UC0349] Emitir Documento de Cobran�a - Ordem de Fiscaliza��o * * @author Ana Maria * @data 11/10/2006 * * @param * @return void */ public void emitirDocumentoCobrancaOrdemFiscalizacao(CobrancaAcaoAtividadeCronograma cobrancaAcaoAtividadeCronograma, CobrancaAcaoAtividadeComando cobrancaAcaoAtividadeComando, Date dataAtualPesquisa, CobrancaAcao acaoCobranca, CobrancaGrupo cobrancaGrupo, CobrancaCriterio cobrancaCriterio) throws ControladorException { SistemaParametro sistemaParametro = this.getControladorUtil().pesquisarParametrosDoSistema(); System.out.println("********************"); System.out.println("INICIO FISCALIZA��O"); System.out.println("********************"); boolean flagFimPesquisa = false; final int quantidadeCobrancaDocumento = 1000; int quantidadeCobrancaDocumentoInicio = 0; StringBuilder cobrancaDocumentoTxt = new StringBuilder(); int sequencialImpressao = 0; Map<Integer, Integer> mapAtualizaSequencial = null; Integer idCronogramaAtividadeAcaoCobranca = null; Integer idComandoAtividadeAcaoCobranca = null; Integer idAcaoCobranca = null; if (cobrancaAcaoAtividadeCronograma != null && cobrancaAcaoAtividadeCronograma.getId() != null) { idCronogramaAtividadeAcaoCobranca = cobrancaAcaoAtividadeCronograma.getId(); } if (cobrancaAcaoAtividadeComando != null && cobrancaAcaoAtividadeComando.getId() != null) { idComandoAtividadeAcaoCobranca = cobrancaAcaoAtividadeComando.getId(); } if (acaoCobranca != null && acaoCobranca.getId() != null) { idAcaoCobranca = acaoCobranca.getId(); } while (!flagFimPesquisa) { // map que armazena o sequencial e o numero da // conta para no final atualizar todos os // sequencias mapAtualizaSequencial = new HashMap(); Collection colecaoEmitirDocumentoCobranca = null; try { colecaoEmitirDocumentoCobranca = repositorioCobranca.pesquisarCobrancaDocumentoOrdemCorte( idCronogramaAtividadeAcaoCobranca, idComandoAtividadeAcaoCobranca, dataAtualPesquisa, idAcaoCobranca, quantidadeCobrancaDocumentoInicio); } catch (ErroRepositorioException ex) { ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } if (colecaoEmitirDocumentoCobranca != null && !colecaoEmitirDocumentoCobranca.equals("")) { System.out.println("********************"); System.out.println("QUANTIDADE COBRAN�A:" + colecaoEmitirDocumentoCobranca.size()); System.out.println("********************"); if (colecaoEmitirDocumentoCobranca.size() < quantidadeCobrancaDocumento) { flagFimPesquisa = true; } else { quantidadeCobrancaDocumentoInicio = quantidadeCobrancaDocumentoInicio + 1000; } Iterator iteratorColecaoCobrancaDocumento = colecaoEmitirDocumentoCobranca.iterator(); EmitirDocumentoCobrancaHelper emitirDocumentoCobrancaHelper = null; while (iteratorColecaoCobrancaDocumento.hasNext()) { emitirDocumentoCobrancaHelper = (EmitirDocumentoCobrancaHelper) iteratorColecaoCobrancaDocumento.next(); String nomeCliente = null; Collection colecaoCobrancaDocumentoItem = null; /* * Estes objetos auxiliar�o na formata��o da inscri��o que * ser� composta por informa��es do documento de cobran�a e * do im�vel a ele associado */ Imovel inscricao = null; SetorComercial setorComercialInscricao = null; Quadra quadraInscricao = null; Localidade localidade = null; sequencialImpressao++; if (emitirDocumentoCobrancaHelper != null) { try { nomeCliente = this.repositorioClienteImovel.pesquisarNomeClientePorImovel(emitirDocumentoCobrancaHelper .getIdImovel()); CobrancaDocumento cobrancaDocumento = new CobrancaDocumento(); cobrancaDocumento.setId(emitirDocumentoCobrancaHelper.getIdDocumentoCobranca()); colecaoCobrancaDocumentoItem = this.repositorioCobranca .selecionarCobrancaDocumentoItemReferenteConta(cobrancaDocumento); cobrancaDocumento = null; } catch (ErroRepositorioException ex) { ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } // if (colecaoCobrancaDocumentoItem != null // && !colecaoCobrancaDocumentoItem.isEmpty()) { // In�cio do processo de gera��o do // arquivo txt // LINHA 01 // ================================== /* * Canal ("1") Fonte ("1") */ cobrancaDocumentoTxt.append("1"); cobrancaDocumentoTxt.append("1"); cobrancaDocumentoTxt.append(" "); if (cobrancaAcaoAtividadeCronograma != null) { cobrancaDocumentoTxt.append(Util.completaString("", 21)); String ciclo = "CICLO:" + Util.formatarAnoMesParaMesAno(cobrancaAcaoAtividadeCronograma.getCobrancaAcaoCronograma() .getCobrancaGrupoCronogramaMes().getAnoMesReferencia()); cobrancaDocumentoTxt.append(Util.completaString(ciclo, 151)); } else { cobrancaDocumentoTxt.append(Util.completaString("", 186)); } cobrancaDocumentoTxt.append(System.getProperty("line.separator")); // LINHA 02 // ================================== /* * Canal ("1") Fonte ("1") */ cobrancaDocumentoTxt.append("1"); cobrancaDocumentoTxt.append("1"); cobrancaDocumentoTxt.append(Util.completaString("", 26)); cobrancaDocumentoTxt.append("EXECUTOR"); cobrancaDocumentoTxt.append("-"); // C�digo e descri��o da empresa if (emitirDocumentoCobrancaHelper.getIdEmpresa() != null) { cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(emitirDocumentoCobrancaHelper.getIdEmpresa() .toString(), 4)); cobrancaDocumentoTxt.append("-"); cobrancaDocumentoTxt.append(Util.completaString(emitirDocumentoCobrancaHelper.getDescricaoEmpresa(), 10)); } else { cobrancaDocumentoTxt.append(Util.completaString("", 15)); } cobrancaDocumentoTxt.append(Util.completaString("", 2)); // Sigla e descri�ao da ger�ncia // regional cobrancaDocumentoTxt.append(Util.completaString(emitirDocumentoCobrancaHelper.getNomeAbreviadoGerencia(), 3)); cobrancaDocumentoTxt.append("-"); cobrancaDocumentoTxt.append(Util.completaString(emitirDocumentoCobrancaHelper.getNomeGerencia(), 20)); cobrancaDocumentoTxt.append(Util.completaString("", 5)); // Nome da Localidade cobrancaDocumentoTxt.append(Util.completaString(emitirDocumentoCobrancaHelper.getDescricaoLocalidade(), 10)); cobrancaDocumentoTxt.append(Util.completaString("", 96)); cobrancaDocumentoTxt.append(System.getProperty("line.separator")); // LINHA 03 // ================================== /* * Canal ("-") Fonte ("1") */ cobrancaDocumentoTxt.append("-"); cobrancaDocumentoTxt.append("1"); cobrancaDocumentoTxt.append(Util.completaString("", 2)); // Inscri��o quadraInscricao = new Quadra(); setorComercialInscricao = new SetorComercial(); localidade = new Localidade(); inscricao = new Imovel(); quadraInscricao.setNumeroQuadra(emitirDocumentoCobrancaHelper.getNumeroQuadra()); setorComercialInscricao.setCodigo(emitirDocumentoCobrancaHelper.getCodigoSetorComercial()); localidade.setId(emitirDocumentoCobrancaHelper.getIdLocalidade()); inscricao.setLocalidade(localidade); inscricao.setSetorComercial(setorComercialInscricao); inscricao.setQuadra(quadraInscricao); inscricao.setLote(emitirDocumentoCobrancaHelper.getLote()); inscricao.setSubLote(emitirDocumentoCobrancaHelper.getSubLote()); cobrancaDocumentoTxt.append(Util.completaString(inscricao.getInscricaoFormatada(), 20)); cobrancaDocumentoTxt.append(Util.completaString("", 12)); // Nome do Cliente cobrancaDocumentoTxt.append(Util.completaString(nomeCliente, 50)); cobrancaDocumentoTxt.append(Util.completaString("", 103)); cobrancaDocumentoTxt.append(System.getProperty("line.separator")); // LINHA 04 // ================================== /* * Canal ("+") Fonte ("2") */ cobrancaDocumentoTxt.append("+"); cobrancaDocumentoTxt.append("2"); cobrancaDocumentoTxt.append(Util.completaString("", 68)); // Matr�cula do im�vel String matriculaImovelFormatada = Util.adicionarZerosEsquedaNumero(9, "" + emitirDocumentoCobrancaHelper.getIdImovel()); matriculaImovelFormatada = matriculaImovelFormatada.substring(0, 8) + "." + matriculaImovelFormatada.substring(8, 9); cobrancaDocumentoTxt.append(Util.completaString(matriculaImovelFormatada, 10)); cobrancaDocumentoTxt.append(Util.completaString("", 109)); cobrancaDocumentoTxt.append(System.getProperty("line.separator")); // LINHA 05 // ================================== /* * Canal ("+") Fonte ("1") */ cobrancaDocumentoTxt.append("+"); cobrancaDocumentoTxt.append("1"); cobrancaDocumentoTxt.append(Util.completaString("", 98)); cobrancaDocumentoTxt.append(Util.completaString(inscricao.getInscricaoFormatada(), 20)); cobrancaDocumentoTxt.append(Util.completaString("", 15)); // Nome do Cliente cobrancaDocumentoTxt.append(Util.completaString(nomeCliente, 50)); cobrancaDocumentoTxt.append(Util.completaString("", 4)); cobrancaDocumentoTxt.append(System.getProperty("line.separator")); // LINHA 06 // ================================== /* * Canal ("+") Fonte ("2") */ cobrancaDocumentoTxt.append("+"); cobrancaDocumentoTxt.append("2"); cobrancaDocumentoTxt.append(Util.completaString("", 153)); // Matr�cula do im�vel cobrancaDocumentoTxt.append(Util.completaString(matriculaImovelFormatada, 10)); cobrancaDocumentoTxt.append(Util.completaString("", 24)); cobrancaDocumentoTxt.append(System.getProperty("line.separator")); // LINHA 07 // ================================== String enderecoFormatado = getControladorEndereco().pesquisarEnderecoFormatado( emitirDocumentoCobrancaHelper.getIdImovel()); /* * Canal ("-") Fonte ("1") */ cobrancaDocumentoTxt.append("-"); cobrancaDocumentoTxt.append("1"); cobrancaDocumentoTxt.append(Util.completaString("", 2)); // Endere�o Formatado cobrancaDocumentoTxt.append(Util.completaString(enderecoFormatado, 52)); cobrancaDocumentoTxt.append(Util.completaString("", 44)); // Endere�o Formatado cobrancaDocumentoTxt.append(Util.completaString(enderecoFormatado, 52)); cobrancaDocumentoTxt.append(System.getProperty("line.separator")); // LINHA 08 // ================================== /* * Canal ("+") Fonte ("2") */ cobrancaDocumentoTxt.append("+"); cobrancaDocumentoTxt.append("2"); cobrancaDocumentoTxt.append(Util.completaString("", 69)); // CRC2574 alterado por Vivianne Sousa 19/08/2009 - // Francisco // Sequencial do Documento de Cobran�a cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda("" + emitirDocumentoCobrancaHelper.getNumeroOS(), 9)); // ""+ // emitirDocumentoCobrancaHelper.getNumeroSequenciaDocumento(),9)); cobrancaDocumentoTxt.append(Util.completaString("", 109)); cobrancaDocumentoTxt.append(System.getProperty("line.separator")); // LINHA 09 // ================================== /* * Canal ("+") Fonte ("2") */ cobrancaDocumentoTxt.append("+"); cobrancaDocumentoTxt.append("2"); cobrancaDocumentoTxt.append(Util.completaString("", 152)); // CRC2574 alterado por Vivianne Sousa 19/08/2009 - // Francisco // Sequencial do Documento de Cobran�a cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda("" + emitirDocumentoCobrancaHelper.getNumeroOS(), 9)); // ""+ // emitirDocumentoCobrancaHelper.getNumeroSequenciaDocumento(),9)); cobrancaDocumentoTxt.append(Util.completaString("", 26)); cobrancaDocumentoTxt.append(System.getProperty("line.separator")); // LINHA 10 // ================================== /* * Canal ("-") Fonte ("1") */ cobrancaDocumentoTxt.append("-"); cobrancaDocumentoTxt.append("1"); cobrancaDocumentoTxt.append(Util.completaString("", 4)); /* * Quantidades de economias por categoria: 1� * RESID�NCIAL 2� COMERCIAL 3� INDUSTRIAL 4� P�BLICA */ Imovel imovel = new Imovel(); imovel.setId(emitirDocumentoCobrancaHelper.getIdImovel()); Collection colecaoCategorias = getControladorImovel().obterQuantidadeEconomiasCategoria(imovel); imovel = null; String qtdResidencial = ""; String qtdComercial = ""; String qtdIndustrial = ""; String qtdPublico = ""; Integer totalCategoria = 0; if (colecaoCategorias != null && !colecaoCategorias.isEmpty()) { Iterator iteratorColecaoCategorias = colecaoCategorias.iterator(); Categoria categoria = null; while (iteratorColecaoCategorias.hasNext()) { categoria = (Categoria) iteratorColecaoCategorias.next(); if (categoria.getId().equals(Categoria.RESIDENCIAL)) { qtdResidencial = "" + categoria.getQuantidadeEconomiasCategoria(); totalCategoria = totalCategoria + categoria.getQuantidadeEconomiasCategoria(); } else if (categoria.getId().equals(Categoria.COMERCIAL)) { qtdComercial = "" + categoria.getQuantidadeEconomiasCategoria(); totalCategoria = totalCategoria + categoria.getQuantidadeEconomiasCategoria(); } else if (categoria.getId().equals(Categoria.INDUSTRIAL)) { qtdIndustrial = "" + categoria.getQuantidadeEconomiasCategoria(); totalCategoria = totalCategoria + categoria.getQuantidadeEconomiasCategoria(); } else if (categoria.getId().equals(Categoria.PUBLICO)) { qtdPublico = "" + categoria.getQuantidadeEconomiasCategoria(); totalCategoria = totalCategoria + categoria.getQuantidadeEconomiasCategoria(); } } } colecaoCategorias = null; // Resid�ncial if (!qtdResidencial.equals("")) { cobrancaDocumentoTxt.append(Util.adicionarZerosEsquedaNumero(3, qtdResidencial)); } else { cobrancaDocumentoTxt.append(Util.completaString("", 3)); } cobrancaDocumentoTxt.append(Util.completaString("", 2)); // Comercial if (!qtdComercial.equals("")) { cobrancaDocumentoTxt.append(Util.adicionarZerosEsquedaNumero(3, qtdComercial)); } else { cobrancaDocumentoTxt.append(Util.completaString("", 3)); } cobrancaDocumentoTxt.append(Util.completaString("", 2)); // Industrial if (!qtdIndustrial.equals("")) { cobrancaDocumentoTxt.append(Util.adicionarZerosEsquedaNumero(3, qtdIndustrial)); } else { cobrancaDocumentoTxt.append(Util.completaString("", 3)); } cobrancaDocumentoTxt.append(Util.completaString("", 2)); // P�blico if (!qtdPublico.equals("")) { cobrancaDocumentoTxt.append(Util.adicionarZerosEsquedaNumero(3, qtdPublico)); } else { cobrancaDocumentoTxt.append(Util.completaString("", 3)); } cobrancaDocumentoTxt.append(Util.completaString("", 2)); if (totalCategoria != null && !totalCategoria.equals("")) { // Soma Total das economias cobrancaDocumentoTxt.append(Util.adicionarZerosEsquedaNumero(4, "" + totalCategoria)); } else { cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda("", 4)); } cobrancaDocumentoTxt.append(Util.completaString("", 3)); // Data de Emiss�o if (emitirDocumentoCobrancaHelper.getEmissao() != null) { cobrancaDocumentoTxt.append(Util.formatarData(emitirDocumentoCobrancaHelper.getEmissao())); } else { cobrancaDocumentoTxt.append(Util.completaString("", 10)); } cobrancaDocumentoTxt.append(Util.completaString("", 4)); // Perfil do Im�vel cobrancaDocumentoTxt.append(Util.completaString(emitirDocumentoCobrancaHelper.getDescricaoImovelPerfil(), 15)); cobrancaDocumentoTxt.append(" "); // Data da �ltima altera��o if (emitirDocumentoCobrancaHelper.getDtImovelUltimaAlteracao() != null) { cobrancaDocumentoTxt.append(Util.formatarData(emitirDocumentoCobrancaHelper.getDtImovelUltimaAlteracao())); } else { cobrancaDocumentoTxt.append(Util.completaString("", 10)); } // Grupo de Cobran�a cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda( "" + emitirDocumentoCobrancaHelper.getIdCobrancaGrupo(), 9)); cobrancaDocumentoTxt.append(Util.completaString("", 2)); // Sequencial de impress�o cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda( Util.retornaSequencialFormatado(sequencialImpressao), 8)); cobrancaDocumentoTxt.append(Util.completaString("", 11)); // Resid�ncial if (!qtdResidencial.equals("")) { cobrancaDocumentoTxt.append(Util.adicionarZerosEsquedaNumero(3, qtdResidencial)); } else { cobrancaDocumentoTxt.append(Util.completaString("", 3)); } cobrancaDocumentoTxt.append(Util.completaString("", 2)); // Comercial if (!qtdComercial.equals("")) { cobrancaDocumentoTxt.append(Util.adicionarZerosEsquedaNumero(3, qtdComercial)); } else { cobrancaDocumentoTxt.append(Util.completaString("", 3)); } cobrancaDocumentoTxt.append(Util.completaString("", 2)); // Industrial if (!qtdIndustrial.equals("")) { cobrancaDocumentoTxt.append(Util.adicionarZerosEsquedaNumero(3, qtdIndustrial)); } else { cobrancaDocumentoTxt.append(Util.completaString("", 3)); } cobrancaDocumentoTxt.append(Util.completaString("", 2)); // P�blico if (!qtdPublico.equals("")) { cobrancaDocumentoTxt.append(Util.adicionarZerosEsquedaNumero(3, qtdPublico)); } else { cobrancaDocumentoTxt.append(Util.completaString("", 3)); } cobrancaDocumentoTxt.append(Util.completaString("", 8)); // Data de Emiss�o if (emitirDocumentoCobrancaHelper.getEmissao() != null) { cobrancaDocumentoTxt.append(Util.formatarData(emitirDocumentoCobrancaHelper.getEmissao())); } else { cobrancaDocumentoTxt.append(Util.completaString("", 10)); } cobrancaDocumentoTxt.append(" "); // Valor total do documento de cobran�a cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda( Util.formatarMoedaReal(emitirDocumentoCobrancaHelper.getValorDocumento()), 12)); cobrancaDocumentoTxt.append(Util.completaString("", 5)); // Data da Posi��o do D�bito String anoMesValidade = sistemaParametro.getAnoMesArrecadacao().toString(); Calendar calendario = new GregorianCalendar(); if (anoMesValidade != null && !anoMesValidade.equals("")) { calendario.set(Calendar.YEAR, new Integer(anoMesValidade.substring(0, 4)).intValue()); calendario.set(Calendar.MONTH, new Integer(anoMesValidade.substring(4, 6)).intValue() - 1); calendario.set(Calendar.DAY_OF_MONTH, calendario.getActualMaximum(Calendar.DAY_OF_MONTH)); cobrancaDocumentoTxt.append(Util.formatarData(calendario.getTime())); } else { cobrancaDocumentoTxt.append(Util.completaString("", 10)); } cobrancaDocumentoTxt.append(Util.completaString("", 5)); // //////////////////////////////////////////////////////////////////// // Grupo de Cobran�a cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda( "" + emitirDocumentoCobrancaHelper.getIdCobrancaGrupo(), 5)); cobrancaDocumentoTxt.append(Util.completaString("", 4)); // Sequencial de impress�o cobrancaDocumentoTxt.append(Util.retornaSequencialFormatado(sequencialImpressao)); cobrancaDocumentoTxt.append(Util.completaString("", 1)); // /////////////////////////////////////////////////////////////////// cobrancaDocumentoTxt.append(System.getProperty("line.separator")); // LINHA 11 // ================================== /* * Canal ("-") Fonte ("1") */ cobrancaDocumentoTxt.append("-"); cobrancaDocumentoTxt.append("1"); cobrancaDocumentoTxt.append(Util.completaString("", 2)); // Situa��o da Liga��o de �gua cobrancaDocumentoTxt.append(Util.completaString( "" + emitirDocumentoCobrancaHelper.getDescricaoSituacaoLigacaoAgua(), 20)); // Consumo M�dio Integer consumoMedio = getControladorMicromedicao().pesquisarConsumoMedioImovel( emitirDocumentoCobrancaHelper.getIdImovel()); if (consumoMedio != null) { cobrancaDocumentoTxt.append(Util.completaString("" + consumoMedio, 28)); } else { cobrancaDocumentoTxt.append(Util.completaString("", 28)); } // Situa��o da Liga��o de Esgoto cobrancaDocumentoTxt.append(Util.completaString( "" + emitirDocumentoCobrancaHelper.getDescricaoSituacaoLigacaoEsgoto(), 20)); // Consumo Fixo de Esgoto Integer consumoMinimoEsgoto = getControladorLigacaoEsgoto().recuperarConsumoMinimoEsgoto( emitirDocumentoCobrancaHelper.getIdImovel()); if (consumoMinimoEsgoto != null) { cobrancaDocumentoTxt.append(Util.completaString("" + consumoMinimoEsgoto, 10)); } else { cobrancaDocumentoTxt.append(Util.completaString("", 10)); } cobrancaDocumentoTxt.append(Util.completaString("", 107)); cobrancaDocumentoTxt.append(System.getProperty("line.separator")); // LINHA 12 // ================================== /* * Canal ("-") Fonte ("1") */ cobrancaDocumentoTxt.append("-"); cobrancaDocumentoTxt.append("1"); cobrancaDocumentoTxt.append(Util.completaString("", 3)); Object[] dadosLigacaoAgua = null; // Dados da Liga��o de �gua(a partir da // tabela // LIGACAO_AGUA // lagu_id=imov_id da tabela IMOVEL) dadosLigacaoAgua = getControladorAtendimentoPublico().pesquisarDadosLigacaoAgua( emitirDocumentoCobrancaHelper.getIdImovel()); if (dadosLigacaoAgua != null) { if (dadosLigacaoAgua[1] != null) { // Data do Corte(lagu_dtcorte) cobrancaDocumentoTxt.append(Util.completaString(Util.formatarData((Date) dadosLigacaoAgua[1]), 10)); } else { cobrancaDocumentoTxt.append(Util.completaString("", 10)); } cobrancaDocumentoTxt.append(Util.completaString("", 6)); if (dadosLigacaoAgua[2] != null) { // Data Supress�o cobrancaDocumentoTxt.append(Util.completaString(Util.formatarData((Date) dadosLigacaoAgua[2]), 10)); } else { cobrancaDocumentoTxt.append(Util.completaString("", 10)); } cobrancaDocumentoTxt.append(Util.completaString("", 13)); } else { cobrancaDocumentoTxt.append(Util.completaString("", 40)); } // Origem Integer anormalidadeLeitura = emitirDocumentoCobrancaHelper.getIdLeituraAnormalidade(); if (anormalidadeLeitura == null) { cobrancaDocumentoTxt.append("AUTOM�TICO"); cobrancaDocumentoTxt.append(Util.completaString("", 5)); } else if (anormalidadeLeitura == LeituraAnormalidade.INDICADOR_LIGADO_CLANDESTINO_AGUA || anormalidadeLeitura == LeituraAnormalidade.INDICADOR_LIGADO_CLANDESTINO_ESGOTO || anormalidadeLeitura == LeituraAnormalidade.INDICADOR_LIGADO_CLANDESTINO_AGUA_ESGOTO) { cobrancaDocumentoTxt.append("RECADASTRAMENTO"); } else { cobrancaDocumentoTxt.append("LEITURA"); cobrancaDocumentoTxt.append(Util.completaString("", 8)); } // Ocorr�ncia cobrancaDocumentoTxt.append(Util.completaString(emitirDocumentoCobrancaHelper.getDescricaoLeitAnormalidade(), 34)); cobrancaDocumentoTxt.append(Util.completaString("", 95)); cobrancaDocumentoTxt.append(System.getProperty("line.separator")); // LINHA 13 // ================================== /* * Canal ("-") Fonte ("1") */ cobrancaDocumentoTxt.append("-"); cobrancaDocumentoTxt.append(Util.completaString("", 188)); cobrancaDocumentoTxt.append(System.getProperty("line.separator")); // LINHA 14 // ================================== /* * Canal ("0") Fonte ("1") */ cobrancaDocumentoTxt.append("0"); cobrancaDocumentoTxt.append("1"); cobrancaDocumentoTxt.append(" "); /* * Selecionar os itens do documento de cobran�a * correspondentes a conta e ordenar por ano/m�s de * refer�ncia da conta */ if (colecaoCobrancaDocumentoItem != null && !colecaoCobrancaDocumentoItem.isEmpty()) { Iterator iteratorColecaoCobrancaDocumentoItem = null; CobrancaDocumentoItem cobrancaDocumentoItem = null; int countImpressao = colecaoCobrancaDocumentoItem.size() - 12; cobrancaDocumentoTxt.append(Util.completaString("", 10)); /* * Caso a quantidade de itens selecionados seja * superior a 13 [SB0001 - Calcular Valor e Data de * Vencimento Anterior] * * Caso contr�rio: Dados do primeiro item * selecionado */ if (colecaoCobrancaDocumentoItem.size() > 13) { CalcularValorDataVencimentoAnteriorHelper calcularValorDataVencimentoAnteriorHelper = this .calcularValorDataVencimentoAnterior(colecaoCobrancaDocumentoItem, 13); // Constante "DEBTO.ATE" cobrancaDocumentoTxt.append("DEBTO.ATE"); cobrancaDocumentoTxt.append(Util.completaString("", 17)); // Data de Vencimento anterior // retornado // pelo // [SB0001] cobrancaDocumentoTxt.append(Util.formatarData(calcularValorDataVencimentoAnteriorHelper .getDataVencimentoAnterior())); // Valor anterior retornado pelo // [SB0001] cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda( Util.formatarMoedaReal(calcularValorDataVencimentoAnteriorHelper.getValorAnterior()), 29)); } else { iteratorColecaoCobrancaDocumentoItem = colecaoCobrancaDocumentoItem.iterator(); cobrancaDocumentoItem = null; cobrancaDocumentoItem = (CobrancaDocumentoItem) iteratorColecaoCobrancaDocumentoItem.next(); // M�s/Ano de refer�ncia da // conta cobrancaDocumentoTxt .append(Util.completaString( Util.formatarAnoMesParaMesAno(cobrancaDocumentoItem.getContaGeral().getConta() .getReferencia()), 7)); cobrancaDocumentoTxt.append("."); // D�gito verificador da conta cobrancaDocumentoTxt.append(cobrancaDocumentoItem.getContaGeral().getConta().getDigitoVerificadorConta()); cobrancaDocumentoTxt.append(Util.completaString("", 17)); // Data de vencimento da conta cobrancaDocumentoTxt.append(Util.formatarData(cobrancaDocumentoItem.getContaGeral().getConta() .getDataVencimentoConta())); // Valor do item cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda( Util.formatarMoedaReal(cobrancaDocumentoItem.getValorItemCobrado()), 29)); } cobrancaDocumentoTxt.append(Util.completaString("", 111)); cobrancaDocumentoTxt.append(System.getProperty("line.separator")); // LINHA 15 // ================================== /* * Canal (" ") Fonte ("1") */ if (countImpressao <= 0) { iteratorColecaoCobrancaDocumentoItem = colecaoCobrancaDocumentoItem.iterator(); cobrancaDocumentoItem = null; int countRegistros = 0; while (iteratorColecaoCobrancaDocumentoItem.hasNext()) { cobrancaDocumentoItem = (CobrancaDocumentoItem) iteratorColecaoCobrancaDocumentoItem.next(); if (countRegistros > 0) { cobrancaDocumentoTxt.append(" "); cobrancaDocumentoTxt.append("1"); cobrancaDocumentoTxt.append(Util.completaString("", 11)); // M�s/Ano de refer�ncia da // conta cobrancaDocumentoTxt.append(Util.completaString( Util.formatarAnoMesParaMesAno(cobrancaDocumentoItem.getContaGeral().getConta() .getReferencia()), 7)); cobrancaDocumentoTxt.append("."); // D�gito verificador da conta cobrancaDocumentoTxt.append(cobrancaDocumentoItem.getContaGeral().getConta() .getDigitoVerificadorConta()); cobrancaDocumentoTxt.append(Util.completaString("", 17)); // Data de vencimento da conta cobrancaDocumentoTxt.append(Util.formatarData(cobrancaDocumentoItem.getContaGeral().getConta() .getDataVencimentoConta())); cobrancaDocumentoTxt.append(Util.completaString("", 1)); // Valor do item cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda( Util.formatarMoedaReal(cobrancaDocumentoItem.getValorItemCobrado()), 28)); cobrancaDocumentoTxt.append(Util.completaString("", 111)); cobrancaDocumentoTxt.append(System.getProperty("line.separator")); } countRegistros++; } } else { while (countImpressao < colecaoCobrancaDocumentoItem.size()) { cobrancaDocumentoItem = (CobrancaDocumentoItem) ((List) colecaoCobrancaDocumentoItem) .get(countImpressao); cobrancaDocumentoTxt.append(" "); cobrancaDocumentoTxt.append("1"); cobrancaDocumentoTxt.append(Util.completaString("", 11)); // M�s/Ano de refer�ncia da // conta cobrancaDocumentoTxt .append(Util.completaString( Util.formatarAnoMesParaMesAno(cobrancaDocumentoItem.getContaGeral().getConta() .getReferencia()), 7)); cobrancaDocumentoTxt.append("."); // D�gito verificador da conta cobrancaDocumentoTxt.append(cobrancaDocumentoItem.getContaGeral().getConta() .getDigitoVerificadorConta()); cobrancaDocumentoTxt.append(Util.completaString("", 17)); // Data de vencimento da conta cobrancaDocumentoTxt.append(Util.formatarData(cobrancaDocumentoItem.getContaGeral().getConta() .getDataVencimentoConta())); cobrancaDocumentoTxt.append(Util.completaString("", 1)); // Valor do item cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda( Util.formatarMoedaReal(cobrancaDocumentoItem.getValorItemCobrado()), 28)); cobrancaDocumentoTxt.append(Util.completaString("", 111)); cobrancaDocumentoTxt.append(System.getProperty("line.separator")); countImpressao++; } } } else { for (int i = 0; i < 12; i++) { cobrancaDocumentoTxt.append(System.getProperty("line.separator")); } } // LINHA 16 // ================================== /* * Canal ("1") Fonte ("2") */ cobrancaDocumentoTxt.append("1"); cobrancaDocumentoTxt.append("2"); cobrancaDocumentoTxt.append(Util.completaString("", 60)); try { BigDecimal servicoAtualizacao = repositorioCobranca.pesquisarServioAtualizacao(emitirDocumentoCobrancaHelper .getIdDocumentoCobranca()); cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(Util.formatarMoedaReal(servicoAtualizacao), 15)); } catch (ErroRepositorioException ex) { ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } cobrancaDocumentoTxt.append(Util.completaString("", 112)); cobrancaDocumentoTxt.append(System.getProperty("line.separator")); // LINHA 17 // ================================== /* * Canal ("+") Fonte ("1") */ cobrancaDocumentoTxt.append("+"); cobrancaDocumentoTxt.append("1"); cobrancaDocumentoTxt.append(Util.completaString("", 187)); cobrancaDocumentoTxt.append(System.getProperty("line.separator")); // LINHA 18 // ================================== /* * Canal ("0") Fonte ("2") */ cobrancaDocumentoTxt.append("0"); cobrancaDocumentoTxt.append("2"); cobrancaDocumentoTxt.append(Util.completaString("", 24)); // Data da Posi��o do D�bito if (anoMesValidade != null && !anoMesValidade.equals("")) { cobrancaDocumentoTxt.append(Util.formatarData(calendario.getTime())); } else { cobrancaDocumentoTxt.append(Util.completaString("", 10)); } cobrancaDocumentoTxt.append(Util.completaString("", 26)); // Valor total do documento de cobran�a cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda( Util.formatarMoedaReal(emitirDocumentoCobrancaHelper.getValorDocumento()), 15)); cobrancaDocumentoTxt.append(Util.completaString("", 112)); cobrancaDocumentoTxt.append(System.getProperty("line.separator")); // LINHA 19 // ================================== /* * Canal ("+") Fonte ("1") */ cobrancaDocumentoTxt.append("+"); cobrancaDocumentoTxt.append("1"); cobrancaDocumentoTxt.append(Util.completaString("", 97)); cobrancaDocumentoTxt.append(Util.completaString(inscricao.getInscricaoFormatada(), 20)); cobrancaDocumentoTxt.append(Util.completaString("", 16)); // Nome do Cliente cobrancaDocumentoTxt.append(Util.completaString(nomeCliente, 50)); cobrancaDocumentoTxt.append(Util.completaString("", 4)); cobrancaDocumentoTxt.append(System.getProperty("line.separator")); // LINHA 20 // ================================== /* * Canal ("+") Fonte ("2") */ cobrancaDocumentoTxt.append("+"); cobrancaDocumentoTxt.append("2"); cobrancaDocumentoTxt.append(Util.completaString("", 152)); // Matr�cula do im�vel cobrancaDocumentoTxt.append(Util.completaString(matriculaImovelFormatada, 10)); cobrancaDocumentoTxt.append(Util.completaString("", 25)); cobrancaDocumentoTxt.append(System.getProperty("line.separator")); // LINHA 21 // ================================== /* * Canal ("-") Fonte ("1") */ cobrancaDocumentoTxt.append("-"); cobrancaDocumentoTxt.append("1"); cobrancaDocumentoTxt.append(Util.completaString("", 97)); // Endere�o Formatado cobrancaDocumentoTxt.append(Util.completaString(enderecoFormatado, 62)); cobrancaDocumentoTxt.append(Util.completaString("", 28)); cobrancaDocumentoTxt.append(System.getProperty("line.separator")); // LINHA 22 // ================================== /* * Canal ("+") Fonte ("2") */ cobrancaDocumentoTxt.append("+"); cobrancaDocumentoTxt.append("2"); cobrancaDocumentoTxt.append(Util.completaString("", 151)); // CRC2574 alterado por Vivianne Sousa 19/08/2009 - // Francisco // Sequencial do Documento de Cobran�a cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda("" + emitirDocumentoCobrancaHelper.getNumeroOS(), 9)); // ""+ // emitirDocumentoCobrancaHelper.getNumeroSequenciaDocumento(),9)); cobrancaDocumentoTxt.append(Util.completaString("", 27)); cobrancaDocumentoTxt.append(System.getProperty("line.separator")); // LINHA 23 // ================================== /* * Canal ("-") Fonte ("1") */ cobrancaDocumentoTxt.append("-"); cobrancaDocumentoTxt.append("1"); cobrancaDocumentoTxt.append(Util.completaString("", 101)); /* * Quantidades de economias por categoria: 1� * RESID�NCIAL 2� COMERCIAL 3� INDUSTRIAL 4� P�BLICA */ // Resid�ncial if (!qtdResidencial.equals("")) { cobrancaDocumentoTxt.append(Util.adicionarZerosEsquedaNumero(3, qtdResidencial)); } else { cobrancaDocumentoTxt.append(Util.completaString("", 3)); } cobrancaDocumentoTxt.append(Util.completaString("", 2)); // Comercial if (!qtdComercial.equals("")) { cobrancaDocumentoTxt.append(Util.adicionarZerosEsquedaNumero(3, qtdComercial)); } else { cobrancaDocumentoTxt.append(Util.completaString("", 3)); } cobrancaDocumentoTxt.append(Util.completaString("", 2)); // Industrial if (!qtdIndustrial.equals("")) { cobrancaDocumentoTxt.append(Util.adicionarZerosEsquedaNumero(3, qtdIndustrial)); } else { cobrancaDocumentoTxt.append(Util.completaString("", 3)); } cobrancaDocumentoTxt.append(Util.completaString("", 2)); // P�blico if (!qtdPublico.equals("")) { cobrancaDocumentoTxt.append(Util.adicionarZerosEsquedaNumero(3, qtdPublico)); } else { cobrancaDocumentoTxt.append(Util.completaString("", 3)); } cobrancaDocumentoTxt.append(Util.completaString("", 8)); // Data de Emiss�o if (emitirDocumentoCobrancaHelper.getEmissao() != null) { cobrancaDocumentoTxt.append(Util.formatarData(emitirDocumentoCobrancaHelper.getEmissao())); } else { cobrancaDocumentoTxt.append(Util.completaString("", 10)); } cobrancaDocumentoTxt.append(" "); // Valor total do documento de cobran�a cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda( Util.formatarMoedaReal(emitirDocumentoCobrancaHelper.getValorDocumento()), 12)); cobrancaDocumentoTxt.append(Util.completaString("", 5)); // Data da Posi��o do D�bito if (anoMesValidade != null && !anoMesValidade.equals("")) { cobrancaDocumentoTxt.append(Util.formatarData(calendario.getTime())); } else { cobrancaDocumentoTxt.append(Util.completaString("", 10)); } cobrancaDocumentoTxt.append(Util.completaString("", 5)); // //////////////////////////////////////////////////////////////////// // Grupo de Cobran�a cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda( "" + emitirDocumentoCobrancaHelper.getIdCobrancaGrupo(), 5)); cobrancaDocumentoTxt.append(Util.completaString("", 2)); // Sequencial de impress�o cobrancaDocumentoTxt.append(Util.retornaSequencialFormatado(sequencialImpressao)); cobrancaDocumentoTxt.append(Util.completaString("", 3)); cobrancaDocumentoTxt.append(System.getProperty("line.separator")); // LINHA 24 // ================================== /* * Canal ("1") Fonte ("4") */ cobrancaDocumentoTxt.append("1"); cobrancaDocumentoTxt.append("4"); cobrancaDocumentoTxt.append(Util.completaString("", 10)); cobrancaDocumentoTxt.append("PRIORIDADE PARA EXECU��O"); cobrancaDocumentoTxt.append(Util.completaString("", 153)); cobrancaDocumentoTxt.append(System.getProperty("line.separator")); // } // adiciona o id da // conta e o sequencial // no para serem // atualizados mapAtualizaSequencial.put(emitirDocumentoCobrancaHelper.getIdDocumentoCobranca(), sequencialImpressao); colecaoCobrancaDocumentoItem = null; } emitirDocumentoCobrancaHelper = null; } } else { flagFimPesquisa = true; } try { repositorioCobranca.atualizarSequencialCobrancaDocumentoImpressao(mapAtualizaSequencial); } catch (ErroRepositorioException e) { throw new ControladorException("erro.sistema", e); } mapAtualizaSequencial = null; colecaoEmitirDocumentoCobranca = null; } System.out.println("********************"); System.out.println("FIM FISCALIZA��O"); System.out.println("********************"); Date dataAtual = new Date(); String nomeZip = null; if (idAcaoCobranca.equals(CobrancaAcao.FISCALIZACAO_CORTADO)) { if (idCronogramaAtividadeAcaoCobranca != null) { nomeZip = "ORDEM_FISCALIZACAO_CORTADO_GRUPO_" + cobrancaGrupo.getId() + "_" + Util.formatarData(dataAtual) + Util.formatarHoraSemDataSemDoisPontos(dataAtual); } } else if (idAcaoCobranca.equals(CobrancaAcao.FISCALIZACAO_SUPRIMIDO)) { if (idCronogramaAtividadeAcaoCobranca != null) { nomeZip = "ORDEM_FISCALIZACAO_SUPRIMIDO_GRUPO_" + cobrancaGrupo.getId() + "_" + Util.formatarData(dataAtual) + Util.formatarHoraSemDataSemDoisPontos(dataAtual); } } else if (idAcaoCobranca.equals(CobrancaAcao.FISCALIZACAO_FACTIVEL)) { if (idCronogramaAtividadeAcaoCobranca != null) { nomeZip = "ORDEM_FISCALIZACAO_FACTIVEL_GRUPO_" + cobrancaGrupo.getId() + "_" + Util.formatarData(dataAtual) + Util.formatarHoraSemDataSemDoisPontos(dataAtual); } } else if (idAcaoCobranca.equals(CobrancaAcao.FISCALIZACAO_POTENCIAL)) { if (idCronogramaAtividadeAcaoCobranca != null) { nomeZip = "ORDEM_FISCALIZACAO_POTENCIAL_GRUPO_" + cobrancaGrupo.getId() + "_" + Util.formatarData(dataAtual) + Util.formatarHoraSemDataSemDoisPontos(dataAtual); } } else if (idAcaoCobranca.equals(CobrancaAcao.FISCALIZACAO_LIGADO)) { if (idCronogramaAtividadeAcaoCobranca != null) { nomeZip = "ORDEM_FISCALIZACAO_LIGADO_GRUPO_" + cobrancaGrupo.getId() + "_" + Util.formatarData(dataAtual) + Util.formatarHoraSemDataSemDoisPontos(dataAtual); } } else if (idAcaoCobranca.equals(CobrancaAcao.FISCALIZACAO_TOTAL)) { if (idCronogramaAtividadeAcaoCobranca != null) { nomeZip = "ORDEM_FISCALIZACAO_TOTAL_GRUPO_" + cobrancaGrupo.getId() + "_" + Util.formatarData(dataAtual) + Util.formatarHoraSemDataSemDoisPontos(dataAtual); } } else if (idAcaoCobranca.equals(CobrancaAcao.FISCALIZACAO_LIGADO_A_REVELIA)) { if (idCronogramaAtividadeAcaoCobranca != null) { nomeZip = "ORDEM_FISCALIZACAO_LIGADO_A_REVELIA_GRUPO_" + cobrancaGrupo.getId() + "_" + Util.formatarData(dataAtual) + Util.formatarHoraSemDataSemDoisPontos(dataAtual); } } // Eventual if (idCronogramaAtividadeAcaoCobranca == null) { String descricaoAbrevDocumentoTipo = ""; if (acaoCobranca != null && acaoCobranca.getDocumentoTipo() != null) { descricaoAbrevDocumentoTipo = acaoCobranca.getDocumentoTipo().getDescricaoAbreviado(); } String tituloComandoEventual = cobrancaAcaoAtividadeComando.getDescricaoTitulo(); nomeZip = descricaoAbrevDocumentoTipo + " " + tituloComandoEventual + " " + Util.formatarData(dataAtual) + Util.formatarHoraSemDataSemDoisPontos(dataAtual); nomeZip = nomeZip.replace("/", "_"); nomeZip = nomeZip.replace(" ", "_"); } nomeZip = nomeZip.replace("/", "_"); try { if (cobrancaDocumentoTxt != null && cobrancaDocumentoTxt.length() != 0) { cobrancaDocumentoTxt.append("\u0004"); // criar o arquivo zip File compactado = new File(nomeZip + ".zip"); // nomeZip ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(compactado)); File leitura = new File(nomeZip + ".txt"); BufferedWriter out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(leitura.getAbsolutePath()))); out.write(cobrancaDocumentoTxt.toString()); out.flush(); out.close(); ZipUtil.adicionarArquivo(zos, leitura); // close the stream zos.close(); leitura.delete(); } System.out.println("********************"); System.out.println("FIM GERA��O ARQUIVO"); System.out.println("********************"); } catch (IOException e) { e.printStackTrace(); throw new ControladorException("erro.sistema", e); } catch (Exception e) { e.printStackTrace(); throw new ControladorException("erro.sistema", e); } } /** * * Este caso de uso permite gerar o resumo das a��es de cobran�a com a * atividade emitir j� realizada e a atividade encerrar ainda n�o realizada * e realizar a atividade encerrar das a��es que estejam comandadas. * * [UC0478] Gerar Resumo das A��es de Cobran�a do Cronograma * * P�s-oncid��o: Resumo das a��es de cobran�a gerado e atividade encerrar da * a��o de cobran�a, se for o caso, realizada * * @author Rafael Santos, Pedro Alexandre,S�vio Luiz * @date 16/10/2006, 18/01/2007,01/02/2007 * */ public void gerarResumoAcoesCobrancaCronograma(Object[] dadosCobrancaAcaoAtividadeCronograma, int idFuncionalidadeIniciada) throws ControladorException { int idUnidadeIniciada = 0; // posi��es do array com os dados que ser�o atualizados final int POSICAO_ID_COB_ACAO_ATIV_CRON_EMITIR = 0; final int POSICAO_DATA_COM_ATIV_ENCERRAR = 2; final int POSICAO_DATA_PREV_ATIV_ENCERRAR = 3; final int POSICAO_DATA_PREV_ATIV_EMITIR = 4; final int POSICAO_ANO_MES_REF_COB_GRUP_CRON_MES = 5; final int POSICAO_ID_COB_ACAO_CRONOG = 6; final int POSICAO_ID_COB_GRUPO = 7; final int POSICAO_ID_COB_ACAO = 8; final int POSICAO_DATA_REA_ATIV_EMITIR = 9; // ------------------------- // // Registrar o in�cio do processamento da Unidade de // Processamento // do Batch // // ------------------------- idUnidadeIniciada = getControladorBatch().iniciarUnidadeProcessamentoBatch(idFuncionalidadeIniciada, UnidadeProcessamento.COB_ACAO_ATIV_CRONOG, ((Integer) dadosCobrancaAcaoAtividadeCronograma[POSICAO_ID_COB_ACAO_ATIV_CRON_EMITIR])); // cole��o com os cronogramas de cobran�a dos grupos de cobran�a e meses // de refer�ncia Usuario usuarioLogado = Usuario.USUARIO_BATCH; try { // colecaoCobrancaAtividadeAcaoCronogramaEncerrar = null; if (dadosCobrancaAcaoAtividadeCronograma != null) { Integer idCobrancaAcao = null; Date dataComandoAtividadeEncerrar = null; Date dataPrevistaAtividadeEncerrar = null; Integer idCobrancaAtividadeAcaoCronogramaEmitir = null; Integer anoMesReferenciaCobrancaGrupoCronogramaMes = null; Integer idCobrancaAcaoCronograma = null; Date dataRealizacaoAtividadeEmitir = null; Date dataRealizacaoAtividadeEncerrar = null; Integer idCobrancaGrupo = null; Date dataPrevistaAtividadeEmitir = null; if (dadosCobrancaAcaoAtividadeCronograma[POSICAO_ID_COB_ACAO] != null) { idCobrancaAcao = (Integer) dadosCobrancaAcaoAtividadeCronograma[POSICAO_ID_COB_ACAO]; } if (dadosCobrancaAcaoAtividadeCronograma[POSICAO_DATA_COM_ATIV_ENCERRAR] != null) { dataComandoAtividadeEncerrar = (Date) dadosCobrancaAcaoAtividadeCronograma[POSICAO_DATA_COM_ATIV_ENCERRAR]; } if (dadosCobrancaAcaoAtividadeCronograma[POSICAO_DATA_PREV_ATIV_ENCERRAR] != null) { dataPrevistaAtividadeEncerrar = (Date) dadosCobrancaAcaoAtividadeCronograma[POSICAO_DATA_PREV_ATIV_ENCERRAR]; } if (dadosCobrancaAcaoAtividadeCronograma[POSICAO_ID_COB_ACAO_ATIV_CRON_EMITIR] != null) { idCobrancaAtividadeAcaoCronogramaEmitir = (Integer) dadosCobrancaAcaoAtividadeCronograma[POSICAO_ID_COB_ACAO_ATIV_CRON_EMITIR]; } if (dadosCobrancaAcaoAtividadeCronograma[POSICAO_ANO_MES_REF_COB_GRUP_CRON_MES] != null) { anoMesReferenciaCobrancaGrupoCronogramaMes = (Integer) dadosCobrancaAcaoAtividadeCronograma[POSICAO_ANO_MES_REF_COB_GRUP_CRON_MES]; } if (dadosCobrancaAcaoAtividadeCronograma[POSICAO_ID_COB_ACAO_CRONOG] != null) { idCobrancaAcaoCronograma = (Integer) dadosCobrancaAcaoAtividadeCronograma[POSICAO_ID_COB_ACAO_CRONOG]; } if (dadosCobrancaAcaoAtividadeCronograma[POSICAO_DATA_REA_ATIV_EMITIR] != null) { dataRealizacaoAtividadeEmitir = (Date) dadosCobrancaAcaoAtividadeCronograma[POSICAO_DATA_REA_ATIV_EMITIR]; } if (dadosCobrancaAcaoAtividadeCronograma[POSICAO_ID_COB_GRUPO] != null) { idCobrancaGrupo = (Integer) dadosCobrancaAcaoAtividadeCronograma[POSICAO_ID_COB_GRUPO]; } if (dadosCobrancaAcaoAtividadeCronograma[POSICAO_DATA_PREV_ATIV_EMITIR] != null) { dataPrevistaAtividadeEmitir = (Date) dadosCobrancaAcaoAtividadeCronograma[POSICAO_DATA_PREV_ATIV_EMITIR]; } Collection colecaoCobrancaAcao = null; FiltroCobrancaAcao filtroCobrancaAcao = new FiltroCobrancaAcao(); filtroCobrancaAcao.adicionarParametro(new ParametroSimples(FiltroCobrancaAcao.ID, idCobrancaAcao)); filtroCobrancaAcao.adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAcao.DOCUMENTO_TIPO); filtroCobrancaAcao.adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAcao.SERVICO_TIPO); colecaoCobrancaAcao = this.getControladorUtil().pesquisar(filtroCobrancaAcao, CobrancaAcao.class.getName()); CobrancaAcao cobrancaAcao = (CobrancaAcao) Util.retonarObjetoDeColecao(colecaoCobrancaAcao); if (cobrancaAcao != null) { // Item 3.4 // verfica se o valor do documento tipo � // diferente de nulo if (cobrancaAcao.getDocumentoTipo() != null) { // caso a atividade da a��o de cobran�a // correspondente a // encerrar esteja comandada e a data // prescita para o // encerramento seja igual ou menor do // que a data // corrente if (dataComandoAtividadeEncerrar != null && (dataPrevistaAtividadeEncerrar != null && (dataPrevistaAtividadeEncerrar.compareTo(new Date()) <= 0))) { dataRealizacaoAtividadeEncerrar = new Date(); } // [SB0001] - Processar A��o com // Documentos de Cobran�a this.processarDocumentoCobrancaVersaoReduzida(idCobrancaAtividadeAcaoCronogramaEmitir, ConstantesSistema.NUMERO_NAO_INFORMADO, cobrancaAcao, usuarioLogado, dataRealizacaoAtividadeEncerrar, dataComandoAtividadeEncerrar, dataPrevistaAtividadeEncerrar); } else { // servico tipo // caso a atividade da a��o de cobran�a // correspondente a // encerrar esteja comandada e a data // prescita para o // encerramento seja igual ou menor do // que a data // corrente if (dataComandoAtividadeEncerrar != null && (dataPrevistaAtividadeEncerrar != null && (dataPrevistaAtividadeEncerrar.compareTo(new Date()) <= 0))) { dataRealizacaoAtividadeEncerrar = new Date(); } // Item 3.5 // [SB0006] - Processar A��o com Ordens // de // Servi�o this.processarAcaoOrdemServico(dataPrevistaAtividadeEncerrar, dataPrevistaAtividadeEmitir, dataComandoAtividadeEncerrar, dataRealizacaoAtividadeEmitir, usuarioLogado, anoMesReferenciaCobrancaGrupoCronogramaMes, idCobrancaAcaoCronograma, idCobrancaGrupo, cobrancaAcao, dataRealizacaoAtividadeEncerrar); } } // seta para null para o GC liberar colecaoCobrancaAcao = null; idCobrancaAcao = null; dataComandoAtividadeEncerrar = null; dataPrevistaAtividadeEncerrar = null; idCobrancaAtividadeAcaoCronogramaEmitir = null; anoMesReferenciaCobrancaGrupoCronogramaMes = null; idCobrancaAcaoCronograma = null; dataRealizacaoAtividadeEmitir = null; dataRealizacaoAtividadeEncerrar = null; idCobrancaGrupo = null; dataPrevistaAtividadeEmitir = null; } // se atender as duas condi��es anteriores 3.1 e 3.2 // if (primeiraCondicao && segundaCondicao) { // // Item 3.3 // // o sistema exclui o resumo das a��es de // // cobran�a correspondente ao cronograma de // a��o // // de // // cobran�a // // que esta sendo processado // this.repositorioCobranca // .deletarResumoCobrancaAcao(idCobrancaAcaoCronograma); // caso a a��o de cobran�a gere documento de // cobran�a(DOTP_ID da tabela COBRANCA_ACAO com // CBAC_ID da // tabela COBRANCA_ACAO_CRONOGRAMA com o valor // diferente de nulo // seta para null para o GC liberar // dadosCobrancaAcaoCronograma = null; // }// fim do while interno // } // seta null para o GC liberar // colecaoCobrancaAcaoCronograma = null; // seta para null para o GC liberar // dadosCobrancaGrupoCronogramaMes = null; // }// fim do while externo // } else { // // [FS0001] - Verificar Exist�ncia de Cronograma // sessionContext.setRollbackOnly(); // throw new ControladorException( // "atencao.nao.existe.dados.tabela.cronograma"); // } // // // seta null para GC liberar // colecaoCobrancaGrupoCronogramaMes = null; // // // -------------------------------------------------------- // // // // Registrar o fim da execu��o da Unidade de Processamento // // // // -------------------------------------------------------- // getControladorBatch().encerrarUnidadeProcessamentoBatch(null, idUnidadeIniciada, false); System.out.println("########## FINALIZADO EM = " + new Date()); } 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(); // sessionContext.setRollbackOnly(); getControladorBatch().encerrarUnidadeProcessamentoBatch(e, idUnidadeIniciada, true); throw new EJBException(e); } } /** * * Este caso de uso permite gerar o resumo das a��es de cobran�a com a * atividade emitir j� realizada e a atividade encerrar ainda n�o realizada * e realizar a atividade encerrar das a��es que estejam comandadas. * * [UC0478] Gerar Resumo das A��es de Cobran�a do Cronograma * * P�s-oncid��o: Resumo das a��es de cobran�a gerado e atividade encerrar da * a��o de cobran�a, se for o caso, realizada * * @author S�vio Luiz * @date 11/05/2007 * */ public void inserirResumoAcoesCobrancaCronograma(Object[] dadosCobrancaAcaoAtividadeCronograma, int idFuncionalidadeIniciada) throws ControladorException { int idUnidadeIniciada = 0; // posi��es do array com os dados que ser�o atualizados final int POSICAO_ID_COB_ACAO_ATIV_CRON_EMITIR = 0; final int POSICAO_ID_COB_ACAO_ATIV_CRON_ENCERRAR = 1; final int POSICAO_DATA_COM_ATIV_ENCERRAR = 2; final int POSICAO_DATA_PREV_ATIV_ENCERRAR = 3; final int POSICAO_DATA_PREV_ATIV_EMITIR = 4; final int POSICAO_ANO_MES_REF_COB_GRUP_CRON_MES = 5; final int POSICAO_ID_COB_ACAO_CRONOG = 6; final int POSICAO_ID_COB_GRUPO = 7; final int POSICAO_ID_COB_ACAO = 8; final int POSICAO_DATA_REA_ATIV_EMITIR = 9; // ------------------------- // // Registrar o in�cio do processamento da Unidade de // Processamento // do Batch // // ------------------------- idUnidadeIniciada = getControladorBatch().iniciarUnidadeProcessamentoBatch(idFuncionalidadeIniciada, UnidadeProcessamento.COB_ACAO_ATIV_CRONOG, ((Integer) dadosCobrancaAcaoAtividadeCronograma[POSICAO_ID_COB_ACAO_ATIV_CRON_EMITIR])); // cole��o com os cronogramas de cobran�a dos grupos de cobran�a e meses // de refer�ncia Usuario usuarioLogado = Usuario.USUARIO_BATCH; try { // -------------------------------------------------------- // // Registrar o fim da execu��o da Unidade de Processamento // // -------------------------------------------------------- if (dadosCobrancaAcaoAtividadeCronograma != null) { Integer idCobrancaAcao = null; Date dataComandoAtividadeEncerrar = null; Date dataPrevistaAtividadeEncerrar = null; Integer idCobrancaAtividadeAcaoCronogramaEmitir = null; Integer idCobrancaAtividadeAcaoCronogramaEncerrar = null; Integer anoMesReferenciaCobrancaGrupoCronogramaMes = null; Integer idCobrancaAcaoCronograma = null; Date dataRealizacaoAtividadeEmitir = null; Date dataRealizacaoAtividadeEncerrar = null; Integer idCobrancaGrupo = null; Date dataPrevistaAtividadeEmitir = null; if (dadosCobrancaAcaoAtividadeCronograma[POSICAO_ID_COB_ACAO] != null) { idCobrancaAcao = (Integer) dadosCobrancaAcaoAtividadeCronograma[POSICAO_ID_COB_ACAO]; } if (dadosCobrancaAcaoAtividadeCronograma[POSICAO_DATA_COM_ATIV_ENCERRAR] != null) { dataComandoAtividadeEncerrar = (Date) dadosCobrancaAcaoAtividadeCronograma[POSICAO_DATA_COM_ATIV_ENCERRAR]; } if (dadosCobrancaAcaoAtividadeCronograma[POSICAO_DATA_PREV_ATIV_ENCERRAR] != null) { dataPrevistaAtividadeEncerrar = (Date) dadosCobrancaAcaoAtividadeCronograma[POSICAO_DATA_PREV_ATIV_ENCERRAR]; } if (dadosCobrancaAcaoAtividadeCronograma[POSICAO_ID_COB_ACAO_ATIV_CRON_EMITIR] != null) { idCobrancaAtividadeAcaoCronogramaEmitir = (Integer) dadosCobrancaAcaoAtividadeCronograma[POSICAO_ID_COB_ACAO_ATIV_CRON_EMITIR]; } if (dadosCobrancaAcaoAtividadeCronograma[POSICAO_ID_COB_ACAO_ATIV_CRON_ENCERRAR] != null) { idCobrancaAtividadeAcaoCronogramaEncerrar = (Integer) dadosCobrancaAcaoAtividadeCronograma[POSICAO_ID_COB_ACAO_ATIV_CRON_ENCERRAR]; } if (dadosCobrancaAcaoAtividadeCronograma[POSICAO_ANO_MES_REF_COB_GRUP_CRON_MES] != null) { anoMesReferenciaCobrancaGrupoCronogramaMes = (Integer) dadosCobrancaAcaoAtividadeCronograma[POSICAO_ANO_MES_REF_COB_GRUP_CRON_MES]; } if (dadosCobrancaAcaoAtividadeCronograma[POSICAO_ID_COB_ACAO_CRONOG] != null) { idCobrancaAcaoCronograma = (Integer) dadosCobrancaAcaoAtividadeCronograma[POSICAO_ID_COB_ACAO_CRONOG]; } if (dadosCobrancaAcaoAtividadeCronograma[POSICAO_DATA_REA_ATIV_EMITIR] != null) { dataRealizacaoAtividadeEmitir = (Date) dadosCobrancaAcaoAtividadeCronograma[POSICAO_DATA_REA_ATIV_EMITIR]; } if (dadosCobrancaAcaoAtividadeCronograma[POSICAO_ID_COB_GRUPO] != null) { idCobrancaGrupo = (Integer) dadosCobrancaAcaoAtividadeCronograma[POSICAO_ID_COB_GRUPO]; } if (dadosCobrancaAcaoAtividadeCronograma[POSICAO_DATA_PREV_ATIV_EMITIR] != null) { dataPrevistaAtividadeEmitir = (Date) dadosCobrancaAcaoAtividadeCronograma[POSICAO_DATA_PREV_ATIV_EMITIR]; } Collection colecaoCobrancaAcao = null; FiltroCobrancaAcao filtroCobrancaAcao = new FiltroCobrancaAcao(); filtroCobrancaAcao.adicionarParametro(new ParametroSimples(FiltroCobrancaAcao.ID, idCobrancaAcao)); filtroCobrancaAcao.adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAcao.DOCUMENTO_TIPO); filtroCobrancaAcao.adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAcao.SERVICO_TIPO); colecaoCobrancaAcao = this.getControladorUtil().pesquisar(filtroCobrancaAcao, CobrancaAcao.class.getName()); CobrancaAcao cobrancaAcao = (CobrancaAcao) Util.retonarObjetoDeColecao(colecaoCobrancaAcao); if (cobrancaAcao != null) { this.repositorioCobranca.deletarResumoCobrancaAcao(idCobrancaAcaoCronograma); // Item 3.4 // verfica se o valor do documento tipo � // diferente de nulo if (cobrancaAcao.getDocumentoTipo() != null) { // caso a atividade da a��o de cobran�a // correspondente a // encerrar esteja comandada e a data // prescita para o // encerramento seja igual ou menor do // que a data // corrente if (dataComandoAtividadeEncerrar != null && (dataPrevistaAtividadeEncerrar != null && (dataPrevistaAtividadeEncerrar.compareTo(new Date()) <= 0))) { dataRealizacaoAtividadeEncerrar = new Date(); } // [SB0001] - Processar A��o com // Documentos de Cobran�a this.pesquisarDocumentosCobrancaParaGeracaoResumo(idCobrancaAtividadeAcaoCronogramaEmitir, dataPrevistaAtividadeEncerrar, idCobrancaAtividadeAcaoCronogramaEncerrar, anoMesReferenciaCobrancaGrupoCronogramaMes, idCobrancaAcaoCronograma, idCobrancaGrupo, idCobrancaAcao, dataRealizacaoAtividadeEmitir, dataRealizacaoAtividadeEncerrar); } else { // caso a atividade da a��o de cobran�a // correspondente a // encerrar esteja comandada e a data // prescita para o // encerramento seja igual ou menor do // que a data // corrente if (dataComandoAtividadeEncerrar != null && (dataPrevistaAtividadeEncerrar != null && (dataPrevistaAtividadeEncerrar.compareTo(new Date()) <= 0))) { dataRealizacaoAtividadeEncerrar = new Date(); } // Item 3.5 // [SB0006] - Processar A��o com Ordens // de // Servi�o this.processarAcaoOrdemServico(dataPrevistaAtividadeEncerrar, dataPrevistaAtividadeEmitir, dataComandoAtividadeEncerrar, dataRealizacaoAtividadeEmitir, usuarioLogado, anoMesReferenciaCobrancaGrupoCronogramaMes, idCobrancaAcaoCronograma, idCobrancaGrupo, cobrancaAcao, dataRealizacaoAtividadeEncerrar); } } // seta para null para o GC liberar colecaoCobrancaAcao = null; idCobrancaAcao = null; dataComandoAtividadeEncerrar = null; dataPrevistaAtividadeEncerrar = null; idCobrancaAtividadeAcaoCronogramaEmitir = null; idCobrancaAtividadeAcaoCronogramaEncerrar = null; anoMesReferenciaCobrancaGrupoCronogramaMes = null; idCobrancaAcaoCronograma = null; dataRealizacaoAtividadeEmitir = null; dataRealizacaoAtividadeEncerrar = null; idCobrancaGrupo = null; dataPrevistaAtividadeEmitir = null; } getControladorBatch().encerrarUnidadeProcessamentoBatch(null, idUnidadeIniciada, false); System.out.println("########## FINALIZADO EM = " + new Date()); } catch (Exception e) { // Este catch serve para interceptar qualquer exce��o que o processo // batch venha a lan�ar e garantir que a unidade de processamento do // batch ser� atualizada com o erro ocorrido e.printStackTrace(); getControladorBatch().encerrarUnidadeProcessamentoBatch(e, idUnidadeIniciada, true); throw new EJBException(e); } } public Collection gerarColecaoDocumentoCobrancaOrdemServico(CobrancaAcao cobrancaAcao, Date dataRealizacaoAtividadeEncerrar, Usuario usuarioLogado, Collection<DadosPesquisaCobrancaDocumentoHelper> colecaoCobrancaDocumentoParaAtualizar, Date dataPrevistaAtividadeEncerrar, Date dataComandoAtividadeEncerrar) throws ControladorException { // usado para salvar as COBRANCA_DOCUMENTO a cada 100 itens na cole��o // Collection colecaoCobrancaDocumentoParaAtualizar = new ArrayList(); try { Collection<Object[]> colecaoOrdemServico = null; // 2.1 Determinar a situa��o da a��o de cobran�a, de // acordo // com // a tabela COBRANCA_ACAO_SITUACAO // COBRANCA_DOCUMENTO com CBDO_ID igual a // idCobrancaDocumento // if (idCobrancaAtividadeAcaoCronogramaEmitir != // ConstantesSistema.NUMERO_NAO_INFORMADO){ // colecaoOrdemServico = this.repositorioCobranca // .pesquisarOrdemServico(idCobrancaAtividadeAcaoCronogramaEmitir, // ConstantesSistema.NUMERO_NAO_INFORMADO); // } else if (idCobrancaAtividadeAcaoComandoEmitir != // ConstantesSistema.NUMERO_NAO_INFORMADO){ // colecaoOrdemServico = this.repositorioCobranca // .pesquisarOrdemServico(ConstantesSistema.NUMERO_NAO_INFORMADO, // idCobrancaAtividadeAcaoComandoEmitir); // } Collection colecaoIdsOrdemServicoCanceladaPorDecurso = new ArrayList(); Collection colecaoIdsOrdemServicoSuspensa = new ArrayList(); Collection colecaoOSUnidade = new ArrayList(); OrdemServicoUnidade ordemServicoUnidade = null; OrdemServico os = null; AtendimentoRelacaoTipo atendimentoRelacaoTipo = null; // [SB0002] - Determinar Situa��o da A��o de Cobran�a // caso exista ordem servi�o para a cobranca documento if (colecaoCobrancaDocumentoParaAtualizar != null && !colecaoCobrancaDocumentoParaAtualizar.isEmpty()) { Integer idOrdemServico = null; short situacaoOrdemServico = -1; Date dataFiscalizacaoSituacao = null; Integer idFiscalizacao = null; Integer idLocalidade = null; Integer idMotivoEncerramento = null; Iterator iterColecaoCobrancaDocumento = colecaoCobrancaDocumentoParaAtualizar.iterator(); while (iterColecaoCobrancaDocumento.hasNext()) { // dados para atualizar o cobranca documento DadosPesquisaCobrancaDocumentoHelper cobrancaDocumentoAtualizar = (DadosPesquisaCobrancaDocumentoHelper) iterColecaoCobrancaDocumento .next(); // caso o servi�o tipo da a��o de cobran�a esteja // diferente de nulo,neste caso existe ordem de servi�o // para a cobran�a documento // 1. Caso exista ordem de servi�o [SB0003 � Determinar // Situa��o da Ordem de Servi�o]. if (cobrancaAcao.getServicoTipo() != null) { colecaoOrdemServico = this.repositorioCobranca.pesquisarOrdemServico(cobrancaDocumentoAtualizar.getIdDocumento()); Object[] dadosOS = (Object[]) Util.retonarObjetoDeColecao(colecaoOrdemServico); if (dadosOS != null) { if (dadosOS[0] != null) { idOrdemServico = (Integer) dadosOS[0]; // CRC4529 - adicionado por Vivianne Sousa - // 31/08/2010 - analista: Fatima Sampaio OrdemServicoFiscSit ordemServicoFiscSit = getControladorOrdemServico() .recuperaOrdemServicoFiscSitComMenorDataFiscalizacao(idOrdemServico); if (ordemServicoFiscSit != null) { idFiscalizacao = ordemServicoFiscSit.getFiscalizacaoSituacao().getId(); dataFiscalizacaoSituacao = ordemServicoFiscSit.getDataFiscalizacaoSituacao(); } else { idFiscalizacao = null; dataFiscalizacaoSituacao = null; } } else { idFiscalizacao = null; dataFiscalizacaoSituacao = null; } if (dadosOS[1] != null) { situacaoOrdemServico = (Short) dadosOS[1]; } // if (dadosOS[2] != null) { // dataFiscalizacaoSituacao = (Date) dadosOS[2]; // } // CRC4529 - comentado por Vivianne Sousa - // 26/08/2010 - F�tima Sampaio // if (dadosOS[7] != null) { // idFiscalizacao = (Integer) dadosOS[7]; // } if (dadosOS[10] != null) { idLocalidade = (Integer) dadosOS[10]; } if (dadosOS[13] != null) { idMotivoEncerramento = (Integer) dadosOS[13]; } // CRC4529 - comentado por Vivianne Sousa - // 26/08/2010 - F�tima Sampaio // if (idFiscalizacao != null) { // cobrancaDocumentoAtualizar.setIdFiscalizacao(idFiscalizacao); // } if (idOrdemServico != null) { cobrancaDocumentoAtualizar.setIdOrdemServico(idOrdemServico); } if (idLocalidade != null) { cobrancaDocumentoAtualizar.setIdLocalidade(idLocalidade); } if (cobrancaDocumentoAtualizar.getIdSituacaoAcao() != null && (cobrancaDocumentoAtualizar.getIdSituacaoAcao().intValue() == CobrancaAcaoSituacao.SUSPENSA_POR_PAG_PARC_CANC .intValue() || cobrancaDocumentoAtualizar.getIdSituacaoAcao().intValue() == CobrancaAcaoSituacao.SUSPENSA_POR_PAG_PARC_CANC_APOS .intValue() || cobrancaDocumentoAtualizar.getIdSituacaoAcao().intValue() == CobrancaAcaoSituacao.SUSPENSA_POR_PAG_PARC_CANC_ATE .intValue())) { idMotivoEncerramento = new Integer(AtendimentoMotivoEncerramento.SUSPENSA_PAG_PARC_CANC_DO_DEBITO); } if (idFiscalizacao != null) { // atribuir o valor A��O FISCALIZADA cobrancaDocumentoAtualizar.setIdSituacaoAcao(CobrancaAcaoSituacao.FISCALIZADA); cobrancaDocumentoAtualizar.setDataSituacaoAcao(dataFiscalizacaoSituacao); } // a ordem se servi�o n�o esteja encerrada if (situacaoOrdemServico != OrdemServico.SITUACAO_ENCERRADO.shortValue()) { // caso a atividade da a��o de cobran�a // correspondente a // encerrar esteja comanda e a data presvista // para o // encerramento seja igual ou menor do que a // data corrente if (dataRealizacaoAtividadeEncerrar != null) { UnidadeOrganizacional unidadeOrganizacional = getControladorUnidade() .pesquisarUnidadeOrganizacionalLocalidade(idLocalidade); // seta os dados na osUnidade para ser // inserido na cole��o ordemServicoUnidade = new OrdemServicoUnidade(); os = new OrdemServico(); atendimentoRelacaoTipo = new AtendimentoRelacaoTipo(); ordemServicoUnidade.setUnidadeOrganizacional(unidadeOrganizacional); os.setId(idOrdemServico); ordemServicoUnidade.setOrdemServico(os); // seta o usu�rio na ordem servi�o unidade ordemServicoUnidade.setUsuario(usuarioLogado); // seta o id do atendimento rela��o tipo atendimentoRelacaoTipo.setId(AtendimentoRelacaoTipo.ENCERRAR); ordemServicoUnidade.setAtendimentoRelacaoTipo(atendimentoRelacaoTipo); // seta a ultima altera��o com a data atual ordemServicoUnidade.setUltimaAlteracao(new Date()); colecaoOSUnidade.add(ordemServicoUnidade); // seta para null os dados para serem // coletados pelo GC ordemServicoUnidade = null; os = null; atendimentoRelacaoTipo = null; if (cobrancaDocumentoAtualizar.getIdSituacaoAcao() == null || cobrancaDocumentoAtualizar.getIdSituacaoAcao().intValue() == CobrancaAcaoSituacao.PENDENTE) { // Atibuir o valor A��O CANCELADA POR // DECURSO DE PRAZO cobrancaDocumentoAtualizar.setIdSituacaoAcao(CobrancaAcaoSituacao.CANCELADA_PRAZO); cobrancaDocumentoAtualizar.setDataSituacaoAcao(new Date()); idMotivoEncerramento = new Integer(AtendimentoMotivoEncerramento.CANCELADO_POR_DERCURSO_DE_PRAZO); colecaoIdsOrdemServicoCanceladaPorDecurso.add(idOrdemServico); } } if (idMotivoEncerramento != null && idMotivoEncerramento.shortValue() == AtendimentoMotivoEncerramento.SUSPENSA_PAG_PARC_CANC_DO_DEBITO) { colecaoIdsOrdemServicoSuspensa.add(idOrdemServico); } cobrancaDocumentoAtualizar.setIdMotivoEncerramento(idMotivoEncerramento); // } else { // if(idMotivoEncerramento.intValue() != // AtendimentoMotivoEncerramento.SUSPENSA_PAG_PARC_CANC_DO_DEBITO){ // if (idFiscalizacao != null // && !idFiscalizacao.equals("")) { // cobrancaDocumentoAtualizar.setIdSituacaoAcao(CobrancaAcaoSituacao.FISCALIZADA); // cobrancaDocumentoAtualizar.setDataSituacaoAcao(dataFiscalizacaoSituacao); // } else { // if (icExecucao.shortValue() == // ConstantesSistema.SIM.shortValue()){ // cobrancaDocumentoAtualizar.setIdSituacaoAcao(CobrancaAcaoSituacao.EXECUTADA); // } else{ // cobrancaDocumentoAtualizar.setIdSituacaoAcao(CobrancaAcaoSituacao.CANCELADA); // } // cobrancaDocumentoAtualizar.setDataSituacaoAcao(dataEncerramento); // } // cobrancaDocumentoAtualizar.setIdMotivoEncerramento(idMotivoEncerramento); // } } // atualiza os campos para serem utilizados para // atualiza��o // e consulta de dados da cobran�a documento // cobrancaDocumentoAtualizar.setIdImovel(idImovel); // cobrancaDocumentoAtualizar.setIdDocumento(idDocumento); // cobrancaDocumentoAtualizar.setValorDocumento(valorDocumento); // cobrancaDocumentoAtualizar.setIdCobrancaCriterio(idCriterioCobranca); // cobrancaDocumentoAtualizar.setDataEmissao(dataEmissaoDocumento); // colecaoCobrancaDocumentoParaAtualizar // .add(cobrancaDocumentoAtualizar); // CRC4529 - adicionado por Vivianne Sousa - // 26/08/2010 - F�tima Sampaio if (idOrdemServico != null) { Collection colecaoOrdemServicoFiscSit = getControladorOrdemServico().recuperaOrdemServicoFiscSit( idOrdemServico); if (colecaoOrdemServicoFiscSit != null && !colecaoOrdemServicoFiscSit.isEmpty()) { CobrancaDocumento cobrancaDocumento = new CobrancaDocumento(); cobrancaDocumento.setId(cobrancaDocumentoAtualizar.getIdDocumento()); Iterator iteratorOrdemServicoFiscSit = colecaoOrdemServicoFiscSit.iterator(); while (iteratorOrdemServicoFiscSit.hasNext()) { OrdemServicoFiscSit ordemServicoFiscSit = (OrdemServicoFiscSit) iteratorOrdemServicoFiscSit.next(); boolean existeCobrancaDocumentoFisc = existeCobrancaDocumentoFisc(ordemServicoFiscSit .getFiscalizacaoSituacao().getId(), idOrdemServico, cobrancaDocumentoAtualizar.getIdDocumento()); if (!existeCobrancaDocumentoFisc) { CobrancaDocumentoFisc cobrancaDocumentoFisc = new CobrancaDocumentoFisc(); cobrancaDocumentoFisc.setFiscalizacaoSituacao(ordemServicoFiscSit.getFiscalizacaoSituacao()); cobrancaDocumentoFisc.setOrdemServico(ordemServicoFiscSit.getOrdemServico()); cobrancaDocumentoFisc.setUltimaAlteracao(new Date()); cobrancaDocumentoFisc.setCobrancaDocumento(cobrancaDocumento); getControladorUtil().inserir(cobrancaDocumentoFisc); } } } } // limpa os campos idOrdemServico = null; situacaoOrdemServico = -1; dataFiscalizacaoSituacao = null; idFiscalizacao = null; idMotivoEncerramento = null; idLocalidade = null; } } else { /* * 2. Caso contr�rio: 2.1. Caso a atividade da a��o de * cobran�a correspondente a encerrar esteja comandada, * a data prevista para o encerramento seja igual ou * menor do que a data corrente (CAAC_TMCOMANDO seja * diferente de nulo e CAAC_DTPREVISTA da tabela * COBRANCA_ACAO_ATIVIDADE_CRONOG correspondente � * atividade encerrar seja menor ou igual � data * corrente), atribuir o valor �cancelada por prazo� * (CAST_ID = 4 da tabela COBRANCA.COBRANCA_DOCUMENTO), * � situa��o da a��o de cobran�a e a data corrente � * data da situa��o da a��o de cobran�a; */ if (dataComandoAtividadeEncerrar != null && dataPrevistaAtividadeEncerrar != null && dataPrevistaAtividadeEncerrar.compareTo(new Date()) <= 0) { cobrancaDocumentoAtualizar.setIdSituacaoAcao(CobrancaAcaoSituacao.CANCELADA_PRAZO); cobrancaDocumentoAtualizar.setDataSituacaoAcao(new Date()); } else { /* * 2.2. Caso contr�rio atribuir o valor �enviados� * (CAST_ID = 6 da tabela * COBRANCA.COBRANCA_DOCUMENTO), � situa��o da a��o * de cobran�a e a data de emiss�o do documento de * cobran�a (extrair a data do CBDO_TMEMISSAO) � * data da situa��o da a��o de cobran�a; */ cobrancaDocumentoAtualizar.setIdSituacaoAcao(CobrancaAcaoSituacao.ENVIADOS); cobrancaDocumentoAtualizar.setDataSituacaoAcao(cobrancaDocumentoAtualizar.getDataEmissao()); } } } // atualiza as ordem de servi�os if (colecaoIdsOrdemServicoCanceladaPorDecurso != null && !colecaoIdsOrdemServicoCanceladaPorDecurso.isEmpty()) { repositorioCobranca.atualizarParmsOS(colecaoIdsOrdemServicoCanceladaPorDecurso, (int) AtendimentoMotivoEncerramento.CANCELADO_POR_DERCURSO_DE_PRAZO); // limpa a cole��o para ser coletado pelo GC colecaoIdsOrdemServicoCanceladaPorDecurso.clear(); colecaoIdsOrdemServicoCanceladaPorDecurso = null; } if (colecaoIdsOrdemServicoSuspensa != null && !colecaoIdsOrdemServicoSuspensa.isEmpty()) { repositorioCobranca.atualizarParmsOS(colecaoIdsOrdemServicoSuspensa, (int) AtendimentoMotivoEncerramento.SUSPENSA_PAG_PARC_CANC_DO_DEBITO); // limpa a cole��o para ser coletado pelo GC colecaoIdsOrdemServicoSuspensa.clear(); colecaoIdsOrdemServicoSuspensa = null; } if (colecaoOSUnidade != null && !colecaoOSUnidade.isEmpty()) { getControladorBatch().inserirColecaoObjetoParaBatch(colecaoOSUnidade); colecaoOSUnidade.clear(); colecaoOSUnidade = null; } } } catch (Exception ex) { ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } return colecaoCobrancaDocumentoParaAtualizar; } /** * * Este caso de uso permite gerar o resumo das a��es de cobran�a com a * atividade emitir j� realizada e a atividade encerrar ainda n�o realizada * e realizar a atividade encerrar das a��es que estejam comandadas. * * [UC0478] Gerar Resumo das A��es de Cobran�a do Cronograma * * [SB0001] - Processar Documento de Cobran�a * * @author S�vio Luiz, Ivan Sergio * @date 11/05/2007, 23/12/2010 * */ public void pesquisarDocumentosCobrancaParaGeracaoResumo(int idCobrancaAtividadeAcaoCronogramaEmitir, Date dataPrevistaAtividadeEncerrar, Integer idCobrancaAtividadeAcaoCronogramaEncerrar, int anoMesReferenciaCobrancaGrupoCronogramaMes, int idCobrancaAcaoCronograma, int idCobrancaGrupo, int idCobrancaAcao, Date dataRealizacaoAtividadeEmitir, Date dataRealizacaoAtividadeEncerrar) throws ControladorException { // parte da pagina��o // int indice = 0; // boolean flagTerminou = false; // colecao com os documentos de cobran�a gerados na atividade EMITIR da // a��o de cobran�a Collection colecaoDadosCobrancaDocumentos = null; Collection colecaoResumoCobrancaAcao = new ArrayList(); int indicadorDefinitivo = 0; try { if (dataRealizacaoAtividadeEncerrar != null) { // Item 1 // COBRANCA_DOCUMENTO com CAAC_ID igual a // idCobrancaAtividadeAcaoCronogramaEmitir colecaoDadosCobrancaDocumentos = this .pesquisarDadosCobrancaDocumentoAgrupadoPorDataComando(idCobrancaAtividadeAcaoCronogramaEmitir); indicadorDefinitivo = 1; } else { colecaoDadosCobrancaDocumentos = this .pesquisarDadosCobrancaDocumentoAgrupadoPorDataPrevista(idCobrancaAtividadeAcaoCronogramaEmitir); indicadorDefinitivo = 2; } // para cada documento de cobran�a if (colecaoDadosCobrancaDocumentos != null && !colecaoDadosCobrancaDocumentos.isEmpty()) { // if (colecaoDadosCobrancaDocumentos.size() < 500) { // flagTerminou = true; // } else { // indice = indice + 500; // } Iterator iteratorColecaoCobrancaDocumentos = colecaoDadosCobrancaDocumentos.iterator(); while (iteratorColecaoCobrancaDocumentos.hasNext()) { DadosCobrancaDocumentoHelper dadosCobrancaDocumentoHelper = (DadosCobrancaDocumentoHelper) iteratorColecaoCobrancaDocumentos .next(); // verifica se exista a data de realiza��o da atividade // de encerrar se // existir ent�o recupera ela para ser comparada,sen�o // recupera a data // prevista da atividade de encerrar Date dataAtividadeEncerrar = null; if (dataRealizacaoAtividadeEncerrar != null) { dataAtividadeEncerrar = dataRealizacaoAtividadeEncerrar; } else { dataAtividadeEncerrar = dataPrevistaAtividadeEncerrar; } // id do Cobranca Documento Integer idCobrancaCriterio = null; if (dadosCobrancaDocumentoHelper.getIdCobrancaCriterio() != null) { idCobrancaCriterio = dadosCobrancaDocumentoHelper.getIdCobrancaCriterio(); } Integer idFiscalizacao = null; if (dadosCobrancaDocumentoHelper.getIdFiscalizacao() != null) { idFiscalizacao = dadosCobrancaDocumentoHelper.getIdFiscalizacao(); } Categoria categoria = null; if (dadosCobrancaDocumentoHelper.getIdCategoria() != null) { categoria = new Categoria(); categoria.setId(dadosCobrancaDocumentoHelper.getIdCategoria()); } Empresa empresa = null; if (dadosCobrancaDocumentoHelper.getIdEmpresa() != null) { empresa = new Empresa(); empresa.setId(dadosCobrancaDocumentoHelper.getIdEmpresa()); } DocumentoEmissaoForma documentoEmissaoForma = null; if (dadosCobrancaDocumentoHelper.getIdDocumentoEmissaoForma() != null) { documentoEmissaoForma = new DocumentoEmissaoForma(); documentoEmissaoForma.setId(dadosCobrancaDocumentoHelper.getIdDocumentoEmissaoForma()); } // ************************************************* // RM3323 // Autor: Ivan Sergio // Data: 23/12/2010 // Alteracao para gerar consulta de tipo de corte; // ************************************************* CorteTipo corteTipo = null; if (dadosCobrancaDocumentoHelper.getIdCorteTipo() != null) { corteTipo = new CorteTipo(); corteTipo.setId(dadosCobrancaDocumentoHelper.getIdCorteTipo()); } // ************************************************* // cria o ResumoCobrancaAcao ResumoCobrancaAcao resumoCobrancaAcao = this.criarResumoCobrancaAcao(anoMesReferenciaCobrancaGrupoCronogramaMes, idCobrancaAcaoCronograma, dataRealizacaoAtividadeEmitir, dataAtividadeEncerrar, idCobrancaGrupo, categoria, idCobrancaAcao, dadosCobrancaDocumentoHelper.getIdCobrancaAcaoSituacao(), dadosCobrancaDocumentoHelper.getIdSituacaoDebito(), idFiscalizacao, 1, dadosCobrancaDocumentoHelper.getIndicadorAcimaAbaixo(), dadosCobrancaDocumentoHelper.getIndicadorAcimaLimite(), dadosCobrancaDocumentoHelper.getValorDocumentos(), idCobrancaCriterio, dadosCobrancaDocumentoHelper.getIdGerenciaRegional(), dadosCobrancaDocumentoHelper.getIdLocalidade(), dadosCobrancaDocumentoHelper.getIdSetorComercial(), dadosCobrancaDocumentoHelper.getIdRota(), dadosCobrancaDocumentoHelper.getCodigoSetorComercial(), dadosCobrancaDocumentoHelper.getIdQuadra(), dadosCobrancaDocumentoHelper.getNumeroQuadra(), dadosCobrancaDocumentoHelper.getIdImovelPerfil(), dadosCobrancaDocumentoHelper.getIdSituacaoLigacaoAgua(), dadosCobrancaDocumentoHelper.getIdSituacaoLigacaoEsgoto(), dadosCobrancaDocumentoHelper.getIdEsferaPoder(), dadosCobrancaDocumentoHelper.getQuantidadeDocumentos(), empresa, indicadorDefinitivo, dadosCobrancaDocumentoHelper.getIdAtendimentoMotivoEncerramento(), dadosCobrancaDocumentoHelper.getIdUnidadeNegocio(), documentoEmissaoForma); // ************************************************* // RM3323 // Autor: Ivan Sergio // Data: 23/12/2010 // Alteracao para gerar consulta de tipo de corte; // ************************************************* resumoCobrancaAcao.setCorteTipo(corteTipo); // ************************************************* // adciona na cole��o colecaoResumoCobrancaAcao.add(resumoCobrancaAcao); } colecaoDadosCobrancaDocumentos.clear(); } // } else { // flagTerminou = true; // } // seta nulo para o Garbage Collector limpar colecaoDadosCobrancaDocumentos = null; // 2.5 gravar os dados na tabela RESUMO_COBRANCA_ACAO if (!colecaoResumoCobrancaAcao.isEmpty()) { getControladorBatch().inserirColecaoObjetoParaBatch(colecaoResumoCobrancaAcao); } // 2.6 // caso a atividade da a��o de cobran�a correspondente a // encerrar esteja comandada e a data prescita para o // encerramento seja igual ou menor do que a data // corrente if (dataRealizacaoAtividadeEncerrar != null && idCobrancaAtividadeAcaoCronogramaEncerrar != null) { // atualiza a data e hora da realiza��o da atividade // encerrar a��o de cobran�a // grava no banco as // COBRANCA_ACAO_ATIVADADE_CRONOGRAMA repositorioCobranca.atualizarCobrancaAcaoAtividadeCronograma(idCobrancaAtividadeAcaoCronogramaEncerrar); } } catch (ErroRepositorioException ex) { ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } } /** * * Este caso de uso permite gerar o resumo das a��es de cobran�a com a * atividade emitir j� realizada e a atividade encerrar ainda n�o realizada * e realizar a atividade encerrar das a��es que estejam comandadas. * * [UC0478] Gerar Resumo das A��es de Cobran�a do Cronograma * * [SB0004] - Atualizar Item do Documento de Cobran�a * * Acumula a quantidade e o valor do item, na situia�o de d�bito * correspondente Armazena a data da situa��o do d�bito do imte do documento * de cobran�a refrente a situa��o do d�bito do item do documento de * cobran�a * * @author Rafael Santos * @date 18/10/2006 * */ public void atualizarItemDocumentoCobranca(int idSituacaoDebito, BigDecimal valorItemCobrado, Date dataSituacaoDebito, Collection<GerarResumoAcoesCobrancaCronogramaHelper> colecaoGerarResumoAcoesCobrancaCronogramaHelper) { if (colecaoGerarResumoAcoesCobrancaCronogramaHelper != null && !colecaoGerarResumoAcoesCobrancaCronogramaHelper.isEmpty()) { // se a cole��o n�o estiver vazia, procura por uma ocorrencia o id // da Situa��o do D�bito para acumular, se n�o existir adiciona Iterator iteratorcolecaoGerarResumoAcoesCobrancaCronogramaHelper = colecaoGerarResumoAcoesCobrancaCronogramaHelper.iterator(); // guarda a informa��o para saber se existe ou n�o o debito na // cole��o boolean naoExisteSituacaoDebito = true; // variavel para parar o loop da cole��o boolean achou = true; // posi��o para aculumar situa��o do debito // int indicePosicaoParaAcumular = -1; // indice corrente do item na cole��o // int indice = 0; // objeto que ira receber o resumo para ser substituido GerarResumoAcoesCobrancaCronogramaHelper gerarResumoAcoesCobrancaCronogramaHelper = null; while (iteratorcolecaoGerarResumoAcoesCobrancaCronogramaHelper.hasNext() && achou) { gerarResumoAcoesCobrancaCronogramaHelper = (GerarResumoAcoesCobrancaCronogramaHelper) iteratorcolecaoGerarResumoAcoesCobrancaCronogramaHelper .next(); // verifica se existe na cole��o if (gerarResumoAcoesCobrancaCronogramaHelper.getIdSituacaoDebito() == idSituacaoDebito) { achou = false;// para a loop da cole��o // indicePosicaoParaAcumular = indice;//guarda o indice da // cole��o a qual esta o registro para ser substituido naoExisteSituacaoDebito = false;// guarda a informa��o de // que existe a situa��o de // debito na cole��o } } // se n�o existi a situa��o de debito na cole��o adiciona if (naoExisteSituacaoDebito) { gerarResumoAcoesCobrancaCronogramaHelper = new GerarResumoAcoesCobrancaCronogramaHelper(); // cria o objeto gerarResumoAcoesCobrancaCronogramaHelper.setIdSituacaoDebito(idSituacaoDebito); gerarResumoAcoesCobrancaCronogramaHelper.setQuantidadeOcorrenciaSituacaoDebito(1); gerarResumoAcoesCobrancaCronogramaHelper.setValorItemCobrado(valorItemCobrado); gerarResumoAcoesCobrancaCronogramaHelper.setDataSituacaoDebito(dataSituacaoDebito); // adciona na cole��o colecaoGerarResumoAcoesCobrancaCronogramaHelper.add(gerarResumoAcoesCobrancaCronogramaHelper); } else { // existe situa��o de debito na cole��o // acumula a quantidade de ocorrencia da situa��o de debito gerarResumoAcoesCobrancaCronogramaHelper.setQuantidadeOcorrenciaSituacaoDebito(gerarResumoAcoesCobrancaCronogramaHelper .getQuantidadeOcorrenciaSituacaoDebito() + 1); // acumula o valor do item cobrado gerarResumoAcoesCobrancaCronogramaHelper.setValorItemCobrado(gerarResumoAcoesCobrancaCronogramaHelper.getValorItemCobrado() .add(valorItemCobrado)); // armazena a data da situa��o de debito // caso ela for nula, armazena a data if (gerarResumoAcoesCobrancaCronogramaHelper.getDataSituacaoDebito() == null) { gerarResumoAcoesCobrancaCronogramaHelper.setDataSituacaoDebito(dataSituacaoDebito); } else { Date datagerarResumoAcoesCobrancaCronogramaHelper = gerarResumoAcoesCobrancaCronogramaHelper.getDataSituacaoDebito(); // se a data que esta, for maior que a data recebido, a nova // data ser a dataSituacaoDebito if (dataSituacaoDebito != null && datagerarResumoAcoesCobrancaCronogramaHelper.compareTo(dataSituacaoDebito) > 0) { gerarResumoAcoesCobrancaCronogramaHelper.setDataSituacaoDebito(dataSituacaoDebito); } } } } else { GerarResumoAcoesCobrancaCronogramaHelper gerarResumoAcoesCobrancaCronogramaHelper = new GerarResumoAcoesCobrancaCronogramaHelper(); // cria o objeto gerarResumoAcoesCobrancaCronogramaHelper.setIdSituacaoDebito(idSituacaoDebito); gerarResumoAcoesCobrancaCronogramaHelper.setQuantidadeOcorrenciaSituacaoDebito(1); gerarResumoAcoesCobrancaCronogramaHelper.setValorItemCobrado(valorItemCobrado); gerarResumoAcoesCobrancaCronogramaHelper.setDataSituacaoDebito(dataSituacaoDebito); // adciona na cole��o colecaoGerarResumoAcoesCobrancaCronogramaHelper.add(gerarResumoAcoesCobrancaCronogramaHelper); } } /** * * Este caso de uso permite gerar o resumo das a��es de cobran�a com a * atividade emitir j� realizada e a atividade encerrar ainda n�o realizada * e realizar a atividade encerrar das a��es que estejam comandadas. * * [UC0478] Gerar Resumo das A��es de Cobran�a do Cronograma * * [SB0001] - Processar Documentos de Cobran�a * * Pesquisa o Imovel para ser usado para acumular valores no * RESUMO_COBRANCA_ACAO * * @author Rafael Santos * @date 23/10/2006 * */ public Imovel pesquisarDadosImovel(int idImovel) throws ControladorException { Imovel imovel = new Imovel(); Collection imoveis; // Pesquisa imovel try { // IMOV_ID de IMOVEL igual a idImovel imoveis = repositorioCobranca.pesquisarDadosImovel(idImovel); } catch (ErroRepositorioException ex) { sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", ex); } // Verifica se imovel if (imoveis != null && !imoveis.isEmpty()) { Iterator iteratorImoveis = imoveis.iterator(); while (iteratorImoveis.hasNext()) { Object[] arrayImovel = (Object[]) iteratorImoveis.next(); // id do imovel imovel.setId(idImovel); // ligacaoAguaSituacao.id if (arrayImovel[0] != null) { LigacaoAguaSituacao ligacaoAguaSituacao = new LigacaoAguaSituacao(); ligacaoAguaSituacao.setId((Integer) arrayImovel[0]); imovel.setLigacaoAguaSituacao(ligacaoAguaSituacao); ligacaoAguaSituacao = null; } // ligacaoEsgotoSituacao.id if (arrayImovel[1] != null) { LigacaoEsgotoSituacao ligacaoEsgotoSituacao = new LigacaoEsgotoSituacao(); ligacaoEsgotoSituacao.setId((Integer) arrayImovel[1]); imovel.setLigacaoEsgotoSituacao(ligacaoEsgotoSituacao); ligacaoEsgotoSituacao = null; } // localidade.id Localidade localidade = null; if (arrayImovel[2] != null) { localidade = new Localidade(); localidade.setId((Integer) arrayImovel[2]); imovel.setLocalidade(localidade); } Quadra quadra = null; // quadra.id if (arrayImovel[3] != null) { quadra = new Quadra(); quadra.setId((Integer) arrayImovel[3]); imovel.setQuadra(quadra); } // quadra.numeroQuadra if (arrayImovel[4] != null) { if (quadra == null) { quadra = new Quadra(); } quadra.setNumeroQuadra(((Integer) arrayImovel[4]).intValue()); imovel.setQuadra(quadra); } SetorComercial setorComercial = null; // setorComercial.id if (arrayImovel[5] != null) { setorComercial = new SetorComercial(); setorComercial.setId(((Integer) arrayImovel[5]).intValue()); imovel.setSetorComercial(setorComercial); } // setorComercial.codigo if (arrayImovel[6] != null) { if (setorComercial == null) { setorComercial = new SetorComercial(); } setorComercial.setCodigo(((Integer) arrayImovel[6]).intValue()); imovel.setSetorComercial(setorComercial); } setorComercial = null; // localidade.gerenciaRegional.iid if (arrayImovel[7] != null) { if (localidade == null) { localidade = new Localidade(); } GerenciaRegional gerenciaRegional = new GerenciaRegional(); gerenciaRegional.setId((Integer) arrayImovel[7]); localidade.setGerenciaRegional(gerenciaRegional); imovel.setLocalidade(localidade); } localidade = null; // quadra.rota.id if (arrayImovel[8] != null) { if (quadra == null) { quadra = new Quadra(); } Rota rota = new Rota(); rota.setId((Integer) arrayImovel[8]); quadra.setRota(rota); imovel.setQuadra(quadra); } quadra = null; // imovelPerfil.id if (arrayImovel[9] != null) { ImovelPerfil imovelPerfil = new ImovelPerfil(); imovelPerfil.setId((Integer) arrayImovel[9]); imovel.setImovelPerfil(imovelPerfil); imovelPerfil = null; } // esfera do poder if (arrayImovel[10] != null) { HashSet clientes = new HashSet(); EsferaPoder esferaPoder = new EsferaPoder(); esferaPoder.setId((Integer) arrayImovel[10]); ClienteTipo clienteTipo = new ClienteTipo(); clienteTipo.setEsferaPoder(esferaPoder); Cliente cliente = new Cliente(); cliente.setClienteTipo(clienteTipo); clientes.add(cliente); imovel.setClienteImoveis(clientes); clientes = null; esferaPoder = null; clienteTipo = null; clienteTipo = null; } } } return imovel; } /** * * Este caso de uso permite gerar o resumo das a��es de cobran�a com a * atividade emitir j� realizada e a atividade encerrar ainda n�o realizada * e realizar a atividade encerrar das a��es que estejam comandadas. * * [UC0478] Gerar Resumo das A��es de Cobran�a do Cronograma * * [SB0001] - Processar Documentos de Cobran�a * * Acumular ou insere na coel��o de RESUMO_COBRANCA_ACAO * * @author Rafael Santos * @date 24/10/2006 * */ // public Collection<ResumoCobrancaAcao> acumularResumoCobrancaAcao( // Collection colecaoResumoCobrancaAcao, // int anoMesReferenciaCobrancaGrupoCronogramaMes, // int idCobrancaAcaoCronograma, Date dataRealizacaoAtividadeEmitir, // Date dataPrevistaAtividadeEncerrar, int idCobrancaGrupo, // Imovel imovel, Categoria categoria, int idCobrancaAcao, // Integer idSituacaoAcao, Integer idSituacaoPredominanteDebito, // Integer idFiscalizacao, int indicadorCronogramaComando, // Date dataSituacaoAcao, Date dataSituacaoDebito, // BigDecimal valorDocumento, BigDecimal valorLimitePrioridade, // Integer idCobrancaCriterio, Date dataRealizacaoAtividadeEncerrar) { // // // retira a hora das datas // if (dataSituacaoAcao != null && dataSituacaoDebito != null) { // dataSituacaoAcao = Util.formatarDataSemHora(dataSituacaoAcao); // dataSituacaoDebito = Util.formatarDataSemHora(dataSituacaoDebito); // } // // // verifica se exista a data de realiza��o da atividade de encerrar se // // existir ent�o recupera ela para ser comparada,sen�o recupera a data // // prevista da atividade de encerrar // Date dataAtividadeEncerrar = null; // if (dataRealizacaoAtividadeEncerrar != null) { // dataAtividadeEncerrar = dataRealizacaoAtividadeEncerrar; // } else { // dataAtividadeEncerrar = dataPrevistaAtividadeEncerrar; // } // // // ALterado por S�vio Luiz data:27/03/2007 // // SimpleDateFormat formato = new SimpleDateFormat("dd/MM/yyyy"); // // // // try { // // dataSituacaoAcao = formato.parse("" + dataSituacaoAcao); // // } catch (java.text.ParseException e) { // // dataSituacaoAcao = null; // // } // // if (colecaoResumoCobrancaAcao != null // && !colecaoResumoCobrancaAcao.isEmpty()) { // // se a cole��o n�o estiver vazia, procura por uma ocorrencia do // // resumo cobran�a a��o para acumular, se n�o existir adiciona // // Iterator iteratorColecaoResumoCobrancaAcao = colecaoResumoCobrancaAcao // .iterator(); // // guarda a informa��o para saber se existe ou n�o o resumo cobran�a // // a��o // boolean naoExisteResumoCobrancaAcao = true; // // variavel para parar o loop da cole��o // boolean achou = true; // // ResumoCobrancaAcao resumoCobrancaAcao = null; // // while (iteratorColecaoResumoCobrancaAcao.hasNext() && achou) { // resumoCobrancaAcao = (ResumoCobrancaAcao) // iteratorColecaoResumoCobrancaAcao // .next(); // // // verifica se existe na cole��o // if (resumoCobrancaAcao.getAnoMesReferencia() == // anoMesReferenciaCobrancaGrupoCronogramaMes // && resumoCobrancaAcao.getCobrancaAcaoCronograma() // .getId().equals(idCobrancaAcaoCronograma) // && resumoCobrancaAcao.getRealizacaoEmitir().compareTo( // dataRealizacaoAtividadeEmitir) == 0 // && resumoCobrancaAcao.getRealizacaoEncerrar() // .compareTo(dataAtividadeEncerrar) == 0 // && resumoCobrancaAcao.getCobrancaGrupo().getId() // .equals(idCobrancaGrupo) // && resumoCobrancaAcao.getGerenciaRegional().getId() // .equals( // imovel.getLocalidade() // .getGerenciaRegional().getId()) // && resumoCobrancaAcao.getLocalidade().getId().equals( // imovel.getLocalidade().getId()) // && resumoCobrancaAcao.getSetorComercial().getId() // .equals(imovel.getSetorComercial().getId()) // && resumoCobrancaAcao.getRota().getId().equals( // imovel.getQuadra().getRota().getId()) // && resumoCobrancaAcao.getCodigoSetorComercial() == imovel // .getSetorComercial().getCodigo() // && resumoCobrancaAcao.getQuadra().getId().equals( // imovel.getQuadra().getId()) // && resumoCobrancaAcao.getNumeroQuadra() == imovel // .getQuadra().getNumeroQuadra() // && resumoCobrancaAcao.getImovelPerfil().getId().equals( // imovel.getImovelPerfil().getId()) // && resumoCobrancaAcao // .getLigacaoAguaSituacao() // .getId() // .equals(imovel.getLigacaoAguaSituacao().getId()) // && resumoCobrancaAcao.getLigacaoEsgotoSituacao() // .getId().equals( // imovel.getLigacaoEsgotoSituacao() // .getId()) // && resumoCobrancaAcao.getCategoria().getId().equals( // categoria.getId()) // && resumoCobrancaAcao.getCobrancaAcao().getId().equals( // idCobrancaAcao) // && resumoCobrancaAcao.getCobrancaAcaoSituacao().getId() // .equals(idSituacaoAcao) // // && // // // resumoCobrancaAcao.getCobrancaDebitoSituacao().getId().equals(idSituacaoPredominanteDebito) // && resumoCobrancaAcao.getCobrancaCriterio().getId() // .equals(idCobrancaCriterio)) { // // /** verifica se a situa��o do debito � a mesma do resumo */ // boolean igualdadeCobrancaDebitoSituacao = false; // // if (resumoCobrancaAcao.getCobrancaDebitoSituacao() != null // && idSituacaoPredominanteDebito != null) { // if (resumoCobrancaAcao.getCobrancaDebitoSituacao() // .getId().equals(idSituacaoPredominanteDebito)) { // igualdadeCobrancaDebitoSituacao = true; // } // } // if (resumoCobrancaAcao.getCobrancaDebitoSituacao() == null // && idSituacaoPredominanteDebito == null) { // igualdadeCobrancaDebitoSituacao = true; // } // // boolean igualdadeFiscalizacao = false; // // // id fiscaliza��o // // verifica se a fiscaliza��o na cole��o esta diferente de // // nula e se a que irei comparar tamb�m � nula // if (resumoCobrancaAcao.getFiscalizacaoSituacao() != null // && idFiscalizacao != null) { // if (resumoCobrancaAcao.getFiscalizacaoSituacao() // .getId().equals(idFiscalizacao)) { // igualdadeFiscalizacao = true; // } // } // if (resumoCobrancaAcao.getFiscalizacaoSituacao() == null // && idFiscalizacao == null) { // // se as duas fiscaliza��o forem nulas, elas s�o iguais // // como crit�ios diferen�a // igualdadeFiscalizacao = true; // } // // // pega a esfera do poder do imovel // EsferaPoder esferaPoder = null; // if (imovel.getClienteImoveis() != null // && !imovel.getClienteImoveis().isEmpty()) { // Cliente cliente = (Cliente) imovel.getClienteImoveis() // .iterator().next(); // esferaPoder = cliente.getClienteTipo().getEsferaPoder(); // } // boolean igualdadeEsferaPoder = false; // // // verifica se a esfera do poder na cole��o esta diferente // // de nula e se a que irei comparar tamb�m � nula // if (resumoCobrancaAcao.getEsferaPoder() != null // && esferaPoder != null) { // if (resumoCobrancaAcao.getEsferaPoder().getId().equals( // esferaPoder.getId())) { // igualdadeEsferaPoder = true; // } // } // if (resumoCobrancaAcao.getEsferaPoder() == null // && esferaPoder == null) { // // se as duas esferar do poder forem nulas, elas s�o // // iguais como crit�ios diferen�a // igualdadeEsferaPoder = true; // } // // // verifica o valor do indicador antes apos // Short indicadorAntesApos = null; // if (dataSituacaoAcao == null && dataSituacaoDebito == null) { // indicadorAntesApos = null; // } // if (dataSituacaoAcao != null && dataSituacaoDebito != null) { // // data da situa��o da a��o de cobran�a seja anterior a // // data da situa��o do d�bito // if (dataSituacaoAcao.after(dataSituacaoDebito)) { // indicadorAntesApos = new Short("1"); // } else { // indicadorAntesApos = new Short("2"); // } // } // // boolean igualdadeIndicadorAntesApos = false; // // // verifica se o indicador de antes e apos na cole��o s�o // // iguais // if (resumoCobrancaAcao.getIndicadorAntesApos() == null // && indicadorAntesApos == null) { // igualdadeIndicadorAntesApos = true; // } else { // if (resumoCobrancaAcao.getIndicadorAntesApos() != null // && indicadorAntesApos != null) { // if (resumoCobrancaAcao.getIndicadorAntesApos() // .shortValue() == indicadorAntesApos // .shortValue()) { // igualdadeIndicadorAntesApos = true; // } // } // } // // boolean igualdadeIndicadorAcimaLimite = false; // // // indicador acima do limite // Short indicadorAcimaLimite = null; // if (valorDocumento.compareTo(valorLimitePrioridade) > 0) { // indicadorAcimaLimite = new Short("1"); // } else { // indicadorAcimaLimite = new Short("2"); // } // // // verifica se o indicador de acima do limite na cole��o s�o // // iguais // if (resumoCobrancaAcao.getIndicadorLimite() == indicadorAcimaLimite // .shortValue()) { // igualdadeIndicadorAcimaLimite = true; // } // // // verifica se s�o igual na esfera do poder, no indicador // // antes e apos e no indicador acima do limite // if (igualdadeFiscalizacao && igualdadeEsferaPoder // && igualdadeIndicadorAntesApos // && igualdadeIndicadorAcimaLimite // && igualdadeCobrancaDebitoSituacao) { // achou = false;// para a loop da cole��o // naoExisteResumoCobrancaAcao = false;// guarda a // // informa��o de que // // existe o resumo // // cobranca a��o na // // cole��o // } // } // } // // // se n�o existi o resumo cobran�a a��o na cole��o adiciona // if (naoExisteResumoCobrancaAcao) { // // // indicador antes apos // Integer indicadorAntesApos = null; // if (dataSituacaoAcao == null && dataSituacaoDebito == null) { // indicadorAntesApos = null; // } // if (dataSituacaoAcao != null && dataSituacaoDebito != null) { // // data da situa��o da a��o de cobran�a seja anterior a data // // da situa��o do d�bito // if (dataSituacaoAcao.after(dataSituacaoDebito)) { // indicadorAntesApos = new Integer("1"); // } else { // indicadorAntesApos = new Integer("2"); // } // } // // // indicador acima do limite // Integer indicadorAcimaLimite = null; // if (valorDocumento.compareTo(valorLimitePrioridade) > 0) { // indicadorAcimaLimite = new Integer("1"); // } else { // indicadorAcimaLimite = new Integer("2"); // } // // // cria o ResumoCobrancaAcao // resumoCobrancaAcao = this.criarResumoCobrancaAcao( // anoMesReferenciaCobrancaGrupoCronogramaMes, // idCobrancaAcaoCronograma, // dataRealizacaoAtividadeEmitir, dataAtividadeEncerrar, // idCobrancaGrupo, imovel, categoria, idCobrancaAcao, // idSituacaoAcao, idSituacaoPredominanteDebito, // idFiscalizacao, indicadorCronogramaComando, // indicadorAntesApos, indicadorAcimaLimite, // valorDocumento, idCobrancaCriterio); // // // adciona na cole��o // colecaoResumoCobrancaAcao.add(resumoCobrancaAcao); // // // seta null para o GC liberar // resumoCobrancaAcao = null; // } else { // // existe o resumo cobran�a a��o na cole��o // // // acumula a quantidade de documentos // resumoCobrancaAcao.setQuantidadeDocumentos(resumoCobrancaAcao // .getQuantidadeDocumentos() + 1); // // // acumula o valor do documento // resumoCobrancaAcao.setValorDocumentos(resumoCobrancaAcao // .getValorDocumentos().add(valorDocumento)); // } // } else { // // se a cole��o estiver vazia, adiciona o item // // // indicador antes apos // Integer indicadorAntesApos = null; // if (dataSituacaoAcao == null || dataSituacaoDebito == null) { // indicadorAntesApos = null; // } else { // // data da situa��o da a��o de cobran�a seja anterior a data da // // situa��o do d�bito // if (dataSituacaoAcao.after(dataSituacaoDebito)) { // indicadorAntesApos = new Integer("1"); // } else { // indicadorAntesApos = new Integer("2"); // } // } // // // indicador acima do limite // Short indicadorAcimaLimite = null; // if (valorDocumento.compareTo(valorLimitePrioridade) > 0) { // indicadorAcimaLimite = new Short("1"); // } else { // indicadorAcimaLimite = new Short("2"); // } // // // cria o ResumoCobrancaAcao // ResumoCobrancaAcao resumoCobrancaAcao = this // .criarResumoCobrancaAcao( // anoMesReferenciaCobrancaGrupoCronogramaMes, // idCobrancaAcaoCronograma, // dataRealizacaoAtividadeEmitir, // dataAtividadeEncerrar, idCobrancaGrupo, imovel, // categoria, idCobrancaAcao, idSituacaoAcao, // idSituacaoPredominanteDebito, idFiscalizacao, // indicadorCronogramaComando, indicadorAntesApos, // new Integer(indicadorAcimaLimite.shortValue()), // valorDocumento, idCobrancaCriterio); // // // adciona na cole��o // colecaoResumoCobrancaAcao.add(resumoCobrancaAcao); // } // return colecaoResumoCobrancaAcao; // } /** * Retorna o valor do ControladorOrdemServico * * @author Leonardo Regis * @date 23/09/2006 * * @return O valor de ControladorOrdemServico */ protected ControladorOrdemServicoLocal getControladorOrdemServico() { ControladorOrdemServicoLocalHome localHome = null; ControladorOrdemServicoLocal local = null; // pega a inst�ncia do ServiceLocator. ServiceLocator locator = null; try { locator = ServiceLocator.getInstancia(); localHome = (ControladorOrdemServicoLocalHome) locator.getLocalHome(ConstantesJNDI.CONTROLADOR_ORDEM_SERVICO_SEJB); // guarda a referencia de um objeto capaz de fazer chamadas � // objetos remotamente local = localHome.create(); return local; } catch (CreateException e) { throw new SistemaException(e); } catch (ServiceLocatorException e) { throw new SistemaException(e); } } /** * Retorna o valor do ControladorBatch * * @author Rafael Santos * @date 25/10/2006 * * @return O valor de ControladorBatch */ protected ControladorBatchLocal getControladorBatch() { ControladorBatchLocalHome localHome = null; ControladorBatchLocal local = null; // pega a inst�ncia do ServiceLocator. ServiceLocator locator = null; try { locator = ServiceLocator.getInstancia(); localHome = (ControladorBatchLocalHome) locator.getLocalHome(ConstantesJNDI.CONTROLADOR_BATCH_SEJB); // guarda a referencia de um objeto capaz de fazer chamadas � // objetos remotamente local = localHome.create(); return local; } catch (CreateException e) { throw new SistemaException(e); } catch (ServiceLocatorException e) { throw new SistemaException(e); } } /** * * Este caso de uso permite gerar o resumo das a��es de cobran�a com a * atividade emitir j� realizada e a atividade encerrar ainda n�o realizada * e realizar a atividade encerrar das a��es que estejam comandadas. * * [UC0478] Gerar Resumo das A��es de Cobran�a do Cronograma * * Cria um Objto ResumoCobrancaAcao com os valores informados * * @author Rafael Santos, Raphael Rossiter * @date 24/10/2006, 02/09/2010 * */ public ResumoCobrancaAcao criarResumoCobrancaAcao(int anoMesReferenciaCobrancaGrupoCronogramaMes, int idCobrancaAcaoCronograma, Date dataRealizacaoAtividadeEmitir, Date dataAtividadeEncerrar, int idCobrancaGrupo, Categoria categoria, int idCobrancaAcao, Integer idSituacaoAcao, Integer idSituacaoPredominanteDebito, Integer idFiscalizacao, int indicadorCronogramaComando, Short indicadorAntesApos, Short indicadorAcimaLimite, BigDecimal valorDocumento, Integer idCobrancaCriterio, Integer idGerenciaRegional, Integer idLocalidade, Integer idSetorComercial, Integer idRota, int codigoSetorComercial, Integer idQuadra, int numeroQuadra, Integer idPerfilImovel, Integer idSituacaoLigacaoAgua, Integer idSituacaoLigacaoEsgoto, Integer idEsferaPoder, Integer quantidadeDocumentos, Empresa empresa, int indicadorDefinitivo, Integer idMotivoEncerramento, Integer idUnidadeNegocio, DocumentoEmissaoForma documentoEmissaoForma) { ResumoCobrancaAcao resumoCobrancaAcao = new ResumoCobrancaAcao(); // ano/mes de refer�ncia do ciclor de cobran�a resumoCobrancaAcao.setAnoMesReferencia(anoMesReferenciaCobrancaGrupoCronogramaMes); // id do cronograma da a��o de cobranca CobrancaAcaoCronograma cobrancaAcaoCronograma = new CobrancaAcaoCronograma(); cobrancaAcaoCronograma.setId(new Integer(idCobrancaAcaoCronograma)); resumoCobrancaAcao.setCobrancaAcaoCronograma(cobrancaAcaoCronograma); // data e hora da realiza��o da atividade "emitir" resumoCobrancaAcao.setRealizacaoEmitir(dataRealizacaoAtividadeEmitir); // data e hora presvista da atividade "encerrar" resumoCobrancaAcao.setRealizacaoEncerrar(dataAtividadeEncerrar); // id do grupo de cobran�a CobrancaGrupo cobrancaGrupo = new CobrancaGrupo(); cobrancaGrupo.setId(idCobrancaGrupo); resumoCobrancaAcao.setCobrancaGrupo(cobrancaGrupo); if (idGerenciaRegional != null) { GerenciaRegional gerenciaRegional = new GerenciaRegional(); gerenciaRegional.setId(idGerenciaRegional); // ger�ncia regional resumoCobrancaAcao.setGerenciaRegional(gerenciaRegional); } if (idLocalidade != null) { Localidade localidade = new Localidade(); localidade.setId(idLocalidade); // localidade resumoCobrancaAcao.setLocalidade(localidade); } if (idSetorComercial != null) { SetorComercial setorComercial = new SetorComercial(); setorComercial.setId(idSetorComercial); // Setor Comercial resumoCobrancaAcao.setSetorComercial(setorComercial); } if (idRota != null) { Rota rota = new Rota(); rota.setId(idRota); // Rota resumoCobrancaAcao.setRota(rota); } if (idQuadra != null) { Quadra quadra = new Quadra(); quadra.setId(idQuadra); // Quadra resumoCobrancaAcao.setQuadra(quadra); } // C�digo do Setor Comercial resumoCobrancaAcao.setCodigoSetorComercial(codigoSetorComercial); // Numero da Quadra resumoCobrancaAcao.setNumeroQuadra(numeroQuadra); if (idPerfilImovel != null) { ImovelPerfil imovelPerfil = new ImovelPerfil(); imovelPerfil.setId(idPerfilImovel); // Perfil do Imovel resumoCobrancaAcao.setImovelPerfil(imovelPerfil); } if (idSituacaoLigacaoAgua != null) { LigacaoAguaSituacao ligacaoAguaSituacao = new LigacaoAguaSituacao(); ligacaoAguaSituacao.setId(idSituacaoLigacaoAgua); // Situa��o da Liga��o de �gua resumoCobrancaAcao.setLigacaoAguaSituacao(ligacaoAguaSituacao); } if (idSituacaoLigacaoEsgoto != null) { LigacaoEsgotoSituacao ligacaoEsgotoSituacao = new LigacaoEsgotoSituacao(); ligacaoEsgotoSituacao.setId(idSituacaoLigacaoEsgoto); // Situa��o da Liga��o de Esgoto resumoCobrancaAcao.setLigacaoEsgotoSituacao(ligacaoEsgotoSituacao); } // categoria resumoCobrancaAcao.setCategoria(categoria); // Esfera do Poder if (idEsferaPoder != null) { EsferaPoder esferaPoder = new EsferaPoder(); esferaPoder.setId(idEsferaPoder); resumoCobrancaAcao.setEsferaPoder(esferaPoder); } // id da a��o de cobran�a CobrancaAcao cobrancaAcao = new CobrancaAcao(); cobrancaAcao.setId(new Integer(idCobrancaAcao)); resumoCobrancaAcao.setCobrancaAcao(cobrancaAcao); // id da situa��o da a��o de cobran�a CobrancaAcaoSituacao cobrancaAcaoSituacao = new CobrancaAcaoSituacao(); cobrancaAcaoSituacao.setId(idSituacaoAcao); resumoCobrancaAcao.setCobrancaAcaoSituacao(cobrancaAcaoSituacao); // id da situa��o predominante de d�bito if (idSituacaoPredominanteDebito != null) { CobrancaDebitoSituacao cobrancaDebitoSituacao = new CobrancaDebitoSituacao(); cobrancaDebitoSituacao.setId(idSituacaoPredominanteDebito); resumoCobrancaAcao.setCobrancaDebitoSituacao(cobrancaDebitoSituacao); } else { resumoCobrancaAcao.setCobrancaDebitoSituacao(null); } // id da situa��o da fiscaliza��o if (idFiscalizacao != null) { FiscalizacaoSituacao fiscalizacaoSituacao = new FiscalizacaoSituacao(); fiscalizacaoSituacao.setId(idFiscalizacao); resumoCobrancaAcao.setFiscalizacaoSituacao(fiscalizacaoSituacao); } // indicador cronograma comando resumoCobrancaAcao.setIndicadorCronogramaComando((short) indicadorCronogramaComando); // indicador antes apos if (indicadorAntesApos != null) { resumoCobrancaAcao.setIndicadorAntesApos(new Short(indicadorAntesApos.shortValue())); } else { resumoCobrancaAcao.setIndicadorAntesApos(null); } // indicador acima do limite if (indicadorAcimaLimite != null) { resumoCobrancaAcao.setIndicadorLimite(new Short(indicadorAcimaLimite.shortValue())); } else { resumoCobrancaAcao.setIndicadorLimite(null); } // quantidade de documentos de cobran�a resumoCobrancaAcao.setQuantidadeDocumentos(quantidadeDocumentos); // valor dos documentos de cobran�a resumoCobrancaAcao.setValorDocumentos(valorDocumento); // data ultima altera��o resumoCobrancaAcao.setUltimaAlteracao(new Date()); CobrancaCriterio cobrancaCriterio = null; if (idCobrancaCriterio != null) { cobrancaCriterio = new CobrancaCriterio(); cobrancaCriterio.setId(idCobrancaCriterio); } resumoCobrancaAcao.setCobrancaCriterio(cobrancaCriterio); resumoCobrancaAcao.setEmpresa(empresa); resumoCobrancaAcao.setIndicadorDefinitivo(indicadorDefinitivo); if (idMotivoEncerramento != null) { AtendimentoMotivoEncerramento motivoEncerramento = new AtendimentoMotivoEncerramento(); motivoEncerramento.setId(idMotivoEncerramento); resumoCobrancaAcao.setMotivoEncerramento(motivoEncerramento); } if (idUnidadeNegocio != null) { UnidadeNegocio unidadeNegocio = new UnidadeNegocio(); unidadeNegocio.setId(idUnidadeNegocio); resumoCobrancaAcao.setUnidadeNegocio(unidadeNegocio); } /* * Colocado por Raphael Rossiter em 02/09/2010 - CRC 4986 DEMF_ID * correspondente ao c�digo da tabela COBRANCA_DOCUMENTO */ if (documentoEmissaoForma != null) { resumoCobrancaAcao.setDocumentoEmissaoForma(documentoEmissaoForma); } return resumoCobrancaAcao; } /** * * Este caso de uso permite gerar o resumo das a��es de cobran�a com a * atividade emitir j� realizada e a atividade encerrar ainda n�o realizada * e realizar a atividade encerrar das a��es que estejam comandadas. * * [UC0478] Gerar Resumo das A��es de Cobran�a do Cronograma * * [SB0006] Processar A��o com Ordens de Servi�o * * @author Rafael Santos, Pedro Alexandre * @date 25/10/2006, 19/01/2007 * * @param idServicoTipo * @param dataPrevistaAtividadeEncerrar * @param dataPrevistaAtividadeEmitir * @param dataComandoAtividadeEncerrar * @param dataRealizacaoAtividadeEmitir * @param usuarioLogado * @param anoMesReferenciaCobrancaGrupoCronogramaMes * @param idCobrancaAcaoCronograma * @param idCobrancaGrupo * @param idCobrancaAcao * @throws ControladorException */ public void processarAcaoOrdemServico(Date dataPrevistaAtividadeEncerrar, Date dataPrevistaAtividadeEmitir, Date dataComandoAtividadeEncerrar, Date dataRealizacaoAtividadeEmitir, Usuario usuarioLogado, int anoMesReferenciaCobrancaGrupoCronogramaMes, int idCobrancaAcaoCronograma, int idCobrancaGrupo, CobrancaAcao cobrancaAcao, Date dataRealizacaoAtividadeEncerrar) throws ControladorException { // seleciona as ordens de servi�o para a��o de cobran�a com a data de // entre as datas previstas das atividades // emitir e encerrar da a��o de cobran�a // colecao de ordem de servi�o Collection colecaoOrdemServicos = null; int indice = 0; boolean flagTerminou = false; try { while (!flagTerminou) { // ORDERM_SERVICO com SVTP_ID da tabela COBRANCA_ACAO e // ORSE_TMGERACAO entre CAAC_DTPREVISTA do Emitir e do Encerrar colecaoOrdemServicos = repositorioCobranca.pesquisarOrdemServicos(cobrancaAcao.getServicoTipo().getId(), dataPrevistaAtividadeEncerrar, dataPrevistaAtividadeEmitir, indice); if (colecaoOrdemServicos != null && !colecaoOrdemServicos.isEmpty()) { if (colecaoOrdemServicos.size() > 500) { flagTerminou = true; } else { indice = indice + 500; } Iterator iteratorColecaoOrdemServicos = colecaoOrdemServicos.iterator(); // cole��o de RESUMO_COBRANCA_ACAO Collection colecaoResumoCobrancaAcao = new ArrayList(); Object[] dadosOrdemServico = null; while (iteratorColecaoOrdemServicos.hasNext()) { // id da fiscaliza��o da ordem de servi�o Integer idFiscalizacao = null; short codigoSituacao = -1; Integer idOrdemServico = null; Integer idAtendimentoMotivoEncerramento = null; Integer idImovel = null; Integer idLocalidade = null; dadosOrdemServico = (Object[]) colecaoOrdemServicos.iterator().next(); // ir da ordem de servi�o if (dadosOrdemServico[0] != null) { idOrdemServico = (Integer) dadosOrdemServico[0]; // CRC4529 - adicionado por Vivianne Sousa - // 30/08/2010 - analista: Fatima Sampaio OrdemServicoFiscSit ordemServicoFiscSit = getControladorOrdemServico() .recuperaOrdemServicoFiscSitComMenorDataFiscalizacao(idOrdemServico); if (ordemServicoFiscSit != null) { idFiscalizacao = ordemServicoFiscSit.getFiscalizacaoSituacao().getId(); } else { idFiscalizacao = null; } } else { idFiscalizacao = null; } // codigo da situacao if (dadosOrdemServico[1] != null) { codigoSituacao = ((Short) dadosOrdemServico[1]).shortValue(); } // id fiscaliza��o da ordem de servi�o // if (dadosOrdemServico[2] != null) { // idFiscalizacao = (Integer) dadosOrdemServico[2]; // } Integer idSituacaoAcao = null; // id atendimento motivo encerramento if (dadosOrdemServico[5] != null) { idAtendimentoMotivoEncerramento = (Integer) dadosOrdemServico[5]; } // id imovel if (dadosOrdemServico[6] != null) { idImovel = (Integer) dadosOrdemServico[6]; } // id localidade if (dadosOrdemServico[7] != null) { idLocalidade = (Integer) dadosOrdemServico[7]; } // 2.1 Determina a situa��o da a��o de cobran�a de // acordo // com // a situa��o da ordem de servi�o // a ordem se servi�o n�o esteja encerrada if (codigoSituacao != OrdemServico.SITUACAO_ENCERRADO.shortValue()) { // caso a atividade da a��o de cobran�a // correspondente a // encerrar esteja comanda e a data presvista para o // encerramento seja igual ou menor do que // a data corrente if (dataComandoAtividadeEncerrar != null && (dataPrevistaAtividadeEncerrar != null && (dataPrevistaAtividadeEncerrar.compareTo(new Date()) <= 0))) { // Atibuir o valor A��O CANCELADA POR DECURSO DE // PRAZO idSituacaoAcao = CobrancaAcaoSituacao.CANCELADA_PRAZO; encerrarOSPeloResumoAcaoCobranca(idOrdemServico, idLocalidade, AtendimentoMotivoEncerramento.CANCELADO_POR_DERCURSO_DE_PRAZO); } else { // caso a situa��o da fiscaliza��o da ordem de // servi�o // esteja preenchida if (idFiscalizacao != null) { // atribuir o valor A��O FISCALIZADA idSituacaoAcao = CobrancaAcaoSituacao.FISCALIZADA; } else { // atribuir o valor A��O PENDENTE idSituacaoAcao = CobrancaAcaoSituacao.PENDENTE; } } } else { // Caso a ordem de servico tenha sido encerrada com // motivo // suspensa por pag/canc/parc do debito n�o alterar // mais a OS if (idAtendimentoMotivoEncerramento.intValue() != AtendimentoMotivoEncerramento.SUSPENSA_PAG_PARC_CANC_DO_DEBITO) { Collection colecaoAtendimentoMotivoEncerramento = null; // AMEN_ID igual a // idAtendimentoMotivoEncerramento // da // Ordem de Servico colecaoAtendimentoMotivoEncerramento = this.repositorioCobranca .pesquisarAtendimentoMotivoEncerramento(idAtendimentoMotivoEncerramento); // pega os dados do atendimento motivo // encerramento // pesquisado if (colecaoAtendimentoMotivoEncerramento != null && !colecaoAtendimentoMotivoEncerramento.isEmpty()) { Object[] dadosAtendimentoMotivoEncerramento = (Object[]) colecaoAtendimentoMotivoEncerramento .iterator().next(); Integer indicadorExecucao = null; // indicador de Execu��o if (dadosAtendimentoMotivoEncerramento[0] != null) { indicadorExecucao = (Integer) dadosAtendimentoMotivoEncerramento[0]; } // caso o motivo de encerramento corresponda // � // execu��o if (indicadorExecucao.intValue() == 1) { // atribuir o valor A��O EXECUTADA idSituacaoAcao = CobrancaAcaoSituacao.EXECUTADA; } else { // atribuir o valor A��O CANCELADA idSituacaoAcao = CobrancaAcaoSituacao.CANCELADA; } // seta null para o GC liberar dadosAtendimentoMotivoEncerramento = null; }// fim da colecao atendimento motivo // encerramento // seta null para o GC liberar colecaoAtendimentoMotivoEncerramento = null; } } // pesquisa os imovel para ser usado para gravar o // Resumo // Cobran�a A��o Imovel imovel = this.pesquisarDadosImovel(idImovel); // [UC0306] - Obter Principal Categoria do Imovel Categoria categoria = getControladorImovel().obterPrincipalCategoriaImovel(idImovel); // 2.2 acumula na tabela RESUMO_COBRANCA_ACAO os valores // da // rodem de servi�o this.acumularResumoCobrancaAcaoOrdemServico(colecaoResumoCobrancaAcao, anoMesReferenciaCobrancaGrupoCronogramaMes, idCobrancaAcaoCronograma, dataRealizacaoAtividadeEmitir, dataPrevistaAtividadeEncerrar, idCobrancaGrupo, imovel, categoria, cobrancaAcao.getId(), idSituacaoAcao, null, idFiscalizacao, 1, new BigDecimal("0.00"), null, null, dataRealizacaoAtividadeEncerrar); // seta null para o GC liberar dadosOrdemServico = null; }// fim do while // armazenar os RESUMO_COBRANCA_ACAO if (!colecaoResumoCobrancaAcao.isEmpty()) { getControladorBatch().atualizarColecaoObjetoParaBatch(colecaoResumoCobrancaAcao); } colecaoResumoCobrancaAcao = null; } else { flagTerminou = true; } // seta null para GC liberar colecaoOrdemServicos = null; } } catch (ErroRepositorioException ex) { sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", ex); } } private void encerrarOSPeloResumoAcaoCobranca(Integer idOrdemServico, Integer idLocalidade, Short idMotivoEncerramento) throws ControladorException { Usuario usuarioLogado = Usuario.USUARIO_BATCH; UnidadeOrganizacional unidadeOrganizacional = getControladorUnidade().pesquisarUnidadeOrganizacionalLocalidade(idLocalidade); usuarioLogado.setUnidadeOrganizacional(unidadeOrganizacional); // encerrar a ordem de servi�o, com o motivo // correspodente a decurso de prazo // [UC0457] - Encerrar Ordem de Servi�o this.getControladorOrdemServico().encerrarOSSemExecucao(idOrdemServico, new Date(), usuarioLogado, idMotivoEncerramento.toString(), new Date(), null, null, null, null, null, null); } /** * * Este caso de uso permite gerar o resumo das a��es de cobran�a com a * atividade emitir j� realizada e a atividade encerrar ainda n�o realizada * e realizar a atividade encerrar das a��es que estejam comandadas. * * [UC0478] Gerar Resumo das A��es de Cobran�a do Cronograma * * [SB0006] - Processar A��o com Ordens de Servi�o * * Acumular ou insere na coel��o de RESUMO_COBRANCA_ACAO * * @author Rafael Santos * @date 25/10/2006 * */ public void acumularResumoCobrancaAcaoOrdemServico(Collection<ResumoCobrancaAcao> colecaoResumoCobrancaAcao, int anoMesReferenciaCobrancaGrupoCronogramaMes, int idCobrancaAcaoCronograma, Date dataRealizacaoAtividadeEmitir, Date dataPrevistaAtividadeEncerrar, int idCobrancaGrupo, Imovel imovel, Categoria categoria, int idCobrancaAcao, Integer idSituacaoAcao, Integer idSituacaoPredominanteDebito, int idFiscalizacao, int indicadorCronogramaComando, BigDecimal valorDocumento, Integer indicadorAntesApos, Integer indicadorAcimaLimite, Date dataRealizacaoAtividadeEncerrar) { // verifica se exista a data de realiza��o da atividade de encerrar se // existir ent�o recupera ela para ser comparada,sen�o recupera a data // prevista da atividade de encerrar Date dataAtividadeEncerrar = null; if (dataRealizacaoAtividadeEncerrar != null) { dataAtividadeEncerrar = dataRealizacaoAtividadeEncerrar; } else { dataAtividadeEncerrar = dataPrevistaAtividadeEncerrar; } if (colecaoResumoCobrancaAcao != null && !colecaoResumoCobrancaAcao.isEmpty()) { // se a cole��o n�o estiver vazia, procura por uma ocorrencia do // resumo cobran�a a��o para acumular, se n�o existir adiciona Iterator iteratorColecaoResumoCobrancaAcao = colecaoResumoCobrancaAcao.iterator(); // guarda a informa��o para saber se existe ou n�o o resumo cobran�a // a��o boolean naoExisteResumoCobrancaAcao = true; // variavel para parar o loop da cole��o boolean achou = true; // posi��o para aculumar o resumo cobran�a a��o // int indicePosicaoParaAcumular = -1; // indice corrente do item na cole��o // int indice = 0; // objeto que ira receber o resumo para ser substituido // ResumoCobrancaAcao resumoCobrancaAcaoParaSubstituir = null; ResumoCobrancaAcao resumoCobrancaAcao = null; while (iteratorColecaoResumoCobrancaAcao.hasNext() && achou) { resumoCobrancaAcao = (ResumoCobrancaAcao) iteratorColecaoResumoCobrancaAcao.next(); // verifica se existe na cole��o if (resumoCobrancaAcao.getAnoMesReferencia() == anoMesReferenciaCobrancaGrupoCronogramaMes && resumoCobrancaAcao.getCobrancaAcaoCronograma().getId().intValue() == idCobrancaAcaoCronograma && resumoCobrancaAcao.getRealizacaoEmitir().compareTo(dataRealizacaoAtividadeEmitir) == 0 && resumoCobrancaAcao.getRealizacaoEncerrar().compareTo(dataAtividadeEncerrar) == 0 && resumoCobrancaAcao.getCobrancaGrupo().getId().intValue() == idCobrancaGrupo && resumoCobrancaAcao.getGerenciaRegional().getId().intValue() == imovel.getLocalidade().getGerenciaRegional() .getId().intValue() && resumoCobrancaAcao.getLocalidade().getId().intValue() == imovel.getLocalidade().getId().intValue() && resumoCobrancaAcao.getSetorComercial().getId().intValue() == imovel.getSetorComercial().getId().intValue() && resumoCobrancaAcao.getRota().getId().intValue() == imovel.getQuadra().getRota().getId().intValue() && resumoCobrancaAcao.getCodigoSetorComercial() == imovel.getSetorComercial().getCodigo() && resumoCobrancaAcao.getNumeroQuadra() == imovel.getQuadra().getNumeroQuadra() && resumoCobrancaAcao.getImovelPerfil().getId().intValue() == imovel.getImovelPerfil().getId().intValue() && resumoCobrancaAcao.getLigacaoAguaSituacao().getId().intValue() == imovel.getLigacaoAguaSituacao().getId() .intValue() && resumoCobrancaAcao.getLigacaoEsgotoSituacao().getId().intValue() == imovel.getLigacaoEsgotoSituacao().getId() .intValue() && resumoCobrancaAcao.getCategoria().getId().intValue() == categoria.getId().intValue() && resumoCobrancaAcao.getCobrancaAcao().getId().intValue() == idCobrancaAcao && resumoCobrancaAcao.getCobrancaAcaoSituacao().getId().intValue() == idSituacaoAcao && resumoCobrancaAcao.getFiscalizacaoSituacao().getId().intValue() == idFiscalizacao && resumoCobrancaAcao.getUnidadeNegocio().getId().intValue() == imovel.getLocalidade().getUnidadeNegocio().getId() .intValue()) { // pega a esfera do poder do imovel EsferaPoder esferaPoder = null; if (imovel.getClienteImoveis() != null && !imovel.getClienteImoveis().isEmpty()) { Cliente cliente = (Cliente) imovel.getClienteImoveis().iterator().next(); esferaPoder = cliente.getClienteTipo().getEsferaPoder(); } boolean igualdadeEsferaPoder = false; // verifica se a esfera do poder na cole��o esta diferente // de nula e se a que irei comparar tamb�m � nula if (resumoCobrancaAcao.getEsferaPoder() != null && esferaPoder != null) { if (resumoCobrancaAcao.getEsferaPoder().getId().intValue() == esferaPoder.getId().intValue()) { igualdadeEsferaPoder = true; } } else if (resumoCobrancaAcao.getEsferaPoder() == null && esferaPoder == null) { // se as duas esferar do poder forem nulas, elas s�o // iguais como crit�ios diferen�a igualdadeEsferaPoder = true; } // verifica se � igual na esfera do poder if (igualdadeEsferaPoder) { achou = false;// para a loop da cole��o // indicePosicaoParaAcumular = indice;//guarda o indice // da cole��o a qual esta o registro para ser // substituido naoExisteResumoCobrancaAcao = false;// guarda a // informa��o de que // existe o resumo // cobranca a��o na // cole��o // resumoCobrancaAcaoParaSubstituir = // resumoCobrancaAcao; } } } // se n�o existi o resumo cobran�a a��o na cole��o adiciona if (naoExisteResumoCobrancaAcao) { // cria o ResumoCobrancaAcao // resumoCobrancaAcao = this.criarResumoCobrancaAcao( // anoMesReferenciaCobrancaGrupoCronogramaMes, // idCobrancaAcaoCronograma, // dataRealizacaoAtividadeEmitir, dataAtividadeEncerrar, // idCobrancaGrupo, imovel, categoria, idCobrancaAcao, // idSituacaoAcao, idSituacaoPredominanteDebito, // idFiscalizacao, indicadorCronogramaComando, // indicadorAntesApos, indicadorAcimaLimite, // valorDocumento, null); // adciona na cole��o colecaoResumoCobrancaAcao.add(resumoCobrancaAcao); } else { // existe o resumo cobran�a a��o na cole��o // acumula a quantidade de documentos resumoCobrancaAcao.setQuantidadeDocumentos(resumoCobrancaAcao.getQuantidadeDocumentos() + 1); } } else { // se a cole��o estiver vazia, adiciona o item // colecaoResumoCobrancaAcao = new ArrayList<ResumoCobrancaAcao>(); // cria o ResumoCobrancaAcao // ResumoCobrancaAcao resumoCobrancaAcao = this // .criarResumoCobrancaAcao( // anoMesReferenciaCobrancaGrupoCronogramaMes, // idCobrancaAcaoCronograma, // dataRealizacaoAtividadeEmitir, // dataAtividadeEncerrar, idCobrancaGrupo, imovel, // categoria, idCobrancaAcao, idSituacaoAcao, // idSituacaoPredominanteDebito, idFiscalizacao, // indicadorCronogramaComando, indicadorAntesApos, // indicadorAcimaLimite, valorDocumento, null); // adciona na cole��o // colecaoResumoCobrancaAcao.add(resumoCobrancaAcao); } // return colecaoResumoCobrancaAcao; } /** * retorna o objeto ResolucaoDiretoria com a maior data Vig�ncia inicial * * [UC0214] - Efetuar Parcelamento de D�bitos * * @author Vivianne Sousa * @date 08/11/2006 * * @return * @throws ControladorException */ public Collection<ResolucaoDiretoria> pesquisarResolucaoDiretoriaMaiorDataVigenciaInicio() throws ControladorException { try { // chama o met�do de pesquisar do reposit�rio return repositorioCobranca.pesquisarResolucaoDiretoriaMaiorDataVigenciaInicio(); // erro no hibernate } catch (ErroRepositorioException ex) { // seta o rollback sessionContext.setRollbackOnly(); // levanta a exce��o para a pr�xima camada throw new ControladorException("erro.sistema", ex); } } /** * retorna o valor da entrada do Parcelamento * * [UC0214] - Efetuar Parcelamento de D�bitos [SB0002] - Obter op��es de * Parcelamento (5.4.1.4) * * @author Vivianne Sousa * @date 08/11/2006 * * @return * @throws ControladorException */ public BigDecimal obterValorEntradaParcelamento(BigDecimal valorEntradaInformado, BigDecimal valorEntradaMinima, BigDecimal valorEntradaReparcelamento, Usuario usuario, BigDecimal valorEntradaSugerida, BigDecimal valorEntradaUltimaConta) throws ControladorException { BigDecimal valorEntrada = new BigDecimal("0"); boolean temPermissaoValMinimoEntrada = getControladorPermissaoEspecial().verificarPermissaoEspecial( PermissaoEspecial.TESTAR_VAL_MINIMO_ENTRADA, usuario); if (valorEntradaInformado == null) { if (valorEntradaUltimaConta != null && !valorEntradaUltimaConta.setScale(Parcelamento.CASAS_DECIMAIS).equals(new BigDecimal("0.00"))) { valorEntrada = valorEntradaUltimaConta; } else if (valorEntradaSugerida != null) { valorEntrada = valorEntradaSugerida; } else if (valorEntradaMinima != null) { valorEntrada = valorEntradaMinima; } else if (valorEntradaReparcelamento != null) { valorEntrada = valorEntradaReparcelamento; } } else if (temPermissaoValMinimoEntrada && valorEntradaInformado != null) { valorEntrada = valorEntradaInformado; } else { // valor entrada = maior valor entre valorEntradaInformado, // valorEntradaMinima , valorEntradaReparcelamento e // valorEntradaUltimaConta if (valorEntradaInformado != null) { if (valorEntradaInformado.compareTo(valorEntradaMinima) == 1) { valorEntrada = valorEntradaInformado; } else { valorEntrada = valorEntradaMinima; } if (valorEntradaUltimaConta != null && valorEntrada.compareTo(valorEntradaUltimaConta) == -1) { valorEntrada = valorEntradaUltimaConta; } } if (valorEntradaReparcelamento.compareTo(valorEntrada) == 1) { valorEntrada = valorEntradaReparcelamento; } } return valorEntrada; } /** * Pesquisa o im�vel para parcelamento com controle de abrang�ncia. * * <Identificador e nome do caso de uso> * * @author Pedro Alexandre * @date 27/11/2006 * * @param filtroImovel * @param usuarioLogado * @return * @throws ControladorException */ public Collection<Imovel> pesquisarImovelEfetuarParcelamento(FiltroImovel filtroImovel, Usuario usuarioLogado) throws ControladorException { Collection<Imovel> retorno = null; Imovel imovel = null; retorno = this.getControladorUtil().pesquisar(filtroImovel, Imovel.class.getName()); if (retorno != null && !retorno.isEmpty()) { imovel = (Imovel) Util.retonarObjetoDeColecao(retorno); // ------------ CONTROLE DE ABRANGENCIA ---------------- Abrangencia abrangencia = new Abrangencia(usuarioLogado, imovel); if (!getControladorAcesso().verificarAcessoAbrangencia(abrangencia)) { sessionContext.setRollbackOnly(); throw new ControladorException("atencao.acesso.negado.abrangencia"); } // ------------ FIM CONTROLE DE ABRANGENCIA ------------ } else { return retorno; } return retorno; } /** * [UC0214] - Efetuar Parcelamento de D�bitos * * @author Vivianne Sousa * @date 28/11/2006 * * @return * @throws ControladorException */ public Boolean verificarQtdeReparcelamentoPerfil(Integer idPerfilParc, Short numeroReparcelamentoConsecutivos) throws ControladorException { Boolean retorno = false; ParcelamentoQuantidadeReparcelamento parcelamentoQuantidadeReparcelamento = null; try { parcelamentoQuantidadeReparcelamento = repositorioCobranca.obterQtdeReparcelamentoPerfil(idPerfilParc, numeroReparcelamentoConsecutivos); } catch (ErroRepositorioException e) { e.printStackTrace(); } if (parcelamentoQuantidadeReparcelamento != null) { retorno = true; } return retorno; } public CobrancaAcaoAtividadeCronograma pesquisarCobrancaAcaoAtividadeCronogramaId(Integer idCobrancaAcaoAtividadeCronograma) throws ControladorException { CobrancaAcaoAtividadeCronograma retorno = null; try { // chama o met�do de pesquisar do reposit�rio retorno = repositorioCobranca.pesquisarCobrancaAcaoAtividadeCronogramaId(idCobrancaAcaoAtividadeCronograma); // erro no hibernate } catch (ErroRepositorioException ex) { // levanta a exce��o para a pr�xima camada throw new ControladorException("erro.sistema", ex); } return retorno; } /** * [UC0478] Gerar Resumo das A��es de Cobran�a do Cronograma * * Item 1 O sistema seleciona os cronogramas de cobran�a dos grupos de * cobran�a e meses de refer�ncia. * * @author Pedro Alexandre * @date 19/01/2007 * * @return * @throws ControladorException */ public Collection pesquisarCobrancaGrupoCronogramaMes() throws ControladorException { Collection colecaoCobrancaGrupoCronogramaMes = null; try { colecaoCobrancaGrupoCronogramaMes = this.repositorioCobranca.pesquisarCobrancaGrupoCronogramaMes(); } catch (ErroRepositorioException ex) { sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", ex); } return colecaoCobrancaGrupoCronogramaMes; } /** * * Divide a cole��o em duas partes e cria um map onde vai ter as 2 partes.� * criado outro map que guarda a ordem de como ser� chamada a o map das 2 * partes. Ex.:Map<1,Map<objeto1,objeto2>>, onde 1 � a ordem que ser� * chamado o segundo map<objeto1,objeto2> e o objeto1 � primeiro objeto da * cole��o da primeira parte e o objeto2 � o primeiro objeto da segunda * parte da cole��o * * @author S�vio Luiz * @date 22/01/2007 * * @return * @throws ControladorException */ protected Map<Integer, Map<Object, Object>> dividirColecao(Collection colecao) { Map<Integer, Map<Object, Object>> mapOrdenada = new HashMap(); List listColecao = new ArrayList(); listColecao.addAll(colecao); int quantidadeContas = 0; int quantidadeContasColecao = listColecao.size(); int metadeColecao = 0; // caso a cole��o tenha um numero impar a metade ser� ela + 1 // Ex.:cole��o tamanho = 21; metade = 10+1 = 11. if (quantidadeContasColecao % 2 == 0) { metadeColecao = quantidadeContasColecao / 2; } else { metadeColecao = (quantidadeContasColecao / 2) + 1; } while (quantidadeContas < metadeColecao) { Map<Object, Object> map = new HashMap(); Object object1 = (Object) listColecao.get(quantidadeContas); Object object2 = null; if (metadeColecao + quantidadeContas < quantidadeContasColecao) { object2 = (Object) listColecao.get(metadeColecao + quantidadeContas); } map.put(object1, object2); mapOrdenada.put(quantidadeContas, map); map = null; quantidadeContas++; } quantidadeContasColecao = 0; return mapOrdenada; } /** * * Atualiza o sequencial de acordo com a metade da cole��o e da situa��o. * Ex.: se situa��o for igual a 1 e a metade da cole��o for 500 e o * sequencial for 503 ent�o: sequencial ser� igual a 3. * * @author S�vio Luiz * @date 22/01/2007 * * @return * @throws ControladorException */ protected int atualizaSequencial(int sequencial, int situacao, int metadeColecao) { // recupera o sequencial int moduloSequencial = sequencial; // verifica se o sequencial � maior que 1000 if (sequencial > 1000) { moduloSequencial = sequencial % 1000; // e se o modulo n�o � igual a 0 ou seja no caso de ser 1000 ou 2000 if (moduloSequencial == 0) { moduloSequencial = sequencial; } } // caso a situa��o seja igual a 1(primeira parte da cole��o) e o modulo // do sequencial seja maior que a metade da cole��o ent�o atualiza o // sequencial menos a metade da cole��o if (situacao == 1 && moduloSequencial > metadeColecao) { sequencial = sequencial - metadeColecao; } else { // caso a situa��o seja igual a 2(segunda parte da cole��o) e o // modulo // do sequencial seja menor ou igual que a metade da cole��o ent�o // atualiza o // sequencial mais a metade da cole��o if (situacao == 2 && moduloSequencial <= metadeColecao) { sequencial = sequencial + metadeColecao; } } return sequencial; } /** * [UC0214] Efetuar Parcelamento Debito [SB0011] Verificar �nica Fatura * * @author Vivianne Sousa * @created 15/02/2007 * * @exception controladorException * controlador Exception */ public void verificarUnicaFatura(Collection colecaoContas, ParcelamentoPerfil parcelamentoPerfil) throws ControladorException { Short indicadorSancoesUnicaConta = parcelamentoPerfil.getIndicadorSancoesUnicaConta(); // 1. if (colecaoContas != null && !colecaoContas.isEmpty() && colecaoContas.size() == 1) { // Caso o im�vel so tenha uma conta a parcelar Iterator iteratorConta = colecaoContas.iterator(); ContaValoresHelper contaValoresHelper = (ContaValoresHelper) iteratorConta.next(); Conta conta = contaValoresHelper.getConta(); Integer consumoMinimo = parcelamentoPerfil.getNumeroConsumoMinimo(); if (consumoMinimo != null || !indicadorSancoesUnicaConta.equals(ConstantesSistema.NAO)) { // caso o perfil indique que existem restri��es para // parcelamento de uma �nica conta // PCPF_NNCONSUMOMINIMO da tabela PARCELAMENTO_PERFIL com valor // diferente de nulo // ou PCPF_ICSANCOESPARCUNICA com valor diferente de N�O // verificar se � poss�vel parcelar Integer consumoAgua = conta.getConsumoAgua(); Collection colecaoConsumoMedioImovel = null; try { colecaoConsumoMedioImovel = this.repositorioCobranca.obterConsumoMedioImovel(conta.getImovel().getId()); } catch (ErroRepositorioException e) { sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", e); } Integer consumoMedioImovel = null; if (colecaoConsumoMedioImovel != null && !colecaoConsumoMedioImovel.isEmpty()) { consumoMedioImovel = (Integer) colecaoConsumoMedioImovel.iterator().next(); } if (consumoMedioImovel == null || consumoMedioImovel.equals(new Integer(0))) { Collection colecaoNumeroConsumoFaturadoMes = null; try { colecaoNumeroConsumoFaturadoMes = this.repositorioCobranca.obterNumeroConsumoFaturadoMes(conta.getImovel().getId()); } catch (ErroRepositorioException e) { sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", e); } if (colecaoNumeroConsumoFaturadoMes != null && !colecaoNumeroConsumoFaturadoMes.isEmpty()) { consumoMedioImovel = (Integer) colecaoNumeroConsumoFaturadoMes.iterator().next(); } } Collection colecaoIdDebitoTipo = null; try { colecaoIdDebitoTipo = this.repositorioCobranca.obterIdDebitoTipoDeFiscalizacaoSituacaoServicoACobrar(conta.getId()); } catch (ErroRepositorioException e) { sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", e); } if (consumoMinimo != null && consumoAgua.compareTo(consumoMinimo) < 0) { // 1.1 // caso consumo de �gua da �nica conta seja menor // que o valor determinado no perfil de parcelamento if (!indicadorSancoesUnicaConta.equals(ConstantesSistema.NAO)) { // 1.2 // caso perfil exija q existam san��es regulamentares // cobradas na conta // PCPF_ICSANCOESPARCUNICA com valor diferente de N�O Conta contaDebitoCobrado = null; try { contaDebitoCobrado = this.repositorioCobranca.verificarContaDebitoCobrado(conta.getId()); } catch (ErroRepositorioException e) { sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", e); } if (contaDebitoCobrado == null || (colecaoIdDebitoTipo == null || colecaoIdDebitoTipo.isEmpty())) { // e conta n tenha d�bito cobrado(CNTA_ID n�o ocorre // na // tabela DEBITO_COBRADO) // ou n�o existam san��es regulamentares cobradas // (DBTP_ID da tabela DEBITO_COBRADO com CNTA_ID = // CNTA_ID // da conta a ser parcelada n�o ocorrendo na tabela // FISCALIZACAO_SITUACAO_SERVICO_A_COBRAR) if (consumoMedioImovel != null && consumoAgua.compareTo(consumoMedioImovel) <= 0) { // 1.3 // consumo de �gua seja menor ou igual ao // consumo m�dio do // im�vel throw new ControladorException("atencao.conta.unica.nao.permite.parcelamento"); } } } } Short qtdeEconomiasConta = getControladorFaturamento().obterQuantidadeEconomiasConta(conta.getId(), false); Integer consumoAguaPorEconomia = Util.dividirArredondarResultado(consumoAgua, qtdeEconomiasConta); BigDecimal percentualVariacaoConsumoMedio = parcelamentoPerfil.getPercentualVariacaoConsumoMedio(); Integer variacaoEmRelacaoConsumoMedio = null; BigDecimal variacaoEmRelacaoConsumoMedioBigDecimal = null; if (consumoMedioImovel != null && consumoMedioImovel != 0) { variacaoEmRelacaoConsumoMedio = 100 * (consumoAgua - consumoMedioImovel); variacaoEmRelacaoConsumoMedioBigDecimal = Util.dividirArredondando(new BigDecimal(variacaoEmRelacaoConsumoMedio), new BigDecimal(consumoMedioImovel)); } if (consumoMinimo != null && consumoAguaPorEconomia.compareTo(consumoMinimo) < 0 || (variacaoEmRelacaoConsumoMedioBigDecimal != null && percentualVariacaoConsumoMedio != null && variacaoEmRelacaoConsumoMedioBigDecimal .compareTo(percentualVariacaoConsumoMedio) < 0)) { // 1.4 // consumo de �gua por economia seja menor que o valor // determinado no perfil // ou a varia��o em rela��o ao consumo m�dio for inferior ao // percentual definido no perfil if ((colecaoIdDebitoTipo != null && !colecaoIdDebitoTipo.isEmpty())) { // 1.5 E // caso existad�bito cobrado na conta referente a // san��es // regulamentares // e o debito n�o tenha sido cobrado em uma �nica // parcela Collection colecaoNumeroPrestacoesDebitoCobrado = null; try { colecaoNumeroPrestacoesDebitoCobrado = this.repositorioCobranca.obterNumeroPrestacaoDebitoCobrado(conta .getImovel().getId()); } catch (ErroRepositorioException e) { sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", e); } if (colecaoNumeroPrestacoesDebitoCobrado != null && !colecaoNumeroPrestacoesDebitoCobrado.isEmpty()) { Iterator iterator = colecaoNumeroPrestacoesDebitoCobrado.iterator(); while (iterator.hasNext()) { Short numeroPrestacoesDebitoCobrado = (Short) iterator.next(); if (numeroPrestacoesDebitoCobrado.compareTo(new Short("1")) == 0) { throw new ControladorException("atencao.conta.unica.nao.permite.parcelamento"); } } } } } } } } /** * Metodo criado para criar os debitos para os parcelamentos q tenham juros * e nao tenha criado o debito dos juros DBTP_ID = 44 * * @author Fl�vio Cordeiro * @date 23/02/2007 * * @return * @throws ErroRepositorioException */ public void gerarDebitoCobrarNaoCriados() { Collection colecaoParcelamentoImovel; try { colecaoParcelamentoImovel = repositorioCobranca.pesquisarParcelamentosSemDebitos(); if (!colecaoParcelamentoImovel.isEmpty()) { Object[] objeto = null; Parcelamento parcelamento = null; Imovel imovel = null; Localidade localidade = null; Quadra quadra = null; SetorComercial setorComercial = null; Collection colecaoObjetosCategorias = null; DebitoTipo debitoTipo = new DebitoTipo(); FiltroDebitoTipo filtroDebitoTipo = new FiltroDebitoTipo(); filtroDebitoTipo.adicionarParametro(new ParametroSimples(FiltroDebitoTipo.ID, DebitoTipo.JUROS_SOBRE_PARCELAMENTO)); Collection colecaoDebito = getControladorUtil().pesquisar(filtroDebitoTipo, DebitoTipo.class.getName()); debitoTipo = (DebitoTipo) colecaoDebito.iterator().next(); Iterator iterator = colecaoParcelamentoImovel.iterator(); while (iterator.hasNext()) { objeto = (Object[]) iterator.next(); parcelamento = new Parcelamento(); imovel = new Imovel(); localidade = new Localidade(); quadra = new Quadra(); setorComercial = new SetorComercial(); // idParcelamento if (objeto[0] != null) { parcelamento.setId((Integer) objeto[0]); } // numeroPrestacao if (objeto[1] != null) { parcelamento.setNumeroPrestacoes((Short) objeto[1]); } // taxaJuros if (objeto[2] != null) { parcelamento.setTaxaJuros((BigDecimal) objeto[2]); } // idLocalidade if (objeto[3] != null) { localidade.setId((Integer) objeto[3]); } imovel.setLocalidade(localidade); // idQuadra if (objeto[4] != null) { quadra.setId((Integer) objeto[4]); } // numeroQuadra if (objeto[5] != null) { quadra.setNumeroQuadra((Integer) objeto[5]); } imovel.setQuadra(quadra); // idSetor if (objeto[6] != null) { setorComercial.setId((Integer) objeto[6]); } // codigoSetor if (objeto[7] != null) { setorComercial.setCodigo((Integer) objeto[7]); } imovel.setSetorComercial(setorComercial); // lote if (objeto[8] != null) { imovel.setLote((Short) objeto[8]); } // subLote if (objeto[9] != null) { imovel.setSubLote((Short) objeto[9]); } // valorJurosParcelamento if (objeto[10] != null) { parcelamento.setValorJurosParcelamento((BigDecimal) objeto[10]); } // valorJurosParcelamento if (objeto[11] != null) { imovel.setId((Integer) objeto[11]); } colecaoObjetosCategorias = getControladorImovel().obterQuantidadeEconomiasCategoria(imovel); inserirDebitoACobrarDebitoTipo(debitoTipo, imovel, parcelamento.getNumeroPrestacoes(), parcelamento.getValorJurosParcelamento(), parcelamento.getTaxaJuros(), parcelamento.getId(), colecaoObjetosCategorias, null, DebitoCreditoSituacao.NORMAL, null, null, true, null, null); repositorioImovel.pesquisarCategoriasImovel(imovel.getId()); } } } catch (ErroRepositorioException e) { e.printStackTrace(); } catch (NumberFormatException e) { e.printStackTrace(); } catch (ControladorException e) { e.printStackTrace(); } } /** * * Este caso de uso gera os avisos de cobran�a dos documentos de cobran�a * * [UC0575] Emitir Aviso de Cobran�a * * * @author S�vio Luiz * @data 02/04/2007 * * @param * @return void */ public void emitirAvisoCobranca(CobrancaAcaoAtividadeCronograma cobrancaAcaoAtividadeCronograma, CobrancaAcaoAtividadeComando cobrancaAcaoAtividadeComando, Date dataAtualPesquisa, CobrancaAcao acaoCobranca, CobrancaGrupo grupoCobranca, CobrancaCriterio cobrancaCriterio) throws ControladorException { boolean flagFimPesquisa = false; final int quantidadeCobrancaDocumento = 1000; int quantidadeCobrancaDocumentoInicio = 0; /* * SistemaParametro sistemaParametro = getControladorUtil() * .pesquisarParametrosDoSistema(); */ StringBuilder cobrancaDocumentoTxt = new StringBuilder(); int sequencialImpressao = 0; Collection colecaoCobrancaDocumento = null; Integer idCronogramaAtividadeAcaoCobranca = null; Integer idComandoAtividadeAcaoCobranca = null; Integer idAcaoCobranca = null; if (cobrancaAcaoAtividadeCronograma != null && cobrancaAcaoAtividadeCronograma.getId() != null) { idCronogramaAtividadeAcaoCobranca = cobrancaAcaoAtividadeCronograma.getId(); } if (cobrancaAcaoAtividadeComando != null && cobrancaAcaoAtividadeComando.getId() != null) { idComandoAtividadeAcaoCobranca = cobrancaAcaoAtividadeComando.getId(); } if (acaoCobranca != null && acaoCobranca.getId() != null) { idAcaoCobranca = acaoCobranca.getId(); } while (!flagFimPesquisa) { try { System.out.println("***************************************"); System.out.println("ENTROU NO AVISO DE CORTE"); System.out.println("***************************************"); colecaoCobrancaDocumento = repositorioCobranca.pesquisarCobrancaDocumentoParaEmitir(idCronogramaAtividadeAcaoCobranca, idComandoAtividadeAcaoCobranca, dataAtualPesquisa, idAcaoCobranca, quantidadeCobrancaDocumentoInicio); System.out.println("***************************************"); System.out.println("QTD DE COBRANCA DOCUMENTO:" + colecaoCobrancaDocumento.size()); System.out.println("***************************************"); } catch (ErroRepositorioException ex) { ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } if (colecaoCobrancaDocumento != null && !colecaoCobrancaDocumento.isEmpty()) { System.out.println("***************************************"); System.out.println("QUANTIDADE COBRAN�A:" + colecaoCobrancaDocumento.size()); System.out.println("***************************************"); if (colecaoCobrancaDocumento.size() < quantidadeCobrancaDocumento) { flagFimPesquisa = true; } else { quantidadeCobrancaDocumentoInicio = quantidadeCobrancaDocumentoInicio + 1000; } // *********************************************************************** // ****PARTE COMENTADA DA DIVIS�O PARA IMPRESS�O DE DOCUMENTO // COBRAN�A**** // *********************************************************************** // int metadeColecao = 0; // if (colecaoCobrancaDocumento.size() % 2 == 0) { // metadeColecao = colecaoCobrancaDocumento.size() / 2; // } else { // metadeColecao = (colecaoCobrancaDocumento.size() / 2) + 1; // } // Map<Integer, Map<Object, Object>> // mapCobrancaDocumentoOrdenada = // dividirColecao(colecaoCobrancaDocumento); /* * if (mapCobrancaDocumentoOrdenada != null) { int countOrdem = * 0; * * while (countOrdem < mapCobrancaDocumentoOrdenada.size()) { * Map<Object, Object> mapCobrancaoDocumentoDivididas = * mapCobrancaDocumentoOrdenada .get(countOrdem); */ /* * Iterator iteratorCobrancaDocumento = * mapCobrancaoDocumentoDivididas .keySet().iterator(); */ Iterator iteratorCobrancaDocumento = colecaoCobrancaDocumento.iterator(); while (iteratorCobrancaDocumento.hasNext()) { CobrancaDocumento cobrancaDocumento = null; /* * if(quantidadeContas == 48){ System.out.println(""); } */ // int situacao = 0; cobrancaDocumento = (CobrancaDocumento) iteratorCobrancaDocumento.next(); String nomeClienteUsuario = null; Collection colecaoCobrancaDocumentoItemConta = null; Integer idClienteResponsavel = null; /* * Estes objetos auxiliar�o na formata��o da inscri��o que * ser� composta por informa��es do documento de cobran�a e * do im�vel a ele associado */ /* * Objeto que ser� utilizado para armazenar as informa��es * do documento de cobran�a de acordo com o layout definido * no caso de uso */ if (cobrancaDocumento != null) { sequencialImpressao++; try { nomeClienteUsuario = this.repositorioClienteImovel.pesquisarNomeClientePorImovel(cobrancaDocumento.getImovel() .getId()); idClienteResponsavel = this.repositorioClienteImovel.retornaIdClienteResponsavel(cobrancaDocumento.getImovel() .getId()); colecaoCobrancaDocumentoItemConta = this.repositorioCobranca .selecionarCobrancaDocumentoItemReferenteConta(cobrancaDocumento); } catch (ErroRepositorioException ex) { ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } if (colecaoCobrancaDocumentoItemConta != null && !colecaoCobrancaDocumentoItemConta.isEmpty()) { String idGrupo = null; // id do grupo if (idCronogramaAtividadeAcaoCobranca != null) { idGrupo = "" + grupoCobranca.getId(); } else { idGrupo = "" + cobrancaDocumento.getImovel().getQuadra().getRota().getCobrancaGrupo().getId(); } // Grupo-XX Entrega-XXXXXXXXXX String textoGrupoEntrega = "GRUPO-" + idGrupo + " ENTREGA-"; if (cobrancaDocumento.getEmpresa() != null) { textoGrupoEntrega += cobrancaDocumento.getEmpresa().getDescricao(); } cobrancaDocumentoTxt.append(Util.completaString(textoGrupoEntrega, 27)); // Inscri��o String idLocalidade = Util.adicionarZerosEsquedaNumero(3, "" + cobrancaDocumento.getLocalidade().getId()); String codigoSetorComercial = Util.adicionarZerosEsquedaNumero(3, "" + cobrancaDocumento.getCodigoSetorComercial()); String numeroQuadra = Util.adicionarZerosEsquedaNumero(3, "" + cobrancaDocumento.getNumeroQuadra()); String lote = Util.adicionarZerosEsquedaNumero(4, "" + cobrancaDocumento.getImovel().getLote()); String subLote = Util.adicionarZerosEsquedaNumero(3, "" + cobrancaDocumento.getImovel().getSubLote()); cobrancaDocumentoTxt.append(Util.completaString(idLocalidade + "." + codigoSetorComercial + "." + numeroQuadra + "." + lote + "." + subLote, 20)); // Nome da Localidade cobrancaDocumentoTxt.append(Util.completaString("" + cobrancaDocumento.getImovel().getLocalidade().getDescricao(), 25)); // nome cliente cobrancaDocumentoTxt.append(Util.completaString(nomeClienteUsuario, 50)); String nomeBairro = ""; String nomeMunicipio = ""; String siglaUnidadeFederecao = ""; String cepFormatado = ""; String[] parmsEnderecoImovel = getControladorEndereco().pesquisarEnderecoFormatadoDividido( cobrancaDocumento.getImovel().getId()); if (parmsEnderecoImovel != null) { // nome do bairro nomeBairro = "" + parmsEnderecoImovel[3]; // nome do municipio nomeMunicipio = "" + parmsEnderecoImovel[1]; // sigla da unidade federa��o siglaUnidadeFederecao = parmsEnderecoImovel[2]; cepFormatado = parmsEnderecoImovel[4]; } // endere�o do cliente com op��o de recebimento via // correio if (idClienteResponsavel != null) { String[] parmsEndereco = getControladorEndereco().pesquisarEnderecoClienteAbreviadoDividido( idClienteResponsavel); // endere�o sem municipio e unidade federa��o cobrancaDocumentoTxt.append(Util.completaString(parmsEndereco[0], 50)); // nome do bairro nomeBairro = "" + parmsEndereco[3]; // nome do municipio nomeMunicipio = "" + parmsEndereco[1]; // sigla da unidade federa��o siglaUnidadeFederecao = parmsEndereco[2]; cepFormatado = parmsEndereco[4]; } else { if (parmsEnderecoImovel != null) { // endere�o sem municipio e unidade // federa��o cobrancaDocumentoTxt.append(Util.completaString(parmsEnderecoImovel[0], 50)); } else { cobrancaDocumentoTxt.append(Util.completaString("", 50)); } } // nome Bairro cobrancaDocumentoTxt.append(Util.completaString(nomeBairro, 25)); // nome municipio cobrancaDocumentoTxt.append(Util.completaString(nomeMunicipio, 24)); // sigla unidade federacao cobrancaDocumentoTxt.append(Util.completaString(siglaUnidadeFederecao, 2)); // CEP // variavel cepFormatado foi preenchido de acordo // com a existencia de // cliente responsavel String cepStr = Util.completaString(cepFormatado, 8); String cepLabeled = "CEP. " + cepStr.substring(0, 5) + "-" + cepStr.substring(5, 8); cobrancaDocumentoTxt.append(Util.completaString(cepLabeled, 14)); // Sequencial de impressao [13] String sequencialImpressaoStr = Util.adicionarZerosEsquedaNumero(6, sequencialImpressao + ""); cobrancaDocumentoTxt.append("SEQ. " + sequencialImpressaoStr.substring(0, 3) + "." + sequencialImpressaoStr.substring(3, 6)); // Matr�cula do im�vel String matriculaStr = Util.adicionarZerosEsquedaNumero(8, "" + cobrancaDocumento.getImovel().getId()); cobrancaDocumentoTxt.append(matriculaStr.substring(0, 7) + "." + matriculaStr.substring(7, 8)); // Endere�o do im�vel sem municipio e unidade // federa��o cobrancaDocumentoTxt.append(Util.completaString(parmsEnderecoImovel[0], 50)); // sequencial do documento de cobranca String sequencialStr = Util .adicionarZerosEsquedaNumero(9, "" + cobrancaDocumento.getNumeroSequenciaDocumento()); cobrancaDocumentoTxt.append(sequencialStr.substring(0, 5) + "." + sequencialStr.substring(5, 9)); // Data de vencimento String dataVencimento = ""; dataVencimento = Util.formatarData(Util.adicionarNumeroDiasDeUmaData(new Date(), 15)); cobrancaDocumentoTxt.append(Util.completaString(dataVencimento, 10)); // idgrupo cobrancaDocumentoTxt.append(Util.completaString(idGrupo, 2)); cobrancaDocumentoTxt.append("-"); // c�digo da firma if (cobrancaDocumento.getEmpresa() != null) { cobrancaDocumentoTxt.append(Util.adicionarZerosEsquedaNumero(2, cobrancaDocumento.getEmpresa().getId() .toString())); } String representacaoNumericaCodBarra = ""; // Obt�m a representa��o num�rica do // c�digode // barra representacaoNumericaCodBarra = this.getControladorArrecadacao().obterRepresentacaoNumericaCodigoBarra(5, cobrancaDocumento.getValorDocumento(), cobrancaDocumento.getLocalidade().getId(), cobrancaDocumento.getImovel().getId(), null, null, null, null, String.valueOf(cobrancaDocumento.getNumeroSequenciaDocumento()), cobrancaDocumento.getDocumentoTipo().getId(), null, null, null); // Formata a representa��o n�merica do // c�digo de // barras String representacaoNumericaCodBarraFormatada = representacaoNumericaCodBarra.substring(0, 11) + " " + representacaoNumericaCodBarra.substring(11, 12) + " " + representacaoNumericaCodBarra.substring(12, 23) + " " + representacaoNumericaCodBarra.substring(23, 24) + " " + representacaoNumericaCodBarra.substring(24, 35) + " " + representacaoNumericaCodBarra.substring(35, 36) + " " + representacaoNumericaCodBarra.substring(36, 47) + " " + representacaoNumericaCodBarra.substring(47, 48); cobrancaDocumentoTxt.append(representacaoNumericaCodBarraFormatada); // Cria o objeto para gerar o c�digo de // barras // no // padr�o // intercalado 2 de 5 Interleaved2of5 codigoBarraIntercalado2de5 = new Interleaved2of5(); // Recupera a representa��o n�merica do // c�digo // de // barras // sem // os d�gitos verificadores String representacaoCodigoBarrasSemDigitoVerificador = representacaoNumericaCodBarra.substring(0, 11) + representacaoNumericaCodBarra.substring(12, 23) + representacaoNumericaCodBarra.substring(24, 35) + representacaoNumericaCodBarra.substring(36, 47); cobrancaDocumentoTxt.append(codigoBarraIntercalado2de5 .encodeValue(representacaoCodigoBarrasSemDigitoVerificador)); int quantidadesContas = 0; // em caso de ser carta de tarifa social n�o // formatar o txt if (idAcaoCobranca != null && (!idAcaoCobranca.equals(CobrancaAcao.CARTA_TARIFA_SOCIAL_LIGADO) && !idAcaoCobranca .equals(CobrancaAcao.CARTA_TARIFA_SOCIAL_CORTADO))) { quantidadesContas = 24; } else { quantidadesContas = 14; } // retorna o indicador de estouro e formata o // cobran�aDocumentoTxt com os dados formatarCobrancaDocumentoItemParaConta(cobrancaDocumentoTxt, colecaoCobrancaDocumentoItemConta, quantidadesContas, idAcaoCobranca); cobrancaDocumentoTxt.append(System.getProperty("line.separator")); } colecaoCobrancaDocumentoItemConta = null; } // }// fim do la�o que verifica // as 2 // contas }// fim la�o while do iterator do // objeto // helper // countOrdem++; // mapCobrancaoDocumentoDivididas = null; // // } } else { flagFimPesquisa = true; } // } else { // flagFimPesquisa = true; // } // colecaoCobrancaDocumento = null; } Date dataAtual = new Date(); String nomeZip = null; // em caso de ser carta de tarifa social n�o // formatar o txt if (idAcaoCobranca != null && (!idAcaoCobranca.equals(CobrancaAcao.CARTA_TARIFA_SOCIAL_LIGADO) && !idAcaoCobranca .equals(CobrancaAcao.CARTA_TARIFA_SOCIAL_CORTADO)) && !idAcaoCobranca.equals(CobrancaAcao.CARTA_TARIFA_SOCIAL_LIGADO_A_REVELIA)) { if (idAcaoCobranca.equals(CobrancaAcao.CARTA_COBRANCA_CORTADO)) { if (idCronogramaAtividadeAcaoCobranca != null) { nomeZip = "EMITIR_CARTA_CORTADO_GRUPO_" + grupoCobranca.getId() + "_" + Util.formatarData(dataAtual) + Util.formatarHoraSemDataSemDoisPontos(dataAtual); } else { String descricaoAbrevDocumentoTipo = ""; if (acaoCobranca != null && acaoCobranca.getDocumentoTipo() != null) { descricaoAbrevDocumentoTipo = acaoCobranca.getDocumentoTipo().getDescricaoAbreviado(); } String tituloComandoEventual = cobrancaAcaoAtividadeComando.getDescricaoTitulo(); nomeZip = descricaoAbrevDocumentoTipo + " " + tituloComandoEventual + " " + Util.formatarData(dataAtual) + Util.formatarHoraSemDataSemDoisPontos(dataAtual); nomeZip = nomeZip.replace("/", "_"); nomeZip = nomeZip.replace(" ", "_"); } } if (idAcaoCobranca.equals(CobrancaAcao.CARTA_COBRANCA_SUPRIMIDO)) { if (idCronogramaAtividadeAcaoCobranca != null) { nomeZip = "EMITIR_CARTA_SUPRIMIDO_GRUPO_" + grupoCobranca.getId() + "_" + Util.formatarData(dataAtual) + Util.formatarHoraSemDataSemDoisPontos(dataAtual); } else { String descricaoAbrevDocumentoTipo = ""; if (acaoCobranca != null && acaoCobranca.getDocumentoTipo() != null) { descricaoAbrevDocumentoTipo = acaoCobranca.getDocumentoTipo().getDescricaoAbreviado(); } String tituloComandoEventual = cobrancaAcaoAtividadeComando.getDescricaoTitulo(); nomeZip = descricaoAbrevDocumentoTipo + " " + tituloComandoEventual + " " + Util.formatarData(dataAtual) + Util.formatarHoraSemDataSemDoisPontos(dataAtual); nomeZip = nomeZip.replace("/", "_"); nomeZip = nomeZip.replace(" ", "_"); } } if (idAcaoCobranca.equals(CobrancaAcao.CARTA_COBRANCA_LIGADO)) { if (idCronogramaAtividadeAcaoCobranca != null) { nomeZip = "EMITIR_CARTA_LIGADO_GRUPO_" + grupoCobranca.getId() + "_" + Util.formatarData(dataAtual) + Util.formatarHoraSemDataSemDoisPontos(dataAtual); } else { String descricaoAbrevDocumentoTipo = ""; if (acaoCobranca != null && acaoCobranca.getDocumentoTipo() != null) { descricaoAbrevDocumentoTipo = acaoCobranca.getDocumentoTipo().getDescricaoAbreviado(); } String tituloComandoEventual = cobrancaAcaoAtividadeComando.getDescricaoTitulo(); nomeZip = descricaoAbrevDocumentoTipo + " " + tituloComandoEventual + " " + Util.formatarData(dataAtual) + Util.formatarHoraSemDataSemDoisPontos(dataAtual); nomeZip = nomeZip.replace("/", "_"); nomeZip = nomeZip.replace(" ", "_"); } } if (idAcaoCobranca.equals(CobrancaAcao.CARTA_COBRANCA_LIGADO_A_REVELIA)) { if (idCronogramaAtividadeAcaoCobranca != null) { nomeZip = "EMITIR_CARTA_LIGADO_A_REVELIA_GRUPO_" + grupoCobranca.getId() + "_" + Util.formatarData(dataAtual) + Util.formatarHoraSemDataSemDoisPontos(dataAtual); } else { String descricaoAbrevDocumentoTipo = ""; if (acaoCobranca != null && acaoCobranca.getDocumentoTipo() != null) { descricaoAbrevDocumentoTipo = acaoCobranca.getDocumentoTipo().getDescricaoAbreviado(); } String tituloComandoEventual = cobrancaAcaoAtividadeComando.getDescricaoTitulo(); nomeZip = descricaoAbrevDocumentoTipo + " " + tituloComandoEventual + " " + Util.formatarData(dataAtual) + Util.formatarHoraSemDataSemDoisPontos(dataAtual); nomeZip = nomeZip.replace("/", "_"); nomeZip = nomeZip.replace(" ", "_"); } } } else { if (idAcaoCobranca.equals(CobrancaAcao.CARTA_TARIFA_SOCIAL_CORTADO)) { if (idCronogramaAtividadeAcaoCobranca != null) { nomeZip = "EMITIR_CARTA_TARIFA_SOCIAL_CORTADO_GRUPO_" + grupoCobranca.getId() + "_" + Util.formatarData(dataAtual); } else { String descricaoAbrevDocumentoTipo = ""; if (acaoCobranca != null && acaoCobranca.getDocumentoTipo() != null) { descricaoAbrevDocumentoTipo = acaoCobranca.getDocumentoTipo().getDescricaoAbreviado(); } String tituloComandoEventual = cobrancaAcaoAtividadeComando.getDescricaoTitulo(); nomeZip = descricaoAbrevDocumentoTipo + " " + tituloComandoEventual + " " + Util.formatarData(dataAtual) + Util.formatarHoraSemDataSemDoisPontos(dataAtual); nomeZip = nomeZip.replace("/", "_"); nomeZip = nomeZip.replace(" ", "_"); } } if (idAcaoCobranca.equals(CobrancaAcao.CARTA_TARIFA_SOCIAL_LIGADO)) { if (idCronogramaAtividadeAcaoCobranca != null) { nomeZip = "EMITIR_CARTA_TARIFA_SOCIAL_LIGADO_GRUPO_" + grupoCobranca.getId() + "_" + Util.formatarData(dataAtual); } else { String descricaoAbrevDocumentoTipo = ""; if (acaoCobranca != null && acaoCobranca.getDocumentoTipo() != null) { descricaoAbrevDocumentoTipo = acaoCobranca.getDocumentoTipo().getDescricaoAbreviado(); } String tituloComandoEventual = cobrancaAcaoAtividadeComando.getDescricaoTitulo(); nomeZip = descricaoAbrevDocumentoTipo + " " + tituloComandoEventual + " " + Util.formatarData(dataAtual) + Util.formatarHoraSemDataSemDoisPontos(dataAtual); nomeZip = nomeZip.replace("/", "_"); nomeZip = nomeZip.replace(" ", "_"); } } if (idAcaoCobranca.equals(CobrancaAcao.CARTA_TARIFA_SOCIAL_LIGADO_A_REVELIA)) { if (idCronogramaAtividadeAcaoCobranca != null) { nomeZip = "EMITIR_CARTA_TARIFA_SOCIAL_LIGADO_A_REVELIA_GRUPO_" + grupoCobranca.getId() + "_" + Util.formatarData(dataAtual); } else { String descricaoAbrevDocumentoTipo = ""; if (acaoCobranca != null && acaoCobranca.getDocumentoTipo() != null) { descricaoAbrevDocumentoTipo = acaoCobranca.getDocumentoTipo().getDescricaoAbreviado(); } String tituloComandoEventual = cobrancaAcaoAtividadeComando.getDescricaoTitulo(); nomeZip = descricaoAbrevDocumentoTipo + " " + tituloComandoEventual + " " + Util.formatarData(dataAtual) + Util.formatarHoraSemDataSemDoisPontos(dataAtual); nomeZip = nomeZip.replace("/", "_"); nomeZip = nomeZip.replace(" ", "_"); } } } nomeZip = nomeZip.replace("/", "_"); // pegar o arquivo, zipar pasta e arquivo e escrever no stream try { System.out.println("***************************************"); System.out.println("INICO DA CRIACAO DO ARQUIVO"); System.out.println("***************************************"); if (cobrancaDocumentoTxt != null && cobrancaDocumentoTxt.length() != 0) { // criar o arquivo zip File compactado = new File(nomeZip + ".zip"); // nomeZip ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(compactado)); File leitura = new File(nomeZip + ".txt"); BufferedWriter out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(leitura.getAbsolutePath()))); out.write(cobrancaDocumentoTxt.toString()); out.close(); ZipUtil.adicionarArquivo(zos, leitura); // close the stream zos.close(); leitura.delete(); } System.out.println("***************************************"); System.out.println("FIM DA CRIACAO DO ARQUIVO"); System.out.println("***************************************"); } catch (IOException e) { e.printStackTrace(); throw new ControladorException("erro.sistema", e); } catch (Exception e) { e.printStackTrace(); throw new ControladorException("erro.sistema", e); } } /** * Formata a string builder de cobran�a documento de acordo com a quantidade * de itens.Caso a quantidade de itens seja maior que 24 ent�o as contas com * o ano mes referencia mais antigas ser�o somadas (os valores do item e dos * acrescimos) e formatadas na stringbuilder. * * [UC0575] Emitir Aviso de Cobran�a * * @author S�vio Luiz * @date 09/04/2007 * * @return * @throws ControladorException */ protected int formatarCobrancaDocumentoItemParaConta(StringBuilder cobrancaDocumentoTxt, Collection colecaoCobrancaDocumentoItemConta, int quantidadeContas, Integer idAcaoCobranca) throws ControladorException { int indicadorEstouro = 0; int complementoEspecosBranco = 0; BigDecimal somaValorItem = new BigDecimal(0); BigDecimal somaValorAcrescimos = new BigDecimal(0); BigDecimal somaValorTotal = new BigDecimal(0); // em caso de ser carta de tarifa social n�o // formatar o txt if (idAcaoCobranca != null && (!idAcaoCobranca.equals(CobrancaAcao.CARTA_TARIFA_SOCIAL_LIGADO) && !idAcaoCobranca .equals(CobrancaAcao.CARTA_TARIFA_SOCIAL_CORTADO))) { complementoEspecosBranco = quantidadeContas * 63; } else { complementoEspecosBranco = quantidadeContas * 35; } int countImpressao = colecaoCobrancaDocumentoItemConta.size() - (quantidadeContas - 1); if (colecaoCobrancaDocumentoItemConta.size() > quantidadeContas) { indicadorEstouro = 1; CalcularValorDataVencimentoAnteriorHelper calcularValorDataVencimentoAnteriorHelper = this.calcularValorDataVencimentoAnterior( colecaoCobrancaDocumentoItemConta, quantidadeContas); // Ano mes de referencia da conta anterior cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda("AT� ", 11)); complementoEspecosBranco = complementoEspecosBranco - 11; // data de vencimento anterior cobrancaDocumentoTxt.append(Util.completaString( Util.formatarData(calcularValorDataVencimentoAnteriorHelper.getDataVencimentoAnterior()), 10)); complementoEspecosBranco = complementoEspecosBranco - 10; String valorItemAnterior = Util.formataBigDecimal(calcularValorDataVencimentoAnteriorHelper.getValorAnterior(), 2, true); // valorItemAnterior = valorItemAnterior.replace(".", ","); // Valor do item anterior cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(valorItemAnterior, 14)); complementoEspecosBranco = complementoEspecosBranco - 14; somaValorItem = somaValorItem.add(calcularValorDataVencimentoAnteriorHelper.getValorAnterior()); // em caso de ser carta de tarifa social n�o // formatar o txt if (idAcaoCobranca != null && (!idAcaoCobranca.equals(CobrancaAcao.CARTA_TARIFA_SOCIAL_LIGADO) && !idAcaoCobranca .equals(CobrancaAcao.CARTA_TARIFA_SOCIAL_CORTADO))) { String valorAcrescimosAnterior = Util.formataBigDecimal( calcularValorDataVencimentoAnteriorHelper.getValorAcrescimosAnterior(), 2, true); // valorAcrescimosAnterior = // valorAcrescimosAnterior.replace(".", ""); // Valor dos encargos anterior cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(valorAcrescimosAnterior, 14)); complementoEspecosBranco = complementoEspecosBranco - 14; somaValorAcrescimos = somaValorAcrescimos.add(calcularValorDataVencimentoAnteriorHelper.getValorAcrescimosAnterior()); BigDecimal valorTotal = calcularValorDataVencimentoAnteriorHelper.getValorAcrescimosAnterior().add( calcularValorDataVencimentoAnteriorHelper.getValorAnterior()); String valorTotalConta = Util.formataBigDecimal(valorTotal, 2, true); // valorAcrescimosAnterior = // valorAcrescimosAnterior.replace(".", ""); // Valor dos encargos anterior cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(valorTotalConta, 14)); complementoEspecosBranco = complementoEspecosBranco - 14; somaValorTotal = somaValorTotal.add(valorTotal); } } if (countImpressao <= 1) { Iterator iteratorColecaoCobrancaDocumentoItem = colecaoCobrancaDocumentoItemConta.iterator(); CobrancaDocumentoItem cobrancaDocumentoItem = null; while (iteratorColecaoCobrancaDocumentoItem.hasNext()) { cobrancaDocumentoItem = (CobrancaDocumentoItem) iteratorColecaoCobrancaDocumentoItem.next(); // Ano mes de referencia da conta cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda( Util.formatarAnoMesParaMesAno(cobrancaDocumentoItem.getContaGeral().getConta().getReferencia()), 11)); complementoEspecosBranco = complementoEspecosBranco - 11; // data de vencimento cobrancaDocumentoTxt.append(Util.completaString( Util.formatarData(cobrancaDocumentoItem.getContaGeral().getConta().getDataVencimentoConta()), 10)); complementoEspecosBranco = complementoEspecosBranco - 10; String valorItem = Util.formataBigDecimal(cobrancaDocumentoItem.getValorItemCobrado(), 2, true); // valorItem = valorItem.replace(".", ""); // Valor do item cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(valorItem, 14)); complementoEspecosBranco = complementoEspecosBranco - 14; somaValorItem = somaValorItem.add(cobrancaDocumentoItem.getValorItemCobrado()); // em caso de ser carta de tarifa social n�o // formatar o txt if (idAcaoCobranca != null && (!idAcaoCobranca.equals(CobrancaAcao.CARTA_TARIFA_SOCIAL_LIGADO) && !idAcaoCobranca .equals(CobrancaAcao.CARTA_TARIFA_SOCIAL_CORTADO))) { String valorAcrescimos = Util.formataBigDecimal(cobrancaDocumentoItem.getValorAcrescimos(), 2, true); // valorAcrescimos = valorAcrescimos.replace(".", ""); // Valor dos encargos cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(valorAcrescimos, 14)); complementoEspecosBranco = complementoEspecosBranco - 14; somaValorAcrescimos = somaValorAcrescimos.add(cobrancaDocumentoItem.getValorAcrescimos()); String valorTotalConta = Util.formataBigDecimal( cobrancaDocumentoItem.getValorAcrescimos().add(cobrancaDocumentoItem.getValorItemCobrado()), 2, true); // Valor total da conta cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(valorTotalConta, 14)); complementoEspecosBranco = complementoEspecosBranco - 14; somaValorTotal = somaValorTotal.add(cobrancaDocumentoItem.getValorAcrescimos().add( cobrancaDocumentoItem.getValorItemCobrado())); } } } else { CobrancaDocumentoItem cobrancaDocumentoItem = null; while (countImpressao < colecaoCobrancaDocumentoItemConta.size()) { cobrancaDocumentoItem = (CobrancaDocumentoItem) ((List) colecaoCobrancaDocumentoItemConta).get(countImpressao); // Ano mes de referencia da conta cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda( Util.formatarAnoMesParaMesAno(cobrancaDocumentoItem.getContaGeral().getConta().getReferencia()), 11)); complementoEspecosBranco = complementoEspecosBranco - 11; // data de vencimento cobrancaDocumentoTxt.append(Util.completaString( Util.formatarData(cobrancaDocumentoItem.getContaGeral().getConta().getDataVencimentoConta()), 10)); complementoEspecosBranco = complementoEspecosBranco - 10; String valorItem = Util.formataBigDecimal(cobrancaDocumentoItem.getValorItemCobrado(), 2, true); // valorItem = valorItem.replace(".", ""); // Valor do item cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(valorItem, 14)); complementoEspecosBranco = complementoEspecosBranco - 14; somaValorItem = somaValorItem.add(cobrancaDocumentoItem.getValorItemCobrado()); // em caso de ser carta de tarifa social n�o // formatar o txt if (idAcaoCobranca != null && (!idAcaoCobranca.equals(CobrancaAcao.CARTA_TARIFA_SOCIAL_LIGADO) && !idAcaoCobranca .equals(CobrancaAcao.CARTA_TARIFA_SOCIAL_CORTADO))) { String valorAcrescimos = Util.formataBigDecimal(cobrancaDocumentoItem.getValorAcrescimos(), 2, true); // valorAcrescimos = valorAcrescimos.replace(".", ""); // Valor dos encargos cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(valorAcrescimos, 14)); complementoEspecosBranco = complementoEspecosBranco - 14; somaValorAcrescimos = somaValorAcrescimos.add(cobrancaDocumentoItem.getValorAcrescimos()); String valorTotalConta = Util.formataBigDecimal( cobrancaDocumentoItem.getValorAcrescimos().add(cobrancaDocumentoItem.getValorItemCobrado()), 2, true); // Valor total da conta cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(valorTotalConta, 14)); complementoEspecosBranco = complementoEspecosBranco - 14; somaValorTotal = somaValorTotal.add(cobrancaDocumentoItem.getValorAcrescimos().add( cobrancaDocumentoItem.getValorItemCobrado())); } countImpressao++; } } cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda("", complementoEspecosBranco)); // em caso de ser carta de tarifa social n�o // formatar o txt if (idAcaoCobranca != null && (!idAcaoCobranca.equals(CobrancaAcao.CARTA_TARIFA_SOCIAL_LIGADO) && !idAcaoCobranca .equals(CobrancaAcao.CARTA_TARIFA_SOCIAL_CORTADO))) { // Quant. contas em debito cobrancaDocumentoTxt.append(Util.adicionarZerosEsquedaNumero(3, "" + colecaoCobrancaDocumentoItemConta.size())); } // soma dos valores item (valor historico) String somaValorItemStr = Util.formataBigDecimal(somaValorItem, 2, true); cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(somaValorItemStr, 14)); // valor historico asteriscos cobrancaDocumentoTxt.append(Util.completaStringComAsteriscos(somaValorItemStr, 14)); if (idAcaoCobranca != null && (!idAcaoCobranca.equals(CobrancaAcao.CARTA_TARIFA_SOCIAL_LIGADO) && !idAcaoCobranca .equals(CobrancaAcao.CARTA_TARIFA_SOCIAL_CORTADO))) { // soma dos valores acrescimos (valor encargos) String somaValorAcrescimosStr = Util.formataBigDecimal(somaValorAcrescimos, 2, true); cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(somaValorAcrescimosStr, 14)); // soma dos valores acrescimos (debitos vencidos) String somaValorTotalStr = Util.formataBigDecimal(somaValorTotal, 2, true); cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(somaValorTotalStr, 14)); } return indicadorEstouro; } /** * Formata a string builder de cobran�a documento de acordo com a quantidade * de itens.Caso a quantidade de itens seja maior que 24 ent�o as contas com * o ano mes referencia mais antigas ser�o somadas (os valores do item e dos * acrescimos) e formatadas na stringbuilder. * * [UC0575] Emitir Aviso de Cobran�a * * @author S�vio Luiz * @date 09/04/2007 * * @return * @throws ControladorException */ protected int formatarCobrancaDocumentoItemParaContaComParcelamento(StringBuilder cobrancaDocumentoTxt, Collection colecaoCobrancaDocumentoItemConta, int quantidadeContas) throws ControladorException { int indicadorEstouro = 0; int complementoEspecosBranco = quantidadeContas * 49; BigDecimal valorTotalContas = new BigDecimal(0); int countImpressao = colecaoCobrancaDocumentoItemConta.size() - (quantidadeContas - 1); if (colecaoCobrancaDocumentoItemConta.size() > quantidadeContas) { indicadorEstouro = 1; CalcularValorDataVencimentoAnteriorHelper calcularValorDataVencimentoAnteriorHelper = this.calcularValorDataVencimentoAnterior( colecaoCobrancaDocumentoItemConta, quantidadeContas); int referenciaAnterior = Util.subtraiAteSeisMesesAnoMesReferencia(calcularValorDataVencimentoAnteriorHelper .getCobrancaDocumentoItemNaoAnterior().getContaGeral().getConta().getReferencia(), 1); // Ano mes de referencia da conta anterior cobrancaDocumentoTxt.append("AT� " + Util.completaString(Util.formatarAnoMesParaMesAno(referenciaAnterior), 7)); complementoEspecosBranco = complementoEspecosBranco - 11; // data de vencimento anterior cobrancaDocumentoTxt.append(Util.completaString( Util.formatarData(calcularValorDataVencimentoAnteriorHelper.getDataVencimentoAnterior()), 10)); complementoEspecosBranco = complementoEspecosBranco - 10; // pesquisa o valor do debito cobrado BigDecimal valorParcelamento = getControladorFaturamento().pesquisarValorMultasCobradasPorFinanciamnetoTipo( calcularValorDataVencimentoAnteriorHelper.getCobrancaDocumentoItemNaoAnterior().getContaGeral().getConta().getId()); // pesquisa o valor do credito realizado BigDecimal valorCreditoRealizado = getControladorFaturamento().pesquisarValorCreditoPorOrigem( calcularValorDataVencimentoAnteriorHelper.getCobrancaDocumentoItemNaoAnterior().getContaGeral().getConta().getId()); if (valorParcelamento != null) { if (valorCreditoRealizado != null) { valorParcelamento = valorParcelamento.subtract(valorCreditoRealizado); } String valorParcelamentoAnterior = Util.formataBigDecimal(valorParcelamento, 2, true); cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(valorParcelamentoAnterior, 14)); } else { cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda("", 14)); } complementoEspecosBranco = complementoEspecosBranco - 14; // Valor do item anterior String valorItemAnterior = Util.formataBigDecimal(calcularValorDataVencimentoAnteriorHelper.getValorAnterior(), 2, true); cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(valorItemAnterior, 14)); complementoEspecosBranco = complementoEspecosBranco - 14; if (calcularValorDataVencimentoAnteriorHelper.getValorAnterior() != null) { valorTotalContas = valorTotalContas.add(calcularValorDataVencimentoAnteriorHelper.getValorAnterior()); } } // equivalente ao teste: colecaoCobrancaDocumentoItemConta.size >= // quantidadeContas if (countImpressao <= 1) { Iterator iteratorColecaoCobrancaDocumentoItem = colecaoCobrancaDocumentoItemConta.iterator(); CobrancaDocumentoItem cobrancaDocumentoItem = null; while (iteratorColecaoCobrancaDocumentoItem.hasNext()) { cobrancaDocumentoItem = (CobrancaDocumentoItem) iteratorColecaoCobrancaDocumentoItem.next(); // Ano mes de referencia da conta cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda( Util.formatarAnoMesParaMesAno(cobrancaDocumentoItem.getContaGeral().getConta().getReferencia()), 11)); complementoEspecosBranco = complementoEspecosBranco - 11; // data de vencimento cobrancaDocumentoTxt.append(Util.completaString( Util.formatarData(cobrancaDocumentoItem.getContaGeral().getConta().getDataVencimentoConta()), 10)); complementoEspecosBranco = complementoEspecosBranco - 10; // pesquisa o valor do parcelamento BigDecimal valorParcelamento = getControladorFaturamento().pesquisarValorMultasCobradasPorFinanciamnetoTipo( cobrancaDocumentoItem.getContaGeral().getConta().getId()); // pesquisa o valor do credito realizado BigDecimal valorCreditoRealizado = getControladorFaturamento().pesquisarValorCreditoPorOrigem( cobrancaDocumentoItem.getContaGeral().getConta().getId()); if (valorParcelamento != null) { if (valorCreditoRealizado != null) { valorParcelamento = valorParcelamento.subtract(valorCreditoRealizado); } String valorParcelamentoAnterior = Util.formataBigDecimal(valorParcelamento, 2, true); cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(valorParcelamentoAnterior, 14)); } else { cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda("", 14)); } complementoEspecosBranco = complementoEspecosBranco - 14; // Valor do item String valorItem = Util.formataBigDecimal(cobrancaDocumentoItem.getValorItemCobrado(), 2, true); cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(valorItem, 14)); complementoEspecosBranco = complementoEspecosBranco - 14; if (cobrancaDocumentoItem.getValorItemCobrado() != null) { valorTotalContas = valorTotalContas.add(cobrancaDocumentoItem.getValorItemCobrado()); } } } else { CobrancaDocumentoItem cobrancaDocumentoItem = null; while (countImpressao < colecaoCobrancaDocumentoItemConta.size()) { cobrancaDocumentoItem = (CobrancaDocumentoItem) ((List) colecaoCobrancaDocumentoItemConta).get(countImpressao); // Ano mes de referencia da conta cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda( Util.formatarAnoMesParaMesAno(cobrancaDocumentoItem.getContaGeral().getConta().getReferencia()), 11)); complementoEspecosBranco = complementoEspecosBranco - 11; // data de vencimento cobrancaDocumentoTxt.append(Util.completaString( Util.formatarData(cobrancaDocumentoItem.getContaGeral().getConta().getDataVencimentoConta()), 10)); complementoEspecosBranco = complementoEspecosBranco - 10; // pesquisa o valor do parcelamento BigDecimal valorParcelamento = getControladorFaturamento().pesquisarValorMultasCobradasPorFinanciamnetoTipo( cobrancaDocumentoItem.getContaGeral().getConta().getId()); // pesquisa o valor do credito realizado BigDecimal valorCreditoRealizado = getControladorFaturamento().pesquisarValorCreditoPorOrigem( cobrancaDocumentoItem.getContaGeral().getConta().getId()); if (valorParcelamento != null) { if (valorCreditoRealizado != null) { valorParcelamento = valorParcelamento.subtract(valorCreditoRealizado); } String valorParcelamentoAnterior = Util.formataBigDecimal(valorParcelamento, 2, true); cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(valorParcelamentoAnterior, 14)); } else { cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda("", 14)); } complementoEspecosBranco = complementoEspecosBranco - 14; // Valor do item String valorItem = Util.formataBigDecimal(cobrancaDocumentoItem.getValorItemCobrado(), 2, true); cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(valorItem, 14)); complementoEspecosBranco = complementoEspecosBranco - 14; if (cobrancaDocumentoItem.getValorItemCobrado() != null) { valorTotalContas = valorTotalContas.add(cobrancaDocumentoItem.getValorItemCobrado()); } countImpressao++; } } cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda("", complementoEspecosBranco)); if (valorTotalContas != null) { String valorTotalContasStr = Util.formataBigDecimal(valorTotalContas, 2, true); cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(valorTotalContasStr, 14)); cobrancaDocumentoTxt.append(Util.completaStringComAsteriscos(valorTotalContasStr, 14)); } else { cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda("", 28)); } return indicadorEstouro; } /** * Somat�rio dos valores do item e dos acrescimos das guias de pagamento dos * documentos itens recuperado da cobran�a de documento * * [UC0575] Emitir Aviso de Cobran�a * * @author S�vio Luiz * @date 09/04/2007 * * @return * @throws ControladorException */ protected int somatorioValoresAcrescimosDocumentoItem(StringBuilder cobrancaDocumentoTxt, Collection colecaoCobrancaDocumentoItemGuiaPagamento) { int quantidadeGuiasPagamentoDebito = 0; // if (colecaoCobrancaDocumentoItemGuiaPagamento != null // && !colecaoCobrancaDocumentoItemGuiaPagamento.isEmpty()) { // quantidadeGuiasPagamentoDebito = // colecaoCobrancaDocumentoItemGuiaPagamento // .size(); // Iterator iteratorColecaoCobrancaDocumentoItemGuiaPagamento = // colecaoCobrancaDocumentoItemGuiaPagamento // .iterator(); // BigDecimal somatorioValorItemGuia = new BigDecimal("0.00"); // BigDecimal somatorioValorAcrescimosGuia = new BigDecimal("0.00"); // while (iteratorColecaoCobrancaDocumentoItemGuiaPagamento.hasNext()) { // Object[] dadosCobrancaoDocumentoItem = (Object[]) // iteratorColecaoCobrancaDocumentoItemGuiaPagamento // .next(); // if (dadosCobrancaoDocumentoItem != null) { // if (dadosCobrancaoDocumentoItem[0] != null) { // somatorioValorItemGuia // .add((BigDecimal) dadosCobrancaoDocumentoItem[0]); // } // if (dadosCobrancaoDocumentoItem[1] != null) { // somatorioValorAcrescimosGuia // .add((BigDecimal) dadosCobrancaoDocumentoItem[1]); // } // } // } // String somatorioValorItemGuiaString = "" + somatorioValorItemGuia; // String somatorioValorAcrescimosGuiaString = "" // + somatorioValorAcrescimosGuia; // somatorioValorItemGuiaString = somatorioValorItemGuiaString // .replace(".", ""); // somatorioValorAcrescimosGuiaString = // somatorioValorAcrescimosGuiaString // .replace(".", ""); // // // valor da guia de pagamento // cobrancaDocumentoTxt.append(Util.completaString( // somatorioValorItemGuiaString, 11)); // // // valor de encargos guia de pagamento // cobrancaDocumentoTxt.append(Util.completaString( // somatorioValorAcrescimosGuiaString, 11)); // // } else { // valor da guia de pagamento cobrancaDocumentoTxt.append(Util.adicionarZerosEsquedaNumero(11, "")); // valor de encargos guia de pagamento cobrancaDocumentoTxt.append(Util.adicionarZerosEsquedaNumero(11, "")); // } return quantidadeGuiasPagamentoDebito; } /** * Verificar se os itens do parcelamento(Conta, Debito a cobrar e Credit a * realizar) j� est�o no historico * * [UC0252] Desfazer Parcelamentos de Debito * * @author Vivianne Sousa * @date 09/04/2007 * * @return * @throws ControladorException */ public boolean verificarItensParcelamentoNoHistorico(Integer idImovel, Integer idParcelamento) throws ControladorException { boolean retorno = false; try { Collection colecaoContaHistorico = null; Collection colecaoDebitoACobrar = null; Collection colecaoCreditoARealizar = null; colecaoContaHistorico = repositorioCobranca.verificarContaHistoricoParcelamento(idImovel, idParcelamento); if (colecaoContaHistorico != null && !colecaoContaHistorico.isEmpty()) { retorno = true; } else { colecaoDebitoACobrar = repositorioCobranca.verificarContaHistoricoParcelamento(idImovel, idParcelamento); if (colecaoDebitoACobrar != null && !colecaoDebitoACobrar.isEmpty()) { retorno = true; } else { colecaoCreditoARealizar = repositorioCobranca.verificarCreditoARealizarHistoricoParcelamento(idImovel, idParcelamento); if (colecaoCreditoARealizar != null && !colecaoCreditoARealizar.isEmpty()) { retorno = true; } } } } catch (Exception e) { sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", e); } return retorno; } /** * * Este caso de uso gera os avisos de cobran�a dos documentos de cobran�a * * [UC0575] Emitir Parcelamento em Atraso * * * @author S�vio Luiz * @data 12/04/2007 * * @param * @return void */ public void emitirParcelamentoEmAtraso(CobrancaAcaoAtividadeCronograma cobrancaAcaoAtividadeCronograma, CobrancaAcaoAtividadeComando cobrancaAcaoAtividadeComando, Date dataAtualPesquisa, CobrancaAcao acaoCobranca, CobrancaGrupo grupoCobranca, CobrancaCriterio cobrancaCriterio) throws ControladorException { boolean flagFimPesquisa = false; final int quantidadeCobrancaDocumento = 1000; int quantidadeCobrancaDocumentoInicio = 0; SistemaParametro sistemaParametro = getControladorUtil().pesquisarParametrosDoSistema(); StringBuilder cobrancaDocumentoTxt = new StringBuilder(); int sequencialImpressao = 0; Collection colecaoCobrancaDocumento = null; Integer idCronogramaAtividadeAcaoCobranca = null; Integer idComandoAtividadeAcaoCobranca = null; Integer idAcaoCobranca = null; if (cobrancaAcaoAtividadeCronograma != null && cobrancaAcaoAtividadeCronograma.getId() != null) { idCronogramaAtividadeAcaoCobranca = cobrancaAcaoAtividadeCronograma.getId(); } if (cobrancaAcaoAtividadeComando != null && cobrancaAcaoAtividadeComando.getId() != null) { idComandoAtividadeAcaoCobranca = cobrancaAcaoAtividadeComando.getId(); } if (acaoCobranca != null && acaoCobranca.getId() != null) { idAcaoCobranca = acaoCobranca.getId(); } while (!flagFimPesquisa) { try { System.out.println("***************************************"); System.out.println("ENTROU NO PARCELAMENTO EM ATRASO"); System.out.println("***************************************"); colecaoCobrancaDocumento = repositorioCobranca.pesquisarCobrancaDocumentoParaEmitir(idCronogramaAtividadeAcaoCobranca, idComandoAtividadeAcaoCobranca, dataAtualPesquisa, idAcaoCobranca, quantidadeCobrancaDocumentoInicio); System.out.println("***************************************"); System.out.println("QTD DE COBRANCA DOCUMENTO:" + colecaoCobrancaDocumento.size()); System.out.println("***************************************"); } catch (ErroRepositorioException ex) { ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } if (colecaoCobrancaDocumento != null && !colecaoCobrancaDocumento.isEmpty()) { System.out.println("***************************************"); System.out.println("QUANTIDADE COBRAN�A:" + colecaoCobrancaDocumento.size()); System.out.println("***************************************"); if (colecaoCobrancaDocumento.size() < quantidadeCobrancaDocumento) { flagFimPesquisa = true; } else { quantidadeCobrancaDocumentoInicio = quantidadeCobrancaDocumentoInicio + 1000; } Iterator iteratorCobrancaDocumento = colecaoCobrancaDocumento.iterator(); while (iteratorCobrancaDocumento.hasNext()) { CobrancaDocumento cobrancaDocumento = null; // int situacao = 0; cobrancaDocumento = (CobrancaDocumento) iteratorCobrancaDocumento.next(); String nomeClienteUsuario = null; Collection colecaoCobrancaDocumentoItemConta = null; Integer idClienteResponsavel = null; Parcelamento parcelamento = null; /* * Estes objetos auxiliar�o na formata��o da inscri��o que * ser� composta por informa��es do documento de cobran�a e * do im�vel a ele associado */ /* * Objeto que ser� utilizado para armazenar as informa��es * do documento de cobran�a de acordo com o layout definido * no caso de uso */ /* * while (situacao < 2) { if (situacao == 0) { situacao = 1; * sequencialImpressao = atualizaSequencial( * sequencialImpressao, situacao, metadeColecao); } else { * cobrancaDocumento = (CobrancaDocumento) * mapCobrancaoDocumentoDivididas .get(cobrancaDocumento); * situacao = 2; sequencialImpressao = atualizaSequencial( * sequencialImpressao, situacao, metadeColecao); } */ if (cobrancaDocumento != null) { sequencialImpressao++; try { nomeClienteUsuario = this.repositorioClienteImovel.pesquisarNomeClientePorImovel(cobrancaDocumento.getImovel() .getId()); idClienteResponsavel = this.repositorioClienteImovel.retornaIdClienteResponsavel(cobrancaDocumento.getImovel() .getId()); colecaoCobrancaDocumentoItemConta = this.repositorioCobranca .selecionarCobrancaDocumentoItemReferenteConta(cobrancaDocumento); parcelamento = pesquisarDadosParcelamentoComMaiorTimestemp(cobrancaDocumento.getImovel().getId()); } catch (ErroRepositorioException ex) { ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } if (colecaoCobrancaDocumentoItemConta != null && !colecaoCobrancaDocumentoItemConta.isEmpty()) { String idGrupo = null; // id do grupo if (idCronogramaAtividadeAcaoCobranca != null) { idGrupo = "" + grupoCobranca.getId(); } else { idGrupo = "" + +cobrancaDocumento.getImovel().getQuadra().getRota().getCobrancaGrupo().getId(); } // Grupo-XX Entrega-XXXXXXXXXX String textoGrupoEntrega = "GRUPO-" + Util.adicionarZerosEsquedaNumeroTruncando(2, idGrupo) + " ENTREGA-"; if (cobrancaDocumento.getEmpresa() != null) { textoGrupoEntrega += cobrancaDocumento.getEmpresa().getDescricao(); } cobrancaDocumentoTxt.append(Util.completaString(textoGrupoEntrega, 27)); // Inscri��o String idLocalidade = Util.adicionarZerosEsquedaNumero(3, "" + cobrancaDocumento.getLocalidade().getId()); String codigoSetorComercial = Util.adicionarZerosEsquedaNumero(3, "" + cobrancaDocumento.getCodigoSetorComercial()); String numeroQuadra = Util.adicionarZerosEsquedaNumero(3, "" + cobrancaDocumento.getNumeroQuadra()); String lote = Util.adicionarZerosEsquedaNumero(4, "" + cobrancaDocumento.getImovel().getLote()); String subLote = Util.adicionarZerosEsquedaNumero(3, "" + cobrancaDocumento.getImovel().getSubLote()); cobrancaDocumentoTxt.append(Util.completaString(idLocalidade + "." + codigoSetorComercial + "." + numeroQuadra + "." + lote + "." + subLote, 20)); // Nome da Localidade cobrancaDocumentoTxt.append(Util.completaString("" + cobrancaDocumento.getImovel().getLocalidade().getDescricao(), 25)); // nome cliente cobrancaDocumentoTxt.append(Util.completaString(nomeClienteUsuario, 50)); String nomeBairro = ""; String nomeMunicipio = ""; String siglaUnidadeFederecao = ""; String cepFormatado = ""; String[] parmsEnderecoImovel = getControladorEndereco().pesquisarEnderecoFormatadoDividido( cobrancaDocumento.getImovel().getId()); if (parmsEnderecoImovel != null) { // nome do bairro nomeBairro = "" + parmsEnderecoImovel[3]; // nome do municipio nomeMunicipio = "" + parmsEnderecoImovel[1]; // sigla da unidade federa��o siglaUnidadeFederecao = parmsEnderecoImovel[2]; cepFormatado = parmsEnderecoImovel[4]; } // endere�o do cliente com op��o de recebimento via // correio if (idClienteResponsavel != null) { String[] parmsEndereco = getControladorEndereco().pesquisarEnderecoClienteAbreviadoDividido( idClienteResponsavel); // endere�o sem municipio e unidade federa��o cobrancaDocumentoTxt.append(Util.completaString(parmsEndereco[0], 50)); // nome do bairro nomeBairro = "" + parmsEndereco[3]; // nome do municipio nomeMunicipio = "" + parmsEndereco[1]; // sigla da unidade federa��o siglaUnidadeFederecao = parmsEndereco[2]; cepFormatado = parmsEndereco[4]; } else { if (parmsEnderecoImovel != null) { // endere�o sem municipio e unidade // federa��o cobrancaDocumentoTxt.append(Util.completaString(parmsEnderecoImovel[0], 50)); } else { cobrancaDocumentoTxt.append(Util.completaString("", 50)); } } // nome Bairro cobrancaDocumentoTxt.append(Util.completaString(nomeBairro, 25)); // nome municipio cobrancaDocumentoTxt.append(Util.completaString(nomeMunicipio, 24)); // sigla unidade federacao cobrancaDocumentoTxt.append(Util.completaString(siglaUnidadeFederecao, 2)); // CEP // variavel cepFormatado foi preenchido de acordo // com a existencia de // cliente responsavel String cepStr = Util.completaString(cepFormatado, 8); cobrancaDocumentoTxt.append("CEP. " + cepStr.substring(0, 5) + "-" + cepStr.substring(5, 8)); // Sequencial de impressao String sequencialImpressaoStr = Util.adicionarZerosEsquedaNumero(6, sequencialImpressao + ""); cobrancaDocumentoTxt.append("SEQ. " + sequencialImpressaoStr.substring(0, 3) + "." + sequencialImpressaoStr.substring(3, 6)); // Matr�cula do im�vel String matriculaStr = Util.adicionarZerosEsquedaNumero(8, "" + cobrancaDocumento.getImovel().getId()); cobrancaDocumentoTxt.append(matriculaStr.substring(0, 7) + "." + matriculaStr.substring(7, 8)); // Endere�o do im�vel sem municipio e unidade // federa��o cobrancaDocumentoTxt.append(Util.completaString(parmsEnderecoImovel[0], 50)); // sequencial do documento de cobranca String sequencialStr = Util .adicionarZerosEsquedaNumero(9, "" + cobrancaDocumento.getNumeroSequenciaDocumento()); cobrancaDocumentoTxt.append(sequencialStr.substring(0, 5) + "." + sequencialStr.substring(5, 9)); // data de vencimento AAAAMMDD Object[] dadosFaturamentoGrupo = getControladorFaturamento().pesquisarAnoMesEDiaVencimentoFaturamentoGrupo( cobrancaDocumento.getImovel().getId()); Integer anoMesFaturamento = null; Integer diaVencimento = null; if (dadosFaturamentoGrupo != null) { if (dadosFaturamentoGrupo[0] != null) { anoMesFaturamento = (Integer) dadosFaturamentoGrupo[0]; } if (dadosFaturamentoGrupo[1] != null) { diaVencimento = ((Short) dadosFaturamentoGrupo[1]).intValue(); } } String dataVencimento = ""; if (anoMesFaturamento != null && anoMesFaturamento > sistemaParametro.getAnoMesFaturamento()) { diaVencimento += 5; String anoMesFaturamentoString = "" + anoMesFaturamento; Date dataVencimentoDate = Util.criarData(diaVencimento, Integer.parseInt(anoMesFaturamentoString.substring(4, 6)), Integer.parseInt(anoMesFaturamentoString.substring(0, 4))); dataVencimento = Util.formatarData(dataVencimentoDate); } else { dataVencimento = Util.formatarData(Util.adicionarNumeroDiasDeUmaData(new Date(), 20)); } cobrancaDocumentoTxt.append(Util.completaString(dataVencimento, 10)); // idgrupo cobrancaDocumentoTxt.append(Util.adicionarZerosEsquedaNumeroTruncando(2, idGrupo)); cobrancaDocumentoTxt.append("-"); // c�digo da firma if (cobrancaDocumento.getEmpresa() != null) { cobrancaDocumentoTxt.append(Util.adicionarZerosEsquedaNumero(2, cobrancaDocumento.getEmpresa().getId() .toString())); } String representacaoNumericaCodBarra = ""; // Obt�m a representa��o num�rica do // c�digode // barra representacaoNumericaCodBarra = this.getControladorArrecadacao().obterRepresentacaoNumericaCodigoBarra(5, cobrancaDocumento.getValorDocumento(), cobrancaDocumento.getLocalidade().getId(), cobrancaDocumento.getImovel().getId(), null, null, null, null, String.valueOf(cobrancaDocumento.getNumeroSequenciaDocumento()), cobrancaDocumento.getDocumentoTipo().getId(), null, null, null); // Formata a representa��o n�merica do // c�digo de // barras String representacaoNumericaCodBarraFormatada = representacaoNumericaCodBarra.substring(0, 11) + " " + representacaoNumericaCodBarra.substring(11, 12) + " " + representacaoNumericaCodBarra.substring(12, 23) + " " + representacaoNumericaCodBarra.substring(23, 24) + " " + representacaoNumericaCodBarra.substring(24, 35) + " " + representacaoNumericaCodBarra.substring(35, 36) + " " + representacaoNumericaCodBarra.substring(36, 47) + " " + representacaoNumericaCodBarra.substring(47, 48); cobrancaDocumentoTxt.append(representacaoNumericaCodBarraFormatada); // Cria o objeto para gerar o c�digo de // barras // no // padr�o // intercalado 2 de 5 Interleaved2of5 codigoBarraIntercalado2de5 = new Interleaved2of5(); // Recupera a representa��o n�merica do // c�digo // de // barras // sem // os d�gitos verificadores String representacaoCodigoBarrasSemDigitoVerificador = representacaoNumericaCodBarra.substring(0, 11) + representacaoNumericaCodBarra.substring(12, 23) + representacaoNumericaCodBarra.substring(24, 35) + representacaoNumericaCodBarra.substring(36, 47); cobrancaDocumentoTxt.append(codigoBarraIntercalado2de5 .encodeValue(representacaoCodigoBarrasSemDigitoVerificador)); if (parcelamento != null) { // obter dados do faturamento if (parcelamento.getParcelamento() != null) { cobrancaDocumentoTxt.append(Util.adicionarZerosEsquedaNumero(10, Util.formatarData(parcelamento.getParcelamento()))); } else { cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda("", 10)); } BigDecimal valorDebitoOriginal = new BigDecimal(0); if (parcelamento.getValorServicosACobrar() != null) { valorDebitoOriginal = valorDebitoOriginal.add(parcelamento.getValorServicosACobrar()); } if (parcelamento.getValorConta() != null) { valorDebitoOriginal = valorDebitoOriginal.add(parcelamento.getValorConta()); } if (parcelamento.getValorParcelamentosACobrar() != null) { valorDebitoOriginal = valorDebitoOriginal.add(parcelamento.getValorParcelamentosACobrar()); } if (parcelamento.getValorGuiaPapagamento() != null) { valorDebitoOriginal = valorDebitoOriginal.add(parcelamento.getValorGuiaPapagamento()); } if (valorDebitoOriginal.compareTo(new BigDecimal(0)) > 0) { cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda( Util.formataBigDecimal(valorDebitoOriginal, 2, true), 14)); } else { cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda("", 14)); } BigDecimal valorEncargos = new BigDecimal(0); if (parcelamento.getValorAtualizacaoMonetaria() != null) { valorEncargos = valorEncargos.add(parcelamento.getValorAtualizacaoMonetaria()); } if (parcelamento.getValorJurosMora() != null) { valorEncargos = valorEncargos.add(parcelamento.getValorJurosMora()); } if (parcelamento.getValorMulta() != null) { valorEncargos = valorEncargos.add(parcelamento.getValorMulta()); } if (valorEncargos.compareTo(new BigDecimal(0)) > 0) { cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda( Util.formataBigDecimal(valorEncargos, 2, true), 14)); } else { cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda("", 14)); } BigDecimal valorDescontos = parcelamento.getValorDesconto(); if (valorDescontos != null) { cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda( Util.formataBigDecimal(valorDescontos, 2, true), 14)); } else { cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda("", 14)); } // valor negociado = valordebitooriginal + valor // encargos - valor descontos BigDecimal valorNegociado = new BigDecimal(0); if (valorDebitoOriginal != null) { valorNegociado = valorDebitoOriginal; } if (valorEncargos != null) { valorNegociado = valorNegociado.add(valorEncargos); } if (valorDescontos != null) { valorNegociado = valorNegociado.subtract(valorDescontos); } if (valorNegociado.compareTo(new BigDecimal(0)) > 0) { cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda( Util.formataBigDecimal(valorNegociado, 2, true), 14)); } else { cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda("", 14)); } // juros do parcelamento if (parcelamento.getValorJurosParcelamento() != null) { cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda( Util.formataBigDecimal(parcelamento.getValorJurosParcelamento(), 2, true), 14)); } else { cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda("", 14)); } // valor entrada if (parcelamento.getValorEntrada() != null) { cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda( Util.formataBigDecimal(parcelamento.getValorEntrada(), 2, true), 14)); } else { cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda("", 14)); } if (parcelamento.getNumeroPrestacoes() != null) { cobrancaDocumentoTxt .append(Util.adicionarZerosEsquedaNumero(2, "" + parcelamento.getNumeroPrestacoes())); } else { cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda("", 2)); } if (parcelamento.getValorPrestacao() != null) { cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda( Util.formataBigDecimal(parcelamento.getValorPrestacao(), 2, true), 14)); } else { cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda("", 14)); } } else { cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda("", 110)); } // retorna o indicador de estouro e formata o // cobran�aDocumentoTxt com os dados int quantidadesContas = 15; // retorna o indicador de estouro e formata o // cobran�aDocumentoTxt com os dados formatarCobrancaDocumentoItemParaContaComParcelamento(cobrancaDocumentoTxt, colecaoCobrancaDocumentoItemConta, quantidadesContas); // 2.20 if (parcelamento != null) { String idParcelamento = parcelamento.getId().toString(); cobrancaDocumentoTxt.append(Util.adicionarZerosEsquedaNumero(8, idParcelamento)); } else { cobrancaDocumentoTxt.append(Util.adicionarZerosEsquedaNumero(8, "")); } // 2.21 String dadosEntrega = ""; if (idGrupo != null) { dadosEntrega = Util.adicionarZerosEsquedaNumero(3, "" + idGrupo); } else { dadosEntrega = Util.adicionarZerosEsquedaNumero(3, ""); } dadosEntrega += "-"; if (cobrancaDocumento.getQuadra() != null && cobrancaDocumento.getQuadra().getRota() != null) { dadosEntrega += Util.adicionarZerosEsquedaNumero(5, "" + cobrancaDocumento.getQuadra().getRota().getCodigo()); } else { dadosEntrega += Util.adicionarZerosEsquedaNumero(5, ""); } dadosEntrega += "-"; if (cobrancaDocumento.getImovel() != null) { if (cobrancaDocumento.getImovel().getNumeroSequencialRota() != null && !cobrancaDocumento.getImovel().getNumeroSequencialRota().equals("")) { dadosEntrega += Util.adicionarZerosEsquedaNumero(9, "" + cobrancaDocumento.getImovel().getNumeroSequencialRota()); } else { dadosEntrega += Util.adicionarZerosEsquedaNumero(9, ""); } } else { dadosEntrega += Util.adicionarZerosEsquedaNumero(9, ""); } cobrancaDocumentoTxt.append(dadosEntrega); cobrancaDocumentoTxt.append(System.getProperty("line.separator")); } colecaoCobrancaDocumentoItemConta = null; } // }// fim do la�o que verifica // as 2 // contas }// fim la�o while do iterator do // objeto // helper // countOrdem++; // mapCobrancaoDocumentoDivididas = null; // // } } else { flagFimPesquisa = true; } // } else { // flagFimPesquisa = true; // } // colecaoCobrancaDocumento = null; } Date dataAtual = new Date(); String nomeZip = null; // em caso de ser carta de tarifa social n�o // formatar o txt if (idCronogramaAtividadeAcaoCobranca != null) { nomeZip = "EMITIR_CARTA_PARCELAMENTO_EM_ATRASO" + grupoCobranca.getId() + "_" + Util.formatarData(dataAtual) + Util.formatarHoraSemDataSemDoisPontos(dataAtual); } else { String descricaoAbrevDocumentoTipo = ""; if (acaoCobranca != null && acaoCobranca.getDocumentoTipo() != null) { descricaoAbrevDocumentoTipo = acaoCobranca.getDocumentoTipo().getDescricaoAbreviado(); } String tituloComandoEventual = cobrancaAcaoAtividadeComando.getDescricaoTitulo(); nomeZip = descricaoAbrevDocumentoTipo + " " + tituloComandoEventual + " " + Util.formatarData(dataAtual) + Util.formatarHoraSemDataSemDoisPontos(dataAtual); nomeZip = nomeZip.replace("/", "_"); nomeZip = nomeZip.replace(" ", "_"); } nomeZip = nomeZip.replace("/", "_"); // pegar o arquivo, zipar pasta e arquivo e escrever no stream try { System.out.println("***************************************"); System.out.println("INICO DA CRIACAO DO ARQUIVO"); System.out.println("***************************************"); if (cobrancaDocumentoTxt != null && cobrancaDocumentoTxt.length() != 0) { // criar o arquivo zip File compactado = new File(nomeZip + ".zip"); // nomeZip ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(compactado)); File leitura = new File(nomeZip + ".txt"); BufferedWriter out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(leitura.getAbsolutePath()))); out.write(cobrancaDocumentoTxt.toString()); out.close(); ZipUtil.adicionarArquivo(zos, leitura); // close the stream zos.close(); leitura.delete(); } System.out.println("***************************************"); System.out.println("FIM DA CRIACAO DO ARQUIVO"); System.out.println("***************************************"); } catch (IOException e) { e.printStackTrace(); throw new ControladorException("erro.sistema", e); } catch (Exception e) { e.printStackTrace(); throw new ControladorException("erro.sistema", e); } } /** * retorna o objeto ParcelamentoFaixaValor com o valor do debito(valorFaixa) * com desconto maior q o da faixa e menor que pr�xima faixa * * [UC0575] - Emitir Parcelamento em Atraso * * @author S�vio Luiz * @date 14/04/2007 * * @return * @throws ErroRepositorioException */ public Parcelamento pesquisarDadosParcelamentoComMaiorTimestemp(Integer idImovel) throws ControladorException { Parcelamento parcelamento = null; Object[] dadosParcelamento = null; try { dadosParcelamento = repositorioCobranca.pesquisarDadosParcelamentoComMaiorTimestemp(idImovel); } catch (ErroRepositorioException e) { sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", e); } if (dadosParcelamento != null) { parcelamento = new Parcelamento(); if (dadosParcelamento[0] != null) { parcelamento.setParcelamento((Date) dadosParcelamento[0]); } if (dadosParcelamento[1] != null) { parcelamento.setValorConta((BigDecimal) dadosParcelamento[1]); } if (dadosParcelamento[2] != null) { parcelamento.setValorServicosACobrar((BigDecimal) dadosParcelamento[2]); } if (dadosParcelamento[3] != null) { parcelamento.setValorAtualizacaoMonetaria((BigDecimal) dadosParcelamento[3]); } if (dadosParcelamento[4] != null) { parcelamento.setValorJurosMora((BigDecimal) dadosParcelamento[4]); } if (dadosParcelamento[5] != null) { parcelamento.setValorMulta((BigDecimal) dadosParcelamento[5]); } if (dadosParcelamento[6] != null) { parcelamento.setValorDescontoAcrescimos((BigDecimal) dadosParcelamento[6]); } if (dadosParcelamento[7] != null) { parcelamento.setValorDescontoAntiguidade((BigDecimal) dadosParcelamento[7]); } if (dadosParcelamento[8] != null) { parcelamento.setValorDescontoInatividade((BigDecimal) dadosParcelamento[8]); } if (dadosParcelamento[9] != null) { parcelamento.setValorEntrada((BigDecimal) dadosParcelamento[9]); } if (dadosParcelamento[10] != null) { parcelamento.setNumeroPrestacoes((Short) dadosParcelamento[10]); } if (dadosParcelamento[11] != null) { parcelamento.setValorPrestacao((BigDecimal) dadosParcelamento[11]); } if (dadosParcelamento[12] != null) { parcelamento.setValorJurosParcelamento((BigDecimal) dadosParcelamento[12]); } if (dadosParcelamento[13] != null) { parcelamento.setId((Integer) dadosParcelamento[13]); } } return parcelamento; } /** * Consulta o id e a situa��o da ordem de servi�o associada ao documento de * cobran�a passado como par�metro * * @author S�vio Luiz * @created 13/04/2007 * * @exception ErroRepositorioException * Repositorio Exception */ public Object[] pesquisarDadosOrdemServicoDocumentoCobranca(Integer idDocumentoCobranca) throws ControladorException { try { return repositorioCobranca.pesquisarDadosOrdemServicoDocumentoCobranca(idDocumentoCobranca); } catch (ErroRepositorioException e) { sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", e); } } /** * [UCXXXX] - Emitir Documento de Cobran�a * * @author Rafael Corr�a * @date 02/09/2009 * * @return * @throws ErroRepositorioException */ public Collection<RelatorioNotificacaoDebitoBean> gerarRelatorioNotificacaoDebito(Integer idCobrancaAcaoCronograma, Integer idCobrancaAcaoComando, int tamanhoMaximoDebito, String quantidadeRelatorios, String tipoEnderecoRelatorio) throws ControladorException { /** * Enviar documentos de cobran�a para endere�o de correspond�ncia * * @author Wellington Rocha * @date 21/06/2013 */ Collection<RelatorioNotificacaoDebitoBean> retorno = new ArrayList<RelatorioNotificacaoDebitoBean>(); Collection<RelatorioNotificacaoDebitoBean> retornoEnderecoAlternativo = new ArrayList<RelatorioNotificacaoDebitoBean>(); try { Collection<CobrancaDocumento> colecaoDocumentoCobranca = repositorioCobranca.pesquisarCobrancaDocumentoParaRelatorio( idCobrancaAcaoCronograma, idCobrancaAcaoComando); for (CobrancaDocumento cobrancaDocumento : colecaoDocumentoCobranca) { Collection<Conta> contas = repositorioCobranca.pesquisarCobrancaDocumentoItem(cobrancaDocumento.getId()); int count = 0; BigDecimal valor = new BigDecimal(0); String inscricao = getControladorImovel().pesquisarInscricaoImovel(cobrancaDocumento.getImovel().getId()); String clienteUsuario = getControladorImovel().consultarClienteUsuarioImovel(cobrancaDocumento.getImovel().getId()); String endereco = getControladorEndereco().pesquisarEndereco(cobrancaDocumento.getImovel().getId()); String ruaComplementoCorrespondencia = null; String cidadeEstadoCorrespondencia = null; String bairroCorrespondencia = null; String cepCorrespondencia = null; Integer idClienteResponsavel = null; String enderecoCorrespondencia = null; idClienteResponsavel = this.repositorioClienteImovel.retornaIdClienteResponsavelIndicadorEnvioConta(cobrancaDocumento .getImovel().getId()); if (idClienteResponsavel != null) { enderecoCorrespondencia = getControladorEndereco().pesquisarEnderecoClienteAbreviado(idClienteResponsavel); } else { enderecoCorrespondencia = endereco; } String codigoRota = cobrancaDocumento.getImovel().getQuadra().getRota().getCodigo().toString(); String sequencialRota = ""; if (cobrancaDocumento.getImovel().getNumeroSequencialRota() != null) { sequencialRota = cobrancaDocumento.getImovel().getNumeroSequencialRota().toString(); } String representacaoNumericaCodBarra = ""; // Obt�m a representa��o num�rica do // c�digode // barra representacaoNumericaCodBarra = this.getControladorArrecadacao().obterRepresentacaoNumericaCodigoBarra(5, cobrancaDocumento.getValorDocumento(), cobrancaDocumento.getLocalidade().getId(), cobrancaDocumento.getImovel().getId(), null, null, null, null, String.valueOf(cobrancaDocumento.getNumeroSequenciaDocumento()), cobrancaDocumento.getDocumentoTipo().getId(), null, null, null); // Formata a representa��o n�merica do // c�digo de // barras String representacaoNumericaCodBarraFormatada = representacaoNumericaCodBarra.substring(0, 11) + "-" + representacaoNumericaCodBarra.substring(11, 12) + " " + representacaoNumericaCodBarra.substring(12, 23) + "-" + representacaoNumericaCodBarra.substring(23, 24) + " " + representacaoNumericaCodBarra.substring(24, 35) + "-" + representacaoNumericaCodBarra.substring(35, 36) + " " + representacaoNumericaCodBarra.substring(36, 47) + "-" + representacaoNumericaCodBarra.substring(47, 48); String representacaoNumericaCodBarraSemDigito = representacaoNumericaCodBarra.substring(0, 11) + representacaoNumericaCodBarra.substring(12, 23) + representacaoNumericaCodBarra.substring(24, 35) + representacaoNumericaCodBarra.substring(36, 47); for (Conta conta : contas) { count++; if ((contas.size() - count) > tamanhoMaximoDebito) { valor = valor.add(conta.getValorTotal()); } else { RelatorioNotificacaoDebitoBean bean = new RelatorioNotificacaoDebitoBean(); bean.setIdImovel(Util.retornaMatriculaImovelFormatada(cobrancaDocumento.getImovel().getId())); bean.setInscricao(inscricao); bean.setNomeCliente(clienteUsuario); bean.setEnderecoCorrespondencia(enderecoCorrespondencia); bean.setEndereco(endereco); bean.setCodigoRota(codigoRota); bean.setSequencialRota(sequencialRota); bean.setIdDocumentoCobranca(cobrancaDocumento.getId()); if ((contas.size() - count) == tamanhoMaximoDebito) { valor = valor.add(conta.getValorTotal()); bean.setValor(valor); bean.setMesAno("AT� " + conta.getReferenciaFormatada()); } else { bean.setValor(conta.getValorTotal()); bean.setMesAno(conta.getReferenciaFormatada()); bean.setDataVencimento(conta.getDataVencimentoConta()); } bean.setRepresentacaoNumericaCodBarraFormatada(representacaoNumericaCodBarraFormatada); bean.setRepresentacaoNumericaCodBarraSemDigito(representacaoNumericaCodBarraSemDigito); if (bean.getEndereco().equals(bean.getEnderecoCorrespondencia())) { bean.setIcEnderecoAlternativo("2"); retorno.add(bean); } else { bean.setIcEnderecoAlternativo("1"); String[] enderecoCorrespondenciaFormatado = getControladorEndereco() .pesquisarEnderecoClienteAbreviadoDivididoCosanpa(idClienteResponsavel); ruaComplementoCorrespondencia = enderecoCorrespondenciaFormatado[0]; cidadeEstadoCorrespondencia = enderecoCorrespondenciaFormatado[1] + " - " + enderecoCorrespondenciaFormatado[2]; bairroCorrespondencia = enderecoCorrespondenciaFormatado[3]; cepCorrespondencia = enderecoCorrespondenciaFormatado[4]; bean.setBairroCorrespondencia(bairroCorrespondencia); bean.setRuaComplementoCorrespondencia(ruaComplementoCorrespondencia); bean.setCidadeEstadoCorrespondencia(cidadeEstadoCorrespondencia); bean.setCepCorrespondencia(cepCorrespondencia); retornoEnderecoAlternativo.add(bean); } } } // adiciona linhas em branco no relatorio para alinhar, // quando a quantidade de relatorios/pagina = 2 // e o numero de contas for menor que a metade do // "tamanhoMaximoDebito" int metadeTamanhoMaxDebito = (tamanhoMaximoDebito + 1) / 2; if (quantidadeRelatorios != null && quantidadeRelatorios.equals("2") && contas.size() < metadeTamanhoMaxDebito) { for (int i = 0; i < (metadeTamanhoMaxDebito - contas.size()); i++) { RelatorioNotificacaoDebitoBean bean = new RelatorioNotificacaoDebitoBean(); bean.setIdImovel(Util.retornaMatriculaImovelFormatada(cobrancaDocumento.getImovel().getId())); bean.setInscricao(inscricao); bean.setNomeCliente(clienteUsuario); bean.setEndereco(endereco); bean.setEnderecoCorrespondencia(enderecoCorrespondencia); bean.setCodigoRota(codigoRota); bean.setSequencialRota(sequencialRota); bean.setIdDocumentoCobranca(cobrancaDocumento.getId()); bean.setRepresentacaoNumericaCodBarraFormatada(representacaoNumericaCodBarraFormatada); bean.setRepresentacaoNumericaCodBarraSemDigito(representacaoNumericaCodBarraSemDigito); if (bean.getEndereco().equals(bean.getEnderecoCorrespondencia())) { retorno.add(bean); } else { bean.setIcEnderecoAlternativo("1"); String[] enderecoCorrespondenciaFormatado = getControladorEndereco() .pesquisarEnderecoClienteAbreviadoDivididoCosanpa(idClienteResponsavel); ruaComplementoCorrespondencia = enderecoCorrespondenciaFormatado[0]; cidadeEstadoCorrespondencia = enderecoCorrespondenciaFormatado[1] + " - " + enderecoCorrespondenciaFormatado[2]; bairroCorrespondencia = enderecoCorrespondenciaFormatado[3]; cepCorrespondencia = enderecoCorrespondenciaFormatado[4]; bean.setBairroCorrespondencia(bairroCorrespondencia); bean.setRuaComplementoCorrespondencia(ruaComplementoCorrespondencia); bean.setCidadeEstadoCorrespondencia(cidadeEstadoCorrespondencia); bean.setCepCorrespondencia(cepCorrespondencia); retornoEnderecoAlternativo.add(bean); } } } } } catch (ErroRepositorioException e) { throw new ControladorException("erro.sistema", e); } if (tipoEnderecoRelatorio.equals("3")) { return retornoEnderecoAlternativo; } else if (tipoEnderecoRelatorio.equals("1")) { retorno.addAll(retornoEnderecoAlternativo); } return retorno; } /** * [UC0394] - Gerar D�bitos a Cobrar de Doa��es * * * @author S�vio Luiz * @date 09/05/2007 * * @param colecaoRotas * , Integer anoMesReferenciaDebito * @return * @throws ErroRepositorioException */ public void atualizarParcelamentoItensDebitoACobrar(Collection colecaoIdsDebitoACobrar) throws ControladorException { try { Collection colecaoIdsParcelamentosItens = repositorioCobranca .pesquisarIdsParcelamentosItemDebitoACobrar(colecaoIdsDebitoACobrar); if (colecaoIdsParcelamentosItens != null && !colecaoIdsParcelamentosItens.isEmpty()) { repositorioCobranca.atualizarParcelamentosItemDebitoACobrar(colecaoIdsParcelamentosItens); } } catch (ErroRepositorioException e) { throw new ControladorException("erro.sistema", e); } } /** * [UC0394] - Gerar D�bitos a Cobrar de Doa��es * * * @author S�vio Luiz * @date 09/05/2007 * * @param colecaoRotas * , Integer anoMesReferenciaDebito * @return * @throws ErroRepositorioException */ public void removerDocumentosItensDebitoACobrar(Collection colecaoIdsDebitoACobrar) throws ControladorException { try { Collection colecaoIdsDocumentosItens = repositorioCobranca .pesquisarIdsCobrancaDocumentoItemDebitoACobrar(colecaoIdsDebitoACobrar); if (colecaoIdsDocumentosItens != null && !colecaoIdsDocumentosItens.isEmpty()) { repositorioCobranca.deletarCobrancaDocumentoItemDebitoACobrar(colecaoIdsDocumentosItens); } } catch (ErroRepositorioException e) { throw new ControladorException("erro.sistema", e); } } /** * Esta funcionalidade permite informar dados para gera��o de relat�rios ou * consultas * * [UC0304] - Informar Dados para Gera��o de Relat�rio ou Consulta * * @author S�vio Luiz, Raphael Rossiter * @date 22/05/2007, 02/09/2010 * */ public InformarDadosGeracaoResumoAcaoConsultaHelper informarDadosGeracaoResumoAcaoConsulta(String mesAnoFaturamento, String[] idsCobrancaGrupo, String[] idsGerenciaRegional, String[] idsUnidadeNegocio, Integer idEloPolo, Integer idLocalidade, Integer idSetorComercial, Integer nmQuadra, String[] idsImovelPerfil, String[] idsLigacaoAguaSituacao, String[] idsLigacaoEsgotoSituacao, String[] idsCategoria, String[] idsEsferaPoder, String[] idsEmpresas, String tipoImpressao) throws ControladorException { InformarDadosGeracaoResumoAcaoConsultaHelper retorno = new InformarDadosGeracaoResumoAcaoConsultaHelper(); if (!Util.validarMesAno(mesAnoFaturamento)) { throw new ControladorException("atencao.ano_mes.invalido"); } Integer anoMesReferencia = new Integer(Util.formatarMesAnoParaAnoMesSemBarra(mesAnoFaturamento)); // SistemaParametro sistemaParametro = // this.getControladorUtil().pesquisarParametrosDoSistema(); // if // (anoMesReferencia.compareTo(sistemaParametro.getAnoMesFaturamento()) // == 1){ // throw new // ControladorException("atencao.ano.mes.referencia.posterior.ano.mes.faturamento", // null, // String.valueOf(sistemaParametro.getAnoMesFaturamento())); // } retorno.setAnoMesReferencia(anoMesReferencia); // retorno.setDescricaoOpcaoTotalizacao(this.obterDescricaoOpcaoTotalizacao(opcaoTotalizacao)); Collection colecaoPesquisa = null; if (idEloPolo != null) { FiltroLocalidade filtroLocalidade = new FiltroLocalidade(); filtroLocalidade.adicionarCaminhoParaCarregamentoEntidade("localidade"); filtroLocalidade.adicionarParametro(new ParametroSimples(FiltroLocalidade.ID, idEloPolo)); filtroLocalidade.adicionarParametro(new ParametroSimples(FiltroLocalidade.INDICADORUSO, ConstantesSistema.INDICADOR_USO_ATIVO)); colecaoPesquisa = this.getControladorUtil().pesquisar(filtroLocalidade, Localidade.class.getName()); if (colecaoPesquisa == null || colecaoPesquisa.isEmpty()) { throw new ControladorException("atencao.pesquisa_inexistente", null, "Elo P�lo"); } else { Localidade eloPolo = (Localidade) Util.retonarObjetoDeColecao(colecaoPesquisa); if (eloPolo.getLocalidade() == null) { throw new ControladorException("atencao.localidade.nao.elo"); } else if (!eloPolo.getLocalidade().getId().equals(new Integer(eloPolo.getId()))) { throw new ControladorException("atencao.localidade.nao.elo"); } retorno.setEloPolo(eloPolo); } } if (idLocalidade != null) { FiltroLocalidade filtroLocalidade = new FiltroLocalidade(); filtroLocalidade.adicionarParametro(new ParametroSimples(FiltroLocalidade.ID, idLocalidade)); filtroLocalidade.adicionarParametro(new ParametroSimples(FiltroLocalidade.INDICADORUSO, ConstantesSistema.INDICADOR_USO_ATIVO)); colecaoPesquisa = this.getControladorUtil().pesquisar(filtroLocalidade, Localidade.class.getName()); if (colecaoPesquisa == null || colecaoPesquisa.isEmpty()) { throw new ControladorException("atencao.pesquisa_inexistente", null, "Localidade"); } Localidade localidade = (Localidade) Util.retonarObjetoDeColecao(colecaoPesquisa); retorno.setLocalidade(localidade); } if (idSetorComercial != null) { FiltroSetorComercial filtroSetorComercial = new FiltroSetorComercial(); filtroSetorComercial.adicionarCaminhoParaCarregamentoEntidade("localidade"); filtroSetorComercial.adicionarParametro(new ParametroSimples(FiltroSetorComercial.ID, idSetorComercial)); filtroSetorComercial.adicionarParametro(new ParametroSimples(FiltroSetorComercial.INDICADORUSO, ConstantesSistema.INDICADOR_USO_ATIVO)); colecaoPesquisa = this.getControladorUtil().pesquisar(filtroSetorComercial, SetorComercial.class.getName()); if (colecaoPesquisa == null || colecaoPesquisa.isEmpty()) { throw new ControladorException("atencao.pesquisa_inexistente", null, "Setor Comercial"); } SetorComercial setorComercial = (SetorComercial) Util.retonarObjetoDeColecao(colecaoPesquisa); retorno.setLocalidade(setorComercial.getLocalidade()); retorno.setSetorComercial(setorComercial); } if (idSetorComercial != null && nmQuadra != null) { FiltroQuadra filtroQuadra = new FiltroQuadra(); filtroQuadra.adicionarCaminhoParaCarregamentoEntidade("setorComercial.localidade"); filtroQuadra.adicionarParametro(new ParametroSimples(FiltroQuadra.ID_SETORCOMERCIAL, idSetorComercial)); filtroQuadra.adicionarParametro(new ParametroSimples(FiltroQuadra.NUMERO_QUADRA, nmQuadra)); filtroQuadra.adicionarParametro(new ParametroSimples(FiltroQuadra.INDICADORUSO, ConstantesSistema.INDICADOR_USO_ATIVO)); colecaoPesquisa = this.getControladorUtil().pesquisar(filtroQuadra, Quadra.class.getName()); if (colecaoPesquisa == null || colecaoPesquisa.isEmpty()) { throw new ControladorException("atencao.pesquisa_inexistente", null, "Quadra"); } Quadra quadra = (Quadra) Util.retonarObjetoDeColecao(colecaoPesquisa); retorno.setLocalidade(quadra.getSetorComercial().getLocalidade()); retorno.setSetorComercial(quadra.getSetorComercial()); retorno.setQuadra(quadra); } if (idsGerenciaRegional != null && idsGerenciaRegional.length > 0) { Collection colecaoGerenciaRegional = new ArrayList(); FiltroGerenciaRegional filtroGerenciaRegional = new FiltroGerenciaRegional(); GerenciaRegional gerenciaRegional = null; for (int index = 0; idsGerenciaRegional.length > index; index++) { if (idsGerenciaRegional[index] != null && idsGerenciaRegional[index].length() > 0) { filtroGerenciaRegional.adicionarParametro(new ParametroSimples(FiltroGerenciaRegional.ID, idsGerenciaRegional[index])); filtroGerenciaRegional.adicionarParametro(new ParametroSimples(FiltroGerenciaRegional.INDICADOR_USO, ConstantesSistema.INDICADOR_USO_ATIVO)); colecaoPesquisa = this.getControladorUtil().pesquisar(filtroGerenciaRegional, GerenciaRegional.class.getName()); if (colecaoPesquisa == null || colecaoPesquisa.isEmpty()) { throw new ControladorException("atencao.pesquisa_inexistente", null, "Gerencia Regional"); } gerenciaRegional = (GerenciaRegional) Util.retonarObjetoDeColecao(colecaoPesquisa); filtroGerenciaRegional.limparListaParametros(); colecaoGerenciaRegional.add(gerenciaRegional); } } if (!colecaoGerenciaRegional.isEmpty()) { retorno.setColecaoGerenciaRegional(colecaoGerenciaRegional); } } if (idsUnidadeNegocio != null && idsUnidadeNegocio.length > 0) { Collection colecaoUnidadeNegocio = new ArrayList(); FiltroUnidadeNegocio filtroUnidadeNegocio = new FiltroUnidadeNegocio(); UnidadeNegocio unidadeNegocio = null; for (int index = 0; idsUnidadeNegocio.length > index; index++) { if (idsUnidadeNegocio[index] != null && idsUnidadeNegocio[index].length() > 0) { filtroUnidadeNegocio.adicionarParametro(new ParametroSimples(FiltroUnidadeNegocio.ID, idsUnidadeNegocio[index])); filtroUnidadeNegocio.adicionarParametro(new ParametroSimples(FiltroUnidadeNegocio.INDICADOR_USO, ConstantesSistema.INDICADOR_USO_ATIVO)); colecaoPesquisa = this.getControladorUtil().pesquisar(filtroUnidadeNegocio, UnidadeNegocio.class.getName()); if (colecaoPesquisa == null || colecaoPesquisa.isEmpty()) { throw new ControladorException("atencao.pesquisa_inexistente", null, "Unidade de Negocio"); } unidadeNegocio = (UnidadeNegocio) Util.retonarObjetoDeColecao(colecaoPesquisa); filtroUnidadeNegocio.limparListaParametros(); colecaoUnidadeNegocio.add(unidadeNegocio); } } if (!colecaoUnidadeNegocio.isEmpty()) { retorno.setColecaoUnidadeNegocio(colecaoUnidadeNegocio); } } if (idsCobrancaGrupo != null && idsCobrancaGrupo.length > 0) { Collection colecaoCobrancaGrupo = new ArrayList(); FiltroCobrancaGrupo filtroCobrancaGrupo = new FiltroCobrancaGrupo(); CobrancaGrupo cobrancaGrupo = null; for (int index = 0; idsCobrancaGrupo.length > index; index++) { if (idsCobrancaGrupo[index] != null && idsCobrancaGrupo[index].length() > 0) { filtroCobrancaGrupo.adicionarParametro(new ParametroSimples(FiltroCobrancaGrupo.ID, idsCobrancaGrupo[index])); filtroCobrancaGrupo.adicionarParametro(new ParametroSimples(FiltroCobrancaGrupo.INDICADOR_USO, ConstantesSistema.INDICADOR_USO_ATIVO)); colecaoPesquisa = this.getControladorUtil().pesquisar(filtroCobrancaGrupo, CobrancaGrupo.class.getName()); if (colecaoPesquisa == null || colecaoPesquisa.isEmpty()) { throw new ControladorException("atencao.pesquisa_inexistente", null, "Cobran�a Grupo"); } cobrancaGrupo = (CobrancaGrupo) Util.retonarObjetoDeColecao(colecaoPesquisa); filtroCobrancaGrupo.limparListaParametros(); colecaoCobrancaGrupo.add(cobrancaGrupo); } } if (!colecaoCobrancaGrupo.isEmpty()) { retorno.setColecaoCobrancaGrupo(colecaoCobrancaGrupo); } } if (idsImovelPerfil != null && idsImovelPerfil.length > 0) { Collection colecaoImovelPerfil = new ArrayList(); FiltroImovelPerfil filtroImovelPerfil = new FiltroImovelPerfil(); ImovelPerfil imovelPerfil = null; for (int index = 0; idsImovelPerfil.length > index; index++) { if (idsImovelPerfil[index] != null && idsImovelPerfil[index].length() > 0) { filtroImovelPerfil.adicionarParametro(new ParametroSimples(FiltroImovelPerfil.ID, idsImovelPerfil[index])); filtroImovelPerfil.adicionarParametro(new ParametroSimples(FiltroImovelPerfil.INDICADOR_USO, ConstantesSistema.INDICADOR_USO_ATIVO)); colecaoPesquisa = this.getControladorUtil().pesquisar(filtroImovelPerfil, ImovelPerfil.class.getName()); if (colecaoPesquisa == null || colecaoPesquisa.isEmpty()) { throw new ControladorException("atencao.pesquisa_inexistente", null, "Perfil do Im�vel"); } imovelPerfil = (ImovelPerfil) Util.retonarObjetoDeColecao(colecaoPesquisa); filtroImovelPerfil.limparListaParametros(); colecaoImovelPerfil.add(imovelPerfil); } } if (!colecaoImovelPerfil.isEmpty()) { retorno.setColecaoImovelPerfil(colecaoImovelPerfil); } } if (idsLigacaoAguaSituacao != null && idsLigacaoAguaSituacao.length > 0) { Collection colecaoLigacaoAguaSituacao = new ArrayList(); FiltroLigacaoAguaSituacao filtroLigacaoAguaSituacao = new FiltroLigacaoAguaSituacao(); LigacaoAguaSituacao ligacaoAguaSituacao = null; for (int index = 0; idsLigacaoAguaSituacao.length > index; index++) { if (idsLigacaoAguaSituacao[index] != null && idsLigacaoAguaSituacao[index].length() > 0) { filtroLigacaoAguaSituacao.adicionarParametro(new ParametroSimples(FiltroLigacaoAguaSituacao.ID, idsLigacaoAguaSituacao[index])); filtroLigacaoAguaSituacao.adicionarParametro(new ParametroSimples(FiltroLigacaoAguaSituacao.INDICADOR_USO, ConstantesSistema.INDICADOR_USO_ATIVO)); colecaoPesquisa = this.getControladorUtil().pesquisar(filtroLigacaoAguaSituacao, LigacaoAguaSituacao.class.getName()); if (colecaoPesquisa == null || colecaoPesquisa.isEmpty()) { throw new ControladorException("atencao.pesquisa_inexistente", null, "Liga��o de �gua"); } ligacaoAguaSituacao = (LigacaoAguaSituacao) Util.retonarObjetoDeColecao(colecaoPesquisa); filtroLigacaoAguaSituacao.limparListaParametros(); colecaoLigacaoAguaSituacao.add(ligacaoAguaSituacao); } } if (!colecaoLigacaoAguaSituacao.isEmpty()) { retorno.setColecaoLigacaoAguaSituacao(colecaoLigacaoAguaSituacao); } } if (idsLigacaoEsgotoSituacao != null && idsLigacaoEsgotoSituacao.length > 0) { Collection colecaoLigacaoEsgotoSituacao = new ArrayList(); FiltroLigacaoEsgotoSituacao filtroLigacaoEsgotoSituacao = new FiltroLigacaoEsgotoSituacao(); LigacaoEsgotoSituacao ligacaoEsgotoSituacao = null; for (int index = 0; idsLigacaoEsgotoSituacao.length > index; index++) { if (idsLigacaoEsgotoSituacao[index] != null && idsLigacaoEsgotoSituacao[index].length() > 0) { filtroLigacaoEsgotoSituacao.adicionarParametro(new ParametroSimples(FiltroLigacaoEsgotoSituacao.ID, idsLigacaoEsgotoSituacao[index])); filtroLigacaoEsgotoSituacao.adicionarParametro(new ParametroSimples(FiltroLigacaoEsgotoSituacao.INDICADOR_USO, ConstantesSistema.INDICADOR_USO_ATIVO)); colecaoPesquisa = this.getControladorUtil().pesquisar(filtroLigacaoEsgotoSituacao, LigacaoEsgotoSituacao.class.getName()); if (colecaoPesquisa == null || colecaoPesquisa.isEmpty()) { throw new ControladorException("atencao.pesquisa_inexistente", null, "Liga��o de Esgoto"); } ligacaoEsgotoSituacao = (LigacaoEsgotoSituacao) Util.retonarObjetoDeColecao(colecaoPesquisa); filtroLigacaoEsgotoSituacao.limparListaParametros(); colecaoLigacaoEsgotoSituacao.add(ligacaoEsgotoSituacao); } } if (!colecaoLigacaoEsgotoSituacao.isEmpty()) { retorno.setColecaoLigacaoEsgotoSituacao(colecaoLigacaoEsgotoSituacao); } } if (idsCategoria != null && idsCategoria.length > 0) { Collection colecaoCategoria = new ArrayList(); FiltroCategoria filtroCategoria = new FiltroCategoria(); Categoria categoria = null; for (int index = 0; idsCategoria.length > index; index++) { if (idsCategoria[index] != null && idsCategoria[index].length() > 0) { filtroCategoria.adicionarParametro(new ParametroSimples(FiltroCategoria.CODIGO, idsCategoria[index])); filtroCategoria.adicionarParametro(new ParametroSimples(FiltroCategoria.INDICADOR_USO, ConstantesSistema.INDICADOR_USO_ATIVO)); colecaoPesquisa = this.getControladorUtil().pesquisar(filtroCategoria, Categoria.class.getName()); if (colecaoPesquisa == null || colecaoPesquisa.isEmpty()) { throw new ControladorException("atencao.pesquisa_inexistente", null, "Categoria"); } categoria = (Categoria) Util.retonarObjetoDeColecao(colecaoPesquisa); filtroCategoria.limparListaParametros(); colecaoCategoria.add(categoria); } } if (!colecaoCategoria.isEmpty()) { retorno.setColecaoCategoria(colecaoCategoria); } } if (idsEsferaPoder != null && idsEsferaPoder.length > 0) { Collection colecaoEsferaPoder = new ArrayList(); FiltroEsferaPoder filtroEsferaPoder = new FiltroEsferaPoder(); EsferaPoder esferaPoder = null; for (int index = 0; idsEsferaPoder.length > index; index++) { if (idsEsferaPoder[index] != null && idsEsferaPoder[index].length() > 0) { filtroEsferaPoder.adicionarParametro(new ParametroSimples(FiltroEsferaPoder.ID, idsEsferaPoder[index])); filtroEsferaPoder.adicionarParametro(new ParametroSimples(FiltroEsferaPoder.INDICADOR_USO, ConstantesSistema.INDICADOR_USO_ATIVO)); colecaoPesquisa = this.getControladorUtil().pesquisar(filtroEsferaPoder, EsferaPoder.class.getName()); if (colecaoPesquisa == null || colecaoPesquisa.isEmpty()) { throw new ControladorException("atencao.pesquisa_inexistente", null, "Esfera de Poder"); } esferaPoder = (EsferaPoder) Util.retonarObjetoDeColecao(colecaoPesquisa); filtroEsferaPoder.limparListaParametros(); colecaoEsferaPoder.add(esferaPoder); } } if (!colecaoEsferaPoder.isEmpty()) { retorno.setColecaoEsferaPoder(colecaoEsferaPoder); } } if (idsEmpresas != null && idsEmpresas.length > 0) { Collection colecaoEmpresa = new ArrayList(); FiltroEmpresa filtroEmpresa = new FiltroEmpresa(); Empresa empresa = null; for (int index = 0; idsEmpresas.length > index; index++) { if (idsEmpresas[index] != null && idsEmpresas[index].length() > 0) { filtroEmpresa.adicionarParametro(new ParametroSimples(FiltroEmpresa.ID, idsEmpresas[index])); filtroEmpresa .adicionarParametro(new ParametroSimples(FiltroEmpresa.INDICADORUSO, ConstantesSistema.INDICADOR_USO_ATIVO)); colecaoPesquisa = this.getControladorUtil().pesquisar(filtroEmpresa, Empresa.class.getName()); if (colecaoPesquisa == null || colecaoPesquisa.isEmpty()) { throw new ControladorException("atencao.pesquisa_inexistente", null, "Empresa"); } empresa = (Empresa) Util.retonarObjetoDeColecao(colecaoPesquisa); filtroEmpresa.limparListaParametros(); colecaoEmpresa.add(empresa); } } if (!colecaoEmpresa.isEmpty()) { retorno.setColecaoEmpresa(colecaoEmpresa); } } /* * Colocado por Raphael Rossiter em 02/09/2010 TIPO DE IMPRESS�O */ if (tipoImpressao == null || tipoImpressao.equals("")) { throw new ControladorException("atencao.campo.informado", null, "Tipo da Impress�o"); } if (Util.validarValorNaoNumerico(tipoImpressao)) { throw new ControladorException("atencao.campo_texto.caracter_invalido", null, "Tipo da Impress�o"); } retorno.setTipoImpressao(Integer.valueOf(tipoImpressao)); return retorno; } /** * Pesquisar rela��o de protocolos de documentos de cobran�a do cronograma * * @author Ana Maria * @date 15/05/2007 * * @return Collection * @throws ErroRepositorioException */ public Collection pesquisarProtocoloDocumentoCobrancaCronograma(Integer idCobrancaAcaoAtividadeCronograma) throws ControladorException { Collection protocoloDocumentoCobranca = new ArrayList(); try { protocoloDocumentoCobranca = repositorioCobranca .pesquisarProtocoloDocumentoCobrancaCronograma(idCobrancaAcaoAtividadeCronograma); } catch (ErroRepositorioException e) { throw new ControladorException("erro.sistema", e); } return protocoloDocumentoCobranca; } /** * Pesquisar rela��o de protocolos de documentos de cobran�a do eventual * * @author Ana Maria * @date 15/05/2007 * * @return Collection * @throws ErroRepositorioException */ public Collection pesquisarProtocoloDocumentoCobrancaEventual(Integer idCobrancaAcaoAtividadeComand) throws ControladorException { Collection protocoloDocumentoCobranca = new ArrayList(); try { protocoloDocumentoCobranca = repositorioCobranca.pesquisarProtocoloDocumentoCobrancaEventual(idCobrancaAcaoAtividadeComand); } catch (ErroRepositorioException e) { throw new ControladorException("erro.sistema", e); } return protocoloDocumentoCobranca; } /** * Este caso de uso permite gerar o resumo das a��es de cobran�a com a * atividade emitir j� realizada e a atividade encerrar ainda n�o realizada * e realizar a atividade encerrar das a��es que estejam comandadas. * * [UC0478] Gerar Resumo das A��es de Cobran�a do Cronograma * * Retorna os CBCR_ID da tabela COBRANCA_ACAO_CRONOGRAMA com CBCM_ID da * tabela COBRANCA_GRUPO_CRONOGRAMA_MES * * @author Rafael Santos,S�vio Luiz * @date 16/10/2006,04/06/2007 * * @return Collection retorno * @throws ErroRepositorioException */ public Collection pesquisarCobrancaAcaoCronograma(int idCobrancaGrupoCronogramaMes) throws ControladorException { try { return repositorioCobranca.pesquisarCobrancaAcaoCronograma(idCobrancaGrupoCronogramaMes); } catch (ErroRepositorioException e) { throw new ControladorException("erro.sistema", e); } } /** * Este caso de uso permite gerar o resumo das a��es de cobran�a com a * atividade emitir j� realizada e a atividade encerrar ainda n�o realizada * e realizar a atividade encerrar das a��es que estejam comandadas. * * [UC0478] Gerar Resumo das A��es de Cobran�a do Cronograma * * Retorna CAAC_TMREALIZACAO do COBRANCA_ATIVIDADE_ACAO_CRONOGRAMA * * @author Rafael Santos,S�vio Luiz * @date 16/10/2006,04/06/2007 * * @return Collection retorno * @throws ErroRepositorioException */ public Collection pesquisarDataRelizacaoCobrancaAtividadeAcaoConograma(int idCobrancaAcaoCronograma, int idCobrancaAtividade) throws ControladorException { try { return repositorioCobranca.pesquisarDataRelizacaoCobrancaAtividadeAcaoConograma(idCobrancaAcaoCronograma, idCobrancaAtividade); } catch (ErroRepositorioException e) { throw new ControladorException("erro.sistema", e); } } /** * [UC00609] Transferencia de Debitos/Creditos * * [FS0004] Validar Registro Atendimento * * @author Raphael Rossiter * @created 05/06/2007 * * @param idSolicitacaoTipoEspecificacao * @exception ControladorException */ public Object[] validarRegistroAtendimentoTransferenciaDebitoCredito(Integer idRA, boolean levantarExcecao) throws ControladorException { Object[] retorno = new Object[3]; try { boolean continuarValidacao = true; Object[] dadosRegistroAtendimento = repositorioCobranca.pesquisarRegistroAtendimentoTransferenciaDebitoCredito(idRA); // Verificando exist�ncia do RA if (dadosRegistroAtendimento == null) { if (levantarExcecao) { throw new ControladorException("atencao.pesquisa_inexistente", null, "Registro de Atendimento"); } else { continuarValidacao = false; retorno[0] = "REGISTRO DE ATENDIMENTO INEXISTENTE"; retorno[1] = new Short("1"); } } if (continuarValidacao) { Integer idSolicitacaoTipoEspecificacao = (Integer) dadosRegistroAtendimento[1]; Integer idImovel = (Integer) dadosRegistroAtendimento[3]; Short codigoSituacaoRA = (Short) dadosRegistroAtendimento[4]; // Verificando se o RA est� associado a um im�vel if (idImovel == null) { throw new ControladorException("atencao.registro_atendimento_sem_imovel"); } // Verificando se o RA est� encerrado if (codigoSituacaoRA != null && codigoSituacaoRA.equals(RegistroAtendimento.SITUACAO_ENCERRADO)) { throw new ControladorException("atencao.registro_atendimento_encerrado"); } // Verificando se a Especifica��o do RA permite transfer�ncia de // d�bito EspecificacaoTipoValidacao especificacaoTipoValidacao = repositorioCobranca .pesquisarEspecificacaoTipoValidacaoTransferenciaDebitoCredito(idSolicitacaoTipoEspecificacao); if (especificacaoTipoValidacao == null) { throw new ControladorException("atencao.solicitacao_tipo_especificacao_nao_permite_transferencia"); } retorno[0] = (String) dadosRegistroAtendimento[2]; retorno[1] = new Short("2"); retorno[2] = idImovel; } } catch (ErroRepositorioException e) { throw new ControladorException("erro.sistema", e); } return retorno; } /** * [UC00609] Transferencia de Debitos/Creditos * * @author Raphael Rossiter * @created 08/06/2007 * * @param idRA * , idImovelDestino * @exception ControladorException */ public Integer validarTransferenciaDebitoCreditoDadosImoveis(Integer idRA, Integer idImovelDestino) throws ControladorException { Integer idImovelRA = null; // [FS0004] Validar Registro Atendimento Object[] dadosRA = this.validarRegistroAtendimentoTransferenciaDebitoCredito(idRA, true); idImovelRA = (Integer) dadosRA[2]; // [FS0001] Verificar exist�ncia da matr�cula do im�vel String inscricaoImovel = this.getControladorImovel().pesquisarInscricaoImovel(idImovelDestino); if (inscricaoImovel == null) { throw new ControladorException("atencao.pesquisa_inexistente", null, "Im�vel"); } if (idImovelRA.equals(idImovelDestino)) { throw new ControladorException("atencao.imovel_ra_igual_imovel_destino"); } // [FS0006] - Verificar Im�vel Destino SistemaParametro sistemaParametro = getControladorUtil().pesquisarParametrosDoSistema(); if (sistemaParametro.getIndicadorTransferenciaComDebito().equals(ConstantesSistema.NAO)) { String anoMesInicial = "000101"; String anoMesFinal = "999912"; String dataVencimentoInicialFormatada = "01/01/0001"; Date dataVencimentoInicial = Util.converteStringParaDate(dataVencimentoInicialFormatada); Date dataVencimentoFinal = Util.adicionarNumeroDiasDeUmaData(new Date(), 3); ObterDebitoImovelOuClienteHelper obterDebitoImovelOuClienteHelper = this.obterDebitoImovelOuCliente( // Indicador de d�bito do im�vel 1, // Matr�cula do Im�vel idImovelDestino.toString(), // C�digo do Cliente null, // Tipo da Rela��o null, // M�s/Ano Inicial de Refer�ncia do D�bito anoMesInicial, // M�s/Ano Final de Refer�ncia do D�bito anoMesFinal, // Data Vencimento Inicial dataVencimentoInicial, // Data Vencimento Final dataVencimentoFinal, // Indicador de Pagamento com Valor 1, // Indicador de Conta em Revis�o com Valor 1, // Indicador de D�bito a Cobrar com Valor 1, // Indicador de Cr�dito a Realizar com Valor 1, // Indicador de Notas Promiss�rias com Valor 1, // Indicador de Guias de Pagamento com Valor 1, // Indicador Calcular Acr�scimos por Impontualidade 1, // Indicador de Atualizar D�bito com Valor true); if ((obterDebitoImovelOuClienteHelper.getColecaoContasValores() != null && !obterDebitoImovelOuClienteHelper .getColecaoContasValores().isEmpty()) || (obterDebitoImovelOuClienteHelper.getColecaoContasValoresImovel() != null && !obterDebitoImovelOuClienteHelper .getColecaoContasValoresImovel().isEmpty()) || (obterDebitoImovelOuClienteHelper.getColecaoCreditoARealizar() != null && !obterDebitoImovelOuClienteHelper .getColecaoCreditoARealizar().isEmpty()) || (obterDebitoImovelOuClienteHelper.getColecaoDebitoACobrar() != null && !obterDebitoImovelOuClienteHelper .getColecaoDebitoACobrar().isEmpty()) || (obterDebitoImovelOuClienteHelper.getColecaoDebitoCreditoParcelamentoHelper() != null && !obterDebitoImovelOuClienteHelper .getColecaoDebitoCreditoParcelamentoHelper().isEmpty()) || (obterDebitoImovelOuClienteHelper.getColecaoGuiasPagamentoValores() != null && !obterDebitoImovelOuClienteHelper .getColecaoGuiasPagamentoValores().isEmpty())) { throw new ControladorException("atencao.imovel_destino_com_debito", null, idImovelDestino.toString()); } } return idImovelRA; } /** * [UC00609] Transferencia de Debitos/Creditos * * [SB0001] - Apresentar D�bitos/Cr�ditos do Im�vel de Origem * * [FS0002] - Verificar exist�ncia de d�bitos/cr�ditos no im�vel de origem * * @author Raphael Rossiter * @created 08/06/2007 * * @param idImovelOrigem * @exception ControladorException */ public ObterDebitoImovelOuClienteHelper apresentarDebitoCreditoImovelOrigem(Integer idImovelOrigem) throws ControladorException { Date dataVencimentoInicial = Util.criarData(1, 1, 0001); Date dataVencimentoFinal = Util.criarData(31, 12, 9999); // [UC0067] Obter D�bito do Im�vel ou Cliente ObterDebitoImovelOuClienteHelper imovelDebitoCredito = this.obterDebitoImovelOuCliente(1, idImovelOrigem.toString(), null, null, "000101", "999912", dataVencimentoInicial, dataVencimentoFinal, 1, 1, 1, 1, 1, 1, 1, true); boolean existeDebitoCredito = false; // CONTA if (imovelDebitoCredito.getColecaoContasValoresImovel() != null && !imovelDebitoCredito.getColecaoContasValoresImovel().isEmpty()) { existeDebitoCredito = true; } // DEBITO_A_COBRAR if (imovelDebitoCredito.getColecaoDebitoACobrar() != null && !imovelDebitoCredito.getColecaoDebitoACobrar().isEmpty()) { existeDebitoCredito = true; Collection<DebitoACobrar> colecaoDebitoACobrarNaoParcelamento = new ArrayList(); /* * Alterado por Raphael Rossiter em 25/10/2007 * * Selecionar apenas os d�bitos que n�o sejam de parcelamento onde o * tipo de financiamento associado a ele seja DIFERENTE de 2 - * PARCELAMENTO_AGUA ,3 - PARCELAMENTO_ESGOTO ,4 - * PARCELAMENTO_SERVICO, 8 - JUROS_PARCELAMENTO */ Iterator itColecaoDebitoACobrar = imovelDebitoCredito.getColecaoDebitoACobrar().iterator(); Collection colecaoDebitoTipo = null; FiltroDebitoTipo filtroDebitoTipo = new FiltroDebitoTipo(); DebitoTipo debitoTipo = null; while (itColecaoDebitoACobrar.hasNext()) { DebitoACobrar debitoACobrar = (DebitoACobrar) itColecaoDebitoACobrar.next(); filtroDebitoTipo.adicionarCaminhoParaCarregamentoEntidade("financiamentoTipo"); filtroDebitoTipo.adicionarParametro(new ParametroSimples(FiltroDebitoTipo.ID, debitoACobrar.getDebitoTipo().getId())); colecaoDebitoTipo = this.getControladorUtil().pesquisar(filtroDebitoTipo, DebitoTipo.class.getName()); debitoTipo = (DebitoTipo) Util.retonarObjetoDeColecao(colecaoDebitoTipo); if (!debitoTipo.getFinanciamentoTipo().getId().equals(FinanciamentoTipo.PARCELAMENTO_AGUA) && !debitoTipo.getFinanciamentoTipo().getId().equals(FinanciamentoTipo.PARCELAMENTO_ESGOTO) && !debitoTipo.getFinanciamentoTipo().getId().equals(FinanciamentoTipo.PARCELAMENTO_SERVICO) && !debitoTipo.getFinanciamentoTipo().getId().equals(FinanciamentoTipo.JUROS_PARCELAMENTO)) { colecaoDebitoACobrarNaoParcelamento.add(debitoACobrar); } filtroDebitoTipo.limparListaParametros(); } imovelDebitoCredito.setColecaoDebitoACobrar(colecaoDebitoACobrarNaoParcelamento); } // CREDITO_A_REALIZAR if (imovelDebitoCredito.getColecaoCreditoARealizar() != null && !imovelDebitoCredito.getColecaoCreditoARealizar().isEmpty()) { existeDebitoCredito = true; Collection<CreditoARealizar> colecaoCreditoARealizarNaoParcelamento = new ArrayList(); // Selecionar apenas os cr�ditos que n�o sejam de parcelamento Iterator itColecaoCreditoARealizar = imovelDebitoCredito.getColecaoCreditoARealizar().iterator(); while (itColecaoCreditoARealizar.hasNext()) { CreditoARealizar creditoARealizar = (CreditoARealizar) itColecaoCreditoARealizar.next(); if (!creditoARealizar.getCreditoTipo().getId().equals(CreditoTipo.DESCONTO_INATIVIDADE_LIGACAO_AGUA) && !creditoARealizar.getCreditoTipo().getId().equals(CreditoTipo.DESCONTO_ANTIGUIDADE_DEBITO)) { colecaoCreditoARealizarNaoParcelamento.add(creditoARealizar); } } imovelDebitoCredito.setColecaoCreditoARealizar(colecaoCreditoARealizarNaoParcelamento); } // GUIA_PAGAMENTO if (imovelDebitoCredito.getColecaoGuiasPagamentoValores() != null && !imovelDebitoCredito.getColecaoGuiasPagamentoValores().isEmpty()) { existeDebitoCredito = true; Collection<GuiaPagamentoValoresHelper> colecaoGuiasPagamentoValoresNaoParcelamento = new ArrayList(); // Selecionar apenas as guias que n�o sejam de entrada de // parcelamento Iterator itColecaoGuiasPagamentoValoresNaoParcelamento = imovelDebitoCredito.getColecaoGuiasPagamentoValores().iterator(); while (itColecaoGuiasPagamentoValoresNaoParcelamento.hasNext()) { GuiaPagamentoValoresHelper guiaPagamentoValoresHelper = (GuiaPagamentoValoresHelper) itColecaoGuiasPagamentoValoresNaoParcelamento .next(); if (!guiaPagamentoValoresHelper.getGuiaPagamento().getDebitoTipo().getId().equals(DebitoTipo.ENTRADA_PARCELAMENTO)) { colecaoGuiasPagamentoValoresNaoParcelamento.add(guiaPagamentoValoresHelper); } } imovelDebitoCredito.setColecaoGuiasPagamentoValores(colecaoGuiasPagamentoValoresNaoParcelamento); } // [FS0002] - Verificar exist�ncia de d�bitos/cr�ditos no im�vel de // origem if (!existeDebitoCredito) { throw new ControladorException("atencao.imovel_origem_sem_debito_credito"); } return imovelDebitoCredito; } /** * [UC0609] Transfer�ncia de D�bitos/Cr�ditos * * [SB00002] Transfer�ncia dos D�bitos/Cr�ditos selecionados para o im�vel * destino * * @author Vivianne Sousa * @date 09/06/2007 * * @param idImovelDestino * @param colecaoConta * @param colecaoDebitosACobrar * @param colecaoCreditosARealizar * @param colecaoGuiasPagamento * @throws ControladorException */ public void transferirDebitosCreditos(Integer idImovelDestino, Collection colecaoContas, Collection colecaoDebitosACobrar, Collection colecaoCreditosARealizar, Collection colecaoGuiasPagamento, Usuario usuarioLogado, Integer idRegistroAtendimento, String identificadoresConta) throws ControladorException { RegistroAtendimento registroAtendimento = new RegistroAtendimento(); registroAtendimento.setId(idRegistroAtendimento); Imovel imovelDestino = this.getControladorImovel().pesquisarImovelRegistroAtendimento(idImovelDestino); // 1.Caso exista conta selecionada na Cole��o de Contas if (colecaoContas != null && !colecaoContas.isEmpty()) { ContaMotivoCancelamento contaMotivoCancelamento = new ContaMotivoCancelamento(); contaMotivoCancelamento.setId(ContaMotivoCancelamento.TRASFERENCIA_DE_COBRANCA); Iterator iterContas = colecaoContas.iterator(); while (iterContas.hasNext()) { Conta conta = (Conta) iterContas.next(); // 1.1.2. // o sistema passa a conta cancelada do im�vel origem para // inclus�o this.inserirContaTransferencia(conta, imovelDestino, usuarioLogado); Collection colecaoContaRemover = new ArrayList(); colecaoContaRemover.add(conta); // 1.1.1. // o sistema passa a conta a ser transferida para cancelamento // com o motivo de "TRANSFER�NCIA CONTA" this.getControladorFaturamento().cancelarConta(colecaoContaRemover, identificadoresConta, contaMotivoCancelamento, usuarioLogado, false); } } // 2.Caso exista d�bito a cobrar selecionada na Cole��o de d�bitos a // cobrar if (colecaoDebitosACobrar != null && !colecaoDebitosACobrar.isEmpty()) { Iterator iterDebitosACobrar = colecaoDebitosACobrar.iterator(); while (iterDebitosACobrar.hasNext()) { DebitoACobrar debitosACobrar = (DebitoACobrar) iterDebitosACobrar.next(); // 2.1.2. // o sistema passa o d�bito a cobrar do im�vel origem para // inclus�o this.inserirDebitoACobrarTransferencia(debitosACobrar, imovelDestino, usuarioLogado, registroAtendimento); // 2.1.1. // o sistema passa o d�bito a cobrar a ser transferido para // cancelamento this.cancelarDebitoACobrarTransferencia(debitosACobrar.getId(), usuarioLogado); } } // 3.Caso exista cr�dito a realizar selecionada na Cole��o de cr�ditos a // realizar if (colecaoCreditosARealizar != null && !colecaoCreditosARealizar.isEmpty()) { Iterator iterCreditosARealizar = colecaoCreditosARealizar.iterator(); while (iterCreditosARealizar.hasNext()) { CreditoARealizar creditoARealizar = (CreditoARealizar) iterCreditosARealizar.next(); // 3.1.2. // o sistema passa o cr�dito a realizar do im�vel origem para // inclus�o this.inserirCreditoARealizarTransferencia(imovelDestino, creditoARealizar, usuarioLogado, registroAtendimento); // 3.1.1. // o sistema passa o cr�dito a realizar a ser transferido para // cancelamento this.cancelarCreditoARealizarTransferencia(creditoARealizar.getId(), creditoARealizar.getImovel(), usuarioLogado); } } // 4.Caso exista guia de pagamento selecionada na Cole��o de guias de // pagamento if (colecaoGuiasPagamento != null && !colecaoGuiasPagamento.isEmpty()) { Iterator iterGuiasPagamento = colecaoGuiasPagamento.iterator(); while (iterGuiasPagamento.hasNext()) { GuiaPagamento guiaPagamento = (GuiaPagamento) iterGuiasPagamento.next(); // 3.1.2. // o sistema passa a guia de pagamento do im�vel origem para // inclus�o this.inserirGuiaPagamentoTransferencia(guiaPagamento, usuarioLogado, imovelDestino, registroAtendimento); // 3.1.1. // o sistema passa a guia de pagamento a ser transferido para // cancelamento this.manterGuiaPagamentoTransferencia(guiaPagamento, usuarioLogado); } } } /** * [US0184] Manter D�bito A Cobrar Author: Vivianne Sousa Data: 11/06/2007 * * @param idDebitoAcobrar * @param usuarioLogado * @throws ControladorException */ public void cancelarDebitoACobrarTransferencia(Integer idDebitoAcobrar, Usuario usuarioLogado) throws ControladorException { FiltroDebitoACobrar filtroDebitoACobrar = new FiltroDebitoACobrar(); filtroDebitoACobrar.adicionarCaminhoParaCarregamentoEntidade(FiltroDebitoACobrar.DEBITO_CREDITO_SITUACAO_ATUAL); filtroDebitoACobrar.adicionarCaminhoParaCarregamentoEntidade(FiltroDebitoACobrar.IMOVEL); filtroDebitoACobrar.adicionarParametro(new ParametroSimples(FiltroDebitoACobrar.ID, idDebitoAcobrar)); Collection colecaoDebitosACobrar = getControladorUtil().pesquisar(filtroDebitoACobrar, DebitoACobrar.class.getName()); DebitoACobrar debitoACobrar = (DebitoACobrar) colecaoDebitosACobrar.iterator().next(); debitoACobrar.setDebitoCreditoSituacaoAnterior(debitoACobrar.getDebitoCreditoSituacaoAtual()); DebitoCreditoSituacao debitoCreditoSituacao = new DebitoCreditoSituacao(); debitoCreditoSituacao.setId(DebitoCreditoSituacao.CANCELADA); debitoACobrar.setDebitoCreditoSituacaoAtual(debitoCreditoSituacao); debitoACobrar.setUsuario(usuarioLogado); debitoACobrar.setUltimaAlteracao(new Date()); // ------------ REGISTRAR TRANSA��O ---------------- RegistradorOperacao registradorOperacao = new RegistradorOperacao(Operacao.OPERACAO_DEBITO_A_COBRAR_CANCELAR, debitoACobrar .getImovel().getId(), debitoACobrar.getImovel().getId(), new UsuarioAcaoUsuarioHelper(usuarioLogado, UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO)); registradorOperacao.registrarOperacao(debitoACobrar); // ------------ REGISTRAR TRANSA��O ---------------- getControladorUtil().atualizar(debitoACobrar); } /** * [UC0183] - Inserir D�bito A Cobrar * * @author Vivianne Sousa * @date 11/06/2007 * * @param debitoACobrar * @param imovelDestino * @param usuarioLogado * @param colecaoDebitoACobrarCategoria * @param registroAtendimento * @param debitoCreditoSituacaoAtual * @param debitoCreditoSituacaoAnterior * @throws ControladorException */ public void inserirDebitoACobrarTransferencia(DebitoACobrar debitoACobrarOrigem, Imovel imovelDestino, Usuario usuarioLogado, RegistroAtendimento registroAtendimento) throws ControladorException { // CARREGANDO O DEBITO DESTINO // ======================================================== FiltroDebitoACobrar filtroDebitoACobrar = new FiltroDebitoACobrar(); filtroDebitoACobrar.adicionarCaminhoParaCarregamentoEntidade("parcelamento"); filtroDebitoACobrar.adicionarCaminhoParaCarregamentoEntidade("financiamentoTipo"); filtroDebitoACobrar.adicionarCaminhoParaCarregamentoEntidade("documentoTipo"); filtroDebitoACobrar.adicionarCaminhoParaCarregamentoEntidade("ordemServico"); filtroDebitoACobrar.adicionarCaminhoParaCarregamentoEntidade("debitoTipo"); filtroDebitoACobrar.adicionarCaminhoParaCarregamentoEntidade("lancamentoItemContabil"); filtroDebitoACobrar.adicionarCaminhoParaCarregamentoEntidade("parcelamentoGrupo"); filtroDebitoACobrar.adicionarCaminhoParaCarregamentoEntidade("cobrancaForma"); filtroDebitoACobrar.adicionarCaminhoParaCarregamentoEntidade("debitoCreditoSituacaoAnterior"); filtroDebitoACobrar.adicionarCaminhoParaCarregamentoEntidade("debitoCreditoSituacaoAtual"); filtroDebitoACobrar.adicionarParametro(new ParametroSimples(FiltroDebitoACobrar.ID, debitoACobrarOrigem.getId())); Collection colecaoDebitoACobrar = this.getControladorUtil().pesquisar(filtroDebitoACobrar, DebitoACobrar.class.getName()); DebitoACobrar debitoACobrar = (DebitoACobrar) colecaoDebitoACobrar.iterator().next(); debitoACobrar.setDebitoACobrarCategorias(null); // =================================================================================== // DADOS CADASTRAIS // ================================================================= // alterado por Vivianne Sousa data:15/04/2008 // analista: Adriano short numeroPrestacoesDebito = debitoACobrarOrigem.getParcelasRestanteComBonus(); // debitoACobrarOrigem.getNumeroPrestacaoDebito() // - debitoACobrarOrigem.getNumeroPrestacaoCobradas(); /* * Colocado por Raphael Rossiter em 05/08/2008 [SB0003] - Obter Valor * D�bito/Cr�dito. */ debitoACobrar.setValorDebito(debitoACobrar.getValorTotal()); debitoACobrar.setNumeroPrestacaoDebito(numeroPrestacoesDebito); debitoACobrar.setNumeroPrestacaoCobradas((short) 0); debitoACobrar.setCodigoSetorComercial(imovelDestino.getSetorComercial().getCodigo()); debitoACobrar.setImovel(imovelDestino); debitoACobrar.setLocalidade(imovelDestino.getLocalidade()); debitoACobrar.setNumeroLote(imovelDestino.getLote()); debitoACobrar.setNumeroQuadra(imovelDestino.getQuadra().getNumeroQuadra()); debitoACobrar.setNumeroSubLote(imovelDestino.getSubLote()); debitoACobrar.setQuadra(imovelDestino.getQuadra()); debitoACobrar.setRegistroAtendimento(registroAtendimento); DebitoACobrarGeral debitoACobrarGeralOrigem = new DebitoACobrarGeral(); debitoACobrarGeralOrigem.setId(debitoACobrar.getId()); debitoACobrar.setDebitoACobrarGeralOrigem(debitoACobrarGeralOrigem); debitoACobrar.setId(null); // Insere o DebitoACobrarGeral na tabela debito_a_cobrar_geral DebitoACobrarGeral debitoACobrarGeral = new DebitoACobrarGeral(); Short indicadorHistorico = 2; debitoACobrarGeral.setIndicadorHistorico(indicadorHistorico); debitoACobrarGeral.setUltimaAlteracao(new Date()); // ================================================================================ Integer idDebitoGerado = (Integer) this.getControladorUtil().inserir(debitoACobrarGeral); debitoACobrarGeral.setId(idDebitoGerado); debitoACobrar.setDebitoACobrarGeral(debitoACobrarGeral); debitoACobrar.setId(idDebitoGerado); debitoACobrar.setUsuario(usuarioLogado); // ------------ REGISTRAR TRANSA��O ---------------- RegistradorOperacao registradorOperacao = new RegistradorOperacao(Operacao.OPERACAO_DEBITO_A_COBRAR_INSERIR, debitoACobrar .getImovel().getId(), debitoACobrar.getImovel().getId(), new UsuarioAcaoUsuarioHelper(usuarioLogado, UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO)); registradorOperacao.registrarOperacao(debitoACobrar); // ------------ REGISTRAR TRANSA��O ---------------- getControladorUtil().inserir(debitoACobrar); // DEBITO_A_COBRAR_CATEGORIA // ======================================================== FiltroDebitoACobrarCategoria filtroDebitoACobrarCategoria = new FiltroDebitoACobrarCategoria(); filtroDebitoACobrarCategoria.adicionarCaminhoParaCarregamentoEntidade("comp_id.debitoACobrar"); filtroDebitoACobrarCategoria.adicionarCaminhoParaCarregamentoEntidade("comp_id.categoria"); filtroDebitoACobrarCategoria.adicionarCaminhoParaCarregamentoEntidade("categoria"); filtroDebitoACobrarCategoria.adicionarCaminhoParaCarregamentoEntidade("debitoACobrar"); filtroDebitoACobrarCategoria.adicionarParametro(new ParametroSimples(FiltroDebitoACobrarCategoria.ID_DEBITO_A_COBRAR, debitoACobrarOrigem.getId())); Collection colecaoDebitoACobrarCategoria = this.getControladorUtil().pesquisar(filtroDebitoACobrarCategoria, DebitoACobrarCategoria.class.getName()); // Inserir DebitoACobrarCategoria Iterator icolecaoDebitoACobrarCategoria = colecaoDebitoACobrarCategoria.iterator(); while (icolecaoDebitoACobrarCategoria.hasNext()) { DebitoACobrarCategoria debitoACobrarCategoria = (DebitoACobrarCategoria) icolecaoDebitoACobrarCategoria.next(); debitoACobrarCategoria.getComp_id().setDebitoACobrar(debitoACobrar); debitoACobrarCategoria.setDebitoACobrar(debitoACobrar); debitoACobrarCategoria.setUltimaAlteracao(new Date()); // ------------ REGISTRAR TRANSA��O ---------------- /* * debitoACobrarCategoria.setOperacaoEfetuada(operacaoEfetuada); * debitoACobrarCategoria.adicionarUsuario(usuarioLogado, * UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO); * registradorOperacao.registrarOperacao(debitoACobrarCategoria); */ // ------------ REGISTRAR TRANSA��O ---------------- getControladorUtil().inserir(debitoACobrarCategoria); } // ============================================================================== } /** * [UC0195] - Manter Cr�dito a Realizar * * @author Vivianne Sousa * @date 11/06/2007 * * @param idCreditoARealizar * @param imovel * @param usuarioLogado * @throws ControladorException */ public void cancelarCreditoARealizarTransferencia(Integer idCreditoARealizar, Imovel imovelDestino, Usuario usuarioLogado) throws ControladorException { FiltroCreditoARealizar filtroCredito = new FiltroCreditoARealizar(); filtroCredito.adicionarCaminhoParaCarregamentoEntidade("debitoCreditoSituacaoAtual"); filtroCredito.adicionarParametro(new ParametroSimples(FiltroCreditoARealizar.ID, idCreditoARealizar)); Collection colecaoCreditoARealizar = getControladorUtil().pesquisar(filtroCredito, CreditoARealizar.class.getName()); CreditoARealizar credito = (CreditoARealizar) colecaoCreditoARealizar.iterator().next(); FiltroImovelCobrancaSituacao filtroImovelCobrancaSituacao = new FiltroImovelCobrancaSituacao(); filtroImovelCobrancaSituacao.adicionarCaminhoParaCarregamentoEntidade("cobrancaSituacao"); filtroImovelCobrancaSituacao.adicionarParametro(new ParametroSimples(FiltroImovelCobrancaSituacao.IMOVEL_ID, imovelDestino.getId())); Collection imovelCobrancaSituacaoEncontrada = getControladorUtil().pesquisar(filtroImovelCobrancaSituacao, ImovelCobrancaSituacao.class.getName()); if (imovelCobrancaSituacaoEncontrada != null && !imovelCobrancaSituacaoEncontrada.isEmpty()) { if (((ImovelCobrancaSituacao) ((List) imovelCobrancaSituacaoEncontrada).get(0)).getCobrancaSituacao() != null) { if (((ImovelCobrancaSituacao) ((List) imovelCobrancaSituacaoEncontrada).get(0)).getCobrancaSituacao().getId().equals(CobrancaSituacao.COBRANCA_ADMINISTRATIVA) && ((ImovelCobrancaSituacao) ((List) imovelCobrancaSituacaoEncontrada).get(0)).getDataRetiradaCobranca() == null) { sessionContext.setRollbackOnly(); throw new ActionServletException("atencao.pesquisa.imovel.cobranca_administrativa"); } } } SistemaParametro sistemaParametro = getControladorUtil().pesquisarParametrosDoSistema(); // Debito Credito Situacao Anterior if (credito.getAnoMesReferenciaContabil() >= sistemaParametro.getAnoMesFaturamento()) { credito.setDebitoCreditoSituacaoAnterior(new DebitoCreditoSituacao(credito.getDebitoCreditoSituacaoAtual().getId())); } // Debito Credito Situacao Atual credito.setDebitoCreditoSituacaoAtual(new DebitoCreditoSituacao(DebitoCreditoSituacao.CANCELADA)); credito.setUsuario(usuarioLogado); credito.setUltimaAlteracao(new Date()); // ------------ REGISTRAR TRANSA��O ---------------- RegistradorOperacao registradorOperacao = new RegistradorOperacao(Operacao.OPERACAO_CREDITO_A_REALIZAR_CANCELAR, credito.getImovel().getId(), credito.getImovel().getId(), new UsuarioAcaoUsuarioHelper(usuarioLogado, UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO)); registradorOperacao.registrarOperacao(credito); // ------------ REGISTRAR TRANSA��O ---------------- getControladorUtil().atualizar(credito); } /** * [UC0194] - Inserir Cr�dito a Realizar * * @author Vivianne Sousa * @date 11/06/2007 * * @param imovelDestino * @param creditoARealizar * @param usuarioLogado * @param colecaoCreditoARealizarCategoria * @param registroAtendimento * @param debitoCreditoSituacaoAtual * @param debitoCreditoSituacaoAnterior * @throws ControladorException */ public void inserirCreditoARealizarTransferencia(Imovel imovelDestino, CreditoARealizar creditoARealizarOrigem, Usuario usuarioLogado, RegistroAtendimento registroAtendimento) throws ControladorException { // CARREGANDO O CREDITO DESTINO // ======================================================== FiltroCreditoARealizar filtroCreditoARealizar = new FiltroCreditoARealizar(); filtroCreditoARealizar.adicionarCaminhoParaCarregamentoEntidade("parcelamento"); filtroCreditoARealizar.adicionarCaminhoParaCarregamentoEntidade("documentoTipo"); filtroCreditoARealizar.adicionarCaminhoParaCarregamentoEntidade("ordemServico"); filtroCreditoARealizar.adicionarCaminhoParaCarregamentoEntidade("creditoTipo"); filtroCreditoARealizar.adicionarCaminhoParaCarregamentoEntidade("lancamentoItemContabil"); filtroCreditoARealizar.adicionarCaminhoParaCarregamentoEntidade("origem"); filtroCreditoARealizar.adicionarCaminhoParaCarregamentoEntidade("creditoOrigem"); filtroCreditoARealizar.adicionarCaminhoParaCarregamentoEntidade("debitoCreditoSituacaoAnterior"); filtroCreditoARealizar.adicionarCaminhoParaCarregamentoEntidade("debitoCreditoSituacaoAtual"); filtroCreditoARealizar.adicionarCaminhoParaCarregamentoEntidade("creditoARealizarGeral"); filtroCreditoARealizar.adicionarParametro(new ParametroSimples(FiltroCreditoARealizar.ID, creditoARealizarOrigem.getId())); Collection colecaoCreditoARealizar = this.getControladorUtil().pesquisar(filtroCreditoARealizar, CreditoARealizar.class.getName()); CreditoARealizar creditoARealizar = (CreditoARealizar) colecaoCreditoARealizar.iterator().next(); creditoARealizar.setCreditoARealizarCategoria(null); // =================================================================================== // DADOS CADASTRAIS // ================================================================= int numeroPrestacoesRealizada = creditoARealizarOrigem.getNumeroPrestacaoCredito() - creditoARealizarOrigem.getNumeroPrestacaoRealizada(); /* * Colocado por Raphael Rossiter em 05/08/2008 [SB0003] - Obter Valor * D�bito/Cr�dito. */ creditoARealizar.setValorCredito(creditoARealizar.getValorTotal()); creditoARealizar.setValorResidualMesAnterior(null); creditoARealizar.setNumeroPrestacaoRealizada((short) numeroPrestacoesRealizada); creditoARealizar.setNumeroPrestacaoRealizada((short) 0); // Imovel creditoARealizar.setImovel(imovelDestino); creditoARealizar.setLocalidade(imovelDestino.getLocalidade()); creditoARealizar.setCodigoSetorComercial(imovelDestino.getSetorComercial().getCodigo()); creditoARealizar.setNumeroLote(imovelDestino.getLote()); creditoARealizar.setNumeroSubLote(imovelDestino.getSubLote()); creditoARealizar.setQuadra(imovelDestino.getQuadra()); creditoARealizar.setNumeroQuadra(new Integer(imovelDestino.getQuadra().getNumeroQuadra())); CreditoARealizarGeral creditoARealizarGeralOrigem = new CreditoARealizarGeral(); creditoARealizarGeralOrigem.setId(creditoARealizar.getId()); creditoARealizar.setOrigem(creditoARealizarGeralOrigem); creditoARealizar.setId(null); creditoARealizar.setRegistroAtendimento(registroAtendimento); creditoARealizar.setUltimaAlteracao(new Date()); CreditoARealizarGeral creditoARealizarGeral = new CreditoARealizarGeral(); Short indicadorHistorico = 2; creditoARealizarGeral.setIndicadorHistorico(indicadorHistorico); creditoARealizarGeral.setUltimaAlteracao(new Date()); Integer idGerado = (Integer) this.getControladorUtil().inserir(creditoARealizarGeral); // seta o id da Conta Geral gerada no objeto contaGeral creditoARealizarGeral.setId(idGerado); creditoARealizar.setCreditoARealizarGeral(creditoARealizarGeral); creditoARealizar.setId(idGerado); creditoARealizar.setUsuario(usuarioLogado); // ------------ REGISTRAR TRANSA��O ---------------- RegistradorOperacao registradorOperacao = new RegistradorOperacao(Operacao.OPERACAO_CREDITO_A_REALIZAR_INSERIR, creditoARealizar .getImovel().getId(), creditoARealizar.getImovel().getId(), new UsuarioAcaoUsuarioHelper(usuarioLogado, UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO)); registradorOperacao.registrarOperacao(creditoARealizar); // ------------ REGISTRAR TRANSA��O ---------------- // Inserido o objeto Cr�dito a Realizar getControladorUtil().inserir(creditoARealizar); // CREDITO_A_REALIZAR_CATEGORIA // ======================================================== FiltroCreditoARealizarCategoria filtroCreditoARealizarCategoria = new FiltroCreditoARealizarCategoria(); filtroCreditoARealizarCategoria.adicionarCaminhoParaCarregamentoEntidade("creditoARealizar"); filtroCreditoARealizarCategoria.adicionarCaminhoParaCarregamentoEntidade("categoria"); filtroCreditoARealizarCategoria.adicionarParametro(new ParametroSimples(FiltroCreditoARealizarCategoria.ID_CREDITO_A_REALIZAR, creditoARealizarOrigem.getId())); Collection colecaoCreditoARealizarCategoria = this.getControladorUtil().pesquisar(filtroCreditoARealizarCategoria, CreditoARealizarCategoria.class.getName()); // Inserir CreditoARealizarCategoria Iterator icolecaoCreditoARealizarCategoria = colecaoCreditoARealizarCategoria.iterator(); while (icolecaoCreditoARealizarCategoria.hasNext()) { CreditoARealizarCategoria creditoARealizarCategoria = (CreditoARealizarCategoria) icolecaoCreditoARealizarCategoria.next(); Categoria categoria = creditoARealizarCategoria.getCategoria(); creditoARealizarCategoria.setComp_id(new CreditoARealizarCategoriaPK(creditoARealizar.getId(), categoria.getId())); creditoARealizarCategoria.setUltimaAlteracao(new Date()); getControladorUtil().inserir(creditoARealizarCategoria); } // ====================================================================================== } /** * [UC0188] - Manter Guia de Pagamento * * @author Vivianne Sousa * @since 11/06/2007 * * @param guiaPagamento * @param usuarioLogado * @throws ControladorException */ public void manterGuiaPagamentoTransferencia(GuiaPagamento guiaPagamentoOrigem, Usuario usuarioLogado) throws ControladorException { // CARREGANDO A GUIA // ================================================================ FiltroGuiaPagamento filtroGuiaPagamento = new FiltroGuiaPagamento(); filtroGuiaPagamento.adicionarCaminhoParaCarregamentoEntidade("cliente"); filtroGuiaPagamento.adicionarCaminhoParaCarregamentoEntidade("imovel"); filtroGuiaPagamento.adicionarCaminhoParaCarregamentoEntidade("debitoCreditoSituacaoAtual"); filtroGuiaPagamento.adicionarCaminhoParaCarregamentoEntidade("debitoCreditoSituacaoAnterior"); filtroGuiaPagamento.adicionarParametro(new ParametroSimples(FiltroGuiaPagamento.ID, guiaPagamentoOrigem.getId())); Collection colecaoGuiaPagamento = this.getControladorUtil().pesquisar(filtroGuiaPagamento, GuiaPagamento.class.getName()); GuiaPagamento guiaPagamento = (GuiaPagamento) colecaoGuiaPagamento.iterator().next(); // =================================================================================== // String idCliente = guiaPagamento.getCliente().getId() == null ? "" : // guiaPagamento.getCliente().getId().toString(); String idImovel = guiaPagamento.getImovel() == null || guiaPagamento.getImovel().getId() == null ? "" : guiaPagamento.getImovel() .getId().toString(); if (idImovel != null && !idImovel.equals("")) { if (!idImovel.equalsIgnoreCase(guiaPagamento.getImovel().getId().toString())) { sessionContext.setRollbackOnly(); throw new ControladorException("atencao.imovel.alterado"); } FiltroImovelCobrancaSituacao filtroImovelCobrancaSituacao = new FiltroImovelCobrancaSituacao(); filtroImovelCobrancaSituacao.adicionarParametro(new ParametroSimples(FiltroImovelCobrancaSituacao.IMOVEL_ID, idImovel)); Collection imovelCobrancaSituacaoEncontrada = getControladorUtil().pesquisar(filtroImovelCobrancaSituacao, ImovelCobrancaSituacao.class.getName()); if (imovelCobrancaSituacaoEncontrada != null && !imovelCobrancaSituacaoEncontrada.isEmpty()) { if (((ImovelCobrancaSituacao) ((List) imovelCobrancaSituacaoEncontrada).get(0)).getCobrancaSituacao() != null) { if (((ImovelCobrancaSituacao) ((List) imovelCobrancaSituacaoEncontrada).get(0)).getCobrancaSituacao().getId() .equals(CobrancaSituacao.COBRANCA_ADMINISTRATIVA) && ((ImovelCobrancaSituacao) ((List) imovelCobrancaSituacaoEncontrada).get(0)).getDataRetiradaCobranca() == null) { sessionContext.setRollbackOnly(); throw new ActionServletException("atencao.pesquisa.imovel.cobranca_administrativa"); } } } } /* * if (idCliente != null && !idCliente.equals("")) { // Fazer o teste de * cliente com cobranca administrativa. * * if * (!idCliente.equalsIgnoreCase(guiaPagamento.getCliente().getId().toString * ())) { throw new ControladorException("atencao.cliente.alterado"); } * } */ SistemaParametro sistemaParametro = this.getControladorUtil().pesquisarParametrosDoSistema(); if (guiaPagamento.getAnoMesReferenciaContabil().intValue() >= sistemaParametro.getAnoMesFaturamento().intValue()) { // SITUA��O ANTERIOR guiaPagamento.setDebitoCreditoSituacaoAnterior(guiaPagamento.getDebitoCreditoSituacaoAtual()); } else { // SITUA��O ANTERIOR guiaPagamento.setDebitoCreditoSituacaoAnterior(null); // REFER�NCIA CONT�BIL guiaPagamento.setAnoMesReferenciaContabil(sistemaParametro.getAnoMesFaturamento()); } DebitoCreditoSituacao debitoCreditoSituacao = new DebitoCreditoSituacao(); debitoCreditoSituacao.setId(DebitoCreditoSituacao.CANCELADA); // SITUA��O ATUAL guiaPagamento.setDebitoCreditoSituacaoAtual(debitoCreditoSituacao); guiaPagamento.setUsuario(usuarioLogado); guiaPagamento.setUltimaAlteracao(new Date()); // ------------ REGISTRAR TRANSA��O ---------------- RegistradorOperacao registradorOperacao = new RegistradorOperacao(Operacao.OPERACAO_GUIA_PAGAMENTO_CANCELAR, guiaPagamento.getId(), guiaPagamento.getId(), new UsuarioAcaoUsuarioHelper(usuarioLogado, UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO)); registradorOperacao.registrarOperacao(guiaPagamento); // ------------ REGISTRAR TRANSA��O ---------------- getControladorUtil().atualizar(guiaPagamento); } /** * [UC0187] - Inserir Guia de Pagamento * * @author Vivianne Sousa * @since 11/06/2007 * * @param guiaPagamento * @param usuarioLogado * @param imovelDestino * @param colecaoGuiaPagamentoCategoria * @param registroAtendimento * @param debitoCreditoSituacaoAtual * @param debitoCreditoSituacaoAnterior * @throws ControladorException */ public Integer inserirGuiaPagamentoTransferencia(GuiaPagamento guiaPagamentoOrigem, Usuario usuarioLogado, Imovel imovelDestino, RegistroAtendimento registroAtendimento) throws ControladorException { // CARREGANDO A GUIA // ================================================================ FiltroGuiaPagamento filtroGuiaPagamento = new FiltroGuiaPagamento(); filtroGuiaPagamento.adicionarCaminhoParaCarregamentoEntidade("cliente"); filtroGuiaPagamento.adicionarCaminhoParaCarregamentoEntidade("parcelamento"); filtroGuiaPagamento.adicionarCaminhoParaCarregamentoEntidade("documentoTipo"); filtroGuiaPagamento.adicionarCaminhoParaCarregamentoEntidade("financiamentoTipo"); filtroGuiaPagamento.adicionarCaminhoParaCarregamentoEntidade("debitoTipo"); filtroGuiaPagamento.adicionarCaminhoParaCarregamentoEntidade("ordemServico"); filtroGuiaPagamento.adicionarCaminhoParaCarregamentoEntidade("lancamentoItemContabil"); filtroGuiaPagamento.adicionarCaminhoParaCarregamentoEntidade("debitoCreditoSituacaoAtual"); filtroGuiaPagamento.adicionarCaminhoParaCarregamentoEntidade("debitoCreditoSituacaoAnterior"); filtroGuiaPagamento.adicionarParametro(new ParametroSimples(FiltroGuiaPagamento.ID, guiaPagamentoOrigem.getId())); Collection colecaoGuiaPagamento = this.getControladorUtil().pesquisar(filtroGuiaPagamento, GuiaPagamento.class.getName()); GuiaPagamento guiaPagamento = (GuiaPagamento) colecaoGuiaPagamento.iterator().next(); guiaPagamento.setClientesGuiaPagamento(null); // =================================================================================== // DADOS CADASTRAIS // ================================================================= // String idImovel = guiaPagamentoInserir.getImovel().getId() == null ? // "" : guiaPagamentoInserir.getImovel().getId().toString(); // String codigoCliente = guiaPagamentoInserir.getCliente().getId() == // null ? "" : guiaPagamentoInserir.getCliente().getId().toString(); GuiaPagamentoGeral guiaPagamentoGeralOrigem = new GuiaPagamentoGeral(); guiaPagamentoGeralOrigem.setId(guiaPagamento.getId()); guiaPagamento.setOrigem(guiaPagamentoGeralOrigem); guiaPagamento.setId(null); GuiaPagamentoGeral guiaPagamentoGeral = new GuiaPagamentoGeral(); Short indicadorHistorico = 2; guiaPagamentoGeral.setIndicadorHistorico(indicadorHistorico); guiaPagamentoGeral.setUltimaAlteracao(new Date()); Integer idGuiaPagamentoGerado = (Integer) getControladorUtil().inserir(guiaPagamentoGeral); guiaPagamentoGeral.setId(idGuiaPagamentoGerado); guiaPagamento.setGuiaPagamentoGeral(guiaPagamentoGeral); guiaPagamento.setId(idGuiaPagamentoGerado); guiaPagamento.setImovel(imovelDestino); guiaPagamento.setLocalidade(imovelDestino.getLocalidade()); guiaPagamento.setRegistroAtendimento(registroAtendimento); guiaPagamento.setUsuario(usuarioLogado); guiaPagamento.setUltimaAlteracao(new Date()); // ==================================================================================== // ------------ REGISTRAR TRANSA��O ---------------- RegistradorOperacao registradorOperacao = new RegistradorOperacao(Operacao.OPERACAO_GUIA_PAGAMENTO_INSERIR, guiaPagamento .getImovel().getId(), guiaPagamento.getImovel().getId(), new UsuarioAcaoUsuarioHelper(usuarioLogado, UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO)); registradorOperacao.registrarOperacao(guiaPagamento); // ------------ REGISTRAR TRANSA��O ---------------- getControladorUtil().inserir(guiaPagamento); // CREDITO_A_REALIZAR_CATEGORIA // ======================================================== FiltroGuiaPagamentoCategoria filtroGuiaPagamentoCategoria = new FiltroGuiaPagamentoCategoria(); filtroGuiaPagamentoCategoria.adicionarCaminhoParaCarregamentoEntidade("guiaPagamento"); filtroGuiaPagamentoCategoria.adicionarCaminhoParaCarregamentoEntidade("categoria"); filtroGuiaPagamentoCategoria.adicionarParametro(new ParametroSimples(FiltroGuiaPagamentoCategoria.GUIA_PAGAMENTO_ID, guiaPagamentoOrigem.getId())); Collection colecaoGuiaPagamentoCategoria = this.getControladorUtil().pesquisar(filtroGuiaPagamentoCategoria, GuiaPagamentoCategoria.class.getName()); Iterator icolecaoGuiaPagamentoCategoria = colecaoGuiaPagamentoCategoria.iterator(); while (icolecaoGuiaPagamentoCategoria.hasNext()) { GuiaPagamentoCategoria guiaPagamentoCategoria = (GuiaPagamentoCategoria) icolecaoGuiaPagamentoCategoria.next(); Categoria categoria = guiaPagamentoCategoria.getCategoria(); guiaPagamentoCategoria.setComp_id(new GuiaPagamentoCategoriaPK(categoria.getId(), guiaPagamento.getId())); guiaPagamentoCategoria.setUltimaAlteracao(new Date()); getControladorUtil().inserir(guiaPagamentoCategoria); } if (imovelDestino != null) { FiltroClienteImovel filtroClienteImovel = new FiltroClienteImovel(); filtroClienteImovel.adicionarCaminhoParaCarregamentoEntidade("cliente"); filtroClienteImovel.adicionarCaminhoParaCarregamentoEntidade("clienteRelacaoTipo"); filtroClienteImovel.adicionarParametro(new ParametroSimples(FiltroClienteImovel.IMOVEL_ID, imovelDestino.getId())); filtroClienteImovel.adicionarParametro(new ParametroNulo(FiltroClienteImovel.DATA_FIM_RELACAO)); Collection clientesImovel = getControladorUtil().pesquisar(filtroClienteImovel, ClienteImovel.class.getName()); if (clientesImovel != null && !clientesImovel.isEmpty()) { Iterator clienteImovelIterator = clientesImovel.iterator(); while (clienteImovelIterator.hasNext()) { ClienteImovel clienteImovel = (ClienteImovel) clienteImovelIterator.next(); ClienteGuiaPagamento clienteGuiaPagamento = new ClienteGuiaPagamento(); clienteGuiaPagamento.setGuiaPagamento(guiaPagamento); clienteGuiaPagamento.setCliente(clienteImovel.getCliente()); clienteGuiaPagamento.setClienteRelacaoTipo(clienteImovel.getClienteRelacaoTipo()); clienteGuiaPagamento.setUltimaAlteracao(new Date()); getControladorUtil().inserir(clienteGuiaPagamento); } } } return idGuiaPagamentoGerado; } /** * [UC0145] - Inserir Conta * * @author Vivianne Sousa * @since 12/06/2007 * * @param mesAnoConta * @param imovel * @param colecaoDebitoCobrado * @param ligacaoAguaSituacao * @param ligacaoEsgotoSituacao * @param colecaoCategoria * @param consumoAgua * @param consumoEsgoto * @param percentualEsgoto * @param dataVencimentoConta * @param calcularValoresConta * @param motivoInclusaoConta * @throws ControladorException */ public Integer inserirContaTransferencia(Conta conta, Imovel imovelDestino, Usuario usuarioLogado) throws ControladorException { Integer retorno = new Integer("0"); /* * // ------------ REGISTRAR TRANSA��O ---------------- * RegistradorOperacao registradorOperacao = new RegistradorOperacao( * Operacao.OPERACAO_INSERIR_CONTA, new UsuarioAcaoUsuarioHelper( * usuarioLogado, UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO)); * * Operacao operacao = new Operacao(); * operacao.setId(Operacao.OPERACAO_INSERIR_CONTA); * * OperacaoEfetuada operacaoEfetuada = new OperacaoEfetuada(); * operacaoEfetuada.setOperacao(operacao); // ------------ REGISTRAR * TRANSA��O ---------------- */ // [FS0003] Verificar exist�ncia da conta // ========================================= FiltroConta filtroConta = new FiltroConta(); filtroConta.adicionarCaminhoParaCarregamentoEntidade("debitoCreditoSituacaoAtual"); filtroConta.adicionarParametro(new ParametroSimples(FiltroConta.IMOVEL_ID, imovelDestino.getId())); filtroConta.adicionarParametro(new ParametroSimples(FiltroConta.REFERENCIA, conta.getReferencia())); Collection colecaoConta = this.getControladorUtil().pesquisar(filtroConta, Conta.class.getName()); Conta contaInserir = null; if (colecaoConta != null && !colecaoConta.isEmpty()) { Conta contaImovelDestino = (Conta) colecaoConta.iterator().next(); /* * Comentado por Raphael Rossiter em 25/06/2007 - Analistas(Aryed e * Rosana) */ /* * if * (contaImovelDestino.getDebitoCreditoSituacaoAtual().getId().equals * (DebitoCreditoSituacao.CANCELADA) || * contaImovelDestino.getDebitoCreditoSituacaoAtual * ().getId().equals( * DebitoCreditoSituacao.CANCELADA_POR_RETIFICACAO)) { * * * * sessionContext.setRollbackOnly(); throw new ControladorException( * "atencao.conta_ja_existente_cancelada", null, Util * .formatarMesAnoReferencia(contaImovelDestino .getReferencia())); * } else { * * sessionContext.setRollbackOnly(); * * throw new ControladorException( * "atencao.conta_ja_existente_imovel_anomesreferencia", null, * imovelDestino.getId() + " j� possui a conta com a refer�ncia " + * Util.formatarMesAnoReferencia(contaImovelDestino.getReferencia()) * + "."); } */ /* * Colocado por Raphael Rossiter em 25/06/2007 - Analistas(Aryed e * Rosana) */ if (!contaImovelDestino.getDebitoCreditoSituacaoAtual().getId().equals(DebitoCreditoSituacao.CANCELADA) && !contaImovelDestino.getDebitoCreditoSituacaoAtual().getId().equals(DebitoCreditoSituacao.CANCELADA_POR_RETIFICACAO)) { sessionContext.setRollbackOnly(); throw new ControladorException("atencao.conta_ja_existente_imovel_anomesreferencia", null, imovelDestino.getId() + " j� possui a conta com a refer�ncia " + Util.formatarMesAnoReferencia(contaImovelDestino.getReferencia()) + "."); } } filtroConta.limparListaParametros(); filtroConta.adicionarCaminhoParaCarregamentoEntidade("contaMotivoCancelamento"); filtroConta.adicionarCaminhoParaCarregamentoEntidade("contaMotivoInclusao"); filtroConta.adicionarCaminhoParaCarregamentoEntidade("documentoTipo"); filtroConta.adicionarCaminhoParaCarregamentoEntidade("contaBancaria"); filtroConta.adicionarCaminhoParaCarregamentoEntidade("faturamentoTipo"); filtroConta.adicionarCaminhoParaCarregamentoEntidade("registroAtendimento"); filtroConta.adicionarCaminhoParaCarregamentoEntidade("consumoTarifa"); filtroConta.adicionarCaminhoParaCarregamentoEntidade("motivoNaoEntregaDocumento"); filtroConta.adicionarCaminhoParaCarregamentoEntidade("funcionarioEntrega"); filtroConta.adicionarCaminhoParaCarregamentoEntidade("contaMotivoRevisao"); filtroConta.adicionarCaminhoParaCarregamentoEntidade("contaMotivoRetificacao"); filtroConta.adicionarCaminhoParaCarregamentoEntidade("funcionarioLeitura"); filtroConta.adicionarCaminhoParaCarregamentoEntidade("debitoCreditoSituacaoAtual"); filtroConta.adicionarCaminhoParaCarregamentoEntidade("debitoCreditoSituacaoAnterior"); filtroConta.adicionarParametro(new ParametroSimples(FiltroConta.ID, conta.getId())); colecaoConta = this.getControladorUtil().pesquisar(filtroConta, Conta.class.getName()); contaInserir = (Conta) colecaoConta.iterator().next(); /* * Colocado por Raphael Rossiter em 18/10/2007 OBJ: Carregar o anoMes * Contabil na conta que ser� cancelada */ conta.setReferenciaContabil(contaInserir.getReferenciaContabil()); /* * [SF002] - Gerar dados da conta * ======================================== * ============================== */ // Inseri a conta na tabela Conta_Geral // ======================================================================= ContaGeral contaGeralInserir = new ContaGeral(); // valor fixo Short indicadorHistorico = 2; contaGeralInserir.setIndicadorHistorico(indicadorHistorico); // Ultima Altera��o contaGeralInserir.setUltimaAlteracao(new Date()); Integer idGerado = null; idGerado = (Integer) this.getControladorUtil().inserir(contaGeralInserir); // seta o id da Conta Geral gerada no objeto contaGeral contaGeralInserir.setId(idGerado); // ======================================================================= // ======================================================================= // Adiciona o idGerado da tabela Conta Geral contaInserir.setId(idGerado); // setando a conta geral na conta contaInserir.setContaGeral(contaGeralInserir); // Adiciona o id do im�vel selecionado contaInserir.setImovel(imovelDestino); // Localidade do im�vel contaInserir.setLocalidade(imovelDestino.getLocalidade()); // Quadra do im�vel contaInserir.setQuadraConta(imovelDestino.getQuadra()); // Lote do im�vel contaInserir.setLote(imovelDestino.getLote()); // Sublote do im�vel contaInserir.setSubLote(imovelDestino.getSubLote()); // C�digo do setor comercial do im�vel contaInserir.setCodigoSetorComercial(imovelDestino.getSetorComercial().getCodigo()); // N�mero da quadra do im�vel contaInserir.setQuadra(new Integer(imovelDestino.getQuadra().getNumeroQuadra())); // LIGACAO_AGUA_SITUACAO contaInserir.setLigacaoAguaSituacao(imovelDestino.getLigacaoAguaSituacao()); // LIGACAO_ESGOTO_SITUACAO contaInserir.setLigacaoEsgotoSituacao(imovelDestino.getLigacaoEsgotoSituacao()); // IMOVEL_PERFIL contaInserir.setImovelPerfil(imovelDestino.getImovelPerfil()); // CONTA_ORIGEM ContaGeral contaOrigem = new ContaGeral(); contaOrigem.setId(conta.getId()); contaInserir.setOrigem(contaOrigem); // DEBITO_CREDITO_SITUACAO_ATUAL DebitoCreditoSituacao debitoCreditoSituacao = new DebitoCreditoSituacao(); debitoCreditoSituacao.setId(DebitoCreditoSituacao.INCLUIDA); contaInserir.setDebitoCreditoSituacaoAtual(debitoCreditoSituacao); // DEBITO_CREDITO_SITUACAO_ANTERIOR contaInserir.setDebitoCreditoSituacaoAnterior(null); // REFERENCIA_CONTABIL SistemaParametro sistemaParametro = this.getControladorUtil().pesquisarParametrosDoSistema(); Integer referenciaContabil = this.getControladorFaturamento().obterReferenciaContabilConta(sistemaParametro); if (referenciaContabil.compareTo(contaInserir.getReferencia()) == 1) { contaInserir.setReferenciaContabil(referenciaContabil); } else { contaInserir.setReferenciaContabil(contaInserir.getReferencia()); } contaInserir.setUsuario(usuarioLogado); // Ultima Altera��o contaInserir.setUltimaAlteracao(new Date()); // ======================================================================= // [UC0609] Transfer�ncia de D�bitos/Cr�ditos // [FS0005] Conta em revis�o if (contaInserir.getDataRevisao() != null) { contaInserir.setDataRevisao(null); contaInserir.setContaMotivoRevisao(null); } /* * // ------------ REGISTRAR TRANSA��O ---------------- * contaInserir.setOperacaoEfetuada(operacaoEfetuada); * contaInserir.adicionarUsuario(usuarioLogado, * UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO); * registradorOperacao.registrarOperacao(contaInserir); // ------------ * REGISTRAR TRANSA��O ---------------- */ contaInserir.setContaCategorias(null); contaInserir.setDebitoCobrados(null); contaInserir.setCreditoRealizados(null); contaInserir.setClienteContas(null); contaInserir.setContaImpostosDeduzidos(null); // Author: Hugo Amorim // Fluxo [SB0002] 1.1.2 ContaMotivoInclusao contaMotivoInclusao = new ContaMotivoInclusao(); contaMotivoInclusao.setId(ContaMotivoInclusao.TRASFERENCIA_DE_DEBITO); contaInserir.setContaMotivoInclusao(contaMotivoInclusao); // ------------ REGISTRAR TRANSA��O ---------------- RegistradorOperacao registradorOperacao = new RegistradorOperacao(Operacao.OPERACAO_INSERIR_CONTA, contaInserir.getImovel().getId(), contaInserir.getId(), new UsuarioAcaoUsuarioHelper(usuarioLogado, UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO)); registradorOperacao.registrarOperacao(contaInserir); // ------------ REGISTRAR TRANSA��O ---------------- // Inserindo no BD Integer idContaGerado = (Integer) this.getControladorUtil().inserir(contaInserir); retorno = idContaGerado; /* * Inserir na tabela CONTA_CATEGORIA e CONTA_CATEGORIA_CONSUMO_FAIXA * ==================================================================== */ this.inserirContaCategoriaTransferencia(conta, contaInserir); /* * Inserir na tabela CLIENTE_CONTA * ====================================== * ================================ */ this.getControladorFaturamento().inserirClienteConta(contaInserir, imovelDestino); /* * Gerar os d�bitos cobrados - DEBITO_COBRADO e DEBITO_COBRADO_CATEGORIA * == * ==================================================================== */ this.inserirDebitoCobradoTransferencia(conta, contaInserir); /* * Gerar os cr�ditos realizados - CREDITO_REALIZADO e * CREDITO_REALIZADO_CATEGORIA * ========================================== * ============================ */ this.inserirCreditoRealizadoTransferencia(conta, contaInserir); /* * Gerar os impostos - CONTA_IMPOSTOS_DEDUZIDOS * ========================== * ============================================ */ this.inserirContaImpostosDeduzidosTransferencia(conta, contaInserir); return retorno; } /** * [UC0145] - Inserir Conta Author: Raphael Rossiter Data: 13/06/2007 * * Inclui, na tabela CONTA_CATEGORIA, a(s) categoria(s) e sua(s) * respectiva(s) quantidade(s) de economia da lista do passo 5.8 do fluxo * principal e os atributos retornados pelo [UC0120] para cada categoria, * caso o [UC0120] n�o tenha sido chamado, os valores correspondentes devem * ser nulos. * * Caso o [UC0120] n�o tenha sido chamado n�o gravar a tabela * CONTA_CATEGORIA_CONSUMO_FAIXA * * @throws ControladorException */ protected void inserirContaCategoriaTransferencia(Conta contaOrigem, Conta contaDestino) throws ControladorException { FiltroContaCategoria filtroContaCategoria = new FiltroContaCategoria(); filtroContaCategoria.adicionarCaminhoParaCarregamentoEntidade("comp_id.categoria"); filtroContaCategoria.adicionarCaminhoParaCarregamentoEntidade("comp_id.subcategoria"); filtroContaCategoria.adicionarParametro(new ParametroSimples(FiltroContaCategoria.CONTA_ID, contaOrigem.getId())); Collection colecaoContaCategoria = this.getControladorUtil().pesquisar(filtroContaCategoria, ContaCategoria.class.getName()); if (colecaoContaCategoria != null && !colecaoContaCategoria.isEmpty()) { ContaCategoria contaCategoriaInserir = null; Iterator itColecaoContaCategoria = colecaoContaCategoria.iterator(); while (itColecaoContaCategoria.hasNext()) { contaCategoriaInserir = (ContaCategoria) itColecaoContaCategoria.next(); contaCategoriaInserir.getComp_id().setConta(contaDestino); contaCategoriaInserir.setUltimaAlteracao(new Date()); contaCategoriaInserir.setContaCategoriaConsumoFaixas(null); // CONTA_CATEGORIA this.getControladorUtil().inserir(contaCategoriaInserir); // CONTA_CATEGORIA_CONSUMO_FAIXA this.inserirContaCategoriaConsumoFaixaTransferencia(contaOrigem, contaCategoriaInserir); } } } /** * [UC0145] - Inserir Conta Author: Raphael Rossiter Data: 13/06/2007 * * Inclui a(s) faixa(s) de consumo por categoria na tabela * CONTA_CATEGORIA_CONSUMO_FAIXA com os atributos retornados pelo [UC0120] * por categoria e para cada faixa da categoria, caso o [UC0120] n�o tenha * sido chamado n�o gravar a tabela. * * @throws ControladorException */ protected void inserirContaCategoriaConsumoFaixaTransferencia(Conta contaOrigem, ContaCategoria contaCategoriaDestino) throws ControladorException { FiltroContaCategoriaConsumoFaixa filtroContaCategoriaConsumoFaixa = new FiltroContaCategoriaConsumoFaixa(); filtroContaCategoriaConsumoFaixa.adicionarCaminhoParaCarregamentoEntidade("contaCategoria"); filtroContaCategoriaConsumoFaixa.adicionarCaminhoParaCarregamentoEntidade("categoria"); filtroContaCategoriaConsumoFaixa.adicionarCaminhoParaCarregamentoEntidade("subcategoria"); filtroContaCategoriaConsumoFaixa.adicionarParametro(new ParametroSimples(FiltroContaCategoriaConsumoFaixa.CONTA_ID, contaOrigem .getId())); filtroContaCategoriaConsumoFaixa.adicionarParametro(new ParametroSimples(FiltroContaCategoriaConsumoFaixa.CATEGORIA_ID, contaCategoriaDestino.getComp_id().getCategoria().getId())); filtroContaCategoriaConsumoFaixa.adicionarParametro(new ParametroSimples(FiltroContaCategoriaConsumoFaixa.SUBCATEGORIA_ID, contaCategoriaDestino.getComp_id().getSubcategoria().getId())); Collection colecaoContaCategoriaConsumoFaixa = this.getControladorUtil().pesquisar(filtroContaCategoriaConsumoFaixa, ContaCategoriaConsumoFaixa.class.getName()); if (colecaoContaCategoriaConsumoFaixa != null && !colecaoContaCategoriaConsumoFaixa.isEmpty()) { ContaCategoriaConsumoFaixa contaCategoriaConsumoFaixaInserir = null; Iterator itColecaoContaCategoriaConsumoFaixa = colecaoContaCategoriaConsumoFaixa.iterator(); while (itColecaoContaCategoriaConsumoFaixa.hasNext()) { contaCategoriaConsumoFaixaInserir = (ContaCategoriaConsumoFaixa) itColecaoContaCategoriaConsumoFaixa.next(); contaCategoriaConsumoFaixaInserir.setContaCategoria(contaCategoriaDestino); contaCategoriaConsumoFaixaInserir.setUltimaAlteracao(new Date()); // CONTA_CATEGORIA_CONSUMO_FAIXA this.getControladorUtil().inserir(contaCategoriaConsumoFaixaInserir); } } } /** * [UC0609] - Transfer�ncia de D�bitos/Cr�ditos * * @author Raphael Rossiter * @date 13/06/2007 * * @throws ControladorException */ protected void inserirDebitoCobradoTransferencia(Conta contaOrigem, Conta contaDestino) throws ControladorException { FiltroDebitoCobrado filtroDebitoCobrado = new FiltroDebitoCobrado(); filtroDebitoCobrado.adicionarCaminhoParaCarregamentoEntidade("lancamentoItemContabil"); filtroDebitoCobrado.adicionarCaminhoParaCarregamentoEntidade("financiamentoTipo"); filtroDebitoCobrado.adicionarCaminhoParaCarregamentoEntidade("debitoTipo"); filtroDebitoCobrado.adicionarCaminhoParaCarregamentoEntidade("parcelamentoGrupo"); filtroDebitoCobrado.adicionarParametro(new ParametroSimples(FiltroDebitoCobrado.CONTA_ID, contaOrigem.getId())); Collection colecaoDebitoCobrado = this.getControladorUtil().pesquisar(filtroDebitoCobrado, DebitoCobrado.class.getName()); if (colecaoDebitoCobrado != null && !colecaoDebitoCobrado.isEmpty()) { DebitoCobrado debitoCobradoOrigem = null; DebitoCobrado debitoCobradoInserir = null; Iterator itColecaoDebitoCobrado = colecaoDebitoCobrado.iterator(); while (itColecaoDebitoCobrado.hasNext()) { debitoCobradoOrigem = (DebitoCobrado) itColecaoDebitoCobrado.next(); FiltroDebitoCobrado filtroDebitoCobradoAux = new FiltroDebitoCobrado(); filtroDebitoCobradoAux.adicionarCaminhoParaCarregamentoEntidade("lancamentoItemContabil"); filtroDebitoCobradoAux.adicionarCaminhoParaCarregamentoEntidade("financiamentoTipo"); filtroDebitoCobradoAux.adicionarCaminhoParaCarregamentoEntidade("debitoTipo"); filtroDebitoCobradoAux.adicionarCaminhoParaCarregamentoEntidade("parcelamentoGrupo"); filtroDebitoCobradoAux.adicionarParametro(new ParametroSimples(FiltroDebitoCobrado.CODIGO, debitoCobradoOrigem.getId())); Collection colecaoDebitoCobradoAux = this.getControladorUtil().pesquisar(filtroDebitoCobradoAux, DebitoCobrado.class.getName()); debitoCobradoInserir = (DebitoCobrado) Util.retonarObjetoDeColecao(colecaoDebitoCobradoAux); // debitoCobradoInserir = debitoCobradoOrigem; debitoCobradoInserir.setId(null); debitoCobradoInserir.setDebitoCobradoCategorias(null); debitoCobradoInserir.setConta(contaDestino); debitoCobradoInserir.setLocalidade(contaDestino.getLocalidade()); debitoCobradoInserir.setCodigoSetorComercial(contaDestino.getCodigoSetorComercial()); debitoCobradoInserir.setQuadra(contaDestino.getQuadraConta()); debitoCobradoInserir.setNumeroQuadra(contaDestino.getQuadra()); debitoCobradoInserir.setNumeroLote(contaDestino.getLote()); debitoCobradoInserir.setNumeroSubLote(contaDestino.getSubLote()); debitoCobradoInserir.setUltimaAlteracao(new Date()); // DEBITO_COBRADO Integer idGerado = (Integer) this.getControladorUtil().inserir(debitoCobradoInserir); debitoCobradoInserir.setId(idGerado); // DEBITO_COBRADO_CATEGORIA this.inserirDebitoCobradoCategoriaTransferencia(debitoCobradoOrigem, debitoCobradoInserir); } } } /** * [UC0609] - Transfer�ncia de D�bitos/Cr�ditos * * @author Raphael Rossiter * @date 13/06/2007 * * @throws ControladorException */ protected void inserirDebitoCobradoCategoriaTransferencia(DebitoCobrado debitoCobradoOrigem, DebitoCobrado debitoCobradoDestino) throws ControladorException { FiltroDebitoCobradoCategoria filtroDebitoCobradoCategoria = new FiltroDebitoCobradoCategoria(); filtroDebitoCobradoCategoria.adicionarCaminhoParaCarregamentoEntidade("debitoCobrado"); filtroDebitoCobradoCategoria.adicionarCaminhoParaCarregamentoEntidade("categoria"); filtroDebitoCobradoCategoria.adicionarParametro(new ParametroSimples(FiltroDebitoCobradoCategoria.DEBITO_COBRADO_ID, debitoCobradoOrigem.getId())); Collection colecaoDebitoCobradoCategoria = this.getControladorUtil().pesquisar(filtroDebitoCobradoCategoria, DebitoCobradoCategoria.class.getName()); if (colecaoDebitoCobradoCategoria != null && !colecaoDebitoCobradoCategoria.isEmpty()) { DebitoCobradoCategoria debitoCobradoCategoriaInserir = null; Iterator itColecaoDebitoCobradoCategoria = colecaoDebitoCobradoCategoria.iterator(); while (itColecaoDebitoCobradoCategoria.hasNext()) { debitoCobradoCategoriaInserir = (DebitoCobradoCategoria) itColecaoDebitoCobradoCategoria.next(); debitoCobradoCategoriaInserir.setDebitoCobrado(debitoCobradoDestino); debitoCobradoCategoriaInserir.setComp_id(new DebitoCobradoCategoriaPK(debitoCobradoCategoriaInserir.getCategoria().getId(), debitoCobradoDestino.getId())); debitoCobradoCategoriaInserir.setUltimaAlteracao(new Date()); this.getControladorUtil().inserir(debitoCobradoCategoriaInserir); } } } /** * [UC0609] - Transfer�ncia de D�bitos/Cr�ditos * * @author Raphael Rossiter * @date 13/06/2007 * * @throws ControladorException */ protected void inserirCreditoRealizadoTransferencia(Conta contaOrigem, Conta contaDestino) throws ControladorException { FiltroCreditoRealizado filtroCreditoRealizado = new FiltroCreditoRealizado(); filtroCreditoRealizado.adicionarCaminhoParaCarregamentoEntidade("lancamentoItemContabil"); filtroCreditoRealizado.adicionarCaminhoParaCarregamentoEntidade("creditoTipo"); filtroCreditoRealizado.adicionarCaminhoParaCarregamentoEntidade("creditoOrigem"); filtroCreditoRealizado.adicionarParametro(new ParametroSimples(FiltroCreditoRealizado.CONTA_ID, contaOrigem.getId())); Collection colecaoCreditoRealizado = this.getControladorUtil().pesquisar(filtroCreditoRealizado, CreditoRealizado.class.getName()); if (colecaoCreditoRealizado != null && !colecaoCreditoRealizado.isEmpty()) { CreditoRealizado creditoRealizadoOrigem = null; CreditoRealizado creditoRealizadoInserir = null; Iterator itColecaoCreditoRealizado = colecaoCreditoRealizado.iterator(); while (itColecaoCreditoRealizado.hasNext()) { creditoRealizadoOrigem = (CreditoRealizado) itColecaoCreditoRealizado.next(); FiltroCreditoRealizado filtroCreditoRealizadoAux = new FiltroCreditoRealizado(); filtroCreditoRealizadoAux.adicionarCaminhoParaCarregamentoEntidade("lancamentoItemContabil"); filtroCreditoRealizadoAux.adicionarCaminhoParaCarregamentoEntidade("creditoTipo"); filtroCreditoRealizadoAux.adicionarCaminhoParaCarregamentoEntidade("creditoOrigem"); filtroCreditoRealizadoAux.adicionarParametro(new ParametroSimples(FiltroCreditoRealizado.CODIGO, creditoRealizadoOrigem .getId())); Collection colecaoCreditoRealizadoAux = this.getControladorUtil().pesquisar(filtroCreditoRealizadoAux, CreditoRealizado.class.getName()); creditoRealizadoInserir = (CreditoRealizado) Util.retonarObjetoDeColecao(colecaoCreditoRealizadoAux); // creditoRealizadoInserir = creditoRealizadoOrigem; creditoRealizadoInserir.setId(null); creditoRealizadoInserir.setCreditoRealizadoCategorias(null); creditoRealizadoInserir.setConta(contaDestino); creditoRealizadoInserir.setLocalidade(contaDestino.getLocalidade()); creditoRealizadoInserir.setCodigoSetorComercial(contaDestino.getCodigoSetorComercial()); creditoRealizadoInserir.setQuadra(contaDestino.getQuadraConta()); creditoRealizadoInserir.setNumeroQuadra(contaDestino.getQuadra()); creditoRealizadoInserir.setNumeroLote(contaDestino.getLote()); creditoRealizadoInserir.setNumeroSubLote(contaDestino.getSubLote()); creditoRealizadoInserir.setUltimaAlteracao(new Date()); // CREDITO_REALIZADO Integer idGerado = (Integer) this.getControladorUtil().inserir(creditoRealizadoInserir); creditoRealizadoInserir.setId(idGerado); // CREDITO_REALIZADO_CATEGORIA this.inserirCreditoRealizadoCategoriaTransferencia(creditoRealizadoOrigem, creditoRealizadoInserir); } } } /** * [UC0609] - Transfer�ncia de D�bitos/Cr�ditos * * @author Raphael Rossiter * @date 13/06/2007 * * @throws ControladorException */ protected void inserirCreditoRealizadoCategoriaTransferencia(CreditoRealizado creditoRealizadoOrigem, CreditoRealizado creditoRealizadoDestino) throws ControladorException { FiltroCreditoRealizadoCategoria filtroCreditoRealizadoCategoria = new FiltroCreditoRealizadoCategoria(); filtroCreditoRealizadoCategoria.adicionarCaminhoParaCarregamentoEntidade("creditoRealizado"); filtroCreditoRealizadoCategoria.adicionarCaminhoParaCarregamentoEntidade("categoria"); filtroCreditoRealizadoCategoria.adicionarParametro(new ParametroSimples(FiltroCreditoRealizadoCategoria.CREDITO_REALIZADO_ID, creditoRealizadoOrigem.getId())); Collection colecaoCreditoRealizadoCategoria = this.getControladorUtil().pesquisar(filtroCreditoRealizadoCategoria, CreditoRealizadoCategoria.class.getName()); if (colecaoCreditoRealizadoCategoria != null && !colecaoCreditoRealizadoCategoria.isEmpty()) { CreditoRealizadoCategoria creditoRealizadoCategoriaInserir = null; Iterator itColecaoCreditoRealizadoCategoria = colecaoCreditoRealizadoCategoria.iterator(); while (itColecaoCreditoRealizadoCategoria.hasNext()) { creditoRealizadoCategoriaInserir = (CreditoRealizadoCategoria) itColecaoCreditoRealizadoCategoria.next(); creditoRealizadoCategoriaInserir.setCreditoRealizado(creditoRealizadoDestino); creditoRealizadoCategoriaInserir.setComp_id(new CreditoRealizadoCategoriaPK(creditoRealizadoDestino, creditoRealizadoCategoriaInserir.getCategoria())); creditoRealizadoCategoriaInserir.setUltimaAlteracao(new Date()); this.getControladorUtil().inserir(creditoRealizadoCategoriaInserir); } } } /** * [UC0609] - Transfer�ncia de D�bitos/Cr�ditos * * @author Raphael Rossiter * @date 13/06/2007 * * @throws ControladorException */ protected void inserirContaImpostosDeduzidosTransferencia(Conta contaOrigem, Conta contaDestino) throws ControladorException { FiltroContaImpostosDeduzidos filtroContaImpostosDeduzidos = new FiltroContaImpostosDeduzidos(); filtroContaImpostosDeduzidos.adicionarCaminhoParaCarregamentoEntidade("impostoTipo"); filtroContaImpostosDeduzidos.adicionarParametro(new ParametroSimples(FiltroContaImpostosDeduzidos.CONTA_ID, contaOrigem.getId())); Collection colecaoContaImpostosDeduzidos = this.getControladorUtil().pesquisar(filtroContaImpostosDeduzidos, ContaImpostosDeduzidos.class.getName()); if (colecaoContaImpostosDeduzidos != null && !colecaoContaImpostosDeduzidos.isEmpty()) { ContaImpostosDeduzidos contaImpostosDeduzidosInserir = null; Iterator itColecaoContaImpostosDeduzidos = colecaoContaImpostosDeduzidos.iterator(); while (itColecaoContaImpostosDeduzidos.hasNext()) { contaImpostosDeduzidosInserir = (ContaImpostosDeduzidos) itColecaoContaImpostosDeduzidos.next(); contaImpostosDeduzidosInserir.setId(null); contaImpostosDeduzidosInserir.setConta(contaDestino); contaImpostosDeduzidosInserir.setUltimaAlteracao(new Date()); // CONTA_IMPOSTOS_DEDUZIDOS this.getControladorUtil().inserir(contaImpostosDeduzidosInserir); } } } /** * [UC0594] Gerar Rela��o de Parcelamento * * @author Ana Maria * * @date 30/05/2007 */ public Collection<RelacaoParcelamentoRelatorioHelper> filtrarRelacaoParcelamento( FiltrarRelacaoParcelamentoHelper filtrarRelacaoParcelamento) throws ControladorException { Collection<RelacaoParcelamentoRelatorioHelper> colecaoRelacaoParcelamento = new ArrayList(); try { colecaoRelacaoParcelamento = repositorioCobranca.pesquisarRelacaoParcelamento(filtrarRelacaoParcelamento); } catch (ErroRepositorioException ex) { sessionContext.setRollbackOnly(); ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } return colecaoRelacaoParcelamento; } /** * [UC0878] Gerar Rela��o de Parcelamento - Vis�o Analitica * * @author Bruno Barros * * @date 04/02/2009 */ public Collection<RelatorioRelacaoParcelamentoAnaliticoBean> filtrarRelacaoParcelamentoAnalitico( FiltrarRelacaoParcelamentoHelper filtrarRelacaoParcelamento) throws ControladorException { Collection<Object[]> colecaoRelacaoParcelamento = new ArrayList(); Collection<RelatorioRelacaoParcelamentoAnaliticoBean> beans = new ArrayList(); try { SistemaParametro sistemaParametro = this.getControladorUtil().pesquisarParametrosDoSistema(); colecaoRelacaoParcelamento = repositorioCobranca.filtrarRelacaoParcelamentoAnalitico(filtrarRelacaoParcelamento, sistemaParametro.getAnoMesFaturamento()); if (colecaoRelacaoParcelamento != null && colecaoRelacaoParcelamento.size() > 0) { Iterator iteRelacaoParcelamento = colecaoRelacaoParcelamento.iterator(); while (iteRelacaoParcelamento.hasNext()) { Object[] linha = (Object[]) iteRelacaoParcelamento.next(); // Id do Debito a Cobrar pode estar em historico ou n�o Integer idDebitoACobrar = 0; if (linha[18] != null) { idDebitoACobrar = (Integer) linha[18]; } else if (linha[19] != null) { idDebitoACobrar = (Integer) linha[19]; } // Pesquisamos as quantidades de contas n�o pagas do // parcelamento Integer quantidadeCobrancasNaoPagas = this.repositorioCobranca.pesquisarQuantidadeContasNaoPagasParcelamento( (Integer) linha[0], idDebitoACobrar); // Calculamos a quantidade de cobran�as pagas Integer quantidadeCobrancasPagas = (Integer) linha[14] - quantidadeCobrancasNaoPagas; // Pegamos a quantidade de cobran�as n�o cobradas Integer quantidadeCobrancasNaoCobradas = (Integer) linha[15]; // Calculamos o valor cobrado pago BigDecimal valorCobradoPago = new BigDecimal(((BigDecimal) linha[10]).floatValue() * quantidadeCobrancasPagas); // Calculamos o valor cobrado n�o pago BigDecimal valorCobradoNaoPago = new BigDecimal(((BigDecimal) linha[10]).floatValue() * quantidadeCobrancasNaoPagas); // Calculamos o valor n�o cobrado BigDecimal valorNaoCobrado = new BigDecimal(((BigDecimal) linha[10]).floatValue() * quantidadeCobrancasNaoCobradas); String municipio = null; Integer idMunicipio = null; if (!Util.isVazioOrNulo(filtrarRelacaoParcelamento.getColecaoMunicipiosAssociados())) { idMunicipio = (Integer) linha[18]; municipio = (String) linha[19]; } // Criamos o bean do relatorio RelatorioRelacaoParcelamentoAnaliticoBean bean = new RelatorioRelacaoParcelamentoAnaliticoBean( // Nome do cliente (String) linha[5], // Matricula do imovel ((Integer) linha[6]) + "", // Telefone do cliente (String) linha[7], // Unidade de Negocio (String) linha[16], // Id do parcelamento ((Integer) linha[0]) + "", // Dia do vencimento (Integer) linha[8], // Valor do debito (BigDecimal) linha[9], // Valor do parcela (BigDecimal) linha[10], // Valor entrada (BigDecimal) linha[11], // Data do parcelamento (Date) linha[12], // Quantidade de parcelas do parcelamento (Integer) linha[13], // Quantidade de cobrancas pagas quantidadeCobrancasPagas, // Quantidade de cobrancas nao pagas quantidadeCobrancasNaoPagas, // Quantidade nao cobradas quantidadeCobrancasNaoCobradas, // Valor de cobrancas pagas valorCobradoPago, // Valor de cobrancas nao pagas valorCobradoNaoPago, // Valor nao cobradas valorNaoCobrado, // id da gerencial (Integer) linha[3], // Id da localidade (Integer) linha[1], // Id do Munic�pio idMunicipio, // Descricao da gerencial (String) linha[4], // Descricao da localidade (String) linha[2], // Descri��o Munic�pio municipio, // login (String) linha[17]); // adicionamos o bean a cole��o beans.add(bean); } } } catch (ErroRepositorioException ex) { ex.printStackTrace(); // sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", ex); } return beans; } /** * [UC0XXXX] Gerar Resumo das A��es de Cobran�a Eventuais * * @author S�vio Luiz * @created 15/06/2006 * * @exception ErroRepositorioException * Repositorio Exception */ public Collection<Object[]> pesquisarCobrancaAcaoAtividadeComandoSemRealizacao() throws ControladorException { try { return repositorioCobranca.pesquisarCobrancaAcaoAtividadeComandoSemRealizacao(); } catch (ErroRepositorioException ex) { sessionContext.setRollbackOnly(); ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } } /** * * [UCXXXX] Gerar Resumo das A��es de Cobran�a Eventuais * * P�s-oncid��o: Resumo das a��es de cobran�a gerado e atividade encerrar da * a��o de cobran�a, se for o caso, realizada * * @author S�vio Luiz * @date 15/06/2007 * */ public void gerarResumoAcoesCobrancaEventual(Object[] dadosCobrancaAcaoAtividadeEventual, int idFuncionalidadeIniciada) throws ControladorException { int idUnidadeIniciada = 0; // posi��es do array com os dados que ser�o atualizados final int POSICAO_ID_COB_ACAO_ATIV_COMANDO = 0; final int POSICAO_ID_COB_ACAO = 1; final int POSICAO_ID_DOCUMENTO_TIPO = 3; final int POSICAO_DATA_ENCERRAMENTO_PREVISTA = 4; final int POSICAO_DATA_COMANDO = 6; // ------------------------- // // Registrar o in�cio do processamento da Unidade de // Processamento // do Batch // // ------------------------- idUnidadeIniciada = getControladorBatch() .iniciarUnidadeProcessamentoBatch(idFuncionalidadeIniciada, UnidadeProcessamento.COB_ACAO_ATIV_COMAND, ((Integer) dadosCobrancaAcaoAtividadeEventual[POSICAO_ID_COB_ACAO_ATIV_COMANDO])); // cole��o com os cronogramas de cobran�a dos grupos de cobran�a e meses // de refer�ncia Usuario usuarioLogado = Usuario.USUARIO_BATCH; try { if (dadosCobrancaAcaoAtividadeEventual != null) { Integer idCobrancaAtividadeAcaoComando = null; Integer idCobrancaAcao = null; Integer idDocumentoTipo = null; Date dataEncerramentoPrevista = null; Date dataRealizacaoEncerrar = null; Date dataComando = null; if (dadosCobrancaAcaoAtividadeEventual[POSICAO_ID_COB_ACAO_ATIV_COMANDO] != null) { idCobrancaAtividadeAcaoComando = (Integer) dadosCobrancaAcaoAtividadeEventual[POSICAO_ID_COB_ACAO_ATIV_COMANDO]; } if (dadosCobrancaAcaoAtividadeEventual[POSICAO_ID_COB_ACAO] != null) { idCobrancaAcao = (Integer) dadosCobrancaAcaoAtividadeEventual[POSICAO_ID_COB_ACAO]; } if (dadosCobrancaAcaoAtividadeEventual[POSICAO_ID_DOCUMENTO_TIPO] != null) { idDocumentoTipo = (Integer) dadosCobrancaAcaoAtividadeEventual[POSICAO_ID_DOCUMENTO_TIPO]; } if (dadosCobrancaAcaoAtividadeEventual[POSICAO_DATA_ENCERRAMENTO_PREVISTA] != null) { dataEncerramentoPrevista = (Date) dadosCobrancaAcaoAtividadeEventual[POSICAO_DATA_ENCERRAMENTO_PREVISTA]; } if (dadosCobrancaAcaoAtividadeEventual[POSICAO_DATA_COMANDO] != null) { dataComando = (Date) dadosCobrancaAcaoAtividadeEventual[POSICAO_DATA_COMANDO]; } Collection colecaoCobrancaAcao = null; FiltroCobrancaAcao filtroCobrancaAcao = new FiltroCobrancaAcao(); filtroCobrancaAcao.adicionarParametro(new ParametroSimples(FiltroCobrancaAcao.ID, idCobrancaAcao)); filtroCobrancaAcao.adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAcao.DOCUMENTO_TIPO); filtroCobrancaAcao.adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAcao.SERVICO_TIPO); colecaoCobrancaAcao = this.getControladorUtil().pesquisar(filtroCobrancaAcao, CobrancaAcao.class.getName()); CobrancaAcao cobrancaAcao = (CobrancaAcao) Util.retonarObjetoDeColecao(colecaoCobrancaAcao); // Item 3.4 // verfica se o valor do documento tipo � // diferente de nulo if (idDocumentoTipo != null) { // caso a atividade da a��o de cobran�a // correspondente a // encerrar esteja comandada e a data // prescita para o // encerramento seja igual ou menor do // que a data // corrente if (dataEncerramentoPrevista != null && (dataEncerramentoPrevista.compareTo(new Date()) <= 0)) { dataRealizacaoEncerrar = new Date(); } // [SB0001] - Processar A��o com // Documentos de Cobran�a this.processarDocumentoCobrancaVersaoReduzida(ConstantesSistema.NUMERO_NAO_INFORMADO, idCobrancaAtividadeAcaoComando, cobrancaAcao, usuarioLogado, dataRealizacaoEncerrar, dataComando, dataEncerramentoPrevista); } // seta para null para o GC liberar idCobrancaAcao = null; idDocumentoTipo = null; dataEncerramentoPrevista = null; dataRealizacaoEncerrar = null; } getControladorBatch().encerrarUnidadeProcessamentoBatch(null, idUnidadeIniciada, false); System.out.println("########## FINALIZADO EM = " + new Date()); } 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); } } /** * * [UCXXXX] Gerar Resumo das A��es de Cobran�a Eventuais * * [SB0006] - Determinar Situa��o da Ordem de Servi�o * * @author S�vio Luiz * @date 18/06/2007 * */ public Collection gerarColecaoDocumentoCobrancaOrdemServicoEventual(Integer idServicoTipoAcaoCobranca, Usuario usuarioLogado, int idCobrancaAtividadeAcaoComando, Date dataRealizacaoEncerrar) throws ControladorException { Collection colecaoCobrancaDocumentoParaAtualizar = new ArrayList(); try { Collection<Object[]> colecaoOrdemServico = null; // posi��es do array com os dados que ser�o atualizados final byte POSICAO_ID_COBRANCA_DOCUMENTO = 0; final byte POSICAO_ID_SITUACAO_ACAO = 1; final byte POSICAO_DATA_SITUACAO_ACAO = 2; final byte POSICAO_ID_CATEGORIA = 5; final byte POSICAO_ID_ESFERA_PODER = 6; final byte POSICAO_ID_FISCALIZACAO = 7; final byte POSICAO_INDICADOR_ACIMA_LIMITE = 9; final byte POSICAO_PERCENTUAL_VALOR_MINIMO_PAGO_CRITERIO_COBRANCA = 10; final byte POSICAO_PERCENTUAL_QUANTIDADE_MINIMO_PAGO_CRITERIO_COBRANCA = 11; final byte POSICAO_ID_MOTIVO_ENCERRAMENTO = 12; // caso o servi�o tipo da a��o de cobran�a esteja // diferente de nulo,neste caso existe ordem de servi�o // para a cobran�a documento if (idServicoTipoAcaoCobranca != null) { // 2.1 Determinar a situa��o da a��o de cobran�a, // de acordo com a tabela COBRANCA_ACAO_SITUACAO // COBRANCA_DOCUMENTO com CBDO_ID igual a idCobrancaDocumento colecaoOrdemServico = this.repositorioCobranca.pesquisarOrdemServicoEventual(idCobrancaAtividadeAcaoComando); Collection colecaoIdsOrdemServico = new ArrayList(); Collection colecaoOSUnidade = new ArrayList(); OrdemServicoUnidade ordemServicoUnidade = null; OrdemServico os = null; AtendimentoRelacaoTipo atendimentoRelacaoTipo = null; // [SB0002] - Determinar Situa��o da A��o de Cobran�a // caso exista ordem servi�o para a cobranca documento if (colecaoOrdemServico != null && !colecaoOrdemServico.isEmpty()) { // [SB0007] - Determinar Situa��o da Ordem de Servi�o Integer idOrdemServico = null; Integer idDocumento = null; short situacaoOrdemServico = -1; Date dataFiscalizacaoSituacao = null; Integer idFiscalizacao = null; Date dataEncerramento = null; Short indicadorExecucaoMotivoEncerramento = null; BigDecimal valorDocumento = null; BigDecimal percentualValorMinimoCobrancaCriterio = null; BigDecimal percentualQuantidadeMinimaCobrancaCriterio = null; BigDecimal valorLimitePrioridadeCobrancaCriterio = null; Integer idImovel = null; Integer idLocalidade = null; Integer idMotivoEncerramento = null; Iterator iteColecaoOrdemServico = colecaoOrdemServico.iterator(); while (iteColecaoOrdemServico.hasNext()) { Object[] dadosOS = (Object[]) iteColecaoOrdemServico.next(); if (dadosOS != null) { if (dadosOS[0] != null) { idOrdemServico = (Integer) dadosOS[0]; // CRC4529 - adicionado por Vivianne Sousa - // 31/08/2010 - analista: Fatima Sampaio OrdemServicoFiscSit ordemServicoFiscSit = getControladorOrdemServico() .recuperaOrdemServicoFiscSitComMenorDataFiscalizacao(idOrdemServico); if (ordemServicoFiscSit != null) { idFiscalizacao = ordemServicoFiscSit.getFiscalizacaoSituacao().getId(); dataFiscalizacaoSituacao = ordemServicoFiscSit.getDataFiscalizacaoSituacao(); } else { idFiscalizacao = null; dataFiscalizacaoSituacao = null; } } else { idFiscalizacao = null; dataFiscalizacaoSituacao = null; } if (dadosOS[1] != null) { situacaoOrdemServico = (Short) dadosOS[1]; } // if (dadosOS[2] != null) { // dataFiscalizacaoSituacao = (Date) dadosOS[2]; // } if (dadosOS[3] != null) { dataEncerramento = (Date) dadosOS[3]; } if (dadosOS[4] != null) { idDocumento = (Integer) dadosOS[4]; } if (dadosOS[5] != null) { valorDocumento = (BigDecimal) dadosOS[5]; } if (dadosOS[6] != null) { percentualValorMinimoCobrancaCriterio = (BigDecimal) dadosOS[6]; } if (dadosOS[7] != null) { percentualQuantidadeMinimaCobrancaCriterio = (BigDecimal) dadosOS[7]; } if (dadosOS[8] != null) { valorLimitePrioridadeCobrancaCriterio = (BigDecimal) dadosOS[8]; } // if (dadosOS[9] != null) { // idFiscalizacao = (Integer) dadosOS[9]; // } if (dadosOS[10] != null) { indicadorExecucaoMotivoEncerramento = (Short) dadosOS[10]; } if (dadosOS[11] != null) { idImovel = (Integer) dadosOS[11]; } if (dadosOS[12] != null) { idLocalidade = (Integer) dadosOS[12]; } if (dadosOS[13] != null) { idMotivoEncerramento = (Integer) dadosOS[13]; } // dados para atualizar o cobranca documento Object[] cobrancaDocumentoParaAtualizar = new Object[13]; if (idFiscalizacao != null && !idFiscalizacao.equals("")) { cobrancaDocumentoParaAtualizar[POSICAO_ID_FISCALIZACAO] = idFiscalizacao; } // a ordem se servi�o n�o esteja encerrada if (situacaoOrdemServico != OrdemServico.SITUACAO_ENCERRADO.shortValue()) { // caso a atividade da a��o de cobran�a // correspondente a // encerrar esteja comanda e a data presvista // para o // encerramento seja igual ou menor do que a // data corrente if (dataRealizacaoEncerrar != null) { if (idFiscalizacao == null || idFiscalizacao.equals("")) { // Atibuir o valor A��O CANCELADA POR // DECURSO DE PRAZO cobrancaDocumentoParaAtualizar[POSICAO_ID_SITUACAO_ACAO] = CobrancaAcaoSituacao.CANCELADA_PRAZO; cobrancaDocumentoParaAtualizar[POSICAO_DATA_SITUACAO_ACAO] = new Date(); } else { // atribuir o valor A��O FISCALIZADA cobrancaDocumentoParaAtualizar[POSICAO_ID_SITUACAO_ACAO] = CobrancaAcaoSituacao.FISCALIZADA; cobrancaDocumentoParaAtualizar[POSICAO_DATA_SITUACAO_ACAO] = dataFiscalizacaoSituacao; } UnidadeOrganizacional unidadeOrganizacional = getControladorUnidade() .pesquisarUnidadeOrganizacionalLocalidade(idLocalidade); // seta os dados na osUnidade para ser // inserido na cole��o ordemServicoUnidade = new OrdemServicoUnidade(); os = new OrdemServico(); atendimentoRelacaoTipo = new AtendimentoRelacaoTipo(); ordemServicoUnidade.setUnidadeOrganizacional(unidadeOrganizacional); os.setId(idOrdemServico); ordemServicoUnidade.setOrdemServico(os); // seta o usu�rio na ordem servi�o unidade ordemServicoUnidade.setUsuario(usuarioLogado); // seta o id do atendimento rela��o tipo atendimentoRelacaoTipo.setId(AtendimentoRelacaoTipo.ENCERRAR); ordemServicoUnidade.setAtendimentoRelacaoTipo(atendimentoRelacaoTipo); // seta a ultima altera��o com a data atual ordemServicoUnidade.setUltimaAlteracao(new Date()); colecaoOSUnidade.add(ordemServicoUnidade); // seta para null os dados para serem // coletados pelo GC ordemServicoUnidade = null; os = null; atendimentoRelacaoTipo = null; colecaoIdsOrdemServico.add(idOrdemServico); } else { // caso a situa��o da fiscaliza��o da ordem // de servi�o esteja preenchida if (idFiscalizacao != null && !idFiscalizacao.equals("")) { // atribuir o valor A��O FISCALIZADA cobrancaDocumentoParaAtualizar[POSICAO_ID_SITUACAO_ACAO] = CobrancaAcaoSituacao.FISCALIZADA; cobrancaDocumentoParaAtualizar[POSICAO_DATA_SITUACAO_ACAO] = dataFiscalizacaoSituacao; } else { // atribuir o valor A��O PENDENTE cobrancaDocumentoParaAtualizar[POSICAO_ID_SITUACAO_ACAO] = CobrancaAcaoSituacao.PENDENTE; cobrancaDocumentoParaAtualizar[POSICAO_DATA_SITUACAO_ACAO] = null; } } } else { // recebe a data de encerramento da ordem de // serivo(ORSE_TMENCERRAMENTO) cobrancaDocumentoParaAtualizar[POSICAO_DATA_SITUACAO_ACAO] = dataEncerramento; // indicador de Execu��o caso o motivo de // encerramento corresponda � execu��o if (indicadorExecucaoMotivoEncerramento != null && indicadorExecucaoMotivoEncerramento.intValue() == 1) { // atribuir o valor A��O EXECUTADA cobrancaDocumentoParaAtualizar[POSICAO_ID_SITUACAO_ACAO] = CobrancaAcaoSituacao.EXECUTADA; } else { if (idMotivoEncerramento != null && new Short(idMotivoEncerramento.toString()) .equals(AtendimentoMotivoEncerramento.CANCELADO_POR_DERCURSO_DE_PRAZO)) { cobrancaDocumentoParaAtualizar[POSICAO_ID_SITUACAO_ACAO] = CobrancaAcaoSituacao.CANCELADA_PRAZO; } else { // atribuir o valor A��O CANCELADA cobrancaDocumentoParaAtualizar[POSICAO_ID_SITUACAO_ACAO] = CobrancaAcaoSituacao.CANCELADA; } } } // indicador acima do limite Short indicadorAcimaLimite = null; if (valorDocumento != null && valorDocumento.compareTo(valorLimitePrioridadeCobrancaCriterio) > 0) { indicadorAcimaLimite = new Short("1"); } else { indicadorAcimaLimite = new Short("2"); } cobrancaDocumentoParaAtualizar[POSICAO_INDICADOR_ACIMA_LIMITE] = indicadorAcimaLimite; // [UC0306] - Obter Principal CAtegoria do Imovel Categoria categoria = getControladorImovel().obterPrincipalCategoriaImovel(idImovel); cobrancaDocumentoParaAtualizar[POSICAO_ID_CATEGORIA] = categoria.getId(); // pesquisa os imovel para ser usado para gravar o // Resumo Cobran�a A��o Imovel imovel = this.pesquisarDadosImovel(idImovel); // pega a esfera do poder do imovel EsferaPoder esferaPoder = null; if (imovel.getClienteImoveis() != null && !imovel.getClienteImoveis().isEmpty()) { Cliente cliente = (Cliente) imovel.getClienteImoveis().iterator().next(); esferaPoder = cliente.getClienteTipo().getEsferaPoder(); } if (esferaPoder != null && !esferaPoder.equals("")) { cobrancaDocumentoParaAtualizar[POSICAO_ID_ESFERA_PODER] = esferaPoder.getId(); } else { cobrancaDocumentoParaAtualizar[POSICAO_ID_ESFERA_PODER] = null; } // atualiza os campos para serem utilizados para // atualiza��o e consulta de dados da cobran�a // documento cobrancaDocumentoParaAtualizar[POSICAO_ID_COBRANCA_DOCUMENTO] = idDocumento; cobrancaDocumentoParaAtualizar[POSICAO_PERCENTUAL_VALOR_MINIMO_PAGO_CRITERIO_COBRANCA] = percentualValorMinimoCobrancaCriterio; cobrancaDocumentoParaAtualizar[POSICAO_PERCENTUAL_QUANTIDADE_MINIMO_PAGO_CRITERIO_COBRANCA] = percentualQuantidadeMinimaCobrancaCriterio; cobrancaDocumentoParaAtualizar[POSICAO_ID_MOTIVO_ENCERRAMENTO] = idMotivoEncerramento; colecaoCobrancaDocumentoParaAtualizar.add(cobrancaDocumentoParaAtualizar); // limpa os campos cobrancaDocumentoParaAtualizar = null; idOrdemServico = null; idDocumento = null; situacaoOrdemServico = -1; dataFiscalizacaoSituacao = null; idFiscalizacao = null; dataEncerramento = null; indicadorExecucaoMotivoEncerramento = null; idMotivoEncerramento = null; valorDocumento = null; percentualValorMinimoCobrancaCriterio = null; percentualQuantidadeMinimaCobrancaCriterio = null; valorLimitePrioridadeCobrancaCriterio = null; idImovel = null; idLocalidade = null; } } } // atualiza as ordem de servi�os if (colecaoIdsOrdemServico != null && !colecaoIdsOrdemServico.isEmpty()) { repositorioCobranca.atualizarParmsOS(colecaoIdsOrdemServico, (int) AtendimentoMotivoEncerramento.CANCELADO_POR_DERCURSO_DE_PRAZO); getControladorBatch().inserirColecaoObjetoParaBatch(colecaoOSUnidade); // limpa a cole��o para ser coletado pelo GC colecaoIdsOrdemServico.clear(); colecaoOSUnidade.clear(); colecaoIdsOrdemServico = null; colecaoOSUnidade = null; } } } catch (Exception ex) { ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } return colecaoCobrancaDocumentoParaAtualizar; } /** * * [UCXXXX] Gerar Resumo das A��es de Cobran�a Eventuais * * [SB0006] - Determinar Situa��o da Ordem de Servi�o * * @author S�vio Luiz * @date 18/06/2007 * */ public void inserirResumoAcoesCobrancaEventual(Object[] dadosCobrancaAcaoAtividadeEventual, int idFuncionalidadeIniciada) throws ControladorException { int idUnidadeIniciada = 0; // posi��es do array com os dados que ser�o atualizados final int POSICAO_ID_COB_ACAO_ATIV_COMANDO = 0; final int POSICAO_ID_COB_ACAO = 1; final int POSICAO_ID_DOCUMENTO_TIPO = 3; final int POSICAO_DATA_ENCERRAMENTO_PREVISTA = 4; final int POSICAO_DATA_REALIZACAO = 5; // ------------------------- // // Registrar o in�cio do processamento da Unidade de // Processamento // do Batch // // ------------------------- idUnidadeIniciada = getControladorBatch() .iniciarUnidadeProcessamentoBatch(idFuncionalidadeIniciada, UnidadeProcessamento.COB_ACAO_ATIV_COMAND, ((Integer) dadosCobrancaAcaoAtividadeEventual[POSICAO_ID_COB_ACAO_ATIV_COMANDO])); // cole��o com os cronogramas de cobran�a dos grupos de cobran�a e meses // de refer�ncia Usuario usuarioLogado = Usuario.USUARIO_BATCH; try { if (dadosCobrancaAcaoAtividadeEventual != null) { Integer idCobrancaAtividadeAcaoComando = null; Integer idCobrancaAcao = null; Integer idDocumentoTipo = null; Date dataEncerramentoPrevista = null; Date dataRealizacao = null; Date dataRealizacaoEncerrar = null; if (dadosCobrancaAcaoAtividadeEventual[POSICAO_ID_COB_ACAO_ATIV_COMANDO] != null) { idCobrancaAtividadeAcaoComando = (Integer) dadosCobrancaAcaoAtividadeEventual[POSICAO_ID_COB_ACAO_ATIV_COMANDO]; } if (dadosCobrancaAcaoAtividadeEventual[POSICAO_ID_COB_ACAO] != null) { idCobrancaAcao = (Integer) dadosCobrancaAcaoAtividadeEventual[POSICAO_ID_COB_ACAO]; } if (dadosCobrancaAcaoAtividadeEventual[POSICAO_ID_DOCUMENTO_TIPO] != null) { idDocumentoTipo = (Integer) dadosCobrancaAcaoAtividadeEventual[POSICAO_ID_DOCUMENTO_TIPO]; } if (dadosCobrancaAcaoAtividadeEventual[POSICAO_DATA_ENCERRAMENTO_PREVISTA] != null) { dataEncerramentoPrevista = (Date) dadosCobrancaAcaoAtividadeEventual[POSICAO_DATA_ENCERRAMENTO_PREVISTA]; } if (dadosCobrancaAcaoAtividadeEventual[POSICAO_DATA_REALIZACAO] != null) { dataRealizacao = (Date) dadosCobrancaAcaoAtividadeEventual[POSICAO_DATA_REALIZACAO]; } // Item 3.4 // verfica se o valor do documento tipo � // diferente de nulo if (idDocumentoTipo != null) { this.repositorioCobranca.deletarResumoCobrancaAcaoEventual(idCobrancaAtividadeAcaoComando); // caso a atividade da a��o de cobran�a // correspondente a // encerrar esteja comandada e a data // prescita para o // encerramento seja igual ou menor do // que a data // corrente if (dataEncerramentoPrevista != null && (dataEncerramentoPrevista.compareTo(new Date()) <= 0)) { dataRealizacaoEncerrar = new Date(); } // [SB0001] - Processar A��o com // Documentos de Cobran�a this.pesquisarDocumentosCobrancaParaGeracaoResumoEventual(idCobrancaAtividadeAcaoComando, usuarioLogado, idCobrancaAcao, dataEncerramentoPrevista, dataRealizacaoEncerrar, dataRealizacao); } // seta para null para o GC liberar idCobrancaAcao = null; idDocumentoTipo = null; dataEncerramentoPrevista = null; dataRealizacaoEncerrar = null; } getControladorBatch().encerrarUnidadeProcessamentoBatch(null, idUnidadeIniciada, false); System.out.println("########## FINALIZADO EM = " + new Date()); } 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); } } /** * * [UCXXXX] Gerar Resumo das A��es de Cobran�a Eventuais * * [SB0006] - Determinar Situa��o da Ordem de Servi�o * * @author S�vio Luiz * @date 19/06/2007 * */ public void pesquisarDocumentosCobrancaParaGeracaoResumoEventual(Integer idCobrancaAtividadeAcaoComando, Usuario usuarioLogado, Integer idCobrancaAcao, Date dataEncerramentoPrevista, Date dataRealizacaoEncerrar, Date dataRealizacao) throws ControladorException { // colecao com os documentos de cobran�a gerados na atividade EMITIR da // a��o de cobran�a Collection colecaoDadosCobrancaDocumentos = null; Collection colecaoResumoCobrancaAcaoEventual = new ArrayList(); short indicadorDefinitivo = 0; try { colecaoDadosCobrancaDocumentos = this .pesquisarDadosCobrancaDocumentoEventualAgrupadoPorDataPrevista(idCobrancaAtividadeAcaoComando); // para cada documento de cobran�a if (colecaoDadosCobrancaDocumentos != null && !colecaoDadosCobrancaDocumentos.isEmpty()) { // verifica se exista a data de realiza��o da atividade // de encerrar se // existir ent�o recupera ela para ser comparada,sen�o // recupera a data // prevista da atividade de encerrar Date dataAtividadeEncerrar = null; if (dataRealizacaoEncerrar != null) { dataAtividadeEncerrar = dataRealizacaoEncerrar; indicadorDefinitivo = 1; } else { dataAtividadeEncerrar = dataEncerramentoPrevista; indicadorDefinitivo = 2; } Iterator iteratorColecaoCobrancaDocumentos = colecaoDadosCobrancaDocumentos.iterator(); while (iteratorColecaoCobrancaDocumentos.hasNext()) { DadosCobrancaDocumentoHelper dadosCobrancaDocumentoHelper = (DadosCobrancaDocumentoHelper) iteratorColecaoCobrancaDocumentos .next(); // id do Cobranca Documento Integer idCobrancaCriterio = null; if (dadosCobrancaDocumentoHelper.getIdCobrancaCriterio() != null) { idCobrancaCriterio = dadosCobrancaDocumentoHelper.getIdCobrancaCriterio(); } // id do Cobranca Documento Integer idCobrancaGrupo = null; if (dadosCobrancaDocumentoHelper.getIdCobrancaGrupo() != null) { idCobrancaGrupo = dadosCobrancaDocumentoHelper.getIdCobrancaGrupo(); } Integer idFiscalizacao = null; if (dadosCobrancaDocumentoHelper.getIdFiscalizacao() != null) { idFiscalizacao = dadosCobrancaDocumentoHelper.getIdFiscalizacao(); } Categoria categoria = null; if (dadosCobrancaDocumentoHelper.getIdCategoria() != null) { categoria = new Categoria(); categoria.setId(dadosCobrancaDocumentoHelper.getIdCategoria()); } Empresa empresa = null; if (dadosCobrancaDocumentoHelper.getIdEmpresa() != null) { empresa = new Empresa(); empresa.setId(dadosCobrancaDocumentoHelper.getIdEmpresa()); } // cria o ResumoCobrancaAcao ResumoCobrancaAcaoEventual resumoCobrancaAcaoEventual = this.criarResumoCobrancaAcaoEventual( idCobrancaAtividadeAcaoComando, dataRealizacao, dataAtividadeEncerrar, categoria, idCobrancaAcao, idCobrancaGrupo, dadosCobrancaDocumentoHelper.getIdCobrancaAcaoSituacao(), dadosCobrancaDocumentoHelper.getIdSituacaoDebito(), idFiscalizacao, 1, dadosCobrancaDocumentoHelper.getIndicadorAcimaAbaixo(), dadosCobrancaDocumentoHelper.getIndicadorAcimaLimite(), dadosCobrancaDocumentoHelper.getValorDocumentos(), idCobrancaCriterio, dadosCobrancaDocumentoHelper.getIdGerenciaRegional(), dadosCobrancaDocumentoHelper.getIdLocalidade(), dadosCobrancaDocumentoHelper.getIdSetorComercial(), dadosCobrancaDocumentoHelper.getIdRota(), dadosCobrancaDocumentoHelper.getCodigoSetorComercial(), dadosCobrancaDocumentoHelper.getIdQuadra(), dadosCobrancaDocumentoHelper.getNumeroQuadra(), dadosCobrancaDocumentoHelper.getIdImovelPerfil(), dadosCobrancaDocumentoHelper.getIdSituacaoLigacaoAgua(), dadosCobrancaDocumentoHelper.getIdSituacaoLigacaoEsgoto(), dadosCobrancaDocumentoHelper.getIdEsferaPoder(), dadosCobrancaDocumentoHelper.getQuantidadeDocumentos(), empresa, indicadorDefinitivo, dadosCobrancaDocumentoHelper.getIdAtendimentoMotivoEncerramento(), dadosCobrancaDocumentoHelper.getIdUnidadeNegocio()); // adciona na cole��o colecaoResumoCobrancaAcaoEventual.add(resumoCobrancaAcaoEventual); } } // seta nulo para o Garbage Collector limpar if (colecaoDadosCobrancaDocumentos != null) { colecaoDadosCobrancaDocumentos.clear(); } colecaoDadosCobrancaDocumentos = null; // 2.5 gravar os dados na tabela RESUMO_COBRANCA_ACAO if (!colecaoResumoCobrancaAcaoEventual.isEmpty()) { getControladorBatch().inserirColecaoObjetoParaBatch(colecaoResumoCobrancaAcaoEventual); } // 2.6 // caso a atividade da a��o de cobran�a correspondente a // encerrar esteja comandada e a data prescita para o // encerramento seja igual ou menor do que a data // corrente if (dataRealizacaoEncerrar != null) { // atualiza a data e hora da realiza��o da atividade // encerrar a��o de cobran�a // grava no banco as // COBRANCA_ACAO_ATIVADADE_CRONOGRAMA repositorioCobranca.atualizarCobrancaAcaoAtividadeComando(idCobrancaAtividadeAcaoComando); } } catch (ErroRepositorioException ex) { throw new ControladorException("erro.sistema", ex); } } /** * * [UCXXXX] Gerar Resumo das A��es de Cobran�a Eventuais * * [SB0006] - Determinar Situa��o da Ordem de Servi�o * * @author S�vio Luiz * @date 19/06/2007 * */ public ResumoCobrancaAcaoEventual criarResumoCobrancaAcaoEventual(int idCobrancaAcaoComando, Date dataRealizacaoEmitir, Date dataAtividadeEncerrar, Categoria categoria, int idCobrancaAcao, Integer idCobrancaGrupo, Integer idSituacaoAcao, Integer idSituacaoPredominanteDebito, Integer idFiscalizacao, int indicadorCronogramaComando, Short indicadorAntesApos, Short indicadorAcimaLimite, BigDecimal valorDocumento, Integer idCobrancaCriterio, Integer idGerenciaRegional, Integer idLocalidade, Integer idSetorComercial, Integer idRota, int codigoSetorComercial, Integer idQuadra, int numeroQuadra, Integer idPerfilImovel, Integer idSituacaoLigacaoAgua, Integer idSituacaoLigacaoEsgoto, Integer idEsferaPoder, Integer quantidadeDocumentos, Empresa empresa, short indicadorDefinitivo, Integer idMotivoEncerramento, Integer idUnidadeNegocio) { ResumoCobrancaAcaoEventual resumoCobrancaAcaoEventual = new ResumoCobrancaAcaoEventual(); // id do cronograma da a��o de cobranca CobrancaAcaoAtividadeComando cobrancaAcaoAtividadeComando = new CobrancaAcaoAtividadeComando(); cobrancaAcaoAtividadeComando.setId(new Integer(idCobrancaAcaoComando)); resumoCobrancaAcaoEventual.setCobrancaAcaoAtividadeComando(cobrancaAcaoAtividadeComando); // data e hora da realiza��o da atividade "emitir" resumoCobrancaAcaoEventual.setTempoRealizacaoEmitir(dataRealizacaoEmitir); // data e hora presvista da atividade "encerrar" resumoCobrancaAcaoEventual.setTempoRealizacaoEncerrar(dataAtividadeEncerrar); // id do grupo de cobran�a CobrancaGrupo cobrancaGrupo = new CobrancaGrupo(); cobrancaGrupo.setId(idCobrancaGrupo); resumoCobrancaAcaoEventual.setCobrancaGrupo(cobrancaGrupo); if (idGerenciaRegional != null) { GerenciaRegional gerenciaRegional = new GerenciaRegional(); gerenciaRegional.setId(idGerenciaRegional); // ger�ncia regional resumoCobrancaAcaoEventual.setGerenciaRegional(gerenciaRegional); } if (idLocalidade != null) { Localidade localidade = new Localidade(); localidade.setId(idLocalidade); // localidade resumoCobrancaAcaoEventual.setLocalidade(localidade); } if (idSetorComercial != null) { SetorComercial setorComercial = new SetorComercial(); setorComercial.setId(idSetorComercial); // Setor Comercial resumoCobrancaAcaoEventual.setSetorComercial(setorComercial); } if (idRota != null) { Rota rota = new Rota(); rota.setId(idRota); // Rota resumoCobrancaAcaoEventual.setRota(rota); } if (idQuadra != null) { Quadra quadra = new Quadra(); quadra.setId(idQuadra); // Quadra resumoCobrancaAcaoEventual.setQuadra(quadra); } // C�digo do Setor Comercial resumoCobrancaAcaoEventual.setCodigoSetorcomercial(codigoSetorComercial); // Numero da Quadra resumoCobrancaAcaoEventual.setNumeroQuadra(numeroQuadra); if (idPerfilImovel != null) { ImovelPerfil imovelPerfil = new ImovelPerfil(); imovelPerfil.setId(idPerfilImovel); // Perfil do Imovel resumoCobrancaAcaoEventual.setImovelPerfil(imovelPerfil); } if (idSituacaoLigacaoAgua != null) { LigacaoAguaSituacao ligacaoAguaSituacao = new LigacaoAguaSituacao(); ligacaoAguaSituacao.setId(idSituacaoLigacaoAgua); // Situa��o da Liga��o de �gua resumoCobrancaAcaoEventual.setLigacaoAguaSituacao(ligacaoAguaSituacao); } if (idSituacaoLigacaoEsgoto != null) { LigacaoEsgotoSituacao ligacaoEsgotoSituacao = new LigacaoEsgotoSituacao(); ligacaoEsgotoSituacao.setId(idSituacaoLigacaoEsgoto); // Situa��o da Liga��o de Esgoto resumoCobrancaAcaoEventual.setLigacaoEsgotoSituacao(ligacaoEsgotoSituacao); } // categoria resumoCobrancaAcaoEventual.setCategoria(categoria); // Esfera do Poder if (idEsferaPoder != null) { EsferaPoder esferaPoder = new EsferaPoder(); esferaPoder.setId(idEsferaPoder); resumoCobrancaAcaoEventual.setEsferaPoder(esferaPoder); } // id da a��o de cobran�a CobrancaAcao cobrancaAcao = new CobrancaAcao(); cobrancaAcao.setId(new Integer(idCobrancaAcao)); resumoCobrancaAcaoEventual.setCobrancaAcao(cobrancaAcao); // id da situa��o da a��o de cobran�a CobrancaAcaoSituacao cobrancaAcaoSituacao = new CobrancaAcaoSituacao(); cobrancaAcaoSituacao.setId(idSituacaoAcao); resumoCobrancaAcaoEventual.setCobrancaAcaoSituacao(cobrancaAcaoSituacao); // id da situa��o predominante de d�bito if (idSituacaoPredominanteDebito != null) { CobrancaDebitoSituacao cobrancaDebitoSituacao = new CobrancaDebitoSituacao(); cobrancaDebitoSituacao.setId(idSituacaoPredominanteDebito); resumoCobrancaAcaoEventual.setCobrancaDebitoSituacao(cobrancaDebitoSituacao); } else { resumoCobrancaAcaoEventual.setCobrancaDebitoSituacao(null); } // id da situa��o da fiscaliza��o if (idFiscalizacao != null) { FiscalizacaoSituacao fiscalizacaoSituacao = new FiscalizacaoSituacao(); fiscalizacaoSituacao.setId(idFiscalizacao); resumoCobrancaAcaoEventual.setFiscalizacaoSituacao(fiscalizacaoSituacao); } // indicador antes apos if (indicadorAntesApos != null) { resumoCobrancaAcaoEventual.setIndicadorAntesApos(new Short(indicadorAntesApos.shortValue())); } else { resumoCobrancaAcaoEventual.setIndicadorAntesApos(null); } // indicador acima do limite if (indicadorAcimaLimite != null) { resumoCobrancaAcaoEventual.setIndicadorAcimaLimite(new Short(indicadorAcimaLimite.shortValue())); } else { resumoCobrancaAcaoEventual.setIndicadorAcimaLimite(null); } // quantidade de documentos de cobran�a resumoCobrancaAcaoEventual.setQuantidadeDocumentos(quantidadeDocumentos); // valor dos documentos de cobran�a resumoCobrancaAcaoEventual.setValorDocumentos(valorDocumento); // data ultima altera��o resumoCobrancaAcaoEventual.setUltimaAlteracao(new Date()); CobrancaCriterio cobrancaCriterio = null; if (idCobrancaCriterio != null) { cobrancaCriterio = new CobrancaCriterio(); cobrancaCriterio.setId(idCobrancaCriterio); } resumoCobrancaAcaoEventual.setCobrancaCriterio(cobrancaCriterio); resumoCobrancaAcaoEventual.setEmpresa(empresa); resumoCobrancaAcaoEventual.setIndicadorDefinitivo(indicadorDefinitivo); if (idMotivoEncerramento != null) { AtendimentoMotivoEncerramento motivoEncerramento = new AtendimentoMotivoEncerramento(); motivoEncerramento.setId(idMotivoEncerramento); resumoCobrancaAcaoEventual.setMotivoEncerramento(motivoEncerramento); } if (idUnidadeNegocio != null) { UnidadeNegocio unidadeNegocio = new UnidadeNegocio(); unidadeNegocio.setId(idUnidadeNegocio); resumoCobrancaAcaoEventual.setUnidadeNegocio(unidadeNegocio); } return resumoCobrancaAcaoEventual; } /** * Esta funcionalidade permite informar dados para gera��o de relat�rios ou * consultas * * [UC0616] - Informar Dados para Consulta do Resumo das A��es de Cobran�a * Eventual * * @author S�vio Luiz * @date 25/06/2007 * */ public InformarDadosGeracaoResumoAcaoConsultaEventualHelper informarDadosGeracaoResumoAcaoConsultaEventual(String dataEmissaoInicial, String dataEmissaoFinal, String idCobrancaAcaoAtividadeComando, String tituloCobrancaAcaoAtividadeComando, String[] idsCobrancaGrupo, String[] idsGerenciaRegional, Integer idEloPolo, Integer idLocalidade, Integer idSetorComercial, Integer nmQuadra, String[] idsImovelPerfil, String[] idsLigacaoAguaSituacao, String[] idsLigacaoEsgotoSituacao, String[] idsCategoria, String[] idsEsferaPoder, String[] idsEmpresas, String[] idsUnidadeNegocio) throws ControladorException { InformarDadosGeracaoResumoAcaoConsultaEventualHelper retorno = new InformarDadosGeracaoResumoAcaoConsultaEventualHelper(); if (dataEmissaoInicial != null && !dataEmissaoInicial.equals("")) { Date dataEmissaoInicialDate = Util.converteStringParaDate(dataEmissaoInicial); retorno.setDataInicialEmissao(dataEmissaoInicialDate); } if (dataEmissaoFinal != null && !dataEmissaoFinal.equals("")) { Date dataEmissaoFinalDate = Util.converteStringParaDate(dataEmissaoFinal); dataEmissaoFinalDate = Util.formatarDataFinal(dataEmissaoFinalDate); retorno.setDataFinalEmissao(dataEmissaoFinalDate); } if (idCobrancaAcaoAtividadeComando != null) { Integer idCobrancaAcaoAtividadeComandoInteger = Util.converterStringParaInteger(idCobrancaAcaoAtividadeComando); retorno.setIdCobrancaAcaoAtividadeComando(idCobrancaAcaoAtividadeComandoInteger); } if (tituloCobrancaAcaoAtividadeComando != null) { retorno.setTituloCobrancaAcaoAtividadeComando(tituloCobrancaAcaoAtividadeComando); } Collection colecaoPesquisa = null; if (idEloPolo != null) { FiltroLocalidade filtroLocalidade = new FiltroLocalidade(); filtroLocalidade.adicionarCaminhoParaCarregamentoEntidade("localidade"); filtroLocalidade.adicionarParametro(new ParametroSimples(FiltroLocalidade.ID, idEloPolo)); filtroLocalidade.adicionarParametro(new ParametroSimples(FiltroLocalidade.INDICADORUSO, ConstantesSistema.INDICADOR_USO_ATIVO)); colecaoPesquisa = this.getControladorUtil().pesquisar(filtroLocalidade, Localidade.class.getName()); if (colecaoPesquisa == null || colecaoPesquisa.isEmpty()) { throw new ControladorException("atencao.pesquisa_inexistente", null, "Elo P�lo"); } else { Localidade eloPolo = (Localidade) Util.retonarObjetoDeColecao(colecaoPesquisa); if (eloPolo.getLocalidade() == null) { throw new ControladorException("atencao.localidade.nao.elo"); } else if (!eloPolo.getLocalidade().getId().equals(new Integer(eloPolo.getId()))) { throw new ControladorException("atencao.localidade.nao.elo"); } retorno.setEloPolo(eloPolo); } } if (idLocalidade != null) { FiltroLocalidade filtroLocalidade = new FiltroLocalidade(); filtroLocalidade.adicionarParametro(new ParametroSimples(FiltroLocalidade.ID, idLocalidade)); filtroLocalidade.adicionarParametro(new ParametroSimples(FiltroLocalidade.INDICADORUSO, ConstantesSistema.INDICADOR_USO_ATIVO)); colecaoPesquisa = this.getControladorUtil().pesquisar(filtroLocalidade, Localidade.class.getName()); if (colecaoPesquisa == null || colecaoPesquisa.isEmpty()) { throw new ControladorException("atencao.pesquisa_inexistente", null, "Localidade"); } Localidade localidade = (Localidade) Util.retonarObjetoDeColecao(colecaoPesquisa); retorno.setLocalidade(localidade); } if (idSetorComercial != null) { FiltroSetorComercial filtroSetorComercial = new FiltroSetorComercial(); filtroSetorComercial.adicionarCaminhoParaCarregamentoEntidade("localidade"); filtroSetorComercial.adicionarParametro(new ParametroSimples(FiltroSetorComercial.ID, idSetorComercial)); filtroSetorComercial.adicionarParametro(new ParametroSimples(FiltroSetorComercial.INDICADORUSO, ConstantesSistema.INDICADOR_USO_ATIVO)); colecaoPesquisa = this.getControladorUtil().pesquisar(filtroSetorComercial, SetorComercial.class.getName()); if (colecaoPesquisa == null || colecaoPesquisa.isEmpty()) { throw new ControladorException("atencao.pesquisa_inexistente", null, "Setor Comercial"); } SetorComercial setorComercial = (SetorComercial) Util.retonarObjetoDeColecao(colecaoPesquisa); retorno.setLocalidade(setorComercial.getLocalidade()); retorno.setSetorComercial(setorComercial); } if (idSetorComercial != null && nmQuadra != null) { FiltroQuadra filtroQuadra = new FiltroQuadra(); filtroQuadra.adicionarCaminhoParaCarregamentoEntidade("setorComercial.localidade"); filtroQuadra.adicionarParametro(new ParametroSimples(FiltroQuadra.ID_SETORCOMERCIAL, idSetorComercial)); filtroQuadra.adicionarParametro(new ParametroSimples(FiltroQuadra.NUMERO_QUADRA, nmQuadra)); filtroQuadra.adicionarParametro(new ParametroSimples(FiltroQuadra.INDICADORUSO, ConstantesSistema.INDICADOR_USO_ATIVO)); colecaoPesquisa = this.getControladorUtil().pesquisar(filtroQuadra, Quadra.class.getName()); if (colecaoPesquisa == null || colecaoPesquisa.isEmpty()) { throw new ControladorException("atencao.pesquisa_inexistente", null, "Quadra"); } Quadra quadra = (Quadra) Util.retonarObjetoDeColecao(colecaoPesquisa); retorno.setLocalidade(quadra.getSetorComercial().getLocalidade()); retorno.setSetorComercial(quadra.getSetorComercial()); retorno.setQuadra(quadra); } if (idsGerenciaRegional != null && idsGerenciaRegional.length > 0) { Collection colecaoGerenciaRegional = new ArrayList(); FiltroGerenciaRegional filtroGerenciaRegional = new FiltroGerenciaRegional(); GerenciaRegional gerenciaRegional = null; for (int index = 0; idsGerenciaRegional.length > index; index++) { if (idsGerenciaRegional[index] != null && idsGerenciaRegional[index].length() > 0) { filtroGerenciaRegional.adicionarParametro(new ParametroSimples(FiltroGerenciaRegional.ID, idsGerenciaRegional[index])); filtroGerenciaRegional.adicionarParametro(new ParametroSimples(FiltroGerenciaRegional.INDICADOR_USO, ConstantesSistema.INDICADOR_USO_ATIVO)); colecaoPesquisa = this.getControladorUtil().pesquisar(filtroGerenciaRegional, GerenciaRegional.class.getName()); if (colecaoPesquisa == null || colecaoPesquisa.isEmpty()) { throw new ControladorException("atencao.pesquisa_inexistente", null, "Gerencia Regional"); } gerenciaRegional = (GerenciaRegional) Util.retonarObjetoDeColecao(colecaoPesquisa); filtroGerenciaRegional.limparListaParametros(); colecaoGerenciaRegional.add(gerenciaRegional); } } if (!colecaoGerenciaRegional.isEmpty()) { retorno.setColecaoGerenciaRegional(colecaoGerenciaRegional); } } if (idsUnidadeNegocio != null && idsUnidadeNegocio.length > 0) { Collection colecaoUnidadeNegocio = new ArrayList(); FiltroUnidadeNegocio filtroUnidadeNegocio = new FiltroUnidadeNegocio(); UnidadeNegocio unidadeNegocio = null; for (int index = 0; idsUnidadeNegocio.length > index; index++) { if (idsUnidadeNegocio[index] != null && idsUnidadeNegocio[index].length() > 0) { filtroUnidadeNegocio.adicionarParametro(new ParametroSimples(FiltroUnidadeNegocio.ID, idsUnidadeNegocio[index])); filtroUnidadeNegocio.adicionarParametro(new ParametroSimples(FiltroUnidadeNegocio.INDICADOR_USO, ConstantesSistema.INDICADOR_USO_ATIVO)); colecaoPesquisa = this.getControladorUtil().pesquisar(filtroUnidadeNegocio, UnidadeNegocio.class.getName()); if (colecaoPesquisa == null || colecaoPesquisa.isEmpty()) { throw new ControladorException("atencao.pesquisa_inexistente", null, "Unidade de Negocio"); } unidadeNegocio = (UnidadeNegocio) Util.retonarObjetoDeColecao(colecaoPesquisa); filtroUnidadeNegocio.limparListaParametros(); colecaoUnidadeNegocio.add(unidadeNegocio); } } if (!colecaoUnidadeNegocio.isEmpty()) { retorno.setColecaoUnidadeNegocio(colecaoUnidadeNegocio); } } if (idsCobrancaGrupo != null && idsCobrancaGrupo.length > 0) { Collection colecaoCobrancaGrupo = new ArrayList(); FiltroCobrancaGrupo filtroCobrancaGrupo = new FiltroCobrancaGrupo(); CobrancaGrupo cobrancaGrupo = null; for (int index = 0; idsCobrancaGrupo.length > index; index++) { if (idsCobrancaGrupo[index] != null && idsCobrancaGrupo[index].length() > 0) { filtroCobrancaGrupo.adicionarParametro(new ParametroSimples(FiltroCobrancaGrupo.ID, idsCobrancaGrupo[index])); filtroCobrancaGrupo.adicionarParametro(new ParametroSimples(FiltroCobrancaGrupo.INDICADOR_USO, ConstantesSistema.INDICADOR_USO_ATIVO)); colecaoPesquisa = this.getControladorUtil().pesquisar(filtroCobrancaGrupo, CobrancaGrupo.class.getName()); if (colecaoPesquisa == null || colecaoPesquisa.isEmpty()) { throw new ControladorException("atencao.pesquisa_inexistente", null, "Cobran�a Grupo"); } cobrancaGrupo = (CobrancaGrupo) Util.retonarObjetoDeColecao(colecaoPesquisa); filtroCobrancaGrupo.limparListaParametros(); colecaoCobrancaGrupo.add(cobrancaGrupo); } } if (!colecaoCobrancaGrupo.isEmpty()) { retorno.setColecaoCobrancaGrupo(colecaoCobrancaGrupo); } } if (idsImovelPerfil != null && idsImovelPerfil.length > 0) { Collection colecaoImovelPerfil = new ArrayList(); FiltroImovelPerfil filtroImovelPerfil = new FiltroImovelPerfil(); ImovelPerfil imovelPerfil = null; for (int index = 0; idsImovelPerfil.length > index; index++) { if (idsImovelPerfil[index] != null && idsImovelPerfil[index].length() > 0) { filtroImovelPerfil.adicionarParametro(new ParametroSimples(FiltroImovelPerfil.ID, idsImovelPerfil[index])); filtroImovelPerfil.adicionarParametro(new ParametroSimples(FiltroImovelPerfil.INDICADOR_USO, ConstantesSistema.INDICADOR_USO_ATIVO)); colecaoPesquisa = this.getControladorUtil().pesquisar(filtroImovelPerfil, ImovelPerfil.class.getName()); if (colecaoPesquisa == null || colecaoPesquisa.isEmpty()) { throw new ControladorException("atencao.pesquisa_inexistente", null, "Perfil do Im�vel"); } imovelPerfil = (ImovelPerfil) Util.retonarObjetoDeColecao(colecaoPesquisa); filtroImovelPerfil.limparListaParametros(); colecaoImovelPerfil.add(imovelPerfil); } } if (!colecaoImovelPerfil.isEmpty()) { retorno.setColecaoImovelPerfil(colecaoImovelPerfil); } } if (idsLigacaoAguaSituacao != null && idsLigacaoAguaSituacao.length > 0) { Collection colecaoLigacaoAguaSituacao = new ArrayList(); FiltroLigacaoAguaSituacao filtroLigacaoAguaSituacao = new FiltroLigacaoAguaSituacao(); LigacaoAguaSituacao ligacaoAguaSituacao = null; for (int index = 0; idsLigacaoAguaSituacao.length > index; index++) { if (idsLigacaoAguaSituacao[index] != null && idsLigacaoAguaSituacao[index].length() > 0) { filtroLigacaoAguaSituacao.adicionarParametro(new ParametroSimples(FiltroLigacaoAguaSituacao.ID, idsLigacaoAguaSituacao[index])); filtroLigacaoAguaSituacao.adicionarParametro(new ParametroSimples(FiltroLigacaoAguaSituacao.INDICADOR_USO, ConstantesSistema.INDICADOR_USO_ATIVO)); colecaoPesquisa = this.getControladorUtil().pesquisar(filtroLigacaoAguaSituacao, LigacaoAguaSituacao.class.getName()); if (colecaoPesquisa == null || colecaoPesquisa.isEmpty()) { throw new ControladorException("atencao.pesquisa_inexistente", null, "Liga��o de �gua"); } ligacaoAguaSituacao = (LigacaoAguaSituacao) Util.retonarObjetoDeColecao(colecaoPesquisa); filtroLigacaoAguaSituacao.limparListaParametros(); colecaoLigacaoAguaSituacao.add(ligacaoAguaSituacao); } } if (!colecaoLigacaoAguaSituacao.isEmpty()) { retorno.setColecaoLigacaoAguaSituacao(colecaoLigacaoAguaSituacao); } } if (idsLigacaoEsgotoSituacao != null && idsLigacaoEsgotoSituacao.length > 0) { Collection colecaoLigacaoEsgotoSituacao = new ArrayList(); FiltroLigacaoEsgotoSituacao filtroLigacaoEsgotoSituacao = new FiltroLigacaoEsgotoSituacao(); LigacaoEsgotoSituacao ligacaoEsgotoSituacao = null; for (int index = 0; idsLigacaoEsgotoSituacao.length > index; index++) { if (idsLigacaoEsgotoSituacao[index] != null && idsLigacaoEsgotoSituacao[index].length() > 0) { filtroLigacaoEsgotoSituacao.adicionarParametro(new ParametroSimples(FiltroLigacaoEsgotoSituacao.ID, idsLigacaoEsgotoSituacao[index])); filtroLigacaoEsgotoSituacao.adicionarParametro(new ParametroSimples(FiltroLigacaoEsgotoSituacao.INDICADOR_USO, ConstantesSistema.INDICADOR_USO_ATIVO)); colecaoPesquisa = this.getControladorUtil().pesquisar(filtroLigacaoEsgotoSituacao, LigacaoEsgotoSituacao.class.getName()); if (colecaoPesquisa == null || colecaoPesquisa.isEmpty()) { throw new ControladorException("atencao.pesquisa_inexistente", null, "Liga��o de Esgoto"); } ligacaoEsgotoSituacao = (LigacaoEsgotoSituacao) Util.retonarObjetoDeColecao(colecaoPesquisa); filtroLigacaoEsgotoSituacao.limparListaParametros(); colecaoLigacaoEsgotoSituacao.add(ligacaoEsgotoSituacao); } } if (!colecaoLigacaoEsgotoSituacao.isEmpty()) { retorno.setColecaoLigacaoEsgotoSituacao(colecaoLigacaoEsgotoSituacao); } } if (idsCategoria != null && idsCategoria.length > 0) { Collection colecaoCategoria = new ArrayList(); FiltroCategoria filtroCategoria = new FiltroCategoria(); Categoria categoria = null; for (int index = 0; idsCategoria.length > index; index++) { if (idsCategoria[index] != null && idsCategoria[index].length() > 0) { filtroCategoria.adicionarParametro(new ParametroSimples(FiltroCategoria.CODIGO, idsCategoria[index])); filtroCategoria.adicionarParametro(new ParametroSimples(FiltroCategoria.INDICADOR_USO, ConstantesSistema.INDICADOR_USO_ATIVO)); colecaoPesquisa = this.getControladorUtil().pesquisar(filtroCategoria, Categoria.class.getName()); if (colecaoPesquisa == null || colecaoPesquisa.isEmpty()) { throw new ControladorException("atencao.pesquisa_inexistente", null, "Categoria"); } categoria = (Categoria) Util.retonarObjetoDeColecao(colecaoPesquisa); filtroCategoria.limparListaParametros(); colecaoCategoria.add(categoria); } } if (!colecaoCategoria.isEmpty()) { retorno.setColecaoCategoria(colecaoCategoria); } } if (idsEsferaPoder != null && idsEsferaPoder.length > 0) { Collection colecaoEsferaPoder = new ArrayList(); FiltroEsferaPoder filtroEsferaPoder = new FiltroEsferaPoder(); EsferaPoder esferaPoder = null; for (int index = 0; idsEsferaPoder.length > index; index++) { if (idsEsferaPoder[index] != null && idsEsferaPoder[index].length() > 0) { filtroEsferaPoder.adicionarParametro(new ParametroSimples(FiltroEsferaPoder.ID, idsEsferaPoder[index])); filtroEsferaPoder.adicionarParametro(new ParametroSimples(FiltroEsferaPoder.INDICADOR_USO, ConstantesSistema.INDICADOR_USO_ATIVO)); colecaoPesquisa = this.getControladorUtil().pesquisar(filtroEsferaPoder, EsferaPoder.class.getName()); if (colecaoPesquisa == null || colecaoPesquisa.isEmpty()) { throw new ControladorException("atencao.pesquisa_inexistente", null, "Esfera de Poder"); } esferaPoder = (EsferaPoder) Util.retonarObjetoDeColecao(colecaoPesquisa); filtroEsferaPoder.limparListaParametros(); colecaoEsferaPoder.add(esferaPoder); } } if (!colecaoEsferaPoder.isEmpty()) { retorno.setColecaoEsferaPoder(colecaoEsferaPoder); } } if (idsEmpresas != null && idsEmpresas.length > 0) { Collection colecaoEmpresa = new ArrayList(); FiltroEmpresa filtroEmpresa = new FiltroEmpresa(); Empresa empresa = null; for (int index = 0; idsEmpresas.length > index; index++) { if (idsEmpresas[index] != null && idsEmpresas[index].length() > 0) { filtroEmpresa.adicionarParametro(new ParametroSimples(FiltroEmpresa.ID, idsEmpresas[index])); filtroEmpresa .adicionarParametro(new ParametroSimples(FiltroEmpresa.INDICADORUSO, ConstantesSistema.INDICADOR_USO_ATIVO)); colecaoPesquisa = this.getControladorUtil().pesquisar(filtroEmpresa, Empresa.class.getName()); if (colecaoPesquisa == null || colecaoPesquisa.isEmpty()) { throw new ControladorException("atencao.pesquisa_inexistente", null, "Empresa"); } empresa = (Empresa) Util.retonarObjetoDeColecao(colecaoPesquisa); filtroEmpresa.limparListaParametros(); colecaoEmpresa.add(empresa); } } if (!colecaoEmpresa.isEmpty()) { retorno.setColecaoEmpresa(colecaoEmpresa); } } return retorno; } /** * Esta funcionalidade permite informar dados para gera��o de relat�rios ou * consultas * * [UC0312] - Inserir Cronograma de Cobran�a * * [FS0006] - Verificar a��o predecessora * * @author S�vio Luiz * @date 04/07/2007 * */ public Map<CobrancaAcaoAtividadeHelper, Date> validarAtividadeAcaoPredecessora(CobrancaAcao cobrancaAcao, CobrancaAcao cobrancaAcaoPredecessora, CobrancaAcaoAtividadeCronograma cobrancaAcaoAtividadeCronograma, Map<CobrancaAcaoAtividadeHelper, Date> mapAcaoAtividadeDataPrevista) throws ControladorException { CobrancaAcaoAtividadeHelper cobrancaAcaoAtividadeHelper = new CobrancaAcaoAtividadeHelper(); if (cobrancaAcaoAtividadeCronograma.getCobrancaAtividade() != null && !cobrancaAcaoAtividadeCronograma.getCobrancaAtividade().equals("")) { cobrancaAcaoAtividadeHelper.setCobrancaAtividade(cobrancaAcaoAtividadeCronograma.getCobrancaAtividade()); cobrancaAcaoAtividadeHelper.setCobrancaAcao(cobrancaAcao); mapAcaoAtividadeDataPrevista.put(cobrancaAcaoAtividadeHelper, cobrancaAcaoAtividadeCronograma.getDataPrevista()); int idCobrancaAtividade = cobrancaAcaoAtividadeCronograma.getCobrancaAtividade().getId() - 1; if (idCobrancaAtividade > 0) { CobrancaAcaoAtividadeHelper cobrancaAcaoAtividadeHelperProcura = new CobrancaAcaoAtividadeHelper(); CobrancaAtividade cobrancaAtividade = new CobrancaAtividade(); cobrancaAtividade.setId(idCobrancaAtividade); cobrancaAcaoAtividadeHelperProcura.setCobrancaAtividade(cobrancaAtividade); cobrancaAcaoAtividadeHelperProcura.setCobrancaAcao(cobrancaAcao); Date dataPrevistaAtividade = mapAcaoAtividadeDataPrevista.get(cobrancaAcaoAtividadeHelperProcura); if (dataPrevistaAtividade != null) { if (cobrancaAcaoAtividadeCronograma.getDataPrevista().before(dataPrevistaAtividade)) { sessionContext.setRollbackOnly(); throw new ControladorException("atencao.cobranca.atividade.data.inferior.atividade.predecessora", null, cobrancaAcaoAtividadeCronograma.getCobrancaAtividade().getDescricaoCobrancaAtividade(), cobrancaAcao.getDescricaoCobrancaAcao()); } } else { FiltroCobrancaAtividade filtroCobrancaAtividade = new FiltroCobrancaAtividade(); filtroCobrancaAtividade.adicionarParametro(new ParametroSimples(FiltroCobrancaAtividade.ID, idCobrancaAtividade)); Collection colecaoCobrancaAtividade = getControladorUtil().pesquisar(filtroCobrancaAtividade, CobrancaAtividade.class.getName()); CobrancaAtividade cobrancaAtividadePredecessora = (CobrancaAtividade) Util .retonarObjetoDeColecao(colecaoCobrancaAtividade); // caso o indicador de obrigatoriedade esteja ativo ent�o a // data prevista n�o pode ser nula if (cobrancaAtividadePredecessora != null && cobrancaAtividadePredecessora.getIndicadorObrigatoriedade().equals(ConstantesSistema.INDICADOR_USO_ATIVO)) { sessionContext.setRollbackOnly(); throw new ControladorException("atencao.cobranca.atividade.predecessora.atividade", null, cobrancaAcaoAtividadeCronograma.getCobrancaAtividade().getDescricaoCobrancaAtividade(), cobrancaAcao.getDescricaoCobrancaAcao()); } } } if (cobrancaAcaoPredecessora != null && !cobrancaAcaoPredecessora.equals("")) { CobrancaAcaoAtividadeHelper cobrancaAcaoAtividadeHelperProcura = new CobrancaAcaoAtividadeHelper(); cobrancaAcaoAtividadeHelperProcura.setCobrancaAtividade(cobrancaAcaoAtividadeCronograma.getCobrancaAtividade()); cobrancaAcaoAtividadeHelperProcura.setCobrancaAcao(cobrancaAcaoPredecessora); Date dataPrevistaPredecessora = // cobrancaAcaoAtividadeCronograma.getDataPrevista(); mapAcaoAtividadeDataPrevista.get(cobrancaAcaoAtividadeHelperProcura); if (dataPrevistaPredecessora == null || dataPrevistaPredecessora.equals("")) { sessionContext.setRollbackOnly(); throw new ControladorException("atencao.cobranca.atividade.data.predecessora.deve.ser.informado", null, cobrancaAcaoAtividadeCronograma.getCobrancaAtividade().getDescricaoCobrancaAtividade(), cobrancaAcaoPredecessora.getDescricaoCobrancaAcao()); } else { if (cobrancaAcaoAtividadeCronograma.getDataPrevista().before(dataPrevistaPredecessora)) { sessionContext.setRollbackOnly(); throw new ControladorException("atencao.cobranca.atividade.data.inferior.acao.predecessora", null, cobrancaAcaoAtividadeCronograma.getCobrancaAtividade().getDescricaoCobrancaAtividade(), cobrancaAcao.getDescricaoCobrancaAcao(), cobrancaAcaoAtividadeCronograma.getCobrancaAtividade() .getDescricaoCobrancaAtividade()); } } } } return mapAcaoAtividadeDataPrevista; } /** * * Este caso de uso gera os avisos de cobran�a dos documentos de cobran�a * * [UC0575] Emitir Aviso de Cobran�a * * * @author S�vio Luiz, Raphael Rossiter * @data 02/04/2007, 03/01/2007 * * @param * @return void */ public void emitirAvisoCobrancaFormatado(CobrancaAcaoAtividadeCronograma cobrancaAcaoAtividadeCronograma, CobrancaAcaoAtividadeComando cobrancaAcaoAtividadeComando, Date dataAtualPesquisa, CobrancaAcao acaoCobranca, CobrancaGrupo grupoCobranca, CobrancaCriterio cobrancaCriterio) throws ControladorException { boolean flagFimPesquisa = false; final int quantidadeCobrancaDocumento = 1000; int quantidadeCobrancaDocumentoInicio = 0; StringBuilder cobrancaDocumentoTxt = new StringBuilder(); int sequencialImpressao = 0; Collection colecaoCobrancaDocumento = null; Integer idCronogramaAtividadeAcaoCobranca = null; Integer idComandoAtividadeAcaoCobranca = null; Integer idAcaoCobranca = null; if (cobrancaAcaoAtividadeCronograma != null && cobrancaAcaoAtividadeCronograma.getId() != null) { idCronogramaAtividadeAcaoCobranca = cobrancaAcaoAtividadeCronograma.getId(); } if (cobrancaAcaoAtividadeComando != null && cobrancaAcaoAtividadeComando.getId() != null) { idComandoAtividadeAcaoCobranca = cobrancaAcaoAtividadeComando.getId(); } if (acaoCobranca != null && acaoCobranca.getId() != null) { idAcaoCobranca = acaoCobranca.getId(); } while (!flagFimPesquisa) { try { System.out.println("***************************************"); System.out.println("ENTROU NO AVISO DE CORTE"); System.out.println("***************************************"); colecaoCobrancaDocumento = repositorioCobranca.pesquisarCobrancaDocumentoParaEmitirCAER(idCronogramaAtividadeAcaoCobranca, idComandoAtividadeAcaoCobranca, dataAtualPesquisa, idAcaoCobranca, quantidadeCobrancaDocumentoInicio); System.out.println("***************************************"); System.out.println("QTD DE COBRANCA DOCUMENTO:" + colecaoCobrancaDocumento.size()); System.out.println("***************************************"); } catch (ErroRepositorioException ex) { ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } if (colecaoCobrancaDocumento != null && !colecaoCobrancaDocumento.isEmpty()) { System.out.println("***************************************"); System.out.println("QUANTIDADE COBRAN�A:" + colecaoCobrancaDocumento.size()); System.out.println("***************************************"); if (colecaoCobrancaDocumento.size() < quantidadeCobrancaDocumento) { flagFimPesquisa = true; } else { quantidadeCobrancaDocumentoInicio = quantidadeCobrancaDocumentoInicio + 1000; } // *********************************************************************** // ****PARTE COMENTADA DA DIVIS�O PARA IMPRESS�O DE DOCUMENTO // COBRAN�A**** // *********************************************************************** // int metadeColecao = 0; // if (colecaoCobrancaDocumento.size() % 2 == 0) { // metadeColecao = colecaoCobrancaDocumento.size() / 2; // } else { // metadeColecao = (colecaoCobrancaDocumento.size() / 2) + 1; // } // Map<Integer, Map<Object, Object>> // mapCobrancaDocumentoOrdenada = // dividirColecao(colecaoCobrancaDocumento); /* * if (mapCobrancaDocumentoOrdenada != null) { int countOrdem = * 0; * * while (countOrdem < mapCobrancaDocumentoOrdenada.size()) { * Map<Object, Object> mapCobrancaoDocumentoDivididas = * mapCobrancaDocumentoOrdenada .get(countOrdem); */ /* * Iterator iteratorCobrancaDocumento = * mapCobrancaoDocumentoDivididas .keySet().iterator(); */ Iterator iteratorCobrancaDocumento = colecaoCobrancaDocumento.iterator(); while (iteratorCobrancaDocumento.hasNext()) { CobrancaDocumento cobrancaDocumento = null; /* * if(quantidadeContas == 48){ System.out.println(""); } */ // int situacao = 0; cobrancaDocumento = (CobrancaDocumento) iteratorCobrancaDocumento.next(); String nomeClienteUsuario = null; Collection colecaoCobrancaDocumentoItemConta = null; Integer idClienteResponsavel = null; // Collection colecaoCobrancaDocumentoItemGuiaPagamento = // null; /* * Estes objetos auxiliar�o na formata��o da inscri��o que * ser� composta por informa��es do documento de cobran�a e * do im�vel a ele associado */ /* * Objeto que ser� utilizado para armazenar as informa��es * do documento de cobran�a de acordo com o layout definido * no caso de uso */ /* * while (situacao < 2) { if (situacao == 0) { situacao = 1; * sequencialImpressao = atualizaSequencial( * sequencialImpressao, situacao, metadeColecao); } else { * cobrancaDocumento = (CobrancaDocumento) * mapCobrancaoDocumentoDivididas .get(cobrancaDocumento); * situacao = 2; sequencialImpressao = atualizaSequencial( * sequencialImpressao, situacao, metadeColecao); } */ if (cobrancaDocumento != null) { sequencialImpressao++; try { nomeClienteUsuario = this.repositorioClienteImovel.pesquisarNomeClientePorImovel(cobrancaDocumento.getImovel() .getId()); idClienteResponsavel = this.repositorioClienteImovel .retornaIdClienteResponsavelIndicadorEnvioConta(cobrancaDocumento.getImovel().getId()); colecaoCobrancaDocumentoItemConta = this.repositorioCobranca .selecionarCobrancaDocumentoItemReferenteConta(cobrancaDocumento); } catch (ErroRepositorioException ex) { ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } if (colecaoCobrancaDocumentoItemConta != null && !colecaoCobrancaDocumentoItemConta.isEmpty()) { // ITEM 1 // sequencial do documento de cobranca cobrancaDocumentoTxt.append(Util.retornaSequencialFormatado(cobrancaDocumento.getNumeroSequenciaDocumento())); // ITEM 2 // Formatar sequencial de documento gerado cobrancaDocumentoTxt.append(Util.retornaSequencialFormatado(sequencialImpressao)); // ITEM 3 // id do grupo if (idCronogramaAtividadeAcaoCobranca != null) { cobrancaDocumentoTxt.append(Util.adicionarZerosEsquedaNumero(2, "" + grupoCobranca.getId())); } else { cobrancaDocumentoTxt.append(Util.adicionarZerosEsquedaNumero(2, "" + cobrancaDocumento.getImovel().getQuadra().getRota().getCobrancaGrupo().getId())); } // Codigo Rota cobrancaDocumentoTxt.append(Util.adicionarZerosEsquedaNumero(6, "" + cobrancaDocumento.getImovel().getQuadra().getRota().getCodigo())); // ITEM 4 // Codigo Rota cobrancaDocumentoTxt.append(Util.adicionarZerosEsquedaNumero(4, "" + cobrancaDocumento.getImovel().getNumeroSequencialRota())); // ITEM 5 // c�digo da firma if (cobrancaDocumento.getEmpresa() != null) { cobrancaDocumentoTxt.append(Util.adicionarZerosEsquedaNumero(2, cobrancaDocumento.getEmpresa().getId() .toString())); } // ITEM 6 if (cobrancaDocumento.getEmpresa() != null) { cobrancaDocumentoTxt .append(Util.completaString(cobrancaDocumento.getEmpresa().getDescricaoAbreviada(), 10)); } // ITEM 7 // Matr�cula do im�vel cobrancaDocumentoTxt.append(Util.adicionarZerosEsquedaNumero(9, Util.retornaMatriculaImovelFormatada(cobrancaDocumento.getImovel().getId()))); // ITEM 8 // Inscri��o String idLocalidade = Util.adicionarZerosEsquedaNumero(3, "" + cobrancaDocumento.getLocalidade().getId()); String codigoSetorComercial = Util.adicionarZerosEsquedaNumero(3, "" + cobrancaDocumento.getCodigoSetorComercial()); String numeroQuadra = Util.adicionarZerosEsquedaNumero(3, "" + cobrancaDocumento.getNumeroQuadra()); String lote = Util.adicionarZerosEsquedaNumero(4, "" + cobrancaDocumento.getImovel().getLote()); String subLote = Util.adicionarZerosEsquedaNumero(3, "" + cobrancaDocumento.getImovel().getSubLote()); cobrancaDocumentoTxt.append(Util.completaString(idLocalidade + "." + codigoSetorComercial + "." + numeroQuadra + "." + lote + "." + subLote, 20)); // ITEM 9,10 String enderecoImovel = ""; String nomeBairro = ""; String nomeMunicipio = ""; String siglaUnidadeFederecao = ""; String cepFormatado = ""; String[] parmsEnderecoImovel = getControladorEndereco().pesquisarEnderecoFormatadoDividido( cobrancaDocumento.getImovel().getId()); if (parmsEnderecoImovel != null) { // endere�o sem municipio e unidade federa��o cobrancaDocumentoTxt.append(Util.completaString(parmsEnderecoImovel[0], 100)); enderecoImovel = parmsEnderecoImovel[0]; // nome do bairro nomeBairro = "" + parmsEnderecoImovel[3]; // nome do municipio nomeMunicipio = "" + parmsEnderecoImovel[1]; // sigla da unidade federa��o siglaUnidadeFederecao = parmsEnderecoImovel[2]; cepFormatado = parmsEnderecoImovel[4]; } // nome Bairro cobrancaDocumentoTxt.append(Util.completaString(nomeBairro, 30)); // nome municipio cobrancaDocumentoTxt.append(Util.completaString(nomeMunicipio, 30)); // sigla unidade federacao cobrancaDocumentoTxt.append(Util.completaString(siglaUnidadeFederecao, 2)); if (cepFormatado != null) { cepFormatado = Util.adicionarZerosEsquedaNumero(8, cepFormatado); cobrancaDocumentoTxt.append(cepFormatado.substring(0, 5) + "-" + cepFormatado.substring(5, 8)); } // ITEM 11,12 // endere�o do cliente com op��o de recebimento via // correio // ITEM 9,10 String nomeBairroResponsavel = ""; String nomeMunicipioResponsavel = ""; String siglaUnidadeFederecaoResponsavel = ""; String cepFormatadoResponsavel = ""; if (idClienteResponsavel != null) { String[] parmsEndereco = getControladorEndereco().pesquisarEnderecoClienteAbreviadoDividido( idClienteResponsavel); // endere�o sem municipio e unidade federa��o cobrancaDocumentoTxt.append(Util.completaString(parmsEndereco[0], 100)); // nome do bairro nomeBairroResponsavel = "" + parmsEndereco[3]; // nome do municipio nomeMunicipioResponsavel = "" + parmsEndereco[1]; // sigla da unidade federa��o siglaUnidadeFederecaoResponsavel = parmsEndereco[2]; cepFormatadoResponsavel = parmsEndereco[4]; // nome Bairro cobrancaDocumentoTxt.append(Util.completaString(nomeBairroResponsavel, 30)); // nome municipio cobrancaDocumentoTxt.append(Util.completaString(nomeMunicipioResponsavel, 30)); // sigla unidade federacao cobrancaDocumentoTxt.append(Util.completaString(siglaUnidadeFederecaoResponsavel, 2)); if (cepFormatadoResponsavel != null) { cepFormatadoResponsavel = Util.adicionarZerosEsquedaNumero(8, cepFormatadoResponsavel); cobrancaDocumentoTxt.append(cepFormatadoResponsavel.substring(0, 5) + "-" + cepFormatado.substring(5, 8)); } } else { // endere�o sem municipio e unidade federa��o cobrancaDocumentoTxt.append(Util.completaString(enderecoImovel, 100)); // nome Bairro cobrancaDocumentoTxt.append(Util.completaString(nomeBairro, 30)); // nome municipio cobrancaDocumentoTxt.append(Util.completaString(nomeMunicipio, 30)); // sigla unidade federacao cobrancaDocumentoTxt.append(Util.completaString(siglaUnidadeFederecao, 2)); if (cepFormatado != null) { cepFormatado = Util.adicionarZerosEsquedaNumero(8, cepFormatado); cobrancaDocumentoTxt.append(cepFormatado.substring(0, 5) + "-" + cepFormatado.substring(5, 8)); } } // ITEM 13 // nome cliente cobrancaDocumentoTxt.append(Util.completaString(nomeClienteUsuario, 50)); // ITEM 14 // Quant. contas em debito cobrancaDocumentoTxt.append(Util.adicionarZerosEsquedaNumero(3, "" + colecaoCobrancaDocumentoItemConta.size())); // ITEM 15,18 // Indicador Estouro // cobrancaDocumentoTxt.append(Util.completaString("" // + indicadorEstouro, 1)); // em caso de ser carta de tarifa social n�o // formatar o txt int quantidadesContas = 12; // retorna o indicador de estouro e formata o // cobran�aDocumentoTxt com os dados Object[] dadosValores = formatarCobrancaDocumentoItemParaContaComFormatacao(cobrancaDocumentoTxt, colecaoCobrancaDocumentoItemConta, quantidadesContas, idAcaoCobranca); BigDecimal valorItemCobrado = (BigDecimal) dadosValores[0]; BigDecimal valorAcrescimos = (BigDecimal) dadosValores[1]; BigDecimal valorItemAcrescimos = (BigDecimal) dadosValores[2]; // somatorio do valor do item da conta cobrancaDocumentoTxt.append(Util.completaString(Util.formataBigDecimal(valorItemCobrado, 2, true), 14)); // somatorio do valor dos encargos cobrancaDocumentoTxt.append(Util.completaString(Util.formataBigDecimal(valorAcrescimos, 2, true), 14)); // somatorio do valor total das contas cobrancaDocumentoTxt.append(Util.completaString(Util.formataBigDecimal(valorItemAcrescimos, 2, true), 14)); // String // quantidadeItensDocumentoGuiaPagamentoString = // null; // // em caso de ser carta de tarifa social n�o // // formatar o txt // if (idAcaoCobranca != null // && (!idAcaoCobranca // .equals(CobrancaAcao.CARTA_TARIFA_SOCIAL_LIGADO) // && !idAcaoCobranca // .equals(CobrancaAcao.CARTA_TARIFA_SOCIAL_CORTADO))) // { // // retorna o quantidade de documento item com // // guia // // pagamento e formata o cobran�aDocumentoTxt // // com os // // dados // int quantidadeItensDocumentoGuiaPagamento = // somatorioValoresAcrescimosDocumentoItem( // cobrancaDocumentoTxt, // colecaoCobrancaDocumentoItemGuiaPagamento); // quantidadeItensDocumentoGuiaPagamentoString = "" // + quantidadeItensDocumentoGuiaPagamento; // } // ITEM 19 // em caso de ser carta de tarifa social n�o // formatar o txt // Sigla da regional cobrancaDocumentoTxt.append(Util.completaString("" + cobrancaDocumento.getImovel().getLocalidade().getGerenciaRegional().getNomeAbreviado(), 3)); // ITEM 20 // Nome da Localidade cobrancaDocumentoTxt.append(Util.completaString("" + cobrancaDocumento.getImovel().getLocalidade().getDescricao(), 25)); // em caso de ser carta de tarifa social n�o // formatar o txt // ITEM 21 cobrancaDocumentoTxt.append(Util.formatarData(cobrancaDocumento.getEmissao())); // ITEM 22 String dataVencimento = ""; if (cobrancaDocumento.getEmissao() != null && acaoCobranca.getNumeroDiasValidade() != null) { dataVencimento = Util.formatarData(Util.adicionarNumeroDiasDeUmaData(cobrancaDocumento.getEmissao(), acaoCobranca.getNumeroDiasVencimento())); } cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(dataVencimento, 10)); // ITEM 23 if (cobrancaDocumento.getImovel() != null && cobrancaDocumento.getImovel().getLigacaoAgua() != null && cobrancaDocumento.getImovel().getLigacaoAgua().getHidrometroInstalacaoHistorico() != null) { // numero do hidometro if (cobrancaDocumento.getImovel().getLigacaoAgua().getHidrometroInstalacaoHistorico() != null) { cobrancaDocumentoTxt.append(Util.completaString("" + cobrancaDocumento.getImovel().getLigacaoAgua().getHidrometroInstalacaoHistorico() .getHidrometro().getNumero(), 10)); // Local de instala��o descricao abreviada cobrancaDocumentoTxt.append(Util.completaString("" + cobrancaDocumento.getImovel().getLigacaoAgua().getHidrometroInstalacaoHistorico() .getHidrometroLocalInstalacao().getDescricaoAbreviada(), 5)); } else { cobrancaDocumentoTxt.append(Util.completaString("", 10)); cobrancaDocumentoTxt.append(Util.completaString("", 5)); } } else { cobrancaDocumentoTxt.append(Util.completaString("", 10)); cobrancaDocumentoTxt.append(Util.completaString("", 5)); } // ITEM 24,25,26 String representacaoNumericaCodBarra = ""; // Obt�m a representa��o num�rica do // c�digode // barra representacaoNumericaCodBarra = this.getControladorArrecadacao().obterRepresentacaoNumericaCodigoBarra(5, cobrancaDocumento.getValorDocumento(), cobrancaDocumento.getLocalidade().getId(), cobrancaDocumento.getImovel().getId(), null, null, null, null, String.valueOf(cobrancaDocumento.getNumeroSequenciaDocumento()), cobrancaDocumento.getDocumentoTipo().getId(), null, null, null); // Formata a representa��o n�merica do // c�digo de // barras String representacaoNumericaCodBarraFormatada = representacaoNumericaCodBarra.substring(0, 11) + " " + representacaoNumericaCodBarra.substring(11, 12) + " " + representacaoNumericaCodBarra.substring(12, 23) + " " + representacaoNumericaCodBarra.substring(23, 24) + " " + representacaoNumericaCodBarra.substring(24, 35) + " " + representacaoNumericaCodBarra.substring(35, 36) + " " + representacaoNumericaCodBarra.substring(36, 47) + " " + representacaoNumericaCodBarra.substring(47, 48); cobrancaDocumentoTxt.append(representacaoNumericaCodBarraFormatada); // Cria o objeto para gerar o c�digo de // barras // no // padr�o // intercalado 2 de 5 Interleaved2of5 codigoBarraIntercalado2de5 = new Interleaved2of5(); // Recupera a representa��o n�merica do // c�digo // de // barras // sem // os d�gitos verificadores String representacaoCodigoBarrasSemDigitoVerificador = representacaoNumericaCodBarra.substring(0, 11) + representacaoNumericaCodBarra.substring(12, 23) + representacaoNumericaCodBarra.substring(24, 35) + representacaoNumericaCodBarra.substring(36, 47); cobrancaDocumentoTxt.append(codigoBarraIntercalado2de5 .encodeValue(representacaoCodigoBarrasSemDigitoVerificador)); Object[] dadosOS = pesquisarDadosOrdemServicoDocumentoCobranca(cobrancaDocumento.getId()); if (dadosOS != null) { cobrancaDocumentoTxt.append(Util.completaString("" + dadosOS[0], 9)); } else { cobrancaDocumentoTxt.append(Util.completaString("", 9)); } // situa��o liga��o de agua if (cobrancaDocumento.getImovel() != null && cobrancaDocumento.getImovel().getLigacaoAguaSituacao() != null) { cobrancaDocumentoTxt.append(Util.completaString(cobrancaDocumento.getImovel().getLigacaoAguaSituacao() .getDescricao(), 20)); } else { cobrancaDocumentoTxt.append(Util.completaString("", 20)); } // situa��o liga��o de esgoto if (cobrancaDocumento.getImovel() != null && cobrancaDocumento.getImovel().getLigacaoEsgotoSituacao() != null) { cobrancaDocumentoTxt.append(Util.completaString(cobrancaDocumento.getImovel().getLigacaoEsgotoSituacao() .getDescricao(), 20)); } else { cobrancaDocumentoTxt.append(Util.completaString("", 20)); } Categoria categoria = getControladorImovel().obterPrincipalCategoriaImovel( cobrancaDocumento.getImovel().getId()); if (categoria != null) { cobrancaDocumentoTxt.append(Util.completaString(categoria.getDescricao(), 15)); } else { cobrancaDocumentoTxt.append(Util.completaString("", 15)); } // ITEM 31 - Consumo M�dio Integer consumoMedio = getControladorMicromedicao().pesquisarConsumoMedioImovel( cobrancaDocumento.getImovel().getId()); if (consumoMedio != null) { cobrancaDocumentoTxt.append(Util.completaString("" + consumoMedio, 10)); } else { cobrancaDocumentoTxt.append(Util.completaString("", 10)); } // ITEM 32 - Consumo Fixo Integer consumoMinimoEsgoto = getControladorLigacaoEsgoto().recuperarConsumoMinimoEsgoto( cobrancaDocumento.getImovel().getId()); if (consumoMinimoEsgoto != null) { cobrancaDocumentoTxt.append(Util.completaString("" + consumoMinimoEsgoto, 10)); } else { cobrancaDocumentoTxt.append(Util.completaString("", 10)); } // Categoria(s) e Economia(s) Collection colecaoCategorias = getControladorImovel().obterQuantidadeEconomiasCategoria( cobrancaDocumento.getImovel()); String qtdResidencial = ""; String qtdComercial = ""; String qtdIndustrial = ""; String qtdPublico = ""; Integer totalCategoria = 0; if (colecaoCategorias != null && !colecaoCategorias.isEmpty()) { Iterator iteratorColecaoCategorias = colecaoCategorias.iterator(); while (iteratorColecaoCategorias.hasNext()) { categoria = (Categoria) iteratorColecaoCategorias.next(); if (categoria.getId().equals(Categoria.RESIDENCIAL)) { qtdResidencial = "" + categoria.getQuantidadeEconomiasCategoria(); totalCategoria = totalCategoria + categoria.getQuantidadeEconomiasCategoria(); } else if (categoria.getId().equals(Categoria.COMERCIAL)) { qtdComercial = "" + categoria.getQuantidadeEconomiasCategoria(); totalCategoria = totalCategoria + categoria.getQuantidadeEconomiasCategoria(); } else if (categoria.getId().equals(Categoria.INDUSTRIAL)) { qtdIndustrial = "" + categoria.getQuantidadeEconomiasCategoria(); totalCategoria = totalCategoria + categoria.getQuantidadeEconomiasCategoria(); } else if (categoria.getId().equals(Categoria.PUBLICO)) { qtdPublico = "" + categoria.getQuantidadeEconomiasCategoria(); totalCategoria = totalCategoria + categoria.getQuantidadeEconomiasCategoria(); } } } // ITEM 33 - Resid�ncial if (!qtdResidencial.equals("")) { cobrancaDocumentoTxt.append(Util.adicionarZerosEsquedaNumero(3, qtdResidencial)); } else { cobrancaDocumentoTxt.append(Util.completaString("", 3)); } // ITEM 34 - Comercial if (!qtdComercial.equals("")) { cobrancaDocumentoTxt.append(Util.adicionarZerosEsquedaNumero(3, qtdComercial)); } else { cobrancaDocumentoTxt.append(Util.completaString("", 3)); } // ITEM 35 - Industrial if (!qtdIndustrial.equals("")) { cobrancaDocumentoTxt.append(Util.adicionarZerosEsquedaNumero(3, qtdIndustrial)); } else { cobrancaDocumentoTxt.append(Util.completaString("", 3)); } // ITEM 36 - P�blico if (!qtdPublico.equals("")) { cobrancaDocumentoTxt.append(Util.adicionarZerosEsquedaNumero(3, qtdPublico)); } else { cobrancaDocumentoTxt.append(Util.completaString("", 3)); } // ITEM 37 - Soma Total das economias if (totalCategoria != null && !totalCategoria.equals("")) { cobrancaDocumentoTxt.append(Util.adicionarZerosEsquedaNumero(4, "" + totalCategoria)); } else { cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda("", 4)); } // ITEM 38 - Data da Posi��o do D�bito SistemaParametro sistemaParametro = this.getControladorUtil().pesquisarParametrosDoSistema(); String anoMesValidade = sistemaParametro.getAnoMesArrecadacao().toString(); Calendar calendario = new GregorianCalendar(); if (anoMesValidade != null && !anoMesValidade.equals("")) { calendario.set(Calendar.YEAR, new Integer(anoMesValidade.substring(0, 4)).intValue()); calendario.set(Calendar.MONTH, new Integer(anoMesValidade.substring(4, 6)).intValue() - 1); calendario.set(Calendar.DAY_OF_MONTH, calendario.getActualMaximum(Calendar.DAY_OF_MONTH)); cobrancaDocumentoTxt.append(Util.formatarData(calendario.getTime())); } else { cobrancaDocumentoTxt.append(Util.completaString("", 10)); } /* * As datas de corte e supress�o ser�o repassadas de * acordo com a situa��o da liga��o do im�vel. * * ITEM 39 - Data do Corte ITEM 40 - Data da * Supress�o */ if (cobrancaDocumento.getImovel().getLigacaoAguaSituacao().getId().equals(LigacaoAguaSituacao.CORTADO) || cobrancaDocumento.getImovel().getLigacaoAguaSituacao().getId().equals(LigacaoAguaSituacao.SUPRIMIDO)) { /* * Dados da Liga��o de �gua(a partir da tabela * LIGACAO_AGUA lagu_id=imov_id da tabela * IMOVEL) */ Object[] dadosLigacaoAgua = getControladorAtendimentoPublico().pesquisarDadosLigacaoAgua( cobrancaDocumento.getImovel().getId()); if (dadosLigacaoAgua != null) { // Data do Corte if (cobrancaDocumento.getImovel().getLigacaoAguaSituacao().getId().equals(LigacaoAguaSituacao.CORTADO)) { if (dadosLigacaoAgua[3] != null) { cobrancaDocumentoTxt.append(Util.completaString(Util.formatarData((Date) dadosLigacaoAgua[3]), 10)); cobrancaDocumentoTxt.append(Util.completaString("", 10)); } else { cobrancaDocumentoTxt.append(Util.completaString("", 20)); } } // Data da Supress�o else if (cobrancaDocumento.getImovel().getLigacaoAguaSituacao().getId() .equals(LigacaoAguaSituacao.SUPRIMIDO)) { if (dadosLigacaoAgua[4] != null) { cobrancaDocumentoTxt.append(Util.completaString("", 10)); cobrancaDocumentoTxt.append(Util.completaString(Util.formatarData((Date) dadosLigacaoAgua[4]), 10)); } else { cobrancaDocumentoTxt.append(Util.completaString("", 20)); } } else { cobrancaDocumentoTxt.append(Util.completaString("", 20)); } } else { cobrancaDocumentoTxt.append(Util.completaString("", 20)); } } else { cobrancaDocumentoTxt.append(Util.completaString("", 20)); } // ITEM 41 - Origem LeituraAnormalidade leituraAnormalidade = cobrancaDocumento.getImovel().getLeituraAnormalidade(); if (leituraAnormalidade == null) { cobrancaDocumentoTxt.append("AUTOMATICO"); cobrancaDocumentoTxt.append(Util.completaString("", 5)); } else if (leituraAnormalidade.getId().equals(LeituraAnormalidade.INDICADOR_LIGADO_CLANDESTINO_AGUA) || leituraAnormalidade.getId().equals(LeituraAnormalidade.INDICADOR_LIGADO_CLANDESTINO_ESGOTO) || leituraAnormalidade.getId().equals(LeituraAnormalidade.INDICADOR_LIGADO_CLANDESTINO_AGUA_ESGOTO)) { cobrancaDocumentoTxt.append("RECADASTRAMENTO"); } else { cobrancaDocumentoTxt.append("LEITURA"); cobrancaDocumentoTxt.append(Util.completaString("", 8)); } // ITEM 42 - Ocorr�ncia if (leituraAnormalidade != null) { cobrancaDocumentoTxt.append(Util.completaString(leituraAnormalidade.getDescricao(), 34)); } else { cobrancaDocumentoTxt.append(Util.completaString("", 34)); } // ITEM 43 - Data �ltima Altera��o if (cobrancaDocumento.getImovel().getUltimaAlteracao() != null) { cobrancaDocumentoTxt.append(Util.formatarData(cobrancaDocumento.getImovel().getUltimaAlteracao())); } else { cobrancaDocumentoTxt.append(Util.completaString("", 10)); } // ITEM 44 - Ordem de Servi�o Integer idOrdemServico = this.getControladorOrdemServico().pesquisarOrdemServicoPorCobrancaDocumento( cobrancaDocumento.getId()); if (idOrdemServico != null) { cobrancaDocumentoTxt.append(Util.completaString(idOrdemServico.toString(), 15)); } else { cobrancaDocumentoTxt.append(Util.completaString("", 15)); } // ITEM 45 - Tipo de Consumidor (ImovelPerfil da // tabela CobrancaDocumento) if (cobrancaDocumento.getImovelPerfil() != null) { cobrancaDocumentoTxt.append(Util.completaString(cobrancaDocumento.getImovelPerfil().getDescricao(), 20)); } else { cobrancaDocumentoTxt.append(Util.completaString("", 20)); } cobrancaDocumentoTxt.append(System.getProperty("line.separator")); } colecaoCobrancaDocumentoItemConta = null; } // }// fim do la�o que verifica // as 2 // contas }// fim la�o while do iterator do // objeto // helper // countOrdem++; // mapCobrancaoDocumentoDivididas = null; // // } } else { flagFimPesquisa = true; } // } else { // flagFimPesquisa = true; // } // colecaoCobrancaDocumento = null; } Date dataAtual = new Date(); String nomeZip = null; System.out.println("ID A��O COBRAN�A:" + idAcaoCobranca); if (idCronogramaAtividadeAcaoCobranca != null) { nomeZip = "EMITIR_" + acaoCobranca.getDescricaoCobrancaAcao() + "_GRUPO_" + grupoCobranca.getId() + "_" + Util.formatarData(dataAtual) + Util.formatarHoraSemDataSemDoisPontos(dataAtual); } else { String descricaoAbrevDocumentoTipo = ""; if (acaoCobranca != null && acaoCobranca.getDocumentoTipo() != null) { descricaoAbrevDocumentoTipo = acaoCobranca.getDocumentoTipo().getDescricaoAbreviado(); } String tituloComandoEventual = cobrancaAcaoAtividadeComando.getDescricaoTitulo(); nomeZip = descricaoAbrevDocumentoTipo + " " + tituloComandoEventual + " " + Util.formatarData(dataAtual) + Util.formatarHoraSemDataSemDoisPontos(dataAtual); } nomeZip = nomeZip.replace("/", "_"); nomeZip = nomeZip.replace(" ", "_"); // pegar o arquivo, zipar pasta e arquivo e escrever no stream try { System.out.println("***************************************"); System.out.println("INICO DA CRIACAO DO ARQUIVO"); System.out.println("***************************************"); if (cobrancaDocumentoTxt != null && cobrancaDocumentoTxt.length() != 0) { // criar o arquivo zip File compactado = new File(nomeZip + ".zip"); // nomeZip ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(compactado)); File leitura = new File(nomeZip + ".txt"); BufferedWriter out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(leitura.getAbsolutePath()))); out.write(cobrancaDocumentoTxt.toString()); out.close(); ZipUtil.adicionarArquivo(zos, leitura); // close the stream zos.close(); leitura.delete(); } System.out.println("***************************************"); System.out.println("FIM DA CRIACAO DO ARQUIVO"); System.out.println("***************************************"); } catch (IOException e) { e.printStackTrace(); throw new ControladorException("erro.sistema", e); } catch (Exception e) { e.printStackTrace(); throw new ControladorException("erro.sistema", e); } } /** * Formata a string builder de cobran�a documento de acordo com a quantidade * de itens.Caso a quantidade de itens seja maior que 24 ent�o as contas com * o ano mes referencia mais antigas ser�o somadas (os valores do item e dos * acrescimos) e formatadas na stringbuilder. * * [UC0575] Emitir Aviso de Cobran�a * * @author S�vio Luiz * @date 09/04/2007 * * @return * @throws ControladorException */ protected Object[] formatarCobrancaDocumentoItemParaContaComFormatacao(StringBuilder cobrancaDocumentoTxt, Collection colecaoCobrancaDocumentoItemConta, int quantidadeContas, Integer idAcaoCobranca) throws ControladorException { Object[] parsValores = new Object[3]; BigDecimal valorTotalItemCobrado = new BigDecimal("0.00"); BigDecimal valorTotalAcrescimos = new BigDecimal("0.00"); BigDecimal valorTotalAcrescimosItemCobrados = new BigDecimal("0.00"); int complementoEspecosBranco = 0; // em caso de ser carta de tarifa social n�o // formatar o txt complementoEspecosBranco = quantidadeContas * 61; int countImpressao = colecaoCobrancaDocumentoItemConta.size() - (quantidadeContas - 1); if (colecaoCobrancaDocumentoItemConta.size() > quantidadeContas) { // indicadorEstouro = 1; CalcularValorDataVencimentoAnteriorHelper calcularValorDataVencimentoAnteriorHelper = this.calcularValorDataVencimentoAnterior( colecaoCobrancaDocumentoItemConta, quantidadeContas); // Ano mes de referencia da conta anterior cobrancaDocumentoTxt.append("DEB.ATE"); complementoEspecosBranco = complementoEspecosBranco - 7; // origem cobrancaDocumentoTxt.append(" "); complementoEspecosBranco = complementoEspecosBranco - 2; // data de vencimento anterior cobrancaDocumentoTxt.append(Util.formatarData(calcularValorDataVencimentoAnteriorHelper.getDataVencimentoAnterior())); complementoEspecosBranco = complementoEspecosBranco - 10; String valorItemAnterior = Util.formataBigDecimal(calcularValorDataVencimentoAnteriorHelper.getValorAnterior(), 2, true); // adiciona o valor de item cobrado para o total valorTotalItemCobrado = valorTotalItemCobrado.add(calcularValorDataVencimentoAnteriorHelper.getValorAnterior()); // Valor do item anterior cobrancaDocumentoTxt.append(Util.completaString(valorItemAnterior, 14)); complementoEspecosBranco = complementoEspecosBranco - 14; String valorAcrescimosAnterior = Util.formataBigDecimal(calcularValorDataVencimentoAnteriorHelper.getValorAcrescimosAnterior(), 2, true); // Valor dos encargos anterior cobrancaDocumentoTxt.append(Util.completaString(valorAcrescimosAnterior, 14)); complementoEspecosBranco = complementoEspecosBranco - 14; valorTotalAcrescimos = valorTotalAcrescimos.add(calcularValorDataVencimentoAnteriorHelper.getValorAcrescimosAnterior()); BigDecimal valorItemCobradoAcrescimosAnteriorB = new BigDecimal("0.00"); valorItemCobradoAcrescimosAnteriorB = valorItemCobradoAcrescimosAnteriorB.add(calcularValorDataVencimentoAnteriorHelper .getValorAnterior()); valorItemCobradoAcrescimosAnteriorB = valorItemCobradoAcrescimosAnteriorB.add(calcularValorDataVencimentoAnteriorHelper .getValorAcrescimosAnterior()); String valorItemCobradoAcrescimosAnterior = Util.formataBigDecimal(valorItemCobradoAcrescimosAnteriorB, 2, true); // Valor dos encargos anterior + valor dos descontos cobrancaDocumentoTxt.append(Util.completaString(valorItemCobradoAcrescimosAnterior, 14)); complementoEspecosBranco = complementoEspecosBranco - 14; valorTotalAcrescimosItemCobrados = valorTotalAcrescimosItemCobrados.add(valorItemCobradoAcrescimosAnteriorB); } if (countImpressao <= 1) { Iterator iteratorColecaoCobrancaDocumentoItem = colecaoCobrancaDocumentoItemConta.iterator(); CobrancaDocumentoItem cobrancaDocumentoItem = null; while (iteratorColecaoCobrancaDocumentoItem.hasNext()) { cobrancaDocumentoItem = (CobrancaDocumentoItem) iteratorColecaoCobrancaDocumentoItem.next(); // Ano mes de referencia da conta anterior cobrancaDocumentoTxt .append(Util.formatarAnoMesParaMesAno(cobrancaDocumentoItem.getContaGeral().getConta().getReferencia())); complementoEspecosBranco = complementoEspecosBranco - 7; // origem if (cobrancaDocumentoItem.getContaGeral().getConta().getDebitoCreditoSituacaoAtual() != null) { if (cobrancaDocumentoItem.getContaGeral().getConta().getDebitoCreditoSituacaoAtual().getId() .equals(DebitoCreditoSituacao.NORMAL)) { cobrancaDocumentoTxt.append("19"); } else { if (cobrancaDocumentoItem.getContaGeral().getConta().getDebitoCreditoSituacaoAtual().getId() .equals(DebitoCreditoSituacao.RETIFICADA)) { cobrancaDocumentoTxt.append("27"); } else { if (cobrancaDocumentoItem.getContaGeral().getConta().getDebitoCreditoSituacaoAtual().getId() .equals(DebitoCreditoSituacao.INCLUIDA)) { cobrancaDocumentoTxt.append("35"); } else { cobrancaDocumentoTxt.append("00"); } } } } else { cobrancaDocumentoTxt.append("00"); } complementoEspecosBranco = complementoEspecosBranco - 2; // data de vencimento anterior cobrancaDocumentoTxt.append(Util.formatarData(cobrancaDocumentoItem.getContaGeral().getConta().getDataVencimentoConta())); complementoEspecosBranco = complementoEspecosBranco - 10; String valorItem = Util.formataBigDecimal(cobrancaDocumentoItem.getValorItemCobrado(), 2, true); // adiciona o valor de item cobrado para o total valorTotalItemCobrado = valorTotalItemCobrado.add(cobrancaDocumentoItem.getValorItemCobrado()); // Valor do item anterior cobrancaDocumentoTxt.append(Util.completaString(valorItem, 14)); complementoEspecosBranco = complementoEspecosBranco - 14; String valorAcrescimos = Util.formataBigDecimal(cobrancaDocumentoItem.getValorAcrescimos(), 2, true); // Valor dos encargos anterior cobrancaDocumentoTxt.append(Util.completaString(valorAcrescimos, 14)); complementoEspecosBranco = complementoEspecosBranco - 14; valorTotalAcrescimos = valorTotalAcrescimos.add(cobrancaDocumentoItem.getValorAcrescimos()); BigDecimal valorItemCobradoAcrescimosB = new BigDecimal("0.00"); valorItemCobradoAcrescimosB = valorItemCobradoAcrescimosB.add(cobrancaDocumentoItem.getValorItemCobrado()); valorItemCobradoAcrescimosB = valorItemCobradoAcrescimosB.add(cobrancaDocumentoItem.getValorAcrescimos()); String valorItemCobradoAcrescimos = Util.formataBigDecimal(valorItemCobradoAcrescimosB, 2, true); // Valor dos encargos anterior + valor dos descontos cobrancaDocumentoTxt.append(Util.completaString(valorItemCobradoAcrescimos, 14)); complementoEspecosBranco = complementoEspecosBranco - 14; valorTotalAcrescimosItemCobrados = valorTotalAcrescimosItemCobrados.add(valorItemCobradoAcrescimosB); } } else { CobrancaDocumentoItem cobrancaDocumentoItem = null; while (countImpressao < colecaoCobrancaDocumentoItemConta.size()) { cobrancaDocumentoItem = (CobrancaDocumentoItem) ((List) colecaoCobrancaDocumentoItemConta).get(countImpressao); // Ano mes de referencia da conta anterior cobrancaDocumentoTxt .append(Util.formatarAnoMesParaMesAno(cobrancaDocumentoItem.getContaGeral().getConta().getReferencia())); complementoEspecosBranco = complementoEspecosBranco - 7; // origem if (cobrancaDocumentoItem.getContaGeral().getConta().getDebitoCreditoSituacaoAtual() != null) { if (cobrancaDocumentoItem.getContaGeral().getConta().getDebitoCreditoSituacaoAtual().getId() .equals(DebitoCreditoSituacao.NORMAL)) { cobrancaDocumentoTxt.append("19"); } else { if (cobrancaDocumentoItem.getContaGeral().getConta().getDebitoCreditoSituacaoAtual().getId() .equals(DebitoCreditoSituacao.RETIFICADA)) { cobrancaDocumentoTxt.append("27"); } else { if (cobrancaDocumentoItem.getContaGeral().getConta().getDebitoCreditoSituacaoAtual().getId() .equals(DebitoCreditoSituacao.INCLUIDA)) { cobrancaDocumentoTxt.append("35"); } else { cobrancaDocumentoTxt.append("00"); } } } } else { cobrancaDocumentoTxt.append("00"); } complementoEspecosBranco = complementoEspecosBranco - 2; // data de vencimento anterior cobrancaDocumentoTxt.append(Util.formatarData(cobrancaDocumentoItem.getContaGeral().getConta().getDataVencimentoConta())); complementoEspecosBranco = complementoEspecosBranco - 10; String valorItem = Util.formataBigDecimal(cobrancaDocumentoItem.getValorItemCobrado(), 2, true); // adiciona o valor de item cobrado para o total valorTotalItemCobrado = valorTotalItemCobrado.add(cobrancaDocumentoItem.getValorItemCobrado()); // Valor do item anterior cobrancaDocumentoTxt.append(Util.completaString(valorItem, 14)); complementoEspecosBranco = complementoEspecosBranco - 14; String valorAcrescimos = Util.formataBigDecimal(cobrancaDocumentoItem.getValorAcrescimos(), 2, true); // Valor dos encargos anterior cobrancaDocumentoTxt.append(Util.completaString(valorAcrescimos, 14)); complementoEspecosBranco = complementoEspecosBranco - 14; valorTotalAcrescimos = valorTotalAcrescimos.add(cobrancaDocumentoItem.getValorAcrescimos()); BigDecimal valorItemCobradoAcrescimosB = new BigDecimal("0.00"); valorItemCobradoAcrescimosB = valorItemCobradoAcrescimosB.add(cobrancaDocumentoItem.getValorItemCobrado()); valorItemCobradoAcrescimosB = valorItemCobradoAcrescimosB.add(cobrancaDocumentoItem.getValorAcrescimos()); String valorItemCobradoAcrescimos = Util.formataBigDecimal(valorItemCobradoAcrescimosB, 2, true); // Valor dos encargos anterior + valor dos descontos cobrancaDocumentoTxt.append(Util.completaString(valorItemCobradoAcrescimos, 14)); complementoEspecosBranco = complementoEspecosBranco - 14; valorTotalAcrescimosItemCobrados = valorTotalAcrescimosItemCobrados.add(valorItemCobradoAcrescimosB); countImpressao++; } } cobrancaDocumentoTxt.append(Util.completaString("", complementoEspecosBranco)); parsValores[0] = valorTotalItemCobrado; parsValores[1] = valorTotalAcrescimos; parsValores[2] = valorTotalAcrescimosItemCobrados; return parsValores; } /** * Gerar Curva ABC de Debitos * * [UC0621] Gerar Curva ABC de Debitos * * @author Ivan S�rgio * @date 01/08/2007 * */ public Collection gerarCurvaAbcDebitos(String classificacao, String referenciaCobrancaInicial, String referenciaCobrancaFinal, String indicadorImovelMedicaoIndividualizada, String indicadorImovelParalizacaoFaturamentoCobranca, String[] gerenciaRegional, String idLocalidadeInicial, String idLocalidadeFinal, String idSetorComercialInicial, String idSetorComercialFinal, String idMunicipio, String[] situacaoLigacaoAgua, String[] situacaoLigacaoEsgoto, String intervaloMesesCortadoSuprimidoInicial, String intervaloMesesCortadoSuprimidoFinal, String intervaloConsumoMinimoFixadoEsgotoInicial, String intervaloConsumoMinimoFixadoEsgotoFinal, String indicadorMedicao, String idTipoMedicao, String idPerfilImovel, String idTipoCategoria, String[] categoria, String idSubCategoria, String valorMinimoDebito, String intervaloQuantidadeDocumentosInicial, String intervaloQuantidadeDocumentosFinal, String indicadorPagamentosNaoClassificados) throws ControladorException { Collection colecaoImoveis = null; try { colecaoImoveis = repositorioCobranca.gerarCurvaAbcDebitos(classificacao, indicadorImovelMedicaoIndividualizada, indicadorImovelParalizacaoFaturamentoCobranca, gerenciaRegional, idLocalidadeInicial, idLocalidadeFinal, idSetorComercialInicial, idSetorComercialFinal, idMunicipio, situacaoLigacaoAgua, situacaoLigacaoEsgoto, intervaloConsumoMinimoFixadoEsgotoInicial, intervaloConsumoMinimoFixadoEsgotoFinal, indicadorMedicao, idTipoMedicao, idPerfilImovel, idTipoCategoria, categoria, idSubCategoria); } catch (ErroRepositorioException e) { // sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", e); } // colecao com os dados para o relatorio Collection<Integer> colecaoImoveisGerarCurvaAbcDebitos = null; Collection colecaoGerarCurvaAbcDebitos = null; boolean pesquisarMunicipio = false; if (idMunicipio != null && !idMunicipio.equals("")) { pesquisarMunicipio = true; } if (colecaoImoveis != null && !colecaoImoveis.isEmpty()) { Iterator iteratorColecaoImoveis = colecaoImoveis.iterator(); colecaoImoveisGerarCurvaAbcDebitos = new ArrayList(); Integer idImovel = null; Integer idSituacaoLigacaoAgua = null; Integer dataCortado = null; Integer dataSuprimido = null; Integer intervaloInicial = null; Integer intervaloFinal = null; Date dataIntervaloInicial = null; Date dataIntervaloFinal = null; while (iteratorColecaoImoveis.hasNext()) { Object[] dadosRelatorio = (Object[]) iteratorColecaoImoveis.next(); idImovel = (Integer) dadosRelatorio[0]; idSituacaoLigacaoAgua = (Integer) dadosRelatorio[1]; // Calcula os intervalos de Meses para Cortado/Suprimido caso // a Situacao da Ligacao de Agua seja cortado e/ou suprimido e // retira da lista caso esteja fora do periodo if (intervaloMesesCortadoSuprimidoInicial != null && !intervaloMesesCortadoSuprimidoInicial.equals("") && intervaloMesesCortadoSuprimidoFinal != null && !intervaloMesesCortadoSuprimidoFinal.equals("")) { dataIntervaloInicial = Util.adcionarOuSubtrairMesesAData(new Date(), -(Util.converterStringParaInteger(intervaloMesesCortadoSuprimidoInicial).intValue()), 0); intervaloInicial = Integer.decode(Util.formatarDataSemBarra(dataIntervaloInicial)); dataIntervaloFinal = Util.adcionarOuSubtrairMesesAData(new Date(), -(Util.converterStringParaInteger(intervaloMesesCortadoSuprimidoFinal).intValue()), 0); intervaloFinal = Integer.decode(Util.formatarDataSemBarra(dataIntervaloFinal)); if (idSituacaoLigacaoAgua.equals(LigacaoAguaSituacao.CORTADO)) { dataCortado = Integer.decode(dadosRelatorio[2].toString().replace("-", "")); if ((dataCortado >= intervaloFinal) && (dataCortado <= intervaloInicial)) { colecaoImoveisGerarCurvaAbcDebitos.add(idImovel); } } else if (idSituacaoLigacaoAgua.equals(LigacaoAguaSituacao.SUPRIMIDO)) { dataSuprimido = Integer.decode(dadosRelatorio[3].toString().replace("-", "")); if ((dataSuprimido >= intervaloFinal) && (dataSuprimido <= intervaloInicial)) { colecaoImoveisGerarCurvaAbcDebitos.add(idImovel); } } System.out.println("Ligacao de Agua seja cortado e/ou suprimida"); } else { colecaoImoveisGerarCurvaAbcDebitos.add(idImovel); } } if (!colecaoImoveisGerarCurvaAbcDebitos.isEmpty()) { referenciaCobrancaInicial = referenciaCobrancaInicial.replace("/", ""); referenciaCobrancaInicial = referenciaCobrancaInicial.substring(2, 6) + referenciaCobrancaInicial.substring(0, 2); referenciaCobrancaFinal = referenciaCobrancaFinal.replace("/", ""); referenciaCobrancaFinal = referenciaCobrancaFinal.substring(2, 6) + referenciaCobrancaFinal.substring(0, 2); String valorMinimoDebitoInformado = valorMinimoDebito.replace(".", ""); valorMinimoDebitoInformado = valorMinimoDebitoInformado.replace(",", "."); colecaoGerarCurvaAbcDebitos = pesquisarDebitoImovelPorFaixaValores(colecaoImoveisGerarCurvaAbcDebitos, valorMinimoDebitoInformado, referenciaCobrancaInicial, referenciaCobrancaFinal, classificacao, pesquisarMunicipio); } } return colecaoGerarCurvaAbcDebitos; } /** * [UC0630] - Solicitar Emiss�o do Extrato de D�bitos Apresentar * D�bitos/Cr�ditos do Im�vel * * @author Vivianne Sousa * @created 21/08/2007 * * @param idImovel * @exception ControladorException */ public ObterDebitoImovelOuClienteHelper apresentarDebitoCreditoImovelExtratoDebito(Integer idImovel, boolean indicadorParcelamento) throws ControladorException { Date dataVencimentoInicial = Util.criarData(1, 1, 0001); Date dataVencimentoFinal = Util.criarData(31, 12, 9999); // [UC0067] Obter D�bito do Im�vel ou Cliente ObterDebitoImovelOuClienteHelper imovelDebitoCredito = this.obterDebitoImovelOuCliente(1, // indicadorDebito idImovel.toString(), // idImovel null, // codigoCliente null, // clienteRelacaoTipo "000101", // anoMesInicialReferenciaDebito "999912", // anoMesFinalReferenciaDebito dataVencimentoInicial, // anoMesInicialVencimentoDebito dataVencimentoFinal, // anoMesFinalVencimentoDebito 1, // indicadorPagamento 1, // indicadorConta 1, // indicadorDebitoACobrar 1, // indicadorCreditoARealizar 1, // indicadorNotasPromissorias 1, // indicadorGuiasPagamento 1, // indicadorCalcularAcrescimoImpontualidade true);// indicadorContas boolean existeDebitoCredito = false; // CONTA if ((imovelDebitoCredito.getColecaoContasValoresImovel() != null && !imovelDebitoCredito.getColecaoContasValoresImovel().isEmpty()) || (imovelDebitoCredito.getColecaoContasValoresPreteritos() != null && !imovelDebitoCredito.getColecaoContasValoresPreteritos().isEmpty())) { existeDebitoCredito = true; if (!indicadorParcelamento) { Collection<ContaValoresHelper> colecaoContaValoresNaoParcelamento = new ArrayList(); // Selecionar apenas as contas que n�o estejam parceladas Iterator itColecaoConta = imovelDebitoCredito.getColecaoContasValoresImovel().iterator(); while (itColecaoConta.hasNext()) { ContaValoresHelper contaValoresHelper = (ContaValoresHelper) itColecaoConta.next(); if (!contaValoresHelper.getConta().getDebitoCreditoSituacaoAtual().getId().equals(DebitoCreditoSituacao.PARCELADA)) { colecaoContaValoresNaoParcelamento.add(contaValoresHelper); } } imovelDebitoCredito.setColecaoContasValoresImovel(colecaoContaValoresNaoParcelamento); } } // DEBITO_A_COBRAR if (imovelDebitoCredito.getColecaoDebitoACobrar() != null && !imovelDebitoCredito.getColecaoDebitoACobrar().isEmpty()) { existeDebitoCredito = true; if (!indicadorParcelamento) { // COLE��O COM OS D�BITOS A COBRAR Collection<DebitoACobrar> colecaoDebitoACobrarNaoParcelamento = new ArrayList(); // Selecionar apenas os d�bitos que n�o sejam de parcelamento Iterator itColecaoDebitoACobrar = imovelDebitoCredito.getColecaoDebitoACobrar().iterator(); while (itColecaoDebitoACobrar.hasNext()) { DebitoACobrar debitoACobrar = (DebitoACobrar) itColecaoDebitoACobrar.next(); if (!debitoACobrar.getFinanciamentoTipo().getId().equals(FinanciamentoTipo.PARCELAMENTO_AGUA) && !debitoACobrar.getFinanciamentoTipo().getId().equals(FinanciamentoTipo.PARCELAMENTO_ESGOTO) && !debitoACobrar.getFinanciamentoTipo().getId().equals(FinanciamentoTipo.PARCELAMENTO_SERVICO) && !debitoACobrar.getFinanciamentoTipo().getId().equals(FinanciamentoTipo.JUROS_PARCELAMENTO)) { colecaoDebitoACobrarNaoParcelamento.add(debitoACobrar); } } imovelDebitoCredito.setColecaoDebitoACobrar(colecaoDebitoACobrarNaoParcelamento); } } // CREDITO_A_REALIZAR if (imovelDebitoCredito.getColecaoCreditoARealizar() != null && !imovelDebitoCredito.getColecaoCreditoARealizar().isEmpty()) { existeDebitoCredito = true; if (!indicadorParcelamento) { Collection<CreditoARealizar> colecaoCreditoARealizarNaoParcelamento = new ArrayList(); // Selecionar apenas os cr�ditos que n�o sejam de parcelamento Iterator itColecaoCreditoARealizar = imovelDebitoCredito.getColecaoCreditoARealizar().iterator(); while (itColecaoCreditoARealizar.hasNext()) { CreditoARealizar creditoARealizar = (CreditoARealizar) itColecaoCreditoARealizar.next(); if (!creditoARealizar.getCreditoOrigem().getId().equals(CreditoOrigem.DESCONTOS_CONCEDIDOS_NO_PARCELAMENTO)) { colecaoCreditoARealizarNaoParcelamento.add(creditoARealizar); } } imovelDebitoCredito.setColecaoCreditoARealizar(colecaoCreditoARealizarNaoParcelamento); } } // GUIA_PAGAMENTO if (imovelDebitoCredito.getColecaoGuiasPagamentoValores() != null && !imovelDebitoCredito.getColecaoGuiasPagamentoValores().isEmpty()) { existeDebitoCredito = true; } // PARCELAMENTO if (!indicadorParcelamento) { Collection colecaoParcelamento = new ArrayList(); Collection colecaoDebitoCreditoParcelamentoHelper = new ArrayList(); DebitoCreditoParcelamentoHelper debitoCreditoParcelamentoHelper = null; try { colecaoParcelamento = repositorioCobranca.pesquisarParcelamentosSituacaoNormal(idImovel); } catch (ErroRepositorioException e) { sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", e); } Iterator iteratorParcelamento = colecaoParcelamento.iterator(); while (iteratorParcelamento.hasNext()) { Parcelamento parcelamento = (Parcelamento) iteratorParcelamento.next(); debitoCreditoParcelamentoHelper = new DebitoCreditoParcelamentoHelper(); debitoCreditoParcelamentoHelper = apresentarDebitoCreditoImovelExtratoDebito(parcelamento); colecaoDebitoCreditoParcelamentoHelper.add(debitoCreditoParcelamentoHelper); } imovelDebitoCredito.setColecaoDebitoCreditoParcelamentoHelper(colecaoDebitoCreditoParcelamentoHelper); } // Adicionado por R�mulo Aur�lio Data: 05/11/2009 // Analista: Rosana Carvalho // Obtem os d�bitos a cobrar que estejam com PARC_ID = NULL, // com SITUACAO NORMAL E FINANCIAMENTO_TIPO = 2 // Trata os Parcelamentos com ID nulo como debito a cobrar // OBS: Problema ocorrido na migracao (parc_id = null) // Problema ocorrido na SAAE ,CAEMA e COSANPA if (!indicadorParcelamento) { Collection<DebitoACobrar> colecaoDebitoACobrarParceladoComIDNulo = new ArrayList(); Collection<DebitoACobrar> colecaoDebitoACobrar = new ArrayList(); colecaoDebitoACobrar = imovelDebitoCredito.getColecaoDebitoACobrar(); try { colecaoDebitoACobrarParceladoComIDNulo = repositorioCobranca.pesquisarDebitoACobrarParceladoComIDNulo(idImovel); } catch (ErroRepositorioException e) { sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", e); } if (colecaoDebitoACobrarParceladoComIDNulo != null && !colecaoDebitoACobrarParceladoComIDNulo.isEmpty()) { Iterator iteratorDebitoACobrarParceladoComIDNulo = colecaoDebitoACobrarParceladoComIDNulo.iterator(); while (iteratorDebitoACobrarParceladoComIDNulo.hasNext()) { DebitoACobrar debitoACobrarParceladoComIDNulo = (DebitoACobrar) iteratorDebitoACobrarParceladoComIDNulo.next(); colecaoDebitoACobrar.add(debitoACobrarParceladoComIDNulo); } } } // FIM ALTERACAO // [FS0002] - Verificar exist�ncia de d�bitos/cr�ditos no im�vel if (!existeDebitoCredito) { throw new ControladorException("atencao.imovel_sem_debito_credito"); } return imovelDebitoCredito; } /** * [UC0630] - Solicitar Emiss�o do Extrato de D�bitos Apresentar * D�bitos/Cr�ditos do Im�vel * * @author Vivianne Sousa * @created 22/08/2007 * * @param idImovel * @exception ControladorException */ public DebitoCreditoParcelamentoHelper apresentarDebitoCreditoImovelExtratoDebito(Parcelamento parcelamento) throws ControladorException { DebitoCreditoParcelamentoHelper debitoCreditoParcelamentoHelper = new DebitoCreditoParcelamentoHelper(); Collection colecaoDebitosACobrar = null; Collection colecaoCreditosARealizar = null; debitoCreditoParcelamentoHelper.setParcelamento(parcelamento); // D�BITOS A COBRAR try { colecaoDebitosACobrar = repositorioCobranca.pesquisarDebitosACobrarImovelParcelamento(parcelamento.getId()); } catch (ErroRepositorioException e) { sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", e); } if (colecaoDebitosACobrar != null && !colecaoDebitosACobrar.isEmpty()) { BigDecimal valorTotalDebito = BigDecimal.ZERO; // COLE��O COM TODOS OS D�BITOS RELACIONADOS AO PARCELAMENTO debitoCreditoParcelamentoHelper.setColecaoDebitoACobrarParcelamento(colecaoDebitosACobrar); Iterator iteratorColecaoDebitosACobrar = colecaoDebitosACobrar.iterator(); DebitoACobrar debitoACobrar = null; // CALCULANDO O VALOR TOTAL RESTANTE PARA QUITA��O DO PARCELAMENTO while (iteratorColecaoDebitosACobrar.hasNext()) { debitoACobrar = (DebitoACobrar) iteratorColecaoDebitosACobrar.next(); // ACUMULANDO O VALOR TOTAL RESTANTE PARA QUITA��O DO // PARCELAMENTO valorTotalDebito = valorTotalDebito.add(debitoACobrar.getValorTotalComBonus()); } // VALOR TOTAL RESTANTE PARA QUITA��O DO PARCELAMENTO debitoCreditoParcelamentoHelper.setValorTotalDebito(valorTotalDebito); // QUANTIDADE DE PARCELAS RESTANTES PARA QUITA��O DO PARCELAMENTO debitoCreditoParcelamentoHelper.setNumeroPrestacaoCobradas(debitoACobrar.getNumeroPrestacaoCobradasMaisBonus()); /* * A cada d�bito a cobrar com parcelas a cobrar com valor maior que * 1 (DBAC_NNPRESTACAODEBITO � (DBAC_NNPRESTACAOCOBRADAS + * DBAC_NNPARCELABONUS)): * * O sistema dever� disponibilizar um campo para receber, caso o * usu�rio deseje, a quantidade de parcelas que deseja antecipar. */ if (debitoCreditoParcelamentoHelper.getNumeroPrestacaoRestante() > 1) { debitoCreditoParcelamentoHelper.setAntecipacaoParcela(true); } else { debitoCreditoParcelamentoHelper.setAntecipacaoParcela(false); } } // CR�DTIOS A REALIZAR try { colecaoCreditosARealizar = repositorioCobranca.pesquisarCreditosARealizarParcelamento(parcelamento.getId()); } catch (ErroRepositorioException e) { sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", e); } if (colecaoCreditosARealizar != null) { Collection colecaoCreditosARealizarNovos = new ArrayList(); BigDecimal valorTotalCredito = BigDecimal.ZERO; if (colecaoCreditosARealizar != null && !colecaoCreditosARealizar.isEmpty()) { Iterator iteratorcolecaoCreditosARealizar = colecaoCreditosARealizar.iterator(); // CALCULANDO O VALOR TOTAL RESTANTE DO CR�DITO RELACIONADO AO // PARCELAMENTO while (iteratorcolecaoCreditosARealizar.hasNext()) { Object[] colecaoCreditosARealizarArray = (Object[]) iteratorcolecaoCreditosARealizar.next(); CreditoARealizar creditoARealizar = null; if (colecaoCreditosARealizarArray[0] != null) { creditoARealizar = (CreditoARealizar) colecaoCreditosARealizarArray[0]; } if (colecaoCreditosARealizarArray[1] != null) { CreditoTipo creditoTipo = new CreditoTipo(); creditoTipo.setId((Integer) colecaoCreditosARealizarArray[2]); creditoTipo.setDescricao((String) colecaoCreditosARealizarArray[1]); creditoARealizar.setCreditoTipo(creditoTipo); } FiltroDevolucao filtroDevolucao = new FiltroDevolucao(); filtroDevolucao .adicionarParametro(new ParametroSimples(FiltroDevolucao.CREDITO_A_REALIZAR_ID, creditoARealizar.getId())); Collection colecaoDevolucao = this.getControladorUtil().pesquisar(filtroDevolucao, Devolucao.class.getName()); if (colecaoDevolucao == null || colecaoDevolucao.isEmpty()) { // ACUMULANDO O VALOR TOTAL RESTANTE DO CR�DITO // RELACIONADO AO PARCELAMENTO valorTotalCredito = valorTotalCredito.add(creditoARealizar.getValorTotalComBonus()); colecaoCreditosARealizarNovos.add(creditoARealizar); } } } // COLE��O COM TODOS OS CR�DITOS RELACIONADOS AO PARCELAMENTO debitoCreditoParcelamentoHelper.setColecaoCreditoARealizarParcelamento(colecaoCreditosARealizarNovos); // VALOR TOTAL RESTANTE DO CR�DITO RELACIONADO AO PARCELAMENTO debitoCreditoParcelamentoHelper.setValorTotalCredito(valorTotalCredito); } return debitoCreditoParcelamentoHelper; } /** * [UC0444] Gerar e Emitir Extrato de D�bitos * * [UC0251] Gerar Atividade de A��o de Cobranca * * Recuparea o valor da taxa de cobran�a para gerar o documento de cobran�a * * gerarDocumentoCobranca * * @author Vivianne Sousa * @date 31/08/2007 * * @param imovel * @param indicadorCobrancaTaxaExtrato * @throws ControladorException */ public BigDecimal obterValorTaxaDocumentoCobranca(Imovel imovel, Short indicadorCobrancaTaxaExtrato) throws ControladorException { BigDecimal valorTaxa = BigDecimal.ZERO; SistemaParametro sistemaParametro = this.getControladorUtil().pesquisarParametrosDoSistema(); if (indicadorCobrancaTaxaExtrato.equals(ConstantesSistema.INDICADOR_CALCULAR_TAXA_SALARIO_MINIMO)) { // Caso o perfil do im�vel corresponda a tarifa social if (imovel.getImovelPerfil().getId() == ImovelPerfil.TARIFA_SOCIAL) { // Atribuir 0,25% do valor do sal�rio m�nimo valorTaxa = sistemaParametro.getValorSalarioMinimo().multiply(new BigDecimal("0.0025")); } else { // Atribuir 0,5% do valor do sal�rio m�nimo valorTaxa = sistemaParametro.getValorSalarioMinimo().multiply(new BigDecimal("0.005")); } } else if (indicadorCobrancaTaxaExtrato.equals(ConstantesSistema.INDICADOR_CALCULAR_TAXA_SEGUNDA_VIA)) { valorTaxa = sistemaParametro.getValorSegundaVia(); } return valorTaxa; } /** * [UC0214] - Efetuar Parcelamento de D�bitos * * @author Vivianne Sousa * @date 01/09/2007 * * @return * @throws ErroRepositorioException */ public Integer verificarRDUtilizadaPeloImovel(Integer idRD, Integer idImovel) throws ControladorException { try { // chama o met�do de pesquisar do reposit�rio return repositorioCobranca.verificarRDUtilizadaPeloImovel(idRD, idImovel); // erro no hibernate } catch (ErroRepositorioException ex) { // seta o rollback sessionContext.setRollbackOnly(); // levanta a exce��o para a pr�xima camada throw new ControladorException("erro.sistema", ex); } } /** * [UC0214] Efetuar Parcelamento Debito [SB0011] Verificar �nica Fatura * * @author Vivianne Sousa * @created 01/09/2007 * * @param idImovel * @return * @throws ErroRepositorioException */ public BigDecimal pesquisarValorDebitoACobrarSancoes(Integer idImovel, Integer anoMesInicialReferenciaDebito, Integer anoMesFinalReferenciaDebito) throws ControladorException { try { if (anoMesFinalReferenciaDebito.compareTo(anoMesInicialReferenciaDebito) < 0) { anoMesFinalReferenciaDebito = anoMesInicialReferenciaDebito; } // chama o met�do de pesquisar do reposit�rio return repositorioCobranca.pesquisarValorDebitoACobrarSancoes(idImovel, anoMesInicialReferenciaDebito, anoMesFinalReferenciaDebito); // erro no hibernate } catch (ErroRepositorioException ex) { // seta o rollback sessionContext.setRollbackOnly(); // levanta a exce��o para a pr�xima camada throw new ControladorException("erro.sistema", ex); } } /** * [UC0214] Efetuar Parcelamento Debito [SB0011] Verificar �nica Fatura * * @author Vivianne Sousa * @created 06/09/2007 * * @param idImovel * @return * @throws ErroRepositorioException */ public BigDecimal pesquisarValorDebitoACobrar(Integer idImovel, Integer anoMesInicialReferenciaDebito, Integer anoMesFinalReferenciaDebito) throws ControladorException { try { if (anoMesFinalReferenciaDebito.compareTo(anoMesInicialReferenciaDebito) < 0) { anoMesFinalReferenciaDebito = anoMesInicialReferenciaDebito; } // chama o met�do de pesquisar do reposit�rio return repositorioCobranca.pesquisarValorDebitoACobrar(idImovel, anoMesInicialReferenciaDebito, anoMesFinalReferenciaDebito); // erro no hibernate } catch (ErroRepositorioException ex) { // seta o rollback sessionContext.setRollbackOnly(); // levanta a exce��o para a pr�xima camada throw new ControladorException("erro.sistema", ex); } } /** * [UC0214] Efetuar Parcelamento Debito * * @author Vivianne Sousa * @created 14/09/2007 * * @param idImovel * @return * @throws ErroRepositorioException */ public BigDecimal pesquisarValorDebitoCobradoContas(Integer idImovel, Integer anoMesInicialReferenciaDebito, Integer anoMesFinalReferenciaDebito, int indicadorDividaAtiva) throws ControladorException { try { // chama o met�do de pesquisar do reposit�rio return repositorioCobranca.pesquisarValorDebitoCobradoContas(idImovel, anoMesInicialReferenciaDebito, anoMesFinalReferenciaDebito, indicadorDividaAtiva); // erro no hibernate } catch (ErroRepositorioException ex) { // seta o rollback sessionContext.setRollbackOnly(); // levanta a exce��o para a pr�xima camada throw new ControladorException("erro.sistema", ex); } } /** * [UC0214] Inserir A��o de Cobran�a * * @author S�vio Luiz * @created 14/09/2007 * * @param idImovel * @return * @throws ErroRepositorioException */ public Integer inserirAcaoCobranca(CobrancaAcaoHelper cobrancaAcaoHelper) throws ControladorException { Integer idCobrancaAcao = null; CobrancaAcao cobrancaAcao = new CobrancaAcao(); // verifica a existencia da descri��o da a��o de cobran�a if (cobrancaAcaoHelper.getDescricaoCobrancaAcao() != null && !cobrancaAcaoHelper.getDescricaoCobrancaAcao().equals("")) { cobrancaAcao.setDescricaoCobrancaAcao(cobrancaAcaoHelper.getDescricaoCobrancaAcao()); } else { // levanta a exce��o para a pr�xima camada throw new ControladorException("atencao.required", null, "Descri��o da A��o de Cobran�a"); } // verifica a existencia do numero de dias de validade da a��o if (cobrancaAcaoHelper.getNumeroDiasValidade() != null && !cobrancaAcaoHelper.getNumeroDiasValidade().equals("")) { cobrancaAcao.setNumeroDiasValidade(new Short(cobrancaAcaoHelper.getNumeroDiasValidade())); } else { // levanta a exce��o para a pr�xima camada throw new ControladorException("atencao.required", null, "Numero de Dias de Validade da A��o"); } // verifica a existencia da ordem do cronograma if (cobrancaAcaoHelper.getOrdemRealizacao() != null && !cobrancaAcaoHelper.getOrdemRealizacao().equals("")) { // [FS0002] - Verificar exist�ncia de a��o com mesma ordem FiltroCobrancaAcao filtroCobrancaAcao = new FiltroCobrancaAcao(); filtroCobrancaAcao.adicionarParametro(new ParametroSimples(FiltroCobrancaAcao.ORDEM_REALIZACAO, cobrancaAcaoHelper .getOrdemRealizacao())); Collection colecaoCobarncaAcao = getControladorUtil().pesquisar(filtroCobrancaAcao, CobrancaAcao.class.getName()); if (colecaoCobarncaAcao != null && !colecaoCobarncaAcao.isEmpty()) { CobrancaAcao cobAcao = (CobrancaAcao) Util.retonarObjetoDeColecao(colecaoCobarncaAcao); // // levanta a exce��o para a pr�xima camada throw new ControladorException("atencao.acao_cobranca_mesma_ordem", null, "" + cobAcao.getDescricaoCobrancaAcao()); } else { cobrancaAcao.setOrdemRealizacao(new Short(cobrancaAcaoHelper.getOrdemRealizacao())); } } // verifica a existencia da a��o predecessora if (cobrancaAcaoHelper.getIdCobrancaAcaoPredecessora() != null && !cobrancaAcaoHelper.getIdCobrancaAcaoPredecessora().equals("")) { // [FS0008] - Verificar se o numero da ordem � menor que o da // predecessora FiltroCobrancaAcao filtroCobrancaAcao = new FiltroCobrancaAcao(); filtroCobrancaAcao.adicionarParametro(new ParametroSimples(FiltroCobrancaAcao.ID, cobrancaAcaoHelper .getIdCobrancaAcaoPredecessora())); Collection colecaoCobarncaAcaoPredecessora = getControladorUtil().pesquisar(filtroCobrancaAcao, CobrancaAcao.class.getName()); if (colecaoCobarncaAcaoPredecessora != null && !colecaoCobarncaAcaoPredecessora.isEmpty()) { CobrancaAcao cobrancaAcaoPredecessora = (CobrancaAcao) Util.retonarObjetoDeColecao(colecaoCobarncaAcaoPredecessora); if (cobrancaAcaoPredecessora.getOrdemRealizacao() != null && cobrancaAcaoPredecessora.getOrdemRealizacao() >= new Short(cobrancaAcaoHelper.getOrdemRealizacao())) { // levanta a exce��o para a pr�xima camada throw new ControladorException("atencao.acao_cobranca_ordem_realizacao_predecessora"); } } CobrancaAcao cobrancaAcaoPredecessora = new CobrancaAcao(); cobrancaAcaoPredecessora.setId(new Integer(cobrancaAcaoHelper.getIdCobrancaAcaoPredecessora())); cobrancaAcao.setCobrancaAcaoPredecessora(cobrancaAcaoPredecessora); } // verifica a existencia do numero de dias entre a a��o e sua // predecessora if (cobrancaAcaoHelper.getNumeroDiasMinimoAcaoPrecedente() != null && !cobrancaAcaoHelper.getNumeroDiasMinimoAcaoPrecedente().equals("")) { cobrancaAcao.setNumeroDiasMinimoAcaoPrecedente(new Short(cobrancaAcaoHelper.getNumeroDiasMinimoAcaoPrecedente())); } // verifica a existencia do tipo do documento a ser gerado if (cobrancaAcaoHelper.getIdDocumentoTipo() != null && !cobrancaAcaoHelper.getIdDocumentoTipo().equals("")) { DocumentoTipo documentoTipo = new DocumentoTipo(); documentoTipo.setId(new Integer(cobrancaAcaoHelper.getIdDocumentoTipo())); cobrancaAcao.setDocumentoTipo(documentoTipo); } else { // levanta a exce��o para a pr�xima camada throw new ControladorException("atencao.required", null, "Tipo de Documento a ser Gerado"); } // verifica a existencia da situa��o da liga��o de agua if (cobrancaAcaoHelper.getIdLigacaoAguaSituacao() != null && !cobrancaAcaoHelper.getIdLigacaoAguaSituacao().equals("")) { LigacaoAguaSituacao ligacaoAguaSituacao = new LigacaoAguaSituacao(); ligacaoAguaSituacao.setId(new Integer(cobrancaAcaoHelper.getIdLigacaoAguaSituacao())); cobrancaAcao.setLigacaoAguaSituacao(ligacaoAguaSituacao); } // verifica a existencia da situa��o da liga��o de esgoto if (cobrancaAcaoHelper.getIdLigacaoEsgotoSituacao() != null && !cobrancaAcaoHelper.getIdLigacaoEsgotoSituacao().equals("")) { LigacaoEsgotoSituacao ligacaoEsgotoSituacao = new LigacaoEsgotoSituacao(); ligacaoEsgotoSituacao.setId(new Integer(cobrancaAcaoHelper.getIdLigacaoEsgotoSituacao())); cobrancaAcao.setLigacaoEsgotoSituacao(ligacaoEsgotoSituacao); } // pesquisa enter de crit�rio de cobran�a if (cobrancaAcaoHelper.getIdCobrancaCriterio() != null && !cobrancaAcaoHelper.getIdCobrancaCriterio().equals("")) { if (cobrancaAcaoHelper.getDescricaoCobrancaCriterio() == null || cobrancaAcaoHelper.getDescricaoCobrancaCriterio().equals("")) { FiltroCobrancaCriterio filtroCobrancaCriterio = new FiltroCobrancaCriterio(); filtroCobrancaCriterio.adicionarParametro(new ParametroSimples(FiltroCobrancaCriterio.ID, new Integer(cobrancaAcaoHelper .getIdCobrancaCriterio()))); filtroCobrancaCriterio.setCampoOrderBy(FiltroCobrancaCriterio.DESCRICAO_COBRANCA_CRITERIO); Collection colecaoCobrancaCriterio = getControladorUtil().pesquisar(filtroCobrancaCriterio, CobrancaCriterio.class.getName()); if (colecaoCobrancaCriterio != null && !colecaoCobrancaCriterio.isEmpty()) { CobrancaCriterio cobrancaCriterio = (CobrancaCriterio) Util.retonarObjetoDeColecao(colecaoCobrancaCriterio); cobrancaAcao.setCobrancaCriterio(cobrancaCriterio); } else { // levanta a exce��o para a pr�xima camada throw new ControladorException("atencao.pesquisa_inexistente", null, "Crit�rio de Cobran�a"); } } else { CobrancaCriterio cobrancaCriterio = new CobrancaCriterio(); cobrancaCriterio.setId(new Integer(cobrancaAcaoHelper.getIdCobrancaCriterio())); cobrancaAcao.setCobrancaCriterio(cobrancaCriterio); } } else { // levanta a exce��o para a pr�xima camada throw new ControladorException("atencao.required", null, "Crit�rio de Cobran�a"); } // pesquisa enter de crit�rio de cobran�a if (cobrancaAcaoHelper.getIdServicoTipo() != null && !cobrancaAcaoHelper.getIdServicoTipo().equals("")) { if (cobrancaAcaoHelper.getDescricaoServicoTipo() == null || cobrancaAcaoHelper.getDescricaoServicoTipo().equals("")) { FiltroServicoTipo filtroServicoTipo = new FiltroServicoTipo(); filtroServicoTipo.adicionarParametro(new ParametroSimples(FiltroServicoTipo.ID, new Integer(cobrancaAcaoHelper .getIdServicoTipo()))); filtroServicoTipo.setCampoOrderBy(FiltroServicoTipo.DESCRICAO); Collection colecaoServicoTipo = getControladorUtil().pesquisar(filtroServicoTipo, ServicoTipo.class.getName()); if (colecaoServicoTipo != null && !colecaoServicoTipo.isEmpty()) { ServicoTipo servicoTipo = (ServicoTipo) Util.retonarObjetoDeColecao(colecaoServicoTipo); cobrancaAcao.setServicoTipo(servicoTipo); } else { // levanta a exce��o para a pr�xima camada throw new ControladorException("atencao.pesquisa_inexistente", null, "Tipo de servi�o"); } } else { ServicoTipo servicoTipo = new ServicoTipo(); servicoTipo.setId(new Integer(cobrancaAcaoHelper.getIdServicoTipo())); cobrancaAcao.setServicoTipo(servicoTipo); } } // verifica a existencia do indicador de comp�e o cronograma if (cobrancaAcaoHelper.getIndicadorCronograma() != null && !cobrancaAcaoHelper.getIndicadorCronograma().equals("")) { cobrancaAcao.setIndicadorCronograma(new Short(cobrancaAcaoHelper.getIndicadorCronograma())); } else { // levanta a exce��o para a pr�xima camada throw new ControladorException("atencao.required", null, "Comp�e Cronograma"); } // verifica a existencia do indicador de a��o Obrigat�ria if (cobrancaAcaoHelper.getIndicadorObrigatoriedade() != null && !cobrancaAcaoHelper.getIndicadorObrigatoriedade().equals("")) { if (new Short(cobrancaAcaoHelper.getIndicadorObrigatoriedade()).equals(CobrancaAcao.INDICADOR_SIM) && new Short(cobrancaAcaoHelper.getIndicadorCronograma()).equals(CobrancaAcao.INDICADOR_NAO)) { // levanta a exce��o para a pr�xima camada throw new ControladorException("atencao.acao_cobranca_compor_cronograma"); } else { cobrancaAcao.setIndicadorObrigatoriedade(new Short(cobrancaAcaoHelper.getIndicadorObrigatoriedade())); } } else { // levanta a exce��o para a pr�xima camada throw new ControladorException("atencao.required", null, "A��o Obrigat�ria"); } // verifica a existencia do indicador de repeti��o if (cobrancaAcaoHelper.getIndicadorRepeticao() != null && !cobrancaAcaoHelper.getIndicadorRepeticao().equals("")) { cobrancaAcao.setIndicadorRepeticao(new Short(cobrancaAcaoHelper.getIndicadorRepeticao())); } else { // levanta a exce��o para a pr�xima camada throw new ControladorException("atencao.required", null, "Pode ser Repetida no Ciclo"); } // verifica a existencia do indicador de suspens�o de abastecimento if (cobrancaAcaoHelper.getIndicadorSuspensaoAbastecimento() != null && !cobrancaAcaoHelper.getIndicadorSuspensaoAbastecimento().equals("")) { cobrancaAcao.setIndicadorSuspensaoAbastecimento(new Short(cobrancaAcaoHelper.getIndicadorSuspensaoAbastecimento())); } else { // levanta a exce��o para a pr�xima camada throw new ControladorException("atencao.required", null, "Provoca Suspens�o no Abastecimento"); } // verifica a existencia do indicador de cobran�a deb a cobrar if (cobrancaAcaoHelper.getIndicadorCobrancaDebACobrar() != null && !cobrancaAcaoHelper.getIndicadorCobrancaDebACobrar().equals("")) { cobrancaAcao.setIndicadorCobrancaDebACobrar(new Short(cobrancaAcaoHelper.getIndicadorCobrancaDebACobrar())); } else { // levanta a exce��o para a pr�xima camada throw new ControladorException("atencao.required", null, "Considera D�bitos a Cobrar"); } // verifica a existencia do indicador de acrescimos por impontualidade if (cobrancaAcaoHelper.getIndicadorAcrescimoImpontualidade() != null && !cobrancaAcaoHelper.getIndicadorAcrescimoImpontualidade().equals("")) { cobrancaAcao.setIndicadorAcrescimoImpontualidade(new Short(cobrancaAcaoHelper.getIndicadorAcrescimoImpontualidade())); } else { // levanta a exce��o para a pr�xima camada throw new ControladorException("atencao.required", null, "Considera Acr�scimos por Impontualidade"); } // verifica a existencia do indicador de gera��o de taxa if (cobrancaAcaoHelper.getIndicadorGeracaoTaxa() != null && !cobrancaAcaoHelper.getIndicadorGeracaoTaxa().equals("")) { cobrancaAcao.setIndicadorGeracaoTaxa(new Short(cobrancaAcaoHelper.getIndicadorGeracaoTaxa())); } else { // levanta a exce��o para a pr�xima camada throw new ControladorException("atencao.required", null, "Gera Taxa"); } // verifica a existencia do indicador de emitir boletim de cadastro if (cobrancaAcaoHelper.getIndicadorBoletim() != null && !cobrancaAcaoHelper.getIndicadorBoletim().equals("")) { cobrancaAcao.setIndicadorBoletim(new Short(cobrancaAcaoHelper.getIndicadorBoletim())); } else { // levanta a exce��o para a pr�xima camada throw new ControladorException("atencao.required", null, "Pode Emitir Boletins de Cadastro"); } // verifica a existencia do indicador de comp�e o cronograma if (cobrancaAcaoHelper.getIndicadorDebito() != null && !cobrancaAcaoHelper.getIndicadorDebito().equals("")) { cobrancaAcao.setIndicadorDebito(new Short(cobrancaAcaoHelper.getIndicadorDebito())); } else { // levanta a exce��o para a pr�xima camada throw new ControladorException("atencao.required", null, "Pode ser Executada para Im�veis sem D�bito"); } // verifica a existencia dnumero de dias de vencimento if (cobrancaAcaoHelper.getNumeroDiasVencimento() != null && !cobrancaAcaoHelper.getNumeroDiasVencimento().equals("")) { cobrancaAcao.setNumeroDiasVencimento(new Integer(cobrancaAcaoHelper.getNumeroDiasVencimento())); } // } else { // // levanta a exce��o para a pr�xima camada // throw new ControladorException("atencao.required", null, // "Pode ser Executada para Im�veis sem D�bito"); // } // verifica a existencia do indicador de metasCronograma if (cobrancaAcaoHelper.getIndicadorMetasCronograma() != null && !cobrancaAcaoHelper.getIndicadorMetasCronograma().equals("")) { cobrancaAcao.setIndicadorMetasCronograma(new Integer(cobrancaAcaoHelper.getIndicadorMetasCronograma())); } else { // levanta a exce��o para a pr�xima camada throw new ControladorException("atencao.required", null, "Usa Metas no Cronograma"); } // verifica a existencia do indicador de ordenamentoCronograma if (cobrancaAcaoHelper.getIndicadorOrdenamentoCronograma() != null && !cobrancaAcaoHelper.getIndicadorOrdenamentoCronograma().equals("")) { cobrancaAcao.setIndicadorOrdenamentoCronograma(new Integer(cobrancaAcaoHelper.getIndicadorOrdenamentoCronograma())); } else { // levanta a exce��o para a pr�xima camada throw new ControladorException("atencao.required", null, "Usa Ordenamento: No Cronograma"); } // verifica a existencia do indicador de ordenamentoEventual if (cobrancaAcaoHelper.getIndicadorOrdenamentoEventual() != null && !cobrancaAcaoHelper.getIndicadorOrdenamentoEventual().equals("")) { cobrancaAcao.setIndicadorOrdenamentoEventual(new Integer(cobrancaAcaoHelper.getIndicadorOrdenamentoEventual())); } else { // levanta a exce��o para a pr�xima camada throw new ControladorException("atencao.required", null, "Usa Ordenamento: Nas Eventuais"); } // verifica a existencia do indicador de debitoInterfereAcao if (cobrancaAcaoHelper.getIndicadorDebitoInterfereAcao() != null && !cobrancaAcaoHelper.getIndicadorDebitoInterfereAcao().equals("")) { cobrancaAcao.setIndicadorDebitoInterfereAcao(new Integer(cobrancaAcaoHelper.getIndicadorDebitoInterfereAcao())); } else { // levanta a exce��o para a pr�xima camada throw new ControladorException("atencao.required", null, "Situa��o do D�bito Interfere na Situa��o da A��o"); } // verifica a existencia numero de diasRemuneracaoTerceiro if (cobrancaAcaoHelper.getNumeroDiasRemuneracaoTerceiro() != null && !cobrancaAcaoHelper.getNumeroDiasRemuneracaoTerceiro().equals("")) { cobrancaAcao.setNumeroDiasRemuneracaoTerceiro(new Integer(cobrancaAcaoHelper.getNumeroDiasRemuneracaoTerceiro())); } if (cobrancaAcaoHelper.getIndicadorCreditosARealizar() != null && !cobrancaAcaoHelper.getIndicadorCreditosARealizar().equals("")) { cobrancaAcao.setIndicadorCreditosARealizar(new Short(cobrancaAcaoHelper.getIndicadorCreditosARealizar())); } if (cobrancaAcaoHelper.getIndicadorNotasPromissoria() != null && !cobrancaAcaoHelper.getIndicadorNotasPromissoria().equals("")) { cobrancaAcao.setIndicadorNotasPromissoria(new Short(cobrancaAcaoHelper.getIndicadorNotasPromissoria())); } if (cobrancaAcaoHelper.getIndicadorOrdenarMaiorValor() != null && !cobrancaAcaoHelper.getIndicadorOrdenarMaiorValor().equals("")) { cobrancaAcao.setIndicadorOrdenarMaiorValor(new Short(cobrancaAcaoHelper.getIndicadorOrdenarMaiorValor())); } if (cobrancaAcaoHelper.getIndicadorValidarItem() != null && !cobrancaAcaoHelper.getIndicadorValidarItem().equals("")) { cobrancaAcao.setIndicadorValidarItem(new Short(cobrancaAcaoHelper.getIndicadorValidarItem())); } cobrancaAcao.setUltimaAlteracao(new Date()); cobrancaAcao.setIndicadorUso(new Short(cobrancaAcaoHelper.getIndicadorUso())); // ------------ REGISTRAR TRANSA��O---------------------------- RegistradorOperacao registradorOperacao = new RegistradorOperacao(Operacao.OPERACAO_COBRANCA_ACAO_INSERIR, cobrancaAcao.getId(), cobrancaAcao.getId(), new UsuarioAcaoUsuarioHelper(cobrancaAcaoHelper.getUsuarioLogado(), UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO)); registradorOperacao.registrarOperacao(cobrancaAcao); idCobrancaAcao = (Integer) getControladorUtil().inserir(cobrancaAcao); return idCobrancaAcao; } /** * [UC0701] Informar �ndices dos Acr�scimos de Impontualidade * * @author S�vio Luiz * @created 26/09/2007 * @throws ErroRepositorioException */ public Integer pesquisarMaximoAnoMesIndicesAcerscimosImpontualidade() throws ControladorException { try { // chama o met�do de pesquisar do reposit�rio return repositorioCobranca.pesquisarMaximoAnoMesIndicesAcerscimosImpontualidade(); // erro no hibernate } catch (ErroRepositorioException ex) { // seta o rollback sessionContext.setRollbackOnly(); // levanta a exce��o para a pr�xima camada throw new ControladorException("erro.sistema", ex); } } /** * [UC0214] Efetuar Parcelamento Debito * * @author Vivianne Sousa * @created 18/09/2007 * * @param idImovel * @return * @throws ErroRepositorioException */ public BigDecimal obterDescontoTarifaSocial(Integer idImovel, Integer anoMesInicialReferenciaDebito, Integer anoMesFinalReferenciaDebito, ParcelamentoPerfil parcelamentoPerfil, Integer indicadorContasRevisao) throws ControladorException { BigDecimal retorno = BigDecimal.ZERO; if (anoMesFinalReferenciaDebito.compareTo(anoMesInicialReferenciaDebito) < 0) { anoMesFinalReferenciaDebito = anoMesInicialReferenciaDebito; } SistemaParametro sistemaParametro = getControladorUtil().pesquisarParametrosDoSistema(); Collection colecaoContas = getControladorFaturamento().pesquisarContasAtualizacaoTarifaria(idImovel, anoMesInicialReferenciaDebito, anoMesFinalReferenciaDebito, Util.converteStringParaDate("01/01/0001"), // Inicio // Vencimento Util.converteStringParaDate("31/12/9999"), // Final Vencimento indicadorContasRevisao); if (colecaoContas != null && !colecaoContas.isEmpty()) { Iterator iter = colecaoContas.iterator(); while (iter.hasNext()) { Conta conta = (Conta) iter.next(); retorno = retorno.add(calcularValorAtualizacaoTarifaSocial(sistemaParametro, conta)); } } return retorno; } /** * [UC0214] Efetuar Parcelamento Debito * * @author Vivianne Sousa * @created 18/09/2007 * * @param idImovel * @return * @throws ErroRepositorioException */ public BigDecimal calcularValorAtualizacaoTarifaSocial(SistemaParametro sistemaParametro, Conta conta) throws ControladorException { BigDecimal valorAtualizacaoMonetaria = new BigDecimal("0.00"); Imovel imovel = conta.getImovel(); ConsumoTarifa consumoTarifa = new ConsumoTarifa(); consumoTarifa.setId(ConsumoTarifa.CONSUMO_SOCIAL); imovel.setConsumoTarifa(consumoTarifa); // [UC0105] - Obter Consumo M�nimo da Liga��o Integer consumoMinimoLigacao = getControladorMicromedicao().obterConsumoMinimoLigacao(imovel, null); // [UC0108] - Obter Quantidade de Economias por Categoria Collection colecaoCategorias = getControladorImovel().obterQuantidadeEconomiasCategoria(imovel); Integer anoMesReferencia = sistemaParametro.getAnoMesFaturamento(); // Data de Leitura Anterior Integer anoMesReferenciaAnterior = Util.subtrairMesDoAnoMes(anoMesReferencia, 1); Date dataLeituraAnterior = null; try { dataLeituraAnterior = (Date) this.repositorioFaturamento.pesquisarFaturamentoAtividadeCronogramaDataRealizacao(imovel .getQuadra().getRota().getFaturamentoGrupo().getId(), FaturamentoAtividade.EFETUAR_LEITURA, anoMesReferenciaAnterior); } catch (ErroRepositorioException ex) { sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", ex); } // Data de Leitura Atual Date dataLeituraAtual = null; try { dataLeituraAtual = (Date) this.repositorioFaturamento.pesquisarFaturamentoAtividadeCronogramaDataRealizacao(imovel.getQuadra() .getRota().getFaturamentoGrupo().getId(), FaturamentoAtividade.EFETUAR_LEITURA, anoMesReferencia); } catch (ErroRepositorioException ex) { sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", ex); } /* * Caso N�O existe cronograma para o anoMes informado */ if (dataLeituraAnterior == null || dataLeituraAtual == null) { int mesConta = Util.obterMes(anoMesReferencia); int anoConta = Util.obterAno(anoMesReferencia); int ultimoDiaMes = new Integer(Util.obterUltimoDiaMes(mesConta, anoConta)); dataLeituraAtual = Util.criarData(ultimoDiaMes, mesConta, anoConta); dataLeituraAnterior = Util.criarData(1, mesConta, anoConta); } BigDecimal percentualEsgoto = new BigDecimal(0); if (conta.getLigacaoEsgotoSituacao().getId().equals(LigacaoEsgotoSituacao.LIGADO)) { percentualEsgoto = conta.getPercentualEsgoto(); } // Valores de �gua e esgoto que est�o na conta (VALOR ANTIGO) BigDecimal valorAguaEsgotoAnterior = new BigDecimal(0); if (conta.getValorAgua() != null) { valorAguaEsgotoAnterior = valorAguaEsgotoAnterior.add(conta.getValorAgua()); } if (conta.getValorEsgoto() != null) { valorAguaEsgotoAnterior = valorAguaEsgotoAnterior.add(conta.getValorEsgoto()); } // Valores de �gua e esgoto (VALOR ATUAL) BigDecimal valorAguaEsgotoAtual = new BigDecimal(0); // [UC0120] - Calcular Valores de �gua e/ou Esgoto Collection<CalcularValoresAguaEsgotoHelper> colecaoCalcularValoresAguaEsgotoHelper = this.getControladorFaturamento() .calcularValoresAguaEsgoto(anoMesReferencia, conta.getLigacaoAguaSituacao().getId(), conta.getLigacaoEsgotoSituacao().getId(), new Short("1"), new Short("1"), colecaoCategorias, conta.getConsumoAgua(), conta.getConsumoEsgoto(), consumoMinimoLigacao, dataLeituraAnterior, dataLeituraAtual, percentualEsgoto, ConsumoTarifa.CONSUMO_SOCIAL, null, null); if (colecaoCalcularValoresAguaEsgotoHelper != null && !colecaoCalcularValoresAguaEsgotoHelper.isEmpty()) { CalcularValoresAguaEsgotoHelper valoresAguaEsgoto = null; if (colecaoCalcularValoresAguaEsgotoHelper.size() > 1) { Iterator itAguaEsgoto = colecaoCalcularValoresAguaEsgotoHelper.iterator(); while (itAguaEsgoto.hasNext()) { valoresAguaEsgoto = (CalcularValoresAguaEsgotoHelper) itAguaEsgoto.next(); if (valoresAguaEsgoto.getValorFaturadoAguaCategoria() != null) { valorAguaEsgotoAtual = valorAguaEsgotoAtual.add(valoresAguaEsgoto.getValorFaturadoAguaCategoria()); } if (valoresAguaEsgoto.getValorFaturadoEsgotoCategoria() != null) { valorAguaEsgotoAtual = valorAguaEsgotoAtual.add(valoresAguaEsgoto.getValorFaturadoEsgotoCategoria()); } } } else { valoresAguaEsgoto = (CalcularValoresAguaEsgotoHelper) Util.retonarObjetoDeColecao(colecaoCalcularValoresAguaEsgotoHelper); if (valoresAguaEsgoto.getValorFaturadoAguaCategoria() != null) { valorAguaEsgotoAtual = valorAguaEsgotoAtual.add(valoresAguaEsgoto.getValorFaturadoAguaCategoria()); } if (valoresAguaEsgoto.getValorFaturadoEsgotoCategoria() != null) { valorAguaEsgotoAtual = valorAguaEsgotoAtual.add(valoresAguaEsgoto.getValorFaturadoEsgotoCategoria()); } } valorAtualizacaoMonetaria = valorAguaEsgotoAnterior.subtract(valorAguaEsgotoAtual); if (valorAtualizacaoMonetaria.compareTo(new BigDecimal(0)) == -1) { valorAtualizacaoMonetaria = new BigDecimal(0); } } return valorAtualizacaoMonetaria; } /** * [UC0214] Efetuar Parcelamento Debito * * @author Vivianne Sousa * @created 20/09/2007 * * @param idImovel * @param anoMesInicialReferenciaDebito * @param anoMesFinalReferenciaDebito * @return * @throws ErroRepositorioException */ public BigDecimal pesquisarValorDebitoCobradoSancoes(Integer idImovel, Integer anoMesInicialReferenciaDebito, Integer anoMesFinalReferenciaDebito, int indicadorDividaAtiva) throws ControladorException { try { if (anoMesFinalReferenciaDebito.compareTo(anoMesInicialReferenciaDebito) < 0) { anoMesFinalReferenciaDebito = anoMesInicialReferenciaDebito; } // chama o met�do de pesquisar do reposit�rio return repositorioCobranca.pesquisarValorDebitoCobradoSancoes(idImovel, anoMesInicialReferenciaDebito, anoMesFinalReferenciaDebito, indicadorDividaAtiva); // erro no hibernate } catch (ErroRepositorioException ex) { // seta o rollback sessionContext.setRollbackOnly(); // levanta a exce��o para a pr�xima camada throw new ControladorException("erro.sistema", ex); } } /** * Retorna uma colecao de Debitos por Faixa de Valores dos Imoveis * * @author Ivan Sergio * @created 20/09/2007 * * @param idImovel * @return * @throws ErroRepositorioException */ public Collection pesquisarDebitoImovelPorFaixaValores(Collection colecaoIdImoveis, String valorMinimoDebito, String anoMesReferenciaInicial, String anoMesReferenciaFinal, String classificacao, boolean pesquisaMunicipio) throws ControladorException { Collection colecaoImoveisFaixaValores = null; Integer posIni = 0; Integer posFinal = 0; Integer qtdRegistros = 500; boolean terminou = false; Collection retorno = null; List listaImoveis = (List) colecaoIdImoveis; List registrosPesquisa = null; CurvaAbcDebitosHelper curvaAbc = null; try { if (listaImoveis != null && !listaImoveis.isEmpty()) { colecaoImoveisFaixaValores = new ArrayList(); while (!terminou) { String imovel = ""; if (listaImoveis.size() > qtdRegistros && listaImoveis.size() > (posFinal + qtdRegistros)) { posFinal += qtdRegistros; } else { posFinal = listaImoveis.size(); terminou = true; } registrosPesquisa = listaImoveis.subList(posIni, posFinal); for (int i = 0; i < registrosPesquisa.size(); i++) imovel += registrosPesquisa.get(i).toString() + ","; // Retira a ultima virgula da lista imovel = imovel.substring(0, (imovel.length() - 1)); retorno = repositorioCobranca.pesquisarDebitoImovelPorFaixaValores(imovel, valorMinimoDebito, anoMesReferenciaInicial, anoMesReferenciaFinal, classificacao, pesquisaMunicipio); Iterator iRetorno = retorno.iterator(); while (iRetorno.hasNext()) { Object[] colecaoRetorno = (Object[]) iRetorno.next(); curvaAbc = new CurvaAbcDebitosHelper(); curvaAbc.setFaixaInicial((BigDecimal) colecaoRetorno[0]); curvaAbc.setFaixaFinal((BigDecimal) colecaoRetorno[1]); curvaAbc.setIdFaixa((Integer) colecaoRetorno[2]); curvaAbc.setQuantidadeLigacoes((Integer) colecaoRetorno[3]); curvaAbc.setTotal((BigDecimal) colecaoRetorno[4]); curvaAbc.setQtdeDocumentos((Integer) colecaoRetorno[5]); curvaAbc.setIdGerencia((Integer) colecaoRetorno[6]); curvaAbc.setNomeGerencia((String) colecaoRetorno[7]); curvaAbc.setIdLocalidade((Integer) colecaoRetorno[8]); curvaAbc.setNomeLocalidade((String) colecaoRetorno[9]); curvaAbc.setIdSetor((Integer) colecaoRetorno[10]); curvaAbc.setCodigoSetor((Integer) colecaoRetorno[11]); curvaAbc.setNomeSetor((String) colecaoRetorno[12]); curvaAbc.setIdMunicipio((Integer) colecaoRetorno[13]); curvaAbc.setNomeMunicipio((String) colecaoRetorno[14]); if (!colecaoImoveisFaixaValores.contains(curvaAbc)) { colecaoImoveisFaixaValores.add(curvaAbc); } } posIni = posFinal + 1; } } } catch (ErroRepositorioException e) { // sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", e); } return colecaoImoveisFaixaValores; } /** * [UC0644] Filtrar A��o de Cobran�a * * @author S�vio Luiz * @created 10/10/2007 * * @param idImovel * @return * @throws ErroRepositorioException */ public FiltroCobrancaAcao filtrarAcaoCobranca(String descricaoAcaoCobranca, String numeroDiasValidade, String idAcaoPredecessora, String numeroDiasEntreAcoes, String idTipoDocumentoGerado, String idSituacaoLigacaoAgua, String idSituacaoLigacaoEsgoto, String idCobrancaCriterio, String descricaoCobrancaCriterio, String idServicoTipo, String descricaoServicoTipo, String ordemCronograma, String icCompoeCronograma, String icAcaoObrigatoria, String icRepetidaCiclo, String icSuspensaoAbastecimento, String icDebitosACobrar, String icAcrescimosImpontualidade, String icGeraTaxa, String icEmitirBoletimCadastro, String icImoveisSemDebitos, String icMetasCronograma, String icOrdenamentoCronograma, String icOrdenamentoEventual, String icDebitoInterfereAcao, String numeroDiasRemuneracaoTerceiro, String icUso, String icCreditosARealizar, String icNotasPromissoria) throws ControladorException { FiltroCobrancaAcao filtroCobrancaAcao = new FiltroCobrancaAcao(); boolean peloMenosUmParametroInformado = false; // verifica a existencia da descri��o da a��o de cobran�a if (descricaoAcaoCobranca != null && !descricaoAcaoCobranca.equals("")) { filtroCobrancaAcao.adicionarParametro(new ComparacaoTexto(FiltroCobrancaAcao.DESCRICAO, descricaoAcaoCobranca)); peloMenosUmParametroInformado = true; } // verifica a existencia do numero de dias de validade da a��o if (numeroDiasValidade != null && !numeroDiasValidade.equals("")) { filtroCobrancaAcao.adicionarParametro(new ComparacaoTexto(FiltroCobrancaAcao.NUMERO_DIAS_VALIDADE, numeroDiasValidade)); peloMenosUmParametroInformado = true; } // verifica a existencia da a��o predecessora if (idAcaoPredecessora != null && !idAcaoPredecessora.equals("")) { filtroCobrancaAcao.adicionarParametro(new ParametroSimples(FiltroCobrancaAcao.COBRANCA_ACAO_PRECEDENTE_ID, idAcaoPredecessora)); peloMenosUmParametroInformado = true; } // verifica a existencia do numero de dias entre a a��o e sua // predecessora if (numeroDiasEntreAcoes != null && !numeroDiasEntreAcoes.equals("")) { filtroCobrancaAcao.adicionarParametro(new ParametroSimples(FiltroCobrancaAcao.NUMERO_DIAS_MINIMO_ACAO_PRECEDENTE, numeroDiasEntreAcoes)); peloMenosUmParametroInformado = true; } // verifica a existencia do tipo do documento a ser gerado if (idTipoDocumentoGerado != null && !idTipoDocumentoGerado.equals("")) { filtroCobrancaAcao.adicionarParametro(new ParametroSimples(FiltroCobrancaAcao.DOCUMENTO_TIPO_ID, idTipoDocumentoGerado)); peloMenosUmParametroInformado = true; } // verifica a existencia da situa��o da liga��o de agua if (idSituacaoLigacaoAgua != null && !idSituacaoLigacaoAgua.equals("")) { filtroCobrancaAcao.adicionarParametro(new ParametroSimples(FiltroCobrancaAcao.LIGACAO_AGUA_SITUACAO_ID, idSituacaoLigacaoAgua)); peloMenosUmParametroInformado = true; } // verifica a existencia da situa��o da liga��o de esgoto if (idSituacaoLigacaoEsgoto != null && !idSituacaoLigacaoEsgoto.equals("")) { filtroCobrancaAcao.adicionarParametro(new ParametroSimples(FiltroCobrancaAcao.LIGACAO_ESGOTO_SITUACAO_ID, idSituacaoLigacaoEsgoto)); peloMenosUmParametroInformado = true; } // pesquisa enter de crit�rio de cobran�a if (idCobrancaCriterio != null && !idCobrancaCriterio.equals("")) { if (descricaoCobrancaCriterio == null || descricaoCobrancaCriterio.equals("")) { FiltroCobrancaCriterio filtroCobrancaCriterio = new FiltroCobrancaCriterio(); filtroCobrancaCriterio.adicionarParametro(new ParametroSimples(FiltroCobrancaCriterio.ID, new Integer(idCobrancaCriterio))); filtroCobrancaCriterio.setCampoOrderBy(FiltroCobrancaCriterio.DESCRICAO_COBRANCA_CRITERIO); Collection colecaoCobrancaCriterio = getControladorUtil().pesquisar(filtroCobrancaCriterio, CobrancaCriterio.class.getName()); if (colecaoCobrancaCriterio != null && !colecaoCobrancaCriterio.isEmpty()) { filtroCobrancaAcao .adicionarParametro(new ParametroSimples(FiltroCobrancaAcao.COBRANCAO_CRITERIO_ID, idCobrancaCriterio)); peloMenosUmParametroInformado = true; } else { // levanta a exce��o para a pr�xima camada throw new ControladorException("atencao.pesquisa_inexistente", null, "Crit�rio de Cobran�a"); } } else { filtroCobrancaAcao.adicionarParametro(new ParametroSimples(FiltroCobrancaAcao.COBRANCAO_CRITERIO_ID, idCobrancaCriterio)); peloMenosUmParametroInformado = true; } } // pesquisa enter de crit�rio de cobran�a if (idServicoTipo != null && !idServicoTipo.equals("")) { if (descricaoServicoTipo == null || descricaoServicoTipo.equals("")) { FiltroServicoTipo filtroServicoTipo = new FiltroServicoTipo(); filtroServicoTipo.adicionarParametro(new ParametroSimples(FiltroServicoTipo.ID, new Integer(idServicoTipo))); filtroServicoTipo.setCampoOrderBy(FiltroServicoTipo.DESCRICAO); Collection colecaoServicoTipo = getControladorUtil().pesquisar(filtroServicoTipo, ServicoTipo.class.getName()); if (colecaoServicoTipo != null && !colecaoServicoTipo.isEmpty()) { filtroCobrancaAcao.adicionarParametro(new ParametroSimples(FiltroCobrancaAcao.SERVICO_TIPO_ID_ACAO_COBRANCA, idServicoTipo)); peloMenosUmParametroInformado = true; } else { // levanta a exce��o para a pr�xima camada throw new ControladorException("atencao.pesquisa_inexistente", null, "Tipo de servi�o"); } } else { filtroCobrancaAcao .adicionarParametro(new ParametroSimples(FiltroCobrancaAcao.SERVICO_TIPO_ID_ACAO_COBRANCA, idServicoTipo)); peloMenosUmParametroInformado = true; } } // verifica a existencia da ordem do cronograma if (ordemCronograma != null && !ordemCronograma.equals("")) { filtroCobrancaAcao.adicionarParametro(new ParametroSimples(FiltroCobrancaAcao.ORDEM_REALIZACAO, ordemCronograma)); peloMenosUmParametroInformado = true; } // verifica a existencia do indicador de comp�e o cronograma if (icCompoeCronograma != null && !icCompoeCronograma.equals("")) { filtroCobrancaAcao.adicionarParametro(new ParametroSimples(FiltroCobrancaAcao.INDICADOR_CRONOGRAMA, icCompoeCronograma)); peloMenosUmParametroInformado = true; } // verifica a existencia do indicador de a��o Obrigat�ria if (icAcaoObrigatoria != null && !icAcaoObrigatoria.equals("")) { filtroCobrancaAcao.adicionarParametro(new ParametroSimples(FiltroCobrancaAcao.INDICADOR_OBRIGATORIEDADE, icAcaoObrigatoria)); peloMenosUmParametroInformado = true; } // verifica a existencia do indicador de repeti��o if (icRepetidaCiclo != null && !icRepetidaCiclo.equals("")) { filtroCobrancaAcao.adicionarParametro(new ParametroSimples(FiltroCobrancaAcao.INDICADOR_REPETICAO, icRepetidaCiclo)); peloMenosUmParametroInformado = true; } // verifica a existencia do indicador de suspens�o de abastecimento if (icSuspensaoAbastecimento != null && !icSuspensaoAbastecimento.equals("")) { filtroCobrancaAcao.adicionarParametro(new ParametroSimples(FiltroCobrancaAcao.INDICADOR_SUSPENSAO_ABASTECIMENTO, icSuspensaoAbastecimento)); peloMenosUmParametroInformado = true; } // verifica a existencia do indicador de cobran�a deb a cobrar if (icDebitosACobrar != null && !icDebitosACobrar.equals("")) { filtroCobrancaAcao .adicionarParametro(new ParametroSimples(FiltroCobrancaAcao.INDICADOR_COBRANCA_DEB_A_COBRAR, icDebitosACobrar)); peloMenosUmParametroInformado = true; } // verifica a existencia do indicador de acrescimos por impontualidade if (icAcrescimosImpontualidade != null && !icAcrescimosImpontualidade.equals("")) { filtroCobrancaAcao.adicionarParametro(new ParametroSimples(FiltroCobrancaAcao.INDICADOR_ACRESCIMO_IMPONTUALIDADE, icAcrescimosImpontualidade)); peloMenosUmParametroInformado = true; } // verifica a existencia do indicador de gera��o de taxa if (icGeraTaxa != null && !icGeraTaxa.equals("")) { filtroCobrancaAcao.adicionarParametro(new ParametroSimples(FiltroCobrancaAcao.INDICADOR_GERACAO_TAXA, icGeraTaxa)); peloMenosUmParametroInformado = true; } // verifica a existencia do indicador de emitir boletim de cadastro if (icEmitirBoletimCadastro != null && !icEmitirBoletimCadastro.equals("")) { filtroCobrancaAcao.adicionarParametro(new ParametroSimples(FiltroCobrancaAcao.INDICADOR_BOLETIM, icEmitirBoletimCadastro)); peloMenosUmParametroInformado = true; } // verifica a existencia do indicador de comp�e o cronograma if (icImoveisSemDebitos != null && !icImoveisSemDebitos.equals("")) { filtroCobrancaAcao.adicionarParametro(new ParametroSimples(FiltroCobrancaAcao.INDICADOR_DEBITO, icImoveisSemDebitos)); peloMenosUmParametroInformado = true; } // verifica a existencia do indicador de Metas no Cronograma if (icMetasCronograma != null && !icMetasCronograma.equals("")) { filtroCobrancaAcao.adicionarParametro(new ParametroSimples(FiltroCobrancaAcao.INDICADOR_METAS_CRONOGRAMA, icMetasCronograma)); peloMenosUmParametroInformado = true; } // verifica a existencia do indicador de Ordenamento no Cronograma if (icOrdenamentoCronograma != null && !icOrdenamentoCronograma.equals("")) { filtroCobrancaAcao.adicionarParametro(new ParametroSimples(FiltroCobrancaAcao.INDICADOR_ORDENAMENTO_CRONOGRAMA, icOrdenamentoCronograma)); peloMenosUmParametroInformado = true; } // verifica a existencia do indicador de Ordenamento nas Eventuais if (icOrdenamentoEventual != null && !icOrdenamentoEventual.equals("")) { filtroCobrancaAcao.adicionarParametro(new ParametroSimples(FiltroCobrancaAcao.INDICADOR_ORDENAMENTO_EVENTUAL, icOrdenamentoEventual)); peloMenosUmParametroInformado = true; } // verifica a existencia do indicador de Situa��o de D�bito Interfere na // Situa��o da A��o if (icDebitoInterfereAcao != null && !icDebitoInterfereAcao.equals("")) { filtroCobrancaAcao.adicionarParametro(new ParametroSimples(FiltroCobrancaAcao.INDICADOR_DEBITO_INTERFERE_ACAO, icDebitoInterfereAcao)); peloMenosUmParametroInformado = true; } // verifica a existencia do Limite de Dias para Remunera��o de Terceiros if (numeroDiasRemuneracaoTerceiro != null && !numeroDiasRemuneracaoTerceiro.equals("")) { filtroCobrancaAcao.adicionarParametro(new ParametroSimples(FiltroCobrancaAcao.NUMERO_DIAS_REMUNERACAO_TERCEIRO, numeroDiasRemuneracaoTerceiro)); peloMenosUmParametroInformado = true; } if ((icUso != null && !icUso.equals("" + ConstantesSistema.NUMERO_NAO_INFORMADO)) && (!icUso.equals("3"))) { filtroCobrancaAcao.adicionarParametro(new ParametroSimples(FiltroCobrancaAcao.INDICADOR_USO, icUso)); peloMenosUmParametroInformado = true; } if (icCreditosARealizar != null && !icCreditosARealizar.equals("")) { filtroCobrancaAcao .adicionarParametro(new ParametroSimples(FiltroCobrancaAcao.INDICADOR_CREDITO_A_REALIZAR, icCreditosARealizar)); peloMenosUmParametroInformado = true; } if (icNotasPromissoria != null && !icNotasPromissoria.equals("")) { filtroCobrancaAcao.adicionarParametro(new ParametroSimples(FiltroCobrancaAcao.INDICADOR_NOTAS_PROMISSORIA, icNotasPromissoria)); peloMenosUmParametroInformado = true; } // Erro caso o usu�rio mandou filtrar sem nenhum par�metro if (!peloMenosUmParametroInformado) { throw new ControladorException("atencao.filtro.nenhum_parametro_informado"); } return filtroCobrancaAcao; } // Fl�vio Cordeiro // caso de uso [UC0543] Associar Conjunto de Rotas a Criterio de Cobranca public Collection pesquisarRotasIntervaloUnidadeNegocio(String idUnidadeNegocio, String idCobrancaAcao) throws ControladorException { Collection retorno = null; try { retorno = repositorioCobranca.pesquisarRotasIntervaloUnidadeNegocio(idUnidadeNegocio, idCobrancaAcao); } catch (ErroRepositorioException e) { e.printStackTrace(); } return retorno; } // caso de uso [UC0543] Associar Conjunto de Rotas a Criterio de Cobranca public Collection pesquisarRotasIntervaloGrupo(String idGrupoCobranca, String idCobrancaAcao) throws ControladorException { Collection retorno = null; try { retorno = repositorioCobranca.pesquisarRotasIntervaloGrupo(idGrupoCobranca, idCobrancaAcao); } catch (ErroRepositorioException e) { e.printStackTrace(); } return retorno; } // Fl�vio Cordeiro // caso de uso [UC0543] Associar Conjunto de Rotas a Criterio de Cobranca public Collection pesquisarRotasIntervaloGerencia(String idGerenciaRegional, String idCobrancaAcao) throws ControladorException { Collection retorno = null; try { retorno = repositorioCobranca.pesquisarRotasIntervaloGerencia(idGerenciaRegional, idCobrancaAcao); } catch (ErroRepositorioException e) { e.printStackTrace(); } return retorno; } // Fl�vio Cordeiro // caso de uso [UC0543] Associar Conjunto de Rotas a Criterio de Cobranca public Collection pesquisarRotasIntervaloLocalidade(String idLocalidadeInicial, String idLocalidadeFinal, String idCobrancaAcao) throws ControladorException { Collection retorno = null; try { retorno = repositorioCobranca.pesquisarRotasIntervaloLocalidade(idLocalidadeInicial, idLocalidadeFinal, idCobrancaAcao); } catch (ErroRepositorioException e) { e.printStackTrace(); } return retorno; } // Fl�vio Cordeiro // caso de uso [UC0543] Associar Conjunto de Rotas a Criterio de Cobranca public Collection pesquisarRotasIntervaloSetor(String codigoSetorComercialInicial, String codigoSetorComercialFinal, String idLocalidade, String idCobrancaAcao) throws ControladorException { Collection retorno = null; try { retorno = repositorioCobranca.pesquisarRotasIntervaloSetor(codigoSetorComercialInicial, codigoSetorComercialFinal, idLocalidade, idCobrancaAcao); } catch (ErroRepositorioException e) { e.printStackTrace(); } return retorno; } // Fl�vio Cordeiro // caso de uso [UC0543] Associar Conjunto de Rotas a Criterio de Cobranca public Collection pesquisarRotas(String codigoSetorComercial, String rotaInicial, String rotaFinal, String idLocalidade, String idCobrancaAcao) throws ControladorException { Collection retorno = null; try { retorno = repositorioCobranca.pesquisarRotas(codigoSetorComercial, rotaInicial, rotaFinal, idLocalidade, idCobrancaAcao); } catch (ErroRepositorioException e) { e.printStackTrace(); } return retorno; } // caso de uso [UC0543] Associar Conjunto de Rotas a Criterio de Cobranca public Collection pesquisarRotasPorCobrancaAcao(String idCobrancaAcao) throws ControladorException { Collection retorno = null; try { retorno = repositorioCobranca.pesquisarRotasPorCobrancaAcao(idCobrancaAcao); } catch (ErroRepositorioException e) { e.printStackTrace(); } return retorno; } /** * [UC0645] Manter A��o de Cobran�a * * @author S�vio Luiz * @created 06/11/2007 * * @param idImovel * @return * @throws ErroRepositorioException * @throws ErroRepositorioException */ public void atualizarAcaoCobranca(CobrancaAcao cobrancaAcao, CobrancaAcaoHelper cobrancaAcaoHelper) throws ControladorException, ErroRepositorioException { // verifica a existencia da descri��o da a��o de cobran�a if (cobrancaAcaoHelper.getDescricaoCobrancaAcao() != null && !cobrancaAcaoHelper.getDescricaoCobrancaAcao().equals("")) { cobrancaAcao.setDescricaoCobrancaAcao(cobrancaAcaoHelper.getDescricaoCobrancaAcao()); } else { // levanta a exce��o para a pr�xima camada throw new ControladorException("atencao.required", null, "Descri��o da A��o de Cobran�a"); } // verifica a existencia do numero de dias de validade da a��o if (cobrancaAcaoHelper.getNumeroDiasValidade() != null && !cobrancaAcaoHelper.getNumeroDiasValidade().equals("")) { cobrancaAcao.setNumeroDiasValidade(new Short(cobrancaAcaoHelper.getNumeroDiasValidade())); } else { // levanta a exce��o para a pr�xima camada throw new ControladorException("atencao.required", null, "Numero de Dias de Validade da A��o"); } // verifica a existencia da ordem do cronograma if (cobrancaAcaoHelper.getOrdemRealizacao() != null && !cobrancaAcaoHelper.getOrdemRealizacao().equals("")) { // [FS0002] - Verificar exist�ncia de a��o com mesma ordem FiltroCobrancaAcao filtroCobrancaAcao = new FiltroCobrancaAcao(); filtroCobrancaAcao.adicionarParametro(new ParametroSimples(FiltroCobrancaAcao.ORDEM_REALIZACAO, cobrancaAcaoHelper .getOrdemRealizacao())); filtroCobrancaAcao.adicionarParametro(new ParametroSimplesDiferenteDe(FiltroCobrancaAcao.ID, cobrancaAcao.getId())); Collection colecaoCobarncaAcao = getControladorUtil().pesquisar(filtroCobrancaAcao, CobrancaAcao.class.getName()); if (colecaoCobarncaAcao != null && !colecaoCobarncaAcao.isEmpty()) { CobrancaAcao cobAcao = (CobrancaAcao) Util.retonarObjetoDeColecao(colecaoCobarncaAcao); // // levanta a exce��o para a pr�xima camada throw new ControladorException("atencao.acao_cobranca_mesma_ordem", null, "" + cobAcao.getDescricaoCobrancaAcao()); } else { cobrancaAcao.setOrdemRealizacao(new Short(cobrancaAcaoHelper.getOrdemRealizacao())); } } // verifica a existencia da a��o predecessora if (cobrancaAcaoHelper.getIdCobrancaAcaoPredecessora() != null && !cobrancaAcaoHelper.getIdCobrancaAcaoPredecessora().equals("")) { // [FS0008] - Verificar se o numero da ordem � menor que o da // predecessora FiltroCobrancaAcao filtroCobrancaAcao = new FiltroCobrancaAcao(); filtroCobrancaAcao.adicionarParametro(new ParametroSimples(FiltroCobrancaAcao.ID, cobrancaAcaoHelper .getIdCobrancaAcaoPredecessora())); Collection colecaoCobarncaAcaoPredecessora = getControladorUtil().pesquisar(filtroCobrancaAcao, CobrancaAcao.class.getName()); if (colecaoCobarncaAcaoPredecessora != null && !colecaoCobarncaAcaoPredecessora.isEmpty()) { CobrancaAcao cobrancaAcaoPredecessoraPesquisa = null; cobrancaAcaoPredecessoraPesquisa = (CobrancaAcao) Util.retonarObjetoDeColecao(colecaoCobarncaAcaoPredecessora); if (cobrancaAcaoPredecessoraPesquisa.getOrdemRealizacao() != null && cobrancaAcaoPredecessoraPesquisa.getOrdemRealizacao() >= new Short(cobrancaAcaoHelper.getOrdemRealizacao())) { // levanta a exce��o para a pr�xima camada throw new ControladorException("atencao.acao_cobranca_ordem_realizacao_predecessora"); } } CobrancaAcao cobrancaAcaoPredecessora = new CobrancaAcao(); cobrancaAcaoPredecessora.setId(new Integer(cobrancaAcaoHelper.getIdCobrancaAcaoPredecessora())); cobrancaAcao.setCobrancaAcaoPredecessora(cobrancaAcaoPredecessora); } else { cobrancaAcao.setCobrancaAcaoPredecessora(null); } // verifica a existencia do numero de dias entre a a��o e sua // predecessora if (cobrancaAcaoHelper.getNumeroDiasMinimoAcaoPrecedente() != null && !cobrancaAcaoHelper.getNumeroDiasMinimoAcaoPrecedente().equals("")) { cobrancaAcao.setNumeroDiasMinimoAcaoPrecedente(new Short(cobrancaAcaoHelper.getNumeroDiasMinimoAcaoPrecedente())); } else { cobrancaAcao.setNumeroDiasMinimoAcaoPrecedente(null); } // verifica a existencia do tipo do documento a ser gerado if (cobrancaAcaoHelper.getIdDocumentoTipo() != null && !cobrancaAcaoHelper.getIdDocumentoTipo().equals("")) { DocumentoTipo documentoTipo = new DocumentoTipo(); documentoTipo.setId(new Integer(cobrancaAcaoHelper.getIdDocumentoTipo())); cobrancaAcao.setDocumentoTipo(documentoTipo); } else { // levanta a exce��o para a pr�xima camada throw new ControladorException("atencao.required", null, "Tipo de Documento a ser Gerado"); } // verifica a existencia da situa��o da liga��o de agua LigacaoAguaSituacao ligacaoAguaSituacao = new LigacaoAguaSituacao(); if (cobrancaAcaoHelper.getIdLigacaoAguaSituacao() != null && !cobrancaAcaoHelper.getIdLigacaoAguaSituacao().equals("")) { ligacaoAguaSituacao.setId(new Integer(cobrancaAcaoHelper.getIdLigacaoAguaSituacao())); cobrancaAcao.setLigacaoAguaSituacao(ligacaoAguaSituacao); } else { cobrancaAcao.setLigacaoAguaSituacao(null); } // verifica a existencia da situa��o da liga��o de esgoto LigacaoEsgotoSituacao ligacaoEsgotoSituacao = new LigacaoEsgotoSituacao(); if (cobrancaAcaoHelper.getIdLigacaoEsgotoSituacao() != null && !cobrancaAcaoHelper.getIdLigacaoEsgotoSituacao().equals("")) { ligacaoEsgotoSituacao.setId(new Integer(cobrancaAcaoHelper.getIdLigacaoEsgotoSituacao())); cobrancaAcao.setLigacaoEsgotoSituacao(ligacaoEsgotoSituacao); } else { cobrancaAcao.setLigacaoEsgotoSituacao(null); } // pesquisa enter de crit�rio de cobran�a if (cobrancaAcaoHelper.getIdCobrancaCriterio() != null && !cobrancaAcaoHelper.getIdCobrancaCriterio().equals("")) { if (cobrancaAcaoHelper.getDescricaoCobrancaCriterio() == null || cobrancaAcaoHelper.getDescricaoCobrancaCriterio().equals("")) { FiltroCobrancaCriterio filtroCobrancaCriterio = new FiltroCobrancaCriterio(); filtroCobrancaCriterio.adicionarParametro(new ParametroSimples(FiltroCobrancaCriterio.ID, new Integer(cobrancaAcaoHelper .getIdCobrancaCriterio()))); filtroCobrancaCriterio.setCampoOrderBy(FiltroCobrancaCriterio.DESCRICAO_COBRANCA_CRITERIO); Collection colecaoCobrancaCriterio = getControladorUtil().pesquisar(filtroCobrancaCriterio, CobrancaCriterio.class.getName()); if (colecaoCobrancaCriterio != null && !colecaoCobrancaCriterio.isEmpty()) { CobrancaCriterio cobrancaCriterio = (CobrancaCriterio) Util.retonarObjetoDeColecao(colecaoCobrancaCriterio); cobrancaAcao.setCobrancaCriterio(cobrancaCriterio); } else { // levanta a exce��o para a pr�xima camada throw new ControladorException("atencao.pesquisa_inexistente", null, "Crit�rio de Cobran�a"); } } else { CobrancaCriterio cobrancaCriterio = new CobrancaCriterio(); cobrancaCriterio.setId(new Integer(cobrancaAcaoHelper.getIdCobrancaCriterio())); cobrancaAcao.setCobrancaCriterio(cobrancaCriterio); } } else { // levanta a exce��o para a pr�xima camada throw new ControladorException("atencao.required", null, "Crit�rio de Cobran�a"); } // pesquisa enter de crit�rio de cobran�a ServicoTipo servicoTipo = new ServicoTipo(); if (cobrancaAcaoHelper.getIdServicoTipo() != null && !cobrancaAcaoHelper.getIdServicoTipo().equals("")) { if (cobrancaAcaoHelper.getDescricaoServicoTipo() == null || cobrancaAcaoHelper.getDescricaoServicoTipo().equals("")) { FiltroServicoTipo filtroServicoTipo = new FiltroServicoTipo(); filtroServicoTipo.adicionarParametro(new ParametroSimples(FiltroServicoTipo.ID, new Integer(cobrancaAcaoHelper .getIdServicoTipo()))); filtroServicoTipo.setCampoOrderBy(FiltroServicoTipo.DESCRICAO); Collection colecaoServicoTipo = getControladorUtil().pesquisar(filtroServicoTipo, ServicoTipo.class.getName()); if (colecaoServicoTipo != null && !colecaoServicoTipo.isEmpty()) { servicoTipo = (ServicoTipo) Util.retonarObjetoDeColecao(colecaoServicoTipo); cobrancaAcao.setServicoTipo(servicoTipo); } else { // levanta a exce��o para a pr�xima camada throw new ControladorException("atencao.pesquisa_inexistente", null, "Tipo de servi�o"); } } else { servicoTipo.setId(new Integer(cobrancaAcaoHelper.getIdServicoTipo())); cobrancaAcao.setServicoTipo(servicoTipo); } } else { cobrancaAcao.setServicoTipo(null); } // verifica a existencia do indicador de comp�e o cronograma if (cobrancaAcaoHelper.getIndicadorCronograma() != null && !cobrancaAcaoHelper.getIndicadorCronograma().equals("")) { cobrancaAcao.setIndicadorCronograma(new Short(cobrancaAcaoHelper.getIndicadorCronograma())); } else { // levanta a exce��o para a pr�xima camada throw new ControladorException("atencao.required", null, "Comp�e Cronograma"); } // verifica a existencia do indicador de a��o Obrigat�ria if (cobrancaAcaoHelper.getIndicadorObrigatoriedade() != null && !cobrancaAcaoHelper.getIndicadorObrigatoriedade().equals("")) { if (new Short(cobrancaAcaoHelper.getIndicadorObrigatoriedade()).equals(CobrancaAcao.INDICADOR_SIM) && new Short(cobrancaAcaoHelper.getIndicadorCronograma()).equals(CobrancaAcao.INDICADOR_NAO)) { // levanta a exce��o para a pr�xima camada throw new ControladorException("atencao.acao_cobranca_compor_cronograma"); } else { cobrancaAcao.setIndicadorObrigatoriedade(new Short(cobrancaAcaoHelper.getIndicadorObrigatoriedade())); } } else { // levanta a exce��o para a pr�xima camada throw new ControladorException("atencao.required", null, "A��o Obrigat�ria"); } // verifica a existencia do indicador de repeti��o if (cobrancaAcaoHelper.getIndicadorRepeticao() != null && !cobrancaAcaoHelper.getIndicadorRepeticao().equals("")) { cobrancaAcao.setIndicadorRepeticao(new Short(cobrancaAcaoHelper.getIndicadorRepeticao())); } else { // levanta a exce��o para a pr�xima camada throw new ControladorException("atencao.required", null, "Pode ser Repetida no Ciclo"); } // verifica a existencia do indicador de suspens�o de abastecimento if (cobrancaAcaoHelper.getIndicadorSuspensaoAbastecimento() != null && !cobrancaAcaoHelper.getIndicadorSuspensaoAbastecimento().equals("")) { cobrancaAcao.setIndicadorSuspensaoAbastecimento(new Short(cobrancaAcaoHelper.getIndicadorSuspensaoAbastecimento())); } else { // levanta a exce��o para a pr�xima camada throw new ControladorException("atencao.required", null, "Provoca Suspens�o no Abastecimento"); } // verifica a existencia do indicador de cobran�a deb a cobrar if (cobrancaAcaoHelper.getIndicadorCobrancaDebACobrar() != null && !cobrancaAcaoHelper.getIndicadorCobrancaDebACobrar().equals("")) { cobrancaAcao.setIndicadorCobrancaDebACobrar(new Short(cobrancaAcaoHelper.getIndicadorCobrancaDebACobrar())); } else { // levanta a exce��o para a pr�xima camada throw new ControladorException("atencao.required", null, "Considera D�bitos a Cobrar"); } // verifica a existencia do indicador de acrescimos por impontualidade if (cobrancaAcaoHelper.getIndicadorAcrescimoImpontualidade() != null && !cobrancaAcaoHelper.getIndicadorAcrescimoImpontualidade().equals("")) { cobrancaAcao.setIndicadorAcrescimoImpontualidade(new Short(cobrancaAcaoHelper.getIndicadorAcrescimoImpontualidade())); } else { // levanta a exce��o para a pr�xima camada throw new ControladorException("atencao.required", null, "Considera Acr�scimos por Impontualidade"); } // verifica a existencia do indicador de gera��o de taxa if (cobrancaAcaoHelper.getIndicadorGeracaoTaxa() != null && !cobrancaAcaoHelper.getIndicadorGeracaoTaxa().equals("")) { cobrancaAcao.setIndicadorGeracaoTaxa(new Short(cobrancaAcaoHelper.getIndicadorGeracaoTaxa())); } else { // levanta a exce��o para a pr�xima camada throw new ControladorException("atencao.required", null, "Gera Taxa"); } // verifica a existencia do indicador de emitir boletim de cadastro if (cobrancaAcaoHelper.getIndicadorBoletim() != null && !cobrancaAcaoHelper.getIndicadorBoletim().equals("")) { cobrancaAcao.setIndicadorBoletim(new Short(cobrancaAcaoHelper.getIndicadorBoletim())); } else { // levanta a exce��o para a pr�xima camada throw new ControladorException("atencao.required", null, "Pode Emitir Boletins de Cadastro"); } // verifica a existencia do indicador de comp�e o cronograma if (cobrancaAcaoHelper.getIndicadorDebito() != null && !cobrancaAcaoHelper.getIndicadorDebito().equals("")) { cobrancaAcao.setIndicadorDebito(new Short(cobrancaAcaoHelper.getIndicadorDebito())); } else { // levanta a exce��o para a pr�xima camada throw new ControladorException("atencao.required", null, "Pode ser Executada para Im�veis sem D�bito"); } // verifica a existencia dnumero de dias de vencimento if (cobrancaAcaoHelper.getNumeroDiasVencimento() != null && !cobrancaAcaoHelper.getNumeroDiasVencimento().equals("")) { cobrancaAcao.setNumeroDiasVencimento(new Integer(cobrancaAcaoHelper.getNumeroDiasVencimento())); } else { cobrancaAcao.setNumeroDiasVencimento(null); } // } else { // // levanta a exce��o para a pr�xima camada // throw new ControladorException("atencao.required", null, // "Pode ser Executada para Im�veis sem D�bito"); // } // verifica a existencia dnumero de dias de vencimento if (cobrancaAcaoHelper.getIndicadorUso() != null && !cobrancaAcaoHelper.getIndicadorUso().equals("")) { cobrancaAcao.setIndicadorUso(new Short(cobrancaAcaoHelper.getIndicadorUso())); } // verifica a existencia do indicador de metasCronograma if (cobrancaAcaoHelper.getIndicadorMetasCronograma() != null && !cobrancaAcaoHelper.getIndicadorMetasCronograma().equals("")) { cobrancaAcao.setIndicadorMetasCronograma(new Integer(cobrancaAcaoHelper.getIndicadorMetasCronograma())); } else { // levanta a exce��o para a pr�xima camada throw new ControladorException("atencao.required", null, "Usa Metas no Cronograma"); } // verifica a existencia do indicador de ordenamentoCronograma if (cobrancaAcaoHelper.getIndicadorOrdenamentoCronograma() != null && !cobrancaAcaoHelper.getIndicadorOrdenamentoCronograma().equals("")) { cobrancaAcao.setIndicadorOrdenamentoCronograma(new Integer(cobrancaAcaoHelper.getIndicadorOrdenamentoCronograma())); } else { // levanta a exce��o para a pr�xima camada throw new ControladorException("atencao.required", null, "Usa Ordenamento: No Cronograma"); } // verifica a existencia do indicador de ordenamentoEventual if (cobrancaAcaoHelper.getIndicadorOrdenamentoEventual() != null && !cobrancaAcaoHelper.getIndicadorOrdenamentoEventual().equals("")) { cobrancaAcao.setIndicadorOrdenamentoEventual(new Integer(cobrancaAcaoHelper.getIndicadorOrdenamentoEventual())); } else { // levanta a exce��o para a pr�xima camada throw new ControladorException("atencao.required", null, "Usa Ordenamento: Nas Eventuais"); } // verifica a existencia do indicador de debitoInterfereAcao if (cobrancaAcaoHelper.getIndicadorDebitoInterfereAcao() != null && !cobrancaAcaoHelper.getIndicadorDebitoInterfereAcao().equals("")) { cobrancaAcao.setIndicadorDebitoInterfereAcao(new Integer(cobrancaAcaoHelper.getIndicadorDebitoInterfereAcao())); } else { // levanta a exce��o para a pr�xima camada throw new ControladorException("atencao.required", null, "Situa��o do D�bito Interfere na Situa��o da A��o"); } // verifica a existencia numero de diasRemuneracaoTerceiro if (cobrancaAcaoHelper.getNumeroDiasRemuneracaoTerceiro() != null && !cobrancaAcaoHelper.getNumeroDiasRemuneracaoTerceiro().equals("")) { cobrancaAcao.setNumeroDiasRemuneracaoTerceiro(new Integer(cobrancaAcaoHelper.getNumeroDiasRemuneracaoTerceiro())); } if (cobrancaAcaoHelper.getIndicadorCreditosARealizar() != null && !cobrancaAcaoHelper.getIndicadorCreditosARealizar().equals("")) { cobrancaAcao.setIndicadorCreditosARealizar(new Short(cobrancaAcaoHelper.getIndicadorCreditosARealizar())); } if (cobrancaAcaoHelper.getIndicadorNotasPromissoria() != null && !cobrancaAcaoHelper.getIndicadorNotasPromissoria().equals("")) { cobrancaAcao.setIndicadorNotasPromissoria(new Short(cobrancaAcaoHelper.getIndicadorNotasPromissoria())); } if (cobrancaAcaoHelper.getIndicadorOrdenarMaiorValor() != null && !cobrancaAcaoHelper.getIndicadorOrdenarMaiorValor().equals("")) { cobrancaAcao.setIndicadorOrdenarMaiorValor(new Short(cobrancaAcaoHelper.getIndicadorOrdenarMaiorValor())); } if (cobrancaAcaoHelper.getIndicadorValidarItem() != null && !cobrancaAcaoHelper.getIndicadorValidarItem().equals("")) { cobrancaAcao.setIndicadorValidarItem(new Short(cobrancaAcaoHelper.getIndicadorValidarItem())); } cobrancaAcao.setIndicadorUso(ConstantesSistema.INDICADOR_USO_ATIVO); // ------------ REGISTRAR TRANSA��O---------------------------- RegistradorOperacao registradorOperacao = new RegistradorOperacao(Operacao.OPERACAO_COBRANCA_ACAO_ATUALIZAR, cobrancaAcao.getId(), cobrancaAcao.getId(), new UsuarioAcaoUsuarioHelper(cobrancaAcaoHelper.getUsuarioLogado(), UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO)); registradorOperacao.registrarOperacao(cobrancaAcao); // RegistradorOperacao registradorOperacao = new RegistradorOperacao( // Operacao.OPERACAO_COBRANCA_ACAO_INSERIR, // new UsuarioAcaoUsuarioHelper(cobrancaAcaoHelper.getUsuarioLogado(), // UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO)); // // Operacao operacao = new Operacao(); // operacao.setId(Operacao.OPERACAO_COBRANCA_ACAO_ATUALIZAR); // // OperacaoEfetuada operacaoEfetuada = new OperacaoEfetuada(); // operacaoEfetuada.setOperacao(operacao); // // cobrancaAcao.setOperacaoEfetuada(operacaoEfetuada); // cobrancaAcao.adicionarUsuario(cobrancaAcaoHelper.getUsuarioLogado(), // UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO); // registradorOperacao.registrarOperacao(cobrancaAcao); // ------------ REGISTRAR TRANSA��O---------------------------- CobrancaAcao cobrancaAcaoNaBase = null; FiltroCobrancaAcao filtroCobrancaAcao = new FiltroCobrancaAcao(); filtroCobrancaAcao.adicionarParametro(new ParametroSimples(FiltroCobrancaAcao.ID, cobrancaAcao.getId())); Collection collectionCobrancaAcao = getControladorUtil().pesquisar(filtroCobrancaAcao, CobrancaAcao.class.getName()); // Caso a pesquisa tenha retornado o crit�rio de cobran�a if (collectionCobrancaAcao != null && !collectionCobrancaAcao.isEmpty()) { // Recupera da cole��o a rota que vai ser atualizada cobrancaAcaoNaBase = (CobrancaAcao) Util.retonarObjetoDeColecao(collectionCobrancaAcao); } // Verificar se o logradouro j� foi atualizado por outro usu�rio // durante // esta atualiza��o if (cobrancaAcaoNaBase == null || cobrancaAcaoNaBase.getUltimaAlteracao().after(cobrancaAcao.getUltimaAlteracao())) { sessionContext.setRollbackOnly(); throw new ControladorException("atencao.atualizacao.timestamp"); } cobrancaAcao.setUltimaAlteracao(new Date()); getControladorUtil().atualizar(cobrancaAcao); } /** * [UC0067] Inserir Comando Negaiva��o * * @autor: Ana Maria * * [FS0019] Verificar exist�ncia de Parcelamento * * @param idImovel * @return Cliente * @throws ErroRepositorioException */ public Cliente pesquisarClienteResponsavelParcelamento(Integer idImovel) throws ControladorException { try { return repositorioCobranca.pesquisarClienteResponsavelParcelamento(idImovel); } catch (ErroRepositorioException ex) { sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", ex); } } /** * [UC0543] Associar Conjunto de Rotas a Crit�rio de Cobran�a * * @author Raphael Rossiter, Anderson Italo * @date 24/01/2008, 04/06/2009 Adicionado registro de transa��o CRC1946 * * @param * @throws ControladorException */ public void associarConjuntoRotasCriterioCobranca(Collection colecaoRotas, Usuario usuarioLogado, RotaAcaoCriterioHelper rotaAcaoCriterioHelper) throws ControladorException { if (colecaoRotas != null && !colecaoRotas.isEmpty()) { Iterator iterator = colecaoRotas.iterator(); Integer id = null; Rota rota = null; CobrancaAcao cobrancaAcao = null; CobrancaCriterio cobrancaCriterio = null; RotaAcaoCriterio rotaAcaoCriterio = null; // ------------ REGISTRAR TRANSA��O---------------------------- UsuarioAcao usuarioAcao = UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO; UsuarioAcaoUsuarioHelper usuarioAcaoUsuarioHelper = new UsuarioAcaoUsuarioHelper(usuarioLogado, usuarioAcao); OperacaoEfetuada operacaoEfetuada = new OperacaoEfetuada(); Operacao operacao = new Operacao(); operacao.setId(Operacao.OPERACAO_ASSOCIAR_CONJUNTO_ROTAS_CRITERIO_COBRANCA); operacaoEfetuada.setOperacao(operacao); cobrancaAcao = new CobrancaAcao(); cobrancaAcao.setId(new Integer(rotaAcaoCriterioHelper.getCobrancaAcao().getId())); cobrancaAcao.setDescricaoCobrancaAcao(Interceptador.consultarDescricao(cobrancaAcao)); rotaAcaoCriterioHelper.setCobrancaAcao(cobrancaAcao); cobrancaCriterio = new CobrancaCriterio(); cobrancaCriterio.setId(new Integer(rotaAcaoCriterioHelper.getCobrancaCriterio().getId())); cobrancaCriterio.setDescricaoCobrancaCriterio(Interceptador.consultarDescricao(cobrancaCriterio)); rotaAcaoCriterioHelper.setCobrancaCriterio(cobrancaCriterio); operacaoEfetuada.preencherDadosAdicionais(rotaAcaoCriterioHelper); operacaoEfetuada.setArgumentoValor(new Integer(rotaAcaoCriterioHelper.getCobrancaAcao().getId())); getControladorTransacao().processaRegistroOperacaoObjetohelper(usuarioAcaoUsuarioHelper, AlteracaoTipo.INCLUSAO, rotaAcaoCriterioHelper, operacaoEfetuada, RotaAcaoCriterioHelper.TABELA_ID); // ------------ REGISTRAR TRANSA��O---------------------------- cobrancaAcao = null; cobrancaCriterio = null; while (iterator.hasNext()) { id = (Integer) iterator.next(); // ----- rota = new Rota(); rota.setId(id); cobrancaAcao = new CobrancaAcao(); cobrancaAcao.setId(rotaAcaoCriterioHelper.getCobrancaAcao().getId()); cobrancaCriterio = new CobrancaCriterio(); cobrancaCriterio.setId(rotaAcaoCriterioHelper.getCobrancaCriterio().getId()); // ----- rotaAcaoCriterio = new RotaAcaoCriterio(); rotaAcaoCriterio.setRota(rota); rotaAcaoCriterio.setCobrancaAcao(cobrancaAcao); rotaAcaoCriterio.setCobrancaCriterio(cobrancaCriterio); rotaAcaoCriterio.setUltimaAlteracao(new Date()); RotaAcaoCriterioPK rotaAcaoCriterioPK = new RotaAcaoCriterioPK(); rotaAcaoCriterioPK.setRotaId(rota.getId()); rotaAcaoCriterioPK.setCobrancaAcaoId(cobrancaAcao.getId()); rotaAcaoCriterio.setComp_id(rotaAcaoCriterioPK); this.getControladorUtil().inserir(rotaAcaoCriterio); } } else { throw new ControladorException("atencao.naocadastrado", null, "rota sem associa��o"); } } /** * [UC0737] Atualiza Quantdade de Parcela Paga Consecutiva e Parcela B�nus * * Retorna dados dos parcelamentos com RD = 8 que estejam com situa��o * normal e que n�o exista outro parcelamento com data posterior * * @author Vivianne Sousa * @date 31/01/2008 * * @return Collection retorno * @throws ErroRepositorioException */ public Collection pesquisarParcelamentoRDEspecial(Integer situacaoParcelamento, Integer idLocalidade) throws ControladorException { try { Collection colecaoRetorno = null; Collection colecaoParcelamento = repositorioCobranca.pesquisarParcelamentoRDEspecial(situacaoParcelamento, idLocalidade); if (colecaoParcelamento != null && !colecaoParcelamento.isEmpty()) { Iterator iteratorColecaoParcelamento = colecaoParcelamento.iterator(); colecaoRetorno = new ArrayList(); while (iteratorColecaoParcelamento.hasNext()) { Object[] colecaoParcelamentoArray = (Object[]) iteratorColecaoParcelamento.next(); Parcelamento parcelamento = new Parcelamento(); Imovel imovel = new Imovel(); if (colecaoParcelamentoArray[0] != null) { parcelamento.setId((Integer) colecaoParcelamentoArray[0]); } if (colecaoParcelamentoArray[1] != null) { parcelamento.setParcelamento((Date) colecaoParcelamentoArray[1]); } if (colecaoParcelamentoArray[2] != null) { parcelamento.setNumeroPrestacoes((Short) colecaoParcelamentoArray[2]); } if (colecaoParcelamentoArray[3] != null) { imovel.setId((Integer) colecaoParcelamentoArray[3]); parcelamento.setImovel(imovel); } if (colecaoParcelamentoArray[4] != null) { parcelamento.setNumeroParcelasPagasConsecutivas((Short) colecaoParcelamentoArray[4]); } colecaoRetorno.add(parcelamento); } } return colecaoRetorno; } catch (ErroRepositorioException ex) { sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", ex); } } /** * [UC0737] Atualiza Quantidade de Parcela Paga Consecutiva e Parcela B�nus * * @author Vivianne Sousa * @created 07/02/2008 * * @param idParcelamento * @exception ErroRepositorioException * Repositorio Exception */ public void atualizarNumeroParcelasPagasConsecutivasParcelamento(Integer idParcelamento, Short numeroParcelas) throws ControladorException { try { repositorioCobranca.atualizarNumeroParcelasPagasConsecutivasParcelamento(idParcelamento, numeroParcelas); } catch (ErroRepositorioException ex) { sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", ex); } } /** * Informa as unidades de neg�cio testemunha * * [UC0796] Informar Unidade Neg�cio Testemunha * * @author Rafael Corr�a * @param usuarioLogado * @date 19/05/2008 * */ public void informarUnidadeOrganizacionalTestemunha( Collection<UnidadeOrganizacionalTestemunha> colecaoUnidadeOrganizacionalTestemunhaAdicionadas, Collection<UnidadeOrganizacionalTestemunha> colecaoUnidadeOrganizacionalTestemunhaRemovidas, Usuario usuarioLogado) throws ControladorException { // ------------ REGISTRAR TRANSA��O---------------------------- RegistradorOperacao registradorOperacao = new RegistradorOperacao(Operacao.OPERACAO_INFORMAR_UNIDADE_NEGOCIO_TESTEMUNHA, new UsuarioAcaoUsuarioHelper(usuarioLogado, UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO)); Operacao operacao = new Operacao(); operacao.setId(Operacao.OPERACAO_INFORMAR_UNIDADE_NEGOCIO_TESTEMUNHA); OperacaoEfetuada operacaoEfetuada = new OperacaoEfetuada(); operacaoEfetuada.setOperacao(operacao); // Atualiza as Unidade de Neg�cio Testemunha removidas pelo usu�rio if (colecaoUnidadeOrganizacionalTestemunhaRemovidas != null && !colecaoUnidadeOrganizacionalTestemunhaRemovidas.isEmpty()) { for (UnidadeOrganizacionalTestemunha unidadeOrganizacionalTestemunha : colecaoUnidadeOrganizacionalTestemunhaRemovidas) { // [FS0003] - Atualiza��o realizada por outro usu�rio FiltroUnidadeOrganizacionalTestemunha filtroUnidadeOrganizacionalTestemunha = new FiltroUnidadeOrganizacionalTestemunha(); filtroUnidadeOrganizacionalTestemunha.adicionarParametro(new ParametroSimples(FiltroUnidadeOrganizacionalTestemunha.ID, unidadeOrganizacionalTestemunha.getId())); Collection colecaoUnidadeOrganizacionalTestemunhaBase = getControladorUtil().pesquisar( filtroUnidadeOrganizacionalTestemunha, UnidadeOrganizacionalTestemunha.class.getName()); if (colecaoUnidadeOrganizacionalTestemunhaBase == null || colecaoUnidadeOrganizacionalTestemunhaBase.isEmpty()) { sessionContext.setRollbackOnly(); throw new ControladorException("atencao.atualizacao.timestamp"); } UnidadeOrganizacionalTestemunha unidadeOrganizacionalTestemunhaBase = (UnidadeOrganizacionalTestemunha) colecaoUnidadeOrganizacionalTestemunhaBase .iterator().next(); if (unidadeOrganizacionalTestemunhaBase.getUltimaAlteracao().after(unidadeOrganizacionalTestemunha.getUltimaAlteracao())) { sessionContext.setRollbackOnly(); throw new ControladorException("atencao.atualizacao.timestamp"); } unidadeOrganizacionalTestemunha.setUltimaAlteracao(new Date()); unidadeOrganizacionalTestemunha.setOperacaoEfetuada(operacaoEfetuada); unidadeOrganizacionalTestemunha.adicionarUsuario(usuarioLogado, UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO); registradorOperacao.registrarOperacao(unidadeOrganizacionalTestemunha); getControladorUtil().atualizar(unidadeOrganizacionalTestemunha); } } // Insere as Unidade de Neg�cio Testemunha adicionadas pelo usu�rio if (colecaoUnidadeOrganizacionalTestemunhaAdicionadas != null && !colecaoUnidadeOrganizacionalTestemunhaAdicionadas.isEmpty()) { for (UnidadeOrganizacionalTestemunha unidadeOrganizacionalTestemunha : colecaoUnidadeOrganizacionalTestemunhaAdicionadas) { // [FS0001] - Validar data rela��o fim FiltroUnidadeOrganizacionalTestemunha filtroUnidadeOrganizacionalTestemunha = new FiltroUnidadeOrganizacionalTestemunha(); filtroUnidadeOrganizacionalTestemunha.adicionarParametro(new ParametroSimples( FiltroUnidadeOrganizacionalTestemunha.UNIDADE_ORGANIZACIONAL_ID, unidadeOrganizacionalTestemunha .getUnidadeOrganizacional().getId())); filtroUnidadeOrganizacionalTestemunha.adicionarParametro(new ParametroSimples( FiltroUnidadeOrganizacionalTestemunha.USUARIO_ID, unidadeOrganizacionalTestemunha.getUsuario().getId())); filtroUnidadeOrganizacionalTestemunha.adicionarParametro(new ParametroNulo( FiltroUnidadeOrganizacionalTestemunha.DATA_RELACAO_FIM)); Collection colecaoUnidadeOrganizacionalTestemunhaBase = getControladorUtil().pesquisar( filtroUnidadeOrganizacionalTestemunha, UnidadeOrganizacionalTestemunha.class.getName()); if (colecaoUnidadeOrganizacionalTestemunhaBase != null && !colecaoUnidadeOrganizacionalTestemunhaBase.isEmpty()) { sessionContext.setRollbackOnly(); throw new ControladorException("atencao.testemunha.ja.existente", null, unidadeOrganizacionalTestemunha .getUnidadeOrganizacional().getDescricao(), unidadeOrganizacionalTestemunha.getUsuario().getNomeUsuario()); } unidadeOrganizacionalTestemunha.setUltimaAlteracao(new Date()); unidadeOrganizacionalTestemunha.setOperacaoEfetuada(operacaoEfetuada); unidadeOrganizacionalTestemunha.adicionarUsuario(usuarioLogado, UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO); registradorOperacao.registrarOperacao(unidadeOrganizacionalTestemunha); getControladorUtil().inserir(unidadeOrganizacionalTestemunha); } } } /** * [UC0676] - Consultar Resumo da Negativacao * * @author Marcio Roberto * @date 28/02/2008 * * @return NegativacaoHelper * @throws ErroRepositorioException */ public Collection consultarResumoNegativacao(DadosConsultaNegativacaoHelper dadosConsultaNegativacaoHelper, int tipo) throws ControladorException { Collection negativacaoHelper = null; try { // Pega a lista de Resumo das Negativacoes da base de dados. negativacaoHelper = repositorioCobranca.consultarNegativacao(dadosConsultaNegativacaoHelper, tipo); } catch (ErroRepositorioException ex) { ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } return negativacaoHelper; } /** * Metodo que cria o relatorio de parcelamento de d�bitos default * * @author brunobarros * * @param usuario * @param idParcelamento * @param unidadeUsuario * @param colecaoFaturasEmAberto * @param colecaoGuiasPagamento * @param colecaoServicosACobrar * @param colecaoCreditoARealizar * @return */ public Object gerarRelatorioParcelamentoCobranca(Usuario usuario, String idParcelamento, UnidadeOrganizacional unidadeUsuario, Collection colecaoFaturasEmAberto, Collection colecaoGuiasPagamento, Collection colecaoServicosACobrar, Collection colecaoCreditoARealizar, boolean parcelamentoLojaVirtual) { if (parcelamentoLojaVirtual) { RelatorioDocumentosParcelamentoPortal relatorioParcelamento = new RelatorioDocumentosParcelamentoPortal(usuario); relatorioParcelamento.addParametro("idParcelamento", idParcelamento); relatorioParcelamento.addParametro("unidadeUsuario", unidadeUsuario); relatorioParcelamento.addParametro("sistemaParametro", Fachada.getInstancia().pesquisarParametrosDoSistema()); relatorioParcelamento.addParametro("colecaoFaturasEmAberto", colecaoFaturasEmAberto); relatorioParcelamento.addParametro("colecaoGuiasPagamento", colecaoGuiasPagamento); relatorioParcelamento.addParametro("colecaoServicosACobrar", colecaoServicosACobrar); relatorioParcelamento.addParametro("colecaoCreditoARealizar", colecaoCreditoARealizar); relatorioParcelamento.addParametro("usuario", usuario); return relatorioParcelamento; } else { RelatorioParcelamento relatorioParcelamento = new RelatorioParcelamento(usuario); relatorioParcelamento.addParametro("idParcelamento", idParcelamento); relatorioParcelamento.addParametro("unidadeUsuario", unidadeUsuario); relatorioParcelamento.addParametro("sistemaParametro", Fachada.getInstancia().pesquisarParametrosDoSistema()); relatorioParcelamento.addParametro("colecaoFaturasEmAberto", colecaoFaturasEmAberto); relatorioParcelamento.addParametro("colecaoGuiasPagamento", colecaoGuiasPagamento); relatorioParcelamento.addParametro("colecaoServicosACobrar", colecaoServicosACobrar); relatorioParcelamento.addParametro("colecaoCreditoARealizar", colecaoCreditoARealizar); relatorioParcelamento.addParametro("usuario", usuario); return relatorioParcelamento; } } /** * Atualiza o documento de cobranca apos a OS ser encerrada. Este metodo * sera usado nos metodos de encerrar OS * * @param OS * @throws ControladorException * * @author Francisco do Nascimento * @date 16/05/2008 * */ public void atualizarCobrancaDocumentoAposEncerrarOS(OrdemServico OS) throws ControladorException { // posi��es do array com os dados que ser�o atualizados DadosPesquisaCobrancaDocumentoHelper cobrancaDocumentoParaAtualizar = new DadosPesquisaCobrancaDocumentoHelper(); Collection colecaoCobrancaDocumentoParaAtualizar = new ArrayList(); CobrancaDocumento cobrancaDocumento = OS.getCobrancaDocumento(); if (cobrancaDocumento != null) { cobrancaDocumentoParaAtualizar.setIdDocumento(cobrancaDocumento.getId()); // recebe a data de encerramento da ordem de // serivo(ORSE_TMENCERRAMENTO) if (OS.getDataEncerramento() != null) { cobrancaDocumento.setDataSituacaoAcao(OS.getDataEncerramento()); cobrancaDocumentoParaAtualizar.setDataSituacaoAcao(OS.getDataEncerramento()); } // indicador de Execu��o // caso o motivo de encerramento // corresponda // � // execu��o if (OS.getAtendimentoMotivoEncerramento() != null) { FiltroAtendimentoMotivoEncerramento filtroAtendimento = new FiltroAtendimentoMotivoEncerramento(); filtroAtendimento.adicionarParametro(new ParametroSimples("id", OS.getAtendimentoMotivoEncerramento().getId())); Collection motivos = getControladorUtil().pesquisar(filtroAtendimento, AtendimentoMotivoEncerramento.class.getName()); AtendimentoMotivoEncerramento ame = (AtendimentoMotivoEncerramento) Util.retonarObjetoDeColecao(motivos); determinarSituacaoAcaoAPartirMotivoEncerramentoOS(cobrancaDocumentoParaAtualizar, ame); cobrancaDocumentoParaAtualizar.setIdMotivoEncerramento(ame.getId()); } if (OS.getImovel() != null) { try { // [UC0306] - Obter Principal CAtegoria do Imovel // De acordo com o metodo // ControladorImovel.obterPrincipalCategoriaImovel // caso seja a empresa FEBRABAN, a categoria principal sera // a que tiver o maior codigo, // caso contrario, a principal ser� a que tiver menor codigo SistemaParametro sistemaParametro = getControladorUtil().pesquisarParametrosDoSistema(); boolean ehFEBRABAN = sistemaParametro.getCodigoEmpresaFebraban().equals(SistemaParametro.CODIGO_EMPRESA_FEBRABAN_CAERN); Integer idCategoria = repositorioImovel.obterIdCategoriaPrincipal(OS.getImovel().getId(), ehFEBRABAN); cobrancaDocumentoParaAtualizar.setIdCategoria(idCategoria); // pesquisa os imovel para ser usado para gravar o // Resumo Cobran�a A��o Integer idEsferaPoder = repositorioImovel.obterIdEsferaPoder(OS.getImovel().getId()); cobrancaDocumentoParaAtualizar.setIdEsferaPoder(idEsferaPoder); } catch (ErroRepositorioException e) { e.printStackTrace(); throw new ControladorException("erro.sistema", e); } } colecaoCobrancaDocumentoParaAtualizar.add(cobrancaDocumentoParaAtualizar); try { this.repositorioCobranca.atualizarCobrancaDocumento(colecaoCobrancaDocumentoParaAtualizar); } catch (ErroRepositorioException e) { e.printStackTrace(); throw new ControladorException("erro.sistema", e); } colecaoCobrancaDocumentoParaAtualizar.clear(); } } private void determinarSituacaoAcaoAPartirMotivoEncerramentoOS(DadosPesquisaCobrancaDocumentoHelper cobrancaDocumentoParaAtualizar, AtendimentoMotivoEncerramento ame) { Short indicadorExecucaoMotivoEncerramento = ame.getIndicadorExecucao(); if (indicadorExecucaoMotivoEncerramento != null && indicadorExecucaoMotivoEncerramento.intValue() == 1) { // atribuir o valor A��O EXECUTADA cobrancaDocumentoParaAtualizar.setIdSituacaoAcao(CobrancaAcaoSituacao.EXECUTADA); } else { switch (ame.getId().shortValue()) { case AtendimentoMotivoEncerramento.CANCELADO_POR_DERCURSO_DE_PRAZO: cobrancaDocumentoParaAtualizar.setIdSituacaoAcao(CobrancaAcaoSituacao.CANCELADA_PRAZO); break; case AtendimentoMotivoEncerramento.SUSPENSA_PAG_PARC_CANC_DO_DEBITO: cobrancaDocumentoParaAtualizar.setIdSituacaoAcao(CobrancaAcaoSituacao.CANCELADA_PRAZO); break; default: // atribuir o valor A��O CANCELADA cobrancaDocumentoParaAtualizar.setIdSituacaoAcao(CobrancaAcaoSituacao.CANCELADA); } } } /** * Atualiza cobranca documento com os campos passados na colecao [UC478 - * Gerar Resumo de Acoes de cobranca] * * @param colecaoCobrancaDocumento * @throws ControladorException */ public void atualizarCobrancaDocumento(Collection colecaoCobrancaDocumento) throws ControladorException { try { this.repositorioCobranca.atualizarCobrancaDocumento(colecaoCobrancaDocumento); } catch (ErroRepositorioException e) { e.printStackTrace(); throw new ControladorException("erro.sistema", e); } } private void logPerformance(String mens, long tempo1, long tempo2) { if (tempo2 - tempo1 > 7000) { System.out.println("%$% " + mens + ": " + (tempo2 - tempo1) + " ms"); } } /** * * Este caso de uso permite gerar o resumo das a��es de cobran�a com a * atividade emitir j� realizada e a atividade encerrar ainda n�o realizada * e realizar a atividade encerrar das a��es que estejam comandadas. * * [UC0478] Gerar Resumo das A��es de Cobran�a do Cronograma * * Este m�todo se refere ao [SB0007] que foi separado para uma unidade de * processamento * * P�s-oncid��o: Resumo das a��es de cobran�a gerado e atividade encerrar da * a��o de cobran�a, se for o caso, realizada * * @author Francisco do Nascimento * @date 16/05/2008 * */ public void gerarResumoAcoesCobrancaCronogramaEncerrarOS(Object[] dadosCobrancaAcaoAtividadeCronograma, int idFuncionalidadeIniciada) throws ControladorException { int idUnidadeIniciada = 0; // posi��es do array com os dados que ser�o atualizados final int POSICAO_ID_COB_ACAO_ATIV_CRON_EMITIR = 0; final int POSICAO_ID_COB_ACAO = 8; // ------------------------- // // Registrar o in�cio do processamento da Unidade de // Processamento // do Batch // // ------------------------- idUnidadeIniciada = getControladorBatch().iniciarUnidadeProcessamentoBatch(idFuncionalidadeIniciada, UnidadeProcessamento.COB_ACAO_ATIV_CRONOG, ((Integer) dadosCobrancaAcaoAtividadeCronograma[POSICAO_ID_COB_ACAO_ATIV_CRON_EMITIR])); // cole��o com os cronogramas de cobran�a dos grupos de cobran�a e meses // de refer�ncia try { if (dadosCobrancaAcaoAtividadeCronograma != null) { Integer idCobrancaAcao = null; Integer idCobrancaAtividadeAcaoCronogramaEmitir = null; if (dadosCobrancaAcaoAtividadeCronograma[POSICAO_ID_COB_ACAO] != null) { idCobrancaAcao = (Integer) dadosCobrancaAcaoAtividadeCronograma[POSICAO_ID_COB_ACAO]; } if (dadosCobrancaAcaoAtividadeCronograma[POSICAO_ID_COB_ACAO_ATIV_CRON_EMITIR] != null) { idCobrancaAtividadeAcaoCronogramaEmitir = (Integer) dadosCobrancaAcaoAtividadeCronograma[POSICAO_ID_COB_ACAO_ATIV_CRON_EMITIR]; } Collection colecaoCobrancaAcao = null; FiltroCobrancaAcao filtroCobrancaAcao = new FiltroCobrancaAcao(); filtroCobrancaAcao.adicionarParametro(new ParametroSimples(FiltroCobrancaAcao.ID, idCobrancaAcao)); filtroCobrancaAcao.adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAcao.DOCUMENTO_TIPO); filtroCobrancaAcao.adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAcao.SERVICO_TIPO); colecaoCobrancaAcao = this.getControladorUtil().pesquisar(filtroCobrancaAcao, CobrancaAcao.class.getName()); CobrancaAcao cobrancaAcao = (CobrancaAcao) Util.retonarObjetoDeColecao(colecaoCobrancaAcao); if (cobrancaAcao != null) { // Item 3.4 // verfica se o valor do documento tipo � // diferente de nulo if (cobrancaAcao.getDocumentoTipo() != null) { // caso a atividade da a��o de cobran�a // correspondente a // encerrar esteja comandada e a data // prescita para o // encerramento seja igual ou menor do // que a data // corrente Collection colecaoCobrancaDocumantoParaAtualizar = null; // caso o id do servi�o tipo seja diferente de nulo // ent�o // pode ter OS e � verificado as os dos documentos de // cobran�a if (cobrancaAcao.getServicoTipo() != null) { long t1 = System.currentTimeMillis(); // colecaoCobrancaDocumantoParaAtualizar = this // .gerarColecaoDocumentoCobrancaOrdemServico( // cobrancaAcao, // dataRealizacaoAtividadeEncerrar, // usuarioLogado, // idCobrancaAtividadeAcaoCronogramaEmitir, // ConstantesSistema.NUMERO_NAO_INFORMADO); logPerformance( "UC478. gerarColecaoDocumentoCobrancaOrdemServico." + idCobrancaAtividadeAcaoCronogramaEmitir, t1, System.currentTimeMillis()); if (!Util.isVazioOrNulo(colecaoCobrancaDocumantoParaAtualizar)) { // grava no banco as COBRANCA_DOCUMENTO repositorioCobranca.atualizarCobrancaDocumento(colecaoCobrancaDocumantoParaAtualizar); } } } } } getControladorBatch().encerrarUnidadeProcessamentoBatch(null, idUnidadeIniciada, false); System.out.println("########## FINALIZADO EM = " + new Date()); } 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); } } /** * [UC478 - GERAR RESUMO DE ACOES DE COBRANCA] Atualizar a situacao do item * do documento de cobranca a partir de um pagamento realizado * * @param pagamento * * @author Francisco do Nascimento * @date 28/05/2008 * */ public void atualizarSituacaoCobrancaDocumentoItemAPartirPagamento(Pagamento pagamento, Integer idCobrancaDebitoSituacao) throws ControladorException { Integer idConta = pagamento.getContaGeral() != null ? pagamento.getContaGeral().getId() : null; Integer idDebitoACobrar = pagamento.getDebitoACobrarGeral() != null ? pagamento.getDebitoACobrarGeral().getId() : null; Integer idGuiaPagamento = pagamento.getGuiaPagamento() != null ? pagamento.getGuiaPagamento().getId() : null; try { // Atualizar item documento de cobranca da conta, se houver, para // cancelado repositorioCobranca.atualizarSituacaoCobrancaDocumentoItem(idCobrancaDebitoSituacao, new Date(), idConta, idGuiaPagamento, idDebitoACobrar); } catch (ErroRepositorioException ex) { sessionContext.setRollbackOnly(); new ControladorException("erro.sistema", ex); } } /** * * Este caso de uso permite gerar o resumo das a��es de cobran�a com a * atividade emitir j� realizada e a atividade encerrar ainda n�o realizada * e realizar a atividade encerrar das a��es que estejam comandadas. * * Versao Reduzida: Foi retirado do escopo deste metodo, a busca de dados * para atualizar a situacao da acao do documento de cobranca e situacao dos * debitos dos itens do documento de cobranca, considerando que estes foram * atualizados nos casos de usos: [UC ] Encerrar OS [UC ] Informar Retorno * de fiscalizacao [UC ] Cancelar Conta [UC ] Desfazer cancelamento de conta * [UC ] Efetuar Parcelamento de D�bitos [UC ] Remover Parcelamento [UC ] * Inserir Pagamento [UC ] Remover Pagamento [UC ] Registrar movimento de * arrecadores * * [UC0478] Gerar Resumo das A��es de Cobran�a do Cronograma * * [SB0001] - Processar Documento de Cobran�a * * @author Rafael Santos, Pedro Alexandre,S�vio Luiz, Francisco do * Nascimento, Anderson Italo * @date 16/10/2006, 19/01/2007, 25/05/2007, 28/05/2008, 29/05/2009, * 25/02/2010 * */ private void processarDocumentoCobrancaVersaoReduzida(int idCobrancaAtividadeAcaoCronogramaEmitir, int idCobrancaAtividadeAcaoComandoEmitir, CobrancaAcao cobrancaAcao, Usuario usuarioLogado, Date dataRealizacaoAtividadeEncerrar, Date dataComandoAtividadeEncerrar, Date dataPrevistaAtividadeEncerrar) throws ControladorException { try { Collection colecaoCobrancaDocumentoParaAtualizar = null; // Item 1 // COBRANCA_DOCUMENTO com CAAC_ID igual a // idCobrancaAtividadeAcaoCronogramaEmitir // caso o id do servi�o tipo seja diferente de nulo ent�o // pode ter OS e � verificado as os dos documentos de cobran�a colecaoCobrancaDocumentoParaAtualizar = this.repositorioCobranca.pesquisarCobrancaDocumentoResumoAcaoCobranca( idCobrancaAtividadeAcaoCronogramaEmitir, idCobrancaAtividadeAcaoComandoEmitir); HashtableCache cacheCriterios = new HashtableCache("criterioCobranca"); // para cada documento de cobran�a if (colecaoCobrancaDocumentoParaAtualizar != null && !colecaoCobrancaDocumentoParaAtualizar.isEmpty()) { Iterator iteratorCobrancaDocumantoParaAtualizar = null; iteratorCobrancaDocumantoParaAtualizar = colecaoCobrancaDocumentoParaAtualizar.iterator(); while (iteratorCobrancaDocumantoParaAtualizar.hasNext()) { Integer idCobrancaDocumento = null; Integer idImovel = null; BigDecimal valorLimitePrioridade = null; BigDecimal valorDocumento = null; Integer idCobrancaCriterio = null; DadosPesquisaCobrancaDocumentoHelper cobrancaDocumentoParaAtualizar = (DadosPesquisaCobrancaDocumentoHelper) iteratorCobrancaDocumantoParaAtualizar .next(); idCobrancaDocumento = cobrancaDocumentoParaAtualizar.getIdDocumento(); idImovel = cobrancaDocumentoParaAtualizar.getIdImovel(); // Consultando criterio de cobranca... usando cache, pois ha // muita repeticao de criterios idCobrancaCriterio = cobrancaDocumentoParaAtualizar.getIdCobrancaCriterio(); if (cobrancaAcao.getServicoTipo() != null) { // Atribuir o valor A��O PENDENTES � situa��o de // Cobran�a if (cobrancaDocumentoParaAtualizar.getIdSituacaoAcao() == null) { cobrancaDocumentoParaAtualizar.setIdSituacaoAcao(CobrancaAcaoSituacao.PENDENTE); } } else { // atualiza os campos para serem utilizados para // atualiza��o // e consulta de dados da cobran�a documento // Atribuir o valor A��O ENVIADOS � situa��o de Cobran�a if (cobrancaDocumentoParaAtualizar.getIdSituacaoAcao() == null) { cobrancaDocumentoParaAtualizar.setIdSituacaoAcao(CobrancaAcaoSituacao.ENVIADOS); } } if (idImovel != null) { if (cobrancaDocumentoParaAtualizar.getIdCategoria() == null) { // [UC0306] - Obter Principal CAtegoria do Imovel // De acordo com o metodo // ControladorImovel.obterPrincipalCategoriaImovel // caso seja a empresa FEBRABAN, a categoria // principal sera a que tiver o maior codigo, // caso contrario, a principal ser� a que tiver // menor codigo SistemaParametro sistemaParametro = getControladorUtil().pesquisarParametrosDoSistema(); boolean ehFEBRABAN = sistemaParametro.getCodigoEmpresaFebraban().equals( SistemaParametro.CODIGO_EMPRESA_FEBRABAN_CAERN); Integer idCategoria = repositorioImovel.obterIdCategoriaPrincipal(idImovel, ehFEBRABAN); cobrancaDocumentoParaAtualizar.setIdCategoria(idCategoria); } if (cobrancaDocumentoParaAtualizar.getIdEsferaPoder() == null) { // pesquisa os imovel para ser usado para gravar o // Resumo Cobran�a A��o Integer idEsferaPoder = repositorioImovel.obterIdEsferaPoder(idImovel); cobrancaDocumentoParaAtualizar.setIdEsferaPoder(idEsferaPoder); } } // Consultando criterio de cobranca... usando cache, pois ha // muita repeticao de criterios if (idCobrancaCriterio != null) { CobrancaCriterio cobrancaCriterio = null; Object objCache = cacheCriterios.get(idCobrancaCriterio); if (objCache == null) { FiltroCobrancaCriterio filtroCriterio = new FiltroCobrancaCriterio(); filtroCriterio.adicionarParametro(new ParametroSimples(FiltroCobrancaCriterio.ID, idCobrancaCriterio)); Collection retorno = repositorioUtil.pesquisar(filtroCriterio, CobrancaCriterio.class.getName()); cobrancaCriterio = (CobrancaCriterio) Util.retonarObjetoDeColecao(retorno); cacheCriterios.put(idCobrancaCriterio, cobrancaCriterio); } else { cobrancaCriterio = (CobrancaCriterio) objCache; } cobrancaDocumentoParaAtualizar.setPercentualValorMinimoCobrancaCriterio(cobrancaCriterio .getPercentualValorMinimoPagoParceladoCancelado()); cobrancaDocumentoParaAtualizar.setPercentualQuantidadeMinimaCobrancaCriterio(cobrancaCriterio .getPercentualQuantidadeMinimoPagoParceladoCancelado()); cobrancaDocumentoParaAtualizar .setValorLimitePrioridadeCobrancaCriterio(cobrancaCriterio.getValorLimitePrioridade()); valorLimitePrioridade = cobrancaCriterio.getValorLimitePrioridade(); } valorDocumento = cobrancaDocumentoParaAtualizar.getValorDocumento(); // indicador acima do limite Short indicadorAcimaLimite = null; if (valorDocumento != null && valorLimitePrioridade != null && valorDocumento.compareTo(valorLimitePrioridade) > 0) { indicadorAcimaLimite = new Short("1"); } else { indicadorAcimaLimite = new Short("2"); } cobrancaDocumentoParaAtualizar.setIcAcimaLimite(indicadorAcimaLimite); // 2.2 Seleciona os itens do documento de cobran�a Collection colecaoCobrancaDocumentoItem = null; // COBRANCA_DOCUMENTO_ITEM por CBDO_ID igual a // idCobrancaDocmento colecaoCobrancaDocumentoItem = this.repositorioCobranca .pesquisarDadosCobrancaDocumentoItemSituacaoJaAtualizada(idCobrancaDocumento); // [SB0003] - Determinar Situa��o de D�btio do Item de // Cobran�a if (colecaoCobrancaDocumentoItem != null && !colecaoCobrancaDocumentoItem.isEmpty()) { processarCobrancaDocumentoItemComItensJaAtualizados(colecaoCobrancaDocumentoItem, cobrancaDocumentoParaAtualizar, cobrancaAcao); } else { cobrancaDocumentoParaAtualizar.setIdSituacaoDebito(CobrancaDebitoSituacao.SEM_DEBITOS); } // if (cobrancaAcao.getServicoTipo() == null) { // colecaoCobrancaDocumentoParaAtualizar // .add(cobrancaDocumentoParaAtualizar); // } }// fim do while da Colecao Cobranca Documentos colecaoCobrancaDocumentoParaAtualizar = this.gerarColecaoDocumentoCobrancaOrdemServico(cobrancaAcao, dataRealizacaoAtividadeEncerrar, usuarioLogado, colecaoCobrancaDocumentoParaAtualizar, dataPrevistaAtividadeEncerrar, dataComandoAtividadeEncerrar); if (dataRealizacaoAtividadeEncerrar != null) { // adicionado por Vivianne Sousa - 14/12/2009 - // analista:Chico // deleta os documentos de cobranca impress�o pelo // idCobrancaAtividadeAcaoComando // ou pelo idCobrancaAtividadeAcaoCronograma repositorioCobranca.deletarDocumentoCobrancaImpressao(idCobrancaAtividadeAcaoComandoEmitir, idCobrancaAtividadeAcaoCronogramaEmitir); } if (!colecaoCobrancaDocumentoParaAtualizar.isEmpty()) { // grava no banco as COBRANCA_DOCUMENTO repositorioCobranca.atualizarCobrancaDocumento(colecaoCobrancaDocumentoParaAtualizar); } // seta null para o GC liberar colecaoCobrancaDocumentoParaAtualizar.clear(); colecaoCobrancaDocumentoParaAtualizar = null; } // } else { // flagTerminou = true; // } cacheCriterios.clear(); // } } catch (Exception ex) { ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } } /** * * Este caso de uso permite gerar o resumo das a��es de cobran�a com a * atividade emitir j� realizada e a atividade encerrar ainda n�o realizada * e realizar a atividade encerrar das a��es que estejam comandadas. * * Este m�todo processar os itens de documento de cobranca considerando que * estes foram atualizados nos casos de usos: [UC ] Encerrar OS [UC ] * Informar Retorno de fiscalizacao [UC ] Cancelar Conta [UC ] Desfazer * cancelamento de conta [UC ] Efetuar Parcelamento de D�bitos [UC ] Remover * Parcelamento [UC ] Inserir Pagamento [UC ] Remover Pagamento [UC ] * Registrar movimento de arrecadores * * [UC0478] Gerar Resumo das A��es de Cobran�a do Cronograma * * [SB0002] - Processar Documento de Cobran�a Item * * @author Rafael Santos, Pedro Alexandre,S�vio Luiz, Francisco do * Nascimento * @date 16/10/2006, 19/01/2007, 25/05/2007, 28/05/2008 * */ protected void processarCobrancaDocumentoItemComItensJaAtualizados(Collection colecaoCobrancaDocumentoItem, DadosPesquisaCobrancaDocumentoHelper cobrancaDocumentoParaAtualizar, CobrancaAcao cobrancaAcao) throws ControladorException { try { // cole��o com as situa��o de debitos acumuladas Collection<GerarResumoAcoesCobrancaCronogramaHelper> colecaoGerarResumoAcoesCobrancaCronogramaHelper = new ArrayList(); if (colecaoCobrancaDocumentoItem != null && !colecaoCobrancaDocumentoItem.isEmpty()) { Iterator iteratorColecaoCobrancaDocumentoItem = colecaoCobrancaDocumentoItem.iterator(); Object[] dadosCobrancaDocumentoItem = null; while (iteratorColecaoCobrancaDocumentoItem.hasNext()) { dadosCobrancaDocumentoItem = (Object[]) iteratorColecaoCobrancaDocumentoItem.next(); BigDecimal valorItemCobrado = (BigDecimal) dadosCobrancaDocumentoItem[1]; valorItemCobrado = valorItemCobrado == null ? new BigDecimal("0.0") : valorItemCobrado; // [SB0004] - Atualizar o Resumo da Acao de Cobrancao com os // dados do Item do Documento de // Cobran�a if (dadosCobrancaDocumentoItem[2] != null) { this.atualizarItemDocumentoCobranca((Integer) dadosCobrancaDocumentoItem[2], // id // da // situacao // do // debito valorItemCobrado, // valor do item cobrado (Date) dadosCobrancaDocumentoItem[3], // data // situacao // do // debito colecaoGerarResumoAcoesCobrancaCronogramaHelper); } else { this.atualizarItemDocumentoCobranca(CobrancaDebitoSituacao.PENDENTE, valorItemCobrado, null, colecaoGerarResumoAcoesCobrancaCronogramaHelper); } } } // 2.3 Determinar a Situa��o determinarSituacaoDocumentoCobranca(colecaoGerarResumoAcoesCobrancaCronogramaHelper, cobrancaDocumentoParaAtualizar, cobrancaAcao); } catch (Exception ex) { ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } // return cobrancaDocumentoParaAtualizar; } private void determinarSituacaoDocumentoCobranca( Collection<GerarResumoAcoesCobrancaCronogramaHelper> colecaoGerarResumoAcoesCobrancaCronogramaHelper, DadosPesquisaCobrancaDocumentoHelper cobrancaDocumentoParaAtualizar, CobrancaAcao cobrancaAcao) throws ControladorException { if (colecaoGerarResumoAcoesCobrancaCronogramaHelper != null && !colecaoGerarResumoAcoesCobrancaCronogramaHelper.isEmpty()) { // [SB0005] - Determinar Situa��o Predominante do // D�bito // do // Documento de Cobran�a Iterator iteratorColecaoGerarResumoAcoesCobrancaCronogramaHelper = colecaoGerarResumoAcoesCobrancaCronogramaHelper.iterator(); // quantidade total de todas as ocorrencias int quantidadeTotalOcorrencia = 0; // Valor total acumulado de todas situa��es de // debito BigDecimal valorTotalAcumulado = new BigDecimal("0.00"); BigDecimal percValorMinimoPagoParceladoCancelado = cobrancaDocumentoParaAtualizar.getPercentualValorMinimoCobrancaCriterio(); BigDecimal percQuantidadeMinimaPagoParceladoCancelado = cobrancaDocumentoParaAtualizar .getPercentualQuantidadeMinimaCobrancaCriterio(); // Situa��o PAGO BigDecimal valorSituacaoPago = null; BigDecimal quantidadeSituacaoPago = null; Date dataSituacaoPago = null; // Situa��o PARCELADO BigDecimal valorSituacaoParcelado = null; Date dataSituacaoParcelado = null; // Situa��o CANCELADO BigDecimal valorSituacaoCancelado = null; BigDecimal quantidadeSituacaoCancelado = null; Date dataSituacaoCancelado = null; // flag para saber se so existe situa��o pendente boolean existeAlgumSituacaoPendente = false; while (iteratorColecaoGerarResumoAcoesCobrancaCronogramaHelper.hasNext()) { GerarResumoAcoesCobrancaCronogramaHelper gerarResumoAcoesCobrancaCronogramaHelper = (GerarResumoAcoesCobrancaCronogramaHelper) iteratorColecaoGerarResumoAcoesCobrancaCronogramaHelper .next(); // se a situa��o for DEBITO PAGO if (gerarResumoAcoesCobrancaCronogramaHelper.getIdSituacaoDebito() == CobrancaDebitoSituacao.PAGO.intValue()) { valorSituacaoPago = gerarResumoAcoesCobrancaCronogramaHelper.getValorItemCobrado(); quantidadeSituacaoPago = new BigDecimal( gerarResumoAcoesCobrancaCronogramaHelper.getQuantidadeOcorrenciaSituacaoDebito()); dataSituacaoPago = gerarResumoAcoesCobrancaCronogramaHelper.getDataSituacaoDebito(); // se a situa��o for DEBITO PARCELADO } else if (gerarResumoAcoesCobrancaCronogramaHelper.getIdSituacaoDebito() == CobrancaDebitoSituacao.PARCELADO.intValue()) { valorSituacaoParcelado = gerarResumoAcoesCobrancaCronogramaHelper.getValorItemCobrado(); dataSituacaoParcelado = gerarResumoAcoesCobrancaCronogramaHelper.getDataSituacaoDebito(); // se a situa��o for DEBITO CANCELADO } else if (gerarResumoAcoesCobrancaCronogramaHelper.getIdSituacaoDebito() == CobrancaDebitoSituacao.CANCELADO.intValue()) { valorSituacaoCancelado = gerarResumoAcoesCobrancaCronogramaHelper.getValorItemCobrado(); quantidadeSituacaoCancelado = new BigDecimal( gerarResumoAcoesCobrancaCronogramaHelper.getQuantidadeOcorrenciaSituacaoDebito()); dataSituacaoCancelado = gerarResumoAcoesCobrancaCronogramaHelper.getDataSituacaoDebito(); } else { // caso n�o seja nenhuma situa��o ent�o existeAlgumSituacaoPendente = true; } // acumula o total das quantidade de ocorrencia quantidadeTotalOcorrencia = quantidadeTotalOcorrencia + gerarResumoAcoesCobrancaCronogramaHelper.getQuantidadeOcorrenciaSituacaoDebito(); // acumula o total acumulado das situa��es de // debito valorTotalAcumulado = valorTotalAcumulado.add(gerarResumoAcoesCobrancaCronogramaHelper.getValorItemCobrado()); } // flag para saber se antender a alguma das // situ��oes de PAGO/PARCELADO/CANCELADO boolean atenderAlgumaSituacao = false; // Novos Criterios para a atribuicao da situacao do debito - // 16/06/08 - Francisco / Ana Breda // Caso o documento apresente ALGUM item PARCELADO // Caso nao exista nenhum item PENDENTE -> atribuir PARCELADO // Caso contrario -> atribuir PENDENTE // Caso contrario // caso o documento apresente a porcentagem minima de itens ou valor // pagos -> Atribuir PAGO // Caso contrario // Caso o documento apresente a porcentagem minima de seus itens ou // de valor cancelados -> Atribuir CANCELADO // Caso contrario -> atribuir PENDENTE // //////////////////////////////////////////////////////////////////////// // Caso o documento apresente ALGUM item PARCELADO // Caso nao exista nenhum item PENDENTE -> atribuir PARCELADO // Caso contrario -> atribuir PENDENTE if (valorSituacaoParcelado != null) { // Foi considerado que para o caso de parcelado nao precisa // verificar // a quantidade minima de itens ou o valor minimo, pois o // parcelamento sempre pega tudo // e eh considerado parcelado quando a entrada estah paga, por // isso as situacoes // possiveis sao: ITENS PARCELADOS E (PENDENTES OU PAGOS, que // sao as entradas) if (!existeAlgumSituacaoPendente) { boolean houvePagamento = getControladorArrecadacao().verificarExistenciaPagamentoEntradaParcelamento( cobrancaDocumentoParaAtualizar.getIdImovel(), dataSituacaoParcelado); if (houvePagamento) { // atribuir a situa��o D�BITO PARCELADO cobrancaDocumentoParaAtualizar.setIdSituacaoDebito(CobrancaDebitoSituacao.PARCELADO); cobrancaDocumentoParaAtualizar.setDataSituacaoDebito(dataSituacaoParcelado); atenderAlgumaSituacao = true; } } else { // atribuir a situa��o do debito PENDENTE cobrancaDocumentoParaAtualizar.setIdSituacaoDebito(CobrancaDebitoSituacao.PENDENTE); cobrancaDocumentoParaAtualizar.setDataSituacaoDebito(null); atenderAlgumaSituacao = true; } } else { if (percValorMinimoPagoParceladoCancelado != null) { // 2. Calcula o valor minimo para considerar // o // documento pago/parcelado/cancelado // valor minimo pago parcelado canccelado, // CBCT_PCVLMINIMOPGPARCCANC BigDecimal resultadoValorMinimo = percValorMinimoPagoParceladoCancelado.divide(new BigDecimal("100.00"), 7, BigDecimal.ROUND_HALF_UP); resultadoValorMinimo = resultadoValorMinimo.multiply(valorTotalAcumulado); // arredonda o valor BigDecimal valorMinimo = resultadoValorMinimo.setScale(2, BigDecimal.ROUND_HALF_UP); // 3. Calcula a quantidade minima de itens // para // considerar o documento // pago/parcelado/cancelado // quantidade minimo pago parcelado // cancelado, // CBCT_PCQTMINIMOPGPARCCANC BigDecimal resultadoQuantidadeMinima = percQuantidadeMinimaPagoParceladoCancelado.divide(new BigDecimal("100.00"), 7, BigDecimal.ROUND_HALF_UP); resultadoQuantidadeMinima = resultadoQuantidadeMinima.multiply(new BigDecimal(quantidadeTotalOcorrencia)); // arredonda o valor BigDecimal quantidadeMinima = resultadoQuantidadeMinima.setScale(2, BigDecimal.ROUND_HALF_UP); // caso tenha situa��o D�BITO PAGO if (valorSituacaoPago != null) { // se o valor do pago ou a quantidade // maior ou igual aos seus respectivos minimos if ((valorSituacaoPago.compareTo(valorMinimo) >= 0) || (quantidadeSituacaoPago.compareTo(quantidadeMinima) >= 0)) { // atribuir a situa��o D�BITO PAGO cobrancaDocumentoParaAtualizar.setIdSituacaoDebito(CobrancaDebitoSituacao.PAGO); cobrancaDocumentoParaAtualizar.setDataSituacaoDebito(dataSituacaoPago); atenderAlgumaSituacao = true; } // caso tenha situa��o D�BITO CANCELADO } else if (valorSituacaoCancelado != null) { // se o valor do cancelado ou a quantidade // maior ou igual oas seus respectivos minimos if ((valorSituacaoCancelado.compareTo(valorMinimo) >= 0) || (quantidadeSituacaoCancelado.compareTo(quantidadeMinima) >= 0)) { // atribuir a situa��o D�BITO CANCELADO cobrancaDocumentoParaAtualizar.setIdSituacaoDebito(CobrancaDebitoSituacao.CANCELADO); cobrancaDocumentoParaAtualizar.setDataSituacaoDebito(dataSituacaoCancelado); atenderAlgumaSituacao = true; } } } } // se n�o antender as condi��es acima de // PAGO/PARCELADO/CANCELADO, sera D�BITO // PENDENTE if (!(atenderAlgumaSituacao)) { // atribuir a situ��o D�BITO PENDENTE cobrancaDocumentoParaAtualizar.setIdSituacaoDebito(CobrancaDebitoSituacao.PENDENTE); cobrancaDocumentoParaAtualizar.setDataSituacaoDebito(null); } else { /* * Alterado por Francisco em 29/05/09, analista Ana Breda * refere-se ao [SB0004] */ if (cobrancaAcao.getServicoTipo() != null && (cobrancaDocumentoParaAtualizar.getIdSituacaoAcao() == null || cobrancaDocumentoParaAtualizar .getIdSituacaoAcao().intValue() == CobrancaAcaoSituacao.PENDENTE) && cobrancaAcao.getIndicadorDebitoInterfereAcao() != null && cobrancaAcao.getIndicadorDebitoInterfereAcao().intValue() == ConstantesSistema.SIM.intValue()) { Integer idSituacaoAcao = null; // Short motivoEncerramento = // AtendimentoMotivoEncerramento.SUSPENSA_PAG_PARC_CANC_DO_DEBITO; // // this.encerrarOSPeloResumoAcaoCobranca(cobrancaDocumentoParaAtualizar.getIdOrdemServico(), // cobrancaDocumentoParaAtualizar.getIdLocalidade(), // motivoEncerramento); /* * * caso a acao nao tenha limite de dias para pagamento de * terceiros CAST = acao suspensa por pag/canc/parc caso * contrario, caso o intervalo de dias entre a data da * situacao do debito e a data de emissao seja menor que o * limite de dias para pagamento de terceiros CAST = acao * suspensa por pag/canc/parc at� caso contrario CAST = acao * suspensa por pag/canc/parc ap�s */ if (cobrancaAcao.getNumeroDiasRemuneracaoTerceiro() == null) { idSituacaoAcao = CobrancaAcaoSituacao.SUSPENSA_POR_PAG_PARC_CANC; } else { if (cobrancaDocumentoParaAtualizar.getDataSituacaoDebito() != null && cobrancaDocumentoParaAtualizar.getDataEmissao() != null) { if (Math.abs(Util.obterQuantidadeDiasEntreDuasDatas(cobrancaDocumentoParaAtualizar.getDataEmissao(), cobrancaDocumentoParaAtualizar.getDataSituacaoDebito())) <= cobrancaAcao .getNumeroDiasRemuneracaoTerceiro().intValue()) { idSituacaoAcao = CobrancaAcaoSituacao.SUSPENSA_POR_PAG_PARC_CANC_ATE; } else { idSituacaoAcao = CobrancaAcaoSituacao.SUSPENSA_POR_PAG_PARC_CANC_APOS; } } } cobrancaDocumentoParaAtualizar.setIdSituacaoAcao(idSituacaoAcao); } /* * Fim de alteracao de Francisco, 29/05/09 */ } }// fim do 2.3 Determinar a Situa��o Date dataSituacaoAcao = cobrancaDocumentoParaAtualizar.getDataSituacaoAcao(); Date dataSituacaoDebito = cobrancaDocumentoParaAtualizar.getDataSituacaoDebito(); // retira a hora das datas if (dataSituacaoAcao != null && dataSituacaoDebito != null) { dataSituacaoAcao = Util.formatarDataSemHora(dataSituacaoAcao); dataSituacaoDebito = Util.formatarDataSemHora(dataSituacaoDebito); } // verifica o valor do indicador antes apos Short indicadorAntesApos = null; if (dataSituacaoAcao != null && dataSituacaoDebito != null) { // data da situa��o da a��o de cobran�a seja // anterior a // data da situa��o do d�bito if (dataSituacaoAcao.after(dataSituacaoDebito)) { indicadorAntesApos = new Short("1"); } else { indicadorAntesApos = new Short("2"); } } cobrancaDocumentoParaAtualizar.setIcAntesDepois(indicadorAntesApos); } /** * Consulta as contas transferidas * * [UC0204] - Consultar Transfer�ncias do D�bito * * @author Rafael Corr�a * @date 22/08/2008 */ public Collection<TransferenciasDebitoHelper> consultarContasTransferidas( ConsultarTransferenciasDebitoHelper consultarTransferenciasDebitoHelper) throws ControladorException { Collection<TransferenciasDebitoHelper> retorno = null; Collection<Object[]> colecaoDados = null; try { colecaoDados = repositorioCobranca.consultarContasTransferidas(consultarTransferenciasDebitoHelper); } catch (ErroRepositorioException ex) { throw new ControladorException("erro.sistema", ex); } if (colecaoDados != null) { retorno = new ArrayList(); for (Object[] dados : colecaoDados) { TransferenciasDebitoHelper transferenciasDebitoHelper = new TransferenciasDebitoHelper(); Conta conta = new Conta(); // Ano/M�s de Refer�ncia da Conta if (dados[0] != null) { conta.setReferencia((Integer) dados[0]); } // Im�vel Origem if (dados[1] != null) { Imovel imovelOrigem = new Imovel(); imovelOrigem.setId((Integer) dados[1]); transferenciasDebitoHelper.setImovelOrigem(imovelOrigem); } // Im�vel Destino if (dados[2] != null) { Imovel imovelDestino = new Imovel(); imovelDestino.setId((Integer) dados[2]); transferenciasDebitoHelper.setImovelDestino(imovelDestino); } // Usu�rio if (dados[3] != null) { Usuario usuario = new Usuario(); usuario.setNomeUsuario((String) dados[3]); transferenciasDebitoHelper.setUsuario(usuario); } // Data da Transfer�ncia if (dados[4] != null) { Date dataTransferencia = new Date(((Timestamp) dados[4]).getTime()); transferenciasDebitoHelper.setDataTransferencia(dataTransferencia); } // Id da Conta if (dados[5] != null) { conta.setId((Integer) dados[5]); } transferenciasDebitoHelper.setConta(conta); retorno.add(transferenciasDebitoHelper); } } return retorno; } /** * Consulta os d�bitos a cobrar transferidos * * [UC0204] - Consultar Transfer�ncias do D�bito * * @author Rafael Corr�a * @date 22/08/2008 */ public Collection<TransferenciasDebitoHelper> consultarDebitosACobrarTransferidos( ConsultarTransferenciasDebitoHelper consultarTransferenciasDebitoHelper) throws ControladorException { Collection<TransferenciasDebitoHelper> retorno = null; Collection<Object[]> colecaoDados = null; try { colecaoDados = repositorioCobranca.consultarDebitosACobrarTransferidos(consultarTransferenciasDebitoHelper); } catch (ErroRepositorioException ex) { throw new ControladorException("erro.sistema", ex); } if (colecaoDados != null) { retorno = new ArrayList(); for (Object[] dados : colecaoDados) { TransferenciasDebitoHelper transferenciasDebitoHelper = new TransferenciasDebitoHelper(); DebitoACobrar debitoACobrar = new DebitoACobrar(); // Tipo do D�bito if (dados[0] != null) { DebitoTipo debitoTipo = new DebitoTipo(); debitoTipo.setDescricao((String) dados[0]); debitoACobrar.setDebitoTipo(debitoTipo); } // Im�vel Origem if (dados[1] != null) { Imovel imovelOrigem = new Imovel(); imovelOrigem.setId((Integer) dados[1]); transferenciasDebitoHelper.setImovelOrigem(imovelOrigem); } // Im�vel Destino if (dados[2] != null) { Imovel imovelDestino = new Imovel(); imovelDestino.setId((Integer) dados[2]); transferenciasDebitoHelper.setImovelDestino(imovelDestino); } // Usu�rio if (dados[3] != null) { Usuario usuario = new Usuario(); usuario.setNomeUsuario((String) dados[3]); transferenciasDebitoHelper.setUsuario(usuario); } // Data da Transfer�ncia if (dados[4] != null) { Date dataTransferencia = new Date(((Timestamp) dados[4]).getTime()); transferenciasDebitoHelper.setDataTransferencia(dataTransferencia); } // Id do D�bito a Cobrar if (dados[5] != null) { debitoACobrar.setId((Integer) dados[5]); } transferenciasDebitoHelper.setDebitoACobrar(debitoACobrar); retorno.add(transferenciasDebitoHelper); } } return retorno; } /** * Consulta as guias de pagamento transferidas * * [UC0204] - Consultar Transfer�ncias do D�bito * * @author Rafael Corr�a * @date 22/08/2008 */ public Collection<TransferenciasDebitoHelper> consultarGuiasDePagamentoTransferidas( ConsultarTransferenciasDebitoHelper consultarTransferenciasDebitoHelper) throws ControladorException { Collection<TransferenciasDebitoHelper> retorno = null; Collection<Object[]> colecaoDados = null; try { colecaoDados = repositorioCobranca.consultarGuiasDePagamentoTransferidas(consultarTransferenciasDebitoHelper); } catch (ErroRepositorioException ex) { throw new ControladorException("erro.sistema", ex); } if (colecaoDados != null) { retorno = new ArrayList(); for (Object[] dados : colecaoDados) { TransferenciasDebitoHelper transferenciasDebitoHelper = new TransferenciasDebitoHelper(); GuiaPagamento guiaPagamento = new GuiaPagamento(); // Tipo do D�bito if (dados[0] != null) { DebitoTipo debitoTipo = new DebitoTipo(); debitoTipo.setDescricao((String) dados[0]); guiaPagamento.setDebitoTipo(debitoTipo); } // Im�vel Origem if (dados[1] != null) { Imovel imovelOrigem = new Imovel(); imovelOrigem.setId((Integer) dados[1]); transferenciasDebitoHelper.setImovelOrigem(imovelOrigem); } // Im�vel Destino if (dados[2] != null) { Imovel imovelDestino = new Imovel(); imovelDestino.setId((Integer) dados[2]); transferenciasDebitoHelper.setImovelDestino(imovelDestino); } // Usu�rio if (dados[3] != null) { Usuario usuario = new Usuario(); usuario.setNomeUsuario((String) dados[3]); transferenciasDebitoHelper.setUsuario(usuario); } // Data da Transfer�ncia if (dados[4] != null) { Date dataTransferencia = new Date(((Timestamp) dados[4]).getTime()); transferenciasDebitoHelper.setDataTransferencia(dataTransferencia); } // Id da Guia de Pagamento if (dados[5] != null) { guiaPagamento.setId((Integer) dados[5]); } transferenciasDebitoHelper.setGuiaPagamento(guiaPagamento); retorno.add(transferenciasDebitoHelper); } } return retorno; } /** * Consulta os cr�ditos a realizar transferidos * * [UC0204] - Consultar Transfer�ncias do D�bito * * @author Rafael Corr�a * @date 22/08/2008 */ public Collection<TransferenciasDebitoHelper> consultarCreditosARealizarTransferidos( ConsultarTransferenciasDebitoHelper consultarTransferenciasDebitoHelper) throws ControladorException { Collection<TransferenciasDebitoHelper> retorno = null; Collection<Object[]> colecaoDados = null; try { colecaoDados = repositorioCobranca.consultarCreditosARealizarTransferidos(consultarTransferenciasDebitoHelper); } catch (ErroRepositorioException ex) { throw new ControladorException("erro.sistema", ex); } if (colecaoDados != null) { retorno = new ArrayList(); for (Object[] dados : colecaoDados) { TransferenciasDebitoHelper transferenciasDebitoHelper = new TransferenciasDebitoHelper(); CreditoARealizar creditoARealizar = new CreditoARealizar(); // Tipo do D�bito if (dados[0] != null) { CreditoTipo creditoTipo = new CreditoTipo(); creditoTipo.setDescricao((String) dados[0]); creditoARealizar.setCreditoTipo(creditoTipo); } // Im�vel Origem if (dados[1] != null) { Imovel imovelOrigem = new Imovel(); imovelOrigem.setId((Integer) dados[1]); transferenciasDebitoHelper.setImovelOrigem(imovelOrigem); } // Im�vel Destino if (dados[2] != null) { Imovel imovelDestino = new Imovel(); imovelDestino.setId((Integer) dados[2]); transferenciasDebitoHelper.setImovelDestino(imovelDestino); } // Usu�rio if (dados[3] != null) { Usuario usuario = new Usuario(); usuario.setNomeUsuario((String) dados[3]); transferenciasDebitoHelper.setUsuario(usuario); } // Data da Transfer�ncia if (dados[4] != null) { Date dataTransferencia = new Date(((Timestamp) dados[4]).getTime()); transferenciasDebitoHelper.setDataTransferencia(dataTransferencia); } // Id do Cr�dito a Realizar if (dados[5] != null) { creditoARealizar.setId((Integer) dados[5]); } transferenciasDebitoHelper.setCreditoARealizar(creditoARealizar); retorno.add(transferenciasDebitoHelper); } } return retorno; } /** * @author Vivianne Sousa * @date 15/07/2008 */ public Collection<Usuario> obterNomeCPFTestemunhas(Integer unidadeUsuario) throws ControladorException { Collection colecaoUsuario = null; Collection colecaoTestemunha = null; try { colecaoTestemunha = repositorioCobranca.obterNomeCPFTestemunhas(unidadeUsuario); } catch (ErroRepositorioException ex) { throw new ControladorException("erro.sistema", ex); } if (colecaoTestemunha != null) { colecaoUsuario = new ArrayList(); Iterator iterTestemunha = colecaoTestemunha.iterator(); Usuario usuario = null; while (iterTestemunha.hasNext()) { Object[] testemunha = (Object[]) iterTestemunha.next(); usuario = new Usuario(); if (testemunha[0] != null) { usuario.setNomeUsuario((String) testemunha[0]); } if (testemunha[1] != null) { usuario.setCpf((String) testemunha[1]); } colecaoUsuario.add(usuario); } } return colecaoUsuario; } /** * [UC0852] Incluir D�bito a Cobrar de Entrada de Parcelamento N�o Paga * * Este caso de uso permite incluir um d�bito a cobrar da entrada de * pagamento n�o paga. * * @author Raphael Rossiter * @created 26/08/2008 * * @throws ControladorException */ public void incluirDebitoACobrarEntradaParcelamentoNaoPaga(int idFuncionalidadeIniciada) throws ControladorException { int idUnidadeIniciada = 0; idUnidadeIniciada = getControladorBatch().iniciarUnidadeProcessamentoBatch(idFuncionalidadeIniciada, UnidadeProcessamento.FUNCIONALIDADE, 0); // PARCELAMENTOS Collection parcelamentosMes = null; // GUIAS DE PAGAMENTO Collection guiaPagamento = null; // CONTAS Collection colecaoConta = null; // PAGAMENTOS Collection pagamento = null; // PAGAMENTO DAS CONTAS Collection pagamentoConta = null; try { // PAR�METROS DO SISTEMA SistemaParametro sistemaParametros = getControladorUtil().pesquisarParametrosDoSistema(); // Recupera todos os parcelamentos e que esteja com a situacao // normal parcelamentosMes = repositorioCobranca.pesquisarTodosParcelamentosSituacaoNormal(ParcelamentoSituacao.NORMAL.toString()); if (parcelamentosMes != null && !parcelamentosMes.isEmpty()) { Iterator parcelamentosMesIterator = parcelamentosMes.iterator(); while (parcelamentosMesIterator.hasNext()) { // Dados do parcelamento Object[] dadosParcelamento = (Object[]) parcelamentosMesIterator.next(); // ID do parcelamento Integer numeroParcelamentosMes = (Integer) dadosParcelamento[0]; Integer idImovel = (Integer) dadosParcelamento[2]; // Seleciona as guias de pagamento referente � entrada de // parcelamento guiaPagamento = repositorioCobranca.pesquisarGuiaPagamentoDoParcelamentoPorEntradaNaoPaga(numeroParcelamentosMes .toString()); if (guiaPagamento != null && !guiaPagamento.isEmpty()) { Iterator guiaPagamentoIterator = guiaPagamento.iterator(); while (guiaPagamentoIterator.hasNext()) { // Dados da guia de poagamento Object[] dadosGuiaPagamento = (Object[]) guiaPagamentoIterator.next(); // ID da guia de pagamento Integer numeroGuiaPagamento = (Integer) dadosGuiaPagamento[0]; // Data de Vencimento da guia de pagamento Date dataVencimentoGuia = (Date) dadosGuiaPagamento[1]; // �ltima data do m�s de arrecada��o // Date dataUltimoDiaArrecadacao = // Util.obterUltimaDataMes(Util.obterMes( // anoMesReferenciaArrecadacao), // Util.obterAno(anoMesReferenciaArrecadacao)); /* * 1.1.1. Caso n�o existam pagamentos para a guia de * pagamento correspondente a entrada do * parcelamento e a mesma esteja vencida seja menor * ou igual ou anterior � data corrente menos a * quantidade m�nima de dias para in�cio da cobran�a * da conta * * Alterado por Arthur Carvalho, Analista: Rosana * Carvalho. Data: 10/05/2010 */ if (dataVencimentoGuia.compareTo(Util.subtrairNumeroDiasDeUmaData(new Date(), sistemaParametros.getNumeroDiasVencimentoCobranca())) <= 0) { /* * Seleciona os pagamentos para a guia de * pagamento correspondente a entrada do * parcelamento. */ pagamento = repositorioCobranca.pesquisarPagamentoParaGuiaPagamentoDoParcelamento( numeroGuiaPagamento.toString(), idImovel); if (pagamento == null || pagamento.isEmpty()) { DebitoACobrarGeral debitoACobrarGeral = new DebitoACobrarGeral(); debitoACobrarGeral.setIndicadorHistorico(new Short("2")); debitoACobrarGeral.setUltimaAlteracao(new Date()); Integer idDebitoACobrarGeral = (Integer) this.getControladorUtil().inserir(debitoACobrarGeral); DebitoACobrar debitoACobrar = this.carregarDebitoACobrarEntradaParcelamentoNaoPago( idDebitoACobrarGeral, numeroGuiaPagamento, sistemaParametros); /*--------------- REGISTRAR TRANSA��O ----------------*/ RegistradorOperacao registradorOperacao = new RegistradorOperacao( Operacao.OPERACAO_DEBITO_A_COBRAR_INSERIR, debitoACobrar.getImovel().getId(), debitoACobrar.getId(), new UsuarioAcaoUsuarioHelper(Usuario.USUARIO_BATCH, UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO)); registradorOperacao.registrarOperacao(debitoACobrar); this.getControladorUtil().inserir(debitoACobrar); // FP 1.1.1.2 <<inclui>> [UC0108] - Obter // Quantidade de Economias por Categoria Collection colecaoCategorias = getControladorImovel().obterQuantidadeEconomiasCategoria( debitoACobrar.getImovel()); // FP 1.1.1.3 <<inclui>> [UC0185] - Obter // Valor por Categoria, passando o valor da // taxa Collection<BigDecimal> colecaoValorPorCategoria = getControladorImovel().obterValorPorCategoria( colecaoCategorias, debitoACobrar.getValorDebito()); // Cria as itera��es de categoria e valor Iterator iteratorCategoria = colecaoCategorias.iterator(); Iterator iteratorValorCategoria = colecaoValorPorCategoria.iterator(); // La�o para criar os d�bitos a cobrar por // categoria while (iteratorCategoria.hasNext()) { // Recupera a categoria Categoria categoria = (Categoria) iteratorCategoria.next(); // Recupera o valor da categoria BigDecimal valorPorCategoria = (BigDecimal) iteratorValorCategoria.next(); // Cria o d�bito a cobrar categoria DebitoACobrarCategoria debitoACobrarCategoria = new DebitoACobrarCategoria(); DebitoACobrarCategoriaPK debitoACobrarCategoriaPK = new DebitoACobrarCategoriaPK(debitoACobrar, categoria); debitoACobrarCategoria.setComp_id(debitoACobrarCategoriaPK); debitoACobrarCategoria.setDebitoACobrar(debitoACobrar); debitoACobrarCategoria.setCategoria(categoria); debitoACobrarCategoria.setQuantidadeEconomia(categoria.getQuantidadeEconomiasCategoria()); debitoACobrarCategoria.setValorCategoria(valorPorCategoria); debitoACobrarCategoria.setUltimaAlteracao(new Date()); // Inclui na tabela // DEBITO_A_COBRAR_CATEGORIA getControladorUtil().inserir(debitoACobrarCategoria); } // [UC0183] Inserir D�bito a Cobrar // this.getControladorFaturamento().inserirDebitoACobrar( // 1 , debitoACobrar, null, // debitoACobrar.getImovel(), null, null, // Usuario.USUARIO_BATCH); /* * Fim da Altera��o - Arthur Carvalho. */ // Cancelar guia de pagamento repositorioCobranca.cancelarGuiaPagamento(numeroGuiaPagamento); } } } } // Seleciona as contas referente � entrada de parcelamento colecaoConta = repositorioCobranca.pesquisarContaDoParcelamentoNaoPago(numeroParcelamentosMes); if (colecaoConta != null && !colecaoConta.isEmpty()) { Iterator contaIterator = colecaoConta.iterator(); while (contaIterator.hasNext()) { // Objeto conta Conta conta = (Conta) contaIterator.next(); /* * Seleciona os pagamentos para a conta * correspondente a entrada do parcelamento. */ pagamentoConta = repositorioCobranca.pesquisarPagamentoParaContaDoParcelamento(conta.getId().toString()); if (pagamentoConta == null || pagamentoConta.isEmpty()) { Collection colecaoContaManutencao = new ArrayList(); colecaoContaManutencao.add(conta); // [UC0149] Retirar Conta de Revis�o if (conta.getDataRevisao() != null) { this.getControladorFaturamento().retirarRevisaoConta(colecaoContaManutencao, null, Usuario.USUARIO_BATCH, false, null); } // [UC0151] Alterar Vencimento da Conta this.getControladorFaturamento().alterarVencimentoConta(colecaoContaManutencao, null, conta.getDataVencimentoOriginal(), Usuario.USUARIO_BATCH); // Desassociar a conta do parcelamento this.repositorioCobranca.desassociarContaParcelamento(conta.getId()); } } } } } getControladorBatch().encerrarUnidadeProcessamentoBatch(null, idUnidadeIniciada, false); } catch (Exception ex) { getControladorBatch().encerrarUnidadeProcessamentoBatch(ex, idUnidadeIniciada, true); ex.printStackTrace(); sessionContext.setRollbackOnly(); throw new EJBException(ex); } } protected DebitoACobrar carregarDebitoACobrarEntradaParcelamentoNaoPago(Integer idDebitoACobrarGeral, Integer idGuiaPagamento, SistemaParametro sistemaParametro) throws ControladorException { DebitoACobrar debitoACobrar = new DebitoACobrar(); FiltroGuiaPagamento filtroGuiaPagamento = new FiltroGuiaPagamento(); filtroGuiaPagamento.adicionarCaminhoParaCarregamentoEntidade("imovel.localidade"); filtroGuiaPagamento.adicionarCaminhoParaCarregamentoEntidade("imovel.quadra.setorComercial"); filtroGuiaPagamento.adicionarCaminhoParaCarregamentoEntidade("imovel.ligacaoAguaSituacao"); filtroGuiaPagamento.adicionarCaminhoParaCarregamentoEntidade("debitoTipo.financiamentoTipo"); filtroGuiaPagamento.adicionarCaminhoParaCarregamentoEntidade("lancamentoItemContabil"); filtroGuiaPagamento.adicionarParametro(new ParametroSimples(FiltroGuiaPagamento.ID, idGuiaPagamento)); Collection colecaoGuiaPagamento = this.getControladorUtil().pesquisar(filtroGuiaPagamento, GuiaPagamento.class.getName()); GuiaPagamento guiaPagamento = (GuiaPagamento) Util.retonarObjetoDeColecao(colecaoGuiaPagamento); // Mesmo Id gerado na tabela DEBITO_A_COBRAR_GERAL debitoACobrar.setId(idDebitoACobrarGeral); // Id do im�vel da guia de pagamento debitoACobrar.setImovel(guiaPagamento.getImovel()); // TIPO DO D�BITO = 33 DebitoTipo debitoTipo = new DebitoTipo(); debitoTipo.setId(DebitoTipo.ENTRADA_PARCELAMENTO); debitoACobrar.setDebitoTipo(debitoTipo); // Current Timestamp debitoACobrar.setGeracaoDebito(new Date()); // GPAG_AMREFERENCIADEBITO da guia de pagamento debitoACobrar.setAnoMesReferenciaDebito(guiaPagamento.getAnoMesReferenciaContabil()); // PARM_AMREFERENCIAARRECADACAO da tabela SISTEMA_PARAMETROS debitoACobrar.setAnoMesCobrancaDebito(sistemaParametro.getAnoMesArrecadacao()); // Maior valor entre o ano/mes da data corrente e o ano/mes de // referencia do faturamento // (PARM_AMREFERENCIAFATURAMENTO da tabela SISTEMA_PARAMETROS) if (sistemaParametro.getAnoMesFaturamento() >= Util.recuperaAnoMesDaData(new Date())) { debitoACobrar.setAnoMesReferenciaContabil(sistemaParametro.getAnoMesFaturamento()); } else { debitoACobrar.setAnoMesReferenciaContabil(Util.recuperaAnoMesDaData(new Date())); } // VALOR DO D�BITO = VALOR DA GUIA debitoACobrar.setValorDebito(guiaPagamento.getValorDebito()); // N�MERO DE PRESTA��ES = 1 debitoACobrar.setNumeroPrestacaoDebito(new Short("1")); // N�MERO DE PRESTA��ES COBRADAS = 0 debitoACobrar.setNumeroPrestacaoCobradas(ConstantesSistema.SET_ZERO); // Localidade = localidade da guia de pagamento. debitoACobrar.setLocalidade(guiaPagamento.getLocalidade()); // Quadra debitoACobrar.setQuadra(guiaPagamento.getImovel().getQuadra()); debitoACobrar.setNumeroQuadra(guiaPagamento.getImovel().getQuadra().getNumeroQuadra()); // CODIGO DO SETOR COMERCIAL debitoACobrar.setCodigoSetorComercial(guiaPagamento.getImovel().getQuadra().getSetorComercial().getCodigo()); // LOTE E SUBLOTE debitoACobrar.setNumeroLote(guiaPagamento.getImovel().getLote()); debitoACobrar.setNumeroSubLote(guiaPagamento.getImovel().getSubLote()); // PERCENTUAL DE FINANCIAMENTO debitoACobrar.setPercentualTaxaJurosFinanciamento(BigDecimal.ZERO); // Registro de Atendimento debitoACobrar.setRegistroAtendimento(null); // Ordem de Servico debitoACobrar.setOrdemServico(null); // Finaciamento tipo FinanciamentoTipo financiamentoTipo = new FinanciamentoTipo(); financiamentoTipo.setId(guiaPagamento.getFinanciamentoTipo().getId()); debitoACobrar.setFinanciamentoTipo(financiamentoTipo); // LANCAMENTO_ITEM_CONTABIL = LANCAMENTO_ITEM_CONTABIL DA GUIA debitoACobrar.setLancamentoItemContabil(guiaPagamento.getLancamentoItemContabil()); // Debito credito situacao Atual DebitoCreditoSituacao debitoCreditoSituacaoAtual = new DebitoCreditoSituacao(); debitoCreditoSituacaoAtual.setId(0); debitoACobrar.setDebitoCreditoSituacaoAtual(debitoCreditoSituacaoAtual); // Debito Credito Situacao Anterior DebitoCreditoSituacao debitoCreditoSituacaoAnterior = new DebitoCreditoSituacao(); debitoCreditoSituacaoAnterior.setId(null); debitoACobrar.setDebitoCreditoSituacaoAnterior(debitoCreditoSituacaoAnterior); // Parcelamento grupo = 1 documentos Emitidos ParcelamentoGrupo parcelamentoGrupo = new ParcelamentoGrupo(); parcelamentoGrupo.setId(ParcelamentoGrupo.DOCUMENTOS_EMITIDOS); debitoACobrar.setParcelamentoGrupo(parcelamentoGrupo); // FORMA DE COBRAN�A = 1 - COBRAN�A EM CONTA CobrancaForma cobrancaForma = new CobrancaForma(); cobrancaForma.setId(CobrancaForma.COBRANCA_EM_CONTA); debitoACobrar.setCobrancaForma(cobrancaForma); // Data e Hora correntes debitoACobrar.setUltimaAlteracao(new Date()); // Parcelmento = null debitoACobrar.setParcelamento(null); // Tipo de Documento = 6 DocumentoTipo documentoTipo = new DocumentoTipo(); documentoTipo.setId(DocumentoTipo.DEBITO_A_COBRAR); debitoACobrar.setDocumentoTipo(documentoTipo); // Debito a Cobrar Geral Origem debitoACobrar.setDebitoACobrarGeralOrigem(null); // Numero de Parcelas Total Bonus = null debitoACobrar.setNumeroParcelaBonus(null); // Ano Mes Referencia Prestacao = null debitoACobrar.setAnoMesReferenciaPrestacao(null); // numero de parcelas antecipadas = null debitoACobrar.setNumeroParcelasAntecipadas(null); // Usuario debitoACobrar.setUsuario(Usuario.USUARIO_BATCH); // Debito A cobrar Geral DebitoACobrarGeral debitoACobrarGeral = new DebitoACobrarGeral(); debitoACobrarGeral.setId(idDebitoACobrarGeral); debitoACobrar.setDebitoACobrarGeral(debitoACobrarGeral); return debitoACobrar; } /** * [UC0214] Efetuar Parcelamento de D�bitos * * retorna o maior valor entre o ano/m�s da data corrente e o ano/m�s de * referencia do faturamento (PARM_AMREFERENCIAFATURAMENTO da tabela * SISTEMA_PARAMETROS) * * @author Vivianne Sousa, Raphael Rossiter * @date 01/09/2008, 28/10/2010 */ public Integer obterReferenciaContabilParcelamentoOUConta(boolean isContaEntradaParcelamento, Integer anoMesVencimentoGuia, Integer anoMesReferenciaConta) throws ControladorException { /* * Maior valor entre o ano/m�s da data corrente, o ano/m�s de referencia * do faturamento (PARM_AMREFERENCIAFATURAMENTO da tabela * SISTEMA_PARAMETROS), o ano/m�s de vencimento da entrada de * parcelamento (GPAG_DTVENCIMENTO, caso exista entrada de parcelamento * e o maior ano/m�s de referencia da cole��o de contas, caso exista * (CNTA_AMREFERENCIACONTA da tabela CONTA))). */ SistemaParametro sistemaParametro = getControladorUtil().pesquisarParametrosDoSistema(); Integer anoMesCorrente = Util.getAnoMesComoInteger(new Date()); Integer anoMesFaturamento = sistemaParametro.getAnoMesFaturamento(); Integer referenciaContabil = anoMesFaturamento; if (anoMesCorrente.compareTo(anoMesFaturamento) == 1) { referenciaContabil = anoMesCorrente; } Date dataVencimentoEntradaParcelamento = this.obterDataVencimentoEntradaParcelamento(isContaEntradaParcelamento, sistemaParametro); if (dataVencimentoEntradaParcelamento != null) { Integer anoMesEntradaParcelamento = Util.getAnoMesComoInteger(dataVencimentoEntradaParcelamento); if (anoMesEntradaParcelamento.compareTo(referenciaContabil) == 1) { referenciaContabil = anoMesEntradaParcelamento; } } if (anoMesVencimentoGuia != null && isContaEntradaParcelamento) { if (anoMesVencimentoGuia.compareTo(referenciaContabil) == 1) { referenciaContabil = anoMesVencimentoGuia; } } if (anoMesReferenciaConta != null) { if (anoMesReferenciaConta.compareTo(referenciaContabil) == 1) { referenciaContabil = anoMesReferenciaConta; } } return referenciaContabil; } /** * Gerar e Emitir Extrato de D�bito [UC0349] Emitir Documento de Cobran�a * * @author Vivianne Sousa * @date 15/09/2008 */ public Date obterDataValidadeDocumentoCobranca(CobrancaDocumento cobrancaDocumento, Usuario usuario, Date maiorDataVencimentoContas) throws ControladorException { Date dataValidade = cobrancaDocumento.getEmissao(); try { if (dataValidade != null && cobrancaDocumento.getCobrancaAcao() != null && cobrancaDocumento.getCobrancaAcao().getNumeroDiasValidade() != null) { Calendar dataCalendar = Calendar.getInstance(); dataCalendar.setTime(dataValidade); dataCalendar.add(Calendar.DAY_OF_MONTH, cobrancaDocumento.getCobrancaAcao().getNumeroDiasValidade().intValue()); dataValidade = dataCalendar.getTime(); } else { boolean temPermissaoAlterarValidadeExtratoDebito = false; if (usuario != null) { // verifica se tem permiss�o para alterar a data de validade // do extrato de debito temPermissaoAlterarValidadeExtratoDebito = getControladorPermissaoEspecial() .verificarPermissaoAlterarValidadeExtratoDebito(usuario); } Short numeroDiasValidadeExtrato = 0; SistemaParametro sistemaParametro = getControladorUtil().pesquisarParametrosDoSistema(); // se tiver permiss�o e o numero de validade do extrato para // permiss�o especial n�o for nulo if (temPermissaoAlterarValidadeExtratoDebito && sistemaParametro.getNumeroDiasValidadeExtratoPermissaoEspecial() != null) { numeroDiasValidadeExtrato = sistemaParametro.getNumeroDiasValidadeExtratoPermissaoEspecial(); } else { numeroDiasValidadeExtrato = sistemaParametro.getNumeroDiasValidadeExtrato(); } dataValidade = Util.adicionarNumeroDiasDeUmaData(dataValidade, numeroDiasValidadeExtrato.intValue()); // Vivianne Sousa - 16/04/2009 - analista:Adriano Britto if (maiorDataVencimentoContas != null) { if (Util.compararData(maiorDataVencimentoContas, dataValidade) == 1) { dataValidade = maiorDataVencimentoContas; } } } } catch (ControladorException e) { e.printStackTrace(); throw new ControladorException("erro.sistema", e); } return dataValidade; } /** * [UC0870] - Gerar Movimento de Contas em Cobran�a por Empresa * * @author Rafael Corr�a * @date 17/04/2008 * * @param idRota * @param anoMesReferencia * @return boolean * @throws ControladorException */ public void gerarMovimentoContasEmCobranca(ComandoEmpresaCobrancaConta comandoEmpresaCobrancaConta, int idFuncionalidadeIniciada) throws ControladorException { int idUnidadeIniciada = 0; // ------------------------- // // Registrar o in�cio do processamento da Unidade de // Processamento // do Batch // // ------------------------- idUnidadeIniciada = getControladorBatch().iniciarUnidadeProcessamentoBatch(idFuncionalidadeIniciada, UnidadeProcessamento.COMANDO_EMPRESA_COBRANCA_CONTA, comandoEmpresaCobrancaConta.getId()); try { System.out.println("Cobran�a por Resultado - Iniciou Comando: " + comandoEmpresaCobrancaConta.getId()); UC0870GerarMovimentoContasEmCobrancaPorEmpresa gerarMovimentoContasEmCobrancaPorEmpresa = UC0870GerarMovimentoContasEmCobrancaPorEmpresa .getInstancia(repositorioCobranca); gerarMovimentoContasEmCobrancaPorEmpresa.gerarMovimentoContasEmCobranca(comandoEmpresaCobrancaConta); comandoEmpresaCobrancaConta.setDataExecucao(new Date()); comandoEmpresaCobrancaConta.setUltimaAlteracao(new Date()); getControladorUtil().atualizar(comandoEmpresaCobrancaConta); getControladorBatch().encerrarUnidadeProcessamentoBatch(null, idUnidadeIniciada, false); System.out.println("Cobran�a por Resultado - Finalizou Comando: " + comandoEmpresaCobrancaConta.getId()); } catch (Exception e) { getControladorBatch().encerrarUnidadeProcessamentoBatch(e, idUnidadeIniciada, true); // sessionContext.setRollbackOnly(); throw new EJBException(e); } } /** * [UC0214] Efetuar Parcelamento de D�bitos * * Calcula o valor da entrada do parcelamento * * @author Raphael Rossiter * @date 16/09/2008 * * @param helper * @param parcelamentoQuantidadePrestacao * @param valorTarifaMinimaAguaImovel * @param valorDebitoDesconto * @param valorEntradaSugerida * @param Collection * @return BigDecimal * @throws ControladorException */ public BigDecimal determinarValorEntradaParcelamento(ObterOpcoesDeParcelamentoHelper helper, ParcelamentoQuantidadePrestacao parcelamentoQuantidadePrestacao, BigDecimal valorTarifaMinimaAguaImovel, BigDecimal valorDebitoDesconto, BigDecimal valorEntradaSugerida, Collection colecaoContasParaParcelamento) throws ControladorException { BigDecimal percentualEntradaMinima = BigDecimal.ZERO; BigDecimal valorEntradaMinima = BigDecimal.ZERO; BigDecimal valorEntradaReparcelamento = BigDecimal.ZERO; /* * 5.3. Caso haja informa��o de percentual para c�lculo de valor * reparcelado (PQTR_PCVLRREPARCELADO da tabela * PARECLAMENTO_QUANTIDADE_PRESTACAO com valor diferente de nulo) */ BigDecimal percentualValorReparcelado = parcelamentoQuantidadePrestacao.getPercentualValorReparcelado(); if (percentualValorReparcelado != null && !percentualValorReparcelado.equals(new BigDecimal("0.00")) && !percentualValorReparcelado.equals(new BigDecimal("0"))) { percentualValorReparcelado = percentualValorReparcelado.setScale(Parcelamento.CASAS_DECIMAIS); // 5.3.1. O sistema dever� somar as parcelas vencidas e a vencer de // parcelamento ATIVO BigDecimal totalParcelasVencidas = BigDecimal.ZERO; BigDecimal totalParcelasAVencer = BigDecimal.ZERO; FiltroDebitoACobrar filtroDebitoACobrar = new FiltroDebitoACobrar(); filtroDebitoACobrar.adicionarParametro(new ParametroSimples(FiltroDebitoACobrar.IMOVEL_ID, helper.getIdImovel())); filtroDebitoACobrar.adicionarParametro(new ParametroSimples(FiltroDebitoACobrar.FINANCIAMENTO_TIPO, FinanciamentoTipo.PARCELAMENTO_AGUA, FiltroParametro.CONECTOR_OR, 3)); filtroDebitoACobrar.adicionarParametro(new ParametroSimples(FiltroDebitoACobrar.FINANCIAMENTO_TIPO, FinanciamentoTipo.PARCELAMENTO_ESGOTO, FiltroParametro.CONECTOR_OR)); filtroDebitoACobrar.adicionarParametro(new ParametroSimples(FiltroDebitoACobrar.FINANCIAMENTO_TIPO, FinanciamentoTipo.PARCELAMENTO_SERVICO)); Collection colecaoDebitoACobrarParcelamento = getControladorUtil() .pesquisar(filtroDebitoACobrar, DebitoACobrar.class.getName()); Iterator itDebitoACobrarParcelamento = colecaoDebitoACobrarParcelamento.iterator(); while (itDebitoACobrarParcelamento.hasNext()) { DebitoACobrar debitoACobrar = (DebitoACobrar) itDebitoACobrarParcelamento.next(); BigDecimal valorDebito = debitoACobrar.getValorTotalComBonus(); totalParcelasAVencer.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); totalParcelasAVencer = totalParcelasAVencer.add(valorDebito); } Collection colecaoDebitoCobradoParcelamento = null; if (helper.getColecaoContaValores() != null && !helper.getColecaoContaValores().isEmpty()) { Iterator contaValores = helper.getColecaoContaValores().iterator(); while (contaValores.hasNext()) { ContaValoresHelper contaValoresHelper = (ContaValoresHelper) contaValores.next(); FiltroDebitoCobrado filtroDebitoCobrado = new FiltroDebitoCobrado(); filtroDebitoCobrado.adicionarParametro(new ParametroSimples(FiltroDebitoCobrado.CONTA_ID, contaValoresHelper.getConta() .getId())); filtroDebitoCobrado.adicionarParametro(new ParametroSimples(FiltroDebitoCobrado.FINANCIAMENTO_TIPO, FinanciamentoTipo.PARCELAMENTO_AGUA, FiltroParametro.CONECTOR_OR, 3)); filtroDebitoCobrado.adicionarParametro(new ParametroSimples(FiltroDebitoCobrado.FINANCIAMENTO_TIPO, FinanciamentoTipo.PARCELAMENTO_ESGOTO, FiltroParametro.CONECTOR_OR)); filtroDebitoCobrado.adicionarParametro(new ParametroSimples(FiltroDebitoCobrado.FINANCIAMENTO_TIPO, FinanciamentoTipo.PARCELAMENTO_SERVICO)); colecaoDebitoCobradoParcelamento = getControladorUtil().pesquisar(filtroDebitoCobrado, DebitoCobrado.class.getName()); } } if (colecaoDebitoCobradoParcelamento != null && !colecaoDebitoCobradoParcelamento.isEmpty()) { Iterator itDebitoCobradoParcelamento = colecaoDebitoCobradoParcelamento.iterator(); while (itDebitoCobradoParcelamento.hasNext()) { DebitoCobrado debitoCobrado = (DebitoCobrado) itDebitoCobradoParcelamento.next(); BigDecimal vlPrestacao = debitoCobrado.getValorPrestacao(); totalParcelasVencidas.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); totalParcelasVencidas = totalParcelasVencidas.add(vlPrestacao); } } BigDecimal valorTotalParcelas = totalParcelasAVencer.add(totalParcelasVencidas); /* * 5.3.2. valor da entrada reparcelamento = (valor calculo * debitoACobrar + debitoCobrado) * (PQTP_PCVLRREPARCELADO/100) */ valorEntradaReparcelamento = valorTotalParcelas.multiply(percentualValorReparcelado.divide(ConstantesSistema.CEM)); } // 5.4.1.1. Caso o valor de percentual m�nimo esteja informado if (parcelamentoQuantidadePrestacao.getPercentualMinimoEntrada() != null && !parcelamentoQuantidadePrestacao.getPercentualMinimoEntrada().setScale(Parcelamento.CASAS_DECIMAIS) .equals(new BigDecimal("0.00"))) { percentualEntradaMinima = parcelamentoQuantidadePrestacao.getPercentualMinimoEntrada().setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); valorEntradaMinima = valorDebitoDesconto.multiply(percentualEntradaMinima.divide(ConstantesSistema.CEM)); } // 5.4.1.2. Caso o valor de percentual tarifa m�nima esteja informado if (parcelamentoQuantidadePrestacao.getPercentualTarifaMinimaImovel() != null && !parcelamentoQuantidadePrestacao.getPercentualTarifaMinimaImovel().setScale(Parcelamento.CASAS_DECIMAIS) .equals(new BigDecimal("0.00"))) { percentualEntradaMinima = parcelamentoQuantidadePrestacao.getPercentualTarifaMinimaImovel().setScale( Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); // valorEntradaMinima = // valorDebitoDesconto.multiply(percentualEntradaMinima.divide(valorCem)); valorEntradaMinima = valorTarifaMinimaAguaImovel.multiply(percentualEntradaMinima.divide(ConstantesSistema.CEM)); } // 5.4.1.3. ParcelamentoFaixaValor parcelamentoFaixaValorMenor = null; try { parcelamentoFaixaValorMenor = repositorioCobranca.obterParcelamentoFaixaValor(parcelamentoQuantidadePrestacao.getId(), valorDebitoDesconto); } catch (ErroRepositorioException e) { e.printStackTrace(); } if (parcelamentoFaixaValorMenor != null) { percentualEntradaMinima = parcelamentoFaixaValorMenor.getPercentualFaixa().setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); valorEntradaMinima = valorDebitoDesconto.multiply(percentualEntradaMinima.divide(ConstantesSistema.CEM)); } // Caso o indicador de m�dia dos valores das contas esteja selecionado // com SIM if (parcelamentoQuantidadePrestacao.getIndicadorMediaValorContas() == ConstantesSistema.SIM.shortValue()) { BigDecimal qtdContas = BigDecimal.ZERO; BigDecimal valorTotalConta = BigDecimal.ZERO; BigDecimal valorTotalAcrescimosImpontualidade = BigDecimal.ZERO; BigDecimal valorTotalContaMaisAcrescimosImpontualidade = BigDecimal.ZERO; if (colecaoContasParaParcelamento != null && !colecaoContasParaParcelamento.isEmpty()) { Iterator contaValores = colecaoContasParaParcelamento.iterator(); while (contaValores.hasNext()) { ContaValoresHelper contaValoresHelper = (ContaValoresHelper) contaValores.next(); if (contaValoresHelper.getIndicadorContasDebito() == null) { // VALOR TOTAL CONTAS valorTotalConta = valorTotalConta.add(contaValoresHelper.getValorTotalConta()); // VALOR TOTAL DOS ACR�SCIMOS POR IMPONTUALIDADE valorTotalAcrescimosImpontualidade.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); valorTotalAcrescimosImpontualidade = valorTotalAcrescimosImpontualidade.add(contaValoresHelper .getValorTotalContaValoresParcelamento()); // QUANTIDADE DE CONTAS qtdContas = qtdContas.add(BigDecimal.ONE); } } } /* * O valor da entrada ser� (o valor total das contas + o valor total * dos acrescimos) / quantidade de contas. */ valorTotalContaMaisAcrescimosImpontualidade = valorTotalConta.add(valorTotalAcrescimosImpontualidade); if (qtdContas.compareTo(qtdContas) > 0) { valorEntradaMinima = valorTotalContaMaisAcrescimosImpontualidade.divide(qtdContas, Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); } } BigDecimal valorEntradaUltimaConta = null; if (parcelamentoQuantidadePrestacao.getIndicadorValorUltimaContaEmAtraso() != null && parcelamentoQuantidadePrestacao.getIndicadorValorUltimaContaEmAtraso().equals(ConstantesSistema.SIM)) { Conta ultimaConta = getControladorFaturamento().pesquisarUltimaContaDoImovel(helper.getIdImovel()); /* * Colocado por Raphael Rossiter em 10/09/2010 - CRC5075 */ if (ultimaConta == null) { throw new ControladorException("atencao.imovel_sem_conta"); } valorEntradaUltimaConta = ultimaConta.getValorTotal(); } // 5.4.1.4. Valor da Entrada return obterValorEntradaParcelamento(helper.getValorEntradaInformado(), valorEntradaMinima, valorEntradaReparcelamento, helper.getUsuario(), valorEntradaSugerida, valorEntradaUltimaConta); } /** * [UC0214] Efetuar Parcelamento de D�bitos * * Calcula o valor total do desconto para os acr�scimos por impontualidade * * @author Raphael Rossiter * @date 23/09/2008 * * @param DeterminarValorDescontoAcrescimosImpontualidadeHelper * @return BigDecimal * @throws ControladorException */ public BigDecimal determinarValorDescontoAcrescimosImpontualidade(DeterminarValorDescontoAcrescimosImpontualidadeHelper helper) throws ControladorException { // Calcula o valor do desconto nos acrescimos por impontualidade // Percentual de descontos BigDecimal percentualDescontoMulta = BigDecimal.ZERO; BigDecimal percentualDescontoJurosMora = BigDecimal.ZERO; BigDecimal percentualDescontoAtualizacaoMonetaria = BigDecimal.ZERO; // fim // Valor total de acr�scimos por item BigDecimal valorTotalAcrescimosImpontualidadeMulta = BigDecimal.ZERO; BigDecimal valorTotalAcrescimosImpontualidadeJurosMora = BigDecimal.ZERO; BigDecimal valorTotalAcrescimosImpontualidadeAtualizacaoMonetaria = BigDecimal.ZERO; // Guia Pagamento BigDecimal valorTotalAcrescimosImpontualidadeGuiaPagamentoMulta = BigDecimal.ZERO; BigDecimal valorTotalAcrescimosImpontualidadeGuiaPagamentoJurosMora = BigDecimal.ZERO; BigDecimal valorTotalAcrescimosImpontualidadeGuiaPagamentoAtualizacaoMonetaria = BigDecimal.ZERO; // fim // Valor dos descontos por item BigDecimal valorDescontoAcrecismosImpotualidadeMulta = BigDecimal.ZERO; BigDecimal valorDescontoAcrecismosImpotualidadeJurosMora = BigDecimal.ZERO; BigDecimal valorDescontoAcrecismosImpotualidadeAtualizacaoMonetaria = BigDecimal.ZERO; // Guia Pagamento BigDecimal valorDescontoAcrecismosImpotualidadeGuiaPagamentoMulta = BigDecimal.ZERO; BigDecimal valorDescontoAcrecismosImpotualidadeGuiaPagamentoJurosMora = BigDecimal.ZERO; BigDecimal valorDescontoAcrecismosImpotualidadeGuiaPagamentoAtualizacaoMonetaria = BigDecimal.ZERO; // fim BigDecimal valorDescontoAcrecismosImpotualidade = BigDecimal.ZERO; // BigDecimal percentualDesconto = BigDecimal.ZERO; BigDecimal valorTotalAcrescimosImpontualidade = BigDecimal.ZERO; // CALCULANDO O PERCENTUAL DO DESCONTO percentualDescontoMulta = Util.dividirArredondando( helper.getParcelamentoPerfil().getPercentualDescontoAcrescimoMulta() .setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO), ConstantesSistema.CEM); percentualDescontoJurosMora = Util.dividirArredondando(helper.getParcelamentoPerfil().getPercentualDescontoAcrescimoJurosMora() .setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO), ConstantesSistema.CEM); percentualDescontoAtualizacaoMonetaria = Util.dividirArredondando( helper.getParcelamentoPerfil().getPercentualDescontoAcrescimoAtualizacaoMonetaria() .setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO), ConstantesSistema.CEM); // TOTALIZANDO O VALOR DOS ACR�SCIMOS POR IMPONTUALIDADE (ANTIGUIDADE + // GUIA_PAGAMENTO) valorTotalAcrescimosImpontualidadeMulta = helper.getValorTotalAcrescimosImpontualidadePorAntiguidadeMulta().setScale( Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); valorTotalAcrescimosImpontualidadeJurosMora = helper.getValorTotalAcrescimosImpontualidadePorAntiguidadeJurosMora().setScale( Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); valorTotalAcrescimosImpontualidadeAtualizacaoMonetaria = helper .getValorTotalAcrescimosImpontualidadePorAntiguidadeAtualizacaoMonetaria().setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); // Guia Pagamento valorTotalAcrescimosImpontualidadeGuiaPagamentoMulta = helper.getValorTotalAcrescimosImpontualidadeGuiaPagamentoMulta().setScale( Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); valorTotalAcrescimosImpontualidadeGuiaPagamentoJurosMora = helper.getValorTotalAcrescimosImpontualidadeGuiaPagamentoJurosMora() .setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); valorTotalAcrescimosImpontualidadeGuiaPagamentoAtualizacaoMonetaria = helper .getValorTotalAcrescimosImpontualidadeGuiaPagamentoAtualizacaoMonetaria().setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); // CALCULANDO O DESCONTO valorDescontoAcrecismosImpotualidadeMulta = valorTotalAcrescimosImpontualidadeMulta.multiply(percentualDescontoMulta); valorDescontoAcrecismosImpotualidadeJurosMora = valorTotalAcrescimosImpontualidadeJurosMora.multiply(percentualDescontoJurosMora); valorDescontoAcrecismosImpotualidadeAtualizacaoMonetaria = valorTotalAcrescimosImpontualidadeAtualizacaoMonetaria .multiply(percentualDescontoAtualizacaoMonetaria); // Guia Pagamento valorDescontoAcrecismosImpotualidadeGuiaPagamentoMulta = valorTotalAcrescimosImpontualidadeGuiaPagamentoMulta .multiply(percentualDescontoMulta); valorDescontoAcrecismosImpotualidadeGuiaPagamentoJurosMora = valorTotalAcrescimosImpontualidadeGuiaPagamentoJurosMora .multiply(percentualDescontoJurosMora); valorDescontoAcrecismosImpotualidadeGuiaPagamentoAtualizacaoMonetaria = valorTotalAcrescimosImpontualidadeGuiaPagamentoAtualizacaoMonetaria .multiply(percentualDescontoAtualizacaoMonetaria); // VALORES DOS DEBITOS A COBRAR E COBRADOS valorDescontoAcrecismosImpotualidade = valorDescontoAcrecismosImpotualidade.add(valorDescontoAcrecismosImpotualidadeMulta) .add(valorDescontoAcrecismosImpotualidadeJurosMora).add(valorDescontoAcrecismosImpotualidadeAtualizacaoMonetaria) .add(valorDescontoAcrecismosImpotualidadeGuiaPagamentoMulta) .add(valorDescontoAcrecismosImpotualidadeGuiaPagamentoJurosMora) .add(valorDescontoAcrecismosImpotualidadeGuiaPagamentoAtualizacaoMonetaria) .add(helper.getValorDescontoAcrescimosImpontualidadeRDEspecial()); valorDescontoAcrecismosImpotualidade.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); return valorDescontoAcrecismosImpotualidade; } /** * [UC0214] Efetuar Parcelamento de D�bitos * * Calcula o valor total dos descontos para pagamento � vista * * @author Raphael Rossiter * @date 23/09/2008, 12/01/2011 * * @param DeterminarValorDescontoPagamentoAVistaHelper * @param DeterminarValorDescontoAcrescimosImpontualidadeHelper * @param isParcelamento * @return BigDecimal * @throws ControladorException */ public BigDecimal determinarValorDescontoPagamentoAVista(DeterminarValorDescontoPagamentoAVistaHelper helper, DeterminarValorDescontoAcrescimosImpontualidadeHelper valorDescontoAcrescimos, boolean isParcelamento) throws ControladorException { BigDecimal retorno = BigDecimal.ZERO; BigDecimal valorTotalDescontos = BigDecimal.ZERO; // Calcula o valor de desconto por inatividade para pagamento a vista if (helper.getValorDescontoInatividadeAVista() != null && !helper.getValorDescontoInatividadeAVista().equals(new BigDecimal("0.00"))) { // SOMANDO O VALOR DO DESCONTO DOS ACRESCIMOS + O VALOR DO DESCONTO POR INATIVIDADE valorTotalDescontos = helper.getValorDescontoAcrecismosImpotualidade().setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO) .add(helper.getValorDescontoInatividadeAVista().setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO)); } else { // SOMANDO O VALOR DO DESCONTO DOS ACRESCIMOS + O VALOR DO DESCONTO POR INATIVIDADE valorTotalDescontos = helper.getValorDescontoAcrecismosImpotualidade().setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO) .add(helper.getValorDescontoInatividade().setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO)); } // SOMANDO O VALOR DO DESCONTO POR FAIXA DE REFERENCIA DA CONTA valorTotalDescontos = valorTotalDescontos.add(helper.getValorDescontoFaixaReferenciaConta().setScale( Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO)); // SOMANDO O VALOR DO DESCONTO POR ANTIGUIDADE valorTotalDescontos = valorTotalDescontos.add(helper.getValorDescontoAntiguidade().setScale( Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO)); // SOMANDO O VALOR DO DESCONTO DAS SAN��ES valorTotalDescontos = valorTotalDescontos.add(helper.getValorDescontoSancoes().setScale( Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO)); // SOMANDO O VALOR DO DESCONTO DA TARIFA SOCIAL valorTotalDescontos = valorTotalDescontos.add(helper.getValorDescontoTarifaSocial().setScale( Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO)); if (helper.getParcelamentoPerfil().getPercentualDescontoAcrescimoPagamentoAVista() != null && !helper.getParcelamentoPerfil().getPercentualDescontoAcrescimoPagamentoAVista().equals(new BigDecimal("0.00"))) { // SOMANDO O VALOR TOTAL DOS DESCONTOS retorno = retorno.add(valorTotalDescontos); retorno = retorno.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); // OBTENDO O VALOR TOTAL DO D�BITO ATUALIZADO Object[] valorDebitoTotalEAcrescimoImpontualidadeTotal = this.obterValorTotalDebitoAtualizadoParaParcelamento( helper.getObterOpcoesDeParcelamentoHelper().getIdImovel(), helper.getObterOpcoesDeParcelamentoHelper().getAnoMesInicialReferenciaDebito(), helper.getAnoMesLimiteMaximo(), helper.getObterOpcoesDeParcelamentoHelper().getIndicadoresParcelamentoHelper(), helper.getParcelamentoPerfil(), helper.getResolucaoDiretoria()); BigDecimal valorDebitoTotalAtualizado = BigDecimal.ZERO; BigDecimal valorAcrescimosImpontualidadeTotal = BigDecimal.ZERO; if (valorDebitoTotalEAcrescimoImpontualidadeTotal != null) { valorDebitoTotalAtualizado = (BigDecimal) valorDebitoTotalEAcrescimoImpontualidadeTotal[0]; valorAcrescimosImpontualidadeTotal = (BigDecimal) valorDebitoTotalEAcrescimoImpontualidadeTotal[1]; } if (helper.getResolucaoDiretoria().getIndicadorDescontoSoEmContaAVista().equals(ConstantesSistema.SIM)) { Object[] debitoACobrarParcelamentoImovel = this.pesquisaSomatorioValorDebitoACobrarParcelamentoImovel( helper.getObterOpcoesDeParcelamentoHelper().getIdImovel(), helper.getAnoMesLimiteMaximo()); BigDecimal somatorioValorDebitoACobrarParcelamento = (BigDecimal) debitoACobrarParcelamentoImovel[0]; valorDebitoTotalAtualizado = valorDebitoTotalAtualizado.add(somatorioValorDebitoACobrarParcelamento); if (helper.getValorCreditoARealizar() != null) { valorDebitoTotalAtualizado = valorDebitoTotalAtualizado.subtract(helper.getValorCreditoARealizar()); } } if (valorDebitoTotalAtualizado.compareTo(BigDecimal.ZERO) == 1) { BigDecimal descontoAVistaAcrescimoImpontualidade = BigDecimal.ZERO; if (helper.getParcelamentoPerfil().getPercentualDescontoAcrescimoPagamentoAVista().compareTo(new BigDecimal("0.00")) == 1) { // CALCULANDO O PERCENTUAL DO DESCONTO DOS ACRESCIMOS IMPONTUALIDADE BigDecimal percentualDescontoAcrescimoImpontualidade = Util.dividirArredondando( helper.getParcelamentoPerfil().getPercentualDescontoAcrescimoPagamentoAVista(),ConstantesSistema.CEM); descontoAVistaAcrescimoImpontualidade = valorAcrescimosImpontualidadeTotal .multiply(percentualDescontoAcrescimoImpontualidade); valorTotalDescontos = valorTotalDescontos.add(descontoAVistaAcrescimoImpontualidade); } // se so entrar as contas para calcular o desconto a vista, n�o // subtrair do valor das conta os 'descontos' // o PercentualDescontoAVista vai ser aplicado diretamente no valor total das contas if (helper.getResolucaoDiretoria().getIndicadorDescontoSoEmContaAVista().equals(ConstantesSistema.NAO)) { valorDebitoTotalAtualizado = valorDebitoTotalAtualizado.subtract(valorTotalDescontos); } // CALCULANDO O PERCENTUAL DO DESCONTO BigDecimal percentualDesconto = Util.dividirArredondando(helper.getParcelamentoPerfil().getPercentualDescontoAcrescimoPagamentoAVista(), ConstantesSistema.CEM); BigDecimal descontoAVista = valorDebitoTotalAtualizado.multiply(percentualDesconto); descontoAVista = descontoAVista.add(descontoAVistaAcrescimoImpontualidade); retorno = retorno.add(descontoAVista); retorno.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); } } else { BigDecimal valorTotalAcrescimosImpontualidade = this.obterValorTotalAcrescimosImpontualidadeParaParcelamento( helper.getObterOpcoesDeParcelamentoHelper(), helper.getAnoMesLimiteMaximo(), isParcelamento); if (valorTotalDescontos.compareTo(valorTotalAcrescimosImpontualidade) == 1) { retorno = valorTotalDescontos; } else { retorno = valorTotalAcrescimosImpontualidade; } } return retorno; } /** * [UC0214] Efetuar Parcelamento de D�bitos * * Verificar a exist�ncia de um fator para c�lculo da quantidade de parcelas * * @author Raphael Rossiter * @date 23/09/2008 * * @param Collection * @param parcelamentoQuantidadePrestacao * @return Short * @throws ControladorException */ public Short determinarQuantidadeMaximaPrestacoes(Collection colecaoContasParaParcelamento, ParcelamentoQuantidadePrestacao parcelamentoQuantidadePrestacao) throws ControladorException { int quantidadeMaximaPrestacoes = 0; /* * Caso exista fator informado para o c�lculo da quantidade de * presta��es, o sistema dever� colocar como quantidade m�xima de * presta��es o resultado da multiplica��o da quantidade de contas do * parcelamento pelo fator obtido limitando a quantidade de presta��es * pela quantidade m�xima de presta��es informada. */ if (parcelamentoQuantidadePrestacao.getFatorQuantidadePrestacoes() != null) { int quantidadeContas = 0; if (colecaoContasParaParcelamento != null && !colecaoContasParaParcelamento.isEmpty()) { Iterator contaValores = colecaoContasParaParcelamento.iterator(); while (contaValores.hasNext()) { ContaValoresHelper contaValoresHelper = (ContaValoresHelper) contaValores.next(); if (contaValoresHelper.getIndicadorContasDebito() == null) { quantidadeContas++; } } } quantidadeMaximaPrestacoes = parcelamentoQuantidadePrestacao.getFatorQuantidadePrestacoes() * quantidadeContas; if (quantidadeMaximaPrestacoes > parcelamentoQuantidadePrestacao.getQuantidadeMaximaPrestacao().intValue()) { quantidadeMaximaPrestacoes = parcelamentoQuantidadePrestacao.getQuantidadeMaximaPrestacao().intValue(); } } /* * Caso contr�rio, o sistema calcula os seguintes valores limitando a * quantidade de presta��es pela quantidade m�xima de presta��es * informada. */ else { quantidadeMaximaPrestacoes = parcelamentoQuantidadePrestacao.getQuantidadeMaximaPrestacao().intValue(); } return new Short(String.valueOf(quantidadeMaximaPrestacoes)); } /** * [UC0214] Efetuar Parcelamento Debito * * @author Vivianne Sousa * @created 20/09/2007 * * @param idImovel * @param inicioIntervaloParcelamento * @param fimIntervaloParcelamento * @param indicadoresParcelamentoHelper * @return * @throws ErroRepositorioException */ public BigDecimal obterValorDescontoPagamentoAVista(Integer idImovel, Integer inicioIntervaloParcelamento, Integer fimIntervaloParcelamento, IndicadoresParcelamentoHelper indicadoresParcelamentoHelper, ParcelamentoPerfil parcelamentoPerfil, BigDecimal valorDescontos) throws ControladorException { BigDecimal valorDescontoPagamentoAVista = BigDecimal.ZERO; if (fimIntervaloParcelamento.compareTo(inicioIntervaloParcelamento) < 0) { fimIntervaloParcelamento = inicioIntervaloParcelamento; } ObterDebitoImovelOuClienteHelper obterDebitoImovelOuCliente = obterDebitoImovelOuCliente(1, // Indicador // de // d�bito // do // im�vel idImovel.toString(), // Matr�cula do im�vel null, // C�digo do cliente null, // Tipo de rela��o cliente im�vel inicioIntervaloParcelamento.toString(), // Refer�ncia inicial do // d�bito fimIntervaloParcelamento.toString(), // Fim do d�bito Util.converteStringParaDate("01/01/0001"), // Inicio vencimento Util.converteStringParaDate("31/12/9999"), // Fim vencimento 1, // Indicador de pagamento indicadoresParcelamentoHelper.getIndicadorContasRevisao(), // conta // em // revis�o indicadoresParcelamentoHelper.getIndicadorDebitosACobrar(), // D�bito // a // cobrar indicadoresParcelamentoHelper.getIndicadorCreditoARealizar(), // cr�dito // a // realizar 1, // Indicador de notas promiss�rias indicadoresParcelamentoHelper.getIndicadorGuiasPagamento(), // guias // pagamento indicadoresParcelamentoHelper.getIndicadorAcrescimosImpotualidade(), // acr�scimos // impontualidade true, indicadoresParcelamentoHelper.getIndicadorDividaAtiva() // divida // ativa ); Collection<ContaValoresHelper> colecaoContaValores = obterDebitoImovelOuCliente.getColecaoContasValores(); if (colecaoContaValores != null && !colecaoContaValores.isEmpty() && parcelamentoPerfil.getParcelaQuantidadeMinimaFatura() != null && colecaoContaValores.size() >= parcelamentoPerfil.getParcelaQuantidadeMinimaFatura()) { // Para o c�lculo do D�bito Total Atualizado BigDecimal valorTotalContas = BigDecimal.ZERO; BigDecimal valorTotalAcrescimoImpontualidade = BigDecimal.ZERO; BigDecimal valorTotalAcrescimoImpontualidadeContas = BigDecimal.ZERO; BigDecimal valorTotalAcrescimoImpontualidadeGuias = BigDecimal.ZERO; BigDecimal valorTotalRestanteServicosACobrar = BigDecimal.ZERO; BigDecimal valorTotalRestanteServicosACobrarCurtoPrazo = BigDecimal.ZERO; BigDecimal valorTotalRestanteServicosACobrarLongoPrazo = BigDecimal.ZERO; BigDecimal valorTotalRestanteParcelamentosACobrar = BigDecimal.ZERO; BigDecimal valorTotalRestanteParcelamentosACobrarCurtoPrazo = BigDecimal.ZERO; BigDecimal valorTotalRestanteParcelamentosACobrarLongoPrazo = BigDecimal.ZERO; BigDecimal valorTotalGuiasPagamento = BigDecimal.ZERO; BigDecimal valorRestanteACobrar = BigDecimal.ZERO; BigDecimal valorAtualizacaoMonetaria = BigDecimal.ZERO; BigDecimal valorJurosMora = BigDecimal.ZERO; BigDecimal valorMulta = BigDecimal.ZERO; BigDecimal valorDebitoTotalAtualizado = BigDecimal.ZERO; BigDecimal valorCreditoARealizar = BigDecimal.ZERO; if (colecaoContaValores != null && !colecaoContaValores.isEmpty()) { Iterator contaValores = colecaoContaValores.iterator(); while (contaValores.hasNext()) { ContaValoresHelper contaValoresHelper = (ContaValoresHelper) contaValores.next(); valorTotalContas.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); valorTotalContas = valorTotalContas.add(contaValoresHelper.getValorTotalConta()); if (contaValoresHelper.getValorAtualizacaoMonetaria() != null && !contaValoresHelper.getValorAtualizacaoMonetaria().equals("")) { valorAtualizacaoMonetaria.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); valorAtualizacaoMonetaria = valorAtualizacaoMonetaria.add(contaValoresHelper.getValorAtualizacaoMonetaria() .setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO)); } if (contaValoresHelper.getValorJurosMora() != null && !contaValoresHelper.getValorJurosMora().equals("")) { valorJurosMora.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); valorJurosMora = valorJurosMora.add(contaValoresHelper.getValorJurosMora().setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO)); } if (contaValoresHelper.getValorMulta() != null && !contaValoresHelper.getValorMulta().equals("")) { valorMulta.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); valorMulta = valorMulta.add(contaValoresHelper.getValorMulta().setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO)); } // Para c�lculo do Acrescimo de Impontualidade valorTotalAcrescimoImpontualidadeContas.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); valorTotalAcrescimoImpontualidadeContas = valorTotalAcrescimoImpontualidadeContas.add(contaValoresHelper .getValorTotalContaValoresParcelamento()); } } // Guias de Pagamento if (indicadoresParcelamentoHelper.getIndicadorGuiasPagamento().equals(ConstantesSistema.SIM.intValue())) { Collection<GuiaPagamentoValoresHelper> colecaoGuiaPagamentoValores = obterDebitoImovelOuCliente .getColecaoGuiasPagamentoValores(); if (colecaoGuiaPagamentoValores != null && !colecaoGuiaPagamentoValores.isEmpty()) { Iterator guiaPagamentoValores = colecaoGuiaPagamentoValores.iterator(); while (guiaPagamentoValores.hasNext()) { GuiaPagamentoValoresHelper guiaPagamentoValoresHelper = (GuiaPagamentoValoresHelper) guiaPagamentoValores.next(); valorTotalGuiasPagamento.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); valorTotalGuiasPagamento = valorTotalGuiasPagamento.add(guiaPagamentoValoresHelper.getGuiaPagamento() .getValorDebito()); if (guiaPagamentoValoresHelper.getValorAtualizacaoMonetaria() != null && !guiaPagamentoValoresHelper.getValorAtualizacaoMonetaria().equals("")) { valorAtualizacaoMonetaria.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); valorAtualizacaoMonetaria = valorAtualizacaoMonetaria .add(guiaPagamentoValoresHelper.getValorAtualizacaoMonetaria().setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO)); } if (guiaPagamentoValoresHelper.getValorJurosMora() != null && !guiaPagamentoValoresHelper.getValorJurosMora().equals("")) { valorJurosMora.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); valorJurosMora = valorJurosMora.add(guiaPagamentoValoresHelper.getValorJurosMora().setScale( Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO)); } if (guiaPagamentoValoresHelper.getValorMulta() != null && !guiaPagamentoValoresHelper.getValorMulta().equals("")) { valorMulta.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); valorMulta = valorMulta.add(guiaPagamentoValoresHelper.getValorMulta().setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO)); } // Para c�lculo do Acrescimo de Impontualidade valorTotalAcrescimoImpontualidadeGuias.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); valorTotalAcrescimoImpontualidadeGuias = valorTotalAcrescimoImpontualidadeGuias.add(guiaPagamentoValoresHelper .getValorAcrescimosImpontualidade()); } } } // Acrescimos por Impotualidade BigDecimal retornoSoma = new BigDecimal("0.00"); if (indicadoresParcelamentoHelper.getIndicadorAcrescimosImpotualidade().equals(ConstantesSistema.SIM.intValue())) { retornoSoma.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); retornoSoma = retornoSoma.add(valorTotalAcrescimoImpontualidadeContas); retornoSoma = retornoSoma.add(valorTotalAcrescimoImpontualidadeGuias); } // Para o c�lculo do D�bito Total Atualizado valorTotalAcrescimoImpontualidade = retornoSoma; // Debitos A Cobrar if (indicadoresParcelamentoHelper.getIndicadorDebitosACobrar().equals(ConstantesSistema.SIM.intValue())) { // [FS0022]-Verificar exist�ncia de juros sobre im�vel Collection colecaoDebitoACobrar = obterDebitoImovelOuCliente.getColecaoDebitoACobrar(); if (colecaoDebitoACobrar != null && !colecaoDebitoACobrar.isEmpty()) { Iterator debitoACobrarValores = colecaoDebitoACobrar.iterator(); final int indiceCurtoPrazo = 0; final int indiceLongoPrazo = 1; while (debitoACobrarValores.hasNext()) { DebitoACobrar debitoACobrar = (DebitoACobrar) debitoACobrarValores.next(); // [FS0022]-Verificar exist�ncia de juros sobre im�vel if (debitoACobrar.getDebitoTipo().getId() != null && !debitoACobrar.getDebitoTipo().getId().equals(DebitoTipo.JUROS_SOBRE_PARCELAMENTO)) { // Debitos A Cobrar - Servi�o if (debitoACobrar.getFinanciamentoTipo().getId().equals(FinanciamentoTipo.SERVICO_NORMAL)) { // [SB0001] Obter Valores de Curto e Longo Prazo valorRestanteACobrar = debitoACobrar.getValorTotal(); BigDecimal[] valoresDeCurtoELongoPrazo = getControladorFaturamento().obterValorCurtoELongoPrazo( debitoACobrar.getNumeroPrestacaoDebito(), debitoACobrar.getNumeroPrestacaoCobradas(), valorRestanteACobrar); valorTotalRestanteServicosACobrarCurtoPrazo.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); valorTotalRestanteServicosACobrarCurtoPrazo = valorTotalRestanteServicosACobrarCurtoPrazo .add(valoresDeCurtoELongoPrazo[indiceCurtoPrazo]); valorTotalRestanteServicosACobrarLongoPrazo.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); valorTotalRestanteServicosACobrarLongoPrazo = valorTotalRestanteServicosACobrarLongoPrazo .add(valoresDeCurtoELongoPrazo[indiceLongoPrazo]); } // Debitos A Cobrar - Parcelamento if (debitoACobrar.getFinanciamentoTipo().getId().equals(FinanciamentoTipo.PARCELAMENTO_AGUA) || debitoACobrar.getFinanciamentoTipo().getId().equals(FinanciamentoTipo.PARCELAMENTO_ESGOTO) || debitoACobrar.getFinanciamentoTipo().getId().equals(FinanciamentoTipo.PARCELAMENTO_SERVICO)) { // [SB0001] Obter Valores de Curto e Longo Prazo valorRestanteACobrar = debitoACobrar.getValorTotal(); BigDecimal[] valoresDeCurtoELongoPrazo = getControladorFaturamento().obterValorCurtoELongoPrazo( debitoACobrar.getNumeroPrestacaoDebito(), debitoACobrar.getNumeroPrestacaoCobradas(), valorRestanteACobrar); valorTotalRestanteParcelamentosACobrarCurtoPrazo.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); valorTotalRestanteParcelamentosACobrarCurtoPrazo = valorTotalRestanteParcelamentosACobrarCurtoPrazo .add(valoresDeCurtoELongoPrazo[indiceCurtoPrazo]); valorTotalRestanteParcelamentosACobrarLongoPrazo.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); valorTotalRestanteParcelamentosACobrarLongoPrazo = valorTotalRestanteParcelamentosACobrarLongoPrazo .add(valoresDeCurtoELongoPrazo[indiceLongoPrazo]); } } } // Servi�os valorTotalRestanteServicosACobrar.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); valorTotalRestanteServicosACobrar = valorTotalRestanteServicosACobrarCurtoPrazo .add(valorTotalRestanteServicosACobrarLongoPrazo); // Parcelamentos valorTotalRestanteParcelamentosACobrar.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); valorTotalRestanteParcelamentosACobrar = valorTotalRestanteParcelamentosACobrarCurtoPrazo .add(valorTotalRestanteParcelamentosACobrarLongoPrazo); } } // Cr�dito A Realizar if (indicadoresParcelamentoHelper.getIndicadorCreditoARealizar().equals(ConstantesSistema.SIM.intValue())) { Collection<CreditoARealizar> colecaoCreditoARealizar = obterDebitoImovelOuCliente.getColecaoCreditoARealizar(); if (colecaoCreditoARealizar != null && !colecaoCreditoARealizar.isEmpty()) { Iterator creditoARealizarValores = colecaoCreditoARealizar.iterator(); while (creditoARealizarValores.hasNext()) { CreditoARealizar creditoARealizar = (CreditoARealizar) creditoARealizarValores.next(); valorCreditoARealizar.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); valorCreditoARealizar = valorCreditoARealizar.add(creditoARealizar.getValorTotal()); } } } // D�bito Total Atualizado valorDebitoTotalAtualizado.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); valorDebitoTotalAtualizado = valorDebitoTotalAtualizado.add(valorTotalContas); valorDebitoTotalAtualizado = valorDebitoTotalAtualizado.add(valorTotalGuiasPagamento); valorDebitoTotalAtualizado = valorDebitoTotalAtualizado.add(valorTotalAcrescimoImpontualidade); valorDebitoTotalAtualizado = valorDebitoTotalAtualizado.add(valorTotalRestanteServicosACobrar); valorDebitoTotalAtualizado = valorDebitoTotalAtualizado.add(valorTotalRestanteParcelamentosACobrar); valorDebitoTotalAtualizado = valorDebitoTotalAtualizado.subtract(valorCreditoARealizar); valorDebitoTotalAtualizado = valorDebitoTotalAtualizado.subtract(valorDescontos); BigDecimal descontoAVista = parcelamentoPerfil.getPercentualDescontoAcrescimoPagamentoAVista(); if (descontoAVista != null && !descontoAVista.equals(BigDecimal.ZERO)) { descontoAVista = descontoAVista.divide(new BigDecimal("100.00")); valorDescontoPagamentoAVista = valorDebitoTotalAtualizado.multiply(descontoAVista.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO)); } } return valorDescontoPagamentoAVista.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); } /** * [UC0214] Efetuar Parcelamento de D�bitos * * @author Raphael Rossiter * @date 25/09/2008 * * @param idImovel * @param inicioIntervaloParcelamento * @param fimIntervaloParcelamento * @param indicadoresParcelamentoHelper * @param parcelamentoPerfil * @return BigDecimal * @throws ControladorException */ public Object[] obterValorTotalDebitoAtualizadoParaParcelamento(Integer idImovel, Integer inicioIntervaloParcelamento, Integer fimIntervaloParcelamento, IndicadoresParcelamentoHelper indicadoresParcelamentoHelper, ParcelamentoPerfil parcelamentoPerfil, ResolucaoDiretoria rd) throws ControladorException { // BigDecimal valorDebitoTotalAtualizado = BigDecimal.ZERO; Object[] valorDebitoTotalEAcrescimoImpontualidadeTotal = null; if (parcelamentoPerfil.getAnoMesReferenciaLimiteSuperior() == null || parcelamentoPerfil.getAnoMesReferenciaLimiteSuperior().compareTo(inicioIntervaloParcelamento) >= 0) { if (fimIntervaloParcelamento != null && fimIntervaloParcelamento.compareTo(inicioIntervaloParcelamento) < 0) { fimIntervaloParcelamento = inicioIntervaloParcelamento; } Date dataFinalVencimento = Util.converteStringParaDate("31/12/9999"); if (parcelamentoPerfil.getDataLimiteDescontoPagamentoAVista() != null) { dataFinalVencimento = Util.formatarDataFinal(parcelamentoPerfil.getDataLimiteDescontoPagamentoAVista()); } boolean indicadorNaoSomarDebitoCobradoParcelamentoConta = false; ObterDebitoImovelOuClienteHelper obterDebitoImovelOuCliente = null; if (rd.getIndicadorDescontoSoEmContaAVista().equals(ConstantesSistema.SIM)) { indicadorNaoSomarDebitoCobradoParcelamentoConta = true; obterDebitoImovelOuCliente = obterDebitoImovelOuCliente(1, // Indicador // de // d�bito // do // im�vel idImovel.toString(), // Matr�cula do im�vel null, // C�digo do cliente null, // Tipo de rela��o cliente im�vel inicioIntervaloParcelamento != null ? inicioIntervaloParcelamento.toString() : "190001", // Refer�ncia // inicial // do // d�bito fimIntervaloParcelamento != null ? fimIntervaloParcelamento.toString() : "999912", // Fim // do // d�bito Util.converteStringParaDate("01/01/0001"), // Inicio // vencimento dataFinalVencimento, // Fim vencimento 1, // Indicador de pagamento indicadoresParcelamentoHelper.getIndicadorContasRevisao(), // conta // em // revis�o ConstantesSistema.NAO, // D�bito a cobrar ConstantesSistema.NAO, // cr�dito a realizar 1, // Indicador de notas promiss�rias ConstantesSistema.NAO, // guias pagamento ConstantesSistema.NAO, // acr�scimos impontualidade true, indicadoresParcelamentoHelper.getIndicadorDividaAtiva()); // divida // ativa } else { obterDebitoImovelOuCliente = obterDebitoImovelOuCliente(1, // Indicador // de // d�bito // do // im�vel idImovel.toString(), // Matr�cula do im�vel null, // C�digo do cliente null, // Tipo de rela��o cliente im�vel inicioIntervaloParcelamento != null ? inicioIntervaloParcelamento.toString() : "190001", // Refer�ncia // inicial // do // d�bito fimIntervaloParcelamento != null ? fimIntervaloParcelamento.toString() : "999912", // Fim // do // d�bito Util.converteStringParaDate("01/01/0001"), // Inicio // vencimento dataFinalVencimento, // Fim vencimento 1, // Indicador de pagamento indicadoresParcelamentoHelper.getIndicadorContasRevisao(), // conta // em // revis�o indicadoresParcelamentoHelper.getIndicadorDebitosACobrar(), // D�bito // a // cobrar indicadoresParcelamentoHelper.getIndicadorCreditoARealizar(), // cr�dito // a // realizar 1, // Indicador de notas promiss�rias indicadoresParcelamentoHelper.getIndicadorGuiasPagamento(), // guias // pagamento indicadoresParcelamentoHelper.getIndicadorAcrescimosImpotualidade(), // acr�scimos // impontualidade true, indicadoresParcelamentoHelper.getIndicadorDividaAtiva()); // divida // ativa } Collection<ContaValoresHelper> colecaoContaValores = obterDebitoImovelOuCliente.getColecaoContasValores(); if (colecaoContaValores != null && !colecaoContaValores.isEmpty() && parcelamentoPerfil.getParcelaQuantidadeMinimaFatura() != null && colecaoContaValores.size() >= parcelamentoPerfil.getParcelaQuantidadeMinimaFatura()) { // CALCULANDO O VALOR TOTAL DOS D�BITOS ATUALIZADOS valorDebitoTotalEAcrescimoImpontualidadeTotal = this.calcularValorTotalDebitoAtualizadoParaParcelamento( obterDebitoImovelOuCliente, indicadoresParcelamentoHelper, indicadorNaoSomarDebitoCobradoParcelamentoConta); } } return valorDebitoTotalEAcrescimoImpontualidadeTotal; } /** * [UC0214] Efetuar Parcelamento de D�bitos * * Calcula o valor total dos d�bitos atualizados * * @author Raphael Rossiter * @date 25/09/2008 * * @param ObterDebitoImovelOuClienteHelper * @param indicadoresParcelamentoHelper * @return BigDecimal * @throws ControladorException */ public Object[] calcularValorTotalDebitoAtualizadoParaParcelamento(ObterDebitoImovelOuClienteHelper obterDebitoImovelOuCliente, IndicadoresParcelamentoHelper indicadoresParcelamentoHelper, boolean indicadorNaoSomarDebitoCobradoParcelamentoConta) throws ControladorException { // Para o c�lculo do D�bito Total Atualizado BigDecimal valorTotalContas = BigDecimal.ZERO; BigDecimal valorTotalAcrescimoImpontualidade = BigDecimal.ZERO; BigDecimal valorTotalAcrescimoImpontualidadeContas = BigDecimal.ZERO; BigDecimal valorTotalAcrescimoImpontualidadeGuias = BigDecimal.ZERO; BigDecimal valorTotalRestanteServicosACobrar = BigDecimal.ZERO; BigDecimal valorTotalRestanteServicosACobrarCurtoPrazo = BigDecimal.ZERO; BigDecimal valorTotalRestanteServicosACobrarLongoPrazo = BigDecimal.ZERO; BigDecimal valorTotalRestanteParcelamentosACobrar = BigDecimal.ZERO; BigDecimal valorTotalRestanteParcelamentosACobrarCurtoPrazo = BigDecimal.ZERO; BigDecimal valorTotalRestanteParcelamentosACobrarLongoPrazo = BigDecimal.ZERO; BigDecimal valorTotalGuiasPagamento = BigDecimal.ZERO; BigDecimal valorRestanteACobrar = BigDecimal.ZERO; BigDecimal valorAtualizacaoMonetaria = BigDecimal.ZERO; BigDecimal valorJurosMora = BigDecimal.ZERO; BigDecimal valorMulta = BigDecimal.ZERO; BigDecimal valorTotalMultasDasContas = BigDecimal.ZERO; BigDecimal valorTotalJurosMoraDasContas = BigDecimal.ZERO; BigDecimal valorTotalAtualizacoesMonetariasDasContas = BigDecimal.ZERO; BigDecimal valorDebitoTotalAtualizado = BigDecimal.ZERO; BigDecimal valorCreditoARealizar = BigDecimal.ZERO; Collection<ContaValoresHelper> colecaoContaValores = obterDebitoImovelOuCliente.getColecaoContasValores(); if (colecaoContaValores != null && !colecaoContaValores.isEmpty()) { Iterator contaValores = colecaoContaValores.iterator(); while (contaValores.hasNext()) { ContaValoresHelper contaValoresHelper = (ContaValoresHelper) contaValores.next(); valorTotalContas.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); valorTotalContas = valorTotalContas.add(contaValoresHelper.getValorTotalConta()); if (indicadorNaoSomarDebitoCobradoParcelamentoConta) { BigDecimal valorDebitoCobradoParcelamentoConta = pesquisarValorDebitoCobradoParcelamentoConta(contaValoresHelper .getConta().getId()); valorTotalContas = valorTotalContas.subtract(valorDebitoCobradoParcelamentoConta); } if (contaValoresHelper.getValorAtualizacaoMonetaria() != null && !contaValoresHelper.getValorAtualizacaoMonetaria().equals("")) { valorTotalAtualizacoesMonetariasDasContas.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); valorTotalAtualizacoesMonetariasDasContas = valorTotalAtualizacoesMonetariasDasContas.add(contaValoresHelper .getValorAtualizacaoMonetaria().setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO)); valorAtualizacaoMonetaria = valorAtualizacaoMonetaria.add(valorTotalAtualizacoesMonetariasDasContas); } if (contaValoresHelper.getValorJurosMora() != null && !contaValoresHelper.getValorJurosMora().equals("")) { valorTotalJurosMoraDasContas.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); valorTotalJurosMoraDasContas = valorTotalJurosMoraDasContas.add(contaValoresHelper.getValorJurosMora().setScale( Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO)); valorJurosMora = valorJurosMora.add(valorTotalJurosMoraDasContas); } if (contaValoresHelper.getValorMulta() != null && !contaValoresHelper.getValorMulta().equals("")) { valorTotalMultasDasContas.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); valorTotalMultasDasContas = valorTotalMultasDasContas.add(contaValoresHelper.getValorMulta().setScale( Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO)); valorMulta = valorMulta.add(valorTotalMultasDasContas); } // Para c�lculo do Acrescimo de Impontualidade valorTotalAcrescimoImpontualidadeContas.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); valorTotalAcrescimoImpontualidadeContas = valorTotalAcrescimoImpontualidadeContas.add(contaValoresHelper .getValorTotalContaValoresParcelamento()); } } // Guias de Pagamento if (indicadoresParcelamentoHelper.getIndicadorGuiasPagamento().equals(ConstantesSistema.SIM.intValue())) { Collection<GuiaPagamentoValoresHelper> colecaoGuiaPagamentoValores = obterDebitoImovelOuCliente .getColecaoGuiasPagamentoValores(); if (colecaoGuiaPagamentoValores != null && !colecaoGuiaPagamentoValores.isEmpty()) { Iterator guiaPagamentoValores = colecaoGuiaPagamentoValores.iterator(); while (guiaPagamentoValores.hasNext()) { GuiaPagamentoValoresHelper guiaPagamentoValoresHelper = (GuiaPagamentoValoresHelper) guiaPagamentoValores.next(); valorTotalGuiasPagamento.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); valorTotalGuiasPagamento = valorTotalGuiasPagamento.add(guiaPagamentoValoresHelper.getGuiaPagamento().getValorDebito()); if (guiaPagamentoValoresHelper.getValorAtualizacaoMonetaria() != null && !guiaPagamentoValoresHelper.getValorAtualizacaoMonetaria().equals("")) { valorAtualizacaoMonetaria.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); valorAtualizacaoMonetaria = valorAtualizacaoMonetaria.add(guiaPagamentoValoresHelper.getValorAtualizacaoMonetaria() .setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO)); } if (guiaPagamentoValoresHelper.getValorJurosMora() != null && !guiaPagamentoValoresHelper.getValorJurosMora().equals("")) { valorJurosMora.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); valorJurosMora = valorJurosMora.add(guiaPagamentoValoresHelper.getValorJurosMora().setScale( Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO)); } if (guiaPagamentoValoresHelper.getValorMulta() != null && !guiaPagamentoValoresHelper.getValorMulta().equals("")) { valorMulta.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); valorMulta = valorMulta.add(guiaPagamentoValoresHelper.getValorMulta().setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO)); } // Para c�lculo do Acrescimo de Impontualidade valorTotalAcrescimoImpontualidadeGuias.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); valorTotalAcrescimoImpontualidadeGuias = valorTotalAcrescimoImpontualidadeGuias.add(guiaPagamentoValoresHelper .getValorAcrescimosImpontualidade()); } } } // Acrescimos por Impotualidade BigDecimal retornoSoma = new BigDecimal("0.00"); if (indicadoresParcelamentoHelper.getIndicadorAcrescimosImpotualidade().equals(ConstantesSistema.SIM.intValue())) { retornoSoma.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); retornoSoma = retornoSoma.add(valorTotalAcrescimoImpontualidadeContas); retornoSoma = retornoSoma.add(valorTotalAcrescimoImpontualidadeGuias); } // Para o c�lculo do D�bito Total Atualizado valorTotalAcrescimoImpontualidade = retornoSoma; // Debitos A Cobrar if (indicadoresParcelamentoHelper.getIndicadorDebitosACobrar().equals(ConstantesSistema.SIM.intValue())) { // [FS0022]-Verificar exist�ncia de juros sobre im�vel Collection colecaoDebitoACobrar = obterDebitoImovelOuCliente.getColecaoDebitoACobrar(); if (colecaoDebitoACobrar != null && !colecaoDebitoACobrar.isEmpty()) { Iterator debitoACobrarValores = colecaoDebitoACobrar.iterator(); final int indiceCurtoPrazo = 0; final int indiceLongoPrazo = 1; while (debitoACobrarValores.hasNext()) { DebitoACobrar debitoACobrar = (DebitoACobrar) debitoACobrarValores.next(); // [FS0022]-Verificar exist�ncia de juros sobre im�vel if (debitoACobrar.getDebitoTipo().getId() != null && !debitoACobrar.getDebitoTipo().getId().equals(DebitoTipo.JUROS_SOBRE_PARCELAMENTO)) { // Debitos A Cobrar - Servi�o if (debitoACobrar.getFinanciamentoTipo().getId().equals(FinanciamentoTipo.SERVICO_NORMAL)) { // [SB0001] Obter Valores de Curto e Longo Prazo valorRestanteACobrar = debitoACobrar.getValorTotalComBonus(); BigDecimal[] valoresDeCurtoELongoPrazo = getControladorFaturamento().obterValorCurtoELongoPrazo( debitoACobrar.getNumeroPrestacaoDebito(), debitoACobrar.getNumeroPrestacaoCobradasMaisBonus(), valorRestanteACobrar); valorTotalRestanteServicosACobrarCurtoPrazo.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); valorTotalRestanteServicosACobrarCurtoPrazo = valorTotalRestanteServicosACobrarCurtoPrazo .add(valoresDeCurtoELongoPrazo[indiceCurtoPrazo]); valorTotalRestanteServicosACobrarLongoPrazo.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); valorTotalRestanteServicosACobrarLongoPrazo = valorTotalRestanteServicosACobrarLongoPrazo .add(valoresDeCurtoELongoPrazo[indiceLongoPrazo]); } // Debitos A Cobrar - Parcelamento if (debitoACobrar.getFinanciamentoTipo().getId().equals(FinanciamentoTipo.PARCELAMENTO_AGUA) || debitoACobrar.getFinanciamentoTipo().getId().equals(FinanciamentoTipo.PARCELAMENTO_ESGOTO) || debitoACobrar.getFinanciamentoTipo().getId().equals(FinanciamentoTipo.PARCELAMENTO_SERVICO)) { // [SB0001] Obter Valores de Curto e Longo Prazo valorRestanteACobrar = debitoACobrar.getValorTotalComBonus(); BigDecimal[] valoresDeCurtoELongoPrazo = getControladorFaturamento().obterValorCurtoELongoPrazo( debitoACobrar.getNumeroPrestacaoDebito(), debitoACobrar.getNumeroPrestacaoCobradasMaisBonus(), valorRestanteACobrar); valorTotalRestanteParcelamentosACobrarCurtoPrazo.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); valorTotalRestanteParcelamentosACobrarCurtoPrazo = valorTotalRestanteParcelamentosACobrarCurtoPrazo .add(valoresDeCurtoELongoPrazo[indiceCurtoPrazo]); valorTotalRestanteParcelamentosACobrarLongoPrazo.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); valorTotalRestanteParcelamentosACobrarLongoPrazo = valorTotalRestanteParcelamentosACobrarLongoPrazo .add(valoresDeCurtoELongoPrazo[indiceLongoPrazo]); } } } // Servi�os valorTotalRestanteServicosACobrar.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); valorTotalRestanteServicosACobrar = valorTotalRestanteServicosACobrarCurtoPrazo .add(valorTotalRestanteServicosACobrarLongoPrazo); // Parcelamentos valorTotalRestanteParcelamentosACobrar.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); valorTotalRestanteParcelamentosACobrar = valorTotalRestanteParcelamentosACobrarCurtoPrazo .add(valorTotalRestanteParcelamentosACobrarLongoPrazo); } } // Cr�dito A Realizar if (indicadoresParcelamentoHelper.getIndicadorCreditoARealizar().equals(ConstantesSistema.SIM.intValue())) { Collection<CreditoARealizar> colecaoCreditoARealizar = obterDebitoImovelOuCliente.getColecaoCreditoARealizar(); if (colecaoCreditoARealizar != null && !colecaoCreditoARealizar.isEmpty()) { Iterator creditoARealizarValores = colecaoCreditoARealizar.iterator(); while (creditoARealizarValores.hasNext()) { CreditoARealizar creditoARealizar = (CreditoARealizar) creditoARealizarValores.next(); valorCreditoARealizar.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); valorCreditoARealizar = valorCreditoARealizar.add(creditoARealizar.getValorTotalComBonus()); } } } // D�bito Total Atualizado valorDebitoTotalAtualizado.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); valorDebitoTotalAtualizado = valorDebitoTotalAtualizado.add(valorTotalContas); valorDebitoTotalAtualizado = valorDebitoTotalAtualizado.add(valorTotalGuiasPagamento); valorDebitoTotalAtualizado = valorDebitoTotalAtualizado.add(valorTotalAcrescimoImpontualidade); valorDebitoTotalAtualizado = valorDebitoTotalAtualizado.add(valorTotalRestanteServicosACobrar); valorDebitoTotalAtualizado = valorDebitoTotalAtualizado.add(valorTotalRestanteParcelamentosACobrar); valorDebitoTotalAtualizado = valorDebitoTotalAtualizado.subtract(valorCreditoARealizar); Object[] valorDebitoTotalEAcrescimoImpontualidadeTotal = new Object[10]; valorDebitoTotalEAcrescimoImpontualidadeTotal[0] = valorDebitoTotalAtualizado; valorDebitoTotalEAcrescimoImpontualidadeTotal[1] = valorTotalAcrescimoImpontualidade; valorDebitoTotalEAcrescimoImpontualidadeTotal[2] = valorTotalContas; valorDebitoTotalEAcrescimoImpontualidadeTotal[3] = valorTotalGuiasPagamento; valorDebitoTotalEAcrescimoImpontualidadeTotal[4] = valorTotalRestanteServicosACobrar; valorDebitoTotalEAcrescimoImpontualidadeTotal[5] = valorTotalRestanteParcelamentosACobrar; valorDebitoTotalEAcrescimoImpontualidadeTotal[6] = valorCreditoARealizar; valorDebitoTotalEAcrescimoImpontualidadeTotal[7] = valorTotalMultasDasContas; valorDebitoTotalEAcrescimoImpontualidadeTotal[8] = valorTotalJurosMoraDasContas; valorDebitoTotalEAcrescimoImpontualidadeTotal[9] = valorTotalAtualizacoesMonetariasDasContas; return valorDebitoTotalEAcrescimoImpontualidadeTotal; } /** * [UC0214] Efetuar Parcelamento de D�bitos * * @author Raphael Rossiter * @date 29/09/2008 * * @param parcelamentoPerfil * @param conta * @return Collection<ParcelamentoDescontoAntiguidade> * @throws ControladorException */ public Collection<ParcelamentoDescontoAntiguidade> obterParcelamentoDescontoAntiguidadeParaConta(ParcelamentoPerfil parcelamentoPerfil, Conta conta) throws ControladorException { SistemaParametro sistemaParametros = getControladorUtil().pesquisarParametrosDoSistema(); Date dataAnoMesReferenciaParametro = Util.criarData(1, Util.obterMes(sistemaParametros.getAnoMesFaturamento()), Util.obterAno(sistemaParametros.getAnoMesFaturamento())); int quantidadeMeses = 0; Date dataAnoMesReferencia = Util.criarData(1, Util.obterMes(conta.getReferencia()), Util.obterAno(conta.getReferencia())); quantidadeMeses = Util.dataDiff(dataAnoMesReferencia, dataAnoMesReferenciaParametro); FiltroParcelamentoDescontoAntiguidade filtroParcelamentoDescontoAntiguidade = new FiltroParcelamentoDescontoAntiguidade(); filtroParcelamentoDescontoAntiguidade.adicionarCaminhoParaCarregamentoEntidade("contaMotivoRevisao"); filtroParcelamentoDescontoAntiguidade.adicionarParametro(new ParametroSimples( FiltroParcelamentoDescontoAntiguidade.PARCELAMENTO_PERFIL, parcelamentoPerfil.getId())); filtroParcelamentoDescontoAntiguidade.adicionarParametro(new MenorQue( FiltroParcelamentoDescontoAntiguidade.QUANTIDADE_MINIMA_MESES_DEBITO, quantidadeMeses)); Collection<ParcelamentoDescontoAntiguidade> colecaoParcelamentoDescontoAntiguidade = getControladorUtil().pesquisar( filtroParcelamentoDescontoAntiguidade, ParcelamentoDescontoAntiguidade.class.getName()); return colecaoParcelamentoDescontoAntiguidade; } /** * [UC0214] Efetuar Parcelamento de D�bitos * * @author Raphael Rossiter * @date 25/09/2008, 12/01/2011 * * @param obterOpcoesDeParcelamentoHelper * @param fimIntervaloParcelamento * @param isParcelamento * @return BigDecimal * @throws ControladorException */ public BigDecimal obterValorTotalAcrescimosImpontualidadeParaParcelamento( ObterOpcoesDeParcelamentoHelper obterOpcoesDeParcelamentoHelper, Integer fimIntervaloParcelamento, boolean isParcelamento) throws ControladorException { BigDecimal valorDescontoAcrescimosImpontualidadePagamentoAVista = BigDecimal.ZERO; Integer idImovel = obterOpcoesDeParcelamentoHelper.getIdImovel(); Integer inicioIntervaloParcelamento = obterOpcoesDeParcelamentoHelper.getAnoMesInicialReferenciaDebito(); IndicadoresParcelamentoHelper indicadoresParcelamentoHelper = obterOpcoesDeParcelamentoHelper.getIndicadoresParcelamentoHelper(); if (fimIntervaloParcelamento != null && fimIntervaloParcelamento.compareTo(inicioIntervaloParcelamento) < 0) { fimIntervaloParcelamento = inicioIntervaloParcelamento; } Collection<ContaValoresHelper> colecaoContaValores = null; Collection<GuiaPagamentoValoresHelper> colecaoGuiaPagamentoValores = null; if (isParcelamento) { // VIA PARCELAMENTO ObterDebitoImovelOuClienteHelper obterDebitoImovelOuCliente = obterDebitoImovelOuCliente(1, // Indicador // de // d�bito // do // im�vel idImovel.toString(), // Matr�cula do im�vel null, // C�digo do cliente null, // Tipo de rela��o cliente im�vel inicioIntervaloParcelamento != null ? inicioIntervaloParcelamento.toString() : "000101", // Refer�ncia // inicial // do // d�bito fimIntervaloParcelamento != null ? fimIntervaloParcelamento.toString() : "999912", // Fim // do // d�bito Util.converteStringParaDate("01/01/0001"), // Inicio // vencimento Util.converteStringParaDate("31/12/9999"), // Fim vencimento 1, // Indicador de pagamento indicadoresParcelamentoHelper.getIndicadorContasRevisao(), // conta // em // revis�o indicadoresParcelamentoHelper.getIndicadorDebitosACobrar(), // D�bito // a // cobrar indicadoresParcelamentoHelper.getIndicadorCreditoARealizar(), // cr�dito // a // realizar 1, // Indicador de notas promiss�rias indicadoresParcelamentoHelper.getIndicadorGuiasPagamento(), // guias // pagamento indicadoresParcelamentoHelper.getIndicadorAcrescimosImpotualidade(), // acr�scimos // impontualidade true, indicadoresParcelamentoHelper.getIndicadorDividaAtiva()); colecaoContaValores = obterDebitoImovelOuCliente.getColecaoContasValores(); colecaoGuiaPagamentoValores = obterDebitoImovelOuCliente.getColecaoGuiasPagamentoValores(); } else { // VIA EXTRATO DE D�BITO colecaoContaValores = obterOpcoesDeParcelamentoHelper.getColecaoContaValores(); colecaoGuiaPagamentoValores = obterOpcoesDeParcelamentoHelper.getColecaoGuiaPagamentoValores(); } BigDecimal valorTotalGuiasPagamento = BigDecimal.ZERO; BigDecimal valorTotalAcrescimoImpontualidadeContas = BigDecimal.ZERO; BigDecimal valorTotalAcrescimoImpontualidadeGuias = BigDecimal.ZERO; BigDecimal valorAtualizacaoMonetaria = BigDecimal.ZERO; BigDecimal valorJurosMora = BigDecimal.ZERO; BigDecimal valorMulta = BigDecimal.ZERO; if (colecaoContaValores != null && !colecaoContaValores.isEmpty()) { Iterator contaValores = colecaoContaValores.iterator(); while (contaValores.hasNext()) { ContaValoresHelper contaValoresHelper = (ContaValoresHelper) contaValores.next(); if (contaValoresHelper.getValorAtualizacaoMonetaria() != null && !contaValoresHelper.getValorAtualizacaoMonetaria().equals("")) { valorAtualizacaoMonetaria.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); valorAtualizacaoMonetaria = valorAtualizacaoMonetaria.add(contaValoresHelper.getValorAtualizacaoMonetaria().setScale( Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO)); } if (contaValoresHelper.getValorJurosMora() != null && !contaValoresHelper.getValorJurosMora().equals("")) { valorJurosMora.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); valorJurosMora = valorJurosMora.add(contaValoresHelper.getValorJurosMora().setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO)); } if (contaValoresHelper.getValorMulta() != null && !contaValoresHelper.getValorMulta().equals("")) { valorMulta.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); valorMulta = valorMulta.add(contaValoresHelper.getValorMulta().setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO)); } // Para c�lculo do Acrescimo de Impontualidade valorTotalAcrescimoImpontualidadeContas.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); valorTotalAcrescimoImpontualidadeContas = valorTotalAcrescimoImpontualidadeContas.add(contaValoresHelper .getValorTotalContaValoresParcelamento()); } } // Guias de Pagamento if (indicadoresParcelamentoHelper.getIndicadorGuiasPagamento().equals(ConstantesSistema.SIM.intValue())) { if (colecaoGuiaPagamentoValores != null && !colecaoGuiaPagamentoValores.isEmpty()) { Iterator guiaPagamentoValores = colecaoGuiaPagamentoValores.iterator(); while (guiaPagamentoValores.hasNext()) { GuiaPagamentoValoresHelper guiaPagamentoValoresHelper = (GuiaPagamentoValoresHelper) guiaPagamentoValores.next(); valorTotalGuiasPagamento.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); valorTotalGuiasPagamento = valorTotalGuiasPagamento.add(guiaPagamentoValoresHelper.getGuiaPagamento().getValorDebito()); if (guiaPagamentoValoresHelper.getValorAtualizacaoMonetaria() != null && !guiaPagamentoValoresHelper.getValorAtualizacaoMonetaria().equals("")) { valorAtualizacaoMonetaria.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); valorAtualizacaoMonetaria = valorAtualizacaoMonetaria.add(guiaPagamentoValoresHelper.getValorAtualizacaoMonetaria() .setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO)); } if (guiaPagamentoValoresHelper.getValorJurosMora() != null && !guiaPagamentoValoresHelper.getValorJurosMora().equals("")) { valorJurosMora.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); valorJurosMora = valorJurosMora.add(guiaPagamentoValoresHelper.getValorJurosMora().setScale( Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO)); } if (guiaPagamentoValoresHelper.getValorMulta() != null && !guiaPagamentoValoresHelper.getValorMulta().equals("")) { valorMulta.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); valorMulta = valorMulta.add(guiaPagamentoValoresHelper.getValorMulta().setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO)); } // Para c�lculo do Acrescimo de Impontualidade valorTotalAcrescimoImpontualidadeGuias.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); valorTotalAcrescimoImpontualidadeGuias = valorTotalAcrescimoImpontualidadeGuias.add(guiaPagamentoValoresHelper .getValorAcrescimosImpontualidade()); } } } // Acrescimos por Impotualidade BigDecimal retornoSoma = BigDecimal.ZERO; if (indicadoresParcelamentoHelper.getIndicadorAcrescimosImpotualidade().equals(ConstantesSistema.SIM.intValue())) { retornoSoma.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); retornoSoma = retornoSoma.add(valorTotalAcrescimoImpontualidadeContas); retornoSoma = retornoSoma.add(valorTotalAcrescimoImpontualidadeGuias); valorDescontoAcrescimosImpontualidadePagamentoAVista = retornoSoma; } return valorDescontoAcrescimosImpontualidadePagamentoAVista.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); } /** * [UC0867] Atualizar Pagamentos das Contas em Cobran�a * * @author S�vio Luiz * @date 23/10/2008 * * @param idLocalidade * @param anoMesArrecadacao * @param idFuncionalidadeIniciada * @throws ControladorException */ public void atualizarPagamentosContasCobranca(Integer idLocalidade, Integer anoMesArrecadacao, int idFuncionalidadeIniciada) throws ControladorException { int idUnidadeIniciada = 0; idUnidadeIniciada = getControladorBatch().iniciarUnidadeProcessamentoBatch(idFuncionalidadeIniciada, UnidadeProcessamento.LOCALIDADE, idLocalidade); try { Collection colecaoEmpresaContaCobrancaPagamentos = new ArrayList(); // remove as empresas cobrancas contas pagamentos para o mesmo // mes/ano de arrecada��o repositorioCobranca.removerEmpresaCobrancaContaPagamentos(anoMesArrecadacao, idLocalidade); // recupera a cole��o de pagamentos Collection<Pagamento> collPagamentos = repositorioarrecadacao.pesquisarPagamentoPorLocalidade(idLocalidade, anoMesArrecadacao); if (collPagamentos != null && !collPagamentos.isEmpty()) { // la�o da cole��o de pagamentos for (Pagamento pagamento : collPagamentos) { // verifica se o pagamento tem conta if (pagamento.getContaGeral() != null) { Integer idEmpresaCobrancaPagamentos = repositorioCobranca.pesquisarEmpresaCobrancaConta(pagamento.getContaGeral() .getId()); if (idEmpresaCobrancaPagamentos != null) { // [SB0001] - Atualizar pagamento de conta em // cobran�a criaColecaoEmpresaContaCobrancaPagamento(pagamento.getContaGeral().getId(), pagamento.getValorPagamento(), pagamento, null, null, false, null, anoMesArrecadacao, null, colecaoEmpresaContaCobrancaPagamentos, ConstantesSistema.INDICADOR_PAGAMENTO_A_VISTA, new Integer("0"), new Integer("0")); } else { Collection collIdsFincanciamentoTipo = new ArrayList(); collIdsFincanciamentoTipo.add(FinanciamentoTipo.PARCELAMENTO_AGUA); collIdsFincanciamentoTipo.add(FinanciamentoTipo.PARCELAMENTO_ESGOTO); collIdsFincanciamentoTipo.add(FinanciamentoTipo.PARCELAMENTO_SERVICO); collIdsFincanciamentoTipo.add(FinanciamentoTipo.JUROS_PARCELAMENTO); collIdsFincanciamentoTipo.add(FinanciamentoTipo.ENTRADA_PARCELAMENTO); Collection<Object[]> colecaoDadosDebitoCobrado = repositorioFaturamento .pesquisaridDebitoTipoDoDebitoCobradoDeParcelamento(pagamento.getContaGeral().getId(), collIdsFincanciamentoTipo); if (colecaoDadosDebitoCobrado != null && !colecaoDadosDebitoCobrado.isEmpty()) { for (Object[] dadosDebitoCobrado : colecaoDadosDebitoCobrado) { if (dadosDebitoCobrado != null) { DebitoTipo debitoTipo = null; Parcelamento parcelamento = null; DebitoCobrado debitoCobrado = null; if (dadosDebitoCobrado[3] != null) { debitoCobrado = new DebitoCobrado(); debitoCobrado.setValorPrestacao((BigDecimal) dadosDebitoCobrado[3]); debitoCobrado.setNumeroPrestacaoDebito((Short) dadosDebitoCobrado[4]); debitoCobrado.setNumeroPrestacao((Short) dadosDebitoCobrado[5]); if (dadosDebitoCobrado[0] != null) { debitoTipo = new DebitoTipo(); debitoTipo.setId((Integer) dadosDebitoCobrado[0]); debitoCobrado.setDebitoTipo(debitoTipo); } if (dadosDebitoCobrado[1] != null) { parcelamento = new Parcelamento(); parcelamento.setId((Integer) dadosDebitoCobrado[1]); if (dadosDebitoCobrado[2] != null) { parcelamento.setValorDebitoAtualizado((BigDecimal) dadosDebitoCobrado[2]); } if (dadosDebitoCobrado[6] != null) { parcelamento.setValorConta((BigDecimal) dadosDebitoCobrado[6]); } } } // [SB0002] - Verificar itens do // parcelamento a partir do debito // cobrado verificarItensParcelamentos(parcelamento, null, null, pagamento, debitoCobrado, anoMesArrecadacao, colecaoEmpresaContaCobrancaPagamentos); } } // } } } } // verifica se o pagamento tem guia de pagamento if (pagamento.getGuiaPagamento() != null) { // verifica se a guia de pagamento tem parcelamento if (pagamento.getGuiaPagamento().getParcelamento() != null) { // [SB0006] - Verificar itens do parcelamento a // partir de guia de pagamento verificarItensParcelamentos(pagamento.getGuiaPagamento().getParcelamento(), pagamento.getGuiaPagamento(), null, pagamento, null, anoMesArrecadacao, colecaoEmpresaContaCobrancaPagamentos); } } // verifica se o pagamento tem debito a cobrar if (pagamento.getDebitoACobrarGeral() != null) { // verifica se o debito a cobrar tem parcelamento if (pagamento.getDebitoACobrarGeral().getDebitoACobrar().getParcelamento() != null) { // [SB0010] - Verificar itens do parcelamento a // partir de debito a cobrar verificarItensParcelamentos(pagamento.getDebitoACobrarGeral().getDebitoACobrar().getParcelamento(), null, pagamento.getDebitoACobrarGeral().getDebitoACobrar(), pagamento, null, anoMesArrecadacao, colecaoEmpresaContaCobrancaPagamentos); } } } } // CRC 3257 - Alteracao para nao considerar categoria Publica Iterator it = colecaoEmpresaContaCobrancaPagamentos.iterator(); while (it.hasNext()) { EmpresaCobrancaContaPagamentos empresaCobrancaContaPagamentos = (EmpresaCobrancaContaPagamentos) it.next(); Categoria categoria = getControladorImovel().obterPrincipalCategoriaImovel(empresaCobrancaContaPagamentos.getIdImovel()); if (categoria.getId().equals(Categoria.PUBLICO)) { it.remove(); } } // Final da alteracao if (!colecaoEmpresaContaCobrancaPagamentos.isEmpty()) { getControladorBatch().inserirColecaoObjetoParaBatch(colecaoEmpresaContaCobrancaPagamentos); } getControladorBatch().encerrarUnidadeProcessamentoBatch(null, idUnidadeIniciada, false); } catch (Exception ex) { getControladorBatch().encerrarUnidadeProcessamentoBatch(ex, idUnidadeIniciada, true); ex.printStackTrace(); throw new EJBException(ex); } } /** * [UC0867] Atualizar Pagamentos das Contas em Cobran�a * * @author S�vio Luiz * @date 27/10/2008 * */ private void verificarItensParcelamentos(Parcelamento parcelamento, GuiaPagamento guiaPagamento, DebitoACobrar debitoACobrar, Pagamento pagamento, DebitoCobrado debitoCobrado, Integer anoMesArrecadacao, Collection colecaoEmpresaContaCobrancaPagamentos) throws ControladorException { try { if (parcelamento != null) { Collection<Object[]> collItensParcelamentos = repositorioCobranca.pesquisarItensParcelamentos(parcelamento.getId()); // loop de dados dos itens do parcelamentos Integer idContaGeral = null; Integer idDebitoACobrarGeral = null; BigDecimal valorConta = null; if (collItensParcelamentos != null && !collItensParcelamentos.isEmpty()) { for (Object[] dadosItensParcelamento : collItensParcelamentos) { // verifica se os dados dos itens de parcelamento est� // diferente de nulo if (dadosItensParcelamento != null) { // verifica se existe o valor da conta if (dadosItensParcelamento[2] != null) { valorConta = (BigDecimal) dadosItensParcelamento[2]; } // verifica se existe o id da conta if (dadosItensParcelamento[0] != null) { idContaGeral = (Integer) dadosItensParcelamento[0]; // caso n�o seja guia de pagamento nem debito a // cobrar if (guiaPagamento == null && debitoACobrar == null) { // [SB0003] - Atualizar pagamento de conta // parcelada a partir do debito cobrado criaColecaoEmpresaContaCobrancaPagamento(idContaGeral, valorConta, pagamento, debitoCobrado.getDebitoTipo(), parcelamento, false, debitoCobrado.getValorPrestacao(), anoMesArrecadacao, null, colecaoEmpresaContaCobrancaPagamentos, ConstantesSistema.INDICADOR_PAGAMENTO_PARCELADO, new Integer(debitoCobrado.getNumeroPrestacaoDebito()), new Integer(debitoCobrado.getNumeroPrestacao())); } else { if (guiaPagamento != null) { // [SB0007] - Atualizar pagamento de // conta parcelada a partir da guia de // pagamento criaColecaoEmpresaContaCobrancaPagamento(idContaGeral, valorConta, pagamento, guiaPagamento.getDebitoTipo(), parcelamento, false, guiaPagamento.getValorDebito(), anoMesArrecadacao, null, colecaoEmpresaContaCobrancaPagamentos, ConstantesSistema.INDICADOR_PAGAMENTO_A_VISTA, new Integer("0"), new Integer("0")); } else { // [SB0011] - Atualizar pagamento de // conta parcelada a partir do debito a // cobrar criaColecaoEmpresaContaCobrancaPagamento(idContaGeral, valorConta, pagamento, debitoACobrar.getDebitoTipo(), parcelamento, false, debitoACobrar.getValorTotalComBonus(), anoMesArrecadacao, null, colecaoEmpresaContaCobrancaPagamentos, ConstantesSistema.INDICADOR_PAGAMENTO_PARCELADO, new Integer("0"), new Integer("0")); } } } // verifica se existe o id do debito a cobrar geral, // refeere-se a um re-parcelamento if (dadosItensParcelamento[1] != null) { idDebitoACobrarGeral = (Integer) dadosItensParcelamento[1]; verificarItensParcelamentosNivel2(parcelamento, guiaPagamento, debitoACobrar, pagamento, debitoCobrado, anoMesArrecadacao, idDebitoACobrarGeral, colecaoEmpresaContaCobrancaPagamentos); } } // limpa os campos idContaGeral = null; idDebitoACobrarGeral = null; } } } } catch (Exception ex) { ex.printStackTrace(); throw new EJBException(ex); } } private Collection criaColecaoEmpresaContaCobrancaPagamento(Integer idConta, BigDecimal valorConta, Pagamento pagamento, DebitoTipo debitoTipo, Parcelamento parcelamento, boolean nivel2, BigDecimal valorPagamentoSemPercentual, Integer anoMesArrecadacao, BigDecimal valorCalculadoDebitoACobrarHistorico, Collection colecaoEmpresaContaCobrancaPagamentos, Short indicadorTipoPagamento, Integer numeroParcelaAtual, Integer numeroTotalParcelas) throws ControladorException { try { Integer idEmpresaCobrancaConta = repositorioCobranca.pesquisarEmpresaCobrancaConta(idConta); if (idEmpresaCobrancaConta != null) { // caso seja um re-parcelamento BigDecimal percentualContaParcelada = null; BigDecimal valorPagamentoMes = null; if (nivel2) { /* * Comentado por Raphael Rossiter a pedido de Eduardo Borges * em 10/08/2011 OBJ: Igualar a f�rmula de c�lculo dos dois * n�veis */ /* * if(valorCalculadoDebitoACobrarHistorico != null){ * BigDecimal valorContaParceladaNivel2 = * valorConta.multiply * (valorCalculadoDebitoACobrarHistorico); * percentualContaParcelada = * Util.dividirArredondando(valorContaParceladaNivel2 * ,parcelamento.getValorConta()); valorPagamentoMes = * (valorPagamentoSemPercentual * .multiply(percentualContaParcelada * )).setScale(2,BigDecimal.ROUND_HALF_DOWN); } */ percentualContaParcelada = Util.dividirArredondando(valorConta, parcelamento.getValorConta()); valorPagamentoMes = (valorPagamentoSemPercentual.multiply(percentualContaParcelada)).setScale(2, BigDecimal.ROUND_HALF_DOWN); } else { // caso exista parcelamento, calcular o percentual da conta // paga if (parcelamento != null) { percentualContaParcelada = Util.dividirArredondando(valorConta, parcelamento.getValorConta()); valorPagamentoMes = (valorPagamentoSemPercentual.multiply(percentualContaParcelada)).setScale(2, BigDecimal.ROUND_HALF_DOWN); } else { // caso n�o tenha parcelamento, o pagamento refere-se a // uma conta e esteja em cobran�a // por alguma empresa. valorPagamentoMes = valorConta; } } // criando o objeto de empresa cobranca conta pagamentos EmpresaCobrancaContaPagamentos empresaCobrancaContaPagamentos = new EmpresaCobrancaContaPagamentos(); empresaCobrancaContaPagamentos.setDebitoTipo(debitoTipo); EmpresaCobrancaConta empresaCobrancaConta = new EmpresaCobrancaConta(); empresaCobrancaConta.setId(idEmpresaCobrancaConta); empresaCobrancaContaPagamentos.setEmpresaCobrancaConta(empresaCobrancaConta); empresaCobrancaContaPagamentos.setAnoMesPagamentoArrecadacao(anoMesArrecadacao); empresaCobrancaContaPagamentos.setValorPagamentoMes(valorPagamentoMes); // Alteracao CRC 2650 empresaCobrancaContaPagamentos.setIndicadorTipoPagamento(indicadorTipoPagamento); empresaCobrancaContaPagamentos.setNumeroParcelaAtual(numeroParcelaAtual); empresaCobrancaContaPagamentos.setNumeroTotalParcelas(numeroTotalParcelas); // FIM - Alteracao CRC 2650 empresaCobrancaContaPagamentos.setUltimaAlteracao(new Date()); if (pagamento.getAnoMesReferenciaPagamento() != null) { empresaCobrancaContaPagamentos.setAnoMesReferenciaPagamento(pagamento.getAnoMesReferenciaPagamento()); } empresaCobrancaContaPagamentos.setDataPagamento(pagamento.getDataPagamento()); if (pagamento.getImovel() != null) { empresaCobrancaContaPagamentos.setIdImovel(pagamento.getImovel().getId()); } if (pagamento.getAvisoBancario() != null) { empresaCobrancaContaPagamentos.setIdArrecadador(pagamento.getAvisoBancario().getArrecadador().getId()); } colecaoEmpresaContaCobrancaPagamentos.add(empresaCobrancaContaPagamentos); } } catch (Exception ex) { ex.printStackTrace(); throw new EJBException(ex); } return colecaoEmpresaContaCobrancaPagamentos; } /** * [UC0867] Atualizar Pagamentos das Contas em Cobran�a * * @author S�vio Luiz * @date 27/10/2008 * */ private void verificarItensParcelamentosNivel2(Parcelamento parcelamento, GuiaPagamento guiaPagamento, DebitoACobrar debitoACobrar, Pagamento pagamento, DebitoCobrado debitoCobrado, Integer anoMesArrecadacao, Integer idDebitoACobrarNivel2, Collection colecaoEmpresaContaCobrancaPagamentos) throws ControladorException { try { Integer idParcelamento = null; /* * Comentado por Raphael Rossiter a pedido de Eduardo Borges em * 10/08/2011 OBJ: Igualar a f�rmula de c�lculo dos dois n�veis */ /* * BigDecimal valorCalculadoDebitoACobrarHistorico = null; * * Object[] dadosDebitoACobrar = repositorioCobranca. * pesquisarDadosDebitoACobrar(idDebitoACobrarNivel2); * * if(dadosDebitoACobrar != null){ * * Short prestacaoDebitos = null; Short prestacaoCobradas = null; * * if(dadosDebitoACobrar[0] != null){ idParcelamento = * (Integer)dadosDebitoACobrar[0]; } if(dadosDebitoACobrar[1] != * null){ prestacaoDebitos = (Short)dadosDebitoACobrar[1]; } * if(dadosDebitoACobrar[2] != null){ prestacaoCobradas = * (Short)dadosDebitoACobrar[2]; } * * valorCalculadoDebitoACobrarHistorico = new * BigDecimal((prestacaoDebitos.floatValue() - * prestacaoCobradas.floatValue * ())/prestacaoDebitos.floatValue()).setScale * (2,BigDecimal.ROUND_HALF_UP); } */ if (idParcelamento != null) { Collection<Object[]> collItensParcelamentosNivel2 = repositorioCobranca.pesquisarItensParcelamentosNivel2(idParcelamento); // loop de dados dos itens do parcelamentos Integer idContaGeralNivel2 = null; BigDecimal valorContaNivel2 = null; if (collItensParcelamentosNivel2 != null && !collItensParcelamentosNivel2.isEmpty()) { for (Object[] dadosItensParcelamento : collItensParcelamentosNivel2) { // verifica se os dados dos itens de parcelamento est� // diferente de nulo if (dadosItensParcelamento != null) { // verifica se existe o valor da conta if (dadosItensParcelamento[2] != null) { valorContaNivel2 = (BigDecimal) dadosItensParcelamento[2]; } // verifica se existe o id da conta if (dadosItensParcelamento[0] != null) { idContaGeralNivel2 = (Integer) dadosItensParcelamento[0]; // caso n�o seja guia de pagamento nem debito a // cobrar if (guiaPagamento == null && debitoACobrar == null) { // [SB0005] - Atualizar pagamento de conta // parcelada a partir do debito cobrado // nivel 2 criaColecaoEmpresaContaCobrancaPagamento(idContaGeralNivel2, valorContaNivel2, pagamento, debitoCobrado.getDebitoTipo(), parcelamento, true, debitoCobrado.getValorPrestacao(), anoMesArrecadacao, null, colecaoEmpresaContaCobrancaPagamentos, ConstantesSistema.INDICADOR_PAGAMENTO_PARCELADO, new Integer(debitoCobrado.getNumeroPrestacaoDebito()), new Integer(debitoCobrado.getNumeroPrestacao())); } else { if (guiaPagamento != null) { // [SB0008] - Atualizar pagamento de // conta parcelada a partir da guia de // pagamento nivel 2 criaColecaoEmpresaContaCobrancaPagamento(idContaGeralNivel2, valorContaNivel2, pagamento, guiaPagamento.getDebitoTipo(), parcelamento, true, guiaPagamento.getValorDebito(), anoMesArrecadacao, null, colecaoEmpresaContaCobrancaPagamentos, ConstantesSistema.INDICADOR_PAGAMENTO_A_VISTA, new Integer("0"), new Integer("0")); } else { // [SB0013] - Atualizar pagamento de // conta parcelada a partir do debito a // cobrar nivel 2 criaColecaoEmpresaContaCobrancaPagamento(idContaGeralNivel2, valorContaNivel2, pagamento, debitoACobrar.getDebitoTipo(), parcelamento, true, debitoACobrar.getValorTotalComBonus(), anoMesArrecadacao, null, colecaoEmpresaContaCobrancaPagamentos, ConstantesSistema.INDICADOR_PAGAMENTO_PARCELADO, new Integer("0"), new Integer("0")); } } } } // limpa os campos idContaGeralNivel2 = null; } } } } catch (Exception ex) { ex.printStackTrace(); throw new EJBException(ex); } } /** * [UC0869] Gerar Arquivo Texto de Contas em Cobran�a por Empresa * * Pesquisa a quantidade de contas * * @author: R�mulo Aur�lio * @date: 29/10/2008 */ public Integer pesquisarDadosGerarArquivoTextoContasCobrancaEmpresaCount(Integer idEmpresa, Date comandoInicial, Date comandoFinal) throws ControladorException { Integer retorno = 0; try { retorno = repositorioCobranca.pesquisarDadosGerarArquivoTextoContasCobrancaEmpresaParaCobrancaCount(idEmpresa, comandoInicial, comandoFinal); } catch (ErroRepositorioException e) { throw new ControladorException("erro.sistema", e); } return retorno; } /** * [UC0869] Gerar Arquivo Texto de Contas em Cobran�a por Empresa * * Pesquisa a quantidade de contas * * @author: R�mulo Aur�lio * @date: 29/10/2008 */ public Collection<GerarArquivoTextoContasCobrancaEmpresaHelper> pesquisarDadosGerarArquivoTextoContasCobrancaEmpresa(Integer idEmpresa, Date comandoInicial, Date comandoFinal, int pagina) throws ControladorException { Collection<GerarArquivoTextoContasCobrancaEmpresaHelper> colecaoGerarArquivoTextoContasCobrancaEmpresaHelper = null; try { // Vari�veis para a pagina��o da pesquisa // ======================================================================== final int quantidadeRegistros = 10; // ======================================================================== // colecaoGerarArquivoTextoContasCobrancaEmpresaHelper = // this.montarDadosContasCobrancaEmpresa(); colecaoGerarArquivoTextoContasCobrancaEmpresaHelper = (Collection) repositorioCobranca .pesquisarDadosGerarArquivoTextoContasCobrancaEmpresaParaCobrancaResumido(idEmpresa, comandoInicial, comandoFinal, pagina, quantidadeRegistros); /* * Collection dadosContasCobrancaEmpresaParaCriterio = * repositorioCobranca * .pesquisarDadosGerarArquivoTextoContasCobrancaEmpresaParaCriterio * ( idEmpresa, comandoInicial, comandoFinal, numeroIndice, * quantidadeRegistros); * * Map<Integer, GerarArquivoTextoContasCobrancaEmpresaHelper> * mapHelper = new HashMap<Integer, * GerarArquivoTextoContasCobrancaEmpresaHelper>(); * * if (dadosContasCobrancaEmpresaParaCriterio != null && * !dadosContasCobrancaEmpresaParaCriterio.isEmpty()) { * * Iterator dadosContasCobrancaEmpresaParaCriterioIterator = * dadosContasCobrancaEmpresaParaCriterio .iterator(); * * while (dadosContasCobrancaEmpresaParaCriterioIterator .hasNext()) * { // cria um array de objetos para pegar os parametros // de // * retorno da pesquisa Object[] * arraydadosContasCobrancaEmpresaParaCriterio = (Object[]) * dadosContasCobrancaEmpresaParaCriterioIterator .next(); * * GerarArquivoTextoContasCobrancaEmpresaHelper helper = new * GerarArquivoTextoContasCobrancaEmpresaHelper(); * * if (arraydadosContasCobrancaEmpresaParaCriterio[0] != null) { * helper .setIdComandoEmpresaCobrancaConta((Integer) * arraydadosContasCobrancaEmpresaParaCriterio[0]); } * * if (arraydadosContasCobrancaEmpresaParaCriterio[1] != null) { * helper .setQtdeContasCriterioComando((Integer) * arraydadosContasCobrancaEmpresaParaCriterio[1]); } * * if (arraydadosContasCobrancaEmpresaParaCriterio[2] != null) { * helper .setValorContasCriterioComando((BigDecimal) * arraydadosContasCobrancaEmpresaParaCriterio[2]); } * * mapHelper.put( helper.getIdComandoEmpresaCobrancaConta(), * helper); } * * } */ // Colecao com o Helper principal /* * if (colecaoGerarArquivoTextoContasCobrancaEmpresaHelper != null * && !colecaoGerarArquivoTextoContasCobrancaEmpresaHelper * .isEmpty()) { * * Iterator * colecaoGerarArquivoTextoContasCobrancaEmpresaHelperIterator = * colecaoGerarArquivoTextoContasCobrancaEmpresaHelper .iterator(); * * while * (colecaoGerarArquivoTextoContasCobrancaEmpresaHelperIterator * .hasNext()) { * * GerarArquivoTextoContasCobrancaEmpresaHelper helper = * (GerarArquivoTextoContasCobrancaEmpresaHelper) * colecaoGerarArquivoTextoContasCobrancaEmpresaHelperIterator * .next(); * * // Passa os dados do Map para o Helper principal * * if (mapHelper.containsKey(helper * .getIdComandoEmpresaCobrancaConta())) { * * GerarArquivoTextoContasCobrancaEmpresaHelper aux = mapHelper * .get(helper .getIdComandoEmpresaCobrancaConta()); * * helper.setQtdeContasCriterioComando(aux * .getQtdeContasCriterioComando()); * * helper.setValorContasCriterioComando(aux * .getValorContasCriterioComando()); * * } } } */ } catch (ErroRepositorioException e) { throw new ControladorException("erro.sistema", e); } return colecaoGerarArquivoTextoContasCobrancaEmpresaHelper; } /* * public Collection<GerarArquivoTextoContasCobrancaEmpresaHelper> * montarDadosContasCobrancaEmpresa() throws ControladorException{ * * //Collection colecaoDados = * * Collection<GerarArquivoTextoContasCobrancaEmpresaHelper> retorno = null;; * * /* * * if(colecaoDados != null && colecaoDados.hasnext()){ * * while (colecaoDados.hasNext()) { // cria um array de objetos para pegar * os parametros // de // retorno da pesquisa Object[] arraydados = * (Object[]) dadosContasCobrancaEmpresaParaCriterioIterator .next(); * * GerarArquivoTextoContasCobrancaEmpresaHelper helper = new * GerarArquivoTextoContasCobrancaEmpresaHelper(); * * if (arraydados[0] != null) { helper * .setIdComandoEmpresaCobrancaConta((Integer) arraydados[0]); } * * if (arraydados[1] != null) { helper .setIdEmpresa((Integer) * arraydados[1]); } * * if (arraydados[2] != null) { helper .setNomeEmpresa((String) * arraydados[2]); } * * if (arraydados[3] != null) { helper * .setCodigoSetorComercialInicial((String) arraydados[3]); } * * if (arraydados[4] != null) { helper * .setCodigoSetorComercialFinal((String) arraydados[4]); } * * if (arraydados[5] != null) { helper .setValorMinimoConta((BigDecimal) * arraydados[5]); } * * if (arraydados[6] != null) { helper .setValorMaximoConta((BigDecimal) * arraydados[6]); } * * if (arraydados[7] != null) { helper * .setAnoMesReferenciaContaInicial((Integer) arraydados[7]); } if * (arraydados[8] != null) { helper .setAnoMesReferenciaContaFinal((Integer) * arraydados[8]); } if (arraydados[9] != null) { helper * .setDataVencimentoContaInicial((Date) arraydados[9]); } if * (arraydados[10] != null) { helper .setDataVencimentoContaFinal((Date) * arraydados[10]); } if (arraydados[11] != null) { helper * .setDataExecucao((String) arraydados[11]); } if (arraydados[12] != null) * { helper .setIdImovel((Integer) arraydados[12]); } if (arraydados[13] != * null) { helper .setIdCliente(Integer) arraydados[13]); } if * (arraydados[14] != null) { helper .setNomeCliente(String) * arraydados[14]); } if (arraydados[15] != null) { helper * .setIdLocalidadeInicial(Integer) arraydados[15]); } if (arraydados[16] != * null) { helper .setIdLocalidadeFinal(Integer) arraydados[16]); } if * (arraydados[17] != null) { helper .setIdCliente(Integer) arraydados[17]); * } if (arraydados[18] != null) { helper .setIdUnidadeNegocio(Integer) * arraydados[18]); } if (arraydados[19] != null) { helper * .setNomeUnidadeNegocio(String) arraydados[19]); } } } * * * * return retorno; } */ /** * [UC0869] Gerar Arquivo Texto de Contas em Cobran�a por Empresa * * Pesquisa a quantidade de contas * * @author: R�mulo Aur�lio, Mariana Victor * @date: 29/10/2008, 26/04/2011 */ public void gerarArquivoTextoContasEmCobrancaEmpresa(Collection ids, Integer idEmpresa, Integer idUnidadeNegocio, int idFuncionalidadeIniciada) throws ControladorException { int idUnidadeIniciada = 0; ZipOutputStream zos = null; BufferedWriter out = null; try { // ------------------------- // Registrar o in�cio do processamento da Unidade de // Processamento do Batch // ------------------------- idUnidadeIniciada = getControladorBatch().iniciarUnidadeProcessamentoBatch(idFuncionalidadeIniciada, UnidadeProcessamento.UNIDADE_NEGOCIO, idUnidadeNegocio); // Vari�veis para a pagina��o da pesquisa // ======================================================================== boolean flagTerminou = false; final int quantidadeRegistros = 50000; int numeroIndice = 0; // ======================================================================== SistemaParametro sistemaParametro = this.getControladorUtil().pesquisarParametrosDoSistema(); Integer idPerfilProgramaEspecial = null; if (sistemaParametro.getPerfilProgramaEspecial() != null) { idPerfilProgramaEspecial = sistemaParametro.getPerfilProgramaEspecial().getId(); } if (ids != null && ids.size() > 0) { Collection colecaoDadosTxt = null; String nomeArquivo = null; // criar o arquivo zip File compactado = null; // nomeZip zos = null; File leitura = null; out = null; Map<Integer, GerarArquivoTextoContasCobrancaEmpresaHelper> mapHelper = new HashMap<Integer, GerarArquivoTextoContasCobrancaEmpresaHelper>(); while (!flagTerminou) { System.out.println("Inicio pesquisarDadosArquivoTextoContasCobrancaEmpresa "); colecaoDadosTxt = repositorioCobranca.pesquisarDadosArquivoTextoContasCobrancaEmpresa(ids, idUnidadeNegocio, numeroIndice, quantidadeRegistros, idPerfilProgramaEspecial); System.out.println("Voltou pesquisarDadosArquivoTextoContasCobrancaEmpresa "); if (colecaoDadosTxt != null && !colecaoDadosTxt.isEmpty()) { boolean layout02 = false; boolean aux = true; Iterator colecaoDadosTxtIterator = colecaoDadosTxt.iterator(); while (colecaoDadosTxtIterator.hasNext()) { GerarArquivoTextoContasCobrancaEmpresaHelper helper = new GerarArquivoTextoContasCobrancaEmpresaHelper(); StringBuilder arquivoTxt = new StringBuilder(); // cria um array de objetos para pegar os parametros // de retorno da pesquisa Object[] arraydadosTxt = (Object[]) colecaoDadosTxtIterator.next(); if (arraydadosTxt[30] == null || ((Short) arraydadosTxt[30]).equals(ConstantesSistema.SIM)) { if (aux) { nomeArquivo = "contas_cobranca_empresa_" + idEmpresa + "_" + idUnidadeNegocio + "_" + Util.formatarDataComTracoAAAAMMDD(new Date()) + "_" + Util.formatarDataHHMM(new Date()) + ""; // criar o arquivo zip compactado = new File(nomeArquivo + ".zip"); // nomeZip zos = new ZipOutputStream(new FileOutputStream(compactado)); leitura = new File(nomeArquivo + ".txt"); out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(leitura.getAbsolutePath()))); } this.montarDadosGerarArquivoTextoContasEmCobrancaEmpresa(arraydadosTxt, helper, ids); this.montarArquivoTextoContasEmCobrancaEmpresa(arquivoTxt, helper); arquivoTxt.append(System.getProperty("line.separator")); if (arquivoTxt != null && arquivoTxt.length() != 0) { out.write(arquivoTxt.toString()); out.flush(); } aux = false; } else { this.montarDadosGerarArquivoTextoContasEmCobrancaEmpresaLayoutTipo02(arraydadosTxt, mapHelper, helper, ids); layout02 = true; } helper = null; } if (layout02) { nomeArquivo = "cobranca_por_resultado_" + "Unid." + idUnidadeNegocio + "-Empr." + idEmpresa + "_" + Util.formatarDataComTracoAAAAMMDD(new Date()) + "_" + Util.formatarDataHHMM(new Date()) + ""; // criar o arquivo zip compactado = new File(nomeArquivo + ".zip"); // nomeZip zos = new ZipOutputStream(new FileOutputStream(compactado)); leitura = new File(nomeArquivo + ".txt"); out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(leitura.getAbsolutePath()))); if (mapHelper != null && !mapHelper.isEmpty() && !mapHelper.values().isEmpty()) { Collection<GerarArquivoTextoContasCobrancaEmpresaHelper> colecaoHelper = mapHelper.values(); Iterator iterator = colecaoHelper.iterator(); while (iterator.hasNext()) { StringBuilder arquivoTxt = new StringBuilder(); GerarArquivoTextoContasCobrancaEmpresaHelper helper = (GerarArquivoTextoContasCobrancaEmpresaHelper) iterator .next(); this.montarArquivoTextoContasEmCobrancaEmpresaLayoutTipo02(arquivoTxt, helper); arquivoTxt.append(System.getProperty("line.separator")); if (arquivoTxt != null && arquivoTxt.length() != 0) { out.write(arquivoTxt.toString()); out.flush(); } } } } } // Incrementa o n� do indice da p�gina��o numeroIndice = numeroIndice + quantidadeRegistros; /** * Caso a cole��o de dados retornados for menor que a * quantidade de registros seta a flag indicando que a * pagina��o terminou. */ if (colecaoDadosTxt == null || colecaoDadosTxt.size() < quantidadeRegistros) { flagTerminou = true; } if (colecaoDadosTxt != null) { colecaoDadosTxt.clear(); colecaoDadosTxt = null; } } ZipUtil.adicionarArquivo(zos, leitura); out.close(); leitura.delete(); } this.repositorioCobranca.atualizarIndicadorGeracaoTxt(ids); getControladorBatch().encerrarUnidadeProcessamentoBatch(null, idUnidadeIniciada, false); } catch (ErroRepositorioException e) { e.printStackTrace(); getControladorBatch().encerrarUnidadeProcessamentoBatch(e, idUnidadeIniciada, true); throw new EJBException(e); } catch (IOException e) { e.printStackTrace(); getControladorBatch().encerrarUnidadeProcessamentoBatch(e, idUnidadeIniciada, true); } finally { IoUtil.fecharStream(out); IoUtil.fecharStream(zos); } } public Collection obterUnidadeNegocioEmpresaCobrancaConta(Integer[] ids) throws ControladorException { Collection colecaoUnidadeNegocio = null; Collection colecaoIdsUnidades = null; try { colecaoIdsUnidades = repositorioCobranca.obterUnidadeNegocioEmpresaCobrancaConta(ids); if (colecaoIdsUnidades != null && !colecaoIdsUnidades.isEmpty()) { colecaoUnidadeNegocio = new ArrayList(); Iterator iter = colecaoIdsUnidades.iterator(); while (iter.hasNext()) { Integer idUnidade = (Integer) iter.next(); UnidadeNegocio unidadeNegocio = new UnidadeNegocio(); unidadeNegocio.setId(idUnidade); colecaoUnidadeNegocio.add(unidadeNegocio); } } } catch (ErroRepositorioException e) { e.printStackTrace(); } return colecaoUnidadeNegocio; } /** * [UC0869] Gerar Arquivo Texto de Contas em Cobran�a por Empresa * * Pesquisa a quantidade de contas * * @author: R�mulo Aur�lio * @date: 29/10/2008 */ private void montarDadosGerarArquivoTextoContasEmCobrancaEmpresa(Object[] arraydadosTxt, GerarArquivoTextoContasCobrancaEmpresaHelper helper, Collection ids) { // ID EmpresaCobrancaConta if (arraydadosTxt[0] != null) { helper.setIdCobrancaConta((Integer) (arraydadosTxt[0])); } // Id unidadeNegocio if (arraydadosTxt[1] != null) { helper.setIdUnidadeNegocio((Integer) (arraydadosTxt[1])); } // Nome unidadeNegocio if (arraydadosTxt[2] != null) { helper.setNomeUnidadeNegocio((String) (arraydadosTxt[2])); } // Faturamento Grupo if (arraydadosTxt[3] != null) { helper.setIdFaturamentoGrupo((Integer) (arraydadosTxt[3])); } // Localidade if (arraydadosTxt[4] != null) { helper.setIdLocalidade((Integer) (arraydadosTxt[4])); } if (arraydadosTxt[5] != null) { helper.setNomeLocalidade((String) (arraydadosTxt[5])); } // Codigo da Rota if (arraydadosTxt[6] != null) { helper.setCodigoRota((Short) (arraydadosTxt[6])); } // Sequencial da Rota if (arraydadosTxt[7] != null) { helper.setNumeroSequencialRota((Integer) (arraydadosTxt[7])); } // IdImovel if (arraydadosTxt[8] != null) { helper.setIdImovel((Integer) (arraydadosTxt[8])); } // nomeCliente if (arraydadosTxt[9] != null) { helper.setNomeClienteConta((String) (arraydadosTxt[9])); } // IdClienteTipo if (arraydadosTxt[10] != null) { helper.setIdClienteTipo((Integer) (arraydadosTxt[10])); } // Cpf if (arraydadosTxt[11] != null) { helper.setCpf((String) (arraydadosTxt[11])); } // Cnpj if (arraydadosTxt[12] != null) { helper.setCnpj((String) (arraydadosTxt[12])); } // RG if (arraydadosTxt[13] != null) { helper.setRg((String) (arraydadosTxt[13])); } // numeroQuadra if (arraydadosTxt[14] != null) { helper.setNumeroQuadra((((Integer) (arraydadosTxt[14])).intValue())); } Conta conta = new Conta(); // idConta if (arraydadosTxt[15] != null) { conta.setId((Integer) (arraydadosTxt[15])); } // telefone if (arraydadosTxt[16] != null) { helper.setTelefone((String) (arraydadosTxt[16])); } // Nome Abreviado Cliente if (arraydadosTxt[17] != null) { helper.setNomeAbreviadoCliente((String) (arraydadosTxt[17])); } // AnoMesReferencia conta if (arraydadosTxt[18] != null) { conta.setReferencia(((Integer) (arraydadosTxt[18])).intValue()); } // Data vencimento conta if (arraydadosTxt[19] != null) { conta.setDataVencimentoConta((Date) (arraydadosTxt[19])); } // Valor Agua if (arraydadosTxt[20] != null) { conta.setValorAgua((BigDecimal) (arraydadosTxt[20])); } // Valor Esgoto if (arraydadosTxt[21] != null) { conta.setValorEsgoto((BigDecimal) (arraydadosTxt[21])); } // Valor Debitos if (arraydadosTxt[22] != null) { conta.setDebitos((BigDecimal) (arraydadosTxt[22])); } // Valor creditos if (arraydadosTxt[23] != null) { conta.setValorCreditos((BigDecimal) (arraydadosTxt[23])); } // codigoSetor comercial if (arraydadosTxt[24] != null) { helper.setCodigoSetorComercial(((Integer) (arraydadosTxt[24])).toString()); } // lote if (arraydadosTxt[25] != null) { helper.setNumeroLote((Short) (arraydadosTxt[25])); } // sublote if (arraydadosTxt[26] != null) { helper.setNumeroSublote((Short) (arraydadosTxt[26])); } // cliente id if (arraydadosTxt[27] != null) { helper.setIdCliente((Integer) (arraydadosTxt[27])); } // id da ger�ncia regional if (arraydadosTxt[28] != null) { helper.setIdGerenciaRegional((Integer) (arraydadosTxt[28])); } // nome da ger�ncia regional if (arraydadosTxt[29] != null) { helper.setNomeGerenciaRegional((String) (arraydadosTxt[29])); } // c�digo do layout txt if (arraydadosTxt[30] != null) { helper.setCodigoLayoutTxt((Short) (arraydadosTxt[30])); } helper.setConta(conta); try { Collection colecaoDadosTxt = getControladorEndereco().pesquisarDadosClienteEnderecoArquivoTextoContasCobrancaEmpresa( helper.getIdCliente()); if (colecaoDadosTxt != null && !colecaoDadosTxt.isEmpty()) { Iterator colecaoDadosTxtIterator = colecaoDadosTxt.iterator(); while (colecaoDadosTxtIterator.hasNext()) { // cria um array de objetos para pegar os parametros // de retorno da pesquisa Object[] arraydados = (Object[]) colecaoDadosTxtIterator.next(); // nomeLogradouro if (arraydados[0] != null) { helper.setNomeLogradouro((String) (arraydados[0])); } // complemento endereco if (arraydados[1] != null) { helper.setComplementoEndereco((String) (arraydados[1])); } // codigo cep if (arraydados[2] != null) { helper.setCodigoCep(((Integer) (arraydados[2])).toString()); } // nome Bairro if (arraydados[3] != null) { helper.setNomeBairro((String) (arraydados[3])); } // numero imovel if (arraydados[4] != null) { helper.setNumeroImovel((String) (arraydados[4])); } // tipo logradouro if (arraydados[5] != null) { Integer id = (Integer) arraydados[5]; FiltroLogradouroTipo filtroLogradouroTipo = new FiltroLogradouroTipo(); filtroLogradouroTipo.adicionarParametro(new ParametroSimples(FiltroLogradouroTipo.ID, id)); Collection colecaoLogradouroTipo = this.getControladorUtil().pesquisar(filtroLogradouroTipo, LogradouroTipo.class.getName()); LogradouroTipo logradouroTipo = (LogradouroTipo) Util.retonarObjetoDeColecao(colecaoLogradouroTipo); helper.setTipoLogradouro(logradouroTipo.getDescricao()); } } } if (colecaoDadosTxt != null) { colecaoDadosTxt.clear(); } Integer quantidadeContas = repositorioCobranca.pesquisarQuantidadeContasArquivoTextoContasCobrancaEmpresa(ids, helper.getIdImovel()); if (quantidadeContas != null) { helper.setQuantidadeContas(quantidadeContas); } } catch (ControladorException e) { e.printStackTrace(); } catch (ErroRepositorioException e) { e.printStackTrace(); } } /** * [UC0869] Gerar Arquivo Texto de Contas em Cobran�a por Empresa * * Pesquisa a quantidade de contas * * @author: R�mulo Aur�lio * @date: 29/10/2008 */ private void montarArquivoTextoContasEmCobrancaEmpresa(StringBuilder arquivoTxt, GerarArquivoTextoContasCobrancaEmpresaHelper helper) { // idUnidadeNegocio tam 04 if (helper.getIdUnidadeNegocio() != null) { arquivoTxt.append(Util.truncarString(helper.getIdUnidadeNegocio().toString(), 4) + ";"); } else { arquivoTxt.append(";"); } // nomeUnidadeNegocio tam 50 if (helper.getNomeUnidadeNegocio() != null) { arquivoTxt.append(Util.truncarString(helper.getNomeUnidadeNegocio(), 50) + ";"); } else { arquivoTxt.append(";"); } // IdFaturamentoGrupo tam 04 if (helper.getIdFaturamentoGrupo() != null) { arquivoTxt.append(Util.truncarString(helper.getIdFaturamentoGrupo().toString(), 4) + ";"); } else { arquivoTxt.append(";"); } // IdLocalidade tam 04 if (helper.getIdLocalidade() != null) { arquivoTxt.append(Util.truncarString(helper.getIdLocalidade().toString(), 4) + ";"); } else { arquivoTxt.append(";"); } // NomeLocalidade tam 30 if (helper.getNomeLocalidade() != null) { arquivoTxt.append(Util.truncarString(helper.getNomeLocalidade(), 30) + ";"); } else { arquivoTxt.append(";"); } // codigoRota tam 06 if (helper.getCodigoRota() != null) { arquivoTxt.append(Util.truncarString(helper.getCodigoRota().toString(), 6) + ";"); } else { arquivoTxt.append(";"); } // sequencialRota tam 09 if (helper.getNumeroSequencialRota() != null) { arquivoTxt.append(Util.truncarString(helper.getNumeroSequencialRota().toString(), 9) + ";"); } else { arquivoTxt.append(";"); } // ComplementoSequencialRota tam 0 ???? // arquivoTxt.append(";"); // matriculaImovel tam 09 if (helper.getIdImovel() != null) { arquivoTxt.append(Util.truncarString(helper.getIdImovel().toString(), 9) + ";"); } else { arquivoTxt.append(";"); } // nomeCliente tam 40 if (helper.getNomeClienteConta() != null) { arquivoTxt.append(Util.truncarString(helper.getNomeClienteConta(), 40) + ";"); } else { arquivoTxt.append(";"); } // nomeAbreviadoCliente tam 40 if (helper.getNomeAbreviadoCliente() != null) { arquivoTxt.append(Util.truncarString(helper.getNomeAbreviadoCliente(), 40) + ";"); } else { arquivoTxt.append(";"); } // NomeLogradouro tam 30 if (helper.getNomeLogradouro() != null) { arquivoTxt.append(Util.truncarString(helper.getNomeLogradouro(), 30) + ";"); } else { arquivoTxt.append(";"); } // NumeroImovel tam 5 if (helper.getNumeroImovel() != null) { arquivoTxt.append(Util.adicionarZerosEsquedaNumeroTruncando(5, helper.getNumeroImovel().toString()) + ";"); } else { arquivoTxt.append(Util.adicionarZerosEsquedaNumeroTruncando(5, "") + ";"); } // ComplementoImovel tam 3 ???? // arquivoTxt.append(";"); // complementoEndereco tam 50 if (helper.getComplementoEndereco() != null) { arquivoTxt.append(Util.truncarString(helper.getComplementoEndereco(), 50) + ";"); } else { arquivoTxt.append(";"); } // codigo cep tam 10 if (helper.getCodigoCep() != null) { arquivoTxt.append(Util.truncarString(helper.getCodigoCep(), 10) + ";"); } else { arquivoTxt.append(";"); } // nomeBairro tam 30 if (helper.getNomeBairro() != null) { arquivoTxt.append(Util.truncarString(helper.getNomeBairro(), 30) + ";"); } else { arquivoTxt.append(";"); } // telefone tam 9 if (helper.getTelefone() != null) { arquivoTxt.append(Util.truncarString(helper.getTelefone(), 9) + ";"); } else { arquivoTxt.append(";"); } // CPF e CNPJtam 18 if (helper.getIdClienteTipo().toString().equalsIgnoreCase(ClienteTipo.INDICADOR_PESSOA_FISICA.toString())) { // cpf if (helper.getCpf() != null) { arquivoTxt.append(Util.truncarString(Util.formatarCpf(helper.getCpf()), 18) + ";"); } else { arquivoTxt.append(";"); } } else { // cnpj if (helper.getCnpj() != null) { arquivoTxt.append(Util.truncarString(Util.formatarCnpj(helper.getCnpj()), 18) + ";"); } else { arquivoTxt.append(";"); } } // RG tam 13 if (helper.getIdClienteTipo().toString().equalsIgnoreCase(ClienteTipo.INDICADOR_PESSOA_FISICA.toString())) { if (helper.getRg() != null) { arquivoTxt.append(Util.truncarString(helper.getRg(), 13) + ";"); } else { arquivoTxt.append(";"); } } else { arquivoTxt.append(";"); } // Dados Conta if (helper.getConta() != null) { arquivoTxt.append(Util.formatarAnoMesParaMesAnoSemZeroNoMes("" + helper.getConta().getReferencia()) + ";"); // Referencia tam 10 DD/MM/AAAA if (helper.getConta().getDataVencimentoConta() != null) { arquivoTxt.append(Util.formatarDataSemZeroAntesMes(helper.getConta().getDataVencimentoConta()) + ";"); } else { arquivoTxt.append(";"); } // Valor Ligacao Agua tam 15 if (helper.getConta().getValorAgua() != null) { arquivoTxt.append(Util.adicionarZerosEsquedaNumeroTruncando(15, Util.formatarBigDecimalParaString(helper.getConta().getValorAgua())) + ";"); } else { arquivoTxt.append(";"); } // Valor Ligacao Esgoto tam 15 if (helper.getConta().getValorEsgoto() != null) { arquivoTxt.append(Util.truncarString(Util.formatarBigDecimalParaString(helper.getConta().getValorEsgoto()), 15) + ";"); } else { arquivoTxt.append(";"); } // Valor Ligacao Esgoto tam 15 if (helper.getConta().getValorEsgoto() != null) { arquivoTxt.append(Util.truncarString(Util.formatarBigDecimalParaString(helper.getConta().getValorEsgoto()), 15) + ";"); } else { arquivoTxt.append(";"); } // Valor Ligacao Esgoto tam 15 if (helper.getConta().getValorEsgoto() != null) { arquivoTxt.append(Util.truncarString(Util.formatarBigDecimalParaString(helper.getConta().getValorEsgoto()), 15) + ";"); } else { arquivoTxt.append(";"); } // Valor Ligacao Debitos tam 15 if (helper.getConta().getDebitos() != null) { arquivoTxt.append(Util.truncarString(Util.formatarBigDecimalParaString(helper.getConta().getDebitos()), 15) + ";"); } else { arquivoTxt.append(";"); } // Valor Ligacao Creditos tam 15 if (helper.getConta().getValorCreditos() != null) { arquivoTxt.append(Util.truncarString(Util.formatarBigDecimalParaString(helper.getConta().getValorCreditos()), 15) + ";"); } else { arquivoTxt.append(";"); } // Valor Ligacao Fatura tam 15 if (helper.getConta().getValorTotal() != null) { arquivoTxt.append(Util.truncarString(Util.formatarBigDecimalParaString(helper.getConta().getValorTotal()), 15) + ";"); } else { arquivoTxt.append(";"); } // Ano Controle tam 4 arquivoTxt.append(Util.obterAno(helper.getConta().getReferencia()) + ";"); // Controle arquivoTxt.append(Util.truncarString(helper.getConta().getId().toString(), 10) + ";"); // Setor Comercial if (helper.getCodigoSetorComercial() != null) { arquivoTxt.append(Util.truncarString(helper.getCodigoSetorComercial().toString(), 4) + ";"); } else { arquivoTxt.append(";"); } // Quadra arquivoTxt.append(Util.truncarString("" + helper.getNumeroQuadra(), 7) + ";"); // Lote arquivoTxt.append(Util.truncarString("" + helper.getNumeroLote(), 4) + ";"); // Sublote arquivoTxt.append(Util.truncarString("" + helper.getNumeroSublote(), 4) + ";"); // tipoLogradouro tam 20 if (helper.getTipoLogradouro() != null) { arquivoTxt.append(Util.truncarString(helper.getTipoLogradouro(), 20) + ""); } } } /** * [UC0214] - Efetuar Parcelamento de D�bitos * * @author Raphael Rossiter * @date 13/11/2008 * * @return Collection<ResolucaoDiretoria> * @throws ControladorException */ public Collection<ResolucaoDiretoria> pesquisarResolucaoDiretoriaMaiorDataVigenciaInicioPermissaoEspecial() throws ControladorException { try { // chama o met�do de pesquisar do reposit�rio return repositorioCobranca.pesquisarResolucaoDiretoriaMaiorDataVigenciaInicioPermissaoEspecial(); // erro no hibernate } catch (ErroRepositorioException ex) { // seta o rollback sessionContext.setRollbackOnly(); // levanta a exce��o para a pr�xima camada throw new ControladorException("erro.sistema", ex); } } /** * Pesquisa a quantidade de Rotas que nao possui um Criterio definido para * cada uma das Acoes de Cobrancas passadas no filtro * * @author Victor Cisneiros * @date 10/12/2008 */ public Integer pesquisarQtdeRotasSemCriteriosParaAcoesCobranca(PesquisarQtdeRotasSemCriteriosParaAcoesCobranca filtro) throws ControladorException { try { return repositorioCobranca.pesquisarQtdeRotasSemCriteriosParaAcoesCobranca(filtro); } catch (ErroRepositorioException ex) { sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", ex); } } /** * [UC0325] Consultar Comandos de A��o de Cobran�a * * Cancela os Documentos de Cobran�as Gerados do Cronograma ou Eventual * * @author Victor Cisneiros * @date 19/12/2008 */ public void cancelarDocumentosCobrancaDoCronogramaOuEventual(Usuario usuarioLogado, Integer idCobrancaAcaoAtividadeCronograma, Integer idCobrancaAcaoAtividadeComando) throws ControladorException { // System.out.println("idCobrancaAcaoAtividadeCronograma: " + // idCobrancaAcaoAtividadeCronograma); // System.out.println("idCobrancaAcaoAtividadeComando: " + // idCobrancaAcaoAtividadeComando); // Verifica se � poss�vel realizar esse cancelamento this.verificarCancelamentoDocumentosCobranca(idCobrancaAcaoAtividadeCronograma, idCobrancaAcaoAtividadeComando); CancelarDocumentosCobrancaHelper helper = pesquisarIdsDocumentosCobranca(idCobrancaAcaoAtividadeCronograma, idCobrancaAcaoAtividadeComando); CobrancaAcao cobrancaAcao = helper.getCobrancaAcao(); CobrancaAcaoAtividadeCronograma cobrancaAcaoAtividadeCronograma = helper.getCobrancaAcaoAtividadeCronograma(); CobrancaAcaoAtividadeComando cobrancaAcaoAtividadeComando = helper.getCobrancaAcaoAtividadeComando(); ArrayList<Integer> idsCobrancaDocumento = (ArrayList<Integer>) helper.getIdsDocumentosCobranca(); try { cancelarDocumentosCobrancaDoCronogramaOuEventual(idsCobrancaDocumento, cobrancaAcao, null, null); if (cobrancaAcaoAtividadeCronograma != null) { repositorioCobranca.removerImoveisNaoGerados(cobrancaAcaoAtividadeCronograma.getId(), null); // ------------ REGISTRAR TRANSA��O---------------------------- RegistradorOperacao registradorOperacao = new RegistradorOperacao(Operacao.OPERACAO_CANCELAR_DOCUMENTOS_COBRANCA, idCobrancaAcaoAtividadeCronograma, idCobrancaAcaoAtividadeCronograma, new UsuarioAcaoUsuarioHelper(usuarioLogado, UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO)); registradorOperacao.registrarOperacao(cobrancaAcaoAtividadeCronograma); // ------------ REGISTRAR TRANSA��O---------------------------- cobrancaAcaoAtividadeCronograma.setRealizacao(null); cobrancaAcaoAtividadeCronograma.setQuantidadeDocumentos(0); cobrancaAcaoAtividadeCronograma.setValorDocumentos(new BigDecimal("0")); cobrancaAcaoAtividadeCronograma.setQuantidadeItensCobrados(0); cobrancaAcaoAtividadeCronograma.setUltimaAlteracao(new Date()); repositorioUtil.atualizar(cobrancaAcaoAtividadeCronograma); // Vivianne Sousa - 19/04/2010 // zerar os valores da tabela CobrancaDocumentoControleGeracao repositorioCobranca.atualizarCobrancaDocumentoControleGeracao(0, 0, new BigDecimal("0"), null, cobrancaAcaoAtividadeCronograma.getId()); } if (cobrancaAcaoAtividadeComando != null) { repositorioCobranca.removerImoveisNaoGerados(null, cobrancaAcaoAtividadeComando.getId()); // ------------ REGISTRAR TRANSA��O---------------------------- RegistradorOperacao registradorOperacao = new RegistradorOperacao(Operacao.OPERACAO_CANCELAR_DOCUMENTOS_COBRANCA, idCobrancaAcaoAtividadeComando, idCobrancaAcaoAtividadeComando, new UsuarioAcaoUsuarioHelper(usuarioLogado, UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO)); registradorOperacao.registrarOperacao(cobrancaAcaoAtividadeComando); // ------------ REGISTRAR TRANSA��O---------------------------- cobrancaAcaoAtividadeComando.setRealizacao(null); cobrancaAcaoAtividadeComando.setQuantidadeDocumentos(0); cobrancaAcaoAtividadeComando.setValorDocumentos(new BigDecimal("0")); cobrancaAcaoAtividadeComando.setQuantidadeItensCobrados(0); cobrancaAcaoAtividadeComando.setUltimaAlteracao(new Date()); repositorioUtil.atualizar(cobrancaAcaoAtividadeComando); // Vivianne Sousa - 19/04/2010 // zerar os valores da tabela CobrancaDocumentoControleGeracao repositorioCobranca.atualizarCobrancaDocumentoControleGeracao(0, 0, new BigDecimal("0"), cobrancaAcaoAtividadeComando.getId(), null); } } catch (Exception ex) { sessionContext.setRollbackOnly(); throw new ControladorException(ex.getMessage(), ex); } } /** * [UC0325] Consultar Comandos de A��o de Cobran�a * * Cancela os Documentos de Cobran�as Gerados do Cronograma ou Eventual * * @author Victor Cisneiros * @throws ErroRepositorioException * @date 19/12/2008 */ private void cancelarDocumentosCobrancaDoCronogramaOuEventual(ArrayList<Integer> idsCobrancaDocumento, CobrancaAcao cobrancaAcao, Integer idCobrancaDocumentoControleGeracao, BigDecimal valorTotalCobrancaDocumento) throws ControladorException, ErroRepositorioException { int TAM_BLOCO = 998; if (idsCobrancaDocumento != null && idsCobrancaDocumento.size() > 0) { int qtdBlocos = (idsCobrancaDocumento.size() / TAM_BLOCO) + 1; for (int i = 0; i < qtdBlocos; i++) { int fimBloco = 0; if (i == (qtdBlocos - 1)) { fimBloco = idsCobrancaDocumento.size(); } else { fimBloco = TAM_BLOCO * (i + 1); } Integer[] arrayAux = idsCobrancaDocumento.subList(i * TAM_BLOCO, fimBloco).toArray(new Integer[0]); int qtdDebitosACobrar = 0; // caso seja aviso de corte ou outra a��o com o indicador em // cobran�a a��o cbac_icgera��otaxa com valor 1 if (cobrancaAcao.getIndicadorGeracaoTaxa() != null && cobrancaAcao.getIndicadorGeracaoTaxa().equals(CobrancaAcao.INDICADOR_SIM)) { SistemaParametro sistemaParametro = getControladorUtil().pesquisarParametrosDoSistema(); qtdDebitosACobrar = repositorioCobranca.deletarDebitoACobrarGeradasPelosDocumentosCobranca(Arrays.asList(arrayAux), sistemaParametro.getAnoMesFaturamento()); } // Inserindo os registros de nao geracao dos documentos repositorioCobranca.inserirImoveisNaoGeradosParaDocumentosExcedentes(Arrays.asList(arrayAux)); repositorioCobranca.removerDebitoACobrarOrdemServicoGeradasPelosDocumentosCobranca(Arrays.asList(arrayAux)); repositorioCobranca.deletarOrdemServicoUnidadeGeradasPelosDocumentosCobranca(Arrays.asList(arrayAux)); repositorioCobranca.deletarOrdemServicoGeradasPelosDocumentosCobranca(Arrays.asList(arrayAux)); Integer quantidadeCobrancaDocumentoItemDeletados = repositorioCobranca .deletarCobrancaDocumentoItemGeradasPelosDocumentosCobranca(Arrays.asList(arrayAux)); // adicionado por Vivianne Sousa - 14/12/2009 - analista:Chico // deleta os documentos de cobranca impress�o pelos // idDocumentoCobranca repositorioCobranca.deletarDocumentoCobrancaImpressao(Arrays.asList(arrayAux)); int qtdDocumentos = repositorioCobranca.deletarCobrancaDocumentos(Arrays.asList(arrayAux)); // Vivianne Sousa - 19/04/2010 // atualizar a quantidade de documentos cobrados, a quantidade // de itens cobrados // e o valor total dos documentos na tabela // cobranca_documento_controle_geracao if (idCobrancaDocumentoControleGeracao != null) { repositorioCobranca.atualizarCobrancaDocumentoControleGeracaoSubtrair(idCobrancaDocumentoControleGeracao, qtdDocumentos, quantidadeCobrancaDocumentoItemDeletados, valorTotalCobrancaDocumento); } // Caso seja uma a��o que gere taxa, verificar se a quantidade // de debitos a cobrar � igual a quantidade de documentos // gerados/excluidos // considerando que a quantidade de debitos a cobrar menor que a // quantidade de documentos // representa que debitos a cobrar ja foram faturados if (cobrancaAcao.getIndicadorGeracaoTaxa() != null && cobrancaAcao.getIndicadorGeracaoTaxa().equals(CobrancaAcao.INDICADOR_SIM) && qtdDebitosACobrar < qtdDocumentos) { throw new ControladorException("atencao.cancelamento.documentos.ja.existem.debitos.cobrados"); } } } } /** * Verifica se � poss�vel realizar o cancelamento dos Documentos de Cobran�a * do Cronograma ou Comando * * @author Victor Cisneiros * @date 19/12/2008 */ public boolean verificarCancelamentoDocumentosCobranca(Integer idCobrancaAcaoAtividadeCronograma, Integer idCobrancaAcaoAtividadeComando) throws ControladorException { try { CancelarDocumentosCobrancaHelper helper = pesquisarIdsDocumentosCobranca(idCobrancaAcaoAtividadeCronograma, idCobrancaAcaoAtividadeComando); CobrancaAcaoAtividadeComando cobrancaAcaoAtividadeComando = helper.getCobrancaAcaoAtividadeComando(); CobrancaAcaoAtividadeCronograma cobrancaAcaoAtividadeCronograma = helper.getCobrancaAcaoAtividadeCronograma(); Fachada fachada = Fachada.getInstancia(); // [FS0001] - Atividade diferente de EMITIR // System.out.println("[FS0001] - Atividade diferente de EMITIR"); if (cobrancaAcaoAtividadeCronograma != null) { if (cobrancaAcaoAtividadeCronograma.getCobrancaAtividade() == null || !cobrancaAcaoAtividadeCronograma.getCobrancaAtividade().getId().equals(CobrancaAtividade.EMITIR)) { throw new ControladorException("atencao.apenas.possivel.cancelar.atividade.emitir"); } } if (cobrancaAcaoAtividadeComando != null) { if (cobrancaAcaoAtividadeComando.getCobrancaAtividade() == null || !cobrancaAcaoAtividadeComando.getCobrancaAtividade().getId().equals(CobrancaAtividade.EMITIR)) { throw new ControladorException("atencao.apenas.possivel.cancelar.atividade.emitir"); } } // [FS0002] - A��o de Cobran�a j� encerrada // System.out.println("[FS0002] - A��o de Cobran�a j� encerrada"); if (cobrancaAcaoAtividadeCronograma != null) { Integer idCobrancaAcaoCronograma = cobrancaAcaoAtividadeCronograma.getCobrancaAcaoCronograma().getId(); FiltroCobrancaAcaoAtividadeCronograma filtroCobrancaAcaoAtividadeCronograma = new FiltroCobrancaAcaoAtividadeCronograma(); filtroCobrancaAcaoAtividadeCronograma.adicionarParametro(new ParametroSimples( FiltroCobrancaAcaoAtividadeCronograma.ID_COBRANCA_ACAO_CRONOGRAMA, idCobrancaAcaoCronograma)); filtroCobrancaAcaoAtividadeCronograma.adicionarParametro(new ParametroSimples( FiltroCobrancaAcaoAtividadeCronograma.ID_COBRANCA_ATIVIDADE, CobrancaAtividade.ENCERRAR)); Collection pesquisa = fachada.pesquisar(filtroCobrancaAcaoAtividadeCronograma, CobrancaAcaoAtividadeCronograma.class.getName()); if (pesquisa != null && pesquisa.size() > 0) { CobrancaAcaoAtividadeCronograma cobrancaAcaoAtividadeCronogramaDoEncerrar = (CobrancaAcaoAtividadeCronograma) Util .retonarObjetoDeColecao(pesquisa); if (cobrancaAcaoAtividadeCronogramaDoEncerrar.getRealizacao() != null) { throw new ControladorException("atencao.nao.possivel.cancelar.para.acoes.cobranca.encerradas"); } } } if (cobrancaAcaoAtividadeComando != null) { if (cobrancaAcaoAtividadeComando.getDataEncerramentoRealizada() != null) { throw new ControladorException("atencao.nao.possivel.cancelar.para.acoes.cobranca.encerradas"); } } // [FS0003] - Ordem de servi�o j� encerrada // System.out.println("[FS0003] - Ordem de servi�o j� encerrada"); if (cobrancaAcaoAtividadeCronograma != null) { CobrancaAcao cobrancaAcao = cobrancaAcaoAtividadeCronograma.getCobrancaAcaoCronograma().getCobrancaAcao(); if (cobrancaAcao != null && cobrancaAcao.getServicoTipo() != null) { Integer ordensExecutadas = repositorioCobranca.pesquisarQuantidadeOrdensServicoEncerradasPorCobrancaAcaoAtividade( idCobrancaAcaoAtividadeCronograma, idCobrancaAcaoAtividadeComando); if (ordensExecutadas != null && ordensExecutadas > 0) { throw new ControladorException("atencao.cancelamento.documentos.ja.existem.ordens"); } } } if (cobrancaAcaoAtividadeComando != null) { CobrancaAcao cobrancaAcao = cobrancaAcaoAtividadeComando.getCobrancaAcao(); if (cobrancaAcao != null && cobrancaAcao.getServicoTipo() != null) { Integer ordensExecutadas = repositorioCobranca.pesquisarQuantidadeOrdensServicoEncerradasPorCobrancaAcaoAtividade( idCobrancaAcaoAtividadeCronograma, idCobrancaAcaoAtividadeComando); if (ordensExecutadas != null && ordensExecutadas > 0) { throw new ControladorException("atencao.cancelamento.documentos.ja.existem.ordens"); } } } // [FS0004] - Pagamento j� realizado para documento de cobran�a // System.out.println("[FS0004] - Pagamento j� realizado para documento de cobran�a"); Integer pagamentosExecutados = repositorioCobranca.pesquisarQuantidadePagamentosPorDocumentosCobranca( idCobrancaAcaoAtividadeCronograma, idCobrancaAcaoAtividadeComando); if (pagamentosExecutados != null && pagamentosExecutados > 0) { throw new ControladorException("atencao.cancelamento.documentos.ja.existem.pagamentos"); } // [FS0005] - A��o sucessora j� realizada // System.out.println("[FS0005] - A��o sucessora j� realizada"); Integer comandosSucessores = repositorioCobranca.pesquisarQuantidadeComandosSucessores(idCobrancaAcaoAtividadeCronograma, idCobrancaAcaoAtividadeComando); if (comandosSucessores != null && comandosSucessores > 0) { throw new ControladorException("atencao.cancelamento.docuemntos.ja.existem.comandos"); } return true; } catch (ErroRepositorioException ex) { sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", ex); } } private CancelarDocumentosCobrancaHelper pesquisarIdsDocumentosCobranca(Integer idCobrancaAcaoAtividadeCronograma, Integer idCobrancaAcaoAtividadeComando) throws ControladorException { CancelarDocumentosCobrancaHelper retorno = new CancelarDocumentosCobrancaHelper(); Fachada fachada = Fachada.getInstancia(); Integer anoMesReferencia = null; Integer idGrupo = null; CobrancaAcao cobrancaAcao = null; CobrancaAcaoAtividadeCronograma cobrancaAcaoAtividadeCronograma = null; CobrancaAcaoAtividadeComando cobrancaAcaoAtividadeComando = null; Collection<Integer> idsCobrancaDocumento = new ArrayList<Integer>(); // Pesquisar a CobrancaAcao por cobrancaAcaoAtividadeCronomgrama // (CRONOGRAMA) if (idCobrancaAcaoAtividadeCronograma != null) { FiltroCobrancaAcaoAtividadeCronograma filtroCobrancaAcaoAtividadeCronograma = new FiltroCobrancaAcaoAtividadeCronograma(); filtroCobrancaAcaoAtividadeCronograma .adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAcaoAtividadeCronograma.COBRANCA_ACAO); filtroCobrancaAcaoAtividadeCronograma .adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAcaoAtividadeCronograma.COBRANCA_GRUPO_CRONOGRAMA_MES); filtroCobrancaAcaoAtividadeCronograma .adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAcaoAtividadeCronograma.COBRANCA_ACAO_CRONOGRAMA); filtroCobrancaAcaoAtividadeCronograma .adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAcaoAtividadeCronograma.COBRANCA_ATIVIDADE); filtroCobrancaAcaoAtividadeCronograma.adicionarParametro(new ParametroSimples(FiltroCobrancaAcaoAtividadeCronograma.ID, idCobrancaAcaoAtividadeCronograma)); Collection colecaoCobrancaAcaoAtividadeCronograma = fachada.pesquisar(filtroCobrancaAcaoAtividadeCronograma, CobrancaAcaoAtividadeCronograma.class.getName()); if (colecaoCobrancaAcaoAtividadeCronograma == null || colecaoCobrancaAcaoAtividadeCronograma.isEmpty()) { throw new ControladorException("atencao.pesquisa_inexistente", null, "Cobranca Acao Atividade Cronograma"); } cobrancaAcaoAtividadeCronograma = (CobrancaAcaoAtividadeCronograma) Util .retonarObjetoDeColecao(colecaoCobrancaAcaoAtividadeCronograma); cobrancaAcao = cobrancaAcaoAtividadeCronograma.getCobrancaAcaoCronograma().getCobrancaAcao(); idGrupo = cobrancaAcaoAtividadeCronograma.getCobrancaAcaoCronograma().getCobrancaGrupoCronogramaMes().getCobrancaGrupo() .getId(); anoMesReferencia = cobrancaAcaoAtividadeCronograma.getCobrancaAcaoCronograma().getCobrancaGrupoCronogramaMes() .getAnoMesReferencia(); FiltroCobrancaDocumento filtroCobrancaDocumento = new FiltroCobrancaDocumento(); filtroCobrancaDocumento.adicionarParametro(new ParametroSimples(FiltroCobrancaDocumento.ATIVIDADE_CRONOGRAMA_ID, cobrancaAcaoAtividadeCronograma.getId())); filtroCobrancaDocumento.setCampoOrderBy(FiltroCobrancaDocumento.ID); Collection colecaoCobrancaDocumento = fachada.pesquisar(filtroCobrancaDocumento, CobrancaDocumento.class.getName()); if (colecaoCobrancaDocumento != null) { for (CobrancaDocumento cobrancaDocumento : (Collection<CobrancaDocumento>) colecaoCobrancaDocumento) { idsCobrancaDocumento.add(cobrancaDocumento.getId()); } } } // Pesquisar a CobrancaAcao por cobrancaAcaoAtividadeComando(EVENTUAL) if (idCobrancaAcaoAtividadeComando != null) { FiltroCobrancaAcaoAtividadeComando filtroCobrancaAcaoAtividadeComando = new FiltroCobrancaAcaoAtividadeComando(); filtroCobrancaAcaoAtividadeComando.adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaAcaoAtividadeComando.COBRANCA_ACAO); filtroCobrancaAcaoAtividadeComando.adicionarParametro(new ParametroSimples(FiltroCobrancaAcaoAtividadeComando.ID, idCobrancaAcaoAtividadeComando)); Collection colecaoCobrancaAcaoAtividadeComando = fachada.pesquisar(filtroCobrancaAcaoAtividadeComando, CobrancaAcaoAtividadeComando.class.getName()); if (colecaoCobrancaAcaoAtividadeComando == null || colecaoCobrancaAcaoAtividadeComando.isEmpty()) { throw new ControladorException("atencao.pesquisa_inexistente", null, "Cobranca Acao Atividade Comando"); } cobrancaAcaoAtividadeComando = (CobrancaAcaoAtividadeComando) Util.retonarObjetoDeColecao(colecaoCobrancaAcaoAtividadeComando); cobrancaAcao = cobrancaAcaoAtividadeComando.getCobrancaAcao(); FiltroCobrancaDocumento filtroCobrancaDocumento = new FiltroCobrancaDocumento(); filtroCobrancaDocumento.adicionarParametro(new ParametroSimples(FiltroCobrancaDocumento.ATIVIDADE_COMANDO_ID, cobrancaAcaoAtividadeComando.getId())); filtroCobrancaDocumento.setCampoOrderBy(FiltroCobrancaDocumento.ID); Collection colecaoCobrancaDocumento = fachada.pesquisar(filtroCobrancaDocumento, CobrancaDocumento.class.getName()); if (colecaoCobrancaDocumento != null) { for (CobrancaDocumento cobrancaDocumento : (Collection<CobrancaDocumento>) colecaoCobrancaDocumento) { idsCobrancaDocumento.add(cobrancaDocumento.getId()); } } } // if (idsCobrancaDocumento == null || idsCobrancaDocumento.isEmpty()) { // throw new // ControladorException("atencao.comandos.sem.documentos.de.cobranca"); // } retorno.setCobrancaAcaoAtividadeComando(cobrancaAcaoAtividadeComando); retorno.setCobrancaAcaoAtividadeCronograma(cobrancaAcaoAtividadeCronograma); retorno.setAnoMesReferencia(anoMesReferencia); retorno.setIdGrupo(idGrupo); retorno.setCobrancaAcao(cobrancaAcao); retorno.setIdsDocumentosCobranca(idsCobrancaDocumento); return retorno; } /** * [UC0868] Gerar Relatorio de Pagamentos das Contas em Cobranca por Empresa * * @author: R�mulo Aur�lio * @date: 08/01/2009 */ public Collection pesquisarDadosGerarRelatorioPagamentosContasCobrancaEmpresa(RelatorioPagamentosContasCobrancaEmpresaHelper helper) throws ControladorException { Collection<RelatorioPagamentosContasCobrancaEmpresaBean> retorno = new ArrayList<RelatorioPagamentosContasCobrancaEmpresaBean>(); Collection<Object[]> colecaoDados = null; try { colecaoDados = repositorioCobranca.pesquisarDadosGerarRelatorioPagamentosContasCobrancaEmpresaOpcaoTotalizacao(helper); if (colecaoDados != null && !colecaoDados.isEmpty()) { for (Object[] dados : colecaoDados) { RelatorioPagamentosContasCobrancaEmpresaBean relatorioBean = new RelatorioPagamentosContasCobrancaEmpresaBean(); // idImovel if (dados[0] != null) { Integer idImovel = (Integer) dados[0]; relatorioBean.setMatricula(Util.retornaMatriculaImovelFormatada(idImovel)); } // nomeCliente if (dados[1] != null) { String nomeCliente = (String) dados[1]; relatorioBean.setNomeCliente(nomeCliente); } // anoMesConta if (dados[2] != null) { Integer anoMesConta = (Integer) dados[2]; relatorioBean.setAnoMesConta(Util.formatarAnoMesParaMesAno(anoMesConta.intValue())); } // valorConta if (dados[3] != null) { BigDecimal valorConta = (BigDecimal) dados[3]; relatorioBean.setValorConta(Util.formatarMoedaReal(valorConta)); } // anoMesReferenciaPagamento if (dados[4] != null) { Integer anoMesReferenciaPagamento = (Integer) dados[4]; relatorioBean.setAnoMesReferenciaPagamento(Util.formatarAnoMesParaMesAno(anoMesReferenciaPagamento)); } // valorPrincipal BigDecimal valorPrincipal = new BigDecimal(0.0); if (dados[5] != null) { valorPrincipal = (BigDecimal) dados[5]; } relatorioBean.setValorPrincipal(Util.formatarMoedaReal(valorPrincipal)); BigDecimal valorEncargos = new BigDecimal(0.0); // valorEncargos if (dados[6] != null) { valorEncargos = (BigDecimal) dados[6]; } relatorioBean.setValorEncargos(Util.formatarMoedaReal(valorEncargos)); BigDecimal percentualEmpresa = new BigDecimal(0.0); // percentualEmpresa if (dados[7] != null) { percentualEmpresa = (BigDecimal) dados[7]; } relatorioBean.setPercentualEmpresa(Util.formatarMoedaReal(percentualEmpresa)); // Id da Localidade if (dados[8] != null) { Integer idLocalidade = (Integer) dados[8]; relatorioBean.setIdLocalidade(idLocalidade.toString()); } // nome da Localidade if (dados[9] != null) { relatorioBean.setNomeLocalidade((String) dados[9]); } // Id Gerencia Regional if (dados[10] != null) { Integer idGerenciaRegional = (Integer) dados[10]; relatorioBean.setIdGerenciaRegional(idGerenciaRegional.toString()); } // Nome Gerencia Regional if (dados[11] != null) { relatorioBean.setNomeGerenciaRegional((String) dados[11]); } // Id Unidade Negocio if (dados[12] != null) { Integer idUnidadeNegocio = (Integer) dados[12]; relatorioBean.setIdUnidadeNegocio(idUnidadeNegocio.toString()); } // Nome Unidade Negocio if (dados[13] != null) { relatorioBean.setNomeUnidadeNegocio((String) dados[13]); } // Id Rota if (dados[14] != null) { Integer idRota = (Integer) dados[14]; relatorioBean.setIdRota(idRota.toString()); } // Indicador do Tipo de Pagamento if (dados[15] != null) { Short indicadorTipoPagamento = (Short) dados[15]; relatorioBean.setIndicadorTipoPagamento(indicadorTipoPagamento.toString()); if (indicadorTipoPagamento.intValue() == ConstantesSistema.INDICADOR_PAGAMENTO_A_VISTA.intValue()) { relatorioBean.setTipoPagamento("� Vista"); } else { relatorioBean.setTipoPagamento("Parcelado"); } } // Numero Parcela Atual if (dados[16] != null) { Integer numeroParcelaAtual = (Integer) dados[16]; relatorioBean.setNumeroParcelaAtual(numeroParcelaAtual.toString()); } // Numero Total Parcelas if (dados[17] != null) { Integer numeroTotalParcelas = (Integer) dados[17]; relatorioBean.setNumeroTotalParcelas(numeroTotalParcelas.toString()); } BigDecimal valorTotal = new BigDecimal(0.0); valorTotal = valorTotal.add(valorPrincipal); valorTotal = valorTotal.add(valorEncargos); // Valor total relatorioBean.setValorTotalPagamentos(Util.formatarMoedaReal4Casas(valorTotal)); // Valor Empresa BigDecimal valorEmpresa = new BigDecimal(0.0); BigDecimal aux = new BigDecimal(100.0); valorEmpresa = valorEmpresa.add(valorTotal.multiply(percentualEmpresa)); valorEmpresa = valorEmpresa.setScale(4, BigDecimal.ROUND_HALF_UP); valorEmpresa = valorEmpresa.divide(aux); valorEmpresa = valorEmpresa.setScale(4, BigDecimal.ROUND_HALF_UP); relatorioBean.setValorEmpresa(Util.formatarMoedaReal4Casas(valorEmpresa)); relatorioBean.setCodigoQuebra2(""); relatorioBean.setDescricaoQuebra2(""); if (helper.getOpcaoTotalizacao().equalsIgnoreCase("estadoGerencia")) { relatorioBean.setCodigoQuebra(relatorioBean.getIdGerenciaRegional()); relatorioBean.setDescricaoQuebra(relatorioBean.getNomeGerenciaRegional()); } else if (helper.getOpcaoTotalizacao().equalsIgnoreCase("estadoLocalidade")) { relatorioBean.setCodigoQuebra(relatorioBean.getIdLocalidade()); relatorioBean.setDescricaoQuebra(relatorioBean.getNomeLocalidade()); } else if (helper.getOpcaoTotalizacao().equalsIgnoreCase("gerenciaRegional")) { relatorioBean.setCodigoQuebra(relatorioBean.getIdGerenciaRegional()); relatorioBean.setDescricaoQuebra(relatorioBean.getNomeGerenciaRegional()); } else if (helper.getOpcaoTotalizacao().equalsIgnoreCase("gerenciaRegionalLocalidade")) { relatorioBean.setCodigoQuebra(relatorioBean.getIdGerenciaRegional()); relatorioBean.setDescricaoQuebra(relatorioBean.getNomeGerenciaRegional()); relatorioBean.setCodigoQuebra2(relatorioBean.getIdLocalidade()); relatorioBean.setDescricaoQuebra2(relatorioBean.getNomeLocalidade()); } else if (helper.getOpcaoTotalizacao().equalsIgnoreCase("localidade")) { relatorioBean.setCodigoQuebra(relatorioBean.getIdLocalidade()); relatorioBean.setDescricaoQuebra(relatorioBean.getNomeLocalidade()); } else if (helper.getOpcaoTotalizacao().equalsIgnoreCase("estadoUnidadeNegocio")) { relatorioBean.setCodigoQuebra(relatorioBean.getIdUnidadeNegocio()); relatorioBean.setDescricaoQuebra(relatorioBean.getNomeUnidadeNegocio()); } else if (helper.getOpcaoTotalizacao().equalsIgnoreCase("unidadeNegocio")) { relatorioBean.setCodigoQuebra(relatorioBean.getIdUnidadeNegocio()); relatorioBean.setDescricaoQuebra(relatorioBean.getNomeUnidadeNegocio()); } else { relatorioBean.setCodigoQuebra(""); SistemaParametro sistemaParametro = getControladorUtil().pesquisarParametrosDoSistema(); relatorioBean.setDescricaoQuebra(sistemaParametro.getNomeEstado()); } retorno.add(relatorioBean); } } } catch (ErroRepositorioException e) { sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", e); } return retorno; } public Integer pesquisarDadosGerarRelatorioPagamentosContasCobrancaEmpresaCount(Integer idEmpresa, Integer referenciaPagamentoInicial, Integer referenciaPagamentoFinal) throws ControladorException { Integer retorno = 0; Collection colecaoDados = null; try { colecaoDados = repositorioCobranca.pesquisarDadosGerarRelatorioPagamentosContasCobrancaEmpresaCount(idEmpresa, referenciaPagamentoInicial, referenciaPagamentoFinal); if (colecaoDados != null && !colecaoDados.isEmpty()) { Iterator it = colecaoDados.iterator(); while (it.hasNext()) { Integer objeto = (Integer) it.next(); retorno = retorno + objeto; } } } catch (ErroRepositorioException e) { throw new ControladorException("erro.sistema", e); } return retorno; } /** * [UC0868] Gerar Relatorio de Pagamentos das Contas em Cobranca por Empresa * * Pesquisa a quantidade de contas * * @author: R�mulo Aur�lio * @date: 29/10/2008 */ public Collection gerarRelatorioPagamentosContasEmCobrancaEmpresa(RelatorioPagamentosContasCobrancaEmpresaHelper helper, int idFuncionalidadeIniciada) throws ControladorException { Collection colecaoRelatorioPagamentosContasCobrancaEmpresaBean = null; int idUnidadeIniciada = 0; idUnidadeIniciada = getControladorBatch().iniciarUnidadeProcessamentoBatch(idFuncionalidadeIniciada, UnidadeProcessamento.RELATORIO, 0); colecaoRelatorioPagamentosContasCobrancaEmpresaBean = this.pesquisarDadosGerarRelatorioPagamentosContasCobrancaEmpresa(helper); getControladorBatch().encerrarUnidadeProcessamentoBatch(null, idUnidadeIniciada, false); return colecaoRelatorioPagamentosContasCobrancaEmpresaBean; } /** * [UC0879] Gerar Extensao de Comando de Contas em Cobran�a por Empresa * [CRC1109] * * Pesquisa a quantidade de contas * * @author: R�mulo Aur�lio * @date: 02/02/2009 */ /** * @param idEmpresa * @param comandoInicial * @param comandoFinal * @return * @throws ControladorException */ /** * @param idEmpresa * @param comandoInicial * @param comandoFinal * @return * @throws ControladorException */ /** * @param idEmpresa * @param comandoInicial * @param comandoFinal * @return * @throws ControladorException */ /** * @param idEmpresa * @param comandoInicial * @param comandoFinal * @return * @throws ControladorException */ @SuppressWarnings("unused") public Collection<GerarExtensaoComandoContasCobrancaEmpresaHelper> pesquisarDadosGerarExtensaoComandoContasCobrancaEmpresa( Integer idEmpresa, Date comandoInicial, Date comandoFinal, int numeroIndice) throws ControladorException { try { Collection<GerarExtensaoComandoContasCobrancaEmpresaHelper> colecaoGerarExtensaoComandoContasCobrancaEmpresaHelper = new ArrayList(); // Vari�veis para a pagina��o da pesquisa // ======================================================================== final int quantidadeRegistros = 10; // ======================================================================== // Colecao de helper com os dados das contas em cobranca por // empresa Collection<GerarArquivoTextoContasCobrancaEmpresaHelper> colecaoGerarArquivoTextoContasCobrancaEmpresaHelper = (Collection) repositorioCobranca .pesquisarDadosGerarArquivoTextoContasCobrancaEmpresaParaCobrancaResumido(idEmpresa, comandoInicial, comandoFinal, numeroIndice, quantidadeRegistros); /* * Collection dadosContasCobrancaEmpresaParaCriterio = * repositorioCobranca * .pesquisarDadosGerarArquivoTextoContasCobrancaEmpresaParaCriterio * ( idEmpresa, comandoInicial, comandoFinal, numeroIndice, * quantidadeRegistros); * * Map<Integer, GerarArquivoTextoContasCobrancaEmpresaHelper> * mapHelper = new HashMap<Integer, * GerarArquivoTextoContasCobrancaEmpresaHelper>(); * * if (dadosContasCobrancaEmpresaParaCriterio != null && * !dadosContasCobrancaEmpresaParaCriterio.isEmpty()) { * * Iterator dadosContasCobrancaEmpresaParaCriterioIterator = * dadosContasCobrancaEmpresaParaCriterio .iterator(); * * while (dadosContasCobrancaEmpresaParaCriterioIterator .hasNext()) * { // cria um array de objetos para pegar os parametros // de // * retorno da pesquisa Object[] * arraydadosContasCobrancaEmpresaParaCriterio = (Object[]) * dadosContasCobrancaEmpresaParaCriterioIterator .next(); * * GerarArquivoTextoContasCobrancaEmpresaHelper helper = new * GerarArquivoTextoContasCobrancaEmpresaHelper(); * * if (arraydadosContasCobrancaEmpresaParaCriterio[0] != null) { * helper .setIdComandoEmpresaCobrancaConta((Integer) * arraydadosContasCobrancaEmpresaParaCriterio[0]); } * * if (arraydadosContasCobrancaEmpresaParaCriterio[1] != null) { * helper .setQtdeContasCriterioComando((Integer) * arraydadosContasCobrancaEmpresaParaCriterio[1]); } * * if (arraydadosContasCobrancaEmpresaParaCriterio[2] != null) { * helper .setValorContasCriterioComando((BigDecimal) * arraydadosContasCobrancaEmpresaParaCriterio[2]); } * * mapHelper.put( helper.getIdComandoEmpresaCobrancaConta(), * helper); } * * } */ if (colecaoGerarArquivoTextoContasCobrancaEmpresaHelper != null && !colecaoGerarArquivoTextoContasCobrancaEmpresaHelper.isEmpty()) { Iterator colecaoGerarArquivoTextoContasCobrancaEmpresaHelperIterator = colecaoGerarArquivoTextoContasCobrancaEmpresaHelper .iterator(); while (colecaoGerarArquivoTextoContasCobrancaEmpresaHelperIterator.hasNext()) { // helper com os dados das contas em cobranca por // empresa GerarArquivoTextoContasCobrancaEmpresaHelper helperArquivoTextoContasCobrancaEmpresa = (GerarArquivoTextoContasCobrancaEmpresaHelper) colecaoGerarArquivoTextoContasCobrancaEmpresaHelperIterator .next(); // Passa os dados do Map para o Helper principal /* * if (mapHelper * .containsKey(helperArquivoTextoContasCobrancaEmpresa * .getIdComandoEmpresaCobrancaConta())) { * * GerarArquivoTextoContasCobrancaEmpresaHelper aux = * mapHelper .get(helperArquivoTextoContasCobrancaEmpresa * .getIdComandoEmpresaCobrancaConta()); * * helperArquivoTextoContasCobrancaEmpresa * .setQtdeContasCriterioComando(aux * .getQtdeContasCriterioComando()); * * helperArquivoTextoContasCobrancaEmpresa * .setValorContasCriterioComando(aux * .getValorContasCriterioComando()); * * } */ Collection<ExtensaoComandoContasCobrancaEmpresaHelper> colecaoExtensaoComandoContasCobrancaEmpresaHelper = new ArrayList(); Collection<Object[]> colecaoDadosExtensaoComandoContasCobrancaEmpresa = repositorioCobranca .pesquisarDadosGerarExtensaoComandoContasCobrancaEmpresaParaCobranca(helperArquivoTextoContasCobrancaEmpresa .getIdComandoEmpresaCobrancaConta()); // helper com os dados das contas em // cobranca // por empresa e com colecao de helper dos dados da // tabela // ExtensaoComandoContasCobranca GerarExtensaoComandoContasCobrancaEmpresaHelper helperGerarExtensaoComandoContasCobrancaEmpresa = new GerarExtensaoComandoContasCobrancaEmpresaHelper(); if (colecaoDadosExtensaoComandoContasCobrancaEmpresa != null && !colecaoDadosExtensaoComandoContasCobrancaEmpresa.isEmpty()) { Iterator it = colecaoDadosExtensaoComandoContasCobrancaEmpresa.iterator(); while (it.hasNext()) { ExtensaoComandoContasCobrancaEmpresaHelper helperExtensaoComandoContasCobrancaEmpresa = new ExtensaoComandoContasCobrancaEmpresaHelper(); // retorno da pesquisa Object[] dados = (Object[]) it.next(); // Seta os dados da // extensaoComandoContasCobrancaEmpresa no // helper // idImovel if (dados[0] != null) { helperExtensaoComandoContasCobrancaEmpresa.setIdComandoEmpresaCobrancaContaExtensao((Integer) dados[0]); } if (dados[1] != null) { helperExtensaoComandoContasCobrancaEmpresa .setAnoMesInicialContaComandoEmpresaCobrancaContaExtensao((Integer) dados[1]); } if (dados[2] != null) { helperExtensaoComandoContasCobrancaEmpresa .setAnoMesFinalContaComandoEmpresaCobrancaContaExtensao((Integer) dados[2]); } if (dados[3] != null) { helperExtensaoComandoContasCobrancaEmpresa .setDataExecucaoComandoEmpresaCobrancaContaExtensao((Date) dados[3]); } /* * if (dados[4] != null) { * helperExtensaoComandoContasCobrancaEmpresa * .setQtdeContasParaCobranca((Integer) dados[4]); } * else { helperExtensaoComandoContasCobrancaEmpresa * .setQtdeContasParaCobranca(new Integer( 0)); } if * (dados[5] != null) { * helperExtensaoComandoContasCobrancaEmpresa * .setValorTotalContasParaCobranca((BigDecimal) * dados[5]); } else { * * * * } */ helperExtensaoComandoContasCobrancaEmpresa.setQtdeContasParaCobranca(new Integer(0)); BigDecimal valorTotal = new BigDecimal(0.0); helperExtensaoComandoContasCobrancaEmpresa.setValorTotalContasParaCobranca(valorTotal); helperGerarExtensaoComandoContasCobrancaEmpresa.setAnoMesInicial(Util.formatarAnoMesParaMesAno(Util .somaUmMesAnoMesReferencia(helperExtensaoComandoContasCobrancaEmpresa .getAnoMesFinalContaComandoEmpresaCobrancaContaExtensao()))); colecaoExtensaoComandoContasCobrancaEmpresaHelper.add(helperExtensaoComandoContasCobrancaEmpresa); } } // Seta o helperArquivoTextoContasCobrancaEmpresa e a // colecaoExtensaoComandoContasCobrancaEmpresaHelper // para // exibicao na tela helperGerarExtensaoComandoContasCobrancaEmpresa .setGerarArquivoTextoContasCobrancaEmpresaHelper(helperArquivoTextoContasCobrancaEmpresa); helperGerarExtensaoComandoContasCobrancaEmpresa .setColecaoExtensaoComandoContasCobrancaEmpresaHelper(colecaoExtensaoComandoContasCobrancaEmpresaHelper); // AnoMesInicial SistemaParametro sistemaParametro = getControladorUtil().pesquisarParametrosDoSistema(); helperGerarExtensaoComandoContasCobrancaEmpresa.setAnoMesFinal(Util.formatarAnoMesParaMesAno(Util.subtrairMesDoAnoMes( sistemaParametro.getAnoMesFaturamento(), 1))); // anoMesFinal if (helperGerarExtensaoComandoContasCobrancaEmpresa.getAnoMesInicial() == null || helperGerarExtensaoComandoContasCobrancaEmpresa.getAnoMesInicial().equals("")) { helperGerarExtensaoComandoContasCobrancaEmpresa.setAnoMesInicial(Util.formatarAnoMesParaMesAno(Util .somaUmMesAnoMesReferencia(helperArquivoTextoContasCobrancaEmpresa.getReferenciaContaFinal()))); } colecaoGerarExtensaoComandoContasCobrancaEmpresaHelper.add(helperGerarExtensaoComandoContasCobrancaEmpresa); } } /** * Incrementa o n� do indice da p�gina��o */ // numeroIndice = numeroIndice + quantidadeRegistros; /** * Caso a cole��o de dados retornados for menor que a quantidade de * registros seta a flag indicando que a pagina��o terminou. */ /* * if (colecaoGerarArquivoTextoContasCobrancaEmpresaHelper == null * || colecaoGerarArquivoTextoContasCobrancaEmpresaHelper .size() < * quantidadeRegistros) { * * flagTerminou = true; } */ return colecaoGerarExtensaoComandoContasCobrancaEmpresaHelper; } catch (ErroRepositorioException e) { throw new ControladorException("erro.sistema", e); } } /** * [UC0879] Gerar Extensao de Comando de Contas em Cobran�a por Empresa * [CRC1109] * * Pesquisa a quantidade de contas * * @author: R�mulo Aur�lio * @date: 02/02/2009 */ @SuppressWarnings("unused") public void inserirExtensaoComandoContasCobrancaEmpresa(ComandoEmpresaCobrancaContaExtensao comandoEmpresaCobrancaContaExtensao, Collection colecaoGerarExtensaoComandoContasCobrancaEmpresaHelper) throws ControladorException { // colecao de helper com as extensoes ja cadastradas e com o comando Iterator iterator = colecaoGerarExtensaoComandoContasCobrancaEmpresaHelper.iterator(); SistemaParametro sistemaParametro = getControladorUtil().pesquisarParametrosDoSistema(); try { while (iterator.hasNext()) { GerarExtensaoComandoContasCobrancaEmpresaHelper helper = (GerarExtensaoComandoContasCobrancaEmpresaHelper) iterator.next(); if (helper.getGerarArquivoTextoContasCobrancaEmpresaHelper().getIdComandoEmpresaCobrancaConta().toString() .equals(comandoEmpresaCobrancaContaExtensao.getComandoEmpresaCobrancaConta().getId().toString())) { Collection colecaoExtensaoComandoContasCobrancaEmpresaHelper = helper .getColecaoExtensaoComandoContasCobrancaEmpresaHelper(); if (colecaoExtensaoComandoContasCobrancaEmpresaHelper != null && !colecaoExtensaoComandoContasCobrancaEmpresaHelper.isEmpty()) { Iterator colecaoExtensaoComandoContasCobrancaEmpresaHelperIterator = colecaoExtensaoComandoContasCobrancaEmpresaHelper .iterator(); while (colecaoExtensaoComandoContasCobrancaEmpresaHelperIterator.hasNext()) { ExtensaoComandoContasCobrancaEmpresaHelper extensaoComandoContasCobrancaEmpresaHelper = (ExtensaoComandoContasCobrancaEmpresaHelper) colecaoExtensaoComandoContasCobrancaEmpresaHelperIterator .next(); Integer anoMesFinalUltimaExtensao; anoMesFinalUltimaExtensao = repositorioCobranca.retornaAnoMesContaUltimaExtensao(helper .getGerarArquivoTextoContasCobrancaEmpresaHelper().getIdComandoEmpresaCobrancaConta()); // [FS0007] - Verificar referencia inicial if ((Util.compararAnoMesReferencia(comandoEmpresaCobrancaContaExtensao.getReferenciaContaInicial(), helper .getGerarArquivoTextoContasCobrancaEmpresaHelper().getReferenciaContaFinal().intValue(), "<") || Util .compararAnoMesReferencia(helper.getGerarArquivoTextoContasCobrancaEmpresaHelper() .getReferenciaContaFinal().intValue(), comandoEmpresaCobrancaContaExtensao.getReferenciaContaInicial(), "=")) || Util.compararAnoMesReferencia(comandoEmpresaCobrancaContaExtensao.getReferenciaContaInicial(), helper.getGerarArquivoTextoContasCobrancaEmpresaHelper().getReferenciaContaFinal().intValue(), "<") || Util.compararAnoMesReferencia(comandoEmpresaCobrancaContaExtensao.getReferenciaContaInicial(), anoMesFinalUltimaExtensao /* * extensaoComandoContasCobrancaEmpresaHelper * . * getAnoMesFinalContaComandoEmpresaCobrancaContaExtensao * () */, "<") || Util.compararAnoMesReferencia(comandoEmpresaCobrancaContaExtensao.getReferenciaContaInicial(), anoMesFinalUltimaExtensao /* * extensaoComandoContasCobrancaEmpresaHelper * . * getAnoMesFinalContaComandoEmpresaCobrancaContaExtensao * () */, "=")) { throw new ControladorException("atencao.referencia_inicial_extensao_comando_invalida"); } // [FS0008] - Verificar referencia final if (Util.compararAnoMesReferencia(sistemaParametro.getAnoMesFaturamento(), comandoEmpresaCobrancaContaExtensao.getReferenciaContaFinal(), "=") || Util.compararAnoMesReferencia(sistemaParametro.getAnoMesFaturamento(), comandoEmpresaCobrancaContaExtensao.getReferenciaContaFinal(), "<")) { throw new ControladorException("atencao.referencia_final_extensao_comando_invalida"); } } } else { // [FS0007] - Verificar referencia inicial if ((Util.compararAnoMesReferencia(comandoEmpresaCobrancaContaExtensao.getReferenciaContaInicial(), helper .getGerarArquivoTextoContasCobrancaEmpresaHelper().getReferenciaContaFinal().intValue(), "<") || Util .compararAnoMesReferencia(helper.getGerarArquivoTextoContasCobrancaEmpresaHelper() .getReferenciaContaFinal().intValue(), comandoEmpresaCobrancaContaExtensao.getReferenciaContaInicial(), "="))) { throw new ControladorException("atencao.referencia_inicial_extensao_comando_invalida"); } // [FS0008] - Verificar referencia final if (Util.compararAnoMesReferencia(sistemaParametro.getAnoMesFaturamento(), comandoEmpresaCobrancaContaExtensao.getReferenciaContaFinal(), "=") || Util.compararAnoMesReferencia(sistemaParametro.getAnoMesFaturamento(), comandoEmpresaCobrancaContaExtensao.getReferenciaContaFinal(), "<")) { throw new ControladorException("atencao.referencia_final_extensao_comando_invalida"); } } // ------------ REGISTRAR TRANSA��O ---------------- RegistradorOperacao registradorOperacao = new RegistradorOperacao( Operacao.OPERACAO_GERAR_COMANDO_CONTAS_COBRANCA_EMPRESA, new UsuarioAcaoUsuarioHelper( comandoEmpresaCobrancaContaExtensao.getUsuario(), UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO)); Operacao operacao = new Operacao(); operacao.setId(Operacao.OPERACAO_GERAR_COMANDO_CONTAS_COBRANCA_EMPRESA); OperacaoEfetuada operacaoEfetuada = new OperacaoEfetuada(); operacaoEfetuada.setOperacao(operacao); comandoEmpresaCobrancaContaExtensao.setOperacaoEfetuada(operacaoEfetuada); comandoEmpresaCobrancaContaExtensao.adicionarUsuario(comandoEmpresaCobrancaContaExtensao.getUsuario(), UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO); registradorOperacao.registrarOperacao(comandoEmpresaCobrancaContaExtensao); // ------------ REGISTRAR TRANSA��O ---------------- // ----Verifica se ja existe extensao informada para o // comando no mesmo periodo FiltroComandoEmpresaCobrancaContaExtensao filtroComandoEmpresaCobrancaContaExtensao = new FiltroComandoEmpresaCobrancaContaExtensao(); filtroComandoEmpresaCobrancaContaExtensao.adicionarParametro(new ParametroSimples( FiltroComandoEmpresaCobrancaContaExtensao.ID_COMANDO_EMPRESA_COBRANCA_CONTA, comandoEmpresaCobrancaContaExtensao.getComandoEmpresaCobrancaConta().getId())); filtroComandoEmpresaCobrancaContaExtensao.adicionarParametro(new ParametroSimples( FiltroComandoEmpresaCobrancaContaExtensao.REFERENCIA_INICIAL, comandoEmpresaCobrancaContaExtensao .getReferenciaContaInicial())); filtroComandoEmpresaCobrancaContaExtensao.adicionarParametro(new ParametroSimples( FiltroComandoEmpresaCobrancaContaExtensao.REFERENCIA_FINAL, comandoEmpresaCobrancaContaExtensao .getReferenciaContaFinal())); Collection colecaoComandoEmpresaCobrancaContaExtensaoBase = getControladorUtil().pesquisar( filtroComandoEmpresaCobrancaContaExtensao, ComandoEmpresaCobrancaContaExtensao.class.getName()); if (colecaoComandoEmpresaCobrancaContaExtensaoBase != null && !colecaoComandoEmpresaCobrancaContaExtensaoBase.isEmpty()) { throw new ControladorException("atencao.extensao_ja_informada", null, comandoEmpresaCobrancaContaExtensao .getComandoEmpresaCobrancaConta().getId().toString(), Util.formatarAnoMesParaMesAno(comandoEmpresaCobrancaContaExtensao.getReferenciaContaInicial()), Util.formatarAnoMesParaMesAno(comandoEmpresaCobrancaContaExtensao.getReferenciaContaFinal())); } // ----Verifica se ja existe extensao informada para o // comando no mesmo periodo comandoEmpresaCobrancaContaExtensao.setUltimaAlteracao(new Date()); getControladorUtil().inserir(comandoEmpresaCobrancaContaExtensao); } } } catch (ErroRepositorioException e) { e.printStackTrace(); } } /** * [UC0880] - Gerar Movimento de Extens�o de Contas em Cobran�a por Empresa * * @author R�mulo Aur�lio * @date 09/02/2009 * * @throws ControladorException */ public void gerarMovimentoExtensaoContasEmCobranca(Integer idLocalidade, int idFuncionalidadeIniciada) throws ControladorException { int idUnidadeIniciada = 0; // ------------------------- // // Registrar o in�cio do processamento da Unidade de // Processamento // do Batch // // ------------------------- idUnidadeIniciada = getControladorBatch().iniciarUnidadeProcessamentoBatch(idFuncionalidadeIniciada, UnidadeProcessamento.LOCALIDADE, idLocalidade); try { SistemaParametro sistemaParametro = this.getControladorUtil().pesquisarParametrosDoSistema(); Integer idPerfilProgramaEspecial = null; if (sistemaParametro.getPerfilProgramaEspecial() != null) { idPerfilProgramaEspecial = sistemaParametro.getPerfilProgramaEspecial().getId(); } UC0880GerarMovimentoExtensaoContasEmCobrancaPorEmpresa gerarMovimentoExtensaoContasEmCobrancaPorEmpresa = UC0880GerarMovimentoExtensaoContasEmCobrancaPorEmpresa .getInstancia(repositorioCobranca, sessionContext); gerarMovimentoExtensaoContasEmCobrancaPorEmpresa.gerarMovimentoExtensaoContasEmCobranca(idLocalidade, idPerfilProgramaEspecial); /* * comandoEmpresaCobrancaContaExtensao.setDataExecucao(new Date()); * comandoEmpresaCobrancaContaExtensao.setUltimaAlteracao(new * Date()); * * getControladorUtil().atualizar(comandoEmpresaCobrancaContaExtensao * ); */ getControladorBatch().encerrarUnidadeProcessamentoBatch(null, idUnidadeIniciada, false); } catch (Exception e) { getControladorBatch().encerrarUnidadeProcessamentoBatch(e, idUnidadeIniciada, true); throw new EJBException(e); } } /** * [UC0214] Efetuar Parcelamento de D�bitos * * @author Vivianne Sousa * @date 10/02/2009 * * @return * @throws ErroRepositorioException */ public Parcelamento obterParcelamentoMaisAtualDoImovel(Integer idImovel) throws ControladorException { Parcelamento parcelamento = null; Object[] dadosParcelamento = null; try { dadosParcelamento = repositorioCobranca.obterParcelamentoMaisAtualDoImovel(idImovel); if (dadosParcelamento != null) { parcelamento = new Parcelamento(); if (dadosParcelamento[0] != null) { parcelamento.setId((Integer) dadosParcelamento[0]); } if (dadosParcelamento[1] != null) { ResolucaoDiretoria resolucaoDiretoria = new ResolucaoDiretoria(); resolucaoDiretoria.setId((Integer) dadosParcelamento[1]); if (dadosParcelamento[2] != null) { resolucaoDiretoria.setNumeroResolucaoDiretoria((String) dadosParcelamento[2]); } parcelamento.setResolucaoDiretoria(resolucaoDiretoria); } } } catch (ErroRepositorioException e) { throw new ControladorException("erro.sistema", e); } return parcelamento; } /** * [UC0214] Efetuar Parcelamento de D�bitos [FS0028] Verifica se * existeParcelas em atraso * * @author Vivianne Sousa * @date 10/02/2009 * * @return * @throws ErroRepositorioException */ public void verificaSeExisteParcelasEmAtraso(Integer idImovel, Integer idResolucaoDiretoria, Integer refInicialInformada, Integer refFinalInformada) throws ControladorException { FiltroResolucaoDiretoria filtroResolucaoDiretoria = new FiltroResolucaoDiretoria(); filtroResolucaoDiretoria.adicionarParametro(new ParametroSimples(FiltroResolucaoDiretoria.CODIGO, idResolucaoDiretoria)); Collection colecaoRD = getControladorUtil().pesquisar(filtroResolucaoDiretoria, ResolucaoDiretoria.class.getName()); ResolucaoDiretoria rd = (ResolucaoDiretoria) Util.retonarObjetoDeColecao(colecaoRD); if (rd.getIndicadorParcelasEmAtraso().equals(ConstantesSistema.SIM)) { Integer idRDParcelasEmAtraso = null; if (rd.getRdParcelasEmAtraso() != null) { idRDParcelasEmAtraso = rd.getRdParcelasEmAtraso().getId(); } // obtem o parcelamento mais atual do imovel com situa��o do // parcelamento Normal Parcelamento parcelamento = obterParcelamentoMaisAtualDoImovel(idImovel); if (parcelamento != null) { if (idRDParcelasEmAtraso == null || (idRDParcelasEmAtraso != null && parcelamento.getResolucaoDiretoria() != null && parcelamento .getResolucaoDiretoria().getId().equals(idRDParcelasEmAtraso))) { // verifica se existe parcelas a serem cobradas do // Parcelamento // Boolean existeParcelasASeremCobradas = // verificaSeExisteParcelasASeremCobradas(parcelamento.getId()); // if(existeParcelasASeremCobradas){ // // throw new // ControladorException("atencao.id.parcelas.atraso.ativo", // null, // parcelamento.getResolucaoDiretoria().getNumeroResolucaoDiretoria()); // // }else{ // verificar se existe parcelas em atraso, ou seja, // verificar nas contas que ir�o fazer parte do // parcelamento, // se existe algum d�bito de parcelamento da RDIR_ID = // RDIR_IDPARCELASEMATRASO Boolean existeContasComParcelasEmAtrasoDoParcelamento = verificaSeExisteContasComParcelasEmAtrasoDoParcelamento( idImovel, refInicialInformada, refFinalInformada); if (existeContasComParcelasEmAtrasoDoParcelamento) { if (parcelamento.getResolucaoDiretoria() == null) { throw new ControladorException("atencao.parcelas.atraso.ativo", null); } else { throw new ControladorException("atencao.id.parcelas.atraso.ativo", null, parcelamento.getResolucaoDiretoria() .getNumeroResolucaoDiretoria()); } } // } } } } } /** * [UC0214] Efetuar Parcelamento de D�bitos [FS0028] Verifica se * existeParcelas em atraso [FS0029] Verificar se existe parcelamento em * andamento * * @author Vivianne Sousa * @date 10/02/2009 * * @return * @throws ErroRepositorioException */ public Boolean verificaSeExisteParcelasASeremCobradas(Integer idParcelamento) throws ControladorException { Boolean retorno = false; try { // verificar se existe parcelas a serem cobradas // (selecionar na tabela de debito a cobrar // (FATURAMENTO.DEBITO_A_COBRAR), // a linha que tenha o PARC_ID = PARC_ID da tabela // COBRANCA.PARCELAMENTO e // o tipo de d�bito (DBTP_ID) = 40) // e caso o n�mero de presta��es do d�bito n�o seja igual ao n�mero // de presta��es cobradas Collection colecaoDebitoACobrar = repositorioCobranca.obterDebitoACobrarDoParcelamento(idParcelamento); if (colecaoDebitoACobrar != null && !colecaoDebitoACobrar.isEmpty()) { return true; } } catch (ErroRepositorioException e) { throw new ControladorException("erro.sistema", e); } return retorno; } /** * [UC0214] Efetuar Parcelamento de D�bitos [FS0028] Verifica se existe * Parcelas em atraso * * @author Vivianne Sousa * @date 10/02/2009 * * @return * @throws ErroRepositorioException */ public Boolean verificaSeExisteContasComParcelasEmAtrasoDoParcelamento(Integer idImovel, Integer refInicialInformada, Integer refFinalInformada) throws ControladorException { Boolean retorno = false; try { // verificar se existe parcelas em atraso, ou seja, // verificar nas contas que ir�o fazer parte do parcelamento, // se existe algum d�bito de parcelamento da RDIR_ID = // RDIR_IDPARCELASEMATRASO Collection colecaoContasComParcelasEmAtrasoDoParcelamento = repositorioCobranca.obterContasComParcelasEmAtrasoDoParcelamento( idImovel, refInicialInformada, refFinalInformada); if (colecaoContasComParcelasEmAtrasoDoParcelamento != null && !colecaoContasComParcelasEmAtrasoDoParcelamento.isEmpty()) { return true; } } catch (ErroRepositorioException e) { throw new ControladorException("erro.sistema", e); } return retorno; } /** * [UC0214] Efetuar Parcelamento de D�bitos [FS0029] Verifica se existe * parcelamento em andamento * * @author Vivianne Sousa * @date 10/02/2009 * * @return * @throws ErroRepositorioException */ public Boolean verificaSeExisteParcelamentoEmAndamento(Integer idImovel, ResolucaoDiretoria resolucaoDiretoria) throws ControladorException { Boolean retorno = false; if (resolucaoDiretoria.getIndicadorParcelamentoEmAndamento().equals(ConstantesSistema.SIM) && resolucaoDiretoria.getRdParcelamentoEmAndamento() != null) { Integer idRDParcelamentoEmAndamento = resolucaoDiretoria.getRdParcelamentoEmAndamento().getId(); // verifica se o parcelamento mais atual do imovel na tabela // parcelamento // � da mesma resolucaoDiretoria informada na RD de parcelas em // atraso Parcelamento parcelamento = obterParcelamentoMaisAtualDoImovel(idImovel); if (parcelamento != null && parcelamento.getResolucaoDiretoria() != null && parcelamento.getResolucaoDiretoria().getId().equals(idRDParcelamentoEmAndamento)) { // verifica se existe parcelas a serem cobradas do Parcelamento Boolean existeParcelasASeremCobradas = verificaSeExisteParcelasASeremCobradas(parcelamento.getId()); if (existeParcelasASeremCobradas) { retorno = true; } } } return retorno; } /** * [UC0891] Gerar Relatorio de Im�veis com Acordo * * @author: R�mulo Aur�lio * @date: 01/04/2009 */ public Collection pesquisarDadosGerarRelatorioImoveisComAcordo(Integer idUnidadeNegocio, Integer idLocalidadeInicial, Integer idLocalidadeFinal, Integer idGerenciaRegional, Date dataInicialAcordo, Date dataFinalAcordo, Integer rotaInicial, Integer rotaFinal, Integer sequencialRotaInicial, Integer sequencialRotaFinal, Integer idSetorComercialInicial, Integer idSetorComercialFinal) throws ControladorException { Collection<RelatorioImoveisComAcordoBean> retorno = new ArrayList<RelatorioImoveisComAcordoBean>(); Collection<Object[]> colecaoDados = null; try { colecaoDados = repositorioCobranca.pesquisarDadosGerarRelatorioImoveisComAcordo(idUnidadeNegocio, idLocalidadeInicial, idLocalidadeFinal, idGerenciaRegional, dataInicialAcordo, dataFinalAcordo, rotaInicial, rotaFinal, sequencialRotaInicial, sequencialRotaFinal, idSetorComercialInicial, idSetorComercialFinal); if (colecaoDados != null && !colecaoDados.isEmpty()) { for (Object[] dados : colecaoDados) { RelatorioImoveisComAcordoBean relatorioBean = new RelatorioImoveisComAcordoBean(); // idImovel if (dados[0] != null) { Integer idImovel = (Integer) dados[0]; relatorioBean.setIdImovel(idImovel.toString()); relatorioBean.setMatricula(Util.retornaMatriculaImovelFormatada(idImovel)); } // codigoRota if (dados[1] != null) { Integer codigoRota = (Integer) dados[1]; relatorioBean.setCodigoRota(codigoRota.toString()); } // sequencialRota if (dados[2] != null) { Integer sequencialRota = (Integer) dados[2]; relatorioBean.setSequencialRota(sequencialRota.toString()); } // situacaoLigacaoAgua if (dados[3] != null) { String situacaoLigacaoAgua = (String) dados[3]; relatorioBean.setSituacaoLigacaoAgua(situacaoLigacaoAgua); } // situacaoLigacaoEsgoto if (dados[4] != null) { String situacaoLigacaoEsgoto = (String) dados[4]; relatorioBean.setSituacaoLigacaoEsgoto(situacaoLigacaoEsgoto); } // tipoSituacaoCobranca if (dados[5] != null) { String tipoSituacaoCobranca = (String) dados[5]; relatorioBean.setDescricaoAcordo(tipoSituacaoCobranca); } // periodoAcordo if (dados[6] != null && dados[7] != null) { Integer periodoAcordoInicial = (Integer) dados[6]; Integer periodoAcordoFinal = (Integer) dados[7]; String periodoAcordo = "" + Util.formatarAnoMesParaMesAno(periodoAcordoInicial.intValue()) + " � " + Util.formatarAnoMesParaMesAno(periodoAcordoFinal.intValue()) + ""; relatorioBean.setPeriodoAcordo(periodoAcordo); } // Data final do acordo if (dados[8] != null) { Date dataFinalSituacao = (Date) dados[8]; String dataFinalSituacoAcordo = Util.formatarData(dataFinalSituacao); relatorioBean.setDataFinalAcordo(dataFinalSituacoAcordo); } // Observacao if (dados[9] != null) { String observacao = (String) dados[9]; relatorioBean.setObservacao(observacao); } // Responsavel if (dados[10] != null) { String nomeUsuario = (String) dados[10]; relatorioBean.setResponsavel(nomeUsuario); } retorno.add(relatorioBean); } } } catch (ErroRepositorioException e) { sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", e); } return retorno; } public Integer pesquisarDadosGerarRelatorioImoveisComAcordoCount(Integer idUnidadeNegocio, Integer idLocalidadeInicial, Integer idLocalidadeFinal, Integer idGerenciaRegional, Date dataInicialAcordo, Date dataFinalAcordo, Integer rotaInicial, Integer rotaFinal, Integer sequencialRotaInicial, Integer sequencialRotaFinal, Integer idSetorComercialInicial, Integer idSetorComercialFinal) throws ControladorException { Integer retorno = 0; try { retorno = repositorioCobranca.pesquisarDadosGerarRelatorioImoveisComAcordoCount(idUnidadeNegocio, idLocalidadeInicial, idLocalidadeFinal, idGerenciaRegional, dataInicialAcordo, dataFinalAcordo, rotaInicial, rotaFinal, sequencialRotaInicial, sequencialRotaFinal, idSetorComercialInicial, idSetorComercialFinal); } catch (ErroRepositorioException e) { throw new ControladorException("erro.sistema", e); } return retorno; } /** * * [UC0251] Gerar Atividade de A��o de Cobran�a Consiste no uso de metas e * valor limite para restringir a quantidade dos documentos gerados e * sele��o dos documentos com valores acima do valor limite Este m�todo * cancelar� os documentos excedentes, ou seja, documentos al�m da meta * definida, excetuando aqueles que tenham valor acima do limite. * * [SB0006] - Remover documentos de cobran�a excedentes * * Este procedimento ser� chamado ap�s a gera��o dos documentos (inclus�o * dos registros em cobranca_documento), por�m antes da emiss�o destes * (gera��o do txt). * * @author Francisco do Nascimento * @date 15/04/2009 * * @param grupoCobranca * Grupo de cobran�a * @param anoMesReferencia * - Ano m�s do ciclo * @param cobrancaAcaoAtividadeCronograma * - Cronograma * @param cobrancaAcaoAtividadeComando * Comando eventual * @param cobrancaAcao * A��o de cobran�a * @return Se houve remocao de documentos * @throws ControladorException */ private boolean removerDocumentosCobrancaExcedentes(CobrancaGrupo grupoCobranca, int anoMesReferencia, CobrancaAcaoAtividadeCronograma cobrancaAcaoAtividadeCronograma, CobrancaAcaoAtividadeComando cobrancaAcaoAtividadeComando, CobrancaAcao cobrancaAcao, Integer idCobrancaDocumentoControleGeracao) throws ControladorException { Integer idCAAC = null; Integer idCACM = null; Integer meta = null; Integer quantidadeDocumentosGeradosAcimaValorLimite = 0; Integer quantidadeDocumentosGerados = 0; Integer quantidadeRealizada = 0; Integer quantidadeParaRemover = 0; Integer quantidadeRealizadaTotal = 0; boolean removeuDocumentos = false; // identificando se o parametro passado foi de cronograma ou eventual if (cobrancaAcaoAtividadeCronograma != null && cobrancaAcaoAtividadeCronograma.getId() != null) { idCAAC = cobrancaAcaoAtividadeCronograma.getId(); } else { idCACM = cobrancaAcaoAtividadeComando.getId(); } try { // Verifica se � um comando de cronograma e se a acao de cobranca // usa metas if (idCAAC != null && cobrancaAcao.getIndicadorMetasCronograma().intValue() == ConstantesSistema.SIM.intValue()) { // pesquisar o objeto ciclometa para esta a��o e este ciclo CicloMeta cicloMeta = repositorioCobranca.pesquisarMetaCiclo(anoMesReferencia, cobrancaAcao.getId()); // Pesquisando os ciclos meta grupo List<CicloMetaGrupo> idsCiclosMetaGrupo = (List<CicloMetaGrupo>) repositorioCobranca.pesquisarCicloMetaGrupoPorCicloMeta( cicloMeta.getId(), grupoCobranca.getId()); for (int i = 0; i < idsCiclosMetaGrupo.size(); i++) { CicloMetaGrupo metaGrupo = (CicloMetaGrupo) idsCiclosMetaGrupo.get(i); meta = metaGrupo.getMetaAjustada(); int idLocalidade = metaGrupo.getLocalidade().getId(); // Caso o valor limite esteja definido if (cicloMeta.getValorLimite() != null && cicloMeta.getValorLimite().compareTo(ConstantesSistema.VALOR_ZERO) > 0) { // Pesquisar a quantidade de documentos que est�o acima // do limite quantidadeDocumentosGeradosAcimaValorLimite = repositorioCobranca .pesquisarQuantidadeDocumentosGeradosAcimaValorLimite(idCAAC, idCACM, metaGrupo.getLocalidade().getId(), cicloMeta.getValorLimite()); } // Pesquisar a quantidade total de documentos gerados quantidadeDocumentosGerados = repositorioCobranca.pesquisarQuantidadeDocumentosGerados(idCAAC, idCACM, idLocalidade); System.out.println(" Remover Documentos Excedentes.Cron: quantidadeDocumentosGerados = " + quantidadeDocumentosGerados); System.out.println(" Remover Documentos Excedentes.Cron: meta = " + meta); System.out.println(" Remover Documentos Excedentes.Cron: quantidadeDocumentosGeradosAcimaValorLimite = " + quantidadeDocumentosGeradosAcimaValorLimite); // Identificando a quantidade de documentos que dever�o ser // removidos // Caso tenha sido gerado mais documentos que a meta // esperada // h� a possibilidade de remo��o if (quantidadeDocumentosGerados > meta) { // remover // excedentes // Caso a quantidade de documentos acima do valor limite // seja // menor que a meta, ent�o tem documentos que podem ser // removidos if (meta > quantidadeDocumentosGeradosAcimaValorLimite) { quantidadeParaRemover = quantidadeDocumentosGerados - meta; // a quantidade realizada ser� a meta, pois ser� a // quantidade // resultante ap�s a remo��o dos excedentes quantidadeRealizada = meta; } else { // caso a meta seja menor que a quantidade de doc // valor acima quantidadeParaRemover = quantidadeDocumentosGerados - quantidadeDocumentosGeradosAcimaValorLimite; quantidadeRealizada = quantidadeDocumentosGeradosAcimaValorLimite; } if (quantidadeParaRemover > 0) { Collection docs = repositorioCobranca.pesquisarDocumentosCobrancaExcedentes(idCAAC, idCACM, quantidadeParaRemover, idLocalidade); // Calculando o valor total dos documentos que serao // excluidos BigDecimal valorTotal = new BigDecimal(0); ArrayList<Integer> ids = new ArrayList<Integer>(); for (Iterator iterator = docs.iterator(); iterator.hasNext();) { Object[] doc = (Object[]) iterator.next(); ids.add((Integer) doc[0]); valorTotal = valorTotal.add((BigDecimal) doc[1]); } metaGrupo.setQuantidadeDocumentosRestantes(ids.size()); metaGrupo.setValorTotalDocumentosRestantes(valorTotal); cancelarDocumentosCobrancaDoCronogramaOuEventual(ids, cobrancaAcao, idCobrancaDocumentoControleGeracao, valorTotal); removeuDocumentos = true; } System.out.println(" Remover Documentos Excedentes.Cron: quantidadeParaRemover = " + quantidadeParaRemover); } else { quantidadeRealizada = quantidadeDocumentosGerados; // Caso a meta n�o tenha sido alcan�ada, a diferen�a // entre a meta e a quantidade gerada devera ser // creditada para o pr�ximo grupo, alterado a // metaajustada do ciclometagrupo desta localidade if (meta.intValue() != quantidadeDocumentosGerados.intValue()) { repositorioCobranca.adicionarMetaCicloLocalidade(cicloMeta.getId(), grupoCobranca.getId(), idLocalidade, meta - quantidadeDocumentosGerados); } } // Atualizar a quantidade realizada no ciclometagrupo desta // localidade metaGrupo.setQuantidadeRealizada(quantidadeRealizada); metaGrupo.setUltimaAlteracao(new Date()); getControladorUtil().atualizar(metaGrupo); quantidadeRealizadaTotal += quantidadeRealizada; } // redistribuir localidades que n�o ocorreram neste comando } else { // caso seja eventual ou seja cronograma sem uso de metas // .. tratar do mesmo jeito // Caso nao esteja preenchida a quantidade maxima de documentos // para o comando // eventual ou cronograma, nao haver� documentos excedentes a // serem removidos if (cobrancaAcaoAtividadeCronograma != null) { meta = cobrancaAcaoAtividadeCronograma.getQuantidadeMaximaDocumentos(); } if (cobrancaAcaoAtividadeComando != null) { meta = cobrancaAcaoAtividadeComando.getQuantidadeMaximaDocumentos(); } if (meta == null) { return false; } // Caso o valor limite esteja definido if (cobrancaAcaoAtividadeComando != null && cobrancaAcaoAtividadeComando.getValorLimiteObrigatoria() != null) { // pesquisar quantidade de documentos que tem valor maior // que o limite // que obriga a emissao quantidadeDocumentosGeradosAcimaValorLimite = repositorioCobranca.pesquisarQuantidadeDocumentosGeradosAcimaValorLimite( idCAAC, idCACM, null, cobrancaAcaoAtividadeComando.getValorLimiteObrigatoria()); } // Pesquisar a quantidade total de documentos gerados quantidadeDocumentosGerados = repositorioCobranca.pesquisarQuantidadeDocumentosGerados(idCAAC, idCACM, null); System.out.println(" Remover Documentos Excedentes.Even: quantidadeDocumentosGerados = " + quantidadeDocumentosGerados); System.out.println(" Remover Documentos Excedentes.Even: meta = " + meta); System.out.println(" Remover Documentos Excedentes.Even: quantidadeDocumentosGeradosAcimaValorLimite = " + quantidadeDocumentosGeradosAcimaValorLimite); // Caso a quantidade de documentos acima do valor limite seja // menor que a meta, ent�o tem documentos que podem ser // removidos if (meta > quantidadeDocumentosGeradosAcimaValorLimite) { quantidadeParaRemover = quantidadeDocumentosGerados - meta; } else { // caso a meta seja menor que a quantidade de doc valor // acima quantidadeParaRemover = quantidadeDocumentosGerados - quantidadeDocumentosGeradosAcimaValorLimite; } if (quantidadeParaRemover > 0) { Collection docs = repositorioCobranca .pesquisarDocumentosCobrancaExcedentes(idCAAC, idCACM, quantidadeParaRemover, null); BigDecimal valorTotal = new BigDecimal(0); ArrayList<Integer> ids = new ArrayList<Integer>(); for (Iterator iterator = docs.iterator(); iterator.hasNext();) { Object[] doc = (Object[]) iterator.next(); ids.add((Integer) doc[0]); valorTotal = valorTotal.add((BigDecimal) doc[1]); } cancelarDocumentosCobrancaDoCronogramaOuEventual(ids, cobrancaAcao, idCobrancaDocumentoControleGeracao, valorTotal); removeuDocumentos = true; } System.out.println(" Remover Documentos Excedentes.Even: quantidadeParaRemover = " + quantidadeParaRemover); } } catch (ErroRepositorioException e) { throw new ControladorException("erro.sistema", e); } return removeuDocumentos; } /** * * @author Francisco do Nascimento * @date 23/04/2009 * * @param cicloMeta * @return void * @throws ControladorException */ public void distribuirMetasCiclo(CicloMeta cicloMeta) throws ControladorException { // Distribuir as metas de grupo/localidade por gerencia/cas/localidade // TreeMap<String, InformarCicloMetaGrupoHelper> helpersGerencia = new // TreeMap<String, InformarCicloMetaGrupoHelper>(); try { Collection colecaoCicloMetaGrupo = new ArrayList(); if (cicloMeta.getId() != null && cicloMeta.getId().intValue() != -1) { cicloMeta.setUltimaAlteracao(new Date()); getControladorUtil().atualizar(cicloMeta); FiltroCicloMetaGrupo filtroCicloGrupo = new FiltroCicloMetaGrupo(); filtroCicloGrupo.adicionarParametro(new ParametroSimples(FiltroCicloMetaGrupo.CICLO_META, cicloMeta.getId())); colecaoCicloMetaGrupo = getControladorUtil().pesquisar(filtroCicloGrupo, CicloMetaGrupo.class.getName()); if (colecaoCicloMetaGrupo != null && !colecaoCicloMetaGrupo.isEmpty()) { getControladorBatch().removerColecaoObjetoParaBatch(colecaoCicloMetaGrupo); colecaoCicloMetaGrupo.clear(); } } else { cicloMeta.setUltimaAlteracao(new Date()); getControladorUtil().inserir(cicloMeta); } Collection<GrupoLocalidadeImovelHelper> colecaoQuantidadeHelper = new ArrayList<GrupoLocalidadeImovelHelper>(); int quantidadeTotalImoveis = 0; // [3.1.2] Pesquisar as situa��es de liga��o de agua permitidas para // a a��o if (cicloMeta.getCobrancaAcao() != null && cicloMeta.getCobrancaAcao().getCobrancaCriterio() != null) { Collection<Integer> colecaoIdsSituacaoLigacaoAgua = new ArrayList<Integer>(); // pesquisar a colecao de criterios para situacao ligacao agua, // esgoto e cobranca FiltroCriterioSituacaoLigacaoAgua filtroCritSitAgua = new FiltroCriterioSituacaoLigacaoAgua(); filtroCritSitAgua.adicionarParametro(new ParametroSimples(FiltroCriterioSituacaoLigacaoAgua.COBRANCA_CRITERIO_ID, cicloMeta .getCobrancaAcao().getCobrancaCriterio().getId())); filtroCritSitAgua.adicionarCaminhoParaCarregamentoEntidade(FiltroCriterioSituacaoLigacaoAgua.LIGACAO_AGUA_SITUACAO); Collection colecaoCritSituacaoLigacaoAgua = getControladorUtil().pesquisar(filtroCritSitAgua, CriterioSituacaoLigacaoAgua.class.getName()); if (colecaoCritSituacaoLigacaoAgua == null || colecaoCritSituacaoLigacaoAgua.isEmpty()) { if (cicloMeta.getCobrancaAcao().getLigacaoAguaSituacao() == null) { throw new ControladorException("atencao.cobranca_acao_sem_situacao_acao"); } colecaoIdsSituacaoLigacaoAgua.add(cicloMeta.getCobrancaAcao().getLigacaoAguaSituacao().getId()); } else { for (Iterator iter = colecaoCritSituacaoLigacaoAgua.iterator(); iter.hasNext();) { CriterioSituacaoLigacaoAgua clas = (CriterioSituacaoLigacaoAgua) iter.next(); colecaoIdsSituacaoLigacaoAgua.add(clas.getComp_id().getLigacaoAguaSituacao().getId()); } } Collection colecaoQuantidadeImoveis = null; try { colecaoQuantidadeImoveis = repositorioCobranca .pesquisarQuantidadeImoveisPorGrupoLocalidade(colecaoIdsSituacaoLigacaoAgua); } catch (ErroRepositorioException e) { e.printStackTrace(); } if (colecaoQuantidadeImoveis != null) { Iterator iter = colecaoQuantidadeImoveis.iterator(); while (iter.hasNext()) { Object[] linha = (Object[]) iter.next(); GrupoLocalidadeImovelHelper helper = new GrupoLocalidadeImovelHelper(); helper.setIdGrupo((Integer) linha[0]); helper.setIdLocalidade((Integer) linha[1]); helper.setQuantidadeImoveis((Integer) linha[2]); quantidadeTotalImoveis += helper.getQuantidadeImoveis(); colecaoQuantidadeHelper.add(helper); } } // antes do (double) veio 0.0 double fator = ((double) cicloMeta.getMetaTotal()) / quantidadeTotalImoveis; int metaAcumulada = 0; boolean estouro = false; CicloMetaGrupo itemMaior = null; // Gerando as metas proporcionais for (Iterator iter = colecaoQuantidadeHelper.iterator(); iter.hasNext();) { GrupoLocalidadeImovelHelper helper = (GrupoLocalidadeImovelHelper) iter.next(); CicloMetaGrupo cicloMetaGrupo = new CicloMetaGrupo(); cicloMetaGrupo.setCicloMeta(cicloMeta); CobrancaGrupo cobGrupo = new CobrancaGrupo(); cobGrupo.setId(helper.getIdGrupo()); cicloMetaGrupo.setCobrancaGrupo(cobGrupo); Localidade localidade = new Localidade(); localidade.setId(helper.getIdLocalidade()); cicloMetaGrupo.setLocalidade(localidade); cicloMetaGrupo.setQuantidadeImoveisSituacaoAgua(helper.getQuantidadeImoveis()); // m.qtd_imoveis*cm.clmt_qtmeta/3771120 int metaCalculada = 0; if (!estouro) { BigDecimal calculoMeta = new BigDecimal(fator).multiply(new BigDecimal(helper.getQuantidadeImoveis())); // calculoMeta = calculoMeta.setScale(0, // BigDecimal.ROUND_CEILING); calculoMeta = calculoMeta.setScale(0, BigDecimal.ROUND_HALF_EVEN); metaCalculada = calculoMeta.intValue(); if (itemMaior == null || itemMaior.getMetaCalculada() < metaCalculada) { itemMaior = cicloMetaGrupo; } metaAcumulada += metaCalculada; } cicloMetaGrupo.setMetaCalculada(metaCalculada); cicloMetaGrupo.setMetaAjustada(metaCalculada); if (metaCalculada < 0) { cicloMetaGrupo.setMetaCalculada(0); cicloMetaGrupo.setMetaAjustada(0); } cicloMetaGrupo.setUltimaAlteracao(new Date()); Integer idCicloMetaGrupo = (Integer) getControladorUtil().inserir(cicloMetaGrupo); cicloMetaGrupo.setId(idCicloMetaGrupo); // colecaoCicloMetaGrupo.add(cicloMetaGrupo); } // Alterando o item com maior meta para ficar exatamente o valor // da meta total if (metaAcumulada > cicloMeta.getMetaTotal()) { itemMaior.setMetaCalculada(itemMaior.getMetaCalculada() - (metaAcumulada - cicloMeta.getMetaTotal())); if (itemMaior.getMetaCalculada() < 0) { itemMaior.setMetaCalculada(0); } itemMaior.setMetaAjustada(itemMaior.getMetaAjustada() - (metaAcumulada - cicloMeta.getMetaTotal())); if (itemMaior.getMetaAjustada() < 0) { itemMaior.setMetaAjustada(0); } getControladorUtil().atualizar(itemMaior); } else if (cicloMeta.getMetaTotal() > metaAcumulada) { itemMaior.setMetaCalculada(itemMaior.getMetaCalculada() - (cicloMeta.getMetaTotal() - metaAcumulada)); if (itemMaior.getMetaCalculada() < 0) { itemMaior.setMetaCalculada(0); } itemMaior.setMetaAjustada(itemMaior.getMetaAjustada() - (cicloMeta.getMetaTotal() - metaAcumulada)); if (itemMaior.getMetaAjustada() < 0) { itemMaior.setMetaAjustada(0); } getControladorUtil().atualizar(itemMaior); } } // helpersGerencia = agruparCicloMetaGrupo(colecaoCicloMetaGrupo); colecaoQuantidadeHelper.clear(); } catch (ControladorException ex) { sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", ex); } // return helpersGerencia; } /** * * Dado um objeto de cicloMeta, consultar a colecao de ciclo meta grupo, * agrupando por gerencia, unidade de negocio e localidade * * @author Francisco do Nascimento * @date 13/05/2009 * * @param cicloMeta * Objeto ciclo meta * @return Helpers com os agrupamentos definidos de ciclo meta grupo */ public TreeMap<String, InformarCicloMetaGrupoHelper> consultarColecaoCicloMetaGrupo(CicloMeta cicloMeta) throws ControladorException { FiltroCicloMetaGrupo filtroCicloGrupo = new FiltroCicloMetaGrupo(); filtroCicloGrupo.adicionarParametro(new ParametroSimples(FiltroCicloMetaGrupo.CICLO_META, cicloMeta.getId())); Collection<CicloMetaGrupo> colecaoCicloMetaGrupo = getControladorUtil().pesquisar(filtroCicloGrupo, CicloMetaGrupo.class.getName()); return agruparCicloMetaGrupo(colecaoCicloMetaGrupo); } /** * * @author Francisco do Nascimento * @date 13/05/2009 * * @param helpersGerencia * @param colecaoCicloMetaGrupo * @throws ControladorException */ private TreeMap<String, InformarCicloMetaGrupoHelper> agruparCicloMetaGrupo(Collection colecaoCicloMetaGrupo) throws ControladorException { TreeMap<String, InformarCicloMetaGrupoHelper> helpersGerencia = new TreeMap<String, InformarCicloMetaGrupoHelper>(); if (colecaoCicloMetaGrupo != null) { for (Iterator iter = colecaoCicloMetaGrupo.iterator(); iter.hasNext();) { CicloMetaGrupo cicloMetaGrupo = (CicloMetaGrupo) iter.next(); FiltroLocalidade filtroLocalidade = new FiltroLocalidade(); filtroLocalidade.adicionarParametro(new ParametroSimples(FiltroLocalidade.ID, cicloMetaGrupo.getLocalidade().getId())); filtroLocalidade.adicionarCaminhoParaCarregamentoEntidade(FiltroLocalidade.GERENCIA); filtroLocalidade.adicionarCaminhoParaCarregamentoEntidade(FiltroLocalidade.UNIDADE_NEGOCIO); Collection colecaoLocalidade = getControladorUtil().pesquisar(filtroLocalidade, Localidade.class.getName()); Localidade localidade = (Localidade) Util.retonarObjetoDeColecao(colecaoLocalidade); Integer idGerencia = localidade.getGerenciaRegional().getId(); Integer idUnidadeNegocio = localidade.getUnidadeNegocio().getId(); InformarCicloMetaGrupoHelper helperGerenciaLoc = helpersGerencia.get(localidade.getGerenciaRegional().getNome()); if (helperGerenciaLoc == null) { helperGerenciaLoc = new InformarCicloMetaGrupoHelper(); helperGerenciaLoc.setTipoItem("G"); helperGerenciaLoc.setIdItem(idGerencia); helperGerenciaLoc.setNomeItem(localidade.getGerenciaRegional().getNome()); helperGerenciaLoc.setMetaOriginal(cicloMetaGrupo.getMetaCalculada()); helperGerenciaLoc.setMetaAtual(cicloMetaGrupo.getMetaAjustada()); helperGerenciaLoc.setQtdImoveisSituacao(cicloMetaGrupo.getQuantidadeImoveisSituacaoAgua()); /** Usado pelo analisar metas Ciclo **/ if (cicloMetaGrupo.getQuantidadeRealizada() == null) { helperGerenciaLoc.setQtdTotalRealizada(0); } else { helperGerenciaLoc.setQtdTotalRealizada(cicloMetaGrupo.getQuantidadeRealizada()); } // helperGerenciaLoc.setValorTotalRealizado(cicloMetaGrupo.); if (cicloMetaGrupo.getQuantidadeDocumentosRestantes() == null) { helperGerenciaLoc.setQtdTotalRestante(0); } else { helperGerenciaLoc.setQtdTotalRestante(cicloMetaGrupo.getQuantidadeDocumentosRestantes()); } if (cicloMetaGrupo.getValorTotalDocumentosRestantes() == null) { helperGerenciaLoc.setValorTotalRestante(new BigDecimal(0)); } else { helperGerenciaLoc.setValorTotalRestante(cicloMetaGrupo.getValorTotalDocumentosRestantes()); } /** ------------------------------ **/ helpersGerencia.put(localidade.getGerenciaRegional().getNome(), helperGerenciaLoc); TreeMap<String, InformarCicloMetaGrupoHelper> helpersUneg = new TreeMap<String, InformarCicloMetaGrupoHelper>(); helperGerenciaLoc.setSubItens(helpersUneg); } else { helperGerenciaLoc.setMetaOriginal(helperGerenciaLoc.getMetaOriginal() + cicloMetaGrupo.getMetaCalculada()); helperGerenciaLoc.setMetaAtual(helperGerenciaLoc.getMetaAtual() + cicloMetaGrupo.getMetaAjustada()); helperGerenciaLoc.setQtdImoveisSituacao(helperGerenciaLoc.getQtdImoveisSituacao() + cicloMetaGrupo.getQuantidadeImoveisSituacaoAgua()); /** Usado pelo analisar metas Ciclo **/ if (cicloMetaGrupo.getQuantidadeRealizada() == null) { cicloMetaGrupo.setQuantidadeRealizada(0); } helperGerenciaLoc.setQtdTotalRealizada(helperGerenciaLoc.getQtdTotalRealizada() + cicloMetaGrupo.getQuantidadeRealizada()); // helperGerenciaLoc.setValorTotalRealizado(cicloMetaGrupo.); if (cicloMetaGrupo.getQuantidadeDocumentosRestantes() == null) { cicloMetaGrupo.setQuantidadeDocumentosRestantes(0); } helperGerenciaLoc.setQtdTotalRestante(helperGerenciaLoc.getQtdTotalRestante() + cicloMetaGrupo.getQuantidadeDocumentosRestantes()); if (cicloMetaGrupo.getValorTotalDocumentosRestantes() == null) { cicloMetaGrupo.setValorTotalDocumentosRestantes(new BigDecimal(0)); } helperGerenciaLoc.setValorTotalRestante(helperGerenciaLoc.getValorTotalRestante().add( cicloMetaGrupo.getValorTotalDocumentosRestantes())); /** ------------------------------ **/ } InformarCicloMetaGrupoHelper helperUnegLoc = helperGerenciaLoc.getSubItens().get(localidade.getUnidadeNegocio().getNome()); if (helperUnegLoc == null) { helperUnegLoc = new InformarCicloMetaGrupoHelper(); helperUnegLoc.setTipoItem("U"); helperUnegLoc.setIdItem(idUnidadeNegocio); helperUnegLoc.setNomeItem(localidade.getUnidadeNegocio().getNome()); helperUnegLoc.setMetaOriginal(cicloMetaGrupo.getMetaCalculada()); helperUnegLoc.setMetaAtual(cicloMetaGrupo.getMetaAjustada()); helperUnegLoc.setQtdImoveisSituacao(cicloMetaGrupo.getQuantidadeImoveisSituacaoAgua()); /** Usado pelo analisar metas Ciclo **/ helperUnegLoc.setQtdTotalRealizada(cicloMetaGrupo.getQuantidadeRealizada()); // helperUnegLoc.setValorTotalRealizado(cicloMetaGrupo.); helperUnegLoc.setQtdTotalRestante(cicloMetaGrupo.getQuantidadeDocumentosRestantes()); helperUnegLoc.setValorTotalRestante(cicloMetaGrupo.getValorTotalDocumentosRestantes()); /** ------------------------------ **/ helperGerenciaLoc.getSubItens().put(localidade.getUnidadeNegocio().getNome(), helperUnegLoc); TreeMap<String, InformarCicloMetaGrupoHelper> helpersLoc = new TreeMap<String, InformarCicloMetaGrupoHelper>(); helperUnegLoc.setSubItens(helpersLoc); } else { helperUnegLoc.setMetaOriginal(helperUnegLoc.getMetaOriginal() + cicloMetaGrupo.getMetaCalculada()); helperUnegLoc.setMetaAtual(helperUnegLoc.getMetaAtual() + cicloMetaGrupo.getMetaAjustada()); helperUnegLoc.setQtdImoveisSituacao(helperUnegLoc.getQtdImoveisSituacao() + cicloMetaGrupo.getQuantidadeImoveisSituacaoAgua()); /** Usado pelo analisar metas Ciclo **/ helperUnegLoc.setQtdTotalRealizada(helperGerenciaLoc.getQtdTotalRealizada() + cicloMetaGrupo.getQuantidadeRealizada()); // helperGerenciaLoc.setValorTotalRealizado(cicloMetaGrupo.); helperUnegLoc.setQtdTotalRestante(helperGerenciaLoc.getQtdTotalRestante() + cicloMetaGrupo.getQuantidadeDocumentosRestantes()); helperUnegLoc.setValorTotalRestante(helperGerenciaLoc.getValorTotalRestante().add( cicloMetaGrupo.getValorTotalDocumentosRestantes())); /** ------------------------------ **/ } InformarCicloMetaGrupoHelper helperLoc = helperUnegLoc.getSubItens().get(localidade.getDescricao()); if (helperLoc == null) { helperLoc = new InformarCicloMetaGrupoHelper(); helperLoc.setTipoItem("L"); helperLoc.setIdItem(localidade.getId()); helperLoc.setNomeItem(localidade.getDescricao()); helperLoc.setMetaOriginal(cicloMetaGrupo.getMetaCalculada()); helperLoc.setMetaAtual(cicloMetaGrupo.getMetaAjustada()); helperLoc.setQtdImoveisSituacao(cicloMetaGrupo.getQuantidadeImoveisSituacaoAgua()); /** Usado pelo analisar metas Ciclo **/ helperLoc.setQtdTotalRealizada(cicloMetaGrupo.getQuantidadeRealizada()); // helperLoc.setValorTotalRealizado(cicloMetaGrupo.); helperLoc.setQtdTotalRestante(cicloMetaGrupo.getQuantidadeDocumentosRestantes()); helperLoc.setValorTotalRestante(cicloMetaGrupo.getValorTotalDocumentosRestantes()); /** ------------------------------ **/ helperUnegLoc.getSubItens().put(localidade.getDescricao(), helperLoc); } else { helperLoc.setMetaOriginal(helperLoc.getMetaOriginal() + cicloMetaGrupo.getMetaCalculada()); helperLoc.setMetaAtual(helperLoc.getMetaAtual() + cicloMetaGrupo.getMetaAjustada()); helperLoc.setQtdImoveisSituacao(helperLoc.getQtdImoveisSituacao() + cicloMetaGrupo.getQuantidadeImoveisSituacaoAgua()); /** Usado pelo analisar metas Ciclo **/ helperLoc.setQtdTotalRealizada(helperGerenciaLoc.getQtdTotalRealizada() + cicloMetaGrupo.getQuantidadeRealizada()); // helperGerenciaLoc.setValorTotalRealizado(cicloMetaGrupo.); helperLoc.setQtdTotalRestante(helperGerenciaLoc.getQtdTotalRestante() + cicloMetaGrupo.getQuantidadeDocumentosRestantes()); helperLoc.setValorTotalRestante(helperGerenciaLoc.getValorTotalRestante().add( cicloMetaGrupo.getValorTotalDocumentosRestantes())); /** ------------------------------ **/ } } } return helpersGerencia; } /** * * Atualizar metas dos grupos/localidade * * @author Francisco do Nascimento * @date 28/04/2009 * * @param cicloMeta * @param helpersLocalidade * @throws ControladorException */ public void atualizarDistribuicaoMetasCicloGrupoLocalidade(CicloMeta cicloMeta, Collection<InformarCicloMetaGrupoHelper> helpersLocalidade) throws ControladorException { if (helpersLocalidade != null) { for (Iterator iter = helpersLocalidade.iterator(); iter.hasNext();) { InformarCicloMetaGrupoHelper helper = (InformarCicloMetaGrupoHelper) iter.next(); FiltroCicloMetaGrupo filtroCicloGrupo = new FiltroCicloMetaGrupo(); filtroCicloGrupo.adicionarParametro(new ParametroSimples(FiltroCicloMetaGrupo.CICLO_META, cicloMeta.getId())); filtroCicloGrupo.adicionarParametro(new ParametroSimples(FiltroCicloMetaGrupo.LOCALIDADE_ID, helper.getIdItem())); Collection<CicloMetaGrupo> colecaoCicloMetaGrupoLocalidade = getControladorUtil().pesquisar(filtroCicloGrupo, CicloMetaGrupo.class.getName()); int qtdTotalLocalidadeAcumulada = 0; int contadorLocalidade = 1; for (Iterator iterCicloMetaGrupo = colecaoCicloMetaGrupoLocalidade.iterator(); iterCicloMetaGrupo.hasNext();) { CicloMetaGrupo cicloMetaGrupo = (CicloMetaGrupo) iterCicloMetaGrupo.next(); if (helper.getMetaOriginal() > 0) { int metaAjustada = (int) ((double) cicloMetaGrupo.getMetaCalculada() * helper.getMetaAtual()) / helper.getMetaOriginal(); if (contadorLocalidade == colecaoCicloMetaGrupoLocalidade.size()) { metaAjustada = helper.getMetaAtual() - qtdTotalLocalidadeAcumulada; } cicloMetaGrupo.setMetaAjustada(metaAjustada); if (metaAjustada < 0) { cicloMetaGrupo.setMetaAjustada(0); } getControladorUtil().atualizar(cicloMetaGrupo); qtdTotalLocalidadeAcumulada += metaAjustada; } contadorLocalidade++; } } } } /** * [UC0214] Efetuar Parcelamento de D�bitos * * @author Vivianne Sousa * @date 13/05/2009 * * @return * @throws ErroRepositorioException */ public Object[] pesquisaSomatorioValorDebitoACobrarParcelamentoImovel(Integer idImovel, Integer referencia) throws ControladorException { BigDecimal valorDebitoACobrar = BigDecimal.ZERO; Collection colDebitoACobrar = null; try { // verifica se existe parcelamento de faturas com amreferenciaconta // <= referencia Integer idParcelamento = repositorioCobranca.pesquisarIdParcelamentoNormal(idImovel, referencia); if (idParcelamento != null) { colDebitoACobrar = repositorioCobranca.pesquisarDebitosACobrarParcelamento(idParcelamento); if (colDebitoACobrar != null && !colDebitoACobrar.isEmpty()) { Iterator iterDebitoACobrar = colDebitoACobrar.iterator(); while (iterDebitoACobrar.hasNext()) { DebitoACobrar debitoACobrar = (DebitoACobrar) iterDebitoACobrar.next(); valorDebitoACobrar = valorDebitoACobrar.add(debitoACobrar.getValorTotalComBonus()); } } } } catch (ErroRepositorioException e) { e.printStackTrace(); throw new ControladorException("erro.sistema", e); } Object[] retorno = new Object[2]; retorno[0] = (BigDecimal) valorDebitoACobrar; retorno[1] = (Collection) colDebitoACobrar; return retorno; } /** * [UC0214] Efetuar Parcelamento de D�bitos Author: Vivianne Sousa Data: * 18/05/2009 */ public BigDecimal pesquisarValorDebitoCobradoParcelamentoConta(Integer idConta) throws ControladorException { BigDecimal retorno = BigDecimal.ZERO; try { retorno = repositorioCobranca.pesquisarValorDebitoCobradoParcelamentoConta(idConta); } catch (ErroRepositorioException e) { e.printStackTrace(); throw new ControladorException("erro.sistema", e); } return retorno; } /** * * * [UC0177] Informar Situacao Especial de Cobran�a * * @author R�mulo Aur�lio * @date 28/05/2009 * * @return */ public void inserirSituacaoEspecialCobranca(Collection colecaoImoveisParaSerInseridos, SituacaoEspecialCobrancaHelper situacaoEspecialCobrancaHelper, Usuario usuarioLogado, Integer idCobrancaSituacaoTipo, Integer anoMesReferenciaInicial, Integer anoMesReferenciaFinal) throws ControladorException { try { Integer idCobrancaSituacaoComando = this.inserirCobrancaSituacaoComando(situacaoEspecialCobrancaHelper, false); CobrancaSituacaoComando cobrancaSituacaoComando = new CobrancaSituacaoComando(); cobrancaSituacaoComando.setId(idCobrancaSituacaoComando); Collection colecaoImoveis = new ArrayList(); // Incluir tabela Cobranca situacao historico Iterator iterator = colecaoImoveisParaSerInseridos.iterator(); Collection collectionCobrancaSituaoHistorico = new ArrayList(); while (iterator.hasNext()) { Object[] dadosImoveis = (Object[]) iterator.next(); if (dadosImoveis != null) { Integer id = (Integer) dadosImoveis[0]; Date ultimaAlteracao = (Date) dadosImoveis[1]; Date ultimaAlteracaoImovel = getControladorImovel().pesquisarUltimaAlteracaoImovel(id); // Controle de concorrencia if (ultimaAlteracaoImovel.after(ultimaAlteracao)) { throw new ControladorException("atencao.atualizacao.timestamp"); } // Adiciona os imoveis colecaoImoveis.add(id); // Construindo as variaveis CobrancaSituacaoHistorico cobrancaSituacaoHistorico = new CobrancaSituacaoHistorico(); Imovel imovel = new Imovel(); FiltroCobrancaSituacaoTipo filtroCobrancaSituacaoTipo = new FiltroCobrancaSituacaoTipo(); filtroCobrancaSituacaoTipo.adicionarParametro(new ParametroSimples(FiltroCobrancaSituacaoTipo.ID, situacaoEspecialCobrancaHelper.getIdCobrancaSituacaoTipo())); Collection colecaoCobrancasSituacoesTipo = this.getControladorUtil().pesquisar(filtroCobrancaSituacaoTipo, CobrancaSituacaoTipo.class.getName()); CobrancaSituacaoTipo cobrancaSituacaoTipo = (CobrancaSituacaoTipo) colecaoCobrancasSituacoesTipo.iterator().next(); FiltroCobrancaSituacaoMotivo filtroCobrancaSituacaoMotivo = new FiltroCobrancaSituacaoMotivo(); filtroCobrancaSituacaoMotivo.adicionarParametro(new ParametroSimples(FiltroCobrancaSituacaoMotivo.ID, situacaoEspecialCobrancaHelper.getIdCobrancaSituacaoMotivo())); Collection colecaoCobrancasSituacoesMotivo = this.getControladorUtil().pesquisar(filtroCobrancaSituacaoMotivo, CobrancaSituacaoMotivo.class.getName()); CobrancaSituacaoMotivo cobrancaSituacaoMotivo = (CobrancaSituacaoMotivo) colecaoCobrancasSituacoesMotivo.iterator() .next(); // Setando as Variaveis imovel.setId(new Integer(id)); cobrancaSituacaoHistorico.setImovel(imovel); cobrancaSituacaoHistorico.setAnoMesCobrancaSituacaoInicio(anoMesReferenciaInicial); cobrancaSituacaoHistorico.setAnoMesCobrancaSituacaoFim(anoMesReferenciaFinal); cobrancaSituacaoHistorico.setAnoMesCobrancaRetirada(null); cobrancaSituacaoHistorico.setCobrancaSituacaoMotivo(cobrancaSituacaoMotivo); cobrancaSituacaoHistorico.setCobrancaSituacaoTipo(cobrancaSituacaoTipo); cobrancaSituacaoHistorico.setObservacaoInforma(situacaoEspecialCobrancaHelper.getObservacaoInforma()); if (situacaoEspecialCobrancaHelper.getDataFimSituacao() != null && !situacaoEspecialCobrancaHelper.getDataFimSituacao().equals("")) { Date dataFimSituacao = Util.converteStringParaDate(situacaoEspecialCobrancaHelper.getDataFimSituacao()); if (dataFimSituacao.before(new Date())) { throw new ActionServletException("atencao.data_final_situacao_cobranca_invalida"); } else { cobrancaSituacaoHistorico.setDataFimSituacao(dataFimSituacao); } } cobrancaSituacaoHistorico.setUltimaAlteracao(Calendar.getInstance().getTime()); // CobrancaSituacaoComando cobrancaSituacaoHistorico.setCobrancaSituacaoComandoInforma(cobrancaSituacaoComando); collectionCobrancaSituaoHistorico.add(cobrancaSituacaoHistorico); } } // this.inserirFaturamentoSituacaoHistorico(collectionFaturmentoSituaoHistorico); // ------------------------REGISTRAR // TRANSA��O---------------------FATURAMENTO HISTORICO----- Iterator itera = collectionCobrancaSituaoHistorico.iterator(); while (itera.hasNext()) { CobrancaSituacaoHistorico csh = (CobrancaSituacaoHistorico) itera.next(); RegistradorOperacao registradorOperacao = new RegistradorOperacao(Operacao.OPERACAO_INFORMAR_SITUACAO_ESPECIAL_COBRANCA, csh.getImovel().getId(), csh.getImovel().getId(), new UsuarioAcaoUsuarioHelper(usuarioLogado, UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO)); registradorOperacao.registrarOperacao(csh); } // ------------------------REGISTRAR // TRANSA��O---------------------FATURAMENTO HISTORICO----- // Incluir tabela Cobranca situacao historico // this.inserirCobrancaSituacaoHistorico(collectionCobrancaSituaoHistorico); getControladorBatch().inserirColecaoObjetoParaBatch(collectionCobrancaSituaoHistorico); // Atualizar Imoveis getControladorImovel().atualizarCobrancaSituacaoTipo(colecaoImoveis, idCobrancaSituacaoTipo, usuarioLogado); } catch (ControladorException ex) { sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", ex); } } /** * [UC0177] Informar Situacao Especial Cobranca * * @author R�mulo Aur�lio * @created 27/05/2009 * */ public Integer inserirCobrancaSituacaoComando(SituacaoEspecialCobrancaHelper situacaoEspecialCobrancaHelper, boolean retirar) throws ControladorException { Integer id; CobrancaSituacaoComando cobrancaSituacaoComando = new CobrancaSituacaoComando(); if (situacaoEspecialCobrancaHelper.getIdImovel() != null && !situacaoEspecialCobrancaHelper.getIdImovel().equalsIgnoreCase("")) { Imovel imovel = new Imovel(); imovel.setId(new Integer(situacaoEspecialCobrancaHelper.getIdImovel())); cobrancaSituacaoComando.setImovel(imovel); } if (situacaoEspecialCobrancaHelper.getLocalidadeOrigemID() != null && !situacaoEspecialCobrancaHelper.getLocalidadeOrigemID().equalsIgnoreCase("")) { Localidade localidadeInicial = new Localidade(); localidadeInicial.setId(new Integer(situacaoEspecialCobrancaHelper.getLocalidadeOrigemID())); cobrancaSituacaoComando.setLocalidadeInicial(localidadeInicial); } if (situacaoEspecialCobrancaHelper.getLocalidadeDestinoID() != null && !situacaoEspecialCobrancaHelper.getLocalidadeDestinoID().equalsIgnoreCase("")) { Localidade localidadeFinal = new Localidade(); localidadeFinal.setId(new Integer(situacaoEspecialCobrancaHelper.getLocalidadeDestinoID())); cobrancaSituacaoComando.setLocalidadeFinal(localidadeFinal); } if (situacaoEspecialCobrancaHelper.getSetorComercialOrigemCD() != null && !situacaoEspecialCobrancaHelper.getSetorComercialOrigemCD().equalsIgnoreCase("")) { cobrancaSituacaoComando.setCodigoSetorComercialInicial(new Integer(situacaoEspecialCobrancaHelper.getSetorComercialOrigemCD())); } if (situacaoEspecialCobrancaHelper.getSetorComercialDestinoCD() != null && !situacaoEspecialCobrancaHelper.getSetorComercialDestinoCD().equalsIgnoreCase("")) { cobrancaSituacaoComando.setCodigoSetorComercialFinal(new Integer(situacaoEspecialCobrancaHelper.getSetorComercialDestinoCD())); } if (situacaoEspecialCobrancaHelper.getQuadraOrigemNM() != null && !situacaoEspecialCobrancaHelper.getQuadraOrigemNM().equalsIgnoreCase("")) { cobrancaSituacaoComando.setNumeroQuadraInicial(new Integer(situacaoEspecialCobrancaHelper.getQuadraOrigemNM())); } if (situacaoEspecialCobrancaHelper.getQuadraDestinoNM() != null && !situacaoEspecialCobrancaHelper.getQuadraDestinoNM().equalsIgnoreCase("")) { cobrancaSituacaoComando.setNumeroQuadraFinal(new Integer(situacaoEspecialCobrancaHelper.getQuadraDestinoNM())); } if (situacaoEspecialCobrancaHelper.getLoteOrigem() != null && !situacaoEspecialCobrancaHelper.getLoteOrigem().equalsIgnoreCase("")) { cobrancaSituacaoComando.setNumeroLoteInicial(new Integer(situacaoEspecialCobrancaHelper.getLoteOrigem())); } if (situacaoEspecialCobrancaHelper.getLoteDestino() != null && !situacaoEspecialCobrancaHelper.getLoteDestino().equalsIgnoreCase("")) { cobrancaSituacaoComando.setNumeroLoteFinal(new Integer(situacaoEspecialCobrancaHelper.getLoteDestino())); } if (situacaoEspecialCobrancaHelper.getSubloteOrigem() != null && !situacaoEspecialCobrancaHelper.getSubloteOrigem().equalsIgnoreCase("")) { cobrancaSituacaoComando.setNumeroSubLoteInicial(new Integer(situacaoEspecialCobrancaHelper.getSubloteOrigem())); } if (situacaoEspecialCobrancaHelper.getSubloteDestino() != null && !situacaoEspecialCobrancaHelper.getSubloteDestino().equalsIgnoreCase("")) { cobrancaSituacaoComando.setNumeroSubLoteFinal(new Integer(situacaoEspecialCobrancaHelper.getSubloteDestino())); } if (situacaoEspecialCobrancaHelper.getCodigoRotaInicial() != null && !situacaoEspecialCobrancaHelper.getCodigoRotaInicial().equalsIgnoreCase("")) { cobrancaSituacaoComando.setCodigoRotaInicial(new Integer(situacaoEspecialCobrancaHelper.getCodigoRotaInicial())); } if (situacaoEspecialCobrancaHelper.getCodigoRotaFinal() != null && !situacaoEspecialCobrancaHelper.getCodigoRotaFinal().equalsIgnoreCase("")) { cobrancaSituacaoComando.setCodigoRotaFinal(new Integer(situacaoEspecialCobrancaHelper.getCodigoRotaFinal())); } if (situacaoEspecialCobrancaHelper.getSequencialRotaInicial() != null && !situacaoEspecialCobrancaHelper.getSequencialRotaInicial().equalsIgnoreCase("")) { cobrancaSituacaoComando.setSequencialRotaInicial(new Integer(situacaoEspecialCobrancaHelper.getSequencialRotaInicial())); } if (situacaoEspecialCobrancaHelper.getSequencialRotaFinal() != null && !situacaoEspecialCobrancaHelper.getSequencialRotaFinal().equalsIgnoreCase("")) { cobrancaSituacaoComando.setSequencialRotaFinal(new Integer(situacaoEspecialCobrancaHelper.getSequencialRotaFinal())); } if (situacaoEspecialCobrancaHelper.getIdsCategoria() != null) { String[] idsCategoria = situacaoEspecialCobrancaHelper.getIdsCategoria(); for (int i = 0; i < idsCategoria.length; i++) { if (idsCategoria[i] != null && !idsCategoria[0].equals("-1") && i == 0) { Categoria cat = new Categoria(); cat.setId(new Integer(idsCategoria[i])); cobrancaSituacaoComando.setCategoria1(cat); } else if (idsCategoria[i] != null && !idsCategoria[0].equals("-1") && i == 2) { Categoria cat = new Categoria(); cat.setId(new Integer(idsCategoria[i])); cobrancaSituacaoComando.setCategoria2(cat); } else if (idsCategoria[i] != null && !idsCategoria[0].equals("-1") && i == 3) { Categoria cat = new Categoria(); cat.setId(new Integer(idsCategoria[i])); cobrancaSituacaoComando.setCategoria3(cat); } else if (idsCategoria[i] != null && !idsCategoria[0].equals("-1") && i == 4) { Categoria cat = new Categoria(); cat.setId(new Integer(idsCategoria[i])); cobrancaSituacaoComando.setCategoria4(cat); } } } if (situacaoEspecialCobrancaHelper.getQuantidadeImoveisAtualizados() != null && !situacaoEspecialCobrancaHelper.getQuantidadeImoveisAtualizados().equalsIgnoreCase("")) { cobrancaSituacaoComando.setQuantidadeImoveis(new Integer(situacaoEspecialCobrancaHelper.getQuantidadeImoveisAtualizados())); } if (situacaoEspecialCobrancaHelper.getMesAnoReferenciaCobrancaInicial() != null && !situacaoEspecialCobrancaHelper.getMesAnoReferenciaCobrancaInicial().equals("")) { cobrancaSituacaoComando.setAnoMesInicialSituacaoCobranca(Util.formatarMesAnoComBarraParaAnoMes(situacaoEspecialCobrancaHelper .getMesAnoReferenciaCobrancaInicial())); } if (situacaoEspecialCobrancaHelper.getMesAnoReferenciaCobrancaFinal() != null && !situacaoEspecialCobrancaHelper.getMesAnoReferenciaCobrancaFinal().equals("")) { cobrancaSituacaoComando.setAnoMesFinalSituacaoCobranca(Util.formatarMesAnoComBarraParaAnoMes(situacaoEspecialCobrancaHelper .getMesAnoReferenciaCobrancaFinal())); } // Verifica se vem do retirar ou do Inserir if (!retirar) { if (situacaoEspecialCobrancaHelper.getIdCobrancaSituacaoTipo() != null && !situacaoEspecialCobrancaHelper.getIdCobrancaSituacaoTipo().equals("-1")) { // Comando de Inserir CobrancaSituacaoTipo cobrancaSituacaoTipo = new CobrancaSituacaoTipo(); cobrancaSituacaoTipo.setId(new Integer(situacaoEspecialCobrancaHelper.getIdCobrancaSituacaoTipo())); cobrancaSituacaoComando.setCobrancaSituacaoTipo(cobrancaSituacaoTipo); Usuario usuario = new Usuario(); usuario.setId(new Integer(situacaoEspecialCobrancaHelper.getIdUsuarioInforma())); cobrancaSituacaoComando.setUsuario(usuario); } if (situacaoEspecialCobrancaHelper.getObservacaoInforma() != null && !situacaoEspecialCobrancaHelper.getObservacaoInforma().equals("")) { cobrancaSituacaoComando.setObservacao(situacaoEspecialCobrancaHelper.getObservacaoInforma()); } if (situacaoEspecialCobrancaHelper.getIdCobrancaSituacaoMotivo() != null && !situacaoEspecialCobrancaHelper.getIdCobrancaSituacaoMotivo().equals("-1")) { CobrancaSituacaoMotivo cobrancaSituacaoMotivo = new CobrancaSituacaoMotivo(); cobrancaSituacaoMotivo.setId(new Integer(situacaoEspecialCobrancaHelper.getIdCobrancaSituacaoMotivo())); cobrancaSituacaoComando.setCobrancaSituacaoMotivo(cobrancaSituacaoMotivo); } cobrancaSituacaoComando.setIndicadorComando(ConstantesSistema.SIM); } else { // Comando de Retirar // Seta o Usuario no Comando Usuario usuario = new Usuario(); usuario.setId(new Integer(situacaoEspecialCobrancaHelper.getIdUsuarioRetira())); cobrancaSituacaoComando.setUsuario(usuario); cobrancaSituacaoComando.setIndicadorComando(ConstantesSistema.NAO); if (situacaoEspecialCobrancaHelper.getObservacaoRetira() != null && !situacaoEspecialCobrancaHelper.getObservacaoRetira().equals("")) { cobrancaSituacaoComando.setObservacao(situacaoEspecialCobrancaHelper.getObservacaoRetira()); } } cobrancaSituacaoComando.setUltimaAlteracao(new Date()); id = (Integer) getControladorUtil().inserir(cobrancaSituacaoComando); return id; } /** * retorna id da ResolucaoDiretoria * * [UC0214] - Efetuar Parcelamento de D�bitos * * @author Vivianne Sousa * @date 08/11/2006 * * @return * @throws ErroRepositorioException */ public Integer pesquisarResolucaoDiretoriaComPercentualDoacao() throws ControladorException { try { return repositorioCobranca.pesquisarResolucaoDiretoriaComPercentualDoacao(); } catch (ErroRepositorioException e) { e.printStackTrace(); throw new ControladorException("erro.sistema", e); } } /** * [UC0911] - Gerar Cartas da Campanha de Solidariedade da Crian�a para * Negocia��o a Vista * * @author: Vivianne Sousa * @date: 11/06/2009 */ public void gerarCartasCampanhaSolidariedadeCriancaParaNegociacaoAVista(Integer idRota, Integer idFuncionalidadeIniciada) throws ControladorException { int idUnidadeIniciada = 0; try { /* * Registrar o in�cio do processamento da Unidade de Processamento * do Batch */ idUnidadeIniciada = getControladorBatch().iniciarUnidadeProcessamentoBatch(idFuncionalidadeIniciada, UnidadeProcessamento.ROTA, (idRota)); // Deleta DocumentoCobranca e DocumentoCobrancaItem // da rota a ser processada com DocumentoTipo = // CARTA_SOLIDARIEDADE_DA_CRIANCA deletarCobrancaDocumentoECobrancaDocumentoItem(idRota, DocumentoTipo.CARTA_SOLIDARIEDADE_DA_CRIANCA); DocumentoEmissaoForma documentoEmissaoForma = new DocumentoEmissaoForma(); documentoEmissaoForma.setId(DocumentoEmissaoForma.INDIVIDUAL); DocumentoTipo documentoTipo = new DocumentoTipo(); documentoTipo.setId(DocumentoTipo.CARTA_SOLIDARIEDADE_DA_CRIANCA); ResolucaoDiretoria resolucaoDiretoria = new ResolucaoDiretoria(); resolucaoDiretoria.setId(12); int anoMesLimite = 200812; Integer idRDParcelasEmAtraso = 8; BigDecimal valorLimite = new BigDecimal("5.00"); Rota rota = new Rota(); rota.setId(idRota); Empresa empresa = new Empresa(); empresa.setId(repositorioMicromedicao.obterIdEmpresaPorRota(rota)); Collection colecaoImoveis = repositorioCobranca.pesquisarDadosImoveisPorRota(idRota); if (colecaoImoveis != null && !colecaoImoveis.isEmpty()) { Iterator iteratorImoveis = colecaoImoveis.iterator(); while (iteratorImoveis.hasNext()) { Imovel imovel = (Imovel) iteratorImoveis.next(); if (!existeCategoriaPublica(imovel)) { // [SB0001]-Verificar se o im�vel possue d�bitos que // satisfa�a ObterDebitoImovelOuClienteHelper obterDebitoImovelOuCliente = obterDebitoImovelOuCliente(1, // Indicador // de // d�bito // do // im�vel imovel.getId().toString(), // Matr�cula do // im�vel null, // C�digo do cliente null, // Tipo de rela��o cliente im�vel "000101", // Refer�ncia inicial do d�bito "200906", // Refer�ncia final do d�bito Util.converteStringParaDate("01/01/0001"), // Inicio // Vencimento Util.converteStringParaDate("31/12/9999"), // Final // Vencimento 1, // Indicador de pagamento ConstantesSistema.SIM, // conta em revis�o ConstantesSistema.NAO, // D�bito a cobrar ConstantesSistema.NAO, // cr�dito a realizar ConstantesSistema.NAO, // Indicador de notas // promiss�rias ConstantesSistema.NAO, // guias pagamento ConstantesSistema.SIM, // acr�scimos // impontualidade true); // 4. caso de lista de conta n�o esteja vazia if (obterDebitoImovelOuCliente.getColecaoContasValores() != null && !obterDebitoImovelOuCliente.getColecaoContasValores().isEmpty()) { BigDecimal valorTotalContas = BigDecimal.ZERO; BigDecimal valorTotalAcrescimoImpontualidadeContas = BigDecimal.ZERO; BigDecimal valorAtualizacaoMonetaria = BigDecimal.ZERO; BigDecimal valorJurosMora = BigDecimal.ZERO; BigDecimal valorMulta = BigDecimal.ZERO; boolean existeDebitoACobrarParaDesconto = false; boolean existeContaParaDesconto = false; BigDecimal valorTotalContasParaDesconto = BigDecimal.ZERO; BigDecimal valorDesconto = BigDecimal.ZERO; BigDecimal valorDocumento = BigDecimal.ZERO; BigDecimal valorTotalDebitoParaDesconto = BigDecimal.ZERO; BigDecimal valorDebitoTotalAtualizado = BigDecimal.ZERO; // Contas Collection colecaoContasValores = obterDebitoImovelOuCliente.getColecaoContasValores(); Iterator contaValores = colecaoContasValores.iterator(); while (contaValores.hasNext()) { ContaValoresHelper contaValoresHelper = (ContaValoresHelper) contaValores.next(); valorTotalContas.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); valorTotalContas = valorTotalContas.add(contaValoresHelper.getValorTotalConta()); if (contaValoresHelper.getValorAtualizacaoMonetaria() != null && !contaValoresHelper.getValorAtualizacaoMonetaria().equals("")) { valorAtualizacaoMonetaria.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); valorAtualizacaoMonetaria = valorAtualizacaoMonetaria.add(contaValoresHelper .getValorAtualizacaoMonetaria().setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO)); } if (contaValoresHelper.getValorJurosMora() != null && !contaValoresHelper.getValorJurosMora().equals("")) { valorJurosMora.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); valorJurosMora = valorJurosMora.add(contaValoresHelper.getValorJurosMora().setScale( Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO)); } if (contaValoresHelper.getValorMulta() != null && !contaValoresHelper.getValorMulta().equals("")) { valorMulta.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); valorMulta = valorMulta.add(contaValoresHelper.getValorMulta().setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO)); } // 7. verificar se o im�vel possui conta com // referencia at� o limite if (contaValoresHelper.getConta().getReferencia() <= anoMesLimite) { existeContaParaDesconto = true; // guarda o valor total das contas com // referencia menor ou igual ao limite valorTotalContasParaDesconto = valorTotalContasParaDesconto .add(contaValoresHelper.getValorTotalConta()); valorTotalContasParaDesconto.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); // Subtrai do valor das contas os // debitosCobrados com FinanciamentoTipo // igual a // PARCELAMENTO_AGUA,PARCELAMENTO_ESGOTO,PARCELAMENTO_SERVICO,JUROS_PARCELAMENTO BigDecimal valorDebitoCobradoParcelamentoConta = pesquisarValorDebitoCobradoParcelamentoConta(contaValoresHelper .getConta().getId()); valorTotalContasParaDesconto = valorTotalContasParaDesconto .subtract(valorDebitoCobradoParcelamentoConta); } // Para c�lculo do Acrescimo de Impontualidade valorTotalAcrescimoImpontualidadeContas.setScale(Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); valorTotalAcrescimoImpontualidadeContas = valorTotalAcrescimoImpontualidadeContas.add(contaValoresHelper .getValorTotalContaValoresParcelamento()); } // Debito A Cobrar // 8. verificar se possui d�bito a cobrar com // debitoTipo igual a // PARCELAMENTO DE CONTAS,JUROS SOBRE // PARCELAMENTO,PARCEL.ACRESC.IMPONT. Object[] debitoACobrarParcelamentoImovel = this.pesquisaSomatorioValorDebitoACobrarParcelamentoImovel( imovel.getId(), anoMesLimite); // retorna o valor do somatorio dos valores dos // debitos a cobrar e a colecao de debitos // correspondente a parcelamento de contas com // referencia menor ou igual ao AnoMesLimiteMaximo BigDecimal valorDebitoACobrarParcelamento = BigDecimal.ZERO; Collection colecaoDebitoACobrarParcelamento = null; if (debitoACobrarParcelamentoImovel != null && !debitoACobrarParcelamentoImovel[0].equals(BigDecimal.ZERO)) { existeDebitoACobrarParaDesconto = true; valorDebitoACobrarParcelamento = (BigDecimal) debitoACobrarParcelamentoImovel[0]; colecaoDebitoACobrarParcelamento = (Collection) debitoACobrarParcelamentoImovel[1]; } // 6. verificar se o parcelamento mais recente do // im�vel seja da "RD 001/2007" e esteja com // situa��o normal // obtem o parcelamento mais atual do imovel com // situa��o do parcelamento Normal Parcelamento parcelamento = obterParcelamentoMaisAtualDoImovel(imovel.getId()); if (parcelamento == null || parcelamento.getResolucaoDiretoria() == null || !parcelamento.getResolucaoDiretoria().getId().equals(idRDParcelasEmAtraso)) { // 7. verificar se existe conta com refer�ncia // at� 200812 // 8. verificar se existe d�bito a cobrar com // debito tipo igual a // parcel. de contas, juros sobre parcelamento, // parcel. acresc. impont. if (existeContaParaDesconto || existeDebitoACobrarParaDesconto) { // Soma do valor das contas e do valor dos // debitos a cobrar valorDebitoTotalAtualizado = valorTotalContas.add(valorDebitoACobrarParcelamento).add( valorTotalAcrescimoImpontualidadeContas); // Soma do valor das contas com referencia // monor ou igual ao limite e do valor dos // debitos a cobrar valorTotalDebitoParaDesconto = valorTotalContasParaDesconto.add(valorDebitoACobrarParcelamento); // calculando o desconto BigDecimal percentualDesconto = new BigDecimal("0.40"); valorDesconto = valorTotalDebitoParaDesconto.multiply(percentualDesconto); valorDesconto = valorDesconto.add(valorTotalAcrescimoImpontualidadeContas); // valor do documento valorDocumento = valorDebitoTotalAtualizado.subtract(valorDesconto); if (valorDocumento.compareTo(valorLimite) >= 0) { // [SB0002]Gerar Dados das Cartas gerarDocumentoCobranca(imovel, ConstantesSistema.NAO, colecaoContasValores, null, colecaoDebitoACobrarParcelamento, valorTotalAcrescimoImpontualidadeContas, valorDesconto, null, documentoEmissaoForma, documentoTipo, null, null, empresa, null, null, valorDocumento, new Date(), null, null, resolucaoDiretoria, null, null, null); } } } } } } } getControladorBatch().encerrarUnidadeProcessamentoBatch(null, idUnidadeIniciada, false); } catch (Exception ex) { ex.printStackTrace(); getControladorBatch().encerrarUnidadeProcessamentoBatch(ex, idUnidadeIniciada, true); throw new EJBException(ex); } } /** * [UC0911] - Gerar Cartas da Campanha de Solidariedade da Crian�a para * Negocia��o a Vista * * @author Vivianne Sousa * @date 15/06/2009 */ public boolean existeCategoriaPublica(Imovel imovel) throws ControladorException { boolean existeCategoriaPublica = false; Collection colecaoImovelSubCategoria = getControladorImovel().obterColecaoImovelSubcategorias(imovel, 1); Subcategoria subcategoria = null; Categoria categoria = null; if (colecaoImovelSubCategoria != null && !colecaoImovelSubCategoria.isEmpty()) { Iterator iteretorImovelSubCategoria = colecaoImovelSubCategoria.iterator(); while (iteretorImovelSubCategoria.hasNext()) { ImovelSubcategoria imovelSubCategoria = (ImovelSubcategoria) iteretorImovelSubCategoria.next(); subcategoria = imovelSubCategoria.getComp_id().getSubcategoria(); categoria = subcategoria.getCategoria(); if (categoria.getId().equals(Categoria.PUBLICO)) { existeCategoriaPublica = true; } } } return existeCategoriaPublica; } /** * retorna cole��o de ids de Rota de um Grupo de faturamento * * [UC0911] - Gerar Cartas da Campanha de Solidariedade da Crian�a para * Negocia��o a Vista * * @author Vivianne Sousa * @date 11/06/2009 * * @return * @throws ErroRepositorioException */ public Collection pesquisarRotasPorGrupoFaturamento(Integer idGrupoFaturamento) throws ControladorException { try { return repositorioCobranca.pesquisarRotasPorGrupoFaturamento(idGrupoFaturamento); } catch (ErroRepositorioException e) { e.printStackTrace(); throw new ControladorException("erro.sistema", e); } } /** * [UC0911] - Gerar Cartas da Campanha de Solidariedade da Crian�a para * Negocia��o a Vista * * @author Vivianne Sousa * @date 17/06/2009 */ public void deletarCobrancaDocumentoECobrancaDocumentoItem(Integer idRota, Integer documentoTipo) throws ControladorException { try { repositorioCobranca.deletarCobrancaDocumentoECobrancaDocumentoItem(idRota, documentoTipo); } catch (ErroRepositorioException e) { e.printStackTrace(); throw new ControladorException("erro.sistema", e); } } /** * [UC0911] - Gerar Cartas da Campanha de Solidariedade da Crian�a para * Negocia��o a Vista * * @author: Vivianne Sousa * @date: 11/06/2009 */ public void emitirCartasCampanhaSolidariedadeCriancaParaNegociacaoAVista(Integer idGrupoFaturamento, Integer idFuncionalidadeIniciada) throws ControladorException { int idUnidadeIniciada = 0; // Cria��o do Arquivo // ======================================================================== Date dataAtual = new Date(); String nomeZip = null; nomeZip = "CARTA_CAMPANHA_CRIANCA_GRUPO_" + idGrupoFaturamento + "_" + Util.formatarData(dataAtual) + Util.formatarHoraSemDataSemDoisPontos(dataAtual); nomeZip = nomeZip.replace("/", "_"); File compactado = new File(nomeZip + ".zip"); ZipOutputStream zos = null; File leitura = new File(nomeZip + ".txt"); BufferedWriter out = null; // ======================================================================== try { /* * Registrar o in�cio do processamento da Unidade de Processamento * do Batch */ // idUnidadeIniciada = // getControladorBatch().iniciarUnidadeProcessamentoBatch(idFuncionalidadeIniciada,UnidadeProcessamento.ROTA,(idRota)); // boolean flagFimPesquisa = false; // final int quantidadeCobrancaDocumento = 1000; // int quantidadeCobrancaDocumentoInicio = 0; System.out.println("***************************************"); System.out.println("EMITIR CARTAS CAMPANHA SOLIDARIEDADE DA CRIANCA"); System.out.println("***************************************"); // Integer idGrupoFaturamento = 25; Integer anoMesFaturamento = (this.getControladorUtil().pesquisarParametrosDoSistema()).getAnoMesFaturamento(); Collection rotas = pesquisarRotasPorGrupoFaturamento(idGrupoFaturamento); Iterator iterRotas = rotas.iterator(); StringBuilder cobrancaDocumentoTxt = null; int sequencialImpressao = 0; zos = new ZipOutputStream(new FileOutputStream(compactado)); out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(leitura.getAbsolutePath()))); while (iterRotas.hasNext()) { Integer idRota = (Integer) iterRotas.next(); idUnidadeIniciada = getControladorBatch().iniciarUnidadeProcessamentoBatch(idFuncionalidadeIniciada, UnidadeProcessamento.ROTA, (idRota)); Collection colecaoCobrancaDocumento = null; Date dataVencimentoRota = pesquisarDataVencimentoRota(idRota, anoMesFaturamento, idGrupoFaturamento); // while (!flagFimPesquisa) { colecaoCobrancaDocumento = pesquisarCobrancaDocumentoParaEmitir(idRota, DocumentoTipo.CARTA_SOLIDARIEDADE_DA_CRIANCA); if (colecaoCobrancaDocumento != null && !colecaoCobrancaDocumento.isEmpty()) { System.out.println("***************************************"); System.out.println("ROTA : " + idRota + " QUANTIDADE COBRAN�A: " + colecaoCobrancaDocumento.size()); System.out.println("***************************************"); // if (colecaoCobrancaDocumento.size() < // quantidadeCobrancaDocumento) { // flagFimPesquisa = true; // } else { // quantidadeCobrancaDocumentoInicio = // quantidadeCobrancaDocumentoInicio + 1000; // } Iterator iteratorCobrancaDocumento = colecaoCobrancaDocumento.iterator(); while (iteratorCobrancaDocumento.hasNext()) { CobrancaDocumento cobrancaDocumento = null; cobrancaDocumento = (CobrancaDocumento) iteratorCobrancaDocumento.next(); String nomeClienteUsuario = null; Collection colecaoCobrancaDocumentoItemConta = null; Integer idClienteResponsavel = null; /* * Estes objetos auxiliar�o na formata��o da inscri��o * que ser� composta por informa��es do documento de * cobran�a e do im�vel a ele associado */ /* * Objeto que ser� utilizado para armazenar as * informa��es do documento de cobran�a de acordo com o * layout definido no caso de uso */ if (cobrancaDocumento != null) { sequencialImpressao++; try { nomeClienteUsuario = this.repositorioClienteImovel.pesquisarNomeClientePorImovel(cobrancaDocumento .getImovel().getId()); idClienteResponsavel = this.repositorioClienteImovel.retornaIdClienteResponsavel(cobrancaDocumento .getImovel().getId()); colecaoCobrancaDocumentoItemConta = this.repositorioCobranca .selecionarCobrancaDocumentoItemReferenteConta(cobrancaDocumento); } catch (ErroRepositorioException ex) { ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } if (colecaoCobrancaDocumentoItemConta != null && !colecaoCobrancaDocumentoItemConta.isEmpty()) { cobrancaDocumentoTxt = new StringBuilder(); // Localidade FiltroLocalidade filtroLocalidade = new FiltroLocalidade(); filtroLocalidade.adicionarParametro(new ParametroSimples(FiltroLocalidade.ID, cobrancaDocumento .getLocalidade().getId())); Collection<Localidade> colecaoLocalidades = this.getControladorUtil().pesquisar(filtroLocalidade, Localidade.class.getName()); Localidade localidade = (Localidade) Util.retonarObjetoDeColecao(colecaoLocalidades); String idGrupo = null; // id do grupo idGrupo = "" + cobrancaDocumento.getQuadra().getRota().getCobrancaGrupo().getId(); // Grupo-XX Entrega-XXXXXXXXXX String textoGrupoEntrega = "GRUPO-" + idGrupo + " ENTREGA-"; if (cobrancaDocumento.getEmpresa() != null) { textoGrupoEntrega += cobrancaDocumento.getEmpresa().getDescricao(); } cobrancaDocumentoTxt.append(Util.completaString(textoGrupoEntrega, 27)); // Inscri��o String idLocalidade = Util.adicionarZerosEsquedaNumero(3, "" + cobrancaDocumento.getLocalidade().getId()); String codigoSetorComercial = Util.adicionarZerosEsquedaNumero(3, "" + cobrancaDocumento.getCodigoSetorComercial()); String numeroQuadra = Util.adicionarZerosEsquedaNumero(3, "" + cobrancaDocumento.getNumeroQuadra()); String lote = Util.adicionarZerosEsquedaNumero(4, "" + cobrancaDocumento.getImovel().getLote()); String subLote = Util.adicionarZerosEsquedaNumero(3, "" + cobrancaDocumento.getImovel().getSubLote()); cobrancaDocumentoTxt.append(Util.completaString(idLocalidade + "." + codigoSetorComercial + "." + numeroQuadra + "." + lote + "." + subLote, 20)); // Nome da Localidade cobrancaDocumentoTxt.append(Util.completaString("" + localidade.getDescricao(), 25)); // nome cliente cobrancaDocumentoTxt.append(Util.completaString(nomeClienteUsuario, 50)); String nomeBairro = ""; String nomeMunicipio = ""; String siglaUnidadeFederecao = ""; String cepFormatado = ""; String[] parmsEnderecoImovel = getControladorEndereco().pesquisarEnderecoFormatadoDividido( cobrancaDocumento.getImovel().getId()); if (parmsEnderecoImovel != null) { // nome do bairro nomeBairro = "" + parmsEnderecoImovel[3]; // nome do municipio nomeMunicipio = "" + parmsEnderecoImovel[1]; // sigla da unidade federa��o siglaUnidadeFederecao = parmsEnderecoImovel[2]; cepFormatado = parmsEnderecoImovel[4]; } // endere�o do cliente com op��o de recebimento // via correio if (idClienteResponsavel != null) { String[] parmsEndereco = getControladorEndereco().pesquisarEnderecoClienteAbreviadoDividido( idClienteResponsavel); // endere�o sem municipio e unidade // federa��o cobrancaDocumentoTxt.append(Util.completaString(parmsEndereco[0], 50)); // nome do bairro nomeBairro = "" + parmsEndereco[3]; // nome do municipio nomeMunicipio = "" + parmsEndereco[1]; // sigla da unidade federa��o siglaUnidadeFederecao = parmsEndereco[2]; cepFormatado = parmsEndereco[4]; } else { if (parmsEnderecoImovel != null) { // endere�o sem municipio e unidade // federa��o cobrancaDocumentoTxt.append(Util.completaString(parmsEnderecoImovel[0], 50)); } else { cobrancaDocumentoTxt.append(Util.completaString("", 50)); } } // nome Bairro cobrancaDocumentoTxt.append(Util.completaString(nomeBairro, 25)); // nome municipio cobrancaDocumentoTxt.append(Util.completaString(nomeMunicipio, 24)); // sigla unidade federacao cobrancaDocumentoTxt.append(Util.completaString(siglaUnidadeFederecao, 2)); // CEP // variavel cepFormatado foi preenchido de // acordo com a existencia de // cliente responsavel String cepStr = Util.completaString(cepFormatado, 8); String cepLabeled = "CEP. " + cepStr.substring(0, 5) + "-" + cepStr.substring(5, 8); cobrancaDocumentoTxt.append(Util.completaString(cepLabeled, 14)); // Sequencial de impressao [13] String sequencialImpressaoStr = Util.adicionarZerosEsquedaNumero(6, sequencialImpressao + ""); cobrancaDocumentoTxt.append("SEQ. " + sequencialImpressaoStr.substring(0, 3) + "." + sequencialImpressaoStr.substring(3, 6)); // Matr�cula do im�vel String matriculaStr = Util.adicionarZerosEsquedaNumero(8, "" + cobrancaDocumento.getImovel().getId()); cobrancaDocumentoTxt.append(matriculaStr.substring(0, 7) + "." + matriculaStr.substring(7, 8)); // Endere�o do im�vel sem municipio e unidade // federa��o cobrancaDocumentoTxt.append(Util.completaString(parmsEnderecoImovel[0], 50)); // sequencial do documento de cobranca String sequencialStr = Util.adicionarZerosEsquedaNumero(9, "" + cobrancaDocumento.getNumeroSequenciaDocumento()); cobrancaDocumentoTxt.append(sequencialStr.substring(0, 5) + "." + sequencialStr.substring(5, 9)); // Data de vencimento String dataVencimento = Util.formatarData(dataVencimentoRota); cobrancaDocumentoTxt.append(Util.completaString(dataVencimento, 10)); // idgrupo cobrancaDocumentoTxt.append(Util.completaString(idGrupo, 2)); cobrancaDocumentoTxt.append("-"); // c�digo da firma if (cobrancaDocumento.getEmpresa() != null) { cobrancaDocumentoTxt.append(Util.adicionarZerosEsquedaNumero(2, cobrancaDocumento.getEmpresa().getId() .toString())); } String representacaoNumericaCodBarra = ""; // Obt�m a representa��o num�rica do c�digo de // barra representacaoNumericaCodBarra = this.getControladorArrecadacao().obterRepresentacaoNumericaCodigoBarra(5, cobrancaDocumento.getValorDocumento(), cobrancaDocumento.getLocalidade().getId(), cobrancaDocumento.getImovel().getId(), null, null, null, null, String.valueOf(cobrancaDocumento.getNumeroSequenciaDocumento()), cobrancaDocumento.getDocumentoTipo().getId(), null, null, null); // Formata a representa��o n�merica do c�digo de // barras String representacaoNumericaCodBarraFormatada = representacaoNumericaCodBarra.substring(0, 11) + " " + representacaoNumericaCodBarra.substring(11, 12) + " " + representacaoNumericaCodBarra.substring(12, 23) + " " + representacaoNumericaCodBarra.substring(23, 24) + " " + representacaoNumericaCodBarra.substring(24, 35) + " " + representacaoNumericaCodBarra.substring(35, 36) + " " + representacaoNumericaCodBarra.substring(36, 47) + " " + representacaoNumericaCodBarra.substring(47, 48); cobrancaDocumentoTxt.append(representacaoNumericaCodBarraFormatada); // Cria o objeto para gerar o c�digo de barras // no padr�o intercalado 2 de 5 Interleaved2of5 codigoBarraIntercalado2de5 = new Interleaved2of5(); // Recupera a representa��o n�merica do c�digo // de barras sem os d�gitos verificadores String representacaoCodigoBarrasSemDigitoVerificador = representacaoNumericaCodBarra.substring(0, 11) + representacaoNumericaCodBarra.substring(12, 23) + representacaoNumericaCodBarra.substring(24, 35) + representacaoNumericaCodBarra.substring(36, 47); cobrancaDocumentoTxt.append(codigoBarraIntercalado2de5 .encodeValue(representacaoCodigoBarrasSemDigitoVerificador)); int quantidadesContas = 0; quantidadesContas = 24; // retorna o indicador de estouro e formata o // cobran�aDocumentoTxt com os dados formatarCobrancaDocumentoItem(cobrancaDocumentoTxt, colecaoCobrancaDocumentoItemConta, quantidadesContas, cobrancaDocumento); cobrancaDocumentoTxt.append(System.getProperty("line.separator")); out.write(cobrancaDocumentoTxt.toString()); out.flush(); cobrancaDocumentoTxt = null; } colecaoCobrancaDocumentoItemConta = null; } // }// fim do la�o que verifica as 2 contas }// fim la�o while do iterator do // objeto helper countOrdem++; // mapCobrancaoDocumentoDivididas = null; // // } } // else { // flagFimPesquisa = true; // } // } else { // flagFimPesquisa = true; // } // colecaoCobrancaDocumento = null; // } getControladorBatch().encerrarUnidadeProcessamentoBatch(null, idUnidadeIniciada, false); } /* * Date dataAtual = new Date(); * * String nomeZip = null; * * nomeZip = "CARTA_CAMPANHA_CRIANCA_GRUPO_" + idGrupoFaturamento + * "_" + Util.formatarData(dataAtual) + * Util.formatarHoraSemDataSemDoisPontos(dataAtual); nomeZip = * nomeZip.replace("/", "_"); * * // pegar o arquivo, zipar pasta e arquivo e escrever no stream * try { * * System.out.println("***************************************"); * System.out.println("INICO DA CRIACAO DO ARQUIVO"); * System.out.println("***************************************"); * * if (cobrancaDocumentoTxt != null && cobrancaDocumentoTxt.length() * != 0) { * * // criar o arquivo zip File compactado = new File(nomeZip + * ".zip"); // nomeZip ZipOutputStream zos = new ZipOutputStream(new * FileOutputStream(compactado)); * * File leitura = new File(nomeZip + ".txt"); BufferedWriter out = * new BufferedWriter(new OutputStreamWriter(new * FileOutputStream(leitura.getAbsolutePath()))); * out.write(cobrancaDocumentoTxt.toString()); out.close(); * ZipUtil.adicionarArquivo(zos, leitura); * * // close the stream zos.close(); leitura.delete(); } * System.out.println("***************************************"); * System.out.println("FIM DA CRIACAO DO ARQUIVO"); * System.out.println("***************************************"); * * } catch (IOException e) { e.printStackTrace(); throw new * ControladorException("erro.sistema", e); } catch (Exception e) { * e.printStackTrace(); throw new * ControladorException("erro.sistema", e); } */ // getControladorBatch().encerrarUnidadeProcessamentoBatch(null,idUnidadeIniciada, // false); System.out.println("FIM"); } catch (Exception ex) { ex.printStackTrace(); getControladorBatch().encerrarUnidadeProcessamentoBatch(ex, idUnidadeIniciada, true); throw new EJBException(ex); } finally { try { out.close(); ZipUtil.adicionarArquivo(zos, leitura); // close the stream zos.close(); leitura.delete(); } catch (IOException e) { getControladorBatch().encerrarUnidadeProcessamentoBatch(e, idUnidadeIniciada, true); throw new EJBException(e); } } } /** * Formata a string builder de cobran�a documento de acordo com a quantidade * de itens.Caso a quantidade de itens seja maior que 24 ent�o as contas com * o ano mes referencia mais antigas ser�o somadas (os valores do item e dos * acrescimos) e formatadas na stringbuilder. * * [UC0910] Emitir Cartas da Campanha de Solidariedade da crian�a para * Negocia��o a Vista * * @author Vivianne Sousa * @date 17/06/2009 * * @return * @throws ControladorException */ protected int formatarCobrancaDocumentoItem(StringBuilder cobrancaDocumentoTxt, Collection colecaoCobrancaDocumentoItemConta, int quantidadeContas, CobrancaDocumento cobrancaDocumento) throws ControladorException { int indicadorEstouro = 0; int complementoEspecosBranco = 0; BigDecimal somaValorItem = new BigDecimal(0); BigDecimal somaValorAcrescimos = new BigDecimal(0); BigDecimal somaValorTotal = new BigDecimal(0); complementoEspecosBranco = quantidadeContas * 63; int countImpressao = colecaoCobrancaDocumentoItemConta.size() - (quantidadeContas - 1); if (colecaoCobrancaDocumentoItemConta.size() > quantidadeContas) { indicadorEstouro = 1; CalcularValorDataVencimentoAnteriorHelper calcularValorDataVencimentoAnteriorHelper = this.calcularValorDataVencimentoAnterior( colecaoCobrancaDocumentoItemConta, quantidadeContas); // Ano mes de referencia da conta anterior cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda("AT� ", 11)); complementoEspecosBranco = complementoEspecosBranco - 11; // data de vencimento anterior cobrancaDocumentoTxt.append(Util.completaString( Util.formatarData(calcularValorDataVencimentoAnteriorHelper.getDataVencimentoAnterior()), 10)); complementoEspecosBranco = complementoEspecosBranco - 10; String valorItemAnterior = Util.formataBigDecimal(calcularValorDataVencimentoAnteriorHelper.getValorAnterior(), 2, true); // Valor do item anterior cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(valorItemAnterior, 14)); complementoEspecosBranco = complementoEspecosBranco - 14; somaValorItem = somaValorItem.add(calcularValorDataVencimentoAnteriorHelper.getValorAnterior()); String valorAcrescimosAnterior = Util.formataBigDecimal(calcularValorDataVencimentoAnteriorHelper.getValorAcrescimosAnterior(), 2, true); // Valor dos encargos anterior cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(valorAcrescimosAnterior, 14)); complementoEspecosBranco = complementoEspecosBranco - 14; somaValorAcrescimos = somaValorAcrescimos.add(calcularValorDataVencimentoAnteriorHelper.getValorAcrescimosAnterior()); BigDecimal valorTotal = calcularValorDataVencimentoAnteriorHelper.getValorAcrescimosAnterior().add( calcularValorDataVencimentoAnteriorHelper.getValorAnterior()); String valorTotalConta = Util.formataBigDecimal(valorTotal, 2, true); // Valor dos encargos anterior cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(valorTotalConta, 14)); complementoEspecosBranco = complementoEspecosBranco - 14; somaValorTotal = somaValorTotal.add(valorTotal); } if (countImpressao <= 1) { Iterator iteratorColecaoCobrancaDocumentoItem = colecaoCobrancaDocumentoItemConta.iterator(); CobrancaDocumentoItem cobrancaDocumentoItem = null; while (iteratorColecaoCobrancaDocumentoItem.hasNext()) { cobrancaDocumentoItem = (CobrancaDocumentoItem) iteratorColecaoCobrancaDocumentoItem.next(); // Ano mes de referencia da conta cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda( Util.formatarAnoMesParaMesAno(cobrancaDocumentoItem.getContaGeral().getConta().getReferencia()), 11)); complementoEspecosBranco = complementoEspecosBranco - 11; // data de vencimento cobrancaDocumentoTxt.append(Util.completaString( Util.formatarData(cobrancaDocumentoItem.getContaGeral().getConta().getDataVencimentoConta()), 10)); complementoEspecosBranco = complementoEspecosBranco - 10; String valorItem = Util.formataBigDecimal(cobrancaDocumentoItem.getValorItemCobrado(), 2, true); // Valor do item cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(valorItem, 14)); complementoEspecosBranco = complementoEspecosBranco - 14; somaValorItem = somaValorItem.add(cobrancaDocumentoItem.getValorItemCobrado()); String valorAcrescimos = Util.formataBigDecimal(cobrancaDocumentoItem.getValorAcrescimos(), 2, true); // Valor dos encargos cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(valorAcrescimos, 14)); complementoEspecosBranco = complementoEspecosBranco - 14; somaValorAcrescimos = somaValorAcrescimos.add(cobrancaDocumentoItem.getValorAcrescimos()); String valorTotalConta = Util.formataBigDecimal( cobrancaDocumentoItem.getValorAcrescimos().add(cobrancaDocumentoItem.getValorItemCobrado()), 2, true); // Valor total da conta cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(valorTotalConta, 14)); complementoEspecosBranco = complementoEspecosBranco - 14; somaValorTotal = somaValorTotal.add(cobrancaDocumentoItem.getValorAcrescimos().add( cobrancaDocumentoItem.getValorItemCobrado())); } } else { CobrancaDocumentoItem cobrancaDocumentoItem = null; while (countImpressao < colecaoCobrancaDocumentoItemConta.size()) { cobrancaDocumentoItem = (CobrancaDocumentoItem) ((List) colecaoCobrancaDocumentoItemConta).get(countImpressao); // Ano mes de referencia da conta cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda( Util.formatarAnoMesParaMesAno(cobrancaDocumentoItem.getContaGeral().getConta().getReferencia()), 11)); complementoEspecosBranco = complementoEspecosBranco - 11; // data de vencimento cobrancaDocumentoTxt.append(Util.completaString( Util.formatarData(cobrancaDocumentoItem.getContaGeral().getConta().getDataVencimentoConta()), 10)); complementoEspecosBranco = complementoEspecosBranco - 10; String valorItem = Util.formataBigDecimal(cobrancaDocumentoItem.getValorItemCobrado(), 2, true); // Valor do item cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(valorItem, 14)); complementoEspecosBranco = complementoEspecosBranco - 14; somaValorItem = somaValorItem.add(cobrancaDocumentoItem.getValorItemCobrado()); String valorAcrescimos = Util.formataBigDecimal(cobrancaDocumentoItem.getValorAcrescimos(), 2, true); // Valor dos encargos cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(valorAcrescimos, 14)); complementoEspecosBranco = complementoEspecosBranco - 14; somaValorAcrescimos = somaValorAcrescimos.add(cobrancaDocumentoItem.getValorAcrescimos()); String valorTotalConta = Util.formataBigDecimal( cobrancaDocumentoItem.getValorAcrescimos().add(cobrancaDocumentoItem.getValorItemCobrado()), 2, true); // Valor total da conta cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(valorTotalConta, 14)); complementoEspecosBranco = complementoEspecosBranco - 14; somaValorTotal = somaValorTotal.add(cobrancaDocumentoItem.getValorAcrescimos().add( cobrancaDocumentoItem.getValorItemCobrado())); countImpressao++; } } cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda("", complementoEspecosBranco)); // 2.15.3 soma dos valores item String somaValorItemStr = Util.formataBigDecimal(somaValorItem, 2, true); cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(somaValorItemStr, 14)); // //2.15.4 valor historico asteriscos // cobrancaDocumentoTxt.append(Util.completaStringComAsteriscos(somaValorItemStr, // 14)); // 2.15.5 soma dos valores acrescimos (valor encargos) String somaValorAcrescimosStr = Util.formataBigDecimal(somaValorAcrescimos, 2, true); cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(somaValorAcrescimosStr, 14)); // 2.15.6 soma do valor total da conta + soma do valor dos encargos da // conta String somaValorTotalStr = Util.formataBigDecimal(somaValorTotal, 2, true); cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(somaValorTotalStr, 14)); // //2.15.7. Somat�rio dos D�bitos a Cobrar (CDIT_VLITEMCOBRADO da // tabela COBRANCA_DOCUMENTO_ITEM cujo DBAC_ID esteja preenchido); // BigDecimal somaValorItemDebito = // selecionarValorTotalCobrancaDocumentoItemReferenteDebito(cobrancaDocumento); // String somaValorItemDebitoStr = // Util.formataBigDecimal(somaValorItemDebito, 2, true); // cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(somaValorItemDebitoStr, // 14)); // // //2.15.8 Somat�rio do Valor Total da Conta + Valor dos D�bitos a // Cobrar; // BigDecimal somaValorTotalContaAcrescimosDebitos = // somaValorTotal.add(somaValorItemDebito); // String somaValorTotalContaAcrescimosDebitosStr = // Util.formataBigDecimal(somaValorTotalContaAcrescimosDebitos, 2, // true); // cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(somaValorTotalContaAcrescimosDebitosStr, // 14)); // // //2.15.9 Valor dos Descontos (CBDO_VLDESCONTO da tabela // DOCUMENTO_COBRANCA); // BigDecimal valorDescontoTotal = BigDecimal.ZERO; // if(cobrancaDocumento.getValorDesconto() != null){ // valorDescontoTotal = cobrancaDocumento.getValorDesconto(); // BigDecimal valorDesconto = // valorDescontoTotal.subtract(somaValorAcrescimos); // String valorDescontoStr = Util.formataBigDecimal(valorDesconto, 2, // true); // cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(valorDescontoStr, // 14)); // }else{ // cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda("", // 14)); // } // // System.out.println("somaValorItem " + somaValorItem); // System.out.println("somaValorAcrescimos " + somaValorAcrescimos); // System.out.println("somaValorTotal " + somaValorTotal); // // //2.15.10 Valor Total dos Descontos (Somat�rio dos Encargos + os // Descontos); // String valorDescontoTotalStr = // Util.formataBigDecimal(valorDescontoTotal, 2, true); // cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(valorDescontoTotalStr, // 14)); // // //2.15.11 Valor para pagamento a vista // cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(Util.formataBigDecimal(cobrancaDocumento.getValorDocumento(), // 2, true), 14)); return indicadorEstouro; } /** * Seleciona os itens do documento de cobran�a correspondentes a debito a * cobrar * * [UC0910] Emitir Cartas da Campanha de Solidariedade da crian�a para * Negocia��o a Vista * * @author Vivianne Sousa * @data 17/06/2009 */ public BigDecimal selecionarValorTotalCobrancaDocumentoItemReferenteDebito(CobrancaDocumento cobrancaDocumento) throws ControladorException { try { return repositorioCobranca.selecionarValorTotalCobrancaDocumentoItemReferenteDebito(cobrancaDocumento); } catch (ErroRepositorioException e) { e.printStackTrace(); throw new ControladorException("erro.sistema", e); } } /** * [UC0910] Emitir Cartas da Campanha de Solidariedade da crian�a para * Negocia��o a Vista * * O sistema ordena a lista de documentos de cobran�a por empresa (EMPR_ID * da tabela DOCUMENTO_COBRANCA), localidade (LOCA_ID), setor * (CBDO_CDSETORCOMERCIAL), quadra (CBDO_NNQUADRA), lote e sublote * (IMOV_NNLOTE e IMOV_SUBLOTE da tabela IMOVEL com IMOV_ID da tabela * DOCUMENTO_COBRANCA) * * @author Vivianne Sousa * @data 17/06/2009 * * @param idRota * , idDocumentoTipo * @return Collection<CobrancaDocumento> */ public Collection<CobrancaDocumento> pesquisarCobrancaDocumentoParaEmitir(Integer idRota, Integer idDocumentoTipo) throws ControladorException { try { return repositorioCobranca.pesquisarCobrancaDocumentoParaEmitir(idRota, idDocumentoTipo); } catch (ErroRepositorioException e) { e.printStackTrace(); throw new ControladorException("erro.sistema", e); } } /*** * [UC0904] Gerar TXT Inspe��o de Ligacoes * * @author Ivan Sergio * @data 18/05/2009 * * @param cobrancaAcaoAtividadeCronograma * @param cobrancaAcaoAtividadeComando * @param dataAtualPesquisa * @param acaoCobranca * @param cobrancaGrupo * @param cobrancaCriterio * @throws ControladorException */ public void gerarTxtInspecaoLigacoes(CobrancaAcaoAtividadeCronograma cobrancaAcaoAtividadeCronograma, CobrancaAcaoAtividadeComando cobrancaAcaoAtividadeComando, Date dataAtualPesquisa, CobrancaAcao acaoCobranca, CobrancaGrupo cobrancaGrupo, CobrancaCriterio cobrancaCriterio) throws ControladorException { SistemaParametro sistemaParametro = this.getControladorUtil().pesquisarParametrosDoSistema(); System.out.println("***********************************"); System.out.println("INICIO FISCALIZA��O INATIVO COMPESA"); System.out.println("***********************************"); boolean flagFimPesquisa = false; final int quantidadeCobrancaDocumento = 1000; int quantidadeCobrancaDocumentoInicio = 0; StringBuilder cobrancaDocumentoTxt = new StringBuilder(); int sequencialImpressao = 0; Map<Integer, Integer> mapAtualizaSequencial = null; Integer idCronogramaAtividadeAcaoCobranca = null; Integer idComandoAtividadeAcaoCobranca = null; Integer idAcaoCobranca = null; if (cobrancaAcaoAtividadeCronograma != null && cobrancaAcaoAtividadeCronograma.getId() != null) { idCronogramaAtividadeAcaoCobranca = cobrancaAcaoAtividadeCronograma.getId(); } if (cobrancaAcaoAtividadeComando != null && cobrancaAcaoAtividadeComando.getId() != null) { idComandoAtividadeAcaoCobranca = cobrancaAcaoAtividadeComando.getId(); } if (acaoCobranca != null && acaoCobranca.getId() != null) { idAcaoCobranca = acaoCobranca.getId(); } while (!flagFimPesquisa) { // map que armazena o sequencial e o numero da // conta para no final atualizar todos os // sequencias mapAtualizaSequencial = new HashMap(); Collection colecaoEmitirDocumentoCobranca = null; try { colecaoEmitirDocumentoCobranca = repositorioCobranca.pesquisarCobrancaDocumentoOrdemCorte( idCronogramaAtividadeAcaoCobranca, idComandoAtividadeAcaoCobranca, dataAtualPesquisa, idAcaoCobranca, quantidadeCobrancaDocumentoInicio); } catch (ErroRepositorioException ex) { ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } if (colecaoEmitirDocumentoCobranca != null && !colecaoEmitirDocumentoCobranca.equals("")) { System.out.println("********************"); System.out.println("QUANTIDADE COBRAN�A:" + colecaoEmitirDocumentoCobranca.size()); System.out.println("********************"); if (colecaoEmitirDocumentoCobranca.size() < quantidadeCobrancaDocumento) { flagFimPesquisa = true; } else { quantidadeCobrancaDocumentoInicio = quantidadeCobrancaDocumentoInicio + 1000; } Iterator iteratorColecaoCobrancaDocumento = colecaoEmitirDocumentoCobranca.iterator(); EmitirDocumentoCobrancaHelper emitirDocumentoCobrancaHelper = null; while (iteratorColecaoCobrancaDocumento.hasNext()) { emitirDocumentoCobrancaHelper = (EmitirDocumentoCobrancaHelper) iteratorColecaoCobrancaDocumento.next(); String nomeCliente = null; // Collection colecaoCobrancaDocumentoItem = null; /* * Estes objetos auxiliar�o na formata��o da inscri��o que * ser� composta por informa��es do documento de cobran�a e * do im�vel a ele associado */ Imovel inscricao = null; SetorComercial setorComercialInscricao = null; Quadra quadraInscricao = null; Localidade localidade = null; sequencialImpressao++; if (emitirDocumentoCobrancaHelper != null) { try { nomeCliente = this.repositorioClienteImovel.pesquisarNomeClientePorImovel(emitirDocumentoCobrancaHelper .getIdImovel()); CobrancaDocumento cobrancaDocumento = new CobrancaDocumento(); cobrancaDocumento.setId(emitirDocumentoCobrancaHelper.getIdDocumentoCobranca()); // colecaoCobrancaDocumentoItem = // this.repositorioCobranca // .selecionarCobrancaDocumentoItemReferenteConta(cobrancaDocumento); cobrancaDocumento = null; } catch (ErroRepositorioException ex) { ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } // ****************************************************** // Inscricao do Imovel quadraInscricao = new Quadra(); setorComercialInscricao = new SetorComercial(); localidade = new Localidade(); inscricao = new Imovel(); quadraInscricao.setNumeroQuadra(emitirDocumentoCobrancaHelper.getNumeroQuadra()); setorComercialInscricao.setCodigo(emitirDocumentoCobrancaHelper.getCodigoSetorComercial()); localidade.setId(emitirDocumentoCobrancaHelper.getIdLocalidade()); inscricao.setLocalidade(localidade); inscricao.setSetorComercial(setorComercialInscricao); inscricao.setQuadra(quadraInscricao); inscricao.setLote(emitirDocumentoCobrancaHelper.getLote()); inscricao.setSubLote(emitirDocumentoCobrancaHelper.getSubLote()); cobrancaDocumentoTxt.append(Util.completaString(inscricao.getInscricaoFormatada(), 20)); // ****************************************************** // Nome do Cliente Usuario cobrancaDocumentoTxt.append(Util.completaString(nomeCliente, 50)); // ****************************************************** // Matricula do Imovel String matriculaImovelFormatada = Util.adicionarZerosEsquedaNumero(8, emitirDocumentoCobrancaHelper.getIdImovel() .toString()); matriculaImovelFormatada = matriculaImovelFormatada.substring(0, 7) + "." + matriculaImovelFormatada.substring(7, 8); cobrancaDocumentoTxt.append(matriculaImovelFormatada); // ****************************************************** // Endereco do Imovel String nomeBairro = ""; String nomeMunicipio = ""; String siglaUnidadeFederecao = ""; String cepFormatado = ""; String[] parmsEnderecoImovel = getControladorEndereco().pesquisarEnderecoFormatadoDividido( emitirDocumentoCobrancaHelper.getIdImovel()); if (parmsEnderecoImovel != null) { // Endere�o sem Municipio e Unidade Federa��o cobrancaDocumentoTxt.append(Util.completaString(parmsEnderecoImovel[0], 100)); // Nome do Municipio nomeMunicipio = "" + parmsEnderecoImovel[1]; // Sigla da Unidade Federa��o siglaUnidadeFederecao = parmsEnderecoImovel[2]; // Nome do Bairro nomeBairro = "" + parmsEnderecoImovel[3]; // CEP Formatado cepFormatado = parmsEnderecoImovel[4]; } else { cobrancaDocumentoTxt.append(Util.completaString("", 100)); } // Bairro cobrancaDocumentoTxt.append(Util.completaString(nomeBairro, 30)); // Municipio cobrancaDocumentoTxt.append(Util.completaString(nomeMunicipio, 30)); // UF cobrancaDocumentoTxt.append(Util.completaString(siglaUnidadeFederecao, 2)); // CEP String cepStr = Util.completaString(cepFormatado, 8); cobrancaDocumentoTxt.append(cepStr.substring(0, 5) + "-" + cepStr.substring(5, 8)); // ****************************************************** // CRC2574 alterado por Vivianne Sousa 19/08/2009 - // Francisco // Numero da OS cobrancaDocumentoTxt.append(Util.completaString("" + emitirDocumentoCobrancaHelper.getNumeroOS(), 9)); // "" // +emitirDocumentoCobrancaHelper.getNumeroSequenciaDocumento(), // 9)); // ****************************************************** // Categorias // Quantidades de economias por categoria: 1� // RESID�NCIAL 2� COMERCIAL 3� INDUSTRIAL 4� P�BLICA Imovel imovel = new Imovel(); imovel.setId(emitirDocumentoCobrancaHelper.getIdImovel()); Collection colecaoCategorias = getControladorImovel().obterQuantidadeEconomiasCategoria(imovel); imovel = null; String qtdResidencial = ""; String qtdComercial = ""; String qtdIndustrial = ""; String qtdPublico = ""; Integer totalCategoria = 0; if (colecaoCategorias != null && !colecaoCategorias.isEmpty()) { Iterator iteratorColecaoCategorias = colecaoCategorias.iterator(); Categoria categoria = null; while (iteratorColecaoCategorias.hasNext()) { categoria = (Categoria) iteratorColecaoCategorias.next(); if (categoria.getId().equals(Categoria.RESIDENCIAL)) { qtdResidencial = "" + categoria.getQuantidadeEconomiasCategoria(); totalCategoria += categoria.getQuantidadeEconomiasCategoria(); } else if (categoria.getId().equals(Categoria.COMERCIAL)) { qtdComercial = "" + categoria.getQuantidadeEconomiasCategoria(); totalCategoria += categoria.getQuantidadeEconomiasCategoria(); } else if (categoria.getId().equals(Categoria.INDUSTRIAL)) { qtdIndustrial = "" + categoria.getQuantidadeEconomiasCategoria(); totalCategoria += categoria.getQuantidadeEconomiasCategoria(); } else if (categoria.getId().equals(Categoria.PUBLICO)) { qtdPublico = "" + categoria.getQuantidadeEconomiasCategoria(); totalCategoria += categoria.getQuantidadeEconomiasCategoria(); } } } colecaoCategorias = null; // Residencial if (!qtdResidencial.equals("")) cobrancaDocumentoTxt.append(Util.adicionarZerosEsquedaNumero(3, qtdResidencial)); else cobrancaDocumentoTxt.append(Util.completaString("", 3)); // Comercial if (!qtdComercial.equals("")) cobrancaDocumentoTxt.append(Util.adicionarZerosEsquedaNumero(3, qtdComercial)); else cobrancaDocumentoTxt.append(Util.completaString("", 3)); // Industrial if (!qtdIndustrial.equals("")) cobrancaDocumentoTxt.append(Util.adicionarZerosEsquedaNumero(3, qtdIndustrial)); else cobrancaDocumentoTxt.append(Util.completaString("", 3)); // Publico if (!qtdPublico.equals("")) cobrancaDocumentoTxt.append(Util.adicionarZerosEsquedaNumero(3, qtdPublico)); else cobrancaDocumentoTxt.append(Util.completaString("", 3)); // ****************************************************** // Total Categorias cobrancaDocumentoTxt.append(Util.adicionarZerosEsquedaNumero(3, totalCategoria.toString())); // ****************************************************** // Data de Emissao if (emitirDocumentoCobrancaHelper.getEmissao() != null) cobrancaDocumentoTxt.append(Util.formatarData(emitirDocumentoCobrancaHelper.getEmissao())); else cobrancaDocumentoTxt.append(Util.completaString("", 10)); // ****************************************************** // Perfil do Cliente cobrancaDocumentoTxt.append(Util.completaString(emitirDocumentoCobrancaHelper.getDescricaoImovelPerfil(), 20)); // ****************************************************** // Ultima Alteracao if (emitirDocumentoCobrancaHelper.getDtImovelUltimaAlteracao() != null) { cobrancaDocumentoTxt.append(Util.formatarData(emitirDocumentoCobrancaHelper.getDtImovelUltimaAlteracao())); } else { cobrancaDocumentoTxt.append(Util.completaString("", 10)); } // ****************************************************** // Grupo de Cobranca cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda( "" + emitirDocumentoCobrancaHelper.getIdCobrancaGrupo(), 2)); // ****************************************************** // Sequencial de Impressao cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda( Util.retornaSequencialFormatado(sequencialImpressao), 7)); // ****************************************************** // Codigo da Situacao da Ligacao de Agua cobrancaDocumentoTxt .append(Util.completaString(emitirDocumentoCobrancaHelper.getDescricaoSituacaoLigacaoAgua(), 20)); // ****************************************************** // Consumo Medio Integer consumoMedio = getControladorMicromedicao().pesquisarConsumoMedioImovel( emitirDocumentoCobrancaHelper.getIdImovel()); if (consumoMedio != null) cobrancaDocumentoTxt.append(Util.completaString(consumoMedio.toString(), 28)); else cobrancaDocumentoTxt.append(Util.completaString("", 28)); // ****************************************************** // Situacao da Ligacao de Esgoto cobrancaDocumentoTxt.append(Util.completaString(emitirDocumentoCobrancaHelper.getDescricaoSituacaoLigacaoEsgoto(), 20)); // ****************************************************** // Consumo Fixo de Esgoto Integer consumoMinimoEsgoto = getControladorLigacaoEsgoto().recuperarConsumoMinimoEsgoto( emitirDocumentoCobrancaHelper.getIdImovel()); if (consumoMinimoEsgoto != null) cobrancaDocumentoTxt.append(Util.completaString(consumoMinimoEsgoto.toString(), 10)); else cobrancaDocumentoTxt.append(Util.completaString("", 10)); // ****************************************************** // Dados da Ligacao de Agua Object[] dadosLigacaoAgua = null; dadosLigacaoAgua = getControladorAtendimentoPublico().pesquisarDadosLigacaoAgua( emitirDocumentoCobrancaHelper.getIdImovel()); if (dadosLigacaoAgua != null) { if (dadosLigacaoAgua[1] != null) // ****************************************************** // Data do Corte cobrancaDocumentoTxt.append(Util.completaString(Util.formatarData((Date) dadosLigacaoAgua[1]), 10)); else cobrancaDocumentoTxt.append(Util.completaString("", 10)); if (dadosLigacaoAgua[2] != null) // ****************************************************** // Data Supressao cobrancaDocumentoTxt.append(Util.completaString(Util.formatarData((Date) dadosLigacaoAgua[2]), 10)); else cobrancaDocumentoTxt.append(Util.completaString("", 10)); } else { cobrancaDocumentoTxt.append(Util.completaString("", 20)); } // ****************************************************** // Origem String origem = ""; Integer anormalidadeLeitura = emitirDocumentoCobrancaHelper.getIdLeituraAnormalidade(); if (anormalidadeLeitura == null) { origem = "AUTOM�TICO"; } else if (anormalidadeLeitura == LeituraAnormalidade.INDICADOR_LIGADO_CLANDESTINO_AGUA || anormalidadeLeitura == LeituraAnormalidade.INDICADOR_LIGADO_CLANDESTINO_ESGOTO || anormalidadeLeitura == LeituraAnormalidade.INDICADOR_LIGADO_CLANDESTINO_AGUA_ESGOTO) { origem = "RECADASTRAMENTO"; } else { origem = "LEITURA"; } cobrancaDocumentoTxt.append(Util.completaString(origem, 15)); // ****************************************************** // Ocorrencia cobrancaDocumentoTxt.append(Util.completaString(emitirDocumentoCobrancaHelper.getDescricaoLeitAnormalidade(), 34)); // ****************************************************** // Data da Posicao do Debito String anoMesValidade = sistemaParametro.getAnoMesArrecadacao().toString(); Calendar calendario = new GregorianCalendar(); if (anoMesValidade != null && !anoMesValidade.equals("")) { calendario.set(Calendar.YEAR, new Integer(anoMesValidade.substring(0, 4)).intValue()); calendario.set(Calendar.MONTH, new Integer(anoMesValidade.substring(4, 6)).intValue() - 1); calendario.set(Calendar.DAY_OF_MONTH, calendario.getActualMaximum(Calendar.DAY_OF_MONTH)); cobrancaDocumentoTxt.append(Util.formatarData(calendario.getTime())); } else { cobrancaDocumentoTxt.append(Util.completaString("", 10)); } // ****************************************************** // Valor total do documento de cobran�a cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda( Util.formatarMoedaReal(emitirDocumentoCobrancaHelper.getValorDocumento()), 18)); // ****************************************************** // Executor - Empresa String executor = ""; FiltroEmpresa filtroEmpresa = new FiltroEmpresa(); filtroEmpresa.adicionarParametro(new ParametroSimples(FiltroEmpresa.ID, emitirDocumentoCobrancaHelper .getIdEmpresa())); Collection<Empresa> colecaoEmpresa = getControladorUtil().pesquisar(filtroEmpresa, Empresa.class.getName()); if (colecaoEmpresa != null && !colecaoEmpresa.isEmpty()) { Empresa empresa = (Empresa) Util.retonarObjetoDeColecao(colecaoEmpresa); executor = empresa.getDescricaoAbreviada(); } cobrancaDocumentoTxt.append(Util.completaString(executor, 10)); // ****************************************************** // CAS - Nome da Unidade de Negocio String nomeUnidadeNegocio = ""; Integer idUnidadeNegocio = getControladorLocalidade().pesquisarIdUnidadeNegocioParaLocalidade( emitirDocumentoCobrancaHelper.getIdLocalidade()); if (idUnidadeNegocio != null) { FiltroUnidadeNegocio filtroUnidadeNegocio = new FiltroUnidadeNegocio(); filtroUnidadeNegocio.adicionarParametro(new ParametroSimples(FiltroUnidadeNegocio.ID, idUnidadeNegocio)); UnidadeNegocio unidadeNegocio = (UnidadeNegocio) Util.retonarObjetoDeColecao(getControladorUtil().pesquisar( filtroUnidadeNegocio, UnidadeNegocio.class.getName())); if (unidadeNegocio != null) nomeUnidadeNegocio = unidadeNegocio.getNome(); } cobrancaDocumentoTxt.append(Util.completaString(nomeUnidadeNegocio, 50)); // ****************************************************** // Dados do Cliente Imovel String cpfcnpj = ""; String rg = ""; String uf = ""; String ddd = ""; String numeroFone = ""; String ramal = ""; String tipo = ""; FiltroClienteImovel filtroClienteImovel = new FiltroClienteImovel(); // Parametros filtroClienteImovel.adicionarParametro(new ParametroSimples(FiltroClienteImovel.IMOVEL_ID, emitirDocumentoCobrancaHelper.getIdImovel())); filtroClienteImovel.adicionarParametro(new ParametroSimples(FiltroClienteImovel.CLIENTE_RELACAO_TIPO_ID, ClienteRelacaoTipo.USUARIO)); filtroClienteImovel.adicionarParametro(new ParametroNulo(FiltroClienteImovel.DATA_FIM_RELACAO)); // filtroClienteImovel.adicionarParametro(new // ParametroSimples( // FiltroClienteImovel.CLIENTE_FONE_INDICADOR_TELEFONE_PADRAO, // ClienteFone.INDICADOR_FONE_PADRAO)); // Entidades filtroClienteImovel.adicionarCaminhoParaCarregamentoEntidade(FiltroClienteImovel.CLIENTE); filtroClienteImovel.adicionarCaminhoParaCarregamentoEntidade(FiltroClienteImovel.ORGAO_EXPEDIDOR_RG); filtroClienteImovel.adicionarCaminhoParaCarregamentoEntidade(FiltroClienteImovel.UNIDADE_FEDERACAO); filtroClienteImovel.adicionarCaminhoParaCarregamentoEntidade(FiltroClienteImovel.CLIENTE_FONE); // filtroClienteImovel.adicionarCaminhoParaCarregamentoEntidade(FiltroClienteImovel.FONE_TIPO); // Realiza a pesquisa Collection<ClienteImovel> colecaoClienteImovel = getControladorUtil().pesquisar(filtroClienteImovel, ClienteImovel.class.getName()); if (colecaoClienteImovel != null && !colecaoClienteImovel.isEmpty()) { ClienteImovel clienteImovel = (ClienteImovel) Util.retonarObjetoDeColecao(colecaoClienteImovel); if (clienteImovel.getCliente() != null) { Cliente cliente = (Cliente) clienteImovel.getCliente(); // ******************************************************** // CPF/CNPJ if (cliente.getCpf() != null) { cpfcnpj = cliente.getCpfFormatado(); } else if (cliente.getCnpj() != null) { cpfcnpj = cliente.getCnpjFormatado(); } // ******************************************************** // RG if (cliente.getRg() != null) { rg = cliente.getRg(); if (cliente.getOrgaoExpedidorRg() != null) { rg += " " + cliente.getOrgaoExpedidorRg().getDescricaoAbreviada(); } } // ******************************************************** // Unidade Federacao if (cliente.getUnidadeFederacao() != null) { uf = cliente.getUnidadeFederacao().getSigla(); } // ******************************************************** // Cliente Fones if (cliente.getClienteFones() != null) { Iterator iClienteFone = cliente.getClienteFones().iterator(); ClienteFone clienteFone = new ClienteFone(); boolean achou = false; while (iClienteFone.hasNext() & !achou) { clienteFone = (ClienteFone) iClienteFone.next(); if (clienteFone.getIndicadorTelefonePadrao() != null && clienteFone.getIndicadorTelefonePadrao().equals(ClienteFone.INDICADOR_FONE_PADRAO)) { // ******************************************************** // DDD ddd = clienteFone.getDdd(); // ******************************************************** // Numero Fone numeroFone = clienteFone.getTelefone(); // ******************************************************** // Ramal ramal = clienteFone.getRamal(); // ******************************************************** // Tipo if (clienteFone.getFoneTipo() != null) { FoneTipo foneTipo = (FoneTipo) clienteFone.getFoneTipo(); if (foneTipo.getId().equals(FoneTipo.RESIDENCIAL)) { tipo = "RES"; } else if (foneTipo.getId().equals(FoneTipo.COMERCIAL)) { tipo = "COM"; } else if (foneTipo.getId().equals(FoneTipo.CELULAR)) { tipo = "CEL"; } else if (foneTipo.getId().equals(FoneTipo.FAX)) { tipo = "FAX"; } } achou = true; } } } cobrancaDocumentoTxt.append(Util.completaString(cpfcnpj, 18)); cobrancaDocumentoTxt.append(Util.completaString(rg, 20)); cobrancaDocumentoTxt.append(Util.completaString(uf, 2)); cobrancaDocumentoTxt.append(Util.completaString(ddd, 3)); cobrancaDocumentoTxt.append(Util.completaString(numeroFone, 8)); cobrancaDocumentoTxt.append(Util.completaString(ramal, 4)); cobrancaDocumentoTxt.append(Util.completaString(tipo, 3)); } else { cobrancaDocumentoTxt.append(Util.completaString("", 58)); } } else { cobrancaDocumentoTxt.append(Util.completaString("", 58)); } // ****************************************************** // Servicos/Atualizacoes BigDecimal totalServicosAtualizacoes = null; try { totalServicosAtualizacoes = repositorioCobranca.pesquisarServioAtualizacao(emitirDocumentoCobrancaHelper .getIdDocumentoCobranca()); if (totalServicosAtualizacoes == null) totalServicosAtualizacoes = new BigDecimal("0.00"); } catch (ErroRepositorioException ex) { ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda( Util.formatarMoedaReal(totalServicosAtualizacoes), 17)); cobrancaDocumentoTxt.append(System.getProperty("line.separator")); mapAtualizaSequencial.put(emitirDocumentoCobrancaHelper.getIdDocumentoCobranca(), sequencialImpressao); // colecaoCobrancaDocumentoItem = null; } emitirDocumentoCobrancaHelper = null; } } else { flagFimPesquisa = true; } try { repositorioCobranca.atualizarSequencialCobrancaDocumentoImpressao(mapAtualizaSequencial); } catch (ErroRepositorioException e) { throw new ControladorException("erro.sistema", e); } mapAtualizaSequencial = null; colecaoEmitirDocumentoCobranca = null; } System.out.println("********************************"); System.out.println("FIM FISCALIZA��O INATIVO COMPESA"); System.out.println("********************************"); Date dataAtual = new Date(); String nomeZip = null; if (idAcaoCobranca.equals(CobrancaAcao.INSPECAO_LIGACOES)) { if (idCronogramaAtividadeAcaoCobranca != null) { nomeZip = "ORDEM_INSPECAO_LIGACOES_" + cobrancaAcaoAtividadeComando.getCobrancaGrupo().getId() + "_" + Util.formatarData(dataAtual) + Util.formatarHoraSemDataSemDoisPontos(dataAtual); } } if (idCronogramaAtividadeAcaoCobranca == null) { String descricaoAbrevDocumentoTipo = ""; if (acaoCobranca != null && acaoCobranca.getDocumentoTipo() != null) { if (acaoCobranca.getDocumentoTipo().getId().equals(DocumentoTipo.INSPECAO_DE_LIGACOES)) { descricaoAbrevDocumentoTipo = "ORDEM_INSPECAO_DE_LIGACOES"; } else { descricaoAbrevDocumentoTipo = acaoCobranca.getDocumentoTipo().getDescricaoAbreviado(); } } String tituloComandoEventual = cobrancaAcaoAtividadeComando.getDescricaoTitulo(); nomeZip = descricaoAbrevDocumentoTipo + " " + tituloComandoEventual + " " + Util.formatarData(dataAtual) + Util.formatarHoraSemDataSemDoisPontos(dataAtual); nomeZip = nomeZip.replace("/", "_"); nomeZip = nomeZip.replace(" ", "_"); } nomeZip = nomeZip.replace("/", "_"); try { if (cobrancaDocumentoTxt != null && cobrancaDocumentoTxt.length() != 0) { cobrancaDocumentoTxt.append("\u0004"); // criar o arquivo zip File compactado = new File(nomeZip + ".zip"); // nomeZip ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(compactado)); File leitura = new File(nomeZip + ".txt"); BufferedWriter out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(leitura.getAbsolutePath()))); out.write(cobrancaDocumentoTxt.toString()); out.flush(); out.close(); ZipUtil.adicionarArquivo(zos, leitura); // close the stream zos.close(); leitura.delete(); } System.out.println("********************"); System.out.println("FIM GERA��O ARQUIVO"); System.out.println("********************"); } catch (IOException e) { e.printStackTrace(); throw new ControladorException("erro.sistema", e); } catch (Exception e) { e.printStackTrace(); throw new ControladorException("erro.sistema", e); } } /** * retorna a Data de Vencimento da Rota (FACR_DTCONTAVENCIMENTO da tabela * FATURAMENTO_ATIV_CRON_ROTA com ROTA_ID = ROTA_ID j� pesquisado antes e * FTAC_ID = FTAC_ID da tabela FATURAMENTO_ATIVIDADE_CRONOGRAMA e FTAT_ID = * 5 e FTCM_ID = FTCM_ID da tabela FATURAMENTO_GRUPO_CRONOGRAMA_MENSAL com * FTGR_ID = ao grupo informado e FTCM_AMREFERENCIA = anoMesFaturamento da * tabela SISTEMA_PARAMETROS ) * * [UC0910] Emitir Cartas da Campanha de Solidariedade da crian�a para * Negocia��o a Vista * * @author Vivianne Sousa * @data 22/06/2009 */ public Date pesquisarDataVencimentoRota(Integer idRota, Integer anoMesFaturamento, Integer grupoFaturamento) throws ControladorException { try { return repositorioCobranca.pesquisarDataVencimentoRota(idRota, anoMesFaturamento, grupoFaturamento); } catch (ErroRepositorioException e) { e.printStackTrace(); throw new ControladorException("erro.sistema", e); } } /** * * Esse metodo est� de acordo com o UC0919 - Gerar Relatorio de Impostos Por * Cliente Responsavel. Dessa forma, esse m�todo realiza a pesquisa por * impostos por cliente respons�vel, agrupando os impostos a partir das * faturas de cada cliente. Para esse caso de uso, todos os CLIENTES devem * ser FEDERAIS, dessa forma a pesquisa est� sendo realizada por cliente * respons�veis federais, ou seja clientes que tem na tabela * cadastro.cliente_tipo EPOD_ID = 3. - continuar descricao - * * @author Jose Guilherme Macedo Vieira, Fernando Fontelles * @date 08/07/2009, 02/10/2010 * * @param Integer * anoMes - o ano/mes j� formatado, sem barra, na forma de * Integer * @param Integer * clienteID - o id do cliente * @param String * tipoRelatorio (SINTETICO ou ANALITICO) * @return Collection<RelatorioImpostosPorClienteResponsavelHelper> - a * cole��o de helpers do relatorio * @throws ControladorException */ public Collection<ImpostoDeduzidoHelper> pesquisarImpostosPorClienteResponsavelFederal(Integer anoMes, Integer clienteID, String tipoRelatorio) throws ControladorException { Collection<ImpostoDeduzidoHelper> colecaoImpostosDeduzidosHelper = new ArrayList(); if (tipoRelatorio != null) { if (tipoRelatorio.equalsIgnoreCase("sintetico")) { // cria uma colecao de impostos Collection colecaoImpostos = new ArrayList(); try { // faz a pesquisa por impostos que estao associados � fatura // passando o ano mes colecaoImpostos = this.repositorioCobranca.pesquisaImpostoFaturaClienteResponsavelFederal(anoMes, clienteID); } catch (ErroRepositorioException e) { e.printStackTrace(); throw new ControladorException("erro.sistema", e); } // valida a colecao de impostos pesquisada if (colecaoImpostos != null && !colecaoImpostos.isEmpty()) { Iterator iteraImposto = colecaoImpostos.iterator(); // varre a colecao de impostos while (iteraImposto.hasNext()) { Object[] imposto = (Object[]) iteraImposto.next(); // cria uma instancia do helper de impostos ImpostoDeduzidoHelper impostoDeduzidoHelper = new ImpostoDeduzidoHelper(); // seta os valores do imposto pequisado no helper do // imposto para se usar no relatorio impostoDeduzidoHelper.setIdImpostoTipo((Integer) imposto[0]); impostoDeduzidoHelper.setDescricaoImposto((String) imposto[1]); impostoDeduzidoHelper.setPercentualAliquota((BigDecimal) imposto[2]); impostoDeduzidoHelper.setValor((BigDecimal) imposto[3]); impostoDeduzidoHelper.setIdCliente((Integer) imposto[4]); impostoDeduzidoHelper.setNomeCliente((String) imposto[5]); impostoDeduzidoHelper.setValorFatura((BigDecimal) imposto[6]); impostoDeduzidoHelper.setCnpjCliente((String) imposto[7]); // adiciona o helper � colecao dos helpers de imposto colecaoImpostosDeduzidosHelper.add(impostoDeduzidoHelper); } } } else if (tipoRelatorio.equalsIgnoreCase("analitico")) { // Cria lista QUEBRA para realizar a soma dos valores da fatura List<ImpostoDeduzidoHelper> quebra = new ArrayList<ImpostoDeduzidoHelper>(); // Collection colecaoImpostosCliente = new ArrayList(); List colecaoImpostosCliente = new ArrayList(); try { // faz a pesquisa por impostos que estao associados � fatura // passando o id da fatura colecaoImpostosCliente = (List) this.repositorioCobranca.pesquisaImpostoFaturaClienteResponsavelFederalAnalitico( anoMes, clienteID); } catch (ErroRepositorioException e) { e.printStackTrace(); throw new ControladorException("erro.sistema", e); } // inicio dase��o da cole��o de impostos do Cliente if (colecaoImpostosCliente != null && !colecaoImpostosCliente.isEmpty()) { for (int i = 0; i < colecaoImpostosCliente.size(); i++) { Object obj = (Object) colecaoImpostosCliente.get(i); if (obj instanceof Object[]) { Object[] imposto = (Object[]) obj; // cria uma instancia do helper de impostos ImpostoDeduzidoHelper helper = new ImpostoDeduzidoHelper(); // seta os valores do imposto pequisado no helper do // imposto para se usar no relatorio helper.setIdImpostoTipo((Integer) imposto[0]); helper.setDescricaoImposto((String) imposto[1]); helper.setPercentualAliquota((BigDecimal) imposto[2]); helper.setValor((BigDecimal) imposto[3]); helper.setIdCliente((Integer) imposto[4]); helper.setNomeCliente((String) imposto[5]); helper.setValorFatura((BigDecimal) imposto[6]); helper.setIdImovel((Integer) imposto[7]); helper.setCnpjCliente((String) imposto[8]); // Verificamos se o objeto ja possue uma quebra // cadastrada if (quebra.contains(helper)) { int posicao = quebra.indexOf(helper); ImpostoDeduzidoHelper jaCadastrado = (ImpostoDeduzidoHelper) quebra.get(posicao); jaCadastrado.setValorFatura(jaCadastrado.getValorFatura().add(helper.getValorFatura())); // seta os valores do imposto pequisado no // helper do imposto para se usar no relatorio helper.setIdImpostoTipo((Integer) imposto[0]); helper.setDescricaoImposto((String) imposto[1]); helper.setPercentualAliquota((BigDecimal) imposto[2]); helper.setValor((BigDecimal) imposto[3]); helper.setIdCliente((Integer) imposto[4]); helper.setNomeCliente((String) imposto[5]); // helper.setValorFatura((BigDecimal) // imposto[6]); helper.setIdImovel((Integer) imposto[7]); helper.setCnpjCliente((String) imposto[8]); quebra.add(helper); } else { quebra.add(helper); } } } colecaoImpostosDeduzidosHelper = (Collection) quebra; /* * Iterator iterator = colecaoImpostosCliente.iterator(); * * //inicio do la�o da cole��o de impostos do imovel while * (iterator.hasNext()) { * * Object[] imposto = (Object[]) iterator.next(); * * //cria uma instancia do helper de impostos * ImpostoDeduzidoHelper impostoDeduzidoHelper = new * ImpostoDeduzidoHelper(); * * //seta os valores do imposto pequisado no helper do * imposto para se usar no relatorio * impostoDeduzidoHelper.setIdImpostoTipo((Integer) * imposto[0]); * impostoDeduzidoHelper.setDescricaoImposto((String) * imposto[1]); * impostoDeduzidoHelper.setPercentualAliquota((BigDecimal) * imposto[2]); impostoDeduzidoHelper.setValor((BigDecimal) * imposto[3]); * impostoDeduzidoHelper.setIdCliente((Integer)imposto[4]); * impostoDeduzidoHelper.setNomeCliente((String) imposto[5] * ); impostoDeduzidoHelper.setValorFatura((BigDecimal) * imposto[6]); impostoDeduzidoHelper.setIdImovel((Integer) * imposto[7]); * * //adiciona o helper � colecao dos helpers de imposto * colecaoImpostosDeduzidosHelper * .add(impostoDeduzidoHelper); }//fim do la�o da cole��o de * impostos do imovel */ }// fim se��o da cole��o dos imposto do imovel }// fim do la�o da cole��o de imoveis } return colecaoImpostosDeduzidosHelper; } /** * [UC0251] Gerar Atividade de A��o de Cobran�a * * @author Raphael Rossiter * @date 20/07/2009 * * @param helper * @throws ControladorException */ public void gerarAtividadeAcaoCobrancaEmissaoDocumento(EmissaoDocumentoCobrancaHelper helper) throws ControladorException { if (!helper.getAcaoCobranca().getId().equals(CobrancaAcao.CARTA_COBRANCA_PARCELAMENTO)) { // [UC0575] Emitir Aviso de Cobran�a emitirAvisoCobrancaFormatado(helper.getCobrancaAcaoAtividadeCronograma(), helper.getCobrancaAcaoAtividadeComando(), helper.getDataAtual(), helper.getAcaoCobranca(), helper.getGrupoCobranca(), helper.getCriterioCobranca()); } else { // [UC0576 Emitir Parcelamento em atraso] emitirParcelamentoEmAtraso(helper.getCobrancaAcaoAtividadeCronograma(), helper.getCobrancaAcaoAtividadeComando(), helper.getDataAtual(), helper.getAcaoCobranca(), helper.getGrupoCobranca(), helper.getCriterioCobranca()); } } /** * Faz parte de [UC0216] Calcular Acr�scimo por Impontualidade Santos Data: * 09/01/2006 Dados do Indices Acrescimo Impontualidade * * @param anoMesReferenciaDebito * Ano M�s de Referencia de D�bito * @return O Indices Acrescimos por Impontualidade * @throws ErroRepositorioException */ public IndicesAcrescimosImpontualidade pesquisarIndiceAcrescimoImpontualidade(int anoMesReferenciaDebito) throws ControladorException { try { return repositorioCobranca.pesquisarIndiceAcrescimoImpontualidade(anoMesReferenciaDebito); } catch (ErroRepositorioException e) { e.printStackTrace(); throw new ControladorException("erro.sistema", e); } } /** * * Dado um objeto de cicloMeta, consultar a colecao de ciclo meta grupo * * @author Genival Barbosa * @date 22/07/2009 * * @param cicloMeta * Objeto ciclo meta * @return Helpers com os agrupamentos definidos de ciclo meta grupo */ public List consultarColecaoCicloMetaGrupoRelatorio(CicloMeta cicloMeta) throws ControladorException { List colecaoCicloMetaGrupo; try { colecaoCicloMetaGrupo = this.repositorioCobranca.consultarColecaoCicloMetaGrupoRelatorio(cicloMeta.getId()); } catch (ErroRepositorioException e) { e.printStackTrace(); throw new ControladorException("erro.sistema", e); } return colecaoCicloMetaGrupo; } /** * [UC0879] Gerar Extens�o de Comando de Contas em Cobran�a por Empresa - * Pesquisa dados do popup * * @author Hugo Amorim * @throws ControladorException * @throws ErroRepositorioException */ public Object[] pesquisarDadosPopupExtensaoComando(Integer idComando, Date dateInicial, Date dateFinal) throws ControladorException { Object[] retorno = new Object[26]; try { // Dados do comando empresa cobranca conta obs: retorno[0 a 21] Collection dadosPopup = repositorioCobranca.pesquisarDadosPopup(idComando); Iterator iteraDadosPopup = dadosPopup.iterator(); Object[] array = (Object[]) iteraDadosPopup.next(); for (int i = 0; i < array.length; i++) { retorno[i] = array[i]; } // Dados das Cobran�as do Comando Collection dadosCobranca = repositorioCobranca.pesquisarValorTotalCobranca(idComando, dateInicial, dateFinal); // Quantidade Total de Contas Selecionadas para Cobran�a retorno[22] = dadosCobranca.size(); Iterator iteraDadosCobranca = dadosCobranca.iterator(); BigDecimal somaCobranca = new BigDecimal("0.0"); while (iteraDadosCobranca.hasNext()) { BigDecimal valor = (BigDecimal) iteraDadosCobranca.next(); somaCobranca = somaCobranca.add(valor); } retorno[23] = somaCobranca; // Dados das Cobran�as do Comando Collection dadosCriterio = repositorioCobranca.pesquisarValorTotalCobrancaCriterio(idComando, dateInicial, dateFinal); // Quantidade Total de Contas Selecionadas para Cobran�a Criterio retorno[24] = dadosCriterio.size(); Iterator iteratorCobrancaCriterio = dadosCriterio.iterator(); BigDecimal somaCobrancaCriterio = new BigDecimal("0.0"); while (iteratorCobrancaCriterio.hasNext()) { BigDecimal valor = (BigDecimal) iteratorCobrancaCriterio.next(); somaCobrancaCriterio = somaCobrancaCriterio.add(valor); } retorno[25] = somaCobrancaCriterio; } catch (ErroRepositorioException e) { e.printStackTrace(); throw new ControladorException("erro.sistema", e); } return retorno; } /** * [UC0640] Gerar TXT Corte Fisico COMPESA * * @author Ivan Sergio * @data 21/05/2009 * * @param * @return void */ public void gerarTxtCorteFisico(CobrancaAcaoAtividadeCronograma cobrancaAcaoAtividadeCronograma, CobrancaAcaoAtividadeComando cobrancaAcaoAtividadeComando, Date dataAtualPesquisa, CobrancaAcao acaoCobranca, CobrancaGrupo grupoCobranca, CobrancaCriterio cobrancaCriterio) throws ControladorException { boolean flagFimPesquisa = false; final int quantidadeCobrancaDocumento = 1000; int quantidadeCobrancaDocumentoInicio = 0; StringBuilder cobrancaDocumentoTxt = new StringBuilder(); int sequencialImpressao = 0; System.out.println("****************************************"); System.out.println("ENTROU NO GERAR TXT CORTE FISICO COMPESA"); System.out.println("****************************************"); Collection colecaoEmitirDocumentoCobranca = null; Map<Integer, Integer> mapAtualizaSequencial = null; Integer idCronogramaAtividadeAcaoCobranca = null; Integer idComandoAtividadeAcaoCobranca = null; Integer idAcaoCobranca = null; if (cobrancaAcaoAtividadeCronograma != null && cobrancaAcaoAtividadeCronograma.getId() != null) { idCronogramaAtividadeAcaoCobranca = cobrancaAcaoAtividadeCronograma.getId(); } if (cobrancaAcaoAtividadeComando != null && cobrancaAcaoAtividadeComando.getId() != null) { idComandoAtividadeAcaoCobranca = cobrancaAcaoAtividadeComando.getId(); } if (acaoCobranca != null && acaoCobranca.getId() != null) { idAcaoCobranca = acaoCobranca.getId(); } while (!flagFimPesquisa) { // map que armazena o sequencial e o numero da // conta para no final atualizar todos os // sequencias mapAtualizaSequencial = new HashMap(); try { colecaoEmitirDocumentoCobranca = repositorioCobranca.pesquisarCobrancaDocumentoOrdemCorte( idCronogramaAtividadeAcaoCobranca, idComandoAtividadeAcaoCobranca, dataAtualPesquisa, idAcaoCobranca, quantidadeCobrancaDocumentoInicio); } catch (ErroRepositorioException ex) { ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } if (colecaoEmitirDocumentoCobranca != null && !colecaoEmitirDocumentoCobranca.isEmpty()) { System.out.println("***************************************"); System.out.println("QUANTIDADE DE COBRAN�A:" + colecaoEmitirDocumentoCobranca.size()); System.out.println("***************************************"); Collection colecaoCobrancaDocumentoItem = null; if (colecaoEmitirDocumentoCobranca.size() < quantidadeCobrancaDocumento) { flagFimPesquisa = true; } else { quantidadeCobrancaDocumentoInicio = quantidadeCobrancaDocumentoInicio + 1000; } // int metadeColecao = 0; // if (colecaoEmitirDocumentoCobranca.size() % 2 == 0) { // metadeColecao = colecaoEmitirDocumentoCobranca.size() / 2; // } else { // metadeColecao = (colecaoEmitirDocumentoCobranca.size() / 2) + // 1; // } // // System.out.println("***************************************"); // System.out.println("INICIO DIVIDE A COLECAO:"); // System.out.println("***************************************"); // // Map<Integer, Map<Object, Object>> // mapCobrancaDocumentoOrdenada = // dividirColecao(colecaoEmitirDocumentoCobranca); // System.out.println("***************************************"); // System.out.println("FIM DIVIDE A COLECAO:"); // System.out.println("***************************************"); Iterator iteratorColecaoCobrancaDocumento = colecaoEmitirDocumentoCobranca.iterator(); EmitirDocumentoCobrancaHelper emitirDocumentoCobrancaHelper = null; // if (mapCobrancaDocumentoOrdenada != null) { // int countOrdem = 0; // while (countOrdem < mapCobrancaDocumentoOrdenada.size()) { // Map<Object, Object> mapCobrancaoDocumentoDivididas = // mapCobrancaDocumentoOrdenada.get(countOrdem); // Iterator iteratorColecaoCobrancaDocumento = // mapCobrancaoDocumentoDivididas.keySet().iterator(); while (iteratorColecaoCobrancaDocumento.hasNext()) { emitirDocumentoCobrancaHelper = null; String nomeCliente = null; // int situacao = 0; emitirDocumentoCobrancaHelper = (EmitirDocumentoCobrancaHelper) iteratorColecaoCobrancaDocumento.next(); /* * Estes objetos auxiliar�o na formata��o da inscri��o que * ser� composta por informa��es do documento de cobran�a e * do im�vel a ele associado */ Imovel inscricao = null; SetorComercial setorComercialInscricao = null; Quadra quadraInscricao = null; Localidade localidade = null; sequencialImpressao++; // while (situacao < 2) { // if (situacao == 0) { // situacao = 1; // sequencialImpressao = atualizaSequencial( // sequencialImpressao, situacao, // metadeColecao); // // } else { // emitirDocumentoCobrancaHelper = // (EmitirDocumentoCobrancaHelper) // mapCobrancaoDocumentoDivididas // .get(emitirDocumentoCobrancaHelper); // situacao = 2; // sequencialImpressao = atualizaSequencial( // sequencialImpressao, situacao, // metadeColecao); // } if (emitirDocumentoCobrancaHelper != null) { try { nomeCliente = this.repositorioClienteImovel.pesquisarNomeClientePorImovel(emitirDocumentoCobrancaHelper .getIdImovel()); CobrancaDocumento cobrancaDocumento = new CobrancaDocumento(); cobrancaDocumento.setId(emitirDocumentoCobrancaHelper.getIdDocumentoCobranca()); colecaoCobrancaDocumentoItem = this.repositorioCobranca .selecionarCobrancaDocumentoItemReferenteConta(cobrancaDocumento); } catch (ErroRepositorioException ex) { ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } if (colecaoCobrancaDocumentoItem != null && !colecaoCobrancaDocumentoItem.isEmpty()) { // In�cio do processo de gera��o do // arquivo txt // ****************************************************** // Inscricao do Imovel quadraInscricao = new Quadra(); setorComercialInscricao = new SetorComercial(); localidade = new Localidade(); inscricao = new Imovel(); quadraInscricao.setNumeroQuadra(emitirDocumentoCobrancaHelper.getNumeroQuadra()); setorComercialInscricao.setCodigo(emitirDocumentoCobrancaHelper.getCodigoSetorComercial()); localidade.setId(emitirDocumentoCobrancaHelper.getIdLocalidade()); inscricao.setLocalidade(localidade); inscricao.setSetorComercial(setorComercialInscricao); inscricao.setQuadra(quadraInscricao); inscricao.setLote(emitirDocumentoCobrancaHelper.getLote()); inscricao.setSubLote(emitirDocumentoCobrancaHelper.getSubLote()); cobrancaDocumentoTxt.append(Util.completaString(inscricao.getInscricaoFormatada(), 20)); // ****************************************************** // Nome do Cliente cobrancaDocumentoTxt.append(Util.completaString(nomeCliente, 50)); // ****************************************************** // Matr�cula do im�vel String matriculaImovelFormatada = Util.adicionarZerosEsquedaNumero(8, emitirDocumentoCobrancaHelper .getIdImovel().toString()); matriculaImovelFormatada = matriculaImovelFormatada.substring(0, 7) + "." + matriculaImovelFormatada.substring(7, 8); cobrancaDocumentoTxt.append(matriculaImovelFormatada); // ****************************************************** // Endereco do Imovel String nomeBairro = ""; String nomeMunicipio = ""; String siglaUnidadeFederecao = ""; String cepFormatado = ""; String[] parmsEnderecoImovel = getControladorEndereco().pesquisarEnderecoFormatadoDividido( emitirDocumentoCobrancaHelper.getIdImovel()); if (parmsEnderecoImovel != null) { // Endere�o sem Municipio e Unidade Federa��o cobrancaDocumentoTxt.append(Util.completaString(parmsEnderecoImovel[0], 100)); // Nome do Municipio nomeMunicipio = "" + parmsEnderecoImovel[1]; // Sigla da Unidade Federa��o siglaUnidadeFederecao = parmsEnderecoImovel[2]; // Nome do Bairro nomeBairro = "" + parmsEnderecoImovel[3]; // CEP Formatado cepFormatado = parmsEnderecoImovel[4]; } else { cobrancaDocumentoTxt.append(Util.completaString("", 100)); } // Bairro cobrancaDocumentoTxt.append(Util.completaString(nomeBairro, 30)); // Municipio cobrancaDocumentoTxt.append(Util.completaString(nomeMunicipio, 30)); // UF cobrancaDocumentoTxt.append(Util.completaString(siglaUnidadeFederecao, 2)); // CEP String cepStr = Util.completaString(cepFormatado, 8); cobrancaDocumentoTxt.append(cepStr.substring(0, 5) + "-" + cepStr.substring(5, 8)); // ****************************************************** // CRC2574 alterado por Vivianne Sousa 19/08/2009 - // Francisco // Numero da OS cobrancaDocumentoTxt.append(Util.completaString("" + emitirDocumentoCobrancaHelper.getNumeroOS(), 9)); // "" // +emitirDocumentoCobrancaHelper.getNumeroSequenciaDocumento(), // 9)); // ****************************************************** // Categorias // Quantidades de economias por categoria: 1� // RESID�NCIAL 2� COMERCIAL 3� INDUSTRIAL 4� P�BLICA Imovel imovel = new Imovel(); imovel.setId(emitirDocumentoCobrancaHelper.getIdImovel()); Collection colecaoCategorias = getControladorImovel().obterQuantidadeEconomiasCategoria(imovel); imovel = null; String qtdResidencial = ""; String qtdComercial = ""; String qtdIndustrial = ""; String qtdPublico = ""; Integer totalCategoria = 0; if (colecaoCategorias != null && !colecaoCategorias.isEmpty()) { Iterator iteratorColecaoCategorias = colecaoCategorias.iterator(); Categoria categoria = null; while (iteratorColecaoCategorias.hasNext()) { categoria = (Categoria) iteratorColecaoCategorias.next(); if (categoria.getId().equals(Categoria.RESIDENCIAL)) { qtdResidencial = "" + categoria.getQuantidadeEconomiasCategoria(); totalCategoria += categoria.getQuantidadeEconomiasCategoria(); } else if (categoria.getId().equals(Categoria.COMERCIAL)) { qtdComercial = "" + categoria.getQuantidadeEconomiasCategoria(); totalCategoria += categoria.getQuantidadeEconomiasCategoria(); } else if (categoria.getId().equals(Categoria.INDUSTRIAL)) { qtdIndustrial = "" + categoria.getQuantidadeEconomiasCategoria(); totalCategoria += categoria.getQuantidadeEconomiasCategoria(); } else if (categoria.getId().equals(Categoria.PUBLICO)) { qtdPublico = "" + categoria.getQuantidadeEconomiasCategoria(); totalCategoria += categoria.getQuantidadeEconomiasCategoria(); } } } colecaoCategorias = null; // Residencial if (!qtdResidencial.equals("")) cobrancaDocumentoTxt.append(Util.adicionarZerosEsquedaNumero(3, qtdResidencial)); else cobrancaDocumentoTxt.append(Util.completaString("", 3)); // Comercial if (!qtdComercial.equals("")) cobrancaDocumentoTxt.append(Util.adicionarZerosEsquedaNumero(3, qtdComercial)); else cobrancaDocumentoTxt.append(Util.completaString("", 3)); // Industrial if (!qtdIndustrial.equals("")) cobrancaDocumentoTxt.append(Util.adicionarZerosEsquedaNumero(3, qtdIndustrial)); else cobrancaDocumentoTxt.append(Util.completaString("", 3)); // Publico if (!qtdPublico.equals("")) cobrancaDocumentoTxt.append(Util.adicionarZerosEsquedaNumero(3, qtdPublico)); else cobrancaDocumentoTxt.append(Util.completaString("", 3)); // ****************************************************** // Codigo da Situacao da Ligacao de Agua cobrancaDocumentoTxt.append(Util.completaString(emitirDocumentoCobrancaHelper.getIdLigacaoAguaSituacao() .toString(), 1)); // ****************************************************** // Codigo da Situacao da Ligacao do Esgoto cobrancaDocumentoTxt.append(Util.completaString(emitirDocumentoCobrancaHelper.getIdLigacaoEsgotoSituacao() .toString(), 1)); // ****************************************************** // Data de Emissao Ordem de Corte if (emitirDocumentoCobrancaHelper.getEmissao() != null) cobrancaDocumentoTxt.append(Util.formatarData(emitirDocumentoCobrancaHelper.getEmissao())); else cobrancaDocumentoTxt.append(Util.completaString("", 10)); // ****************************************************** // Numero do Hidrometro String numeroHidrometro = getControladorAtendimentoPublico().pesquisarNumeroHidrometroLigacaoAgua( emitirDocumentoCobrancaHelper.getIdImovel()); if (numeroHidrometro != null) cobrancaDocumentoTxt.append(Util.completaString(numeroHidrometro, 10)); else cobrancaDocumentoTxt.append(Util.completaString("", 10)); // ****************************************************** // Grupo de Cobranca cobrancaDocumentoTxt.append(Util.completaString(emitirDocumentoCobrancaHelper.getIdCobrancaGrupo().toString(), 2)); // ****************************************************** // Data de Emissao Aviso de Corte if (emitirDocumentoCobrancaHelper.getDataEmissaoPredecessor() != null) cobrancaDocumentoTxt.append(Util.formatarData(emitirDocumentoCobrancaHelper.getDataEmissaoPredecessor())); else cobrancaDocumentoTxt.append(Util.completaString("", 10)); // ****************************************************** // Sequencial de impress�o cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda( Util.retornaSequencialFormatado(sequencialImpressao), 7)); // ****************************************************** // Ciclo String ciclo = ""; if (idCronogramaAtividadeAcaoCobranca != null) { if (cobrancaAcaoAtividadeCronograma.getCobrancaAcaoCronograma() != null) { if (cobrancaAcaoAtividadeCronograma.getCobrancaAcaoCronograma().getCobrancaGrupoCronogramaMes() != null) { ciclo = Util.formatarAnoMesParaMesAno(cobrancaAcaoAtividadeCronograma.getCobrancaAcaoCronograma() .getCobrancaGrupoCronogramaMes().getAnoMesReferencia()); } } } cobrancaDocumentoTxt.append(Util.completaString(ciclo, 7)); // ****************************************************** // Perfil do Imovel cobrancaDocumentoTxt.append(Util.completaString(emitirDocumentoCobrancaHelper.getDescricaoImovelPerfil(), 20)); // ****************************************************** // CAS - Nome da Unidade de Negocio String nomeUnidadeNegocio = ""; Integer idUnidadeNegocio = getControladorLocalidade().pesquisarIdUnidadeNegocioParaLocalidade( emitirDocumentoCobrancaHelper.getIdLocalidade()); if (idUnidadeNegocio != null) { FiltroUnidadeNegocio filtroUnidadeNegocio = new FiltroUnidadeNegocio(); filtroUnidadeNegocio.adicionarParametro(new ParametroSimples(FiltroUnidadeNegocio.ID, idUnidadeNegocio)); UnidadeNegocio unidadeNegocio = (UnidadeNegocio) Util.retonarObjetoDeColecao(getControladorUtil() .pesquisar(filtroUnidadeNegocio, UnidadeNegocio.class.getName())); if (unidadeNegocio != null) nomeUnidadeNegocio = unidadeNegocio.getNome(); } cobrancaDocumentoTxt.append(Util.completaString(nomeUnidadeNegocio, 50)); // ****************************************************** // Quantidade de Contas em Debito cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda("" + colecaoCobrancaDocumentoItem.size(), 3)); // ****************************************************** // Documentos - Dados da Conta /* * Selecionar os itens do documento de cobran�a * correspondentes a conta e ordenar por ano/m�s de * refer�ncia da conta. */ Iterator iteratorColecaoCobrancaDocumentoItem = null; CobrancaDocumentoItem cobrancaDocumentoItem = null; int countImpressao = colecaoCobrancaDocumentoItem.size() - 11; /* * Caso a quantidade de itens selecionados seja * superior a 12 [SB0001 - Calcular Valor e Data de * Vencimento Anterior] * * Caso contr�rio: Dados do primeiro e segundo itens * selecionados */ if (colecaoCobrancaDocumentoItem.size() > 12) { CalcularValorDataVencimentoAnteriorHelper calcularValorDataVencimentoAnteriorHelper = this .calcularValorDataVencimentoAnterior(colecaoCobrancaDocumentoItem, 12); cobrancaDocumentoTxt.append("DEB.ATE"); // Data de Vencimento da Conta cobrancaDocumentoTxt.append(Util.formatarData(calcularValorDataVencimentoAnteriorHelper .getDataVencimentoAnterior())); // Valor do Item da Conta cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda( Util.formatarMoedaReal(calcularValorDataVencimentoAnteriorHelper.getValorAnterior()), 14)); } else { iteratorColecaoCobrancaDocumentoItem = colecaoCobrancaDocumentoItem.iterator(); cobrancaDocumentoItem = null; cobrancaDocumentoItem = (CobrancaDocumentoItem) iteratorColecaoCobrancaDocumentoItem.next(); // Mes/Ano Referencia da conta cobrancaDocumentoTxt .append(Util.completaString( Util.formatarAnoMesParaMesAno(cobrancaDocumentoItem.getContaGeral().getConta() .getReferencia()), 7)); // Data de Vencimento da Conta cobrancaDocumentoTxt.append(Util.formatarData(cobrancaDocumentoItem.getContaGeral().getConta() .getDataVencimentoConta())); // Valor do Item da Conta cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda( Util.formatarMoedaReal(cobrancaDocumentoItem.getValorItemCobrado()), 14)); } if (countImpressao <= 0) { iteratorColecaoCobrancaDocumentoItem = colecaoCobrancaDocumentoItem.iterator(); cobrancaDocumentoItem = null; int countRegistros = 0; while (iteratorColecaoCobrancaDocumentoItem.hasNext()) { cobrancaDocumentoItem = (CobrancaDocumentoItem) iteratorColecaoCobrancaDocumentoItem.next(); if (countRegistros > 0) { // Mes/Ano Referencia da conta cobrancaDocumentoTxt.append(Util.completaString( Util.formatarAnoMesParaMesAno(cobrancaDocumentoItem.getContaGeral().getConta() .getReferencia()), 7)); // Data de Vencimento da Conta cobrancaDocumentoTxt.append(Util.formatarData(cobrancaDocumentoItem.getContaGeral().getConta() .getDataVencimentoConta())); // Valor do Item da Conta cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda( Util.formatarMoedaReal(cobrancaDocumentoItem.getValorItemCobrado()), 14)); } countRegistros++; } if (countRegistros < 12) { for (int x = 0; x < (12 - countRegistros); x++) { cobrancaDocumentoTxt.append(Util.completaString("", 31)); } } } else { while (countImpressao < colecaoCobrancaDocumentoItem.size()) { cobrancaDocumentoItem = (CobrancaDocumentoItem) ((List) colecaoCobrancaDocumentoItem) .get(countImpressao); // Mes/Ano Referencia da conta cobrancaDocumentoTxt .append(Util.completaString( Util.formatarAnoMesParaMesAno(cobrancaDocumentoItem.getContaGeral().getConta() .getReferencia()), 7)); // Data de Vencimento da Conta cobrancaDocumentoTxt.append(Util.formatarData(cobrancaDocumentoItem.getContaGeral().getConta() .getDataVencimentoConta())); // Valor do Item da Conta cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda( Util.formatarMoedaReal(cobrancaDocumentoItem.getValorItemCobrado()), 14)); countImpressao++; } } // ****************************************************** // Valor total do Documento de Cobranca cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda( Util.formatarMoedaReal(emitirDocumentoCobrancaHelper.getValorDocumento()), 14)); // ****************************************************** // Representacao Numerica do Codigo de Barras String representacaoNumericaCodBarra = ""; representacaoNumericaCodBarra = this.getControladorArrecadacao().obterRepresentacaoNumericaCodigoBarra(5, emitirDocumentoCobrancaHelper.getValorDocumento(), localidade.getId(), emitirDocumentoCobrancaHelper.getIdImovel(), null, null, null, null, String.valueOf(emitirDocumentoCobrancaHelper.getNumeroSequenciaDocumento()), acaoCobranca.getDocumentoTipo().getId(), null, null, null); // Formata a representacao numerica do Codigo de // Barras String representacaoNumericaCodBarraFormatada = representacaoNumericaCodBarra.substring(0, 11) + " " + representacaoNumericaCodBarra.substring(11, 12) + " " + representacaoNumericaCodBarra.substring(12, 23) + " " + representacaoNumericaCodBarra.substring(23, 24) + " " + representacaoNumericaCodBarra.substring(24, 35) + " " + representacaoNumericaCodBarra.substring(35, 36) + " " + representacaoNumericaCodBarra.substring(36, 47) + " " + representacaoNumericaCodBarra.substring(47, 48); cobrancaDocumentoTxt.append(representacaoNumericaCodBarraFormatada); // ****************************************************** // Codigo de Barras Interleaved2of5 codigoBarraIntercalado2de5 = new Interleaved2of5(); // Recupera a representa��o n�merica do c�digo de // barras // sem os d�gitos verificadores String representacaoCodigoBarrasSemDigitoVerificador = representacaoNumericaCodBarra.substring(0, 11) + representacaoNumericaCodBarra.substring(12, 23) + representacaoNumericaCodBarra.substring(24, 35) + representacaoNumericaCodBarra.substring(36, 47); cobrancaDocumentoTxt.append(codigoBarraIntercalado2de5 .encodeValue(representacaoCodigoBarrasSemDigitoVerificador)); // ****************************************************** // Rota cobrancaDocumentoTxt.append(Util.completaString(String.valueOf(emitirDocumentoCobrancaHelper.getCodigoRota()), 5)); // ****************************************************** // Sequencial na Rota if (emitirDocumentoCobrancaHelper.getNumeroSequencialRota() != null) { cobrancaDocumentoTxt.append(Util.completaString( String.valueOf(emitirDocumentoCobrancaHelper.getNumeroSequencialRota()), 8)); } else { cobrancaDocumentoTxt.append(Util.completaString("", 8)); } // ****************************************************** // Data de Vencimento if (emitirDocumentoCobrancaHelper.getNumeroDiasVencimento() != null) { Date dataVencimento = Util.adicionarNumeroDiasDeUmaData(emitirDocumentoCobrancaHelper.getEmissao(), emitirDocumentoCobrancaHelper.getNumeroDiasVencimento()); cobrancaDocumentoTxt.append(Util.completaString(Util.formatarData(dataVencimento), 10)); } else { cobrancaDocumentoTxt.append(Util.completaString("", 10)); } // ****************************************************** // Data de Validade if (emitirDocumentoCobrancaHelper.getNumeroDiasValidade() != null) { Date dataValidade = Util.adicionarNumeroDiasDeUmaData(emitirDocumentoCobrancaHelper.getEmissao(), emitirDocumentoCobrancaHelper.getNumeroDiasValidade()); cobrancaDocumentoTxt.append(Util.completaString(Util.formatarData(dataValidade), 10)); } else { cobrancaDocumentoTxt.append(Util.completaString("", 10)); } cobrancaDocumentoTxt.append(System.getProperty("line.separator")); } // adiciona o id da // conta e o sequencial // no para serem // atualizados mapAtualizaSequencial.put(emitirDocumentoCobrancaHelper.getIdDocumentoCobranca(), sequencialImpressao); colecaoCobrancaDocumentoItem = null; } // } } // mapCobrancaoDocumentoDivididas = null; // countOrdem++; // } // mapCobrancaDocumentoOrdenada = null; // } } else { flagFimPesquisa = true; } try { repositorioCobranca.atualizarSequencialCobrancaDocumentoImpressao(mapAtualizaSequencial); } catch (ErroRepositorioException e) { throw new ControladorException("erro.sistema", e); } mapAtualizaSequencial = null; colecaoEmitirDocumentoCobranca = null; } System.out.println("*************************************"); System.out.println("FIM DO GERAR TXT CORTE FISICO COMPESA"); System.out.println("*************************************"); Date dataAtual = new Date(); String nomeZip = ""; // caso seja cronograma if (idCronogramaAtividadeAcaoCobranca != null) { if (idAcaoCobranca.equals(CobrancaAcao.CORTE_FISICO)) { nomeZip = "NOVA_ORDEM_CORTE_FISICO_GRUPO_" + grupoCobranca.getId() + "_" + Util.formatarData(dataAtual) + Util.formatarHoraSemDataSemDoisPontos(dataAtual); } else if (idAcaoCobranca.equals(CobrancaAcao.CORTE_FISICO_LIGADO_A_REVELIA)) { nomeZip = "NOVA_ORDEM_CORTE_FISICO_LIGADO_A_REVELIA_GRUPO_" + grupoCobranca.getId() + "_" + Util.formatarData(dataAtual) + Util.formatarHoraSemDataSemDoisPontos(dataAtual); } else if (idAcaoCobranca.equals(CobrancaAcao.CORTE_FISICO_PUBLICO)) { nomeZip = "NOVA_ORDEM_CORTE_FISICO_PUBLICO_GRUPO_" + grupoCobranca.getId() + "_" + Util.formatarData(dataAtual) + Util.formatarHoraSemDataSemDoisPontos(dataAtual); } else if (idAcaoCobranca.equals(CobrancaAcao.RECORTE)) { nomeZip = "NOVA_ORDEM_RECORTE_GRUPO_" + grupoCobranca.getId() + "_" + Util.formatarData(dataAtual) + Util.formatarHoraSemDataSemDoisPontos(dataAtual); } // para o caso de eventual } else { String descricaoAbrevDocumentoTipo = ""; if (acaoCobranca != null && acaoCobranca.getDocumentoTipo() != null) { descricaoAbrevDocumentoTipo = acaoCobranca.getDocumentoTipo().getDescricaoAbreviado(); } String tituloComandoEventual = cobrancaAcaoAtividadeComando.getDescricaoTitulo(); nomeZip = descricaoAbrevDocumentoTipo + " " + tituloComandoEventual + " " + Util.formatarData(dataAtual) + Util.formatarHoraSemDataSemDoisPontos(dataAtual); } nomeZip = nomeZip.replace("/", "_"); nomeZip = nomeZip.replace(" ", "_"); try { System.out.println("***************************************"); System.out.println("INICIO CRIAR ARQUIVO"); System.out.println("***************************************"); if (cobrancaDocumentoTxt != null && cobrancaDocumentoTxt.length() != 0) { cobrancaDocumentoTxt.append("\u0004"); File leitura = new File(nomeZip + ".txt"); // criar o arquivo zip File compactado = new File(nomeZip + ".zip"); // nomeZip ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(compactado)); BufferedWriter out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(leitura.getAbsolutePath()))); out.write(cobrancaDocumentoTxt.toString()); out.close(); ZipUtil.adicionarArquivo(zos, leitura); // close the stream zos.close(); leitura.delete(); } System.out.println("***************************************"); System.out.println("FIM CRIAR ARQUIVO"); System.out.println("***************************************"); } catch (IOException e) { e.printStackTrace(); throw new ControladorException("erro.sistema", e); } catch (Exception e) { e.printStackTrace(); throw new ControladorException("erro.sistema", e); } } /** * [UCXXXX] - Gerar Conta * * @author Rafael Corr�a * @date 22/07/2009 * * @param anoMes * @param idFaturamentoGrupo * @param idLocalidadeInicial * @param idLocalidadeFinal * @param codigoSetorComercialInicial * @param codigoSetorComercialFinal * @param codigoRotaInicial * @param codigoRotaFinal * @return Collection<RelatorioContaBean> * @throws ControladorException */ public List<RelatorioContaBean> pesquisarDadosContaRelatorio(Integer anoMes, Integer idFaturamentoGrupo, Integer idLocalidadeInicial, Integer idLocalidadeFinal, Integer codigoSetorComercialInicial, Integer codigoSetorComercialFinal, Short codigoRotaInicial, Short codigoRotaFinal, Short sequencialRotaInicial, Short sequencialRotaFinal, String indicadorEmissao, String indicadorOrdenacao) throws ControladorException { List<RelatorioContaBean> retorno = new ArrayList<RelatorioContaBean>(); SistemaParametro sistemaParametro = getControladorUtil().pesquisarParametrosDoSistema(); try { Collection<Object[]> colecaoDadosRelatorio = repositorioFaturamento.pesquisarDadosContaRelatorio(anoMes, idFaturamentoGrupo, idLocalidadeInicial, idLocalidadeFinal, codigoSetorComercialInicial, codigoSetorComercialFinal, codigoRotaInicial, codigoRotaFinal, sequencialRotaInicial, sequencialRotaFinal, indicadorEmissao, indicadorOrdenacao); colecaoDadosRelatorio = this.ordenarColecaoParaConta((List) colecaoDadosRelatorio); for (Object[] dadosRelatorio : colecaoDadosRelatorio) { Integer idImovel = null; // .addScalar("idImovel", Hibernate.INTEGER) if (dadosRelatorio[0] != null) { idImovel = (Integer) dadosRelatorio[0]; } Integer idConta = null; // .addScalar("idConta", Hibernate.INTEGER) if (dadosRelatorio[1] != null) { idConta = (Integer) dadosRelatorio[1]; } Integer anoMesConta = null; // .addScalar("anoMesConta", Hibernate.INTEGER) if (dadosRelatorio[2] != null) { anoMesConta = (Integer) dadosRelatorio[2]; } String aguaEsgoto = ""; // .addScalar("aguaEsgoto", Hibernate.STRING) if (dadosRelatorio[3] != null) { aguaEsgoto = (String) dadosRelatorio[3]; } BigDecimal valorImpostos = new BigDecimal("0.00"); if (dadosRelatorio[33] != null) { valorImpostos = (BigDecimal) dadosRelatorio[33]; } Collection<RelatorioContaDetailBean> colecaoDetail = new ArrayList<RelatorioContaDetailBean>(); if (aguaEsgoto.contains("A")) { RelatorioContaDetailBean detail = new RelatorioContaDetailBean(); Integer consumoAgua = (Integer) dadosRelatorio[29]; BigDecimal valorAgua = (BigDecimal) dadosRelatorio[30]; if (valorAgua != null && valorAgua.compareTo(new BigDecimal("0.00")) != 0) { detail.setCodigoServico("TA"); detail.setDescricaoServico("AGUA"); detail.setConsumo(consumoAgua); detail.setValor(valorAgua); colecaoDetail.add(detail); } } if (aguaEsgoto.contains("E")) { RelatorioContaDetailBean detail = new RelatorioContaDetailBean(); Integer consumoEsgoto = (Integer) dadosRelatorio[31]; BigDecimal valorEsgoto = (BigDecimal) dadosRelatorio[32]; if (valorEsgoto != null && valorEsgoto.compareTo(new BigDecimal("0.00")) != 0) { detail.setCodigoServico("TE"); detail.setDescricaoServico("ESGOTO"); detail.setConsumo(consumoEsgoto); detail.setValor(valorEsgoto); colecaoDetail.add(detail); } } Collection<RelatorioContaDetailBean> colecaoServicos = this.getColecaoRelatorioContaServicosBean(idConta, valorImpostos); colecaoDetail.addAll(colecaoServicos); Collection<RelatorioContaConsumosAnterioresBean> colecaoConsumosAnteriores = null; Integer idLigacaoTipo = null; if (aguaEsgoto.contains("A")) { idLigacaoTipo = LigacaoTipo.LIGACAO_AGUA; } else { idLigacaoTipo = LigacaoTipo.LIGACAO_ESGOTO; } colecaoConsumosAnteriores = this.getColecaoRelatorioContaConsumosAnterioresBean(anoMesConta, idImovel, idLigacaoTipo, 13); RelatorioContaBean bean = new RelatorioContaBean(colecaoDetail, colecaoConsumosAnteriores); bean.setIdImovel(Util.retornaMatriculaImovelFormatada(idImovel)); bean.setIdConta(idConta); bean.setMesAnoConta(Util.formatarAnoMesParaMesAno(anoMesConta)); bean.setAguaEsgoto(aguaEsgoto); // .addScalar("qtdEconomias", Hibernate.SHORT) if (dadosRelatorio[4] != null) { bean.setQuantidadeEconomias((Short) dadosRelatorio[4]); } // .addScalar("codigoRota", Hibernate.SHORT) if (dadosRelatorio[5] != null) { bean.setRota((Short) dadosRelatorio[5]); } // .addScalar("seqRota", Hibernate.INTEGER) if (dadosRelatorio[6] != null) { bean.setSequencialRota((Integer) dadosRelatorio[6]); } // .addScalar("dataEmissao", Hibernate.DATE) if (dadosRelatorio[7] != null) { bean.setDataEmissao((Date) dadosRelatorio[7]); } // .addScalar("percentualEsgoto", Hibernate.BIG_DECIMAL) if (dadosRelatorio[8] != null) { bean.setPercentualEsgoto((BigDecimal) dadosRelatorio[8]); } // .addScalar("dataVencimento", Hibernate.DATE) if (dadosRelatorio[9] != null) { bean.setDataVencimento((Date) dadosRelatorio[9]); } Short digitoVerificador = null; // .addScalar("digitoVerificador", Hibernate.SHORT) if (dadosRelatorio[10] != null) { digitoVerificador = (Short) dadosRelatorio[10]; } Imovel imovel = new Imovel(); // .addScalar("idLocalidade", Hibernate.INTEGER) if (dadosRelatorio[11] != null) { Localidade localidade = new Localidade(); localidade.setId((Integer) dadosRelatorio[11]); imovel.setLocalidade(localidade); } // .addScalar("codigoSetorComercial", Hibernate.INTEGER) if (dadosRelatorio[12] != null) { SetorComercial setorComercial = new SetorComercial(); setorComercial.setCodigo((Integer) dadosRelatorio[12]); imovel.setSetorComercial(setorComercial); } // .addScalar("numeroQuadra", Hibernate.INTEGER) if (dadosRelatorio[13] != null) { Quadra quadra = new Quadra(); quadra.setNumeroQuadra((Integer) dadosRelatorio[13]); imovel.setQuadra(quadra); } // .addScalar("lote", Hibernate.SHORT) if (dadosRelatorio[14] != null) { imovel.setLote((Short) dadosRelatorio[14]); } // .addScalar("sublote", Hibernate.SHORT) if (dadosRelatorio[15] != null) { imovel.setSubLote((Short) dadosRelatorio[15]); } BigDecimal valorConta = null; // .addScalar("valorConta", Hibernate.BIG_DECIMAL) if (dadosRelatorio[16] != null) { valorConta = (BigDecimal) dadosRelatorio[16]; bean.setValorConta(valorConta); } // .addScalar("nomeUsuario", Hibernate.STRING) if (dadosRelatorio[17] != null) { bean.setNomeCliente((String) dadosRelatorio[17]); } // .addScalar("cpfCnpj", Hibernate.STRING) if (dadosRelatorio[18] != null) { bean.setCpfCnpj((String) dadosRelatorio[18]); } // .addScalar("numeroHidrometro", Hibernate.STRING) if (dadosRelatorio[19] != null) { bean.setNumeroHidrometro((String) dadosRelatorio[19]); } // .addScalar("dataInstalacao", Hibernate.DATE) if (dadosRelatorio[20] != null) { bean.setDataInstalacao((Date) dadosRelatorio[20]); } // .addScalar("leituraAnterior", Hibernate.INTEGER) if (dadosRelatorio[21] != null) { bean.setLeituraAnterior((Integer) dadosRelatorio[21]); } // .addScalar("dataLeituraAnterior", Hibernate.DATE) if (dadosRelatorio[22] != null) { bean.setDataLeituraAnterior((Date) dadosRelatorio[22]); } // .addScalar("leituraAtual", Hibernate.INTEGER) if (dadosRelatorio[23] != null) { bean.setLeituraAtual((Integer) dadosRelatorio[23]); } // .addScalar("dataLeituraAtual", Hibernate.DATE) if (dadosRelatorio[24] != null) { bean.setDataLeituraAtual((Date) dadosRelatorio[24]); } // .addScalar("anormalidadeLeitura", Hibernate.INTEGER) if (dadosRelatorio[25] != null) { bean.setAnormalidadeLeitura(((Integer) dadosRelatorio[25]).toString()); } // .addScalar("leiturista", Hibernate.INTEGER) if (dadosRelatorio[26] != null) { bean.setLeiturista((Integer) dadosRelatorio[26]); } // .addScalar("consumoFaturado", Hibernate.INTEGER) if (dadosRelatorio[27] != null) { bean.setConsumo((Integer) dadosRelatorio[27]); } // .addScalar("consumoMedio", Hibernate.INTEGER) if (dadosRelatorio[28] != null) { bean.setMediaConsumo(((Integer) dadosRelatorio[28]).toString()); } else { bean.setMediaConsumo("0"); } if (dadosRelatorio[34] != null) { bean.setIndicadorDebitoConta("" + (Short) dadosRelatorio[34]); } String endereco = ""; if (indicadorEmissao.equalsIgnoreCase("3")) { FiltroClienteImovel filtroClienteImovel = new FiltroClienteImovel(); filtroClienteImovel.adicionarCaminhoParaCarregamentoEntidade("cliente"); filtroClienteImovel.adicionarCaminhoParaCarregamentoEntidade("imovel"); filtroClienteImovel.adicionarCaminhoParaCarregamentoEntidade("clienteRelacaoTipo"); filtroClienteImovel.adicionarParametro(new ParametroNulo(FiltroClienteImovel.DATA_FIM_RELACAO)); filtroClienteImovel.adicionarParametro(new ParametroSimples(FiltroClienteImovel.CLIENTE_RELACAO_TIPO_ID, ClienteRelacaoTipo.RESPONSAVEL)); filtroClienteImovel.adicionarParametro(new ParametroSimples(FiltroClienteImovel.IMOVEL_ID, idImovel)); Collection colClienteImovel = getControladorUtil().pesquisar(filtroClienteImovel, ClienteImovel.class.getName()); if (colClienteImovel != null && !colClienteImovel.isEmpty()) { ClienteImovel clienteImovel = (ClienteImovel) colClienteImovel.iterator().next(); endereco = getControladorEndereco().pesquisarEnderecoClienteAbreviado(clienteImovel.getCliente().getId()); } else { endereco = getControladorEndereco().pesquisarEnderecoFormatado(idImovel); } } else { endereco = getControladorEndereco().pesquisarEnderecoFormatado(idImovel); } if (endereco != null) { bean.setEndereco(endereco); } else { bean.setEndereco(""); } bean.setInscricao(imovel.getInscricaoFormatada()); Categoria categoria = getControladorImovel().obterPrincipalCategoriaImovel(idImovel); if (categoria != null) { bean.setCategoria(categoria.getDescricaoAbreviada()); } else { bean.setCategoria(""); } EmitirContaHelper emitirContaHelper = new EmitirContaHelper(); emitirContaHelper.setIdImovel(idImovel); emitirContaHelper.setIdLocalidade(imovel.getLocalidade() != null ? imovel.getLocalidade().getId() : null); emitirContaHelper.setAmReferencia(anoMes); emitirContaHelper.setCategoriaImovel("" + categoria.getId()); Object[] mensagemConta = getControladorFaturamento().obterMensagemConta3Partes(emitirContaHelper, sistemaParametro); if (mensagemConta != null && !mensagemConta.equals("")) { bean.setMensagem1((String) mensagemConta[0]); bean.setMensagem2((String) mensagemConta[1]); bean.setMensagem3((String) mensagemConta[2]); } ImovelSubcategoria imovelSubcategoria = getControladorImovel().obterPrincipalSubcategoria(categoria.getId(), idImovel); if (imovelSubcategoria != null) { FiltroSubCategoria filtroSubcategoria = new FiltroSubCategoria(); filtroSubcategoria.adicionarParametro(new ParametroSimples(FiltroSubCategoria.ID, imovelSubcategoria.getComp_id() .getSubcategoria().getId())); Collection colecaoSubcategorias = getControladorUtil().pesquisar(filtroSubcategoria, Subcategoria.class.getName()); Subcategoria subcategoria = (Subcategoria) Util.retonarObjetoDeColecao(colecaoSubcategorias); bean.setTarifa(subcategoria.getDescricaoAbreviada()); } else { bean.setTarifa(""); } if (bean.getDataLeituraAnterior() != null && bean.getDataLeituraAtual() != null) { int diasConsumo = Util.obterQuantidadeDiasEntreDuasDatas(bean.getDataLeituraAnterior(), bean.getDataLeituraAtual()); bean.setDiasConsumo(diasConsumo); } IndicesAcrescimosImpontualidade iai = repositorioCobranca.pesquisarMenorIgualIndiceAcrescimoImpontualidade(anoMesConta); bean.setMulta(iai.getPercentualMulta()); bean.setEncargos(iai.getPercentualJurosMora()); QualidadeAgua qualidadeAgua = getControladorFaturamento().getQualidadeAgua(imovel, anoMes); if (qualidadeAgua != null) { bean.setTurbidez(qualidadeAgua.getNumeroIndiceTurbidez()); bean.setCloro(qualidadeAgua.getNumeroCloroResidual()); bean.setCor(qualidadeAgua.getNumeroIndiceCor()); bean.setPh(qualidadeAgua.getNumeroIndicePh()); if (qualidadeAgua.getNumeroIndiceColiformesTotais() != null) { if (qualidadeAgua.getNumeroIndiceColiformesTotais().compareTo(new BigDecimal("0.00")) != 0) { bean.setColiformesTotais(("" + qualidadeAgua.getNumeroIndiceColiformesTotais()).replace(".", ",")); } else { bean.setColiformesTotais("AUSENTE"); } } else { bean.setColiformesTotais("AUSENTE"); } if (qualidadeAgua.getNumeroIndiceColiformesFecais() != null) { if (qualidadeAgua.getNumeroIndiceColiformesFecais().compareTo(new BigDecimal("0.00")) != 0) { bean.setColiformesFecais(("" + qualidadeAgua.getNumeroIndiceColiformesFecais()).replace(".", ",")); } else { bean.setColiformesFecais("AUSENTE"); } } else { bean.setColiformesFecais("AUSENTE"); } bean.setAlcalinidade(qualidadeAgua.getNumeroIndiceAlcalinidade()); } // Representa��o num�rica c�digo de barras String representacaoNumericaCodBarra = null; representacaoNumericaCodBarra = this.getControladorArrecadacao().obterRepresentacaoNumericaCodigoBarra(3, valorConta, imovel.getLocalidade().getId(), idImovel, Util.formatarAnoMesParaMesAnoSemBarra(anoMes), new Integer(digitoVerificador.toString()), null, null, null, null, null, null, null); String representacaoNumericaCodBarraSemDigito = ""; String representacaoNumericaCodBarraFormatada = ""; if (representacaoNumericaCodBarra != null) { // Formata a representa��o n�merica do c�digo de // barras 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); representacaoNumericaCodBarraSemDigito = representacaoNumericaCodBarra.substring(0, 11) + representacaoNumericaCodBarra.substring(12, 23) + representacaoNumericaCodBarra.substring(24, 35) + representacaoNumericaCodBarra.substring(36, 47); bean.setRepresentacaoNumericaCodBarraFormatada(representacaoNumericaCodBarraFormatada); if (sistemaParametro.getCodigoEmpresaFebraban().equals(SistemaParametro.CODIGO_EMPRESA_FEBRABAN_COSAMA) && idFaturamentoGrupo.toString().equals("63")) { bean.setRepresentacaoNumericaCodBarraSemDigito(representacaoNumericaCodBarraSemDigito); bean.setIndicadorNaoGeraCodigoDeBarras("naoGeraContas"); } else { bean.setRepresentacaoNumericaCodBarraSemDigito(representacaoNumericaCodBarraSemDigito); bean.setIndicadorNaoGeraCodigoDeBarras("geraContas"); } } retorno.add(bean); } } catch (ErroRepositorioException ex) { throw new ControladorException("erro.sistema", ex); } return retorno; } private Collection ordenarColecaoParaConta(List colecaoDadosConta) { Collection retorno = new ArrayList(); int count = 0; // while (colecaoDadosConta.size() > count+1000) { // boolean primeiraVez = true; // while (primeiraVez || count % 500 != 0) { // primeiraVez = false; // retorno.add(colecaoDadosConta.get(count)); // retorno.add(colecaoDadosConta.get(count + 500)); // count++; // } // count = count + 500; // } int metadeRestante = 0; int qtdRestante = colecaoDadosConta.size() - retorno.size(); if (qtdRestante % 2 == 0) { metadeRestante = qtdRestante / 2; } else { metadeRestante = (qtdRestante + 1) / 2; } while (qtdRestante > 0) { retorno.add(colecaoDadosConta.get(count)); qtdRestante--; if (qtdRestante > 0) { retorno.add(colecaoDadosConta.get(count + metadeRestante)); qtdRestante--; } count++; } return retorno; } private Collection<RelatorioContaConsumosAnterioresBean> getColecaoRelatorioContaConsumosAnterioresBean(Integer anoMesConta, Integer idImovel, Integer idLigacaoTipo, int numeroMeses) throws ControladorException { Collection<RelatorioContaConsumosAnterioresBean> retorno = new ArrayList<RelatorioContaConsumosAnterioresBean>(); Integer anoMesFinal = Util.subtrairMesDoAnoMes(anoMesConta, numeroMeses); Collection<Object[]> colecaoDadosConsumo = getControladorMicromedicao().obterConsumosAnterioresAnormalidadeDoImovel(idImovel, anoMesFinal, anoMesConta, idLigacaoTipo); for (Object[] dadosConsumo : colecaoDadosConsumo) { if (dadosConsumo != null) { RelatorioContaConsumosAnterioresBean bean = new RelatorioContaConsumosAnterioresBean(); if (dadosConsumo[0] != null) { bean.setConsumo((Integer) dadosConsumo[0]); } if (dadosConsumo[2] != null) { bean.setMesAno(Util.formatarAnoMesParaMesAno((Integer) dadosConsumo[2])); } retorno.add(bean); } } return retorno; } private Collection<RelatorioContaDetailBean> getColecaoRelatorioContaServicosBean(Integer idConta, BigDecimal valorImpostos) throws ControladorException { Collection<RelatorioContaDetailBean> retorno = new ArrayList<RelatorioContaDetailBean>(); try { Conta conta = new Conta(); conta.setId(idConta); Collection<Object[]> colecaoDadosServicos = repositorioFaturamento.pesquisarDebitoCobradoConta(idConta); Collection<CreditoRealizado> colecaoDadosCreditos = repositorioFaturamento.pesquisarCreditoRealizado(conta); int quantidadeLinhasTotal = 0; if (valorImpostos.compareTo(new BigDecimal("0.00")) != 0) { quantidadeLinhasTotal = 13; } else { quantidadeLinhasTotal = 15; } int quantidadeCreditosAExibir = 0; if (colecaoDadosCreditos.size() > 3) { quantidadeCreditosAExibir = 3; } else { quantidadeCreditosAExibir = colecaoDadosCreditos.size(); } int quantidadeLinhas = 0; String descricaoOutros = "OUTROS SERVI�OS "; BigDecimal valor = new BigDecimal("0.00"); RelatorioContaDetailBean bean = null; for (Object[] dadosServico : colecaoDadosServicos) { if (dadosServico != null) { quantidadeLinhas = quantidadeLinhas + 1; if (quantidadeLinhas <= quantidadeLinhasTotal - quantidadeCreditosAExibir) { bean = new RelatorioContaDetailBean(); String descricao = ""; if (dadosServico[0] != null) { bean.setValor((BigDecimal) dadosServico[0]); } Short numeroPrestacoesDebito = (Short) dadosServico[1]; Short numeroPrestacoes = (Short) dadosServico[2]; Integer anoMesReferencia = (Integer) dadosServico[3]; if (anoMesReferencia == null || anoMesReferencia.equals("")) { anoMesReferencia = (Integer) dadosServico[7]; } Short numeroParcelasBonus = new Short("0"); if (dadosServico[4] != null) { bean.setCodigoServico(((Integer) dadosServico[4]).toString()); } if (dadosServico[5] != null) { descricao = (String) dadosServico[5]; } if (dadosServico[6] != null) { numeroParcelasBonus = (Short) dadosServico[6]; } int totalPrestacoes = numeroPrestacoes.intValue() - numeroParcelasBonus.intValue(); descricao += " " + Util.formatarAnoMesParaMesAno(anoMesReferencia) + " (" + numeroPrestacoesDebito + "/" + totalPrestacoes + ")"; bean.setDescricaoServico(descricao); retorno.add(bean); } else { if (dadosServico[0] != null) { valor = valor.add((BigDecimal) dadosServico[0]); } } } } if (valor.compareTo(new BigDecimal("0.00")) != 0) { bean = new RelatorioContaDetailBean(); bean.setDescricaoServico(descricaoOutros); bean.setValor(valor); retorno.add(bean); } valor = new BigDecimal("0.00"); descricaoOutros = "OUTROS CR�DITOS"; for (CreditoRealizado credito : colecaoDadosCreditos) { quantidadeLinhas = quantidadeLinhas + 1; if (quantidadeLinhas <= quantidadeLinhasTotal) { bean = new RelatorioContaDetailBean(); String descricao = ""; bean.setValor(credito.getValorCredito()); Short numeroPrestacoesCredito = credito.getNumeroPrestacaoCredito(); Short numeroPrestacoes = credito.getNumeroPrestacao(); Integer anoMesReferencia = credito.getAnoMesReferenciaCredito(); if (anoMesReferencia == null || anoMesReferencia.equals("")) { anoMesReferencia = credito.getAnoMesCobrancaCredito(); } Short numeroParcelasBonus = new Short("0"); bean.setCodigoServico(credito.getCreditoTipo().getId().toString()); descricao = credito.getCreditoTipo().getDescricao(); if (credito.getNumeroParcelaBonus() != null) { numeroParcelasBonus = credito.getNumeroParcelaBonus(); } int totalPrestacoes = numeroPrestacoes.intValue() - numeroParcelasBonus.intValue(); descricao += " " + Util.formatarAnoMesParaMesAno(anoMesReferencia) + " (" + numeroPrestacoesCredito + "/" + totalPrestacoes + ")"; bean.setDescricaoServico(descricao); retorno.add(bean); } else { valor = valor.add(credito.getValorCredito()); } } if (valor.compareTo(new BigDecimal("0.00")) != 0) { bean = new RelatorioContaDetailBean(); bean.setDescricaoServico(descricaoOutros); bean.setValor(valor); retorno.add(bean); } if (valorImpostos.compareTo(new BigDecimal("0.00")) != 0) { // linha 1 bean = new RelatorioContaDetailBean(); bean.setDescricaoServico("DEDUCAO LEI FEDERAL N.9430 DE 27/12/1996"); retorno.add(bean); // linha 2 bean = new RelatorioContaDetailBean(); Collection colecaoParmsImpostosDeduzidos = repositorioFaturamento.pesquisarParmsContaImpostosDeduzidos(idConta); StringBuilder descricaoAbreviadaImposto = new StringBuilder(); BigDecimal valorImpostosTotal = new BigDecimal("0.00"); // verifica se a cole��o � diferente de nulo if (colecaoParmsImpostosDeduzidos != null && !colecaoParmsImpostosDeduzidos.isEmpty()) { Iterator iteratorParmsImpostosDeduzidos = colecaoParmsImpostosDeduzidos.iterator(); while (iteratorParmsImpostosDeduzidos.hasNext()) { Object[] parmsImpostoDeduzido = (Object[]) iteratorParmsImpostosDeduzidos.next(); String descricaoTipoImposto = ""; if (parmsImpostoDeduzido[0] != null) { descricaoTipoImposto = (String) parmsImpostoDeduzido[0]; } String percentualAliquota = ""; if (parmsImpostoDeduzido[1] != null) { percentualAliquota = Util.formatarMoedaReal((BigDecimal) parmsImpostoDeduzido[1]); } BigDecimal valorImpostosDeduzidos = null; if (parmsImpostoDeduzido[2] != null) { valorImpostosDeduzidos = (BigDecimal) parmsImpostoDeduzido[2]; } // concatena a descri��o abreviada do tipo de imposto // com o // precentual de aliquota descricaoAbreviadaImposto.append(descricaoTipoImposto + "-" + percentualAliquota + "%"); // Completa com espa�os em branco descricaoAbreviadaImposto.append(" "); // adiciona o valor dos impostos valorImpostosTotal = valorImpostosTotal.add(valorImpostosDeduzidos); } } bean.setDescricaoServico(descricaoAbreviadaImposto.toString()); bean.setValor(valorImpostosTotal); retorno.add(bean); } } catch (ErroRepositorioException e) { throw new ControladorException("erro.sistema", e); } return retorno; } /** * * UC0905 - Gerar Relatario Acompanhamento Acao Cobran�a * * * @author Genival Barbosa * @date 26/08/2009 * * @param RelatorioAcompanhamentoAcoesCobrancaHelper * helper * * @return Lista de acoes de cobranca */ public List consultarColecaoAcaoCobranca(RelatorioAcompanhamentoAcoesCobrancaHelper helper) throws ControladorException { List colecaoAcaoCobranca; try { colecaoAcaoCobranca = this.repositorioCobranca.consultarColecaoAcaoCobranca(helper); } catch (ErroRepositorioException e) { e.printStackTrace(); throw new ControladorException("erro.sistema", e); } return colecaoAcaoCobranca; } /** * retorna conjunto de CAAC_ID(a��es do ciclo) selecionados [UC0258] Filtrar * Documentos de Cobran�a * * @author Anderson Italo * @data 03/08/2009 */ public Collection<Integer> pesquisarIdsAcoesCiclo(Collection<Integer> idsAcao, Integer anoMesReferencia) throws ControladorException { Collection<Integer> idsAcoesEncontradas = new ArrayList(); try { Collection colecaoCobrancaAcaoAtividadeCronograma = null; colecaoCobrancaAcaoAtividadeCronograma = this.repositorioCobranca.pesquisarAcoesCiclo(idsAcao, anoMesReferencia); Iterator colecaoIterator = colecaoCobrancaAcaoAtividadeCronograma.iterator(); while (colecaoIterator.hasNext()) { Integer idCobrancaAcaoAtividadeCronograma = (Integer) colecaoIterator.next(); idsAcoesEncontradas.add(idCobrancaAcaoAtividadeCronograma); } } catch (ErroRepositorioException e) { e.printStackTrace(); throw new ControladorException("erro.sistema", e); } return idsAcoesEncontradas; } /** * Este m�todo est� de acordo com o UC[0258]Filtrar Documento de Cobranca, � * utilizado pelo relat�rio filtrar documentos de cobran�a * * @author Anderson Italo * @date 19/08/2009 * * @param FiltrarDocumentoCobrancaHelper * filtro * @return List * @throws ControladorException */ public List filtrarCobrancaDocumento(FiltrarDocumentoCobrancaHelper filtro) throws ControladorException { List retorno = null; try { retorno = this.repositorioCobranca.filtrarCobrancaDocumento(filtro); } catch (ErroRepositorioException e) { e.printStackTrace(); throw new ControladorException("erro.sistema", e); } return retorno; } /** * Este m�todo est� de acordo com o UC[0258]Filtrar Documento de Cobranca, � * utilizado pelo relat�rio filtrar documentos de cobran�a para totalizar os * registros filtrados * * @author Anderson Italo * @date 19/08/2009 * * @param FiltrarDocumentoCobrancaHelper * filtro * @return Integer * @throws ControladorException */ public Integer filtrarCobrancaDocumentoCount(FiltrarDocumentoCobrancaHelper filtro) throws ControladorException { Integer retorno = 0; try { retorno = this.repositorioCobranca.filtrarCobrancaDocumentoCount(filtro); } catch (ErroRepositorioException e) { e.printStackTrace(); throw new ControladorException("erro.sistema", e); } return retorno; } /** * Este m�todo est� de acordo com o [UC0906] Gerar Relat�rio de * Acompanhamento das Supress�es, Religa��es e Reestabelecimentos. � * utilizado pelo relat�rio filtrar os registros do relatorio * * @author Anderson Italo * @date 28/08/2009 * * @param FiltroSupressoesReligacoesReestabelecimentoHelper * filtro * @return List * @throws ErroRepositorioException */ public List filtrarSupressoesReligacoesReestabelecimentos(FiltroSupressoesReligacoesReestabelecimentoHelper filtro) throws ControladorException { List retorno = null; try { retorno = this.repositorioCobranca.filtrarSupressoesReligacoesReestabelecimentos(filtro); } catch (ErroRepositorioException e) { e.printStackTrace(); throw new ControladorException("erro.sistema", e); } return retorno; } /** * * @author Arthur Carvalho * @date 14/09/2009 * * @param FiltroSupressoesReligacoesReestabelecimentoHelper * filtro * @return Collection * @throws ErroRepositorioException */ public Collection pesquisarParcelamentosSituacaoNormal(Integer idImovel) throws ControladorException { Collection retorno = null; try { retorno = this.repositorioCobranca.pesquisarParcelamentosSituacaoNormal(idImovel); } catch (ErroRepositorioException e) { e.printStackTrace(); throw new ControladorException("erro.sistema", e); } return retorno; } /** * Este m�todo est� de acordo com o UC[0258]Filtrar Documento de Cobranca * * @author Anderson Italo * @date 11/09/2009 * * @param FiltrarDocumentoCobrancaHelper * filtro * @return Collection<CobrancaDocumento> * @throws ControladorException */ public Collection<CobrancaDocumento> consultarCobrancaDocumento(FiltrarDocumentoCobrancaHelper filtro) throws ControladorException { Collection<CobrancaDocumento> documentosCobrancaEncontrados = new ArrayList(); try { List objetosEncontrados = null; Object obj = null; Object[] dados = null; CobrancaDocumento cobrancaDocumento = null; Imovel imovel = null; CobrancaAcao cobrancaAcao = null; DocumentoEmissaoForma documentoEmissaoForma = null; DocumentoTipo documentoTipo = null; Empresa empresa = null; objetosEncontrados = this.repositorioCobranca.consultarDocumentosCobranca(filtro); if (objetosEncontrados != null) { for (int i = 0; i < objetosEncontrados.size(); i++) { obj = objetosEncontrados.get(i); if (obj instanceof Object[]) { dados = (Object[]) obj; cobrancaDocumento = new CobrancaDocumento(); cobrancaDocumento.setId(new Integer(dados[0].toString())); // imovel if (dados[1] != null && !dados[1].toString().equals("")) { imovel = new Imovel(); imovel.setId(new Integer(dados[1].toString())); cobrancaDocumento.setImovel(imovel); } // a��o de cobran�a if (dados[2] != null && !dados[2].toString().equals("")) { cobrancaAcao = new CobrancaAcao(); cobrancaAcao.setId(new Integer(dados[2].toString())); cobrancaAcao.setDescricaoCobrancaAcao(dados[3].toString()); cobrancaDocumento.setCobrancaAcao(cobrancaAcao); } // data de emiss�o if (dados[4] != null && !dados[4].toString().equals("")) { String ano = dados[4].toString().substring(0, 4); String mes = dados[4].toString().substring(5, 7); String dia = dados[4].toString().substring(8, 10); String hora = dados[4].toString().substring(11, dados[4].toString().length() - 1); String dataFormatada = dia + "/" + mes + "/" + ano + " " + hora; cobrancaDocumento.setEmissao(Util.converteStringParaDateHora(dataFormatada)); } // forma de emiss�o documentoEmissaoForma = new DocumentoEmissaoForma(); documentoEmissaoForma.setId(new Integer(dados[5].toString())); documentoEmissaoForma.setDescricaoDocumentoEmissaoForma(dados[6].toString()); cobrancaDocumento.setDocumentoEmissaoForma(documentoEmissaoForma); // tipo do documento documentoTipo = new DocumentoTipo(); documentoTipo.setId(new Integer(dados[7].toString())); documentoTipo.setDescricaoDocumentoTipo(dados[8].toString()); cobrancaDocumento.setDocumentoTipo(documentoTipo); // empresa if (dados[9] != null && !dados[9].toString().equals("")) { empresa = new Empresa(); empresa.setId(new Integer(dados[9].toString())); empresa.setDescricaoAbreviada(dados[10].toString()); cobrancaDocumento.setEmpresa(empresa); } // valor do documento if (dados[11] != null && !dados[11].toString().equals("")) { cobrancaDocumento.setValorDocumento(new BigDecimal(dados[11].toString())); } documentosCobrancaEncontrados.add(cobrancaDocumento); } } } } catch (ErroRepositorioException e) { e.printStackTrace(); throw new ControladorException("erro.sistema", e); } return documentosCobrancaEncontrados; } /** * [UC0959] Gerar Arquivo Texto de Pagamentos das Contas em Cobran�a por * Empresa * * @author: Hugo Amorim * @date: 05/10/2009 */ public void gerarArquivoTextoPagamentosContasEmCobrancaEmpresa(Integer idEmpresa, Integer referenciaInicial, Integer referenciaFinal, int idFuncionalidadeIniciada, Integer idUnidadeNegocio) throws ControladorException { int idUnidadeIniciada = 0; ZipOutputStream zos = null; BufferedWriter out = null; try { // ------------------------- // Registrar o in�cio do processamento da Unidade de // Processamento do Batch // ------------------------- idUnidadeIniciada = getControladorBatch().iniciarUnidadeProcessamentoBatch(idFuncionalidadeIniciada, UnidadeProcessamento.UNIDADE_NEGOCIO, idUnidadeNegocio); // Vari�veis para a pagina��o da pesquisa // ======================================================================== boolean flagTerminou = false; final int quantidadeRegistros = 5000; int numeroIndice = 0; // ======================================================================== Collection colecaoDadosTxt = null; String nomeArquivo = "pagamentos_contas_cobranca_empresa_" + idEmpresa + "_" + Util.formatarDataComTracoAAAAMMDD(new Date()) + "_" + Util.formatarDataHHMM(new Date()) + "_" + idUnidadeNegocio + ""; // criar o arquivo zip File compactado = new File(nomeArquivo + ".zip"); // nomeZip zos = new ZipOutputStream(new FileOutputStream(compactado)); File leitura = new File(nomeArquivo + ".txt"); out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(leitura.getAbsolutePath()))); while (!flagTerminou) { colecaoDadosTxt = repositorioCobranca.pesquisarDadosArquivoTextoPagamentosContasCobrancaEmpresa(idEmpresa, referenciaInicial, referenciaFinal, quantidadeRegistros, numeroIndice, idUnidadeNegocio); if (colecaoDadosTxt != null && !colecaoDadosTxt.isEmpty()) { Iterator colecaoDadosTxtIterator = colecaoDadosTxt.iterator(); while (colecaoDadosTxtIterator.hasNext()) { GerarArquivoTextoPagamentosContasCobrancaEmpresaHelper helper = new GerarArquivoTextoPagamentosContasCobrancaEmpresaHelper(); StringBuilder arquivoTxt = new StringBuilder(); // cria um array de objetos para pegar os parametros // de retorno da pesquisa Object[] arraydadosTxt = (Object[]) colecaoDadosTxtIterator.next(); this.montarDadosGerarArquivoTextoPagamentosContasEmCobrancaEmpresa(arraydadosTxt, helper); this.montarArquivoTextoPagamentosContasEmCobrancaEmpresa(arquivoTxt, helper); arquivoTxt.append(System.getProperty("line.separator")); if (arquivoTxt != null && arquivoTxt.length() != 0) { out.write(arquivoTxt.toString()); out.flush(); } helper = null; } } // Incrementa o n� do indice da p�gina��o numeroIndice = numeroIndice + quantidadeRegistros; /** * Caso a cole��o de dados retornados for menor que a quantidade * de registros seta a flag indicando que a pagina��o terminou. */ if (colecaoDadosTxt == null || colecaoDadosTxt.size() < quantidadeRegistros) { flagTerminou = true; } if (colecaoDadosTxt != null) { colecaoDadosTxt.clear(); colecaoDadosTxt = null; } } ZipUtil.adicionarArquivo(zos, leitura); out.close(); leitura.delete(); getControladorBatch().encerrarUnidadeProcessamentoBatch(null, idUnidadeIniciada, false); } catch (ErroRepositorioException e) { e.printStackTrace(); getControladorBatch().encerrarUnidadeProcessamentoBatch(e, idUnidadeIniciada, true); throw new EJBException(e); } catch (IOException e) { e.printStackTrace(); getControladorBatch().encerrarUnidadeProcessamentoBatch(e, idUnidadeIniciada, true); } finally { IoUtil.fecharStream(out); IoUtil.fecharStream(zos); } } /** * [UC0959] Gerar Arquivo Texto de Pagamentos das Contas em Cobran�a por * Empresa * * @author: Hugo Amorim * @date: 05/10/2009 */ private void montarDadosGerarArquivoTextoPagamentosContasEmCobrancaEmpresa(Object[] arraydadosTxt, GerarArquivoTextoPagamentosContasCobrancaEmpresaHelper helper) { // Matricula if (arraydadosTxt[0] != null) { helper.setMatricula((Integer) (arraydadosTxt[0])); } // Nome Cliente if (arraydadosTxt[1] != null) { helper.setNomeClienteConta((String) (arraydadosTxt[1])); } // Referencia Conta if (arraydadosTxt[2] != null) { helper.setReferenciaConta((Integer) (arraydadosTxt[2])); } // Valor Conta if (arraydadosTxt[3] != null) { helper.setValorConta((BigDecimal) (arraydadosTxt[3])); } // Referencia Pagamento if (arraydadosTxt[4] != null) { helper.setReferenciaPagamento((Integer) (arraydadosTxt[4])); } // Tipo Pagamento if (arraydadosTxt[5] != null) { helper.setTipoPagamento((Integer) (arraydadosTxt[5])); } // Numero de Parcelas if (arraydadosTxt[6] != null) { helper.setNumeroParcelas((Integer) (arraydadosTxt[6])); } // Numero de Parcelas Total if (arraydadosTxt[7] != null) { helper.setNumeroParcelasTotal((Integer) (arraydadosTxt[7])); } // Valor Pagamento Principal if (arraydadosTxt[8] != null) { helper.setValorPagamentoPrincipal((BigDecimal) (arraydadosTxt[8])); } // Valor Encargos if (arraydadosTxt[9] != null) { helper.setValorEncargos((BigDecimal) (arraydadosTxt[9])); } // Percentual Empresa if (arraydadosTxt[10] != null) { helper.setPercentualEmpresa((BigDecimal) (arraydadosTxt[10])); } // id Unidade if (arraydadosTxt[11] != null) { helper.setIdUnidadeNegocio((Integer) (arraydadosTxt[11])); } // nome Unidade if (arraydadosTxt[12] != null) { helper.setNomeUnidadeNegocio((String) (arraydadosTxt[12])); } // id Localidade if (arraydadosTxt[13] != null) { helper.setIdLocalidade((Integer) (arraydadosTxt[13])); } // nome Localidade if (arraydadosTxt[14] != null) { helper.setNomeLocalidade((String) (arraydadosTxt[14])); } // Quadra if (arraydadosTxt[15] != null) { helper.setIdQuadra((Integer) (arraydadosTxt[15])); } // Lote if (arraydadosTxt[16] != null) { helper.setLote((Integer) (arraydadosTxt[16])); } // SubLote if (arraydadosTxt[17] != null) { helper.setSubLote((Integer) (arraydadosTxt[17])); } // Codigo Rota if (arraydadosTxt[18] != null) { helper.setCodigoRota((Integer) (arraydadosTxt[18])); } // Sequecial Rota if (arraydadosTxt[19] != null) { helper.setSequencialRota((Integer) (arraydadosTxt[19])); } // Codigo Setor if (arraydadosTxt[20] != null) { helper.setIdSetor((Integer) (arraydadosTxt[20])); } // Data Pagamento if (arraydadosTxt[21] != null) { helper.setDataPagamento((Date) (arraydadosTxt[21])); } // Valor Pagamento Total BigDecimal valorPagamentoTotal = Util.somaBigDecimal(helper.getValorPagamentoPrincipal(), helper.getValorEncargos()); helper.setValorPagamentoTotal(valorPagamentoTotal); // Valor Pagamento Empresa BigDecimal result = helper.getValorPagamentoTotal().multiply(helper.getPercentualEmpresa()); result = result.setScale(2, BigDecimal.ROUND_HALF_UP); BigDecimal valorPagamentoEmpresa = result.divide(new BigDecimal("100")); valorPagamentoEmpresa = valorPagamentoEmpresa.setScale(2, BigDecimal.ROUND_HALF_UP); helper.setValorPagamentoEmpresa(valorPagamentoEmpresa); } /** * [UC0959] Gerar Arquivo Texto de Pagamentos das Contas em Cobran�a por * Empresa * * @author: Hugo Amorim * @date: 05/10/2009 */ private void montarArquivoTextoPagamentosContasEmCobrancaEmpresa(StringBuilder arquivoTxt, GerarArquivoTextoPagamentosContasCobrancaEmpresaHelper helper) { // Matricula tam 09 if (helper.getMatricula() != null) { arquivoTxt.append(Util.truncarString(helper.getMatricula().toString(), 9) + ";"); } else { arquivoTxt.append(";"); } // Nome Cliente tam 40 if (helper.getNomeClienteConta() != null) { arquivoTxt.append(Util.truncarString(helper.getNomeClienteConta(), 40) + ";"); } else { arquivoTxt.append(";"); } // Referencia da Conta tam 7 if (helper.getReferenciaConta() != null) { arquivoTxt.append(Util.formatarAnoMesParaMesAno(helper.getReferenciaConta()) + ";"); } else { arquivoTxt.append(";"); } // Valor da Conta tam 15 if (helper.getValorConta() != null) { arquivoTxt.append(Util.truncarString(Util.formatarBigDecimalParaString(helper.getValorConta()), 15) + ";"); } else { arquivoTxt.append(";"); } // Referencia da Pagamento tam 7 if (helper.getReferenciaPagamento() != null) { arquivoTxt.append(Util.formatarAnoMesParaMesAno(helper.getReferenciaPagamento()) + ";"); } else { arquivoTxt.append(";"); } // Tipo da Pagamento tam 1 if (helper.getTipoPagamento() != null) { arquivoTxt.append(Util.truncarString(helper.getTipoPagamento().toString(), 1) + ";"); } else { arquivoTxt.append(";"); } // Numero de Parcelas tam 2 if (helper.getNumeroParcelas() != null) { arquivoTxt.append(Util.truncarString(helper.getNumeroParcelas().toString(), 2) + ";"); } else { arquivoTxt.append(";"); } // Numero de Parcelas Total tam 2 if (helper.getNumeroParcelasTotal() != null) { arquivoTxt.append(Util.truncarString(helper.getNumeroParcelasTotal().toString(), 2) + ";"); } else { arquivoTxt.append(";"); } // Valor da Conta tam 15 if (helper.getValorPagamentoPrincipal() != null) { arquivoTxt.append(Util.truncarString(Util.formatarBigDecimalParaString(helper.getValorPagamentoPrincipal()), 15) + ";"); } else { arquivoTxt.append(";"); } // Valor da Conta tam 15 if (helper.getValorEncargos() != null) { arquivoTxt.append(Util.truncarString(Util.formatarBigDecimalParaString(helper.getValorEncargos()), 15) + ";"); } else { arquivoTxt.append(";"); } // Valor da Pagamento Total tam 15 if (helper.getValorPagamentoTotal() != null) { arquivoTxt.append(Util.truncarString(Util.formatarBigDecimalParaString(helper.getValorPagamentoTotal()), 15) + ";"); } else { arquivoTxt.append(";"); } // Valor da Percentual Empresa tam 5 if (helper.getPercentualEmpresa() != null) { arquivoTxt.append(Util.truncarString(Util.formatarBigDecimalParaString(helper.getPercentualEmpresa()), 5) + ";"); } else { arquivoTxt.append(";"); } // Valor da Pagamento Empresa tam 15 if (helper.getValorPagamentoEmpresa() != null) { arquivoTxt.append(Util.truncarString(Util.formatarBigDecimalParaString(helper.getValorPagamentoEmpresa()), 15) + ";"); } else { arquivoTxt.append(";"); } // idUnidadeNegocio tam 04 if (helper.getIdUnidadeNegocio() != null) { arquivoTxt.append(Util.truncarString(helper.getIdUnidadeNegocio().toString(), 4) + ";"); } else { arquivoTxt.append(";"); } // nomeUnidadeNegocio tam 50 if (helper.getNomeUnidadeNegocio() != null) { arquivoTxt.append(Util.truncarString(helper.getNomeUnidadeNegocio(), 50) + ";"); } else { arquivoTxt.append(";"); } // IdLocalidade tam 04 if (helper.getIdLocalidade() != null) { arquivoTxt.append(Util.truncarString(helper.getIdLocalidade().toString(), 4) + ";"); } else { arquivoTxt.append(";"); } // NomeLocalidade tam 30 if (helper.getNomeLocalidade() != null) { arquivoTxt.append(Util.truncarString(helper.getNomeLocalidade(), 30) + ";"); } else { arquivoTxt.append(";"); } // idSetor tam 04 if (helper.getIdSetor() != null) { arquivoTxt.append(Util.truncarString(helper.getIdSetor().toString(), 4) + ";"); } else { arquivoTxt.append(";"); } // idQuadra tam 07 if (helper.getIdQuadra() != null) { arquivoTxt.append(Util.truncarString(helper.getIdQuadra().toString(), 7) + ";"); } else { arquivoTxt.append(";"); } // lote tam 04 if (helper.getLote() != null) { arquivoTxt.append(Util.truncarString(helper.getLote().toString(), 4) + ";"); } else { arquivoTxt.append(";"); } // subLote tam 04 if (helper.getSubLote() != null) { arquivoTxt.append(Util.truncarString(helper.getSubLote().toString(), 4) + ";"); } else { arquivoTxt.append(";"); } // codigoRota tam 06 if (helper.getCodigoRota() != null) { arquivoTxt.append(Util.truncarString(helper.getCodigoRota().toString(), 6) + ";"); } else { arquivoTxt.append(";"); } // sequenciaRota tam 09 if (helper.getSequencialRota() != null) { arquivoTxt.append(Util.truncarString(helper.getSequencialRota().toString(), 9) + ";"); } else { arquivoTxt.append(";"); } // dataPagamento tam 10 if (helper.getDataPagamento() != null) { String dataPagamento = Util.formatarData(helper.getDataPagamento()); arquivoTxt.append(Util.truncarString(dataPagamento.toString(), 10) + ";"); } else { arquivoTxt.append(";"); } } public Collection obterUnidadeNegocioPagamentosEmpresaCobrancaConta() throws ControladorException { Collection colecaoUnidadeNegocio = null; Collection colecaoIdsUnidades = null; try { colecaoIdsUnidades = repositorioCobranca.obterUnidadeNegocioPagamentosEmpresaCobrancaConta(); if (colecaoIdsUnidades != null && !colecaoIdsUnidades.isEmpty()) { colecaoUnidadeNegocio = new ArrayList(); Iterator iter = colecaoIdsUnidades.iterator(); while (iter.hasNext()) { Integer idUnidade = (Integer) iter.next(); UnidadeNegocio unidadeNegocio = new UnidadeNegocio(); unidadeNegocio.setId(idUnidade); colecaoUnidadeNegocio.add(unidadeNegocio); } } } catch (ErroRepositorioException e) { e.printStackTrace(); } return colecaoUnidadeNegocio; } /** * Este m�todo est� de acordo com o [UC0901] Gerar Metas do Ciclo * * @author Anderson Italo * @date 21/09/2009 * * @param Integer * idCicloMeta * @throws ControladorException */ public void removerCicloMetaGrupo(Integer idCicloMeta) throws ControladorException { try { this.repositorioCobranca.removerCicloMetaGrupo(idCicloMeta); } catch (ErroRepositorioException e) { e.printStackTrace(); throw new ControladorException("erro.sistema", e); } } /** * * [UC0000] - Gerar Metas do Cilo Pesquisar a quantidade de imoveis em cada * grupo/localidade * * @author Anderson Italo * @date 25/09/2009 * * @param idsLast * Colecao de ids de situacao de liga��o de �gua * @return Colecao no formato [idGrupo, idLocalidade, qtdImoveis] */ public Collection pesquisarQuantidadeImoveisPorGrupoLocalidade(Collection colecaoIdsSituacaoLigacaoAgua) throws ControladorException { try { Collection colecaoQuantidadeImoveis = repositorioCobranca .pesquisarQuantidadeImoveisPorGrupoLocalidade(colecaoIdsSituacaoLigacaoAgua); return colecaoQuantidadeImoveis; } catch (ErroRepositorioException e) { e.printStackTrace(); throw new ControladorException("erro.sistema", e); } } /** * [UC????] Relatorio Comando Documento Cobranca Alterado para verificar * tipo da a��o a partir da tabela documento_tipo * * @author R�mulo Aur�lio, Anderson Italo * * @data 20/10/2009, 04/05/2010 */ public DocumentoTipo pesquisarTipoAcaoCobrancaParaRelatorio(Integer idCobrancaAcaoAtividadeComando, Integer idCobrancaAcaoAtividadeCronograma) throws ControladorException { DocumentoTipo retorno = null; try { retorno = repositorioCobranca.pesquisarTipoAcaoCobrancaParaRelatorio(idCobrancaAcaoAtividadeComando, idCobrancaAcaoAtividadeCronograma); } catch (ErroRepositorioException e) { e.printStackTrace(); } return retorno; } /** * [UCXXXX] - Gerar Relatorio Comando Documento Cobranca * * @author R�mulo Aur�lio * @date 20/10/2009 * * @return * @throws ErroRepositorioException */ public Collection<RelatorioComandoDocumentoCobrancaHelper> gerarRelatorioComandoDocumentoCobranca(Integer idCobrancaAcaoCronograma, Integer idCobrancaAcaoComando) throws ControladorException { Collection<RelatorioComandoDocumentoCobrancaHelper> retorno = new ArrayList<RelatorioComandoDocumentoCobrancaHelper>(); try { Collection<CobrancaDocumento> colecaoDocumentoCobranca = repositorioCobranca.pesquisarCobrancaDocumentoParaRelatorio( idCobrancaAcaoCronograma, idCobrancaAcaoComando); for (CobrancaDocumento cobrancaDocumento : colecaoDocumentoCobranca) { String inscricao = getControladorImovel().pesquisarInscricaoImovel(cobrancaDocumento.getImovel().getId()); String clienteUsuario = getControladorImovel().consultarClienteUsuarioImovel(cobrancaDocumento.getImovel().getId()); String endereco = getControladorEndereco().pesquisarEndereco(cobrancaDocumento.getImovel().getId()); String codigoRota = cobrancaDocumento.getImovel().getQuadra().getRota().getCodigo().toString(); String sequencialRota = ""; if (cobrancaDocumento.getImovel().getNumeroSequencialRota() != null) { sequencialRota = cobrancaDocumento.getImovel().getNumeroSequencialRota().toString(); } if (cobrancaDocumento.getImovel().getNumeroSequencialRota() != null) { sequencialRota = cobrancaDocumento.getImovel().getNumeroSequencialRota().toString(); } String idFaturamentoGrupo = cobrancaDocumento.getImovel().getQuadra().getRota().getFaturamentoGrupo() .getDescricaoAbreviada(); String descricaoSituacaoLigacaoAgua = cobrancaDocumento.getLigacaoAguaSituacao().getDescricao(); String descricaoSituacaoLigacaoEsgoto = cobrancaDocumento.getLigacaoEsgotoSituacao().getDescricao(); Categoria categoriaPrincipal = getControladorImovel().obterPrincipalCategoriaImovel(cobrancaDocumento.getImovel().getId()); FiltroHidrometroInstalacaoHistorico filtroHidrometroInstalacaoHistorico = new FiltroHidrometroInstalacaoHistorico(); filtroHidrometroInstalacaoHistorico.adicionarParametro(new ParametroSimples( FiltroHidrometroInstalacaoHistorico.LIGACAO_AGUA_ID, cobrancaDocumento.getImovel().getId())); filtroHidrometroInstalacaoHistorico .adicionarCaminhoParaCarregamentoEntidade(FiltroHidrometroInstalacaoHistorico.HIDROMETRO); filtroHidrometroInstalacaoHistorico .adicionarCaminhoParaCarregamentoEntidade(FiltroHidrometroInstalacaoHistorico.HIDROMETRO_LOCAL_INSTALACAO); Collection colecaoHidrometroInstalacaoHistorico = repositorioUtil.pesquisar(filtroHidrometroInstalacaoHistorico, HidrometroInstalacaoHistorico.class.getName()); String numeroHidrometro = ""; String localizacaoHidrometro = ""; if (colecaoHidrometroInstalacaoHistorico != null && !colecaoHidrometroInstalacaoHistorico.isEmpty()) { HidrometroInstalacaoHistorico hidrometroInstalacaoHistorico = (HidrometroInstalacaoHistorico) colecaoHidrometroInstalacaoHistorico .iterator().next(); numeroHidrometro = hidrometroInstalacaoHistorico.getHidrometro().getNumero(); localizacaoHidrometro = hidrometroInstalacaoHistorico.getHidrometroLocalInstalacao().getDescricaoAbreviada(); } String representacaoNumericaCodBarra = ""; // Obt�m a representa��o num�rica do // c�digode // barra representacaoNumericaCodBarra = this.getControladorArrecadacao().obterRepresentacaoNumericaCodigoBarra(5, cobrancaDocumento.getValorDocumento(), cobrancaDocumento.getLocalidade().getId(), cobrancaDocumento.getImovel().getId(), null, null, null, null, String.valueOf(cobrancaDocumento.getNumeroSequenciaDocumento()), cobrancaDocumento.getDocumentoTipo().getId(), null, null, null); // Formata a representa��o n�merica do // c�digo de // barras String representacaoNumericaCodBarraFormatada = representacaoNumericaCodBarra.substring(0, 11) + "-" + representacaoNumericaCodBarra.substring(11, 12) + " " + representacaoNumericaCodBarra.substring(12, 23) + "-" + representacaoNumericaCodBarra.substring(23, 24) + " " + representacaoNumericaCodBarra.substring(24, 35) + "-" + representacaoNumericaCodBarra.substring(35, 36) + " " + representacaoNumericaCodBarra.substring(36, 47) + "-" + representacaoNumericaCodBarra.substring(47, 48); String representacaoNumericaCodBarraSemDigito = representacaoNumericaCodBarra.substring(0, 11) + representacaoNumericaCodBarra.substring(12, 23) + representacaoNumericaCodBarra.substring(24, 35) + representacaoNumericaCodBarra.substring(36, 47); RelatorioComandoDocumentoCobrancaHelper helper = new RelatorioComandoDocumentoCobrancaHelper(); helper.setMatricula(cobrancaDocumento.getImovel().getMatriculaFormatada()); helper.setInscricao(inscricao); helper.setNomeCliente(clienteUsuario); helper.setEndereco(endereco); helper.setCodigoRota(codigoRota); helper.setSequencialRota(sequencialRota); helper.setIdDocumentoCobranca(cobrancaDocumento.getId().toString()); helper.setIdFaturamentoGrupo(idFaturamentoGrupo); helper.setSituacaoLigacaoAgua(descricaoSituacaoLigacaoAgua); helper.setSituacaoLigacaoEsgoto(descricaoSituacaoLigacaoEsgoto); helper.setDataEmissao(Util.formatarData(new Date())); helper.setCategoriaPrincipal(categoriaPrincipal.getDescricao()); helper.setRotaGrupo(idFaturamentoGrupo + "/" + Util.adicionarZerosEsquedaNumeroTruncando(6, codigoRota) + "/" + Util.adicionarZerosEsquedaNumeroTruncando(4, sequencialRota)); helper.setLocalizacaoHidrometro(localizacaoHidrometro); helper.setNumeroHidrometro(numeroHidrometro); helper.setValor(Util.formatarMoedaReal(cobrancaDocumento.getValorDocumento())); Date dataVencimento = Util.adicionarNumeroDiasDeUmaData(new Date(), cobrancaDocumento.getCobrancaAcao() .getNumeroDiasVencimento()); helper.setDataVencimento(Util.formatarData(dataVencimento)); helper.setNumeroDocumento(cobrancaDocumento.getId().toString()); Integer idOrdemServico = null; idOrdemServico = repositorioCobranca.obterOrdemServicoAssociadaDocumentoCobranca(cobrancaDocumento.getId()); if (idOrdemServico != null) { helper.setNumero(idOrdemServico.toString()); } else { helper.setNumero(""); } helper.setRepresentacaoNumericaCodBarraFormatada(representacaoNumericaCodBarraFormatada); helper.setRepresentacaoNumericaCodBarraSemDigito(representacaoNumericaCodBarraSemDigito); retorno.add(helper); } } catch (ErroRepositorioException e) { throw new ControladorException("erro.sistema", e); } return retorno; } /** * [UC0960] Transferir Rotas entre Grupos e Empresas * * @author Anderson Italo * @date 26/10/2009 * * @param idGrupoFaturamentoDestino * @param idGrupoCobrancaDestino * @param idEmpresaFaturamentoDestino * @param idEmpresaCobrancaDestino * @param usuarioLogado */ public void transferirRotasEntreGrupoEmpresa(FaturamentoGrupo grupoFaturamentoDestino, CobrancaGrupo grupoCobrancaDestino, Empresa empresaFaturamentoDestino, Empresa empresaCobrancaDestino, Collection colecaoRotas, Usuario usuarioLogado) throws ControladorException { /* * 7.1. Caso n�o tenha sido informado algum dos par�metros para onde * devem ser transferidas as rotas, este campo n�o deve ser alterado. * 7.2. Para cada par�metro de destino informado, todas as rotas da * sele��o dever�o ter os respectivos campos alterados na tabela ROTA. */ for (Iterator iter = colecaoRotas.iterator(); iter.hasNext();) { Rota rota = (Rota) iter.next(); if (grupoFaturamentoDestino != null) { if (grupoFaturamentoDestino.getId() != rota.getFaturamentoGrupo().getId()) { rota.setFaturamentoGrupo(grupoFaturamentoDestino); rota.setUltimaAlteracao(new Date()); } } if (grupoCobrancaDestino != null) { if (grupoCobrancaDestino.getId() != rota.getCobrancaGrupo().getId()) { rota.setCobrancaGrupo(grupoCobrancaDestino); rota.setUltimaAlteracao(new Date()); } } if (empresaFaturamentoDestino != null) { if (empresaFaturamentoDestino.getId() != rota.getEmpresa().getId()) { rota.setEmpresa(empresaFaturamentoDestino); rota.setUltimaAlteracao(new Date()); } } if (empresaCobrancaDestino != null) { if (empresaCobrancaDestino.getId() != rota.getEmpresaCobranca().getId()) { rota.setEmpresaCobranca(empresaCobrancaDestino); rota.setUltimaAlteracao(new Date()); } } // colocar registro de transa��o e atualizar // this.getControladorMicromedicao().atualizarRota() /* * Chama o registrar operacao s� no final do while para n�o ocorrer * erro no banco de dados "duplicate key violates unique constraint" * na tabela "seguranca.operacao_tabela", registrando a operacao * apenas uma vez. */ if (iter.hasNext() == false) { // ------------ REGISTRAR TRANSA��O---------------------------- RegistradorOperacao registradorOperacao = new RegistradorOperacao(Operacao.TRANSFERIR_ROTA_ENTRE_GRUPO_EMPRESA, rota.getId(), rota.getId(), new UsuarioAcaoUsuarioHelper(usuarioLogado, UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO)); registradorOperacao.registrarOperacao(rota); // ------------ REGISTRAR TRANSA��O---------------------------- } this.getControladorUtil().atualizar(rota); } } /** * [] - * * @author: Vivianne Sousa * @date: 06/11/2009 */ public void gerarCartasDeFinalDeAno(Integer idRota, Integer idFuncionalidadeIniciada) throws ControladorException { int idUnidadeIniciada = 0; try { /* * Registrar o in�cio do processamento da Unidade de Processamento * do Batch */ idUnidadeIniciada = getControladorBatch().iniciarUnidadeProcessamentoBatch(idFuncionalidadeIniciada, UnidadeProcessamento.ROTA, (idRota)); // Deleta DocumentoCobranca e DocumentoCobrancaItem // da rota a ser processada com DocumentoTipo = // CARTA_DE_FINAL_DE_ANO_2009 deletarCobrancaDocumentoECobrancaDocumentoItem(idRota, DocumentoTipo.CARTA_DE_FINAL_DE_ANO_2009); deletarCartaFinalAno(idRota); DocumentoEmissaoForma documentoEmissaoForma = new DocumentoEmissaoForma(); documentoEmissaoForma.setId(DocumentoEmissaoForma.INDIVIDUAL); DocumentoTipo documentoTipo = new DocumentoTipo(); documentoTipo.setId(DocumentoTipo.CARTA_DE_FINAL_DE_ANO_2009); ResolucaoDiretoria resolucaoDiretoria = new ResolucaoDiretoria(); resolucaoDiretoria.setId(13); BigDecimal valorLimite = new BigDecimal("10.00"); Rota rota = new Rota(); rota.setId(idRota); Empresa empresa = new Empresa(); empresa.setId(repositorioMicromedicao.obterIdEmpresaPorRota(rota)); Collection colecaoImoveis = repositorioCobranca.pesquisarDadosImoveisPorRota(idRota); StringBuilder cobrancaDocumentoTxt = new StringBuilder(); int sequencialImpressao = 0; if (colecaoImoveis != null && !colecaoImoveis.isEmpty()) { Iterator iteratorImoveis = colecaoImoveis.iterator(); while (iteratorImoveis.hasNext()) { Imovel imovel = (Imovel) iteratorImoveis.next(); // [SB0001]-Verificar se o im�vel possue d�bitos que // satisfa�a ObterDebitoImovelOuClienteHelper obterDebitoImovelOuCliente = obterDebitoImovelOuCliente(1, // Indicador // de // d�bito // do // im�vel imovel.getId().toString(), // Matr�cula do im�vel null, // C�digo do cliente null, // Tipo de rela��o cliente im�vel "000101", // Refer�ncia inicial do d�bito "200910", // Refer�ncia final do d�bito Util.converteStringParaDate("01/01/0001"), // Inicio // Vencimento Util.converteStringParaDate("31/12/9999"), // Final // Vencimento 1, // Indicador de pagamento ConstantesSistema.NAO, // conta em revis�o ConstantesSistema.SIM, // D�bito a cobrar ConstantesSistema.SIM, // cr�dito a realizar ConstantesSistema.NAO, // Indicador de notas // promiss�rias ConstantesSistema.SIM, // guias pagamento ConstantesSistema.SIM, // acr�scimos impontualidade true); // 4. caso de lista de conta n�o esteja vazia if (obterDebitoImovelOuCliente.getColecaoContasValores() != null && !obterDebitoImovelOuCliente.getColecaoContasValores().isEmpty() && obterDebitoImovelOuCliente.getColecaoContasValores().size() >= 2) { BigDecimal valorAcrescimosImpontualidadeTotal = BigDecimal.ZERO; BigDecimal valorTotalContas = BigDecimal.ZERO; BigDecimal valorDebitoTotalAtualizado = BigDecimal.ZERO; BigDecimal valorTotalGuiasPagamento = BigDecimal.ZERO; BigDecimal valorTotalRestanteServicosACobrar = BigDecimal.ZERO; BigDecimal valorTotalRestanteParcelamentosACobrar = BigDecimal.ZERO; BigDecimal valorCreditoARealizar = BigDecimal.ZERO; BigDecimal valorTotalMultasDasContas = BigDecimal.ZERO; BigDecimal valorTotalJurosMoraDasContas = BigDecimal.ZERO; BigDecimal valorTotalAtualizacoesMonetariasDasContas = BigDecimal.ZERO; BigDecimal descontoTotalPagamentoAVista = new BigDecimal("0.00"); BigDecimal valorPagamentoAVista = new BigDecimal("0.00"); BigDecimal valorTotalImpostosConta = new BigDecimal("0.00"); IndicadoresParcelamentoHelper indicadoresParcelamentoHelper = new IndicadoresParcelamentoHelper(); indicadoresParcelamentoHelper.setIndicadorDebitosACobrar(new Integer("1")); indicadoresParcelamentoHelper.setIndicadorCreditoARealizar(new Integer("1")); indicadoresParcelamentoHelper.setIndicadorGuiasPagamento(new Integer("1")); indicadoresParcelamentoHelper.setIndicadorAcrescimosImpotualidade(new Integer("1")); indicadoresParcelamentoHelper.setIndicadorContasRevisao(new Integer("2")); indicadoresParcelamentoHelper.setIndicadorDividaAtiva(new Integer("3")); Object[] valorDebitoTotalEAcrescimoImpontualidadeTotal = calcularValorTotalDebitoAtualizadoParaParcelamento( obterDebitoImovelOuCliente, indicadoresParcelamentoHelper, false); if (valorDebitoTotalEAcrescimoImpontualidadeTotal != null) { valorDebitoTotalAtualizado = (BigDecimal) valorDebitoTotalEAcrescimoImpontualidadeTotal[0]; valorAcrescimosImpontualidadeTotal = (BigDecimal) valorDebitoTotalEAcrescimoImpontualidadeTotal[1]; valorTotalContas = (BigDecimal) valorDebitoTotalEAcrescimoImpontualidadeTotal[2]; valorTotalGuiasPagamento = (BigDecimal) valorDebitoTotalEAcrescimoImpontualidadeTotal[3]; valorTotalRestanteServicosACobrar = (BigDecimal) valorDebitoTotalEAcrescimoImpontualidadeTotal[4]; valorTotalRestanteParcelamentosACobrar = (BigDecimal) valorDebitoTotalEAcrescimoImpontualidadeTotal[5]; valorCreditoARealizar = (BigDecimal) valorDebitoTotalEAcrescimoImpontualidadeTotal[6]; valorTotalMultasDasContas = (BigDecimal) valorDebitoTotalEAcrescimoImpontualidadeTotal[7]; valorTotalJurosMoraDasContas = (BigDecimal) valorDebitoTotalEAcrescimoImpontualidadeTotal[8]; valorTotalAtualizacoesMonetariasDasContas = (BigDecimal) valorDebitoTotalEAcrescimoImpontualidadeTotal[9]; } if (valorTotalContas.compareTo(valorLimite) >= 0 && valorDebitoTotalAtualizado.compareTo(new BigDecimal("0.00")) == 1) { Integer numeroReparcelamentoConsecutivos = 0; if (imovel.getNumeroReparcelamentoConsecutivos() != null) { numeroReparcelamentoConsecutivos = new Integer(imovel.getNumeroReparcelamentoConsecutivos().toString()); } // CARREGANDO O HELPER COM AS INFORMA��ES DO // PARCELAMENTO ObterOpcoesDeParcelamentoHelper helper = new ObterOpcoesDeParcelamentoHelper(resolucaoDiretoria.getId(), imovel.getId(), null, imovel.getLigacaoAguaSituacao().getId(), imovel.getLigacaoEsgotoSituacao().getId(), imovel.getImovelPerfil().getId(), "010001", // Refer�ncia inicial do d�bito new Integer("2"), // indicadorRestabelecimento obterDebitoImovelOuCliente.getColecaoContasValores(), valorDebitoTotalAtualizado, valorTotalMultasDasContas, valorTotalJurosMoraDasContas, valorTotalAtualizacoesMonetariasDasContas, numeroReparcelamentoConsecutivos, obterDebitoImovelOuCliente.getColecaoGuiasPagamentoValores(), Usuario.USUARIO_BATCH, valorTotalRestanteParcelamentosACobrar, new Integer("000101"), // Refer�ncia // inicial // do // d�bito new Integer("200910"), // Refer�ncia final // do d�bito indicadoresParcelamentoHelper, valorCreditoARealizar); NegociacaoOpcoesParcelamentoHelper opcoesParcelamento = this.obterOpcoesDeParcelamento(helper); // Defini��o do valor do documento e do valor do // desconto if (opcoesParcelamento.getValorTotalDescontoPagamentoAVista() != null) { descontoTotalPagamentoAVista = opcoesParcelamento.getValorTotalDescontoPagamentoAVista(); } valorTotalImpostosConta = obterDebitoImovelOuCliente.obterValorImpostosDasContas(obterDebitoImovelOuCliente .getColecaoContasValores()); valorPagamentoAVista = valorDebitoTotalAtualizado.subtract(descontoTotalPagamentoAVista); valorPagamentoAVista = valorPagamentoAVista.subtract(valorTotalImpostosConta); if (valorPagamentoAVista.compareTo(new BigDecimal("0.00")) == 1) { // [SB0002]Gerar Dados das Cartas ExtratoDebitoRelatorioHelper extratoHelper = gerarDocumentoCobranca(imovel, ConstantesSistema.NAO, obterDebitoImovelOuCliente.getColecaoContasValores(), obterDebitoImovelOuCliente.getColecaoGuiasPagamentoValores(), obterDebitoImovelOuCliente.getColecaoDebitoACobrar(), valorAcrescimosImpontualidadeTotal, descontoTotalPagamentoAVista, null, documentoEmissaoForma, documentoTipo, null, null, empresa, null, null, valorPagamentoAVista, new Date(), obterDebitoImovelOuCliente.getColecaoCreditoARealizar(), null, resolucaoDiretoria, null, null, null); // inicio arquivo!!! CobrancaDocumento cobrancaDoc = extratoHelper.getDocumentoCobranca(); String nomeClienteUsuario = null; Collection colecaoCobrancaDocumentoItemConta = null; Integer idClienteResponsavel = null; if (cobrancaDoc != null) { // sequencialImpressao++; CobrancaDocumento cobrancaDocumento = (CobrancaDocumento) Util .retonarObjetoDeColecao(repositorioCobranca.pesquisarCobrancaDocumentoParaEmitir(0, cobrancaDoc.getId())); try { nomeClienteUsuario = this.repositorioClienteImovel.pesquisarNomeClientePorImovel(cobrancaDocumento .getImovel().getId()); idClienteResponsavel = this.repositorioClienteImovel.retornaIdClienteResponsavel(cobrancaDocumento .getImovel().getId()); colecaoCobrancaDocumentoItemConta = extratoHelper.getColecaoCobrancaDocumentoItemContas(); // this.repositorioCobranca.selecionarCobrancaDocumentoItemReferenteConta(cobrancaDocumento); } catch (ErroRepositorioException ex) { ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } if (colecaoCobrancaDocumentoItemConta != null && !colecaoCobrancaDocumentoItemConta.isEmpty()) { cobrancaDocumentoTxt = new StringBuilder(); String idGrupo = null; // id do grupo idGrupo = "" + cobrancaDocumento.getQuadra().getRota().getCobrancaGrupo().getId(); // Grupo-XX Entrega-XXXXXXXXXX String textoGrupoEntrega = "GRUPO-" + idGrupo + " ENTREGA-"; if (cobrancaDocumento.getEmpresa() != null) { textoGrupoEntrega += cobrancaDocumento.getEmpresa().getDescricao(); } cobrancaDocumentoTxt.append(Util.completaString(textoGrupoEntrega, 27)); // Inscri��o String idLocalidade = Util.adicionarZerosEsquedaNumero(3, "" + cobrancaDocumento.getLocalidade().getId()); String codigoSetorComercial = Util.adicionarZerosEsquedaNumero(3, "" + cobrancaDocumento.getCodigoSetorComercial()); String numeroQuadra = Util.adicionarZerosEsquedaNumero(3, "" + cobrancaDocumento.getNumeroQuadra()); String lote = Util.adicionarZerosEsquedaNumero(4, "" + cobrancaDocumento.getImovel().getLote()); String subLote = Util.adicionarZerosEsquedaNumero(3, "" + cobrancaDocumento.getImovel().getSubLote()); cobrancaDocumentoTxt.append(Util.completaString(idLocalidade + "." + codigoSetorComercial + "." + numeroQuadra + "." + lote + "." + subLote, 20)); // Nome da Localidade cobrancaDocumentoTxt.append(Util.completaString("" + cobrancaDocumento.getLocalidade().getDescricao(), 25)); // nome cliente cobrancaDocumentoTxt.append(Util.completaString(nomeClienteUsuario, 50)); String nomeBairro = ""; String nomeMunicipio = ""; String siglaUnidadeFederecao = ""; String cepFormatado = ""; String[] parmsEnderecoImovel = getControladorEndereco().pesquisarEnderecoFormatadoDividido( cobrancaDocumento.getImovel().getId()); if (parmsEnderecoImovel != null) { // nome do bairro nomeBairro = "" + parmsEnderecoImovel[3]; // nome do municipio nomeMunicipio = "" + parmsEnderecoImovel[1]; // sigla da unidade federa��o siglaUnidadeFederecao = parmsEnderecoImovel[2]; cepFormatado = parmsEnderecoImovel[4]; } // endere�o do cliente com op��o de // recebimento via correio if (idClienteResponsavel != null) { String[] parmsEndereco = getControladorEndereco().pesquisarEnderecoClienteAbreviadoDividido( idClienteResponsavel); // endere�o sem municipio e unidade // federa��o cobrancaDocumentoTxt.append(Util.completaString(parmsEndereco[0], 50)); // nome do bairro nomeBairro = "" + parmsEndereco[3]; // nome do municipio nomeMunicipio = "" + parmsEndereco[1]; // sigla da unidade federa��o siglaUnidadeFederecao = parmsEndereco[2]; cepFormatado = parmsEndereco[4]; } else { if (parmsEnderecoImovel != null) { // endere�o sem municipio e // unidade federa��o cobrancaDocumentoTxt.append(Util.completaString(parmsEnderecoImovel[0], 50)); } else { cobrancaDocumentoTxt.append(Util.completaString("", 50)); } } // nome Bairro cobrancaDocumentoTxt.append(Util.completaString(nomeBairro, 25)); // nome municipio cobrancaDocumentoTxt.append(Util.completaString(nomeMunicipio, 24)); // sigla unidade federacao cobrancaDocumentoTxt.append(Util.completaString(siglaUnidadeFederecao, 2)); // CEP // variavel cepFormatado foi preenchido // de acordo com a existencia de // cliente responsavel String cepStr = Util.completaString(cepFormatado, 8); String cepLabeled = "CEP. " + cepStr.substring(0, 5) + "-" + cepStr.substring(5, 8); cobrancaDocumentoTxt.append(Util.completaString(cepLabeled, 14)); // Sequencial de impressao [13] String sequencialImpressaoStr = Util.adicionarZerosEsquedaNumero(6, sequencialImpressao + ""); cobrancaDocumentoTxt.append("SEQ. " + sequencialImpressaoStr.substring(0, 3) + "." + sequencialImpressaoStr.substring(3, 6)); // Matr�cula do im�vel String matriculaStr = Util.adicionarZerosEsquedaNumero(8, "" + cobrancaDocumento.getImovel().getId()); cobrancaDocumentoTxt.append(matriculaStr.substring(0, 7) + "." + matriculaStr.substring(7, 8)); // Endere�o do im�vel sem municipio e // unidade federa��o cobrancaDocumentoTxt.append(Util.completaString(parmsEnderecoImovel[0], 50)); // sequencial do documento de cobranca String sequencialStr = Util.adicionarZerosEsquedaNumero(9, "" + cobrancaDocumento.getNumeroSequenciaDocumento()); cobrancaDocumentoTxt.append(sequencialStr.substring(0, 5) + "." + sequencialStr.substring(5, 9)); // Data de vencimento cobrancaDocumentoTxt.append("30/12/2009"); // idgrupo cobrancaDocumentoTxt.append(Util.completaString(idGrupo, 2)); cobrancaDocumentoTxt.append("-"); // c�digo da firma if (cobrancaDocumento.getEmpresa() != null) { cobrancaDocumentoTxt.append(Util.adicionarZerosEsquedaNumero(2, cobrancaDocumento.getEmpresa() .getId().toString())); } String representacaoNumericaCodBarra = ""; // Obt�m a representa��o num�rica do // c�digo de barra representacaoNumericaCodBarra = this.getControladorArrecadacao() .obterRepresentacaoNumericaCodigoBarra(5, valorPagamentoAVista, cobrancaDocumento.getLocalidade().getId(), cobrancaDocumento.getImovel().getId(), null, null, null, null, String.valueOf(cobrancaDocumento.getNumeroSequenciaDocumento()), cobrancaDocumento.getDocumentoTipo().getId(), null, null, null); // Formata a representa��o n�merica do // c�digo de barras String representacaoNumericaCodBarraFormatada = representacaoNumericaCodBarra.substring(0, 11) + " " + representacaoNumericaCodBarra.substring(11, 12) + " " + representacaoNumericaCodBarra.substring(12, 23) + " " + representacaoNumericaCodBarra.substring(23, 24) + " " + representacaoNumericaCodBarra.substring(24, 35) + " " + representacaoNumericaCodBarra.substring(35, 36) + " " + representacaoNumericaCodBarra.substring(36, 47) + " " + representacaoNumericaCodBarra.substring(47, 48); cobrancaDocumentoTxt.append(representacaoNumericaCodBarraFormatada); // Cria o objeto para gerar o c�digo de // barras no padr�o intercalado 2 de 5 Interleaved2of5 codigoBarraIntercalado2de5 = new Interleaved2of5(); // Recupera a representa��o n�merica do // c�digo de barras sem os d�gitos // verificadores String representacaoCodigoBarrasSemDigitoVerificador = representacaoNumericaCodBarra.substring(0, 11) + representacaoNumericaCodBarra.substring(12, 23) + representacaoNumericaCodBarra.substring(24, 35) + representacaoNumericaCodBarra.substring(36, 47); cobrancaDocumentoTxt.append(codigoBarraIntercalado2de5 .encodeValue(representacaoCodigoBarrasSemDigitoVerificador)); int quantidadesContas = 0; quantidadesContas = 24; // retorna o indicador de estouro e // formata o cobran�aDocumentoTxt com os // dados formatarCobrancaDocumentoItem(cobrancaDocumentoTxt, colecaoCobrancaDocumentoItemConta, quantidadesContas, cobrancaDocumento); // somat�rio das guias cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda( Util.formataBigDecimal(valorTotalGuiasPagamento, 2, true), 14)); // somat�rio dos d�bitos a cobrar de // servi�os cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda( Util.formataBigDecimal(valorTotalRestanteServicosACobrar, 2, true), 14)); // somat�rio dos d�bitos a cobrar de // parcelamento cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda( Util.formataBigDecimal(valorTotalRestanteParcelamentosACobrar, 2, true), 14)); // somat�rio dos creditos a realizar cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda( Util.formataBigDecimal(valorCreditoARealizar, 2, true), 14)); // valor do debito atualizado cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda( Util.formataBigDecimal(valorDebitoTotalAtualizado, 2, true), 14)); // valor do documento de pagamento a // vista cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda( Util.formataBigDecimal(valorPagamentoAVista, 2, true), 14)); ArrayList colecaoOpcoesParcelamento = (ArrayList) opcoesParcelamento.getOpcoesParcelamento(); String asteriscos = "**,**"; if (colecaoOpcoesParcelamento != null && !colecaoOpcoesParcelamento.isEmpty()) { OpcoesParcelamentoHelper opcoesHelper = null; try { opcoesHelper = ((OpcoesParcelamentoHelper) colecaoOpcoesParcelamento.get(3)); } catch (IndexOutOfBoundsException e) { opcoesHelper = null; } if (opcoesHelper != null) { if (opcoesHelper.getValorEntradaMinima() != null && !opcoesHelper.getValorEntradaMinima().equals(new BigDecimal("0.00"))) { cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda( Util.formataBigDecimal(opcoesHelper.getValorEntradaMinima(), 2, true), 14)); } else { cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(asteriscos, 14)); } cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda( Util.formataBigDecimal(opcoesHelper.getValorPrestacao(), 2, true), 14)); cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda( Util.formataBigDecimal(opcoesHelper.getTaxaJuros(), 2, true), 4)); } else { cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(asteriscos, 14)); cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(asteriscos, 14)); cobrancaDocumentoTxt.append("*,**"); } try { opcoesHelper = ((OpcoesParcelamentoHelper) colecaoOpcoesParcelamento.get(11)); } catch (IndexOutOfBoundsException e) { opcoesHelper = null; } if (opcoesHelper != null) { if (opcoesHelper.getValorEntradaMinima() != null && !opcoesHelper.getValorEntradaMinima().equals(new BigDecimal("0.00"))) { cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda( Util.formataBigDecimal(opcoesHelper.getValorEntradaMinima(), 2, true), 14)); } else { cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(asteriscos, 14)); } cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda( Util.formataBigDecimal(opcoesHelper.getValorPrestacao(), 2, true), 14)); cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda( Util.formataBigDecimal(opcoesHelper.getTaxaJuros(), 2, true), 4)); } else { cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(asteriscos, 14)); cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(asteriscos, 14)); cobrancaDocumentoTxt.append("*,**"); } try { opcoesHelper = ((OpcoesParcelamentoHelper) colecaoOpcoesParcelamento.get(23)); } catch (IndexOutOfBoundsException e) { opcoesHelper = null; } if (opcoesHelper != null) { if (opcoesHelper.getValorEntradaMinima() != null && !opcoesHelper.getValorEntradaMinima().equals(new BigDecimal("0.00"))) { cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda( Util.formataBigDecimal(opcoesHelper.getValorEntradaMinima(), 2, true), 14)); } else { cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(asteriscos, 14)); } cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda( Util.formataBigDecimal(opcoesHelper.getValorPrestacao(), 2, true), 14)); cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda( Util.formataBigDecimal(opcoesHelper.getTaxaJuros(), 2, true), 4)); } else { cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(asteriscos, 14)); cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(asteriscos, 14)); cobrancaDocumentoTxt.append("*,**"); } try { opcoesHelper = ((OpcoesParcelamentoHelper) colecaoOpcoesParcelamento.get(35)); } catch (IndexOutOfBoundsException e) { opcoesHelper = null; } if (opcoesHelper != null) { if (opcoesHelper.getValorEntradaMinima() != null && !opcoesHelper.getValorEntradaMinima().equals(new BigDecimal("0.00"))) { cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda( Util.formataBigDecimal(opcoesHelper.getValorEntradaMinima(), 2, true), 14)); } else { cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(asteriscos, 14)); } cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda( Util.formataBigDecimal(opcoesHelper.getValorPrestacao(), 2, true), 14)); cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda( Util.formataBigDecimal(opcoesHelper.getTaxaJuros(), 2, true), 4)); } else { cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(asteriscos, 14)); cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(asteriscos, 14)); cobrancaDocumentoTxt.append("*,**"); } try { opcoesHelper = ((OpcoesParcelamentoHelper) colecaoOpcoesParcelamento.get(47)); } catch (IndexOutOfBoundsException e) { opcoesHelper = null; } if (opcoesHelper != null) { if (opcoesHelper.getValorEntradaMinima() != null && !opcoesHelper.getValorEntradaMinima().equals(new BigDecimal("0.00"))) { cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda( Util.formataBigDecimal(opcoesHelper.getValorEntradaMinima(), 2, true), 14)); } else { cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(asteriscos, 14)); } cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda( Util.formataBigDecimal(opcoesHelper.getValorPrestacao(), 2, true), 14)); cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda( Util.formataBigDecimal(opcoesHelper.getTaxaJuros(), 2, true), 4)); } else { cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(asteriscos, 14)); cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(asteriscos, 14)); cobrancaDocumentoTxt.append("*,**"); } } else { for (int i = 0; i < 5; i++) { cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(asteriscos, 14)); cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(asteriscos, 14)); cobrancaDocumentoTxt.append("*,**"); } } String txtString = cobrancaDocumentoTxt.toString(); txtString = txtString.replace('\'', ' '); txtString = txtString.replace('`', ' '); repositorioCobranca.inserirCartaFinalAno(new Integer(idGrupo), cobrancaDocumento.getEmpresa() .getId(), new Integer(idLocalidade), new Integer(codigoSetorComercial), new Integer( numeroQuadra), new Integer(lote), new Integer(subLote), cobrancaDocumento.getId(), txtString.substring(0, 241), txtString.substring(250, 2299), idRota); cobrancaDocumentoTxt = null; } } } } } } } getControladorBatch().encerrarUnidadeProcessamentoBatch(null, idUnidadeIniciada, false); } catch (Exception ex) { ex.printStackTrace(); getControladorBatch().encerrarUnidadeProcessamentoBatch(ex, idUnidadeIniciada, true); throw new EJBException(ex); } } /** * [0968] - Emitir Cartas da Campanha de Final de Ano 2009 * * @author: Vivianne Sousa * @date: 10/11/2009 */ public void emitirCartasDeFinalDeAno(Integer idGrupoFaturamento, Integer idFuncionalidadeIniciada) throws ControladorException { int idUnidadeIniciada = 0; Date dataAtual = new Date(); String nomeZip = null; nomeZip = "CARTA_FINAL_DE_ANO_GRUPO_" + idGrupoFaturamento + "_" + Util.formatarData(dataAtual) + Util.formatarHoraSemDataSemDoisPontos(dataAtual); nomeZip = nomeZip.replace("/", "_"); File compactado = new File(nomeZip + ".zip"); ZipOutputStream zos = null; File leitura = new File(nomeZip + ".txt"); BufferedWriter out = null; try { zos = new ZipOutputStream(new FileOutputStream(compactado)); out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(leitura.getAbsolutePath()))); System.out.println("***************************************"); System.out.println("EMITIR CARTAS DE FINAL DE ANO "); System.out.println("***************************************"); Collection colecaoPartesCarta = repositorioCobranca.pesquisarCartaFinalAnoGrupo(idGrupoFaturamento); Iterator iter = colecaoPartesCarta.iterator(); int sequencialImpressao = 0; idUnidadeIniciada = getControladorBatch().iniciarUnidadeProcessamentoBatch(idFuncionalidadeIniciada, UnidadeProcessamento.ROTA, 0); while (iter.hasNext()) { Object[] partesCarta = (Object[]) iter.next(); if (partesCarta != null && partesCarta[0] != null) { StringBuilder cobrancaDocumentoTxt = new StringBuilder(); sequencialImpressao++; String parte1 = (String) partesCarta[0]; String parte2 = (String) partesCarta[1]; // Sequencial de impressao [13] String sequencialImpressaoStr = Util.adicionarZerosEsquedaNumero(6, sequencialImpressao + ""); cobrancaDocumentoTxt.append(parte1); cobrancaDocumentoTxt.append(" " + sequencialImpressaoStr.substring(0, 3) + "." + sequencialImpressaoStr.substring(3, 6)); cobrancaDocumentoTxt.append(parte2); cobrancaDocumentoTxt.append(System.getProperty("line.separator")); out.write(cobrancaDocumentoTxt.toString()); } } // out.write(cobrancaDocumentoTxt.toString()); getControladorBatch().encerrarUnidadeProcessamentoBatch(null, idUnidadeIniciada, false); System.out.println("***************************************"); System.out.println("FIM DA CRIACAO DO ARQUIVO"); System.out.println("***************************************"); } catch (Exception ex) { ex.printStackTrace(); getControladorBatch().encerrarUnidadeProcessamentoBatch(ex, idUnidadeIniciada, true); throw new EJBException(ex); } finally { try { out.close(); ZipUtil.adicionarArquivo(zos, leitura); // close the stream zos.close(); leitura.delete(); } catch (IOException e) { getControladorBatch().encerrarUnidadeProcessamentoBatch(e, idUnidadeIniciada, true); throw new EJBException(e); } } } /** * [UC0214] Efetuar Parcelamento de D�bitos * * pesquisa o documento de cobranca do imovel e do documento tipo passado * como parametro * * @author Vivianne Sousa * @date 19/11/2009 * * @return * @throws ErroRepositorioException */ public boolean existeCobrancaDocumentoDoImovel(Integer idImovel, Integer idDocumentoTipo) throws ControladorException { try { boolean retorno = false; Collection colecaoCobrancaDocumento = repositorioCobranca.pesquisarCobrancaDocumentoDoImovel(idImovel, idDocumentoTipo); if (colecaoCobrancaDocumento != null && !colecaoCobrancaDocumento.isEmpty()) { retorno = true; } return retorno; } catch (ErroRepositorioException e) { e.printStackTrace(); throw new ControladorException("erro.sistema", e); } } /** * @author Vivianne Sousa * @date 20/11/2009 * * @return * @throws ErroRepositorioException */ public void deletarCartaFinalAno(Integer idRota) throws ControladorException { try { repositorioCobranca.deletarCartaFinalAno(idRota); } catch (ErroRepositorioException e) { e.printStackTrace(); throw new ControladorException("erro.sistema", e); } } /** * @author Anderson Italo * @date 26/11/2009 * * @return Integer retorno * @throws ErroRepositorioException */ public Integer pesquisarQuantidadeImoveisPorGrupoCobranca(Integer idCobrancaGrupo, Integer gerencia, Integer unidade, Integer localidade, Integer setorComercial, Integer quadra) throws ControladorException { Integer totalImoveis = null; try { totalImoveis = repositorioCobranca.pesquisarQuantidadeImoveisPorGrupoCobranca(idCobrancaGrupo, gerencia, unidade, localidade, setorComercial, quadra); } catch (ErroRepositorioException ex) { ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } return totalImoveis; } /** * * Este caso de uso permite a emiss�o de um ou mais documentos de cobran�a * * [UC0349] Emitir Documento de Cobran�a * * @author Raphael Rossiter,Vivianne Sousa * @data 26/05/2006,14/12/2009 * * @param * @return void */ public void gerarDocumentoCobrancaImpressao(CobrancaAcaoAtividadeCronograma cobrancaAcaoAtividadeCronograma, CobrancaAcaoAtividadeComando cobrancaAcaoAtividadeComando, Date dataAtualPesquisa, CobrancaAcao acaoCobranca, CobrancaGrupo grupoCobranca, CobrancaCriterio cobrancaCriterio) throws ControladorException { boolean flagFimPesquisa = false; final int quantidadeCobrancaDocumento = 1000; int quantidadeCobrancaDocumentoInicio = 0; StringBuilder cobrancaDocumentoTxt = new StringBuilder(); int sequencialImpressao = 0; int sequencialOrdenacao = 0; Collection colecaoCobrancaDocumento = null; Map<Integer, Integer> mapAtualizaSequencial = null; Integer idCronogramaAtividadeAcaoCobranca = null; Integer idComandoAtividadeAcaoCobranca = null; Integer idAcaoCobranca = null; if (cobrancaAcaoAtividadeCronograma != null && cobrancaAcaoAtividadeCronograma.getId() != null) { idCronogramaAtividadeAcaoCobranca = cobrancaAcaoAtividadeCronograma.getId(); } if (cobrancaAcaoAtividadeComando != null && cobrancaAcaoAtividadeComando.getId() != null) { idComandoAtividadeAcaoCobranca = cobrancaAcaoAtividadeComando.getId(); } if (acaoCobranca != null && acaoCobranca.getId() != null) { idAcaoCobranca = acaoCobranca.getId(); } while (!flagFimPesquisa) { // map que armazena o sequencial e o numero da // conta para no final atualizar todos os sequencias mapAtualizaSequencial = new HashMap(); try { System.out.println("***************************************"); System.out.println("ENTROU NO AVISO DE CORTE"); System.out.println("***************************************"); colecaoCobrancaDocumento = repositorioCobranca.pesquisarCobrancaDocumentoParaEmitir(idCronogramaAtividadeAcaoCobranca, idComandoAtividadeAcaoCobranca, dataAtualPesquisa, idAcaoCobranca, quantidadeCobrancaDocumentoInicio); System.out.println("***************************************"); System.out.println("QTD DE COBRANCA DOCUMENTO:" + colecaoCobrancaDocumento.size()); System.out.println("***************************************"); } catch (ErroRepositorioException ex) { ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } if (colecaoCobrancaDocumento != null && !colecaoCobrancaDocumento.isEmpty()) { System.out.println("***************************************"); System.out.println("QUANTIDADE COBRAN�A:" + colecaoCobrancaDocumento.size()); System.out.println("***************************************"); if (colecaoCobrancaDocumento.size() < quantidadeCobrancaDocumento) { flagFimPesquisa = true; } else { quantidadeCobrancaDocumentoInicio = quantidadeCobrancaDocumentoInicio + 1000; } int metadeColecao = 0; if (colecaoCobrancaDocumento.size() % 2 == 0) { metadeColecao = colecaoCobrancaDocumento.size() / 2; } else { metadeColecao = (colecaoCobrancaDocumento.size() / 2) + 1; } Map<Integer, Map<Object, Object>> mapCobrancaDocumentoOrdenada = dividirColecao(colecaoCobrancaDocumento); if (mapCobrancaDocumentoOrdenada != null) { int countOrdem = 0; while (countOrdem < mapCobrancaDocumentoOrdenada.size()) { Map<Object, Object> mapCobrancaoDocumentoDivididas = mapCobrancaDocumentoOrdenada.get(countOrdem); Iterator iteratorCobrancaDocumento = mapCobrancaoDocumentoDivididas.keySet().iterator(); while (iteratorCobrancaDocumento.hasNext()) { CobrancaDocumento cobrancaDocumento = null; int situacao = 0; cobrancaDocumento = (CobrancaDocumento) iteratorCobrancaDocumento.next(); String nomeCliente = null; Collection colecaoCobrancaDocumentoItem = null; /* * Estes objetos auxiliar�o na formata��o da * inscri��o que ser� composta por informa��es do * documento de cobran�a e do im�vel a ele associado */ Imovel inscricao = null; SetorComercial setorComercialInscricao = null; Quadra quadraInscricao = null; /* * Objeto que ser� utilizado para armazenar as * informa��es do documento de cobran�a de acordo * com o layout definido no caso de uso */ sequencialImpressao++; while (situacao < 2) { if (situacao == 0) { situacao = 1; sequencialImpressao = atualizaSequencial(sequencialImpressao, situacao, metadeColecao); } else { cobrancaDocumento = (CobrancaDocumento) mapCobrancaoDocumentoDivididas.get(cobrancaDocumento); situacao = 2; sequencialImpressao = atualizaSequencial(sequencialImpressao, situacao, metadeColecao); } if (cobrancaDocumento != null) { try { nomeCliente = this.repositorioClienteImovel.pesquisarNomeClientePorImovel(cobrancaDocumento .getImovel().getId()); colecaoCobrancaDocumentoItem = this.repositorioCobranca .selecionarCobrancaDocumentoItemReferenteConta(cobrancaDocumento); } catch (ErroRepositorioException ex) { ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } if (colecaoCobrancaDocumentoItem != null && !colecaoCobrancaDocumentoItem.isEmpty()) { // In�cio do processo de gera��o da // linha do txt // Nome da Localidade cobrancaDocumentoTxt.append(Util.completaString(cobrancaDocumento.getLocalidade().getDescricao(), 25)); if (cobrancaAcaoAtividadeCronograma != null) { String ciclo = "CICLO:" + Util.formatarAnoMesParaMesAno(cobrancaAcaoAtividadeCronograma .getCobrancaAcaoCronograma().getCobrancaGrupoCronogramaMes() .getAnoMesReferencia()); cobrancaDocumentoTxt.append(Util.completaString(ciclo, 13)); } else { cobrancaDocumentoTxt.append(Util.completaString("", 13)); } // Inscri��o quadraInscricao = new Quadra(); setorComercialInscricao = new SetorComercial(); inscricao = new Imovel(); quadraInscricao.setNumeroQuadra(cobrancaDocumento.getNumeroQuadra()); setorComercialInscricao.setCodigo(cobrancaDocumento.getCodigoSetorComercial()); inscricao.setLocalidade(cobrancaDocumento.getLocalidade()); inscricao.setSetorComercial(setorComercialInscricao); inscricao.setQuadra(quadraInscricao); inscricao.setLote(cobrancaDocumento.getImovel().getLote()); inscricao.setSubLote(cobrancaDocumento.getImovel().getSubLote()); cobrancaDocumentoTxt.append(Util.completaString(inscricao.getInscricaoFormatada(), 20)); // Nome do Cliente cobrancaDocumentoTxt.append(Util.completaString(nomeCliente, 50)); // Matr�cula do im�vel String matriculaImovelFormatada = Util.retornaMatriculaImovelFormatada(cobrancaDocumento .getImovel().getId()); cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(matriculaImovelFormatada, 10)); // Endere�o Formatado cobrancaDocumentoTxt.append(Util.completaString(cobrancaDocumento.getImovel() .getEnderecoFormatadoAbreviado(), 72)); // Grupo de Cobran�a cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(cobrancaDocumento.getQuadra() .getRota().getCobrancaGrupo().getId().toString(), 2)); // Sequencial do Documento de Cobran�a cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda( "" + cobrancaDocumento.getNumeroSequenciaDocumento(), 9)); // C�digo da situa��o da liga��o de �gua cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(cobrancaDocumento.getImovel() .getLigacaoAguaSituacao().getId().toString(), 1)); // C�digo da situa��o da liga��o de // esgoto cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(cobrancaDocumento.getImovel() .getLigacaoEsgotoSituacao().getId().toString(), 1)); /* * Quantidades de economias por * categoria: 1� RESID�NCIAL 2� * COMERCIAL 3� INDUSTRIAL 4� P�BLICA */ Collection colecaoCategorias = this.getControladorImovel().obterQuantidadeEconomiasCategoria( cobrancaDocumento.getImovel()); String qtdResidencial = ""; String qtdComercial = ""; String qtdIndustrial = ""; String qtdPublico = ""; if (colecaoCategorias != null && !colecaoCategorias.isEmpty()) { Iterator iteratorColecaoCategorias = colecaoCategorias.iterator(); Categoria categoria = null; while (iteratorColecaoCategorias.hasNext()) { categoria = (Categoria) iteratorColecaoCategorias.next(); if (categoria.getId().equals(Categoria.RESIDENCIAL)) { qtdResidencial = "" + categoria.getQuantidadeEconomiasCategoria(); } else if (categoria.getId().equals(Categoria.COMERCIAL)) { qtdComercial = "" + categoria.getQuantidadeEconomiasCategoria(); } else if (categoria.getId().equals(Categoria.INDUSTRIAL)) { qtdIndustrial = "" + categoria.getQuantidadeEconomiasCategoria(); } else if (categoria.getId().equals(Categoria.PUBLICO)) { qtdPublico = "" + categoria.getQuantidadeEconomiasCategoria(); } } } colecaoCategorias = null; // Resid�ncial if (!qtdResidencial.equals("")) { cobrancaDocumentoTxt.append(Util.adicionarZerosEsquedaNumero(3, qtdResidencial)); } else { cobrancaDocumentoTxt.append(Util.completaString("", 3)); } // Comercial if (!qtdComercial.equals("")) { cobrancaDocumentoTxt.append(Util.adicionarZerosEsquedaNumero(3, qtdComercial)); } else { cobrancaDocumentoTxt.append(Util.completaString("", 3)); } // Industrial if (!qtdIndustrial.equals("")) { cobrancaDocumentoTxt.append(Util.adicionarZerosEsquedaNumero(3, qtdIndustrial)); } else { cobrancaDocumentoTxt.append(Util.completaString("", 3)); } // P�blico if (!qtdPublico.equals("")) { cobrancaDocumentoTxt.append(Util.adicionarZerosEsquedaNumero(3, qtdPublico)); } else { cobrancaDocumentoTxt.append(Util.completaString("", 3)); } // Perfil do Im�vel cobrancaDocumentoTxt.append(Util.completaString(cobrancaDocumento.getImovelPerfil().getDescricao(), 8)); // Data de Emiss�o if (cobrancaDocumento.getEmissao() != null) { cobrancaDocumentoTxt.append(Util.formatarData(cobrancaDocumento.getEmissao())); } else { cobrancaDocumentoTxt.append(Util.completaString("", 10)); } // alterado por Vivianne Sousa // 15/09/2008 // Data de Validade Date dataValidade = this.obterDataValidadeDocumentoCobranca(cobrancaDocumento, null, null); if (dataValidade != null) { cobrancaDocumentoTxt.append(Util.formatarData(dataValidade)); } else { cobrancaDocumentoTxt.append(Util.completaString("", 10)); } // LINHA 07 // ================================== /* * Selecionar os itens do documento de * cobran�a correspondentes a conta e * ordenar por ano/m�s de refer�ncia da * conta */ if (colecaoCobrancaDocumentoItem != null && !colecaoCobrancaDocumentoItem.isEmpty()) { // retorna o indicador de estouro e // formata o cobran�aDocumentoTxt // com os dados formatarCobrancaDocumentoItemSemValorEncargos(cobrancaDocumentoTxt, colecaoCobrancaDocumentoItem, 28, cobrancaDocumento); } // Constante "GR- " cobrancaDocumentoTxt.append("GR-"); // Grupo de Cobran�a cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(cobrancaDocumento.getQuadra() .getRota().getCobrancaGrupo().getId().toString(), 2)); // C�digo e descri��o da empresa if (cobrancaDocumento.getEmpresa() != null) { cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(cobrancaDocumento .getEmpresa().getId().toString(), 2)); cobrancaDocumentoTxt.append("-"); cobrancaDocumentoTxt.append(Util.completaString(cobrancaDocumento.getEmpresa() .getDescricaoAbreviada(), 11)); } else { cobrancaDocumentoTxt.append(Util.completaString("", 14)); } // Sigla e descri�ao da ger�ncia // regional cobrancaDocumentoTxt.append(Util.completaString(cobrancaDocumento.getLocalidade() .getGerenciaRegional().getNomeAbreviado(), 3)); cobrancaDocumentoTxt.append("-"); cobrancaDocumentoTxt.append(Util.completaString(cobrancaDocumento.getLocalidade() .getGerenciaRegional().getNome(), 8)); // Sequencial de impress�o cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda( Util.retornaSequencialFormatado(sequencialImpressao), 9)); // LINHA 13 // ================================== String representacaoNumericaCodBarra = ""; // Obt�m a representa��o num�rica do // c�digo de barra representacaoNumericaCodBarra = this.getControladorArrecadacao() .obterRepresentacaoNumericaCodigoBarra(5, cobrancaDocumento.getValorDocumento(), cobrancaDocumento.getLocalidade().getId(), cobrancaDocumento.getImovel().getId(), null, null, null, null, String.valueOf(cobrancaDocumento.getNumeroSequenciaDocumento()), cobrancaDocumento.getDocumentoTipo().getId(), null, null, null); // Formata a representa��o n�merica do // c�digo de barras String representacaoNumericaCodBarraFormatada = representacaoNumericaCodBarra.substring(0, 11) + " " + representacaoNumericaCodBarra.substring(11, 12) + " " + representacaoNumericaCodBarra.substring(12, 23) + " " + representacaoNumericaCodBarra.substring(23, 24) + " " + representacaoNumericaCodBarra.substring(24, 35) + " " + representacaoNumericaCodBarra.substring(35, 36) + " " + representacaoNumericaCodBarra.substring(36, 47) + " " + representacaoNumericaCodBarra.substring(47, 48); cobrancaDocumentoTxt.append(representacaoNumericaCodBarraFormatada); // LINHA 16 // ================================== // Cria o objeto para gerar o c�digo de // barras no padr�o intercalado 2 de 5 Interleaved2of5 codigoBarraIntercalado2de5 = new Interleaved2of5(); // Recupera a representa��o n�merica do // c�digo de barras sem os d�gitos // verificadores String representacaoCodigoBarrasSemDigitoVerificador = representacaoNumericaCodBarra.substring(0, 11) + representacaoNumericaCodBarra.substring(12, 23) + representacaoNumericaCodBarra.substring(24, 35) + representacaoNumericaCodBarra.substring(36, 47); cobrancaDocumentoTxt.append(codigoBarraIntercalado2de5 .encodeValue(representacaoCodigoBarrasSemDigitoVerificador)); String txtString = cobrancaDocumentoTxt.toString(); txtString = txtString.replace('\'', ' '); txtString = txtString.replace('`', ' '); try { repositorioCobranca.inserirDocumentoCobrancaImpressao(cobrancaDocumento.getId(), txtString, idComandoAtividadeAcaoCobranca, idCronogramaAtividadeAcaoCobranca, sequencialOrdenacao++); } catch (ErroRepositorioException ex) { ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } cobrancaDocumentoTxt = new StringBuilder(); } // adiciona o id da conta e o sequencial // no para serem atualizados mapAtualizaSequencial.put(cobrancaDocumento.getId(), sequencialImpressao); colecaoCobrancaDocumentoItem = null; } }// fim do la�o que verifica as 2 contas }// fim la�o while do iterator do objeto helper countOrdem++; mapCobrancaoDocumentoDivididas = null; } } } else { flagFimPesquisa = true; } try { repositorioCobranca.atualizarSequencialCobrancaDocumentoImpressao(mapAtualizaSequencial); } catch (ErroRepositorioException e) { throw new ControladorException("erro.sistema", e); } mapAtualizaSequencial = null; colecaoCobrancaDocumento = null; } System.out.println("***************************************"); System.out.println("FINAL GERAR DOCUMENTO COBRANCA IMPRESSAO"); System.out.println("***************************************"); } /** * @author Anderson Italo * @date 30/11/2009 * * @return Integer retorno * @throws ErroRepositorioException */ public Integer pesquisarQuantidadeImoveisPorComandoEventual(Integer idCobrancaAcaoAtividadeComando, Integer gerencia, Integer unidade, Integer localidade, Integer setorComercial, Integer quadra) throws ControladorException { Integer totalImoveis = null; try { totalImoveis = repositorioCobranca.pesquisarQuantidadeImoveisPorComandoEventual(idCobrancaAcaoAtividadeComando, gerencia, unidade, localidade, setorComercial, quadra); } catch (ErroRepositorioException ex) { ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } return totalImoveis; } /** * [UC0927] � Confirmar Cart�o de Cr�dito/D�bito * * Identifica e obt�m as informa��es necess�rias para confirmar pagamento(s) * por cart�o de cr�dito ou d�bito * * @author Raphael Rossiter * @date 05/01/2010 * * @param modalidadeCartao * @param matriculaImovel * @return ObterDadosConfirmarCartaoCreditoDebitoHelper * @throws ControladorException */ public ObterDadosConfirmarCartaoCreditoDebitoHelper obterDadosConfirmarCartaoCreditoDebito(Short modalidadeCartao, Integer matriculaImovel) throws ControladorException { ObterDadosConfirmarCartaoCreditoDebitoHelper retorno = null; if (modalidadeCartao != null && matriculaImovel != null) { retorno = new ObterDadosConfirmarCartaoCreditoDebitoHelper(); // MODALIDADE CR�DITO if (modalidadeCartao.equals(ConstantesSistema.MODALIDADE_CARTAO_CREDITO)) { /* * O sistema apresenta uma lista dos parcelamentos de d�bitos * ativos efetuados para o im�vel (a partir da tabela * PARCELAMENTO com IMOV_ID=IMOV_ID do IMOVEL e PCST_ID da * tabela PARCELAMENTO com valor igual � NORMAL) */ FiltroParcelamento filtroParcelamento = new FiltroParcelamento(); filtroParcelamento.adicionarParametro(new ParametroSimples(FiltroParcelamento.IMOVEL_ID, matriculaImovel.intValue())); filtroParcelamento.adicionarParametro(new ParametroSimples(FiltroParcelamento.PARCELAMENTO_SITUACAO, ParcelamentoSituacao.NORMAL)); filtroParcelamento.adicionarCaminhoParaCarregamentoEntidade("parcelamentoSituacao"); filtroParcelamento.adicionarCaminhoParaCarregamentoEntidade("usuario"); Collection<Parcelamento> colecaoParcelamento = this.getControladorUtil().pesquisar(filtroParcelamento, Parcelamento.class.getName()); if (colecaoParcelamento == null || colecaoParcelamento.isEmpty()) { // [FS0002 � Verificar exist�ncia de parcelamentos para o // im�vel] throw new ControladorException("atencao.parcelamento.inexistente"); } retorno.setModalidade(ConstantesSistema.MODALIDADE_CARTAO_CREDITO); retorno.setColecaoParcelamentosModalidadeCredito(colecaoParcelamento); } // MODALIDADE D�BITO else { /* * [UC0630] - Solicitar Emiss�o do Extrato de D�bitos Apresentar * [SB0001] - Apresentar D�bitos/Cr�ditos do Im�vel de Origem */ ObterDebitoImovelOuClienteHelper colecaoDebitoImovel = this.apresentarDebitoCreditoImovelExtratoDebito(new Integer( matriculaImovel), false); boolean existeDebitoCredito = false; // CONTA if (colecaoDebitoImovel.getColecaoContasValoresImovel() != null && !colecaoDebitoImovel.getColecaoContasValoresImovel().isEmpty()) { existeDebitoCredito = true; } // DEBITO_A_COBRAR if (colecaoDebitoImovel.getColecaoDebitoACobrar() != null && !colecaoDebitoImovel.getColecaoDebitoACobrar().isEmpty()) { existeDebitoCredito = true; } // GUIA_PAGAMENTO if (colecaoDebitoImovel.getColecaoGuiasPagamentoValores() != null && !colecaoDebitoImovel.getColecaoGuiasPagamentoValores().isEmpty()) { existeDebitoCredito = true; } // PARCELAMENTO if (colecaoDebitoImovel.getColecaoDebitoCreditoParcelamentoHelper() != null && !colecaoDebitoImovel.getColecaoDebitoCreditoParcelamentoHelper().isEmpty()) { existeDebitoCredito = true; } if (!existeDebitoCredito) { throw new ControladorException("atencao.imovel_sem_debito_credito"); } retorno.setModalidade(ConstantesSistema.MODALIDADE_CARTAO_DEBITO); retorno.setDebitosImovelModalidadeDebito(colecaoDebitoImovel); } } return retorno; } /** * [UC0927] � Confirmar Cart�o de Cr�dito/D�bito * * [FS0008] � Verificar validade da data * * @author Raphael Rossiter * @date 15/01/2010 * * @param dataConfirmacaoOperadora * @param idCliente * @param idArrecadacaoForma * @throws ControladorException */ public void verificarValidadeData(Date dataConfirmacaoOperadora, Integer idCliente, Integer idArrecadacaoForma) throws ControladorException { /* * Caso a data informada seja maior que a data corrente, exibir a * mensagem �Data deve menor ou igual a data corrente� e retornar para o * passo correspondente no fluxo principal. */ Date dataCorrente = new Date(); if (dataConfirmacaoOperadora.compareTo(dataCorrente) > 0) { throw new ControladorException("atencao.data_menor_que_atual", null, "Confirma��o na Operadora"); } /* * Caso a data informada seja menor que a data corrente menos a * quantidade de dias do float (ACTF_NNDIAFLOAT da tabela * ARRECADADOR_CONTRATO_TARIFA com ARCT_ID = ARCT_ID da tabela * ARRECADOR_CONTRATO com ARRC_ID = ARRC_ID do cart�o de cr�dito * selecionado ARFM_ID = �Car�o de Cr�dito�), exibir a mensagem �Data * informada n�o � data v�lida para baixa de pagamento� e retornar para * o passo correspondente no fluxo principal. */ Date dataCorrenteMenosNumeroDiasFloat = dataCorrente; Short nnDiasFloat = null; try { nnDiasFloat = repositorioCobranca.pesquisarNumeroDiasFloatCartao(idCliente, idArrecadacaoForma); } catch (ErroRepositorioException ex) { ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } if (nnDiasFloat != null) { dataCorrenteMenosNumeroDiasFloat = Util.subtrairNumeroDiasDeUmaData(dataCorrenteMenosNumeroDiasFloat, nnDiasFloat.intValue()); } if (dataConfirmacaoOperadora.compareTo(dataCorrenteMenosNumeroDiasFloat) < 0) { throw new ControladorException("atencao.data_menor_que_atual_menos_float"); } } /** * [UC0927] � Confirmar Cart�o de Cr�dito/D�bito * * [FS0007] � Somat�rio Inv�lido [FS00010] � Somat�rio Inv�lido * * @author Raphael Rossiter * @date 08/01/2010 * * @param colecaoTransacao * @param valorTotalParaQuitacao * @throws ControladorException */ public void verificarSomatorio(Collection colecaoTransacao, BigDecimal valorTotalParaQuitacao) throws ControladorException { if (colecaoTransacao == null) { throw new ControladorException("atencao.somatorio_invalido", null, "menor"); } BigDecimal valorTotalTransacao = BigDecimal.ZERO; ParcelamentoCartaoCreditoHelper helper = null; BigDecimal valorTransacao = null; Iterator iteratorTransacao = colecaoTransacao.iterator(); while (iteratorTransacao.hasNext()) { helper = (ParcelamentoCartaoCreditoHelper) iteratorTransacao.next(); valorTransacao = new BigDecimal(helper.getValorTransacao().replace(".", "").replace(",", ".")); valorTotalTransacao = Util.somaBigDecimal(valorTotalTransacao, valorTransacao); } /* * Caso o somat�rio dos cart�es esteja maior ou menor que o valor total * dos d�bitos selecionados, exibir a mensagem �Valor informado para os * cart�es est� inv�lido� + menor ou maior �que o valor dos d�bitos * selecionados�. */ if ((valorTotalTransacao.compareTo(valorTotalParaQuitacao) != 0)) { if (valorTotalTransacao.compareTo(valorTotalParaQuitacao) < 0) { throw new ControladorException("atencao.somatorio_invalido", null, "menor"); } else { throw new ControladorException("atencao.somatorio_invalido", null, "maior"); } } } /** * [UC0927] � Confirmar Cart�o de Cr�dito/D�bito * * @author Raphael Rossiter * @date 12/01/2010 * * @param idParcelamentoSelecionado * @param colecaoTransacao * @param usuarioLogado * @throws ControladorException */ public void confirmarCartaoCredito(Integer idParcelamentoSelecionado, Collection colecaoTransacao, Usuario usuarioLogado) throws ControladorException { try { // [SB0001� Incluir Dados da Confirma��o do Parcelamento] IncluirConfirmacaoParcelamentoHelper incluirConfirmacaoParcelamentoHelper = this.incluirDadosConfirmacaoParcelamento( idParcelamentoSelecionado, colecaoTransacao, usuarioLogado); /* * O sistema dever� atualizar todos os d�bitos do parcelamento que * estejam na situa��o normal (DCST_IDATUAL = 0 e PARC_ID = PARC_ID * confirmado na tabela de DEBITO_A_COBRAR). */ Iterator iterator = incluirConfirmacaoParcelamentoHelper.getColecaoDebitoACobrar().iterator(); while (iterator.hasNext()) { DebitoACobrar dAc = (DebitoACobrar) iterator.next(); // ------------ REGISTRAR TRANSA��O ---------------- RegistradorOperacao registradorOperacao = new RegistradorOperacao(Operacao.OPERACAO_CONFIRMAR_PARCELAMENTO_CARTAO_CREDITO, dAc.getId(), dAc.getId(), new UsuarioAcaoUsuarioHelper(usuarioLogado, UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO)); registradorOperacao.registrarOperacao(dAc); // ------------ REGISTRAR TRANSA��O ---------------- getControladorUtil().atualizar(dAc); } // ATUALIZANDO OS CR�DITOS Iterator iteratorCreditoAtualizar = incluirConfirmacaoParcelamentoHelper.getColecaoCreditoARealizar().iterator(); while (iteratorCreditoAtualizar.hasNext()) { CreditoARealizar credito = (CreditoARealizar) iteratorCreditoAtualizar.next(); // ------------ REGISTRAR TRANSA��O ---------------- RegistradorOperacao registradorOperacao = new RegistradorOperacao(Operacao.OPERACAO_CONFIRMAR_PARCELAMENTO_CARTAO_CREDITO, credito.getId(), credito.getId(), new UsuarioAcaoUsuarioHelper(usuarioLogado, UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO)); registradorOperacao.registrarOperacao(credito); // ------------ REGISTRAR TRANSA��O ---------------- getControladorUtil().atualizar(credito); } /* * O sistema dever� atualizar a tabela de * PARCELAMENTO_PAGAMENTO_CARTAO_CREDITO */ Iterator itera = incluirConfirmacaoParcelamentoHelper.getColecaoParcelamentoPagamentoCartaoCredito().iterator(); while (itera.hasNext()) { ParcelamentoPagamentoCartaoCredito parcPagamento = (ParcelamentoPagamentoCartaoCredito) itera.next(); this.getControladorUtil().inserir(parcPagamento); } // Cria a vari�vel que vai armazenar a forma de cobran�a CobrancaForma cobrancaForma = new CobrancaForma(); cobrancaForma.setId(CobrancaForma.COBRANCA_EM_CARTAO_CREDITO); incluirConfirmacaoParcelamentoHelper.getParcelamento().setCobrancaForma(cobrancaForma); // O sistema dever� atualizar a tabela de parcelamento para // confirmar o parcelamento: this.getControladorUtil().atualizar(incluirConfirmacaoParcelamentoHelper.getParcelamento()); // [SB0002] � Gerar/Atualizar Guia de Pagamento Cart�o de Cr�dito this.gerarAtualizarGuiaPagamentoCartaoCredito(incluirConfirmacaoParcelamentoHelper.getParcelamento(), incluirConfirmacaoParcelamentoHelper.getColecaoParcelamentoPagamentoCartaoCredito(), usuarioLogado); } catch (Exception e) { /* * COLOCADO PARA VERIFICAR SE J� FOI DADO ROLLBACK */ if (!sessionContext.getRollbackOnly()) { sessionContext.setRollbackOnly(); } e.printStackTrace(); } } /** * [UC0927] � Confirmar Cart�o de Cr�dito/D�bito * * [SB0001� Incluir Dados da Confirma��o do Parcelamento] * * @author Raphael Rossiter * @date 08/01/2010 * * @param idParcelamentoSelecionado * @param colecaoTransacao * @param usuarioLogado * @return * @throws ControladorException */ public IncluirConfirmacaoParcelamentoHelper incluirDadosConfirmacaoParcelamento(Integer idParcelamentoSelecionado, Collection colecaoTransacao, Usuario usuarioLogado) throws ControladorException { IncluirConfirmacaoParcelamentoHelper retorno = new IncluirConfirmacaoParcelamentoHelper(); // CARREGANDO O PARCELAMENTO SELECIONADO FiltroParcelamento filtroParcelamento = new FiltroParcelamento(); filtroParcelamento.adicionarParametro(new ParametroSimples(FiltroParcelamento.ID, idParcelamentoSelecionado)); filtroParcelamento.adicionarCaminhoParaCarregamentoEntidade("parcelamentoSituacao"); filtroParcelamento.adicionarCaminhoParaCarregamentoEntidade("parcelamentoSituacao"); filtroParcelamento.adicionarCaminhoParaCarregamentoEntidade("parcelamentoTipo"); Collection<Parcelamento> colecaoParcelamento = this.getControladorUtil() .pesquisar(filtroParcelamento, Parcelamento.class.getName()); Parcelamento parcelamento = (Parcelamento) Util.retonarObjetoDeColecao(colecaoParcelamento); // PREPARANDO O PARCELAMENTO PARA CONFIRMAR SEU PAGAMENTO VIA CART�O DE // CR�DITO parcelamento.setIndicadorConfirmacaoParcelamento(ConstantesSistema.SIM); parcelamento.setUltimaAlteracao(new Date()); retorno.setParcelamento(parcelamento); // GERANDO A CONFIRMA��O DO PARCELAMENTO POR CART�O DE CR�DITO Iterator iteratorColecaoTransacao = colecaoTransacao.iterator(); Collection colecaoParcelamentoPagamentoCartaoCredito = new ArrayList(); while (iteratorColecaoTransacao.hasNext()) { ParcelamentoCartaoCreditoHelper cartaoCreditoHelper = (ParcelamentoCartaoCreditoHelper) iteratorColecaoTransacao.next(); ParcelamentoPagamentoCartaoCredito parcelamentoPagamentoCartaoCredito = new ParcelamentoPagamentoCartaoCredito(); parcelamentoPagamentoCartaoCredito.setParcelamento(parcelamento); parcelamentoPagamentoCartaoCredito.setDocumentoCartaoCredito(cartaoCreditoHelper.getDocumentoCartao()); parcelamentoPagamentoCartaoCredito.setNumeroAutorizacao(cartaoCreditoHelper.getAutorizacaoCartao()); parcelamentoPagamentoCartaoCredito.setNumeroCartaoCredito(Util.encrypt(cartaoCreditoHelper.getNumeroCartao())); parcelamentoPagamentoCartaoCredito.setAnoMesValidade(new Integer(Util.formatarMesAnoParaAnoMesSemBarra(cartaoCreditoHelper .getValidadeCartao()))); // PESQUISA DO CLIENTE FiltroCliente filtroCliente = new FiltroCliente(); filtroCliente.adicionarParametro(new ParametroSimples(FiltroCliente.ID, cartaoCreditoHelper.getIdCliente())); Collection clientes = this.getControladorUtil().pesquisar(filtroCliente, Cliente.class.getName()); Cliente cliente = (Cliente) Util.retonarObjetoDeColecao(clientes); parcelamentoPagamentoCartaoCredito.setCliente(cliente); // PESQUISA DO ARRECADADOR FiltroArrecadador filtroArrecadador = new FiltroArrecadador(); filtroArrecadador.adicionarCaminhoParaCarregamentoEntidade("cliente"); filtroArrecadador .adicionarParametro(new ParametroSimples(FiltroArrecadador.CLIENTE_ID, cartaoCreditoHelper.getIdArrecadador())); Collection arrecadadores = this.getControladorUtil().pesquisar(filtroArrecadador, Arrecadador.class.getName()); Arrecadador arrecadador = (Arrecadador) Util.retonarObjetoDeColecao(arrecadadores); parcelamentoPagamentoCartaoCredito.setArrecadador(arrecadador); parcelamentoPagamentoCartaoCredito.setUsuarioConfirmacao(usuarioLogado); parcelamentoPagamentoCartaoCredito.setUltimaAlteracao(new Date()); parcelamentoPagamentoCartaoCredito.setValorParcelado(new BigDecimal(cartaoCreditoHelper.getValorTransacao().replace(".", "") .replace(",", "."))); parcelamentoPagamentoCartaoCredito.setIdentificacaoTransacao(cartaoCreditoHelper.getNumeroIdentificacaoTransacao()); parcelamentoPagamentoCartaoCredito.setQuantidadeParcelas(new Integer(cartaoCreditoHelper.getQtdParcelas())); // DATA DE CONFIRMA��O NA OPERADORA parcelamentoPagamentoCartaoCredito.setDataConfirmacao(cartaoCreditoHelper.getDataConfirmacaoOperadora()); // INDICADOR CONFIRMA��O OPERADORA parcelamentoPagamentoCartaoCredito.setIndicadorConfirmadoOperadora(ConstantesSistema.NAO); colecaoParcelamentoPagamentoCartaoCredito.add(parcelamentoPagamentoCartaoCredito); } retorno.setColecaoParcelamentoPagamentoCartaoCredito(colecaoParcelamentoPagamentoCartaoCredito); // GERANDO A COLE��O DE D�BITOS A COBRAR QUE SER�O ATUALIZADOS FiltroDebitoACobrar filtroDebitoACobrar = new FiltroDebitoACobrar(); filtroDebitoACobrar.adicionarParametro(new ParametroSimples(FiltroDebitoACobrar.PARCELAMENTO_ID, idParcelamentoSelecionado)); filtroDebitoACobrar.adicionarParametro(new ParametroSimples(FiltroDebitoACobrar.DEBITO_CREDITO_SITUACAO_ATUAL_ID, DebitoCreditoSituacao.NORMAL)); filtroDebitoACobrar.adicionarCaminhoParaCarregamentoEntidade("parcelamento"); filtroDebitoACobrar.adicionarCaminhoParaCarregamentoEntidade("debitoCreditoSituacaoAtual"); filtroDebitoACobrar.adicionarCaminhoParaCarregamentoEntidade("debitoCreditoSituacaoAnterior"); filtroDebitoACobrar.adicionarCaminhoParaCarregamentoEntidade("cobrancaForma"); Collection<DebitoACobrar> colecaoDebito = this.getControladorUtil().pesquisar(filtroDebitoACobrar, DebitoACobrar.class.getName()); Iterator iterator = colecaoDebito.iterator(); Collection<DebitoACobrar> colecaoDebitoAtualizar = new ArrayList(); CobrancaForma cf = new CobrancaForma(); cf.setId(CobrancaForma.COBRANCA_EM_CARTAO_CREDITO); while (iterator.hasNext()) { DebitoACobrar debitoACobrar = (DebitoACobrar) iterator.next(); debitoACobrar.setUltimaAlteracao(new Date()); debitoACobrar.setParcelamento(parcelamento); debitoACobrar.setDebitoCreditoSituacaoAnterior(debitoACobrar.getDebitoCreditoSituacaoAtual()); debitoACobrar.setCobrancaForma(cf); DebitoCreditoSituacao dcs = new DebitoCreditoSituacao(); dcs.setId(DebitoCreditoSituacao.CARTAO_CREDITO); debitoACobrar.setDebitoCreditoSituacaoAtual(dcs); colecaoDebitoAtualizar.add(debitoACobrar); } retorno.setColecaoDebitoACobrar(colecaoDebitoAtualizar); // GERANDO A COLE��O DE CREDITOS A REALIZAR QUE SER�O ATUALIZADOS FiltroCreditoARealizar filtroCreditoARealizar = new FiltroCreditoARealizar(); filtroCreditoARealizar.adicionarParametro(new ParametroSimples(FiltroCreditoARealizar.PARCELAMENTO_ID, idParcelamentoSelecionado)); filtroCreditoARealizar.adicionarParametro(new ParametroSimples(FiltroCreditoARealizar.DEBITO_CREDITO_SITUACAO_ATUAL, DebitoCreditoSituacao.NORMAL)); filtroCreditoARealizar.adicionarCaminhoParaCarregamentoEntidade("parcelamento"); filtroCreditoARealizar.adicionarCaminhoParaCarregamentoEntidade("debitoCreditoSituacaoAtual"); filtroCreditoARealizar.adicionarCaminhoParaCarregamentoEntidade("debitoCreditoSituacaoAnterior"); Collection<CreditoARealizar> colecaoCredito = this.getControladorUtil().pesquisar(filtroCreditoARealizar, CreditoARealizar.class.getName()); Collection<CreditoARealizar> colecaoCreditoAtualizar = new ArrayList(); if (colecaoCredito != null && !colecaoCredito.isEmpty()) { Iterator iteratorCredito = colecaoCredito.iterator(); DebitoCreditoSituacao debitoCreditoSituacao = new DebitoCreditoSituacao(); debitoCreditoSituacao.setId(DebitoCreditoSituacao.CARTAO_CREDITO); while (iteratorCredito.hasNext()) { CreditoARealizar creditoARealizar = (CreditoARealizar) iteratorCredito.next(); creditoARealizar.setUltimaAlteracao(new Date()); creditoARealizar.setParcelamento(parcelamento); creditoARealizar.setDebitoCreditoSituacaoAtual(debitoCreditoSituacao); colecaoCreditoAtualizar.add(creditoARealizar); } } retorno.setColecaoCreditoARealizar(colecaoCreditoAtualizar); return retorno; } /** * [UC0927] � Confirmar Cart�o de Cr�dito/D�bito * * [SB0002] � Gerar/Atualizar Guia de Pagamento Cart�o de Cr�dito * * @author Raphael Rossiter * @date 13/01/2010 * * @param parcelamento * @param colecaoParcelamentoPagamentoCartaoCredito * @param usuarioLogado * @throws ControladorException */ public void gerarAtualizarGuiaPagamentoCartaoCredito(Parcelamento parcelamento, Collection colecaoParcelamentoPagamentoCartaoCredito, Usuario usuarioLogado) throws ControladorException { /* * Para cada transa��o de cart�o de cr�dito informada na quita��o do * parcelamento, o sistema dever� gerar/atualizar a guia de pagamento de * acordo com a quantidade de parcelas informada */ if (colecaoParcelamentoPagamentoCartaoCredito != null && !colecaoParcelamentoPagamentoCartaoCredito.isEmpty()) { /* * [FS0009 � Verificar dia �til] * * FERIADO NACIONAL - Para verificar a exist�ncia de formata��o de * vencimento para um dia que n�o seja �til. */ Collection<NacionalFeriado> colecaoFeriadosNacionais = null; try { colecaoFeriadosNacionais = repositorioUtil.pesquisarFeriadosNacionais(); } catch (ErroRepositorioException ex) { throw new ControladorException("erro.sistema", ex); } Iterator iterator = colecaoParcelamentoPagamentoCartaoCredito.iterator(); Collection colecaoGuiaPagamentoParcelamento = new ArrayList(); boolean guiaPagamentoParcelamentoCartaoJaExiste = false; while (iterator.hasNext()) { ParcelamentoPagamentoCartaoCredito transacaoCartaoCredito = (ParcelamentoPagamentoCartaoCredito) iterator.next(); // QUANTIDADE DE PARCELAS GERADAS NA TRANSA��O Integer qtdParcela = transacaoCartaoCredito.getQuantidadeParcelas(); // VALOR DA PARCELA DO PARCELAMENTO FEITO PELA TRANSA��O BigDecimal valorParcelaTransacao = transacaoCartaoCredito.getValorParcelado().divide(new BigDecimal(qtdParcela.intValue()), Parcelamento.CASAS_DECIMAIS, Parcelamento.TIPO_ARREDONDAMENTO); // GERANDO A PRIMEIRA DATA DE VENCIMENTO DA GUIA Date dataPrimeiroVencimentoGuiaPagamento = this.obterDataVencimentoGuiaPagamentoCartaoCredito(transacaoCartaoCredito, transacaoCartaoCredito.getArrecadador().getCliente().getId(), colecaoFeriadosNacionais, null); Date dataVencimentoGuiaPagamento = dataPrimeiroVencimentoGuiaPagamento; /* * Para cada data de vencimento das parcelas do parcelamento, a * partir do 1� vencimento adicionar 30 dias at� a �ltima * parcela informada, o sistema dever� verificar a * gera��o/atualiza��o das guias. */ for (Short i = 1; i <= qtdParcela; i++) { /* * O sistema verifica se existe uma guia de pagamento para o * primeiro vencimento da transa��o (data da confirma��o na * operadora + quantidade de dias informados no FLOAT do * contrato do arrecadador. */ GuiaPagamento guiaPagamento = this.pesquisarGuiaPagamentoCartaoCredito(transacaoCartaoCredito.getArrecadador() .getCliente().getId(), dataVencimentoGuiaPagamento); if (guiaPagamento != null) { /* * Caso exista a guia de pagamento, o sistema dever� * acumular no valor da guia de pagamento * (GPAG_VLDEBITO) com o valor da parcela do * parcelamento (Valor da Transa��o/Quantidade de * Parcelas) de cada confirma��o do cart�o de cr�dito. */ BigDecimal valorAcumuladoGuiaPagamento = guiaPagamento.getValorDebito(); valorAcumuladoGuiaPagamento = valorAcumuladoGuiaPagamento.add(valorParcelaTransacao); guiaPagamento.setValorDebito(valorAcumuladoGuiaPagamento); guiaPagamento.setUsuario(usuarioLogado); // ATUALIZANDO A GUIA DE PAGAMENTO this.atualizarGuiaPagamentoCartaoCredito(guiaPagamento); } else { /* * Caso contr�rio, o sistema dever� gerar uma guia de * pagamento do cliente do cart�o de cr�dito no valor * pago no cart�o de cr�dito. * * [SB0003] � Inserir Guia de Pagamento Cliente */ guiaPagamento = this.inserirGuiaPagamentoCliente(transacaoCartaoCredito.getArrecadador().getCliente().getId(), dataVencimentoGuiaPagamento, valorParcelaTransacao, null, usuarioLogado); } // Faz valida��o para n�o incluir registro com chave // duplicada em GuiaParcelamentoCartao for (Iterator iteratorColecaoGuiaPagamentoParcelamento = colecaoGuiaPagamentoParcelamento.iterator(); iteratorColecaoGuiaPagamentoParcelamento .hasNext();) { GuiaPagamentoParcelamentoCartao guiaPagamentoParcelamentoCartao = (GuiaPagamentoParcelamentoCartao) iteratorColecaoGuiaPagamentoParcelamento .next(); if (guiaPagamentoParcelamentoCartao.getComp_id().getGuiaPagamentoId().intValue() == guiaPagamento.getId() .intValue() && guiaPagamentoParcelamentoCartao.getComp_id().getParcelamentoId().intValue() == parcelamento.getId() .intValue()) { guiaPagamentoParcelamentoCartaoJaExiste = true; break; } else { guiaPagamentoParcelamentoCartaoJaExiste = false; } } if (guiaPagamentoParcelamentoCartaoJaExiste == false) { /* * Para cada guia inclu�da ou atualizada, o sistema * dever� inserir a associa��o do parcelamento com as * guias de pagamento gerada e/ou atualizadas */ this.inserirGuiaPagamentoParcelamentoCartao(parcelamento, guiaPagamento, colecaoGuiaPagamentoParcelamento); } /* * AJUSTANDO A DATA DE VENCIMENTO PARA A PR�XIMA GUIA DE * PAGAMENTO * * A partir do 1� vencimento adicionar 30 dias at� a �ltima * parcela informada */ dataPrimeiroVencimentoGuiaPagamento = Util.adicionarNumeroDiasDeUmaData(dataPrimeiroVencimentoGuiaPagamento, 30); dataVencimentoGuiaPagamento = dataPrimeiroVencimentoGuiaPagamento; /* * [FS0009 � Verificar dia �til] * * Caso a data calculada n�o seja um dia �til e esteja na * tabela de feriados nacionais (NFER_DTFERIADO da tabela * NACIONAL_FERIADO), adicionar 1 dia a data at� a obten��o * de um dia �til. */ while (!Util.ehDiaUtil(dataVencimentoGuiaPagamento, colecaoFeriadosNacionais, null)) { dataVencimentoGuiaPagamento = Util.adicionarNumeroDiasDeUmaData(dataVencimentoGuiaPagamento, 1); } } } } } /** * [UC0927] � Confirmar Cart�o de Cr�dito/D�bito * * @author Raphael Rossiter * @date 12/01/2010 * * @param transacaoCartaoCredito * @param idCliente * @param colecaoFeriadosNacionais * @param colecaoFeriadosMunicipais * @return Date * @throws ControladorException */ public Date obterDataVencimentoGuiaPagamentoCartaoCredito(ParcelamentoPagamentoCartaoCredito transacaoCartaoCredito, Integer idCliente, Collection colecaoFeriadosNacionais, Collection colecaoFeriadosMunicipais) throws ControladorException { /* * GERANDO A PRIMEIRA DATA DE VENCIMENTO DA GUIA * * Data da confirma��o na operadora + quantidade de dias informados no * FLOAT do contrato do arrecadador */ Date dataPrimeiroVencimentoTransacao = transacaoCartaoCredito.getDataConfirmacao(); Short nnDiasFloat = null; try { nnDiasFloat = repositorioCobranca.pesquisarNumeroDiasFloatCartao(idCliente, ArrecadacaoForma.CARTAO_CREDITO); } catch (ErroRepositorioException ex) { throw new ControladorException("erro.sistema", ex); } if (nnDiasFloat != null) { dataPrimeiroVencimentoTransacao = Util.adicionarNumeroDiasDeUmaData(dataPrimeiroVencimentoTransacao, nnDiasFloat.intValue()); } /* * [FS0009 � Verificar dia �til] * * Caso a data calculada n�o seja um dia �til e esteja na tabela de * feriados nacionais (NFER_DTFERIADO da tabela NACIONAL_FERIADO), * adicionar 1 dia a data at� a obten��o de um dia �til. */ while (!Util.ehDiaUtil(dataPrimeiroVencimentoTransacao, colecaoFeriadosNacionais, null)) { dataPrimeiroVencimentoTransacao = Util.adicionarNumeroDiasDeUmaData(dataPrimeiroVencimentoTransacao, 1); } return dataPrimeiroVencimentoTransacao; } /** * [UC0927] � Confirmar Cart�o de Cr�dito/D�bito * * @author Raphael Rossiter * @date 11/01/2010 * * @param idCliente * @param dataVencimento * @return GuiaPagamento * @throws ErroRepositorioException */ public GuiaPagamento pesquisarGuiaPagamentoCartaoCredito(Integer idCliente, Date dataVencimento) throws ControladorException { GuiaPagamento guiaPagamento = null; try { guiaPagamento = repositorioCobranca.pesquisarGuiaPagamentoCartaoCredito(idCliente, dataVencimento); } catch (ErroRepositorioException ex) { throw new ControladorException("erro.sistema", ex); } return guiaPagamento; } /** * [UC0927] � Confirmar Cart�o de Cr�dito/D�bito * * @author Raphael Rossiter * @date 12/01/2010 * * @param guiaPagamento * @throws ErroRepositorioException */ public void atualizarGuiaPagamentoCartaoCredito(GuiaPagamento guiaPagamento) throws ControladorException { try { repositorioCobranca.atualizarGuiaPagamentoCartaoCredito(guiaPagamento); } catch (ErroRepositorioException ex) { throw new ControladorException("erro.sistema", ex); } } /** * [UC0927] � Confirmar Cart�o de Cr�dito/D�bito * * [SB0003] � Inserir Guia de Pagamento Cliente * * @author Raphael Rossiter * @date 02/02/2010 * * @param idCliente * @param dataVencimento * @param valorDebito * @param idDebitoTipo * @param usuarioLogado * @return GuiaPagamento * @throws ControladorException */ public GuiaPagamento inserirGuiaPagamentoCliente(Integer idCliente, Date dataVencimento, BigDecimal valorDebito, Integer idDebitoTipo, Usuario usuarioLogado) throws ControladorException { // GERANDO A GUIA DE PAGAMENTO GuiaPagamento guiaPagamento = new GuiaPagamento(); // LOCA_ID da tabela LOCALIDADE com LOCA_ICSEDE = 1 Localidade localidadeSede = this.pesquisarLocalidadeSede(); guiaPagamento.setLocalidade(localidadeSede); // CLIE_ID = CLIE_ID da tabela ARRECADADOR com ARRC_ID = ARRC_ID do // Cart�o de Cr�dito selecionado Cliente cliente = new Cliente(); cliente.setId(idCliente); guiaPagamento.setCliente(cliente); // DATA DE VENCIMENTO CALCULADA guiaPagamento.setDataVencimento(dataVencimento); // VALOR DO D�BITO CALCULADO guiaPagamento.setValorDebito(valorDebito); DebitoTipo debitoTipo = null; if (idDebitoTipo == null) { // Id d�bito cart�o de cr�dito (DBTP_ID da tabela DEBITO_TIPO com // DBTP_ICCARTAOCREDITO =1 debitoTipo = this.pesquisarDebitoTipoCartaoCredito(); guiaPagamento.setDebitoTipo(debitoTipo); } else { // Id que esta sendo recebido debitoTipo = new DebitoTipo(); debitoTipo.setId(idDebitoTipo); guiaPagamento.setDebitoTipo(debitoTipo); } // GPAG_NNPRESTACAODEBITO guiaPagamento.setNumeroPrestacaoDebito(new Short("1")); // GPAG_NNPRESTACAOTOTAL guiaPagamento.setNumeroPrestacaoTotal(new Short("1")); // Id do usu�rio que efetuou a confirma��o do cart�o guiaPagamento.setUsuario(usuarioLogado); // OBSERVA��O guiaPagamento.setObservacao("GUIA DE PAGAMENTO PARA BAIXA CARTAO DE CREDITO"); guiaPagamento.setIndicadorEmitirObservacao(ConstantesSistema.SIM); // IMOVEL N�O SER� INFORMADO Imovel imovel = new Imovel(); guiaPagamento.setImovel(imovel); // REGISTRO DE ATENDIMENTO N�O SER� INFORMADO RegistroAtendimento registroAtendimento = new RegistroAtendimento(); guiaPagamento.setRegistroAtendimento(registroAtendimento); // ORDEM DE SERVI�O N�O SER� INFORMADA OrdemServico ordemServico = new OrdemServico(); guiaPagamento.setOrdemServico(ordemServico); // GERANDO OS �TENS DA GUIA DE PAGAMENTO GuiaPagamentoItem guiaPagamentoItem = new GuiaPagamentoItem(); if (idDebitoTipo == null) { // Id d�bito cart�o de cr�dito (DBTP_ID da tabela DEBITO_TIPO com // DBTP_ICCARTAOCREDITO =1 DebitoTipo debitoTipoCartaoCredito = this.pesquisarDebitoTipoCartaoCredito(); guiaPagamento.setDebitoTipo(debitoTipoCartaoCredito); } else { // Id que esta sendo recebido DebitoTipo debitoTipoRecebido = new DebitoTipo(); debitoTipoRecebido.setId(idDebitoTipo); guiaPagamento.setDebitoTipo(debitoTipoRecebido); } guiaPagamentoItem.setDebitoTipo(debitoTipo); guiaPagamentoItem.setValorDebito(valorDebito); guiaPagamentoItem.setUltimaAlteracao(new Date()); Collection colecaoGuiaPagamentoItem = new ArrayList(); colecaoGuiaPagamentoItem.add(guiaPagamentoItem); // [UC0187] - Inserir Guia de Pagamento String[] idGuiaPagamento = this.getControladorFaturamento().inserirGuiaPagamento(guiaPagamento, usuarioLogado, 0, colecaoGuiaPagamentoItem, localidadeSede, true); guiaPagamento.setId(Integer.valueOf(idGuiaPagamento[0])); return guiaPagamento; } /** * [UC0927] � Confirmar Cart�o de Cr�dito/D�bito * * @author Raphael Rossiter * @date 12/01/2010 * * @return Localidade * @throws ErroRepositorioException */ public Localidade pesquisarLocalidadeSede() throws ControladorException { try { return repositorioCobranca.pesquisarLocalidadeSede(); } catch (ErroRepositorioException ex) { throw new ControladorException("erro.sistema", ex); } } /** * [UC0927] � Confirmar Cart�o de Cr�dito/D�bito * * @author Raphael Rossiter * @date 12/01/2010 * * @return DebitoTipo * @throws ErroRepositorioException */ public DebitoTipo pesquisarDebitoTipoCartaoCredito() throws ControladorException { try { return repositorioCobranca.pesquisarDebitoTipoCartaoCredito(); } catch (ErroRepositorioException ex) { throw new ControladorException("erro.sistema", ex); } } /** * [UC0927] � Confirmar Cart�o de Cr�dito/D�bito * * @author Raphael Rossiter * @date 12/01/2010 * * @param parcelamento * @param guiaPagamento * @throws ControladorException */ public void inserirGuiaPagamentoParcelamentoCartao(Parcelamento parcelamento, GuiaPagamento guiaPagamento, Collection colecaoGuiaPagamentoParcelamento) throws ControladorException { GuiaPagamentoParcelamentoCartaoPK guiaPagamentoParcelamentoCartaoPK = new GuiaPagamentoParcelamentoCartaoPK(); guiaPagamentoParcelamentoCartaoPK.setParcelamentoId(parcelamento.getId()); guiaPagamentoParcelamentoCartaoPK.setGuiaPagamentoId(guiaPagamento.getId()); GuiaPagamentoParcelamentoCartao guiaPagamentoParcelamentoCartao = new GuiaPagamentoParcelamentoCartao(); guiaPagamentoParcelamentoCartao.setComp_id(guiaPagamentoParcelamentoCartaoPK); guiaPagamentoParcelamentoCartao.setUltimaAlteracao(new Date()); // INSERINDO GUIA DE PAGAMENTO PARCELAMENTO CART�O getControladorUtil().inserir(guiaPagamentoParcelamentoCartao); colecaoGuiaPagamentoParcelamento.add(guiaPagamentoParcelamentoCartao); } /** * [UC0927] � Confirmar Cart�o de Cr�dito/D�bito * * [FS0005 � Alerta Parcelamento Com Parcela Paga] [FS0006 � Parcelamento * Sem D�bito a Cobrar] [FS0007 � Parcelamento Com Pagamento de Cart�o de * Cr�dito J� Informado] * * @author Raphael Rossiter * @date 14/01/2010 * * @param parcelamento * @return int * @throws ControladorException */ public int validarParcelamentoCartaoCredito(Parcelamento parcelamento) throws ControladorException { int numeroPrestacaoCobradas = 0; // D�BITOS A COBRAR DO PARCELAMENTO FiltroDebitoACobrar filtroDebitoACobrar = new FiltroDebitoACobrar(); filtroDebitoACobrar.adicionarParametro(new ParametroSimples(FiltroDebitoACobrar.PARCELAMENTO_ID, parcelamento.getId())); filtroDebitoACobrar.adicionarCaminhoParaCarregamentoEntidade("parcelamento"); Collection<DebitoACobrar> colecaoDebito = this.getControladorUtil().pesquisar(filtroDebitoACobrar, DebitoACobrar.class.getName()); DebitoACobrar dacMaiorData = null; Iterator itera = colecaoDebito.iterator(); Date dataTeste = new Date(0); while (itera.hasNext()) { DebitoACobrar debitoACobrar = (DebitoACobrar) itera.next(); int retornoCompararDatas = Util.compararDataTime(dataTeste, debitoACobrar.getUltimaAlteracao()); if (retornoCompararDatas == -1) { dataTeste = (Date) debitoACobrar.getUltimaAlteracao(); dacMaiorData = debitoACobrar; } } if (colecaoDebito != null && colecaoDebito.isEmpty() || !parcelamento.getParcelamentoSituacao().getId().equals(ParcelamentoSituacao.NORMAL)) { // [FS0006 � Parcelamento Sem D�bito a Cobrar] throw new ControladorException("atencao.parcelamento_sem_debito_a_cobrar", null, parcelamento.getParcelamentoSituacao() .getDescricao()); } if (dacMaiorData.getDebitoCreditoSituacaoAtual().getId().compareTo(new Integer(DebitoCreditoSituacao.CARTAO_CREDITO)) == 0) { // [FS0007 � Parcelamento Com Pagamento de Cart�o de Cr�dito J� // Informado] throw new ControladorException("atencao.parcelamento_ja_confirmado_cartao", null, parcelamento.getParcelamentoSituacao() .getDescricao()); } // [FS0005 � Alerta Parcelamento Com Parcela Paga] if (dacMaiorData.getNumeroPrestacaoCobradas() != 0) { numeroPrestacaoCobradas = dacMaiorData.getNumeroPrestacaoCobradas(); } return numeroPrestacaoCobradas; } /** * [UC0927] � Confirmar Cart�o de Cr�dito/D�bito * * [SB0004] � Incluir Dados da Confirma��o dos Pagamentos * * @author Raphael Rossiter * @date 20/01/2010 * * @param parcelamentoCartaoCreditoHelper * @param colecaoConta * @param colecaoGuia * @param colecaoDebitoACobrar * @param colecaoParcelamento * @param usuarioLogado * @throws ControladorException */ public void confirmarCartaoDebito(ParcelamentoCartaoCreditoHelper parcelamentoCartaoCreditoHelper, Collection<ContaValoresHelper> colecaoConta, Collection<GuiaPagamentoGeral> colecaoGuia, Collection<DebitoACobrarGeral> colecaoDebitoACobrar, Collection<Parcelamento> colecaoParcelamento, Collection<DebitoCreditoParcelamentoHelper> colecaoAntecipacaoDebitosDeParcelamento, Collection<DebitoCreditoParcelamentoHelper> colecaoAntecipacaoCreditosDeParcelamento, Usuario usuarioLogado) throws ControladorException { try { /* * O sistema dever� incluir na tabela de PAGAMENTO_CARTAO_DEBITO os * dados da trasa��o, lembrando que s� ser� permitido informar * apenas um cart�o de d�bito por transa��o. */ PagamentoCartaoDebito pagamentoCartaoDebito = (PagamentoCartaoDebito) this.inserirPagamentoCartaoDebito( parcelamentoCartaoCreditoHelper, usuarioLogado); // OBTENDO O AVISO BANC�RIO PARA ASSOCIAR COM O(S) PAGAMENTO(S) QUE // SER�O GERADOS AvisoBancario avisoBancario = this.obterAvisoBancarioPagamentoCartaoDebito(pagamentoCartaoDebito); /* * O sistema dever� incluir os itens dos d�bitos efetuados com o * cart�o d�bitos na tabela PAGAMENTO_CARTAO_DEBITO_ITEM para cada * d�bito selecionado e gerar o pagamentos para o mesmo [UC0265 � * Inserir Pagamento]. */ BigDecimal valorArrecadacaoCalculada = new BigDecimal("0.00"); BigDecimal valorArrecadacaoInformada = new BigDecimal("0.00"); BigDecimal valorDevolucaoCalculada = new BigDecimal("0.00"); BigDecimal valorDeducaoAcumulado = new BigDecimal("0.00"); Collection colecaoPagamentos = new ArrayList(); Collection colecaoDevolucoes = new ArrayList(); // CONTA if (colecaoConta != null && !colecaoConta.isEmpty()) { Iterator iteratorConta = colecaoConta.iterator(); while (iteratorConta.hasNext()) { ContaValoresHelper contaValoresHelper = (ContaValoresHelper) iteratorConta.next(); // INSERINDO PAGAMENTO_CARTAO_DEBITO_ITEM this.inserirPagamentoCartaoDebitoItem(pagamentoCartaoDebito, contaValoresHelper, null, null); // GERANDO PAGAMENTO Pagamento pagamento = this.gerarPagamentoContaCartaoDebito(contaValoresHelper, avisoBancario, pagamentoCartaoDebito); colecaoPagamentos.add(pagamento); // ACUMULANDO O VALOR DO PAGAMENTO PARA ATUALIZAR O AVISO // BANC�RIO valorArrecadacaoCalculada = valorArrecadacaoCalculada.add(pagamento.getValorPagamento()); // [SB0005 � Calcular Valor da Dedu��o] valorDeducaoAcumulado = valorDeducaoAcumulado.add(this.calcularValorDeducao(pagamentoCartaoDebito.getArrecadador() .getId(), pagamento.getValorPagamento(), ArrecadacaoForma.CARTAO_DEBITO)); } } // GUIA PAGAMENTO if (colecaoGuia != null && !colecaoGuia.isEmpty()) { Iterator iteratorGuia = colecaoGuia.iterator(); while (iteratorGuia.hasNext()) { GuiaPagamentoGeral guiaPagamentoGeral = (GuiaPagamentoGeral) iteratorGuia.next(); // INSERINDO PAGAMENTO_CARTAO_DEBITO_ITEM this.inserirPagamentoCartaoDebitoItem(pagamentoCartaoDebito, null, guiaPagamentoGeral, null); // GERANDO PAGAMENTO Pagamento pagamento = this.gerarPagamentoGuiaPagamentoCartaoDebito(guiaPagamentoGeral, avisoBancario, pagamentoCartaoDebito); colecaoPagamentos.add(pagamento); // ACUMULANDO O VALOR DO PAGAMENTO PARA ATUALIZAR O AVISO // BANC�RIO valorArrecadacaoCalculada = valorArrecadacaoCalculada.add(pagamento.getValorPagamento()); // [SB0005 � Calcular Valor da Dedu��o] valorDeducaoAcumulado = valorDeducaoAcumulado.add(this.calcularValorDeducao(pagamentoCartaoDebito.getArrecadador() .getId(), pagamento.getValorPagamento(), ArrecadacaoForma.CARTAO_DEBITO)); } } // DEBITO A COBRAR if (colecaoDebitoACobrar != null && !colecaoDebitoACobrar.isEmpty()) { Iterator iteratorDebitoACobrar = colecaoDebitoACobrar.iterator(); while (iteratorDebitoACobrar.hasNext()) { DebitoACobrarGeral debitoACobrarGeral = (DebitoACobrarGeral) iteratorDebitoACobrar.next(); // INSERINDO PAGAMENTO_CARTAO_DEBITO_ITEM this.inserirPagamentoCartaoDebitoItem(pagamentoCartaoDebito, null, null, debitoACobrarGeral); // GERANDO PAGAMENTO Pagamento pagamento = this.gerarPagamentoDebitoACobrarCartaoDebito(debitoACobrarGeral, avisoBancario, pagamentoCartaoDebito); colecaoPagamentos.add(pagamento); // ACUMULANDO O VALOR DO PAGAMENTO PARA ATUALIZAR O AVISO // BANC�RIO valorArrecadacaoCalculada = valorArrecadacaoCalculada.add(pagamento.getValorPagamento()); // [SB0005 � Calcular Valor da Dedu��o] valorDeducaoAcumulado = valorDeducaoAcumulado.add(this.calcularValorDeducao(pagamentoCartaoDebito.getArrecadador() .getId(), pagamento.getValorPagamento(), ArrecadacaoForma.CARTAO_DEBITO)); } } if ((colecaoParcelamento != null) && (!colecaoParcelamento.isEmpty())) { Iterator iteratorParcelamento = colecaoParcelamento.iterator(); while (iteratorParcelamento.hasNext()) { Parcelamento parcelamento = (Parcelamento) (Parcelamento) iteratorParcelamento.next(); Collection colecaoDebitosACobrarParcelamento = null; try { colecaoDebitosACobrarParcelamento = this.repositorioCobranca.pesquisarDebitosACobrarImovelParcelamento(parcelamento .getId()); } catch (ErroRepositorioException e) { this.sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", e); } if ((colecaoDebitosACobrarParcelamento != null) && (!colecaoDebitosACobrarParcelamento.isEmpty())) { Iterator iteratorDebitosACobrarParcelamento = colecaoDebitosACobrarParcelamento.iterator(); DebitoACobrar debitoACobrarParcelamento = null; while (iteratorDebitosACobrarParcelamento.hasNext()) { debitoACobrarParcelamento = (DebitoACobrar) iteratorDebitosACobrarParcelamento.next(); DebitoACobrarGeral debitoACobrarGeralParcelamento = new DebitoACobrarGeral(); debitoACobrarGeralParcelamento.setId(debitoACobrarParcelamento.getId()); inserirPagamentoCartaoDebitoItem(pagamentoCartaoDebito, null, null, debitoACobrarGeralParcelamento); Pagamento pagamento = gerarPagamentoDebitoACobrarCartaoDebito(debitoACobrarGeralParcelamento, avisoBancario, pagamentoCartaoDebito); colecaoPagamentos.add(pagamento); valorArrecadacaoCalculada = valorArrecadacaoCalculada.add(pagamento.getValorPagamento()); valorDeducaoAcumulado = valorDeducaoAcumulado.add(calcularValorDeducao(pagamentoCartaoDebito.getArrecadador() .getId(), pagamento.getValorPagamento(), ArrecadacaoForma.CARTAO_DEBITO)); } getControladorArrecadacao().verificaPagamentoDebitoACobrarParcelamento(debitoACobrarParcelamento.getId(), null); } Collection colecaoCreditosARealizarParcelamento = null; try { colecaoCreditosARealizarParcelamento = this.repositorioCobranca.pesquisarCreditosARealizarParcelamento(parcelamento .getId()); } catch (ErroRepositorioException e) { this.sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", e); } if ((colecaoCreditosARealizarParcelamento != null) && (!colecaoCreditosARealizarParcelamento.isEmpty())) { Iterator iteratorCreditosARealizarParcelamento = colecaoCreditosARealizarParcelamento.iterator(); while (iteratorCreditosARealizarParcelamento.hasNext()) { CreditoARealizar creditoARealizarParcelamento = (CreditoARealizar) ((Object[]) (Object[]) iteratorCreditosARealizarParcelamento .next())[0]; CreditoARealizarGeral creditoARealizarGeralParcelamento = new CreditoARealizarGeral(); creditoARealizarGeralParcelamento.setId(creditoARealizarParcelamento.getId()); Devolucao devolucao = gerarDevolucaoCreditoARealizarCartaoDebito(creditoARealizarGeralParcelamento, avisoBancario); colecaoDevolucoes.add(devolucao); valorDevolucaoCalculada = valorDevolucaoCalculada.add(devolucao.getValorDevolucao()); } } } } Collection colecaoDebitosACobrarJurosParcelamento = new ArrayList(); if ((colecaoAntecipacaoDebitosDeParcelamento != null) && (!colecaoAntecipacaoDebitosDeParcelamento.isEmpty())) { Iterator iteratorAntecipacaoDebitosDeParcelamento = colecaoAntecipacaoDebitosDeParcelamento.iterator(); while (iteratorAntecipacaoDebitosDeParcelamento.hasNext()) { DebitoCreditoParcelamentoHelper debitoCreditoParcelamentoHelper = (DebitoCreditoParcelamentoHelper) iteratorAntecipacaoDebitosDeParcelamento .next(); if ((debitoCreditoParcelamentoHelper.getColecaoDebitoACobrarParcelamento() != null) && (!debitoCreditoParcelamentoHelper.getColecaoDebitoACobrarParcelamento().isEmpty())) { Iterator iteratorAntecipacaoDebitoACobrarParcelamento = debitoCreditoParcelamentoHelper .getColecaoDebitoACobrarParcelamento().iterator(); while (iteratorAntecipacaoDebitoACobrarParcelamento.hasNext()) { DebitoACobrar debitoACobrarParcelamento = (DebitoACobrar) iteratorAntecipacaoDebitoACobrarParcelamento.next(); CobrancaDocumentoItem cobrancaDocumentoItemAux = new CobrancaDocumentoItem(); DebitoACobrarGeral debitoACobrarGeralParcelamento = new DebitoACobrarGeral(); debitoACobrarGeralParcelamento.setDebitoACobrar(debitoACobrarParcelamento); cobrancaDocumentoItemAux.setDebitoACobrarGeral(debitoACobrarGeralParcelamento); cobrancaDocumentoItemAux.setNumeroParcelasAntecipadas(debitoCreditoParcelamentoHelper .getQuantidadeAntecipacaoParcelas()); cobrancaDocumentoItemAux.setValorItemCobrado(debitoACobrarParcelamento .getValorAntecipacaoParcela(debitoCreditoParcelamentoHelper.getQuantidadeAntecipacaoParcelas() .intValue())); DebitoACobrar debitoACobrarAntecipacao = (DebitoACobrar) getControladorArrecadacao() .gerarDebitoCreditoParcelasAntecipadas(debitoACobrarParcelamento.getImovel().getId(), cobrancaDocumentoItemAux, usuarioLogado); DebitoACobrarGeral debitoACobrarGeralAntecipacao = new DebitoACobrarGeral(); debitoACobrarGeralAntecipacao.setId(debitoACobrarAntecipacao.getId()); debitoACobrarGeralAntecipacao.setDebitoACobrar(debitoACobrarAntecipacao); DebitoACobrar debitoACobrarJurosParcelamento = getControladorArrecadacao() .pesquisarDebitoACobrarJurosParcelamento(debitoACobrarAntecipacao.getParcelamento().getId()); if (!colecaoDebitosACobrarJurosParcelamento.contains(debitoACobrarJurosParcelamento)) { Short numeroParcelaBonus = debitoACobrarAntecipacao.getNumeroPrestacaoDebito(); if (debitoACobrarJurosParcelamento.getNumeroParcelaBonus() != null) { numeroParcelaBonus = Short.valueOf(String.valueOf(numeroParcelaBonus.shortValue() + debitoACobrarJurosParcelamento.getNumeroParcelaBonus().shortValue())); } debitoACobrarJurosParcelamento.setNumeroParcelaBonus(numeroParcelaBonus); colecaoDebitosACobrarJurosParcelamento.add(debitoACobrarJurosParcelamento); } inserirPagamentoCartaoDebitoItem(pagamentoCartaoDebito, null, null, debitoACobrarGeralAntecipacao); Pagamento pagamento = gerarPagamentoDebitoACobrarCartaoDebito(debitoACobrarGeralAntecipacao, avisoBancario, pagamentoCartaoDebito); colecaoPagamentos.add(pagamento); valorArrecadacaoCalculada = valorArrecadacaoCalculada.add(pagamento.getValorPagamento()); valorDeducaoAcumulado = valorDeducaoAcumulado.add(calcularValorDeducao(pagamentoCartaoDebito.getArrecadador() .getId(), pagamento.getValorPagamento(), ArrecadacaoForma.CARTAO_DEBITO)); } if ((colecaoDebitosACobrarJurosParcelamento != null) && (!colecaoDebitosACobrarJurosParcelamento.isEmpty())) { Iterator itDebitosACobrarJurosParcelamento = colecaoDebitosACobrarJurosParcelamento.iterator(); while (itDebitosACobrarJurosParcelamento.hasNext()) { getControladorArrecadacao().atualizarNumeroParcelasBonus( (DebitoACobrar) (DebitoACobrar) itDebitosACobrarJurosParcelamento.next()); } } } if ((colecaoAntecipacaoCreditosDeParcelamento != null) && (!colecaoAntecipacaoCreditosDeParcelamento.isEmpty())) { Iterator iteratorAntecipacaoCreditosDeParcelamento = colecaoAntecipacaoCreditosDeParcelamento.iterator(); while (iteratorAntecipacaoCreditosDeParcelamento.hasNext()) { debitoCreditoParcelamentoHelper = (DebitoCreditoParcelamentoHelper) iteratorAntecipacaoCreditosDeParcelamento .next(); if ((debitoCreditoParcelamentoHelper.getColecaoCreditoARealizarParcelamento() != null) || (!debitoCreditoParcelamentoHelper.getColecaoCreditoARealizarParcelamento().isEmpty())) { Iterator iteratorAntecipacaoCreditoARealizarParcelamento = debitoCreditoParcelamentoHelper .getColecaoCreditoARealizarParcelamento().iterator(); while (iteratorAntecipacaoCreditoARealizarParcelamento.hasNext()) { CreditoARealizar creditoARealizarParcelamento = (CreditoARealizar) iteratorAntecipacaoCreditoARealizarParcelamento .next(); CobrancaDocumentoItem cobrancaDocumentoItemAux = new CobrancaDocumentoItem(); CreditoARealizarGeral creditoARealizarGeralParcelamento = new CreditoARealizarGeral(); creditoARealizarGeralParcelamento.setCreditoARealizar(creditoARealizarParcelamento); creditoARealizarGeralParcelamento.setId(creditoARealizarParcelamento.getId()); cobrancaDocumentoItemAux.setCreditoARealizarGeral(creditoARealizarGeralParcelamento); cobrancaDocumentoItemAux.setNumeroParcelasAntecipadas(debitoCreditoParcelamentoHelper .getQuantidadeAntecipacaoParcelas()); cobrancaDocumentoItemAux.setValorItemCobrado(creditoARealizarParcelamento .getValorAntecipacaoParcela(debitoCreditoParcelamentoHelper.getQuantidadeAntecipacaoParcelas() .intValue())); CreditoARealizar creditoARealizarAntecipacao = (CreditoARealizar) getControladorArrecadacao() .gerarDebitoCreditoParcelasAntecipadas(creditoARealizarParcelamento.getImovel().getId(), cobrancaDocumentoItemAux, usuarioLogado); CreditoARealizarGeral creditoARealizarGeralAntecipacao = new CreditoARealizarGeral(); creditoARealizarGeralAntecipacao.setId(creditoARealizarAntecipacao.getId()); creditoARealizarGeralAntecipacao.setCreditoARealizar(creditoARealizarAntecipacao); Devolucao devolucao = gerarDevolucaoCreditoARealizarCartaoDebito(creditoARealizarGeralAntecipacao, avisoBancario); colecaoDevolucoes.add(devolucao); valorDevolucaoCalculada = valorDevolucaoCalculada.add(devolucao.getValorDevolucao()); } } } } } } valorArrecadacaoInformada = valorArrecadacaoCalculada.subtract(valorDevolucaoCalculada); BigDecimal valorArrecadacaoInformadaTotal = avisoBancario.getValorArrecadacaoInformado().add(valorArrecadacaoInformada); avisoBancario.setValorArrecadacaoInformado(valorArrecadacaoInformadaTotal); BigDecimal valorDevolucaoCalculadoAcumulado = avisoBancario.getValorDevolucaoCalculado().add(valorDevolucaoCalculada); avisoBancario.setValorDevolucaoCalculado(valorDevolucaoCalculadoAcumulado); this.repositorioCobranca.atualizarValorAvisoBancario(avisoBancario); gerarAtualizarAvisoDeducoes(avisoBancario, valorDeducaoAcumulado); getControladorArrecadacao().inserirPagamentos(colecaoPagamentos, usuarioLogado, avisoBancario); if ((colecaoDevolucoes != null) && (!colecaoDevolucoes.isEmpty())) { getControladorBatch().inserirColecaoObjetoParaBatchTransacao(colecaoDevolucoes); } } catch (Exception e) { /* * COLOCADO PARA VERIFICAR SE J� FOI DADO ROLLBACK */ if (!sessionContext.getRollbackOnly()) { sessionContext.setRollbackOnly(); } e.printStackTrace(); throw new ControladorException("erro.sistema", e); } } /** * [UC0927] � Confirmar Cart�o de Cr�dito/D�bito * * @author Raphael Rossiter * @date 18/01/2010 * * @param helper * @param usuarioLogado * @return * @throws ControladorException */ public PagamentoCartaoDebito inserirPagamentoCartaoDebito(ParcelamentoCartaoCreditoHelper helper, Usuario usuarioLogado) throws ControladorException { PagamentoCartaoDebito pagamentoCartaoDebito = new PagamentoCartaoDebito(); pagamentoCartaoDebito.setDocumentoCartaoDebito(helper.getDocumentoCartao()); pagamentoCartaoDebito.setNumeroAutorizacao(helper.getAutorizacaoCartao()); pagamentoCartaoDebito.setNumeroCartaoDebito(Util.encrypt(helper.getNumeroCartao())); pagamentoCartaoDebito.setAnoMesValidade(new Integer(Util.formatarMesAnoParaAnoMesSemBarra(helper.getValidadeCartao()))); // PESQUISA DO CLIENTE FiltroCliente filtroCliente = new FiltroCliente(); filtroCliente.adicionarParametro(new ParametroSimples(FiltroCliente.ID, helper.getIdCliente())); Collection clientes = this.getControladorUtil().pesquisar(filtroCliente, Cliente.class.getName()); Cliente cliente = (Cliente) Util.retonarObjetoDeColecao(clientes); pagamentoCartaoDebito.setCliente(cliente); // PESQUISA DO ARRECADADOR FiltroArrecadador filtroArrecadador = new FiltroArrecadador(); filtroArrecadador.adicionarCaminhoParaCarregamentoEntidade("cliente"); filtroArrecadador.adicionarParametro(new ParametroSimples(FiltroArrecadador.CLIENTE_ID, helper.getIdArrecadador())); Collection arrecadadores = this.getControladorUtil().pesquisar(filtroArrecadador, Arrecadador.class.getName()); Arrecadador arrecadador = (Arrecadador) Util.retonarObjetoDeColecao(arrecadadores); pagamentoCartaoDebito.setArrecadador(arrecadador); pagamentoCartaoDebito.setUsuarioConfirmacao(usuarioLogado); pagamentoCartaoDebito.setUltimaAlteracao(new Date()); pagamentoCartaoDebito.setValorPagamento(new BigDecimal(helper.getValorTransacao().replace(".", "").replace(",", "."))); pagamentoCartaoDebito.setIdentificacaoTransacao(helper.getNumeroIdentificacaoTransacao()); // DATA DE CONFIRMA��O NA OPERADORA pagamentoCartaoDebito.setDataConfirmacao(helper.getDataConfirmacaoOperadora()); // INDICADOR CONFIRMA��O OPERADORA pagamentoCartaoDebito.setIndicadorConfirmadoOperadora(ConstantesSistema.NAO); // INSERINDO PAGAMENTO CART�O D�BITO Integer idPagamentoCartaoDebito = (Integer) this.getControladorUtil().inserir(pagamentoCartaoDebito); pagamentoCartaoDebito.setId(idPagamentoCartaoDebito); return pagamentoCartaoDebito; } /** * [UC0927] � Confirmar Cart�o de Cr�dito/D�bito * * [SB0004] � Incluir Dados da Confirma��o dos Pagamentos * * @author Raphael Rossiter * @date 18/01/2010 * * @param pagamentoCartaoDebito * @return * @throws ControladorException */ public AvisoBancario obterAvisoBancarioPagamentoCartaoDebito(PagamentoCartaoDebito pagamentoCartaoDebito) throws ControladorException { AvisoBancario avisoBancario = null; /* * O sistema dever� verificar se j� existe o aviso banc�rio para * associar o pagamento (Tabela AVISO_BANCARIO com ARRC_ID = ARRC_ID do * arrecadador selecionado, AVBC_DTLANCAMENTO = (data corrente + * ARTF_NNDIAFLOAT da tabela ARRECADADOR _CONTRATO_TARIFA com ARFM_ID = * �CARTAO DE DEBITO� e ARTF_ID = ARTF_ID da tabela ARRECADADOR_CONTRATO * com ARRC_ID = arrecadador selecionado) */ Date dataLancamento = pagamentoCartaoDebito.getDataConfirmacao(); Short nnDiasFloat = null; try { // GERANDO A DATA DE LAN�AMENTO DO AVISO BANC�RIO nnDiasFloat = repositorioCobranca.pesquisarNumeroDiasFloatCartao(pagamentoCartaoDebito.getArrecadador().getCliente().getId(), ArrecadacaoForma.CARTAO_DEBITO); if (nnDiasFloat != null) { dataLancamento = Util.adicionarNumeroDiasDeUmaData(dataLancamento, nnDiasFloat.intValue()); } // VERIFICANDO A EXIST�NCIA DO AVISO BANC�RIO avisoBancario = this.repositorioCobranca.pesquisarAvisoBancario(pagamentoCartaoDebito.getArrecadador().getId(), dataLancamento); /* * Caso n�o exista, inserir o aviso banc�rio para associar com o * pagamento que ser� gerado. */ if (avisoBancario == null) { avisoBancario = new AvisoBancario(); // DATA DE LAN�AMENTO avisoBancario.setDataLancamento(dataLancamento); // SEQUENCIAL avisoBancario.setNumeroSequencial(new Short("1")); // DATA REALIZADA avisoBancario.setDataRealizada(dataLancamento); /* * AVBC_VLREALIZADO Zero AVBC_VLARRECADACAOINFORMADO Zero * AVBC_VLDEVOLUCAOINFORMADO Zero AVBC_VLARRECADACAOCALCULADO * Zero AVBC_VLDEVOLUCAOCALCULADO Zero AVBC_VLCONTABILIZADO Zero */ avisoBancario.setValorRealizado(BigDecimal.ZERO); avisoBancario.setValorArrecadacaoInformado(BigDecimal.ZERO); avisoBancario.setValorDevolucaoInformado(BigDecimal.ZERO); avisoBancario.setValorArrecadacaoCalculado(BigDecimal.ZERO); avisoBancario.setValorDevolucaoCalculado(BigDecimal.ZERO); avisoBancario.setValorContabilizado(BigDecimal.ZERO); /* * AVBC_AMREFERENCIAARRECADACAO * * Maior ano/m�s entre o ano/m�s da data de lan�amento * (AVBC_DTLANCAMENTO) e o ano/m�s da arrecada��o * (PARM_AMREFERENCIAARRECADACAO da tabela SISTEMA_PARAMETROS). */ SistemaParametro sistemaParametro = this.getControladorUtil().pesquisarParametrosDoSistema(); Integer anoMesDataLancamento = Util.getAnoMesComoInteger(dataLancamento); Integer anosMesArrecadacao = sistemaParametro.getAnoMesArrecadacao(); if (Util.compararAnoMesReferencia(anoMesDataLancamento, anosMesArrecadacao, ">")) { avisoBancario.setAnoMesReferenciaArrecadacao(anoMesDataLancamento); } else { avisoBancario.setAnoMesReferenciaArrecadacao(anosMesArrecadacao); } // AVBC_ICCREDITODEBITO avisoBancario.setIndicadorCreditoDebito(AvisoBancario.INDICADOR_CREDITO); // AVBC_NNDOCUMENTO avisoBancario.setNumeroDocumento(0); // ARRC_ID avisoBancario.setArrecadador(pagamentoCartaoDebito.getArrecadador()); /* * CTBC_IDDEPOSITOARRECADACAO da tabela ARRECADADOR_CONTRATO com * ARRC_ID= ARRC_ID e ARCT_DTCONTRATOENCERRAMENTO com o valor * nulo */ Integer idContaBancaria = this.getControladorArrecadacao().pesquisarContaBancaria( pagamentoCartaoDebito.getArrecadador().getCodigoAgente()); ContaBancaria contaBancaria = new ContaBancaria(); contaBancaria.setId(idContaBancaria); avisoBancario.setContaBancaria(contaBancaria); // AVBC _TMULTIMAALTERACAO avisoBancario.setUltimaAlteracao(new Date()); // Id da Forma de arrecada��o escolhida �Cart�o de D�bito� ArrecadacaoForma arrecadacaoForma = new ArrecadacaoForma(); arrecadacaoForma.setId(ArrecadacaoForma.CARTAO_DEBITO); avisoBancario.setArrecadacaoForma(arrecadacaoForma); // INSERINDO O AVISO BANC�RIO Integer idAvisoBancario = (Integer) this.getControladorUtil().inserir(avisoBancario); avisoBancario.setId(idAvisoBancario); } } catch (ErroRepositorioException ex) { sessionContext.setRollbackOnly(); ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } return avisoBancario; } /** * [UC0927] � Confirmar Cart�o de Cr�dito/D�bito * * [SB0004] � Incluir Dados da Confirma��o dos Pagamentos * * @author Raphael Rossiter * @date 19/01/2010 * * @param pagamentoCartaoDebito * @param contaGeral * @param guiaPagamentoGeral * @param debitoACobrarGeral * @return PagamentoCartaoDebitoItem * @throws ControladorException */ public PagamentoCartaoDebitoItem inserirPagamentoCartaoDebitoItem(PagamentoCartaoDebito pagamentoCartaoDebito, ContaValoresHelper contaValoresHelper, GuiaPagamentoGeral guiaPagamentoGeral, DebitoACobrarGeral debitoACobrarGeral) throws ControladorException { PagamentoCartaoDebitoItem pagamentoCartaoDebitoItem = new PagamentoCartaoDebitoItem(); pagamentoCartaoDebitoItem.setPagamentoCartaoDebito(pagamentoCartaoDebito); // ASSOCIANDO COM O D�BITO SELECIONADO if (contaValoresHelper != null) { ContaGeral contaGeral = new ContaGeral(); contaGeral.setId(contaValoresHelper.getConta().getId()); pagamentoCartaoDebitoItem.setContaGeral(contaGeral); } pagamentoCartaoDebitoItem.setGuiaPagamentoGeral(guiaPagamentoGeral); pagamentoCartaoDebitoItem.setDebitoACobrarGeral(debitoACobrarGeral); pagamentoCartaoDebitoItem.setUltimaAlteracao(new Date()); Integer idPagamentoCartaoDebitoItem = (Integer) this.getControladorUtil().inserir(pagamentoCartaoDebitoItem); pagamentoCartaoDebitoItem.setId(idPagamentoCartaoDebitoItem); return pagamentoCartaoDebitoItem; } /** * [UC0927] � Confirmar Cart�o de Cr�dito/D�bito * * [SB0004] � Incluir Dados da Confirma��o dos Pagamentos * * @author Raphael Rossiter * @date 19/01/2010 * * @param contaGeral * @param avisoBancario * @param pagamentoCartaoDebito * @return Pagamento * @throws ControladorException */ public Pagamento gerarPagamentoContaCartaoDebito(ContaValoresHelper contaValoresHelper, AvisoBancario avisoBancario, PagamentoCartaoDebito pagamentoCartaoDebito) throws ControladorException { Pagamento pagamento = new Pagamento(); // RECUPERANDO OS DADOS DA CONTA FiltroConta filtroConta = new FiltroConta(); filtroConta.adicionarCaminhoParaCarregamentoEntidade("imovel"); filtroConta.adicionarCaminhoParaCarregamentoEntidade("localidade"); filtroConta.adicionarParametro(new ParametroSimples(FiltroConta.ID, contaValoresHelper.getConta().getId())); Collection colecaoConta = this.getControladorUtil().pesquisar(filtroConta, Conta.class.getName()); Conta conta = (Conta) Util.retonarObjetoDeColecao(colecaoConta); // A REFER�NCIA DO PAGAMENTO SER� A MESMA REFER�NCIA DA CONTA pagamento.setAnoMesReferenciaPagamento(conta.getReferencia()); pagamento.setAnoMesReferenciaArrecadacao(avisoBancario.getAnoMesReferenciaArrecadacao()); BigDecimal valorTotalContaSemAcrescimos = conta.getValorTotal(); pagamento.setValorPagamento(valorTotalContaSemAcrescimos); pagamento.setDataPagamento(avisoBancario.getDataLancamento()); pagamento.setPagamentoSituacaoAtual(null); pagamento.setPagamentoSituacaoAnterior(null); pagamento.setDebitoTipo(null); ContaGeral contaGeral = new ContaGeral(); contaGeral.setConta(conta); contaGeral.setId(conta.getId()); pagamento.setContaGeral(contaGeral); pagamento.setGuiaPagamento(null); pagamento.setDebitoACobrarGeral(null); DocumentoTipo documentoTipo = new DocumentoTipo(); documentoTipo.setId(new Integer(DocumentoTipo.CONTA)); pagamento.setDocumentoTipo(documentoTipo); pagamento.setDocumentoTipoAgregador(documentoTipo); pagamento.setAvisoBancario(avisoBancario); pagamento.setImovel(conta.getImovel()); pagamento.setArrecadadorMovimentoItem(null); ArrecadacaoForma arrecadacaoForma = new ArrecadacaoForma(); arrecadacaoForma.setId(ArrecadacaoForma.CARTAO_DEBITO); pagamento.setArrecadacaoForma(arrecadacaoForma); pagamento.setUltimaAlteracao(new Date()); pagamento.setCliente(null); pagamento.setDataProcessamento(new Date()); // LOCALIDADE DA CONTA pagamento.setLocalidade(conta.getLocalidade()); // PAGAMENTO_CARTAO_DEBITO pagamento.setPagamentoCartaoDebito(pagamentoCartaoDebito); return pagamento; } /** * [UC0927] � Confirmar Cart�o de Cr�dito/D�bito * * [SB0004] � Incluir Dados da Confirma��o dos Pagamentos * * @author Raphael Rossiter * @date 19/01/2010 * * @param guiaPagamentoGeral * @param avisoBancario * @param pagamentoCartaoDebito * @return Pagamento * @throws ControladorException */ public Pagamento gerarPagamentoGuiaPagamentoCartaoDebito(GuiaPagamentoGeral guiaPagamentoGeral, AvisoBancario avisoBancario, PagamentoCartaoDebito pagamentoCartaoDebito) throws ControladorException { Pagamento pagamento = new Pagamento(); // RECUPERANDO OS DADOS DA GUIA DE PAGAMENTO FiltroGuiaPagamento filtroGuiaPagamento = new FiltroGuiaPagamento(); filtroGuiaPagamento.adicionarCaminhoParaCarregamentoEntidade("imovel"); filtroGuiaPagamento.adicionarCaminhoParaCarregamentoEntidade("debitoTipo"); filtroGuiaPagamento.adicionarCaminhoParaCarregamentoEntidade("localidade"); filtroGuiaPagamento.adicionarParametro(new ParametroSimples(FiltroGuiaPagamento.ID, guiaPagamentoGeral.getId())); Collection colecaoGuiaPagamento = this.getControladorUtil().pesquisar(filtroGuiaPagamento, GuiaPagamento.class.getName()); GuiaPagamento guiaPagamento = (GuiaPagamento) Util.retonarObjetoDeColecao(colecaoGuiaPagamento); // Cria o pagamento para a guia de pagamento pagamento.setAnoMesReferenciaPagamento(null); pagamento.setAnoMesReferenciaArrecadacao(avisoBancario.getAnoMesReferenciaArrecadacao()); pagamento.setValorPagamento(guiaPagamento.getValorDebito()); pagamento.setDataPagamento(avisoBancario.getDataLancamento()); pagamento.setPagamentoSituacaoAtual(null); pagamento.setPagamentoSituacaoAnterior(null); pagamento.setDebitoTipo(guiaPagamento.getDebitoTipo()); pagamento.setContaGeral(null); pagamento.setGuiaPagamento(guiaPagamento); pagamento.setDebitoACobrarGeral(null); pagamento.setLocalidade(guiaPagamento.getLocalidade()); DocumentoTipo documentoTipo = new DocumentoTipo(); documentoTipo.setId(new Integer(DocumentoTipo.GUIA_PAGAMENTO)); pagamento.setDocumentoTipo(documentoTipo); pagamento.setDocumentoTipoAgregador(documentoTipo); pagamento.setAvisoBancario(avisoBancario); pagamento.setImovel(guiaPagamento.getImovel()); pagamento.setArrecadadorMovimentoItem(null); ArrecadacaoForma arrecadacaoForma = new ArrecadacaoForma(); arrecadacaoForma.setId(ArrecadacaoForma.CARTAO_DEBITO); pagamento.setArrecadacaoForma(arrecadacaoForma); pagamento.setUltimaAlteracao(new Date()); pagamento.setCliente(null); pagamento.setDataProcessamento(new Date()); // PAGAMENTO_CARTAO_DEBITO pagamento.setPagamentoCartaoDebito(pagamentoCartaoDebito); return pagamento; } /** * [UC0927] � Confirmar Cart�o de Cr�dito/D�bito * * [SB0004] � Incluir Dados da Confirma��o dos Pagamentos * * @author Raphael Rossiter * @date 19/01/2010 * * @param debitoACobrarGeral * @param avisoBancario * @param pagamentoCartaoDebito * @return Pagamento * @throws ControladorException */ public Pagamento gerarPagamentoDebitoACobrarCartaoDebito(DebitoACobrarGeral debitoACobrarGeral, AvisoBancario avisoBancario, PagamentoCartaoDebito pagamentoCartaoDebito) throws ControladorException { Pagamento pagamento = new Pagamento(); // RECUPERANDO OS DADOS DA GUIA DE PAGAMENTO FiltroDebitoACobrar filtroDebitoACobrar = new FiltroDebitoACobrar(); filtroDebitoACobrar.adicionarCaminhoParaCarregamentoEntidade("imovel"); filtroDebitoACobrar.adicionarCaminhoParaCarregamentoEntidade("debitoTipo"); filtroDebitoACobrar.adicionarCaminhoParaCarregamentoEntidade("localidade"); filtroDebitoACobrar.adicionarParametro(new ParametroSimples(FiltroDebitoACobrar.ID, debitoACobrarGeral.getId())); Collection colecaoDebitoACobrar = this.getControladorUtil().pesquisar(filtroDebitoACobrar, DebitoACobrar.class.getName()); DebitoACobrar debitoACobrar = (DebitoACobrar) Util.retonarObjetoDeColecao(colecaoDebitoACobrar); if (debitoACobrar == null) { debitoACobrar = debitoACobrarGeral.getDebitoACobrar(); } // Cria o pagamento para o d�bito a cobrar pagamento.setAnoMesReferenciaPagamento(null); pagamento.setAnoMesReferenciaArrecadacao(avisoBancario.getAnoMesReferenciaArrecadacao()); pagamento.setValorPagamento(debitoACobrar.getValorTotalComBonus()); pagamento.setDataPagamento(avisoBancario.getDataLancamento()); pagamento.setPagamentoSituacaoAtual(null); pagamento.setPagamentoSituacaoAnterior(null); pagamento.setDebitoTipo(debitoACobrar.getDebitoTipo()); pagamento.setContaGeral(null); pagamento.setGuiaPagamento(null); pagamento.setDebitoACobrarGeral(debitoACobrarGeral); pagamento.setLocalidade(debitoACobrar.getLocalidade()); DocumentoTipo documentoTipo = new DocumentoTipo(); documentoTipo.setId(new Integer(DocumentoTipo.DEBITO_A_COBRAR)); pagamento.setDocumentoTipo(documentoTipo); pagamento.setDocumentoTipoAgregador(documentoTipo); pagamento.setAvisoBancario(avisoBancario); pagamento.setImovel(debitoACobrar.getImovel()); pagamento.setArrecadadorMovimentoItem(null); ArrecadacaoForma arrecadacaoForma = new ArrecadacaoForma(); arrecadacaoForma.setId(ArrecadacaoForma.CARTAO_DEBITO); pagamento.setArrecadacaoForma(arrecadacaoForma); pagamento.setUltimaAlteracao(new Date()); pagamento.setCliente(null); pagamento.setDataProcessamento(new Date()); // PAGAMENTO_CARTAO_DEBITO pagamento.setPagamentoCartaoDebito(pagamentoCartaoDebito); return pagamento; } /** * [UC0927] � Confirmar Cart�o de Cr�dito/D�bito * * @author Raphael Rossiter * @date 19/01/2010 * * @param idArrecadador * @param valorPagamento * @return BigDecimal * @throws ControladorException */ public BigDecimal calcularValorDeducao(Integer idArrecadador, BigDecimal valorPagamento, Integer idArrecadacaoForma) throws ControladorException { BigDecimal valorDeducao = new BigDecimal("0.00"); ArrecadadorContratoTarifa arrecadadorContratoTarifa = null; arrecadadorContratoTarifa = this.pesquisarArrecadadorContratoTarifa(idArrecadador, idArrecadacaoForma); /* * O sistema dever� verificar qual o tipo de c�lculo da tarifa para o * contrato do arrecadador, valor monet�rio ou percentual do pagamento. */ if (arrecadadorContratoTarifa.getValorTarifa() != null) { /* * VALOR MONET�RIO * * O sistema dever� adicionar ao valor da dedu��o o valor da tarifa * para cada pagamento informado. */ valorDeducao = arrecadadorContratoTarifa.getValorTarifa(); } else { /* * VALOR PERCENTUAL * * o sistema dever� calcular qual o valor do percentual no valor do * pagamento ((Valor do Pagamento * ARCT_PCTARIFA)/100) */ valorDeducao = (valorPagamento.multiply(arrecadadorContratoTarifa.getValorTarifaPercentual())).divide(new BigDecimal("100.00")); } return valorDeducao; } /** * [UC0927] � Confirmar Cart�o de Cr�dito/D�bito * * [SB0005 � Calcular Valor da Dedu��o] * * @author Raphael Rossiter * @date 19/01/2010 * * @param idArrecadador * @param idArrecadacaoForma * @return * @throws ErroRepositorioException */ public ArrecadadorContratoTarifa pesquisarArrecadadorContratoTarifa(Integer idArrecadador, Integer idArrecadacaoForma) throws ControladorException { ArrecadadorContratoTarifa retorno = null; try { retorno = repositorioCobranca.pesquisarArrecadadorContratoTarifa(idArrecadador, idArrecadacaoForma); } catch (ErroRepositorioException ex) { ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } return retorno; } /** * [UC0927] � Confirmar Cart�o de Cr�dito/D�bito * * [SB0005 � Calcular Valor da Dedu��o] * * @author Raphael Rossiter * @date 02/02/2010 * * @param avisoBancario * @param valorDeducao * @throws ControladorException */ public void gerarAtualizarAvisoDeducoes(AvisoBancario avisoBancario, BigDecimal valorDeducao) throws ControladorException { try { // VERIFICANDO A EXIST�NCIA DE DEDU��O PARA O AVISO BANC�RIO AvisoDeducoes avisoDeducoes = repositorioCobranca.pesquisarAvisoDeducoes(avisoBancario.getId()); BigDecimal valorTotalAvisoDeducoes = new BigDecimal(0); BigDecimal valorAviso = new BigDecimal(0); if (avisoDeducoes != null) { // ATUALIZANDO A DEDU��O DO AVISO BANC�RIO valorTotalAvisoDeducoes = avisoDeducoes.getValorDeducao().add(valorDeducao); repositorioCobranca.atualizarValorAvisoDeducoes(avisoBancario.getId(), valorTotalAvisoDeducoes); } else { // INSERINDO A DEDU��O DO AVISO BANC�RIO AvisoDeducoesPK avisoDeducoesPK = new AvisoDeducoesPK(); avisoDeducoesPK.setAvisoBancarioId(avisoBancario.getId()); avisoDeducoesPK.setDeducaoTipoId(DeducaoTipo.TARIFA); avisoDeducoes = new AvisoDeducoes(); avisoDeducoes.setComp_id(avisoDeducoesPK); avisoDeducoes.setValorDeducao(valorDeducao); avisoDeducoes.setUltimaAlteracao(new Date()); this.getControladorUtil().inserir(avisoDeducoes); valorTotalAvisoDeducoes = valorDeducao; } // ATUALIZA O VALOR REALIZADO DO AVISO BANC�RIO RETIRANDO O VALOR DA // DEDU��O valorAviso = avisoBancario.getValorArrecadacaoInformado().subtract(valorTotalAvisoDeducoes); avisoBancario.setValorRealizado(valorAviso); this.getControladorUtil().atualizar(avisoBancario); } catch (ErroRepositorioException ex) { ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } } /** * [UC0349] Emitir Documento de Cobran�a � Aviso de Corte * * @author Vivianne Sousa * @date 11/12/2009 */ public void emitirDocumentoCobranca(CobrancaAcaoAtividadeCronograma cobrancaAcaoAtividadeCronograma, CobrancaAcaoAtividadeComando cobrancaAcaoAtividadeComando, CobrancaAcao acaoCobranca, CobrancaGrupo grupoCobranca) throws ControladorException { BufferedWriter out = null; ZipOutputStream zos = null; File leitura = null; try { Integer idCronogramaAtividadeAcaoCobranca = null; Integer idComandoAtividadeAcaoCobranca = null; Integer idAcaoCobranca = null; if (cobrancaAcaoAtividadeCronograma != null && cobrancaAcaoAtividadeCronograma.getId() != null) { idCronogramaAtividadeAcaoCobranca = cobrancaAcaoAtividadeCronograma.getId(); } if (cobrancaAcaoAtividadeComando != null && cobrancaAcaoAtividadeComando.getId() != null) { idComandoAtividadeAcaoCobranca = cobrancaAcaoAtividadeComando.getId(); } if (acaoCobranca != null && acaoCobranca.getId() != null) { idAcaoCobranca = acaoCobranca.getId(); } // Definindo arquivo para escrita Date dataAtual = new Date(); String nomeZip = null; if (idAcaoCobranca.equals(CobrancaAcao.AVISO_CORTE)) { if (idCronogramaAtividadeAcaoCobranca != null) { nomeZip = "AVISO_CORTE_GRUPO_" + grupoCobranca.getId() + "_" + Util.formatarData(dataAtual) + Util.formatarHoraSemDataSemDoisPontos(dataAtual); nomeZip = nomeZip.replace("/", "_"); } else { String descricaoAbrevDocumentoTipo = ""; if (acaoCobranca != null && acaoCobranca.getDocumentoTipo() != null) { descricaoAbrevDocumentoTipo = acaoCobranca.getDocumentoTipo().getDescricaoAbreviado(); } String tituloComandoEventual = cobrancaAcaoAtividadeComando.getDescricaoTitulo(); nomeZip = descricaoAbrevDocumentoTipo + " " + tituloComandoEventual + " " + Util.formatarData(dataAtual) + Util.formatarHoraSemDataSemDoisPontos(dataAtual); nomeZip = nomeZip.replace("/", "_"); nomeZip = nomeZip.replace(" ", "_"); } } else if (idAcaoCobranca.equals(CobrancaAcao.AVISO_CORTE_A_REVELIA)) { if (idCronogramaAtividadeAcaoCobranca != null) { nomeZip = "AVISO_CORTE_A_REVELIA_GRUPO_" + grupoCobranca.getId() + "_" + Util.formatarData(dataAtual) + Util.formatarHoraSemDataSemDoisPontos(dataAtual); nomeZip = nomeZip.replace("/", "_"); } else { String descricaoAbrevDocumentoTipo = ""; if (acaoCobranca != null && acaoCobranca.getDocumentoTipo() != null) { descricaoAbrevDocumentoTipo = acaoCobranca.getDocumentoTipo().getDescricaoAbreviado(); } String tituloComandoEventual = cobrancaAcaoAtividadeComando.getDescricaoTitulo(); nomeZip = descricaoAbrevDocumentoTipo + " " + tituloComandoEventual + " " + Util.formatarData(dataAtual) + Util.formatarHoraSemDataSemDoisPontos(dataAtual); nomeZip = nomeZip.replace("/", "_"); nomeZip = nomeZip.replace(" ", "_"); } } // pegar o arquivo, zipar pasta e arquivo e escrever no stream System.out.println("***************************************"); System.out.println("INICO DA CRIACAO DO ARQUIVO"); System.out.println("***************************************"); // criar o arquivo zip File compactado = new File(nomeZip + ".zip"); // nomeZip zos = new ZipOutputStream(new FileOutputStream(compactado)); leitura = new File(nomeZip + ".txt"); out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(leitura.getAbsolutePath()))); System.out.println("***************************************"); System.out.println("ENTROU NO AVISO DE CORTE"); System.out.println("***************************************"); Collection colecaoCobrancaDocumento = repositorioCobranca.pesquisarDocumentoCobrancaImpressao(idComandoAtividadeAcaoCobranca, idCronogramaAtividadeAcaoCobranca); System.out.println("***************************************"); System.out.println("QTD DE COBRANCA DOCUMENTO:" + colecaoCobrancaDocumento.size()); System.out.println("***************************************"); if (colecaoCobrancaDocumento != null && !colecaoCobrancaDocumento.isEmpty()) { Iterator iterCobrancaDocumentoImpressao = colecaoCobrancaDocumento.iterator(); while (iterCobrancaDocumentoImpressao.hasNext()) { String linhaTxt = (String) iterCobrancaDocumentoImpressao.next(); StringBuilder cobrancaDocumentoTxt = new StringBuilder(); cobrancaDocumentoTxt.append(linhaTxt); cobrancaDocumentoTxt.append(System.getProperty("line.separator")); out.write(cobrancaDocumentoTxt.toString()); } } out.flush(); System.out.println("***************************************"); System.out.println("FIM DA CRIACAO DO ARQUIVO"); System.out.println("***************************************"); } catch (ErroRepositorioException ex) { ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } catch (IOException e) { e.printStackTrace(); throw new ControladorException("erro.sistema", e); } catch (Exception e) { e.printStackTrace(); throw new ControladorException("erro.sistema", e); } finally { try { out.close(); ZipUtil.adicionarArquivo(zos, leitura); // close the stream zos.close(); leitura.delete(); } catch (IOException e) { e.printStackTrace(); throw new ControladorException("erro.sistema", e); } } } /** * Formata a string builder de cobran�a documento de acordo com a quantidade * de itens.Caso a quantidade de itens seja maior que quantidadeContas ent�o * as contas com o ano mes referencia mais antigas ser�o somadas (os valores * do item e dos acrescimos) e formatadas na stringbuilder. * * [UC0348] Emitir Documento de Cobranca * * @author Vivianne Sousa * @date 09/12/2009 * * @return * @throws ControladorException */ protected int formatarCobrancaDocumentoItemSemValorEncargos(StringBuilder cobrancaDocumentoTxt, Collection colecaoCobrancaDocumentoItemConta, int quantidadeContas, CobrancaDocumento cobrancaDocumento) throws ControladorException { int indicadorEstouro = 0; int complementoEspecosBranco = 0; BigDecimal somaValorItem = new BigDecimal(0); complementoEspecosBranco = quantidadeContas * 35; int countImpressao = colecaoCobrancaDocumentoItemConta.size() - (quantidadeContas - 1); if (colecaoCobrancaDocumentoItemConta.size() > quantidadeContas) { indicadorEstouro = 1; CalcularValorDataVencimentoAnteriorHelper calcularValorDataVencimentoAnteriorHelper = this.calcularValorDataVencimentoAnterior( colecaoCobrancaDocumentoItemConta, quantidadeContas); // Ano mes de referencia da conta anterior cobrancaDocumentoTxt.append("DEBTO.ATE "); complementoEspecosBranco = complementoEspecosBranco - 11; // data de vencimento anterior cobrancaDocumentoTxt.append(Util.completaString( Util.formatarData(calcularValorDataVencimentoAnteriorHelper.getDataVencimentoAnterior()), 10)); complementoEspecosBranco = complementoEspecosBranco - 10; String valorItemAnterior = Util.formataBigDecimal(calcularValorDataVencimentoAnteriorHelper.getValorAnterior(), 2, true); // Valor do item anterior cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(valorItemAnterior, 14)); complementoEspecosBranco = complementoEspecosBranco - 14; somaValorItem = somaValorItem.add(calcularValorDataVencimentoAnteriorHelper.getValorAnterior()); } if (countImpressao <= 1) { Iterator iteratorColecaoCobrancaDocumentoItem = colecaoCobrancaDocumentoItemConta.iterator(); CobrancaDocumentoItem cobrancaDocumentoItem = null; while (iteratorColecaoCobrancaDocumentoItem.hasNext()) { cobrancaDocumentoItem = (CobrancaDocumentoItem) iteratorColecaoCobrancaDocumentoItem.next(); // Ano mes de referencia da conta cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda( Util.formatarAnoMesParaMesAno(cobrancaDocumentoItem.getContaGeral().getConta().getReferencia()), 11)); complementoEspecosBranco = complementoEspecosBranco - 11; // data de vencimento cobrancaDocumentoTxt.append(Util.completaString( Util.formatarData(cobrancaDocumentoItem.getContaGeral().getConta().getDataVencimentoConta()), 10)); complementoEspecosBranco = complementoEspecosBranco - 10; String valorItem = Util.formataBigDecimal(cobrancaDocumentoItem.getValorItemCobrado(), 2, true); // Valor do item cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(valorItem, 14)); complementoEspecosBranco = complementoEspecosBranco - 14; somaValorItem = somaValorItem.add(cobrancaDocumentoItem.getValorItemCobrado()); } } else { CobrancaDocumentoItem cobrancaDocumentoItem = null; while (countImpressao < colecaoCobrancaDocumentoItemConta.size()) { cobrancaDocumentoItem = (CobrancaDocumentoItem) ((List) colecaoCobrancaDocumentoItemConta).get(countImpressao); // Ano mes de referencia da conta cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda( Util.formatarAnoMesParaMesAno(cobrancaDocumentoItem.getContaGeral().getConta().getReferencia()), 11)); complementoEspecosBranco = complementoEspecosBranco - 11; // data de vencimento cobrancaDocumentoTxt.append(Util.completaString( Util.formatarData(cobrancaDocumentoItem.getContaGeral().getConta().getDataVencimentoConta()), 10)); complementoEspecosBranco = complementoEspecosBranco - 10; String valorItem = Util.formataBigDecimal(cobrancaDocumentoItem.getValorItemCobrado(), 2, true); // Valor do item cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(valorItem, 14)); complementoEspecosBranco = complementoEspecosBranco - 14; somaValorItem = somaValorItem.add(cobrancaDocumentoItem.getValorItemCobrado()); countImpressao++; } } cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda("", complementoEspecosBranco)); // soma dos valores item String somaValorItemStr = Util.formataBigDecimal(somaValorItem, 2, true); cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(somaValorItemStr, 14)); return indicadorEstouro; } /** * * Este caso de uso permite a emiss�o de um ou mais documentos de cobran�a * * [UC0349] Emitir Documento de Cobran�a * * @author Raphael Rossiter,Vivianne Sousa * @data 26/05/2006,14/12/2009 * * @param * @return void */ public void gerarDocumentoCobrancaImpressaoAvisoCorte(CobrancaAcaoAtividadeCronograma cobrancaAcaoAtividadeCronograma, CobrancaAcaoAtividadeComando cobrancaAcaoAtividadeComando, Date dataAtualPesquisa, CobrancaAcao acaoCobranca, CobrancaGrupo grupoCobranca, CobrancaCriterio cobrancaCriterio) throws ControladorException { boolean flagFimPesquisa = false; final int quantidadeCobrancaDocumento = 1000; int quantidadeCobrancaDocumentoInicio = 0; StringBuilder cobrancaDocumentoTxt = new StringBuilder(); int sequencialImpressao = 0; int sequencialOrdenacao = 0; Collection colecaoCobrancaDocumento = null; Map<Integer, Integer> mapAtualizaSequencial = null; Integer idCronogramaAtividadeAcaoCobranca = null; Integer idComandoAtividadeAcaoCobranca = null; Integer idAcaoCobranca = null; if (cobrancaAcaoAtividadeCronograma != null && cobrancaAcaoAtividadeCronograma.getId() != null) { idCronogramaAtividadeAcaoCobranca = cobrancaAcaoAtividadeCronograma.getId(); } if (cobrancaAcaoAtividadeComando != null && cobrancaAcaoAtividadeComando.getId() != null) { idComandoAtividadeAcaoCobranca = cobrancaAcaoAtividadeComando.getId(); } if (acaoCobranca != null && acaoCobranca.getId() != null) { idAcaoCobranca = acaoCobranca.getId(); } while (!flagFimPesquisa) { // map que armazena o sequencial e o numero da // conta para no final atualizar todos os sequencias mapAtualizaSequencial = new HashMap(); try { System.out.println("***************************************"); System.out.println("ENTROU NO AVISO DE CORTE"); System.out.println("***************************************"); colecaoCobrancaDocumento = repositorioCobranca.pesquisarCobrancaDocumentoParaEmitir(idCronogramaAtividadeAcaoCobranca, idComandoAtividadeAcaoCobranca, dataAtualPesquisa, idAcaoCobranca, quantidadeCobrancaDocumentoInicio); System.out.println("***************************************"); System.out.println("QTD DE COBRANCA DOCUMENTO:" + colecaoCobrancaDocumento.size()); System.out.println("***************************************"); } catch (ErroRepositorioException ex) { ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } if (colecaoCobrancaDocumento != null && !colecaoCobrancaDocumento.isEmpty()) { System.out.println("***************************************"); System.out.println("QUANTIDADE COBRAN�A:" + colecaoCobrancaDocumento.size()); System.out.println("***************************************"); if (colecaoCobrancaDocumento.size() < quantidadeCobrancaDocumento) { flagFimPesquisa = true; } else { quantidadeCobrancaDocumentoInicio = quantidadeCobrancaDocumentoInicio + 1000; } int metadeColecao = 0; if (colecaoCobrancaDocumento.size() % 2 == 0) { metadeColecao = colecaoCobrancaDocumento.size() / 2; } else { metadeColecao = (colecaoCobrancaDocumento.size() / 2) + 1; } Map<Integer, Map<Object, Object>> mapCobrancaDocumentoOrdenada = dividirColecao(colecaoCobrancaDocumento); if (mapCobrancaDocumentoOrdenada != null) { int countOrdem = 0; while (countOrdem < mapCobrancaDocumentoOrdenada.size()) { Map<Object, Object> mapCobrancaoDocumentoDivididas = mapCobrancaDocumentoOrdenada.get(countOrdem); Iterator iteratorCobrancaDocumento = mapCobrancaoDocumentoDivididas.keySet().iterator(); while (iteratorCobrancaDocumento.hasNext()) { CobrancaDocumento cobrancaDocumento = null; int situacao = 0; cobrancaDocumento = (CobrancaDocumento) iteratorCobrancaDocumento.next(); String nomeCliente = null; Collection colecaoCobrancaDocumentoItem = null; /* * Estes objetos auxiliar�o na formata��o da * inscri��o que ser� composta por informa��es do * documento de cobran�a e do im�vel a ele associado */ Imovel inscricao = null; SetorComercial setorComercialInscricao = null; Quadra quadraInscricao = null; /* * Objeto que ser� utilizado para armazenar as * informa��es do documento de cobran�a de acordo * com o layout definido no caso de uso */ sequencialImpressao++; while (situacao < 2) { if (situacao == 0) { situacao = 1; sequencialImpressao = atualizaSequencial(sequencialImpressao, situacao, metadeColecao); } else { cobrancaDocumento = (CobrancaDocumento) mapCobrancaoDocumentoDivididas.get(cobrancaDocumento); situacao = 2; sequencialImpressao = atualizaSequencial(sequencialImpressao, situacao, metadeColecao); } if (cobrancaDocumento != null) { try { nomeCliente = this.repositorioClienteImovel.pesquisarNomeClientePorImovel(cobrancaDocumento .getImovel().getId()); colecaoCobrancaDocumentoItem = this.repositorioCobranca .selecionarCobrancaDocumentoItemReferenteConta(cobrancaDocumento); } catch (ErroRepositorioException ex) { ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } if (colecaoCobrancaDocumentoItem != null && !colecaoCobrancaDocumentoItem.isEmpty()) { // In�cio do processo de gera��o da // linha do txt // Nome da Localidade cobrancaDocumentoTxt.append(Util.completaString(cobrancaDocumento.getLocalidade().getDescricao(), 25)); if (cobrancaAcaoAtividadeCronograma != null) { String ciclo = "CICLO:" + Util.formatarAnoMesParaMesAno(cobrancaAcaoAtividadeCronograma .getCobrancaAcaoCronograma().getCobrancaGrupoCronogramaMes() .getAnoMesReferencia()); cobrancaDocumentoTxt.append(Util.completaString(ciclo, 13)); } else { cobrancaDocumentoTxt.append(Util.completaString("", 13)); } // Inscri��o quadraInscricao = new Quadra(); setorComercialInscricao = new SetorComercial(); inscricao = new Imovel(); quadraInscricao.setNumeroQuadra(cobrancaDocumento.getNumeroQuadra()); setorComercialInscricao.setCodigo(cobrancaDocumento.getCodigoSetorComercial()); inscricao.setLocalidade(cobrancaDocumento.getLocalidade()); inscricao.setSetorComercial(setorComercialInscricao); inscricao.setQuadra(quadraInscricao); inscricao.setLote(cobrancaDocumento.getImovel().getLote()); inscricao.setSubLote(cobrancaDocumento.getImovel().getSubLote()); cobrancaDocumentoTxt.append(Util.completaString(inscricao.getInscricaoFormatada(), 20)); // Nome do Cliente cobrancaDocumentoTxt.append(Util.completaString(nomeCliente, 50)); // Matr�cula do im�vel String matriculaImovelFormatada = Util.retornaMatriculaImovelFormatada(cobrancaDocumento .getImovel().getId()); cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(matriculaImovelFormatada, 10)); // Endere�o Formatado cobrancaDocumentoTxt.append(Util.completaString(cobrancaDocumento.getImovel() .getEnderecoFormatadoAbreviado(), 72)); // Grupo de Cobran�a cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(cobrancaDocumento.getQuadra() .getRota().getCobrancaGrupo().getId().toString(), 2)); // Sequencial do Documento de Cobran�a cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda( "" + cobrancaDocumento.getNumeroSequenciaDocumento(), 9)); // C�digo da situa��o da liga��o de �gua cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(cobrancaDocumento.getImovel() .getLigacaoAguaSituacao().getId().toString(), 1)); // C�digo da situa��o da liga��o de // esgoto cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(cobrancaDocumento.getImovel() .getLigacaoEsgotoSituacao().getId().toString(), 1)); /* * Quantidades de economias por * categoria: 1� RESID�NCIAL 2� * COMERCIAL 3� INDUSTRIAL 4� P�BLICA */ Collection colecaoCategorias = this.getControladorImovel().obterQuantidadeEconomiasCategoria( cobrancaDocumento.getImovel()); String qtdResidencial = ""; String qtdComercial = ""; String qtdIndustrial = ""; String qtdPublico = ""; if (colecaoCategorias != null && !colecaoCategorias.isEmpty()) { Iterator iteratorColecaoCategorias = colecaoCategorias.iterator(); Categoria categoria = null; while (iteratorColecaoCategorias.hasNext()) { categoria = (Categoria) iteratorColecaoCategorias.next(); if (categoria.getId().equals(Categoria.RESIDENCIAL)) { qtdResidencial = "" + categoria.getQuantidadeEconomiasCategoria(); } else if (categoria.getId().equals(Categoria.COMERCIAL)) { qtdComercial = "" + categoria.getQuantidadeEconomiasCategoria(); } else if (categoria.getId().equals(Categoria.INDUSTRIAL)) { qtdIndustrial = "" + categoria.getQuantidadeEconomiasCategoria(); } else if (categoria.getId().equals(Categoria.PUBLICO)) { qtdPublico = "" + categoria.getQuantidadeEconomiasCategoria(); } } } colecaoCategorias = null; // Resid�ncial if (!qtdResidencial.equals("")) { cobrancaDocumentoTxt.append(Util.adicionarZerosEsquedaNumero(3, qtdResidencial)); } else { cobrancaDocumentoTxt.append(Util.completaString("", 3)); } // Comercial if (!qtdComercial.equals("")) { cobrancaDocumentoTxt.append(Util.adicionarZerosEsquedaNumero(3, qtdComercial)); } else { cobrancaDocumentoTxt.append(Util.completaString("", 3)); } // Industrial if (!qtdIndustrial.equals("")) { cobrancaDocumentoTxt.append(Util.adicionarZerosEsquedaNumero(3, qtdIndustrial)); } else { cobrancaDocumentoTxt.append(Util.completaString("", 3)); } // P�blico if (!qtdPublico.equals("")) { cobrancaDocumentoTxt.append(Util.adicionarZerosEsquedaNumero(3, qtdPublico)); } else { cobrancaDocumentoTxt.append(Util.completaString("", 3)); } // Perfil do Im�vel cobrancaDocumentoTxt.append(Util.completaString(cobrancaDocumento.getImovelPerfil().getDescricao(), 8)); // Data de Emiss�o if (cobrancaDocumento.getEmissao() != null) { cobrancaDocumentoTxt.append(Util.formatarData(cobrancaDocumento.getEmissao())); } else { cobrancaDocumentoTxt.append(Util.completaString("", 10)); } // alterado por Vivianne Sousa // 15/09/2008 // Data de Validade Date dataValidade = this.obterDataValidadeDocumentoCobranca(cobrancaDocumento, null, null); if (dataValidade != null) { cobrancaDocumentoTxt.append(Util.formatarData(dataValidade)); } else { cobrancaDocumentoTxt.append(Util.completaString("", 10)); } // LINHA 07 // ================================== /* * Selecionar os itens do documento de * cobran�a correspondentes a conta e * ordenar por ano/m�s de refer�ncia da * conta */ if (colecaoCobrancaDocumentoItem != null && !colecaoCobrancaDocumentoItem.isEmpty()) { // retorna o indicador de estouro e // formata o cobran�aDocumentoTxt // com os dados formatarCobrancaDocumentoItemSemValorEncargos(cobrancaDocumentoTxt, colecaoCobrancaDocumentoItem, 28, cobrancaDocumento); } // Constante "GR- " cobrancaDocumentoTxt.append("GR-"); // Grupo de Cobran�a cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(cobrancaDocumento.getQuadra() .getRota().getCobrancaGrupo().getId().toString(), 2)); // C�digo e descri��o da empresa if (cobrancaDocumento.getEmpresa() != null) { cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(cobrancaDocumento .getEmpresa().getId().toString(), 2)); cobrancaDocumentoTxt.append("-"); cobrancaDocumentoTxt.append(Util.completaString(cobrancaDocumento.getEmpresa() .getDescricaoAbreviada(), 11)); } else { cobrancaDocumentoTxt.append(Util.completaString("", 14)); } // Sigla e descri�ao da ger�ncia // regional cobrancaDocumentoTxt.append(Util.completaString(cobrancaDocumento.getLocalidade() .getGerenciaRegional().getNomeAbreviado(), 3)); cobrancaDocumentoTxt.append("-"); cobrancaDocumentoTxt.append(Util.completaString(cobrancaDocumento.getLocalidade() .getGerenciaRegional().getNome(), 8)); // Sequencial de impress�o cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda( Util.retornaSequencialFormatado(sequencialImpressao), 9)); // LINHA 13 // ================================== String representacaoNumericaCodBarra = ""; // Obt�m a representa��o num�rica do // c�digo de barra representacaoNumericaCodBarra = this.getControladorArrecadacao() .obterRepresentacaoNumericaCodigoBarra(5, cobrancaDocumento.getValorDocumento(), cobrancaDocumento.getLocalidade().getId(), cobrancaDocumento.getImovel().getId(), null, null, null, null, String.valueOf(cobrancaDocumento.getNumeroSequenciaDocumento()), cobrancaDocumento.getDocumentoTipo().getId(), null, null, null); // Formata a representa��o n�merica do // c�digo de barras String representacaoNumericaCodBarraFormatada = representacaoNumericaCodBarra.substring(0, 11) + " " + representacaoNumericaCodBarra.substring(11, 12) + " " + representacaoNumericaCodBarra.substring(12, 23) + " " + representacaoNumericaCodBarra.substring(23, 24) + " " + representacaoNumericaCodBarra.substring(24, 35) + " " + representacaoNumericaCodBarra.substring(35, 36) + " " + representacaoNumericaCodBarra.substring(36, 47) + " " + representacaoNumericaCodBarra.substring(47, 48); cobrancaDocumentoTxt.append(representacaoNumericaCodBarraFormatada); // LINHA 16 // ================================== // Cria o objeto para gerar o c�digo de // barras no padr�o intercalado 2 de 5 Interleaved2of5 codigoBarraIntercalado2de5 = new Interleaved2of5(); // Recupera a representa��o n�merica do // c�digo de barras sem os d�gitos // verificadores String representacaoCodigoBarrasSemDigitoVerificador = representacaoNumericaCodBarra.substring(0, 11) + representacaoNumericaCodBarra.substring(12, 23) + representacaoNumericaCodBarra.substring(24, 35) + representacaoNumericaCodBarra.substring(36, 47); cobrancaDocumentoTxt.append(codigoBarraIntercalado2de5 .encodeValue(representacaoCodigoBarrasSemDigitoVerificador)); String txtString = cobrancaDocumentoTxt.toString(); txtString = txtString.replace('\'', ' '); txtString = txtString.replace('`', ' '); try { repositorioCobranca.inserirDocumentoCobrancaImpressao(cobrancaDocumento.getId(), txtString, idComandoAtividadeAcaoCobranca, idCronogramaAtividadeAcaoCobranca, sequencialOrdenacao++); } catch (ErroRepositorioException ex) { ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } cobrancaDocumentoTxt = new StringBuilder(); } // adiciona o id da conta e o sequencial // no para serem atualizados mapAtualizaSequencial.put(cobrancaDocumento.getId(), sequencialImpressao); colecaoCobrancaDocumentoItem = null; } }// fim do la�o que verifica as 2 contas }// fim la�o while do iterator do objeto helper countOrdem++; mapCobrancaoDocumentoDivididas = null; } } } else { flagFimPesquisa = true; } try { repositorioCobranca.atualizarSequencialCobrancaDocumentoImpressao(mapAtualizaSequencial); } catch (ErroRepositorioException e) { throw new ControladorException("erro.sistema", e); } mapAtualizaSequencial = null; colecaoCobrancaDocumento = null; } System.out.println("***************************************"); System.out.println("FINAL GERAR DOCUMENTO COBRANCA IMPRESSAO"); System.out.println("***************************************"); } /** * [UC0987] � Inserir Faixa de Dias Vencidos para Documentos a Receber * * @author Hugo Leonardo * @date 22/02/2010 * * @param documentosReceberFaixaDiasVencidos * @throws ControladorException */ public Integer inserirDocumentosReceberFaixaDiasVencidos(DocumentosReceberFaixaDiasVencidos documentosReceberFaixaDiasVencidos, Usuario usuarioLogado) throws ControladorException { Date dataAtual = new Date(); FiltroDocumentosReceberFaixaDiasVencidos filtroDocumentosReceberFaixaDiasVencidos = new FiltroDocumentosReceberFaixaDiasVencidos(); filtroDocumentosReceberFaixaDiasVencidos.adicionarParametro(new ParametroSimples(FiltroDocumentosReceberFaixaDiasVencidos.ID, documentosReceberFaixaDiasVencidos.getId())); Collection documentosReceber = this.getControladorUtil().pesquisar(filtroDocumentosReceberFaixaDiasVencidos, DocumentosReceberFaixaDiasVencidos.class.getName()); if (documentosReceber == null) { this.getControladorUtil().inserir(documentosReceberFaixaDiasVencidos); } this.getControladorUtil().atualizar(documentosReceberFaixaDiasVencidos); documentosReceberFaixaDiasVencidos.setUltimaAlteracao(dataAtual); Integer idDocumentosReceberFaixaDiasVencidos = (Integer) this.getControladorUtil().inserir(documentosReceberFaixaDiasVencidos); return idDocumentosReceberFaixaDiasVencidos; } /** * * [UC0987] Inserir Faixa de Dias Vencidos para Documentos a Receber * * Verificar se existe Faixa inicial j� cadastrada. * * @author Hugo Leonardo * @param valorInicialFaixa * @throws ControladorException * @data 22/02/2010 * * @return String */ public String verificarExistenciaFaixaInicial(Integer valorInicialFaixa) throws ControladorException { String retorno = ""; try { retorno = repositorioCobranca.verificarExistenciaFaixaInicial(valorInicialFaixa); } catch (ErroRepositorioException e) { e.printStackTrace(); } return retorno; } /** * * [UC0987] Inserir Faixa de Dias Vencidos para Documentos a Receber * * Verificar se existe Faixa final j� cadastrada. * * @author Hugo Leonardo * @param valorFinalFaixa * @throws ControladorException * @data 22/02/2010 * * @return Boolean */ public Boolean verificarExistenciaFaixaFinal(Integer valorFinalFaixa) throws ControladorException { Boolean retorno = false; Integer quantidade = 0; try { quantidade = repositorioCobranca.verificarExistenciaFaixaFinal(valorFinalFaixa); } catch (ErroRepositorioException e) { e.printStackTrace(); } if (quantidade.equals(0)) { retorno = true; } return retorno; } /** * * [UC0995] Emitir Declara��o Transferencia de D�bitos/Dr�ditos * * Prepara os beans para o relat�rio. * * @author Daniel Alves * @throws ControladorException * @data 2/03/2010 * * @return List<Bean> */ public Collection<RelatorioEmitirDeclaracaoTransferenciaDebitoBean> gerarRelatorioEmitirDeclaracaoTransferenciaDebitoCredito( String clienteUsuarioDestino, String clienteUsuarioOrigem, String valorNovaConta, String indicadorTipoEmissao, String municipio) throws ControladorException { Collection<RelatorioEmitirDeclaracaoTransferenciaDebitoBean> colecao = new ArrayList(); RelatorioEmitirDeclaracaoTransferenciaDebitoBean bean = new RelatorioEmitirDeclaracaoTransferenciaDebitoBean(); bean.setClienteUsuarioDestino(clienteUsuarioDestino); bean.setClienteUsuarioOrigem(clienteUsuarioOrigem); bean.setValorNovaConta(valorNovaConta); bean.setIndicadorTipoEmissao(indicadorTipoEmissao); bean.setDiaMesAno(Util.retornaDataPorExtenso(new Date())); bean.setMunicipio(municipio); colecao.add(bean); return colecao; } /** * [UC990] Pesquisa Relat�rio de Documentos a Receber * * @author Hugo Amorim * @date 22/02/2010 * */ public Collection pesquisarRelatorioDocumentosAReceber(FiltroRelatorioDocumentosAReceberHelper helper) throws ControladorException { Collection<RelatorioDocumentosAReceberBean> retorno = new ArrayList<RelatorioDocumentosAReceberBean>(); Collection<RelatorioDocumentosAReceberBean> beansPorLocalidade = new ArrayList<RelatorioDocumentosAReceberBean>(); Collection<RelatorioDocumentosAReceberBean> beansPorUnidade = new ArrayList<RelatorioDocumentosAReceberBean>(); Collection<RelatorioDocumentosAReceberBean> beansPorGerencia = new ArrayList<RelatorioDocumentosAReceberBean>(); Collection<RelatorioDocumentosAReceberBean> beansPorEstado = new ArrayList<RelatorioDocumentosAReceberBean>(); Collection colecaoDadosLocalidade = null; Collection colecaoDadosUnidade = null; Collection colecaoDadosGerencia = null; Collection colecaoDadosEstado = null; try { // DADOS PARA CONTROLE DE FLUXO LOCALIDADE Integer idGerenciaFluxoLoc = null; String nomeGerenciaFluxoLoc = ""; Integer idUnidadeFluxoLoc = null; String nomeUnidadeFluxoLoc = ""; Integer idLocalidadeFluxoLoc = null; String nomeLocalidadeFluxoLoc = ""; Integer idDocumentoTipoFluxoLoc = null; String nomeDocumentoTipoFluxoLoc = ""; Integer idSituacaoFluxoLoc = null; String descricaoFluxoLoc = ""; String faixaFluxoLoc = ""; boolean primeiraVezLoc = true; // DADOS PARA AGRUPAR DADOS POR TIPO DOCUMENTO Integer qtDocumentosPubLoc = new Integer(0); BigDecimal valorDocumentosPubLoc = BigDecimal.ZERO; BigDecimal valorDocumentosPubSemParcAtualLoc = BigDecimal.ZERO; Integer qtDocumentosResLoc = new Integer(0); BigDecimal valorDocumentosResLoc = BigDecimal.ZERO; BigDecimal valorDocumentosResSemParcAtualLoc = BigDecimal.ZERO; Integer qtDocumentosComLoc = new Integer(0); BigDecimal valorDocumentosComLoc = BigDecimal.ZERO; BigDecimal valorDocumentosComSemParcAtualLoc = BigDecimal.ZERO; Integer qtDocumentosIndLoc = new Integer(0); BigDecimal valorDocumentosIndLoc = BigDecimal.ZERO; BigDecimal valorDocumentosIndSemParcAtualLoc = BigDecimal.ZERO; Integer qtDocumentosPrivadosLoc = new Integer(0); BigDecimal valorDocumentosPrivadosLoc = BigDecimal.ZERO; BigDecimal valorDocumentosPrivadosSemParcAtualLoc = BigDecimal.ZERO; // VARIAVEIS PARA ARMAZERNAR DADOS DA PESQUISA Integer idCategoriaLoc = null; Integer idGerenciaLoc = null; String nomeGerenciaLoc = null; Integer idUnidadeLoc = null; String nomeUnidadeLoc = null; Integer idLocalidadeLoc = null; String nomeLocalidadeLoc = null; Integer idDocumentoTipoLoc = null; String nomeDocumentoTipoLoc = null; Integer idSituacaoLoc = null; String descricaoSituacaoLoc = null; String faixaLoc = ""; Integer qtDocumentosLoc = null; BigDecimal valorDocumentosLoc = null; BigDecimal valorDocumentosSemParcAtualLoc = null; // DADOS PARA CONTROLE DE FLUXO UNIDADE Integer idGerenciaFluxoUni = null; String nomeGerenciaFluxoUni = ""; Integer idUnidadeFluxoUni = null; String nomeUnidadeFluxoUni = ""; Integer idDocumentoTipoFluxoUni = null; String nomeDocumentoTipoFluxoUni = ""; Integer idSituacaoFluxoUni = null; String descricaoFluxoUni = ""; String faixaFluxoUni = ""; boolean primeiraVezUni = true; // DADOS PARA AGRUPAR DADOS POR TIPO DOCUMENTO Integer qtDocumentosPubUni = new Integer(0); BigDecimal valorDocumentosPubUni = BigDecimal.ZERO; BigDecimal valorDocumentosPubSemParcAtualUni = BigDecimal.ZERO; Integer qtDocumentosResUni = new Integer(0); BigDecimal valorDocumentosResUni = BigDecimal.ZERO; BigDecimal valorDocumentosResSemParcAtualUni = BigDecimal.ZERO; Integer qtDocumentosComUni = new Integer(0); BigDecimal valorDocumentosComUni = BigDecimal.ZERO; BigDecimal valorDocumentosComSemParcAtualUni = BigDecimal.ZERO; Integer qtDocumentosIndUni = new Integer(0); BigDecimal valorDocumentosIndUni = BigDecimal.ZERO; BigDecimal valorDocumentosIndSemParcAtualUni = BigDecimal.ZERO; Integer qtDocumentosPrivadosUni = new Integer(0); BigDecimal valorDocumentosPrivadosUni = BigDecimal.ZERO; BigDecimal valorDocumentosPrivadosSemParcAtualUni = BigDecimal.ZERO; // VARIAVEIS PARA ARMAZERNAR DADOS DA PESQUISA Integer idCategoriaUni = null; Integer idGerenciaUni = null; String nomeGerenciaUni = null; Integer idUnidadeUni = null; String nomeUnidadeUni = null; Integer idDocumentoTipoUni = null; String nomeDocumentoTipoUni = null; Integer idSituacaoUni = null; String descricaoSituacaoUni = null; String faixaUni = ""; Integer qtDocumentosUni = null; BigDecimal valorDocumentosUni = null; BigDecimal valorDocumentosSemParcAtualUni = null; // DADOS PARA CONTROLE DE FLUXO GERENCIA Integer idGerenciaFluxoGer = null; String nomeGerenciaFluxoGer = ""; Integer idDocumentoTipoFluxoGer = null; String nomeDocumentoTipoFluxoGer = ""; Integer idSituacaoFluxoGer = null; String descricaoFluxoGer = ""; String faixaFluxoGer = ""; boolean primeiraVezGer = true; // DADOS PARA AGRUPAR DADOS POR TIPO DOCUMENTO Integer qtDocumentosPubGer = new Integer(0); BigDecimal valorDocumentosPubGer = BigDecimal.ZERO; BigDecimal valorDocumentosPubSemParcAtualGer = BigDecimal.ZERO; Integer qtDocumentosResGer = new Integer(0); BigDecimal valorDocumentosResGer = BigDecimal.ZERO; BigDecimal valorDocumentosResSemParcAtualGer = BigDecimal.ZERO; Integer qtDocumentosComGer = new Integer(0); BigDecimal valorDocumentosComGer = BigDecimal.ZERO; BigDecimal valorDocumentosComSemParcAtualGer = BigDecimal.ZERO; Integer qtDocumentosIndGer = new Integer(0); BigDecimal valorDocumentosIndGer = BigDecimal.ZERO; BigDecimal valorDocumentosIndSemParcAtualGer = BigDecimal.ZERO; Integer qtDocumentosPrivadosGer = new Integer(0); BigDecimal valorDocumentosPrivadosGer = BigDecimal.ZERO; BigDecimal valorDocumentosPrivadosSemParcAtualGer = BigDecimal.ZERO; // VARIAVEIS PARA ARMAZERNAR DADOS DA PESQUISA Integer idCategoriaGer = null; Integer idGerenciaGer = null; String nomeGerenciaGer = null; Integer idDocumentoTipoGer = null; String nomeDocumentoTipoGer = null; Integer idSituacaoGer = null; String descricaoSituacaoGer = null; String faixaGer = ""; Integer qtDocumentosGer = null; BigDecimal valorDocumentosGer = null; BigDecimal valorDocumentosSemParcAtualGer = null; // DADOS PARA CONTROLE DE FLUXO ESTADO Integer idDocumentoTipoFluxoEst = null; String nomeDocumentoTipoFluxoEst = ""; Integer idSituacaoFluxoEst = null; String descricaoFluxoEst = ""; String faixaFluxoEst = ""; boolean primeiraVezEst = true; // DADOS PARA AGRUPAR DADOS POR TIPO DOCUMENTO Integer qtDocumentosPubEst = new Integer(0); BigDecimal valorDocumentosPubEst = BigDecimal.ZERO; BigDecimal valorDocumentosPubSemParcAtualEst = BigDecimal.ZERO; Integer qtDocumentosResEst = new Integer(0); BigDecimal valorDocumentosResEst = BigDecimal.ZERO; BigDecimal valorDocumentosResSemParcAtualEst = BigDecimal.ZERO; Integer qtDocumentosComEst = new Integer(0); BigDecimal valorDocumentosComEst = BigDecimal.ZERO; BigDecimal valorDocumentosComSemParcAtualEst = BigDecimal.ZERO; Integer qtDocumentosIndEst = new Integer(0); BigDecimal valorDocumentosIndEst = BigDecimal.ZERO; BigDecimal valorDocumentosIndSemParcAtualEst = BigDecimal.ZERO; Integer qtDocumentosPrivadosEst = new Integer(0); BigDecimal valorDocumentosPrivadosEst = BigDecimal.ZERO; BigDecimal valorDocumentosPrivadosSemParcAtualEst = BigDecimal.ZERO; // VARIAVEIS PARA ARMAZERNAR DADOS DA PESQUISA Integer idCategoriaEst = null; Integer idDocumentoTipoEst = null; String nomeDocumentoTipoEst = null; Integer idSituacaoEst = null; String descricaoSituacaoEst = null; String faixaEst = ""; Integer qtDocumentosEst = null; BigDecimal valorDocumentosEst = null; BigDecimal valorDocumentosSemParcAtualEst = null; RelatorioDocumentosAReceberBean bean = null; // Vari�veis para a pagina��o da pesquisa // ======================================================================== boolean flagTerminouLoc = false; boolean flagTerminouUni = false; boolean flagTerminouGer = false; boolean flagTerminouEst = false; final int quantidadeMaxima = 1000; int quantidadeInicio = 0; // ======================================================================== while (!flagTerminouLoc || !flagTerminouUni || !flagTerminouGer || !flagTerminouEst) { // REALIZA PESQUISA CASO TIPO DE TOTALIZA��O SEJA: // Ger�ncia Regional por Localidade // Unidade de Neg�cio por Localidade // Localidade if (!flagTerminouLoc) { if (helper.getIdOpcaoTotalizacao().equals("4") || helper.getIdOpcaoTotalizacao().equals("5") || helper.getIdOpcaoTotalizacao().equals("7") || helper.getIdOpcaoTotalizacao().equals("9") || helper.getIdOpcaoTotalizacao().equals("10")) { colecaoDadosLocalidade = repositorioCobranca.pesquisarRelatorioDocumentosAReceber(helper, "LOCALIDADE", quantidadeInicio, quantidadeMaxima); } } // Estado por Unidade de Neg�cio // Estado por Unidade de Neg�cio e por Localidade // Unidade de Neg�cio // Unidade de Neg�cio por Localidade if (!flagTerminouUni) { if (helper.getIdOpcaoTotalizacao().equals("3") || helper.getIdOpcaoTotalizacao().equals("5") || helper.getIdOpcaoTotalizacao().equals("8") || helper.getIdOpcaoTotalizacao().equals("9")) { colecaoDadosUnidade = repositorioCobranca.pesquisarRelatorioDocumentosAReceber(helper, "UNIDADE", quantidadeInicio, quantidadeMaxima); } } // Estado // Estado por Ger�ncia Regional // Estado por Unidade de Neg�cio // Estado por Ger�ncia Regional e por Localidade // Estado por Unidade de Neg�cio e por Localidade // Ger�ncia Regional // Ger�ncia Regional por Localidade if (!flagTerminouGer) { if (helper.getIdOpcaoTotalizacao().equals("2") || helper.getIdOpcaoTotalizacao().equals("4") || helper.getIdOpcaoTotalizacao().equals("6") || helper.getIdOpcaoTotalizacao().equals("7")) { colecaoDadosGerencia = repositorioCobranca.pesquisarRelatorioDocumentosAReceber(helper, "GERENCIA", quantidadeInicio, quantidadeMaxima); } } // Estado // Estado por Ger�ncia Regional e por Localidade // Estado por Unidade de Neg�cio e por Localidade // Estado por Unidade de Neg�cio // Estado por Unidade de Neg�cio e por Localidade if (!flagTerminouEst) { if (helper.getIdOpcaoTotalizacao().equals("1") || helper.getIdOpcaoTotalizacao().equals("2") || helper.getIdOpcaoTotalizacao().equals("3") || helper.getIdOpcaoTotalizacao().equals("4") || helper.getIdOpcaoTotalizacao().equals("5")) { colecaoDadosEstado = repositorioCobranca.pesquisarRelatorioDocumentosAReceber(helper, "ESTADO", quantidadeInicio, quantidadeMaxima); } } if (colecaoDadosLocalidade != null) { // GERAR DADOS DAS LOCALIDADES for (Iterator iterator = colecaoDadosLocalidade.iterator(); iterator.hasNext();) { Object[] dados = null; dados = (Object[]) iterator.next(); // Dados Pesquisa idCategoriaLoc = (Integer) dados[0]; idDocumentoTipoLoc = (Integer) dados[2]; nomeDocumentoTipoLoc = (String) dados[3]; idSituacaoLoc = (Integer) dados[4]; descricaoSituacaoLoc = (String) dados[5]; faixaLoc = String.valueOf(dados[6]); qtDocumentosLoc = Integer.valueOf(String.valueOf(dados[7])); valorDocumentosLoc = (BigDecimal) dados[8]; valorDocumentosSemParcAtualLoc = (BigDecimal) dados[9]; idGerenciaLoc = (Integer) dados[10]; nomeGerenciaLoc = (String) dados[11]; idUnidadeLoc = (Integer) dados[12]; nomeUnidadeLoc = (String) dados[13]; idLocalidadeLoc = (Integer) dados[14]; nomeLocalidadeLoc = (String) dados[15]; if (!faixaLoc.equals("0")) { // Verifica se a faixa n�o existia na base, // caso seja verdadeiro atribui descri��o da // faixa correspondente informada no filtro for (FaixaHelper faixaHelper : helper.getColecaoFaixas()) { Integer qtdDias = new Integer(faixaLoc); if (qtdDias.compareTo(faixaHelper.getValorInicial()) >= 0 && qtdDias.compareTo(faixaHelper.getValorFinal()) <= 0) { faixaLoc = faixaHelper.getDescricao(); break; } } } else { faixaLoc = "A VENCER"; } if (primeiraVezLoc) { idGerenciaFluxoLoc = idGerenciaLoc; nomeGerenciaFluxoLoc = nomeGerenciaLoc; idUnidadeFluxoLoc = idUnidadeLoc; nomeUnidadeFluxoLoc = nomeUnidadeLoc; idLocalidadeFluxoLoc = idLocalidadeLoc; nomeLocalidadeFluxoLoc = nomeLocalidadeLoc; idSituacaoFluxoLoc = idSituacaoLoc; idDocumentoTipoFluxoLoc = idDocumentoTipoLoc; nomeDocumentoTipoFluxoLoc = nomeDocumentoTipoLoc; faixaFluxoLoc = faixaLoc; descricaoFluxoLoc = descricaoSituacaoLoc; primeiraVezLoc = false; } // SE TODOS OS DADOS FOREM IGUAIS // ACUMULA DOCUMENTO TIPO if (idGerenciaFluxoLoc.intValue() == idGerenciaLoc.intValue() && idUnidadeFluxoLoc.intValue() == idUnidadeLoc.intValue() && idLocalidadeFluxoLoc.intValue() == idLocalidadeLoc.intValue() && idSituacaoFluxoLoc.intValue() == idSituacaoLoc.intValue() && faixaFluxoLoc.equals(faixaLoc) && idDocumentoTipoFluxoLoc.intValue() == idDocumentoTipoLoc.intValue()) { // TOTAL DO TIPO DOCUMENTO if (idCategoriaLoc.compareTo(Categoria.RESIDENCIAL) == 0) { qtDocumentosResLoc += qtDocumentosLoc; valorDocumentosResLoc = Util.somaBigDecimal(valorDocumentosResLoc, valorDocumentosLoc); valorDocumentosResSemParcAtualLoc = Util.somaBigDecimal(valorDocumentosResSemParcAtualLoc, valorDocumentosSemParcAtualLoc); qtDocumentosPrivadosLoc += qtDocumentosLoc; valorDocumentosPrivadosLoc = Util.somaBigDecimal(valorDocumentosPrivadosLoc, valorDocumentosLoc); valorDocumentosPrivadosSemParcAtualLoc = Util.somaBigDecimal(valorDocumentosPrivadosSemParcAtualLoc, valorDocumentosSemParcAtualLoc); } if (idCategoriaLoc.compareTo(Categoria.COMERCIAL) == 0) { qtDocumentosComLoc += qtDocumentosLoc; valorDocumentosComLoc = Util.somaBigDecimal(valorDocumentosComLoc, valorDocumentosLoc); valorDocumentosComSemParcAtualLoc = Util.somaBigDecimal(valorDocumentosComSemParcAtualLoc, valorDocumentosSemParcAtualLoc); qtDocumentosPrivadosLoc += qtDocumentosLoc; valorDocumentosPrivadosLoc = Util.somaBigDecimal(valorDocumentosPrivadosLoc, valorDocumentosLoc); valorDocumentosPrivadosSemParcAtualLoc = Util.somaBigDecimal(valorDocumentosPrivadosSemParcAtualLoc, valorDocumentosSemParcAtualLoc); } if (idCategoriaLoc.compareTo(Categoria.INDUSTRIAL) == 0) { qtDocumentosIndLoc += qtDocumentosLoc; valorDocumentosIndLoc = Util.somaBigDecimal(valorDocumentosIndLoc, valorDocumentosLoc); valorDocumentosIndSemParcAtualLoc = Util.somaBigDecimal(valorDocumentosIndSemParcAtualLoc, valorDocumentosSemParcAtualLoc); qtDocumentosPrivadosLoc += qtDocumentosLoc; valorDocumentosPrivadosLoc = Util.somaBigDecimal(valorDocumentosPrivadosLoc, valorDocumentosLoc); valorDocumentosPrivadosSemParcAtualLoc = Util.somaBigDecimal(valorDocumentosPrivadosSemParcAtualLoc, valorDocumentosSemParcAtualLoc); } if (idCategoriaLoc.compareTo(Categoria.PUBLICO) == 0) { qtDocumentosPubLoc += qtDocumentosLoc; valorDocumentosPubLoc = Util.somaBigDecimal(valorDocumentosPubLoc, valorDocumentosLoc); valorDocumentosPubSemParcAtualLoc = Util.somaBigDecimal(valorDocumentosPubSemParcAtualLoc, valorDocumentosSemParcAtualLoc); } } else { if (idLocalidadeFluxoLoc.intValue() == idLocalidadeLoc.intValue()) { if (idSituacaoFluxoLoc.intValue() == idSituacaoLoc.intValue()) { if (faixaFluxoLoc.equals(faixaLoc)) { if (idDocumentoTipoFluxoLoc.intValue() != idDocumentoTipoLoc.intValue()) { if (helper.isExibirDebitoSemParcela() == true && nomeDocumentoTipoFluxoLoc.equals("DEBITO A COBRAR")) { bean = criarBeanRelatorioDocumentosAReceber(idGerenciaFluxoLoc, nomeGerenciaFluxoLoc, idUnidadeFluxoLoc, nomeUnidadeFluxoLoc, idLocalidadeFluxoLoc, nomeLocalidadeFluxoLoc, idDocumentoTipoFluxoLoc, "DEBITO SEM PARCELA", idSituacaoFluxoLoc, descricaoFluxoLoc, qtDocumentosResLoc, valorDocumentosResSemParcAtualLoc, qtDocumentosComLoc, valorDocumentosComSemParcAtualLoc, qtDocumentosIndLoc, valorDocumentosIndSemParcAtualLoc, qtDocumentosPrivadosLoc, valorDocumentosPrivadosSemParcAtualLoc, qtDocumentosPubLoc, valorDocumentosPubSemParcAtualLoc, "LOCALIDADE - " + nomeLocalidadeFluxoLoc, ConstantesSistema.NAO.toString(), faixaFluxoLoc); beansPorLocalidade.add(bean); } else if (helper.isExibirCreditoSemParcela() == true && nomeDocumentoTipoFluxoLoc.equals("CREDITO A REALIZAR")) { bean = criarBeanRelatorioDocumentosAReceber(idGerenciaFluxoLoc, nomeGerenciaFluxoLoc, idUnidadeFluxoLoc, nomeUnidadeFluxoLoc, idLocalidadeFluxoLoc, nomeLocalidadeFluxoLoc, idDocumentoTipoFluxoLoc, "CREDITO SEM PARCELA", idSituacaoFluxoLoc, descricaoFluxoLoc, qtDocumentosResLoc, valorDocumentosResSemParcAtualLoc, qtDocumentosComLoc, valorDocumentosComSemParcAtualLoc, qtDocumentosIndLoc, valorDocumentosIndSemParcAtualLoc, qtDocumentosPrivadosLoc, valorDocumentosPrivadosSemParcAtualLoc, qtDocumentosPubLoc, valorDocumentosPubSemParcAtualLoc, "LOCALIDADE - " + nomeLocalidadeFluxoLoc, ConstantesSistema.NAO.toString(), faixaFluxoLoc); beansPorLocalidade.add(bean); } else { bean = criarBeanRelatorioDocumentosAReceber(idGerenciaFluxoLoc, nomeGerenciaFluxoLoc, idUnidadeFluxoLoc, nomeUnidadeFluxoLoc, idLocalidadeFluxoLoc, nomeLocalidadeFluxoLoc, idDocumentoTipoFluxoLoc, nomeDocumentoTipoFluxoLoc, idSituacaoFluxoLoc, descricaoFluxoLoc, qtDocumentosResLoc, valorDocumentosResLoc, qtDocumentosComLoc, valorDocumentosComLoc, qtDocumentosIndLoc, valorDocumentosIndLoc, qtDocumentosPrivadosLoc, valorDocumentosPrivadosLoc, qtDocumentosPubLoc, valorDocumentosPubLoc, "LOCALIDADE - " + nomeLocalidadeFluxoLoc, ConstantesSistema.NAO.toString(), faixaFluxoLoc); beansPorLocalidade.add(bean); } // Reiniciando valores e mudando // variaveis de controle de fluxo qtDocumentosPubLoc = new Integer(0); valorDocumentosPubLoc = BigDecimal.ZERO; valorDocumentosPubSemParcAtualLoc = BigDecimal.ZERO; qtDocumentosResLoc = new Integer(0); valorDocumentosResLoc = BigDecimal.ZERO; valorDocumentosResSemParcAtualLoc = BigDecimal.ZERO; qtDocumentosComLoc = new Integer(0); valorDocumentosComLoc = BigDecimal.ZERO; valorDocumentosComSemParcAtualLoc = BigDecimal.ZERO; qtDocumentosIndLoc = new Integer(0); valorDocumentosIndLoc = BigDecimal.ZERO; valorDocumentosIndSemParcAtualLoc = BigDecimal.ZERO; qtDocumentosPrivadosLoc = new Integer(0); valorDocumentosPrivadosLoc = BigDecimal.ZERO; valorDocumentosPrivadosSemParcAtualLoc = BigDecimal.ZERO; idGerenciaFluxoLoc = idGerenciaLoc; nomeGerenciaFluxoLoc = nomeGerenciaLoc; idUnidadeFluxoLoc = idUnidadeLoc; nomeUnidadeFluxoLoc = nomeUnidadeLoc; idLocalidadeFluxoLoc = idLocalidadeLoc; nomeLocalidadeFluxoLoc = nomeLocalidadeLoc; idSituacaoFluxoLoc = idSituacaoLoc; idDocumentoTipoFluxoLoc = idDocumentoTipoLoc; nomeDocumentoTipoFluxoLoc = nomeDocumentoTipoLoc; faixaFluxoLoc = faixaLoc; descricaoFluxoLoc = descricaoSituacaoLoc; // TOTAL DO TIPO DOCUMENTO if (idCategoriaLoc.compareTo(Categoria.RESIDENCIAL) == 0) { qtDocumentosResLoc += qtDocumentosLoc; valorDocumentosResLoc = Util.somaBigDecimal(valorDocumentosResLoc, valorDocumentosLoc); valorDocumentosResSemParcAtualLoc = Util.somaBigDecimal(valorDocumentosResSemParcAtualLoc, valorDocumentosSemParcAtualLoc); qtDocumentosPrivadosLoc += qtDocumentosLoc; valorDocumentosPrivadosLoc = Util.somaBigDecimal(valorDocumentosPrivadosLoc, valorDocumentosLoc); valorDocumentosPrivadosSemParcAtualLoc = Util.somaBigDecimal(valorDocumentosPrivadosSemParcAtualLoc, valorDocumentosSemParcAtualLoc); } if (idCategoriaLoc.compareTo(Categoria.COMERCIAL) == 0) { qtDocumentosComLoc += qtDocumentosLoc; valorDocumentosComLoc = Util.somaBigDecimal(valorDocumentosComLoc, valorDocumentosLoc); valorDocumentosComSemParcAtualLoc = Util.somaBigDecimal(valorDocumentosComSemParcAtualLoc, valorDocumentosSemParcAtualLoc); qtDocumentosPrivadosLoc += qtDocumentosLoc; valorDocumentosPrivadosLoc = Util.somaBigDecimal(valorDocumentosPrivadosLoc, valorDocumentosLoc); valorDocumentosPrivadosSemParcAtualLoc = Util.somaBigDecimal(valorDocumentosPrivadosSemParcAtualLoc, valorDocumentosSemParcAtualLoc); } if (idCategoriaLoc.compareTo(Categoria.INDUSTRIAL) == 0) { qtDocumentosIndLoc += qtDocumentosLoc; valorDocumentosIndLoc = Util.somaBigDecimal(valorDocumentosIndLoc, valorDocumentosLoc); valorDocumentosIndSemParcAtualLoc = Util.somaBigDecimal(valorDocumentosIndSemParcAtualLoc, valorDocumentosSemParcAtualLoc); qtDocumentosPrivadosLoc += qtDocumentosLoc; valorDocumentosPrivadosLoc = Util.somaBigDecimal(valorDocumentosPrivadosLoc, valorDocumentosLoc); valorDocumentosPrivadosSemParcAtualLoc = Util.somaBigDecimal(valorDocumentosPrivadosSemParcAtualLoc, valorDocumentosSemParcAtualLoc); } if (idCategoriaLoc.compareTo(Categoria.PUBLICO) == 0) { qtDocumentosPubLoc += qtDocumentosLoc; valorDocumentosPubLoc = Util.somaBigDecimal(valorDocumentosPubLoc, valorDocumentosLoc); valorDocumentosPubSemParcAtualLoc = Util.somaBigDecimal(valorDocumentosPubSemParcAtualLoc, valorDocumentosSemParcAtualLoc); } } } else { if (helper.isExibirDebitoSemParcela() == true && nomeDocumentoTipoFluxoLoc.equals("DEBITO A COBRAR")) { bean = criarBeanRelatorioDocumentosAReceber(idGerenciaFluxoLoc, nomeGerenciaFluxoLoc, idUnidadeFluxoLoc, nomeUnidadeFluxoLoc, idLocalidadeFluxoLoc, nomeLocalidadeFluxoLoc, idDocumentoTipoFluxoLoc, "DEBITO SEM PARCELA", idSituacaoFluxoLoc, descricaoFluxoLoc, qtDocumentosResLoc, valorDocumentosResSemParcAtualLoc, qtDocumentosComLoc, valorDocumentosComSemParcAtualLoc, qtDocumentosIndLoc, valorDocumentosIndSemParcAtualLoc, qtDocumentosPrivadosLoc, valorDocumentosPrivadosSemParcAtualLoc, qtDocumentosPubLoc, valorDocumentosPubSemParcAtualLoc, "LOCALIDADE - " + nomeLocalidadeFluxoLoc, ConstantesSistema.NAO.toString(), faixaFluxoLoc); beansPorLocalidade.add(bean); } else if (helper.isExibirCreditoSemParcela() == true && nomeDocumentoTipoFluxoLoc.equals("CREDITO A REALIZAR")) { bean = criarBeanRelatorioDocumentosAReceber(idGerenciaFluxoLoc, nomeGerenciaFluxoLoc, idUnidadeFluxoLoc, nomeUnidadeFluxoLoc, idLocalidadeFluxoLoc, nomeLocalidadeFluxoLoc, idDocumentoTipoFluxoLoc, "CREDITO SEM PARCELA", idSituacaoFluxoLoc, descricaoFluxoLoc, qtDocumentosResLoc, valorDocumentosResSemParcAtualLoc, qtDocumentosComLoc, valorDocumentosComSemParcAtualLoc, qtDocumentosIndLoc, valorDocumentosIndSemParcAtualLoc, qtDocumentosPrivadosLoc, valorDocumentosPrivadosSemParcAtualLoc, qtDocumentosPubLoc, valorDocumentosPubSemParcAtualLoc, "LOCALIDADE - " + nomeLocalidadeFluxoLoc, ConstantesSistema.NAO.toString(), faixaFluxoLoc); beansPorLocalidade.add(bean); } else { bean = criarBeanRelatorioDocumentosAReceber(idGerenciaFluxoLoc, nomeGerenciaFluxoLoc, idUnidadeFluxoLoc, nomeUnidadeFluxoLoc, idLocalidadeFluxoLoc, nomeLocalidadeFluxoLoc, idDocumentoTipoFluxoLoc, nomeDocumentoTipoFluxoLoc, idSituacaoFluxoLoc, descricaoFluxoLoc, qtDocumentosResLoc, valorDocumentosResLoc, qtDocumentosComLoc, valorDocumentosComLoc, qtDocumentosIndLoc, valorDocumentosIndLoc, qtDocumentosPrivadosLoc, valorDocumentosPrivadosLoc, qtDocumentosPubLoc, valorDocumentosPubLoc, "LOCALIDADE - " + nomeLocalidadeFluxoLoc, ConstantesSistema.NAO.toString(), faixaFluxoLoc); beansPorLocalidade.add(bean); } // Reiniciando valores e mudando // variaveis de controle de fluxo qtDocumentosPubLoc = new Integer(0); valorDocumentosPubLoc = BigDecimal.ZERO; valorDocumentosPubSemParcAtualLoc = BigDecimal.ZERO; qtDocumentosResLoc = new Integer(0); valorDocumentosResLoc = BigDecimal.ZERO; valorDocumentosResSemParcAtualLoc = BigDecimal.ZERO; qtDocumentosComLoc = new Integer(0); valorDocumentosComLoc = BigDecimal.ZERO; valorDocumentosComSemParcAtualLoc = BigDecimal.ZERO; qtDocumentosIndLoc = new Integer(0); valorDocumentosIndLoc = BigDecimal.ZERO; valorDocumentosIndSemParcAtualLoc = BigDecimal.ZERO; qtDocumentosPrivadosLoc = new Integer(0); valorDocumentosPrivadosLoc = BigDecimal.ZERO; valorDocumentosPrivadosSemParcAtualLoc = BigDecimal.ZERO; idGerenciaFluxoLoc = idGerenciaLoc; nomeGerenciaFluxoLoc = nomeGerenciaLoc; idUnidadeFluxoLoc = idUnidadeLoc; nomeUnidadeFluxoLoc = nomeUnidadeLoc; idLocalidadeFluxoLoc = idLocalidadeLoc; nomeLocalidadeFluxoLoc = nomeLocalidadeLoc; idSituacaoFluxoLoc = idSituacaoLoc; idDocumentoTipoFluxoLoc = idDocumentoTipoLoc; nomeDocumentoTipoFluxoLoc = nomeDocumentoTipoLoc; faixaFluxoLoc = faixaLoc; descricaoFluxoLoc = descricaoSituacaoLoc; // TOTAL DO TIPO DOCUMENTO if (idCategoriaLoc.compareTo(Categoria.RESIDENCIAL) == 0) { qtDocumentosResLoc += qtDocumentosLoc; valorDocumentosResLoc = Util.somaBigDecimal(valorDocumentosResLoc, valorDocumentosLoc); valorDocumentosResSemParcAtualLoc = Util.somaBigDecimal(valorDocumentosResSemParcAtualLoc, valorDocumentosSemParcAtualLoc); qtDocumentosPrivadosLoc += qtDocumentosLoc; valorDocumentosPrivadosLoc = Util.somaBigDecimal(valorDocumentosPrivadosLoc, valorDocumentosLoc); valorDocumentosPrivadosSemParcAtualLoc = Util.somaBigDecimal(valorDocumentosPrivadosSemParcAtualLoc, valorDocumentosSemParcAtualLoc); } if (idCategoriaLoc.compareTo(Categoria.COMERCIAL) == 0) { qtDocumentosComLoc += qtDocumentosLoc; valorDocumentosComLoc = Util.somaBigDecimal(valorDocumentosComLoc, valorDocumentosLoc); valorDocumentosComSemParcAtualLoc = Util.somaBigDecimal(valorDocumentosComSemParcAtualLoc, valorDocumentosSemParcAtualLoc); qtDocumentosPrivadosLoc += qtDocumentosLoc; valorDocumentosPrivadosLoc = Util.somaBigDecimal(valorDocumentosPrivadosLoc, valorDocumentosLoc); valorDocumentosPrivadosSemParcAtualLoc = Util.somaBigDecimal(valorDocumentosPrivadosSemParcAtualLoc, valorDocumentosSemParcAtualLoc); } if (idCategoriaLoc.compareTo(Categoria.INDUSTRIAL) == 0) { qtDocumentosIndLoc += qtDocumentosLoc; valorDocumentosIndLoc = Util.somaBigDecimal(valorDocumentosIndLoc, valorDocumentosLoc); valorDocumentosIndSemParcAtualLoc = Util.somaBigDecimal(valorDocumentosIndSemParcAtualLoc, valorDocumentosSemParcAtualLoc); qtDocumentosPrivadosLoc += qtDocumentosLoc; valorDocumentosPrivadosLoc = Util.somaBigDecimal(valorDocumentosPrivadosLoc, valorDocumentosLoc); valorDocumentosPrivadosSemParcAtualLoc = Util.somaBigDecimal(valorDocumentosPrivadosSemParcAtualLoc, valorDocumentosSemParcAtualLoc); } if (idCategoriaLoc.compareTo(Categoria.PUBLICO) == 0) { qtDocumentosPubLoc += qtDocumentosLoc; valorDocumentosPubLoc = Util.somaBigDecimal(valorDocumentosPubLoc, valorDocumentosLoc); valorDocumentosPubSemParcAtualLoc = Util.somaBigDecimal(valorDocumentosPubSemParcAtualLoc, valorDocumentosSemParcAtualLoc); } } } else { if (helper.isExibirDebitoSemParcela() == true && nomeDocumentoTipoFluxoLoc.equals("DEBITO A COBRAR")) { bean = criarBeanRelatorioDocumentosAReceber(idGerenciaFluxoLoc, nomeGerenciaFluxoLoc, idUnidadeFluxoLoc, nomeUnidadeFluxoLoc, idLocalidadeFluxoLoc, nomeLocalidadeFluxoLoc, idDocumentoTipoFluxoLoc, "DEBITO SEM PARCELA", idSituacaoFluxoLoc, descricaoFluxoLoc, qtDocumentosResLoc, valorDocumentosResSemParcAtualLoc, qtDocumentosComLoc, valorDocumentosComSemParcAtualLoc, qtDocumentosIndLoc, valorDocumentosIndSemParcAtualLoc, qtDocumentosPrivadosLoc, valorDocumentosPrivadosSemParcAtualLoc, qtDocumentosPubLoc, valorDocumentosPubSemParcAtualLoc, "LOCALIDADE - " + nomeLocalidadeFluxoLoc, ConstantesSistema.NAO.toString(), faixaFluxoLoc); beansPorLocalidade.add(bean); } else if (helper.isExibirCreditoSemParcela() == true && nomeDocumentoTipoFluxoLoc.equals("CREDITO A REALIZAR")) { bean = criarBeanRelatorioDocumentosAReceber(idGerenciaFluxoLoc, nomeGerenciaFluxoLoc, idUnidadeFluxoLoc, nomeUnidadeFluxoLoc, idLocalidadeFluxoLoc, nomeLocalidadeFluxoLoc, idDocumentoTipoFluxoLoc, "CREDITO SEM PARCELA", idSituacaoFluxoLoc, descricaoFluxoLoc, qtDocumentosResLoc, valorDocumentosResSemParcAtualLoc, qtDocumentosComLoc, valorDocumentosComSemParcAtualLoc, qtDocumentosIndLoc, valorDocumentosIndSemParcAtualLoc, qtDocumentosPrivadosLoc, valorDocumentosPrivadosSemParcAtualLoc, qtDocumentosPubLoc, valorDocumentosPubSemParcAtualLoc, "LOCALIDADE - " + nomeLocalidadeFluxoLoc, ConstantesSistema.NAO.toString(), faixaFluxoLoc); beansPorLocalidade.add(bean); } else { bean = criarBeanRelatorioDocumentosAReceber(idGerenciaFluxoLoc, nomeGerenciaFluxoLoc, idUnidadeFluxoLoc, nomeUnidadeFluxoLoc, idLocalidadeFluxoLoc, nomeLocalidadeFluxoLoc, idDocumentoTipoFluxoLoc, nomeDocumentoTipoFluxoLoc, idSituacaoFluxoLoc, descricaoFluxoLoc, qtDocumentosResLoc, valorDocumentosResLoc, qtDocumentosComLoc, valorDocumentosComLoc, qtDocumentosIndLoc, valorDocumentosIndLoc, qtDocumentosPrivadosLoc, valorDocumentosPrivadosLoc, qtDocumentosPubLoc, valorDocumentosPubLoc, "LOCALIDADE - " + nomeLocalidadeFluxoLoc, ConstantesSistema.NAO.toString(), faixaFluxoLoc); beansPorLocalidade.add(bean); } // Reiniciando valores e mudando // variaveis de controle de fluxo qtDocumentosPubLoc = new Integer(0); valorDocumentosPubLoc = BigDecimal.ZERO; valorDocumentosPubSemParcAtualLoc = BigDecimal.ZERO; qtDocumentosResLoc = new Integer(0); valorDocumentosResLoc = BigDecimal.ZERO; valorDocumentosResSemParcAtualLoc = BigDecimal.ZERO; qtDocumentosComLoc = new Integer(0); valorDocumentosComLoc = BigDecimal.ZERO; valorDocumentosComSemParcAtualLoc = BigDecimal.ZERO; qtDocumentosIndLoc = new Integer(0); valorDocumentosIndLoc = BigDecimal.ZERO; valorDocumentosIndSemParcAtualLoc = BigDecimal.ZERO; qtDocumentosPrivadosLoc = new Integer(0); valorDocumentosPrivadosLoc = BigDecimal.ZERO; valorDocumentosPrivadosSemParcAtualLoc = BigDecimal.ZERO; idGerenciaFluxoLoc = idGerenciaLoc; nomeGerenciaFluxoLoc = nomeGerenciaLoc; idUnidadeFluxoLoc = idUnidadeLoc; nomeUnidadeFluxoLoc = nomeUnidadeLoc; idLocalidadeFluxoLoc = idLocalidadeLoc; nomeLocalidadeFluxoLoc = nomeLocalidadeLoc; idSituacaoFluxoLoc = idSituacaoLoc; idDocumentoTipoFluxoLoc = idDocumentoTipoLoc; nomeDocumentoTipoFluxoLoc = nomeDocumentoTipoLoc; faixaFluxoLoc = faixaLoc; descricaoFluxoLoc = descricaoSituacaoLoc; // TOTAL DO TIPO DOCUMENTO if (idCategoriaLoc.compareTo(Categoria.RESIDENCIAL) == 0) { qtDocumentosResLoc += qtDocumentosLoc; valorDocumentosResLoc = Util.somaBigDecimal(valorDocumentosResLoc, valorDocumentosLoc); valorDocumentosResSemParcAtualLoc = Util.somaBigDecimal(valorDocumentosResSemParcAtualLoc, valorDocumentosSemParcAtualLoc); qtDocumentosPrivadosLoc += qtDocumentosLoc; valorDocumentosPrivadosLoc = Util.somaBigDecimal(valorDocumentosPrivadosLoc, valorDocumentosLoc); valorDocumentosPrivadosSemParcAtualLoc = Util.somaBigDecimal(valorDocumentosPrivadosSemParcAtualLoc, valorDocumentosSemParcAtualLoc); } if (idCategoriaLoc.compareTo(Categoria.COMERCIAL) == 0) { qtDocumentosComLoc += qtDocumentosLoc; valorDocumentosComLoc = Util.somaBigDecimal(valorDocumentosComLoc, valorDocumentosLoc); valorDocumentosComSemParcAtualLoc = Util.somaBigDecimal(valorDocumentosComSemParcAtualLoc, valorDocumentosSemParcAtualLoc); qtDocumentosPrivadosLoc += qtDocumentosLoc; valorDocumentosPrivadosLoc = Util.somaBigDecimal(valorDocumentosPrivadosLoc, valorDocumentosLoc); valorDocumentosPrivadosSemParcAtualLoc = Util.somaBigDecimal(valorDocumentosPrivadosSemParcAtualLoc, valorDocumentosSemParcAtualLoc); } if (idCategoriaLoc.compareTo(Categoria.INDUSTRIAL) == 0) { qtDocumentosIndLoc += qtDocumentosLoc; valorDocumentosIndLoc = Util.somaBigDecimal(valorDocumentosIndLoc, valorDocumentosLoc); valorDocumentosIndSemParcAtualLoc = Util.somaBigDecimal(valorDocumentosIndSemParcAtualLoc, valorDocumentosSemParcAtualLoc); qtDocumentosPrivadosLoc += qtDocumentosLoc; valorDocumentosPrivadosLoc = Util.somaBigDecimal(valorDocumentosPrivadosLoc, valorDocumentosLoc); valorDocumentosPrivadosSemParcAtualLoc = Util.somaBigDecimal(valorDocumentosPrivadosSemParcAtualLoc, valorDocumentosSemParcAtualLoc); } if (idCategoriaLoc.compareTo(Categoria.PUBLICO) == 0) { qtDocumentosPubLoc += qtDocumentosLoc; valorDocumentosPubLoc = Util.somaBigDecimal(valorDocumentosPubLoc, valorDocumentosLoc); valorDocumentosPubSemParcAtualLoc = Util.somaBigDecimal(valorDocumentosPubSemParcAtualLoc, valorDocumentosSemParcAtualLoc); } } } else { if (helper.isExibirDebitoSemParcela() == true && nomeDocumentoTipoFluxoLoc.equals("DEBITO A COBRAR")) { bean = criarBeanRelatorioDocumentosAReceber(idGerenciaFluxoLoc, nomeGerenciaFluxoLoc, idUnidadeFluxoLoc, nomeUnidadeFluxoLoc, idLocalidadeFluxoLoc, nomeLocalidadeFluxoLoc, idDocumentoTipoFluxoLoc, "DEBITO SEM PARCELA", idSituacaoFluxoLoc, descricaoFluxoLoc, qtDocumentosResLoc, valorDocumentosResSemParcAtualLoc, qtDocumentosComLoc, valorDocumentosComSemParcAtualLoc, qtDocumentosIndLoc, valorDocumentosIndSemParcAtualLoc, qtDocumentosPrivadosLoc, valorDocumentosPrivadosSemParcAtualLoc, qtDocumentosPubLoc, valorDocumentosPubSemParcAtualLoc, "LOCALIDADE - " + nomeLocalidadeFluxoLoc, ConstantesSistema.NAO.toString(), faixaFluxoLoc); beansPorLocalidade.add(bean); } else if (helper.isExibirCreditoSemParcela() == true && nomeDocumentoTipoFluxoLoc.equals("CREDITO A REALIZAR")) { bean = criarBeanRelatorioDocumentosAReceber(idGerenciaFluxoLoc, nomeGerenciaFluxoLoc, idUnidadeFluxoLoc, nomeUnidadeFluxoLoc, idLocalidadeFluxoLoc, nomeLocalidadeFluxoLoc, idDocumentoTipoFluxoLoc, "CREDITO SEM PARCELA", idSituacaoFluxoLoc, descricaoFluxoLoc, qtDocumentosResLoc, valorDocumentosResSemParcAtualLoc, qtDocumentosComLoc, valorDocumentosComSemParcAtualLoc, qtDocumentosIndLoc, valorDocumentosIndSemParcAtualLoc, qtDocumentosPrivadosLoc, valorDocumentosPrivadosSemParcAtualLoc, qtDocumentosPubLoc, valorDocumentosPubSemParcAtualLoc, "LOCALIDADE - " + nomeLocalidadeFluxoLoc, ConstantesSistema.NAO.toString(), faixaFluxoLoc); beansPorLocalidade.add(bean); } else { bean = criarBeanRelatorioDocumentosAReceber(idGerenciaFluxoLoc, nomeGerenciaFluxoLoc, idUnidadeFluxoLoc, nomeUnidadeFluxoLoc, idLocalidadeFluxoLoc, nomeLocalidadeFluxoLoc, idDocumentoTipoFluxoLoc, nomeDocumentoTipoFluxoLoc, idSituacaoFluxoLoc, descricaoFluxoLoc, qtDocumentosResLoc, valorDocumentosResLoc, qtDocumentosComLoc, valorDocumentosComLoc, qtDocumentosIndLoc, valorDocumentosIndLoc, qtDocumentosPrivadosLoc, valorDocumentosPrivadosLoc, qtDocumentosPubLoc, valorDocumentosPubLoc, "LOCALIDADE - " + nomeLocalidadeFluxoLoc, ConstantesSistema.NAO.toString(), faixaFluxoLoc); beansPorLocalidade.add(bean); } // Reiniciando valores e mudando // variaveis de controle de fluxo qtDocumentosPubLoc = new Integer(0); valorDocumentosPubLoc = BigDecimal.ZERO; valorDocumentosPubSemParcAtualLoc = BigDecimal.ZERO; qtDocumentosResLoc = new Integer(0); valorDocumentosResLoc = BigDecimal.ZERO; valorDocumentosResSemParcAtualLoc = BigDecimal.ZERO; qtDocumentosComLoc = new Integer(0); valorDocumentosComLoc = BigDecimal.ZERO; valorDocumentosComSemParcAtualLoc = BigDecimal.ZERO; qtDocumentosIndLoc = new Integer(0); valorDocumentosIndLoc = BigDecimal.ZERO; valorDocumentosIndSemParcAtualLoc = BigDecimal.ZERO; qtDocumentosPrivadosLoc = new Integer(0); valorDocumentosPrivadosLoc = BigDecimal.ZERO; valorDocumentosPrivadosSemParcAtualLoc = BigDecimal.ZERO; idGerenciaFluxoLoc = idGerenciaLoc; nomeGerenciaFluxoLoc = nomeGerenciaLoc; idUnidadeFluxoLoc = idUnidadeLoc; nomeUnidadeFluxoLoc = nomeUnidadeLoc; idLocalidadeFluxoLoc = idLocalidadeLoc; nomeLocalidadeFluxoLoc = nomeLocalidadeLoc; idSituacaoFluxoLoc = idSituacaoLoc; idDocumentoTipoFluxoLoc = idDocumentoTipoLoc; nomeDocumentoTipoFluxoLoc = nomeDocumentoTipoLoc; faixaFluxoLoc = faixaLoc; descricaoFluxoLoc = descricaoSituacaoLoc; // TOTAL DO TIPO DOCUMENTO if (idCategoriaLoc.compareTo(Categoria.RESIDENCIAL) == 0) { qtDocumentosResLoc += qtDocumentosLoc; valorDocumentosResLoc = Util.somaBigDecimal(valorDocumentosResLoc, valorDocumentosLoc); valorDocumentosResSemParcAtualLoc = Util.somaBigDecimal(valorDocumentosResSemParcAtualLoc, valorDocumentosSemParcAtualLoc); qtDocumentosPrivadosLoc += qtDocumentosLoc; valorDocumentosPrivadosLoc = Util.somaBigDecimal(valorDocumentosPrivadosLoc, valorDocumentosLoc); valorDocumentosPrivadosSemParcAtualLoc = Util.somaBigDecimal(valorDocumentosPrivadosSemParcAtualLoc, valorDocumentosSemParcAtualLoc); } if (idCategoriaLoc.compareTo(Categoria.COMERCIAL) == 0) { qtDocumentosComLoc += qtDocumentosLoc; valorDocumentosComLoc = Util.somaBigDecimal(valorDocumentosComLoc, valorDocumentosLoc); valorDocumentosComSemParcAtualLoc = Util.somaBigDecimal(valorDocumentosComSemParcAtualLoc, valorDocumentosSemParcAtualLoc); qtDocumentosPrivadosLoc += qtDocumentosLoc; valorDocumentosPrivadosLoc = Util.somaBigDecimal(valorDocumentosPrivadosLoc, valorDocumentosLoc); valorDocumentosPrivadosSemParcAtualLoc = Util.somaBigDecimal(valorDocumentosPrivadosSemParcAtualLoc, valorDocumentosSemParcAtualLoc); } if (idCategoriaLoc.compareTo(Categoria.INDUSTRIAL) == 0) { qtDocumentosIndLoc += qtDocumentosLoc; valorDocumentosIndLoc = Util.somaBigDecimal(valorDocumentosIndLoc, valorDocumentosLoc); valorDocumentosIndSemParcAtualLoc = Util.somaBigDecimal(valorDocumentosIndSemParcAtualLoc, valorDocumentosSemParcAtualLoc); qtDocumentosPrivadosLoc += qtDocumentosLoc; valorDocumentosPrivadosLoc = Util.somaBigDecimal(valorDocumentosPrivadosLoc, valorDocumentosLoc); valorDocumentosPrivadosSemParcAtualLoc = Util.somaBigDecimal(valorDocumentosPrivadosSemParcAtualLoc, valorDocumentosSemParcAtualLoc); } if (idCategoriaLoc.compareTo(Categoria.PUBLICO) == 0) { qtDocumentosPubLoc += qtDocumentosLoc; valorDocumentosPubLoc = Util.somaBigDecimal(valorDocumentosPubLoc, valorDocumentosLoc); valorDocumentosPubSemParcAtualLoc = Util.somaBigDecimal(valorDocumentosPubSemParcAtualLoc, valorDocumentosSemParcAtualLoc); } } } if (colecaoDadosLocalidade.size() < quantidadeMaxima) { if (!iterator.hasNext()) { if (helper.isExibirDebitoSemParcela() == true && nomeDocumentoTipoFluxoLoc.equals("DEBITO A COBRAR")) { bean = criarBeanRelatorioDocumentosAReceber(idGerenciaFluxoLoc, nomeGerenciaFluxoLoc, idUnidadeFluxoLoc, nomeUnidadeFluxoLoc, idLocalidadeFluxoLoc, nomeLocalidadeFluxoLoc, idDocumentoTipoFluxoLoc, "DEBITO SEM PARCELA", idSituacaoFluxoLoc, descricaoFluxoLoc, qtDocumentosResLoc, valorDocumentosResSemParcAtualLoc, qtDocumentosComLoc, valorDocumentosComSemParcAtualLoc, qtDocumentosIndLoc, valorDocumentosIndSemParcAtualLoc, qtDocumentosPrivadosLoc, valorDocumentosPrivadosSemParcAtualLoc, qtDocumentosPubLoc, valorDocumentosPubSemParcAtualLoc, "LOCALIDADE - " + nomeLocalidadeFluxoLoc, ConstantesSistema.NAO.toString(), faixaFluxoLoc); beansPorLocalidade.add(bean); } else if (helper.isExibirCreditoSemParcela() == true && nomeDocumentoTipoFluxoLoc.equals("CREDITO A REALIZAR")) { bean = criarBeanRelatorioDocumentosAReceber(idGerenciaFluxoLoc, nomeGerenciaFluxoLoc, idUnidadeFluxoLoc, nomeUnidadeFluxoLoc, idLocalidadeFluxoLoc, nomeLocalidadeFluxoLoc, idDocumentoTipoFluxoLoc, "CREDITO SEM PARCELA", idSituacaoFluxoLoc, descricaoFluxoLoc, qtDocumentosResLoc, valorDocumentosResSemParcAtualLoc, qtDocumentosComLoc, valorDocumentosComSemParcAtualLoc, qtDocumentosIndLoc, valorDocumentosIndSemParcAtualLoc, qtDocumentosPrivadosLoc, valorDocumentosPrivadosSemParcAtualLoc, qtDocumentosPubLoc, valorDocumentosPubSemParcAtualLoc, "LOCALIDADE - " + nomeLocalidadeFluxoLoc, ConstantesSistema.NAO.toString(), faixaFluxoLoc); beansPorLocalidade.add(bean); } else { bean = criarBeanRelatorioDocumentosAReceber(idGerenciaFluxoLoc, nomeGerenciaFluxoLoc, idUnidadeFluxoLoc, nomeUnidadeFluxoLoc, idLocalidadeFluxoLoc, nomeLocalidadeFluxoLoc, idDocumentoTipoFluxoLoc, nomeDocumentoTipoFluxoLoc, idSituacaoFluxoLoc, descricaoFluxoLoc, qtDocumentosResLoc, valorDocumentosResLoc, qtDocumentosComLoc, valorDocumentosComLoc, qtDocumentosIndLoc, valorDocumentosIndLoc, qtDocumentosPrivadosLoc, valorDocumentosPrivadosLoc, qtDocumentosPubLoc, valorDocumentosPubLoc, "LOCALIDADE - " + nomeLocalidadeFluxoLoc, ConstantesSistema.NAO.toString(), faixaFluxoLoc); beansPorLocalidade.add(bean); } } } } } bean = null; if (colecaoDadosUnidade != null) { // GERAR DADOS DAS UNIDADES for (Iterator iterator = colecaoDadosUnidade.iterator(); iterator.hasNext();) { Object[] dados = null; dados = (Object[]) iterator.next(); // Dados Pesquisa idCategoriaUni = (Integer) dados[0]; idDocumentoTipoUni = (Integer) dados[2]; nomeDocumentoTipoUni = (String) dados[3]; idSituacaoUni = (Integer) dados[4]; descricaoSituacaoUni = (String) dados[5]; faixaUni = (String) dados[6]; qtDocumentosUni = (Integer) dados[7]; valorDocumentosUni = (BigDecimal) dados[8]; valorDocumentosSemParcAtualUni = (BigDecimal) dados[9]; idGerenciaUni = (Integer) dados[10]; nomeGerenciaUni = (String) dados[11]; idUnidadeUni = (Integer) dados[12]; nomeUnidadeUni = (String) dados[13]; if (!faixaUni.equals("0")) { // Verifica se a faixa n�o existia na base, // caso seja verdadeiro atribui descri��o da // faixa correspondente informada no filtro for (FaixaHelper faixaHelper : helper.getColecaoFaixas()) { Integer qtdDias = new Integer(faixaUni); if (qtdDias.compareTo(faixaHelper.getValorInicial()) >= 0 && qtdDias.compareTo(faixaHelper.getValorFinal()) <= 0) { faixaUni = faixaHelper.getDescricao(); break; } } } else { faixaUni = "A VENCER"; } if (primeiraVezUni) { idGerenciaFluxoUni = idGerenciaUni; nomeGerenciaFluxoUni = nomeGerenciaUni; idUnidadeFluxoUni = idUnidadeUni; nomeUnidadeFluxoUni = nomeUnidadeUni; idSituacaoFluxoUni = idSituacaoUni; idDocumentoTipoFluxoUni = idDocumentoTipoUni; nomeDocumentoTipoFluxoUni = nomeDocumentoTipoUni; faixaFluxoUni = faixaUni; descricaoFluxoUni = descricaoSituacaoUni; primeiraVezUni = false; } // SE TODOS OS DADOS FOREM IGUAIS // ACUMULA DOCUMENTO TIPO if (idGerenciaFluxoUni.intValue() == idGerenciaUni.intValue() && idUnidadeFluxoUni.intValue() == idUnidadeUni.intValue() && idSituacaoFluxoUni.intValue() == idSituacaoUni.intValue() && faixaFluxoUni.equals(faixaUni) && idDocumentoTipoFluxoUni.intValue() == idDocumentoTipoUni.intValue()) { // TOTAL DO TIPO DOCUMENTO if (idCategoriaUni.compareTo(Categoria.RESIDENCIAL) == 0) { qtDocumentosResUni += qtDocumentosUni; valorDocumentosResUni = Util.somaBigDecimal(valorDocumentosResUni, valorDocumentosUni); valorDocumentosResSemParcAtualUni = Util.somaBigDecimal(valorDocumentosResSemParcAtualUni, valorDocumentosSemParcAtualUni); qtDocumentosPrivadosUni += qtDocumentosUni; valorDocumentosPrivadosUni = Util.somaBigDecimal(valorDocumentosPrivadosUni, valorDocumentosUni); valorDocumentosPrivadosSemParcAtualUni = Util.somaBigDecimal(valorDocumentosPrivadosSemParcAtualUni, valorDocumentosSemParcAtualUni); } if (idCategoriaUni.compareTo(Categoria.COMERCIAL) == 0) { qtDocumentosComUni += qtDocumentosUni; valorDocumentosComUni = Util.somaBigDecimal(valorDocumentosComUni, valorDocumentosUni); valorDocumentosComSemParcAtualUni = Util.somaBigDecimal(valorDocumentosComSemParcAtualUni, valorDocumentosSemParcAtualUni); qtDocumentosPrivadosUni += qtDocumentosUni; valorDocumentosPrivadosUni = Util.somaBigDecimal(valorDocumentosPrivadosUni, valorDocumentosUni); valorDocumentosPrivadosSemParcAtualUni = Util.somaBigDecimal(valorDocumentosPrivadosSemParcAtualUni, valorDocumentosSemParcAtualUni); } if (idCategoriaUni.compareTo(Categoria.INDUSTRIAL) == 0) { qtDocumentosIndUni += qtDocumentosUni; valorDocumentosIndUni = Util.somaBigDecimal(valorDocumentosIndUni, valorDocumentosUni); valorDocumentosIndSemParcAtualUni = Util.somaBigDecimal(valorDocumentosIndSemParcAtualUni, valorDocumentosSemParcAtualUni); qtDocumentosPrivadosUni += qtDocumentosUni; valorDocumentosPrivadosUni = Util.somaBigDecimal(valorDocumentosPrivadosUni, valorDocumentosUni); valorDocumentosPrivadosSemParcAtualUni = Util.somaBigDecimal(valorDocumentosPrivadosSemParcAtualUni, valorDocumentosSemParcAtualUni); } if (idCategoriaUni.compareTo(Categoria.PUBLICO) == 0) { qtDocumentosPubUni += qtDocumentosUni; valorDocumentosPubUni = Util.somaBigDecimal(valorDocumentosPubUni, valorDocumentosUni); valorDocumentosPubSemParcAtualUni = Util.somaBigDecimal(valorDocumentosPubSemParcAtualUni, valorDocumentosSemParcAtualUni); } } else { if (idUnidadeFluxoUni.intValue() == idUnidadeUni.intValue()) { if (idSituacaoFluxoUni.intValue() == idSituacaoUni.intValue()) { if (faixaFluxoUni.equals(faixaUni)) { if (idDocumentoTipoFluxoUni.intValue() != idDocumentoTipoUni.intValue()) { if (helper.isExibirDebitoSemParcela() == true && nomeDocumentoTipoFluxoUni.equals("DEBITO A COBRAR")) { bean = criarBeanRelatorioDocumentosAReceber(idGerenciaFluxoUni, nomeGerenciaFluxoUni, idUnidadeFluxoUni, nomeUnidadeFluxoUni, null, null, idDocumentoTipoFluxoUni, "DEBITO SEM PARCELA", idSituacaoFluxoUni, descricaoFluxoUni, qtDocumentosResUni, valorDocumentosResSemParcAtualUni, qtDocumentosComUni, valorDocumentosComSemParcAtualUni, qtDocumentosIndUni, valorDocumentosIndSemParcAtualUni, qtDocumentosPrivadosUni, valorDocumentosPrivadosSemParcAtualUni, qtDocumentosPubUni, valorDocumentosPubSemParcAtualUni, "UNIDADE - " + nomeUnidadeFluxoUni, ConstantesSistema.NAO.toString(), faixaFluxoUni); beansPorUnidade.add(bean); } else if (helper.isExibirCreditoSemParcela() == true && nomeDocumentoTipoFluxoUni.equals("CREDITO A REALIZAR")) { bean = criarBeanRelatorioDocumentosAReceber(idGerenciaFluxoUni, nomeGerenciaFluxoUni, idUnidadeFluxoUni, nomeUnidadeFluxoUni, null, null, idDocumentoTipoFluxoUni, "CREDITO SEM PARCELA", idSituacaoFluxoUni, descricaoFluxoUni, qtDocumentosResUni, valorDocumentosResSemParcAtualUni, qtDocumentosComUni, valorDocumentosComSemParcAtualUni, qtDocumentosIndUni, valorDocumentosIndSemParcAtualUni, qtDocumentosPrivadosUni, valorDocumentosPrivadosSemParcAtualUni, qtDocumentosPubUni, valorDocumentosPubSemParcAtualUni, "UNIDADE - " + nomeUnidadeFluxoUni, ConstantesSistema.NAO.toString(), faixaFluxoUni); beansPorUnidade.add(bean); } else { bean = criarBeanRelatorioDocumentosAReceber(idGerenciaFluxoUni, nomeGerenciaFluxoUni, idUnidadeFluxoUni, nomeUnidadeFluxoUni, null, null, idDocumentoTipoFluxoUni, nomeDocumentoTipoFluxoUni, idSituacaoFluxoUni, descricaoFluxoUni, qtDocumentosResUni, valorDocumentosResUni, qtDocumentosComUni, valorDocumentosComUni, qtDocumentosIndUni, valorDocumentosIndUni, qtDocumentosPrivadosUni, valorDocumentosPrivadosUni, qtDocumentosPubUni, valorDocumentosPubUni, "UNIDADE - " + nomeUnidadeFluxoUni, ConstantesSistema.NAO.toString(), faixaFluxoUni); beansPorUnidade.add(bean); } // Reiniciando valores e mudando // variaveis de controle de fluxo qtDocumentosPubUni = new Integer(0); valorDocumentosPubUni = BigDecimal.ZERO; valorDocumentosPubSemParcAtualUni = BigDecimal.ZERO; qtDocumentosResUni = new Integer(0); valorDocumentosResUni = BigDecimal.ZERO; valorDocumentosResSemParcAtualUni = BigDecimal.ZERO; qtDocumentosComUni = new Integer(0); valorDocumentosComUni = BigDecimal.ZERO; valorDocumentosComSemParcAtualUni = BigDecimal.ZERO; qtDocumentosIndUni = new Integer(0); valorDocumentosIndUni = BigDecimal.ZERO; valorDocumentosIndSemParcAtualUni = BigDecimal.ZERO; qtDocumentosPrivadosUni = new Integer(0); valorDocumentosPrivadosUni = BigDecimal.ZERO; valorDocumentosPrivadosSemParcAtualUni = BigDecimal.ZERO; idGerenciaFluxoUni = idGerenciaUni; nomeGerenciaFluxoUni = nomeGerenciaUni; idUnidadeFluxoUni = idUnidadeUni; nomeUnidadeFluxoUni = nomeUnidadeUni; idSituacaoFluxoUni = idSituacaoUni; idDocumentoTipoFluxoUni = idDocumentoTipoUni; nomeDocumentoTipoFluxoUni = nomeDocumentoTipoUni; faixaFluxoUni = faixaUni; descricaoFluxoUni = descricaoSituacaoUni; // TOTAL DO TIPO DOCUMENTO if (idCategoriaUni.compareTo(Categoria.RESIDENCIAL) == 0) { qtDocumentosResUni += qtDocumentosUni; valorDocumentosResUni = Util.somaBigDecimal(valorDocumentosResUni, valorDocumentosUni); valorDocumentosResSemParcAtualUni = Util.somaBigDecimal(valorDocumentosResSemParcAtualUni, valorDocumentosSemParcAtualUni); qtDocumentosPrivadosUni += qtDocumentosUni; valorDocumentosPrivadosUni = Util.somaBigDecimal(valorDocumentosPrivadosUni, valorDocumentosUni); valorDocumentosPrivadosSemParcAtualUni = Util.somaBigDecimal(valorDocumentosPrivadosSemParcAtualUni, valorDocumentosSemParcAtualUni); } if (idCategoriaUni.compareTo(Categoria.COMERCIAL) == 0) { qtDocumentosComUni += qtDocumentosUni; valorDocumentosComUni = Util.somaBigDecimal(valorDocumentosComUni, valorDocumentosUni); valorDocumentosComSemParcAtualUni = Util.somaBigDecimal(valorDocumentosComSemParcAtualUni, valorDocumentosSemParcAtualUni); qtDocumentosPrivadosUni += qtDocumentosUni; valorDocumentosPrivadosUni = Util.somaBigDecimal(valorDocumentosPrivadosUni, valorDocumentosUni); valorDocumentosPrivadosSemParcAtualUni = Util.somaBigDecimal(valorDocumentosPrivadosSemParcAtualUni, valorDocumentosSemParcAtualUni); } if (idCategoriaUni.compareTo(Categoria.INDUSTRIAL) == 0) { qtDocumentosIndUni += qtDocumentosUni; valorDocumentosIndUni = Util.somaBigDecimal(valorDocumentosIndUni, valorDocumentosUni); valorDocumentosIndSemParcAtualUni = Util.somaBigDecimal(valorDocumentosIndSemParcAtualUni, valorDocumentosSemParcAtualUni); qtDocumentosPrivadosUni += qtDocumentosUni; valorDocumentosPrivadosUni = Util.somaBigDecimal(valorDocumentosPrivadosUni, valorDocumentosUni); valorDocumentosPrivadosSemParcAtualUni = Util.somaBigDecimal(valorDocumentosPrivadosSemParcAtualUni, valorDocumentosSemParcAtualUni); } if (idCategoriaUni.compareTo(Categoria.PUBLICO) == 0) { qtDocumentosPubUni += qtDocumentosUni; valorDocumentosPubUni = Util.somaBigDecimal(valorDocumentosPubUni, valorDocumentosUni); valorDocumentosPubSemParcAtualUni = Util.somaBigDecimal(valorDocumentosPubSemParcAtualUni, valorDocumentosSemParcAtualUni); } } } else { if (helper.isExibirDebitoSemParcela() == true && nomeDocumentoTipoFluxoUni.equals("DEBITO A COBRAR")) { bean = criarBeanRelatorioDocumentosAReceber(idGerenciaFluxoUni, nomeGerenciaFluxoUni, idUnidadeFluxoUni, nomeUnidadeFluxoUni, null, null, idDocumentoTipoFluxoUni, "DEBITO SEM PARCELA", idSituacaoFluxoUni, descricaoFluxoUni, qtDocumentosResUni, valorDocumentosResSemParcAtualUni, qtDocumentosComUni, valorDocumentosComSemParcAtualUni, qtDocumentosIndUni, valorDocumentosIndSemParcAtualUni, qtDocumentosPrivadosUni, valorDocumentosPrivadosSemParcAtualUni, qtDocumentosPubUni, valorDocumentosPubSemParcAtualUni, "UNIDADE - " + nomeUnidadeFluxoUni, ConstantesSistema.NAO.toString(), faixaFluxoUni); beansPorUnidade.add(bean); } else if (helper.isExibirCreditoSemParcela() == true && nomeDocumentoTipoFluxoUni.equals("CREDITO A REALIZAR")) { bean = criarBeanRelatorioDocumentosAReceber(idGerenciaFluxoUni, nomeGerenciaFluxoUni, idUnidadeFluxoUni, nomeUnidadeFluxoUni, null, null, idDocumentoTipoFluxoUni, "CREDITO SEM PARCELA", idSituacaoFluxoUni, descricaoFluxoUni, qtDocumentosResUni, valorDocumentosResSemParcAtualUni, qtDocumentosComUni, valorDocumentosComSemParcAtualUni, qtDocumentosIndUni, valorDocumentosIndSemParcAtualUni, qtDocumentosPrivadosUni, valorDocumentosPrivadosSemParcAtualUni, qtDocumentosPubUni, valorDocumentosPubSemParcAtualUni, "UNIDADE - " + nomeUnidadeFluxoUni, ConstantesSistema.NAO.toString(), faixaFluxoUni); beansPorUnidade.add(bean); } else { bean = criarBeanRelatorioDocumentosAReceber(idGerenciaFluxoUni, nomeGerenciaFluxoUni, idUnidadeFluxoUni, nomeUnidadeFluxoUni, null, null, idDocumentoTipoFluxoUni, nomeDocumentoTipoFluxoUni, idSituacaoFluxoUni, descricaoFluxoUni, qtDocumentosResUni, valorDocumentosResUni, qtDocumentosComUni, valorDocumentosComUni, qtDocumentosIndUni, valorDocumentosIndUni, qtDocumentosPrivadosUni, valorDocumentosPrivadosUni, qtDocumentosPubUni, valorDocumentosPubUni, "UNIDADE - " + nomeUnidadeFluxoUni, ConstantesSistema.NAO.toString(), faixaFluxoUni); beansPorUnidade.add(bean); } // Reiniciando valores e mudando // variaveis de controle de fluxo qtDocumentosPubUni = new Integer(0); valorDocumentosPubUni = BigDecimal.ZERO; valorDocumentosPubSemParcAtualUni = BigDecimal.ZERO; qtDocumentosResUni = new Integer(0); valorDocumentosResUni = BigDecimal.ZERO; valorDocumentosResSemParcAtualUni = BigDecimal.ZERO; qtDocumentosComUni = new Integer(0); valorDocumentosComUni = BigDecimal.ZERO; valorDocumentosComSemParcAtualUni = BigDecimal.ZERO; qtDocumentosIndUni = new Integer(0); valorDocumentosIndUni = BigDecimal.ZERO; valorDocumentosIndSemParcAtualUni = BigDecimal.ZERO; qtDocumentosPrivadosUni = new Integer(0); valorDocumentosPrivadosUni = BigDecimal.ZERO; valorDocumentosPrivadosSemParcAtualUni = BigDecimal.ZERO; idGerenciaFluxoUni = idGerenciaUni; nomeGerenciaFluxoUni = nomeGerenciaUni; idUnidadeFluxoUni = idUnidadeUni; nomeUnidadeFluxoUni = nomeUnidadeUni; idSituacaoFluxoUni = idSituacaoUni; idDocumentoTipoFluxoUni = idDocumentoTipoUni; nomeDocumentoTipoFluxoUni = nomeDocumentoTipoUni; faixaFluxoUni = faixaUni; descricaoFluxoUni = descricaoSituacaoUni; // TOTAL DO TIPO DOCUMENTO if (idCategoriaUni.compareTo(Categoria.RESIDENCIAL) == 0) { qtDocumentosResUni += qtDocumentosUni; valorDocumentosResUni = Util.somaBigDecimal(valorDocumentosResUni, valorDocumentosUni); valorDocumentosResSemParcAtualUni = Util.somaBigDecimal(valorDocumentosResSemParcAtualUni, valorDocumentosSemParcAtualUni); qtDocumentosPrivadosUni += qtDocumentosUni; valorDocumentosPrivadosUni = Util.somaBigDecimal(valorDocumentosPrivadosUni, valorDocumentosUni); valorDocumentosPrivadosSemParcAtualUni = Util.somaBigDecimal(valorDocumentosPrivadosSemParcAtualUni, valorDocumentosSemParcAtualUni); } if (idCategoriaUni.compareTo(Categoria.COMERCIAL) == 0) { qtDocumentosComUni += qtDocumentosUni; valorDocumentosComUni = Util.somaBigDecimal(valorDocumentosComUni, valorDocumentosUni); valorDocumentosComSemParcAtualUni = Util.somaBigDecimal(valorDocumentosComSemParcAtualUni, valorDocumentosSemParcAtualUni); qtDocumentosPrivadosUni += qtDocumentosUni; valorDocumentosPrivadosUni = Util.somaBigDecimal(valorDocumentosPrivadosUni, valorDocumentosUni); valorDocumentosPrivadosSemParcAtualUni = Util.somaBigDecimal(valorDocumentosPrivadosSemParcAtualUni, valorDocumentosSemParcAtualUni); } if (idCategoriaUni.compareTo(Categoria.INDUSTRIAL) == 0) { qtDocumentosIndUni += qtDocumentosUni; valorDocumentosIndUni = Util.somaBigDecimal(valorDocumentosIndUni, valorDocumentosUni); valorDocumentosIndSemParcAtualUni = Util.somaBigDecimal(valorDocumentosIndSemParcAtualUni, valorDocumentosSemParcAtualUni); qtDocumentosPrivadosUni += qtDocumentosUni; valorDocumentosPrivadosUni = Util.somaBigDecimal(valorDocumentosPrivadosUni, valorDocumentosUni); valorDocumentosPrivadosSemParcAtualUni = Util.somaBigDecimal(valorDocumentosPrivadosSemParcAtualUni, valorDocumentosSemParcAtualUni); } if (idCategoriaUni.compareTo(Categoria.PUBLICO) == 0) { qtDocumentosPubUni += qtDocumentosUni; valorDocumentosPubUni = Util.somaBigDecimal(valorDocumentosPubUni, valorDocumentosUni); valorDocumentosPubSemParcAtualUni = Util.somaBigDecimal(valorDocumentosPubSemParcAtualUni, valorDocumentosSemParcAtualUni); } } } else { if (helper.isExibirDebitoSemParcela() == true && nomeDocumentoTipoFluxoUni.equals("DEBITO A COBRAR")) { bean = criarBeanRelatorioDocumentosAReceber(idGerenciaFluxoUni, nomeGerenciaFluxoUni, idUnidadeFluxoUni, nomeUnidadeFluxoUni, null, null, idDocumentoTipoFluxoUni, "DEBITO SEM PARCELA", idSituacaoFluxoUni, descricaoFluxoUni, qtDocumentosResUni, valorDocumentosResSemParcAtualUni, qtDocumentosComUni, valorDocumentosComSemParcAtualUni, qtDocumentosIndUni, valorDocumentosIndSemParcAtualUni, qtDocumentosPrivadosUni, valorDocumentosPrivadosSemParcAtualUni, qtDocumentosPubUni, valorDocumentosPubSemParcAtualUni, "UNIDADE - " + nomeUnidadeFluxoUni, ConstantesSistema.NAO.toString(), faixaFluxoUni); beansPorUnidade.add(bean); } else if (helper.isExibirCreditoSemParcela() == true && nomeDocumentoTipoFluxoUni.equals("CREDITO A REALIZAR")) { bean = criarBeanRelatorioDocumentosAReceber(idGerenciaFluxoUni, nomeGerenciaFluxoUni, idUnidadeFluxoUni, nomeUnidadeFluxoUni, null, null, idDocumentoTipoFluxoUni, "CREDITO SEM PARCELA", idSituacaoFluxoUni, descricaoFluxoUni, qtDocumentosResUni, valorDocumentosResSemParcAtualUni, qtDocumentosComUni, valorDocumentosComSemParcAtualUni, qtDocumentosIndUni, valorDocumentosIndSemParcAtualUni, qtDocumentosPrivadosUni, valorDocumentosPrivadosSemParcAtualUni, qtDocumentosPubUni, valorDocumentosPubSemParcAtualUni, "UNIDADE - " + nomeUnidadeFluxoUni, ConstantesSistema.NAO.toString(), faixaFluxoUni); beansPorUnidade.add(bean); } else { bean = criarBeanRelatorioDocumentosAReceber(idGerenciaFluxoUni, nomeGerenciaFluxoUni, idUnidadeFluxoUni, nomeUnidadeFluxoUni, null, null, idDocumentoTipoFluxoUni, nomeDocumentoTipoFluxoUni, idSituacaoFluxoUni, descricaoFluxoUni, qtDocumentosResUni, valorDocumentosResUni, qtDocumentosComUni, valorDocumentosComUni, qtDocumentosIndUni, valorDocumentosIndUni, qtDocumentosPrivadosUni, valorDocumentosPrivadosUni, qtDocumentosPubUni, valorDocumentosPubUni, "UNIDADE - " + nomeUnidadeFluxoUni, ConstantesSistema.NAO.toString(), faixaFluxoUni); beansPorUnidade.add(bean); } // Reiniciando valores e mudando // variaveis de controle de fluxo qtDocumentosPubUni = new Integer(0); valorDocumentosPubUni = BigDecimal.ZERO; valorDocumentosPubSemParcAtualUni = BigDecimal.ZERO; qtDocumentosResUni = new Integer(0); valorDocumentosResUni = BigDecimal.ZERO; valorDocumentosResSemParcAtualUni = BigDecimal.ZERO; qtDocumentosComUni = new Integer(0); valorDocumentosComUni = BigDecimal.ZERO; valorDocumentosComSemParcAtualUni = BigDecimal.ZERO; qtDocumentosIndUni = new Integer(0); valorDocumentosIndUni = BigDecimal.ZERO; valorDocumentosIndSemParcAtualUni = BigDecimal.ZERO; qtDocumentosPrivadosUni = new Integer(0); valorDocumentosPrivadosUni = BigDecimal.ZERO; valorDocumentosPrivadosSemParcAtualUni = BigDecimal.ZERO; idGerenciaFluxoUni = idGerenciaUni; nomeGerenciaFluxoUni = nomeGerenciaUni; idUnidadeFluxoUni = idUnidadeUni; nomeUnidadeFluxoUni = nomeUnidadeUni; idSituacaoFluxoUni = idSituacaoUni; idDocumentoTipoFluxoUni = idDocumentoTipoUni; nomeDocumentoTipoFluxoUni = nomeDocumentoTipoUni; faixaFluxoUni = faixaUni; descricaoFluxoUni = descricaoSituacaoUni; // TOTAL DO TIPO DOCUMENTO if (idCategoriaUni.compareTo(Categoria.RESIDENCIAL) == 0) { qtDocumentosResUni += qtDocumentosUni; valorDocumentosResUni = Util.somaBigDecimal(valorDocumentosResUni, valorDocumentosUni); valorDocumentosResSemParcAtualUni = Util.somaBigDecimal(valorDocumentosResSemParcAtualUni, valorDocumentosSemParcAtualUni); qtDocumentosPrivadosUni += qtDocumentosUni; valorDocumentosPrivadosUni = Util.somaBigDecimal(valorDocumentosPrivadosUni, valorDocumentosUni); valorDocumentosPrivadosSemParcAtualUni = Util.somaBigDecimal(valorDocumentosPrivadosSemParcAtualUni, valorDocumentosSemParcAtualUni); } if (idCategoriaUni.compareTo(Categoria.COMERCIAL) == 0) { qtDocumentosComUni += qtDocumentosUni; valorDocumentosComUni = Util.somaBigDecimal(valorDocumentosComUni, valorDocumentosUni); valorDocumentosComSemParcAtualUni = Util.somaBigDecimal(valorDocumentosComSemParcAtualUni, valorDocumentosSemParcAtualUni); qtDocumentosPrivadosUni += qtDocumentosUni; valorDocumentosPrivadosUni = Util.somaBigDecimal(valorDocumentosPrivadosUni, valorDocumentosUni); valorDocumentosPrivadosSemParcAtualUni = Util.somaBigDecimal(valorDocumentosPrivadosSemParcAtualUni, valorDocumentosSemParcAtualUni); } if (idCategoriaUni.compareTo(Categoria.INDUSTRIAL) == 0) { qtDocumentosIndUni += qtDocumentosUni; valorDocumentosIndUni = Util.somaBigDecimal(valorDocumentosIndUni, valorDocumentosUni); valorDocumentosIndSemParcAtualUni = Util.somaBigDecimal(valorDocumentosIndSemParcAtualUni, valorDocumentosSemParcAtualUni); qtDocumentosPrivadosUni += qtDocumentosUni; valorDocumentosPrivadosUni = Util.somaBigDecimal(valorDocumentosPrivadosUni, valorDocumentosUni); valorDocumentosPrivadosSemParcAtualUni = Util.somaBigDecimal(valorDocumentosPrivadosSemParcAtualUni, valorDocumentosSemParcAtualUni); } if (idCategoriaUni.compareTo(Categoria.PUBLICO) == 0) { qtDocumentosPubUni += qtDocumentosUni; valorDocumentosPubUni = Util.somaBigDecimal(valorDocumentosPubUni, valorDocumentosUni); valorDocumentosPubSemParcAtualUni = Util.somaBigDecimal(valorDocumentosPubSemParcAtualUni, valorDocumentosSemParcAtualUni); } } } else { if (helper.isExibirDebitoSemParcela() == true && nomeDocumentoTipoFluxoUni.equals("DEBITO A COBRAR")) { bean = criarBeanRelatorioDocumentosAReceber(idGerenciaFluxoUni, nomeGerenciaFluxoUni, idUnidadeFluxoUni, nomeUnidadeFluxoUni, null, null, idDocumentoTipoFluxoUni, "DEBITO SEM PARCELA", idSituacaoFluxoUni, descricaoFluxoUni, qtDocumentosResUni, valorDocumentosResSemParcAtualUni, qtDocumentosComUni, valorDocumentosComSemParcAtualUni, qtDocumentosIndUni, valorDocumentosIndSemParcAtualUni, qtDocumentosPrivadosUni, valorDocumentosPrivadosSemParcAtualUni, qtDocumentosPubUni, valorDocumentosPubSemParcAtualUni, "UNIDADE - " + nomeUnidadeFluxoUni, ConstantesSistema.NAO.toString(), faixaFluxoUni); beansPorUnidade.add(bean); } else if (helper.isExibirCreditoSemParcela() == true && nomeDocumentoTipoFluxoUni.equals("CREDITO A REALIZAR")) { bean = criarBeanRelatorioDocumentosAReceber(idGerenciaFluxoUni, nomeGerenciaFluxoUni, idUnidadeFluxoUni, nomeUnidadeFluxoUni, null, null, idDocumentoTipoFluxoUni, "CREDITO SEM PARCELA", idSituacaoFluxoUni, descricaoFluxoUni, qtDocumentosResUni, valorDocumentosResSemParcAtualUni, qtDocumentosComUni, valorDocumentosComSemParcAtualUni, qtDocumentosIndUni, valorDocumentosIndSemParcAtualUni, qtDocumentosPrivadosUni, valorDocumentosPrivadosSemParcAtualUni, qtDocumentosPubUni, valorDocumentosPubSemParcAtualUni, "UNIDADE - " + nomeUnidadeFluxoUni, ConstantesSistema.NAO.toString(), faixaFluxoUni); beansPorUnidade.add(bean); } else { bean = criarBeanRelatorioDocumentosAReceber(idGerenciaFluxoUni, nomeGerenciaFluxoUni, idUnidadeFluxoUni, nomeUnidadeFluxoUni, null, null, idDocumentoTipoFluxoUni, nomeDocumentoTipoFluxoUni, idSituacaoFluxoUni, descricaoFluxoUni, qtDocumentosResUni, valorDocumentosResUni, qtDocumentosComUni, valorDocumentosComUni, qtDocumentosIndUni, valorDocumentosIndUni, qtDocumentosPrivadosUni, valorDocumentosPrivadosUni, qtDocumentosPubUni, valorDocumentosPubUni, "UNIDADE - " + nomeUnidadeFluxoUni, ConstantesSistema.NAO.toString(), faixaFluxoUni); beansPorUnidade.add(bean); } // Reiniciando valores e mudando // variaveis de controle de fluxo qtDocumentosPubUni = new Integer(0); valorDocumentosPubUni = BigDecimal.ZERO; valorDocumentosPubSemParcAtualUni = BigDecimal.ZERO; qtDocumentosResUni = new Integer(0); valorDocumentosResUni = BigDecimal.ZERO; valorDocumentosResSemParcAtualUni = BigDecimal.ZERO; qtDocumentosComUni = new Integer(0); valorDocumentosComUni = BigDecimal.ZERO; valorDocumentosComSemParcAtualUni = BigDecimal.ZERO; qtDocumentosIndUni = new Integer(0); valorDocumentosIndUni = BigDecimal.ZERO; valorDocumentosIndSemParcAtualUni = BigDecimal.ZERO; qtDocumentosPrivadosUni = new Integer(0); valorDocumentosPrivadosUni = BigDecimal.ZERO; valorDocumentosPrivadosSemParcAtualUni = BigDecimal.ZERO; idGerenciaFluxoUni = idGerenciaUni; nomeGerenciaFluxoUni = nomeGerenciaUni; idUnidadeFluxoUni = idUnidadeUni; nomeUnidadeFluxoUni = nomeUnidadeUni; idSituacaoFluxoUni = idSituacaoUni; idDocumentoTipoFluxoUni = idDocumentoTipoUni; nomeDocumentoTipoFluxoUni = nomeDocumentoTipoUni; faixaFluxoUni = faixaUni; descricaoFluxoUni = descricaoSituacaoUni; // TOTAL DO TIPO DOCUMENTO if (idCategoriaUni.compareTo(Categoria.RESIDENCIAL) == 0) { qtDocumentosResUni += qtDocumentosUni; valorDocumentosResUni = Util.somaBigDecimal(valorDocumentosResUni, valorDocumentosUni); valorDocumentosResSemParcAtualUni = Util.somaBigDecimal(valorDocumentosResSemParcAtualUni, valorDocumentosSemParcAtualUni); qtDocumentosPrivadosUni += qtDocumentosUni; valorDocumentosPrivadosUni = Util.somaBigDecimal(valorDocumentosPrivadosUni, valorDocumentosUni); valorDocumentosPrivadosSemParcAtualUni = Util.somaBigDecimal(valorDocumentosPrivadosSemParcAtualUni, valorDocumentosSemParcAtualUni); } if (idCategoriaUni.compareTo(Categoria.COMERCIAL) == 0) { qtDocumentosComUni += qtDocumentosUni; valorDocumentosComUni = Util.somaBigDecimal(valorDocumentosComUni, valorDocumentosUni); valorDocumentosComSemParcAtualUni = Util.somaBigDecimal(valorDocumentosComSemParcAtualUni, valorDocumentosSemParcAtualUni); qtDocumentosPrivadosUni += qtDocumentosUni; valorDocumentosPrivadosUni = Util.somaBigDecimal(valorDocumentosPrivadosUni, valorDocumentosUni); valorDocumentosPrivadosSemParcAtualUni = Util.somaBigDecimal(valorDocumentosPrivadosSemParcAtualUni, valorDocumentosSemParcAtualUni); } if (idCategoriaUni.compareTo(Categoria.INDUSTRIAL) == 0) { qtDocumentosIndUni += qtDocumentosUni; valorDocumentosIndUni = Util.somaBigDecimal(valorDocumentosIndUni, valorDocumentosUni); valorDocumentosIndSemParcAtualUni = Util.somaBigDecimal(valorDocumentosIndSemParcAtualUni, valorDocumentosSemParcAtualUni); qtDocumentosPrivadosUni += qtDocumentosUni; valorDocumentosPrivadosUni = Util.somaBigDecimal(valorDocumentosPrivadosUni, valorDocumentosUni); valorDocumentosPrivadosSemParcAtualUni = Util.somaBigDecimal(valorDocumentosPrivadosSemParcAtualUni, valorDocumentosSemParcAtualUni); } if (idCategoriaUni.compareTo(Categoria.PUBLICO) == 0) { qtDocumentosPubUni += qtDocumentosUni; valorDocumentosPubUni = Util.somaBigDecimal(valorDocumentosPubUni, valorDocumentosUni); valorDocumentosPubSemParcAtualUni = Util.somaBigDecimal(valorDocumentosPubSemParcAtualUni, valorDocumentosSemParcAtualUni); } } } if (colecaoDadosUnidade.size() < quantidadeMaxima) { if (!iterator.hasNext()) { if (helper.isExibirDebitoSemParcela() == true && nomeDocumentoTipoFluxoUni.equals("DEBITO A COBRAR")) { bean = criarBeanRelatorioDocumentosAReceber(idGerenciaFluxoUni, nomeGerenciaFluxoUni, idUnidadeFluxoUni, nomeUnidadeFluxoUni, null, null, idDocumentoTipoFluxoUni, "DEBITO SEM PARCELA", idSituacaoFluxoUni, descricaoFluxoUni, qtDocumentosResUni, valorDocumentosResSemParcAtualUni, qtDocumentosComUni, valorDocumentosComSemParcAtualUni, qtDocumentosIndUni, valorDocumentosIndSemParcAtualUni, qtDocumentosPrivadosUni, valorDocumentosPrivadosSemParcAtualUni, qtDocumentosPubUni, valorDocumentosPubSemParcAtualUni, "UNIDADE - " + nomeUnidadeFluxoUni, ConstantesSistema.NAO.toString(), faixaFluxoUni); beansPorUnidade.add(bean); } else if (helper.isExibirCreditoSemParcela() == true && nomeDocumentoTipoFluxoUni.equals("CREDITO A REALIZAR")) { bean = criarBeanRelatorioDocumentosAReceber(idGerenciaFluxoUni, nomeGerenciaFluxoUni, idUnidadeFluxoUni, nomeUnidadeFluxoUni, null, null, idDocumentoTipoFluxoUni, "CREDITO SEM PARCELA", idSituacaoFluxoUni, descricaoFluxoUni, qtDocumentosResUni, valorDocumentosResSemParcAtualUni, qtDocumentosComUni, valorDocumentosComSemParcAtualUni, qtDocumentosIndUni, valorDocumentosIndSemParcAtualUni, qtDocumentosPrivadosUni, valorDocumentosPrivadosSemParcAtualUni, qtDocumentosPubUni, valorDocumentosPubSemParcAtualUni, "UNIDADE - " + nomeUnidadeFluxoUni, ConstantesSistema.NAO.toString(), faixaFluxoUni); beansPorUnidade.add(bean); } else { bean = criarBeanRelatorioDocumentosAReceber(idGerenciaFluxoUni, nomeGerenciaFluxoUni, idUnidadeFluxoUni, nomeUnidadeFluxoUni, null, null, idDocumentoTipoFluxoUni, nomeDocumentoTipoFluxoUni, idSituacaoFluxoUni, descricaoFluxoUni, qtDocumentosResUni, valorDocumentosResUni, qtDocumentosComUni, valorDocumentosComUni, qtDocumentosIndUni, valorDocumentosIndUni, qtDocumentosPrivadosUni, valorDocumentosPrivadosUni, qtDocumentosPubUni, valorDocumentosPubUni, "UNIDADE - " + nomeUnidadeFluxoUni, ConstantesSistema.NAO.toString(), faixaFluxoUni); beansPorUnidade.add(bean); } } } } } bean = null; if (colecaoDadosGerencia != null) { // GERAR DADOS DAS GERENCIAS for (Iterator iterator = colecaoDadosGerencia.iterator(); iterator.hasNext();) { Object[] dados = null; dados = (Object[]) iterator.next(); // Dados Pesquisa idCategoriaGer = (Integer) dados[0]; idDocumentoTipoGer = (Integer) dados[2]; nomeDocumentoTipoGer = (String) dados[3]; idSituacaoGer = (Integer) dados[4]; descricaoSituacaoGer = (String) dados[5]; faixaGer = (String) dados[6]; qtDocumentosGer = (Integer) dados[7]; valorDocumentosGer = (BigDecimal) dados[8]; valorDocumentosSemParcAtualGer = (BigDecimal) dados[9]; idGerenciaGer = (Integer) dados[10]; nomeGerenciaGer = (String) dados[11]; if (!faixaGer.equals("0")) { // Verifica se a faixa n�o existia na base, // caso seja verdadeiro atribui descri��o da // faixa correspondente informada no filtro for (FaixaHelper faixaHelper : helper.getColecaoFaixas()) { Integer qtdDias = new Integer(faixaGer); if (qtdDias.compareTo(faixaHelper.getValorInicial()) >= 0 && qtdDias.compareTo(faixaHelper.getValorFinal()) <= 0) { faixaGer = faixaHelper.getDescricao(); break; } } } else { faixaGer = "A VENCER"; } if (primeiraVezGer) { idGerenciaFluxoGer = idGerenciaGer; nomeGerenciaFluxoGer = nomeGerenciaGer; idSituacaoFluxoGer = idSituacaoGer; idDocumentoTipoFluxoGer = idDocumentoTipoGer; nomeDocumentoTipoFluxoGer = nomeDocumentoTipoGer; faixaFluxoGer = faixaGer; descricaoFluxoGer = descricaoSituacaoGer; primeiraVezGer = false; } // SE TODOS OS DADOS FOREM IGUAIS // ACUMULA DOCUMENTO TIPO if (idGerenciaFluxoGer.intValue() == idGerenciaGer.intValue() && idSituacaoFluxoGer.intValue() == idSituacaoGer.intValue() && faixaFluxoGer.equals(faixaGer) && idDocumentoTipoFluxoGer.intValue() == idDocumentoTipoGer.intValue()) { // TOTAL DO TIPO DOCUMENTO if (idCategoriaGer.compareTo(Categoria.RESIDENCIAL) == 0) { qtDocumentosResGer += qtDocumentosGer; valorDocumentosResGer = Util.somaBigDecimal(valorDocumentosResGer, valorDocumentosGer); valorDocumentosResSemParcAtualGer = Util.somaBigDecimal(valorDocumentosResSemParcAtualGer, valorDocumentosSemParcAtualGer); qtDocumentosPrivadosGer += qtDocumentosGer; valorDocumentosPrivadosGer = Util.somaBigDecimal(valorDocumentosPrivadosGer, valorDocumentosGer); valorDocumentosPrivadosSemParcAtualGer = Util.somaBigDecimal(valorDocumentosPrivadosSemParcAtualGer, valorDocumentosSemParcAtualGer); } if (idCategoriaGer.compareTo(Categoria.COMERCIAL) == 0) { qtDocumentosComGer += qtDocumentosGer; valorDocumentosComGer = Util.somaBigDecimal(valorDocumentosComGer, valorDocumentosGer); valorDocumentosComSemParcAtualGer = Util.somaBigDecimal(valorDocumentosComSemParcAtualGer, valorDocumentosSemParcAtualGer); qtDocumentosPrivadosGer += qtDocumentosGer; valorDocumentosPrivadosGer = Util.somaBigDecimal(valorDocumentosPrivadosGer, valorDocumentosGer); valorDocumentosPrivadosSemParcAtualGer = Util.somaBigDecimal(valorDocumentosPrivadosSemParcAtualGer, valorDocumentosSemParcAtualGer); } if (idCategoriaGer.compareTo(Categoria.INDUSTRIAL) == 0) { qtDocumentosIndGer += qtDocumentosGer; valorDocumentosIndGer = Util.somaBigDecimal(valorDocumentosIndGer, valorDocumentosGer); valorDocumentosIndSemParcAtualGer = Util.somaBigDecimal(valorDocumentosIndSemParcAtualGer, valorDocumentosSemParcAtualGer); qtDocumentosPrivadosGer += qtDocumentosGer; valorDocumentosPrivadosGer = Util.somaBigDecimal(valorDocumentosPrivadosGer, valorDocumentosGer); valorDocumentosPrivadosSemParcAtualGer = Util.somaBigDecimal(valorDocumentosPrivadosSemParcAtualGer, valorDocumentosSemParcAtualGer); } if (idCategoriaGer.compareTo(Categoria.PUBLICO) == 0) { qtDocumentosPubGer += qtDocumentosGer; valorDocumentosPubGer = Util.somaBigDecimal(valorDocumentosPubGer, valorDocumentosGer); valorDocumentosPubSemParcAtualGer = Util.somaBigDecimal(valorDocumentosPubSemParcAtualGer, valorDocumentosSemParcAtualGer); } } else { if (idGerenciaFluxoGer.intValue() == idGerenciaGer.intValue()) { if (idSituacaoFluxoGer.intValue() == idSituacaoGer.intValue()) { if (faixaFluxoGer.equals(faixaGer)) { if (idDocumentoTipoFluxoGer.intValue() != idDocumentoTipoGer.intValue()) { if (helper.isExibirDebitoSemParcela() == true && nomeDocumentoTipoFluxoGer.equals("DEBITO A COBRAR")) { bean = criarBeanRelatorioDocumentosAReceber(idGerenciaFluxoGer, nomeGerenciaFluxoGer, null, null, null, null, idDocumentoTipoFluxoGer, "DEBITO SEM PARCELA", idSituacaoFluxoGer, descricaoFluxoGer, qtDocumentosResGer, valorDocumentosResSemParcAtualGer, qtDocumentosComGer, valorDocumentosComSemParcAtualGer, qtDocumentosIndGer, valorDocumentosIndSemParcAtualGer, qtDocumentosPrivadosGer, valorDocumentosPrivadosSemParcAtualGer, qtDocumentosPubGer, valorDocumentosPubSemParcAtualGer, "GER�NCIA - " + nomeGerenciaFluxoGer, ConstantesSistema.NAO.toString(), faixaFluxoGer); beansPorGerencia.add(bean); } else if (helper.isExibirCreditoSemParcela() == true && nomeDocumentoTipoFluxoGer.equals("CREDITO A REALIZAR")) { bean = criarBeanRelatorioDocumentosAReceber(idGerenciaFluxoGer, nomeGerenciaFluxoGer, null, null, null, null, idDocumentoTipoFluxoGer, "CREDITO SEM PARCELA", idSituacaoFluxoGer, descricaoFluxoGer, qtDocumentosResGer, valorDocumentosResSemParcAtualGer, qtDocumentosComGer, valorDocumentosComSemParcAtualGer, qtDocumentosIndGer, valorDocumentosIndSemParcAtualGer, qtDocumentosPrivadosGer, valorDocumentosPrivadosSemParcAtualGer, qtDocumentosPubGer, valorDocumentosPubSemParcAtualGer, "GER�NCIA - " + nomeGerenciaFluxoGer, ConstantesSistema.NAO.toString(), faixaFluxoGer); beansPorGerencia.add(bean); } else { bean = criarBeanRelatorioDocumentosAReceber(idGerenciaFluxoGer, nomeGerenciaFluxoGer, null, null, null, null, idDocumentoTipoFluxoGer, nomeDocumentoTipoFluxoGer, idSituacaoFluxoGer, descricaoFluxoGer, qtDocumentosResGer, valorDocumentosResGer, qtDocumentosComGer, valorDocumentosComGer, qtDocumentosIndGer, valorDocumentosIndGer, qtDocumentosPrivadosGer, valorDocumentosPrivadosGer, qtDocumentosPubGer, valorDocumentosPubGer, "GER�NCIA - " + nomeGerenciaFluxoGer, ConstantesSistema.NAO.toString(), faixaFluxoGer); beansPorGerencia.add(bean); } // Reiniciando valores e mudando // variaveis de controle de fluxo qtDocumentosPubGer = new Integer(0); valorDocumentosPubGer = BigDecimal.ZERO; valorDocumentosPubSemParcAtualGer = BigDecimal.ZERO; qtDocumentosResGer = new Integer(0); valorDocumentosResGer = BigDecimal.ZERO; valorDocumentosResSemParcAtualGer = BigDecimal.ZERO; qtDocumentosComGer = new Integer(0); valorDocumentosComGer = BigDecimal.ZERO; valorDocumentosComSemParcAtualGer = BigDecimal.ZERO; qtDocumentosIndGer = new Integer(0); valorDocumentosIndGer = BigDecimal.ZERO; valorDocumentosIndSemParcAtualGer = BigDecimal.ZERO; qtDocumentosPrivadosGer = new Integer(0); valorDocumentosPrivadosGer = BigDecimal.ZERO; valorDocumentosPrivadosSemParcAtualGer = BigDecimal.ZERO; idGerenciaFluxoGer = idGerenciaGer; nomeGerenciaFluxoGer = nomeGerenciaGer; idSituacaoFluxoGer = idSituacaoGer; idDocumentoTipoFluxoGer = idDocumentoTipoGer; nomeDocumentoTipoFluxoGer = nomeDocumentoTipoGer; faixaFluxoGer = faixaGer; descricaoFluxoGer = descricaoSituacaoGer; // TOTAL DO TIPO DOCUMENTO if (idCategoriaGer.compareTo(Categoria.RESIDENCIAL) == 0) { qtDocumentosResGer += qtDocumentosGer; valorDocumentosResGer = Util.somaBigDecimal(valorDocumentosResGer, valorDocumentosGer); valorDocumentosResSemParcAtualGer = Util.somaBigDecimal(valorDocumentosResSemParcAtualGer, valorDocumentosSemParcAtualGer); qtDocumentosPrivadosGer += qtDocumentosGer; valorDocumentosPrivadosGer = Util.somaBigDecimal(valorDocumentosPrivadosGer, valorDocumentosGer); valorDocumentosPrivadosSemParcAtualGer = Util.somaBigDecimal(valorDocumentosPrivadosSemParcAtualGer, valorDocumentosSemParcAtualGer); } if (idCategoriaGer.compareTo(Categoria.COMERCIAL) == 0) { qtDocumentosComGer += qtDocumentosGer; valorDocumentosComGer = Util.somaBigDecimal(valorDocumentosComGer, valorDocumentosGer); valorDocumentosComSemParcAtualGer = Util.somaBigDecimal(valorDocumentosComSemParcAtualGer, valorDocumentosSemParcAtualGer); qtDocumentosPrivadosGer += qtDocumentosGer; valorDocumentosPrivadosGer = Util.somaBigDecimal(valorDocumentosPrivadosGer, valorDocumentosGer); valorDocumentosPrivadosSemParcAtualGer = Util.somaBigDecimal(valorDocumentosPrivadosSemParcAtualGer, valorDocumentosSemParcAtualGer); } if (idCategoriaGer.compareTo(Categoria.INDUSTRIAL) == 0) { qtDocumentosIndGer += qtDocumentosGer; valorDocumentosIndGer = Util.somaBigDecimal(valorDocumentosIndGer, valorDocumentosGer); valorDocumentosIndSemParcAtualGer = Util.somaBigDecimal(valorDocumentosIndSemParcAtualGer, valorDocumentosSemParcAtualGer); qtDocumentosPrivadosGer += qtDocumentosGer; valorDocumentosPrivadosGer = Util.somaBigDecimal(valorDocumentosPrivadosGer, valorDocumentosGer); valorDocumentosPrivadosSemParcAtualGer = Util.somaBigDecimal(valorDocumentosPrivadosSemParcAtualGer, valorDocumentosSemParcAtualGer); } if (idCategoriaGer.compareTo(Categoria.PUBLICO) == 0) { qtDocumentosPubGer += qtDocumentosGer; valorDocumentosPubGer = Util.somaBigDecimal(valorDocumentosPubGer, valorDocumentosGer); valorDocumentosPubSemParcAtualGer = Util.somaBigDecimal(valorDocumentosPubSemParcAtualGer, valorDocumentosSemParcAtualGer); } } } else { if (helper.isExibirDebitoSemParcela() == true && nomeDocumentoTipoFluxoGer.equals("DEBITO A COBRAR")) { bean = criarBeanRelatorioDocumentosAReceber(idGerenciaFluxoGer, nomeGerenciaFluxoGer, null, null, null, null, idDocumentoTipoFluxoGer, "DEBITO SEM PARCELA", idSituacaoFluxoGer, descricaoFluxoGer, qtDocumentosResGer, valorDocumentosResSemParcAtualGer, qtDocumentosComGer, valorDocumentosComSemParcAtualGer, qtDocumentosIndGer, valorDocumentosIndSemParcAtualGer, qtDocumentosPrivadosGer, valorDocumentosPrivadosSemParcAtualGer, qtDocumentosPubGer, valorDocumentosPubSemParcAtualGer, "GER�NCIA - " + nomeGerenciaFluxoGer, ConstantesSistema.NAO.toString(), faixaFluxoGer); beansPorGerencia.add(bean); } else if (helper.isExibirCreditoSemParcela() == true && nomeDocumentoTipoFluxoGer.equals("CREDITO A REALIZAR")) { bean = criarBeanRelatorioDocumentosAReceber(idGerenciaFluxoGer, nomeGerenciaFluxoGer, null, null, null, null, idDocumentoTipoFluxoGer, "CREDITO SEM PARCELA", idSituacaoFluxoGer, descricaoFluxoGer, qtDocumentosResGer, valorDocumentosResSemParcAtualGer, qtDocumentosComGer, valorDocumentosComSemParcAtualGer, qtDocumentosIndGer, valorDocumentosIndSemParcAtualGer, qtDocumentosPrivadosGer, valorDocumentosPrivadosSemParcAtualGer, qtDocumentosPubGer, valorDocumentosPubSemParcAtualGer, "GER�NCIA - " + nomeGerenciaFluxoGer, ConstantesSistema.NAO.toString(), faixaFluxoGer); beansPorGerencia.add(bean); } else { bean = criarBeanRelatorioDocumentosAReceber(idGerenciaFluxoGer, nomeGerenciaFluxoGer, null, null, null, null, idDocumentoTipoFluxoGer, nomeDocumentoTipoFluxoGer, idSituacaoFluxoGer, descricaoFluxoGer, qtDocumentosResGer, valorDocumentosResGer, qtDocumentosComGer, valorDocumentosComGer, qtDocumentosIndGer, valorDocumentosIndGer, qtDocumentosPrivadosGer, valorDocumentosPrivadosGer, qtDocumentosPubGer, valorDocumentosPubGer, "GER�NCIA - " + nomeGerenciaFluxoGer, ConstantesSistema.NAO.toString(), faixaFluxoGer); beansPorGerencia.add(bean); } // Reiniciando valores e mudando // variaveis de controle de fluxo qtDocumentosPubGer = new Integer(0); valorDocumentosPubGer = BigDecimal.ZERO; valorDocumentosPubSemParcAtualGer = BigDecimal.ZERO; qtDocumentosResGer = new Integer(0); valorDocumentosResGer = BigDecimal.ZERO; valorDocumentosResSemParcAtualGer = BigDecimal.ZERO; qtDocumentosComGer = new Integer(0); valorDocumentosComGer = BigDecimal.ZERO; valorDocumentosComSemParcAtualGer = BigDecimal.ZERO; qtDocumentosIndGer = new Integer(0); valorDocumentosIndGer = BigDecimal.ZERO; valorDocumentosIndSemParcAtualGer = BigDecimal.ZERO; qtDocumentosPrivadosGer = new Integer(0); valorDocumentosPrivadosGer = BigDecimal.ZERO; valorDocumentosPrivadosSemParcAtualGer = BigDecimal.ZERO; idGerenciaFluxoGer = idGerenciaGer; nomeGerenciaFluxoGer = nomeGerenciaGer; idSituacaoFluxoGer = idSituacaoGer; idDocumentoTipoFluxoGer = idDocumentoTipoGer; nomeDocumentoTipoFluxoGer = nomeDocumentoTipoGer; faixaFluxoGer = faixaGer; descricaoFluxoGer = descricaoSituacaoGer; // TOTAL DO TIPO DOCUMENTO if (idCategoriaGer.compareTo(Categoria.RESIDENCIAL) == 0) { qtDocumentosResGer += qtDocumentosGer; valorDocumentosResGer = Util.somaBigDecimal(valorDocumentosResGer, valorDocumentosGer); valorDocumentosResSemParcAtualGer = Util.somaBigDecimal(valorDocumentosResSemParcAtualGer, valorDocumentosSemParcAtualGer); qtDocumentosPrivadosGer += qtDocumentosGer; valorDocumentosPrivadosGer = Util.somaBigDecimal(valorDocumentosPrivadosGer, valorDocumentosGer); valorDocumentosPrivadosSemParcAtualGer = Util.somaBigDecimal(valorDocumentosPrivadosSemParcAtualGer, valorDocumentosSemParcAtualGer); } if (idCategoriaGer.compareTo(Categoria.COMERCIAL) == 0) { qtDocumentosComGer += qtDocumentosGer; valorDocumentosComGer = Util.somaBigDecimal(valorDocumentosComGer, valorDocumentosGer); valorDocumentosComSemParcAtualGer = Util.somaBigDecimal(valorDocumentosComSemParcAtualGer, valorDocumentosSemParcAtualGer); qtDocumentosPrivadosGer += qtDocumentosGer; valorDocumentosPrivadosGer = Util.somaBigDecimal(valorDocumentosPrivadosGer, valorDocumentosGer); valorDocumentosPrivadosSemParcAtualGer = Util.somaBigDecimal(valorDocumentosPrivadosSemParcAtualGer, valorDocumentosSemParcAtualGer); } if (idCategoriaGer.compareTo(Categoria.INDUSTRIAL) == 0) { qtDocumentosIndGer += qtDocumentosGer; valorDocumentosIndGer = Util.somaBigDecimal(valorDocumentosIndGer, valorDocumentosGer); valorDocumentosIndSemParcAtualGer = Util.somaBigDecimal(valorDocumentosIndSemParcAtualGer, valorDocumentosSemParcAtualGer); qtDocumentosPrivadosGer += qtDocumentosGer; valorDocumentosPrivadosGer = Util.somaBigDecimal(valorDocumentosPrivadosGer, valorDocumentosGer); valorDocumentosPrivadosSemParcAtualGer = Util.somaBigDecimal(valorDocumentosPrivadosSemParcAtualGer, valorDocumentosSemParcAtualGer); } if (idCategoriaGer.compareTo(Categoria.PUBLICO) == 0) { qtDocumentosPubGer += qtDocumentosGer; valorDocumentosPubGer = Util.somaBigDecimal(valorDocumentosPubGer, valorDocumentosGer); valorDocumentosPubSemParcAtualGer = Util.somaBigDecimal(valorDocumentosPubSemParcAtualGer, valorDocumentosSemParcAtualGer); } } } else { if (helper.isExibirDebitoSemParcela() == true && nomeDocumentoTipoFluxoGer.equals("DEBITO A COBRAR")) { bean = criarBeanRelatorioDocumentosAReceber(idGerenciaFluxoGer, nomeGerenciaFluxoGer, null, null, null, null, idDocumentoTipoFluxoGer, "DEBITO SEM PARCELA", idSituacaoFluxoGer, descricaoFluxoGer, qtDocumentosResGer, valorDocumentosResSemParcAtualGer, qtDocumentosComGer, valorDocumentosComSemParcAtualGer, qtDocumentosIndGer, valorDocumentosIndSemParcAtualGer, qtDocumentosPrivadosGer, valorDocumentosPrivadosSemParcAtualGer, qtDocumentosPubGer, valorDocumentosPubSemParcAtualGer, "GER�NCIA - " + nomeGerenciaFluxoGer, ConstantesSistema.NAO.toString(), faixaFluxoGer); beansPorGerencia.add(bean); } else if (helper.isExibirCreditoSemParcela() == true && nomeDocumentoTipoFluxoGer.equals("CREDITO A REALIZAR")) { bean = criarBeanRelatorioDocumentosAReceber(idGerenciaFluxoGer, nomeGerenciaFluxoGer, null, null, null, null, idDocumentoTipoFluxoGer, "CREDITO SEM PARCELA", idSituacaoFluxoGer, descricaoFluxoGer, qtDocumentosResGer, valorDocumentosResSemParcAtualGer, qtDocumentosComGer, valorDocumentosComSemParcAtualGer, qtDocumentosIndGer, valorDocumentosIndSemParcAtualGer, qtDocumentosPrivadosGer, valorDocumentosPrivadosSemParcAtualGer, qtDocumentosPubGer, valorDocumentosPubSemParcAtualGer, "GER�NCIA - " + nomeGerenciaFluxoGer, ConstantesSistema.NAO.toString(), faixaFluxoGer); beansPorGerencia.add(bean); } else { bean = criarBeanRelatorioDocumentosAReceber(idGerenciaFluxoGer, nomeGerenciaFluxoGer, null, null, null, null, idDocumentoTipoFluxoGer, nomeDocumentoTipoFluxoGer, idSituacaoFluxoGer, descricaoFluxoGer, qtDocumentosResGer, valorDocumentosResGer, qtDocumentosComGer, valorDocumentosComGer, qtDocumentosIndGer, valorDocumentosIndGer, qtDocumentosPrivadosGer, valorDocumentosPrivadosGer, qtDocumentosPubGer, valorDocumentosPubGer, "GER�NCIA - " + nomeGerenciaFluxoGer, ConstantesSistema.NAO.toString(), faixaFluxoGer); beansPorGerencia.add(bean); } // Reiniciando valores e mudando // variaveis de controle de fluxo qtDocumentosPubGer = new Integer(0); valorDocumentosPubGer = BigDecimal.ZERO; valorDocumentosPubSemParcAtualGer = BigDecimal.ZERO; qtDocumentosResGer = new Integer(0); valorDocumentosResGer = BigDecimal.ZERO; valorDocumentosResSemParcAtualGer = BigDecimal.ZERO; qtDocumentosComGer = new Integer(0); valorDocumentosComGer = BigDecimal.ZERO; valorDocumentosComSemParcAtualGer = BigDecimal.ZERO; qtDocumentosIndGer = new Integer(0); valorDocumentosIndGer = BigDecimal.ZERO; valorDocumentosIndSemParcAtualGer = BigDecimal.ZERO; qtDocumentosPrivadosGer = new Integer(0); valorDocumentosPrivadosGer = BigDecimal.ZERO; valorDocumentosPrivadosSemParcAtualGer = BigDecimal.ZERO; idGerenciaFluxoGer = idGerenciaGer; nomeGerenciaFluxoGer = nomeGerenciaGer; idSituacaoFluxoGer = idSituacaoGer; idDocumentoTipoFluxoGer = idDocumentoTipoGer; nomeDocumentoTipoFluxoGer = nomeDocumentoTipoGer; faixaFluxoGer = faixaGer; descricaoFluxoGer = descricaoSituacaoGer; // TOTAL DO TIPO DOCUMENTO if (idCategoriaGer.compareTo(Categoria.RESIDENCIAL) == 0) { qtDocumentosResGer += qtDocumentosGer; valorDocumentosResGer = Util.somaBigDecimal(valorDocumentosResGer, valorDocumentosGer); valorDocumentosResSemParcAtualGer = Util.somaBigDecimal(valorDocumentosResSemParcAtualGer, valorDocumentosSemParcAtualGer); qtDocumentosPrivadosGer += qtDocumentosGer; valorDocumentosPrivadosGer = Util.somaBigDecimal(valorDocumentosPrivadosGer, valorDocumentosGer); valorDocumentosPrivadosSemParcAtualGer = Util.somaBigDecimal(valorDocumentosPrivadosSemParcAtualGer, valorDocumentosSemParcAtualGer); } if (idCategoriaGer.compareTo(Categoria.COMERCIAL) == 0) { qtDocumentosComGer += qtDocumentosGer; valorDocumentosComGer = Util.somaBigDecimal(valorDocumentosComGer, valorDocumentosGer); valorDocumentosComSemParcAtualGer = Util.somaBigDecimal(valorDocumentosComSemParcAtualGer, valorDocumentosSemParcAtualGer); qtDocumentosPrivadosGer += qtDocumentosGer; valorDocumentosPrivadosGer = Util.somaBigDecimal(valorDocumentosPrivadosGer, valorDocumentosGer); valorDocumentosPrivadosSemParcAtualGer = Util.somaBigDecimal(valorDocumentosPrivadosSemParcAtualGer, valorDocumentosSemParcAtualGer); } if (idCategoriaGer.compareTo(Categoria.INDUSTRIAL) == 0) { qtDocumentosIndGer += qtDocumentosGer; valorDocumentosIndGer = Util.somaBigDecimal(valorDocumentosIndGer, valorDocumentosGer); valorDocumentosIndSemParcAtualGer = Util.somaBigDecimal(valorDocumentosIndSemParcAtualGer, valorDocumentosSemParcAtualGer); qtDocumentosPrivadosGer += qtDocumentosGer; valorDocumentosPrivadosGer = Util.somaBigDecimal(valorDocumentosPrivadosGer, valorDocumentosGer); valorDocumentosPrivadosSemParcAtualGer = Util.somaBigDecimal(valorDocumentosPrivadosSemParcAtualGer, valorDocumentosSemParcAtualGer); } if (idCategoriaGer.compareTo(Categoria.PUBLICO) == 0) { qtDocumentosPubGer += qtDocumentosGer; valorDocumentosPubGer = Util.somaBigDecimal(valorDocumentosPubGer, valorDocumentosGer); valorDocumentosPubSemParcAtualGer = Util.somaBigDecimal(valorDocumentosPubSemParcAtualGer, valorDocumentosSemParcAtualGer); } } } else { if (helper.isExibirDebitoSemParcela() == true && nomeDocumentoTipoFluxoGer.equals("DEBITO A COBRAR")) { bean = criarBeanRelatorioDocumentosAReceber(idGerenciaFluxoGer, nomeGerenciaFluxoGer, null, null, null, null, idDocumentoTipoFluxoGer, "DEBITO SEM PARCELA", idSituacaoFluxoGer, descricaoFluxoGer, qtDocumentosResGer, valorDocumentosResSemParcAtualGer, qtDocumentosComGer, valorDocumentosComSemParcAtualGer, qtDocumentosIndGer, valorDocumentosIndSemParcAtualGer, qtDocumentosPrivadosGer, valorDocumentosPrivadosSemParcAtualGer, qtDocumentosPubGer, valorDocumentosPubSemParcAtualGer, "GER�NCIA - " + nomeGerenciaFluxoGer, ConstantesSistema.NAO.toString(), faixaFluxoGer); beansPorGerencia.add(bean); } else if (helper.isExibirCreditoSemParcela() == true && nomeDocumentoTipoFluxoGer.equals("CREDITO A REALIZAR")) { bean = criarBeanRelatorioDocumentosAReceber(idGerenciaFluxoGer, nomeGerenciaFluxoGer, null, null, null, null, idDocumentoTipoFluxoGer, "CREDITO SEM PARCELA", idSituacaoFluxoGer, descricaoFluxoGer, qtDocumentosResGer, valorDocumentosResSemParcAtualGer, qtDocumentosComGer, valorDocumentosComSemParcAtualGer, qtDocumentosIndGer, valorDocumentosIndSemParcAtualGer, qtDocumentosPrivadosGer, valorDocumentosPrivadosSemParcAtualGer, qtDocumentosPubGer, valorDocumentosPubSemParcAtualGer, "GER�NCIA - " + nomeGerenciaFluxoGer, ConstantesSistema.NAO.toString(), faixaFluxoGer); beansPorGerencia.add(bean); } else { bean = criarBeanRelatorioDocumentosAReceber(idGerenciaFluxoGer, nomeGerenciaFluxoGer, null, null, null, null, idDocumentoTipoFluxoGer, nomeDocumentoTipoFluxoGer, idSituacaoFluxoGer, descricaoFluxoGer, qtDocumentosResGer, valorDocumentosResGer, qtDocumentosComGer, valorDocumentosComGer, qtDocumentosIndGer, valorDocumentosIndGer, qtDocumentosPrivadosGer, valorDocumentosPrivadosGer, qtDocumentosPubGer, valorDocumentosPubGer, "GER�NCIA - " + nomeGerenciaFluxoGer, ConstantesSistema.NAO.toString(), faixaFluxoGer); beansPorGerencia.add(bean); } // Reiniciando valores e mudando // variaveis de controle de fluxo qtDocumentosPubGer = new Integer(0); valorDocumentosPubGer = BigDecimal.ZERO; valorDocumentosPubSemParcAtualGer = BigDecimal.ZERO; qtDocumentosResGer = new Integer(0); valorDocumentosResGer = BigDecimal.ZERO; valorDocumentosResSemParcAtualGer = BigDecimal.ZERO; qtDocumentosComGer = new Integer(0); valorDocumentosComGer = BigDecimal.ZERO; valorDocumentosComSemParcAtualGer = BigDecimal.ZERO; qtDocumentosIndGer = new Integer(0); valorDocumentosIndGer = BigDecimal.ZERO; valorDocumentosIndSemParcAtualGer = BigDecimal.ZERO; qtDocumentosPrivadosGer = new Integer(0); valorDocumentosPrivadosGer = BigDecimal.ZERO; valorDocumentosPrivadosSemParcAtualGer = BigDecimal.ZERO; idGerenciaFluxoGer = idGerenciaGer; nomeGerenciaFluxoGer = nomeGerenciaGer; idSituacaoFluxoGer = idSituacaoGer; idDocumentoTipoFluxoGer = idDocumentoTipoGer; nomeDocumentoTipoFluxoGer = nomeDocumentoTipoGer; faixaFluxoGer = faixaGer; descricaoFluxoGer = descricaoSituacaoGer; // TOTAL DO TIPO DOCUMENTO if (idCategoriaGer.compareTo(Categoria.RESIDENCIAL) == 0) { qtDocumentosResGer += qtDocumentosGer; valorDocumentosResGer = Util.somaBigDecimal(valorDocumentosResGer, valorDocumentosGer); valorDocumentosResSemParcAtualGer = Util.somaBigDecimal(valorDocumentosResSemParcAtualGer, valorDocumentosSemParcAtualGer); qtDocumentosPrivadosGer += qtDocumentosGer; valorDocumentosPrivadosGer = Util.somaBigDecimal(valorDocumentosPrivadosGer, valorDocumentosGer); valorDocumentosPrivadosSemParcAtualGer = Util.somaBigDecimal(valorDocumentosPrivadosSemParcAtualGer, valorDocumentosSemParcAtualGer); } if (idCategoriaGer.compareTo(Categoria.COMERCIAL) == 0) { qtDocumentosComGer += qtDocumentosGer; valorDocumentosComGer = Util.somaBigDecimal(valorDocumentosComGer, valorDocumentosGer); valorDocumentosComSemParcAtualGer = Util.somaBigDecimal(valorDocumentosComSemParcAtualGer, valorDocumentosSemParcAtualGer); qtDocumentosPrivadosGer += qtDocumentosGer; valorDocumentosPrivadosGer = Util.somaBigDecimal(valorDocumentosPrivadosGer, valorDocumentosGer); valorDocumentosPrivadosSemParcAtualGer = Util.somaBigDecimal(valorDocumentosPrivadosSemParcAtualGer, valorDocumentosSemParcAtualGer); } if (idCategoriaGer.compareTo(Categoria.INDUSTRIAL) == 0) { qtDocumentosIndGer += qtDocumentosGer; valorDocumentosIndGer = Util.somaBigDecimal(valorDocumentosIndGer, valorDocumentosGer); valorDocumentosIndSemParcAtualGer = Util.somaBigDecimal(valorDocumentosIndSemParcAtualGer, valorDocumentosSemParcAtualGer); qtDocumentosPrivadosGer += qtDocumentosGer; valorDocumentosPrivadosGer = Util.somaBigDecimal(valorDocumentosPrivadosGer, valorDocumentosGer); valorDocumentosPrivadosSemParcAtualGer = Util.somaBigDecimal(valorDocumentosPrivadosSemParcAtualGer, valorDocumentosSemParcAtualGer); } if (idCategoriaGer.compareTo(Categoria.PUBLICO) == 0) { qtDocumentosPubGer += qtDocumentosGer; valorDocumentosPubGer = Util.somaBigDecimal(valorDocumentosPubGer, valorDocumentosGer); valorDocumentosPubSemParcAtualGer = Util.somaBigDecimal(valorDocumentosPubSemParcAtualGer, valorDocumentosSemParcAtualGer); } } } if (colecaoDadosGerencia.size() < quantidadeMaxima) { if (!iterator.hasNext()) { if (helper.isExibirDebitoSemParcela() == true && nomeDocumentoTipoFluxoGer.equals("DEBITO A COBRAR")) { bean = criarBeanRelatorioDocumentosAReceber(idGerenciaFluxoGer, nomeGerenciaFluxoGer, null, null, null, null, idDocumentoTipoFluxoGer, "DEBITO SEM PARCELA", idSituacaoFluxoGer, descricaoFluxoGer, qtDocumentosResGer, valorDocumentosResSemParcAtualGer, qtDocumentosComGer, valorDocumentosComSemParcAtualGer, qtDocumentosIndGer, valorDocumentosIndSemParcAtualGer, qtDocumentosPrivadosGer, valorDocumentosPrivadosSemParcAtualGer, qtDocumentosPubGer, valorDocumentosPubSemParcAtualGer, "GER�NCIA - " + nomeGerenciaFluxoGer, ConstantesSistema.NAO.toString(), faixaFluxoGer); beansPorGerencia.add(bean); } else if (helper.isExibirCreditoSemParcela() == true && nomeDocumentoTipoFluxoGer.equals("CREDITO A REALIZAR")) { bean = criarBeanRelatorioDocumentosAReceber(idGerenciaFluxoGer, nomeGerenciaFluxoGer, null, null, null, null, idDocumentoTipoFluxoGer, "CREDITO SEM PARCELA", idSituacaoFluxoGer, descricaoFluxoGer, qtDocumentosResGer, valorDocumentosResSemParcAtualGer, qtDocumentosComGer, valorDocumentosComSemParcAtualGer, qtDocumentosIndGer, valorDocumentosIndSemParcAtualGer, qtDocumentosPrivadosGer, valorDocumentosPrivadosSemParcAtualGer, qtDocumentosPubGer, valorDocumentosPubSemParcAtualGer, "GER�NCIA - " + nomeGerenciaFluxoGer, ConstantesSistema.NAO.toString(), faixaFluxoGer); beansPorGerencia.add(bean); } else { bean = criarBeanRelatorioDocumentosAReceber(idGerenciaFluxoGer, nomeGerenciaFluxoGer, null, null, null, null, idDocumentoTipoFluxoGer, nomeDocumentoTipoFluxoGer, idSituacaoFluxoGer, descricaoFluxoGer, qtDocumentosResGer, valorDocumentosResGer, qtDocumentosComGer, valorDocumentosComGer, qtDocumentosIndGer, valorDocumentosIndGer, qtDocumentosPrivadosGer, valorDocumentosPrivadosGer, qtDocumentosPubGer, valorDocumentosPubGer, "GER�NCIA - " + nomeGerenciaFluxoGer, ConstantesSistema.NAO.toString(), faixaFluxoGer); beansPorGerencia.add(bean); } } } } } bean = null; if (colecaoDadosEstado != null) { // GERAR DADOS DO ESTADO for (Iterator iterator = colecaoDadosEstado.iterator(); iterator.hasNext();) { Object[] dados = null; dados = (Object[]) iterator.next(); // Dados Pesquisa idCategoriaEst = (Integer) dados[0]; idDocumentoTipoEst = (Integer) dados[2]; nomeDocumentoTipoEst = (String) dados[3]; idSituacaoEst = (Integer) dados[4]; descricaoSituacaoEst = (String) dados[5]; faixaEst = (String) dados[6]; if (!faixaEst.equals("0")) { // Verifica se a faixa n�o existia na base, // caso seja verdadeiro atribui descri��o da // faixa correspondente informada no filtro for (FaixaHelper faixaHelper : helper.getColecaoFaixas()) { Integer qtdDias = new Integer(faixaEst); if (qtdDias.compareTo(faixaHelper.getValorInicial()) >= 0 && qtdDias.compareTo(faixaHelper.getValorFinal()) <= 0) { faixaEst = faixaHelper.getDescricao(); break; } } } else { faixaEst = "A VENCER"; } qtDocumentosEst = (Integer) dados[7]; valorDocumentosEst = (BigDecimal) dados[8]; valorDocumentosSemParcAtualEst = (BigDecimal) dados[9]; if (primeiraVezEst) { idSituacaoFluxoEst = idSituacaoEst; idDocumentoTipoFluxoEst = idDocumentoTipoEst; nomeDocumentoTipoFluxoEst = nomeDocumentoTipoEst; faixaFluxoEst = faixaEst; descricaoFluxoEst = descricaoSituacaoEst; primeiraVezEst = false; } // SE TODOS OS DADOS FOREM IGUAIS // ACUMULA DOCUMENTO TIPO if (idSituacaoFluxoEst.intValue() == idSituacaoEst.intValue() && faixaFluxoEst.equals(faixaEst) && idDocumentoTipoFluxoEst.intValue() == idDocumentoTipoEst.intValue()) { // TOTAL DO TIPO DOCUMENTO if (idCategoriaEst.compareTo(Categoria.RESIDENCIAL) == 0) { qtDocumentosResEst += qtDocumentosEst; valorDocumentosResEst = Util.somaBigDecimal(valorDocumentosResEst, valorDocumentosEst); valorDocumentosResSemParcAtualEst = Util.somaBigDecimal(valorDocumentosResSemParcAtualEst, valorDocumentosSemParcAtualEst); qtDocumentosPrivadosEst += qtDocumentosEst; valorDocumentosPrivadosEst = Util.somaBigDecimal(valorDocumentosPrivadosEst, valorDocumentosEst); valorDocumentosPrivadosSemParcAtualEst = Util.somaBigDecimal(valorDocumentosPrivadosSemParcAtualEst, valorDocumentosSemParcAtualEst); } if (idCategoriaEst.compareTo(Categoria.COMERCIAL) == 0) { qtDocumentosComEst += qtDocumentosEst; valorDocumentosComEst = Util.somaBigDecimal(valorDocumentosComEst, valorDocumentosEst); valorDocumentosComSemParcAtualEst = Util.somaBigDecimal(valorDocumentosComSemParcAtualEst, valorDocumentosSemParcAtualEst); qtDocumentosPrivadosEst += qtDocumentosEst; valorDocumentosPrivadosEst = Util.somaBigDecimal(valorDocumentosPrivadosEst, valorDocumentosEst); valorDocumentosPrivadosSemParcAtualEst = Util.somaBigDecimal(valorDocumentosPrivadosSemParcAtualEst, valorDocumentosSemParcAtualEst); } if (idCategoriaEst.compareTo(Categoria.INDUSTRIAL) == 0) { qtDocumentosIndEst += qtDocumentosEst; valorDocumentosIndEst = Util.somaBigDecimal(valorDocumentosIndEst, valorDocumentosEst); valorDocumentosIndSemParcAtualEst = Util.somaBigDecimal(valorDocumentosIndSemParcAtualEst, valorDocumentosSemParcAtualEst); qtDocumentosPrivadosEst += qtDocumentosEst; valorDocumentosPrivadosEst = Util.somaBigDecimal(valorDocumentosPrivadosEst, valorDocumentosEst); valorDocumentosPrivadosSemParcAtualEst = Util.somaBigDecimal(valorDocumentosPrivadosSemParcAtualEst, valorDocumentosSemParcAtualEst); } if (idCategoriaEst.compareTo(Categoria.PUBLICO) == 0) { qtDocumentosPubEst += qtDocumentosEst; valorDocumentosPubEst = Util.somaBigDecimal(valorDocumentosPubEst, valorDocumentosEst); valorDocumentosPubSemParcAtualEst = Util.somaBigDecimal(valorDocumentosPubSemParcAtualEst, valorDocumentosSemParcAtualEst); } } else { if (idSituacaoFluxoEst.intValue() == idSituacaoEst.intValue()) { if (faixaFluxoEst.equals(faixaEst)) { if (idDocumentoTipoFluxoEst.intValue() != idDocumentoTipoEst.intValue()) { if (helper.isExibirDebitoSemParcela() == true && nomeDocumentoTipoFluxoEst.equals("DEBITO A COBRAR")) { bean = criarBeanRelatorioDocumentosAReceber(null, null, null, null, null, null, idDocumentoTipoFluxoEst, "DEBITO SEM PARCELA", idSituacaoFluxoEst, descricaoFluxoEst, qtDocumentosResEst, valorDocumentosResSemParcAtualEst, qtDocumentosComEst, valorDocumentosComSemParcAtualEst, qtDocumentosIndEst, valorDocumentosIndSemParcAtualEst, qtDocumentosPrivadosEst, valorDocumentosPrivadosSemParcAtualEst, qtDocumentosPubEst, valorDocumentosPubSemParcAtualEst, "ESTADO - " + helper.getDescricaoEstado(), ConstantesSistema.NAO.toString(), faixaFluxoEst); beansPorEstado.add(bean); } else if (helper.isExibirCreditoSemParcela() == true && nomeDocumentoTipoFluxoEst.equals("CREDITO A REALIZAR")) { bean = criarBeanRelatorioDocumentosAReceber(null, null, null, null, null, null, idDocumentoTipoFluxoEst, "CREDITO SEM PARCELA", idSituacaoFluxoEst, descricaoFluxoEst, qtDocumentosResEst, valorDocumentosResSemParcAtualEst, qtDocumentosComEst, valorDocumentosComSemParcAtualEst, qtDocumentosIndEst, valorDocumentosIndSemParcAtualEst, qtDocumentosPrivadosEst, valorDocumentosPrivadosSemParcAtualEst, qtDocumentosPubEst, valorDocumentosPubSemParcAtualEst, "ESTADO - " + helper.getDescricaoEstado(), ConstantesSistema.NAO.toString(), faixaFluxoEst); beansPorEstado.add(bean); } else { bean = criarBeanRelatorioDocumentosAReceber(null, null, null, null, null, null, idDocumentoTipoFluxoEst, nomeDocumentoTipoFluxoEst, idSituacaoFluxoEst, descricaoFluxoEst, qtDocumentosResEst, valorDocumentosResEst, qtDocumentosComEst, valorDocumentosComEst, qtDocumentosIndEst, valorDocumentosIndEst, qtDocumentosPrivadosEst, valorDocumentosPrivadosEst, qtDocumentosPubEst, valorDocumentosPubEst, "ESTADO - " + helper.getDescricaoEstado(), ConstantesSistema.NAO.toString(), faixaFluxoEst); beansPorEstado.add(bean); } // Reiniciando valores e mudando // variaveis de controle de fluxo qtDocumentosPubEst = new Integer(0); valorDocumentosPubEst = BigDecimal.ZERO; valorDocumentosPubSemParcAtualEst = BigDecimal.ZERO; qtDocumentosResEst = new Integer(0); valorDocumentosResEst = BigDecimal.ZERO; valorDocumentosResSemParcAtualEst = BigDecimal.ZERO; qtDocumentosComEst = new Integer(0); valorDocumentosComEst = BigDecimal.ZERO; valorDocumentosComSemParcAtualEst = BigDecimal.ZERO; qtDocumentosIndEst = new Integer(0); valorDocumentosIndEst = BigDecimal.ZERO; valorDocumentosIndSemParcAtualEst = BigDecimal.ZERO; qtDocumentosPrivadosEst = new Integer(0); valorDocumentosPrivadosEst = BigDecimal.ZERO; valorDocumentosPrivadosSemParcAtualEst = BigDecimal.ZERO; idSituacaoFluxoEst = idSituacaoEst; idDocumentoTipoFluxoEst = idDocumentoTipoEst; nomeDocumentoTipoFluxoEst = nomeDocumentoTipoEst; faixaFluxoEst = faixaEst; descricaoFluxoEst = descricaoSituacaoEst; // TOTAL DO TIPO DOCUMENTO if (idCategoriaEst.compareTo(Categoria.RESIDENCIAL) == 0) { qtDocumentosResEst += qtDocumentosEst; valorDocumentosResEst = Util.somaBigDecimal(valorDocumentosResEst, valorDocumentosEst); valorDocumentosResSemParcAtualEst = Util.somaBigDecimal(valorDocumentosResSemParcAtualEst, valorDocumentosSemParcAtualEst); qtDocumentosPrivadosEst += qtDocumentosEst; valorDocumentosPrivadosEst = Util.somaBigDecimal(valorDocumentosPrivadosEst, valorDocumentosEst); valorDocumentosPrivadosSemParcAtualEst = Util.somaBigDecimal(valorDocumentosPrivadosSemParcAtualEst, valorDocumentosSemParcAtualEst); } if (idCategoriaEst.compareTo(Categoria.COMERCIAL) == 0) { qtDocumentosComEst += qtDocumentosEst; valorDocumentosComEst = Util.somaBigDecimal(valorDocumentosComEst, valorDocumentosEst); valorDocumentosComSemParcAtualEst = Util.somaBigDecimal(valorDocumentosComSemParcAtualEst, valorDocumentosSemParcAtualEst); qtDocumentosPrivadosEst += qtDocumentosEst; valorDocumentosPrivadosEst = Util.somaBigDecimal(valorDocumentosPrivadosEst, valorDocumentosEst); valorDocumentosPrivadosSemParcAtualEst = Util.somaBigDecimal(valorDocumentosPrivadosSemParcAtualEst, valorDocumentosSemParcAtualEst); } if (idCategoriaEst.compareTo(Categoria.INDUSTRIAL) == 0) { qtDocumentosIndEst += qtDocumentosEst; valorDocumentosIndEst = Util.somaBigDecimal(valorDocumentosIndEst, valorDocumentosEst); valorDocumentosIndSemParcAtualEst = Util.somaBigDecimal(valorDocumentosIndSemParcAtualEst, valorDocumentosSemParcAtualEst); qtDocumentosPrivadosEst += qtDocumentosEst; valorDocumentosPrivadosEst = Util.somaBigDecimal(valorDocumentosPrivadosEst, valorDocumentosEst); valorDocumentosPrivadosSemParcAtualEst = Util.somaBigDecimal(valorDocumentosPrivadosSemParcAtualEst, valorDocumentosSemParcAtualEst); } if (idCategoriaEst.compareTo(Categoria.PUBLICO) == 0) { qtDocumentosPubEst += qtDocumentosEst; valorDocumentosPubEst = Util.somaBigDecimal(valorDocumentosPubEst, valorDocumentosEst); valorDocumentosPubSemParcAtualEst = Util.somaBigDecimal(valorDocumentosPubSemParcAtualEst, valorDocumentosSemParcAtualEst); } } } else { if (helper.isExibirDebitoSemParcela() == true && nomeDocumentoTipoFluxoEst.equals("DEBITO A COBRAR")) { bean = criarBeanRelatorioDocumentosAReceber(null, null, null, null, null, null, idDocumentoTipoFluxoEst, "DEBITO SEM PARCELA", idSituacaoFluxoEst, descricaoFluxoEst, qtDocumentosResEst, valorDocumentosResSemParcAtualEst, qtDocumentosComEst, valorDocumentosComSemParcAtualEst, qtDocumentosIndEst, valorDocumentosIndSemParcAtualEst, qtDocumentosPrivadosEst, valorDocumentosPrivadosSemParcAtualEst, qtDocumentosPubEst, valorDocumentosPubSemParcAtualEst, "ESTADO - " + helper.getDescricaoEstado(), ConstantesSistema.NAO.toString(), faixaFluxoEst); beansPorEstado.add(bean); } else if (helper.isExibirCreditoSemParcela() == true && nomeDocumentoTipoFluxoEst.equals("CREDITO A REALIZAR")) { bean = criarBeanRelatorioDocumentosAReceber(null, null, null, null, null, null, idDocumentoTipoFluxoEst, "CREDITO SEM PARCELA", idSituacaoFluxoEst, descricaoFluxoEst, qtDocumentosResEst, valorDocumentosResSemParcAtualEst, qtDocumentosComEst, valorDocumentosComSemParcAtualEst, qtDocumentosIndEst, valorDocumentosIndSemParcAtualEst, qtDocumentosPrivadosEst, valorDocumentosPrivadosSemParcAtualEst, qtDocumentosPubEst, valorDocumentosPubSemParcAtualEst, "ESTADO - " + helper.getDescricaoEstado(), ConstantesSistema.NAO.toString(), faixaFluxoEst); beansPorEstado.add(bean); } else { bean = criarBeanRelatorioDocumentosAReceber(null, null, null, null, null, null, idDocumentoTipoFluxoEst, nomeDocumentoTipoFluxoEst, idSituacaoFluxoEst, descricaoFluxoEst, qtDocumentosResEst, valorDocumentosResEst, qtDocumentosComEst, valorDocumentosComEst, qtDocumentosIndEst, valorDocumentosIndEst, qtDocumentosPrivadosEst, valorDocumentosPrivadosEst, qtDocumentosPubEst, valorDocumentosPubEst, "ESTADO - " + helper.getDescricaoEstado(), "3", faixaFluxoEst); beansPorEstado.add(bean); } // Reiniciando valores e mudando // variaveis de controle de fluxo qtDocumentosPubEst = new Integer(0); valorDocumentosPubEst = BigDecimal.ZERO; valorDocumentosPubSemParcAtualEst = BigDecimal.ZERO; qtDocumentosResEst = new Integer(0); valorDocumentosResEst = BigDecimal.ZERO; valorDocumentosResSemParcAtualEst = BigDecimal.ZERO; qtDocumentosComEst = new Integer(0); valorDocumentosComEst = BigDecimal.ZERO; valorDocumentosComSemParcAtualEst = BigDecimal.ZERO; qtDocumentosIndEst = new Integer(0); valorDocumentosIndEst = BigDecimal.ZERO; valorDocumentosIndSemParcAtualEst = BigDecimal.ZERO; qtDocumentosPrivadosEst = new Integer(0); valorDocumentosPrivadosEst = BigDecimal.ZERO; valorDocumentosPrivadosSemParcAtualEst = BigDecimal.ZERO; idSituacaoFluxoEst = idSituacaoEst; idDocumentoTipoFluxoEst = idDocumentoTipoEst; nomeDocumentoTipoFluxoEst = nomeDocumentoTipoEst; faixaFluxoEst = faixaEst; descricaoFluxoEst = descricaoSituacaoEst; // TOTAL DO TIPO DOCUMENTO if (idCategoriaEst.compareTo(Categoria.RESIDENCIAL) == 0) { qtDocumentosResEst += qtDocumentosEst; valorDocumentosResEst = Util.somaBigDecimal(valorDocumentosResEst, valorDocumentosEst); valorDocumentosResSemParcAtualEst = Util.somaBigDecimal(valorDocumentosResSemParcAtualEst, valorDocumentosSemParcAtualEst); qtDocumentosPrivadosEst += qtDocumentosEst; valorDocumentosPrivadosEst = Util.somaBigDecimal(valorDocumentosPrivadosEst, valorDocumentosEst); valorDocumentosPrivadosSemParcAtualEst = Util.somaBigDecimal(valorDocumentosPrivadosSemParcAtualEst, valorDocumentosSemParcAtualEst); } if (idCategoriaEst.compareTo(Categoria.COMERCIAL) == 0) { qtDocumentosComEst += qtDocumentosEst; valorDocumentosComEst = Util.somaBigDecimal(valorDocumentosComEst, valorDocumentosEst); valorDocumentosComSemParcAtualEst = Util.somaBigDecimal(valorDocumentosComSemParcAtualEst, valorDocumentosSemParcAtualEst); qtDocumentosPrivadosEst += qtDocumentosEst; valorDocumentosPrivadosEst = Util.somaBigDecimal(valorDocumentosPrivadosEst, valorDocumentosEst); valorDocumentosPrivadosSemParcAtualEst = Util.somaBigDecimal(valorDocumentosPrivadosSemParcAtualEst, valorDocumentosSemParcAtualEst); } if (idCategoriaEst.compareTo(Categoria.INDUSTRIAL) == 0) { qtDocumentosIndEst += qtDocumentosEst; valorDocumentosIndEst = Util.somaBigDecimal(valorDocumentosIndEst, valorDocumentosEst); valorDocumentosIndSemParcAtualEst = Util.somaBigDecimal(valorDocumentosIndSemParcAtualEst, valorDocumentosSemParcAtualEst); qtDocumentosPrivadosEst += qtDocumentosEst; valorDocumentosPrivadosEst = Util.somaBigDecimal(valorDocumentosPrivadosEst, valorDocumentosEst); valorDocumentosPrivadosSemParcAtualEst = Util.somaBigDecimal(valorDocumentosPrivadosSemParcAtualEst, valorDocumentosSemParcAtualEst); } if (idCategoriaEst.compareTo(Categoria.PUBLICO) == 0) { qtDocumentosPubEst += qtDocumentosEst; valorDocumentosPubEst = Util.somaBigDecimal(valorDocumentosPubEst, valorDocumentosEst); valorDocumentosPubSemParcAtualEst = Util.somaBigDecimal(valorDocumentosPubSemParcAtualEst, valorDocumentosSemParcAtualEst); } } } else { if (helper.isExibirDebitoSemParcela() == true && nomeDocumentoTipoFluxoEst.equals("DEBITO A COBRAR")) { bean = criarBeanRelatorioDocumentosAReceber(null, null, null, null, null, null, idDocumentoTipoFluxoEst, "DEBITO SEM PARCELA", idSituacaoFluxoEst, descricaoFluxoEst, qtDocumentosResEst, valorDocumentosResSemParcAtualEst, qtDocumentosComEst, valorDocumentosComSemParcAtualEst, qtDocumentosIndEst, valorDocumentosIndSemParcAtualEst, qtDocumentosPrivadosEst, valorDocumentosPrivadosSemParcAtualEst, qtDocumentosPubEst, valorDocumentosPubSemParcAtualEst, "ESTADO - " + helper.getDescricaoEstado(), ConstantesSistema.NAO.toString(), faixaFluxoEst); beansPorEstado.add(bean); } else if (helper.isExibirCreditoSemParcela() == true && nomeDocumentoTipoFluxoEst.equals("CREDITO A REALIZAR")) { bean = criarBeanRelatorioDocumentosAReceber(null, null, null, null, null, null, idDocumentoTipoFluxoEst, "CREDITO SEM PARCELA", idSituacaoFluxoEst, descricaoFluxoEst, qtDocumentosResEst, valorDocumentosResSemParcAtualEst, qtDocumentosComEst, valorDocumentosComSemParcAtualEst, qtDocumentosIndEst, valorDocumentosIndSemParcAtualEst, qtDocumentosPrivadosEst, valorDocumentosPrivadosSemParcAtualEst, qtDocumentosPubEst, valorDocumentosPubSemParcAtualEst, "ESTADO - " + helper.getDescricaoEstado(), ConstantesSistema.NAO.toString(), faixaFluxoEst); beansPorEstado.add(bean); } else { bean = criarBeanRelatorioDocumentosAReceber(null, null, null, null, null, null, idDocumentoTipoFluxoEst, nomeDocumentoTipoFluxoEst, idSituacaoFluxoEst, descricaoFluxoEst, qtDocumentosResEst, valorDocumentosResEst, qtDocumentosComEst, valorDocumentosComEst, qtDocumentosIndEst, valorDocumentosIndEst, qtDocumentosPrivadosEst, valorDocumentosPrivadosEst, qtDocumentosPubEst, valorDocumentosPubEst, "ESTADO - " + helper.getDescricaoEstado(), "3", faixaFluxoEst); beansPorEstado.add(bean); } // Reiniciando valores e mudando // variaveis de controle de fluxo qtDocumentosPubEst = new Integer(0); valorDocumentosPubEst = BigDecimal.ZERO; valorDocumentosPubSemParcAtualEst = BigDecimal.ZERO; qtDocumentosResEst = new Integer(0); valorDocumentosResEst = BigDecimal.ZERO; valorDocumentosResSemParcAtualEst = BigDecimal.ZERO; qtDocumentosComEst = new Integer(0); valorDocumentosComEst = BigDecimal.ZERO; valorDocumentosComSemParcAtualEst = BigDecimal.ZERO; qtDocumentosIndEst = new Integer(0); valorDocumentosIndEst = BigDecimal.ZERO; valorDocumentosIndSemParcAtualEst = BigDecimal.ZERO; qtDocumentosPrivadosEst = new Integer(0); valorDocumentosPrivadosEst = BigDecimal.ZERO; valorDocumentosPrivadosSemParcAtualEst = BigDecimal.ZERO; idSituacaoFluxoEst = idSituacaoEst; idDocumentoTipoFluxoEst = idDocumentoTipoEst; nomeDocumentoTipoFluxoEst = nomeDocumentoTipoEst; faixaFluxoEst = faixaEst; descricaoFluxoEst = descricaoSituacaoEst; // TOTAL DO TIPO DOCUMENTO if (idCategoriaEst.compareTo(Categoria.RESIDENCIAL) == 0) { qtDocumentosResEst += qtDocumentosEst; valorDocumentosResEst = Util.somaBigDecimal(valorDocumentosResEst, valorDocumentosEst); valorDocumentosResSemParcAtualEst = Util.somaBigDecimal(valorDocumentosResSemParcAtualEst, valorDocumentosSemParcAtualEst); qtDocumentosPrivadosEst += qtDocumentosEst; valorDocumentosPrivadosEst = Util.somaBigDecimal(valorDocumentosPrivadosEst, valorDocumentosEst); valorDocumentosPrivadosSemParcAtualEst = Util.somaBigDecimal(valorDocumentosPrivadosSemParcAtualEst, valorDocumentosSemParcAtualEst); } if (idCategoriaEst.compareTo(Categoria.COMERCIAL) == 0) { qtDocumentosComEst += qtDocumentosEst; valorDocumentosComEst = Util.somaBigDecimal(valorDocumentosComEst, valorDocumentosEst); valorDocumentosComSemParcAtualEst = Util.somaBigDecimal(valorDocumentosComSemParcAtualEst, valorDocumentosSemParcAtualEst); qtDocumentosPrivadosEst += qtDocumentosEst; valorDocumentosPrivadosEst = Util.somaBigDecimal(valorDocumentosPrivadosEst, valorDocumentosEst); valorDocumentosPrivadosSemParcAtualEst = Util.somaBigDecimal(valorDocumentosPrivadosSemParcAtualEst, valorDocumentosSemParcAtualEst); } if (idCategoriaEst.compareTo(Categoria.INDUSTRIAL) == 0) { qtDocumentosIndEst += qtDocumentosEst; valorDocumentosIndEst = Util.somaBigDecimal(valorDocumentosIndEst, valorDocumentosEst); valorDocumentosIndSemParcAtualEst = Util.somaBigDecimal(valorDocumentosIndSemParcAtualEst, valorDocumentosSemParcAtualEst); qtDocumentosPrivadosEst += qtDocumentosEst; valorDocumentosPrivadosEst = Util.somaBigDecimal(valorDocumentosPrivadosEst, valorDocumentosEst); valorDocumentosPrivadosSemParcAtualEst = Util.somaBigDecimal(valorDocumentosPrivadosSemParcAtualEst, valorDocumentosSemParcAtualEst); } if (idCategoriaEst.compareTo(Categoria.PUBLICO) == 0) { qtDocumentosPubEst += qtDocumentosEst; valorDocumentosPubEst = Util.somaBigDecimal(valorDocumentosPubEst, valorDocumentosEst); valorDocumentosPubSemParcAtualEst = Util.somaBigDecimal(valorDocumentosPubSemParcAtualEst, valorDocumentosSemParcAtualEst); } } } if (colecaoDadosEstado.size() < quantidadeMaxima) { if (!iterator.hasNext()) { if (helper.isExibirDebitoSemParcela() == true && nomeDocumentoTipoFluxoEst.equals("DEBITO A COBRAR")) { bean = criarBeanRelatorioDocumentosAReceber(null, null, null, null, null, null, idDocumentoTipoFluxoEst, "DEBITO SEM PARCELA", idSituacaoFluxoEst, descricaoFluxoEst, qtDocumentosResEst, valorDocumentosResSemParcAtualEst, qtDocumentosComEst, valorDocumentosComSemParcAtualEst, qtDocumentosIndEst, valorDocumentosIndSemParcAtualEst, qtDocumentosPrivadosEst, valorDocumentosPrivadosSemParcAtualEst, qtDocumentosPubEst, valorDocumentosPubSemParcAtualEst, "ESTADO - " + helper.getDescricaoEstado(), ConstantesSistema.NAO.toString(), faixaFluxoEst); beansPorEstado.add(bean); } else if (helper.isExibirCreditoSemParcela() == true && nomeDocumentoTipoFluxoEst.equals("CREDITO A REALIZAR")) { bean = criarBeanRelatorioDocumentosAReceber(null, null, null, null, null, null, idDocumentoTipoFluxoEst, "CREDITO SEM PARCELA", idSituacaoFluxoEst, descricaoFluxoEst, qtDocumentosResEst, valorDocumentosResSemParcAtualEst, qtDocumentosComEst, valorDocumentosComSemParcAtualEst, qtDocumentosIndEst, valorDocumentosIndSemParcAtualEst, qtDocumentosPrivadosEst, valorDocumentosPrivadosSemParcAtualEst, qtDocumentosPubEst, valorDocumentosPubSemParcAtualEst, "ESTADO - " + helper.getDescricaoEstado(), ConstantesSistema.NAO.toString(), faixaFluxoEst); beansPorEstado.add(bean); } else { bean = criarBeanRelatorioDocumentosAReceber(null, null, null, null, null, null, idDocumentoTipoFluxoEst, nomeDocumentoTipoFluxoEst, idSituacaoFluxoEst, descricaoFluxoEst, qtDocumentosResEst, valorDocumentosResEst, qtDocumentosComEst, valorDocumentosComEst, qtDocumentosIndEst, valorDocumentosIndEst, qtDocumentosPrivadosEst, valorDocumentosPrivadosEst, qtDocumentosPubEst, valorDocumentosPubEst, "ESTADO - " + helper.getDescricaoEstado(), ConstantesSistema.NAO.toString(), faixaFluxoEst); beansPorEstado.add(bean); } } } } } // Incrementa o n� do indice da p�gina��o quantidadeInicio = quantidadeInicio + quantidadeMaxima; /** * Caso a cole��o de dados retornados for menor que a quantidade * de registros seta a flag indicando que a pagina��o terminou. */ if (colecaoDadosLocalidade == null || colecaoDadosLocalidade.size() < quantidadeMaxima) { flagTerminouLoc = true; } if (colecaoDadosUnidade == null || colecaoDadosUnidade.size() < quantidadeMaxima) { flagTerminouUni = true; } if (colecaoDadosGerencia == null || colecaoDadosGerencia.size() < quantidadeMaxima) { flagTerminouGer = true; } if (colecaoDadosEstado == null || colecaoDadosEstado.size() < quantidadeMaxima) { flagTerminouEst = true; } if (colecaoDadosLocalidade != null) { colecaoDadosLocalidade.clear(); colecaoDadosLocalidade = null; } if (colecaoDadosUnidade != null) { colecaoDadosUnidade.clear(); colecaoDadosUnidade = null; } if (colecaoDadosGerencia != null) { colecaoDadosGerencia.clear(); colecaoDadosGerencia = null; } if (colecaoDadosEstado != null) { colecaoDadosEstado.clear(); colecaoDadosEstado = null; } }// FIM DO WHILE // REALIZA CONTRU��O ORDENADA DA // COLE��O DE BEANS DE ACORDO COM // TIPO DE TOTALIZA��O // VARIAVEIS PARA CONTROLE DE FLUXO DA MONTAGEM DA // DA COLEC�O DE BEANS POR TOTALIZA��O Integer idUnidadeAnterior = null; Integer idGerenciaAnterior = null; switch (new Integer(helper.getIdOpcaoTotalizacao())) { // Estado case 1: retorno = beansPorEstado; break; // Estado por Ger�ncia Regional case 2: for (RelatorioDocumentosAReceberBean beanGer : beansPorGerencia) { retorno.add(beanGer); } for (RelatorioDocumentosAReceberBean beanEst : beansPorEstado) { retorno.add(beanEst); } break; // Estado por Unidade de Neg�cio case 3: for (RelatorioDocumentosAReceberBean beanUni : beansPorUnidade) { retorno.add(beanUni); } for (RelatorioDocumentosAReceberBean beanEst : beansPorEstado) { retorno.add(beanEst); } break; // Estado por Ger�ncia Regional e por Localidade case 4: for (Iterator iteraLocalidades = beansPorLocalidade.iterator(); iteraLocalidades.hasNext();) { RelatorioDocumentosAReceberBean beanLoc = (RelatorioDocumentosAReceberBean) iteraLocalidades.next(); // INICIALIZA ID DA PRIMEIRA GERENCIA if (idGerenciaAnterior == null) { idGerenciaAnterior = beanLoc.getIdGerencia(); } if (idGerenciaAnterior.intValue() == beanLoc.getIdGerencia().intValue()) { retorno.add(beanLoc); } else { for (RelatorioDocumentosAReceberBean beanGer : beansPorGerencia) { if (beanGer.getIdGerencia().intValue() == idGerenciaAnterior.intValue()) { retorno.add(beanGer); } } idGerenciaAnterior = beanLoc.getIdGerencia(); retorno.add(beanLoc); } if (!iteraLocalidades.hasNext()) { for (RelatorioDocumentosAReceberBean beanGer : beansPorGerencia) { if (beanGer.getIdGerencia().intValue() == idGerenciaAnterior.intValue()) { retorno.add(beanGer); } } } } for (RelatorioDocumentosAReceberBean beanEst : beansPorEstado) { retorno.add(beanEst); } idUnidadeAnterior = null; idGerenciaAnterior = null; break; // Estado por Unidade de Neg�cio e por Localidade case 5: for (Iterator iteraLocalidades = beansPorLocalidade.iterator(); iteraLocalidades.hasNext();) { RelatorioDocumentosAReceberBean beanLoc = (RelatorioDocumentosAReceberBean) iteraLocalidades.next(); // INICIALIZA ID DA PRIMEIRA UNIDADE if (idUnidadeAnterior == null) { idUnidadeAnterior = beanLoc.getIdUnidade(); } if (idUnidadeAnterior.intValue() == beanLoc.getIdUnidade().intValue()) { retorno.add(beanLoc); } else { for (RelatorioDocumentosAReceberBean beanUni : beansPorUnidade) { if (beanUni.getIdUnidade().intValue() == idUnidadeAnterior.intValue()) { retorno.add(beanUni); } } idUnidadeAnterior = beanLoc.getIdUnidade(); retorno.add(beanLoc); } if (!iteraLocalidades.hasNext()) { for (RelatorioDocumentosAReceberBean beanUni : beansPorUnidade) { if (beanUni.getIdUnidade().intValue() == idUnidadeAnterior.intValue()) { retorno.add(beanUni); } } } } for (RelatorioDocumentosAReceberBean beanEst : beansPorEstado) { retorno.add(beanEst); } idUnidadeAnterior = null; idGerenciaAnterior = null; break; // Ger�ncia Regional case 6: retorno = beansPorGerencia; break; // Ger�ncia Regional por Localidade case 7: for (Iterator iteraLocalidades = beansPorLocalidade.iterator(); iteraLocalidades.hasNext();) { RelatorioDocumentosAReceberBean beanLoc = (RelatorioDocumentosAReceberBean) iteraLocalidades.next(); // INICIALIZA ID DA PRIMEIRA GERENCIA if (idGerenciaAnterior == null) { idGerenciaAnterior = beanLoc.getIdGerencia(); } if (idGerenciaAnterior.intValue() == beanLoc.getIdGerencia().intValue()) { retorno.add(beanLoc); } else { for (RelatorioDocumentosAReceberBean beanGer : beansPorGerencia) { if (beanGer.getIdGerencia().intValue() == idGerenciaAnterior.intValue()) { retorno.add(beanGer); } } idGerenciaAnterior = beanLoc.getIdGerencia(); retorno.add(beanLoc); } if (!iteraLocalidades.hasNext()) { for (RelatorioDocumentosAReceberBean beanGer : beansPorGerencia) { if (beanGer.getIdGerencia().intValue() == idGerenciaAnterior.intValue()) { retorno.add(beanGer); } } } } idUnidadeAnterior = null; idGerenciaAnterior = null; break; // Unidade de Neg�cio case 8: retorno = beansPorUnidade; break; // Unidade de Neg�cio por Localidade case 9: for (Iterator iteraLocalidades = beansPorLocalidade.iterator(); iteraLocalidades.hasNext();) { RelatorioDocumentosAReceberBean beanLoc = (RelatorioDocumentosAReceberBean) iteraLocalidades.next(); // INICIALIZA ID DA PRIMEIRA UNIDADE if (idUnidadeAnterior == null) { idUnidadeAnterior = beanLoc.getIdUnidade(); } if (idUnidadeAnterior.intValue() == beanLoc.getIdUnidade().intValue()) { retorno.add(beanLoc); } else { for (RelatorioDocumentosAReceberBean beanUni : beansPorUnidade) { if (beanUni.getIdUnidade().intValue() == idUnidadeAnterior.intValue()) { retorno.add(beanUni); } } idUnidadeAnterior = beanLoc.getIdUnidade(); retorno.add(beanLoc); } if (!iteraLocalidades.hasNext()) { for (RelatorioDocumentosAReceberBean beanUni : beansPorUnidade) { if (beanUni.getIdUnidade().intValue() == idUnidadeAnterior.intValue()) { retorno.add(beanUni); } } } } idUnidadeAnterior = null; idGerenciaAnterior = null; break; // Localidade case 10: retorno = beansPorLocalidade; break; default: break; } } catch (ErroRepositorioException e) { throw new ControladorException("erro.sistema", e); } return inserirTotalDeContasEGuias(retorno, helper); } /** * Este m�todo serve unicamente para inserir os subtotais de contas e guias de pagamento vencidas, facilitando a leitura. * Considerando que o relat�rio � gerado a partir e uma lista ordenada, foi necess�rio iterar pela cole��o para inserir os subtotais * corretamente.*/ private Collection<RelatorioDocumentosAReceberBean> inserirTotalDeContasEGuias(Collection<RelatorioDocumentosAReceberBean> retorno, FiltroRelatorioDocumentosAReceberHelper helper) { int qntContaRes = 0; int qntContaCom = 0; int qntContaInd = 0; int qntContaTot = 0; int qntContaPub = 0; BigDecimal totalContaRes = new BigDecimal(0.00); BigDecimal totalContaCom = new BigDecimal(0.00); BigDecimal totalContaInd = new BigDecimal(0.00); BigDecimal totalContaTot = new BigDecimal(0.00); BigDecimal totalContaPub = new BigDecimal(0.00); int qntGuiaRes = 0; int qntGuiaCom = 0; int qntGuiaInd = 0; int qntGuiaTot = 0; int qntGuiaPub = 0; BigDecimal totalGuiaRes = new BigDecimal(0.00); BigDecimal totalGuiaCom = new BigDecimal(0.00); BigDecimal totalGuiaInd = new BigDecimal(0.00); BigDecimal totalGuiaTot = new BigDecimal(0.00); BigDecimal totalGuiaPub = new BigDecimal(0.00); for (RelatorioDocumentosAReceberBean relatorio : retorno) { if (relatorio.getNomeDocumentoTipo().equalsIgnoreCase("CONTA") && relatorio.getIdSituacao() == 2) { qntContaRes += relatorio.getQtdDocumentosRes(); qntContaCom += relatorio.getQtdDocumentosCom(); qntContaInd += relatorio.getQtdDocumentosInd(); qntContaTot += relatorio.getQtdDocumentosTot(); qntContaPub += relatorio.getQtdDocumentosPub(); totalContaRes = totalContaRes.add(relatorio.getValorDocumentosRes()); totalContaCom = totalContaCom.add(relatorio.getValorDocumentosCom()); totalContaInd = totalContaInd.add(relatorio.getValorDocumentosInd()); totalContaTot = totalContaTot.add(relatorio.getValorDocumentosTot()); totalContaPub = totalContaPub.add(relatorio.getValorDocumentosPub()); } if (relatorio.getNomeDocumentoTipo().equalsIgnoreCase("GUIA DE PAGAMENTO") && relatorio.getIdSituacao() == 2) { qntGuiaRes += relatorio.getQtdDocumentosRes(); qntGuiaCom += relatorio.getQtdDocumentosCom(); qntGuiaInd += relatorio.getQtdDocumentosInd(); qntGuiaTot += relatorio.getQtdDocumentosTot(); qntGuiaPub += relatorio.getQtdDocumentosPub(); totalGuiaRes = totalGuiaRes.add(relatorio.getValorDocumentosRes()); totalGuiaCom = totalGuiaCom.add(relatorio.getValorDocumentosCom()); totalGuiaInd = totalGuiaInd.add(relatorio.getValorDocumentosInd()); totalGuiaTot = totalGuiaTot.add(relatorio.getValorDocumentosTot()); totalGuiaPub = totalGuiaPub.add(relatorio.getValorDocumentosPub()); } } RelatorioDocumentosAReceberBean documentoComTotalConta = new RelatorioDocumentosAReceberBean(); documentoComTotalConta.setQtdDocumentosRes(qntContaRes); documentoComTotalConta.setQtdDocumentosResTotal(qntContaRes); documentoComTotalConta.setQtdDocumentosCom(qntContaCom); documentoComTotalConta.setQtdDocumentosComTotal(qntContaCom); documentoComTotalConta.setQtdDocumentosInd(qntContaInd); documentoComTotalConta.setQtdDocumentosIndTotal(qntContaInd); documentoComTotalConta.setQtdDocumentosTot(qntContaTot); documentoComTotalConta.setQtdDocumentosTotTotal(qntContaTot); documentoComTotalConta.setQtdDocumentosPub(qntContaPub); documentoComTotalConta.setQtdDocumentosPubTotal(qntContaPub); documentoComTotalConta.setValorDocumentosRes(totalContaRes); documentoComTotalConta.setValorDocumentosResTotal(totalContaRes); documentoComTotalConta.setValorDocumentosCom(totalContaCom); documentoComTotalConta.setValorDocumentosComTotal(totalContaCom); documentoComTotalConta.setValorDocumentosInd(totalContaInd); documentoComTotalConta.setValorDocumentosIndTotal(totalContaInd); documentoComTotalConta.setValorDocumentosTot(totalContaTot); documentoComTotalConta.setValorDocumentosTotTotal(totalContaTot); documentoComTotalConta.setValorDocumentosPub(totalContaPub); documentoComTotalConta.setValorDocumentosPubTotal(totalContaPub); documentoComTotalConta.setDescricaoSituacao("VENCIDOS"); documentoComTotalConta.setIdDocumentoTipo(1); documentoComTotalConta.setNomeDocumentoTipo("CONTA"); documentoComTotalConta.setIdSituacao(2); documentoComTotalConta.setDescricaTotalizacao("ESTADO - PARA"); documentoComTotalConta.setIndicadorTotal(ConstantesSistema.TODOS.toString()); documentoComTotalConta.setFaixa("TOTAL"); RelatorioDocumentosAReceberBean documentoComTotalGuia = new RelatorioDocumentosAReceberBean(); documentoComTotalGuia.setQtdDocumentosRes(qntGuiaRes); documentoComTotalGuia.setQtdDocumentosResTotal(qntGuiaRes); documentoComTotalGuia.setQtdDocumentosCom(qntGuiaCom); documentoComTotalGuia.setQtdDocumentosComTotal(qntGuiaCom); documentoComTotalGuia.setQtdDocumentosInd(qntGuiaInd); documentoComTotalGuia.setQtdDocumentosIndTotal(qntGuiaInd); documentoComTotalGuia.setQtdDocumentosTot(qntGuiaTot); documentoComTotalGuia.setQtdDocumentosTotTotal(qntGuiaTot); documentoComTotalGuia.setQtdDocumentosPub(qntGuiaPub); documentoComTotalGuia.setQtdDocumentosPubTotal(qntGuiaPub); documentoComTotalGuia.setValorDocumentosRes(totalGuiaRes); documentoComTotalGuia.setValorDocumentosResTotal(totalGuiaRes); documentoComTotalGuia.setValorDocumentosCom(totalGuiaCom); documentoComTotalGuia.setValorDocumentosComTotal(totalGuiaCom); documentoComTotalGuia.setValorDocumentosInd(totalGuiaInd); documentoComTotalGuia.setValorDocumentosIndTotal(totalGuiaInd); documentoComTotalGuia.setValorDocumentosTot(totalGuiaTot); documentoComTotalGuia.setValorDocumentosTotTotal(totalGuiaTot); documentoComTotalGuia.setValorDocumentosPub(totalGuiaPub); documentoComTotalGuia.setValorDocumentosPubTotal(totalGuiaPub); documentoComTotalGuia.setDescricaoSituacao("VENCIDOS"); documentoComTotalGuia.setIdDocumentoTipo(7); documentoComTotalGuia.setNomeDocumentoTipo("GUIA DE PAGAMENTO"); documentoComTotalGuia.setIdSituacao(2); documentoComTotalGuia.setDescricaTotalizacao("ESTADO - PARA"); documentoComTotalGuia.setIndicadorTotal(ConstantesSistema.NAO.toString()); documentoComTotalGuia.setFaixa("TOTAL"); Collection<RelatorioDocumentosAReceberBean> retornoComTotalContaEGuia = new ArrayList<RelatorioDocumentosAReceberBean>(); for (RelatorioDocumentosAReceberBean relatorio : retorno) { if (relatorio.getNomeDocumentoTipo().equalsIgnoreCase("GUIA DE PAGAMENTO") && relatorio.getIdSituacao() == 2 && relatorio.getFaixa().equals(helper.getMaiorFaixa())) relatorio.setIndicadorTotal(ConstantesSistema.TODOS.toString()); retornoComTotalContaEGuia.add(relatorio); if (relatorio.getNomeDocumentoTipo().equalsIgnoreCase("CONTA") && relatorio.getIdSituacao() == 2 && relatorio.getFaixa().equals(helper.getMaiorFaixa())) { retornoComTotalContaEGuia.add(documentoComTotalConta); } if (relatorio.getNomeDocumentoTipo().equalsIgnoreCase("GUIA DE PAGAMENTO") && relatorio.getIdSituacao() == 2 && relatorio.getFaixa().equals(helper.getMaiorFaixa())) { retornoComTotalContaEGuia.add(documentoComTotalGuia); } } return retornoComTotalContaEGuia; } private RelatorioDocumentosAReceberBean criarBeanRelatorioDocumentosAReceber(Integer idGerencia, String nomeGerencia, Integer idUnidade, String nomeUnidade, Integer idLocalidade, String nomeLocalidade, Integer idDocumentoTipo, String nomeDocumentoTipo, Integer idSituacao, String descricaoSituacao, Integer qtdDocumentosRes, BigDecimal valorDocumentosRes, Integer qtdDocumentosCom, BigDecimal valorDocumentosCom, Integer qtdDocumentosInd, BigDecimal valorDocumentosInd, Integer qtdDocumentosTot, BigDecimal valorDocumentosTot, Integer qtdDocumentosPub, BigDecimal valorDocumentosPub, String descricaTotalizacao, String indicadorTotal, String faixa) { RelatorioDocumentosAReceberBean bean = new RelatorioDocumentosAReceberBean(); bean.setIdDocumentoTipo(idDocumentoTipo); bean.setNomeDocumentoTipo(nomeDocumentoTipo); bean.setIdSituacao(idSituacao); bean.setDescricaoSituacao(descricaoSituacao); bean.setIdGerencia(idGerencia); bean.setNomeGerencia(nomeGerencia); bean.setIdUnidade(idUnidade); bean.setNomeUnidade(nomeUnidade); bean.setIdLocalidade(idLocalidade); bean.setNomeLocalidade(nomeLocalidade); bean.setFaixa(faixa); bean.setIndicadorTotal(indicadorTotal); bean.setIdSituacao(idSituacao); bean.setDescricaoSituacao(descricaoSituacao); bean.setDescricaTotalizacao(descricaTotalizacao); bean.setQtdDocumentosRes(qtdDocumentosRes); bean.setValorDocumentosRes(valorDocumentosRes); bean.setQtdDocumentosCom(qtdDocumentosCom); bean.setValorDocumentosCom(valorDocumentosCom); bean.setQtdDocumentosInd(qtdDocumentosInd); bean.setValorDocumentosInd(valorDocumentosInd); bean.setQtdDocumentosTot(qtdDocumentosTot); bean.setValorDocumentosTot(valorDocumentosTot); bean.setQtdDocumentosPub(qtdDocumentosPub); bean.setValorDocumentosPub(valorDocumentosPub); return bean; } /** * [UC990] Count Relat�rio de Documentos a Receber * * @author Hugo Amorim * @date 22/02/2010 * */ public Integer countRelatorioDocumentosAReceber(FiltroRelatorioDocumentosAReceberHelper helper) throws ControladorException { Integer retorno = new Integer(0); try { retorno = this.repositorioCobranca.countRelatorioDocumentosAReceber(helper); } catch (ErroRepositorioException e) { throw new ControladorException("erro.sistema", e); } return retorno; } /** * * Calcula Valor total de debitos * * Valor Contas + Valor Debitos + Valor Guias - Creditos * * @author Hugo Amorim * @param debitoImovelClienteHelper * @return Valor Total de Debitos */ public BigDecimal calcularValorTotalDebitos(ObterDebitoImovelOuClienteHelper debitoImovelClienteHelper) { BigDecimal valorTotal = BigDecimal.ZERO; if (debitoImovelClienteHelper != null) { BigDecimal valorConta = BigDecimal.ZERO; BigDecimal valorDebitoACobrar = BigDecimal.ZERO; BigDecimal valorGuiaPagamento = BigDecimal.ZERO; BigDecimal valorCreditoARealizar = BigDecimal.ZERO; ContaValoresHelper dadosConta = null; DebitoACobrar dadosDebito = null; CreditoARealizar dadosCredito = null; GuiaPagamentoValoresHelper dadosGuiaPagamentoValoresHelper = null; Collection<ContaValoresHelper> colecaoContaValores = debitoImovelClienteHelper.getColecaoContasValores(); if (colecaoContaValores != null && !colecaoContaValores.isEmpty()) { Iterator<ContaValoresHelper> colecaoContaValoresIterator = colecaoContaValores.iterator(); // percorre a colecao de conta somando o valor para obter um // valor total while (colecaoContaValoresIterator.hasNext()) { dadosConta = (ContaValoresHelper) colecaoContaValoresIterator.next(); valorConta = valorConta.add(dadosConta.getConta().getValorTotal()); } } Collection<DebitoACobrar> colecaoDebitoACobrar = debitoImovelClienteHelper.getColecaoDebitoACobrar(); if (colecaoDebitoACobrar != null && !colecaoDebitoACobrar.isEmpty()) { Iterator<DebitoACobrar> colecaoDebitoACobrarIterator = colecaoDebitoACobrar.iterator(); // percorre a colecao de debito a cobrar somando o valor para // obter um valor total while (colecaoDebitoACobrarIterator.hasNext()) { dadosDebito = (DebitoACobrar) colecaoDebitoACobrarIterator.next(); // alterado por Vivianne Sousa data:11/04/2008 // analista :Adriano valorDebitoACobrar = valorDebitoACobrar.add(dadosDebito.getValorTotalComBonus()); } } Collection<CreditoARealizar> colecaoCreditoARealizar = debitoImovelClienteHelper.getColecaoCreditoARealizar(); if (colecaoCreditoARealizar != null && !colecaoCreditoARealizar.isEmpty()) { Iterator<CreditoARealizar> colecaoCreditoARealizarIterator = colecaoCreditoARealizar.iterator(); // percorre a colecao de credito a realizar somando o valor para // obter um valor total while (colecaoCreditoARealizarIterator.hasNext()) { dadosCredito = (CreditoARealizar) colecaoCreditoARealizarIterator.next(); // alterado por Vivianne Sousa data:11/04/2008 // analista :Adriano valorCreditoARealizar = valorCreditoARealizar.add(dadosCredito.getValorTotalComBonus()); } } Collection<GuiaPagamentoValoresHelper> colecaoGuiaPagamentoValores = debitoImovelClienteHelper .getColecaoGuiasPagamentoValores(); if (colecaoGuiaPagamentoValores != null && !colecaoGuiaPagamentoValores.isEmpty()) { Iterator<GuiaPagamentoValoresHelper> colecaoGuiaPagamentoValoresHelperIterator = colecaoGuiaPagamentoValores.iterator(); // percorre a colecao de guia de pagamento somando o valor para // obter um valor total while (colecaoGuiaPagamentoValoresHelperIterator.hasNext()) { dadosGuiaPagamentoValoresHelper = (GuiaPagamentoValoresHelper) colecaoGuiaPagamentoValoresHelperIterator.next(); valorGuiaPagamento = valorGuiaPagamento.add(dadosGuiaPagamentoValoresHelper.getGuiaPagamento().getValorDebito()); } } valorTotal = valorConta.add(valorDebitoACobrar); valorTotal = valorTotal.add(valorGuiaPagamento); valorTotal = valorTotal.subtract(valorCreditoARealizar); }// fim do if debitoImovelClienteHelper != null return valorTotal; } /** * * Calcula Valor Contas de debitos * * @author Hugo Amorim * @param debitoImovelClienteHelper * @return Valor Total de Debitos */ public BigDecimal calcularValorContas(ObterDebitoImovelOuClienteHelper debitoImovelClienteHelper) { BigDecimal valorConta = BigDecimal.ZERO; if (debitoImovelClienteHelper != null) { ContaValoresHelper dadosConta = null; Collection<ContaValoresHelper> colecaoContaValores = debitoImovelClienteHelper.getColecaoContasValores(); if (colecaoContaValores != null && !colecaoContaValores.isEmpty()) { Iterator<ContaValoresHelper> colecaoContaValoresIterator = colecaoContaValores.iterator(); // percorre a colecao de conta somando o valor para obter um // valor total while (colecaoContaValoresIterator.hasNext()) { dadosConta = (ContaValoresHelper) colecaoContaValoresIterator.next(); valorConta = valorConta.add(dadosConta.getConta().getValorTotal()); } } }// fim do if debitoImovelClienteHelper != null return valorConta; } /** * [UC0630] Solicitar Emiss�o do Extrato de D�bitos * * @author Raphael Rossiter * @date 30/03/2010 * * @param debitoACobrar * @param quantidadeParcelas * @throws ControladorException */ public void verificarQuantidadeParcelasInformada(DebitoACobrar debitoACobrar, Short quantidadeParcelas) throws ControladorException { /* * Caso a quantidade de parcelas informadas seja mais que a quantidade * que falta cobrar (quantidade informada maior que * (DBAC_NNPRESTACAODEBITO � (DBAC_NNPRESTACAOCOBRADAS + * DBAC_NNPARCELABONUS)). */ if (quantidadeParcelas.shortValue() > debitoACobrar.getNumeroPrestacaoRestante()) { throw new ControladorException("atencao.quantidade_parcelas_informadas_maior"); } /* * Caso a quantidade de parcelas informadas seja igual a quantidade que * falta cobrar (quantidade informada igual que (DBAC_NNPRESTACAODEBITO * � (DBAC_NNPRESTACAOCOBRADAS + DBAC_NNPARCELABONUS)). */ if (quantidadeParcelas.shortValue() == debitoACobrar.getNumeroPrestacaoRestante()) { throw new ControladorException("atencao.quantidade_parcelas_informadas_igual"); } } /** * [UC0927] � Confirmar Cart�o de Cr�dito/D�bito * * [SB0004] � Incluir Dados da Confirma��o dos Pagamentos * * @author Raphael Rossiter * @date 03/05/2010 * * @param creditoARealizarGeral * @param avisoBancario * @return Devolucao * @throws ControladorException */ public Devolucao gerarDevolucaoCreditoARealizarCartaoDebito(CreditoARealizarGeral creditoARealizarGeral, AvisoBancario avisoBancario) throws ControladorException { Devolucao devolucao = new Devolucao(); FiltroCreditoARealizar filtroCreditoARealizar = new FiltroCreditoARealizar(); filtroCreditoARealizar.adicionarCaminhoParaCarregamentoEntidade("imovel"); filtroCreditoARealizar.adicionarCaminhoParaCarregamentoEntidade("localidade"); filtroCreditoARealizar.adicionarParametro(new ParametroSimples(FiltroCreditoARealizar.ID, creditoARealizarGeral.getId())); Collection colecaoCreditoARealizar = getControladorUtil().pesquisar(filtroCreditoARealizar, CreditoARealizar.class.getName()); CreditoARealizar creditoARealizar = (CreditoARealizar) Util.retonarObjetoDeColecao(colecaoCreditoARealizar); if (creditoARealizar == null) { creditoARealizar = creditoARealizarGeral.getCreditoARealizar(); } devolucao.setAvisoBancario(avisoBancario); devolucao.setDataDevolucao(avisoBancario.getDataLancamento()); devolucao.setAnoMesReferenciaArrecadacao(avisoBancario.getAnoMesReferenciaArrecadacao()); devolucao.setValorDevolucao(creditoARealizar.getValorTotalComBonus()); devolucao.setLocalidade(creditoARealizar.getLocalidade()); devolucao.setImovel(creditoARealizar.getImovel()); DebitoTipo debitoTipo = new DebitoTipo(); debitoTipo.setId(DebitoTipo.OUTROS); devolucao.setDebitoTipo(debitoTipo); devolucao.setCreditoARealizarGeral(creditoARealizarGeral); devolucao.setUltimaAlteracao(new Date()); return devolucao; } /** * [UC0251] Gerar Atividade de A��o de Cobran�a step1 */ public void gerarAtividadeAcaoCobranca(CobrancaAcaoAtividadeCronograma cobrancaAcaoAtividadeCronograma, CobrancaAcaoAtividadeComando cobrancaAcaoAtividadeComando, Rota rota, CobrancaAcao acaoCobranca, CobrancaAtividade atividadeCobranca, Integer indicadorCriterio, CobrancaCriterio criterioCobranca, Cliente cliente, ClienteRelacaoTipo relacaoClienteImovel, String anoMesReferenciaInicial, String anoMesReferenciaFinal, Date dataVencimentoInicial, Date dataVencimentoFinal, Date dataAtual, int idFuncionalidadeIniciada, Cliente clienteSuperior, Integer idCobrancaDocumentoControleGeracao) throws ControladorException { int idUnidadeIniciada = 0; System.out.println("*********************************"); System.out.println("INICIO DO GERAR ACAO DE COBRANCA"); System.out.println("*********************************"); if (cliente != null || clienteSuperior != null || (cobrancaAcaoAtividadeComando != null && cobrancaAcaoAtividadeComando.getLogradouro() != null)) { idUnidadeIniciada = getControladorBatch().iniciarUnidadeProcessamentoBatch(idFuncionalidadeIniciada, UnidadeProcessamento.FUNCIONALIDADE, 0); } else { idUnidadeIniciada = getControladorBatch().iniciarUnidadeProcessamentoBatch(idFuncionalidadeIniciada, UnidadeProcessamento.ROTA, rota.getId()); } try { Collection<CobrancaCriterioLinha> colecaoCobrancaCriterioLinhaComando = null; if (indicadorCriterio.intValue() == 2) { try { colecaoCobrancaCriterioLinhaComando = repositorioCobranca.pesquisarCobrancaCriterioLinhaCriterio(criterioCobranca.getId()); } catch (ErroRepositorioException ex) { ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } } if (colecaoCobrancaCriterioLinhaComando != null) { System.out.println("*********************************"); System.out.println("QTD DE COBRANCA CRITERIO LINHA:" + colecaoCobrancaCriterioLinhaComando.size()); System.out.println("*********************************"); } if (cliente != null || clienteSuperior != null) { System.out.println("*********************************"); System.out.println("INICIO gerarAtividadeAcaoCobrancaParaImoveisCliente:"); System.out.println("*********************************"); this.gerarAtividadeAcaoCobrancaParaImoveisCliente(cobrancaAcaoAtividadeCronograma, cobrancaAcaoAtividadeComando, cliente, relacaoClienteImovel, indicadorCriterio, acaoCobranca, atividadeCobranca, colecaoCobrancaCriterioLinhaComando, criterioCobranca, anoMesReferenciaInicial, anoMesReferenciaFinal, dataVencimentoInicial, dataVencimentoFinal, dataAtual, clienteSuperior, idCobrancaDocumentoControleGeracao); System.out.println("*********************************"); System.out.println("FIM gerarAtividadeAcaoCobrancaParaImoveisCliente:"); System.out.println("*********************************"); } else if (cobrancaAcaoAtividadeComando != null && cobrancaAcaoAtividadeComando.getLogradouro() != null) { System.out.println("*********************************"); System.out.println("INICIO gerarAtividadeAcaoCobrancaParaImoveisLogradouro:"); System.out.println("*********************************"); this.gerarAtividadeAcaoCobrancaParaImoveisLogradouro(cobrancaAcaoAtividadeCronograma, cobrancaAcaoAtividadeComando, cliente, relacaoClienteImovel, indicadorCriterio, acaoCobranca, atividadeCobranca, colecaoCobrancaCriterioLinhaComando, criterioCobranca, anoMesReferenciaInicial, anoMesReferenciaFinal, dataVencimentoInicial, dataVencimentoFinal, dataAtual, clienteSuperior, idCobrancaDocumentoControleGeracao); System.out.println("*********************************"); System.out.println("FIM gerarAtividadeAcaoCobrancaParaImoveisLogradouro:"); System.out.println("*********************************"); } else { Integer quantidadeMaxima = this.consideraQuantidadeMaximaDocumentos(cobrancaAcaoAtividadeCronograma, cobrancaAcaoAtividadeComando, acaoCobranca); if (quantidadeMaxima != null) { System.out.println("*************************"); System.out.println("INICIO gerarAtividadeAcaoCobrancaParaImoveisListaRotasComQuantidadeMaxima"); System.out.println("*************************"); this.gerarAtividadeAcaoCobrancaParaImoveisListaRotasComQuantidadeMaxima(cobrancaAcaoAtividadeCronograma, cobrancaAcaoAtividadeComando, rota, indicadorCriterio, acaoCobranca, atividadeCobranca, colecaoCobrancaCriterioLinhaComando, criterioCobranca, anoMesReferenciaInicial, anoMesReferenciaFinal, dataVencimentoInicial, dataVencimentoFinal, dataAtual, quantidadeMaxima, idCobrancaDocumentoControleGeracao); } else { System.out.println("*************************"); System.out.println("INICIO gerarAtividadeAcaoCobrancaParaImoveisListaRotasSemQuantidadeMaxima"); System.out.println("*************************"); this.gerarAtividadeAcaoCobrancaParaImoveisListaRotasSemQuantidadeMaxima(cobrancaAcaoAtividadeCronograma, cobrancaAcaoAtividadeComando, rota, indicadorCriterio, acaoCobranca, atividadeCobranca, colecaoCobrancaCriterioLinhaComando, criterioCobranca, anoMesReferenciaInicial, anoMesReferenciaFinal, dataVencimentoInicial, dataVencimentoFinal, dataAtual, idCobrancaDocumentoControleGeracao); } System.out.println("*********************************"); System.out.println("FIM gerarAtividadeAcaoCobrancaParaImoveisListaRotas:"); System.out.println("*********************************"); } getControladorBatch().encerrarUnidadeProcessamentoBatch(null, idUnidadeIniciada, false); } catch (Throwable e) { e.printStackTrace(); getControladorBatch().encerrarUnidadeProcessamentoBatch(e, idUnidadeIniciada, true); throw new ControladorException("erro.sistema", e); } } /** * * Este caso de uso permite a emiss�o de um ou mais documentos de cobran�a * * @author Hugo Amorim, Mariana Victor * @data 22/04/2010, 16/03/2011 * * @param * @return void */ public void gerarDocumentoCobrancaImpressaoCartasCampanha(CobrancaAcaoAtividadeCronograma cobrancaAcaoAtividadeCronograma, CobrancaAcaoAtividadeComando cobrancaAcaoAtividadeComando, Date dataAtualPesquisa, CobrancaAcao acaoCobranca, CobrancaGrupo grupoCobranca, CobrancaCriterio cobrancaCriterio) throws ControladorException { SistemaParametro sistemaParametro = this.getControladorUtil().pesquisarParametrosDoSistema(); List<CobrancaDocumento> listaDocumentoFormatoPadrao = new ArrayList(); List<CobrancaDocumento> listaDocumentoFichaCompensacao = new ArrayList(); ResolucaoDiretoria resolucaoDiretoria = new ResolucaoDiretoria(); resolucaoDiretoria.setId(14); boolean flagFimPesquisa = false; final int quantidadeCobrancaDocumento = 1000; int quantidadeCobrancaDocumentoInicio = 0; int sequencialImpressao = 0; Collection colecaoCobrancaDocumento = null; Integer idCronogramaAtividadeAcaoCobranca = null; Integer idComandoAtividadeAcaoCobranca = null; Integer idAcaoCobranca = null; if (cobrancaAcaoAtividadeCronograma != null && cobrancaAcaoAtividadeCronograma.getId() != null) { idCronogramaAtividadeAcaoCobranca = cobrancaAcaoAtividadeCronograma.getId(); } if (cobrancaAcaoAtividadeComando != null && cobrancaAcaoAtividadeComando.getId() != null) { idComandoAtividadeAcaoCobranca = cobrancaAcaoAtividadeComando.getId(); } if (acaoCobranca != null && acaoCobranca.getId() != null) { idAcaoCobranca = acaoCobranca.getId(); } while (!flagFimPesquisa) { // map que armazena o sequencial e o numero da // conta para no final atualizar todos os sequencias try { System.out.println("***************************************"); System.out.println("ENTROU NO CARTAS"); System.out.println("***************************************"); colecaoCobrancaDocumento = repositorioCobranca.pesquisarCobrancaDocumentoParaEmitir(idCronogramaAtividadeAcaoCobranca, idComandoAtividadeAcaoCobranca, dataAtualPesquisa, idAcaoCobranca, quantidadeCobrancaDocumentoInicio); System.out.println("***************************************"); System.out.println("QTD DE COBRANCA DOCUMENTO:" + colecaoCobrancaDocumento.size()); System.out.println("***************************************"); } catch (ErroRepositorioException ex) { ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } if (colecaoCobrancaDocumento != null && !colecaoCobrancaDocumento.isEmpty()) { System.out.println("***************************************"); System.out.println("QUANTIDADE COBRAN�A:" + colecaoCobrancaDocumento.size()); System.out.println("***************************************"); if (colecaoCobrancaDocumento.size() < quantidadeCobrancaDocumento) { flagFimPesquisa = true; } else { quantidadeCobrancaDocumentoInicio = quantidadeCobrancaDocumentoInicio + 1000; } Iterator it = colecaoCobrancaDocumento.iterator(); while (it.hasNext()) { CobrancaDocumento cobrancaDocumento = (CobrancaDocumento) it.next(); // 2. Caso a empresa tenha estabelecido um valor padr�o para // emiss�o de demonstrativo de parcelamento no formato de // ficha de compensa��o if (sistemaParametro.getValorDemonstrativoParcelamentoFichaComp() != null && !sistemaParametro.getValorDemonstrativoParcelamentoFichaComp().equals(BigDecimal.ZERO)) { BigDecimal valorDocumento = this.obterValorDoDocumento(cobrancaDocumento); // 2.1.1. Caso o valor do documento seja inferior ao // valor padr�o para // emiss�o de demonstrativo de parcelamento no formato // de ficha de compensa��o if (valorDocumento.compareTo(sistemaParametro.getValorDemonstrativoParcelamentoFichaComp()) < 0) { listaDocumentoFormatoPadrao.add(cobrancaDocumento); } else { listaDocumentoFichaCompensacao.add(cobrancaDocumento); } } // 3. Caso contr�rio, ou seja, a empresa n�o tenha // estabelecido um valor padr�o para emiss�o de // demonstrativo de parcelamento no formato de ficha de // compensa��o else { listaDocumentoFormatoPadrao.add(cobrancaDocumento); } } } else { flagFimPesquisa = true; } } // 4. Para cada documento de cobran�a da lista Lista de Documentos em // Formato Padr�o if (listaDocumentoFormatoPadrao != null && !listaDocumentoFormatoPadrao.isEmpty()) { Iterator iterator = listaDocumentoFormatoPadrao.iterator(); while (iterator.hasNext()) { CobrancaDocumento cobrancaDocumento = (CobrancaDocumento) iterator.next(); String[] retorno = this.gerarDadosComunsFormatosPadraoFichaCompensacao(cobrancaDocumento, acaoCobranca, cobrancaAcaoAtividadeComando, resolucaoDiretoria, sequencialImpressao); if (retorno != null && retorno[0] != null && retorno[1] != null) { String txtString = retorno[0]; String sequencialImpressaoStr = retorno[1]; try { repositorioCobranca.inserirDocumentoCobrancaImpressao(cobrancaDocumento.getId(), txtString, idComandoAtividadeAcaoCobranca, idCronogramaAtividadeAcaoCobranca, new Integer(sequencialImpressaoStr)); } catch (ErroRepositorioException e) { e.printStackTrace(); } sequencialImpressao++; } } } // 5. Para cada documento de cobran�a da Lista de Documentos em Ficha de // Compensa��o if (listaDocumentoFichaCompensacao != null && !listaDocumentoFichaCompensacao.isEmpty()) { Iterator iterator = listaDocumentoFichaCompensacao.iterator(); while (iterator.hasNext()) { CobrancaDocumento cobrancaDocumento = (CobrancaDocumento) iterator.next(); // [SB0002 � Gerar Dados Comuns aos Formatos Padr�o e Ficha de // Compensa��o] String[] retorno = this.gerarDadosComunsFormatosPadraoFichaCompensacao(cobrancaDocumento, acaoCobranca, cobrancaAcaoAtividadeComando, resolucaoDiretoria, sequencialImpressao); String txtString = retorno[0]; String sequencialImpressaoStr = retorno[1]; // [SB0003 � Gerar Dados Pr�prios do Formato Ficha de // Compensa��o] String txtStringFichaCompensacao = this.gerarDadosPropriosFormatoFichaCompensacao(cobrancaDocumento); try { repositorioCobranca.inserirDocumentoCobrancaImpressaoFichaCompensasao(cobrancaDocumento.getId(), txtString, txtStringFichaCompensacao, idComandoAtividadeAcaoCobranca, idCronogramaAtividadeAcaoCobranca, new Integer( sequencialImpressaoStr)); } catch (ErroRepositorioException e) { e.printStackTrace(); } sequencialImpressao++; } } System.out.println("***************************************"); System.out.println("FINAL GERAR DOCUMENTO COBRANCA IMPRESSAO"); System.out.println("***************************************"); } /** * [UC0968] Emitir Cartas da Campanha de Final de Ano 2009 * * [SB0002] � Gerar Dados Comuns aos Formatos Padr�o e Ficha de Compensa��o * * @param * @return String[] * */ private String[] gerarDadosComunsFormatosPadraoFichaCompensacao(CobrancaDocumento cobrancaDocumento, CobrancaAcao acaoCobranca, CobrancaAcaoAtividadeComando cobrancaAcaoAtividadeComando, ResolucaoDiretoria resolucaoDiretoria, int sequencialImpressao) throws ControladorException { StringBuilder cobrancaDocumentoTxt = new StringBuilder(); Imovel imovel = cobrancaDocumento.getImovel(); int indicadorDebitoImovel = ConstantesSistema.SIM.intValue(); int indicadorPagamento = ConstantesSistema.SIM.intValue(); int indicadorConta = ConstantesSistema.NAO.intValue(); int indicadorDebitoACobrar = acaoCobranca.getIndicadorCobrancaDebACobrar(); int indicadorCreditoARalizar = acaoCobranca.getIndicadorCreditosARealizar().intValue(); int indicadorNotasPromissorias = acaoCobranca.getIndicadorNotasPromissoria().intValue(); int indicadorGuiaPagamento = ConstantesSistema.SIM.intValue(); int indicadorCalcularAcrescimoImpontualidade = acaoCobranca.getIndicadorAcrescimoImpontualidade().intValue(); // [SB0001]-Verificar se o im�vel possue d�bitos que satisfa�a ObterDebitoImovelOuClienteHelper obterDebitoImovelOuCliente = obterDebitoImovelOuCliente( indicadorDebitoImovel, // Indicador de d�bito do im�vel imovel.getId().toString(), // Matr�cula do im�vel null, // C�digo do cliente null, // Tipo de rela��o cliente im�vel cobrancaAcaoAtividadeComando.getAnoMesReferenciaContaInicial().toString(), // Refer�ncia // inicial // do // d�bito cobrancaAcaoAtividadeComando.getAnoMesReferenciaContaFinal().toString(), // Refer�ncia // final // do // d�bito cobrancaAcaoAtividadeComando.getDataVencimentoContaInicial(), // Inicio // Vencimento cobrancaAcaoAtividadeComando.getDataVencimentoContaFinal(), // Final // Vencimento indicadorPagamento, indicadorConta, indicadorDebitoACobrar, indicadorCreditoARalizar, indicadorNotasPromissorias, indicadorGuiaPagamento, indicadorCalcularAcrescimoImpontualidade, null); // BigDecimal valorAcrescimosImpontualidadeTotal = BigDecimal.ZERO; // BigDecimal valorTotalContas = BigDecimal.ZERO; BigDecimal valorDebitoTotalAtualizado = BigDecimal.ZERO; BigDecimal valorTotalGuiasPagamento = BigDecimal.ZERO; BigDecimal valorTotalRestanteServicosACobrar = BigDecimal.ZERO; BigDecimal valorTotalRestanteParcelamentosACobrar = BigDecimal.ZERO; BigDecimal valorCreditoARealizar = BigDecimal.ZERO; BigDecimal valorTotalMultasDasContas = BigDecimal.ZERO; BigDecimal valorTotalJurosMoraDasContas = BigDecimal.ZERO; BigDecimal valorTotalAtualizacoesMonetariasDasContas = BigDecimal.ZERO; BigDecimal descontoTotalPagamentoAVista = new BigDecimal("0.00"); BigDecimal valorPagamentoAVista = new BigDecimal("0.00"); BigDecimal valorTotalImpostosConta = new BigDecimal("0.00"); IndicadoresParcelamentoHelper indicadoresParcelamentoHelper = new IndicadoresParcelamentoHelper(); indicadoresParcelamentoHelper.setIndicadorDebitosACobrar(indicadorDebitoACobrar); indicadoresParcelamentoHelper.setIndicadorCreditoARealizar(indicadorCreditoARalizar); indicadoresParcelamentoHelper.setIndicadorGuiasPagamento(indicadorGuiaPagamento); indicadoresParcelamentoHelper.setIndicadorAcrescimosImpotualidade(indicadorCalcularAcrescimoImpontualidade); indicadoresParcelamentoHelper.setIndicadorContasRevisao(indicadorConta); indicadoresParcelamentoHelper.setIndicadorDividaAtiva(new Integer("3")); Object[] valorDebitoTotalEAcrescimoImpontualidadeTotal = calcularValorTotalDebitoAtualizadoParaParcelamento( obterDebitoImovelOuCliente, indicadoresParcelamentoHelper, false); if (valorDebitoTotalEAcrescimoImpontualidadeTotal != null) { valorDebitoTotalAtualizado = (BigDecimal) valorDebitoTotalEAcrescimoImpontualidadeTotal[0]; // valorAcrescimosImpontualidadeTotal = // (BigDecimal)valorDebitoTotalEAcrescimoImpontualidadeTotal[1]; // valorTotalContas = // (BigDecimal)valorDebitoTotalEAcrescimoImpontualidadeTotal[2]; valorTotalGuiasPagamento = (BigDecimal) valorDebitoTotalEAcrescimoImpontualidadeTotal[3]; valorTotalRestanteServicosACobrar = (BigDecimal) valorDebitoTotalEAcrescimoImpontualidadeTotal[4]; valorTotalRestanteParcelamentosACobrar = (BigDecimal) valorDebitoTotalEAcrescimoImpontualidadeTotal[5]; valorCreditoARealizar = (BigDecimal) valorDebitoTotalEAcrescimoImpontualidadeTotal[6]; valorTotalMultasDasContas = (BigDecimal) valorDebitoTotalEAcrescimoImpontualidadeTotal[7]; valorTotalJurosMoraDasContas = (BigDecimal) valorDebitoTotalEAcrescimoImpontualidadeTotal[8]; valorTotalAtualizacoesMonetariasDasContas = (BigDecimal) valorDebitoTotalEAcrescimoImpontualidadeTotal[9]; } Integer numeroReparcelamentoConsecutivos = 0; if (imovel.getNumeroReparcelamentoConsecutivos() != null) { numeroReparcelamentoConsecutivos = new Integer(imovel.getNumeroReparcelamentoConsecutivos().toString()); } // CARREGANDO O HELPER COM AS INFORMA��ES DO PARCELAMENTO ObterOpcoesDeParcelamentoHelper helper = new ObterOpcoesDeParcelamentoHelper( resolucaoDiretoria.getId(), imovel.getId(), null, imovel.getLigacaoAguaSituacao().getId(), imovel.getLigacaoEsgotoSituacao().getId(), imovel.getImovelPerfil().getId(), "010001", // Refer�ncia inicial do d�bito new Integer("2"), // indicadorRestabelecimento obterDebitoImovelOuCliente.getColecaoContasValores(), valorDebitoTotalAtualizado, valorTotalMultasDasContas, valorTotalJurosMoraDasContas, valorTotalAtualizacoesMonetariasDasContas, numeroReparcelamentoConsecutivos, obterDebitoImovelOuCliente.getColecaoGuiasPagamentoValores(), Usuario.USUARIO_BATCH, valorTotalRestanteParcelamentosACobrar, cobrancaAcaoAtividadeComando.getAnoMesReferenciaContaInicial(), // Refer�ncia // inicial // do // d�bito cobrancaAcaoAtividadeComando.getAnoMesReferenciaContaFinal(), // Refer�ncia // final // do // d�bito indicadoresParcelamentoHelper, valorCreditoARealizar); NegociacaoOpcoesParcelamentoHelper opcoesParcelamento = this.obterOpcoesDeParcelamento(helper); // Defini��o do valor do documento e do valor do desconto if (opcoesParcelamento.getValorTotalDescontoPagamentoAVista() != null) { descontoTotalPagamentoAVista = opcoesParcelamento.getValorTotalDescontoPagamentoAVista(); } valorTotalImpostosConta = obterDebitoImovelOuCliente.obterValorImpostosDasContas(obterDebitoImovelOuCliente .getColecaoContasValores()); valorPagamentoAVista = valorDebitoTotalAtualizado.subtract(descontoTotalPagamentoAVista); valorPagamentoAVista = valorPagamentoAVista.subtract(valorTotalImpostosConta); /* * try { this.repositorioCobranca * .atualizarValoresDocumentoCobrancaCartas( * cobrancaDocumento.getId(),descontoTotalPagamentoAVista * ,valorTotalImpostosConta); } catch (ErroRepositorioException e1) { * e1.printStackTrace(); throw new ControladorException("erro.sistema", * e1); } */ // inicio arquivo!!! String nomeClienteUsuario = null; Collection colecaoCobrancaDocumentoItemConta = null; Integer idClienteResponsavel = null; try { nomeClienteUsuario = this.repositorioClienteImovel.pesquisarNomeClientePorImovel(cobrancaDocumento.getImovel().getId()); idClienteResponsavel = this.repositorioClienteImovel.retornaIdClienteResponsavel(cobrancaDocumento.getImovel().getId()); colecaoCobrancaDocumentoItemConta = // extratoHelper.getColecaoCobrancaDocumentoItemContas(); this.repositorioCobranca.selecionarCobrancaDocumentoItemReferenteConta(cobrancaDocumento); } catch (ErroRepositorioException ex) { ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } if (colecaoCobrancaDocumentoItemConta != null && !colecaoCobrancaDocumentoItemConta.isEmpty()) { cobrancaDocumentoTxt = new StringBuilder(); String idGrupo = null; // id do grupo idGrupo = "" + cobrancaDocumento.getQuadra().getRota().getCobrancaGrupo().getId(); // Grupo-XX Entrega-XXXXXXXXXX String textoGrupoEntrega = "GRUPO-" + idGrupo + " ENTREGA-"; if (cobrancaDocumento.getEmpresa() != null) { textoGrupoEntrega += cobrancaDocumento.getEmpresa().getDescricao(); } cobrancaDocumentoTxt.append(Util.completaString(textoGrupoEntrega, 27)); // Inscri��o String idLocalidade = Util.adicionarZerosEsquedaNumero(3, "" + cobrancaDocumento.getLocalidade().getId()); String codigoSetorComercial = Util.adicionarZerosEsquedaNumero(3, "" + cobrancaDocumento.getCodigoSetorComercial()); String numeroQuadra = Util.adicionarZerosEsquedaNumero(3, "" + cobrancaDocumento.getNumeroQuadra()); String lote = Util.adicionarZerosEsquedaNumero(4, "" + cobrancaDocumento.getImovel().getLote()); String subLote = Util.adicionarZerosEsquedaNumero(3, "" + cobrancaDocumento.getImovel().getSubLote()); cobrancaDocumentoTxt.append(Util.completaString(idLocalidade + "." + codigoSetorComercial + "." + numeroQuadra + "." + lote + "." + subLote, 20)); // Nome da Localidade cobrancaDocumentoTxt.append(Util.completaString("" + cobrancaDocumento.getLocalidade().getDescricao(), 25)); // nome cliente cobrancaDocumentoTxt.append(Util.completaString(nomeClienteUsuario, 50)); String nomeBairro = ""; String nomeMunicipio = ""; String siglaUnidadeFederecao = ""; String cepFormatado = ""; String[] parmsEnderecoImovel = getControladorEndereco().pesquisarEnderecoFormatadoDividido( cobrancaDocumento.getImovel().getId()); if (parmsEnderecoImovel != null) { // nome do bairro nomeBairro = "" + parmsEnderecoImovel[3]; // nome do municipio nomeMunicipio = "" + parmsEnderecoImovel[1]; // sigla da unidade federa��o siglaUnidadeFederecao = parmsEnderecoImovel[2]; cepFormatado = parmsEnderecoImovel[4]; } // endere�o do cliente com op��o de recebimento via correio if (idClienteResponsavel != null) { String[] parmsEndereco = getControladorEndereco().pesquisarEnderecoClienteAbreviadoDividido(idClienteResponsavel); // endere�o sem municipio e unidade federa��o cobrancaDocumentoTxt.append(Util.completaString(parmsEndereco[0], 50)); // nome do bairro nomeBairro = "" + parmsEndereco[3]; // nome do municipio nomeMunicipio = "" + parmsEndereco[1]; // sigla da unidade federa��o siglaUnidadeFederecao = parmsEndereco[2]; cepFormatado = parmsEndereco[4]; } else { if (parmsEnderecoImovel != null) { // endere�o sem municipio e unidade federa��o cobrancaDocumentoTxt.append(Util.completaString(parmsEnderecoImovel[0], 50)); } else { cobrancaDocumentoTxt.append(Util.completaString("", 50)); } } // nome Bairro cobrancaDocumentoTxt.append(Util.completaString(nomeBairro, 25)); // nome municipio cobrancaDocumentoTxt.append(Util.completaString(nomeMunicipio, 24)); // sigla unidade federacao cobrancaDocumentoTxt.append(Util.completaString(siglaUnidadeFederecao, 2)); // CEP // variavel cepFormatado foi preenchido de acordo com a existencia // de // cliente responsavel String cepStr = Util.completaString(cepFormatado, 8); String cepLabeled = "CEP. " + cepStr.substring(0, 5) + "-" + cepStr.substring(5, 8); cobrancaDocumentoTxt.append(Util.completaString(cepLabeled, 14)); // Sequencial de impressao [13] String sequencialImpressaoStr = Util.adicionarZerosEsquedaNumero(6, sequencialImpressao + ""); cobrancaDocumentoTxt.append("SEQ. " + sequencialImpressaoStr.substring(0, 3) + "." + sequencialImpressaoStr.substring(3, 6)); // Matr�cula do im�vel String matriculaStr = Util.adicionarZerosEsquedaNumero(8, "" + cobrancaDocumento.getImovel().getId()); cobrancaDocumentoTxt.append(matriculaStr.substring(0, 7) + "." + matriculaStr.substring(7, 8)); // Endere�o do im�vel sem municipio e unidade federa��o cobrancaDocumentoTxt.append(Util.completaString(parmsEnderecoImovel[0], 50)); // sequencial do documento de cobranca String sequencialStr = Util.adicionarZerosEsquedaNumero(9, "" + cobrancaDocumento.getNumeroSequenciaDocumento()); cobrancaDocumentoTxt.append(sequencialStr.substring(0, 5) + "." + sequencialStr.substring(5, 9)); Date dataEmissao = new Date(); dataEmissao = Util.adicionarNumeroDiasDeUmaData(dataEmissao, acaoCobranca.getNumeroDiasValidade()); String dataVencimento = Util.formatarData(dataEmissao); // Data de vencimento cobrancaDocumentoTxt.append(dataVencimento); // idgrupo cobrancaDocumentoTxt.append(Util.completaString(idGrupo, 2)); cobrancaDocumentoTxt.append("-"); // c�digo da firma if (cobrancaDocumento.getEmpresa() != null) { cobrancaDocumentoTxt.append(Util.adicionarZerosEsquedaNumero(2, cobrancaDocumento.getEmpresa().getId().toString())); } String representacaoNumericaCodBarra = ""; // Obt�m a representa��o num�rica do c�digo de barra representacaoNumericaCodBarra = this.getControladorArrecadacao().obterRepresentacaoNumericaCodigoBarra(5, cobrancaDocumento.getValorDocumento(), cobrancaDocumento.getLocalidade().getId(), cobrancaDocumento.getImovel().getId(), null, null, null, null, String.valueOf(cobrancaDocumento.getNumeroSequenciaDocumento()), cobrancaDocumento.getDocumentoTipo().getId(), null, null, null); // Formata a representa��o n�merica do c�digo de barras String representacaoNumericaCodBarraFormatada = representacaoNumericaCodBarra.substring(0, 11) + " " + representacaoNumericaCodBarra.substring(11, 12) + " " + representacaoNumericaCodBarra.substring(12, 23) + " " + representacaoNumericaCodBarra.substring(23, 24) + " " + representacaoNumericaCodBarra.substring(24, 35) + " " + representacaoNumericaCodBarra.substring(35, 36) + " " + representacaoNumericaCodBarra.substring(36, 47) + " " + representacaoNumericaCodBarra.substring(47, 48); cobrancaDocumentoTxt.append(representacaoNumericaCodBarraFormatada); // Cria o objeto para gerar o c�digo de barras no padr�o intercalado // 2 de 5 Interleaved2of5 codigoBarraIntercalado2de5 = new Interleaved2of5(); // Recupera a representa��o n�merica do c�digo de barras sem os // d�gitos verificadores String representacaoCodigoBarrasSemDigitoVerificador = representacaoNumericaCodBarra.substring(0, 11) + representacaoNumericaCodBarra.substring(12, 23) + representacaoNumericaCodBarra.substring(24, 35) + representacaoNumericaCodBarra.substring(36, 47); cobrancaDocumentoTxt.append(codigoBarraIntercalado2de5.encodeValue(representacaoCodigoBarrasSemDigitoVerificador)); int quantidadesContas = 0; quantidadesContas = 24; // retorna o indicador de estouro e formata o cobran�aDocumentoTxt // com os dados formatarCobrancaDocumentoItem(cobrancaDocumentoTxt, colecaoCobrancaDocumentoItemConta, quantidadesContas, cobrancaDocumento); // somat�rio das guias cobrancaDocumentoTxt .append(Util.completaStringComEspacoAEsquerda(Util.formataBigDecimal(valorTotalGuiasPagamento, 2, true), 14)); // somat�rio dos d�bitos a cobrar de servi�os cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda( Util.formataBigDecimal(valorTotalRestanteServicosACobrar, 2, true), 14)); // somat�rio dos d�bitos a cobrar de parcelamento cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda( Util.formataBigDecimal(valorTotalRestanteParcelamentosACobrar, 2, true), 14)); // somat�rio dos creditos a realizar cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(Util.formataBigDecimal(valorCreditoARealizar, 2, true), 14)); // valor do debito atualizado cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(Util.formataBigDecimal(valorDebitoTotalAtualizado, 2, true), 14)); // valor do documento de pagamento a vista cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(Util.formataBigDecimal(valorPagamentoAVista, 2, true), 14)); ArrayList colecaoOpcoesParcelamento = (ArrayList) opcoesParcelamento.getOpcoesParcelamento(); String asteriscos = "**,**"; if (colecaoOpcoesParcelamento != null && !colecaoOpcoesParcelamento.isEmpty()) { OpcoesParcelamentoHelper opcoesHelper = null; try { opcoesHelper = ((OpcoesParcelamentoHelper) colecaoOpcoesParcelamento.get(3)); } catch (IndexOutOfBoundsException e) { opcoesHelper = null; } if (opcoesHelper != null) { if (opcoesHelper.getValorEntradaMinima() != null && !opcoesHelper.getValorEntradaMinima().equals(new BigDecimal("0.00"))) { cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda( Util.formataBigDecimal(opcoesHelper.getValorEntradaMinima(), 2, true), 14)); } else { cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(asteriscos, 14)); } cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda( Util.formataBigDecimal(opcoesHelper.getValorPrestacao(), 2, true), 14)); cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda( Util.formataBigDecimal(opcoesHelper.getTaxaJuros(), 2, true), 4)); } else { cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(asteriscos, 14)); cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(asteriscos, 14)); cobrancaDocumentoTxt.append("*,**"); } try { opcoesHelper = ((OpcoesParcelamentoHelper) colecaoOpcoesParcelamento.get(11)); } catch (IndexOutOfBoundsException e) { opcoesHelper = null; } if (opcoesHelper != null) { if (opcoesHelper.getValorEntradaMinima() != null && !opcoesHelper.getValorEntradaMinima().equals(new BigDecimal("0.00"))) { cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda( Util.formataBigDecimal(opcoesHelper.getValorEntradaMinima(), 2, true), 14)); } else { cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(asteriscos, 14)); } cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda( Util.formataBigDecimal(opcoesHelper.getValorPrestacao(), 2, true), 14)); cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda( Util.formataBigDecimal(opcoesHelper.getTaxaJuros(), 2, true), 4)); } else { cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(asteriscos, 14)); cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(asteriscos, 14)); cobrancaDocumentoTxt.append("*,**"); } try { opcoesHelper = ((OpcoesParcelamentoHelper) colecaoOpcoesParcelamento.get(23)); } catch (IndexOutOfBoundsException e) { opcoesHelper = null; } if (opcoesHelper != null) { if (opcoesHelper.getValorEntradaMinima() != null && !opcoesHelper.getValorEntradaMinima().equals(new BigDecimal("0.00"))) { cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda( Util.formataBigDecimal(opcoesHelper.getValorEntradaMinima(), 2, true), 14)); } else { cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(asteriscos, 14)); } cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda( Util.formataBigDecimal(opcoesHelper.getValorPrestacao(), 2, true), 14)); cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda( Util.formataBigDecimal(opcoesHelper.getTaxaJuros(), 2, true), 4)); } else { cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(asteriscos, 14)); cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(asteriscos, 14)); cobrancaDocumentoTxt.append("*,**"); } try { opcoesHelper = ((OpcoesParcelamentoHelper) colecaoOpcoesParcelamento.get(35)); } catch (IndexOutOfBoundsException e) { opcoesHelper = null; } if (opcoesHelper != null) { if (opcoesHelper.getValorEntradaMinima() != null && !opcoesHelper.getValorEntradaMinima().equals(new BigDecimal("0.00"))) { cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda( Util.formataBigDecimal(opcoesHelper.getValorEntradaMinima(), 2, true), 14)); } else { cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(asteriscos, 14)); } cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda( Util.formataBigDecimal(opcoesHelper.getValorPrestacao(), 2, true), 14)); cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda( Util.formataBigDecimal(opcoesHelper.getTaxaJuros(), 2, true), 4)); } else { cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(asteriscos, 14)); cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(asteriscos, 14)); cobrancaDocumentoTxt.append("*,**"); } try { opcoesHelper = ((OpcoesParcelamentoHelper) colecaoOpcoesParcelamento.get(47)); } catch (IndexOutOfBoundsException e) { opcoesHelper = null; } if (opcoesHelper != null) { if (opcoesHelper.getValorEntradaMinima() != null && !opcoesHelper.getValorEntradaMinima().equals(new BigDecimal("0.00"))) { cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda( Util.formataBigDecimal(opcoesHelper.getValorEntradaMinima(), 2, true), 14)); } else { cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(asteriscos, 14)); } cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda( Util.formataBigDecimal(opcoesHelper.getValorPrestacao(), 2, true), 14)); cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda( Util.formataBigDecimal(opcoesHelper.getTaxaJuros(), 2, true), 4)); } else { cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(asteriscos, 14)); cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(asteriscos, 14)); cobrancaDocumentoTxt.append("*,**"); } } else { for (int i = 0; i < 5; i++) { cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(asteriscos, 14)); cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(asteriscos, 14)); cobrancaDocumentoTxt.append("*,**"); } } String txtString = cobrancaDocumentoTxt.toString(); txtString = txtString.replace('\'', ' '); txtString = txtString.replace('`', ' '); String[] retorno = { txtString, sequencialImpressaoStr }; return retorno; } return null; } /** * [UC0349] Emitir Documento de Cobran�a Cartas Campanha * * @author Hugo Amorim, Mariana Victor * @date 23/04/2010, 28/03/2011 */ public void emitirDocumentoCobrancaCartasCampanha(CobrancaAcaoAtividadeCronograma cobrancaAcaoAtividadeCronograma, CobrancaAcaoAtividadeComando cobrancaAcaoAtividadeComando, CobrancaAcao acaoCobranca, CobrancaGrupo grupoCobranca) throws ControladorException { BufferedWriter out = null; ZipOutputStream zos = null; File leitura = null; Date dataAtual = new Date(); String nomeZip = null; // Arquivo txt para dados de ficha de compensa��o (Boleto) BufferedWriter outBoleto = null; ZipOutputStream zosBoleto = null; File leituraBoleto = null; String nomeZipBoleto = null; List<Object[]> listaBoleto = new ArrayList<Object[]>(); try { SistemaParametro sistemaParametro = this.getControladorUtil().pesquisarParametrosDoSistema(); Integer idCronogramaAtividadeAcaoCobranca = null; Integer idComandoAtividadeAcaoCobranca = null; if (cobrancaAcaoAtividadeCronograma != null && cobrancaAcaoAtividadeCronograma.getId() != null) { idCronogramaAtividadeAcaoCobranca = cobrancaAcaoAtividadeCronograma.getId(); nomeZip = "CARTAS_PARCELAMENTO_" + idCronogramaAtividadeAcaoCobranca + "_" + Util.formatarData(dataAtual) + Util.formatarHoraSemDataSemDoisPontos(dataAtual); nomeZipBoleto = "CARTAS_PARCELAMENTO_BOLETO_" + idCronogramaAtividadeAcaoCobranca + "_" + Util.formatarData(dataAtual) + Util.formatarHoraSemDataSemDoisPontos(dataAtual); } if (cobrancaAcaoAtividadeComando != null && cobrancaAcaoAtividadeComando.getId() != null) { idComandoAtividadeAcaoCobranca = cobrancaAcaoAtividadeComando.getId(); nomeZip = "CARTAS_PARCELAMENTO_" + idComandoAtividadeAcaoCobranca + "_" + Util.formatarData(dataAtual) + Util.formatarHoraSemDataSemDoisPontos(dataAtual); nomeZipBoleto = "CARTAS_PARCELAMENTO_BOLETO_" + idComandoAtividadeAcaoCobranca + "_" + Util.formatarData(dataAtual) + Util.formatarHoraSemDataSemDoisPontos(dataAtual); } // Definindo arquivo para escrita nomeZip = nomeZip.replace("/", "_"); File compactado = new File(nomeZip + ".zip"); leitura = new File(nomeZip + ".txt"); zos = new ZipOutputStream(new FileOutputStream(compactado)); out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(leitura.getAbsolutePath()))); // pegar o arquivo, zipar pasta e arquivo e escrever no stream System.out.println("***************************************"); System.out.println("INICO DA CRIACAO DO ARQUIVO"); System.out.println("***************************************"); System.out.println("***************************************"); System.out.println("ENTROU NO CARTAS"); System.out.println("***************************************"); Collection colecaoCobrancaDocumento = repositorioCobranca.pesquisarDocumentoCobrancaImpressaoFichaCompensacao( idComandoAtividadeAcaoCobranca, idCronogramaAtividadeAcaoCobranca); System.out.println("***************************************"); System.out.println("QTD DE COBRANCA DOCUMENTO:" + colecaoCobrancaDocumento.size()); System.out.println("***************************************"); if (colecaoCobrancaDocumento != null && !colecaoCobrancaDocumento.isEmpty()) { Iterator iterCobrancaDocumentoImpressao = colecaoCobrancaDocumento.iterator(); while (iterCobrancaDocumentoImpressao.hasNext()) { Object[] dadosTxt = (Object[]) iterCobrancaDocumentoImpressao.next(); if (sistemaParametro.getValorDemonstrativoParcelamentoFichaComp() != null && !sistemaParametro.getValorDemonstrativoParcelamentoFichaComp().equals(BigDecimal.ZERO) && dadosTxt[1] != null) { listaBoleto.add(dadosTxt); } else { String linhaTxt = ""; if (dadosTxt[0] != null) { linhaTxt = (String) dadosTxt[0]; } StringBuilder cobrancaDocumentoTxt = new StringBuilder(); cobrancaDocumentoTxt.append(linhaTxt); cobrancaDocumentoTxt.append(System.getProperty("line.separator")); out.write(cobrancaDocumentoTxt.toString()); } } } if (listaBoleto != null && !listaBoleto.isEmpty()) { // Definindo arquivo de boleto para escrita nomeZipBoleto = nomeZipBoleto.replace("/", "_"); File compactadoBoleto = new File(nomeZipBoleto + ".zip"); leituraBoleto = new File(nomeZipBoleto + ".txt"); zosBoleto = new ZipOutputStream(new FileOutputStream(compactadoBoleto)); outBoleto = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(leituraBoleto.getAbsolutePath()))); Iterator iterator = listaBoleto.iterator(); while (iterator.hasNext()) { Object[] dadosTxt = (Object[]) iterator.next(); String linhaTxt = ""; if (dadosTxt[0] != null) { linhaTxt = (String) dadosTxt[0]; } String conteudoFichaCompensacao = (String) dadosTxt[1]; StringBuilder cobrancaDocumentoTxt = new StringBuilder(); cobrancaDocumentoTxt.append(linhaTxt); cobrancaDocumentoTxt.append(conteudoFichaCompensacao); cobrancaDocumentoTxt.append(System.getProperty("line.separator")); outBoleto.write(cobrancaDocumentoTxt.toString()); } outBoleto.flush(); } out.flush(); System.out.println("***************************************"); System.out.println("FIM DA CRIACAO DO ARQUIVO"); System.out.println("***************************************"); } catch (ErroRepositorioException ex) { ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } catch (IOException e) { e.printStackTrace(); throw new ControladorException("erro.sistema", e); } catch (Exception e) { e.printStackTrace(); throw new ControladorException("erro.sistema", e); } finally { try { out.close(); ZipUtil.adicionarArquivo(zos, leitura); // close the stream zos.close(); leitura.delete(); if (listaBoleto != null && !listaBoleto.isEmpty()) { outBoleto.close(); ZipUtil.adicionarArquivo(zosBoleto, leituraBoleto); zosBoleto.close(); leituraBoleto.delete(); } } catch (IOException e) { e.printStackTrace(); throw new ControladorException("erro.sistema", e); } } } /** * [UC0251] Gerar Atividade de A��o de Cobran�a - step2 * * @author Pedro Alexandre, Ivan Sergio, Raphael Rossiter,Vivianne Sousa * @date 01/02/2006, 18/05/2009, 20/07/2009 , 05/04/2010 * */ public void atualizarComandoAtividadeAcaoCobranca(CobrancaGrupo grupoCobranca, int anoMesReferenciaCicloCobranca, CobrancaAcaoAtividadeCronograma cobrancaAcaoAtividadeCronograma, CobrancaAcaoAtividadeComando cobrancaAcaoAtividadeComando, CobrancaAcao acaoCobranca, Integer indicadorCriterio, CobrancaCriterio criterioCobranca, int idFuncionalidadeIniciada, Integer idCobrancaDocumentoControleGeracao) throws ControladorException { int idUnidadeIniciada = 0; System.out.println("*********************************"); System.out.println("INICIO DO ATUALIZAR COMANDO DE ATIVIDADE DE ACAO DE COBRANCA"); System.out.println("*********************************"); idUnidadeIniciada = getControladorBatch().iniciarUnidadeProcessamentoBatch(idFuncionalidadeIniciada, UnidadeProcessamento.FUNCIONALIDADE, 0); try { Date dataCorrente = new Date(); Collection<CobrancaCriterioLinha> colecaoCobrancaCriterioLinhaComando = null; // se o indicador do crit�rio for igual a 2(dois) - // "usa o crit�rio do comando" if (indicadorCriterio.intValue() == 2) { colecaoCobrancaCriterioLinhaComando = repositorioCobranca.pesquisarCobrancaCriterioLinhaCriterio(criterioCobranca.getId()); } if (colecaoCobrancaCriterioLinhaComando != null) { System.out.println("*********************************"); System.out.println("QTD DE COBRANCA CRITERIO LINHA:" + colecaoCobrancaCriterioLinhaComando.size()); System.out.println("*********************************"); } // [SB0006] - Remover documentos de cobran�a excedentes // Alterado por Francisco / Ana Breda em 14/04/09 // Foi solicitada uma meta de quantidade de documentos a serem // gerados // al�m dessa meta, s� dever�o permanecer documentos com valores // acima // do valor limite definido na tabela de ciclometa // boolean houveRemocaoDocumentos = removerDocumentosCobrancaExcedentes(grupoCobranca, anoMesReferenciaCicloCobranca, cobrancaAcaoAtividadeCronograma, cobrancaAcaoAtividadeComando, acaoCobranca, idCobrancaDocumentoControleGeracao); /** * Item 6 * *********************************************************** * *********************** */ Integer quantidadeDocumentosAtual = null; Integer quantidadeItensCobradosAtual = null; BigDecimal valorDocumentoAtual = null; /** * Item 6.1 * ********************************************************* * ********************** */ if (cobrancaAcaoAtividadeCronograma != null && cobrancaAcaoAtividadeCronograma.getId() != null) { // Alterado por Francisco, em 30/07/09 // Caso a acao de cobranca use metas, os documentos gerados // podem ter sido reduzidos // para contemplar as metas, dai, os totais de quantidade de // documento, valor total realizado, e quantidade // de itens dever� ser calculados neste momento, apos a execucao // do procedimento de removerDocumentosCobrancaExcedentes // if (houveRemocaoDocumentos){ // Object[] totais = // repositorioCobranca.calcularTotaisCronogramaAcaoCobranca(cobrancaAcaoAtividadeCronograma.getId()); // quantidadeItensCobradosAtual = (Integer) totais[0]; // valorDocumentoAtual = (BigDecimal) totais[1]; // quantidadeDocumentosAtual = (Integer) totais[2]; // // cobrancaAcaoAtividadeCronograma.setQuantidadeDocumentos(quantidadeDocumentosAtual); // cobrancaAcaoAtividadeCronograma.setQuantidadeItensCobrados(quantidadeItensCobradosAtual); // cobrancaAcaoAtividadeCronograma.setValorDocumentos(valorDocumentoAtual); // // } else { if (cobrancaAcaoAtividadeCronograma.getCobrancaAtividade().getId().toString().equals(CobrancaAtividade.EMITIR.toString())) { Object[] totais = repositorioCobranca.calcularTotaisCronogramaAcaoCobranca(cobrancaAcaoAtividadeCronograma.getId()); quantidadeItensCobradosAtual = (Integer) totais[0]; valorDocumentoAtual = (BigDecimal) totais[1]; quantidadeDocumentosAtual = (Integer) totais[2]; } else if (cobrancaAcaoAtividadeCronograma.getCobrancaAtividade().getId().toString() .equals(CobrancaAtividade.SIMULAR.toString())) { quantidadeDocumentosAtual = cobrancaAcaoAtividadeCronograma.getQuantidadeDocumentos(); quantidadeItensCobradosAtual = cobrancaAcaoAtividadeCronograma.getQuantidadeDocumentos(); valorDocumentoAtual = cobrancaAcaoAtividadeCronograma.getValorDocumentos(); } if (quantidadeDocumentosAtual == null) { quantidadeDocumentosAtual = new Integer(0); } if (quantidadeItensCobradosAtual == null) { quantidadeItensCobradosAtual = new Integer(0); } if (valorDocumentoAtual == null) { valorDocumentoAtual = new BigDecimal("0.00"); } if (cobrancaAcaoAtividadeCronograma.getCobrancaAtividade().getId().toString().equals(CobrancaAtividade.EMITIR.toString())) { cobrancaAcaoAtividadeCronograma.setQuantidadeDocumentos(quantidadeDocumentosAtual); cobrancaAcaoAtividadeCronograma.setQuantidadeItensCobrados(quantidadeItensCobradosAtual); cobrancaAcaoAtividadeCronograma.setValorDocumentos(valorDocumentoAtual); } else if (cobrancaAcaoAtividadeCronograma.getCobrancaAtividade().getId().toString() .equals(CobrancaAtividade.EMITIR.toString())) { // pesquisa na tabela CobrancaDocumentoControleGeracao // a quantidade de Cobranca Documento,a quantidade de // Cobranca Documento Item e // o valor total de Cobranca Documento gerados CobrancaDocumentoControleGeracao cobrancaDocumentoControleGeracao = repositorioCobranca .pesquisarCobrancaDocumentoControleGeracao(idCobrancaDocumentoControleGeracao); cobrancaAcaoAtividadeCronograma.setQuantidadeDocumentos(quantidadeDocumentosAtual + cobrancaDocumentoControleGeracao.getQuantidadeCobrancaDocumento()); cobrancaAcaoAtividadeCronograma.setQuantidadeItensCobrados(quantidadeItensCobradosAtual + cobrancaDocumentoControleGeracao.getQuantidadeCobrancaDocumentoItem()); cobrancaAcaoAtividadeCronograma.setValorDocumentos(valorDocumentoAtual.add(cobrancaDocumentoControleGeracao .getValorTotalCobrancaDocumentos())); } cobrancaAcaoAtividadeCronograma.setRealizacao(dataCorrente); cobrancaAcaoAtividadeCronograma.setUltimaAlteracao(dataCorrente); getControladorUtil().atualizar(cobrancaAcaoAtividadeCronograma); /** * Item 6.2 - alterado por pedro alexandre dia 16/11/2006 * ********************************** */ } else if (cobrancaAcaoAtividadeComando != null && cobrancaAcaoAtividadeComando.getId() != null) { if (cobrancaAcaoAtividadeComando.getCobrancaAtividade().getId().toString().equals(CobrancaAtividade.EMITIR.toString())) { Object[] totais = repositorioCobranca.calcularTotaisComandoAcaoCobranca(cobrancaAcaoAtividadeComando.getId()); quantidadeItensCobradosAtual = (Integer) totais[0]; valorDocumentoAtual = (BigDecimal) totais[1]; quantidadeDocumentosAtual = (Integer) totais[2]; } else if (cobrancaAcaoAtividadeComando.getCobrancaAtividade().getId().toString() .equals(CobrancaAtividade.SIMULAR.toString())) { quantidadeDocumentosAtual = cobrancaAcaoAtividadeComando.getQuantidadeDocumentos(); quantidadeItensCobradosAtual = cobrancaAcaoAtividadeComando.getQuantidadeDocumentos(); valorDocumentoAtual = cobrancaAcaoAtividadeComando.getValorDocumentos(); } // PESQUISA if (quantidadeDocumentosAtual == null) { quantidadeDocumentosAtual = new Integer(0); } if (quantidadeItensCobradosAtual == null) { quantidadeItensCobradosAtual = new Integer(0); } if (valorDocumentoAtual == null) { valorDocumentoAtual = new BigDecimal("0.00"); } // caso a quantidade de dias de realiza��o seja diferente de // nulo if (cobrancaAcaoAtividadeComando.getQuantidadeDiasRealizacao() != null) { // caso a atividade seja diferente de nulo if (cobrancaAcaoAtividadeComando.getCobrancaAtividade() != null) { // caso a atividade seja EMITIR, ent�o a data de // encerramento prevista recebe soma a data de // realiza��o com a quantidade de dias de realiza��o if (cobrancaAcaoAtividadeComando.getCobrancaAtividade().getId().equals(CobrancaAtividade.EMITIR)) { Date dataEncerramentoPrevista = Util.adicionarNumeroDiasDeUmaData(dataCorrente, cobrancaAcaoAtividadeComando.getQuantidadeDiasRealizacao()); cobrancaAcaoAtividadeComando.setDataEncerramentoPrevista(dataEncerramentoPrevista); } } } if (cobrancaAcaoAtividadeComando.getCobrancaAtividade().getId().equals(CobrancaAtividade.SIMULAR)) { cobrancaAcaoAtividadeComando.setDataEncerramentoPrevista(dataCorrente); cobrancaAcaoAtividadeComando.setDataEncerramentoRealizada(dataCorrente); } // pesquisa na tabela CobrancaDocumentoControleGeracao // a quantidade de Cobranca Documento,a quantidade de Cobranca // Documento Item e // o valor total de Cobranca Documento gerados if (cobrancaAcaoAtividadeComando.getCobrancaAtividade().getId().toString().equals(CobrancaAtividade.EMITIR.toString())) { cobrancaAcaoAtividadeComando.setQuantidadeDocumentos(quantidadeDocumentosAtual); cobrancaAcaoAtividadeComando.setQuantidadeItensCobrados(quantidadeItensCobradosAtual); cobrancaAcaoAtividadeComando.setValorDocumentos(valorDocumentoAtual); } else if (cobrancaAcaoAtividadeComando.getCobrancaAtividade().getId().toString() .equals(CobrancaAtividade.SIMULAR.toString())) { CobrancaDocumentoControleGeracao cobrancaDocumentoControleGeracao = repositorioCobranca .pesquisarCobrancaDocumentoControleGeracao(idCobrancaDocumentoControleGeracao); cobrancaAcaoAtividadeComando.setQuantidadeDocumentos(quantidadeDocumentosAtual + cobrancaDocumentoControleGeracao.getQuantidadeCobrancaDocumento()); cobrancaAcaoAtividadeComando.setQuantidadeItensCobrados(quantidadeItensCobradosAtual + cobrancaDocumentoControleGeracao.getQuantidadeCobrancaDocumentoItem()); cobrancaAcaoAtividadeComando.setValorDocumentos(valorDocumentoAtual.add(cobrancaDocumentoControleGeracao .getValorTotalCobrancaDocumentos())); } cobrancaAcaoAtividadeComando.setRealizacao(dataCorrente); cobrancaAcaoAtividadeComando.setUltimaAlteracao(dataCorrente); getControladorUtil().atualizar(cobrancaAcaoAtividadeComando); } /** * Fim Item 6 * ******************************************************* * *************************** */ getControladorBatch().encerrarUnidadeProcessamentoBatch(null, idUnidadeIniciada, false); } catch (Throwable e) { // Este catch serve para interceptar qualquer exce��o que o processo // batch venha a lan�ar e garantir que a unidade de processamento do // batch ser� atualizada com o erro ocorrido e.printStackTrace(); getControladorBatch().encerrarUnidadeProcessamentoBatch(e, idUnidadeIniciada, true); throw new ControladorException("erro.sistema", e); } } /** * [UC0251] Gerar Atividade de A��o de Cobran�a - step3 * * @author Pedro Alexandre, Ivan Sergio, Raphael Rossiter,Vivianne Sousa * @date 01/02/2006, 18/05/2009, 20/07/2009 , 05/04/2010 * */ public void emitirDocumentoCobranca(CobrancaGrupo grupoCobranca, CobrancaAcaoAtividadeCronograma cobrancaAcaoAtividadeCronograma, CobrancaAcaoAtividadeComando cobrancaAcaoAtividadeComando, CobrancaAcao acaoCobranca, CobrancaCriterio criterioCobranca, Date dataAtual, int idFuncionalidadeIniciada) throws ControladorException { int idUnidadeIniciada = 0; System.out.println("*********************************"); System.out.println("INICIO DO GERAR ACAO DE COBRANCA"); System.out.println("*********************************"); idUnidadeIniciada = getControladorBatch().iniciarUnidadeProcessamentoBatch(idFuncionalidadeIniciada, UnidadeProcessamento.FUNCIONALIDADE, 0); try { Integer idCobrancaAtividadeAcaoCronogramaEmitir = cobrancaAcaoAtividadeCronograma != null ? cobrancaAcaoAtividadeCronograma .getId() : null; Integer idCobrancaAtividadeAcaoComandoEmitir = cobrancaAcaoAtividadeComando != null ? cobrancaAcaoAtividadeComando.getId() : null; // deleta os documentos de cobranca impress�o pelo // idCobrancaAtividadeAcaoComando // ou pelo idCobrancaAtividadeAcaoCronograma repositorioCobranca.deletarDocumentoCobrancaImpressao(idCobrancaAtividadeAcaoComandoEmitir, idCobrancaAtividadeAcaoCronogramaEmitir); // 7. O sistema emite os documento de cobran�a gerados if (acaoCobranca.getId() != null) { EmissaoDocumentoCobrancaHelper helper = new EmissaoDocumentoCobrancaHelper(); helper.setAcaoCobranca(acaoCobranca); helper.setCobrancaAcaoAtividadeCronograma(cobrancaAcaoAtividadeCronograma); helper.setCobrancaAcaoAtividadeComando(cobrancaAcaoAtividadeComando); helper.setDataAtual(dataAtual); helper.setGrupoCobranca(grupoCobranca); helper.setCriterioCobranca(criterioCobranca); this.gerarAtividadeAcaoCobrancaEmissaoDocumento(helper); } // -------------------------------------------------------- // Registrar o fim da execu��o da Unidade de Processamento // -------------------------------------------------------- getControladorBatch().encerrarUnidadeProcessamentoBatch(null, idUnidadeIniciada, false); } catch (Throwable e) { // Este catch serve para interceptar qualquer exce��o que o processo // batch venha a lan�ar e garantir que a unidade de processamento do // batch ser� atualizada com o erro ocorrido e.printStackTrace(); getControladorBatch().encerrarUnidadeProcessamentoBatch(e, idUnidadeIniciada, true); throw new ControladorException("erro.sistema", e); } } /** * [UC0251] Gerar Atividade de A��o de Cobran�a [SB0002] Gerar Atividade de * A��o de Cobran�a para os Im�veis da Lista de Rotas */ private void gerarAtividadeAcaoCobrancaParaImoveisListaRotasComQuantidadeMaxima( CobrancaAcaoAtividadeCronograma cobrancaAcaoAtividadeCronograma, CobrancaAcaoAtividadeComando cobrancaAcaoAtividadeComando, Rota rota, Integer indicadorCriterio, CobrancaAcao acaoCobranca, CobrancaAtividade atividadeCobranca, Collection<CobrancaCriterioLinha> colecaoCobrancaCriterioLinhaComando, CobrancaCriterio cobrancaCriterioComando, String anoMesReferenciaInicial, String anoMesReferenciaFinal, Date dataVencimentoInicial, Date dataVencimentoFinal, Date dataAtual, Integer quantidadeMaxima, Integer idCobrancaDocumentoControleGeracao) throws ControladorException { try { Integer quantidadeCobrancaDocumento = repositorioCobranca.pesquisarQuantidadeCobrancaDocumento(idCobrancaDocumentoControleGeracao); if (quantidadeCobrancaDocumento.compareTo(quantidadeMaxima) < 0) { Integer quantidadeCobrancaDocumentoItem = 0; BigDecimal valorTotalDocumentoCobranca = new BigDecimal("0.00"); CobrancaCriterio cobrancaCriterio = null; Collection<CobrancaCriterioLinha> colecaoCobrancaCriterioLinha = new ArrayList(); Object[] arrayImovel = null; GerarAtividadeAcaoCobrancaHelper gerarAtividadeAcaoCobrancaHelperTemp = new GerarAtividadeAcaoCobrancaHelper(); if (indicadorCriterio.intValue() == 1) { CobrancaCriterio cobrancaCriterioRota = null; cobrancaCriterioRota = repositorioCobranca.pesquisarCriterioCobrancaRota(rota.getId(), acaoCobranca.getId()); colecaoCobrancaCriterioLinha = repositorioCobranca.pesquisarCobrancaCriterioLinhaCriterio(cobrancaCriterioRota.getId()); cobrancaCriterio = cobrancaCriterioRota; } else { colecaoCobrancaCriterioLinha = colecaoCobrancaCriterioLinhaComando; cobrancaCriterio = cobrancaCriterioComando; } Collection idsSituacaoLigacaoAgua = new ArrayList(); Collection idsSituacaoLigacaoEsgoto = new ArrayList(); Collection colecaoSituacoesLigacaoAgua = repositorioCobranca.pesquisarCobrancaCriterioSituacaoLigacaoAgua(cobrancaCriterio.getId()); if (colecaoSituacoesLigacaoAgua != null && !colecaoSituacoesLigacaoAgua.isEmpty()) { for (Iterator iter = colecaoSituacoesLigacaoAgua.iterator(); iter.hasNext();) { CriterioSituacaoLigacaoAgua critSitLigAgua = (CriterioSituacaoLigacaoAgua) iter.next(); idsSituacaoLigacaoAgua.add(critSitLigAgua.getComp_id().getLigacaoAguaSituacao().getId()); } } else { if (acaoCobranca.getLigacaoAguaSituacao() != null) { idsSituacaoLigacaoAgua.add(acaoCobranca.getLigacaoAguaSituacao().getId()); } } Collection colecaoSituacoesLigacaoEsgoto = repositorioCobranca .pesquisarCobrancaCriterioSituacaoLigacaoEsgoto(cobrancaCriterio.getId()); if (colecaoSituacoesLigacaoEsgoto != null && !colecaoSituacoesLigacaoEsgoto.isEmpty()) { for (Iterator iter = colecaoSituacoesLigacaoEsgoto.iterator(); iter.hasNext();) { CriterioSituacaoLigacaoEsgoto critSitLigEsgoto = (CriterioSituacaoLigacaoEsgoto) iter.next(); idsSituacaoLigacaoEsgoto.add(critSitLigEsgoto.getComp_id().getLigacaoEsgotoSituacao().getId()); } } else { if (acaoCobranca.getLigacaoEsgotoSituacao() != null) { idsSituacaoLigacaoEsgoto.add(acaoCobranca.getLigacaoEsgotoSituacao().getId()); } } Imovel imovel = null; LigacaoAguaSituacao ligacaoAguaSituacao = null; LigacaoEsgotoSituacao ligacaoEsgotoSituacao = null; ImovelPerfil imovelPerfil = null; Empresa empresa = null; Quadra quadra = null; Localidade localidade = null; SetorComercial setorComercial = null; CobrancaSituacaoTipo cobrancaSituacaoTipo = null; boolean flagTerminou = false; int numeroInicial = 0; int numeroMaximo = 100; while (!flagTerminou) { Collection colecaoImoveis = getControladorImovel().pesquisarImoveisPorRotaComPaginacao(rota, idsSituacaoLigacaoAgua, idsSituacaoLigacaoEsgoto, numeroInicial, numeroMaximo); System.out.println(" Gerar Doc Cob - Qtd Imoveis iniciais: " + colecaoImoveis.size()); if (colecaoImoveis != null && !colecaoImoveis.isEmpty()) { Iterator iteratorColecaoImoveis = colecaoImoveis.iterator(); if (colecaoImoveis.size() < numeroMaximo) { flagTerminou = true; } while (iteratorColecaoImoveis.hasNext()) { arrayImovel = (Object[]) iteratorColecaoImoveis.next(); if (quantidadeCobrancaDocumento.compareTo(quantidadeMaxima) < 0) { imovel = new Imovel(); ligacaoAguaSituacao = new LigacaoAguaSituacao(); ligacaoEsgotoSituacao = new LigacaoEsgotoSituacao(); imovelPerfil = new ImovelPerfil(); empresa = new Empresa(); quadra = new Quadra(); localidade = new Localidade(); setorComercial = new SetorComercial(); if (arrayImovel[0] != null) { imovel.setId((Integer) arrayImovel[0]); } if (arrayImovel[1] != null) { ligacaoAguaSituacao.setId((Integer) arrayImovel[1]); } if (arrayImovel[2] != null) { ligacaoEsgotoSituacao.setId((Integer) arrayImovel[2]); } if (arrayImovel[3] != null) { imovelPerfil.setId((Integer) arrayImovel[3]); } if (acaoCobranca.getServicoTipo() != null && acaoCobranca.getServicoTipo().getId() != null) { if (arrayImovel[13] != null) { empresa.setId((Integer) arrayImovel[13]); } } else { if (arrayImovel[4] != null) { empresa.setId((Integer) arrayImovel[4]); } } if (arrayImovel[5] != null) { localidade.setId((Integer) arrayImovel[5]); } if (arrayImovel[6] != null) { setorComercial.setCodigo(((Integer) arrayImovel[6]).intValue()); } if (arrayImovel[7] != null) { quadra.setNumeroQuadra(((Integer) arrayImovel[7]).intValue()); } if (arrayImovel[8] != null) { imovel.setLote(((Short) arrayImovel[8]).shortValue()); } if (arrayImovel[9] != null) { imovel.setLote(((Short) arrayImovel[9]).shortValue()); } if (arrayImovel[10] != null) { quadra.setId(((Integer) arrayImovel[10]).intValue()); } if (arrayImovel[11] != null) { cobrancaSituacaoTipo = new CobrancaSituacaoTipo(); cobrancaSituacaoTipo.setId(((Integer) arrayImovel[11]).intValue()); } if (arrayImovel[12] != null) { imovel.setIndicadorDebitoConta((Short) arrayImovel[12]); } imovel.setLigacaoAguaSituacao(ligacaoAguaSituacao); imovel.setLigacaoEsgotoSituacao(ligacaoEsgotoSituacao); imovel.setImovelPerfil(imovelPerfil); rota.setEmpresa(empresa); quadra.setRota(rota); imovel.setQuadra(quadra); imovel.setLocalidade(localidade); imovel.setSetorComercial(setorComercial); imovel.setCobrancaSituacaoTipo(cobrancaSituacaoTipo); gerarAtividadeAcaoCobrancaHelperTemp = gerarAtividadeAcaoCobrancaParaImovel( cobrancaAcaoAtividadeCronograma, cobrancaAcaoAtividadeComando, imovel, indicadorCriterio, acaoCobranca, atividadeCobranca, cobrancaCriterio, colecaoCobrancaCriterioLinha, anoMesReferenciaInicial, anoMesReferenciaFinal, dataVencimentoInicial, dataVencimentoFinal, dataAtual); // se o objeto for diferente de nulo // recupera a quantidade de documentos de // cobran�a, // quantidade de itens cobrados e o valor do // documento do objeto retornado pelo [SB0003] if (gerarAtividadeAcaoCobrancaHelperTemp != null) { // ***************************************************** // alterado por Vivianne Sousa - 07/04/2010 // o batch inicialmente funcionava // sequencialmente // � importante manter a // quantidadeCobrancaDocumento atualizada // para q o batch funcione corretamente com // paralelismo. // atualizar quantidade de cobranca // documento na tabela // cobranca_documento_controle_geracao repositorioCobranca.atualizarQuantidadeCobrancaDocumento(idCobrancaDocumentoControleGeracao, 1); // pesquisar a quantidade de cobranca // documento para atualizar a variavel quantidadeCobrancaDocumento = repositorioCobranca .pesquisarQuantidadeCobrancaDocumento(idCobrancaDocumentoControleGeracao); // ****************************************************** // acumula a quantidade de itens cobrados e // o valor do documento // e no final do metodo atualiza a tabela // cobranca_documento_controle_geracao quantidadeCobrancaDocumentoItem = quantidadeCobrancaDocumentoItem + gerarAtividadeAcaoCobrancaHelperTemp.getQuantidadeItensCobradosDocumentos(); valorTotalDocumentoCobranca = valorTotalDocumentoCobranca.add(gerarAtividadeAcaoCobrancaHelperTemp .getValorDocumentosCobranca()); } gerarAtividadeAcaoCobrancaHelperTemp = null; imovel = null; ligacaoAguaSituacao = null; ligacaoEsgotoSituacao = null; imovelPerfil = null; empresa = null; quadra = null; localidade = null; setorComercial = null; cobrancaSituacaoTipo = null; // if de quantidadeMaxima } else { flagTerminou = true; } } } else { flagTerminou = true; } numeroInicial = numeroInicial + numeroMaximo; colecaoImoveis = null; } System.out.println("!!!!!!!!!!!!!!!!!!!ATUALIZAR DOCUMENTO !!!!!!!!!!!!!!!!!!!!!!!!!"); // atualizar apenas a quantidade de itens cobrados // e o valor total dos documentos na tabela // cobranca_documento_controle_geracao repositorioCobranca.atualizarCobrancaDocumentoControleGeracaoSomar(idCobrancaDocumentoControleGeracao, quantidadeCobrancaDocumentoItem, valorTotalDocumentoCobranca); } } catch (ErroRepositorioException ex) { // levanta a exce��o para a pr�xima camada throw new ControladorException("erro.sistema", ex); } } /** * [UC0251] Gerar Atividade de A��o de Cobran�a */ private Integer consideraQuantidadeMaximaDocumentos(CobrancaAcaoAtividadeCronograma cobrancaAcaoAtividadeCronograma, CobrancaAcaoAtividadeComando cobrancaAcaoAtividadeComando, CobrancaAcao acaoCobranca) { Integer quantidadeMaxima = null; boolean possuiValorLimiteEventual = false; boolean usaOrdenamento = false; if (cobrancaAcaoAtividadeComando != null) { quantidadeMaxima = cobrancaAcaoAtividadeComando.getQuantidadeMaximaDocumentos(); possuiValorLimiteEventual = (cobrancaAcaoAtividadeComando.getValorLimiteObrigatoria() != null); if (acaoCobranca.getIndicadorOrdenamentoEventual().intValue() == ConstantesSistema.SIM.intValue()) { usaOrdenamento = true; } } else if (cobrancaAcaoAtividadeCronograma != null) { quantidadeMaxima = cobrancaAcaoAtividadeCronograma.getQuantidadeMaximaDocumentos(); if (acaoCobranca.getIndicadorOrdenamentoCronograma().intValue() == ConstantesSistema.SIM.intValue()) { usaOrdenamento = true; } } /* * Caso o eventual tenha valor limite obrigatorio preenchido ou a a��o de cobran�a tenha indicador de uso de ordenamento igual a 1 (SIM) ENTAO: nao devera * ser considerada a quantidade maxima de documentos nesta fase, deixara ser gerado todos os documentos normalmente e no final, ser� analisado os que ficar�o. */ if (quantidadeMaxima != null) { if (possuiValorLimiteEventual || usaOrdenamento) { quantidadeMaxima = null; } } return quantidadeMaxima; } /** * [UC0251] Gerar Atividade de A��o de Cobran�a [SB0002] Gerar Atividade de * A��o de Cobran�a para os Im�veis da Lista de Rotas * * @author Pedro Alexandre, Vivianne Sousa * @created 07/02/2006, 07/04/2010 * * @param cobrancaAcaoAtividadeCronograma * Atividade de A��o de Cobran�a de Cronograma * @param cobrancaAcaoAtividadeComando * Atividade de A��o de Cobran�a de Comando * @param colecaoRotas * Cole��o de rotas * @param indicadorCriterio * Indicador do crit�rio a ser utilizado * @param acaoCobranca * A��o de Cobran�a * @param atividadeCobranca * Atividade de Cobran�a * @param colecaoCobrancaCriterioLinhaComando * Cole��o de linha de crit�rio de cobran�a do comando * @param cobrancaCriterioComando * Crit�rio de Cobran�a do Comando * @param anoMesReferenciaInicial * Ano/M�s de refer�ncia inicial * @param anoMesReferenciaFinal * Ano/M�s de refer�ncia final * @param dataVencimentoInicial * Data de vencimento inicial * @param dataVencimentoFinal * Data de vencimento final * * @throws ControladorException * Controlador Exception */ private void gerarAtividadeAcaoCobrancaParaImoveisListaRotasSemQuantidadeMaxima( CobrancaAcaoAtividadeCronograma cobrancaAcaoAtividadeCronograma, CobrancaAcaoAtividadeComando cobrancaAcaoAtividadeComando, Rota rota, Integer indicadorCriterio, CobrancaAcao acaoCobranca, CobrancaAtividade atividadeCobranca, Collection<CobrancaCriterioLinha> colecaoCobrancaCriterioLinhaComando, CobrancaCriterio cobrancaCriterioComando, String anoMesReferenciaInicial, String anoMesReferenciaFinal, Date dataVencimentoInicial, Date dataVencimentoFinal, Date dataAtual, Integer idCobrancaDocumentoControleGeracao) throws ControladorException { try { Integer quantidadeCobrancaDocumento = 0; Integer quantidadeCobrancaDocumentoItem = 0; BigDecimal valorTotalDocumentoCobranca = new BigDecimal("0.00"); // cria a vari�vel que vai armazenar o crit�rio de cobran�a CobrancaCriterio cobrancaCriterio = null; // cria a vari�vel que vai armazenar a cole��o de linhas de crit�rio // de cobran�a Collection<CobrancaCriterioLinha> colecaoCobrancaCriterioLinha = new ArrayList(); Object[] arrayImovel = null; // item 2 // cria o objeto que vai armazenar temporariamente os dados // retornados pelo [SB0003], para cada im�vel GerarAtividadeAcaoCobrancaHelper gerarAtividadeAcaoCobrancaHelperTemp = new GerarAtividadeAcaoCobrancaHelper(); // se o indicador do crit�rio for igual a 1(um) - // "usa crit�rio da rota" if (indicadorCriterio.intValue() == 1) { CobrancaCriterio cobrancaCriterioRota = null; cobrancaCriterioRota = repositorioCobranca.pesquisarCriterioCobrancaRota(rota.getId(), acaoCobranca.getId()); // pesquisa a cole��o de linhas de crit�rio de cobran�a colecaoCobrancaCriterioLinha = repositorioCobranca.pesquisarCobrancaCriterioLinhaCriterio(cobrancaCriterioRota.getId()); // o crit�rio de cobran�a utilizado vai ser o da rota cobrancaCriterio = cobrancaCriterioRota; // se o indicador do crit�rio for igual a 2(dois) - // "usa o crit�rio do comando" } else { // a cole��o de linha de crit�rio de cobran�a vai ser a do // comando colecaoCobrancaCriterioLinha = colecaoCobrancaCriterioLinhaComando; // o crit�rio de cobran�a utilizado vai ser o do comando cobrancaCriterio = cobrancaCriterioComando; } // Verificar as situacoes de ligacao de agua e esgoto validas para o // criterio ou acao de cobranca Collection idsSituacaoLigacaoAgua = new ArrayList(); Collection idsSituacaoLigacaoEsgoto = new ArrayList(); Collection colecaoSituacoesLigacaoAgua = repositorioCobranca.pesquisarCobrancaCriterioSituacaoLigacaoAgua(cobrancaCriterio .getId()); if (colecaoSituacoesLigacaoAgua != null && !colecaoSituacoesLigacaoAgua.isEmpty()) { for (Iterator iter = colecaoSituacoesLigacaoAgua.iterator(); iter.hasNext();) { CriterioSituacaoLigacaoAgua critSitLigAgua = (CriterioSituacaoLigacaoAgua) iter.next(); idsSituacaoLigacaoAgua.add(critSitLigAgua.getComp_id().getLigacaoAguaSituacao().getId()); } } else { if (acaoCobranca.getLigacaoAguaSituacao() != null) { idsSituacaoLigacaoAgua.add(acaoCobranca.getLigacaoAguaSituacao().getId()); } } Collection colecaoSituacoesLigacaoEsgoto = repositorioCobranca.pesquisarCobrancaCriterioSituacaoLigacaoEsgoto(cobrancaCriterio .getId()); if (colecaoSituacoesLigacaoEsgoto != null && !colecaoSituacoesLigacaoEsgoto.isEmpty()) { for (Iterator iter = colecaoSituacoesLigacaoEsgoto.iterator(); iter.hasNext();) { CriterioSituacaoLigacaoEsgoto critSitLigEsgoto = (CriterioSituacaoLigacaoEsgoto) iter.next(); idsSituacaoLigacaoEsgoto.add(critSitLigEsgoto.getComp_id().getLigacaoEsgotoSituacao().getId()); } } else { if (acaoCobranca.getLigacaoEsgotoSituacao() != null) { idsSituacaoLigacaoEsgoto.add(acaoCobranca.getLigacaoEsgotoSituacao().getId()); } } Imovel imovel = null; LigacaoAguaSituacao ligacaoAguaSituacao = null; LigacaoEsgotoSituacao ligacaoEsgotoSituacao = null; ImovelPerfil imovelPerfil = null; Empresa empresa = null; Quadra quadra = null; Localidade localidade = null; SetorComercial setorComercial = null; CobrancaSituacaoTipo cobrancaSituacaoTipo = null; boolean flagTerminou = false; int numeroInicial = 0; int numeroMaximo = 100; while (!flagTerminou) { Collection colecaoImoveis = getControladorImovel().pesquisarImoveisPorRotaComPaginacao(rota, idsSituacaoLigacaoAgua, idsSituacaoLigacaoEsgoto, numeroInicial, numeroMaximo); System.out.println(" Gerar Doc Cob - Qtd Imoveis iniciais: " + colecaoImoveis.size()); if (colecaoImoveis != null && !colecaoImoveis.isEmpty()) { Iterator iteratorColecaoImoveis = colecaoImoveis.iterator(); if (colecaoImoveis.size() < numeroMaximo) { flagTerminou = true; } while (iteratorColecaoImoveis.hasNext()) { arrayImovel = (Object[]) iteratorColecaoImoveis.next(); imovel = new Imovel(); ligacaoAguaSituacao = new LigacaoAguaSituacao(); ligacaoEsgotoSituacao = new LigacaoEsgotoSituacao(); imovelPerfil = new ImovelPerfil(); empresa = new Empresa(); quadra = new Quadra(); localidade = new Localidade(); setorComercial = new SetorComercial(); if (arrayImovel[0] != null) { imovel.setId((Integer) arrayImovel[0]); } if (arrayImovel[1] != null) { ligacaoAguaSituacao.setId((Integer) arrayImovel[1]); } if (arrayImovel[2] != null) { ligacaoEsgotoSituacao.setId((Integer) arrayImovel[2]); } if (arrayImovel[3] != null) { imovelPerfil.setId((Integer) arrayImovel[3]); } // caso a a��o de cobran�a gere a ordem de servi�o if (acaoCobranca.getServicoTipo() != null && acaoCobranca.getServicoTipo().getId() != null) { // seta a empresa cobranca if (arrayImovel[13] != null) { empresa.setId((Integer) arrayImovel[13]); } } else { // seta a empresa if (arrayImovel[4] != null) { empresa.setId((Integer) arrayImovel[4]); } } if (arrayImovel[5] != null) { localidade.setId((Integer) arrayImovel[5]); } if (arrayImovel[6] != null) { setorComercial.setCodigo(((Integer) arrayImovel[6]).intValue()); } if (arrayImovel[7] != null) { quadra.setNumeroQuadra(((Integer) arrayImovel[7]).intValue()); } if (arrayImovel[8] != null) { imovel.setLote(((Short) arrayImovel[8]).shortValue()); } if (arrayImovel[9] != null) { imovel.setLote(((Short) arrayImovel[9]).shortValue()); } if (arrayImovel[10] != null) { quadra.setId(((Integer) arrayImovel[10]).intValue()); } if (arrayImovel[11] != null) { cobrancaSituacaoTipo = new CobrancaSituacaoTipo(); cobrancaSituacaoTipo.setId(((Integer) arrayImovel[11]).intValue()); } if (arrayImovel[12] != null) { imovel.setIndicadorDebitoConta((Short) arrayImovel[12]); } imovel.setLigacaoAguaSituacao(ligacaoAguaSituacao); imovel.setLigacaoEsgotoSituacao(ligacaoEsgotoSituacao); imovel.setImovelPerfil(imovelPerfil); rota.setEmpresa(empresa); quadra.setRota(rota); imovel.setQuadra(quadra); imovel.setLocalidade(localidade); imovel.setSetorComercial(setorComercial); imovel.setCobrancaSituacaoTipo(cobrancaSituacaoTipo); // [SB0003] - Gerar Atividade de A��o de Cobran�a para o // im�vel gerarAtividadeAcaoCobrancaHelperTemp = gerarAtividadeAcaoCobrancaParaImovel(cobrancaAcaoAtividadeCronograma, cobrancaAcaoAtividadeComando, imovel, indicadorCriterio, acaoCobranca, atividadeCobranca, cobrancaCriterio, colecaoCobrancaCriterioLinha, anoMesReferenciaInicial, anoMesReferenciaFinal, dataVencimentoInicial, dataVencimentoFinal, dataAtual); // se o objeto for diferente de nulo // recupera a quantidade de documentos de cobran�a, // quantidade de itens cobrados e o valor do documento // do objeto retornado pelo [SB0003] if (gerarAtividadeAcaoCobrancaHelperTemp != null) { quantidadeCobrancaDocumento = quantidadeCobrancaDocumento + 1; // acumula a quantidade de itens cobrados e o valor // do documento // e no final do metodo atualiza a tabela // cobranca_documento_controle_geracao quantidadeCobrancaDocumentoItem = quantidadeCobrancaDocumentoItem + gerarAtividadeAcaoCobrancaHelperTemp.getQuantidadeItensCobradosDocumentos(); valorTotalDocumentoCobranca = valorTotalDocumentoCobranca.add(gerarAtividadeAcaoCobrancaHelperTemp .getValorDocumentosCobranca()); } gerarAtividadeAcaoCobrancaHelperTemp = null; imovel = null; ligacaoAguaSituacao = null; ligacaoEsgotoSituacao = null; imovelPerfil = null; empresa = null; quadra = null; localidade = null; setorComercial = null; cobrancaSituacaoTipo = null; } } else { flagTerminou = true; } numeroInicial = numeroInicial + numeroMaximo; colecaoImoveis = null; } // atualizar a quantidade de documentos cobrados, a quantidade de // itens cobrados // e o valor total dos documentos na tabela // cobranca_documento_controle_geracao this.atualizarCobrancaDocumentoControleGeracao(idCobrancaDocumentoControleGeracao, quantidadeCobrancaDocumento, quantidadeCobrancaDocumentoItem, valorTotalDocumentoCobranca); } catch (ErroRepositorioException ex) { // levanta a exce��o para a pr�xima camada throw new ControladorException("erro.sistema", ex); } } /** * [UC0251] Gerar Atividade de A��o de Cobran�a * * @author Vivianne Sousa * @date 07/04/2010 */ public void atualizarQuantidadeCobrancaDocumento(Integer idCobrancaDocumentoControleGeracao, Integer quantidadeCobrancaDocumento) throws ControladorException { try { repositorioCobranca.atualizarQuantidadeCobrancaDocumento(idCobrancaDocumentoControleGeracao, quantidadeCobrancaDocumento); } catch (ErroRepositorioException ex) { ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } } /** * [UC0251] Gerar Atividade de A��o de Cobran�a * * @author Vivianne Sousa * @date 07/04/2010 */ public void atualizarCobrancaDocumentoControleGeracao(Integer idCobrancaDocumentoControleGeracao, Integer quantidadeCobrancaDocumento, Integer quantidadeCobrancaDocumentoItem, BigDecimal valorTotalCobrancaDocumento) throws ControladorException { try { repositorioCobranca.atualizarCobrancaDocumentoControleGeracaoSomar(idCobrancaDocumentoControleGeracao, quantidadeCobrancaDocumento, quantidadeCobrancaDocumentoItem, valorTotalCobrancaDocumento); } catch (ErroRepositorioException ex) { ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } } /** * [UC0251] Gerar Atividade de A��o de Cobran�a * * @author Vivianne Sousa * @date 07/04/2010 */ public Integer pesquisarQuantidadeCobrancaDocumento(Integer idCobrancaDocumentoControleGeracao) throws ControladorException { try { return repositorioCobranca.pesquisarQuantidadeCobrancaDocumento(idCobrancaDocumentoControleGeracao); } catch (ErroRepositorioException ex) { ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } } /** * [UC0251] Gerar Atividade de A��o de Cobran�a * * @author Vivianne Sousa * @date 07/04/2010 */ public void atualizarCobrancaDocumentoControleGeracao(Integer idCobrancaDocumentoControleGeracao, Integer quantidadeCobrancaDocumentoItem, BigDecimal valorTotalCobrancaDocumento) throws ControladorException { try { repositorioCobranca.atualizarCobrancaDocumentoControleGeracaoSomar(idCobrancaDocumentoControleGeracao, quantidadeCobrancaDocumentoItem, valorTotalCobrancaDocumento); } catch (ErroRepositorioException ex) { ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } } /** * @author Vivianne Sousa * @date 29/04/2010 */ public Collection pesquisarImovelCobrancaSituacaoPorImovel(Integer idImovel) throws ControladorException { try { return repositorioCobranca.pesquisarImovelCobrancaSituacaoPorImovel(idImovel); } catch (ErroRepositorioException ex) { ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } } /** * * * [UC0968] Emitir Cartas da Campanha * * @author Hugo Amorim * @data 22/04/2010 * * @param * @return void */ public void emitirCartasCampanha(CobrancaAcaoAtividadeCronograma cobrancaAcaoAtividadeCronograma, CobrancaAcaoAtividadeComando cobrancaAcaoAtividadeComando, Date dataAtualPesquisa, CobrancaAcao acaoCobranca, CobrancaGrupo grupoCobranca, CobrancaCriterio cobrancaCriterio) throws ControladorException { try { Integer idCobrancaAcaoAtividadeComando = cobrancaAcaoAtividadeComando != null ? cobrancaAcaoAtividadeComando.getId() : null; Integer idCobrancaAcaoAtividadeCronograma = cobrancaAcaoAtividadeCronograma != null ? cobrancaAcaoAtividadeCronograma.getId() : null; // deleta os dados da tabela COBRANCA_DOCUMENTO_IMPRESSAO // para n�o gerar dados duplicados quando reiniciar o batch repositorioCobranca.deletarDocumentoCobrancaImpressao(idCobrancaAcaoAtividadeComando, idCobrancaAcaoAtividadeCronograma); // gera os dados da tabela COBRANCA_DOCUMENTO_IMPRESSAO gerarDocumentoCobrancaImpressaoCartasCampanha(cobrancaAcaoAtividadeCronograma, cobrancaAcaoAtividadeComando, dataAtualPesquisa, acaoCobranca, grupoCobranca, cobrancaCriterio); // gerar arquivo com os dados da tabela COBRANCA_DOCUMENTO_IMPRESSAO emitirDocumentoCobrancaCartasCampanha(cobrancaAcaoAtividadeCronograma, cobrancaAcaoAtividadeComando, acaoCobranca, grupoCobranca); } catch (ErroRepositorioException e) { throw new ControladorException("erro.sistema", e); } } /** * @author Vivianne Sousa * @date 03/05/2010 */ public Collection pesquisarDadosImovelCobrancaSituacaoPorImovel(Integer idImovel) throws ControladorException { try { Collection colecaoRetorno = null; Collection colecaoDados = repositorioCobranca.pesquisarDadosImovelCobrancaSituacaoPorImovel(idImovel); if (colecaoDados != null && !colecaoDados.isEmpty()) { colecaoRetorno = new ArrayList(); Iterator iteratorImovelCobrancaSituacao = colecaoDados.iterator(); while (iteratorImovelCobrancaSituacao.hasNext()) { Object[] dadosImovelCobrancaSituacao = (Object[]) iteratorImovelCobrancaSituacao.next(); ImovelCobrancaSituacaoHelper helper = new ImovelCobrancaSituacaoHelper(); if (dadosImovelCobrancaSituacao[0] != null) { helper.setDescricaoSituacaoCobranca((String) dadosImovelCobrancaSituacao[0]); } if (dadosImovelCobrancaSituacao[1] != null) { helper.setAnoMesReferenciaInicio((Integer) dadosImovelCobrancaSituacao[1]); } if (dadosImovelCobrancaSituacao[2] != null) { helper.setAnoMesReferenciaFinal((Integer) dadosImovelCobrancaSituacao[2]); } if (dadosImovelCobrancaSituacao[3] != null) { helper.setDataImplantacaoCobranca((Date) dadosImovelCobrancaSituacao[3]); } if (dadosImovelCobrancaSituacao[4] != null) { helper.setDataRetiradaCobranca((Date) dadosImovelCobrancaSituacao[4]); } if (dadosImovelCobrancaSituacao[5] != null) { helper.setIdClienteAlvo((Integer) dadosImovelCobrancaSituacao[5]); } if (dadosImovelCobrancaSituacao[6] != null) { helper.setEscritorioCobranca((String) dadosImovelCobrancaSituacao[6]); } if (dadosImovelCobrancaSituacao[7] != null) { helper.setAdvogadoResponsavelCobranca((String) dadosImovelCobrancaSituacao[7]); } colecaoRetorno.add(helper); } } return colecaoRetorno; } catch (ErroRepositorioException ex) { ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } } /** * [UC????] Relatorio Comando Documento Cobranca Retorna a a��o de cobran�a * para exibi��o de parametros do relat�rio * * @author Anderson Italo * @data 04/05/2010 */ public CobrancaAcao pesquisarAcaoCobrancaParaRelatorio(Integer idCobrancaAcaoAtividadeComando, Integer idCobrancaAcaoAtividadeCronograma) throws ControladorException { CobrancaAcao retorno = null; try { retorno = repositorioCobranca.pesquisarAcaoCobrancaParaRelatorio(idCobrancaAcaoAtividadeComando, idCobrancaAcaoAtividadeCronograma); } catch (ErroRepositorioException e) { e.printStackTrace(); } return retorno; } public Collection pesquisarImovelCobrancaSituacao(Integer idImovel) throws ControladorException { try { return repositorioCobranca.pesquisarImovelCobrancaSituacao(idImovel); } catch (ErroRepositorioException ex) { ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } } /** * * [UC1038] Prescrever D�bitos de Im�veis * * @author Hugo Leonardo * @date 08/07/2010 * */ public Collection obterCobrancaSituacaoParaPrescreverDebitos() throws ControladorException { try { return repositorioCobranca.obterCobrancaSituacaoParaPrescreverDebitos(); } catch (ErroRepositorioException ex) { ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } } /** * * Inserir um comando de atividade de cobran�a eventual * * [UC0243] - Inserir Comando A��o de Cobran�a * * Verificar data final menos que data inicial * * [FS0014] - Verificar data final menos que data inicial * * @author Hugo Amorim * @throws ControladorException * @date 12/07/2010 */ private void verificarPeriodoFiscalizacaoComandoAcaoCobranca(String anoMesVencimentoInicial, String anoMesVencimentoFinal) throws ControladorException { if (anoMesVencimentoInicial != null && !anoMesVencimentoInicial.equals("")) { boolean valida = Util.validarDiaMesAno(anoMesVencimentoInicial); if (valida) { throw new ControladorException("atencao.erro_invalido", null, "Data Inicial do Per�odo de Fiscaliza��o"); } } if ((anoMesVencimentoInicial != null && !anoMesVencimentoInicial.equals("")) && (anoMesVencimentoFinal != null && !anoMesVencimentoFinal.equals(""))) { if (anoMesVencimentoInicial.length() == 10 & anoMesVencimentoFinal.length() == 10) { boolean valida = Util.validarDiaMesAno(anoMesVencimentoInicial); if (valida) { throw new ControladorException("atencao.erro_invalido", null, "Data Inicial do Per�odo de Fiscaliza��o"); } valida = Util.validarDiaMesAno(anoMesVencimentoFinal); if (valida) { throw new ControladorException("atencao.erro_invalido", null, "Data Final do Per�odo de Fiscaliza��o"); } } else { if (anoMesVencimentoInicial.length() < 10) { throw new ControladorException("atencao.erro_invalido", null, "Data Inicial do Per�odo de Fiscaliza��o"); } if (anoMesVencimentoFinal.length() < 10) { throw new ControladorException("atencao.erro_invalido", null, "Data Final do Per�odo de Fiscaliza��o"); } } } } /** * [UC0244] Manter Comando A��o de Cobran�a * * @author Hugo Amorim * @created 14/07/2010 * * @exception ErroRepositorioException * */ public void removerCobrancaAcaoAtividadeComandoFiscalizacaoSituacao(Integer idComando) throws ControladorException { try { this.repositorioCobranca.removerCobrancaAcaoAtividadeComandoFiscalizacaoSituacao(idComando); } catch (ErroRepositorioException e) { e.printStackTrace(); throw new ControladorException("erro.sistema", e); } } /** * [UC0478] Gerar Resumo das A��es de Cobran�a do Cronograma * * Pesquisa os dados de cobranca documento agrupado para pegar a quantidade * e o valor dos documentos * * @author S�vio Luiz * @date 19/10/2006 * * @return Collection retorno * @throws ErroRepositorioException */ public Collection pesquisarDadosCobrancaDocumentoEventualAgrupadoPorDataPrevista(int idCobrancaAtividadeAcaoComando) throws ControladorException { try { Collection retorno = null; Collection colecaoDados = this.repositorioCobranca .pesquisarDadosCobrancaDocumentoEventualAgrupadoPorDataPrevista(idCobrancaAtividadeAcaoComando); if (colecaoDados != null && !colecaoDados.isEmpty()) { retorno = new ArrayList(); DadosCobrancaDocumentoHelper helper = null; Iterator iteratorDados = colecaoDados.iterator(); while (iteratorDados.hasNext()) { Object[] dados = (Object[]) iteratorDados.next(); helper = new DadosCobrancaDocumentoHelper(); if (dados[0] != null) { helper.setIdFiscalizacao((Integer) dados[0]); } if (dados[1] != null) { helper.setIndicadorAcimaAbaixo((Short) dados[1]); } if (dados[2] != null) { helper.setIndicadorAcimaLimite((Short) dados[2]); } if (dados[3] != null) { helper.setIdCobrancaAcaoSituacao((Integer) dados[3]); } if (dados[4] != null) { helper.setIdSituacaoDebito((Integer) dados[4]); } if (dados[5] != null) { helper.setIdCategoria((Integer) dados[5]); } if (dados[6] != null) { helper.setIdEsferaPoder((Integer) dados[6]); } if (dados[7] != null) { helper.setIdCobrancaCriterio((Integer) dados[7]); } if (dados[8] != null) { helper.setIdCobrancaGrupo((Integer) dados[8]); } if (dados[9] != null) { helper.setIdGerenciaRegional((Integer) dados[9]); } if (dados[10] != null) { helper.setIdLocalidade((Integer) dados[10]); } if (dados[11] != null) { helper.setIdSetorComercial((Integer) dados[11]); } if (dados[12] != null) { helper.setIdRota((Integer) dados[12]); } if (dados[13] != null) { helper.setIdQuadra((Integer) dados[13]); } if (dados[14] != null) { helper.setNumeroQuadra((Integer) dados[14]); } if (dados[15] != null) { helper.setCodigoSetorComercial((Integer) dados[15]); } if (dados[16] != null) { helper.setIdImovelPerfil((Integer) dados[16]); } if (dados[17] != null) { helper.setIdSituacaoLigacaoAgua((Integer) dados[17]); } if (dados[18] != null) { helper.setIdSituacaoLigacaoEsgoto((Integer) dados[18]); } if (dados[19] != null) { helper.setIdEmpresa((Integer) dados[19]); } if (dados[20] != null) { helper.setIdAtendimentoMotivoEncerramento((Integer) dados[20]); } if (dados[21] != null) { helper.setIdUnidadeNegocio((Integer) (dados[21])); } if (dados[22] != null) { helper.setQuantidadeDocumentos((Integer) dados[22]); } if (dados[23] != null) { helper.setValorDocumentos((BigDecimal) dados[23]); } retorno.add(helper); } } return retorno; } catch (ErroRepositorioException e) { e.printStackTrace(); throw new ControladorException("erro.sistema", e); } } /** * [UC0478] Gerar Resumo das A��es de Cobran�a do Cronograma * * Pesquisa os dados de cobranca documento agrupado para pegar a quantidade * e o valor dos documentos * * @author S�vio Luiz,Vivianne Sousa, Ivan Sergio * @date 17/10/2006,30/08/2010, 23/12/2010 * * @return Collection retorno * @throws ErroRepositorioException */ public Collection pesquisarDadosCobrancaDocumentoAgrupadoPorDataComando(int idCobrancaAtividadeAcaoCronograma) throws ControladorException { try { Collection retorno = null; Collection colecaoDados = this.repositorioCobranca .pesquisarDadosCobrancaDocumentoAgrupadoPorDataComando(idCobrancaAtividadeAcaoCronograma); if (colecaoDados != null && !colecaoDados.isEmpty()) { retorno = new ArrayList(); DadosCobrancaDocumentoHelper helper = null; Iterator iteratorDados = colecaoDados.iterator(); while (iteratorDados.hasNext()) { Object[] dados = (Object[]) iteratorDados.next(); helper = new DadosCobrancaDocumentoHelper(); if (dados[0] != null) { helper.setIdFiscalizacao((Integer) dados[0]); } if (dados[1] != null) { helper.setIndicadorAcimaAbaixo((Short) dados[1]); } if (dados[2] != null) { helper.setIndicadorAcimaLimite((Short) dados[2]); } if (dados[3] != null) { helper.setIdCobrancaAcaoSituacao((Integer) dados[3]); } if (dados[4] != null) { helper.setIdSituacaoDebito((Integer) dados[4]); } if (dados[5] != null) { helper.setIdCategoria((Integer) dados[5]); } if (dados[6] != null) { helper.setIdEsferaPoder((Integer) dados[6]); } if (dados[7] != null) { helper.setIdCobrancaCriterio((Integer) dados[7]); } if (dados[8] != null) { helper.setIdGerenciaRegional((Integer) dados[8]); } if (dados[9] != null) { helper.setIdLocalidade((Integer) dados[9]); } if (dados[10] != null) { helper.setIdSetorComercial((Integer) dados[10]); } if (dados[11] != null) { helper.setIdRota((Integer) dados[11]); } if (dados[12] != null) { helper.setIdQuadra((Integer) dados[12]); } if (dados[13] != null) { helper.setNumeroQuadra((Integer) dados[13]); } if (dados[14] != null) { helper.setCodigoSetorComercial((Integer) dados[14]); } if (dados[15] != null) { helper.setIdImovelPerfil((Integer) dados[15]); } if (dados[16] != null) { helper.setIdSituacaoLigacaoAgua((Integer) dados[16]); } if (dados[17] != null) { helper.setIdSituacaoLigacaoEsgoto((Integer) dados[17]); } if (dados[18] != null) { helper.setIdEmpresa((Integer) dados[18]); } if (dados[19] != null) { helper.setIdAtendimentoMotivoEncerramento((Integer) dados[19]); } if (dados[20] != null) { helper.setIdUnidadeNegocio((Integer) (dados[20])); } if (dados[21] != null) { helper.setIdDocumentoEmissaoForma((Integer) dados[21]); } if (dados[22] != null) { helper.setQuantidadeDocumentos((Integer) dados[22]); } if (dados[23] != null) { helper.setValorDocumentos((BigDecimal) dados[23]); } // ************************************************* // RM3323 // Autor: Ivan Sergio // Data: 23/12/2010 // Alteracao para gerar consulta de tipo de corte; // ************************************************* if (dados[24] != null) { helper.setIdCorteTipo((Integer) dados[24]); } // ************************************************* retorno.add(helper); } } return retorno; } catch (ErroRepositorioException e) { e.printStackTrace(); throw new ControladorException("erro.sistema", e); } } /** * [UC0478] Gerar Resumo das A��es de Cobran�a do Cronograma * * Pesquisa os dados de cobranca documento agrupado para pegar a quantidade * e o valor dos documentos * * @author S�vio Luiz,Vivianne Sousa * @date 17/10/2006,30/08/2010 * * @return Collection retorno * @throws ErroRepositorioException */ public Collection pesquisarDadosCobrancaDocumentoAgrupadoPorDataPrevista(int idCobrancaAtividadeAcaoCronograma) throws ControladorException { try { Collection retorno = null; Collection colecaoDados = this.repositorioCobranca .pesquisarDadosCobrancaDocumentoAgrupadoPorDataComando(idCobrancaAtividadeAcaoCronograma); if (colecaoDados != null && !colecaoDados.isEmpty()) { retorno = new ArrayList(); DadosCobrancaDocumentoHelper helper = null; Iterator iteratorDados = colecaoDados.iterator(); while (iteratorDados.hasNext()) { Object[] dados = (Object[]) iteratorDados.next(); helper = new DadosCobrancaDocumentoHelper(); if (dados[0] != null) { helper.setIdFiscalizacao((Integer) dados[0]); } if (dados[1] != null) { helper.setIndicadorAcimaAbaixo((Short) dados[1]); } if (dados[2] != null) { helper.setIndicadorAcimaLimite((Short) dados[2]); } if (dados[3] != null) { helper.setIdCobrancaAcaoSituacao((Integer) dados[3]); } if (dados[4] != null) { helper.setIdSituacaoDebito((Integer) dados[4]); } if (dados[5] != null) { helper.setIdCategoria((Integer) dados[5]); } if (dados[6] != null) { helper.setIdEsferaPoder((Integer) dados[6]); } if (dados[7] != null) { helper.setIdCobrancaCriterio((Integer) dados[7]); } if (dados[8] != null) { helper.setIdGerenciaRegional((Integer) dados[8]); } if (dados[9] != null) { helper.setIdLocalidade((Integer) dados[9]); } if (dados[10] != null) { helper.setIdSetorComercial((Integer) dados[10]); } if (dados[11] != null) { helper.setIdRota((Integer) dados[11]); } if (dados[12] != null) { helper.setIdQuadra((Integer) dados[12]); } if (dados[13] != null) { helper.setNumeroQuadra((Integer) dados[13]); } if (dados[14] != null) { helper.setCodigoSetorComercial((Integer) dados[14]); } if (dados[15] != null) { helper.setIdImovelPerfil((Integer) dados[15]); } if (dados[16] != null) { helper.setIdSituacaoLigacaoAgua((Integer) dados[16]); } if (dados[17] != null) { helper.setIdSituacaoLigacaoEsgoto((Integer) dados[17]); } if (dados[18] != null) { helper.setIdEmpresa((Integer) dados[18]); } if (dados[19] != null) { helper.setIdAtendimentoMotivoEncerramento((Integer) dados[19]); } if (dados[20] != null) { helper.setIdUnidadeNegocio((Integer) (dados[20])); } if (dados[21] != null) { helper.setIdDocumentoEmissaoForma((Integer) dados[21]); } if (dados[22] != null) { helper.setQuantidadeDocumentos((Integer) dados[22]); } if (dados[23] != null) { helper.setValorDocumentos((BigDecimal) dados[23]); } // ************************************************* // RM3323 // Autor: Ivan Sergio // Data: 23/12/2010 // Alteracao para gerar consulta de tipo de corte; // ************************************************* if (dados[24] != null) { helper.setIdCorteTipo((Integer) dados[24]); } // ************************************************* retorno.add(helper); } } return retorno; } catch (ErroRepositorioException e) { e.printStackTrace(); throw new ControladorException("erro.sistema", e); } } /** * Pesquisa Documentos de cobran�as validos para imovel para determinado * tipo de documento * * @author Hugo Amorim * @date 09/09/2010 */ public Collection<CobrancaDocumento> pesquisarCobrancaDocumentoValidoImovel(Integer idImovel, Integer idDocumentoTipo, Integer idAcaoCobranca) throws ControladorException { Collection<CobrancaDocumento> retorno = new ArrayList<CobrancaDocumento>(); try { retorno = this.repositorioCobranca.pesquisarDadosCobrancaDocumentoValidoImovel(idImovel, idDocumentoTipo, idAcaoCobranca); /* * Date dataAtual = new Date(); * * Collection colecaoDados = * this.repositorioCobranca.pesquisarDadosCobrancaDocumentoValidoImovel * (idImovel,idDocumentoTipo); * * if(colecaoDados != null && !colecaoDados.isEmpty()){ Iterator * iteratorDados = colecaoDados.iterator(); while * (iteratorDados.hasNext()) { Object[] dados = (Object[]) * iteratorDados.next(); * * CobrancaDocumento cobrancaDocumento = null; Integer * numeroDiasValidadeAcao = null; * * if(dados[0] != null){ cobrancaDocumento = (CobrancaDocumento) * dados[0]; } if(dados[1] != null){ numeroDiasValidadeAcao = * (Integer) dados[1]; } * * Date dataValidade = * Util.adicionarNumeroDiasDeUmaData(cobrancaDocumento.getEmissao(), * numeroDiasValidadeAcao); * * if(dataValidade.compareTo(dataAtual)>0){ * retorno.add(cobrancaDocumento); } } } */ } catch (ErroRepositorioException e) { e.printStackTrace(); throw new ControladorException("erro.sistema", e); } return retorno; } /** * [UC0478] Gerar Resumo das A��es de Cobran�a do Cronograma * * Data: 16/09/2010 * * @author Vivianne Sousa */ public boolean existeCobrancaDocumentoFisc(Integer idFiscalizacaoSituacao, Integer idOrdemServico, Integer idCobrancaDocumento) throws ControladorException { boolean existeCobrancaDocumentoFisc = false; try { Integer idCobrancaDocumentoFisc = repositorioCobranca.pesquisarCobrancaDocumentoFisc(idFiscalizacaoSituacao, idOrdemServico, idCobrancaDocumento); if (idCobrancaDocumentoFisc != null) { existeCobrancaDocumentoFisc = true; } } catch (ErroRepositorioException ex) { throw new ControladorException("erro.sistema", ex); } return existeCobrancaDocumentoFisc; } /** * [UC0214] Efetuar Parcelamento de D�bitos * * @author Raphael Rossiter * @date 28/10/2010 * * @param isContaEntradaParcelamento * @param sistemaParametro * @return Date * @throws ControladorException */ public Date obterDataVencimentoEntradaParcelamento(boolean isContaEntradaParcelamento, SistemaParametro sistemaParametro) throws ControladorException { Date dataVencimentoEntradaParcelamento = null; if (isContaEntradaParcelamento) { int numeroDiasVencimentoEntradaParcelamento = sistemaParametro.getNumeroDiasVencimentoEntradaParcelamento().intValue(); dataVencimentoEntradaParcelamento = Util.adicionarNumeroDiasDeUmaData(new Date(), numeroDiasVencimentoEntradaParcelamento); } return dataVencimentoEntradaParcelamento; } /** * [UC1112] Processar Encerramento Ordens de Servi�o da A��o de Cobran�a * * @author Mariana Victor * @created 02/12/2010 * * @exception ErroRepositorioException * Repositorio Exception */ public Collection<Integer> pesquisarOrdemServicoParaEncerrar(Integer idCobrancaAcaoCronograma) throws ControladorException { try { return repositorioCobranca.pesquisarOrdemServicoParaEncerrar(idCobrancaAcaoCronograma); } catch (ErroRepositorioException ex) { sessionContext.setRollbackOnly(); ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } } /** * * [UC1112] Processar Encerramento Ordens de Servi�o da A��o de Cobran�a * * Ordens de Servi�o que n�o tenham sido executadas encerradas por decurso * de prazo * * @author Mariana Victor * @date 02/12/2010 * */ public void processarEncerramentoOSAcaoCobranca(Integer dadosAtividadeCronograma, Integer idCobrancaAtividadeCronograma, int idFuncionalidadeIniciada) throws ControladorException { int idUnidadeIniciada = 0; // posi��es do array com os dados que ser�o atualizados final int POSICAO_ID_COB_ACAO_ATIV_CRON_ENCERRAR = 0; final int POSICAO_DATA_COM_ATIV_ENCERRAR = 1; final int POSICAO_DATA_PREV_ATIV_ENCERRAR = 2; final int POSICAO_ID_ORDEM_SERVICO = 3; final int POSICAO_ID_COBRANCA_ATIVIDADE = 4; // ------------------------- // // Registrar o in�cio do processamento da Unidade de // Processamento // do Batch // // ------------------------- idUnidadeIniciada = getControladorBatch().iniciarUnidadeProcessamentoBatch(idFuncionalidadeIniciada, UnidadeProcessamento.COB_ACAO_ATIV_CRONOG, ((Integer) dadosAtividadeCronograma)); Usuario usuarioLogado = Usuario.USUARIO_BATCH; try { Collection colecaoOrdemServicoParaEncerrar = repositorioCobranca .pesquisarAtivCronogOrdemServicoParaEncerrar(dadosAtividadeCronograma); if (colecaoOrdemServicoParaEncerrar != null && !colecaoOrdemServicoParaEncerrar.isEmpty()) { if (colecaoOrdemServicoParaEncerrar != null) { Iterator iteratorColecaoOrdemServicoParaEncerrar = colecaoOrdemServicoParaEncerrar.iterator(); while (iteratorColecaoOrdemServicoParaEncerrar.hasNext()) { Object[] dadosOrdemServicoParaEncerrar = (Object[]) iteratorColecaoOrdemServicoParaEncerrar.next(); Date dataAtual = new Date(); Timestamp dataComando = null; Date dataPrevista = null; Integer idOrdemServico = null; Integer idLocalidade = null; Integer idCobAcaoAtivCron = null; Integer idCobAtiv = null; Short idMotivoEncerramento = AtendimentoMotivoEncerramento.CANCELADO_POR_DERCURSO_DE_PRAZO; if (dadosOrdemServicoParaEncerrar[POSICAO_ID_ORDEM_SERVICO] != null) { idOrdemServico = ((Integer) dadosOrdemServicoParaEncerrar[POSICAO_ID_ORDEM_SERVICO]).intValue(); } if (dadosOrdemServicoParaEncerrar[POSICAO_DATA_COM_ATIV_ENCERRAR] != null) { dataComando = (Timestamp) dadosOrdemServicoParaEncerrar[POSICAO_DATA_COM_ATIV_ENCERRAR]; } if (dadosOrdemServicoParaEncerrar[POSICAO_DATA_PREV_ATIV_ENCERRAR] != null) { dataPrevista = (Date) dadosOrdemServicoParaEncerrar[POSICAO_DATA_PREV_ATIV_ENCERRAR]; } if (dadosOrdemServicoParaEncerrar[POSICAO_ID_COB_ACAO_ATIV_CRON_ENCERRAR] != null) { idCobAcaoAtivCron = (Integer) dadosOrdemServicoParaEncerrar[POSICAO_ID_COB_ACAO_ATIV_CRON_ENCERRAR]; } if (dadosOrdemServicoParaEncerrar[POSICAO_ID_COBRANCA_ATIVIDADE] != null) { idCobAtiv = (Integer) dadosOrdemServicoParaEncerrar[POSICAO_ID_COBRANCA_ATIVIDADE]; } if (dataComando != null && Util.compararDataTime(dataPrevista, dataAtual) != 1) { Collection localidade = repositorioCobranca.pesquisarLocalidade(idOrdemServico); if (localidade != null) { Iterator iteratorLocalidade = localidade.iterator(); if (iteratorLocalidade.hasNext()) { Object dadosLocalidade = iteratorLocalidade.next(); idLocalidade = ((Integer) (dadosLocalidade)).intValue(); } } UnidadeOrganizacional unidadeOrganizacional = getControladorUnidade().pesquisarUnidadeOrganizacionalLocalidade( idLocalidade); usuarioLogado.setUnidadeOrganizacional(unidadeOrganizacional); // encerrar a ordem de servi�o, com o motivo // correspodente a decurso de prazo // [UC0457] - Encerrar Ordem de Servi�o this.getControladorOrdemServico().encerrarOSSemExecucao(idOrdemServico, dataAtual, usuarioLogado, idMotivoEncerramento.toString(), dataAtual, null, null, null, null, null, null); if (idCobAtiv != null && idCobAtiv.equals(CobrancaAtividade.ENCERRAR_OS)) { repositorioCobranca.atualizarDataRealizacaoCobrancaAcaoAtivCronograma(idCobAtiv); } } // seta para null para o GC liberar idOrdemServico = null; dataComando = null; dataPrevista = null; } } } repositorioCobranca.atualizarDataRealizacaoCobrancaAcaoAtivCronograma(idCobrancaAtividadeCronograma); getControladorBatch().encerrarUnidadeProcessamentoBatch(null, idUnidadeIniciada, false); System.out.println("########## FINALIZADO EM = " + new Date()); } 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); } } /** * [UC1112] Processar Encerramento Ordens de Servi�o da A��o de Cobran�a * * @author Mariana Victor * @created 07/12/2010 * * @exception ErroRepositorioException * Repositorio Exception */ public Collection<Object[]> pesquisarAtividadeCronograma(Integer idCobrancaAcao) throws ControladorException { try { return repositorioCobranca.pesquisarAtividadeCronograma(idCobrancaAcao); } catch (ErroRepositorioException ex) { sessionContext.setRollbackOnly(); ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } } /** * [UC0214] Efetuar Parcelamento de D�bitos * * @author Raphael Rossiter * @date 28/10/2010 * * @param colecaoContaValores * @return Collection<Conta> * @throws ControladorException */ public Collection<Conta> obterContasEntradaParcelamento(Collection<ContaValoresHelper> colecaoContaValores) throws ControladorException { Collection<Conta> colecaoContaEP = new ArrayList<Conta>(); if (colecaoContaValores != null && !colecaoContaValores.isEmpty()) { Iterator contaValores = colecaoContaValores.iterator(); while (contaValores.hasNext()) { ContaValoresHelper contaValoresHelper = (ContaValoresHelper) contaValores.next(); if (contaValoresHelper.getIndicadorContasDebito() != null && contaValoresHelper.getIndicadorContasDebito().equals(new Integer("1"))) { colecaoContaEP.add(contaValoresHelper.getConta()); } } } return colecaoContaEP; } public Integer recuperaMaiorAnoMesContasParcelamento(Collection colecaoContas) { Integer maiorAnoMes = null; Iterator iteratorContas = colecaoContas.iterator(); while (iteratorContas.hasNext()) { Conta conta = (Conta) iteratorContas.next(); if (maiorAnoMes == null) { maiorAnoMes = conta.getReferencia(); } else if (conta.getReferencia() > maiorAnoMes) { maiorAnoMes = conta.getReferencia(); } } return maiorAnoMes; } /** * [UC676] Consultar Resumo Negativa��o * * @author Ivan Sergio * @date 14/01/2011 * * @param dadosConsultaNegativacaoHelper * @param idSituacaoDebito * @return * @throws ControladorException */ public Collection consultarResumoNegativacaoLigacaoAguaPorSituacaoDebito(DadosConsultaNegativacaoHelper dadosConsultaNegativacaoHelper, int idSituacaoDebito) throws ControladorException { Collection negativacaoHelper = null; try { // Pega a lista de Resumo das Negativacoes da base de dados. negativacaoHelper = repositorioCobranca.consultarNegativacaoLigacaoAguaPorSituacaoDebito(dadosConsultaNegativacaoHelper, idSituacaoDebito); } catch (ErroRepositorioException ex) { ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } return negativacaoHelper; } /** * [UC0251] Gerar Atividade de A��o de Cobran�a [SB0003] Gerar Atividade de * A��o de Cobran�a para Im�vel * * @author Vivianne Sousa * @created 22/12/2010 **/ public boolean verificaValidacaoPorItemCobrado(Integer idImovel, Integer idDocumentoTipo, Collection<ContaValoresHelper> colecaoContasValores, Collection<DebitoACobrar> colecaoDebitoACobrar) throws ControladorException { try { boolean retorno = false; Collection idsDocumentoCobranca = repositorioCobranca.pesquisarIdDocumentoCobrancaParaImovel(idImovel, idDocumentoTipo); if (idsDocumentoCobranca != null && !idsDocumentoCobranca.isEmpty()) { Collection idsConta = null; if (colecaoContasValores != null && !colecaoContasValores.isEmpty()) { idsConta = new ArrayList(); Iterator iterContas = colecaoContasValores.iterator(); while (iterContas.hasNext()) { ContaValoresHelper contaValoresHelper = (ContaValoresHelper) iterContas.next(); if (contaValoresHelper.getConta() != null) { idsConta.add(contaValoresHelper.getConta().getId()); } } } if (idsConta != null && !idsConta.isEmpty()) { Integer qtdeDocumentoCobrancaItemConta = repositorioCobranca.pesquisarQtdeDocumentoCobrancaItemConta( idsDocumentoCobranca, idsConta); if (qtdeDocumentoCobrancaItemConta > 0) { retorno = true; } } if (!retorno) { Collection idsDebitoACobrar = null; if (colecaoDebitoACobrar != null && !colecaoDebitoACobrar.isEmpty()) { idsDebitoACobrar = new ArrayList(); Iterator iterContas = colecaoDebitoACobrar.iterator(); while (iterContas.hasNext()) { DebitoACobrar debitoACobrar = (DebitoACobrar) iterContas.next(); idsDebitoACobrar.add(debitoACobrar.getId()); } } if (idsDebitoACobrar != null && !idsDebitoACobrar.isEmpty()) { Integer qtdeDocumentoCobrancaItemDebitoACobrar = repositorioCobranca .pesquisarQtdeDocumentoCobrancaItemDebitoACobrar(idsDocumentoCobranca, idsDebitoACobrar); if (qtdeDocumentoCobrancaItemDebitoACobrar > 0) { retorno = true; } } } } return retorno; } catch (ErroRepositorioException e) { throw new ControladorException("erro.sistema", e); } } /** * [UC0xxx] Emitir Documentos de Cobran�a Em Lote * * @author Mariana Victor * @date 20/01/2011 * * @return * @throws ErroRepositorioException */ public Collection<RelatorioDocumentoCobrancaOrdemCorteBean> gerarRelatorioDocumentoCobrancaOrdemCorte(Integer idCobrancaAcaoCronograma, Integer idCobrancaAcaoComando, int tamanhoMaximoDebito, String quantidadeRelatorios) throws ControladorException { Collection<RelatorioDocumentoCobrancaOrdemCorteBean> retorno = new ArrayList<RelatorioDocumentoCobrancaOrdemCorteBean>(); try { FiltroSistemaParametro filtroSistemaParametro = new FiltroSistemaParametro(); Collection colecaoSistemaParametro = Fachada.getInstancia().pesquisar(filtroSistemaParametro, SistemaParametro.class.getName()); SistemaParametro sistemaParametro = (SistemaParametro) colecaoSistemaParametro.iterator().next(); Collection<CobrancaDocumento> colecaoDocumentoCobranca = repositorioCobranca.pesquisarCobrancaDocumentoParaRelatorio( idCobrancaAcaoCronograma, idCobrancaAcaoComando); int count = 1; for (CobrancaDocumento cobrancaDocumento : colecaoDocumentoCobranca) { int count2 = 0; BigDecimal valor = new BigDecimal(0); Collection<Conta> contas = repositorioCobranca.pesquisarCobrancaDocumentoItem(cobrancaDocumento.getId()); String inscricao = getControladorImovel().pesquisarInscricaoImovel(cobrancaDocumento.getImovel().getId()); Cliente clienteUsuario = getControladorCliente().retornaDadosClienteUsuario(cobrancaDocumento.getImovel().getId()); String telefoneCliente = ""; String codigoRota = cobrancaDocumento.getImovel().getQuadra().getRota().getCodigo().toString(); String sequencialRota = ""; String descricaoSituacaoLigacaoAgua = cobrancaDocumento.getLigacaoAguaSituacao().getDescricao(); String descricaoSituacaoLigacaoEsgoto = cobrancaDocumento.getLigacaoEsgotoSituacao().getDescricao(); Date dataVencimento = Util.adicionarNumeroDiasDeUmaData(new Date(), cobrancaDocumento.getCobrancaAcao() .getNumeroDiasVencimento()); if (cobrancaDocumento.getImovel().getNumeroSequencialRota() != null) { sequencialRota = cobrancaDocumento.getImovel().getNumeroSequencialRota().toString(); } Integer idOrdemServico = null; idOrdemServico = repositorioCobranca.obterOrdemServicoAssociadaDocumentoCobranca(cobrancaDocumento.getId()); Collection colecaoClienteFone = getControladorCliente().pesquisarClienteFone(clienteUsuario.getId()); ClienteFone clienteFone = null; if (colecaoClienteFone != null && !colecaoClienteFone.isEmpty()) { Iterator colecaoClienteFoneIterator = colecaoClienteFone.iterator(); while (colecaoClienteFoneIterator.hasNext()) { clienteFone = (ClienteFone) colecaoClienteFoneIterator.next(); if (clienteFone.getIndicadorTelefonePadrao() != null && clienteFone.getIndicadorTelefonePadrao().equals(ClienteFone.INDICADOR_FONE_PADRAO)) { break; } } telefoneCliente = clienteFone.getDddTelefone(); } FiltroCobrancaDocumento filtroCobrancaDocumento = new FiltroCobrancaDocumento(); filtroCobrancaDocumento.adicionarParametro(new ParametroSimples(FiltroCobrancaDocumento.ID, cobrancaDocumento.getId())); filtroCobrancaDocumento.adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaDocumento.PERFIL_IMOVEL); Collection colecaoCobrancaDocumento = Fachada.getInstancia().pesquisar(filtroCobrancaDocumento, CobrancaDocumento.class.getName()); ImovelPerfil imovelPerfil = ((CobrancaDocumento) Util.retonarObjetoDeColecao(colecaoCobrancaDocumento)).getImovelPerfil(); // [SB0004 � Obter Representa��o num�rica do Nosso N�mero da // Ficha de Compensa��o] StringBuilder nossoNumero = Fachada.getInstancia().obterNossoNumeroFichaCompensacao( cobrancaDocumento.getDocumentoTipo().getId().toString(), cobrancaDocumento.getId().toString()); String sacadoParte01; if (cobrancaDocumento.getImovel().getNomeImovel() != null) { sacadoParte01 = cobrancaDocumento.getImovel().getNomeImovel(); } else { sacadoParte01 = clienteUsuario.getNome(); } String sacadoParte03 = Util.retornaMatriculaImovelFormatada(cobrancaDocumento.getImovel().getId()); String enderecoImovel = getControladorEndereco().pesquisarEnderecoFormatado(cobrancaDocumento.getImovel().getId()); Integer categoriaRES = 0; Integer categoriaPUB = 0; Integer categoriaIND = 0; Integer categoriaCOM = 0; // Inclui [UC0108] - Obter Quantidade de Economias por Categoria Collection<Categoria> colecaoCategorias = getControladorImovel().obterQuantidadeEconomiasCategoria( cobrancaDocumento.getImovel()); Iterator iteratorCategoria = colecaoCategorias.iterator(); while (iteratorCategoria.hasNext()) { Categoria categoria = (Categoria) iteratorCategoria.next(); if (categoria.getDescricaoAbreviada().equals(Categoria.RESIDENCIAL_DESCRICAO_ABREVIADA)) { categoriaRES++; } else if (categoria.getDescricaoAbreviada().equals(Categoria.COMERCIAL_DESCRICAO_ABREVIADA)) { categoriaCOM++; } else if (categoria.getDescricaoAbreviada().equals(Categoria.INDUSTRIAL_DESCRICAO_ABREVIADA)) { categoriaIND++; } else if (categoria.getDescricaoAbreviada().equals(Categoria.PUBLICO_DESCRICAO_ABREVIADA)) { categoriaPUB++; } } // representa��o num�rica do c�digo de barras String representacaoNumericaCodBarra = ""; // Obt�m a representa��o num�rica do // c�digode // barra representacaoNumericaCodBarra = this.getControladorArrecadacao().obterRepresentacaoNumericaCodigoBarra(5, cobrancaDocumento.getValorDocumento(), cobrancaDocumento.getLocalidade().getId(), cobrancaDocumento.getImovel().getId(), null, null, null, null, String.valueOf(cobrancaDocumento.getNumeroSequenciaDocumento()), cobrancaDocumento.getDocumentoTipo().getId(), null, null, null); // Formata a representa��o n�merica do // c�digo de // barras String representacaoNumericaCodBarraFormatada = representacaoNumericaCodBarra.substring(0, 11) + "-" + representacaoNumericaCodBarra.substring(11, 12) + " " + representacaoNumericaCodBarra.substring(12, 23) + "-" + representacaoNumericaCodBarra.substring(23, 24) + " " + representacaoNumericaCodBarra.substring(24, 35) + "-" + representacaoNumericaCodBarra.substring(35, 36) + " " + representacaoNumericaCodBarra.substring(36, 47) + "-" + representacaoNumericaCodBarra.substring(47, 48); String representacaoNumericaCodBarraSemDigito = representacaoNumericaCodBarra.substring(0, 11) + representacaoNumericaCodBarra.substring(12, 23) + representacaoNumericaCodBarra.substring(24, 35) + representacaoNumericaCodBarra.substring(36, 47); String nossoNumeroSemDV = nossoNumero.toString().substring(0, 17); String fatorVencimento = CodigoBarras.obterFatorVencimento(dataVencimento); String especificacaoCodigoBarra = CodigoBarras.obterEspecificacaoCodigoBarraFichaCompensacao( ConstantesSistema.CODIGO_BANCO_FICHA_COMPENSACAO, ConstantesSistema.CODIGO_MOEDA_FICHA_COMPENSACAO, cobrancaDocumento.getValorDocumento(), nossoNumeroSemDV.toString(), ConstantesSistema.CARTEIRA_FICHA_COMPENSACAO, fatorVencimento); String representacaoNumericaCodigoBarraFichaCompensacao = CodigoBarras.obterRepresentacaoNumericaCodigoBarraFichaCompensacao(especificacaoCodigoBarra); boolean registroAdicionado = false; BigDecimal valorTotal = BigDecimal.ZERO; for (Conta conta : contas) { count2++; if ((contas.size() - count2) > tamanhoMaximoDebito) { valor = valor.add(conta.getValorTotal()); } else { RelatorioDocumentoCobrancaOrdemCorteBean bean = new RelatorioDocumentoCobrancaOrdemCorteBean(); bean.setSequencial(Util.retornaSequencialFormatado(count)); if (idOrdemServico != null) { bean.setOrdemServico(idOrdemServico.toString()); } else { bean.setOrdemServico(""); } bean.setDataEmissao(Util.formatarData(cobrancaDocumento.getEmissao())); bean.setDataValidade(Util.formatarData(dataVencimento)); bean.setGrupo(cobrancaDocumento.getQuadra().getRota().getCobrancaGrupo().getId().toString()); bean.setMatricula(cobrancaDocumento.getImovel().getMatriculaFormatada()); bean.setInscricao(inscricao); bean.setRota(codigoRota); bean.setSequencialRota(sequencialRota); bean.setSituacaoLigacaoAgua(descricaoSituacaoLigacaoAgua); bean.setSituacaoLigacaoEsgoto(descricaoSituacaoLigacaoEsgoto); bean.setNomeClienteUsuario(clienteUsuario.getNome()); bean.setPerfilCliente(imovelPerfil.getDescricao()); if (clienteUsuario.getCpf() != null) bean.setCpfCliente(Util.formatarCpf(clienteUsuario.getCpf())); else if (clienteUsuario.getCnpj() != null) bean.setCpfCliente(Util.formatarCnpj(clienteUsuario.getCnpj())); else bean.setCpfCliente(""); bean.setTelefoneCliente(telefoneCliente); bean.setEnderecoImovel(enderecoImovel); bean.setSequencialDocumentoCobranca("" + cobrancaDocumento.getNumeroSequenciaDocumento()); bean.setCategoriaRES(categoriaRES.toString()); bean.setCategoriaCOM(categoriaCOM.toString()); bean.setCategoriaIND(categoriaIND.toString()); bean.setCategoriaPUB(categoriaPUB.toString()); RelatorioVisitaCobrancaSubBean relatorioVisitaCobrancaSubBean = new RelatorioVisitaCobrancaSubBean(); // relatorioVisitaCobrancaSubBean.setRepresentacaoNumericaCodBarraSemDigito(representacaoNumericaCodBarraSemDigito); relatorioVisitaCobrancaSubBean.setIdImovel(cobrancaDocumento.getImovel().getId().toString()); relatorioVisitaCobrancaSubBean.setNossoNumero(nossoNumero.toString()); relatorioVisitaCobrancaSubBean.setSacadoParte01(sacadoParte01); relatorioVisitaCobrancaSubBean.setSacadoParte03(sacadoParte03); if ((contas.size() - count2) == tamanhoMaximoDebito) { valor = valor.add(conta.getValorTotal()); valorTotal = valorTotal.add(valor); bean.setValor(Util.formatarMoedaReal(valor)); bean.setMesAno("DEB. AT� " + conta.getReferenciaFormatada()); bean.setDataVencimento(Util.formatarData(conta.getDataVencimentoConta())); } else { valorTotal = valorTotal.add(conta.getValorTotal()); bean.setValor(Util.formatarMoedaReal(conta.getValorTotal())); bean.setMesAno(conta.getReferenciaFormatada()); bean.setDataVencimento(Util.formatarData(conta.getDataVencimentoConta())); } bean.setValorTotal(Util.formatarMoedaReal(valorTotal)); BigDecimal valorDocumento = valorTotal; if (cobrancaDocumento.getValorAcrescimos() != null) { valorDocumento.add(cobrancaDocumento.getValorAcrescimos()); } if (cobrancaDocumento.getValorDesconto() != null) { valorDocumento.subtract(cobrancaDocumento.getValorDesconto()); } relatorioVisitaCobrancaSubBean.setValorDocumento(Util.formatarMoedaReal(valorDocumento)); if (sistemaParametro.getValorExtratoFichaComp() != null && !sistemaParametro.getValorExtratoFichaComp().equals(BigDecimal.ZERO)) { if (valorDocumento.compareTo(sistemaParametro.getValorExtratoFichaComp()) != -1) { relatorioVisitaCobrancaSubBean .setRepresentacaoNumericaCodBarraFormatada(representacaoNumericaCodigoBarraFichaCompensacao); relatorioVisitaCobrancaSubBean.setRepresentacaoNumericaCodBarraSemDigito(especificacaoCodigoBarra); bean.setSubRelatorio("relatorioVisitaCobrancaEmissaoFichaCompensacao.jasper"); } else { relatorioVisitaCobrancaSubBean .setRepresentacaoNumericaCodBarraFormatada(representacaoNumericaCodBarraFormatada); relatorioVisitaCobrancaSubBean .setRepresentacaoNumericaCodBarraSemDigito(representacaoNumericaCodBarraSemDigito); bean.setSubRelatorio("relatorioVisitaCobrancaEmissaoPadrao.jasper"); } } else { relatorioVisitaCobrancaSubBean .setRepresentacaoNumericaCodBarraFormatada(representacaoNumericaCodBarraFormatada); relatorioVisitaCobrancaSubBean .setRepresentacaoNumericaCodBarraSemDigito(representacaoNumericaCodBarraSemDigito); bean.setSubRelatorio("relatorioVisitaCobrancaEmissaoPadrao.jasper"); } bean.setRelatorioVisitaCobrancaSubBean(relatorioVisitaCobrancaSubBean); registroAdicionado = true; retorno.add(bean); } } // adiciona linhas em branco no relatorio para alinhar, // quando a quantidade de relatorios/pagina = 2 // e o numero de contas for menor que a metade do // "tamanhoMaximoDebito" int metadeTamanhoMaxDebito = (tamanhoMaximoDebito + 1) / 2; if (quantidadeRelatorios != null && quantidadeRelatorios.equals("2") && contas.size() < metadeTamanhoMaxDebito) { for (int i = 0; i < (metadeTamanhoMaxDebito - contas.size()); i++) { RelatorioDocumentoCobrancaOrdemCorteBean bean = new RelatorioDocumentoCobrancaOrdemCorteBean(); bean.setSequencial(Util.retornaSequencialFormatado(count)); if (idOrdemServico != null) { bean.setOrdemServico(idOrdemServico.toString()); } else { bean.setOrdemServico(""); } bean.setDataEmissao(Util.formatarData(cobrancaDocumento.getEmissao())); bean.setDataValidade(Util.formatarData(dataVencimento)); bean.setGrupo(cobrancaDocumento.getQuadra().getRota().getCobrancaGrupo().getId().toString()); bean.setMatricula(cobrancaDocumento.getImovel().getMatriculaFormatada()); bean.setInscricao(inscricao); bean.setRota(codigoRota); bean.setSequencialRota(sequencialRota); bean.setSituacaoLigacaoAgua(descricaoSituacaoLigacaoAgua); bean.setSituacaoLigacaoEsgoto(descricaoSituacaoLigacaoEsgoto); bean.setNomeClienteUsuario(clienteUsuario.getNome()); bean.setPerfilCliente(imovelPerfil.getDescricao()); if (clienteUsuario.getCpf() != null) bean.setCpfCliente(Util.formatarCpf(clienteUsuario.getCpf())); else if (clienteUsuario.getCnpj() != null) bean.setCpfCliente(Util.formatarCnpj(clienteUsuario.getCnpj())); else bean.setCpfCliente(""); bean.setTelefoneCliente(telefoneCliente); bean.setEnderecoImovel(enderecoImovel); bean.setSequencialDocumentoCobranca("" + cobrancaDocumento.getNumeroSequenciaDocumento()); bean.setCategoriaRES(categoriaRES.toString()); bean.setCategoriaCOM(categoriaCOM.toString()); bean.setCategoriaIND(categoriaIND.toString()); bean.setCategoriaPUB(categoriaPUB.toString()); RelatorioVisitaCobrancaSubBean relatorioVisitaCobrancaSubBean = new RelatorioVisitaCobrancaSubBean(); relatorioVisitaCobrancaSubBean.setRepresentacaoNumericaCodBarraSemDigito(representacaoNumericaCodBarraSemDigito); relatorioVisitaCobrancaSubBean.setIdImovel(cobrancaDocumento.getImovel().getId().toString()); relatorioVisitaCobrancaSubBean.setNossoNumero(nossoNumero.toString()); relatorioVisitaCobrancaSubBean.setSacadoParte01(sacadoParte01); relatorioVisitaCobrancaSubBean.setSacadoParte03(sacadoParte03); BigDecimal valorDocumento = valorTotal; if (cobrancaDocumento.getValorAcrescimos() != null) { valorDocumento.add(cobrancaDocumento.getValorAcrescimos()); } if (cobrancaDocumento.getValorDesconto() != null) { valorDocumento.subtract(cobrancaDocumento.getValorDesconto()); } relatorioVisitaCobrancaSubBean.setValorDocumento(Util.formatarMoedaReal(valorDocumento)); if (sistemaParametro.getValorExtratoFichaComp() != null && !sistemaParametro.getValorExtratoFichaComp().equals(BigDecimal.ZERO)) { if (valorDocumento.compareTo(sistemaParametro.getValorExtratoFichaComp()) != -1) { bean.setSubRelatorio("relatorioVisitaCobrancaEmissaoFichaCompensacao.jasper"); relatorioVisitaCobrancaSubBean .setRepresentacaoNumericaCodBarraFormatada(representacaoNumericaCodigoBarraFichaCompensacao); } else { bean.setSubRelatorio("relatorioVisitaCobrancaEmissaoPadrao.jasper"); relatorioVisitaCobrancaSubBean .setRepresentacaoNumericaCodBarraFormatada(representacaoNumericaCodBarraFormatada); } } else { bean.setSubRelatorio("relatorioVisitaCobrancaEmissaoPadrao.jasper"); relatorioVisitaCobrancaSubBean .setRepresentacaoNumericaCodBarraFormatada(representacaoNumericaCodBarraFormatada); } bean.setRelatorioVisitaCobrancaSubBean(relatorioVisitaCobrancaSubBean); registroAdicionado = true; retorno.add(bean); } } if (registroAdicionado) { count++; } } } catch (ErroRepositorioException e) { throw new ControladorException("erro.sistema", e); } return retorno; } public Collection<RelatorioDocumentoCobrancaOrdemFiscalizacaoBean> gerarRelatorioDocumentoCobrancaOrdemFiscalizacao( Integer idCobrancaAcaoCronograma, Integer idCobrancaAcaoComando, int tamanhoMaximoDebito, String quantidadeRelatorios) throws ControladorException { Collection<RelatorioDocumentoCobrancaOrdemFiscalizacaoBean> retorno = new ArrayList<RelatorioDocumentoCobrancaOrdemFiscalizacaoBean>(); try { Collection<CobrancaDocumento> colecaoDocumentoCobranca = repositorioCobranca.pesquisarCobrancaDocumentoParaRelatorio( idCobrancaAcaoCronograma, idCobrancaAcaoComando); int count = 1; for (CobrancaDocumento cobrancaDocumento : colecaoDocumentoCobranca) { int count2 = 0; BigDecimal valor = new BigDecimal(0); Collection<Conta> contas = repositorioCobranca.pesquisarCobrancaDocumentoItem(cobrancaDocumento.getId()); String inscricao = getControladorImovel().pesquisarInscricaoImovel(cobrancaDocumento.getImovel().getId()); Cliente clienteUsuario = getControladorCliente().retornaDadosClienteUsuario(cobrancaDocumento.getImovel().getId()); String telefoneCliente = ""; String codigoRota = cobrancaDocumento.getImovel().getQuadra().getRota().getCodigo().toString(); String sequencialRota = ""; String descricaoSituacaoLigacaoAgua = cobrancaDocumento.getLigacaoAguaSituacao().getDescricao(); String descricaoSituacaoLigacaoEsgoto = cobrancaDocumento.getLigacaoEsgotoSituacao().getDescricao(); Date dataVencimento = Util.adicionarNumeroDiasDeUmaData(new Date(), cobrancaDocumento.getCobrancaAcao() .getNumeroDiasVencimento()); if (cobrancaDocumento.getImovel().getNumeroSequencialRota() != null) { sequencialRota = cobrancaDocumento.getImovel().getNumeroSequencialRota().toString(); } Integer idOrdemServico = null; idOrdemServico = repositorioCobranca.obterOrdemServicoAssociadaDocumentoCobranca(cobrancaDocumento.getId()); Collection colecaoClienteFone = getControladorCliente().pesquisarClienteFone(clienteUsuario.getId()); ClienteFone clienteFone = null; if (colecaoClienteFone != null && !colecaoClienteFone.isEmpty()) { Iterator colecaoClienteFoneIterator = colecaoClienteFone.iterator(); while (colecaoClienteFoneIterator.hasNext()) { clienteFone = (ClienteFone) colecaoClienteFoneIterator.next(); if (clienteFone.getIndicadorTelefonePadrao() != null && clienteFone.getIndicadorTelefonePadrao().equals(ClienteFone.INDICADOR_FONE_PADRAO)) { break; } } telefoneCliente = clienteFone.getDddTelefone(); } FiltroCobrancaDocumento filtroCobrancaDocumento = new FiltroCobrancaDocumento(); filtroCobrancaDocumento.adicionarParametro(new ParametroSimples(FiltroCobrancaDocumento.ID, cobrancaDocumento.getId())); filtroCobrancaDocumento.adicionarCaminhoParaCarregamentoEntidade(FiltroCobrancaDocumento.PERFIL_IMOVEL); Collection colecaoCobrancaDocumento = Fachada.getInstancia().pesquisar(filtroCobrancaDocumento, CobrancaDocumento.class.getName()); ImovelPerfil imovelPerfil = ((CobrancaDocumento) Util.retonarObjetoDeColecao(colecaoCobrancaDocumento)).getImovelPerfil(); String enderecoImovel = getControladorEndereco().pesquisarEnderecoFormatado(cobrancaDocumento.getImovel().getId()); Integer categoriaRES = 0; Integer categoriaPUB = 0; Integer categoriaIND = 0; Integer categoriaCOM = 0; // Inclui [UC0108] - Obter Quantidade de Economias por Categoria Collection<Categoria> colecaoCategorias = getControladorImovel().obterQuantidadeEconomiasCategoria( cobrancaDocumento.getImovel()); Iterator iteratorCategoria = colecaoCategorias.iterator(); while (iteratorCategoria.hasNext()) { Categoria categoria = (Categoria) iteratorCategoria.next(); if (categoria.getDescricaoAbreviada().equals(Categoria.RESIDENCIAL_DESCRICAO_ABREVIADA)) { categoriaRES++; } else if (categoria.getDescricaoAbreviada().equals(Categoria.COMERCIAL_DESCRICAO_ABREVIADA)) { categoriaCOM++; } else if (categoria.getDescricaoAbreviada().equals(Categoria.INDUSTRIAL_DESCRICAO_ABREVIADA)) { categoriaIND++; } else if (categoria.getDescricaoAbreviada().equals(Categoria.PUBLICO_DESCRICAO_ABREVIADA)) { categoriaPUB++; } } String quantidadeContas = this.repositorioCobranca.pesquisarQuantidadeContasDebito(cobrancaDocumento.getId()).toString(); boolean registroAdicionado = false; BigDecimal valorTotal = BigDecimal.ZERO; RelatorioDocumentoCobrancaOrdemFiscalizacaoBean bean = new RelatorioDocumentoCobrancaOrdemFiscalizacaoBean(); bean.setSequencial(Util.retornaSequencialFormatado(count)); if (idOrdemServico != null) { bean.setOrdemServico(idOrdemServico.toString()); } else { bean.setOrdemServico(""); } bean.setDataEmissao(Util.formatarData(cobrancaDocumento.getEmissao())); bean.setDataValidade(Util.formatarData(dataVencimento)); bean.setGrupo(cobrancaDocumento.getImovel().getQuadra().getRota().getCobrancaGrupo().getId().toString()); bean.setMatricula(cobrancaDocumento.getImovel().getMatriculaFormatada()); bean.setInscricao(inscricao); bean.setRota(codigoRota); bean.setSequencialRota(sequencialRota); bean.setSituacaoLigacaoAgua(descricaoSituacaoLigacaoAgua); bean.setSituacaoLigacaoEsgoto(descricaoSituacaoLigacaoEsgoto); bean.setNomeClienteUsuario(clienteUsuario.getNome()); bean.setPerfilCliente(imovelPerfil.getDescricao()); if (clienteUsuario.getCpf() != null) bean.setCpfCliente(Util.formatarCpf(clienteUsuario.getCpf())); else if (clienteUsuario.getCnpj() != null) bean.setCpfCliente(Util.formatarCnpj(clienteUsuario.getCnpj())); else bean.setCpfCliente(""); bean.setTelefoneCliente(telefoneCliente); bean.setEnderecoImovel(enderecoImovel); bean.setSequencialDocumentoCobranca("" + cobrancaDocumento.getNumeroSequenciaDocumento()); bean.setQuantidadeContas(quantidadeContas); bean.setCategoriaRES(categoriaRES.toString()); bean.setCategoriaCOM(categoriaCOM.toString()); bean.setCategoriaIND(categoriaIND.toString()); bean.setCategoriaPUB(categoriaPUB.toString()); ArrayList arraySubBean = new ArrayList(); for (Conta conta : contas) { count2++; if ((contas.size() - count2) > tamanhoMaximoDebito) { valor = valor.add(conta.getValorTotal()); } else { RelatorioDocumentoCobrancaOrdemFiscalizacaoSubBean subBean = new RelatorioDocumentoCobrancaOrdemFiscalizacaoSubBean(); if ((contas.size() - count2) == tamanhoMaximoDebito) { valor = valor.add(conta.getValorTotal()); valorTotal = valorTotal.add(valor); subBean.setValor(Util.formatarMoedaReal(valor)); subBean.setMesAno("DEB. AT� " + conta.getReferenciaFormatada()); subBean.setDataVencimento(Util.formatarData(conta.getDataVencimentoConta())); } else { valorTotal = valorTotal.add(conta.getValorTotal()); subBean.setValor(Util.formatarMoedaReal(conta.getValorTotal())); subBean.setMesAno(conta.getReferenciaFormatada()); subBean.setDataVencimento(Util.formatarData(conta.getDataVencimentoConta())); } arraySubBean.add(subBean); registroAdicionado = true; } } if (registroAdicionado) { RelatorioDataSource dataSourceAno = new RelatorioDataSource(arraySubBean); bean.setDataSource(dataSourceAno); bean.setValorTotal(Util.formatarMoedaReal(valorTotal)); retorno.add(bean); count++; } } } catch (ErroRepositorioException e) { throw new ControladorException("erro.sistema", e); } return retorno; } public List<String> pesquisarTipoDeCorte() throws ControladorException { try { return this.repositorioCobranca.pesquisarTipoDeCorte(); } catch (ErroRepositorioException e) { throw new ControladorException("erro.sistema", e); } } public List<String> pesquisarOcorrenciasFiscalizacao() throws ControladorException { try { return this.repositorioCobranca.pesquisarOcorrenciasFiscalizacao(); } catch (ErroRepositorioException e) { throw new ControladorException("erro.sistema", e); } } /** * [UC0968] Emitir Cartas da Campanha de Final de Ano 2009 * * [SB0001] � Obter Valor do Documento * * @author Mariana Victor * @data 16/03/2011 * * @throws ControladorException * */ public BigDecimal obterValorDoDocumento(CobrancaDocumento cobrancaDocumento) throws ControladorException { BigDecimal valorTotalContas = BigDecimal.ZERO; BigDecimal valorTotalGuias = BigDecimal.ZERO; BigDecimal valorTotalDebitosACobrar = BigDecimal.ZERO; BigDecimal valorTotalCreditosARealizar = BigDecimal.ZERO; BigDecimal valorDocumento = BigDecimal.ZERO; BigDecimal[] valorContaAcrescimos = this.obterValorTotalContaAcrescimos(cobrancaDocumento); valorTotalContas = valorContaAcrescimos[0]; valorTotalGuias = this.obterValorTotalGuias(cobrancaDocumento); valorTotalDebitosACobrar = this.obterValorTotalDebitosACobrar(cobrancaDocumento); valorTotalCreditosARealizar = this.obterValorTotalCreditosARealizar(cobrancaDocumento); // Valor Total valorDocumento = valorTotalContas.add(valorTotalGuias).add(valorTotalDebitosACobrar).subtract(valorTotalCreditosARealizar); return valorDocumento; } /** * [UC0968] Emitir Cartas da Campanha de Final de Ano 2009 * * Obter Valor Total das Contas e Valor total de Acr�scimos das Contas * * @author Mariana Victor * @throws ControladorException * @data 17/03/2011 * * @throws ControladorException * */ private BigDecimal[] obterValorTotalContaAcrescimos(CobrancaDocumento cobrancaDocumento) throws ControladorException { BigDecimal valorTotalContas = BigDecimal.ZERO; BigDecimal valorTotalAcrescimos = BigDecimal.ZERO; Collection colecaoCobrancaDocumentoItemConta = null; try { colecaoCobrancaDocumentoItemConta = this.repositorioCobranca.selecionarCobrancaDocumentoItemReferenteConta(cobrancaDocumento); } catch (ErroRepositorioException ex) { ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } // 1.2. Para cada item do tipo CONTA da lista de itens do documento if (colecaoCobrancaDocumentoItemConta != null && !colecaoCobrancaDocumentoItemConta.isEmpty()) { Iterator iterator = colecaoCobrancaDocumentoItemConta.iterator(); while (iterator.hasNext()) { CobrancaDocumentoItem item = (CobrancaDocumentoItem) iterator.next(); valorTotalContas = valorTotalContas.add(item.getValorItemCobrado()).add(item.getValorAcrescimos()); valorTotalAcrescimos = valorTotalAcrescimos.add(item.getValorAcrescimos()); } } BigDecimal[] retorno = { valorTotalContas, valorTotalAcrescimos }; return retorno; } /** * [UC0968] Emitir Cartas da Campanha de Final de Ano 2009 * * Obter Valor Total das Guias * * @author Mariana Victor * @throws ControladorException * @data 17/03/2011 * * @throws ControladorException * */ private BigDecimal obterValorTotalGuias(CobrancaDocumento cobrancaDocumento) throws ControladorException { BigDecimal valorTotalGuias = BigDecimal.ZERO; Collection colecaoCobrancaDocumentoItemGuia = null; try { colecaoCobrancaDocumentoItemGuia = this.repositorioCobranca.selecionarCobrancaDocumentoItemReferenteGuia(cobrancaDocumento); } catch (ErroRepositorioException ex) { ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } // 1.3. Para cada item do tipo GUIA da lista de itens do documento if (colecaoCobrancaDocumentoItemGuia != null && !colecaoCobrancaDocumentoItemGuia.isEmpty()) { Iterator iterator = colecaoCobrancaDocumentoItemGuia.iterator(); while (iterator.hasNext()) { CobrancaDocumentoItem item = (CobrancaDocumentoItem) iterator.next(); valorTotalGuias = valorTotalGuias.add(item.getValorItemCobrado()); } } return valorTotalGuias; } /** * [UC0968] Emitir Cartas da Campanha de Final de Ano 2009 * * Obter Valor Total dos D�bitos � Cobrar * * @author Mariana Victor * @throws ControladorException * @data 17/03/2011 * * @throws ControladorException * */ private BigDecimal obterValorTotalDebitosACobrar(CobrancaDocumento cobrancaDocumento) throws ControladorException { BigDecimal valorTotalDebitosACobrar = BigDecimal.ZERO; Collection colecaoCobrancaDocumentoItemDebitoACobrar = null; try { colecaoCobrancaDocumentoItemDebitoACobrar = this.repositorioCobranca .selecionarCobrancaDocumentoItemReferenteDebitoACobrar(cobrancaDocumento); } catch (ErroRepositorioException ex) { ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } // 1.4. Para cada item do tipo D�BITO A COBRAR da lista de itens do // documento if (colecaoCobrancaDocumentoItemDebitoACobrar != null && !colecaoCobrancaDocumentoItemDebitoACobrar.isEmpty()) { Iterator iterator = colecaoCobrancaDocumentoItemDebitoACobrar.iterator(); while (iterator.hasNext()) { CobrancaDocumentoItem item = (CobrancaDocumentoItem) iterator.next(); valorTotalDebitosACobrar = valorTotalDebitosACobrar.add(item.getValorItemCobrado()); } } return valorTotalDebitosACobrar; } /** * [UC0968] Emitir Cartas da Campanha de Final de Ano 2009 * * Obter Valor Total dos Cr�ditos � Realizar * * @author Mariana Victor * @throws ControladorException * @data 17/03/2011 * * @throws ControladorException * */ private BigDecimal obterValorTotalCreditosARealizar(CobrancaDocumento cobrancaDocumento) throws ControladorException { BigDecimal valorTotalCreditosARealizar = BigDecimal.ZERO; Collection colecaoCobrancaDocumentoItemCreditoACobrar = null; try { colecaoCobrancaDocumentoItemCreditoACobrar = this.repositorioCobranca .selecionarCobrancaDocumentoItemReferenteCreditoACobrar(cobrancaDocumento); } catch (ErroRepositorioException ex) { ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } // 1.5. Para cada item do tipo CR�DITO A COBRAR da lista de itens do // documento if (colecaoCobrancaDocumentoItemCreditoACobrar != null && !colecaoCobrancaDocumentoItemCreditoACobrar.isEmpty()) { Iterator iterator = colecaoCobrancaDocumentoItemCreditoACobrar.iterator(); while (iterator.hasNext()) { CobrancaDocumentoItem item = (CobrancaDocumentoItem) iterator.next(); valorTotalCreditosARealizar = valorTotalCreditosARealizar.add(item.getValorItemCobrado()); } } return valorTotalCreditosARealizar; } /** * [UC0968] Emitir Cartas da Campanha de Final de Ano 2009 * * [SB0003] � Gerar Dados Pr�prios do Formato Ficha de Compensa��o * * @author Mariana Victor * @data 16/03/2011 * * @param * @return String[] * */ private String gerarDadosPropriosFormatoFichaCompensacao(CobrancaDocumento cobrancaDocumento) throws ControladorException { SistemaParametro sistemaParametro = this.getControladorUtil().pesquisarParametrosDoSistema(); StringBuilder cobrancaDocumentoTxt = new StringBuilder(); // 1 - C�digo do Banco String codigoBanco = "001-9"; cobrancaDocumentoTxt.append(Util.completaString(codigoBanco, 5)); // [SB0005 � Obter Representa��o num�rica do Nosso N�mero da Ficha de // Compensa��o] StringBuilder nossoNumero = Fachada.getInstancia().obterNossoNumeroFichaCompensacao( cobrancaDocumento.getDocumentoTipo().getId().toString(), cobrancaDocumento.getId().toString()); String nossoNumeroSemDV = nossoNumero.toString().substring(0, 17); // [SB0006 � Obter Fator de Vencimento] Date dataVencimento = Util.adicionarNumeroDiasDeUmaData(new Date(), 75); String fatorVencimento = CodigoBarras.obterFatorVencimento(dataVencimento); String representacaoNumericaCodBarraSemDigito = CodigoBarras.obterEspecificacaoCodigoBarraFichaCompensacao( ConstantesSistema.CODIGO_BANCO_FICHA_COMPENSACAO, ConstantesSistema.CODIGO_MOEDA_FICHA_COMPENSACAO, cobrancaDocumento.getValorDocumento(), nossoNumeroSemDV.toString(), ConstantesSistema.CARTEIRA_FICHA_COMPENSACAO, fatorVencimento); // 2 - Representa��o num�rica do c�digo de barras String representacaoNumericaCodigoBarraFichaCompensacao = CodigoBarras.obterRepresentacaoNumericaCodigoBarraFichaCompensacao(representacaoNumericaCodBarraSemDigito); cobrancaDocumentoTxt.append(Util.completaString(representacaoNumericaCodigoBarraFichaCompensacao, 54)); // 3 - Local de Pagamento String localPagamento = "PAG�VEL EM QUALQUER BANCO AT� O VENCIMENTO"; cobrancaDocumentoTxt.append(Util.completaString(localPagamento, 45)); // 4 - Vencimento String vencimento = "Contra-apresenta��o"; cobrancaDocumentoTxt.append(Util.completaString(vencimento, 20)); // 5 - Cedente String cedente = ""; if (sistemaParametro.getNomeAbreviadoEmpresa().equals(SistemaParametro.EMPRESA_COMPESA)) { cedente = "COMPESA - Companhia Pernambucana de Saneamento"; } cobrancaDocumentoTxt.append(Util.completaString(cedente, 50)); // 6 - Ag�ncia/C�digo Cedente String agenciaCodigoCedente = ""; if (sistemaParametro.getNomeAbreviadoEmpresa().equals(SistemaParametro.EMPRESA_COMPESA)) { agenciaCodigoCedente = "3234-4/2868-1"; } cobrancaDocumentoTxt.append(Util.completaString(agenciaCodigoCedente, 13)); // 7 - Data do Documento String dataDocumento = Util.formatarData(new Date()); cobrancaDocumentoTxt.append(Util.completaString(dataDocumento, 10)); // 8 - N�mero do Documento String numeroDocumento = cobrancaDocumento.getImovel().getId().toString(); cobrancaDocumentoTxt.append(Util.completaString(numeroDocumento, 10)); // 9 - Esp�cie do Documento String especie = "FAT"; cobrancaDocumentoTxt.append(Util.completaString(especie, 3)); // 10 - Aceite String aceite = "N"; cobrancaDocumentoTxt.append(Util.completaString(aceite, 1)); // 11 - Data do Processamento String dataProcessamento = Util.formatarData(new Date()); cobrancaDocumentoTxt.append(Util.completaString(dataProcessamento, 10)); // 12 - Nosso N�mero cobrancaDocumentoTxt.append(Util.completaString(nossoNumero.toString(), 19)); // 13 - Carteira String carteira = "18"; cobrancaDocumentoTxt.append(Util.completaString(carteira, 2)); // 14 - Valor Documento BigDecimal valorDocumento = this.obterValorDoDocumento(cobrancaDocumento); cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(Util.formataBigDecimal(valorDocumento, 2, true), 14)); // 15 - Desconto/Abatimento BigDecimal[] valorTotalContasAcrescimos = this.obterValorTotalContaAcrescimos(cobrancaDocumento); BigDecimal descontoAbatimento = valorTotalContasAcrescimos[1]; cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(Util.formataBigDecimal(descontoAbatimento, 2, true), 14)); // 16 - Mora/Multa BigDecimal moraMulta = BigDecimal.ZERO; cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(Util.formataBigDecimal(moraMulta, 2, true), 14)); // 17 - Valor Cobrado BigDecimal valorCobrado = valorDocumento.subtract(descontoAbatimento.add(moraMulta)); cobrancaDocumentoTxt.append(Util.completaStringComEspacoAEsquerda(Util.formataBigDecimal(valorCobrado, 2, true), 14)); // 18 - Sacado � parte 1 String sacadoParte01 = ""; if (cobrancaDocumento.getImovel() != null && cobrancaDocumento.getImovel().getNomeImovel() != null) { sacadoParte01 = cobrancaDocumento.getImovel().getNomeImovel(); } else { Cliente cliente = this.getControladorImovel().pesquisarClienteUsuarioImovel(cobrancaDocumento.getImovel().getId()); if (cliente != null) { sacadoParte01 = cliente.getNome(); } } cobrancaDocumentoTxt.append(Util.completaString(sacadoParte01, 30)); // 19 - Sacado � parte 2 String sacadoParte02 = " Matricula: "; cobrancaDocumentoTxt.append(Util.completaString(sacadoParte02, 16)); // 20 - Sacado � parte 3 String sacadoParte03 = Util.retornaMatriculaImovelFormatada(cobrancaDocumento.getImovel().getId()); cobrancaDocumentoTxt.append(Util.completaString(sacadoParte03, 9)); // 21 - Sacado � endere�o String[] parmsEnderecoImovel = getControladorEndereco().pesquisarEnderecoFormatadoDividido(cobrancaDocumento.getImovel().getId()); String sacadoEndereco = parmsEnderecoImovel[0]; cobrancaDocumentoTxt.append(Util.completaString(sacadoEndereco, 50)); // 22 - C�digo de Barras // Cria o objeto para gerar o c�digode barras no // padr�o intercalado 2 de 5 Interleaved2of5 codigoBarraIntercalado2de5 = new Interleaved2of5(); cobrancaDocumentoTxt .append(Util.completaString(codigoBarraIntercalado2de5.encodeValue(representacaoNumericaCodBarraSemDigito), 112)); String txtString = cobrancaDocumentoTxt.toString(); txtString = txtString.replace('\'', ' '); txtString = txtString.replace('`', ' '); return txtString; } /** * [UC1152] Emiss�o Boletim Medi��o Cobran�a * * Pesquisa os Itens de Servi�o relacionados ao boletim de medi��o de * cobran�a selecionado * * @author Mariana Victor * @date 21/03/2011 * * @param FiltrarRelatorioBoletimMedicaoCobrancaHelper * * @return Collection<RelatorioBoletimMedicaoCobrancaHelper> * @throws ControladorException */ public Collection<RelatorioBoletimMedicaoCobrancaHelper> pesquisarItensServico(FiltrarRelatorioBoletimMedicaoCobrancaHelper helper, String tipoCobrancaBoletim) throws ControladorException { Collection colecaoRetorno = new ArrayList(); try { Integer anoMes = new Integer(helper.getMesAnoReferencia()); Integer idGrupoCobranca = new Integer(helper.getGrupoCobranca()); Integer idGerenciaRegional = null; if (helper.getGerenciaRegional() != null && !helper.getGerenciaRegional().equals("")) { idGerenciaRegional = new Integer(helper.getGerenciaRegional()); } Integer idUnidadeNegocio = null; if (helper.getUnidadeNegocio() != null && !helper.getUnidadeNegocio().equals("")) { idUnidadeNegocio = new Integer(helper.getUnidadeNegocio()); } Integer idLocalidadeInicial = null; if (helper.getLocalidadeInicial() != null && !helper.getLocalidadeInicial().equals("")) { idLocalidadeInicial = new Integer(helper.getLocalidadeInicial()); } Integer idLocalidadeFinal = null; if (helper.getLocalidadeFinal() != null && !helper.getLocalidadeFinal().equals("")) { idLocalidadeFinal = new Integer(helper.getLocalidadeFinal()); } Collection colecaoBoletimMedicaoCobranca = null; if (tipoCobrancaBoletim.equals("desconto")) { colecaoBoletimMedicaoCobranca = this.repositorioCobranca.pesquisarItensServicoCobrancaBoletimDesconto(anoMes, idGrupoCobranca, idGerenciaRegional, idUnidadeNegocio, idLocalidadeInicial, idLocalidadeFinal); } else if (tipoCobrancaBoletim.equals("executado")) { colecaoBoletimMedicaoCobranca = this.repositorioCobranca.pesquisarItensServicoCobrancaBoletimExecutados(anoMes, idGrupoCobranca, idGerenciaRegional, idUnidadeNegocio, idLocalidadeInicial, idLocalidadeFinal); } else if (tipoCobrancaBoletim.equals("sucesso")) { colecaoBoletimMedicaoCobranca = this.repositorioCobranca.pesquisarItensServicoCobrancaBoletimSucesso(anoMes, idGrupoCobranca, idGerenciaRegional, idUnidadeNegocio, idLocalidadeInicial, idLocalidadeFinal); } colecaoRetorno = this .carregarColecaoRelatorioBoletimMedicaoCobranca(colecaoBoletimMedicaoCobranca, helper, tipoCobrancaBoletim); } catch (ErroRepositorioException e) { throw new ControladorException("erro.sistema", e); } return colecaoRetorno; } private Collection<RelatorioBoletimMedicaoCobrancaHelper> carregarColecaoRelatorioBoletimMedicaoCobranca( Collection<Object[]> colecaoBoletimMedicaoCobranca, FiltrarRelatorioBoletimMedicaoCobrancaHelper helper, String tipoCobrancaBoletim) { Collection<RelatorioBoletimMedicaoCobrancaHelper> colecaoRetorno = null; int POSICAO_DATA_GERACAO = 4; int POSICAO_NOME_GERENCIA = 6; int POSICAO_NOME_LOCALIDADE = 7; int POSICAO_ID_LOCALIDADE = 8; int POSICAO_ID_GERENCIA = 9; int POSICAO_NOME_UNIDADE = 10; if (tipoCobrancaBoletim.equals("sucesso")) { POSICAO_DATA_GERACAO = 1; POSICAO_NOME_GERENCIA = 2; POSICAO_NOME_LOCALIDADE = 3; POSICAO_ID_LOCALIDADE = 4; POSICAO_ID_GERENCIA = 5; POSICAO_NOME_UNIDADE = 6; } if (colecaoBoletimMedicaoCobranca != null && !colecaoBoletimMedicaoCobranca.isEmpty()) { colecaoRetorno = new ArrayList(); Iterator iterator = colecaoBoletimMedicaoCobranca.iterator(); while (iterator.hasNext()) { RelatorioBoletimMedicaoCobrancaHelper relatorioHelper = new RelatorioBoletimMedicaoCobrancaHelper(); Object[] objeto = (Object[]) iterator.next(); // Id do CobrancaBoletimMedicao if (objeto[0] != null) { Integer idCobrancaBoletimMedicao = new Integer(objeto[0].toString()); relatorioHelper.setIdCobrancaBoletimMedicao(idCobrancaBoletimMedicao); } if (!tipoCobrancaBoletim.equals("sucesso")) { // Item de Servi�o ItemServico itemServico = new ItemServico(); if (objeto[1] != null && !objeto[1].equals("")) { Integer idItemServico = new Integer(objeto[1].toString()); itemServico.setId(idItemServico); } if (objeto[2] != null) { String descricao = objeto[2].toString(); itemServico.setDescricao(descricao); } if (objeto[3] != null) { Integer codigoConstanteCalculo = new Integer(objeto[3].toString()); itemServico.setCodigoConstanteCalculo(codigoConstanteCalculo); } if (objeto[5] != null) { Long codigoItem = (Long) objeto[5]; itemServico.setCodigoItem(codigoItem); } relatorioHelper.setItemServico(itemServico); } // Data de Gera��o do Boletim if (objeto[POSICAO_DATA_GERACAO] != null) { Date dataGeracao = (Date) objeto[POSICAO_DATA_GERACAO]; relatorioHelper.setDataGeracao(dataGeracao); } // Nome da Ger�ncia Regional if (objeto[POSICAO_NOME_GERENCIA] != null) { String nomeGerenciaRegional = (String) objeto[POSICAO_NOME_GERENCIA]; relatorioHelper.setNomeGerenciaRegional(nomeGerenciaRegional); } // Nome da Localidade if (objeto[POSICAO_NOME_LOCALIDADE] != null) { String localidade = (String) objeto[POSICAO_NOME_LOCALIDADE]; relatorioHelper.setNomeLocalidade(localidade); } // Id da Localidade if (objeto[POSICAO_ID_LOCALIDADE] != null) { Integer idLocalidade = (Integer) objeto[POSICAO_ID_LOCALIDADE]; relatorioHelper.setIdLocalidade(idLocalidade); } // Id da Gerencia if (objeto[POSICAO_ID_GERENCIA] != null) { Integer idGerencia = (Integer) objeto[POSICAO_ID_GERENCIA]; relatorioHelper.setIdGerenciaRegional(idGerencia); } // Nome da Unidade de Neg�cio if (objeto[POSICAO_NOME_UNIDADE] != null) { String unidadeNegocio = (String) objeto[POSICAO_NOME_UNIDADE]; relatorioHelper.setNomeUnidadeNegocio(unidadeNegocio); } if (helper.getGerenciaRegional() != null && !helper.getGerenciaRegional().equals("")) { relatorioHelper.setGerenciaRegional(new Integer(helper.getGerenciaRegional())); } if (helper.getLocalidadeInicial() != null && !helper.getLocalidadeInicial().equals("")) { relatorioHelper.setLocalidadeInicial(new Integer(helper.getLocalidadeInicial())); } if (helper.getLocalidadeFinal() != null && !helper.getLocalidadeFinal().equals("")) { relatorioHelper.setLocalidadeFinal(new Integer(helper.getLocalidadeFinal())); } relatorioHelper.setGrupoCobranca(new Integer(helper.getGrupoCobranca())); relatorioHelper.setMesAnoReferencia(helper.getMesAnoReferencia()); colecaoRetorno.add(relatorioHelper); } } return colecaoRetorno; } /** * [UC1153] Solicitar Gera��o/Emiss�o Boletim de Medi��o de Cobran�a * * [FS0002] � A��es n�o encerradas no cronograma. * * @author Mariana Victor * @created 21/03/2011 **/ public Integer pesquisarAcoesEncerradasCronograma(Integer anoMesReferencia, Integer idCobrancaGrupo) throws ControladorException { try { return this.repositorioCobranca.pesquisarAcoesEncerradasCronograma(anoMesReferencia, idCobrancaGrupo); } catch (ErroRepositorioException ex) { ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } } /** * [UC1152] Emiss�o Boletim Medi��o Cobran�a * * De acordo com o c�digo da constate do item, pesquisa os valores do mesmo. * * @author Mariana Victor * @created 22/03/2011 **/ public Object[] obterQuantidadeOSBoletimMedicaoCobranca(RelatorioBoletimMedicaoCobrancaHelper helper) throws ControladorException { try { return this.repositorioCobranca.obterQuantidadeOSBoletimMedicaoCobranca(helper); } catch (ErroRepositorioException ex) { ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } } /** * [UC1152] Emiss�o Boletim Medi��o Cobran�a * * De acordo com o c�digo da constate do item, pesquisa os valores do mesmo. * * @author Mariana Victor * @created 22/03/2011 **/ public Object[] obterSomatorioOSBoletimMedicaoCobranca(RelatorioBoletimMedicaoCobrancaHelper helper) throws ControladorException { try { return this.repositorioCobranca.obterSomatorioOSBoletimMedicaoCobranca(helper); } catch (ErroRepositorioException ex) { ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } } /** * [UC1152] Emiss�o Boletim Medi��o Cobran�a * * De acordo com o c�digo da constate do item, pesquisa os valores do mesmo. * * @author Mariana Victor * @created 23/03/2011 **/ public Object[] obterQuantidadeOSBoletimMedicaoCobrancaDesconto(RelatorioBoletimMedicaoCobrancaHelper helper) throws ControladorException { try { return this.repositorioCobranca.obterQuantidadeOSBoletimMedicaoCobrancaDesconto(helper); } catch (ErroRepositorioException ex) { ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } } /** * [UC1152] Emiss�o Boletim Medi��o Cobran�a * * Consulta os valores da totaliza��o da taxa de sucesso. * * @author Mariana Victor * @created 23/03/2011 **/ public Object[] obterTotalizacaoOSBoletimMedicaoCobrancaSucesso(RelatorioBoletimMedicaoCobrancaHelper helper) throws ControladorException { try { return this.repositorioCobranca.obterTotalizacaoOSBoletimMedicaoCobrancaSucesso(helper); } catch (ErroRepositorioException ex) { ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } } /** * [UC1152] Emiss�o Boletim Medi��o Cobran�a * * Pesquisa dados da empresa e do contrado do boletim de cobran�a * * @author Mariana Victor * @created 24/03/2011 **/ public Object[] pesquisarDadosBoletimMedicaoCobranca(Integer anoMesReferencia, Integer idCobrancaGrupo) throws ControladorException { try { return this.repositorioCobranca.pesquisarDadosBoletimMedicaoCobranca(anoMesReferencia, idCobrancaGrupo); } catch (ErroRepositorioException ex) { ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } } /** * * Esse metodo est� de acordo com o UC0919 - Gerar Relatorio de Impostos Por * Cliente Responsavel. Dessa forma, esse m�todo realiza a pesquisa de * impostos arrecadados por cliente respons�vel, agrupando os impostos a * partir das faturas de cada cliente. Para esse caso de uso, todos os * CLIENTES devem ser FEDERAIS, dessa forma a pesquisa est� sendo realizada * por cliente respons�veis federais, ou seja clientes que tem na tabela * cadastro.cliente_tipo EPOD_ID = 3. * * @author Diogo Peixoto * @date 24/03/2011 * * @param Integer * anoMes - o ano/mes j� formatado, sem barra, na forma de * Integer * @param Integer * clienteID - o id do cliente pode ser nulo, caso o usu�rio * queira pesquisar os impostos de todos os clientes federais em * um determinado m�s/ano refer�ncia. * @param String * tipoRelatorio (SINTETICO ou ANALITICO) * @return Collection<ImpostoDeduzidoHelper> - a cole��o de helpers do * relatorio * @throws ControladorException */ public Collection<ImpostoDeduzidoHelper> pesquisarImpostosArrecadacaoClienteResponsavelFederal(Integer anoMes, Integer clienteID, String tipoRelatorio) throws ControladorException { Collection<ImpostoDeduzidoHelper> colecaoImpostosDeduzidosHelper = new ArrayList(); if (tipoRelatorio != null) { if (tipoRelatorio.equalsIgnoreCase("sintetico")) { // cria uma colecao de impostos Collection colecaoImpostos = new ArrayList(); try { // faz a pesquisa por impostos que estao associados � fatura // passando o ano mes colecaoImpostos = this.repositorioCobranca.pesquisarImpostosArrecadacaoClienteResponsavelFederal(anoMes, clienteID); } catch (ErroRepositorioException e) { e.printStackTrace(); throw new ControladorException("erro.sistema", e); } // valida a colecao de impostos pesquisada if (colecaoImpostos != null && !colecaoImpostos.isEmpty()) { Iterator iteraImposto = colecaoImpostos.iterator(); // varre a colecao de impostos while (iteraImposto.hasNext()) { Object[] imposto = (Object[]) iteraImposto.next(); // cria uma instancia do helper de impostos ImpostoDeduzidoHelper impostoDeduzidoHelper = new ImpostoDeduzidoHelper(); // seta os valores do imposto pequisado no helper do // imposto para se usar no relatorio impostoDeduzidoHelper.setIdImpostoTipo((Integer) imposto[0]); impostoDeduzidoHelper.setDescricaoImposto((String) imposto[1]); impostoDeduzidoHelper.setPercentualAliquota((BigDecimal) imposto[2]); impostoDeduzidoHelper.setValor((BigDecimal) imposto[3]); impostoDeduzidoHelper.setIdCliente((Integer) imposto[4]); impostoDeduzidoHelper.setNomeCliente((String) imposto[5]); impostoDeduzidoHelper.setValorFatura((BigDecimal) imposto[6]); impostoDeduzidoHelper.setCnpjCliente((String) imposto[7]); // adiciona o helper � colecao dos helpers de imposto colecaoImpostosDeduzidosHelper.add(impostoDeduzidoHelper); } } } else if (tipoRelatorio.equalsIgnoreCase("analitico")) { // Cria lista QUEBRA para realizar a soma dos valores da fatura List<ImpostoDeduzidoHelper> quebra = new ArrayList<ImpostoDeduzidoHelper>(); // Collection colecaoImpostosCliente = new ArrayList(); List colecaoImpostosCliente = new ArrayList(); try { // faz a pesquisa por impostos que estao associados � fatura // passando o id da fatura colecaoImpostosCliente = (List) this.repositorioCobranca .pesquisarImpostosArrecadacaoClienteResponsavelFederalAnalitico(anoMes, clienteID); } catch (ErroRepositorioException e) { e.printStackTrace(); throw new ControladorException("erro.sistema", e); } // inicio dase��o da cole��o de impostos do Cliente if (colecaoImpostosCliente != null && !colecaoImpostosCliente.isEmpty()) { for (int i = 0; i < colecaoImpostosCliente.size(); i++) { Object obj = (Object) colecaoImpostosCliente.get(i); if (obj instanceof Object[]) { Object[] imposto = (Object[]) obj; // cria uma instancia do helper de impostos ImpostoDeduzidoHelper helper = new ImpostoDeduzidoHelper(); // seta os valores do imposto pequisado no helper do // imposto para se usar no relatorio helper.setIdImpostoTipo((Integer) imposto[0]); helper.setDescricaoImposto((String) imposto[1]); helper.setPercentualAliquota((BigDecimal) imposto[2]); helper.setValor((BigDecimal) imposto[3]); helper.setIdCliente((Integer) imposto[4]); helper.setNomeCliente((String) imposto[5]); helper.setValorFatura((BigDecimal) imposto[6]); helper.setIdImovel((Integer) imposto[7]); helper.setCnpjCliente((String) imposto[8]); // Verificamos se o objeto ja possue uma quebra // cadastrada if (quebra.contains(helper)) { int posicao = quebra.indexOf(helper); ImpostoDeduzidoHelper jaCadastrado = (ImpostoDeduzidoHelper) quebra.get(posicao); jaCadastrado.setValorFatura(jaCadastrado.getValorFatura().add(helper.getValorFatura())); // seta os valores do imposto pesquisado no // helper do imposto para se usar no relatorio helper.setIdImpostoTipo((Integer) imposto[0]); helper.setDescricaoImposto((String) imposto[1]); helper.setPercentualAliquota((BigDecimal) imposto[2]); helper.setValor((BigDecimal) imposto[3]); helper.setIdCliente((Integer) imposto[4]); helper.setNomeCliente((String) imposto[5]); // helper.setValorFatura((BigDecimal) // imposto[6]); helper.setIdImovel((Integer) imposto[7]); helper.setCnpjCliente((String) imposto[8]); quebra.add(helper); } else { quebra.add(helper); } } } colecaoImpostosDeduzidosHelper = (Collection) quebra; /* * Iterator iterator = colecaoImpostosCliente.iterator(); * * //inicio do la�o da cole��o de impostos do imovel while * (iterator.hasNext()) { * * Object[] imposto = (Object[]) iterator.next(); * * //cria uma instancia do helper de impostos * ImpostoDeduzidoHelper impostoDeduzidoHelper = new * ImpostoDeduzidoHelper(); * * //seta os valores do imposto pequisado no helper do * imposto para se usar no relatorio * impostoDeduzidoHelper.setIdImpostoTipo((Integer) * imposto[0]); * impostoDeduzidoHelper.setDescricaoImposto((String) * imposto[1]); * impostoDeduzidoHelper.setPercentualAliquota((BigDecimal) * imposto[2]); impostoDeduzidoHelper.setValor((BigDecimal) * imposto[3]); * impostoDeduzidoHelper.setIdCliente((Integer)imposto[4]); * impostoDeduzidoHelper.setNomeCliente((String) imposto[5] * ); impostoDeduzidoHelper.setValorFatura((BigDecimal) * imposto[6]); impostoDeduzidoHelper.setIdImovel((Integer) * imposto[7]); * * //adiciona o helper � colecao dos helpers de imposto * colecaoImpostosDeduzidosHelper * .add(impostoDeduzidoHelper); }//fim do la�o da cole��o de * impostos do imovel */ }// fim se��o da cole��o dos imposto do imovel }// fim do la�o da cole��o de imoveis } return colecaoImpostosDeduzidosHelper; } /** * [UC1151] Gerar Boletim de Medi��o * * [SB0001] ? Gerar Atualiza��o do Banco de Dados * * * @author S�vio Luiz * @throws ControladorException * @data 22/03/2011 * * @throws ControladorException * */ private void atualizarDadosBoletimMedicao(Integer idContratoEmpresaServico, Collection<CobrancaBoletimExecutado> collCobrancaBoletimExecutado, Collection<CobrancaBoletimDesconto> collCobrancaBoletimDescontado, BigDecimal valorTotalExecutado, BigDecimal valorTotalDescontado, BigDecimal valorTotalTaxaSucesso, Collection<Integer> collIdsOS, Collection<Integer> collIdsOSNaoAceitas, Integer idGrupo, Integer referencia, Collection<CobrancaBoletimSucesso> collCobrancaBoletimSucesso) throws ControladorException { try { // 1. Inclui o boletim de medi��o na tabela COBR_BOLETIM_MEDICAO BigDecimal valorTotal = valorTotalTaxaSucesso.add(valorTotalExecutado); valorTotal = valorTotal.subtract(valorTotalDescontado); CobrancaBoletimMedicao cobrancaBoletimMedicao = new CobrancaBoletimMedicao(); cobrancaBoletimMedicao.setAnoMesReferencia(referencia); CobrancaGrupo cobrancaGrupo = new CobrancaGrupo(); cobrancaGrupo.setId(idGrupo); cobrancaBoletimMedicao.setCobrancaGrupo(cobrancaGrupo); cobrancaBoletimMedicao.setDataGeracaoBoletim(new Date()); cobrancaBoletimMedicao.setValorDescontos(valorTotalDescontado); cobrancaBoletimMedicao.setValorTaxaSucesso(valorTotalTaxaSucesso); cobrancaBoletimMedicao.setValorServicosExecutados(valorTotalExecutado); ContratoEmpresaServico contratoEmpresaServico = new ContratoEmpresaServico(); contratoEmpresaServico.setId(idContratoEmpresaServico); cobrancaBoletimMedicao.setContratoEmpresaServico(contratoEmpresaServico); cobrancaBoletimMedicao.setValorTotal(valorTotal); cobrancaBoletimMedicao.setUltimaAlteracao(new Date()); Integer idCobrancaBoletimMedicao = (Integer) getControladorUtil().inserir(cobrancaBoletimMedicao); cobrancaBoletimMedicao.setId(idCobrancaBoletimMedicao); // 1.1.1 Inclui a Ordem de Servi�o na tabela COBR_BOLETIM_EXEC com // os seguintes valores Collection collCobrancaBoletimExecutadoInserir = new ArrayList(); for (CobrancaBoletimExecutado cobrancaBoletimExecutado : collCobrancaBoletimExecutado) { if (cobrancaBoletimExecutado != null) { if (cobrancaBoletimExecutado.getOrdemServico().getId().equals(1957681)) { System.out.println(""); } cobrancaBoletimExecutado.setCobrancaBoletimMedicao(cobrancaBoletimMedicao); cobrancaBoletimExecutado.setUltimaAlteracao(new Date()); CobrancaBoletimExecutadoPK executadoPK = new CobrancaBoletimExecutadoPK(); executadoPK.setCobrancaBoletimMedicaoId(cobrancaBoletimMedicao.getId()); executadoPK.setOrdemServicoId(cobrancaBoletimExecutado.getOrdemServico().getId()); cobrancaBoletimExecutado.setComp_id(executadoPK); collCobrancaBoletimExecutadoInserir.add(cobrancaBoletimExecutado); } } if (collCobrancaBoletimExecutadoInserir != null && !collCobrancaBoletimExecutadoInserir.isEmpty()) { getControladorBatch().inserirColecaoObjetoParaBatch(collCobrancaBoletimExecutadoInserir); } // 1.1.1 Inclui a Ordem de Servi�o na tabela COBR_BOLETIM_DESC com // os seguintes valores Collection collCobrancaBoletimDescontadoInserir = new ArrayList(); for (CobrancaBoletimDesconto cobrancaBoletimDesconto : collCobrancaBoletimDescontado) { if (cobrancaBoletimDesconto != null) { cobrancaBoletimDesconto.setCobrancaBoletimMedicao(cobrancaBoletimMedicao); cobrancaBoletimDesconto.setUltimaAlteracao(new Date()); CobrancaBoletimDescontoPK descontadoPK = new CobrancaBoletimDescontoPK(); descontadoPK.setCobrancaBoletimMedicaoId(cobrancaBoletimMedicao.getId()); descontadoPK.setOrdemServicoId(cobrancaBoletimDesconto.getOrdemServico().getId()); cobrancaBoletimDesconto.setComp_id(descontadoPK); collCobrancaBoletimDescontadoInserir.add(cobrancaBoletimDesconto); } } if (collCobrancaBoletimDescontadoInserir != null && !collCobrancaBoletimDescontadoInserir.isEmpty()) { getControladorBatch().inserirColecaoObjetoParaBatch(collCobrancaBoletimDescontadoInserir); } // 1.1.1 Atualiza a Ordem de Servi�o na tabela ORDEM_SERVICO com o // indicativo que a mesma j� foi inclu�da no boletim if (collIdsOS != null && !collIdsOS.isEmpty()) { this.repositorioCobranca.atualizaIndicadorBoletimOS(collIdsOS); } // 1.1.1 Atualiza o indicador de desconto da Ordem de Servi�o na // tabela COB_AC_OS_NAO_ACEITAS // com o indicativo que a mesma j� foi descontada no boletim if (collIdsOSNaoAceitas != null && !collIdsOSNaoAceitas.isEmpty()) { this.repositorioCobranca.atualizaIndicadorCobrancaAcaoOSNaoAceitas(collIdsOSNaoAceitas); } // 1.1.1 Inclui a Ordem de Servi�o na tabela COBR_BOLETIM_SUCESSO Collection collCobrancaBoletimSucessoInserir = new ArrayList(); for (CobrancaBoletimSucesso cobrancaBoletimSucesso : collCobrancaBoletimSucesso) { if (cobrancaBoletimSucesso != null) { cobrancaBoletimSucesso.setCobrancaBoletimMedicao(cobrancaBoletimMedicao); cobrancaBoletimSucesso.setUltimaAlteracao(new Date()); CobrancaBoletimSucessoPK sucessoPK = new CobrancaBoletimSucessoPK(); sucessoPK.setCobrancaBoletimMedicaoId(cobrancaBoletimMedicao.getId()); sucessoPK.setImovelId(cobrancaBoletimSucesso.getImovel().getId()); cobrancaBoletimSucesso.setComp_id(sucessoPK); collCobrancaBoletimSucessoInserir.add(cobrancaBoletimSucesso); } } if (collCobrancaBoletimSucessoInserir != null && !collCobrancaBoletimSucessoInserir.isEmpty()) { getControladorBatch().inserirColecaoObjetoParaBatch(collCobrancaBoletimSucessoInserir); } } catch (ErroRepositorioException ex) { ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } } /** * Gerar Relat�rio de An�lise de Perdas com Cr�dito * * [UC1155] Gerar Relat�rio de An�lise de Perdas com Cr�dito * * * @author Paulo Diniz * @date 16/03/2011 * * @param mesAno * para an�lise * @throws ControladorException */ public RelatorioAnalisePerdasCreditosBean gerarRelatorioAnalisePerdasCreditos(String anoMesReferencia) throws ControladorException { try { return this.repositorioCobranca.gerarRelatorioAnalisePerdasCreditos(anoMesReferencia); } catch (ErroRepositorioException ex) { ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } } /** * Retorna o maior ano mesReferencia da tabela docs_a_rec_resumo * * [UC1155] Gerar Relat�rio de An�lise de Perdas com Cr�dito * * * @author Paulo Diniz * @date 16/03/2011 * * @param mesAno * para an�lise * @throws ControladorException */ public int maiorAnoMesReferenciaDocumentosAReceberResumo() throws ControladorException { try { return this.repositorioCobranca.maiorAnoMesReferenciaDocumentosAReceberResumo(); } catch (ErroRepositorioException ex) { ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } } /** * [UC0879] Gerar Extens�o de Comando de Contas em Cobran�a por Empresa - * Pesquisa dados do popup * * @author Mariana Victor * @date 13/04/2011 */ public Collection<Object[]> pesquisarDadosPopupExtensaoComandoImovelPerfil(Integer idComando) throws ControladorException { try { return this.repositorioCobranca.pesquisarDadosPopupExtensaoComandoImovelPerfil(idComando); } catch (ErroRepositorioException ex) { ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } } /** * [UC0879] Gerar Extens�o de Comando de Contas em Cobran�a por Empresa - * Pesquisa dados do popup * * @author Mariana Victor * @date 13/04/2011 */ public Collection<Object[]> pesquisarDadosPopupExtensaoComandoGerenciaRegional(Integer idComando) throws ControladorException { try { return this.repositorioCobranca.pesquisarDadosPopupExtensaoComandoGerenciaRegional(idComando); } catch (ErroRepositorioException ex) { ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } } /** * [UC0879] Gerar Extens�o de Comando de Contas em Cobran�a por Empresa - * Pesquisa dados do popup * * @author Mariana Victor * @date 13/04/2011 */ public Collection<Object[]> pesquisarDadosPopupExtensaoComandoUnidadeNegocio(Integer idComando) throws ControladorException { try { return this.repositorioCobranca.pesquisarDadosPopupExtensaoComandoUnidadeNegocio(idComando); } catch (ErroRepositorioException ex) { ex.printStackTrace(); throw new ControladorException("erro.sistema", ex); } } /** * [UC0869] Gerar Arquivo Texto de Contas em Cobran�a por Empresa * * 5. Caso contr�rio, o layout selecionado seja 2 (dois) * * @author: Mariana Victor * @date: 13/04/2011 */ private void montarArquivoTextoContasEmCobrancaEmpresaLayoutTipo02(StringBuilder arquivoTxt, GerarArquivoTextoContasCobrancaEmpresaHelper helper) { // 1. idGerenciaRegional tam 04 if (helper.getIdGerenciaRegional() != null) { arquivoTxt.append(Util.truncarString(helper.getIdGerenciaRegional().toString(), 4) + "#"); } else { arquivoTxt.append("#"); } // 2. nomeGerenciaRegional tam 25 if (helper.getNomeGerenciaRegional() != null) { arquivoTxt.append(Util.truncarString(helper.getNomeGerenciaRegional(), 25) + "#"); } else { arquivoTxt.append("#"); } // 3. idUnidadeNegocio tam 04 if (helper.getIdUnidadeNegocio() != null) { arquivoTxt.append(Util.truncarString(helper.getIdUnidadeNegocio().toString(), 4) + "#"); } else { arquivoTxt.append("#"); } // 4. nomeUnidadeNegocio tam 50 if (helper.getNomeUnidadeNegocio() != null) { arquivoTxt.append(Util.truncarString(helper.getNomeUnidadeNegocio(), 50) + "#"); } else { arquivoTxt.append("#"); } // 5. IdFaturamentoGrupo tam 04 if (helper.getIdFaturamentoGrupo() != null) { arquivoTxt.append(Util.truncarString(helper.getIdFaturamentoGrupo().toString(), 4) + "#"); } else { arquivoTxt.append("#"); } // 6. IdLocalidade tam 04 if (helper.getIdLocalidade() != null) { arquivoTxt.append(Util.truncarString(helper.getIdLocalidade().toString(), 4) + "#"); } else { arquivoTxt.append("#"); } // 7. NomeLocalidade tam 30 if (helper.getNomeLocalidade() != null) { arquivoTxt.append(Util.truncarString(helper.getNomeLocalidade(), 30) + "#"); } else { arquivoTxt.append("#"); } // 8. codigoRota tam 06 if (helper.getCodigoRota() != null) { arquivoTxt.append(Util.truncarString(helper.getCodigoRota().toString(), 6) + "#"); } else { arquivoTxt.append("#"); } // 9. sequencialRota tam 09 if (helper.getNumeroSequencialRota() != null) { arquivoTxt.append(Util.truncarString(helper.getNumeroSequencialRota().toString(), 9) + "#"); } else { arquivoTxt.append("#"); } // 10. matriculaImovel tam 09 if (helper.getIdImovel() != null) { arquivoTxt.append(Util.truncarString(helper.getIdImovel().toString(), 9) + "#"); } else { arquivoTxt.append("#"); } // 11. nomeCliente tam 40 if (helper.getNomeClienteConta() != null) { arquivoTxt.append(Util.truncarString(helper.getNomeClienteConta(), 40) + "#"); } else { arquivoTxt.append("#"); } // 12. NomeLogradouro tam 30 if (helper.getNomeLogradouro() != null) { arquivoTxt.append(Util.truncarString(helper.getNomeLogradouro(), 30) + "#"); } else { arquivoTxt.append("#"); } // 13. NumeroImovel tam 5 if (helper.getNumeroImovel() != null) { arquivoTxt.append(Util.adicionarZerosEsquedaNumeroTruncando(5, helper.getNumeroImovel().toString()) + "#"); } else { arquivoTxt.append(Util.adicionarZerosEsquedaNumeroTruncando(5, "") + "#"); } // 14. complementoEndereco tam 50 if (helper.getComplementoEndereco() != null) { arquivoTxt.append(Util.truncarString(helper.getComplementoEndereco(), 50) + "#"); } else { arquivoTxt.append("#"); } // 15. codigo cep tam 10 if (helper.getCodigoCep() != null) { arquivoTxt.append(Util.truncarString(helper.getCodigoCep(), 10) + "#"); } else { arquivoTxt.append("#"); } // 16. nomeBairro tam 30 if (helper.getNomeBairro() != null) { arquivoTxt.append(Util.truncarString(helper.getNomeBairro(), 30) + "#"); } else { arquivoTxt.append("#"); } // 17. telefone tam 9 if (helper.getTelefone() != null) { arquivoTxt.append(Util.truncarString(helper.getTelefone(), 9) + "#"); } else { arquivoTxt.append("#"); } // 17.A. munic�pio tam 30 if (helper.getNomeMunicipio() != null) { arquivoTxt.append(Util.truncarString(helper.getNomeMunicipio(), 30) + "#"); } else { arquivoTxt.append("#"); } // 18. CPF e CNPJtam 18 if (helper.getIdClienteTipo().toString().equalsIgnoreCase(ClienteTipo.INDICADOR_PESSOA_FISICA.toString())) { // cpf if (helper.getCpf() != null) { arquivoTxt.append(Util.truncarString(Util.formatarCpf(helper.getCpf()), 18) + "#"); } else { arquivoTxt.append("#"); } } else { // cnpj if (helper.getCnpj() != null) { arquivoTxt.append(Util.truncarString(Util.formatarCnpj(helper.getCnpj()), 18) + "#"); } else { arquivoTxt.append("#"); } } // 19. RG tam 13 if (helper.getIdClienteTipo().toString().equalsIgnoreCase(ClienteTipo.INDICADOR_PESSOA_FISICA.toString())) { if (helper.getRg() != null) { arquivoTxt.append(Util.truncarString(helper.getRg(), 13) + "#"); } else { arquivoTxt.append("#"); } } else { arquivoTxt.append("#"); } // 20. id da ordem de servi�o tam 10 if (helper.getIdOrdemServico() != null) { arquivoTxt.append(Util.truncarString(helper.getIdOrdemServico().toString(), 10) + "#"); } else { arquivoTxt.append("#"); } // 21. Setor Comercial if (helper.getCodigoSetorComercial() != null) { arquivoTxt.append(Util.truncarString(helper.getCodigoSetorComercial().toString(), 4) + "#"); } else { arquivoTxt.append("#"); } // 22. Quadra arquivoTxt.append(Util.truncarString("" + helper.getNumeroQuadra(), 7) + "#"); // 23. Lote arquivoTxt.append(Util.truncarString("" + helper.getNumeroLote(), 4) + "#"); // 24. Sublote arquivoTxt.append(Util.truncarString("" + helper.getNumeroSublote(), 4) + "#"); // 25. quantidadeDeContas tam 4 if (helper.getQuantidadeContas() != null) { arquivoTxt.append(Util.truncarString(helper.getQuantidadeContas().toString(), 4) + "#"); } else { arquivoTxt.append("#"); } // Dados Conta if (helper.getConta() != null) { // 26. Ano/M�s Referencia tam 7 MM/AAAA arquivoTxt.append(Util.formatarAnoMesParaMesAnoSemZeroNoMes("" + helper.getConta().getReferencia()) + "#"); // 27. Data de Vencimento tam 10 DD/MM/AAAA if (helper.getConta().getDataVencimentoConta() != null) { arquivoTxt.append(Util.formatarDataSemZeroAntesMes(helper.getConta().getDataVencimentoConta()) + "#"); } else { arquivoTxt.append("#"); } // 28. Valor Ligacao Agua tam 15 if (helper.getConta().getValorAgua() != null) { arquivoTxt.append(Util.adicionarZerosEsquedaNumeroTruncando(15, Util.formatarBigDecimalParaString(helper.getConta().getValorAgua())) + "#"); } else { arquivoTxt.append("#"); } // 29. Valor Ligacao Esgoto tam 15 if (helper.getConta().getValorEsgoto() != null) { arquivoTxt.append(Util.truncarString(Util.formatarBigDecimalParaString(helper.getConta().getValorEsgoto()), 15) + "#"); } else { arquivoTxt.append("#"); } // 30. Valor Ligacao Debitos tam 15 if (helper.getConta().getDebitos() != null) { arquivoTxt.append(Util.truncarString(Util.formatarBigDecimalParaString(helper.getConta().getDebitos()), 15) + "#"); } else { arquivoTxt.append("#"); } // 31. Valor Ligacao Creditos tam 15 if (helper.getConta().getValorCreditos() != null) { arquivoTxt.append(Util.truncarString(Util.formatarBigDecimalParaString(helper.getConta().getValorCreditos()), 15) + "#"); } else { arquivoTxt.append("#"); } // 32. Valor Ligacao Fatura tam 15 if (helper.getConta().getValorTotal() != null) { arquivoTxt.append(Util.truncarString(Util.formatarBigDecimalParaString(helper.getConta().getValorTotal()), 15) + "#"); } else { arquivoTxt.append("#"); } // 33.Ano Controle tam 4 arquivoTxt.append(Util.obterAno(helper.getConta().getReferencia()) + "#"); // 34. Controle arquivoTxt.append(Util.truncarString(helper.getConta().getId().toString(), 10) + "#"); } else if (helper.getColecaoConta() != null && !helper.getColecaoConta().isEmpty()) { Iterator iterator = helper.getColecaoConta().iterator(); while (iterator.hasNext()) { Conta conta = (Conta) iterator.next(); // 26. Ano/M�s Referencia tam 7 MM/AAAA arquivoTxt.append(Util.formatarAnoMesParaMesAnoSemZeroNoMes("" + conta.getReferencia()) + "#"); // 27. Data de Vencimento tam 10 DD/MM/AAAA if (conta.getDataVencimentoConta() != null) { arquivoTxt.append(Util.formatarDataSemZeroAntesMes(conta.getDataVencimentoConta()) + "#"); } else { arquivoTxt.append("#"); } // 28. Valor Ligacao Agua tam 15 if (conta.getValorAgua() != null) { arquivoTxt .append(Util.adicionarZerosEsquedaNumeroTruncando(15, Util.formatarBigDecimalParaString(conta.getValorAgua())) + "#"); } else { arquivoTxt.append("#"); } // 29. Valor Ligacao Esgoto tam 15 if (conta.getValorEsgoto() != null) { arquivoTxt.append(Util.truncarString(Util.formatarBigDecimalParaString(conta.getValorEsgoto()), 15) + "#"); } else { arquivoTxt.append("#"); } // 30. Valor Ligacao Debitos tam 15 if (conta.getDebitos() != null) { arquivoTxt.append(Util.truncarString(Util.formatarBigDecimalParaString(conta.getDebitos()), 15) + "#"); } else { arquivoTxt.append("#"); } // 31. Valor Ligacao Creditos tam 15 if (conta.getValorCreditos() != null) { arquivoTxt.append(Util.truncarString(Util.formatarBigDecimalParaString(conta.getValorCreditos()), 15) + "#"); } else { arquivoTxt.append("#"); } // 32. Valor Ligacao Fatura tam 15 if (conta.getValorTotal() != null) { arquivoTxt.append(Util.truncarString(Util.formatarBigDecimalParaString(conta.getValorTotal()), 15) + "#"); } else { arquivoTxt.append("#"); } // 33. Ano Controle tam 4 arquivoTxt.append(Util.obterAno(conta.getReferencia()) + "#"); // 34. Controle arquivoTxt.append(Util.truncarString(conta.getId().toString(), 10) + "#"); } } } /** * [UC0869] Gerar Arquivo Texto de Contas em Cobran�a por Empresa * * Pesquisa a quantidade de contas para o layout 02 * * @author: Mariana Victor * @date: 26/04/2011 */ private void montarDadosGerarArquivoTextoContasEmCobrancaEmpresaLayoutTipo02(Object[] arraydadosTxt, Map<Integer, GerarArquivoTextoContasCobrancaEmpresaHelper> mapHelper, GerarArquivoTextoContasCobrancaEmpresaHelper helper, Collection ids) { List colecaoConta = new ArrayList(); if ((Integer) (arraydadosTxt[8]) != null && mapHelper.containsKey((Integer) (arraydadosTxt[8]))) { GerarArquivoTextoContasCobrancaEmpresaHelper helperImovel = mapHelper.get((Integer) (arraydadosTxt[8])); colecaoConta = helperImovel.getColecaoConta(); // nomeCliente if (arraydadosTxt[9] != null) { helperImovel.setNomeClienteConta((String) (arraydadosTxt[9])); } // IdClienteTipo if (arraydadosTxt[10] != null) { helperImovel.setIdClienteTipo((Integer) (arraydadosTxt[10])); } // Cpf if (arraydadosTxt[11] != null) { helperImovel.setCpf((String) (arraydadosTxt[11])); } // Cnpj if (arraydadosTxt[12] != null) { helperImovel.setCnpj((String) (arraydadosTxt[12])); } // RG if (arraydadosTxt[13] != null) { helperImovel.setRg((String) (arraydadosTxt[13])); } Conta conta = new Conta(); // idConta if (arraydadosTxt[15] != null) { conta.setId((Integer) (arraydadosTxt[15])); } // AnoMesReferencia conta if (arraydadosTxt[18] != null) { conta.setReferencia(((Integer) (arraydadosTxt[18])).intValue()); } // Data vencimento conta if (arraydadosTxt[19] != null) { conta.setDataVencimentoConta((Date) (arraydadosTxt[19])); } // Valor Agua if (arraydadosTxt[20] != null) { conta.setValorAgua((BigDecimal) (arraydadosTxt[20])); } // Valor Esgoto if (arraydadosTxt[21] != null) { conta.setValorEsgoto((BigDecimal) (arraydadosTxt[21])); } // Valor Debitos if (arraydadosTxt[22] != null) { conta.setDebitos((BigDecimal) (arraydadosTxt[22])); } // Valor creditos if (arraydadosTxt[23] != null) { conta.setValorCreditos((BigDecimal) (arraydadosTxt[23])); } colecaoConta.add(conta); helperImovel.setColecaoConta(colecaoConta); mapHelper.remove((Integer) (arraydadosTxt[8])); mapHelper.put((Integer) (arraydadosTxt[8]), helperImovel); } else { // ID EmpresaCobrancaConta if (arraydadosTxt[0] != null) { helper.setIdCobrancaConta((Integer) (arraydadosTxt[0])); } // Id unidadeNegocio if (arraydadosTxt[1] != null) { helper.setIdUnidadeNegocio((Integer) (arraydadosTxt[1])); } // Nome unidadeNegocio if (arraydadosTxt[2] != null) { helper.setNomeUnidadeNegocio((String) (arraydadosTxt[2])); } // Faturamento Grupo if (arraydadosTxt[3] != null) { helper.setIdFaturamentoGrupo((Integer) (arraydadosTxt[3])); } // Localidade if (arraydadosTxt[4] != null) { helper.setIdLocalidade((Integer) (arraydadosTxt[4])); } if (arraydadosTxt[5] != null) { helper.setNomeLocalidade((String) (arraydadosTxt[5])); } // Codigo da Rota if (arraydadosTxt[6] != null) { helper.setCodigoRota((Short) (arraydadosTxt[6])); } // Sequencial da Rota if (arraydadosTxt[7] != null) { helper.setNumeroSequencialRota((Integer) (arraydadosTxt[7])); } // IdImovel if (arraydadosTxt[8] != null) { helper.setIdImovel((Integer) (arraydadosTxt[8])); } // nomeCliente if (arraydadosTxt[9] != null) { helper.setNomeClienteConta((String) (arraydadosTxt[9])); } // IdClienteTipo if (arraydadosTxt[10] != null) { helper.setIdClienteTipo((Integer) (arraydadosTxt[10])); } // Cpf if (arraydadosTxt[11] != null) { helper.setCpf((String) (arraydadosTxt[11])); } // Cnpj if (arraydadosTxt[12] != null) { helper.setCnpj((String) (arraydadosTxt[12])); } // RG if (arraydadosTxt[13] != null) { helper.setRg((String) (arraydadosTxt[13])); } Conta conta = new Conta(); // idConta if (arraydadosTxt[15] != null) { conta.setId((Integer) (arraydadosTxt[15])); } // telefone if (arraydadosTxt[16] != null) { helper.setTelefone((String) (arraydadosTxt[16])); } // Nome Abreviado Cliente if (arraydadosTxt[17] != null) { helper.setNomeAbreviadoCliente((String) (arraydadosTxt[17])); } // AnoMesReferencia conta if (arraydadosTxt[18] != null) { conta.setReferencia(((Integer) (arraydadosTxt[18])).intValue()); } // Data vencimento conta if (arraydadosTxt[19] != null) { conta.setDataVencimentoConta((Date) (arraydadosTxt[19])); } // Valor Agua if (arraydadosTxt[20] != null) { conta.setValorAgua((BigDecimal) (arraydadosTxt[20])); } // Valor Esgoto if (arraydadosTxt[21] != null) { conta.setValorEsgoto((BigDecimal) (arraydadosTxt[21])); } // Valor Debitos if (arraydadosTxt[22] != null) { conta.setDebitos((BigDecimal) (arraydadosTxt[22])); } // Valor creditos if (arraydadosTxt[23] != null) { conta.setValorCreditos((BigDecimal) (arraydadosTxt[23])); } // codigoSetor comercial if (arraydadosTxt[24] != null) { helper.setCodigoSetorComercial(((Integer) (arraydadosTxt[24])).toString()); } // lote if (arraydadosTxt[25] != null) { helper.setNumeroLote((Short) (arraydadosTxt[25])); } // sublote if (arraydadosTxt[26] != null) { helper.setNumeroSublote((Short) (arraydadosTxt[26])); } // numeroQuadra if (arraydadosTxt[14] != null) { helper.setNumeroQuadra((((Integer) (arraydadosTxt[14])).intValue())); } // cliente id if (arraydadosTxt[27] != null) { helper.setIdCliente((Integer) (arraydadosTxt[27])); } // id da ger�ncia regional if (arraydadosTxt[28] != null) { helper.setIdGerenciaRegional((Integer) (arraydadosTxt[28])); } // nome da ger�ncia regional if (arraydadosTxt[29] != null) { helper.setNomeGerenciaRegional((String) (arraydadosTxt[29])); } // c�digo do layout txt if (arraydadosTxt[30] != null) { helper.setCodigoLayoutTxt((Short) (arraydadosTxt[30])); } // id da ordem de servi�o if (arraydadosTxt[31] != null) { helper.setIdOrdemServico((Integer) (arraydadosTxt[31])); } colecaoConta.add(conta); helper.setColecaoConta(colecaoConta); try { Collection colecaoDadosTxt = getControladorEndereco() .pesquisarDadosClienteEnderecoArquivoTextoContasCobrancaEmpresaLayout02(helper.getIdCliente()); if (colecaoDadosTxt != null && !colecaoDadosTxt.isEmpty()) { Iterator colecaoDadosTxtIterator = colecaoDadosTxt.iterator(); while (colecaoDadosTxtIterator.hasNext()) { // cria um array de objetos para pegar os parametros // de retorno da pesquisa Object[] arraydados = (Object[]) colecaoDadosTxtIterator.next(); // nomeLogradouro if (arraydados[0] != null) { helper.setNomeLogradouro((String) (arraydados[0])); } // complemento endereco if (arraydados[1] != null) { helper.setComplementoEndereco((String) (arraydados[1])); } // codigo cep if (arraydados[2] != null) { helper.setCodigoCep(((Integer) (arraydados[2])).toString()); } // nome Bairro if (arraydados[3] != null) { helper.setNomeBairro((String) (arraydados[3])); } // numero imovel if (arraydados[4] != null) { helper.setNumeroImovel((String) (arraydados[4])); } // tipo logradouro if (arraydados[5] != null) { Integer id = (Integer) arraydados[5]; FiltroLogradouroTipo filtroLogradouroTipo = new FiltroLogradouroTipo(); filtroLogradouroTipo.adicionarParametro(new ParametroSimples(FiltroLogradouroTipo.ID, id)); Collection colecaoLogradouroTipo = this.getControladorUtil().pesquisar(filtroLogradouroTipo, LogradouroTipo.class.getName()); LogradouroTipo logradouroTipo = (LogradouroTipo) Util.retonarObjetoDeColecao(colecaoLogradouroTipo); helper.setTipoLogradouro(logradouroTipo.getDescricao()); } // nome munic�pio if (arraydados[6] != null) { helper.setNomeMunicipio((String) (arraydados[6])); } } } if (colecaoDadosTxt != null) { colecaoDadosTxt.clear(); } Integer quantidadeContas = repositorioCobranca.pesquisarQuantidadeContasArquivoTextoContasCobrancaEmpresa(ids, helper.getIdImovel()); if (quantidadeContas != null) { helper.setQuantidadeContas(quantidadeContas); } mapHelper.put(helper.getIdImovel(), helper); } catch (ControladorException e) { e.printStackTrace(); } catch (ErroRepositorioException e) { e.printStackTrace(); } } } /** * [UC0869] Gerar Arquivo Texto das Contas em Cobranca por Empresa * * Pesquisa a Situa��o de cobran�a a partir do c�digo constante. * * @author: Mariana Victor * @date: 18/04/2011 */ public Integer pesquisarCobrancaSituacao(Integer codigoConstante) throws ControladorException { try { return repositorioCobranca.pesquisarCobrancaSituacao(codigoConstante); } catch (ErroRepositorioException ex) { sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", ex); } } /** * [UC1136] Inserir Contrato Parcelamento Por Cliente * * Pesquisa a Referencia da conta por ID * * @author: Paulo Diniz * @date: 14/05/2011 */ public Integer pesquisarReferenciaContaPorId(Integer idConta) throws ControladorException { try { return repositorioCobranca.pesquisarReferenciaContaPorId(idConta); } catch (ErroRepositorioException ex) { sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", ex); } } /** * [UC1140] Cancelar Contrato de Parcelamento por Cliente * * @author R�mulo Aur�lio * @throws ControladorException * @date 12/05/2011 */ public ContratoParcelamento pesquisarContratoParcelamento(String numeroParcelamento) throws ControladorException { ContratoParcelamento contratoParcelamento = null; try { contratoParcelamento = repositorioCobranca.pesquisarContratoParcelamento(numeroParcelamento); } catch (ErroRepositorioException ex) { sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", ex); } return contratoParcelamento; } /** * [UC1167] Consultar Comandos de Cobran�a por Empresa * * Pesquisa os dados dos comandos * * @author: Mariana Victor * @date: 04/05/2011 */ public Collection<ConsultarComandosContasCobrancaEmpresaHelper> pesquisarConsultarComandosContasCobrancaEmpresa(Integer idEmpresa, Date cicloInicial, Date cicloFinal, int pagina) throws ControladorException { Collection<ConsultarComandosContasCobrancaEmpresaHelper> colecaoConsultarComandosContasCobrancaEmpresaHelper = null; try { // Vari�veis para a pagina��o da pesquisa // ======================================================================== final int quantidadeRegistros = 10; // ======================================================================== colecaoConsultarComandosContasCobrancaEmpresaHelper = (Collection) repositorioCobranca .pesquisarDadosConsultarComandosContasCobrancaEmpresaResumido(idEmpresa, cicloInicial, cicloFinal, pagina, quantidadeRegistros); } catch (ErroRepositorioException e) { throw new ControladorException("erro.sistema", e); } return colecaoConsultarComandosContasCobrancaEmpresaHelper; } /** * [UC1167] Consultar Comandos de Cobran�a por Empresa * * Pesquisa os dados de um comando para exibir no popup * * @author: Mariana Victor * @date: 04/05/2011 */ public Object[] pesquisarDadosPopupExtensaoComandoCobranca(Integer idComando, Date dateInicial, Date dateFinal) throws ControladorException { Object[] retorno = new Object[39]; try { // Dados do comando empresa cobranca conta obs: retorno[0 a 29] Collection dadosPopup = repositorioCobranca.pesquisarDadosPopupExtensaoComandoCobranca(idComando); Iterator iteraDadosPopup = dadosPopup.iterator(); Object[] array = (Object[]) iteraDadosPopup.next(); for (int i = 0; i < array.length; i++) { retorno[i] = array[i]; } if (retorno[32] != null && !retorno[32].toString().equals("")) { // Dados das Cobran�as do Comando Collection dadosCobranca = repositorioCobranca.pesquisarValorTotalCobrancaComandoEmpresa(idComando); // Quantidade Total de Contas Selecionadas para Cobran�a retorno[37] = dadosCobranca.size(); Iterator iteraDadosCobranca = dadosCobranca.iterator(); BigDecimal somaCobranca = new BigDecimal("0.0"); while (iteraDadosCobranca.hasNext()) { BigDecimal valor = (BigDecimal) iteraDadosCobranca.next(); somaCobranca = somaCobranca.add(valor); } // Valor Total das Contas retorno[38] = somaCobranca; } } catch (ErroRepositorioException e) { e.printStackTrace(); throw new ControladorException("erro.sistema", e); } return retorno; } /** * [UC1140] Cancelar Contrato de Parcelamento por Cliente [FS0008] - * Verificar possibilidade de cancelamento do contrato de parcelamento por * cliente * * @author R�mulo Aur�lio * @throws ControladorException * @date 12/05/2011 */ public void verificarPossibilidadeCancelamentoContratoParcelamento(ContratoParcelamento contratoParcelamento) throws ControladorException { if (contratoParcelamento.getParcelamentoSituacao() != null && contratoParcelamento.getParcelamentoSituacao().getId().intValue() != ParcelamentoSituacao.NORMAL.intValue()) { throw new ControladorException("atencao.contrato_nao_pode_ser_cancelado", null, contratoParcelamento.getNumero(), contratoParcelamento.getParcelamentoSituacao().getDescricao()); } } /** * [UC1167] Consultar Comandos de Cobran�a por Empresa * * Pesquisa a quantidade de contas, agrupando por im�vel * * @author: Mariana Victor * @date: 06/05/2011 * @throws ErroRepositorioException * */ public Collection pesquisarValorTotalCobrancaComandoEmpresaPorImovel(Integer idComando) throws ControladorException { try { return repositorioCobranca.pesquisarValorTotalCobrancaComandoEmpresaPorImovel(idComando); } catch (ErroRepositorioException ex) { sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", ex); } } /** * [UC1168] Encerrar Comandos de Cobran�a por Empresa * * @author Mariana Victor * @created 09/05/2011 */ public void encerrarComandosCobrancaPorEmpresa(Integer idFuncionalidadeIniciada, String idEmpresa, Usuario usuarioLogado, Integer idComando, Integer idCobrancaSituacao) throws ControladorException { int idUnidadeIniciada = 0; try { /* * Registrar o in�cio do processamento da Unidade de Processamento * do Batch */ idUnidadeIniciada = getControladorBatch().iniciarUnidadeProcessamentoBatch(idFuncionalidadeIniciada, UnidadeProcessamento.COMANDO_EMPRESA_COBRANCA_CONTA, idComando); boolean flagFimPesquisa = false; final int quantidadeImoveis = 1000; int quantidadeInicio = 0; System.out.println("***************************************"); System.out.println("ENCERRAR COMANDOS"); System.out.println("***************************************"); while (!flagFimPesquisa) { Collection dadosEmpresaCobConta = this.repositorioCobranca.pesquisarImovelOrdemServicoParaEncerrarComando(quantidadeInicio, idComando); if (dadosEmpresaCobConta != null && !dadosEmpresaCobConta.isEmpty()) { Iterator iterDadosEmpresaCobConta = dadosEmpresaCobConta.iterator(); if (dadosEmpresaCobConta.size() < quantidadeImoveis) { flagFimPesquisa = true; } else { quantidadeInicio = quantidadeInicio + 1000; } System.out.println("***************************************"); System.out.println("QUANTIDADE: " + dadosEmpresaCobConta.size()); System.out.println("***************************************"); while (iterDadosEmpresaCobConta.hasNext()) { Object[] dados = (Object[]) iterDadosEmpresaCobConta.next(); if (dados != null) { if (dados[0] != null) { Integer idImovel = (Integer) dados[0]; this.getControladorImovel().retirarSituacaoCobrancaImovel(idImovel, idCobrancaSituacao); } if (dados[1] != null) { Integer idOrdemServico = (Integer) dados[1]; Short idMotivoEncerramento = AtendimentoMotivoEncerramento.CANCELADO_POR_DERCURSO_DE_PRAZO; Date dataAtual = new Date(); // encerrar a ordem de servi�o, com o motivo // correspodente a decurso de prazo // [UC0457] - Encerrar Ordem de Servi�o this.getControladorOrdemServico().encerrarOSSemExecucao(idOrdemServico, dataAtual, usuarioLogado, idMotivoEncerramento.toString(), dataAtual, null, null, null, null, null, null); } } } } else { flagFimPesquisa = true; } } this.repositorioCobranca.atualizarDataEncerramentoComando(idComando); getControladorBatch().encerrarUnidadeProcessamentoBatch(null, idUnidadeIniciada, false); System.out.println("******* FIM **********"); } catch (Exception ex) { ex.printStackTrace(); getControladorBatch().encerrarUnidadeProcessamentoBatch(ex, idUnidadeIniciada, true); throw new EJBException(ex); } } /** * [UC1169] Movimentar Ordens de Servi�o de Cobran�a por Resultado * * Encerrar ordem(ns) de servi�o. * * @author: Mariana Victor * @date: 17/05/2011 */ public void movimentarOrdemServicoEncerrarOS(MovimentarOrdemServicoEncerrarOSHelper helper, Usuario usuarioLogado) throws ControladorException { if (helper.getColecaoOrdemServico() != null && !helper.getColecaoOrdemServico().isEmpty()) { Iterator iterator = helper.getColecaoOrdemServico().iterator(); while (iterator.hasNext()) { OrdemServico ordemServico = (OrdemServico) iterator.next(); Date dataEncerramento = helper.getDataEncerramento(); String observacao = "Encerrada por Empresa de Cobran�a"; if (helper.getObservacaoEncerramento() != null && !helper.getObservacaoEncerramento().trim().equals("")) { observacao = helper.getObservacaoEncerramento(); } // [UC0457] - Encerrar Ordem de Servi�o this.getControladorOrdemServico().encerrarOSSemExecucao(ordemServico.getId(), dataEncerramento, usuarioLogado, helper.getIdMotivoEncerramento(), new Date(), observacao, null, null, null, null, null); } } } /** * * [UC1169] Movimentar Ordens de Servi�o de Cobran�a por Resultado * * Gerar OS * * @author Mariana Victor * @data 17/05/2011 */ public Collection<Integer> pesquisarIdsImoveis(MovimentarOrdemServicoGerarOSHelper helper) throws ControladorException { try { return repositorioCobranca.pesquisarIdsImoveis(helper); } catch (ErroRepositorioException ex) { sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", ex); } } /** * [UC1169] Movimentar Ordens de Servi�o de Cobran�a por Resultado * * Emitir OS Gerada pela Empresa * * @author Mariana Victor * @data 18/05/2011 */ public Collection<Object[]> pesquisarDadosOSGeradasPelaEmpresa(Integer idComando, Integer idTipoServico) throws ControladorException { try { return repositorioCobranca.pesquisarDadosOSGeradasPelaEmpresa(idComando, idTipoServico); } catch (ErroRepositorioException ex) { sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", ex); } } /** * [UC1169] Movimentar Ordens de Servi�o de Cobran�a por Resultado * * Emitir OS de Registro de Atendimento * * @author Mariana Victor * @data 18/05/2011 */ public Collection<Object[]> pesquisarDadosOSRegistroAtendimento(Integer idComando, Integer idTipoServico) throws ControladorException { try { return repositorioCobranca.pesquisarDadosOSRegistroAtendimento(idComando, idTipoServico); } catch (ErroRepositorioException ex) { sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", ex); } } /** * obtem contas em d�bito do im�vel, comparando a data de vencimento * original usado no emitir contas da CAEMA * * Author: Vivianne Sousa Data: 15/06/2011 * * @throws ErroRepositorioException */ public Collection pesquisarContasImovelDataVencimentoOriginal(Integer idImovel, int indicadorPagamento, int indicadorConta, String anoMesInicialReferenciaDebito, String anoMesFinalReferenciaDebito, Date anoMesInicialVencimentoDebito, Date anoMesFinalVencimentoDebito, int indicadorDividaAtiva) throws ControladorException { try { return repositorioCobranca.pesquisarContasImovelDataVencimentoOriginal(idImovel, indicadorPagamento, indicadorConta, DebitoCreditoSituacao.NORMAL.toString(), DebitoCreditoSituacao.RETIFICADA.toString(), DebitoCreditoSituacao.INCLUIDA.toString(), anoMesInicialReferenciaDebito, anoMesFinalReferenciaDebito, anoMesInicialVencimentoDebito, anoMesFinalVencimentoDebito, indicadorDividaAtiva); } catch (ErroRepositorioException ex) { // sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", ex); } } /** * [UC1146] Informar Pagamento Contrato de Parcelamento por Cliente * * Atualizar a situacao do item do documento de cobranca a partir de um * pagamento realizado, informando a data de pagamento * * @param pagamento * * @author Mariana Victor * @date 08/06/2011 */ public void atualizarSituacaoCobrancaDocumentoItemAPartirPagamento(Pagamento pagamento, Integer idCobrancaDebitoSituacao, Date dataPagamneto) throws ControladorException { Integer idConta = pagamento.getContaGeral() != null ? pagamento.getContaGeral().getId() : null; Integer idDebitoACobrar = pagamento.getDebitoACobrarGeral() != null ? pagamento.getDebitoACobrarGeral().getId() : null; Integer idGuiaPagamento = pagamento.getGuiaPagamento() != null ? pagamento.getGuiaPagamento().getId() : null; try { // Atualizar item documento de cobranca da conta, se houver, para // cancelado repositorioCobranca.atualizarSituacaoCobrancaDocumentoItem(idCobrancaDebitoSituacao, dataPagamneto, idConta, idGuiaPagamento, idDebitoACobrar); } catch (ErroRepositorioException ex) { sessionContext.setRollbackOnly(); new ControladorException("erro.sistema", ex); } } /** * [UC1183] Gerar Arquivo Txt OS Contas Pagas Parceladas * * @author Paulo Diniz * @throws ControladorException * @data 30/06/2011 */ public List<Object[]> pesquisarOrdensServicoContasPagasParceladas() throws ControladorException { try { return repositorioCobranca.pesquisarOrdensServicoContasPagasParceladas(); } catch (ErroRepositorioException ex) { sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", ex); } } /** * [UC1186] Gerar Relat�rio Ordem de Servi�o Cobran�a p/Resultado * * Pesquisar EmpresaCobrancaConta a partir do im�vel * * @author Hugo Azevedo * @data 02/07/2011 */ public Collection obterColecaoEmpresaCobrancaContaResultadoporImovel(Integer id) throws ControladorException { Collection retorno = new ArrayList(); try { retorno = repositorioCobranca.obterColecaoEmpresaCobrancaContaResultadoporImovel(id); } catch (ErroRepositorioException ex) { sessionContext.setRollbackOnly(); new ControladorException("erro.sistema", ex); } return retorno; } /** * [UC1183] Gerar Arquivo TXT OS Contas Pagas/Parceladas * * @author Mariana Victor, Ana Maria * @date 02/07/2011 * @throws ControladorException * * */ public void gerarArquivoTxtOSContasPagasParceladas(int idFuncionalidadeIniciada) throws ControladorException { int idUnidadeIniciada = 0; // ------------------------- // Registrar o in�cio do processamento da // Unidade de Processamento do Batch // ------------------------- // idUnidadeIniciada = getControladorBatch().iniciarUnidadeProcessamentoBatch(idFuncionalidadeIniciada, UnidadeProcessamento.FUNCIONALIDADE, 0); try { StringBuilder arquivo = new StringBuilder(""); String nomeArquivo = ""; // Pesquisa as empresas que possuem comandos ativos e executados // para gerar o txt por empresa Collection<Object[]> dadosEmpresas = this.repositorioCobranca.pesquisarEmpresasComandosCobrancaAtivosExecutados(); if (dadosEmpresas != null && !dadosEmpresas.isEmpty()) { Iterator iterator = dadosEmpresas.iterator(); while (iterator.hasNext()) { Object[] dadosEmpresa = (Object[]) iterator.next(); Integer idEmpresa = (Integer) dadosEmpresa[0]; String emailEmpresa = (String) dadosEmpresa[1]; String data = Util.formatarDataSemBarraDDMMAAAA(new Date()); nomeArquivo = "contas_pagas_e_parceladas_" + idEmpresa + "_" + data + ".txt"; arquivo = new StringBuilder(""); // 2. O sistema dever� verificar todos os comandos de // cobran�a por resultados ativos e executados Collection<Integer> idsComandos = this.repositorioCobranca.pesquisarComandosCobrancaAtivosExecutados(idEmpresa); if (idsComandos != null && !idsComandos.isEmpty()) { Iterator iteratorComando = idsComandos.iterator(); while (iteratorComando.hasNext()) { Integer idComando = (Integer) iteratorComando.next(); // 2.1. Para cada comando selecionado o sistema // dever� selecionar os ordens de servi�o ativas // associadas ao mesmo Collection<Object[]> dadosOrdensServico = this.repositorioCobranca .pesquisarOrdensServicoAtivasComando(idComando); if (dadosOrdensServico != null && !dadosOrdensServico.isEmpty()) { Iterator iteratorOS = dadosOrdensServico.iterator(); while (iteratorOS.hasNext()) { Object[] dadosOS = (Object[]) iteratorOS.next(); Integer idOS = (Integer) dadosOS[0]; Integer idImovel = (Integer) dadosOS[1]; // 2.1.1. Para cada Ordem de Servi�o // selecionada, o sistema dever� verificar // se as contas associadas ao im�vel da // ordem de servi�o est�o quitadas ou // parceladas if (!this.repositorioCobranca.verificarExisteContasEmAberto(idOS)) { // 2.1.1.1. Caso confirmado que as // contas cobradas estejam cobradas ou // parceladas, // o sistema dever� encerrar a ordem de // servi�o com motivo de d�bito pago FiltroUsuario filtroUsuario = new FiltroUsuario(); filtroUsuario.adicionarParametro(new ParametroSimples(FiltroUsuario.ID, Usuario.USUARIO_BATCH .getId())); filtroUsuario.adicionarCaminhoParaCarregamentoEntidade(FiltroUsuario.UNIDADE_ORGANIZACIONAL); Collection colecaoUsuario = Fachada.getInstancia() .pesquisar(filtroUsuario, Usuario.class.getName()); Usuario usuarioBatch = (Usuario) Util.retonarObjetoDeColecao(colecaoUsuario); // [UC0457] - Encerrar Ordem de Servi�o this.getControladorOrdemServico().encerrarOSSemExecucao(idOS, new Date(), usuarioBatch, AtendimentoMotivoEncerramento.DEBITO_PAGO.toString(), new Date(), null, null, null, null, null, null); String idOrdem = Util.adicionarZerosEsquedaNumero(10, idOS + ""); String idComandoCobranca = Util.adicionarZerosEsquedaNumero(10, idComando + ""); String motivoEncerramento = Util.adicionarZerosEsquedaNumero(4, AtendimentoMotivoEncerramento.CONCLUSAO_SERVICO.intValue() + ""); String idImovelOS = Util.adicionarZerosEsquedaNumero(10, idImovel + ""); // 2.1.1.1.1. O sistema dever� gerar um // arquivo TXT com os dados da ordem de // servi�o encerrada // para que seja paralisada a cobran�a // da Ordem de Servi�o. // [SB0001] � Gerar Arquivo. arquivo.append(idComandoCobranca + "#" + idOrdem + "#" + motivoEncerramento + "#" + idImovelOS); arquivo.append(System.getProperty("line.separator")); } } } } } EnvioEmail envioEmail = null; File leitura = null; // se existirem dados no arquivo a ser gerado if (arquivo != null && !arquivo.toString().trim().equals("")) { leitura = new File(nomeArquivo); BufferedWriter out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(leitura.getAbsolutePath()))); out.write(arquivo.toString()); out.close(); envioEmail = getControladorCadastro().pesquisarEnvioEmail(EnvioEmail.GERAR_TXT_OS_CONTAS_PAGAS_PARCELADAS); } else { envioEmail = getControladorCadastro() .pesquisarEnvioEmail(EnvioEmail.GERAR_TXT_OS_CONTAS_PAGAS_PARCELADAS_SEM_DADOS); } String emailRemetente = envioEmail.getEmailRemetente(); String emailDestinatario = emailEmpresa + ", " + envioEmail.getEmailReceptor(); String tituloMensagem = envioEmail.getTituloMensagem(); String mensagem = envioEmail.getCorpoMensagem(); if (leitura == null) { ServicosEmail.enviarMensagem(emailDestinatario, emailRemetente, tituloMensagem, mensagem); } else { ServicosEmail.enviarMensagemArquivoAnexado(emailDestinatario, emailRemetente, tituloMensagem, mensagem, leitura); } } } getControladorBatch().encerrarUnidadeProcessamentoBatch(null, idUnidadeIniciada, false); } catch (Exception e) { sessionContext.setRollbackOnly(); getControladorBatch().encerrarUnidadeProcessamentoBatch(e, idUnidadeIniciada, true); throw new EJBException(e); } } /** * Metodo que cria o relatorio dos documentos do parcelamento de d�bitos * * @author Diogo Peixoto * @date 08/07/2011 * * @param usuario * @param idParcelamento * @param unidadeUsuario * @param colecaoFaturasEmAberto * @param colecaoGuiasPagamento * @param colecaoServicosACobrar * @param colecaoCreditoARealizar * * @return Object */ public Object gerarRelatorioDocumentosParcelamentoCobrancaPortal(Usuario usuario, String idParcelamento, UnidadeOrganizacional unidadeUsuario, Collection colecaoFaturasEmAberto, Collection colecaoGuiasPagamento, Collection colecaoServicosACobrar, Collection colecaoCreditoARealizar) { RelatorioDocumentosParcelamentoPortal relatorio = new RelatorioDocumentosParcelamentoPortal(usuario); relatorio.addParametro("idParcelamento", idParcelamento); relatorio.addParametro("unidadeUsuario", unidadeUsuario); relatorio.addParametro("sistemaParametro", Fachada.getInstancia().pesquisarParametrosDoSistema()); relatorio.addParametro("colecaoFaturasEmAberto", colecaoFaturasEmAberto); relatorio.addParametro("colecaoGuiasPagamento", colecaoGuiasPagamento); relatorio.addParametro("colecaoServicosACobrar", colecaoServicosACobrar); relatorio.addParametro("colecaoCreditoARealizar", colecaoCreditoARealizar); relatorio.addParametro("usuario", usuario); return relatorio; } /** * [UC1167] Consultar Comandos de Cobran�a por Empresa Pesquisa dados do * popup * * @author Hugo Azevedo * @date 25/08/2011 */ public Collection pesquisarDadosPopupExtensaoComandoAguaSituacao(Integer idComando) throws ControladorException { Collection retorno = new ArrayList(); try { retorno = repositorioCobranca.pesquisarDadosPopupExtensaoComandoAguaSituacao(idComando); } catch (ErroRepositorioException ex) { sessionContext.setRollbackOnly(); new ControladorException("erro.sistema", ex); } return retorno; } /** * [UC 0869] Gerar Arqv Texto das Contas em Cobran�a por Empresa * * @author Paulo Diniz * @data 03/08/2011 * */ public Object[] pesquisarDadosQtdContasEDiasVencidos(Integer idComando) throws ControladorException { Object[] retorno = null; try { retorno = repositorioCobranca.pesquisarDadosQtdContasEDiasVencidos(idComando); } catch (ErroRepositorioException ex) { sessionContext.setRollbackOnly(); new ControladorException("erro.sistema", ex); } return retorno; } /** * [UC 0869] Gerar Arqv Texto das Contas em Cobran�a por Empresa * * @author Paulo Diniz * @data 03/08/2011 * */ public Collection<CmdEmpresaCobrancaContaLigacaoAguaSituacao> pesquisarColecaoLigacaoAguaSituacaoPorComandoEmpresaCobrancaConta( Integer idComando) throws ControladorException { Collection<CmdEmpresaCobrancaContaLigacaoAguaSituacao> retorno = null; try { retorno = repositorioCobranca.pesquisarColecaoLigacaoAguaSituacaoPorComandoEmpresaCobrancaConta(idComando); } catch (ErroRepositorioException ex) { sessionContext.setRollbackOnly(); new ControladorException("erro.sistema", ex); } return retorno; } /** * [UC0067] Obter D�bito do Im�vel ou Cliente * * @author Raphael Rossiter * @date 19/09/2011 * * @param idImovel * @return Short * @throws ErroRepositorioException */ public Short obterIndicadorAcrescimosClienteResponsavel(Integer idImovel) throws ControladorException { Short indicadorAcrescimosClienteResponsavel = null; try { indicadorAcrescimosClienteResponsavel = repositorioCobranca.obterIndicadorAcrescimosClienteResponsavel(idImovel); } catch (ErroRepositorioException ex) { new ControladorException("erro.sistema", ex); } return indicadorAcrescimosClienteResponsavel; } /** * [UC0067] Obter D�bito do Im�vel ou Cliente * * @author Raphael Rossiter * @date 19/09/2011 * * @param idImovel * @return Short * @throws ErroRepositorioException */ public Short obterIndicadorAcrescimosCliente(Integer idCliente) throws ControladorException { Short indicadorAcrescimosCliente = null; try { indicadorAcrescimosCliente = repositorioCobranca.obterIndicadorAcrescimosCliente(idCliente); } catch (ErroRepositorioException ex) { new ControladorException("erro.sistema", ex); } return indicadorAcrescimosCliente; } /** * Na gera��o do documento de cobran�a n�o ser�o consideradas as contas cujo * titular seja diferente ao respons�vel do im�vel. * * @author Felipe Santos e Wellington Rocha * @date 24/06/2013 * * @param colecaoContaValores * @return Collection<ContaValoresHelper> */ private Collection<ContaValoresHelper> retirarContasClienteResponsavelImovelDiferenteConta( Collection<ContaValoresHelper> colecaoContaValores) { Iterator iteratorColecaoContaValores = colecaoContaValores.iterator(); while (iteratorColecaoContaValores.hasNext()) { try { ContaValoresHelper contaValor = (ContaValoresHelper) iteratorColecaoContaValores.next(); Conta conta = contaValor.getConta(); Integer idConta = conta.getId(); Integer idImovel = conta.getImovel().getId(); Collection<ClienteImovel> clientesImovel = this.repositorioClienteImovel.pesquisarClienteImovel(idImovel); Cliente clienteResponsavelImovel = null; for (ClienteImovel clienteImovel : clientesImovel) { if (clienteImovel.getIndicadorNomeConta().equals(ConstantesSistema.SIM)) { clienteResponsavelImovel = clienteImovel.getCliente(); } } Collection<IClienteConta> clientesConta = this.repositorioFaturamento.pesquisarClienteConta(idConta); Cliente clienteResponsavelConta = null; for (IClienteConta clienteConta : clientesConta) { if (clienteConta.getIndicadorNomeConta().equals(ConstantesSistema.SIM)) { clienteResponsavelConta = clienteConta.getCliente(); } } if (clienteResponsavelConta != null && clienteResponsavelImovel != null && !clienteResponsavelConta.getId().equals(clienteResponsavelImovel.getId())) { iteratorColecaoContaValores.remove(); } } catch (ErroRepositorioException e) { e.printStackTrace(); } } return colecaoContaValores; } /** * - Remove os im�veis da cole��o caso o cliente n�o seja o * atual respons�vel pela conta * * @author Felipe Santos * @date 24/06/2013 * * @param colecaoImoveis * @param cliente * @return Collection */ private Collection verificarClienteResponsavelImovel(Collection colecaoImoveis, Cliente cliente) { Iterator iteratorColecaoImoveis = colecaoImoveis.iterator(); while (iteratorColecaoImoveis.hasNext()) { Object[] arrayImovel = (Object[]) iteratorColecaoImoveis.next(); Integer idImovel = (Integer) arrayImovel[0]; try { Collection<ClienteImovel> clientesImovel = this.repositorioClienteImovel.pesquisarClienteImovel(idImovel); Cliente clienteResponsavelImovel = null; for (ClienteImovel clienteImovel : clientesImovel) { if (clienteImovel.getIndicadorNomeConta().equals(ConstantesSistema.SIM)) { clienteResponsavelImovel = clienteImovel.getCliente(); } } if (clienteResponsavelImovel != null && !clienteResponsavelImovel.getId().equals(cliente.getId())) { iteratorColecaoImoveis.remove(); } } catch (ErroRepositorioException e) { e.printStackTrace(); } } return colecaoImoveis; } private BigDecimal determinarValorDescontoFaixaReferenciaConta(Collection<ContaValoresHelper> contasHelper) throws ControladorException { BigDecimal valorDescontoFaixaReferenciaConta = new BigDecimal(0.00); ParcelamentoFaixaDescontoBO parcelamentoFaixaDescontoBO = new ParcelamentoFaixaDescontoBO(repositorioCobranca); for (ContaValoresHelper contaHelper : contasHelper) { try { valorDescontoFaixaReferenciaConta = valorDescontoFaixaReferenciaConta.add(parcelamentoFaixaDescontoBO.calcularValorDescontoConta(contaHelper.getConta())); } catch (ErroRepositorioException e) { throw new ControladorException("erro.sistema", e); } } return valorDescontoFaixaReferenciaConta; } }