BOLETO CEF - PACOTE ATUAL

533 views
Skip to first unread message

Douglas Tybel

unread,
Sep 20, 2010, 10:28:06 AM9/20/10
to JRimum Community
Olá pessoal,

Peguei a versão v.0.2.2 do bopepo com intenção de mudar meu boleto em
php para Java, contudo não da certo para CAIXA ECONOMICA (unico que
testei), tenho os dados de conta, cedente, mas na hora de comparar a
linha digitável não bate.

Observei que ao criar este simples código abaixo:

Agencia a = new Agencia(0717, "0");
contaBancariaCed.setAgencia(a);

System.out.println(a.getCodigo() );

É retornado 463, porque?, já que instanciei a classe agencia com
0717 ?

Não sei se é por esse motivo que o nosso numero não calcula direito,
mas não da certo de jeito nenhum.

Gostaria de saber onde consigo o pacote mais atual e com exemplo para
testar(se não for pedir muito).

Estou quase desistindo...
Tenho boa experiência em Java, gostaria de contribuir em algum
projeto, se acaso não tiver funcionando esse boleto para caixa, eu me
comprometo em resolver, mas preciso saber como que funciona.

Por favor se alguém tem um pacote atual que funcione boleto para caixa
com exemplo, favor me enviar.

Segue abaixo aplicação:
http://www.java.uni5.net/dist/launch.html

Douglas Tybel
Analista de Sistemas
Engenharia de Softwares
MCP + MCDST
(27) 9937-9892
dty...@facilassim.com.br

Gilmar P.S.L.

unread,
Sep 20, 2010, 10:59:07 AM9/20/10
to jrimum-c...@googlegroups.com
Olá Douglas,

Não desista, nem tudo está perdido!

O problema com o seu código é facilmente reproduzido fazendo-se o seguinte:

        Integer inteiro = 0717;
        System.out.println(inteiro);
        //saída = 463

