Cálculo do dígito verificador do caepf – cadastro de ativida

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

Moderador: Moderadores

malcarli
Usuário Nível 3
Usuário Nível 3
Mensagens: 239
Registrado em: 20 Ago 2015 18:14
Localização: marilia/sp

Cálculo do dígito verificador do caepf – cadastro de ativida

Mensagem por malcarli »

Bom dia alguém tem rotina ou como calcular o dígito verificador do caepf – cadastro de atividade econômica da pessoa física.

obg

Att.

Marcelo A. L. Carli
Marília/SP
Capital Nacional do Alimento ®

https://malc-informatica.ueniweb.com
http://marcelo.lx.com.br
Email / Skype: malcarli@life.com.br
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Cálculo do dígito verificador do caepf – cadastro de ativida

Mensagem por alxsts »

Olá!

Uma pesquisa simples no Google trouxe várias fórmulas, incluindo a que procura:DÍGITOS DE VERIFICAÇÃO
[]´s
Alexandre Santos (AlxSts)
malcarli
Usuário Nível 3
Usuário Nível 3
Mensagens: 239
Registrado em: 20 Ago 2015 18:14
Localização: marilia/sp

Cálculo do dígito verificador do caepf – cadastro de ativida

Mensagem por malcarli »

VALEU
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Cálculo do dígito verificador do caepf – cadastro de ativida

Mensagem por JoséQuintas »

Até fiz a mesma, mas não entendi a excessão.
Portanto, o CAEPF+DV seria 293.118.610/001-72.
Mas há um senão: estaria sendo somado 12 ao DV encontrado.
E se o resultado da soma for maior do que 99, diminui-se 100.
No exemplo, o DV será 72+12=84.
É porque não existe exceção, existe apenas a regra geral de somar 12.

Código: Selecionar todos

nDigito1 := 7
nDigito2 := 2
nResultado := nDigito1 * 10 + nDigito2 
nDigitoGeral := Mod( nResultado + 12, 100 )
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/
malcarli
Usuário Nível 3
Usuário Nível 3
Mensagens: 239
Registrado em: 20 Ago 2015 18:14
Localização: marilia/sp

Cálculo do dígito verificador do caepf – cadastro de ativida

Mensagem por malcarli »

Com ajuda de colegas, posto a solução final.

Chamar a função assim:
fVercaepf([99990999999912]) ou
fVercaepf([999909999999]) sem os dígitos.

A função fVercaepf retorno string calculado com 14 dígitos.

Ai é só fazer um teste se os digitos da função são iguais aos dígitos do valor enviado

Código: Selecionar todos

Static Function fVercaepf(cString)
   Local i:= nSoma:= nDv:= 0, nFator:= 9

   cString:= SubStr(cString, 1, 12)
   
   For i:= Len(cString) To 1 Step -1
       nSoma += Val(SubStr(cString, i, 1)) * nFator
       nFator:= If(nFator == 2, 9, nFator - 1)
   Next
   cString:= cString + If(Mod(nSoma, 11) < 2 .or. Mod(nSoma, 11) > 9 , [0], Str(Mod(nSoma, 11), 1))     	

   nSoma := 0
   nFator:= 9
   For i:= Len(cString) To 1 Step -1
       nSoma += Val(SubStr(cString, i, 1)) * nFator
       nFator:= If(nFator == 2, 9, nFator - 1)
   Next
   cString:= cString + If(Mod(nSoma, 11) < 2 .or. Mod(nSoma, 11) > 9 , [0], Str(Mod(nSoma, 11), 1))     	

   cString:= SubStr(cString, 1, 12) + Iif(Val(SubStr(cString, 13, 2)) + 12 > 100, Strzero((Val(SubStr(cString, 13,2)) + 12) - 100, 2, 0), Strzero(Val(SubStr(cString, 13, 2)) + 12, 2, 0))
Return (cString)

Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Cálculo do dígito verificador do caepf – cadastro de ativida

Mensagem por JoséQuintas »

Tá certo isso?
Não bate com o que colocou lá no fórum.
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/
malcarli
Usuário Nível 3
Usuário Nível 3
Mensagens: 239
Registrado em: 20 Ago 2015 18:14
Localização: marilia/sp

Cálculo do dígito verificador do caepf – cadastro de ativida

Mensagem por malcarli »

está funcionando e testado com testador online
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Cálculo do dígito verificador do caepf – cadastro de ativida

Mensagem por JoséQuintas »

Testou o código do exemplo?
CAEPF1.png
CAEPF2.png
test.prg
(1.42 KiB) Baixado 40 vezes
Essa bate, a sua não.
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/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Cálculo do dígito verificador do caepf – cadastro de ativida

Mensagem por JoséQuintas »

Não sei de onde tirou isto:

Código: Selecionar todos

cString:= cString + If(Mod(nSoma, 11) < 2 .or. Mod(nSoma, 11) > 9 , [0], Str(Mod(nSoma, 11), 1))    
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/
Responder