Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

rafa-martin

calculando ultimos 3 digitos nosso numero hsbc

Recommended Posts

pessoal estou com um problemão.

 

eu estu gerando um boleto do hsbc através de um componente do cobrebem.

 

para gerar o nosso numero eu estou pegando dados que vem da minha base, gerando assim 13 caracteres. porém o componente do cobre bem está fazendo um calculo gerando mais 3 cdigitos. só que no momento de gerar eu preciso gravar os 16 digitos. e eles já me falaram que não tem como pegar os 3 ultimso digitos que o componente deles geram. sendo assim não consigo gravar os 16 digitos, apenas os 13.

 

aí peguei um doc do hsbc dizendo como faz o calculo dos 3 digitos, porém impactei numa coisa.

 

exemplo:

 

212 / 11 = 19 o resto que é 3 é o primeiro digito. só que ainda tem o primeiro resto que é 102.

 

então se fizer na mão, igual faziamos na escolna ficaria assim:

 

212 |_11____

102 19

3

 

eu queria saber como eu calculo esse resto de 102.

 

vlw

Compartilhar este post


Link para o post
Compartilhar em outros sites

EXEMPLO COM O TIPO IDENTIFICADOR 5 PADRÃO HSBC

 

 

Consiste código do cedente e código do documento.

 

Código do documento: 39104766

Código do cedente: 351202

 

CALCULO DO 1* DIGITO VERIFICADOR

você MULTIPLICA CADA DIGITO DO CEDENTE DE 2 A 9

DA ESQUERDA PARA DIREITA?

E APÓS O NUMERO 9 VOLTAMOS AO NUMERO 2 CERTO ?

ENTAO FAÇA ISTO

 

OBS : SE MULTIPLICA DA DIREITA PARA ESQUERDA É SO MUDA RO FORM P/

For nI = 8 To 1 step 1

 

E SE COMEÇAR PELO NUMERO 9 MUDE O NMULT DE 2 PARA 9 ASSIM

nMult = 2

 

Dim nI, nMult, nSoma, nProd, nTotal, a As Integer
nTotal = 0 'Acrescentado para somar todos nProd
nMult = 2
 CONSIDERANDO QUE SÃO 8 DIGITOS
For nI = 8 To 1 
nProd = Val(Mid(codcedente, Nz(nI), 1)) * nMult
nMult = IIf(nMult = 9, 2, nMult + 1)
nTotal = nTotal + nProd 'Acrescentado para somar todos nProd
Next nI
 a é o valor do resto
a = nTotal Mod 11 
b é o valor de 10 - resto
if a= 0 Or a = 10 Then
a = 0
End If

O 1* digito será a

 

 

- Cálculo do primeiro dígito verificador:

 

3 9 1 0 4 7 6 6

Pesos x2 x3 x4 x5 x6 x7 x8 x9

------------------------------------

06+27+04+00+24+49+48+54 = 212

 

Então, tira-se o resto do resultado, ou seja,

 

212 | 11

102 19

3......................primeiro dígito

 

Nota: Se o resto for igual a 0 ou 10, o dígito é 0 (zero).

 

- Cálculo do segundo dígito verificador.

3 9 1 0 4 7 6 6 3 5 (5 é o tipo identificador)

+ 3 5 1 2 0 2 (Código do Cedente)

-----------------------------

3 9 1 0 8 2 7 8 3 7

3 9 1 0 8 2 7 8 3 7

Pesos x8 x9 x2 x3 x4 x5 x6 x7 x8 x9

----------------------------------------------

24+81+02+00+32+10+42+56+24+63 = 334

Então, tira-se o resto do resultado, ou seja,

334 | 11

004 30

4......................segundo dígito

Nota: Se o resto for igual a 0 ou 10, o dígito é 0 (zero).

Código do documento final com os dígitos: 39104766354

 

CALCULO DO 2* DIGITO VERIFICADOR

 

Dim nI, nMult, nSoma, nProd, nTotal, a As Integer
Dim numero1, numero 2, numerofeito
 Concatenamos o numero do documento com o valor de b do calculo do primeiro digito verificador e com o tipo identificador e criamos o numero do documento
 obs : se 5 for o valor de algum campo u variável coloque o nome da mesma no lugar de 5 
Numero1 = numdoc & b & 5
 Criamos o numero 2 somando o numero 1 com o código do cedente
Numero 2 = Numero1 + codcedente
nTotal = 0 'Acrescentado para somar todos nProd
 colocamos nmult no 9 por que vamos começar multiplicando por 9 
nMult = 9
 CONSIDERANDO QUE SÃO 10 DIGITOS E QUE O FOR VAI DO 10* PRO 1* DIGITO
For nI = 10 To 1 step-1
nProd = Val(Mid(numero2, Nz(nI), 1)) * nMult
 SE NMULT FOR IGUAL A 2 ELE IGUALA NMULT A 9, SENAO ELE DIMINUI 1 
nMult = IIf(nMult = 2, 9, nMult - 1)
nTotal = nTotal + nProd 'Acrescentado para somar todos nProd
Next nI
 a é o valor do resto
a = nTotal Mod 11 
b é o valor de 10 - resto
if a= 0 Or a = 10 Then
a = 0
End If

O 1* digito será a

numerofeito = numero2 & a

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu tenho a documentação do calculo. mais é meio complicado de fazer na prática.

 

mais e o terceiro digito? como faço?

 

por exemplo tenho o nosso numero 040025236840-740

 

7 - primeiro digito

4 - fixo

0 - terceiro digito. como ele é calculado?

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.