62
Desenvolvimento de componente para geração de boletos bancários personalizável e extensível CEFET-RN Departamento Acadêmico de Informática Tecnologia em Desenvolvimento de Software Aluno: Misael Barreto de Queiroz Orientadora: Cláudia Ribeiro BOPEPO

Desenvolvimento de componente para geração de boletos bancários personalizável e extensível CEFET-RN Departamento Acadêmico de Informática Tecnologia em

Embed Size (px)

Citation preview

Page 1: Desenvolvimento de componente para geração de boletos bancários personalizável e extensível CEFET-RN Departamento Acadêmico de Informática Tecnologia em

Desenvolvimento de componente para geração de boletos bancários personalizável e extensível

CEFET-RN Departamento Acadêmico de Informática

Tecnologia em Desenvolvimento de Software

Aluno: Misael Barreto de Queiroz

Orientadora: Cláudia Ribeiro

BOPEPO

Page 2: Desenvolvimento de componente para geração de boletos bancários personalizável e extensível CEFET-RN Departamento Acadêmico de Informática Tecnologia em

Sumário

Motivação Boleto bancário O componente BOPEPO Trabalhos futuros Bibliografia Agradecimentos

Page 3: Desenvolvimento de componente para geração de boletos bancários personalizável e extensível CEFET-RN Departamento Acadêmico de Informática Tecnologia em

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.

Page 4: Desenvolvimento de componente para geração de boletos bancários personalizável e extensível CEFET-RN Departamento Acadêmico de Informática Tecnologia em

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.

Page 5: Desenvolvimento de componente para geração de boletos bancários personalizável e extensível CEFET-RN Departamento Acadêmico de Informática Tecnologia em
Page 6: Desenvolvimento de componente para geração de boletos bancários personalizável e extensível CEFET-RN Departamento Acadêmico de Informática Tecnologia em
Page 7: Desenvolvimento de componente para geração de boletos bancários personalizável e extensível CEFET-RN Departamento Acadêmico de Informática Tecnologia em
Page 8: Desenvolvimento de componente para geração de boletos bancários personalizável e extensível CEFET-RN Departamento Acadêmico de Informática Tecnologia em
Page 9: Desenvolvimento de componente para geração de boletos bancários personalizável e extensível CEFET-RN Departamento Acadêmico de Informática Tecnologia em
Page 10: Desenvolvimento de componente para geração de boletos bancários personalizável e extensível CEFET-RN Departamento Acadêmico de Informática Tecnologia em

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.

Page 11: Desenvolvimento de componente para geração de boletos bancários personalizável e extensível CEFET-RN Departamento Acadêmico de Informática Tecnologia em

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.

Page 12: Desenvolvimento de componente para geração de boletos bancários personalizável e extensível CEFET-RN Departamento Acadêmico de Informática Tecnologia em

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;

Page 13: Desenvolvimento de componente para geração de boletos bancários personalizável e extensível CEFET-RN Departamento Acadêmico de Informática Tecnologia em
Page 14: Desenvolvimento de componente para geração de boletos bancários personalizável e extensível CEFET-RN Departamento Acadêmico de Informática Tecnologia em

Boleto bancário

O boleto é dividido em duas partes:

Recibo do sacado Ficha de compensação

Page 15: Desenvolvimento de componente para geração de boletos bancários personalizável e extensível CEFET-RN Departamento Acadêmico de Informática Tecnologia em

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.

Page 16: Desenvolvimento de componente para geração de boletos bancários personalizável e extensível CEFET-RN Departamento Acadêmico de Informática Tecnologia em

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;

Page 17: Desenvolvimento de componente para geração de boletos bancários personalizável e extensível CEFET-RN Departamento Acadêmico de Informática Tecnologia em

Boleto bancário(Ficha de compensação) Parte superior

Nome do banco ou logotipo; Código de compensação do banco e o seu dígito verificador; Linha digitável.

Quadro de Impressão: Deve conter diversos campos, tendo como campos de preenchimento obrigatório: 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.

Page 18: Desenvolvimento de componente para geração de boletos bancários personalizável e extensível CEFET-RN Departamento Acadêmico de Informática Tecnologia em
Page 19: Desenvolvimento de componente para geração de boletos bancários personalizável e extensível CEFET-RN Departamento Acadêmico de Informática Tecnologia em

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.

