epespad

Función Para Validar CUIT en VB.NET

Función Para Validar CUIT en VB.NET


Función Para Validar CUIT en VB.NET


Despues de buscar la forma de validar un CUIT provisto por la AFIP, entonctré poca infromación referente a como realizar dicha validación. Aca les dejo una función en VB.NET para los que necesiten realizar este tipo de operación, de lo mas sencilla de comprender.
Si necesitan ayuda en algo referente a VB.NET o a esta funcion, avisen por msg o comment.

Saludos.

Private Function mkf_validacuit(ByVal mk_p_nro As String) As Boolean
Dim mk_suma As Integer
Dim mk_valido As String
mk_p_nro = mk_p_nro.Replace("-", "" )
If IsNumeric(mk_p_nro) Then
If mk_p_nro.Length <> 11 Then
mk_valido = False
Else
mk_suma = 0
mk_suma += CInt(mk_p_nro.Substring(0, 1)) * 5
mk_suma += CInt(mk_p_nro.Substring(1, 1)) * 4
mk_suma += CInt(mk_p_nro.Substring(2, 1)) * 3
mk_suma += CInt(mk_p_nro.Substring(3, 1)) * 2
mk_suma += CInt(mk_p_nro.Substring(4, 1)) * 7
mk_suma += CInt(mk_p_nro.Substring(5, 1)) * 6
mk_suma += CInt(mk_p_nro.Substring(6, 1)) * 5
mk_suma += CInt(mk_p_nro.Substring(7, 1)) * 4
mk_suma += CInt(mk_p_nro.Substring(8, 1)) * 3
mk_suma += CInt(mk_p_nro.Substring(9, 1)) * 2
mk_suma += CInt(mk_p_nro.Substring(10, 1)) * 1
End If

If Math.Round(mk_suma / 11, 0) = (mk_suma / 11) Then
mk_valido = True
Else
mk_valido = False
End If
Else
mk_valido = False
End If
Return (mk_valido)
End Function




Voten si les sirve, gracias!

19 comentarios - Función Para Validar CUIT en VB.NET

ponchosline
gracias Mannnnnnnnnnnnnn! no sabes como me ayudoooo
lebateleur
Te dejo 10 puntitos, mereces ser full.
cuervoeste
buen aporte, yo lo hice en vb6 pero para que me valide correctamente saque el ultimo caracter (*1). No se si esta bien pero aunque sea me valida! gracias
monobios
+10 de un superamigo T
XALIENWAREX
Al fin la solucion! Gracias CAPOOOOOO +10
2herr234 +2
acabo de redefinir tu funcion , me sirvio como guia, el resultado me quedo asi:
Private Function VerfCuit(ByVal e As String) As Boolean
Dim numconst As String = 5432765432
Dim x As Integer
Dim valor1 As Integer
Dim valor2 As Integer
Dim valor3 As Integer
Dim comprobante As Integer = CInt(e.ToArray.GetValue(e.ToArray.Length - 1).ToString)

For x = 0 To CInt(CInt(e.ToArray.Length).ToString - 2)
valor1 += CInt(e.ToArray.GetValue(x).ToString) * CInt(numconst.ToArray.GetValue(x).ToString)
Next
valor2 = valor1 Mod 11
valor3 = 11 - valor2
If valor3 = comprobante Then
Return True
Else
Return False

End If

End Function
espero sirva de algo. Pruebenla, saludos.
clrgame
Gracias, la voy a probar a ver qué onda.

Saludos!
gerardocmantille
Hay que corregirlo:
Function mkf_validacuit(ByVal mk_p_nro As String) As Boolean
Dim mk_suma As Integer
Dim mk_valido As String
mk_p_nro = mk_p_nro.Replace("-", ""
If IsNumeric(mk_p_nro) Then
If mk_p_nro.Length <> 11 Then
mk_valido = False
Else
mk_suma = 0
mk_suma += CInt(mk_p_nro.Substring(0, 1)) * 5
mk_suma += CInt(mk_p_nro.Substring(1, 1)) * 4
mk_suma += CInt(mk_p_nro.Substring(2, 1)) * 3
mk_suma += CInt(mk_p_nro.Substring(3, 1)) * 2
mk_suma += CInt(mk_p_nro.Substring(4, 1)) * 7
mk_suma += CInt(mk_p_nro.Substring(5, 1)) * 6
mk_suma += CInt(mk_p_nro.Substring(6, 1)) * 5
mk_suma += CInt(mk_p_nro.Substring(7, 1)) * 4
mk_suma += CInt(mk_p_nro.Substring(8, 1)) * 3
mk_suma += CInt(mk_p_nro.Substring(9, 1)) * 2
mk_suma += CInt(mk_p_nro.Substring(10, 1)) * 1
If Math.Round(mk_suma / 11, 0) = (mk_suma / 11) Then
mk_valido = True
Else
mk_valido = False
End If
End If
Else
mk_valido = False
End If
Return (mk_valido)

End Function
tonadita1
Envio una correccion... De esa manera si envias 0 te daría True, entre otras opciones

Dim mk_valido As String
Dim mk_suma As Integer
mk_valido = False
mk_p_nro = mk_p_nro.Replace("-", ""
If IsNumeric(mk_p_nro) Then
If mk_p_nro.Length <> 11 Then
mk_valido = False
Else
mk_suma = 0
mk_suma += CInt(mk_p_nro.Substring(0, 1)) * 5
mk_suma += CInt(mk_p_nro.Substring(1, 1)) * 4
mk_suma += CInt(mk_p_nro.Substring(2, 1)) * 3
mk_suma += CInt(mk_p_nro.Substring(3, 1)) * 2
mk_suma += CInt(mk_p_nro.Substring(4, 1)) * 7
mk_suma += CInt(mk_p_nro.Substring(5, 1)) * 6
mk_suma += CInt(mk_p_nro.Substring(6, 1)) * 5
mk_suma += CInt(mk_p_nro.Substring(7, 1)) * 4
mk_suma += CInt(mk_p_nro.Substring(8, 1)) * 3
mk_suma += CInt(mk_p_nro.Substring(9, 1)) * 2
mk_suma += CInt(mk_p_nro.Substring(10, 1)) * 1

If Math.Round(mk_suma / 11, 0) = (mk_suma / 11) Then
mk_valido = True
Else
mk_valido = False
End If
End If
Else
mk_valido = False
End If
Return (mk_valido)