package gcom.arrecadacao; import gcom.arrecadacao.banco.Banco; import gcom.arrecadacao.bean.ArrecadadorMovimentoItemHelper; import gcom.arrecadacao.bean.DadosConteudoCodigoBarrasHelper; import gcom.arrecadacao.bean.PagamentoHelperCodigoBarras; import gcom.arrecadacao.bean.RegistroHelperCodigoA; import gcom.arrecadacao.bean.RegistroHelperCodigoBarras; import gcom.arrecadacao.bean.RegistroHelperCodigoBarrasTipoPagamento; import gcom.arrecadacao.bean.RegistroHelperCodigoC; import gcom.arrecadacao.bean.RegistroHelperCodigoG; import gcom.arrecadacao.bean.RegistroHelperCodigoZ; import gcom.arrecadacao.debitoautomatico.DebitoAutomaticoMovimento; import gcom.arrecadacao.pagamento.GuiaPagamento; import gcom.arrecadacao.pagamento.Pagamento; import gcom.cadastro.EnvioEmail; import gcom.cadastro.imovel.Imovel; import gcom.cadastro.localidade.Localidade; import gcom.cadastro.sistemaparametro.SistemaParametro; import gcom.cobranca.CobrancaDocumento; import gcom.cobranca.DocumentoTipo; import gcom.fachada.Fachada; import gcom.faturamento.conta.Conta; import gcom.faturamento.conta.ContaGeral; import gcom.faturamento.conta.Fatura; import gcom.faturamento.credito.CreditoARealizarGeral; import gcom.faturamento.debito.DebitoACobrarGeral; import gcom.faturamento.debito.DebitoTipo; import gcom.seguranca.acesso.usuario.Usuario; import gcom.util.ConstantesSistema; import gcom.util.ControladorException; import gcom.util.ErroRepositorioException; import gcom.util.Util; import gcom.util.filtro.ParametroSimples; import java.math.BigDecimal; import java.util.ArrayList; import java.util.Collection; import java.util.Date; import java.util.Iterator; import javax.ejb.SessionBean; /** * Controlador Arrecadacao COSANPA * * @author Raphael Rossiter * @date 24/04/2009 */ public class ControladorArrecadacaoCOSANPASEJB extends ControladorArrecadacao implements SessionBean { private static final long serialVersionUID = 1L; //============================================================================================================== // M�TODOS EXCLUSIVOS DA COSANPA //============================================================================================================== /** * [UC0264] - Distribuir Dados do C�digo de Barras - LEGADO * * @author Raphael Rossiter * @date 01/06/2009 * * @param idPagamento * @param tipoPagamento * @param idEmpresa * @return RegistroHelperCodigoBarrasTipoPagamento */ public RegistroHelperCodigoBarrasTipoPagamento distribuirDadosCodigoBarrasPorTipoPagamento( String idPagamento, String tipoPagamento, String idEmpresa) throws ControladorException { RegistroHelperCodigoBarrasTipoPagamento registroHelperCodigoBarrasTipoPagamento = new RegistroHelperCodigoBarrasTipoPagamento(); registroHelperCodigoBarrasTipoPagamento = super.distribuirDadosCodigoBarrasPorTipoPagamento(idPagamento, tipoPagamento, idEmpresa); //LEGADO - COSANPA //=============================================================================================================================== if (tipoPagamento.equals(ConstantesSistema.CODIGO_TIPO_PAGAMENTO_LEGADO_COSANPA.toString())){ //Tipo do documento registroHelperCodigoBarrasTipoPagamento.setIdPagamento1(idPagamento .substring(0, 1).trim()); //Identifica��o Long identificacaoConta = Long.parseLong(idPagamento .substring(1, 15).trim()); registroHelperCodigoBarrasTipoPagamento.setIdPagamento2(identificacaoConta.toString()); //Localidade registroHelperCodigoBarrasTipoPagamento.setIdPagamento3(idPagamento .substring(15, 24).trim()); // Tipo de pagamento registroHelperCodigoBarrasTipoPagamento.setIdPagamento4(tipoPagamento); /* * Caso o tipo de documento (G.05.7.1) tenha valor igual a 1 (Conta_Legado OU Guia_Legado): */ if (registroHelperCodigoBarrasTipoPagamento.getIdPagamento1() .equals(ConstantesSistema.CODIGO_TIPO_DOCUMENTO_CONTA_LEGADO_COSANPA.toString())){ Long identificacao = Long.valueOf(registroHelperCodigoBarrasTipoPagamento.getIdPagamento2()); /* * Verificar a matricula do im�vel atrav�s da identifica��o da fatura (G.05.7.2) * com valor igual � CNTA_NNCONTAFATURA. * * Caso n�o exista, verificar a matr�cula atrav�s da identifica��o da guia de pagamento * (G.05.7.2) com valor igual � GPAG_NNGUIAFATURA e retornar tipo de documento com valor = 3. * * Caso n�o exista, verificar a matr�cula atrav�s da identifica��o do documento de cobran�a * (G.05.7.2) com valor igual � CBDO_NNDOCUMENTOFATURA e retornar tipo de documento com valor = 4); * * Caso n�o exista, verificar o cliente atrav�s da identifica��o da fatura de cliente * (G.05.7.2) com valor igual � CBDO_NNNUMEROFATURA e retornar tipo de documento com valor = 5); */ Conta conta = this.pesquisarExistenciaContaPorNumeroFatura(identificacao.toString()); if (conta == null){ GuiaPagamento guiaPagamento = this.pesquisarExistenciaGuiaPagamentoPorNumeroGuiaFatura( identificacao.toString()); if (guiaPagamento != null){ //GUIA DE PAGAMENTO registroHelperCodigoBarrasTipoPagamento.setIdPagamento1( ConstantesSistema.CODIGO_TIPO_DOCUMENTO_GUIA_PAGAMENTO_LEGADO_COSANPA.toString()); } else{ CobrancaDocumento cobrancaDocumento = this.pesquisarParmsCobrancaDocumentoPorNumeroDocumentoFatura( identificacao.toString()); if (cobrancaDocumento != null){ //DOCUMENTO DE COBRA�A registroHelperCodigoBarrasTipoPagamento.setIdPagamento1( ConstantesSistema.CODIGO_TIPO_DOCUMENTO_DOCUMENTO_COBRANCA_LEGADO_COSANPA.toString()); } else{ Fatura fatura = this.pesquisarFaturaPorNumeroFatura(identificacao.toString()); if (fatura != null){ //FATURA registroHelperCodigoBarrasTipoPagamento.setIdPagamento1( ConstantesSistema.CODIGO_TIPO_DOCUMENTO_FATURA_LEGADO_COSANPA.toString()); } } } } } } //=============================================================================================================================== return registroHelperCodigoBarrasTipoPagamento; } /** * [UC0259] - Processar Pagamento com C�digo de Barras - LEGADO * * @author Raphael Rossiter * @date 01/06/2009 * * @param registroHelperCodigoBarras * @param dataPagamento * @param anoMesPagamento * @param valorPagamento * @param idFormaPagamento * @param sistemaParametro * @return PagamentoHelperCodigoBarras * @throws ControladorException */ protected PagamentoHelperCodigoBarras processarPagamentosCodigoBarrasPorTipoPagamento( RegistroHelperCodigoBarras registroHelperCodigoBarras, Date dataPagamento, Integer anoMesPagamento, BigDecimal valorPagamento, Integer idFormaArrecadacao, SistemaParametro sistemaParametro, Usuario usuarioLogado) throws ControladorException { PagamentoHelperCodigoBarras pagamentoHelperCodigoBarras = null; String tipoPagamento = registroHelperCodigoBarras.getTipoPagamento(); //LEGADO - COSANPA //=============================================================================================================================== if (tipoPagamento.equals(ConstantesSistema.CODIGO_TIPO_PAGAMENTO_LEGADO_COSANPA.toString())){ /* * Caso o tipo de documento (G.05.7.1) tenha valor igual a 1 (Conta_Legado). * * Caso o tipo de documento (G.05.7.1) tenha valor igual a 2 (Extrato). * * Caso o tipo de documento (G.05.7.1) tenha valor igual a 3 (Guia_Pagamento). * * Caso o tipo de documento (G.05.7.1) tenha valor igual a 4 (Documento_Cobranca). * * Caso o tipo de documento (G.05.7.1) tenha valor igual a 5 (Fatura). * */ if (registroHelperCodigoBarras.getRegistroHelperCodigoBarrasTipoPagamento() .getIdPagamento1().equals(ConstantesSistema.CODIGO_TIPO_DOCUMENTO_CONTA_LEGADO_COSANPA.toString())){ //CONTA pagamentoHelperCodigoBarras = this.processarPagamentosCodigoBarrasConta_COSANPA_LEGADO( registroHelperCodigoBarras, sistemaParametro,dataPagamento, anoMesPagamento, valorPagamento, idFormaArrecadacao); System.out.println("CONTA"); //=============================================================================================================================== } else if (registroHelperCodigoBarras.getRegistroHelperCodigoBarrasTipoPagamento() .getIdPagamento1().equals(ConstantesSistema.CODIGO_TIPO_DOCUMENTO_EXTRATO_LEGADO_COSANPA.toString())){ //EXTRATO pagamentoHelperCodigoBarras = processarPagamentosCodigoBarrasDocumentoCobranca_COSANPA_LEGADO( registroHelperCodigoBarras, sistemaParametro, dataPagamento, anoMesPagamento, valorPagamento, idFormaArrecadacao); System.out.println("EXTRATO"); //=============================================================================================================================== } else if (registroHelperCodigoBarras.getRegistroHelperCodigoBarrasTipoPagamento() .getIdPagamento1().equals(ConstantesSistema.CODIGO_TIPO_DOCUMENTO_GUIA_PAGAMENTO_LEGADO_COSANPA.toString())){ //GUIA DE PAGAMENTO pagamentoHelperCodigoBarras = processarPagamentosCodigoBarrasGuiaPagamento_COSANPA_LEGADO( registroHelperCodigoBarras, sistemaParametro, dataPagamento,anoMesPagamento, valorPagamento, idFormaArrecadacao); System.out.println("GUIA DE PAGAMENTO"); //=============================================================================================================================== } else if (registroHelperCodigoBarras.getRegistroHelperCodigoBarrasTipoPagamento() .getIdPagamento1().equals(ConstantesSistema.CODIGO_TIPO_DOCUMENTO_DOCUMENTO_COBRANCA_LEGADO_COSANPA.toString())){ //DOCUMENTO COBRANCA pagamentoHelperCodigoBarras = processarPagamentosCodigoBarrasDocumentoCobranca_COSANPA_LEGADO( registroHelperCodigoBarras, sistemaParametro, dataPagamento, anoMesPagamento, valorPagamento, idFormaArrecadacao); System.out.println("DOCUMENTO COBRANCA"); //=============================================================================================================================== } else if (registroHelperCodigoBarras.getRegistroHelperCodigoBarrasTipoPagamento() .getIdPagamento1().equals(ConstantesSistema.CODIGO_TIPO_DOCUMENTO_FATURA_LEGADO_COSANPA.toString())){ //FATURA pagamentoHelperCodigoBarras = processarPagamentosCodigoBarrasFatura_COSANPA_LEGADO( registroHelperCodigoBarras, sistemaParametro, dataPagamento, anoMesPagamento, valorPagamento, idFormaArrecadacao); System.out.println("FATURA"); //=============================================================================================================================== } else{ //atribui o valor 2(N�O) ao indicador aceitacao registro Collection colecaoPagamentos = new ArrayList(); pagamentoHelperCodigoBarras = new PagamentoHelperCodigoBarras(); pagamentoHelperCodigoBarras.setColecaoPagamentos(colecaoPagamentos); pagamentoHelperCodigoBarras.setDescricaoOcorrencia("C�DIGO DE BARRAS COM TIPO DE PAGAMENTO INV�LIDO"); pagamentoHelperCodigoBarras.setIndicadorAceitacaoRegistro("2"); } }else{ pagamentoHelperCodigoBarras = super.processarPagamentosCodigoBarrasPorTipoPagamento( registroHelperCodigoBarras, dataPagamento, anoMesPagamento, valorPagamento, idFormaArrecadacao, sistemaParametro, usuarioLogado); } return pagamentoHelperCodigoBarras; } /** * [UC0259] - Processar Pagamento com C�digo de Barras - LEGADO * * [SB0014] - Processar Pagamento Legado COSANPA - CONTA * * @author Raphael Rossiter * @date 01/06/2009 * * @param registroHelperCodigoBarras * @param sistemaParametro * @param dataPagamento * @param anoMesPagamento * @param valorPagamento * @param idFormaArrecadacao * @return PagamentoHelperCodigoBarras * @throws ControladorException */ protected PagamentoHelperCodigoBarras processarPagamentosCodigoBarrasConta_COSANPA_LEGADO( RegistroHelperCodigoBarras registroHelperCodigoBarras, SistemaParametro sistemaParametro, Date dataPagamento, Integer anoMesPagamento, BigDecimal valorPagamento, Integer idFormaArrecadacao) throws ControladorException { PagamentoHelperCodigoBarras pagamentoHelperCodigoBarras = new PagamentoHelperCodigoBarras(); String descricaoOcorrencia = "OK"; String indicadorAceitacaoRegistro = "1"; Collection colecaoPagamnetos = new ArrayList(); boolean numeroFaturaInvalida = false; Long identificacao = null; Conta conta = null; numeroFaturaInvalida = Util.validarValorLongoNaoNumerico(registroHelperCodigoBarras .getRegistroHelperCodigoBarrasTipoPagamento().getIdPagamento2()); if (numeroFaturaInvalida) { descricaoOcorrencia = "N�MERO DA FATURA N�O NUM�RICO"; } else { identificacao = Long.valueOf(registroHelperCodigoBarras .getRegistroHelperCodigoBarrasTipoPagamento().getIdPagamento2()); conta = this.pesquisarExistenciaContaPorNumeroFatura(identificacao.toString()); if (conta == null) { descricaoOcorrencia = "CONTA INEXISTENTE"; } } if (descricaoOcorrencia.equals("OK")) { // GERA��O DO PAGAMENTO Pagamento pagamento = new Pagamento(); pagamento.setAnoMesReferenciaPagamento(conta.getReferencia()); /* * Caso o ano mes da data de debito seja maior que o ano mes de * arrecada��o da tabela sistema parametro ent�o seta o ano mes da * data de debito */ if (anoMesPagamento > sistemaParametro.getAnoMesArrecadacao()) { pagamento.setAnoMesReferenciaArrecadacao(anoMesPagamento); } else { /* * caso contrario seta o o ano mes arrecada��o da tabela sistema * parametro */ pagamento.setAnoMesReferenciaArrecadacao(sistemaParametro .getAnoMesArrecadacao()); } pagamento.setValorPagamento(valorPagamento); pagamento.setDataPagamento(dataPagamento); pagamento.setPagamentoSituacaoAtual(null); pagamento.setPagamentoSituacaoAnterior(null); pagamento.setDebitoTipo(null); // ASSOCIANDO O PAGAMENTO COM A CONTA ContaGeral contaGeral = new ContaGeral(); contaGeral.setId(conta.getId()); contaGeral.setConta(conta); pagamento.setContaGeral(contaGeral); pagamento.setImovel(conta.getImovel()); pagamento.setGuiaPagamento(null); // ASSOCIANDO O PAGAMENTO COM A LOCALIDADE DA CONTA pagamento.setLocalidade(conta.getLocalidade()); DocumentoTipo documentoTipo = new DocumentoTipo(); documentoTipo.setId(DocumentoTipo.CONTA); documentoTipo.setDescricaoDocumentoTipo(ConstantesSistema.TIPO_PAGAMENTO_CONTA); pagamento.setDocumentoTipo(documentoTipo); pagamento.setAvisoBancario(null); pagamento.setArrecadadorMovimentoItem(null); ArrecadacaoForma arrecadacaoForma = new ArrecadacaoForma(); arrecadacaoForma.setId(idFormaArrecadacao); pagamento.setArrecadacaoForma(arrecadacaoForma); pagamento.setCliente(null); pagamento.setUltimaAlteracao(new Date()); /* * Alteracao referente ao relatorio de Float - Francisco : 14/07/08 */ pagamento.setFatura(null); pagamento.setCobrancaDocumento(null); DocumentoTipo documentoAgregador = new DocumentoTipo(); documentoAgregador.setId(DocumentoTipo.CONTA); pagamento.setDocumentoTipoAgregador(documentoAgregador); pagamento.setDataProcessamento(new Date()); colecaoPagamnetos.add(pagamento); } else { // Atribui o valor 2(N�O) ao indicador aceitacao registro indicadorAceitacaoRegistro = "2"; } // Seta os parametros que ser�o retornados pagamentoHelperCodigoBarras.setColecaoPagamentos(colecaoPagamnetos); pagamentoHelperCodigoBarras.setDescricaoOcorrencia(descricaoOcorrencia); pagamentoHelperCodigoBarras.setIndicadorAceitacaoRegistro(indicadorAceitacaoRegistro); return pagamentoHelperCodigoBarras; } /** * [UC0259] - Processar Pagamento com C�digo de Barras - LEGADO * * [SB0014] - Processar Pagamento Legado COSANPA - GUIA DE PAGAMENTO * * @author Raphael Rossiter * @date 30/06/2009 * * @param registroHelperCodigoBarras * @param sistemaParametro * @param dataPagamento * @param anoMesPagamento * @param valorPagamento * @param idFormaArrecadacao * @return PagamentoHelperCodigoBarras * @throws ControladorException */ protected PagamentoHelperCodigoBarras processarPagamentosCodigoBarrasGuiaPagamento_COSANPA_LEGADO( RegistroHelperCodigoBarras registroHelperCodigoBarras, SistemaParametro sistemaParametro, Date dataPagamento, Integer anoMesPagamento, BigDecimal valorPagamento, Integer idFormaArrecadacao) throws ControladorException { PagamentoHelperCodigoBarras pagamentoHelperCodigoBarras = new PagamentoHelperCodigoBarras(); String descricaoOcorrencia = "OK"; String indicadorAceitacaoRegistro = "1"; Collection colecaoPagamnetos = new ArrayList(); boolean numeroFaturaInvalida = false; Long identificacao = null; GuiaPagamento guiaPagamento = null; numeroFaturaInvalida = Util.validarValorLongoNaoNumerico(registroHelperCodigoBarras .getRegistroHelperCodigoBarrasTipoPagamento().getIdPagamento2()); if (numeroFaturaInvalida) { descricaoOcorrencia = "N�MERO DA FATURA N�O NUM�RICO"; } else { identificacao = Long.valueOf(registroHelperCodigoBarras .getRegistroHelperCodigoBarrasTipoPagamento().getIdPagamento2()); guiaPagamento = this.pesquisarExistenciaGuiaPagamentoPorNumeroGuiaFatura(identificacao.toString()); if (guiaPagamento == null) { descricaoOcorrencia = "GUIA PAGAMENTO INEXISTENTE"; } } if (descricaoOcorrencia.equals("OK")) { // GERA��O DO PAGAMENTO Pagamento pagamento = new Pagamento(); pagamento.setAnoMesReferenciaPagamento(null); /* * Caso o ano mes da data de dedito seja maior que o ano mes de * arrecada��o da tabela sistema parametro ent�o seta o ano mes da * data de debito */ if (anoMesPagamento > sistemaParametro.getAnoMesArrecadacao()) { pagamento.setAnoMesReferenciaArrecadacao(anoMesPagamento); } else { /* * caso contrario seta o o ano mes arrecada��o da tabela sistema * parametro */ pagamento.setAnoMesReferenciaArrecadacao(sistemaParametro .getAnoMesArrecadacao()); } pagamento.setValorPagamento(valorPagamento); pagamento.setDataPagamento(dataPagamento); pagamento.setPagamentoSituacaoAtual(null); pagamento.setPagamentoSituacaoAnterior(null); pagamento.setDebitoTipo(guiaPagamento.getDebitoTipo()); pagamento.setContaGeral(null); pagamento.setGuiaPagamento(guiaPagamento); pagamento.setLocalidade(guiaPagamento.getLocalidade()); DocumentoTipo documentoTipo = new DocumentoTipo(); if (guiaPagamento.getDebitoTipo().getId().equals(DebitoTipo.ENTRADA_PARCELAMENTO)){ documentoTipo.setId(DocumentoTipo.ENTRADA_DE_PARCELAMENTO); } else { documentoTipo.setId(DocumentoTipo.GUIA_PAGAMENTO); } documentoTipo.setDescricaoDocumentoTipo(ConstantesSistema.TIPO_PAGAMENTO_GUIA_PAGAMENTO); pagamento.setDocumentoTipo(documentoTipo); pagamento.setAvisoBancario(null); pagamento.setImovel(guiaPagamento.getImovel()); pagamento.setArrecadadorMovimentoItem(null); ArrecadacaoForma arrecadacaoForma = new ArrecadacaoForma(); arrecadacaoForma.setId(idFormaArrecadacao); pagamento.setArrecadacaoForma(arrecadacaoForma); pagamento.setCliente(null); pagamento.setUltimaAlteracao(new Date()); pagamento.setFatura(null); pagamento.setCobrancaDocumento(null); /* * Alteracao referente ao Relatorio do Float - Francisco: 14/07/08 */ DocumentoTipo documentoAgregador = new DocumentoTipo(); documentoAgregador.setId(DocumentoTipo.GUIA_PAGAMENTO); pagamento.setDocumentoTipoAgregador(documentoAgregador); pagamento.setDataProcessamento(new Date()); colecaoPagamnetos.add(pagamento); } else { // Atribui o valor 2(N�O) ao indicador aceitacao registro indicadorAceitacaoRegistro = "2"; } // Seta os parametros que ser�o retornados pagamentoHelperCodigoBarras.setColecaoPagamentos(colecaoPagamnetos); pagamentoHelperCodigoBarras.setDescricaoOcorrencia(descricaoOcorrencia); pagamentoHelperCodigoBarras.setIndicadorAceitacaoRegistro(indicadorAceitacaoRegistro); return pagamentoHelperCodigoBarras; } /** * [UC0259] - Processar Pagamento com C�digo de Barras * * [SB0014] - Processar Pagamento Legado COSANPA - EXTRATO DE D�BITOS (IM�VEL) * * @author Raphael Rossiter * @date 01/06/2009 * * @param registroHelperCodigoBarras * @param sistemaParametro * @param dataPagamento * @param anoMesPagamento * @param valorPagamento * @param idFormaArrecadacao * @return PagamentoHelperCodigoBarras * @throws ControladorException */ protected PagamentoHelperCodigoBarras processarPagamentosCodigoBarrasDocumentoCobranca_COSANPA_LEGADO( RegistroHelperCodigoBarras registroHelperCodigoBarras, SistemaParametro sistemaParametro, Date dataPagamento, Integer anoMesPagamento, BigDecimal valorPagamento, Integer idFormaArrecadacao) throws ControladorException { PagamentoHelperCodigoBarras pagamentoHelperCodigoBarras = new PagamentoHelperCodigoBarras(); String descricaoOcorrencia = "OK"; String indicadorAceitacaoRegistro = "1"; Collection colecaoPagamentos = new ArrayList(); Collection colecaoDevolucoes = new ArrayList(); boolean numeroDocumentoFaturaInvalido = false; Long identificacao = null; CobrancaDocumento cobrancaDocumento = null; numeroDocumentoFaturaInvalido = Util.validarValorLongoNaoNumerico(registroHelperCodigoBarras .getRegistroHelperCodigoBarrasTipoPagamento().getIdPagamento2()); if (numeroDocumentoFaturaInvalido) { descricaoOcorrencia = "N�MERO DO DOCUMENTO N�O NUM�RICO"; } else { identificacao = Long.valueOf(registroHelperCodigoBarras .getRegistroHelperCodigoBarrasTipoPagamento().getIdPagamento2()); cobrancaDocumento = this.pesquisarParmsCobrancaDocumentoPorNumeroDocumentoFatura( identificacao.toString()); if (cobrancaDocumento == null) { descricaoOcorrencia = "DOCUMENTO DE COBRAN�A INEXISTENTE"; } } if (descricaoOcorrencia.equals("OK")) { Integer idLocalidade = null; Collection cobrancaDocumentoItens = null; try { cobrancaDocumentoItens = repositorioArrecadacao .pesquisarCobrancaDocumentoItem(cobrancaDocumento.getId()); } catch (ErroRepositorioException e) { throw new ControladorException("erro.sistema", e); } Integer idCobrancaDocumento = null; BigDecimal valorAcrescimo = new BigDecimal("0.00"); BigDecimal valorDesconto = new BigDecimal("0.00"); Date dataEmissao = null; BigDecimal valorTaxa = new BigDecimal("0.00"); Integer idDocumentoTipo = null; idCobrancaDocumento = cobrancaDocumento.getId(); idDocumentoTipo = cobrancaDocumento.getDocumentoTipo().getId(); if (cobrancaDocumento.getValorAcrescimos() != null) { valorAcrescimo = cobrancaDocumento.getValorAcrescimos(); } if (cobrancaDocumento.getValorDesconto() != null) { valorDesconto = cobrancaDocumento.getValorDesconto(); } if (cobrancaDocumento.getEmissao() != null) { dataEmissao = cobrancaDocumento.getEmissao(); } if (cobrancaDocumento.getValorTaxa() != null) { valorTaxa = cobrancaDocumento.getValorTaxa(); } /* * Gerar os pagamentos associados com a localidade do documento de cobran�a e N�O com * a localidade do im�vel. */ if (cobrancaDocumento.getLocalidade() != null) { idLocalidade = cobrancaDocumento.getLocalidade().getId(); } else{ idLocalidade = cobrancaDocumento.getImovel().getLocalidade().getId(); } // Caso o valor de acr�scimo for maior que zero if (valorAcrescimo.compareTo(new BigDecimal("0.00")) == 1) { // [SB0008 - Alterar vencimento dos itens do documento de cobran�a] alterarVencimentoItensDocumentoCobranca(idCobrancaDocumento, dataEmissao); } // Caso o valor de acrescimos seja maior que o valor de descontos if (valorAcrescimo.compareTo(valorDesconto) == 1) { valorAcrescimo = valorAcrescimo.subtract(valorDesconto); valorDesconto = new BigDecimal("0.00"); } else { valorDesconto = valorDesconto.subtract(valorAcrescimo); valorAcrescimo = new BigDecimal("0.00"); } // Caso o valor de acr�scimo for maior que zero if (valorAcrescimo.compareTo(new BigDecimal("0.00")) == 1) { // [SB0005 - Processar Recebimento de Acrescimos por Impontualidade] Pagamento pagamento = processarRecebimentoAcrescimosImpontualidade( idCobrancaDocumento, dataEmissao, valorAcrescimo, cobrancaDocumento.getImovel().getId(), idLocalidade, sistemaParametro, idFormaArrecadacao, idDocumentoTipo); colecaoPagamentos.add(pagamento); } // Caso o valor de desconto for maior que zero if (valorDesconto.compareTo(new BigDecimal("0.00")) == 1) { // [SB0006 - Processar Desconto concedido no documento de cobran�a] Devolucao devolucao = processarDescontoConcedidoDocumentoCobranca( idCobrancaDocumento, dataEmissao, valorDesconto, cobrancaDocumento.getImovel().getId(), idLocalidade, sistemaParametro, idFormaArrecadacao, idDocumentoTipo); colecaoDevolucoes.add(devolucao); } // Caso o valor da taxa referente ao documento de cobran�a for maior que zero if (valorTaxa.compareTo(new BigDecimal("0.00")) == 1) { // [SB0006 - Processar Desconto concedido no documento de cobran�a] Pagamento pagamento = processarTaxaDocumentoCobranca( idCobrancaDocumento, dataEmissao, valorTaxa, cobrancaDocumento.getImovel().getId(), idLocalidade, sistemaParametro, idFormaArrecadacao, idDocumentoTipo); colecaoPagamentos.add(pagamento); } // verifica se a cole��o � diferente de nula if (cobrancaDocumentoItens != null && !cobrancaDocumentoItens.isEmpty()) { Iterator cobrancaDocumentoItensIterator = cobrancaDocumentoItens .iterator(); while (cobrancaDocumentoItensIterator.hasNext()) { Object[] cobrancaDocumentoItem = (Object[]) cobrancaDocumentoItensIterator.next(); /* * Colocado por Raphael Rossiter em 31/10/2007 OBJ: * Apenas gerar os pagamentos referentes aos itens que * NAO tenham CreditoARealizar */ BigDecimal valorItemCobrado = null; if (cobrancaDocumentoItem[13] == null) { Integer idContaPesquisa = null; Integer idContaGeralPesquisa = null; Integer idGuiaPagamento = null; Integer idDebitoACobrar = null; int contaReferencia = 0; Integer idDebitoTipo = null; Integer idGuiaPagamentoGeralPesquisa = null; Integer idDebitoACobrarGeralPesquisa = null; Short numeroPrestacaoCobradas = null; Short numeroPrestacaoDebito = null; // verifica o id da conta if (cobrancaDocumentoItem[0] != null) { idContaPesquisa = (Integer) cobrancaDocumentoItem[0]; idContaGeralPesquisa = (Integer) cobrancaDocumentoItem[0]; // referencia conta if (cobrancaDocumentoItem[4] != null) { contaReferencia = (Integer) cobrancaDocumentoItem[4]; } } else { // Caso n�o exista na conta ent�o pesquisa na conta hist�rico if (cobrancaDocumentoItem[10] != null) { idContaGeralPesquisa = (Integer) cobrancaDocumentoItem[10]; } // referencia conta hist�rico if (cobrancaDocumentoItem[5] != null) { contaReferencia = (Integer) cobrancaDocumentoItem[5]; } } // Verifica o id da guia pagamento if (cobrancaDocumentoItem[1] != null) { idGuiaPagamento = (Integer) cobrancaDocumentoItem[1]; idGuiaPagamentoGeralPesquisa = (Integer) cobrancaDocumentoItem[1]; } else { // Caso n�o exista no guia pagamento ent�o pesquisa no guia pagamento hist�rico if (cobrancaDocumentoItem[11] != null) { idGuiaPagamentoGeralPesquisa = (Integer) cobrancaDocumentoItem[11]; } } // verifica o id do debito a cobrar if (cobrancaDocumentoItem[2] != null) { idDebitoACobrar = (Integer) cobrancaDocumentoItem[2]; idDebitoACobrarGeralPesquisa = (Integer) cobrancaDocumentoItem[2]; numeroPrestacaoDebito = (Short) cobrancaDocumentoItem[16]; numeroPrestacaoCobradas = (Short) cobrancaDocumentoItem[17]; // [SB0012]- Verifica Pagamento de D�bito a Cobrar de Parcelamento verificaPagamentoDebitoACobrarParcelamento(idDebitoACobrar, null); } else { // Caso n�o exista no debito a cobrar ent�o pesquisa no debito a cobrar hist�rico if (cobrancaDocumentoItem[12] != null) { idDebitoACobrarGeralPesquisa = (Integer) cobrancaDocumentoItem[12]; } } // Verifica o valor do item cobrado da cobranca documento item if (cobrancaDocumentoItem[3] != null) { valorItemCobrado = (BigDecimal) cobrancaDocumentoItem[3]; } if (idContaGeralPesquisa == null) { // caso exista guia de pagamento if (idGuiaPagamentoGeralPesquisa != null) { // Verifica o id do debito tipo se � da guia if (cobrancaDocumentoItem[6] != null) { idDebitoTipo = (Integer) cobrancaDocumentoItem[6]; } else { /* * Caso n�o exista no guia pagamento ent�o pesquisa no guia pagamento * hist�rico */ if (cobrancaDocumentoItem[7] != null) { idDebitoTipo = (Integer) cobrancaDocumentoItem[7]; } } } // Caso exista debito a cobrar if (idDebitoACobrarGeralPesquisa != null) { // Verifica o id do debito tipo no debito a cobrar if (cobrancaDocumentoItem[8] != null) { idDebitoTipo = (Integer) cobrancaDocumentoItem[8]; } else { /* * caso n�o exista no debito a cobrar ent�o pesquisa no debito a cobrar * hist�rico */ if (cobrancaDocumentoItem[9] != null) { idDebitoTipo = (Integer) cobrancaDocumentoItem[9]; } } } } // GERANDO O PAGAMENTO Pagamento pagamento = new Pagamento(); if (contaReferencia != 0) { pagamento.setAnoMesReferenciaPagamento(contaReferencia); } else { pagamento.setAnoMesReferenciaPagamento(null); } /* * caso o ano mes da data de dedito seja maior que o ano mes de arrecada��o da * tabela sistema parametro ent�o seta o ano mes da data de debito. */ if (anoMesPagamento > sistemaParametro.getAnoMesArrecadacao()) { pagamento.setAnoMesReferenciaArrecadacao(anoMesPagamento); } else { // caso contrario seta o o ano mes arrecada��o da tabela sistema parametro pagamento.setAnoMesReferenciaArrecadacao(sistemaParametro .getAnoMesArrecadacao()); } pagamento.setValorPagamento(valorItemCobrado); pagamento.setDataPagamento(dataPagamento); pagamento.setPagamentoSituacaoAtual(null); pagamento.setPagamentoSituacaoAnterior(null); if (idDebitoTipo != null) { DebitoTipo debitoTipo = new DebitoTipo(); debitoTipo.setId(idDebitoTipo); pagamento.setDebitoTipo(debitoTipo); } else { pagamento.setDebitoTipo(null); } // CONTA if (idContaGeralPesquisa != null) { if (idContaPesquisa != null) { ContaGeral conta = new ContaGeral(); conta.setId(idContaPesquisa); pagamento.setContaGeral(conta); /* * Colocado por Raphael Rossiter em 26/11/2008 - CRC264 * OBJ: Inserir o pagamento com a localidade da pr�pria conta e n�o * com a localidade do documento de cobran�a */ try { idLocalidade = repositorioLocalidade .pesquisarIdLocalidadePorConta(idContaPesquisa); } catch (ErroRepositorioException e) { throw new ControladorException("erro.sistema", e); } } else { pagamento.setContaGeral(null); } DocumentoTipo documentoTipo = new DocumentoTipo(); documentoTipo.setId(DocumentoTipo.CONTA); pagamento.setDocumentoTipo(documentoTipo); } else { pagamento.setContaGeral(null); } // GUIA DE PAGAMENTO if (idGuiaPagamentoGeralPesquisa != null) { if (idGuiaPagamento != null) { GuiaPagamento guiaPagamento = new GuiaPagamento(); guiaPagamento.setId(idGuiaPagamento); pagamento.setGuiaPagamento(guiaPagamento); /* * Colocado por Raphael Rossiter em 26/11/2008 - CRC264 * OBJ: Inserir o pagamento com a localidade da pr�pria guia e n�o * com a localidade do documento de cobran�a */ try { idLocalidade = repositorioLocalidade .pesquisarIdLocalidadePorGuiaPagamento(idGuiaPagamento); } catch (ErroRepositorioException e) { throw new ControladorException("erro.sistema", e); } } else { pagamento.setGuiaPagamento(null); } DocumentoTipo documentoTipo = new DocumentoTipo(); /* * verificar se o tipo de debito eh 'entrada de parcelamento', e preencher o documentotipo * com o 'entrada de parcelamento' */ if (idDebitoTipo != null && idDebitoTipo.equals(DebitoTipo.ENTRADA_PARCELAMENTO)){ documentoTipo.setId(DocumentoTipo.ENTRADA_DE_PARCELAMENTO); } else { documentoTipo.setId(DocumentoTipo.GUIA_PAGAMENTO); } documentoTipo.setDescricaoDocumentoTipo(ConstantesSistema.TIPO_PAGAMENTO_DOCUMENTO_COBRANCA); pagamento.setDocumentoTipo(documentoTipo); } else { pagamento.setGuiaPagamento(null); } // D�BITO A COBRAR if (idDebitoACobrarGeralPesquisa != null) { if (idDebitoACobrar != null) { try { if (numeroPrestacaoCobradas.intValue() != numeroPrestacaoDebito.intValue()) { DebitoACobrarGeral debitoACobrarGeral = new DebitoACobrarGeral(); debitoACobrarGeral.setId(idDebitoACobrar); pagamento.setDebitoACobrarGeral(debitoACobrarGeral); /* * Colocado por Raphael Rossiter em 26/11/2008 - CRC264 * OBJ: Inserir o pagamento com a localidade do pr�prio debito a cobrar e n�o * com a localidade do documento de cobran�a */ idLocalidade = repositorioLocalidade .pesquisarIdLocalidadePorDebitoACobrar(idDebitoACobrar); } // atualiza a situa��o atual para cancelada repositorioFaturamento .atualizarSituacaoAtualDebitoACobrar(idDebitoACobrar); } catch (ErroRepositorioException e) { throw new ControladorException("erro.sistema", e); } } else { pagamento.setDebitoACobrarGeral(null); } DocumentoTipo documentoTipo = new DocumentoTipo(); documentoTipo.setId(DocumentoTipo.DEBITO_A_COBRAR); pagamento.setDocumentoTipo(documentoTipo); } else { pagamento.setDebitoACobrarGeral(null); } // Verifica se o id da conta � diferente de nulo if (idLocalidade != null) { Localidade localidade = new Localidade(); localidade.setId(idLocalidade); pagamento.setLocalidade(localidade); } else { pagamento.setLocalidade(null); } // AVISO BANC�RIO pagamento.setAvisoBancario(null); // IM�VEL pagamento.setImovel(cobrancaDocumento.getImovel()); pagamento.setArrecadadorMovimentoItem(null); ArrecadacaoForma arrecadacaoForma = new ArrecadacaoForma(); arrecadacaoForma.setId(idFormaArrecadacao); pagamento.setArrecadacaoForma(arrecadacaoForma); pagamento.setCliente(null); pagamento.setUltimaAlteracao(new Date()); pagamento.setFatura(null); //DOCUMENTO DE COBRAN�A pagamento.setCobrancaDocumento(cobrancaDocumento); // DOCUMENTO TIPO if(idDocumentoTipo != null){ DocumentoTipo documentoAgregador = new DocumentoTipo(); documentoAgregador.setId(idDocumentoTipo); pagamento.setDocumentoTipoAgregador(documentoAgregador); } pagamento.setDataProcessamento(new Date()); if (pagamento.getDocumentoTipo() != null) { colecaoPagamentos.add(pagamento); } } else { // Para os itens que tenham CreditoARealizar gerar suas respectivas devolu��es Devolucao devolucao = new Devolucao(); // DataDevolucao = DataPagamento devolucao.setDataDevolucao(dataPagamento); /* * AnoMesReferenciaDevolucao Caso o anoMes da data * de devolu��o seja MAIOR que a * PARM_AMREFERENCIAARRECADACAO da tabela * SISTEMA_PARAMETROS atribuir o anoMes da data da * devolu��o, caso contr�rio atribuir o * PARM_AMREFERENCIAARRECADACAO. */ Integer anoMesDataDevolucao = Util.getAnoMesComoInteger(devolucao .getDataDevolucao()); if (anoMesDataDevolucao > sistemaParametro.getAnoMesArrecadacao()) { devolucao.setAnoMesReferenciaArrecadacao(anoMesDataDevolucao); } else { devolucao.setAnoMesReferenciaArrecadacao(sistemaParametro .getAnoMesArrecadacao()); } // ValorDevolucao = ValorItemCobrado if (cobrancaDocumentoItem[3] != null) { valorItemCobrado = (BigDecimal) cobrancaDocumentoItem[3]; devolucao.setValorDevolucao(valorItemCobrado); } // Localidade = Localidade da tabela // COBRANCA_DOCUMENTO if (cobrancaDocumentoItem[14] != null) { Localidade localidade = new Localidade(); localidade.setId((Integer) cobrancaDocumentoItem[14]); devolucao.setLocalidade(localidade); } // Imovel = Imovel da tabela COBRANCA_DOCUMENTO if (cobrancaDocumentoItem[15] != null) { Imovel imovel = new Imovel(); imovel.setId((Integer) cobrancaDocumentoItem[15]); devolucao.setImovel(imovel); } // DebitoTipo = DebitoTipo com o valor // correspondente a outros DebitoTipo debitoTipo = new DebitoTipo(); debitoTipo.setId(DebitoTipo.OUTROS); devolucao.setDebitoTipo(debitoTipo); // CreditoARealizarGeral = CreditoARealizarGeral da // tabela COBRANCA_DOCUMENTO_ITEM CreditoARealizarGeral creditoARealizarGeral = new CreditoARealizarGeral(); creditoARealizarGeral.setId((Integer) cobrancaDocumentoItem[13]); devolucao.setCreditoARealizarGeral(creditoARealizarGeral); // Ultima Altera��o devolucao.setUltimaAlteracao(new Date()); //DOCUMENTO DE COBRAN�A devolucao.setCobrancaDocumento(cobrancaDocumento); // documento tipo do documento de cobranca if(idDocumentoTipo != null){ DocumentoTipo documentoAgregador = new DocumentoTipo(); documentoAgregador.setId(idDocumentoTipo); devolucao.setDocumentoTipoAgregador(documentoAgregador); } // ADICIONANDO A DEVOLUCAO GERADA NA COLECAO DE RETORNO colecaoDevolucoes.add(devolucao); } } } } else { // atribui o valor 2(N�O) ao indicador aceitacao registro indicadorAceitacaoRegistro = "2"; } // Seta os parametros que ser�o retornados pagamentoHelperCodigoBarras.setColecaoPagamentos(colecaoPagamentos); pagamentoHelperCodigoBarras.setColecaoDevolucao(colecaoDevolucoes); pagamentoHelperCodigoBarras.setDescricaoOcorrencia(descricaoOcorrencia); pagamentoHelperCodigoBarras.setIndicadorAceitacaoRegistro(indicadorAceitacaoRegistro); return pagamentoHelperCodigoBarras; } /** * [UC0259] - Processar Pagamento com C�digo de Barras * * [SB0014] - Processar Pagamento Legado COSANPA - FATURA (IM�VEL) * * @author Raphael Rossiter * @date 01/06/2009 * * @param registroHelperCodigoBarras * @param sistemaParametro * @param dataPagamento * @param anoMesPagamento * @param valorPagamento * @param idFormaArrecadacao * @return PagamentoHelperCodigoBarras * @throws ControladorException */ protected PagamentoHelperCodigoBarras processarPagamentosCodigoBarrasFatura_COSANPA_LEGADO( RegistroHelperCodigoBarras registroHelperCodigoBarras, SistemaParametro sistemaParametro, Date dataPagamento, Integer anoMesPagamento, BigDecimal valorPagamento, Integer idFormaArrecadacao) throws ControladorException { PagamentoHelperCodigoBarras pagamentoHelperCodigoBarras = new PagamentoHelperCodigoBarras(); String descricaoOcorrencia = "OK"; String indicadorAceitacaoRegistro = "1"; Collection colecaoPagamentos = new ArrayList(); boolean numeroFaturaInvalido = false; Long identificacao = null; Fatura fatura = null; numeroFaturaInvalido = Util.validarValorLongoNaoNumerico(registroHelperCodigoBarras .getRegistroHelperCodigoBarrasTipoPagamento().getIdPagamento2()); if (numeroFaturaInvalido) { descricaoOcorrencia = "N�MERO DA FATURA N�O NUM�RICO"; } else { identificacao = Long.valueOf(registroHelperCodigoBarras .getRegistroHelperCodigoBarrasTipoPagamento().getIdPagamento2()); fatura = this.pesquisarFaturaPorNumeroFaturaObjetoCompleto(identificacao.toString()); if (fatura == null) { descricaoOcorrencia = "FATURA INEXISTENTE"; } } if (descricaoOcorrencia.equals("OK")) { // COLE��O PARA OS �TENS DA FATURA Collection faturaItens = null; try { faturaItens = repositorioFaturamento.pesquisarFaturaItem(fatura.getId()); } catch (ErroRepositorioException e) { throw new ControladorException("erro.sistema", e); } if (faturaItens != null && !faturaItens.isEmpty()) { Iterator faturaItensIterator = faturaItens.iterator(); while (faturaItensIterator.hasNext()) { Object[] faturaItem = (Object[]) faturaItensIterator.next(); // inicializa as variaveis que veio da pesquisa Integer idContaPesquisa = null; Integer idImovelPesquisa = null; Integer idLocalidadePesquisa = null; BigDecimal valorConta = null; // verifica o valor da conta if (faturaItem[0] != null) { valorConta = (BigDecimal) faturaItem[0]; } // verifica o id da conta if (faturaItem[1] != null) { idContaPesquisa = (Integer) faturaItem[1]; } // verifica o id da localidade if (faturaItem[2] != null) { idLocalidadePesquisa = (Integer) faturaItem[2]; } // verifica o id do imovel if (faturaItem[3] != null) { idImovelPesquisa = (Integer) faturaItem[3]; } // verifica o id da localidade de Conta // Hist�rico if (faturaItem[4] != null) { idLocalidadePesquisa = (Integer) faturaItem[4]; } // verifica o id do imovel de Conta Hist�rico if (faturaItem[5] != null) { idImovelPesquisa = (Integer) faturaItem[5]; } // cria o objeto pagamento para setar os // dados Pagamento pagamento = new Pagamento(); pagamento.setAnoMesReferenciaPagamento(fatura.getAnoMesReferencia()); // caso o ano mes da data de dedito seja // maior que o ano mes de arrecada��o da // tabela sistema parametro ent�o seta o ano // mes da data de debito if (anoMesPagamento > sistemaParametro .getAnoMesArrecadacao()) { pagamento .setAnoMesReferenciaArrecadacao(anoMesPagamento); } else { // caso contrario seta o o ano mes // arrecada��o da tabela sistema // parametro pagamento .setAnoMesReferenciaArrecadacao(sistemaParametro .getAnoMesArrecadacao()); } pagamento.setValorPagamento(valorConta); pagamento.setDataPagamento(dataPagamento); pagamento.setPagamentoSituacaoAtual(null); pagamento.setPagamentoSituacaoAnterior(null); pagamento.setDebitoTipo(null); // verifica se o id da conta � diferente de // nulo if (idContaPesquisa != null) { ContaGeral conta = new ContaGeral(); conta.setId(idContaPesquisa); pagamento.setContaGeral(conta); } else { pagamento.setContaGeral(null); } pagamento.setGuiaPagamento(null); pagamento.setDebitoACobrarGeral(null); // verifica se o id da conta � diferente de // nulo if (idLocalidadePesquisa != null) { Localidade localidade = new Localidade(); localidade.setId(idLocalidadePesquisa); pagamento.setLocalidade(localidade); } else { pagamento.setLocalidade(null); } DocumentoTipo documentoTipo = new DocumentoTipo(); documentoTipo.setId(DocumentoTipo.CONTA); documentoTipo.setDescricaoDocumentoTipo(ConstantesSistema.TIPO_PAGAMENTO_FATURA_CLIENTE_RESPONSAVEL); pagamento.setDocumentoTipo(documentoTipo); // seta o id do aviso bancario pagamento.setAvisoBancario(null); // seta o imovel if (idImovelPesquisa != null) { Imovel imovel = new Imovel(); imovel.setId(idImovelPesquisa); pagamento.setImovel(imovel); } else { pagamento.setImovel(null); } pagamento.setArrecadadorMovimentoItem(null); ArrecadacaoForma arrecadacaoForma = new ArrecadacaoForma(); arrecadacaoForma.setId(idFormaArrecadacao); pagamento.setArrecadacaoForma(arrecadacaoForma); pagamento.setCliente(null); pagamento.setUltimaAlteracao(new Date()); pagamento.setFatura(fatura); pagamento.setCobrancaDocumento(null); DocumentoTipo documentoAgregador = new DocumentoTipo(); documentoAgregador.setId(DocumentoTipo.FATURA_CLIENTE); pagamento.setDocumentoTipoAgregador(documentoAgregador); pagamento.setDataProcessamento(new Date()); colecaoPagamentos.add(pagamento); } } } else { // atribui o valor 2(N�O) ao indicador aceitacao // registro indicadorAceitacaoRegistro = "2"; } // Seta os parametros que ser�o retornados pagamentoHelperCodigoBarras.setColecaoPagamentos(colecaoPagamentos); pagamentoHelperCodigoBarras.setDescricaoOcorrencia(descricaoOcorrencia); pagamentoHelperCodigoBarras .setIndicadorAceitacaoRegistro(indicadorAceitacaoRegistro); return pagamentoHelperCodigoBarras; } /** * [UC0270] Apresentar An�lise do Movimento dos Arrecadadores * * @author Raphael Rossiter * @date 02/06/2009 * * @param registroHelperCodigoG * @param arrecadadorMovimentoItemHelper * @throws ControladorException */ public void distribuirDadosRegistroMovimentoArrecadadorPorTipoPagamento(RegistroHelperCodigoG registroHelperCodigoG, ArrecadadorMovimentoItemHelper arrecadadorMovimentoItemHelper) throws ControladorException { super.distribuirDadosRegistroMovimentoArrecadadorPorTipoPagamento(registroHelperCodigoG, arrecadadorMovimentoItemHelper); //LEGADO - COSANPA //=============================================================================================================================== if (registroHelperCodigoG.getRegistroHelperCodigoBarras() .getTipoPagamento().equals(ConstantesSistema.CODIGO_TIPO_PAGAMENTO_LEGADO_COSANPA.toString())){ Long identificacao = Long.valueOf(registroHelperCodigoG.getRegistroHelperCodigoBarras() .getRegistroHelperCodigoBarrasTipoPagamento().getIdPagamento2()); /* * Caso o tipo de documento (G.05.7.1) tenha valor igual a 1 (Conta_Legado). * * Caso o tipo de documento (G.05.7.1) tenha valor igual a 2 (Extrato). * * Caso o tipo de documento (G.05.7.1) tenha valor igual a 3 (Guia_Pagamento). * * Caso o tipo de documento (G.05.7.1) tenha valor igual a 4 (Documento_Cobranca). * * Caso o tipo de documento (G.05.7.1) tenha valor igual a 5 (Fatura). * */ if (registroHelperCodigoG.getRegistroHelperCodigoBarras().getRegistroHelperCodigoBarrasTipoPagamento() .getIdPagamento1().equals(ConstantesSistema.CODIGO_TIPO_DOCUMENTO_CONTA_LEGADO_COSANPA.toString())){ //CONTA Conta conta = this.pesquisarExistenciaContaPorNumeroFatura(identificacao.toString()); if (conta != null){ arrecadadorMovimentoItemHelper .setIdentificacao(conta.getImovel().getId().toString()); } arrecadadorMovimentoItemHelper .setTipoPagamento(ConstantesSistema.TIPO_PAGAMENTO_CONTA_LEGADO); } else if (registroHelperCodigoG.getRegistroHelperCodigoBarras().getRegistroHelperCodigoBarrasTipoPagamento() .getIdPagamento1().equals(ConstantesSistema.CODIGO_TIPO_DOCUMENTO_EXTRATO_LEGADO_COSANPA.toString())){ //EXTRATO CobrancaDocumento cobrancaDocumento = this.pesquisarParmsCobrancaDocumentoPorNumeroDocumentoFatura( identificacao.toString()); if (cobrancaDocumento != null){ arrecadadorMovimentoItemHelper .setIdentificacao(cobrancaDocumento.getImovel().getId().toString()); } arrecadadorMovimentoItemHelper .setTipoPagamento(ConstantesSistema.TIPO_PAGAMENTO_EXTRATO_LEGADO); } else if (registroHelperCodigoG.getRegistroHelperCodigoBarras().getRegistroHelperCodigoBarrasTipoPagamento() .getIdPagamento1().equals(ConstantesSistema.CODIGO_TIPO_DOCUMENTO_GUIA_PAGAMENTO_LEGADO_COSANPA.toString())){ //GUIA DE PAGAMENTO GuiaPagamento guiaPagamento = this.pesquisarExistenciaGuiaPagamentoPorNumeroGuiaFatura( identificacao.toString()); if (guiaPagamento != null){ arrecadadorMovimentoItemHelper .setIdentificacao(guiaPagamento.getImovel().getId().toString()); } arrecadadorMovimentoItemHelper .setTipoPagamento(ConstantesSistema.TIPO_PAGAMENTO_GUIA_PAGAMENTO_LEGADO); } else if (registroHelperCodigoG.getRegistroHelperCodigoBarras().getRegistroHelperCodigoBarrasTipoPagamento() .getIdPagamento1().equals(ConstantesSistema.CODIGO_TIPO_DOCUMENTO_DOCUMENTO_COBRANCA_LEGADO_COSANPA.toString())){ //DOCUMENTO DE COBRAN�A CobrancaDocumento cobrancaDocumento = this.pesquisarParmsCobrancaDocumentoPorNumeroDocumentoFatura( identificacao.toString()); if (cobrancaDocumento != null && cobrancaDocumento.getImovel() != null){ arrecadadorMovimentoItemHelper .setIdentificacao(cobrancaDocumento.getImovel().getId().toString()); } arrecadadorMovimentoItemHelper .setTipoPagamento(ConstantesSistema.TIPO_PAGAMENTO_DOCUMENTO_COBRANCA_LEGADO); } else if (registroHelperCodigoG.getRegistroHelperCodigoBarras().getRegistroHelperCodigoBarrasTipoPagamento() .getIdPagamento1().equals(ConstantesSistema.CODIGO_TIPO_DOCUMENTO_FATURA_LEGADO_COSANPA.toString())){ //FATURA Fatura fatura = this.pesquisarFaturaPorNumeroFaturaObjetoCompleto(identificacao.toString()); if (fatura != null){ arrecadadorMovimentoItemHelper .setIdentificacao(fatura.getCliente().getId().toString()); } arrecadadorMovimentoItemHelper .setTipoPagamento(ConstantesSistema.TIPO_PAGAMENTO_FATURA_CLIENTE_RESPONSAVEL_LEGADO); } } } /** * [UC0242] - Registrar Movimento dos Arrecadadores * * @author Raphael Rossiter * @date 18/09/2009 * * @param idClienteEmpresa * @return Integer * @throws ControladorException */ public Integer recuperarMatriculaImovel(String idClienteEmpresa) throws ControladorException{ Integer matriculaImovelInteger = null; String matriculaImovel = null; if (idClienteEmpresa != null) { int max = 11; if (idClienteEmpresa.length() < 11){ max = idClienteEmpresa.length(); } matriculaImovel = idClienteEmpresa.substring(0, max); try { matriculaImovelInteger = new Integer(matriculaImovel); } catch (Exception e) { matriculaImovelInteger = 0; } } return matriculaImovelInteger; } /** * [UC0270] Apresentar An�lise do Movimento dos Arrecadadores * * O sistema captura os dados referentes ao conte�do do do c�digo de barras * * [SF0003] Apresentar Dados do Conte�do do C�digo de Barras * * @author Raphael Rossiter * @data 22/03/2006 * * @param registroHelperCodigoG * @return DadosConteudoCodigoBarrasHelper */ public DadosConteudoCodigoBarrasHelper apresentarDadosConteudoCodigoBarras( RegistroHelperCodigoG registroHelperCodigoG) throws ControladorException { //GERADO PELO GSAN DadosConteudoCodigoBarrasHelper retorno = super.apresentarDadosConteudoCodigoBarras(registroHelperCodigoG); //LEGADO String tipoPagamento = registroHelperCodigoG .getRegistroHelperCodigoBarras().getTipoPagamento(); if (tipoPagamento != null && tipoPagamento.equals(ConstantesSistema.CODIGO_TIPO_PAGAMENTO_LEGADO_COSANPA.toString())) { //LOCALIDADE retorno.setCodigoLocalidade(new Integer(registroHelperCodigoG .getRegistroHelperCodigoBarras().getRegistroHelperCodigoBarrasTipoPagamento() .getIdPagamento3()).toString()); Long identificacao = Long.valueOf(registroHelperCodigoG .getRegistroHelperCodigoBarras().getRegistroHelperCodigoBarrasTipoPagamento() .getIdPagamento2()); //IDENTIFICA��O DO DOCUMENTO retorno.setIdentificacaoDocumento(identificacao.toString()); /* * Caso o tipo de documento (G.05.7.1) tenha valor igual a 1 (Conta_Legado). * * Caso o tipo de documento (G.05.7.1) tenha valor igual a 2 (Extrato). * * Caso o tipo de documento (G.05.7.1) tenha valor igual a 3 (Guia_Pagamento). * * Caso o tipo de documento (G.05.7.1) tenha valor igual a 4 (Documento_Cobranca). * * Caso o tipo de documento (G.05.7.1) tenha valor igual a 5 (Fatura). * */ if (registroHelperCodigoG.getRegistroHelperCodigoBarras().getRegistroHelperCodigoBarrasTipoPagamento() .getIdPagamento1().equals(ConstantesSistema.CODIGO_TIPO_DOCUMENTO_CONTA_LEGADO_COSANPA.toString())){ //CONTA retorno.setTipoPagamento(ConstantesSistema.TIPO_PAGAMENTO_CONTA_LEGADO); } else if (registroHelperCodigoG.getRegistroHelperCodigoBarras().getRegistroHelperCodigoBarrasTipoPagamento() .getIdPagamento1().equals(ConstantesSistema.CODIGO_TIPO_DOCUMENTO_EXTRATO_LEGADO_COSANPA.toString())){ //EXTRATO retorno.setTipoPagamento(ConstantesSistema.TIPO_PAGAMENTO_EXTRATO_LEGADO); } else if (registroHelperCodigoG.getRegistroHelperCodigoBarras().getRegistroHelperCodigoBarrasTipoPagamento() .getIdPagamento1().equals(ConstantesSistema.CODIGO_TIPO_DOCUMENTO_GUIA_PAGAMENTO_LEGADO_COSANPA.toString())){ //GUIA DE PAGAMENTO retorno.setTipoPagamento(ConstantesSistema.TIPO_PAGAMENTO_GUIA_PAGAMENTO_LEGADO); } else if (registroHelperCodigoG.getRegistroHelperCodigoBarras().getRegistroHelperCodigoBarrasTipoPagamento() .getIdPagamento1().equals(ConstantesSistema.CODIGO_TIPO_DOCUMENTO_DOCUMENTO_COBRANCA_LEGADO_COSANPA.toString())){ //DOCUMENTO DE COBRAN�A retorno.setTipoPagamento(ConstantesSistema.TIPO_PAGAMENTO_DOCUMENTO_COBRANCA_LEGADO); } else if (registroHelperCodigoG.getRegistroHelperCodigoBarras().getRegistroHelperCodigoBarrasTipoPagamento() .getIdPagamento1().equals(ConstantesSistema.CODIGO_TIPO_DOCUMENTO_FATURA_LEGADO_COSANPA.toString())){ //FATURA retorno.setTipoPagamento(ConstantesSistema.TIPO_PAGAMENTO_FATURA_CLIENTE_RESPONSAVEL_LEGADO); } } return retorno; } /** * [UC0242] - Registrar Movimento dos Arrecadadores * * [SF0010] - Gerar o arquivo de envio para o arrecadador com registros do Movimento * * Autor: S�vio Luiz Data: 15/02/2006 */ public void gerarArquivoRegistrosTipoC( RegistroHelperCodigoA registroHelperCodigoA, RegistroHelperCodigoZ registroHelperCodigoZ, Collection colecaoRegistrosC, Integer numeroSequencialArquivoEnvioDebitoAutomatico, String descricaoOcorrencia, Integer indicadorAceitacaoRegistro, String idTipoMovimento) throws ControladorException { StringBuilder registrosC = new StringBuilder(); // cria o header do c�digo C para inserir o movimento arrecadador RegistroHelperCodigoA registroHelperHeaderC = new RegistroHelperCodigoA(); // cria o trailler do c�digo C para inserir o m�vimento arrecadador RegistroHelperCodigoZ registroHelperTreillerC = new RegistroHelperCodigoZ(); // inicializa com 1, pois j� est� contando com a linha do registro A int quantidadeRegistros = 1; registrosC.append("A"); registroHelperHeaderC.setCodigoRegistro("A"); registrosC.append("1"); registroHelperHeaderC.setCodigoRemessa("1"); // seta o c�digo do conv�nio registrosC.append(Util.completaString(registroHelperCodigoA .getCodigoConvenio(), 20)); registroHelperHeaderC.setCodigoConvenio(registroHelperCodigoA .getCodigoConvenio()); // seta o nome da empresa registrosC.append(Util.completaString(registroHelperCodigoA .getNomeEmpresa(), 20)); registroHelperHeaderC.setNomeEmpresa(registroHelperCodigoA .getNomeEmpresa()); // seta o c�digo do banco registrosC.append(Util.adicionarZerosEsquedaNumero(3, registroHelperCodigoA.getCodigoBanco())); registroHelperHeaderC.setCodigoBanco(registroHelperCodigoA .getCodigoBanco()); // seta o nome do banco registrosC.append(Util.completaString(registroHelperCodigoA .getNomeBanco(), 20)); registroHelperHeaderC .setNomeBanco(registroHelperCodigoA.getNomeBanco()); // seta a data corrente String dataAtualString = Util.recuperaDataInvertida(new Date()); registrosC.append(Util.completaString(dataAtualString, 8)); registroHelperHeaderC.setDataGeracaoArquivo(dataAtualString); // seta numero sequencial da tabela Arrecadador_Contrato o campo // ARCT_NNNSAENVIODEBAUT + 1 numeroSequencialArquivoEnvioDebitoAutomatico += 1; registrosC.append(Util.adicionarZerosEsquedaNumero(6, "" + numeroSequencialArquivoEnvioDebitoAutomatico)); registroHelperHeaderC.setNumeroSequencialArquivo("" + numeroSequencialArquivoEnvioDebitoAutomatico); // seta a vers�o de layout registrosC.append(Util.adicionarZerosEsquedaNumero(2, "" + registroHelperCodigoA.getVersaoLayout())); registroHelperHeaderC.setVersaoLayout(registroHelperCodigoA .getVersaoLayout()); // tipo do movimento registrosC.append(Util.completaString(registroHelperCodigoA .getTipoMovimento(), 17)); registroHelperHeaderC.setTipoMovimento(registroHelperCodigoA .getTipoMovimento()); // reservado para o futuro registrosC.append(Util.completaString("", 51)); // reservado para o futuro registrosC.append(Util.completaString("*", 1)); registroHelperHeaderC.setReservadoFuturo(registroHelperCodigoA .getReservadoFuturo()); // parte do treiller criada para inserir no movimento arrecadador registroHelperTreillerC.setCodigoRegistro("Z"); // o total de registros � a quantidade da cole��o mais a header e o // treiller (1+1) registroHelperTreillerC.setTotalRegistrosArquivo("" + (colecaoRegistrosC.size() + 2)); registroHelperTreillerC.setValorTotalRegistrosArquivo("000"); ArrecadadorMovimento arrecadadorMovimento = inserirMovimentoArrecadador( registroHelperHeaderC, registroHelperTreillerC, idTipoMovimento); // pula uma linha registrosC.append(System.getProperty("line.separator")); Iterator colecaoRegistrosCIterator = colecaoRegistrosC.iterator(); while (colecaoRegistrosCIterator.hasNext()) { // cria uma string builder para pegar linha a linha da cole��o // inserir o movimento arrecadador e depois inserir na string // builder do registrosC // para ser mandado para o banco. StringBuilder linhaRegistroC = new StringBuilder(); // incrementa a quantidade de registros para cada registro da // cole��o quantidadeRegistros = quantidadeRegistros + 1; // come�a a criar a string com o registro do tipo c RegistroHelperCodigoC registroHelperCodigoC = (RegistroHelperCodigoC) colecaoRegistrosCIterator .next(); linhaRegistroC.append("C"); // Identifica��o do cliente na empresa linhaRegistroC.append(Util.completaString(registroHelperCodigoC .getIdClienteEmpresa(), 25)); // agencia para debito linhaRegistroC.append(Util.completaString(registroHelperCodigoC .getAgenciaDebito(), 4)); // Identificacao cliente banco linhaRegistroC.append(Util.completaString(registroHelperCodigoC .getIdClienteBanco(), 14)); // descricao ocorrencia movimento linhaRegistroC.append(Util.completaString(registroHelperCodigoC .getDescricaoOcorrenciaMovimento(), 40)); // brancos linhaRegistroC.append(Util.completaString("", 40)); // reservado para o futuro linhaRegistroC.append(Util.completaString("", 25)); // agencia para debito linhaRegistroC.append(Util.adicionarZerosEsquedaNumero(1, registroHelperCodigoC.getCodigoMovimento())); // inseri o item do movimento arrecadador inserirItemMovimentoArrecadador(linhaRegistroC.toString(), arrecadadorMovimento.getId(), registroHelperCodigoC .getDescricaoOcorrenciaMovimento(), indicadorAceitacaoRegistro, null, null, null, null); registrosC.append(linhaRegistroC); registrosC.append(System.getProperty("line.separator")); } // incrementa a quantidade de registros para registro Z quantidadeRegistros = quantidadeRegistros + 1; registrosC.append("Z"); // total de registros do arquivo registrosC.append(Util.adicionarZerosEsquedaNumero(6, "" + quantidadeRegistros)); // valor zero registrosC.append(Util.adicionarZerosEsquedaNumero(17, "")); // reservado para o futuro registrosC.append(Util.completaString("", 125)); // reservado para o futuro registrosC.append(Util.completaString("*", 1)); registrosC.append(System.getProperty("line.separator")); //N�O UTILIZADO PELA COSANPA //registrosC.append("\u0004"); EnvioEmail envioEmail = getControladorCadastro().pesquisarEnvioEmail( EnvioEmail.REGISTRAR_MOVIMENTO_ARRECADADORES); String emailRemetente = envioEmail.getEmailRemetente(); String tituloMensagem = envioEmail.getTituloMensagem(); String corpoMensagem = envioEmail.getCorpoMensagem(); String emailReceptor = envioEmail.getEmailReceptor(); mandaArquivoLeituraEmail(registrosC, emailReceptor, emailRemetente, tituloMensagem, corpoMensagem,numeroSequencialArquivoEnvioDebitoAutomatico); } /** * [UC0319] Gerar Movimento de D�bito Autom�tico para o banco * * Gera o arquivo TXT para envio. * * [SB0004] - Gerar Arquivo TXT para Envio do Banco * * @author S�vio Luiz * @date 20/04/2006 * * @param arrecadadorMovimento,registrosTipoE * @return StringBuilder * @throws ControladorException */ protected StringBuilder gerarArquivoTxt( ArrecadadorMovimento arrecadadorMovimento, StringBuilder registrosTipoE) { StringBuilder arquivoTXTEnvio = new StringBuilder(); // gera o header do arquivo(registroC�digoA) arquivoTXTEnvio.append("A"); arquivoTXTEnvio.append(Util.completaString(""+ arrecadadorMovimento.getCodigoRemessa(), 1)); arquivoTXTEnvio.append(Util.completaString(arrecadadorMovimento.getCodigoConvenio(), 20)); arquivoTXTEnvio.append(Util.completaString(arrecadadorMovimento.getNomeEmpresa(), 20)); //codigo agente FiltroArrecadador filtroArrecadador = new FiltroArrecadador(); filtroArrecadador.adicionarParametro( new ParametroSimples( FiltroArrecadador.ID, arrecadadorMovimento.getCodigoBanco())); Collection colecaoArrecadador = Fachada.getInstancia().pesquisar(filtroArrecadador, Arrecadador.class.getName()); String codigoAgente = ""; if(!colecaoArrecadador.isEmpty()){ Arrecadador arrecadador = (Arrecadador)Util.retonarObjetoDeColecao(colecaoArrecadador); codigoAgente = arrecadador.getCodigoAgente().toString(); } arquivoTXTEnvio.append(Util.adicionarZerosEsquedaNumero(3, ""+ codigoAgente)); arquivoTXTEnvio.append(Util.completaString(arrecadadorMovimento.getNomeBanco(), 20)); String dataGeracaoArquivo = Util.recuperaAnoMesDiaDaData(arrecadadorMovimento.getDataGeracao()); arquivoTXTEnvio.append(dataGeracaoArquivo); arquivoTXTEnvio.append(Util.adicionarZerosEsquedaNumero(6, ""+ arrecadadorMovimento.getNumeroSequencialArquivo())); arquivoTXTEnvio.append(Util.adicionarZerosEsquedaNumero(2, ""+ arrecadadorMovimento.getNumeroVersaoLayout())); arquivoTXTEnvio.append(Util.completaString(arrecadadorMovimento.getDescricaoIdentificacaoServico(), 17)); arquivoTXTEnvio.append(Util.completaString("", 51)); arquivoTXTEnvio.append("*"); arquivoTXTEnvio.append(System.getProperty("line.separator")); // recupera todos os registros do tipo E arquivoTXTEnvio.append(registrosTipoE); // gera o trailler(registro c�digo "Z") do arquivo de envio arquivoTXTEnvio.append("Z"); arquivoTXTEnvio.append(Util.adicionarZerosEsquedaNumero(6, ""+ arrecadadorMovimento.getNumeroRegistrosMovimento())); String valorSemVirgula = ("" + arrecadadorMovimento.getValorTotalMovimento()).replace(".", ""); arquivoTXTEnvio.append(Util.adicionarZerosEsquedaNumero(17,valorSemVirgula)); arquivoTXTEnvio.append(Util.completaString("", 125)); arquivoTXTEnvio.append("*"); arquivoTXTEnvio.append(System.getProperty("line.separator")); // fim de arquivo - N�O UTILIZADO PELA COSANPA //arquivoTXTEnvio.append("\u0004"); return arquivoTXTEnvio; } /** * [UC0319] Gerar Movimento de D�bito Autom�tico para o banco * * Cria uma linha de 150 posi��es com o registro tipo E. * * * [SB0001] - Gerar Movimento para Debito Autom�tico * * @author S�vio Luiz * @date 20/04/2006 * * @param banco,debitoAutomaticoMovimento * @return StringBuilder * @throws ControladorException */ protected StringBuilder criarRegistroTipoE(Banco banco, DebitoAutomaticoMovimento debitoAutomaticoMovimento, Short tamanhoMaximoIdentificacaoImovel) throws ControladorException { StringBuilder registroTipoE = new StringBuilder(); Conta conta = debitoAutomaticoMovimento.getContaGeral().getConta(); registroTipoE.append("E"); // identifica��o do cliente na empresa String identificacaoCliente = Util.adicionarZerosEsquedaNumeroTruncando(tamanhoMaximoIdentificacaoImovel.intValue(), "" + conta.getImovel().getId()); registroTipoE.append(Util.completaString(identificacaoCliente, 25)); String codigoAgencia = debitoAutomaticoMovimento.getDebitoAutomatico() .getAgencia().getCodigoAgencia(); // agencia para d�bito registroTipoE .append(Util.adicionarZerosEsquedaNumero(4, codigoAgencia)); // Identifica��o do cliente no Banco registroTipoE.append(Util.completaString(debitoAutomaticoMovimento .getDebitoAutomatico().getIdentificacaoClienteBanco(), 14)); // data de vencimento(AAAAMMDD) String dataVencimento = Util.recuperaAnoMesDiaDaData(conta .getDataVencimentoConta()); registroTipoE.append(dataVencimento); // Valor do d�bito BigDecimal valorDebito = new BigDecimal("0.00"); valorDebito = valorDebito.add(conta.getValorAgua()); valorDebito = valorDebito.add(conta.getValorEsgoto()); valorDebito = valorDebito.add(conta.getDebitos()); valorDebito = valorDebito.subtract(conta.getValorCreditos()); /* * Colocado por S�vio Luiz em 31/08/2007 (Analista: Rosana Carvalho) * OBJETIVO: Retirar o valor dos impostos do valor total da conta */ if (conta.getValorImposto() != null) { valorDebito = valorDebito.subtract(conta.getValorImposto()); } String valorDebitoString = ("" + valorDebito).replace(".", ""); registroTipoE.append(Util.adicionarZerosEsquedaNumero(15, valorDebitoString)); // C�digo da moeda registroTipoE.append("03"); // inicio preenchido conforme segue abaixo(E.07) // Ano/M�s de refer�ncia da conta no formato AAAAMM registroTipoE.append(conta.getReferencia()); // Digito verificador da conta registroTipoE.append(conta.getDigitoVerificadorConta()); // Id da conta registroTipoE.append(Util.completaString("" + conta.getId(), 9)); // id do grupo de faturamento registroTipoE.append(Util.completaString("" + debitoAutomaticoMovimento.getFaturamentoGrupo().getId(), 3)); // reservado para o futuro registroTipoE.append(Util.completaString("", 42)); // fim preenchido conforme segue abaixo(E.07) // reservado para o futuro registroTipoE.append(Util.completaString("", 19)); // Tipo do Movimento registroTipoE.append("0"); return registroTipoE; } }