Página 3 de 5

MRBoleto pronto para o uso.

Enviado: 05 Abr 2014 08:29
por formiga
Você mandou a
harbour-32.dll

O sistema está pedindo a

harbour-32-bcc.dll


[]´s

MRBoleto pronto para o uso.

Enviado: 05 Abr 2014 15:54
por rochinha
Amiguinho,

Renomeia que acho que funciona.

MRBoleto pronto para o uso.

Enviado: 05 Abr 2014 20:59
por formiga
Camarada, nananina, não funcionou renomear, só mudou o erro:

Imagem

MRBoleto pronto para o uso.

Enviado: 17 Mai 2014 15:52
por Alexandre Silva
Pessoal, uso o Mr Boleto na versao 3.1 do Harbour há um ano..e tudo bem..
tem alguma atualizaçaao ?? preciso para o Banco 756 - SICOOB ....

MRBoleto pronto para o uso.

Enviado: 30 Jun 2014 21:07
por janio
Rochinha,

Meu harbour3.2 reclama da falta da função tIniFile()

MRBoleto pronto para o uso.

Enviado: 30 Jun 2014 21:28
por rochinha
Amiguinho,

tINIFile() é uma classe existente no Fivewin. Volte ao topo do tópico e a encontrará. Mas nada o impede de usar algum outro recurso que já conheça para manipular arquivos .INI.

MRBoleto pronto para o uso.

Enviado: 28 Jul 2014 10:27
por formiga
Companheiros

O MrBoleto está funcionando perfeito, exceto para o banco 033 - Santander;
não gera corretamente o código de barras nem o campo Nosso Número.

Alguém está usando o MrBoleto com o Santander ?

MRBoleto pronto para o uso.

Enviado: 28 Jul 2014 14:23
por rochinha
Amiguinho,

Se o MRBoleto gera boleto para o antigo banco Real, faça o teste, use o bloco do Real para gerar para o Santander e verifique se passa.

Boletos reais do Santander dão problemas mesmo ao ser descontados em outros bancos que não sejam Santander. A desculpa dada nos caixas para dizer que só podem ser descontados no caixa deles é que o código de barras é modelo banco Real.

MRBoleto pronto para o uso.

Enviado: 28 Jul 2014 18:10
por formiga
Rochinha

Para o Real, dá o mesmo erro que para o Santander.

Para os demais utilizados, BB, Bradesco, Itaú, perfeito.

[]´s

MRBoleto pronto para o uso.

Enviado: 03 Ago 2014 14:43
por ANDRIL
Rochinha,

Procurei no codigo fonte e não encontrei uma forma de mandar o PDF criado diretamente para impressora. Sabe me dizer quais funções da classe PDF utilizar para isso? Ao executar o DemoUm.exe abre uma tela que logo some, teria como não exibi-la?


Ate+

MRBoleto pronto para o uso.

Enviado: 03 Ago 2014 23:54
por rochinha
Amiguinho,

Nesta segunda(03/08) irei dar uma olhada, mas o aplicativo é gerenciado por arquivo externo e que pode conferir algum meio de interagir através de alguma variável.

Verifique a existencia de um preview como configuração ou parametro na linha de comando.

MRBoleto pronto para o uso.

Enviado: 26 Ago 2014 17:23
por ANDRIL
Pessoal, alguém conseguiu usar corretamente o MRboleto para B.B (001) com carteira 18 (SEM REGISTRO) com campo LIVRE de 17 posicoes? Emiti um boleto e ao apresentar ao gerente, fazendo a leitura acusou outra empresa e não a agência e conta informada, creio que há algo a ser tratado na geração do codigo de barras e na linha digitável.

No poste no inicio do tópico consta o preenchimento de alguns campos e não sei como preenchê-los:
Banco_Ag_Un_A=
Conta_OP_____=
Carteira_Tipo=
NossoNumero__=
Prefixo______=
Prefixo_DV___=
Na emissão para o Banco do Brasil, o nosso numero usa o Prefixo______+Prefixo_DV___ para compô-lo, so que no meu sistema estes campos estao vazios (nao sei com que preenche-los), seria este o problema de estar acusando o erro de identificação da conta no momento do pagamento?

