Jump to content
Fivewin Brasil

boletos banco do brasil


marcioe

Recommended Posts

amigos alguem tem algo para emissao de boletos banco do brasil

Estava usando a cobrebem, mas o nome deveria ser COBRERUIM, pois o suporte é nota -10

Será que alguem fez para o banco do brasil, (gerando o boleto, gerando remessa e recebendo retorno)

que possa postar o código

Link to comment
Share on other sites

Olá Colegas,

Estou terminando uma rotina completa para o Banco do Brasil, desde a geração do boleto, a emissão de remessa/retorno pelo banco quando a carteira for com registro. A rotina não usará nenhuma DLL externa, facilitando assim a implementação.

Assim que estiver pronta colocarei a informação aqui no FORUM.

Abraços,

Link to comment
Share on other sites

50% de cada,

A dificuldade de conseguir algo, Principalmente na cobrebem.

Alias os Boletos são pouco documentados aqui, ou quem tem nao se preocupa em compartinhar.

Se tiver como postar como esta gerando Boletos do Banco do brasil, ou o source da sua rotina

Link to comment
Share on other sites


#include "common.ch" // hb_sendmail

FUNCTION Main()

LOCAL oWnd, oAcx

cVersao:="1.2 d"

SETCURSOR(0) // Desliga a apresenta‡„o do cursor.

SET(_SET_CONSOLE, .F.) // Desliga a apresenta‡„o de sa¡das de comandos.

SET(_SET_DATEFORMAT,"DD/MM/YYYY") // Coloca vari veis data no formato dd/mm/aa.

SET CENTURY ON

SET EPOCH TO 1930

SET(_SET_DELETED, .T.) // Ignora os registros deletados no processamento.

SET(_SET_CANCEL, .F.) // Desliga a op‡„o de saida por Alt+C

SET(_SET_WRAP, .T.)

SET(_SET_SCOREBOARD, .F.)

SET(_SET_EXACT, .T.)

SET DECIMALS TO 2

RegisterServer( "CobreBemX.ocx" )

ExemploCBXBoleto()

return nil

********************************************************************************

STATIC FUNCTION ExemploCBXBoleto()

LOCAL oCBX, oBoleto

/*

Gere um novo arquivo de licença para a carteira 18-7 e

preencha as propriedades de configuração conforme tabela abaixo,

sendo que caso o valor seja menor que a máscara, deverá ser completado com zeros a esquerda:

Propriedades de Configuração:

Propriedade Conteúdo Formato

CodigoAgencia Agência 0000-A

NumeroContaCorrente Conta Corrente 00000000-A

CodigoCedente Código do Convênio 0000000

OutroDadoConfiguracao1 Variação da Carteira 000

OutroDadoConfiguracao2 Sigla do Cedente AAAAAAAAAA

Somente utilizado para remessa de arquivo com o layout CBR454

InicioNossoNumero Início Nosso Número 0000000000

FimNossoNumero Fim Nosso Número 0000000000

Faça os testes e qualquer dúvida, retorne o contato.

*/

// http://www.cobrebem.com.br/suportecbx.html

// http://www.cobrebem.com/cgi-bin/GeraArquivoLicencaTeste

FOR n := 1 to 20

Alert( 'Fazendo o Boleto de No. ' + strzero(n,3))

// Necessário efetuar download da lib TOleAuto em http://www.cobrebem.com/downloads/cbx/hbole.zip

oCBX := TOleAuto():New("CobreBemX.ContaCorrente")

xTipo:= Valtype(oCBX)

If Valtype( oCBX ) <> "O"

Alert( "Erro...")

Endif

*=============== Instruções de Cobrança

