Você está na página 1de 62

Desenvolvimento de componente para gerao de boletos bancrios personalizvel e extensvel

Aluno: Misael Barreto de Queiroz Orientadora: Cludia Ribeiro

BOPEPO
CEFET-RN Departamento Acadmico de Informtica Tecnologia em Desenvolvimento de Software

Sumrio
Motivao Boleto bancrio O componente BOPEPO Trabalhos futuros Bibliografia Agradecimentos

Motivao
Poucas solues disponveis
Gratuita em JAVA apenas uma - JBoleto.

JBoleto - Expectativas no atendidas, devido a(o):


Documentao escassa; Design de classes no flexvel, impedindo reusabilidade; No possibilidade de personalizar o layout do boleto; No possibilidade de estender a funcionalidade do componente.

Motivao
O que personalizar layout?
adaptar o contedo do boleto s necessidades do seu emissor; Com Bopepo, o usurio a mo-livre pode:
Definir imagens; Definir texto; Alterar a disposio das informaes; Adicionar novas informaes, sejam elas estticas ou dinmicas.

Motivao
O que estender a funcionalidade?
o recurso que permite ao usurio utilizar o componente mesmo nos casos em que o banco e/ou campo livre de determinado banco no sejam suportados; Bastante til considerando que o universo de bancos e suas regras para confeco de boletos bastante vasto e crescente.

Boleto bancrio
Trata-se de um documento que representa um ttulo de cobrana. Ttulo de cobrana pode ser do tipo: duplicata, nota promissria, recibo, bilhete, nota de seguro ente outros. Sua confeco deve seguir as instrues impostas pela FEBRABAN.

Boleto bancrio
Basicamente, para que possam ser realizadas cobranas atravs de boletos trs elementos so necessrios: Banco: responsvel pela cobrana; Cedente: emissor da cobrana(boleto), ou seja, aquele que ir receber a quantia cobrada; Sacado: aquele que paga o boleto;

Boleto bancrio
O boleto dividido em duas partes:
Recibo do sacado Ficha de compensao

Boleto bancrio (Recibo do sacado)


o comprovante de pagamento; O layout de responsabilidade do cedente, contudo alguns campos so obrigatrios:
Nome do cedente; Agncia / Cdigo do cedente; Valor do ttulo; Vencimento; Nosso nmero; Nome do sacado.

Os campos obrigatrios tambm devem constar na ficha de compensao.

Boleto bancrio (Ficha de compensao)


Parte do boleto que fica em poder do banco quando o boleto pago, para que seja encaminhada para a compensao bancria. Dimenses pr-definidas pela FEBRABAN; Subdividida em 3 partes:
Parte superior; Quadro de Impresso; Parte inferior;

Boleto bancrio (Ficha de compensao)


Parte superior
Nome do banco ou logotipo; Cdigo de compensao do banco e o seu dgito verificador; Linha digitvel.

Quadro de Impresso: Deve conter diversos campos, tendo como campos de preenchimento obrigatrio:
Local de pagamento; Data de vencimento; Cedente (nome); Agncia / Cdigo do cedente; Data do processamento; Nosso nmero; Valor do documento; Sacado (nome e endereo completo).

Parte inferior

Cdigo de barras; Campo destinado autenticao mecnica.

Boleto bancrio (Cdigo de barras)


Tipo: O cdigo de barras deve ser do tipo "2 de 5" intercalado, que significa que 5 barras definem 1 caractere, sendo que duas delas so barras largas. O termo "intercalado" significa que os espaos entre as barras tambm tm significado, de maneira anloga s barras. A distncia mnima entre a margem inferior e o centro do cdigo de barras deve ser de 12mm. Dimenses: O cdigo de barras deve ter altura de 13mm. De acordo com o padro 2 de 5 o cdigo de barras deve apresentar a largura de 103mm, pois essa a dimenso que os equipamentos dos bancos esto calibrados para efetuar a leitura. Zona de silncio: o espao entre a margem esquerda do boleto e o incio da impresso do cdigo de barras, que deve ser de 5mm. O cdigo 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 bancrio (Cdigo de barras)


Composio
Posio Tamanho Contedo

01-03

Identificao do banco Cdigo da moeda (9-Real) Dgito verificador do cdigo de barras(DV) Fator de vencimento Valor nominal do ttulo Campo livre Utilizado de acordo com a especificao interna do banco emissor.

04-04 05-05
06-09 10-19 20-44

1 1
4 10 25

Boleto bancrio (Cdigo de barras)


Composio
Campo livre
Contm informaes sobre o cedente, para que a instituio financeira possa transferir para ele, de forma correta o valor pago pelo sacado.

Sua composio varia de banco para banco, logo se faz necessrio entrar em
contato com cada banco para obter os manuais de instruo.

Boleto bancrio (Cdigo de barras)


Composio
Campo livre (exemplo)
Posio Tamanho Contedo

20-23
24-25 26-36 37-43 44-44

4
2 11 7 1

Cdigo da agncia (sem dgito)


Cdigo da carteira Nosso nmero (sem dgito) Conta do cedente (sem dgito) Zero fixo

Boleto bancrio (Linha digitvel)


Representa o mesmo contedo do cdigo de barras, dispostos em outra ordem e acrescidos de dgitos verificadores; Deve ser utilizada quando da impossibilidade da captura do cdigo de barras.

