Banco do Brasil - Carteira 18-019

Nov 26, 2012 at 1:06 PM

Bom dia pessoal, tudo bom?

Pessoal eu já uso o Boleto.Net há um tempo, e primeiro gostaria de parabenizar toda a equipe pelo projeto.

Estou tentando utilizar o Boleto do Banco do Brasil, usando a carteira 18, variação 019, porém o código de barras gerado é gerado errado (pelo que analise é o nosso número que desorganiza o código).

Passei todos os parâmetros corretamente, inclusive o código do convênio, mas mesmo assim continua dando errado.

Gostaria de saber se alguém já passou por esse problema, ou se essa carteira está homologada pelo Boleto.Net ou qualquer informação que possa ajudar.

Muito obrigado, abraço a todos.

Developer
Nov 30, 2012 at 8:02 PM

Boa tarde, celsogarcia.

Qual a versão que você está utilizando e quando você baixou?

Abraços,

Dec 2, 2012 at 8:09 PM

Olá Jsoda, tudo bom?

Poxa valeu para responder. Eu baixei o ultimo Source Code, o do dia 27.

Eu preciso usar a Carteira 18-019, porém quando a uso, o código de barras gerado é:

00193.00003 00000.126862 00080.645187 4 10098527

Ai pensei em usar a carteira apenas 18, e o código de barras gerado é:

00190.00009 00000.126862 00080.645187 8 55350000000100

Ou seja, no primeiro código de barras não sai números válidos e no segundo ele não insere o código do cedente.

Eu estou instanciando assim:

string numeracaoBoleto = "0000000001";

Cedente cedente = new Cedente("85.231.415/0001-29", "Empresa de Teste", "2686", "7", "80645", "5");               

cedente.Convenio = 0985273;

Boleto boleto = new Boleto(vencimento, Convert.ToDecimal(Request.QueryString["valor"]), "18-019", numeracaoBoleto, cedente);               

boleto.NumeroDocumento = numeracaoBoleto;

O restante são os dados padrão e eles saem corretamente. Eu estou fazendo algo de errado?

Muito obrigado, abraços.

Developer
Dec 3, 2012 at 1:35 PM

Olá celsogarcia.

Passei rapidamente o olho pelo seu código, e acho que está faltando passar o código do banco, apesar que o codigo de barras mostra 001...mas dá uma olhada como eu faço:

'Banco e Nome               = arrCONTA(0)
        'Agencia                    = arrCONTA(1)
        'Agencia D�gito             = arrCONTA(2)
        'Conta                      = arrCONTA(3)
        'Conta D�gito               = arrCONTA(4)
        'Carteira                   = arrCONTA(5)
        'Conv�nio ou C�digo Cedente = arrCONTA(6)