Page 20: Desenvolvimento de componente para geração de boletos bancários personalizável e extensível CEFET-RN Departamento Acadêmico de Informática Tecnologia em

Boleto bancário(Código de barras)

Posição Tamanho Conteúdo

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

20-44 25Campo livreUtilizado de acordo com a especificação internado banco emissor.

Composição

Page 21: Desenvolvimento de componente para geração de boletos bancários personalizável e extensível CEFET-RN Departamento Acadêmico de Informática Tecnologia em

Boleto bancário(Código de barras)

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.

Composição

Page 22: Desenvolvimento de componente para geração de boletos bancários personalizável e extensível CEFET-RN Departamento Acadêmico de Informática Tecnologia em

Boleto bancário(Código de barras)

Campo livre (exemplo)

Composição

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

Page 23: Desenvolvimento de componente para geração de boletos bancários personalizável e extensível CEFET-RN Departamento Acadêmico de Informática Tecnologia em

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.

Page 24: Desenvolvimento de componente para geração de boletos bancários personalizável e extensível CEFET-RN Departamento Acadêmico de Informática Tecnologia em

Boleto bancário(Linha digitável)

ComposiçãoCampo 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

2º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

3º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

4º 33-33 1 Dígito verificador geral (posição 5 do código de barras)

5º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)

Page 25: Desenvolvimento de componente para geração de boletos bancários personalizável e extensível CEFET-RN Departamento Acadêmico de Informática Tecnologia em

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).

Page 26: Desenvolvimento de componente para geração de boletos bancários personalizável e extensível CEFET-RN Departamento Acadêmico de Informática Tecnologia em

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.

Page 27: Desenvolvimento de componente para geração de boletos bancários personalizável e extensível CEFET-RN Departamento Acadêmico de Informática Tecnologia em

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.

Page 28: Desenvolvimento de componente para geração de boletos bancários personalizável e extensível CEFET-RN Departamento Acadêmico de Informática Tecnologia em

O componente BOPEPO(Requisitos)

Gerar boletos;

Page 29: Desenvolvimento de componente para geração de boletos bancários personalizável e extensível CEFET-RN Departamento Acadêmico de Informática Tecnologia em

O componente BOPEPO(Requisitos)

Gerar boletos personalizados.

Page 30: Desenvolvimento de componente para geração de boletos bancários personalizável e extensível CEFET-RN Departamento Acadêmico de Informática Tecnologia em

O componente BOPEPO(Requisitos)

Gerar boletos para banco e/ou campo livre não suportado.

Page 31: Desenvolvimento de componente para geração de boletos bancários personalizável e extensível CEFET-RN Departamento Acadêmico de Informática Tecnologia em

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?

Page 32: Desenvolvimento de componente para geração de boletos bancários personalizável e extensível CEFET-RN Departamento Acadêmico de Informática Tecnologia em
Page 33: Desenvolvimento de componente para geração de boletos bancários personalizável e extensível CEFET-RN Departamento Acadêmico de Informática Tecnologia em

O componente BOPEPO(Como gerar boletos personalizados?) Entendendo o mecanismo; Personalizando um template de boleto; Gerando um boleto personalizado.

Page 34: Desenvolvimento de componente para geração de boletos bancários personalizável e extensível CEFET-RN Departamento Acadêmico de Informática Tecnologia em

O componente BOPEPO(Como gerar boletos personalizados?) Entendendo o mecanismo.

Page 35: Desenvolvimento de componente para geração de boletos bancários personalizável e extensível CEFET-RN Departamento Acadêmico de Informática Tecnologia em
Page 36: Desenvolvimento de componente para geração de boletos bancários personalizável e extensível CEFET-RN Departamento Acadêmico de Informática Tecnologia em
Page 37: Desenvolvimento de componente para geração de boletos bancários personalizável e extensível CEFET-RN Departamento Acadêmico de Informática Tecnologia em
Page 38: Desenvolvimento de componente para geração de boletos bancários personalizável e extensível CEFET-RN Departamento Acadêmico de Informática Tecnologia em
Page 39: Desenvolvimento de componente para geração de boletos bancários personalizável e extensível CEFET-RN Departamento Acadêmico de Informática Tecnologia em