Até+

MRBoleto pronto para o uso.

Enviado: 18 Set 2014 14:49
por JoséQuintas
Acabei usando o mrboleto pro Bradesco, mas fiz uma classe que herda a original.
Ainda estou fazendo testes junto ao Bradesco.

Código: Selecionar todos

#include "inkey.ch"
#include "hbclass.ch"

PROCEDURE demojose
   LOCAL oBoleto, nCont
   LOCAL cFilePdf := 'Boleto.PDF'

   REQUEST HB_CODEPAGE_PTISO
   SET( _SET_CODEPAGE, "PTISO" )
   SET EPOCH TO YEAR( DATE() ) - 50
   SET CENTURY ON
   SetMode( 33, 80 )

   oBoleto  := MyBoletoPDFClass():New( cFilePdf )

   //*----------------------------------------------------------------------*
   // BRADESCO
   //*----------------------------------------------------------------------*
   FOR nCont = 1 TO 3
      oBoleto:cCarteira        := "06"
      oBoleto:cNossoNumero     := '12345'
      oBoleto:cDocOrigem       := 'NFe'
      oBoleto:cDocNumero       := '00001234'
      oBoleto:dDocData         := Date()
      oBoleto:dVencimento      := Ctod( "18/09/2014" )
      oBoleto:nValor           := 5.67
      oBoleto:acInstrucoes     := {} 
      oBoleto:acDemonstrativo  := {} 
      oBoleto:acBeneficiario   := { "CNPJ", "NOME", "ENDERECO" }
      oBoleto:acPagador        := { "CNPJ", "NOME", "ENDERECO", "CEP" }
      oBoleto:acAvalista       := { "CNPJ", "NOME", "ENDERECO" }
      oBoleto:AddPage()
      oBoleto:AddCnab()
   NEXT

   oBoleto:Finish()

   IF FILE( cFilePdf )
      hb_Run( "Explorer.exe " + cFilePdf )
   ELSE
      ALERT( "ERRO NA GERACAO DO ARQUIVO...;;" + cFilePdf )
   ENDIF

   RETURN


CREATE CLASS MyBoletoPDFClass INHERIT BoletoPDFClass
   VAR cBanco               INIT "237"
   VAR cBancoAgencia        INIT "0000"
   VAR cBancoAgenciaDV      INIT ""
   VAR cBancoAgenciaUnA     INIT ""
   VAR cBancoConta          INIT "00000"
   VAR cBancoContaDV        INIT "0"
   VAR cBancoContaOP        INIT ""
   VAR cCarteira            INIT "09"
   VAR cCarteiraTipo        INIT ""
   VAR cNossoNumero         INIT ""
   VAR cDocOrigem           INIT ""
   VAR cPrefixo             INIT ""
   VAR cPrefixoDV           INIT ""
   VAR cDocNumero           INIT ""
   VAR cDocAceite           INIT "N"
   VAR cDocEspecie          INIT "R$"
   VAR dDocData             INIT Ctod("")
   VAR dVencimento          INIT Ctod("")
   VAR nValor               INIT 0
   VAR nMultaAuto           INIT 0
   VAR nJurosMes            INIT 9
   VAR nNumeroVias          INIT 3
   VAR acLocalPagamento     INIT { "PAGÁVEL EM QUALQUER BANCO ATÉ O LIMITE DA DATA DO VENCIMENTO" }
   VAR acInstrucoes         INIT {}
   VAR acDemonstrativo      INIT {}
   VAR acBeneficiario       INIT {}
   VAR acPagador            INIT {}
   VAR acAvalista           INIT {}
   VAR Cnab400              INIT {}
   METHOD AddPage()
   METHOD AddCnab()
   METHOD DigitoDoc( cDocNumero, cCarteira )
   METHOD SaveCnab( cPath )
   END CLASS