'Gera boleto
        intBANCO = CShort(cmbcobranca.Text.Substring(0, 3))

        'Inst�ncia da lista de boletos a serem gerados
        Dim objBOLETOBANCARIO As New BoletoBancario()
        objBOLETOBANCARIO.CodigoBanco = intBANCO

        'Inst�ncia de Cedente
        Dim objCEDENTE As New Cedente(My.Settings.Cnpj, My.Settings.Cedente, arrCONTA(1), arrCONTA(2), arrCONTA(3), arrCONTA(4))
        objCEDENTE.Convenio = CInt(arrCONTA(6))

        'Apenas pasa SANTANDER
        If intBANCO = 33 Then objCEDENTE.Codigo = CInt(arrCONTA(6))

        'Inst�ncia de Boleto
        Dim objBOLETO As New Boleto()

        'Inst�ncia de Instru��o
        Dim iteminstruc0 As New Instrucao(intBANCO)
        Dim iteminstruc1 As New Instrucao(intBANCO)
        Dim iteminstruc2 As New Instrucao(intBANCO)
        Dim iteminstruc3 As New Instrucao(intBANCO)
        Dim iteminstruc4 As New Instrucao(intBANCO)
        Dim iteminstruc5 As New Instrucao(intBANCO)

        Select Case Format(intBANCO, "000")
            Case "001" 'Banco do Brasil
                'O nosso-numero deve ser de 10 posi��es para carteira conveniada (17-019 e 18-019)
                strNOSSONUMERO = Format(lngNROBOL, "0000000000")
                objBOLETO.EspecieDocumento = New EspecieDocumento(1, 4)
            Case "033" 'Santander
                'O nosso-numero deve ser de 12 posi��es
                strNOSSONUMERO = Format(lngNROBOL, "000000000000")
                objBOLETO.EspecieDocumento = New EspecieDocumento(33, 2)
            Case "237" 'Bradesco 
                'O nosso-numero deve ser de 11 posi��es
                strNOSSONUMERO = Format(lngNROBOL, "00000000000")
                objBOLETO.EspecieDocumento = New EspecieDocumento(237, 12)
            Case "341" 'Itau
                'O nosso-numero deve ser de 8 posi��es
                strNOSSONUMERO = Format(lngNROBOL, "00000000")
                objBOLETO.EspecieDocumento = New EspecieDocumento(341, 8)
        End Select

        objBOLETO.DataVencimento = datDTVCTO
        objBOLETO.ValorBoleto = CDec(dblVLBOL)
        objBOLETO.Carteira = arrCONTA(5)
        objBOLETO.NossoNumero = strNOSSONUMERO
        objBOLETO.Cedente = objCEDENTE

        'O n� do documento deve ser de 10 posi��es
        objBOLETO.NumeroDocumento = Format(lngNROBOL, "0000000000") 'strBOLETONRODOC
        objBOLETO.Sacado = New Sacado(udtSACADO.cpfcnpj, udtSACADO.nomerazao)
        objBOLETO.Sacado.Endereco.End = udtSACADO.endereco
        objBOLETO.Sacado.Endereco.Bairro = udtSACADO.bairro
        objBOLETO.Sacado.Endereco.Cidade = udtSACADO.localidade
        objBOLETO.Sacado.Endereco.CEP = udtSACADO.cep
        objBOLETO.Sacado.Endereco.UF = udtSACADO.uf

        iteminstruc0.Descricao = " "
        iteminstruc1.Descricao = strINSTRUC1
        iteminstruc2.Descricao = strINSTRUC2
        iteminstruc3.Descricao = strINSTRUC3
        iteminstruc4.Descricao = strINSTRUC4
        iteminstruc5.Descricao = strINSTRUC5

        objBOLETO.Instrucoes.Add(iteminstruc1)
        objBOLETO.Instrucoes.Add(iteminstruc2)
        objBOLETO.Instrucoes.Add(iteminstruc3)
        objBOLETO.Instrucoes.Add(iteminstruc0) 'Linha em branco para separar instru��es do banco
        objBOLETO.Instrucoes.Add(iteminstruc4)
        objBOLETO.Instrucoes.Add(iteminstruc5)

        objBOLETOBANCARIO.Boleto = objBOLETO
        objBOLETOBANCARIO.MostrarComprovanteEntrega = My.Settings.Comprovante
        objBOLETOBANCARIO.MostrarComprovanteEntregaLivre = My.Settings.Comprovante

        Try
            objBOLETOBANCARIO.Boleto.Valida()
        Catch ex As Exception
            MsgBox(ex.Message, MsgBoxStyle.Critical)
        End Try

        Dim objLISTBOLETOS As New List(Of BoletoBancario)
        objLISTBOLETOS.Add(objBOLETOBANCARIO)

        GeraLayout(objLISTBOLETOS)

        objLISTBOLETOS = Nothing
        iteminstruc5 = Nothing
        iteminstruc4 = Nothing
        iteminstruc3 = Nothing
        iteminstruc2 = Nothing
        iteminstruc1 = Nothing
        iteminstruc0 = Nothing
        objBOLETO = Nothing
        objCEDENTE = Nothing
        objBOLETOBANCARIO = Nothing

        'Mostra boleto no WebBrowser
        WebBrowser.Navigate(strARQUIVO)

        'Existe n� de CTR duplicado
        If booERRO Then
            strMSGERR = "Inconsist�ncias foram encontradas na gera��o do BOLETO, verifique : " & vbCrLf & vbCrLf
            strMSGERR &= "N� de CTR(s) duplicados foram encontrados" & vbCrLf
            MsgBox(strMSGERR, MsgBoxStyle.Critical, "Sistema Transpolli - Inconsist�ncias")
            btnImprimir.Enabled = False
            booERRO = False
            Exit Sub
        End If

 

