none
Calcula a "Linha Digitável" atravéz do "Código das Barras" de um boleto bancario

    Question

  • Calcula a "Linha Digitável" atravéz do "Código das Barras" de um boleto bancario

    Estou desenvolvendo um sistema de integração bancaria , entre o meu contas a pagar com os bancos.

    Estamos utilizando um leitor de codigo de barras para acelerar a leitura dos boletos, isso pois o nossos boletos estão "grampeados" as NF.

    O que estou precisando fazer é ler o codigo de barra do boleto é gerar o numero digitavel.

    rotina similar a http://evandro.net/codigo_barras.html
    m.frade@terra.com.br
    Wednesday, June 10, 2009 7:18 PM

Answers

All replies

  • Marcelo, boa noite
    Vocẽ precisa saber  como fazer isso ? Qual a composição da linha digitável,  posições, DV... é isso ?


    []'s



    Val
    Friday, June 12, 2009 2:56 AM
  • Marcelo,

    Se você faz a leitura do código de barras, a linha digital nada mais é do que a tadução disso.

    Agora se você quer saber do que é formada ou algo assim.
    segue um link para um documento do HSBC explicando isso.
    http://www.superboleto.com.br/doc/HSBC%20C%C3%B3digo%20de%20Barras%20Padr%C3%A3o%20.pdf
    ou do Bradesco
    http://www.bradesco.com.br/br/pj/conteudo/sol_rec/pdf/pagforatual.pdf

    Porém para maiores detalhes é melhor consultar a pagina da Febraban (é ela para gere as regras para o SBP(sistema brasileiro de pagamento) e assim as regras dos codigos de barra para compensação bancaria)
    http://www.febraban.org.br/Acervo1.asp?id_texto=195&id_pagina=173&palavra=

    Att,
    Fernanda





    “Caso esta resposta tenha ajudado a solucionar sua dúvida, favor clicar em “Marcar como Resposta” para beneficiar outros membros da comunidade que estejam lendo este thread”.
    Wednesday, July 08, 2009 5:56 PM
  • É exatamente o que a Fernanda disse, deve criar uma função para cada banco, CPFL, Agua e etc. Após a leitura voce faz a tradução dos campos, ja fiz isso e funciona muito bem, as vezes é necessário implantar novos códigos. Em meu caso também fiz a traduçao do CMC7 dos Cheques, isso evita cheque falso. Segue uma parte da tradução feita em VB6 para Leitura de Boleto.

        If Len(Trim(strBarra)) = 47 Then
            oBanco = strBanco
            oVencer = DateAdd("d", Mid(strBarra, 34, 4), CVDate("07/10/1997"))
            oValor = Mid(strBarra, 38, 8)
            oValor = FormatCurrency(oValor & "," & Mid(strBarra, 46, 2), 2)
            Select Case strBanco
                Case "001"
                    If Mid(strBarra, 6, 2) = "00" Then
                        oAgencia = ""
                        oCedente = ""
                        oNNumero = Mid(strBarra, 12, 9)
                        oNNumero = oNNumero & Mid(strBarra, 22, 8)
                    Else
                        oAgencia = Mid(strBarra, 17, 4)
                        oCedente = Mid(strBarra, 24, 6)
                        oNNumero = Mid(strBarra, 6, 4)
                        oNNumero = oNNumero & Mid(strBarra, 11, 6)
                    End If
                Case "237"
                    oAgencia = Mid(strBarra, 5, 4)
                    oCedente = Mid(strBarra, 24, 7)
                    oNNumero = Mid(strBarra, 11, 10)
                    oNNumero = oNNumero & Mid(strBarra, 22, 2)
                Case "422"
                    oAgencia = Mid(strBarra, 5, 4)
                    oCedente = Mid(strBarra, 24, 7)
                    oNNumero = Mid(strBarra, 11, 10)
                    oNNumero = oNNumero & Mid(strBarra, 23, 2)
                Case "356"
                    oAgencia = Mid(strBarra, 5, 4)
                    oCedente = Mid(strBarra, 9, 1)
                    oCedente = oCedente & Mid(strBarra, 11, 7)
                    oNNumero = oNNumero & Mid(strBarra, 22, 10)
                Case "341"
                    oAgencia = Mid(strBarra, 18, 3)
                    oAgencia = oAgencia & Mid(strBarra, 22, 1)
                    oCedente = Mid(strBarra, 23, 5)
                    oCedente = oCedente & "-" & Mid(strBarra, 28, 1)
                    oNNumero = Mid(strBarra, 5, 3)
                    oNNumero = oNNumero & "-" & Mid(strBarra, 8, 2)
                    oNNumero = oNNumero & Mid(strBarra, 11, 7)
                Case "409"
                    oAgencia = Mid(strBarra, 14, 4)
                    oAgencia = oAgencia & "-" & Mid(strBarra, 18, 1)
                    oCedente = ""
                    oNNumero = Mid(strBarra, 19, 2)
                    oNNumero = oNNumero & Mid(strBarra, 22, 9)
                    oNNumero = oNNumero & "-" & Mid(strBarra, 31, 1)
                Case "399"
                    oAgencia = Mid(strBarra, 17, 4)
                    oCedente = Mid(strBarra, 22, 7)
                    oNNumero = Mid(strBarra, 5, 5)
                    oNNumero = oNNumero & Mid(strBarra, 11, 6)
                Case "104"
                    oAgencia = Mid(strBarra, 16, 4)
                    oCedente = Mid(strBarra, 24, 8)
                    oNNumero = Mid(strBarra, 5, 5)
                    oNNumero = oNNumero & Mid(strBarra, 11, 5)
                Case "479"
                    oAgencia = ""
                    oCedente = Mid(strBarra, 6, 4)
                    oCedente = oCedente & Mid(strBarra, 11, 4)
                    oNNumero = Mid(strBarra, 22, 8)
                Case "033"
                    oAgencia = Mid(strBarra, 11, 6)
                    oCedente = Mid(strBarra, 8, 2)
                    oCedente = oCedente & "-" & Mid(strBarra, 10, 6)
                    oNNumero = Mid(strBarra, 5, 3)
                    oNNumero = oNNumero & "-" & Mid(strBarra, 17, 4)
                    oNNumero = oNNumero & Mid(strBarra, 22, 3)
                Case "151"
                    oAgencia = Mid(strBarra, 15, 4)
                    oCedente = Mid(strBarra, 22, 6)
                    oNNumero = Mid(strBarra, 5, 5)
                    oNNumero = oNNumero & Mid(strBarra, 11, 4)
                Case "347"
                    oAgencia = Mid(strBarra, 5, 4)
                    oCedente = Mid(strBarra, 9, 1)
                    oCedente = oCedente & Mid(strBarra, 11, 7)
                    oNNumero = Mid(strBarra, 22, 10)
                Case Else
                    oAgencia = ""
                    oCedente = ""
                    oNNumero = ""
            End Select
        End If
    Espero ter ajudado!
    Thursday, July 09, 2009 7:40 PM