METHOD AddPage() CLASS MyBoletoPDFClass
   ::Banco________ := ::cBanco
   ::Banco_Agencia := ::cBancoAgencia
   ::Banco_Ag_Dv__ := ::cBancoAgenciaDV
   ::Banco_Ag_Un_A := ::cBancoAgenciaUnA
   ::Conta________ := ::cBancoConta
   ::Conta_DV_____ := ::cBancoContaDV
   ::Conta_OP_____ := ::cBancoContaOP
   ::Carteira_____ := ::cCarteira
   ::Carteira_Tipo := ::cCarteiraTipo
   ::NossoNumero__ := ::cNossoNumero
   ::Doc_Origem___ := ::cDocOrigem
   ::Prefixo______ := ::cPrefixo
   ::Prefixo_DV___ := ::cPrefixoDV
   ::Doc_Numero___ := ::cDocNumero
   ::Doc_Aceite___ := ::cDocAceite
   ::Doc_Especie__ := ::cDocEspecie
   ::Doc_Data_____ := ::dDocData
   ::Vencimento___ := ::dVencimento
   ::Valor________ := ::nValor
   ::Multa_Auto___ := ::nMultaAuto
   ::Juros_Mes____ := ::nJurosMes
   ::Numero_Vias__ := ::nNumeroVias
   ::Local_Pagamen := ::acLocalPagamento
   ::Instrucoes___ := ::acInstrucoes
   ::Demonstrativo := ::acDemonstrativo
   ::Cedente______ := ::acBeneficiario
   ::Sacado_______ := { ::acPagador[ 1 ], ::acPagador[ 2 ], ::acPagador[ 4 ] + " " + ::acPagador[ 3 ] }
   ::Avalista_____ := ::acAvalista
   ::Super:AddPage()
   RETURN NIL

