Código de FoxPro/Visual FoxPro - Calcular Dígito Verificador del RUC (Paraguay)

Imágen de perfil

Calcular Dígito Verificador del RUC (Paraguay)gráfica de visualizaciones


FoxPro/Visual FoxPro

estrellaestrellaestrellaestrellaestrella(3)
Publicado el 13 de Marzo del 2013 por José
10.526 visualizaciones desde el 13 de Marzo del 2013. Una media de 56 por semana
Código para Visual FoxPro 9 (ServicePack 1) que calcula el dígito verificador del RUC para Paraguay.

Versión 1
estrellaestrellaestrellaestrellaestrella(3)

Publicado el 13 de Marzo del 2013gráfica de visualizaciones de la versión: Versión 1
10.527 visualizaciones desde el 13 de Marzo del 2013. Una media de 56 por semana
estrellaestrellaestrellaestrellaestrella
estrellaestrellaestrellaestrella
estrellaestrellaestrella
estrellaestrella
estrella

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
*
* consultarDV.prg
*
* Derechos Reservados (c) 2000-2009 José Acuña
* Villa Elisa, Paraguay
*
* Descripción:
* Calcula el dígito verificador del RUC.
*
* Compilador / Lenguaje:
* Microsoft Visual Foxpro 9.0 Service Pack 1.
*
* Historial de Modificación:
* Enero 03, 2009     Creación del Programa
*
PARAMETERS tcRUC
 
LOCAL lnDV AS INTEGER
lnDV = calcular(tcRUC, 11)
 
RETURN (lnDV)
 
*------------------------------------------------------------------------------*
FUNCTION calcular
   PARAMETERS tcNumero, tnBaseMax
 
   LOCAL lcNumeroAl, i, lcCaracter, k, lnTotal, lnNumeroAux, lnResto, lnDigito
 
   lcNumeroAl = ""
 
   FOR i = 1 TO LEN(tcNumero)
      lcCaracter = UPPER(SUBSTR(tcNumero, i, 1))
 
      IF !BETWEEN(ASC(lcCaracter), 48, 57) THEN   && de 0 a 9
         lcNumeroAl = lcNumeroAl + ALLTRIM(STR(ASC(lcCaracter)))
      ELSE
         lcNumeroAl = lcNumeroAl + lcCaracter
      ENDIF
   ENDFOR
 
   k = 2
   lnTotal = 0
 
   FOR i = LEN(lcNumeroAl) TO 1 STEP -1
      IF k > tnBaseMax THEN
         k = 2
      ENDIF
 
      lnNumeroAux = VAL(SUBSTR(lcNumeroAl, i, 1))
      lnTotal = lnTotal + (lnNumeroAux * k)
      k = k + 1
   ENDFOR
 
   lnResto = MOD(lnTotal, 11)
 
   IF lnResto > 1 THEN
      lnDigito = 11 - lnResto
   ELSE
      lnDigito = 0
   ENDIF
 
   RETURN (lnDigito)
ENDFUNC



Comentarios sobre la versión: Versión 1 (3)

Jessi
17 de Julio del 2016
estrellaestrellaestrellaestrellaestrella
el código funciona muy bien
Responder
Luis Alberto Gomez Mendoza
15 de Noviembre del 2016
estrellaestrellaestrellaestrellaestrella
Necesito como hago para consultar los datos de un RUC (Paraguay) a traves de mi sistema, si alguien lo sabe...
Responder
Imágen de perfil
José Acuña
Hace 4d
estrellaestrellaestrellaestrellaestrella
La SET proporciona algunos datos a través de su sitio web:

http://www.set.gov.py/portal/PARAGUAY-SET/InformesPeriodicos

Debe hacer clic en el enlace que dice:

"Listado de RUC con sus equivalencias"

Y descargar los archivos zip que aparecen en la página, los mismos están formato TXT; los datos están delimitados con el caracter "|" (sin las comillas).

Una vez que descomprima los arhivos, puede crear un tabla DBF con los siguientes campos: ruc, nombre, dv y ruc_anterior; luego se debe utilizar el comando APPEND FROM para traspasar los datos de los archivos TXT al archivo DBF.

Cuando tenga el archivo DBF con los datos puede crear índice por el campo RUC para localizar el registro y recuperar los demás datos.
Responder

Comentar la versión: Versión 1

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios

http://lwp-l.com/s2327