BOLETO BB

FUTURA 13/03/2023 18:22:41
#501129
Pessoal, alguém tem a rotina de geração de boleto BB em vb ou vb.net pra disponibilizar ?, tenho do bradesco e sicoob, caso alguém queira trocar. Estou desenvolvendo do BB, mas não estou chegando no cálculo correto do código de barras e linha digitável.
MFLAVIO 14/03/2023 09:29:35
#501130
Resposta escolhida
Citação:

:
Pessoal, alguém tem a rotina de geração de boleto BB em vb ou vb.net pra disponibilizar ?, tenho do bradesco e sicoob, caso alguém queira trocar. Estou desenvolvendo do BB, mas não estou chegando no cálculo correto do código de barras e linha digitável.


Hum eu tenho uma classe que gera boletos e tem do BB

vou postar os principais campos do BB
qualquer duvida da um toque
Gerara NOsso NUmero
      Private Function GeraNossoNumero(NN As String) As String
Dim Convenio As String = Dados_banco.CODempresa
If Len(Convenio) > 7 Then
Convenio = Convenio.Substring(0, 6)
End If
Dim RetNN As String = Convenio & NN
Dim DV As Integer = Calculo_DV11(RetNN, "Livre")
If DV < 10 Then
Return RetNN & "-" & DV
ElseIf DV = 10 Then
Return RetNN & "-X"
ElseIf DV = 0 Then
Return RetNN & "-0"
Else
Return RetNN & "-?"
End If
End Function

Gerar Linha Digitavel
      Public Function GeraLinhaDigitavel(boletoObj As BoletoBBObj) As String
Dim Campo1 As String = "AABCCCCCX"
Dim Campo2 As String = "DDDDDDDDDDY"
Dim Campo3 As String = "EEEEEEEEEEZ"
Dim DV As String = "K"
Dim Campo5 As String = "UUUUVVVVVVVVVV"
Dim BBDV As String = cBarras
Dim sLINHA As String
Dim Valor As String = boletoObj.ValorTitulo.ToString.Replace(",", "")
Valor = Valor.Replace(".", "")
Valor = Valor.PadLeft(10, "0")

BBDV = cBarras.Substring(19, 5)
Campo1 = _CodigoBanco & _CodigoMoeda & BBDV
DV = CalcularDAC_Mod10(Campo1)
Campo1 &= DV

BBDV = cBarras.Substring(24, 10)
DV = CalcularDAC_Mod10(BBDV)
Campo2 = BBDV & DV

BBDV = cBarras.Substring(34, 10)
DV = CalcularDAC_Mod10(BBDV)
Campo3 = BBDV & DV

Campo5 = CalcularFatorVencimento(boletoObj.DataVencimento) & Valor

BBDV = cBarras.Substring(4, 1)
DV = BBDV
sLINHA = Campo1 & Campo2 & Campo3 & DV & Campo5

Return FormataString("#####.##### #####.###### #####.###### # ##############", sLINHA)
End Function

Gerar CD Barras
Public Function GerarCodigoDeBarras(boletoObj As BoletoBBObj) As String
Dim codeBARR As String = ""
Dim Fator As String = CalcularFatorVencimento(boletoObj.DataVencimento)
Dim Valor As String = boletoObj.ValorTitulo.ToString.Replace(",", "")
Valor = Valor.Replace(".", "")
Valor = Valor.PadLeft(10, "0")
Dim carteira As String = Dados_banco.Carteira
Dim NN As String = Dados_banco.CODempresa & boletoObj.NossoNumero
codeBARR = _CodigoBanco & _CodigoMoeda & "?" & Fator & Valor & "000000" & NN & carteira
Dim DV As String = CalcularDAC_Mod11(codeBARR.Replace("?", ""))
codeBARR = codeBARR.Replace("?", DV)

cBarras = codeBARR
Return codeBarr.ToString
End Function
DAC Mod11
      Public Function CalcularDAC_Mod11(codigoBarra As String) As Integer
Dim dacArr = RemoveNonNumeric(codigoBarra).Select(Function(x) Integer.Parse(x)).ToArray
Dim j, sum As Integer
j = 2
For i = dacArr.Length - 1 To 0 Step -1
sum += dacArr(i) * j
j = If(j = 9, 2, j + 1)
Next
Dim DAC = 11 - (sum Mod 11)
Return If(DAC = 0 Or DAC = 11 Or DAC = 10, 1, DAC) "Se o resultado desta for igual a 0, 1, 10 ou 11, considere DAC = 1
End Function

DAC Mod10
     Public Function CalcularDAC_Mod10(campo As String) As Integer
Dim dacArr = RemoveNonNumeric(campo).Select(Function(x) Integer.Parse(x)).ToArray
Dim j, totalSum As Integer
j = 2
For i = dacArr.Length - 1 To 0 Step -1
Dim sum = (dacArr(i) * j).ToString.Select(Function(x) Integer.Parse(x)).ToArray
For Each n As Integer In sum
totalSum += n
Next
j = If(j = 2, 1, 2)
Next
Dim dac = 10 - (totalSum Mod 10)
Return If(dac = 10, 0, dac) " Se o resultado da etapa d for 10, considere o DAC = 0.
End Function
FUTURA 15/03/2023 10:42:34
#501140
Colega, eu consegui ajustar minhas rotinas, de qq forma agradeço sua colaboração.
Tópico encerrado , respostas não são mais permitidas