METHOD AddCnab() CLASS MyBoletoPDFClass
   LOCAL cTxt
   IF ::cBanco == "237"
      IF Len( ::Cnab400 ) == 0
         ::Cnab400 := { "", "" }
         //----- registro inicial ---
         /*     */ cTxt := ""
         /* 001 */ cTxt += "0"                                // Fixo: 0=Registro inicial
         /* 002 */ cTxt += "1"                                // Fixo: ID Remessa
         /* 003 */ cTxt += "REMESSA"                          // Fixo: Decricao
         /* 010 */ cTxt += "01"                               // Fixo: Codigo de Servico
         /* 012 */ cTxt += Pad( "COBRANCA", 15 )              // Fixo: Literal Servico
         /* 027 */ cTxt += Padl( "0000000", 20, "0" )         // Codigo da empresa no Bradesco
         /* 047 */ cTxt += Pad( ::acBeneficiario[ 2 ], 30 )   // Nome da empresa
         /* 077 */ cTxt += ::cBanco                           // Fixo: Codigo do Banco
         /* 080 */ cTxt += Pad( "BRADESCO", 15 )              // Fixo: Nome do Banco
         /* 095 */ cTxt += StrZero( Day( Date() ), 2 ) + StrZero( Month( Date() ), 2 ) + Right( StrZero( Year( Date() ), 4 ), 2 ) // Data da gravacao Dia/Mes/Ano, 2 digitos de cada
         /* 101 */ cTxt += Space(8)                           // Espacos
         /* 109 */ cTxt += "01"                               // MX - olhar pag. 16, pag. 20, posicao 109/110 -> 01=remessa
         /* 111 */ cTxt += StrZero( 1, 7 )                    // Num. sequencial de remessa - olhar pag. 16 // nao pode pular, reiniciar ou zerar
         /* 118 */ cTxt += Space(277)                         // Espacos
         /* 395 */ cTxt += StrZero( 1, 6 )                    // Num. sequencial de registro
         ::cnab400[ 1 ] := cTxt
      ENDIF
      // ----- registro detalhe -----
      /*     */ cTxt := ""
      /* 001 */ cTxt += "1"                                   // Fixo: 1=Movimentacao
      /* 002 */ cTxt += StrZero( 0, 5 )                       // Opcional: Agencia do Pagador
      /* 007 */ cTxt += "0"                                   // Opcional: Digito da Agencia do Pagador
      /* 008 */ cTxt += StrZero( 0, 5 )                       // Opcional: Razao da Conta do Pagador
      /* 013 */ cTxt += StrZero( 0, 7 )                       // Opcional: Número da Conta do Pagador
      /* 020 */ cTxt += "0"                                   // Optional: Digito do Número da Conta do Pagador
      /* 021 */ cTxt += "0" + StrZero( Val( ::cCarteira ), 3 ) + StrZero( Val( ::cBancoAgencia ), 5 ) + StrZero( Val( ::cBancoConta ), 7 ) + StrZero( Val( ::cBancoContaDV ), 1 ) // 17 // Zero + Carteira + Agencia sem digito + Conta + Digito Conta do Beneficiario
      /* 038 */ cTxt += Space(25)                             // Número de controle do participante - olhar pag. 17
      /* 063 */ cTxt += StrZero(0, 3 )                        // Codigo do banco a ser debitado - olhar pag.17
      /* 066 */ cTxt += "0"                                   // Multa, 2=percentual, 0=sem multa
      /* 067 */ cTxt += StrZero( 0, 4 )                       // Percentual de multa - olhar pag 17
      /* 071 */ cTxt += StrZero( Val( ::cDocNumero ), 11 )    // ID do titulo no banco - olhar pag. 17 - 10 caracteres + digito = 11 caracteres
      /* 082 */ cTxt += ::DigitoDoc( StrZero( Val( ::cDocNumero ), 10 ) )  // Digito de controle da ID do titulo
      /* 083 */ cTxt += StrZero( 0, 10 )                      // Desconto Bonificacao por dia
      /* 093 */ cTxt += "2"                                   // 1=Banco emite, 2=Cliente emite - olhar pag. 19
      /* 094 */ cTxt += "N"                                   // N=Nao registra, outracoisa=banco emite para debito automatico - olhar pag. 19
      /* 095 */ cTxt += Space(10)                             // Brancos
      /* 105 */ cTxt += Space(1)                              // Indicacao de Rateio
      /* 106 */ cTxt += Space(1)                              // Enderecamento para aviso de debito
      /* 107 */ cTxt += Space(2)                              // Brancos
      /* 109 */ cTxt += "01"                                  // Identificacao da ocorrencia - 01=Remessa
      /* 111 */ cTxt += Space(10)                             // Número do documento
      /* 121 */ cTxt += StrZero( Day( ::dVencimento ), 2 ) + StrZero( Month( ::dVencimento ), 2 ) + Right( StrZero( Year( ::dVencimento ), 4 ), 2 ) // Data vencto DDMMAA
      /* 127 */ cTxt += StrZero( ::nValor * 100, 13 )     // Valor do titulo
      /* 140 */ cTxt += StrZero( 0, 3 )                       // Zeros - Banco Encarregado da cobranca
      /* 143 */ cTxt += StrZero( 0, 5 )                       // Zeros - Agencia depositaria
      /* 148 */ cTxt += "99"                                  // 01-duplicata, 05-Recibo, 99-Outros
      /* 150 */ cTxt += "N"                                   // Sempre N - identificacao
      /* 151 */ cTxt += StrZero( Day( ::dDocData ), 2 ) + StrZero( Month( ::dDocData ), 2 ) + Right( StrZero( Year( ::dDocData ) , 4 ), 2 ) // Data de emissao do titulo DDMMAA
      /* 157 */ cTxt += "00"                                  // Instrucao - olhar pag. 20 // 00=nada,06=protestar,18=Baixar
      /* 159 */ cTxt += "00"                                  // Instrucao - olhar pag. 20 // complemento do anterior, indicando qtde. dias
      /* 161 */ cTxt += StrZero( ::nJurosMes * ::nValor / 30, 13 )    // Multa por dia - olhar pag. 21
      /* 174 */ cTxt += StrZero( 0, 6 )                       // Data limite pra desconto
      /* 180 */ cTxt += StrZero( 0, 13 )                      // Valor do desconto
      /* 193 */ cTxt += StrZero( 0, 13 )                      // Valor IOF
      /* 206 */ cTxt += StrZero( 0, 13 )                      // Valor Abatimento
      /* 219 */ cTxt += iif( Len( SoNumeros( ::acPagador[ 1 ] ) ) == 14, "02", "01" ) // 01=CPF, 02=CNPJ, 98=Nao tem, 99=Outros
      /* 221 */ cTxt += StrZero( Val( SoNumeros( ::acPagador[ 1 ] ) ), 14 )  // Número do CPF ou CNPJ - olhar pag. 21
      /* 235 */ cTxt += Pad( ::acPagador[ 2 ], 40 )            // Nome do pagador
      /* 275 */ cTxt += Pad( ::acPagador[ 3 ], 40 )           // Endereco do pagador
      /* 315 */ cTxt += Space(12)                             // Primeira mensagem
      /* 327 */ cTxt += ::acPagador[ 4 ]                      // CEP
      /* 335 */ cTxt += Space(60)                             // Sacador/Avalista ou segunda mensagem
      /* 395 */ cTxt += StrZero( Len( ::cnab400 ), 6 )        // Número sequencial de registro
      ::cnab400[ Len( ::cnab400 ) ] := cTxt
      // ----- registro final -----
      /*     */ cTxt := ""
      /* 001 */ cTxt += "9"                                   // Fixo: 9=Final
      /* 002 */ cTxt += Space(393)                            // Brancos
      /* 395 */ cTxt += StrZero( Len( ::cnab400 ) + 1, 6 )    // Número de registro
      AAdd( ::cnab400, cTxt )
   ENDIF
   RETURN NIL

