calculo rfc personas morales
AQUI ESTA EL ALGORITMO PARA EL CALCULO DEL DIGITO VERIFICADOR DEL RFC (copiado de otro foro)
Tabla RfcData
CARACTER------VALOR
0------------------ 0
1------------------ 1
2------------------ 2
3------------------ 3
4------------------ 4
5------------------ 5
6------------------ 6
7------------------ 7
8------------------ 8
9------------------ 9
A------------------ 10
B------------------ 11
C------------------ 12
D------------------ 13
E------------------ 14
F------------------ 15
G------------------ 16
H------------------ 17
I------------------ 18
J------------------ 19
K------------------ 20
L------------------ 21
M------------------ 22
N------------------ 23
&------------------ 24 Este caracter & reemplaza la ñ
O------------------ 25
P------------------ 26
Q------------------ 27
R------------------ 28
S------------------ 29
T------------------ 30
U------------------ 31
V------------------ 32
W------------------ 33
X------------------ 34
Y------------------ 35
Z------------------ 36
------------------- 37
; Scipt RFCDIGIT.SC
;
; V01.1 : 04.07.99 : Création
;
; Entrée : RfcBasico_Homo
; Sortie : RfcDigitVeri
; Utilise la table RFCDATA2
View "\\Pdox40\\Conta98\\RfcData"
a = 1
b = 13
DigitoNum = 0
Moveto [CARACTER]
While a <=12
Digito = SubStr(RfcBasico_Homo,a,1)
Locate Digito
ValorDigito = [Valor]
DigitoNum = DigitoNum + (ValorDigito*b)
a = a + 1
b = b - 1
EndWhile
Digito = 11 - Mod(DigitoNum,11)
Switch
Case Digito = 10 : RfcDigitVeri = "A"
Case Digito = 11 : RfcDigitVeri = "0"
OtherWise : RfcDigitVeri = StrVal(Digito)
EndSwitch
=========================================================================
El digíto verificador puede ser solamente un digíto de "0" a "9" o la lettra "A"
Si el RFC tiene una ñ o Ñ reemplazar por el caracter &
RFC básico: los 12 primeros dígitos del RFC a verificar
Si el RFC es de persona fisica: RFCbasico= ABCD012345XY
Si el RFC es de persona moral: RFCbasico= -ABC012345XY agregar el caracter "-" antes
Aplicar el algoritmo y tendra el RfcDigitVeri.
A cada caracter del RFC le corresponde un valor (numérico)
Ejemplo"
RFC de la empresa: CGA011204JJ6
Se cambia a: -CGA011204JJ6
ValorDigito DigitoNum
"-" vale 37 0+(37 * 1) = 37 1ro caracter
"C" vale 12 37 +(12*2) = 61 2do
"G" vale 16 61+(16*3) = 109 3ro.....
"A" vale 10 109+(10*4)= 149
"0" vale 0 149+(0*5)=149
"1" vale 1 149+(1*6)=155
"1 vale 1 155+(1*7)=162
"2" vale 2 162+(2*8=178
"0" vale 0 178+(0*9)=178
"4" vale 4 178+(4*10)=218
"J" vale 19 218+(19*11)=427
"J" vale 19 427+(19*12)=655 último (pocisión 12)
Digito = 11 - Mod(655,11)
Digito = 11 - 5 = 6
Digito verificador DV = 6
El algoritmo es 100% confiable...
Al contrario de la CURP, dos personas o empresas pueden tener el mismo RFC
La homoclave (los 2 dígitos antes del DV) obedece también a un algoritmo y en ningún caso esta "al criterio" del SAT