ASP.NET - Gerando boletos bancários


Há algum tempo atrás(2001) eu publiquei dois artigos nos quais tratei da geração de boletos bancários usando o Visual Basic 6 e o Crystal Reports. Se você ainda tem interesse nesse assunto pode acessar os artigos nos links:

Veja também o componente que gera o código de barras a partir da linha digitável   usando o Visual Basic 6:

Código de barras para boletos bancários

Se você não sabe o que é um boleto bancário (em que planeta você vive ?) veja abaixo a figura apresentando um boleto bancário e suas partes principais:

Apenas para manter o assunto atualizado eu estou publicando abaixo o trecho referente as especificações técnicas para bloqueto de cobrança bancária conforme normas do Banco Central do Brasil, publicadas em sua Carta-Circular Nº 2926, de 25/07/2000.

Nota: Este texto foi literalmente retirado da  Wikipédia - Bloqueto de cobrança - Wikipédia.

Sugiro acessar o link para ver mais detalhes sobre o assunto.

Código de Barras

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; "intercalado" significa que os espaços entre 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 bloqueto 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.

Composição

Posição Tamanho Picture Conteúdo

01-03

3

9(3)

Identificação do banco

04-04

1

9

Código moeda (9-Real)

05-05

1

9

Dígito verificador do código de barras (DV)

06-19

14

9(4)

Posições 06 a 09 – fator de vencimento
   

9(08)v99

Posições 10 a 19 – valor nominal do título

20-44

25

9(25)

Campo livre – utilizado de acordo com a especificação interna do banco emissor

Campo Livre

O campo livre irá conter as informações do cedente, para que a instituição financeira possa transferir de forma correta o valor que o sacado está pagando naquele determinado bloqueto para o cedente.

Posição Tamanho Picture Conteúdo

20-23

4

9(4)

Código da Agência (sem dígito)

24-25

2

9(2)

Código da Carteira

26-36

11

9(11)

Nosso Número (sem dígito)

37-43

7

9(7)

Conta do Cedente (sem dígito)

44-44

1

9

Zero Fixo

Cálculo do Dígito Verificador Geral

Para o cálculo do dígito verificador (DV) do código de barras, deve-se utilizar o módulo 11, considerando os 43 dígitos que compõem o código de barras, pois, obviamente, deve-se excluir a 5ª posição do cálculo do DV, uma vez que ela pertence ao próprio DV. O módulo 11 deverá ser utilizado da seguinte maneira:

  1. Multiplique cada um, iniciando-se da direita para a esquerda e pela seqüência de 2 a 9, ou seja; 2, 3, 4, 5, 6, 7, 8, 9, 2, 3, 4,..., e assim por diante;
  2. Some o resultado de cada produto obtido na multiplicação do item anterior, obtendo-se um total “X”;
  3. Divida o total “X” por 11 (Y = X/11) e determine o resto da divisão (R);
  4. Calcule o DV através da expressão DV = 11 – R.

Observação: para o código de barras, sempre que o resto for 0, 1 ou 10, deverá ser utilizado o dígito 1.

Exemplo:

    BANCO    M   DV   FATOR     VALOR                                   CAMPO LIVRE
  +-----+---+---+--------+---------------+---------+---------------+----------------+
  | 799 | 9 |   | 1232 | 0000006600 | 78781 | 3087550304 | 2541200000 |  Dados do código
  +-----+---+---+--------+---------------+---------+---------------+----------------+
    
    432   9          8765   4329876543    29876    5432987654    3298765432    Fatores de multiplicação
    
    Soma dos produtos:   X = 720
    Divisão:                    Y = 720/11 = 65,4545... = 65 + 5/11
    Resto:                       R = 5 
    Dígito verificador:     DV = 11 - R = 11 - 5 = 6

Em nosso exemplo acima, para o código de barras proposto, teríamos 6 como DV, a ser inserido na 5ª posição do código de barras.

Nosso Número

Como forma de identificação do boleto perante a área de cobrança, foi criado o "Nosso Número" a ser montado conforme as regras estipuladas nos manuais de cada Banco. Este número está localizado no canto superior da Ficha de Compensação.

Fator de Vencimento

O Fator de Vencimento é um referencial numérico de 4 dígitos, situado nas quatro primeiras posições do campo “valor”, que representa a quantidade de dias decorridos da Data Base à data de vencimento do título.

Cálculo do Fator de Vencimento

Foi estipulada como o marco zero para o cálculo do Fator de Vencimento a Data Base de 07.10.1997. Para se obter o Fator de Vencimento temos que calcular o número de dias entre a data base e a data do vencimento (a data de vencimento menos a data base será igual ao fator).

 VENCIMENTO         11.07.2007 
 DATA BASE           - 07.10.1997 
 FATOR DE VENCIMENTO      1000 

A partir desta fórmula, podemos montar a seguinte tabela de correlação com alguns exemplos de datas de vencimento e seus respectivos fatores de vencimento:

  VENCIMENTO   FATOR
  03.07.2000    1000
  05.07.2000    1002
  01.12.2002    1881
  29.03.2007    3460
  11.11.2011    5148 
  21.02.2025    9999