METHOD DigitoDoc( cDocNumero, cCarteira ) CLASS MyBoletoPDFClass
   LOCAL nCont, nNumero, nSoma, nResto, cDigito
   nSoma := 0
   FOR nCont = 1 TO 11
      nNumero := Val( Substr( Right( cCarteira, 2 ) + cDocNumero, nCont, 1 ) ) // 2 dig.carteira + 10 dig.Número (11 c/ dig.controle)
      nSoma := nSoma + ( nNumero * { 2, 7, 6, 5, 4, 3, 2, 7, 6, 5, 4, 3, 2 }[ nCont ] )
   NEXT
   nResto := Mod( nSoma, 11 )
   IF nResto == 0
      cDigito := "0"
   ELSEIF nResto == 1
      cDigito := "P"
   ELSE
      cDigito := Str( 11 - nResto, 1 )
   ENDIF
   RETURN cDigito

METHOD SaveCnab( cPath ) CLASS MyBoletoPDFClass
   LOCAL cNumero, cFileName, nCont, cTxt := ""
   IF ::cCarteira != "09"
      RETURN NIL
   ENDIF
   cPath := iif( cPath == NIL, "", cPath )
   cNumero   := "01"
   cFileName := cPath + "CB" + StrZero( Day( Date() ), 2 ) + StrZero( Month( Date() ), 2 )
   DO WHILE File( cFileName + cNumero + ".TST" )
      cNumero := StrZero( Val( cNumero ) + 1, 2 )
   ENDDO
   FOR nCont = 1 TO Len( ::Cnab400 )
      cTxt += ::Cnab400[ nCont ] + HB_EOL()
   NEXT
   hb_MemoWrit( cFileName + cNumero + ".TST", cTxt )
   RETURN NIL

MRBoleto pronto para o uso.

Enviado: 19 Set 2014 10:37
por Itamar M. Lins Jr.
Ola!

Aqui um cliente está utilizando p/ o Banco Santander.
Só enfrentei uma pequena dificuldade em entender como jogar os números com ou sem dígito. Porém fui olhando o boleto original e ficou igual.

Saudações,
Itamar M. Lins J.

MRBoleto pronto para o uso.

Enviado: 19 Set 2014 10:43
por Itamar M. Lins Jr.
José Quintas, você pode enviar o seu código p/ o dono do MRBoleto e ele adicionar.
Esse CNAB400 ? é isso ?
Outro ajuste, é diminuir as linhas não impressa, fica:
1:
2:
3:...
Até 27 sem necessidade.

Saudações,
Itamar M. LIns Jr.