/* if boleto->taxa > 0

oBoleto:ValorOutrosAcrescimos := boleto->taxa

endif

if cDados[1]>0

nVMulta:=round((boleto->valor*cDados[1])/100,2)

cInstru+='APOS VENCIMENTO COBRAR MULTA R$ '+transform( nVMulta, '@E 99,999.99')+'

endif

if cDados[2]>0

nVlrMora:=((boleto->Valor*cDados[2])/100)

cInstru+='APOS VENCIMENTO COBRAR JUROS DIARIOS DE R$ '+transform(nVlrMora,'@E 99,999.99')+'

endif

cInstru+=cDados[3]

cInstru+=cDados[4]

cInstru+=cDados[5]

oCBX:PadroesBoleto:InstrucoesCaixa:=cInstru

*============= TIPOS DE RECIBO =================================================

if cDados[6]=1

mcct = grava_html()

oCBX:PadroesBoleto:PadroesBoletoImpresso:LayoutBoleto = "PadraoReciboPersonalizado"

oCBX:PadroesBoleto:PadroesBoletoImpresso:HTMLReciboPersonalizado := mCCt

oCBX:PadroesBoleto:PadroesBoletoImpresso:LayoutBoleto = "Padrao" // margem sup 10 ok mas sai 2 vias primeira zerada esse nao da

oCbx:PadroesBoleto:PadroesBoletoImpresso:margemsuperior := 20

oCBX:PadroesBoleto:PadroesBoletoImpresso:LayoutBoleto = "Invertido" // deu certo com 20 mas mesma ideia do de cima

oCBX:PadroesBoleto:PadroesBoletoImpresso:LayoutBoleto = "CarnetReciboLateralDireita" //Ok - mas sai 1 zerado devido precisar de mais vias na folha

oCBX:PadroesBoleto:PadroesBoletoImpresso:LayoutBoleto = "CarnetReciboLateralEsquerda" // Ok- mas sai 1 zerado devido precisar de mais vias na folha

oCBX:PadroesBoleto:PadroesBoletoImpresso:LayoutBoleto = "PadraoReciboPersonalizado" // Ok - mas sai 1 zerado

oCBX:PadroesBoleto:PadroesBoletoImpresso:LayoutBoleto = "InvertidoReciboPersonalizado" // Ok mas sai 1 zerado

oCbx:PadroesBoleto:PadroesBoletoImpresso:margemsuperior := 20

oCBX:PadroesBoleto:PadroesBoletoImpresso:LayoutBoleto = "PadraoEnderecadoVerso" // Ok mas sai 1 zerado

oCbx:PadroesBoleto:PadroesBoletoImpresso:margemsuperior := 20

oCBX:PadroesBoleto:PadroesBoletoImpresso:LayoutBoleto = "InvertidoEnderecadoVerso" // Ok mas sai 1 zerado

oCBX:PadroesBoleto:PadroesBoletoImpresso:LayoutBoleto = "PadraoVersoPersonalizado" // Ok mas sai 1 zerado

oCBX:PadroesBoleto:PadroesBoletoImpresso:LayoutBoleto = "InvertidoVersoPersonalizado"

oCBX:PadroesBoleto:PadroesBoletoImpresso:LayoutBoleto = "PadraoVersoPersonalizadoReciboPersonalizado"

oCBX:PadroesBoleto:PadroesBoletoImpresso:LayoutBoleto = "InvertidoVersoPersonalizadoReciboPersonalizado"

oCBX:PadroesBoleto:PadroesBoletoImpresso:LayoutBoleto = "CarnetReciboLateralDireitaPersonalizado" // tem q personalizar o recibo

oCBX:PadroesBoleto:PadroesBoletoImpresso:LayoutBoleto = "CarnetReciboLateralEsquerdaPersonalizado" // Tem q personalizar o Recibo

oCBX:PadroesBoleto:PadroesBoletoImpresso:LayoutBoleto = "PadraoEnderecadoVersoReciboPersonalizado" // ok mas meio estranho

oCBX:PadroesBoleto:PadroesBoletoImpresso:LayoutBoleto = "InvertidoEnderecadoVersoREciboPersonalizado" // Ok mas meio estranhos

*/

// Monta arquivo de licenca BB Convenio 18 por 7 posiçoes

/*

oCBX:ArquivoLicenca := CurDirSys() + "licencas\00000000000146-001-18-7.conf" // Carteira 18 com 7 Posicoes

*/

// Outras Configuracoes

oCBX:PadroesBoleto:PadroesBoletoImpresso:ArquivoLogotipo := curdirsys()+"Imagens\suaimagem.gif"

