Estou com um boleto da CAIXA ECONOMICA FEDERAL, 99,99% ok, nao estou conseguindo gerar o digito verificador corretamente, ja entrei em contato com o (0800) da CEF, mas os caras sao muito devagar, ja me mandaram dois manuais, e seguindo os mesmos, nao bate o digito, finalmente ontem falei novamente no (0800) e me disseram que ja mudou a layout da string para o calculo do digito. Resumindo... o povo da CEF nao consegue me passar nada correto.
Apelo para os caros colegas, se alguem tiver a maneira correta de montar a string para o calculo do digito verificador, ficarei muito agradecido.
desde ja agradeco
DIGITO VERIFICADOR - BOLETO CEF
Moderador: Moderadores
-
Magno
- Usuário Nível 1

- Mensagens: 11
- Registrado em: 05 Ago 2004 13:19
- Localização: Belo Horizonte
- Contato:
Olá amigo,
Hoje estava navegando pelo site e vi sua mensagem. Se vc ainda está precisando, dê uma verificadinha no saite do toledo. Lá tem uma rotian para impressao do Código de Barras. O Helpdesk da CAIXA não funciona. Os caras não sabem nada.
Veja no seguinte endereço a rotina completa:
https://pctoledo.org/download/cop ... t&deonde=2
Minhas boletas foram homologadas sem problemas.
A rotina que uso é a seguinte (extraído do programa acima):
//===========================================================================//
// //
// Retorna D¡gito de Controle M¢dulo 10 //
// //
//===========================================================================//
static function BLQ_DG10(mCDBC,mNMOG)
local mVLDG,mSMMD,mCTDG,mRSDV,mDCMD
mSMMD:=0
for mCTDG:=1 to len(mNMOG)
mVLDG:=val(substr(mNMOG,len(mNMOG)-mCTDG+1,1))*iif(mod(mCTDG,2)==0,1,2)
mSMMD+=mVLDG-iif(mVLDG>9,9,0)
endfor
mRSDV:=mod(mSMMD,10)
mDCMD:=iif(mRSDV==0,"0",str(10-mRSDV,1))
return mDCMD
//===========================================================================//
// //
// Retorna D¡gito de Controle M¢dulo 11 (p/ Banco) //
// //
//===========================================================================//
static function BLQ_DG11(mCDBC,mBSDG,mFGCB,mNMOG)
local mSMMD,mCTDG,mSQMP,mRSDV,mDCMD
default mFGCB to FALSE
mSMMD:=0
mSQMP:=2
for mCTDG:=1 to len(mNMOG)
mSMMD+=val(substr(mNMOG,len(mNMOG)-mCTDG+1,1))*(mSQMP)
mSQMP:=iif(mSQMP==mBSDG,2,mSQMP+1)
endfor
mRSDV:= 11 - mod(mSMMD,11)
IF mFGCB
mDCMD:=iif(mRSDV==0 .or. mRSDV==1 .or. mRSDV > 9,"1",str(mRSDV,1))
ELSE
mDCMD:=iif(mRSDV > 9, "0", str(mRSDV,1))
ENDIF
return mDCMD
Tenho essa outra rotina mas ela e feita para o minigui
********************************************************
function modulo11_dvg()
********************************************************
local mSMMD,mCTDG,mSQMP,mRSDV,mDCMD
mNMOG:= (InputBox ('Numero '))
mSMMD:=0
mSQMP:=2
mBSDG:=9
for mCTDG:=1 to len(mNMOG)
mSMMD+=val(substr(mNMOG,len(mNMOG)-mCTDG+1,1))*(mSQMP)
mSQMP:=iif(mSQMP==mBSDG,2,mSQMP+1)
endfor
mRSDV:= 11 - mod(mSMMD,11)
mDCMD:=iif(mRSDV==0 .or. mRSDV==1 .or. mRSDV > 9,"1",str(mRSDV,1))
msginfo( "Digito verificardor geral " + mDCMD)
mDCMD:=iif(mRSDV > 9, "0", str(mRSDV,1))
msginfo( "Digito cedente ou nosso numero " + mDCMD)
return
Hoje estava navegando pelo site e vi sua mensagem. Se vc ainda está precisando, dê uma verificadinha no saite do toledo. Lá tem uma rotian para impressao do Código de Barras. O Helpdesk da CAIXA não funciona. Os caras não sabem nada.
Veja no seguinte endereço a rotina completa:
https://pctoledo.org/download/cop ... t&deonde=2
Minhas boletas foram homologadas sem problemas.
A rotina que uso é a seguinte (extraído do programa acima):
//===========================================================================//
// //
// Retorna D¡gito de Controle M¢dulo 10 //
// //
//===========================================================================//
static function BLQ_DG10(mCDBC,mNMOG)
local mVLDG,mSMMD,mCTDG,mRSDV,mDCMD
mSMMD:=0
for mCTDG:=1 to len(mNMOG)
mVLDG:=val(substr(mNMOG,len(mNMOG)-mCTDG+1,1))*iif(mod(mCTDG,2)==0,1,2)
mSMMD+=mVLDG-iif(mVLDG>9,9,0)
endfor
mRSDV:=mod(mSMMD,10)
mDCMD:=iif(mRSDV==0,"0",str(10-mRSDV,1))
return mDCMD
//===========================================================================//
// //
// Retorna D¡gito de Controle M¢dulo 11 (p/ Banco) //
// //
//===========================================================================//
static function BLQ_DG11(mCDBC,mBSDG,mFGCB,mNMOG)
local mSMMD,mCTDG,mSQMP,mRSDV,mDCMD
default mFGCB to FALSE
mSMMD:=0
mSQMP:=2
for mCTDG:=1 to len(mNMOG)
mSMMD+=val(substr(mNMOG,len(mNMOG)-mCTDG+1,1))*(mSQMP)
mSQMP:=iif(mSQMP==mBSDG,2,mSQMP+1)
endfor
mRSDV:= 11 - mod(mSMMD,11)
IF mFGCB
mDCMD:=iif(mRSDV==0 .or. mRSDV==1 .or. mRSDV > 9,"1",str(mRSDV,1))
ELSE
mDCMD:=iif(mRSDV > 9, "0", str(mRSDV,1))
ENDIF
return mDCMD
Tenho essa outra rotina mas ela e feita para o minigui
********************************************************
function modulo11_dvg()
********************************************************
local mSMMD,mCTDG,mSQMP,mRSDV,mDCMD
mNMOG:= (InputBox ('Numero '))
mSMMD:=0
mSQMP:=2
mBSDG:=9
for mCTDG:=1 to len(mNMOG)
mSMMD+=val(substr(mNMOG,len(mNMOG)-mCTDG+1,1))*(mSQMP)
mSQMP:=iif(mSQMP==mBSDG,2,mSQMP+1)
endfor
mRSDV:= 11 - mod(mSMMD,11)
mDCMD:=iif(mRSDV==0 .or. mRSDV==1 .or. mRSDV > 9,"1",str(mRSDV,1))
msginfo( "Digito verificardor geral " + mDCMD)
mDCMD:=iif(mRSDV > 9, "0", str(mRSDV,1))
msginfo( "Digito cedente ou nosso numero " + mDCMD)
return
-
edenilsomga
Agradecimento
Ola Magno
Obrigado pela dica..... mas ja resolvi o problema. Fiz uma pressao no povo da CEF, e com muito custo consegui a versao correta do layout para a verificacao do DIGITO... como vc mesmo comentou o povo la é muito devagar.
Obrigado!!
Obrigado pela dica..... mas ja resolvi o problema. Fiz uma pressao no povo da CEF, e com muito custo consegui a versao correta do layout para a verificacao do DIGITO... como vc mesmo comentou o povo la é muito devagar.
Obrigado!!
