Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Validar CIF

1,634 views
Skip to first unread message

Asier

unread,
Jan 23, 2001, 2:54:02 AM1/23/01
to
Hola grupo:

Necesito saber un algoritmo para validar si un CIF de una empresa es
correcto o no. Ya tengo uno similar para validar si el DNI + letra son
correctos, pero no me vale para el CIF. ¿Sabeis donde lo puedo conseguir?

Gracias

Asier


Diego Campillo

unread,
Jan 23, 2001, 5:06:45 AM1/23/01
to
El DNI si que tiene cálculo del dígito de control, es decir su letra, pero
el CIF, creo que no corresponde a ningún cálculo, sino que se produce una
asignación dependiendo del tipo de empresa que fuese, así una sociedad
limitada tendrá la letra B, y cada empresa dependiendo de su estructura
jurídica tiene una letra distinta.

No conozco la relación de estas, pero si alguién lo sabe, podría pasarla.


Asier <asieraie...@euskalnet.net> escribió en el mensaje de noticias
eR15OGRhAHA.2104@tkmsftngp05...

D. Cases

unread,
Jan 23, 2001, 5:12:46 AM1/23/01
to
Coje el numero del cif.
Invierte el orden de los numeros.
Utiliza la misma formula que para el nif con el numero que te de.

ejemplo:

cif: 654321-V
invertido: 123456-V
Pasas el numero por la funcion de calculo del nif y ya esta

Facil, no?

Saludos

D.Cases
dca...@inter-trace.es

Asier <asieraie...@euskalnet.net> escribió en el mensaje de noticias
eR15OGRhAHA.2104@tkmsftngp05...

Asier

unread,
Jan 23, 2001, 7:24:48 AM1/23/01
to
No me funciona

"D. Cases" <dca...@inter-trace.es> escribió en el mensaje
news:#qngSTShAHA.1648@tkmsftngp03...

j.l.uceda

unread,
Jan 23, 2001, 8:03:08 AM1/23/01
to
El número del C.I.F. de la empresa no se calcula es una letra que indica el
tipo de sociedad a que pertenece. De echo casi todas las empresas su CIF
empieza por A po B

"D. Cases" <dca...@inter-trace.es> escribió en el mensaje
news:#qngSTShAHA.1648@tkmsftngp03...

amando

unread,
Jan 24, 2001, 8:39:05 AM1/24/01
to

Asier escribió:

Lo primero que debe aparecer es una letra que indica el tipo de empresa o
entidad, hay unas que son especiales (las que tienen una S, X o P, si hay
alguna mas que alguien lo diga) y el digito o letra último es el que se
calcula.
te adjunto un ejemplo con un textbox y un label, lo calcula al pulsar enter
en el textbox:

Private Sub Text6_KeyPress(KeyAscii As Integer)
Dim MVAL
Dim mcal As Double
Dim mcal2, mrest As Integer
If KeyAscii = 13 Then
If Len(Text6.Text) >= 8 Then
MVAL = Mid(Text6.Text, 2, 7)
mcal = Val(Mid(MVAL, 2, 1)) + Val(Mid(MVAL, 4, 1)) + Val(Mid(MVAL, 6, 1))

mcal2 = Val(Mid(MVAL, 1, 1)) * 2
If mcal2 > 9 Then
mcal = mcal + (Val(Mid(Str(mcal2), 2, 1)) + Val(Mid(Str(mcal2), 3, 1)))

Else
mcal = mcal + mcal2
End If
mcal2 = Val(Mid(MVAL, 3, 1)) * 2
If mcal2 > 9 Then
mcal = mcal + (Val(Mid(Str(mcal2), 2, 1)) + Val(Mid(Str(mcal2), 3, 1)))

Else
mcal = mcal + mcal2
End If
mcal2 = Val(Mid(MVAL, 5, 1)) * 2
If mcal2 > 9 Then
mcal = mcal + (Val(Mid(Str(mcal2), 2, 1)) + Val(Mid(Str(mcal2), 3, 1)))

Else
mcal = mcal + mcal2
End If
mcal2 = Val(Mid(MVAL, 7, 1)) * 2
If mcal2 > 9 Then
mcal = mcal + (Val(Mid(Str(mcal2), 2, 1)) + Val(Mid(Str(mcal2), 3, 1)))

Else
mcal = mcal + mcal2
End If
mcal = Val(Mid(Str(mcal), 3, 1))
If UCase(Mid(Text6.Text, 1, 1)) = "S" Or UCase(Mid(Text6.Text, 1, 1)) =
"X" Or UCase(Mid(Text6.Text, 1, 1)) = "P" Then
Label12.Caption = "Letra CIF: " + Chr(64 + (10 - mcal))
Else
If 10 - (mcal Mod 10) = 10 Then
Label12.Caption = "Número CIF:" + Mid(Str((10 - (mcal Mod 10))), 3,
1)
Else
Label12.Caption = "Número CIF:" + Mid(Str((10 - mcal)), 2, 1)
End If
End If
ElseIf Len(Text6.Text) > 0 And Len(Text6.Text) < 8 Then
MVAL = MsgBox("Le faltan caracteres", vbInformation, "ATENCIÓN")
End If