Boleto bancrio (Linha digitvel)


Composio
Campo Posio 01-03 04-04 1 05-09 10-10 5 1 1 a 5 posies do campo livre (posies 20 a 24 do cdigo de barras) Dgito verificador do primeiro campo Tamanho 3 1 Contedo Identificao do banco (posies 1 a 3 do cdigo de barras) Cdigo de moeda (9 - Real) (posio 4 do cdigo de barras)

11-20
2 21-21 22-31 3 32-32 4 5 38-47 33-33 34-37

10
1 10 1 1 4 10

6 a 15 posies do campo livre (posies 25 a 34 do cdigo de barras)


Dgito verificador do segundo campo 16 a 25 posies do campo livre (posies 35 a 44 do cdigo de barras) Dgito verificador do terceiro campo Dgito verificador geral (posio 5 do cdigo de barras) Fator de vencimento (posies 6 a 9 do cdigo de barras) Valor nominal do ttulo(posies 10 a 19 do cdigo de barras)

O componente BOPEPO (O que ?)


Biblioteca Java, livre e de cdigo-aberto; Gera boletos bancrios, tornando transparente para o usurio toda a complexidade exigida para isso, como por exemplo a gerao do cdigo de barras, linha digitvel, entre outros aspectos, de acordo com as especificaes definidas pela FEBRABAN (Federao Brasileira de Bancos).

O componente BOPEPO (O que ?)


Permite ao usurio personalizar o layout do boleto bancrio, a mo livre.
Definir imagens; Definir texto; Alterar a disposio das informaes; Adicionar novas informaes, sejam elas estticas ou dinmicas.

O componente BOPEPO (O que ?)


Permite ao usurio estender a funcionalidade do componente.
Fornecer informaes sobre bancos ainda no suportados; Fornecer informaes sobre a composio de campos livre ainda no 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 no suportado.

O componente BOPEPO (Como gerar boletos?)


Para gerar um boleto se faz necessrio informar:
O cedente, no esquecendo de informar a sua conta bancria. O sacado. O sacador avalista (opcional). Dados gerais do ttulo como data de vencimento, valor, nosso nmero. Dados gerais do boleto, como local de pagamento e instrues.

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 usurio ter que fornecer ao componente uma implementao que siga a interface IBanco. Opes: 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 no suportado, ento obrigatoriamente uma implementao 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 usurio ter de fornecer ao componente uma implementalao da interface ICampoLivre, e implementar obrigatoriamente o mtodo write(). Esse mtodo write() tem como objetivo retornar uma texto de vinte e cinco caracteres, que nada mais do que o campo livre, parte integrante do cdigo de barras e a linha digitvel do boleto.

O componente BOPEPO (Como estender a funcionalidade?)


Suportar novo campo livre Banco X
Posio Tamanho Contedo

20-26 27-39 40-43 44-44

7 13 4 0

Cdigo da conta do cedente (sem dgito) Nosso numero (sem dgito) Cdigo da agencia do cedente (sem dgito) Zero Fixo

O componente BOPEPO (Como estender a funcionalidade?)


Suportar novo campo livre Banco X

O componente BOPEPO (Como estender a funcionalidade?)


Vamos a prtica?

O componente BOPEPO (Integrando a uma aplicao)


Independente de arquitetura, seja ela N-Camadas (como JEE), Monoltica, Plugins etc; GUI pode ser tanto Web ou Desktop; Tecnologia PDF nica dependncia at o momento.

O componente BOPEPO (Sobre o componente)


Gratuito e de cdigo-aberto. Disponvel no site do Projeto JRimum Esto disponveis tutoriais, vdeos-tutoriais e toda uma gama de informaes com o objetivo de ensinar o usurio a:
Utilizar o componente; Contribuir com o projeto de vrias 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 criao de componentes reutilizveis Java com foco no domnio de negcios do Brasil; Bopepo um sub-projeto e o primeiro componente disponibilizado; O grupo JRimum composto atualmente pelo seus fundadores, Gilmar P. S. Leito, Misael Barreto e Rmulo Augusto, e tambm por novos adeptos, como por exemplo Samuel Valrio 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 servios relacionados a cesso de crdito para pequenas e mdias empresas da economia potiguar. A empresa apia o projeto e emite seus boletos bancrios utilizando o componente Bopepo.

Trabalhos futuros
Refatorao e insero de padres de projeto; Implementar novas formas de visualizao do boleto bancrio, 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 Internacionalizao, para as mensagens de erro; Desenvolver um mecanismo XML atravs do qual aplicaes escritas em diferentes linguagens possam utilizar o componente Bopepo para gerar boletos bancrios, visando desta forma interoperabilidade;

Bibliografia
FEDERAO BRASILEIRA DE BANCOS. Manual tcnico operacional: bloquetos de cobrana. [S.l. : s.n.], [199?]. GUERREIRO, Marcelo. BrOffice substitui bem o Office, da Microsoft. So Paulo: O Estado de So Paulo, 2008. Disponvel 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. Disponvel 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. Disponvel 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 famlia, 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 experincias. A instituio IF-RN e aos seus professores, pelo ensino, aprendizado e pelo amadurecimento que obtive durante a minha estadia no curso. minha orientadora Cludia e aos professores Minora e Valentim.

Agradecimentos

FIM

Você também pode gostar