CUIT / CUIL / CDI Código para validarlo en Access

Hola!

A lo largo del tiempo, siempre he tenido la necesidad de poder validar un cierto números de CUIT, y las soluciones que encontré eran parciales, o involucraban instalar un aplicativo cerrado.

Así que decidí generar el código en Visal Basic, de manera de incorporarlo a un módulo de Access y luego vincularlo con un botón en el formulario que necesitara.

Yendo por partes como diria Jack:

Lo básico:
Que es el CUIT?
Clave Única de Identificación Tributaria (CUIT) es una clave única que se utiliza en el sistema tributario argentino para poder identificar inequívocamente a las personas físicas o jurídica autónomas, susceptible de tributar. Es asignada por la Administración Federal de Ingresos Públicos, para poder confeccionar el registro o censo de las mismas, para efectos administrativo-tributarios.

Que es el CUIL?
Código Único de Identificación Laboral (CUIL) es el número que se otorga a todo trabajador al inicio de su actividad laboral en relación de dependencia que pertenezca al Sistema Integrado de Jubilaciones y Pensiones (SIJP), y a toda otra persona que gestione alguna prestación o servicio de la Seguridad Social en la República Argentina.

Que es el CDI?
Clave de Identificación (CDI), es un código de identificación que el organismo otorga a aquellos ciudadanos que no poseen CUIT ni CUIL por no existir causales de índole fiscal o previsional que los obligue, y que necesiten identificarse para la realización de determinados trámites.

Estructuralmente es una clave numérica de 11 dígitos que tiene 3 partes definidas:
Prefijo:
Dos dígitos. Indican que tipo de persona es identificada por la clave numèrica.
Hombres: 20-23-24
Mujeres: 27-23-24
Sociedades: 30-33-34

Identificación:
Ocho dígitos. En el caso de las personas físicas es el número de DNI, que en el caso de ser una cifra menor a 8 dígitos se completa con ceros adelante. En el caso de las personas jurídicas es un número correlativo otorgado por el sistema central de la AFIP a todos los contribuyentes del país, antes correspondia al número que poseían en la Dirección Nacional de Recaudación Previsional (DNRP).

Dígito Verificador:
Un dígito. Es un valor calculado en función de los anteriores y que tiene como objetivo el validar la clave.


Algunas curiosidades:
Cuando el resultado del cálculo inicial da 10, el dígito verificador pasa a ser 9 y el prefijo de las Sociedades pasa a ser 33, el de los hombres a 23.En el caso de las mujeres el prefijo pasa a 23 y el digito verificador pasa a ser 4. Si el numero de documento estuviera duplicado (cosa que sucede) el prefijo cambia a 34 en Sociedades y a 24 en las personas físicas.

Para poder tenerlo a mano, arme un prodedimiento (Sub) público en un módulo, y en un formulario cualquiera le agregué un botón que llama el mismo.

Código asociado al botón:

Private Sub BotonCuit_Click()

VALIDA_CUIT (doc)

End Sub

El código del procedimiento:

Public Sub VALIDA_CUIT(doc)

Dim MiHora As Date
Dim Operacion As String
Dim Longitud As Integer
Dim Sujeto As String
Dim Valor1 As Integer
Dim Valor2 As Integer
Dim Valor3 As Integer
Dim PREFIJO As String
Dim Msg As String
Dim DIGITOVERIFICADOR As String
Dim Resultado As String

MiHora = Now()
doc = InputBox("Ingrese el CUIT/CUIL a validar (ingresando los 11 dígitos)." & vbCrLf & vbCrLf & _
"Si desea estimarlo por medio del cálculo, ingrese el número de documento." & vbCrLf & vbCrLf & MiHora, "CUIT" )
Longitud = Len(doc)

Select Case Longitud

Case 11 'Cantidad Correcta de dígitos
Operacion = "V" 'Define la operacion como V -> Validación
GoTo Algoritmo 'Ir al algoritmo que calcula el CUIT

Case 6
Operacion = "C" 'Define la operacion como C -> Cálculo
doc = "00" & doc
GoTo DefinirSujeto

Case 7
Operacion = "C" 'Define la operacion como C -> Cálculo
doc = "0" & doc
GoTo DefinirSujeto

Case 8
Operacion = "C" 'Define la operacion como C -> Cálculo
GoTo DefinirSujeto
Case Else
MsgBox "Ha ingresado una cantidad incorrecta de dìgitos. Por favor verifique los datos e intente nuevamente", _
vbCritical, "Atención!"
Exit Sub
End Select

DefinirSujeto:
Sujeto = InputBox( "Defina para quien es el CUIT/CUIL" & vbCrLf & vbCrLf & "Si es de una persona del sexo Femenino ingrese: F" _
& vbCrLf & "Si es de una persona del sexo Femenino ingrese: M" & vbCrLf & "Si es de una Sociedad ingrese: S", _
"Definir Sujeto", "M" )