oCbx:PadroesBoleto:PadroesBoletoImpresso:margemsuperior := 10

oCBX:PadroesBoleto:PadroesBoletoImpresso:CaminhoImagensCodigoBarras := curdirsys()+"Imagens\"

mcct = grava_html()

oCBX:PadroesBoleto:PadroesBoletoImpresso:LayoutBoleto = "PadraoReciboPersonalizado"

oCBX:PadroesBoleto:PadroesBoletoImpresso:HTMLReciboPersonalizado := mCCt

oCBX:PadroesBoleto:InstrucoesCaixa := "Conceder desconto de 5%"

oCBX:PadroesBoleto:Demonstrativo := "Referentes a compras na Web"

// Monta dados da conta corrente

oCBX:CodigoAgencia := '0000-3'

oCBX:NumeroContaCorrente := '0000004-7'

oCBX:CodigoCedente := '0000007' // Código do Convenio 7 posições BB

oCBX:LocalPagamento := "Pagável em qualquer banco até o vencimento"

nSequenciaNossoNumero := 0 + n && n ‚ do FOR

nSequenciaNossoNumero := STR( nSequenciaNossoNumero, 6 )

oCBX:OutroDadoConfiguracao1 := '027' && Variacao da Carteira 027

oCBX:OutroDadoConfiguracao2 := 'AAAAAAAAAA'

oCBX:InicioNossoNumero := strzero(8, 10)

oCBX:FimNossoNumero := '9999999999'

oCBX:ProximoNossoNumero := strzero(8,10)

*===============================================================================

//oCBX:DocumentosCobranca:Add()

oBoleto := oCBX:DocumentosCobranca:Add()

// Para fazer o X mai£sculo

MDados := oBoleto:MeusDados:Add()

MDados:Nome := "NumeroBancoXMaiusculo"

MDados:Valor := "X"

// Monta dados do sacado

oBoleto:NomeSacado := "Nome do Sacado TESTE"

oBoleto:CPFSacado := '11111111111'

oBoleto:EnderecoSacado := 'Rua Teste, 1023'

oBoleto:BairroSacado := 'CENTRO'

oBoleto:CidadeSacado := 'NOME DA CIDADE'

oBoleto:EstadoSacado := 'SP'

oBoleto:CepSacado := '00000000'

// Monta dados do documento de cobrança

oBoleto:DataDocumento := TRANSF( Date() ,'@E 99/99/9999' ) //"02/05/2012"

oBoleto:DataProcessamento := TRANSF( Date() ,'@E 99/99/9999' ) //"03/05/2012"

oBoleto:DataVencimento := TRANSF( Date() + n*10 ,'@E 99/99/9999' )//"21/05/2012"

oBoleto:NumeroDocumento := 'TESTE.'+ STRZERO(n,3) //"12345"

oBoleto:ValorDocumento := n * 8

oBoleto:ValorDesconto:= {'0','1'}[n%2+1] // Pega Par ou Impar

oBoleto:ValorjurosdiaAtraso := 0

oBoleto:TipoDocumentoCobranca :='DM'

/* IMPRIME */

lPreviewLocal := .T.

If lPreviewLocal

oCBX:ImprimeBoletos() // Visualiza e permite direcionar impressão

Else

oCBX:ImprimeBoletosSemPreview() // Assim vai na impressora Default

Endif

oCBX := NIL

NEXT

RETURN( NIL )

FUNCTION Grava_HTML()

********************************************************************************

Local cHTML

cHTML := '<table border=0 cellpadding=0 cellspacing=0 width=730><tr><td width=40% valign=bottom height=60><p align=left><#LogotipoCedente></td><td width=25% valign=bottom><p align=center><font size=2><b>Comprovante de Entrega</b></font></td></tr></table> '+ CHR(13) + CHR(10) +;

'<table border=1 cellpadding=1 cellspacing=0 width=730><tr><td colspan=3 width=320><table border=0 cellpadding=0 cellspacing=0 width=100%><tr><td width=100%><font size=1>Cedente</font></td></tr><tr><td width=100%><font size=2><b><#NomeCedente></b></font></td></tr></table> '+ CHR(13) + CHR(10) +;

