Desenvolvimento de componente para
geração de boletos bancários
personalizável e extensível
Aluno: Misael Barreto de Queiroz
Orientadora: Cláudia Ribeiro
BOPEPO
CEFET-RN
Departamento Acadêmico de Informática
Tecnologia em Desenvolvimento de Software
Sumário






Motivação
Boleto bancário
O componente BOPEPO
Trabalhos futuros
Bibliografia
Agradecimentos
Motivação
 Poucas soluções disponíveis
 Gratuita em JAVA apenas uma - JBoleto.
 JBoleto - Expectativas não atendidas,
devido a(o):
 Documentação escassa;
 Design de classes não flexível, impedindo
reusabilidade;
 Não possibilidade de personalizar o layout
do boleto;
 Não possibilidade de estender a
funcionalidade do componente.
Motivação
 O que é personalizar layout?
 É adaptar o conteúdo do boleto às
necessidades do seu emissor;
 Com Bopepo, o usuário a “mão-livre”
pode:




Definir imagens;
Definir texto;
Alterar a disposição das informações;
Adicionar novas informações, sejam elas
estáticas ou dinâmicas.
Motivação
 O que é estender a funcionalidade?
 É o recurso que permite ao usuário
utilizar o componente mesmo nos casos
em que o banco e/ou campo livre de
determinado banco não sejam
suportados;
 Bastante útil considerando que o
universo de bancos e suas regras para
confecção de boletos é bastante vasto e
crescente.
Boleto bancário
 Trata-se de um documento que
representa um título de cobrança.
 Título de cobrança pode ser do
tipo: duplicata, nota promissória,
recibo, bilhete, nota de seguro ente
outros.
 Sua confecção deve seguir as
instruções impostas pela FEBRABAN.
Boleto bancário
Basicamente, para que possam ser
realizadas cobranças através de boletos
três elementos são necessários:
 Banco: responsável pela cobrança;
 Cedente: emissor da cobrança(boleto), ou
seja, aquele que irá receber a quantia
cobrada;
 Sacado: aquele que paga o boleto;
Boleto bancário
O boleto é dividido em duas partes:
 Recibo do sacado
 Ficha de compensação
Boleto bancário
(Recibo do sacado)
 É o comprovante de pagamento;
 O layout é de responsabilidade do cedente,
contudo alguns campos são obrigatórios:






Nome do cedente;
Agência / Código do cedente;
Valor do título;
Vencimento;
Nosso número;
Nome do sacado.
 Os campos obrigatórios também devem
constar na ficha de compensação.
Boleto bancário
(Ficha de compensação)
 Parte do boleto que fica em poder do banco
quando o boleto é pago, para que seja
encaminhada para a compensação
bancária.
 Dimensões pré-definidas pela FEBRABAN;
 Subdividida em 3 partes:
 Parte superior;
 Quadro de Impressão;
 Parte inferior;
Boleto bancário
(Ficha de compensação)

Parte superior




Quadro de Impressão: Deve conter diversos campos, tendo como
campos de preenchimento obrigatório:









Nome do banco ou logotipo;
Código de compensação do banco e o seu dígito verificador;
Linha digitável.
Local de pagamento;
Data de vencimento;
Cedente (nome);
Agência / Código do cedente;
Data do processamento;
Nosso número;
Valor do documento;
Sacado (nome e endereço completo).
Parte inferior


Código de barras;
Campo destinado à autenticação mecânica.
Boleto bancário
(Código de barras)

Tipo: O código de barras deve ser do tipo "2 de 5" intercalado, que
significa que 5 barras definem 1 caractere, sendo que duas delas
são barras largas. O termo "intercalado" significa que os espaços
entre as barras também têm significado, de maneira análoga às
barras. A distância mínima entre a margem inferior e o centro do
código de barras deve ser de 12mm.

Dimensões: O código de barras deve ter altura de 13mm. De
acordo com o padrão “2 de 5” o código de barras deve apresentar
a largura de 103mm, pois essa é a dimensão que os equipamentos
dos bancos estão calibrados para efetuar a leitura.

Zona de silêncio: É o espaço entre a margem esquerda do boleto e
o início da impressão do código de barras, que deve ser de 5mm.
O código de barras é composto, no seu lado esquerdo, por “barras
de start”, que indicam para o sistema que ali se inicia a leitura e,
no seu final, por “barras de stop”, indicando o final da leitura.
Boleto bancário
(Código de barras)
Composição
Posição
Tamanho
01-03
3
Identificação do banco
04-04
1
Código da moeda (9-Real)
05-05
1
Dígito verificador do código de barras(DV)
06-09
4
Fator de vencimento
10-19
10
Valor nominal do título
25
Campo livre
Utilizado de acordo com a especificação interna
do banco emissor.
20-44
Conteúdo
Boleto bancário
(Código de barras)
Composição
 Campo livre
 Contém informações sobre o cedente, para que
