Página 1 de 1

DIGITO VERIFICADOR - BOLETO CEF

Enviado: 01 Fev 2005 14:52
por edenilsomga
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

Enviado: 27 Fev 2005 00:54
por Magno
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

Enviado: 28 Fev 2005 00:55
por vagucs
A versão do PRWIN 3.5 que imprime boleto bancário está pronta, vou colocar para testes segunda no meu site.

Agradecimento

Enviado: 28 Fev 2005 01:18
por edenilsomga
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!!