'</td><td width=168><table border=0 cellpadding=0 cellspacing=0 width=100%><tr><td width=100%><font size=1>Agência/Código Cedente</font></td></tr><tr><td width=100%><p align=center><font size=2><b><#AgenciaCodigoCedente></b></font></td></tr></table> '+ CHR(13) + CHR(10) +;

'</td><td width=146><table border=0 cellpadding=0 cellspacing=0 width=100%><tr><td width=100%><font size=1>Vencimento</font></td></tr><tr><td width=100%><p align=center><font size=2><b><#Vencimento></b></font></td></tr></table> '+ CHR(13) + CHR(10) +;

'</td></tr><tr><td width=320 colspan=3><table border=0 cellpadding=0 cellspacing=0 width=100%><tr><td width=100%><font size=1>Sacado</font></td></tr><tr><td width=100%><font size=2><b><#NomeSacado></b></font></td></tr></table> '+ CHR(13) + CHR(10) +;

'</td><td width=168><table border=0 cellpadding=0 cellspacing=0 width=100%><tr><td width=100%><font size=1>Número do Documento</font></td></tr><tr><td width=100%><p align=center><font size=2><b><#NumeroDocumento></b></font></td></tr></table> '+ CHR(13) + CHR(10) +;

'</td><td width=146><table border=0 cellpadding=0 cellspacing=0 width=100%><tr><td width=100%><font size=1>Nosso Número</font></td></tr><tr><td width=100%><p align=center><font size=2><b><#NossoNumeroExibicao></b></font></td></tr></table> '+ CHR(13) + CHR(10) +;

'</td></tr><tr><td width=66><table border=0 cellpadding=0 cellspacing=0 width=100%><tr><td width=100%><font size=1>Espécie</font></td></tr><tr><td width=100%><p align=center><font size=2><b%2

Link to comment
Share on other sites

Parte da Remessa:

//------------------------------------------------------------------------------

