En la primera parte les mostré cómo validar el RUC de una persona natural.  En la segunda parte les mostré cómo validar el RUC para persona jurídica o extranjera.  Ahora les mostraré cómo validar el RUC para empresas públicas.

RUC para empresas públicas

La estructura de este tipo de RUC se muestra en la siguiente figura:

RUC empresa públicaLa validación de este tipo de RUC se basa en el algoritmo de Módulo 11. Los coeficientes son: 3, 2, 7, 6, 5, 4, 3, 2.

El procedimiento es el siguiente:

  • Se multiplican los primeros nueve dígitos del RUC por cada uno de los coeficientes que le corresponde en la misma posición.
  • Se suma ese resultado.
  • Se divide ese resultado para el módulo, como este RUC es módulo 11, se divide la suma para 11, y se obtiene su residuo.
  • Se resta el módulo (en este caso 11) de el residuo de la división anterior.
  • El resultado es el dígito verificador. Si ese número coincide con el número del RUC de la posición 9 el RUC es correcto.

Excepción: Si el residuo es cero, el dígito verificador es cero.

Ejemplo:
Coeficiente:     3     2     7    6    5    4   3   2

RUC:                   1     7     6    0   0   0    1    5     5   0   0   0   1

Producto:         3   14   42   0   0   0   3   10   14

Sumatoria:        72

Residuo:             72 dividido para 11 da como respuesta 6, y como residuo 6.

Resta:                 11 – 6 = 5.

5 Es el dígito verificador.

El código es el siguiente:

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
public class ValidaRucEP {
 
	public static final int NUM_PROVINCIAS = 24;
 
	public static Boolean validaRucEP(String ruc) {
		final int prov = Integer.parseInt(ruc.substring(0, 2));
		boolean resp = false;
 
		if (!((prov > 0) && (prov <= NUM_PROVINCIAS))) {
			resp = false;
		}
 
		// boolean val = false;
		Integer v1, v2, v3, v4, v5, v6, v7, v8, v9;
		Integer sumatoria;
		Integer modulo;
		Integer digito;
		int[] d = new int[ruc.length()];
 
		for (int i = 0; i < d.length; i++) {
			d[i] = Integer.parseInt(ruc.charAt(i) + "");
		}
 
		v1 = d[0] * 3;
		v2 = d[1] * 2;
		v3 = d[2] * 7;
		v4 = d[3] * 6;
		v5 = d[4] * 5;
		v6 = d[5] * 4;
		v7 = d[6] * 3;
		v8 = d[7] * 2;
		v9 = d[8];
 
		sumatoria = v1 + v2 + v3 + v4 + v5 + v6 + v7 + v8;
		modulo = sumatoria % 11;
		if (modulo == 0) {
			return true;
		}
		digito = 11 - modulo;
 
		if (digito.equals(v9)) {
			resp = true;
		} else {
			resp = false;
		}
		return resp;
	}
 
	public static void main(String[] args) {
		String ruc_dato = "1760001550001";
		if (validaRucEP(ruc_dato)) {
			System.out.println("El RUC es correcto");
		} else
			System.out.println("El RUC es incorrecto");
	}
}

Espero que les sirva.

Pueden descargarse el código fuente de esta explicación en el siguiente enlace:

Valida RUC Empresas Públicas del Ecuador
Valida RUC Empresas Públicas del Ecuador
ValidaRucEP.java
Version: 1.0
1.2 KiB
803 Downloads
Details

2 comentarios para “Validar el ingreso del RUC de Ecuador en Java – Tercera parte”

  • gwinner dice:

    Que tal… muy bueno tu aporte para validar la RUC, solo que debes hacer una pequeña corrección. Para validar RUC´s de empresas públicas utilizas solo los 8 primeros números del RUC y el noveno lo usas como verificador, dado que los coeficiente son solo 8. Ok. Saludos… GWINNER

Deja un comentario

Polls

¿Qué lenguaje de programación utilizas más?

View Results

Loading ... Loading ...
Síguenos en Twitter
Cyberexplorador en Twitter
Comparte este blog
Bookmark and Share
Publicidad
Follow

Get every new post on this blog delivered to your Inbox.

Join other followers: