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
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...
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...
"D. Cases" <dca...@inter-trace.es> escribió en el mensaje
news:#qngSTShAHA.1648@tkmsftngp03...
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
----------------------------------------------------------------------------
-------------------------------------------------
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...
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...
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...
Saludos,
Mindeye
David Tomás Fargas <Da...@Clipinformatica.com> escribió en el mensaje de
noticias #J4WPBrhAHA.1788@tkmsftngp02...