O componente BOPEPO(Como gerar boletos personalizados?) Personalizando um boleto.

Page 40: Desenvolvimento de componente para geração de boletos bancários personalizável e extensível CEFET-RN Departamento Acadêmico de Informática Tecnologia em
Page 41: Desenvolvimento de componente para geração de boletos bancários personalizável e extensível CEFET-RN Departamento Acadêmico de Informática Tecnologia em
Page 42: Desenvolvimento de componente para geração de boletos bancários personalizável e extensível CEFET-RN Departamento Acadêmico de Informática Tecnologia em

O componente BOPEPO(Como estender a funcionalidade?) Vamos gerar um boleto personalizado?

Page 43: Desenvolvimento de componente para geração de boletos bancários personalizável e extensível CEFET-RN Departamento Acadêmico de Informática Tecnologia em

O componente BOPEPO(Como estender a funcionalidade?) Suportar novo banco; Suportar novo campo livre.

Page 44: Desenvolvimento de componente para geração de boletos bancários personalizável e extensível CEFET-RN Departamento Acadêmico de Informática Tecnologia em

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.

Page 45: Desenvolvimento de componente para geração de boletos bancários personalizável e extensível CEFET-RN Departamento Acadêmico de Informática Tecnologia em

O componente BOPEPO(Como estender a funcionalidade?) Suportar novo banco

Page 46: Desenvolvimento de componente para geração de boletos bancários personalizável e extensível CEFET-RN Departamento Acadêmico de Informática Tecnologia em
Page 47: Desenvolvimento de componente para geração de boletos bancários personalizável e extensível CEFET-RN Departamento Acadêmico de Informática Tecnologia em

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.

Page 48: Desenvolvimento de componente para geração de boletos bancários personalizável e extensível CEFET-RN Departamento Acadêmico de Informática Tecnologia em

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

Page 49: Desenvolvimento de componente para geração de boletos bancários personalizável e extensível CEFET-RN Departamento Acadêmico de Informática Tecnologia em
Page 50: Desenvolvimento de componente para geração de boletos bancários personalizável e extensível CEFET-RN Departamento Acadêmico de Informática Tecnologia em

O componente BOPEPO(Como estender a funcionalidade?) Suportar novo campo livre – Banco “X’

Page 51: Desenvolvimento de componente para geração de boletos bancários personalizável e extensível CEFET-RN Departamento Acadêmico de Informática Tecnologia em

O componente BOPEPO(Como estender a funcionalidade?) Vamos a prática?

Page 52: Desenvolvimento de componente para geração de boletos bancários personalizável e extensível CEFET-RN Departamento Acadêmico de Informática Tecnologia em

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.

Page 53: Desenvolvimento de componente para geração de boletos bancários personalizável e extensível CEFET-RN Departamento Acadêmico de Informática Tecnologia em
Page 54: Desenvolvimento de componente para geração de boletos bancários personalizável e extensível CEFET-RN Departamento Acadêmico de Informática Tecnologia em
Page 55: Desenvolvimento de componente para geração de boletos bancários personalizável e extensível CEFET-RN Departamento Acadêmico de Informática Tecnologia em

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.

Page 56: Desenvolvimento de componente para geração de boletos bancários personalizável e extensível CEFET-RN Departamento Acadêmico de Informática Tecnologia em
Page 57: Desenvolvimento de componente para geração de boletos bancários personalizável e extensível CEFET-RN Departamento Acadêmico de Informática Tecnologia em

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

Page 58: Desenvolvimento de componente para geração de boletos bancários personalizável e extensível CEFET-RN Departamento Acadêmico de Informática Tecnologia em

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.

Page 59: Desenvolvimento de componente para geração de boletos bancários personalizável e extensível CEFET-RN Departamento Acadêmico de Informática Tecnologia em

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;

Page 60: Desenvolvimento de componente para geração de boletos bancários personalizável e extensível CEFET-RN Departamento Acadêmico de Informática Tecnologia em

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.

Page 61: Desenvolvimento de componente para geração de boletos bancários personalizável e extensível CEFET-RN Departamento Acadêmico de Informática Tecnologia em

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.

Page 62: Desenvolvimento de componente para geração de boletos bancários personalizável e extensível CEFET-RN Departamento Acadêmico de Informática Tecnologia em

Agradecimentos

FIM