Select Case Sujeto
Case "M" 'El Sujeto es de sexo Masculino
PREFIJO = "20"
doc = PREFIJO & doc
GoTo Algoritmo 'Ir al algoritmo que calcula el CUIT
Case "F" 'El Sujeto es de sexo Femenino
PREFIJO = "27"
doc = PREFIJO & doc
GoTo Algoritmo 'Ir al algoritmo que calcula el CUIT
Case "S"
PREFIJO = "30" 'El Sujeto es una Persona Jurídica
doc = PREFIJO & doc
GoTo Algoritmo 'Ir al algoritmo que calcula el CUIT
End Select


Algoritmo: 'Algoritmo que calcula el CUIT

X1 = (Mid(doc, 1, 1) * 5)
X2 = (Mid(doc, 2, 1) * 4)
X3 = (Mid(doc, 3, 1) * 3)
X4 = (Mid(doc, 4, 1) * 2)
X5 = (Mid(doc, 5, 1) * 7)
X6 = (Mid(doc, 6, 1) * 6)
X7 = (Mid(doc, 7, 1) * 5)
X8 = (Mid(doc, 8, 1) * 4)
X9 = (Mid(doc, 9, 1) * 3)
X10 = (Mid(doc, 10, 1) * 2)

Valor1 = X1 + X2 + X3 + X4 + X5 + X6 + X7 + X8 + X9 + X10
Valor2 = Valor1 Mod 11
Valor3 = 11 - Valor2

Select Case Valor3
Case 11
DIGITOVERIFICADOR = 0
Case 10
DIGITOVERIFICADOR = 9
Select Case Sujeto
Case "M"
PREFIJO = "23"
Case "F"
PREFIJO = "23"
DIGITOVERIFICADOR = "4"
Case "S"
PREFIJO = "33"
End Select
Case Else
DIGITOVERIFICADOR = Valor3
End Select

Select Case Operacion 'Identifica si fue una Validación o un Cálculo
Case "C"
doc = Right(doc, 8)
Resultado = PREFIJO & doc & DIGITOVERIFICADOR
MsgBox "El CUIT estimado por medio del algoritmo es: " & Resultado, _
vbInformation, "Resultados"

Case "V"
Select Case Valor3 'Identifica el Valor3 del CUIT ingresado
Case 10
Select Case Left(doc, 1) 'Identifica el Primer digito del CUIT ingresado para definir
' si es una Persona o úna Sociedad
Case 3 'El caso de una Sociedad
PREFIJO = "33"
Msg = "El CUIT estimado por medio del algoritmo es: " & PREFIJO & Mid(doc, 3, 8) & _
DIGITOVERIFICADOR

Case 2 'El caso de una Persona
PREFIJO = "23"
Msg = "El CUIT estimado por medio del algoritmo para una persona de sexo Masculino es: " _
& PREFIJO & Mid(doc, 3, 8) & DIGITOVERIFICADOR & vbCrLf & _
"El CUIT estimado por medio del algoritmo para una persona de sexo Femenino es: " _
& PREFIJO & Mid(doc, 3, 8) & "4"
End Select

MsgBox "El CUIT ingresado NO ha sido validado correctamente." & vbCrLf & vbCrLf & _
Msg, vbCritical, "Validación"

Case Else
If DIGITOVERIFICADOR = Right(doc, 1) Then
MsgBox "El CUIT ingresado ha sido validado correctamente.", vbInformation, "Validación"
Else
MsgBox "El CUIT ingresado NO ha sido validado correctamente." & vbCrLf & vbCrLf & _
"El CUIT estimado por medio del algoritmo es: " & Left(doc, 10) & DIGITOVERIFICADOR, _
vbCritical, "Validación"
End If
End Select
End Select

End Sub


Bueno, espero que les resulte de utilidad. Suerte!


P/D. Todo suma, asi que si quieren tirar un puntito o un mensaje estaria muy agradecido!
P/D2. Si les sirvio al menos para mejorar algo que ya tenian, estaria copado un comentario, lo mismo si les parece que el post es una bldez.

Fuentes de Información - CUIT / CUIL / CDI Código para validarlo en Access

Tags: facil | visual | validar | codigo | Basic | Access | cuit | cuil

Dar puntos
23 Puntos
Votos: 3 - T!score: 8/10
  • 2 Seguidores
  • 8.829 Visitas
  • 5 Favoritos

6 comentarios - CUIT / CUIL / CDI Código para validarlo en Access

@charly_22 Hace más de 3 años +1
Excelente vieja, me re sirvio
@Damuchi Hace más de 3 años +1
Muy bueno, pero te hago una pregunta, tengo un campo que se llama cuit y quiero que al actulizarse ese campo me diga si es correcto o no ese cuit, sabras como hacerlo? saludos
@danieljhotan Hace más de 2 años
Maestro.
@rocfan Hace más de 1 año
Ok, dos años después la pregunta de @Damuchi no tiene respuesta. Puede servir para alguien que consulte ahora como yo.
Para que se valide directamente al agregar el CUIT yo lo haría sobre un formulario. Generalmente usamos formularios para cambiar los datos de una tabla. Entonces agregamos el código al evento Change (Al Cambiar) del cuadro de texto donde se ingrese el CUIT.
@chambril Hace más de 2 meses
Te dejo los 10 que te mereces por el esfuerzo de crear y compartir, dentro de un rato lo pruebo.