Observações:
  1. Quando a primeira posição do campo “valor” (fator de vencimento + valor) for zero, significa que no código de barras/linha digitavel desse título não consta o fator de vencimento;
  2. Bloquetos com vencimento “à vista” ou “na apresentação” – somam-se 15 dias corridos à “data do processamento”. O resultado desta operação representa a data do vencimento, cujo fator correspondente deve constar no código de barras (posições 6 a 9) e na linha digitável (posições 34 a 37);

Linha Digitável

Conceito

Os dados da linha digitável representam o conteúdo do código de barras, dispostos em outra ordem e acrescidos de dígitos verificadores nos 3 primeiros campos. Deve ser utilizada quando da impossibilidade da captura do código de barras e/ou para pagamentos em terminais de auto-atendimento, Internet, home/office bank, personal bank, etc.

Composição

Posição Tamanho Conteúdo

01-03

3

Identificação do Banco

04-04

1

Código de Moeda (9 - Real)

05-09

5

Posições 1 a 5 do campo livre

10-10

1

Dígito verificador do primeiro campo

11-20

10

Posições 6 a 15 do campo livre

21-21

1

Dígito verificador do segundo campo

22-31

10

Posições 16 a 25 do campo livre

32-32

1

Dígito verificador do terceiro campo

33-33

1

Dígito verificador geral

34-37

4

Fator de Vencimento

38-47

10

Valor nominal do título

Exemplo de linha digitável:

   99997.77213  30530.150082  18975.000003   1      10010000035000
   --------------   ----------------   ---------------    --      -------------------
   1º campo         2º campo         3º campo       DV     Fator de vencimento/Valor 

Observações:
  1. os dados da linha digitável não se apresentam na mesma ordem do código de barras;
  2. os dígitos verificadores referentes aos campos 1, 2 e 3 não são representados no código de barras;
  3. em cada um dos três primeiros campos, após a 5ª posição, deve ser inserido um ponto “.”, a fim de facilitar a visualização da linha digitável;
  4. o ponto não conta como posição na hora de se digitar os números para o pagamento do bloqueto, ou seja, não deve ser digitado;
  5. quinto campo: preenchimento com zeros entre o fator de vencimento e o valor até completar 14 posições; - a existência de “0000” no campo “fator de vencimento” da linha digitável do bloqueto de cobrança é indicativo de que o código de barras não contém fator de vencimento. Nesse caso, o banco acolhedor/recebedor estará isento das responsabilidades pelo recebimento após o vencimento, que impede de identificar automaticamente se o bloqueto está ou não vencido;
  6. quando se tratar de bloquetos sem discriminação do valor no código de barras, a representação deverá ser com zeros;
  7. a definição de como será utilizado o campo livre fica a cargo de regulamentação interna de cada instituição financeira.

Cálculo do Dígito Verificador para os três primeiros campos

Para se calcular o Dígito Verificador de cada um dos três primeiros campos, deve-se utilizar o módulo 10, da seguinte maneira:

  1. Multiplique cada dígito de cada campo, iniciando-se da direita para a esquerda, pela seqüência de 2, 1, 2, 1, 2,...;
  2. Some individualmente os algarismos dos resultados, obtendo-se um total “X”;
  3. Divida o valor “X” por 10 (Y = X/10) e determine o resto da divisão (R);
  4. Calcule o DV (Dígito Verificador) através da expressão: DV = 10 - R.

Observação: Utilizar o dígito "0" para o resto 0 (zero). Exemplo:

    1º CAMPO
  +---+---+---+---+---+---+---+---+---+---+---+
  | 9 | 9 | 9 | 9 | 7 | . | 7 | 7 | 2 | 1 |    |  Dados do código
  +---+---+---+---+---+---+---+---+---+---+---+
     |   |    |    |    |        |     |    |    |
    x2  x1   x2  x1  x2       x1  x2   x1  x2        Fatores de multiplicação
     |   |    |    |    |        |     |    |    |    
  =18  =9 =18 =9 =14      =7  =14  =2  =2
    
    Soma dos produtos:   X = (1+8) + 9 + (1+8) + 9 + (1+4) + 7 + (1+4) + 2 + 2 = 57
    Divisão:             Y = 57/10 = 5,7 = 50 + 7/10
    Resto:               R = 7 
    Dígito verificador:  DV = 10 - R = 10 - 7 = 3

Logo, o dígito verificador para o primeiro campo do exemplo acima é 3.

fonte: Wikipédia- Bloqueto de cobrança - Wikipédia.

Após você compreender como montar o código de barras para boletos bancários se você pretende usá-los em seu negócio ou sua aplicação vai ter as seguintes opções:

  1. Adquirir um componente de terceiros - Neste caso existem muitos no mercado e você terá que pagar para usar o componente;
  2. Se basear-se em meus artigos citados no início e , após verificar se a informação esta atualizada (Importantíssimo), montar o seu próprio boleto bancário no VB6;

E se minha aplicação for ASP.NET ? 

Bem , nesse caso você ganhou o dia pois eu vou mostrar como criar boletos bancários para a plataforma .NET usando um Framework da Net.Raptors que é totalmente gratuito e que você pode pegar no link: http://www.dotnetraptors.com.br/start/ seção Downloads.

Então acompanhe a continuação deste artigo, no link abaixo, onde eu vou criar aplicações exemplos na plataforma .NET que geram boletos bancários usando este Framework.

Continua em : ASP.NET - Gerando boletos bancários II

Até lá...

Referências:


José Carlos Macoratti