Digito verificador

2 respuestas [Último envío]
chronot
Imagen de chronot
Offline
alta: 30/01/2011
Puntos: 2390

Buenos dias!
Quisiera hacerles la siguiente consulta:

¿Cómo se calcula el digito verificador correspondiente a un RUC (Registro Unico de Contribuyentes) de Paraguay?

El RUC es un numero que identifica a los contribuyentes que deben pagar impuestos.
Para Personas fisicas: Es el numero de documento de identidad seguido de un guión y el digito verificador. Ej: 1946520-3
Para personas juridicas: Es un numero de 8 cifras que empieza en 80000000 seguido de un guión y el digito verificador. Ej: 80009735-1

En el sitio oficial de la entidad recaudadora de Paraguay existe el codigo fuente en Visual Basic, les trascribo a continuación. Me gustaria conocer en terminos sencillos el algoritmo para calcular este digito verificador (DV). Muchisimas gracias por la ayuda.

FUNCION PARA EL CALCULO DEL DIGITO VERIFICADOR EN VISUAL BASIC

Function getDV(RUC As String) As String
getDV = calcular(RUC, 11)
End Function


Function calcular(numero As String, basemax As Integer) As String
Dim codigo As Long
Dim numero_al As String

Dim i
For i = 1 To Len(numero)
Dim c
c = Mid$(numero, i, 1)
codigo = Asc(UCase(c))
If Not (codigo >= 48 And codigo <= 57) Then
numero_al = numero_al & codigo
Else
numero_al = numero_al & c
End If
Next

Dim k: Dim total
k = 2
total = 0

For i = Len(numero_al) To 1 Step -1
If (k > basemax) Then k = 2
Dim numero_aux
numero_aux = Val(Mid(numero_al, i, 1))
total = total + (numero_aux * k)
k = k + 1
Next


Dim resto: Dim digito
resto = total Mod 11
If (resto > 1) Then
digito = 11 - resto
Else
digito = 0
End If
calcular = digito
End Function

pacomegia
Imagen de pacomegia
Offline
alta: 27/12/2006
Puntos: 1000
Re: Digito verificador

parece que utiliza el método del módulo 11

consiste en multiplicar cada cifra del número por un valor (las unidades se multiplican por 2, las decenas por 3, las centenas por 4, ...) se suman los resultados de esas multiplicaciones y se calcula el resto de dividirlo por 11

el dígito de verificación es 11 menos el resto de la división

mira en este artículo de la wikipedia, donde explican esto del módulo 11

------
Ya sé Excel, pero necesito más ahora en pdf

 

chronot
Imagen de chronot
Offline
alta: 30/01/2011
Puntos: 2390
Re: Digito verificador

¡¡¡Wow, Pacomegia, me dejas impresionado con tu sabiduría, muchísimas gracias por tan valiosa información!!! Siempre quise saber esto y gracias a ti he obtenido la más acertada de las respuestas :):):)

Es la primera vez que escucho sobre el módulo 11, ¿cómo supiste que de eso se trataba?

Estoy tan feliz de aprender algo sorprendente gracias a ti, ¡mil gracias!