Harbour Boleto - campo digitavel

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

gilbertosilverio
Usuário Nível 3
Usuário Nível 3
Mensagens: 339
Registrado em: 18 Jan 2009 10:39
Localização: Ribeirao Pires - SP

Harbour Boleto - campo digitavel

Mensagem por gilbertosilverio »

Ola Amigos,

Uso o harbour boleto e hoje apareceu um problema.

A geração ate o vencimento em 21/02/2025 no campo digitavel do boleto fica desta maneira 99990000819600, sendo 9999 para o vencimento 21/02/2025 e 819600 para o valor.

A partir de 22/02/2025 a meu ver seria 10000, so que em um boleto que gerei no site do bradesco, ele fica 1020 para o vencimento de 14/03/2025, que pelo harbour boleto, fazendo uma alteracao ficaria 10020.

Alguem ja fez a alteracao desta rotina e poderia me ajudar e mostrar como deve ficar.

Fiz essa alteracao no rotina de oBoleto.prg

Código: Selecionar todos

      ::Merge("DTVENC"    , DTOC(::DtVenc))
      ::Merge("DATA"      , DTOC(::DtEmis))
      ::Merge("DATAPROC"  , DTOC(::DtEmis)) // Nao sei se aqui deveria ser DATE().
      ::Merge("VALOR"     , TRANS(::nValor, "@E 99,999,999.99"))
      ::Merge("NMORA"     , TRANS(::nMora, "@E 999,999.99"))
      ::Merge("CVT"       , cCVT)
      ::Merge("AGCC"      , cAgCC)
      ::Merge("NUMDOC"    , ::cNumDoc)
      ::Merge("CARTEIRA"  , cCarteira)
      ::Merge("ESPECIETIT", ::EspecieTit)
      ::Merge("ACEITE"    , ::Aceite)
      ::Merge("NNUMERO"   , TRAN( cNsNm, "@R 99999999999999999-9" ) )

      //cFatorVenc := STRZERO( ::DtVenc - dDataBase , 4 ) // alterado 

// ALTERADO EM 14/01/2025
   if ::DtVenc > ctod([21/02/2025]) 
      cFatorVenc := STRZERO( ::DtVenc - dDataBase , 5 ) //4  > 10000
   else
      cFatorVenc := STRZERO( ::DtVenc - dDataBase , 4 ) //4  < 10000 = 9999
   endif

      // Monta Código de Barras (p/ Banco)
      cDGCB := DC_Mod11( ::cCodBco, 9, .T., ::cCodBco + ::cTipoMoeda + cFatorVenc + STRZERO( ::nValor * 100, 10 ) + cCpoLivre )
      cCodBar := ::cCodBco + ::cTipoMoeda + cDGCB + cFatorVenc + STRZERO( ::nValor * 100, 10 ) + cCpoLivre
      //           3           1            1       4                       10                   25

Agradeco a ajuda.
Anexos
Como veio no boleto gerado no site do bradesco
Como veio no boleto gerado no site do bradesco
T11.png (5.87 KiB) Exibido 2857 vezes
GilbertoSilverio
gilbertosilverio@gmail.com
gilbertosilverio2003@yahoo.com.br
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20415
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP
Curtiram: 1 vez

Harbour Boleto - campo digitavel

Mensagem por JoséQuintas »

Pois é....
Não adianta avisar adiantado.
Nem sequer pesquisam sobre o assunto.
Avisado em outubro/2024

E aumentar de 4 pra 5 dígitos.... quem disse que pode ? isso só invalida tudo.

https://www.pctoledo.com.br/forum/viewt ... =5&t=27880
José M. C. Quintas
Harbour 3.2, mingw, multithread, gtwvg, fivewin 25.12, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui), (hmg3), (hmg extended), (oohg), PNotepad, ASP, (Linux/Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
gilbertosilverio
Usuário Nível 3
Usuário Nível 3
Mensagens: 339
Registrado em: 18 Jan 2009 10:39
Localização: Ribeirao Pires - SP

Harbour Boleto - campo digitavel

Mensagem por gilbertosilverio »

Olá Quintas,

Grato pela ajuda.

Não tinha visto essa sua postagem, mais ao baixar o novo manual do BRADESCO achei a resposta.

Código: Selecionar todos

      if ::DtVenc > ctod([21/02/2025])
         cFatorVenc := STRZERO( ((::DtVenc-dDataBase)-9000), 4 )
      else
         cFatorVenc := STRZERO( ::DtVenc - dDataBase , 4 ) //4  < 10000 = 9999
      endif
GilbertoSilverio
gilbertosilverio@gmail.com
gilbertosilverio2003@yahoo.com.br
Responder