none
Boleto Bancário

    Question

  • Estou implementando a emissao de boleto bancario em VB6 e estou usando uns exemplo que peguei do macoratti. estou com uma dúvida a respeito do parametro valor (que representa o valor do boleto), nao tenho certeza se o calculo esta correto.

     

    Valor As Single

    O Valor do boleto é 161,26

     

    a funcao aplica essa formula no valor

    Valor = Int(Valor * 100)

     

    com isso o resultado fica 16125, e nao 16126. Gostaria de saber se isso esta correto, ou se de fato o resultado deveria ser 16126.

     

    Obrigado.

    Thursday, October 09, 2008 7:15 PM

Answers

  • Não analisei o exemplo que você sitou, mas acredito que o objetivo desta função é retirar a ","(virgula).

    O valor tem que ser exatamente o mesmo.

    Eu trato o valor como como Tipo de Dado String e retirou a virgula com Format(sValorBL, "0000000000"), você so repara no números de digitos que o campo Valor do boleto suporta, as duas ultimas são os centavos.

    No seu caso ficaria assim:

    sValorBL = 161,26

    Valor = Format(sValorBL, "0000000000")

    ficaria assim seu Valor = 0000016126

     

    Espero que tenha ajudado de alguma forma.

    Friday, October 10, 2008 12:21 PM

All replies

  • Não analisei o exemplo que você sitou, mas acredito que o objetivo desta função é retirar a ","(virgula).

    O valor tem que ser exatamente o mesmo.

    Eu trato o valor como como Tipo de Dado String e retirou a virgula com Format(sValorBL, "0000000000"), você so repara no números de digitos que o campo Valor do boleto suporta, as duas ultimas são os centavos.

    No seu caso ficaria assim:

    sValorBL = 161,26

    Valor = Format(sValorBL, "0000000000")

    ficaria assim seu Valor = 0000016126

     

    Espero que tenha ajudado de alguma forma.

    Friday, October 10, 2008 12:21 PM
  • Olá pessoal,

    Eu tb estou usando a função em questão. Mas estou tendo problemas.

    Gostaria que vocês me orientassem quais valores devo passar para os parâmetros:

     

    Função Monta_CodBarras
    Private Function Monta_CodBarras(ByVal Banco As String, ByVal Moeda As String, ByVal valor As Single, ByVal vencimento As Date, ByVal Livre As String)

            Dim codigo_sequencia As String
            Dim database As Date
            Dim fator As Integer
            Dim intDac As Integer

            'database para calculo do fator
            database = CDate("7/10/1997")
            'fator = DateDiff("d", database, Format(vencimento, "dd/MM/yyyy"))
            fator = DateDiff("d", database, CDate(vencimento))
            valor = Int(valor * 100)
            'Livre = Format(Livre, "0000000000000000000000000")

            ' sequencia sem o DV
            codigo_sequencia = Banco & Moeda & fator & Format(valor, "0000000000") & Livre

            ' calculo do DV
            intDac = calcula_DV_CodBarras(codigo_sequencia)

            ' monta a sequencia para o codigo de barras com o DV
            Monta_CodBarras = Left(codigo_sequencia, 4) & intDac & Right(codigo_sequencia, 39)

        End Function

     

    Quem é esse parâmetro Livre?

     

    Função Calcula_DV_CodBarras
    Private Function calcula_DV_CodBarras(ByVal sequencia As String) As Integer

            Dim intContador, intNumero, intTotalNumero As Integer
            Dim intMultiplicador, intResto, intresultado As Integer
            Dim caracter As String

            intMultiplicador = 2

            For intContador = 1 To 43
                'For intContador = 1 To 44
                caracter = Mid(Right(sequencia, intContador), 1, 1)
                If intMultiplicador > 9 Then
                    intMultiplicador = 2
                    intNumero = 0
                End If
                intNumero = caracter * intMultiplicador
                intTotalNumero = intTotalNumero + intNumero
                intMultiplicador = intMultiplicador + 1
            Next

            intResto = intTotalNumero Mod 11

            intresultado = 11 - intResto

            If intresultado = 10 Or intresultado = 11 Then
                calcula_DV_CodBarras = 1
            Else
                calcula_DV_CodBarras = intresultado
            End If

        End Function

     

    Quem é esse parâmetro Sequencia?

     

    Função Linha_Digitavel
    Function Linha_Digitavel(ByVal sequencia As String, ByVal DV_CodBarras As String, ByVal valor As Single) As String

            Dim seq1 As String
            Dim seq2 As String
            Dim seq3 As String

            Dim dv1, dv2, dv3 As Integer

            'separa a sequencia e prepara o valor
            seq1 = Left(sequencia, 9)
            seq2 = Mid(sequencia, 10, 10)
            seq3 = Right(sequencia, 10)
            valor = Int(valor * 100)

            ' calcula os dvs
            dv1 = Val(Calculo_DV10(seq1))
            dv2 = Val(Calculo_DV10(seq2))
            dv3 = Val(Calculo_DV10(seq3))

            'formata a sequencia
            seq1 = Left(seq1 & dv1, 5) & "." & Right(seq1 & dv1, 5)
            seq2 = Left(seq2 & dv2, 5) & "." & Right(seq2 & dv2, 6)
            seq3 = Left(seq3 & dv3, 5) & "." & Right(seq3 & dv3, 6)

            Linha_Digitavel = seq1 & " " & seq2 & " " & seq3 & " " & DV_CodBarras & " " & Format(valor, "00000000000000")

        End Function

     

    Quem é o parâmetro Sequencia?

     

    Ao gerar este boleto e enviá-lo para o banco a resposta é que código de barras, nosso número e linha digitável estão errados.

    Como resolver isso?

    Tuesday, May 24, 2011 4:35 PM