End If
End Sub

Un saludo. Amando.
Para mas información buscar en trucomania

Mindeye

unread,
Jan 24, 2001, 1:46:48 PM1/24/01
to
Extraído de un mensaje anterior de Joan Mascaró:

----------------------------------------------------------------------------
-------------------------------------------------
El CIF de las empresas (Código de Indentificación Fiscal) está sujeto a unas
normas y a un protocolo de verificación.
En este truco te mostramos ambas cosas, y una función Delphi para validar el
código de control.

Un CIF debe tener 9 cifras.
La primera cifra (Una letra), indica el tipo de sociedad al que hace
referencia, según esta tabla:

A - Sociedades Anónimas
B - Sociedades de responsabilidad limitada
C - Sociedades colectivas
D - Sociedades comanditarias
E - Comunidades de bienes
F - Sociedades cooperativas
G - Asociaciones y otros tipos no definidos
H - Comunidades de propietarios
P - Corporaciones locales
Q - Organismos autónomos
S - Organos de la administración
K, L y M - seguramente para compatibilidad con formatos antiguos
X - Extranjeros, que en lugar del D.N.I. tienen el N.I.E.


La ultima cifra es el dígito de control, que puede ser o bien un número o
bien una letra, en función del tipo de sociedad.
A las categorias P (Ayuntamientos) y X (Extranjeros) les corresponde una
letra en lugar de un número.

El dígito de control se calcula con las 7 cifras restantes del CIF (quitando
la primera y la ultima), con el siguiente algoritmo:

Vamos a usar este cif como ejemplo:

CIF: "A58818501"

- Quitamos la primera y la ultima cifra:

5881850

- Sumamos las cifras pares:

Suma = 8 + 1 + 5 = 14

- Ahora sumamos cada cifra impar multiplicada por dos, y, sumamos las cifras
del resultado:

5 * 2 = 10 ==> 1 + 0 = 1
8 * 2 = 16 ==> 1 + 6 = 7
8 * 2 = 16 ==> 1 + 6 = 7
0 * 2 = 0 ==> 0

- y volvemos a sumar esos resultados a la suma anterior:

Suma:=Suma+1+7+7+0;

- Al final de este proceso, tenemos que Suma=29, pues bien, nos quedamos con
la cifra de las unidades (9)

- Restamos esta cifra de las unidades de 10, dándonos un 1, que es el código
de control para todos los tipos de sociedades exceptuando la X y la P.

- Para las sociedades X y P, habria que sumar un 64 al digito de control que
hemos calculado para hallar el ASCII de la letra de control:

Chr(64+ (10-(Suma mod 10)))

esto esta extraido de http://www.q3.nu/trucomania/ftesp.html
----------------------------------------------------------------------------
-------------------------------------------------

Espero que te sirva,
Mindeye


Asier <asieraie...@euskalnet.net> escribió en el mensaje de noticias
eR15OGRhAHA.2104@tkmsftngp05...

David Tomás Fargas

unread,
Jan 25, 2001, 4:22:13 AM1/25/01
to
Hace tiempo que tengo ese mismo código, que me lo dieron aquí en el foro
como hoy has hecho tu.

Solo decir, que este código tiene un pequeño error que descubrí hace tiempo
:

todos los CIF pertenecientes al grupo de Organismos Autónomos (es decir los
que empiezan por la letra Q) deben llevar una LETRA en lugar de un dígito
como dígito de control (el último dígito).

De hecho es el mismo caso que la X y la P.

Por lo demás, el código funciona a las mil maravillas.

Espero que os sirva de ayuda.

Saludos

David Tomàs Fargas

"Mindeye" <air...@XXXnavegalia.com> escribió en el mensaje
news:3a6f3d54$1@news...

D. Cases

unread,
Jan 25, 2001, 7:33:49 AM1/25/01
to
Perdon, perdon, perdon...

La verdad es que no lo comprove. Pero como lo habia provado con el cif de mi
empresa y "casualmente" salia bien crei que era asi.

Siento mucho las molestias. La proxima vez me quedo calladito
;-P

Saludos
David Cases
dca...@inter-trace.es

j.l.uceda <j.l....@terra.es> escribió en el mensaje de noticias
OMR$ZzThAHA.2024@tkmsftngp03...

Mindeye

unread,
Jan 25, 2001, 12:43:30 PM1/25/01
to
Gracias por la info. La guardaré para cuando tenga que utilizar el código

Saludos,
Mindeye


David Tomás Fargas <Da...@Clipinformatica.com> escribió en el mensaje de
noticias #J4WPBrhAHA.1788@tkmsftngp02...

0 new messages