Function MontaLoteRemessa()
   LOCAL cCodigoBanco

    PRIVATE oBlt := TBoletoCBx():New() //-> Carrega Classe Boleto p/CobreBem

    Boletos->(OrdSetFocus('boletos4'))
    cCodigoBanco := ''
    cID := ''

    WHILE !EOF()
        IF !EMPTY(BltRemessa->Marcado) //--> Faz os Marcados somente
            Boletos->( DbSeek(BltRemessa->NossoNr) )
            Mensag("Aguarde, gerando remessa para o boleto n§ " + Boletos->NumDocto  )
            IF cCodigoBanco != Boletos->Codigo
                cCodigoBanco := Boletos->Codigo // Mudou

                IF !EMPTY(cID)
                    // Grava Nr. Lote (ID) NOS BOLETOS
                ENDIF

                ConfDpl->( DBSEEK(Boletos->Codigo) )
    
                *-- Configura‡äes Boleto
                oBlt:cArqLicenca    := ALLTRIM(ConfDpl->ArqLic)
                oBlt:nMargemSup     := ConfDpl->MargemSup
                oBlt:nTipoReciboBlt := ConfDpl->TpReciboBl
                
                *-- Dados da conta corrente
                oBlt:cCodigoAgencia          := Alltrim(ConfDpl->Agencia)    // '0000-5'
                oBlt:cNumeroContaCorrente    := Alltrim(ConfDpl->Conta  )    // '0000004-0'
                oBlt:cCodigoCedente          := Alltrim(ConfDpl->CodCedente) // '0000007'
                oBlt:cLocalPagamento         := Alltrim(ConfDpl->LocalPg)
                oBlt:cOutroDadoConfiguracao1 := Alltrim(ConfDpl->OutraCfg1)  //'027'          && Variacao da Carteira 027
                oBlt:cOutroDadoConfiguracao2 := Alltrim(ConfDpl->OutraCfg2)  //'AAAAAAAAAA'
                oBlt:cFimNossoNumero         := PADC('', ConfDpl->TamNossoNr-1, '9')  //'99999' sicredi ou '999999999' BB
                oBlt:cInicioNossoNumero      := STRZERO(1, ConfDpl->TamNossoNr-1)
    
                *-- Monta dados referentes ao arquivo de remessa
                ConfDpl->(Bloqreg(0))
                ConfDpl->IDRemessa := ConfDpl->IDRemessa + 1
                ConfDpl->(DesbloqReg(0))
                
                cID := STRZERO(ConfDpl->IDRemessa,6)
                oBlt:cRemessaNomeArquivo := cID + '_' + Dt2NmArq(Date()) +'.REM'
                oBlt:cRemessaPathDestino := ALLTRIM(ConfDpl->DestinoRem)
                oBlt:cRemessaLayout      := ALLTRIM(ConfDpl->LayoutRem) // "FEBRABAN240"

                oBlt:CarregaLicenca()            
                oBlt:OutrasConfiguracoes()
                oBlt:MontaDadosContaCorrente()
                oBlt:CarregaRecibo()
                oBlt:CarregaConfEmail()
            ENDIF
            oBlt:cProximoNossoNr := Boletos->NossoNr
    
            PreparaBoleto( , , Boletos->Instr1,   ;
                                     Boletos->Instr2,   ;
                                     Boletos->Instr3,   ;
                                     Boletos->Instr4,   ;
                                     Boletos->MsgDemons,;
                                     Boletos->Aceite,   ;
                                     Boletos->NumDocto, ;
                                     Boletos->NossoNr,  ;
                                     Boletos->Cliente, ;
                                     Boletos->DataDoc,  ;
                                     Boletos->DataProc, ;
                                     Boletos->DataVenc, ;
                                     Boletos->Valor,    ;
                                     Boletos->Descto,   ;
                                     Boletos->JurosDia, ;
                                     Boletos->Especie )
             Boletos->(BloqReg(0))
             Boletos->DtRemessa := Date()
             Boletos->IDRemessa := cID
             Boletos->StatusRem := 'GR' // NG Nao Gerado, GR Gerado, RB Registrado Bco, NE Negado, LQ LiQuidado
        ENDIF
        BltRemessa->( DBSKIP() )
    ENDDO

    IF !EMPTY(cID)
        oBlt:GeraArqRemessaBanco()
        //-- Aki daria pra fazer abrir a aplicação do Banco já pra gerar a Remessa Bancária.
        Alert('Arquivo de Remessa gerado com Sucesso!;Nao se esqueça de enviar ao Banco', aOk, 'W+/B')
    ENDIF
    
    oBlt:End()
RETURN NIL


Essa Classe é uma q eu montei com base em exemplos do CobreBem e de colegas, se vc não conseguir com os exemplos acima terei que dar uma filtrada no código da Classe pra poder postar, me avise se for o caso, mas em suma na parte que é chamado o método GerarArqRemessaBanco() o q é feito é o seguinte:

//------------------------------------------------------------------------------
METHOD GeraArqRemessaBanco() CLASS TBoletoCBx
::oCBX:ArquivoRemessa:Arquivo := ::cRemessaNomeArquivo
::oCBX:ArquivoRemessa:Diretorio := ::cRemessaPathDestino
::oCBX:ArquivoRemessa:Layout := ::cRemessaLayout
IF ! DirExist( ::cRemessaPathDestino )
DIRMAKE( ::cRemessaPathDestino )
ENDIF
::oCBX:GravaArquivoRemessa()
RETURN NIL
[]´s
Link to comment
Share on other sites

Amigo, obrigado por tentar me ajudar.

Fiz assim, copiei literalmente o que Voce postou.

e gerei o boleto e tentei pagar ele no meu internet bank, mas dá que o código de baras está invalido.

boleto_bb_teste_cobrebemx.jpg

http://postimg.org/image/5bdlg887h/full/

http://postimg.org/image/5bdlg887h/full/

imagem do boleto

Código de barras 00190.00009 07000.090006 00000.004-10 1 63150000007100 que o Cobrebem Gerou

Local para testar o código de barras caso nao tenha INTERNET BANK http://evandro.net/codigo_barras.html OU http://www.f2b.com.br/VerifyBoleto