Abraços,

Dec 3, 2012 at 5:42 PM

Olá Jsoda, tudo legal?

Então esse código eu coloco na minha classe mesmo correto? E não no source code que gera a .dll certo?

O que eu notei que você instanciou a Classe Boleto() e atribuiu o valor a Propriedade como 001.

Até ai compilou e deu certo, o problema é que quando executei apareceu a mensagem de erro padrão "Erro gerando o boleto bancário: faltou definir o banco.".

Quando debuguei, ele passa pelo método Valida() normal, tem alguma ideia do que possa ser?

 

Valeu, abraços.

Developer
Dec 3, 2012 at 6:59 PM

Olá celsogarcia.

Cara, vc está desenvolvendo WEB ou WINFORMS?  Se for WIN, posso te ajudar, apesar que não existem muitas diferenças - é que faz + de 7 anos que não desenvolvo em WEB.  Contate-me em "OFF" e me envie a parte do código para que eu possa analisar.

Como contatar: é só clicar no meu nome de usuário e na página vai aparecer o link para enviar e-mail.

Abraços,

Dec 3, 2012 at 7:30 PM

jsoda, caro amigo estou com o meso problema... quanto aser winforms nao tem problema ... depois dou um jeito de migrar para web... o problema é que nao to coseguindo sair do lugar do debungad fuçando e tudo mais... mas  o negócio nao vai... inclusive a titulo de informação gerei um boleto da referida carteira do programa do BB e o que se percebe-se de cara é por exemplo o valor que deveria estar no final tanto do CB quanto da LD esta antes e no final esta indo outra infromação... cmoo não sou expert posso estar falando besteira... mas é que to agoniadinho hehehe

Valeu

Developer
Dec 3, 2012 at 7:46 PM

 

Olá celsogarcia.

Sobre o código, acho que vi o problema: Pode ser o código de cedente.  No seu caso, tem 6 dígitos e pelo source e pelo manual, deve haver mais uma propriedade a ser preenchida, que seria Tipo da Modalidade.  Não trabalhei com essa carteira.

1)      Verifique no manual, qual o procedimento, ou;

2)      Contate seu gerente de conta para saber exatamente o código cedente.

 A parte da programação que escrevi é para códigos de cedente com numeração acima de 1.000.000, ou seja, 7 dígitos.

 

Espero ter ajudado,

Abraços,

Jorge Oda

Developer
Dec 3, 2012 at 7:46 PM
horse37 wrote:

jsoda, caro amigo estou com o meso problema... quanto aser winforms nao tem problema ... depois dou um jeito de migrar para web... o problema é que nao to coseguindo sair do lugar do debungad fuçando e tudo mais... mas  o negócio nao vai... inclusive a titulo de informação gerei um boleto da referida carteira do programa do BB e o que se percebe-se de cara é por exemplo o valor que deveria estar no final tanto do CB quanto da LD esta antes e no final esta indo outra infromação... cmoo não sou expert posso estar falando besteira... mas é que to agoniadinho hehehe

Valeu

Verifique o código de cedente.

Abraços,

Dec 3, 2012 at 8:09 PM

jsoda, tive olhando aqui amigo na verdade pelo menos esse exemplo que eu peguei ta doidinho.. por exemplo ele nao ta levando em consideração se o nosso numero for de tamanho 17. o cedente ele até ta pegando só do que campo código e nao do campo cedente. ta meio confuso o negócio auq hehe.. desculpe ficar amolando.. mas vou cotinuar tentando.. blz.. se pueres continuar ajudando ai desde já agradeço lbz...

Developer
Dec 3, 2012 at 9:42 PM

Olá horse37.

Desculpe....o código diz respeito à minha solução onde considero que o nosso-numero (que é o número que o banco utiliza) como o meu número, isto é, o nº do banco é o meu número, entendeu?  No final, era para limitar o nº do documento que só poderia ser de 10 posições na remessa, em casos de cobrança registrada (não é o seu caso).

Sobre o número de 17 posições, é um caso específico, já que estamos falando sobre BB, onde é definida pelo código do cedente de 6 dígitos, ou seja para convênios maiores que 9.999 até 999.999.