a instituição financeira possa transferir para ele,
de forma correta o valor pago pelo sacado.
 Sua composição varia de banco
para banco, logo se faz necessário entrar em
contato com cada banco para obter os manuais
de instrução.
Boleto bancário
(Código de barras)
Composição
 Campo livre (exemplo)
Posição
Tamanho
Conteúdo
20-23
4
Código da agência (sem dígito)
24-25
2
Código da carteira
26-36
11
Nosso número (sem dígito)
37-43
7
Conta do cedente (sem dígito)
44-44
1
Zero fixo
Boleto bancário
(Linha digitável)
 Representa o mesmo conteúdo do
código de barras, dispostos em outra
ordem e acrescidos de dígitos
verificadores;
 Deve ser utilizada quando da
impossibilidade da captura do código
de barras.
Boleto bancário
(Linha digitável)
Composição
Campo
Posição
Tamanho
Conteúdo
01-03
3
Identificação do banco (posições 1 a 3 do código de barras)
04-04
1
Código de moeda (9 - Real) (posição 4 do código de barras)
05-09
5
1ª a 5ª posições do campo livre (posições 20 a 24 do código de barras)
10-10
1
Dígito verificador do primeiro campo
11-20
10
6ª a 15ª posições do campo livre (posições 25 a 34 do código de barras)
21-21
1
Dígito verificador do segundo campo
22-31
10
16ª a 25ª posições do campo livre (posições 35 a 44 do código de barras)
32-32
1
Dígito verificador do terceiro campo
33-33
1
Dígito verificador geral (posição 5 do código de barras)
34-37
4
Fator de vencimento (posições 6 a 9 do código de barras)
38-47
10
Valor nominal do título(posições 10 a 19 do código de barras)
1º
2º
3º
4º
5º
O componente BOPEPO
(O que é?)
 Biblioteca Java, livre e de código-aberto;
 Gera boletos bancários, tornando
transparente para o usuário toda a
complexidade exigida para isso, como por
exemplo a geração do código de barras,
linha digitável, entre outros aspectos, de
acordo com as especificações definidas pela
FEBRABAN (Federação Brasileira de
Bancos).
O componente BOPEPO
(O que é?)
 Permite ao usuário personalizar o layout do
boleto bancário, a mão livre.




Definir imagens;
Definir texto;
Alterar a disposição das informações;
Adicionar novas informações, sejam elas
estáticas ou dinâmicas.
O componente BOPEPO
(O que é?)
 Permite ao usuário estender a
funcionalidade do componente.
 Fornecer informações sobre bancos ainda não
suportados;
 Fornecer informações sobre a composição de
campos livre ainda não suportados.
O componente BOPEPO
(Requisitos)
 Gerar boletos;
O componente BOPEPO
(Requisitos)
 Gerar boletos personalizados.
O componente BOPEPO
(Requisitos)
 Gerar boletos para banco e/ou campo livre não
suportado.
O componente BOPEPO
(Como gerar boletos?)
 Para gerar um boleto se faz necessário informar:
 O cedente, não esquecendo de informar a sua conta
bancária.
 O sacado.
 O sacador avalista (opcional).
 Dados gerais do título como data de vencimento,
valor, nosso número.
 Dados gerais do boleto, como local de pagamento e
instruções.
 Vamos gerar um boleto?
O componente BOPEPO
(Como gerar boletos personalizados?)
 Entendendo o mecanismo;
 Personalizando um template de boleto;
 Gerando um boleto personalizado.
O componente BOPEPO
(Como gerar boletos personalizados?)
 Entendendo o mecanismo.
O componente BOPEPO
(Como gerar boletos personalizados?)
 Personalizando um boleto.
O componente BOPEPO
(Como estender a funcionalidade?)
 Vamos gerar um boleto personalizado?
O componente BOPEPO
(Como estender a funcionalidade?)
 Suportar novo banco;
 Suportar novo campo livre.
O componente BOPEPO
(Como estender a funcionalidade?)
 Suportar novo banco - O usuário terá que fornecer
ao componente uma implementação que siga a
interface IBanco. Opções:
 Instanciar um objeto Banco e configurá-lo;
 Criar uma classe que herda da classe Banco;
 Criar uma classe que implementa a interface
IBanco.
Obs: Se o banco não é suportado, então
obrigatoriamente uma implementação de campo
livre deverá ser realizada.
O componente BOPEPO
(Como estender a funcionalidade?)
 Suportar novo banco
O componente BOPEPO
(Como estender a funcionalidade?)
 Suportar novo campo livre - O usuário terá de
fornecer ao componente uma implementalçao da
interface ICampoLivre, e implementar
obrigatoriamente o método write().
 Esse método write() tem como objetivo retornar
