El otro día me encontré con un problemilla, busqué en la web y si halle el algoritmo, pero aquí dejo la entrada en VB.NET por si no tienes tiempo de adaptar lo que encuentras a tu lenguaje.
Private Function FValidarRuc(ByVal ruc As String) As Int16
Dim nroRUC As String = String.Empty
Dim valor As Int16
Dim valorB As Decimal
nroRUC = ruc
valor = (nroRUC.Substring(0, 1) * 5) + _
(nroRUC.Substring(1, 1) * 4) + _
(nroRUC.Substring(2, 1) * 3) + _
(nroRUC.Substring(3, 1) * 2) + _
(nroRUC.Substring(4, 1) * 7) + _
(nroRUC.Substring(5, 1) * 6) + _
(nroRUC.Substring(6, 1) * 5) + _
(nroRUC.Substring(7, 1) * 4) + _
(nroRUC.Substring(8, 1) * 3) + _
(nroRUC.Substring(9, 1) * 2)
valorB = Int((valor / 11))
valor = valor - (valorB * 11)
valor = 11 - valor
IIf(valor = 10, valor = 0, IIf(valor = 11, valor = 1, valor))
If ruc.Substring(10, 1) <> valor Then : Return 0 : Else : Return 1 : End If
End Function
jueves, 30 de julio de 2009
Suscribirse a:
Entradas (Atom)