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 2800 vezes
GilbertoSilverio
gilbertosilverio@gmail.com
gilbertosilverio2003@yahoo.com.br
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

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, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, 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