OU NO BANCO ONDE TENHA CONTA

Se nao for pedir demais posta dados para contato...

Link to comment
Share on other sites

  • 2 weeks later...

Para ficar registrado entrei em contato com o colega Marcio e passei algumas configurações q defino aki no código postado e segundo ele gerou e parece q deu certo, mas qualquer coisa se não o mesmo pode retomar a discussão aki pra vermos se resolvemos.

abaixo seguem as informações q passei ao Márcio via e-mail:

Em resumo ... banco mandou um print dizendo q o convenio era 11-7, ai geramos novamente a licença para o convenio correto no caso deste cliente 11-7.
Apos isto apenas configuramos no sistema as informações q o Cobrebem necessita para rotina q te mandei, abaixo segue tela q usamos.
.... não consigo colocar a imagem então vou descrever o q tem na imagem....
QUAL IMP DE BOLETOS: <<NOME DA IMPRESSORA>>
LOCAL DE PAGAMENTO: TESTE (VC DEFINE JUNTO AO USUARIO DO SISTEMA)
NOME ARQ. LICENÇA COBREBEM: 01234567890123-001-11-7.CONF (FORNECIDO COBREBEM)
NOSSO NUMERO ATUAL: 1
MARGEM SUP: 10
COD. CEDENTE: 2026507 (FORNECIDO BANCO)
NUMERO DO BANCO: 001 (BB)
NOME DO BANCO: BANCO DO BRASIL S/A
NUMERO DA AGENCIA: 5001-2
NUMERO DA CONTA...: 00001020-7
TIPO DOC COBRANCA: DM
TAMANHO NOSSO NR: 10 (POSICOES)
OUTRA CONFIGURACAO 1 = 019 (É UMA PROPRIEDADE DO OBJETO DO COBREBEM)
OUTRA CONFIGURACAO 2 = AAAAAAAAAA (OUTRA PROPRIEDADE DO OBJ DO COBREBEM Q VARIA DE ACORDO COM O BANCO)

[]´s

Link to comment
Share on other sites

Amigos aparentemente deu certinho

o cliente testou e pelo menos no banco passou o pagamento

bolto_exemplo.jpg

FIZ ASSIM NO MEU CÓDIGO

		*---Apenas banco do Brasil-----------------------------------------------------------------------
		IF VAL(T_NUME_BANCO) = 001 &&& Se for do Banco Bradesco, o Código da Agencia Tem que ir com o HIFEM, bem como o numero do cedente
			oCBX:OutroDadoConfiguracao1 := ALLTRIM(bancos->CONFIGURACAO_EXTRA_1)          && Variacao da Carteira 027
			oCBX:OutroDadoConfiguracao2 := ALLTRIM(bancos->CONFIGURACAO_EXTRA_2)
			oCBX:CodigoAgencia          := ALLTRIM(bancos->AGENCIA)+'-'+ALLTRIM(bancos->DIGITO_AGENCIA) &&&&&'0000-3'
			oCBX:NumeroContaCorrente    := ALLTRIM(bancos->CONTA) +'-'+ ALLTRIM(bancos->DIGITO_CONTA) &&&&'0000004-7'
			oCBX:CodigoCedente          := ALLTRIM(bancos->CODIGO_CEDENTE)  &&&'0000007'    // Código do Convenio 7 posições BB
			oCBX:InicioNossoNumero      := strzero(8,10) 
			oCBX:FimNossoNumero         := '9999999999'
			oCBX:ProximoNossoNumero     := strzero(8,10)
			*------------------------------------------------------------------------------------			
			oCBX:PadroesBoleto:InstrucoesCaixa := "Conceder desconto de 5%"
			oCBX:PadroesBoleto:Demonstrativo   := "Referentes a compras na Web"
			// Monta dados da conta corrente
			oCBX:LocalPagamento         := "Pagável em qualquer banco até o vencimento"
			nSequenciaNossoNumero       := 0  + 1  && n ‚ do FOR
			nSequenciaNossoNumero       := STR( nSequenciaNossoNumero, 6 )
		ENDIF

Agradecimentos a todos os amigos

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...