uma texto de vinte e cinco caracteres, que nada
mais é do que o campo livre, parte integrante do
código de barras e a linha digitável do boleto.
O componente BOPEPO
(Como estender a funcionalidade?)
 Suportar novo campo livre – Banco “X’
Posição
Tamanho
Conteúdo
20-26
7
Código da conta do cedente (sem dígito)
27-39
13
Nosso numero (sem dígito)
40-43
4
Código da agencia do cedente (sem dígito)
44-44
0
Zero Fixo
O componente BOPEPO
(Como estender a funcionalidade?)
 Suportar novo campo livre – Banco “X’
O componente BOPEPO
(Como estender a funcionalidade?)
 Vamos a prática?
O componente BOPEPO
(Integrando a uma aplicação)
 Independente de arquitetura, seja ela N-Camadas
(como JEE), Monolítica, Plugins etc;
 GUI pode ser tanto Web ou Desktop;
 Tecnologia PDF – Única dependência até o momento.
O componente BOPEPO
(Sobre o componente)
 Gratuito e de código-aberto.
 Disponível no site do Projeto JRimum
 Estão disponíveis tutoriais, vídeos-tutoriais e toda
uma gama de informações com o objetivo de ensinar
o usuário a:


Utilizar o componente;
Contribuir com o projeto de várias formas, dentre
elas tornando-se um desenvolvedor.
O componente BOPEPO
(Sobre o Projeto JRimum)
 O Projeto JRimum é fruto da iniciativa conjunta entre o
Grupo JRimum e a empresa Nordeste Fomento Mercantil;
 Tem por objetivo a criação de componentes reutilizáveis
Java com foco no domínio de negócios do Brasil;
 Bopepo é um sub-projeto e o primeiro componente
disponibilizado;
 O grupo JRimum é composto atualmente pelo seus
fundadores, Gilmar P. S. Leitão, Misael Barreto e Rômulo
Augusto, e também por novos adeptos, como por exemplo
Samuel Valério e Michel Medeiros, ambos analistas de
sistema do TJ-RN
O componente BOPEPO
(Sobre o Projeto JRimum)
 A Nordeste Fomento Mercantil é uma empresa que
presta serviços relacionados a cessão de crédito para
pequenas e médias empresas da economia potiguar.
A empresa apóia o projeto e emite seus boletos
bancários utilizando o componente Bopepo.
Trabalhos futuros






Refatoração e inserção de padrões de projeto;
Implementar novas formas de visualização do boleto
bancário, como por exemplo, nos formatos XML, HTML,
JPG e PNG;
Entrada de dados via XML, CVS entre outros, para gerar
o boleto;
Ferramenta para montar o layout;
Implementar Java Internacionalização, para as
mensagens de erro;
Desenvolver um mecanismo XML através do qual
aplicações escritas em diferentes linguagens possam
utilizar o componente Bopepo para gerar boletos
bancários, visando desta forma interoperabilidade;
Bibliografia






FEDERAÇÃO BRASILEIRA DE BANCOS. Manual técnico operacional: bloquetos
de cobrança. [S.l. : s.n.], [199?].
GUERREIRO, Marcelo. BrOffice substitui bem o Office, da Microsoft. São Paulo: O
Estado de São Paulo, 2008. Disponível em:
<http://www.link.estadao.com.br/index.cfm?id_conteudo=13996> Acesso em: 25
jun. 2008.
LOWAGIE, B.; SOARES, P. iText homepage: project description. Disponível em:
<http://www.lowagie.com/iText/> Acesso em: 25 jun. 2008.
LOZANO, F. Frameworks de logging: primeiros passos com Commons Logging e
Log4j. Java Mazagine, Rio de Janeiro, ano 4, n. 35, p.24-35, 2006.
OLIVEIRA, E. C. M. Log4J: framework open source java de logging. [S.l. : s.n.],
2005. Disponível em: <http://www.linhadecodigo.com.br/Artigo.aspx?id=824>
Acesso em: 25 jun. 2008.
SZYPERSKI, Clemens. Component software: beyond object-oriented
programming. [S.l]: Addison-Wesley, 1998.
Agradecimentos








Ao Senhor Jesus, por tudo o que ele tem oferecido em minha vida.
À minha família, por todo o apoio dado durante a minha vida.
As empresas nas quais trabalhei (UNP, TCU, Infothec e Activesoft).
E empresa Nordeste Fomento Mercantil, por todo o suporte dado ao
desenvolvimento deste projeto.
Aos meus companheiros do Projeto JRimum.
Aos meus colegas do IF-RN, por todos os momentos que passamos
juntos, pela troca de conhecimentos e experiências.
A instituição IF-RN e aos seus professores, pelo ensino, aprendizado
e pelo amadurecimento que obtive durante a minha estadia no
curso.
À minha orientadora Cláudia e aos professores Minora e Valentim.
Agradecimentos
FIM

Download

BOPEPO