Você pode encontrar maiores detalhes, lendo o manual que pode ser adquirido pelo seu gerente de conta, no site do BB ou no próprio site do boleto.net.

Para entender o processo, sugiro que leia-o e selecione o que adere ao seu caso.  Se for possível, adicione o projeto boleto.net à sua solução que fica mais fácil a compreensão, sem contar que poderá aprender bastante com as diversas técnicas utilizadas.  Você pode fazer o download do código fonte.  Procure no site do boleto.net.

Abraços,

Dec 18, 2012 at 2:11 AM

Gente, estou com um problemao nessa mesma carteira, http://www.selectainstituto.com.br/Inscricao/Boletobb?i=2 vejam esse link e me digam o que está errado.

 

o codigo usado é:

 

String NumeroDocumento = Model.ID.ToString("0000000000");

        String NossoNumero = NumeroDocumento;

        Cedente c = new Cedente("08.171.794/0001-68", "Soc. Prod. Cult. Admin. e Eventos - SPCAE.", "0099", "16741");
        c.Convenio = 1455318;

        Double Valor = (double)Model.ConcursoCargo.ValorInsc;
       
        c.ContaBancaria.DigitoAgencia = "X";
        c.ContaBancaria.DigitoConta = "X";
        Boleto b = new Boleto(DateTime.Now.AddDays(2), Valor, "18", NossoNumero, c, new EspecieDocumento(1, (int)EnumEspecieDocumento_BancoBrasil.DuplicataMercantil));
       
        b.NumeroDocumento = NumeroDocumento;
        b.Sacado = new Sacado(Model.Candidato.CPF, Model.Candidato.Nome.ToUpper());
        b.Sacado.Endereco.End = Model.Candidato.Endereco.ToUpper();
        b.Sacado.Endereco.Bairro = Model.Candidato.Bairro.ToUpper();
        b.Sacado.Endereco.Cidade = Model.Candidato.Cidade.ToUpper();
        b.Sacado.Endereco.CEP = Model.Candidato.CEP;
        b.Sacado.Endereco.UF = Model.Candidato.UF.UF1;

        b.Sacado.InformacoesSacado.Add(new InfoSacado("Inscrição: " + NumeroDocumento));

        b.LocalPagamento = "Pagável em qualquer Banco até o vencimento";
       
        Instrucao_BancoBrasil Instrucao1 = new Instrucao_BancoBrasil();
        Instrucao1.Descricao = "Não receber apoós o vencimento.";
        b.Instrucoes.Add(Instrucao1);

        var bb = new BoletoNet.BoletoBancario();

        bb.CodigoBanco = 1;
        bb.Boleto = b;
       
        bb.Boleto.Valida();

         bb.MontaHtml();
       

Developer
Dec 20, 2012 at 2:14 AM

Bom dia, henricavalcante.

Você poderia me dizer qual o problema com ele?  Olhando por cima, não vejo nada de errado.

Abraços,

Feb 20, 2015 at 6:16 PM
Edited Feb 20, 2015 at 7:09 PM
Boa tarde.

Estou com uma duvida, na carteira 18-109 eu passo o 18109 e a numeração do código de barras fica errado, oque devo fazer ?
passo apenas o 18 ?

Carteira 18-019, convênio de 4 dígitos - Cobrança sem registro
Carteira 18-019, convênio de 6 dígitos - Cobrança sem registro



cod_Barras
001926348000000010000000050210345290910004358318019


Linha
00190.00009 05021.034524 90910.004358 2 63480000000100
May 8, 2015 at 3:43 PM
Estou com a mesma dúvida.
Se passo 18-019 gera erro.
Alguém poderia ajudar?
May 8, 2015 at 3:46 PM
Eu desisti, pois eu nao consegui devido a este erro.

Me interessa saber tb.

Obg, abs!

Enviado via iPhone

WN - Celso Garcia
End: Av Conselheiro Nébias 688 - sala 95
Tel: (13) 2138-9310 / 2138-9311

Em 08/05/2015, às 11:42, alexandressrocha <[email removed]> escreveu:

From: alexandressrocha

Estou com a mesma dúvida.
Se passo 18-019 gera erro.
Alguém poderia ajudar?