Validar el ingreso del RUC de Ecuador en Java – Segunda parte
febrero 20, 2011 a las 5:26 pm | Publicado en Java, Programacion | 2 comentariosEtiquetas: java, ruc-ecuador, validar
En la primera parte les mostré cómo validar el RUC de una persona natural. Ahora les mostraré cómo validar el RUC de una persona jurídica o extranjera.
RUC de persona jurídica o extranjera
La estructura de este tipo de RUC se muestra en la siguiente figura:
La validación de este tipo de RUC se basa en el algoritmo de Módulo 11. Los coeficientes son: 4, 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 10 el RUC es correcto.
Excepción: Si el residuo es cero, el dígito verificador es cero.
Ejemplo:
Coeficiente: 4 3 2 7 6 5 4 3 2
RUC: 1 7 9 0 0 1 1 6 7 4 0 0 1
Producto: 4 21 18 0 0 5 4 18 14
Sumatoria: 84
Residuo: 84 dividido para 11 da como respuesta 7, y como residuo 7.
Resta: 11 – 7 = 4.
4 Es el dígito verificador.
El código es el siguiente:
public class ValidaRucSociedades {
/**
* @param args
*/
private static final int num_provincias = 24;
//public static String rucPrueba = “1790011674001″;
private static int[] coeficientes = {4,3,2,7,6,5,4,3,2};
private static int constante = 11;public static Boolean validacionRUC(String ruc){
//verifica que los dos primeros dígitos correspondan a un valor entre 1 y NUMERO_DE_PROVINCIAS
int prov = Integer.parseInt(ruc.substring(0, 2));if (!((prov > 0) && (prov <= num_provincias))) {
System.out.println(«Error: ruc ingresada mal»);
return false;
}//verifica que el último dígito de la cédula sea válido
int[] d = new int[10];
int suma = 0;//Asignamos el string a un array
for (int i = 0; i < d.length; i++) {
d[i] = Integer.parseInt(ruc.charAt(i) + «»);
}for (int i=0; i< d.length – 1; i++) {
d[i] = d[i] * coeficientes[i];
suma += d[i];
//System.out.println(“Vector d en ” + i + ” es ” + d[i]);
}System.out.println(«Suma es: » + suma);
int aux, resp;
aux = suma % constante;
resp = constante – aux;resp = (resp == 10) ? 0 : resp;
System.out.println(«Aux: » + aux);
System.out.println(«Resp » + resp);
System.out.println(«d[9] » + d[9]);if (resp == d[9]) {
return true;
}
else
return false;
}public static void main(String[] args) {
String ruc_dato = «1790011674001»;
if (validacionRUC(ruc_dato))
System.out.println(«El RUC es correcto»);
else
System.out.println(«El RUC es incorrecto»);
}
}
En la tercera parte les enseñaré a validar el RUC para empresas públicas.
Pueden descargarse el código fuente de esta explicación en el siguiente enlace: http://mygnet.net/codigos/java/varios/validar_la_cedula_y_el_ruc_de_ecuador_en_java.3335
2 comentarios »
RSS feed for comments on this post. TrackBack URI
Deja un comentario
Blog de WordPress.com.
Entries y comentarios feeds.
[…] Actualizados : Validar el ingreso del RUC de Ecuador en Java – Primera parte Validar el ingreso del RUC de Ecuador en Java – Segunda parte Validar el ingreso del RUC de Ecuador en Java – Tercera […]
Pingback by Articulo Indexado en la Blogosfera de Sysmaya— marzo 11, 2011 #
Una pregunta por que en el ejemplo en el momento de dividir 84 /11 sale 7.6363 al redondear sale 7.6 por que se toma como residuo el 7?
Comment by damian316— junio 5, 2012 #