Isso por que vc está tratando de um número octal quando coloca o zero na frente, ou seja, vc está atribuído o valor 463 expresso em octal. Veja mais em (http://download.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html). Não é um equivoco raro entre programadores java,...,

Agora, quanto a versão,...
A lib 0.2.2 implementa a cobrança "SINCO" da caixa, se vc quiser a versão atual, aqui no grupo tem o link:

http://jrimum-community.googlegroups.com/web/JRimum-Bopepo-SNAPSHOT-20100805.jar

Essa versão implementa as cobranças dos serviços:

  • SINCO, cobrança Sem e Com Registro (Nosso Número de 17 posições)
  • SIGCB, cobrança Sem e Com Registro (Nosso Número de 15 posições)
  • SICOB, cobrança Rápida e Sem Registro (Nosso Número 11 posições)
Qualquer coisa é só falar que estamos aqui para ajudar.

Att,
--
Gilmar P.S.L.
JRimum Developer
      
http://www.jrimum.org
http://www.blog.jrimum.org




2010/9/20 Douglas Tybel <dty...@gmail.com>

--
Você está recebendo esta mensagem porque se inscreveu no grupo "JRimum Community" dos Grupos do Google.
Para postar neste grupo, envie um e-mail para jrimum-c...@googlegroups.com.
Para cancelar a inscrição nesse grupo, envie um e-mail para jrimum-communi...@googlegroups.com.
Para obter mais opções, visite esse grupo em http://groups.google.com/group/jrimum-community?hl=pt-BR.


Gilmar P.S.L.

unread,
Sep 20, 2010, 11:10:45 AM9/20/10
to jrimum-c...@googlegroups.com
Ah,

Esqueci de colocar o exemplo,...

O Exemplo exato para a geração de boleto na versão 0.2.2 vc vê em:

http://jrimum.org/bopepo/wiki/Componente/Documentacao/Tutoriais/GeracaoDeBoletoPadrao

T+

--
Gilmar P.S.L.
JRimum Developer
      
http://www.jrimum.org
http://www.blog.jrimum.org




2010/9/20 Gilmar P.S.L. <gilm...@gmail.com>

Douglas Tybel

unread,
Sep 20, 2010, 12:28:55 PM9/20/10
to JRimum Community
Olá Gilmar,

Obrigado pela atenção, não sabia que vocês eram tão participativos.
A primeira dica sua foi certeira, me desculpe por essa inocência.

Já o SNAPSHOT-2... que me passou, adicionei nas bibliotecas e removi
o anterior da versão 0.2.2, contudo o pacote muda de br.com. para
org.jrimum e não tem todas as classes para adicionar.

Não entendo, pois seu exemplo direciona para br.com e o pacote que
mandou direciona para org.jrimum.

O que estou fazendo de errado ?
Não deveria ser tão complicado a implementação!

Tem um exemplo para o pacote acima: JRimum-Bopepo-
SNAPSHOT-20100805.jar ?




On 20 set, 12:10, "Gilmar P.S.L." <gilmat...@gmail.com> wrote:
> Ah,
>
> Esqueci de colocar o exemplo,...
>
> O Exemplo exato para a geração de boleto na versão 0.2.2 vc vê em:
>
> http://jrimum.org/bopepo/wiki/Componente/Documentacao/Tutoriais/Gerac...
>
> T+
> --
> Gilmar P.S.L.
> *JR**i*mum *D**ev*eloper
>
> http://www.jrimum.orghttp://www.blog.jrimum.org
>
> 2010/9/20 Gilmar P.S.L. <gilmat...@gmail.com>
>
> > Olá Douglas,
>
> > Não desista, nem tudo está perdido!
>
> > O problema com o seu código é facilmente reproduzido fazendo-se o seguinte:
>
> >         Integer inteiro = 0717;
> >         System.out.println(inteiro);
> >         //saída = 463
>
> > Isso por que vc está tratando de um número octal quando coloca o zero na
> > frente, ou seja, vc está atribuído o valor 463 expresso em octal. Veja mais
> > em (
> >http://download.oracle.com/javase/tutorial/java/nutsandbolts/datatype...).
> > Não é um equivoco raro entre programadores java,...,
>
> > Agora, quanto a versão,...
> > A lib 0.2.2 implementa a cobrança "SINCO" da caixa, se vc quiser a versão
> > atual, aqui no grupo tem o link:
>
> >http://jrimum-community.googlegroups.com/web/JRimum-Bopepo-SNAPSHOT-2...
>
> > Essa versão implementa as cobranças dos serviços:
>
> >    - SINCO, cobrança Sem e Com Registro (Nosso Número de 17 posições)
> >    - SIGCB, cobrança Sem e Com Registro (Nosso Número de 15 posições)
> >    - SICOB, cobrança Rápida e Sem Registro (Nosso Número 11 posições)
>
> > Qualquer coisa é só falar que estamos aqui para ajudar.
>
> > Att,
> > --
> > Gilmar P.S.L.
> > *JR**i*mum *D**ev*eloper
> >> jrimum-communi...@googlegroups.com<jrimum-community%2Bunsu...@googlegroups.com>
> >> .

Gilmar P.S.L.

unread,
Sep 20, 2010, 1:07:51 PM9/20/10
to jrimum-c...@googlegroups.com
Valeu Douglas,

É isso mesmo, estamos aqui para colaborar,...
Mas olha só, esse snapshot segue os objetivos descritos no roadmap:

http://jrimum.org/jrimum/milestone/0.2-Helio

Um deles é a mudança de pacotes de br.com.nordestefomento para org.jrimum

Veja a classe boleto no momento atual:

http://jrimum.org/bopepo/browser/branches/0.2-Helio/src/main/java/org/jrimum/bopepo/Boleto.java

Além disso algumas pequenas mudanças realmente foram feitas, é o que chamamos de "pequenos refactorings".

Resumindo, o que vc precisa fazer é mudar tudo para org.jrimum.*;

Caso vc não encontre alguma classe ou não consiga decidir qual usar, é só falar que a gente resolve.

T+
--
Gilmar P.S.L.
JRimum Developer
      
http://www.jrimum.org
http://www.blog.jrimum.org




2010/9/20 Douglas Tybel <dty...@gmail.com>
Para cancelar a inscrição nesse grupo, envie um e-mail para jrimum-communi...@googlegroups.com.

Douglas Tybel

unread,
Sep 21, 2010, 8:16:32 PM9/21/10
to JRimum Community
Olá Gilmar,

Segui o recomendado, e agora consegui emitir, a linha digitável não
bate com o meu que funciona corretamente( em php).

Linha correta do meu programa:
10492.06921 88004.200346 00000.177717 1 47000000011430

Linha do Bopepo:
10491.00066 78924.004001 30000.017779 3 47000000011430

Bibliotecas:
Bopepo - SNAPSHOT-20100805
commons-lang-2.4
iText-2.0.8
log4j-1.2.15

Segue baixo dados:
LINHA DIGITAVEL
10492.06921 88004.200346 00000.177717 1 47000000011430

Nosso número
24004003000001777-2

Vencimento
20/08/2010

VALOR
114,30

NUM CONTA
nao posso divulgar

AGENCIA
0717-0

CARTEIRA
24

CEDENTE
nao posso divulgar

BANCO
104


Segue abaixo o código que estou usando:


try {
// TODO add your handling code here:
/*
* INFORMANDO DADOS SOBRE O CEDENTE.
*/
Cedente cedente = new Cedente("PROJETO JRimum",
"00.000.208/0001-00");
// Informando dados sobre a conta bancária do cendente.
Banco banco =
BancoSuportado.CAIXA_ECONOMICA_FEDERAL.create();
ContaBancaria contaBancariaCed = new ContaBancaria(banco);
contaBancariaCed.setBanco(banco);
contaBancariaCed.setNumeroDaConta(new NumeroDaConta(678,
"8"));
contaBancariaCed.setCarteira(new Carteira(24,
TipoDeCobranca.SEM_REGISTRO));
contaBancariaCed.setModalidade(new Modalidade(4));
contaBancariaCed.setAgencia(new Agencia(717, "0"));
cedente.addContaBancaria(contaBancariaCed);
/*
* INFORMANDO DADOS SOBRE O SACADO.
*/
Sacado sacado = new Sacado("JavaDeveloper Pronto Para
Férias", "222.222.222-22");
// Informando o endereço do sacado.
Endereco enderecoSac = new Endereco();
enderecoSac.setUF(UnidadeFederativa.ES);
enderecoSac.setLocalidade("Natal");
enderecoSac.setCep(new CEP("59064-120"));
enderecoSac.setBairro("Grande Centro");
enderecoSac.setLogradouro("Rua poeta dos programas");
enderecoSac.setNumero("1");
sacado.addEndereco(enderecoSac);
/*
* INFORMANDO DADOS SOBRE O SACADOR AVALISTA.
*/
Pessoa sacadorAvalista = new Pessoa("Nordeste Fomento
Mercantil", "00.000.000/0001-91");
// Informando o endereço do sacador avalista.
Endereco enderecoSacAval = new Endereco();
enderecoSacAval.setUF(UnidadeFederativa.ES);
enderecoSacAval.setLocalidade("Brasília");
enderecoSacAval.setCep(new CEP("00000-000"));
enderecoSacAval.setBairro("Grande Centro");
enderecoSacAval.setLogradouro("Rua Eternamente
Principal");
enderecoSacAval.setNumero("001");
sacadorAvalista.addEndereco(enderecoSacAval);
/*
* INFORMANDO OS DADOS SOBRE O TÍTULO.
*/
Titulo titulo = new Titulo(contaBancariaCed, sacado,
cedente);
titulo.setNumeroDoDocumento("1777");
titulo.setNossoNumero("24004003000001777");
titulo.setDigitoDoNossoNumero("2");
titulo.setValor(BigDecimal.valueOf(114.30));
titulo.setDataDoDocumento(new Date());

titulo.setDataDoVencimento(funcoes.getDataFormatBR("20/08/2010"));

titulo.setTipoDeDocumento(TipoDeTitulo.DM_DUPLICATA_MERCANTIL);
titulo.setAceite(EnumAceite.A);
titulo.setDesconto(new BigDecimal(0.00));
/*
* INFORMANDO MAIS DADOS BANCÁRIOS, QUANDO NECESSÁRIO.
* Dependendo do banco, talvez seja necessário informar
mais dados além de:
*
* > Valor do título;
* > Vencimento;
* > Nosso número;
* > Código do banco
* > Data de vencimento;
* > Agência/Código do cedente;
* > Código da carteira;
* > Código da moeda;
*
* Definidos como padrão pela FEBRABAN.
* Verifique na documentação.
*/
//titulo.setDadosBancarios(new DadoBancario(){}); doug
comentou
/*
* INFORMANDO OS DADOS SOBRE O BOLETO.
*/
Boleto boleto = new Boleto(titulo);
boleto.setLocalPagamento("Pagável preferencialmente na
Rede X ou em " + "qualquer Banco até o Vencimento.");
boleto.setInstrucaoAoSacado("Senhor sacado, sabemos sim
que o valor " + "cobrado não é o esperado, aproveite o DESCONTÃO!");
boleto.setInstrucao1("PARA PAGAMENTO 1 até Hoje não cobrar
nada!");
boleto.setInstrucao2("PARA PAGAMENTO 2 até Amanhã Não
cobre!");
boleto.setInstrucao3("PARA PAGAMENTO 3 até Depois de
amanhã, OK, não cobre.");
boleto.setInstrucao4("PARA PAGAMENTO 4 até 04/xx/xxxx de 4
dias atrás " + "COBRAR O VALOR DE: R$ 01,00");
boleto.setInstrucao5("PARA PAGAMENTO 5 até 05/xx/xxxx
COBRAR O VALOR " + "DE: R$ 02,00");
boleto.setInstrucao6("PARA PAGAMENTO 6 até 06/xx/xxxx
COBRAR O VALOR " + "DE: R$ 03,00");
boleto.setInstrucao7("PARA PAGAMENTO 7 até xx/xx/xxxx
COBRAR O VALOR " + "QUE VOCÊ QUISER!");
boleto.setInstrucao8("APÓS o Vencimento, Pagável Somente
na Rede X.");
/*
* GERANDO O BOLETO BANCÁRIO.
*/
// Instanciando um objeto "BoletoViewer", classe
responsável pela geração
// do boleto bancário.
BoletoViewer boletoViewer = new BoletoViewer(boleto);
// Gerando o arquivo. No caso o arquivo mencionado será
salvo na mesma
// pasta do projeto. Outros exemplos:
// WINDOWS: boletoViewer.getAsPDF("C:/Temp/
MeuBoleto.pdf");
// LINUX: boletoViewer.getAsPDF("/home/temp/
MeuBoleto.pdf");
File arquivoPdf =
boletoViewer.getPdfAsFile("MeuPrimeiroBoleto.pdf");
// Mostrando o boleto gerado na tela.
mostreBoletoNaTela(arquivoPdf);
} catch (ParseException ex) {

Logger.getLogger(JbopepoView.class.getName()).log(Level.SEVERE, null,
ex);

}




On 20 set, 14:07, "Gilmar P.S.L." <gilmat...@gmail.com> wrote:
> Valeu Douglas,
>
> É isso mesmo, estamos aqui para colaborar,...
> Mas olha só, esse snapshot segue os objetivos descritos no roadmap:
>
> http://jrimum.org/jrimum/milestone/0.2-Helio
>
> Um deles é a mudança de pacotes de *br.com.nordestefomento* para *org.jrimum
> *
>
> Veja a classe boleto no momento atual:
>
> http://jrimum.org/bopepo/browser/branches/0.2-Helio/src/main/java/org...
>
> Além disso algumas pequenas mudanças realmente foram feitas, é o que
> chamamos de "pequenos refactorings".
>
> Resumindo, o que vc precisa fazer é mudar tudo para *org.jrimum.*;*
>
> Caso vc não encontre alguma classe ou não consiga decidir qual usar, é só
> falar que a gente resolve.
>
> T+
> --
> Gilmar P.S.L.
> > > >> jrimum-communi...@googlegroups.com<jrimum-community%2Bunsubscrib­e...@googlegroups.com>
> > <jrimum-community%2Bunsu...@googlegroups.com<jrimum-community%252Bunsub­scr...@googlegroups.com>
>
> > > >> .
> > > >> Para obter mais opções, visite esse grupo em
> > > >>http://groups.google.com/group/jrimum-community?hl=pt-BR.
>
> > --
> > Você está recebendo esta mensagem porque se inscreveu no grupo "JRimum
> > Community" dos Grupos do Google.
> > Para postar neste grupo, envie um e-mail para
> > jrimum-c...@googlegroups.com.
> > Para cancelar a inscrição nesse grupo, envie um e-mail para
> > jrimum-communi...@googlegroups.com<jrimum-community%2Bunsubscrib­e...@googlegroups.com>
> > .
> > Para obter mais opções, visite esse grupo em
> >http://groups.google.com/group/jrimum-community?hl=pt-BR.- Ocultar texto das mensagens anteriores -
>
> - Mostrar texto das mensagens anteriores -

Gilmar P.S.L.

unread,
Sep 22, 2010, 12:22:48 AM9/22/10
to jrimum-c...@googlegroups.com
Olá Douglas,

É isso aí cara, estamos quase lá..

Pela linha digitável do boleto (em php) que vc mandou, o serviço que vc utiliza é o SIGCB, que tem o nosso número com 15 dígitos do cedente.
Então para gerar o boleto pelo bopepo vc tem que tirar os dois primeiro dígitos do seu exemplo ( número 24 do início). então fica assim:

titulo.setNossoNumero("004003000001777");
titulo.setDigitoDoNossoNumero("2");

Se vc setar o número real da conta vc deve chegar a uma linha digitável igual a gerada pelo seu boleto em php.

Dessa forma tudo será calculado direitinho, mas vc pode estar se perguntando, por que tirar o número 24 do nosso número? Bom, isso acontece porque para o banco o que vale é o nosso número do cedente: "004003000001777".

Mas para a impressão do boleto vc deve mostrar o número completo como manda o banco:

XYNNNNNNNNNNNNNNN-D, onde:

 

X                                              -Modalidade Cobrança (1-Registrada/2-Sem Registro)

Y                                              -Emissão do bloqueto (4-cedente)

NNNNNNNNNNNNNNN              -Nosso Número (15 posições livres do Cedente)

D                                             -Dígito verificador

 

Então, para sair legal no PDF vc deve sobrescrever o campo nosso número também:

boleto.addTextosExtras("txtRsNossoNumero", "24"+titulo.getNossoNumero()+titulo.getDigitoDoNossoNumero());
boleto.addTextosExtras("txtFcNossoNumero", "24"+titulo.getNossoNumero()+titulo.getDigitoDoNossoNumero());


T+.
Qualquer coisa estamos aí.

Douglas Tybel

unread,
Sep 22, 2010, 9:09:43 AM9/22/10
to JRimum Community
Olá Gilmar,

Graças a você não desisti.
Com suas orientações finais consegui fazer tudo certinho, a linha
digitável bateu que foi uma maravilha!
Uma coisa interessante que não achei foi o dígito do nosso numero, mas
ai peguei a função em php que tinha e transportei para o java, chamei-
a de getMod11.

Gostaria de saber se tem como publicar ai como exemplo para caixa,
pois parece mais difícil.

Segue meu código:

Separei em uma função para chamar o pdf:

private static void mostreBoletoNaTela(File arquivoBoleto) {

java.awt.Desktop desktop =
java.awt.Desktop.getDesktop();

try {
desktop.open(arquivoBoleto);

} catch (IOException e) {

e.printStackTrace();
}

}


Calcular o dígito do nosso numero da caixa, é o módulo 11 com base
9,1, nos comentarios existe exemplo de uso:

public static int getMod11(String num, int base, int r){
/**
* Autor:
* Douglas Tybel <dty...@yahoo.com.br>
*
* Função:
* Calculo do Modulo 11 para geracao do digito verificador
* de boletos bancarios conforme documentos obtidos
* da Febraban - www.febraban.org.br
*
* Entrada:
* $num: string numérica para a qual se deseja calcularo
digito verificador;
* $base: valor maximo de multiplicacao [2-$base]
* $r: quando especificado um devolve somente o resto
*
* Saída:
* Retorna o Digito verificador.
*
* Observações:
* - Script desenvolvido sem nenhum reaproveitamento de código
existente.
* - Script original de Pablo Costa
<pa...@users.sourceforge.net>
* - Transportado de php para java
* - Exemplo de uso: getMod11(nossoNumero, 9,1)
* - 9 e 1 são fixos de acordo com a base
* - Assume-se que a verificação do formato das variáveis de
entrada é feita antes da execução deste script.
*/
base = 9;
r = 0;

int soma = 0;
int fator = 2;
String[] numeros,parcial;
numeros = new String[num.length()+1];
parcial = new String[num.length()+1];

/* Separacao dos numeros */
for (int i = num.length(); i > 0; i--) {
// pega cada numero isoladamente
numeros[i] = num.substring(i-1,i);
// Efetua multiplicacao do numero pelo falor
parcial[i] = String.valueOf(Integer.parseInt(numeros[i]) *
fator);
// Soma dos digitos
soma += Integer.parseInt(parcial[i]);
if (fator == base) {
// restaura fator de multiplicacao para 2
fator = 1;
}
fator++;

}

/* Calculo do modulo 11 */
if (r == 0) {
soma *= 10;
int digito = soma % 11;
if (digito == 10) {
digito = 0;
}
return digito;
} else {
int resto = soma % 11;
return resto;
}
}


Função para formatar a data:

public static Date getDataFormatBR(String data) throws
ParseException, java.text.ParseException{
if (!data.equals(" / / ")){
//Formatar data
SimpleDateFormat formato = new SimpleDateFormat("dd/MM/
yyyy");
return formato.parse(data);
}else{
return null;
}


}


Código que gera o boleto funcional e testado para CEF:

try {
// TODO add your handling code here:
/*
* INFORMANDO DADOS SOBRE O CEDENTE.
*/
Cedente cedente = new Cedente("PROJETO
JRimum","00.000.208/0001-00");
// Informando dados sobre a conta bancária do cendente.
Banco banco =
BancoSuportado.CAIXA_ECONOMICA_FEDERAL.create();
ContaBancaria contaBancariaCed = new ContaBancaria(banco);
contaBancariaCed.setBanco(banco);
//Alterar o numero da conta para codigo do cedente em caso
da CEF
contaBancariaCed.setNumeroDaConta(new
NumeroDaConta(123456,"0"));
contaBancariaCed.setCarteira(new
Carteira(24,TipoDeCobranca.SEM_REGISTRO));
contaBancariaCed.setModalidade(new Modalidade(4));
contaBancariaCed.setAgencia(new Agencia(717, "0")); //não
usar zero antes do numero da agencia erro 463
cedente.addContaBancaria(contaBancariaCed);
/*
* INFORMANDO DADOS SOBRE O SACADO.
*/
Sacado sacado = new Sacado("JavaDeveloper Pronto
ParaFérias", "222.222.222-22");
// Informando o endereço do sacado.
Endereco enderecoSac = new Endereco();
enderecoSac.setUF(UnidadeFederativa.ES);
enderecoSac.setLocalidade("Natal");
enderecoSac.setCep(new CEP("59064-120"));
enderecoSac.setBairro("Grande Centro");
enderecoSac.setLogradouro("Rua poeta dos programas");
enderecoSac.setNumero("1");
sacado.addEndereco(enderecoSac);
/*
* INFORMANDO DADOS SOBRE O SACADOR AVALISTA.
*/
Pessoa sacadorAvalista = new Pessoa("Nordeste
FomentoMercantil", "00.000.000/0001-91");
// Informando o endereço do sacador avalista.
Endereco enderecoSacAval = new Endereco();
enderecoSacAval.setUF(UnidadeFederativa.ES);
enderecoSacAval.setLocalidade("Brasília");
enderecoSacAval.setCep(new CEP("00000-000"));
enderecoSacAval.setBairro("Grande Centro");
enderecoSacAval.setLogradouro("Rua EternamentePrincipal");
enderecoSacAval.setNumero("001");
sacadorAvalista.addEndereco(enderecoSacAval);
/*
* INFORMANDO OS DADOS SOBRE O TÍTULO.
*/
Titulo titulo = new Titulo(contaBancariaCed,
sacado,cedente);
titulo.setNumeroDoDocumento("781");
//SIGCB 15 digitos
titulo.setNossoNumero("270005000000781");//O digito
correto é o numero 2 calculado em cima de 24270005000000781

titulo.setDigitoDoNossoNumero( String.valueOf( getMod11( contaBancariaCed.getCarteira().getCodigo().toString()
+ titulo.getNossoNumero().toString() , 9, 1) ) );
titulo.setValor(BigDecimal.valueOf(100.00));
titulo.setDataDoDocumento(new Date());


titulo.setDataDoVencimento(funcoes.getDataFormatBR("20/11/2010"));


titulo.setTipoDeDocumento(TipoDeTitulo.DM_DUPLICATA_MERCANTIL);
titulo.setAceite(EnumAceite.A);
titulo.setDesconto(new BigDecimal(0.00));
/*
* INFORMANDO MAIS DADOS BANCÁRIOS, QUANDO NECESSÁRIO.
* Dependendo do banco, talvez seja necessário
informarmais dados além de:
*
* > Valor do título;
* > Vencimento;
* > Nosso número;
* > Código do banco
* > Data de vencimento;
* > Agência/Código do cedente;
* > Código da carteira;
* > Código da moeda;
*
* Definidos como padrão pela FEBRABAN.
* Verifique na documentação.
*/
//titulo.setDadosBancarios(new DadoBancario(){});
dougcomentou
/*
* INFORMANDO OS DADOS SOBRE O BOLETO.
*/
Boleto boleto = new Boleto(titulo);

boleto.addTextosExtras("txtRsNossoNumero",
contaBancariaCed.getCarteira().getCodigo().toString()
+titulo.getNossoNumero()+titulo.getDigitoDoNossoNumero());
boleto.addTextosExtras("txtFcNossoNumero",
contaBancariaCed.getCarteira().getCodigo().toString()
+titulo.getNossoNumero()+titulo.getDigitoDoNossoNumero());

boleto.setLocalPagamento("Pagável preferencialmente naRede
X ou em " + "qualquer Banco até o Vencimento.");
boleto.setInstrucaoAoSacado("Senhor sacado, sabemos simque
o valor " + "cobrado não é o esperado, aproveite o DESCONTÃO!");
boleto.setInstrucao1("PARA PAGAMENTO 1 até Hoje não
cobrarnada!");
boleto.setInstrucao2("PARA PAGAMENTO 2 até Amanhã
Nãocobre!");
boleto.setInstrucao3("PARA PAGAMENTO 3 até Depois
deamanhã, OK, não cobre.");
boleto.setInstrucao4("PARA PAGAMENTO 4 até 04/xx/xxxx de
4dias atrás " + "COBRAR O VALOR DE: R$ 01,00");
boleto.setInstrucao5("PARA PAGAMENTO 5 até 05/xx/
xxxxCOBRAR O VALOR " + "DE: R$ 02,00");
boleto.setInstrucao6("PARA PAGAMENTO 6 até 06/xx/
xxxxCOBRAR O VALOR " + "DE: R$ 03,00");
boleto.setInstrucao7("PARA PAGAMENTO 7 até xx/xx/
xxxxCOBRAR O VALOR " + "QUE VOCÊ QUISER!");
boleto.setInstrucao8("APÓS o Vencimento, Pagável Somentena
Rede X.");
/*
* GERANDO O BOLETO BANCÁRIO.
*/
// Instanciando um objeto "BoletoViewer",
classeresponsável pela geração
// do boleto bancário.
BoletoViewer boletoViewer = new BoletoViewer(boleto);
// Gerando o arquivo. No caso o arquivo mencionado
serásalvo na mesma
// pasta do projeto. Outros exemplos:
// WINDOWS: boletoViewer.getAsPDF("C:/Temp/
MeuBoleto.pdf");
// LINUX: boletoViewer.getAsPDF("/home/temp/
MeuBoleto.pdf");
File arquivoPdf
=boletoViewer.getPdfAsFile("MeuPrimeiroBoleto.pdf");
// Mostrando o boleto gerado na tela.
mostreBoletoNaTela(arquivoPdf);

} catch (ParseException ex) {

Logger.getLogger(AppLabView.class.getName()).log(Level.SEVERE,
null,ex);

}



Douglas Tybel
Analista de Sistemas
Engenharia de Softwares
MCP + MCDST
dty...@facilassim.com.br
27 9937-9892

On 22 set, 01:22, "Gilmar P.S.L." <gilmat...@gmail.com> wrote:
> Olá Douglas,
>
> É isso aí cara, estamos quase lá..
>
> Pela linha digitável do boleto (em php) que vc mandou, o serviço que vc
> utiliza é o SIGCB, que tem o nosso número com 15 dígitos do cedente.
> Então para gerar o boleto pelo bopepo vc tem que tirar os dois primeiro
> dígitos do seu exemplo ( número 24 do início). então fica assim:
>
> titulo.setNossoNumero(*"004003000001777"*);
> titulo.setDigitoDoNossoNumero(*"2"*);
>
> Se vc setar o número real da conta vc deve chegar a uma linha digitável
> igual a gerada pelo seu boleto em php.
>
> Dessa forma tudo será calculado direitinho, mas vc pode estar se
> perguntando, por que tirar o número 24 do nosso número? Bom, isso acontece
> porque para o banco o que vale é o nosso número do cedente: *"004003000001777".
>
> *Mas para a impressão do boleto vc deve mostrar o número completo como manda
> o banco:
>
> *XYNNNNNNNNNNNNNNN-D*, onde:
>
> *X                                              *-Modalidade Cobrança
> (1-Registrada/2-Sem Registro)
>
> *Y                                              *-Emissão do bloqueto
> (4-cedente)
>
> *NNNNNNNNNNNNNNN*              -Nosso Número (15 posições livres do Cedente)
>
> *D                                             *-Dígito verificador
>
> Então, para sair legal no PDF vc deve sobrescrever o campo nosso número
> também:
>
> boleto.addTextosExtras("txtRsNossoNumero", "*24*"
> +titulo.getNossoNumero()+titulo.getDigitoDoNossoNumero());
> boleto.addTextosExtras("txtFcNossoNumero", "*24*"
> +titulo.getNossoNumero()+titulo.getDigitoDoNossoNumero());
>
> T+.
> Qualquer coisa estamos aí.
> --
> Gilmar P.S.L.

Gilmar P.S.L.

unread,
Sep 22, 2010, 9:22:56 PM9/22/10
to jrimum-c...@googlegroups.com
Opa, Valeu Douglas,

Tem como publicar sim, pode deixar que adaptaremos seu código para se tornar o exemplo dessa cobrança da caixa.

Parabéns e valeu pela contribuição.

--
Gilmar P.S.L.
JRimum Developer
      
http://www.jrimum.org
http://www.blog.jrimum.org




2010/9/22 Douglas Tybel <dty...@gmail.com>
--
Você está recebendo esta mensagem porque se inscreveu no grupo "JRimum Community" dos Grupos do Google.
Para postar neste grupo, envie um e-mail para jrimum-c...@googlegroups.com.
Para cancelar a inscrição nesse grupo, envie um e-mail para jrimum-communi...@googlegroups.com.

Douglas Tybel - GMail

unread,
Sep 22, 2010, 9:59:57 PM9/22/10
to jrimum-c...@googlegroups.com
Mandei um mini projeto apenas com o exemplo para os arquivos do grupo.
 

Douglas Tybel
__________________________________________
Analista de Sistemas
Engenharia de Sistemas
MCP + MCDST
(27)9937-9892

Douglas Tybel

unread,
Sep 23, 2010, 4:59:27 PM9/23/10
to JRimum Community
Gilmar,

Está acontecendo uma coisa estranha aqui, não sei se vc sabe o que
pode ser.

Eu construo minha app para java web start, e ela assina os jar. O
problema é quando eu uso o bopepo, ao abrir na WEB emite erro dizendo
que os jar não foram assinados pela mesma fonte, quando removo o
bopepo funciona normal, vc sabe se o JRimum-Bopepo-
SNAPSHOT-20100805.jar foi assinado ? ou algo assim ?

Douglas Tybel
__________________________________________
Analista de Sistemas
Engenharia de Sistemas
MCP + MCDST
(27)9937-9892

On 22 set, 22:22, "Gilmar P.S.L." <gilmat...@gmail.com> wrote:
> Opa, Valeu Douglas,
>
> Tem como publicar sim, pode deixar que adaptaremos seu código para se tornar
> o exemplo dessa cobrança da caixa.
>
> Parabéns e valeu pela contribuição.
> --
> Gilmar P.S.L.
> *JR**i*mum *D**ev*eloper
>
> http://www.jrimum.orghttp://www.blog.jrimum.org
>
> ...
>
> mais »

Gilmar P.S.L.

unread,
Sep 23, 2010, 5:07:16 PM9/23/10
to jrimum-c...@googlegroups.com
Douglas,

Não, principalmente esse jar. Os jars da sua aplicação são assinados?


--
Gilmar P.S.L.
JRimum Developer
      
http://www.jrimum.org
http://www.blog.jrimum.org




2010/9/23 Douglas Tybel <dty...@gmail.com>

--

Rômulo Augusto

unread,
Sep 24, 2010, 7:20:31 AM9/24/10
to jrimum-c...@googlegroups.com
Opa Douglas! Pelo que eu sei, você precisa assinar os JARs da sua aplicação e todas as suas dependências.


-------------------------------------------------------------------
Rômulo Augusto
JRimum Developer
www.jrimum.org

Douglas Tybel

unread,
Sep 24, 2010, 9:43:29 PM9/24/10
to JRimum Community
Olá pessoal,

Descobri o problema é no jar: iText-2.0.8.jar ele não assina de jeito
nenhum, talvez manualmente por código, mas pelo NetBeans no auto-
assinavel das propriedades do projeto configurando para JWS não deu.

Mudei para a versão iText-2.1.5.jar e deu certo.

Obrigado.

Conclusão: iText-2.0.8.jar NÃO ASSINA PARA JWS.

Douglas Tybel
__________________________________________
Analista de Sistemas
Engenharia de Sistemas
MCP + MCDST
(27)9937-9892

On 24 set, 08:20, Rômulo Augusto <romulom...@gmail.com> wrote:
> Opa Douglas! Pelo que eu sei, você precisa assinar os JARs da sua aplicação
> e todas as suas dependências.
>
> -------------------------------------------------------------------
> Rômulo Augusto
> *JRimum **Developer*www.jrimum.org
>
> Em 23 de setembro de 2010 18:07, Gilmar P.S.L. <gilmat...@gmail.com>escreveu:
>
>
>
> > Douglas,
>
> > Não, principalmente esse jar. Os jars da sua aplicação são assinados?
>
> > --
> > Gilmar P.S.L.
> > *JR**i*mum *D**ev*eloper
> ...
>
> mais »- Ocultar texto das mensagens anteriores -
Reply all
Reply to author
Forward
0 new messages