Validando Cif, Nif y Nie

VictorR Lunes, 29 Junio 2009

Etiquetas:,

Del proyecto en el que trabajo en la actualidad he “sacado” estas tres piezas de código. Nada fuera de lo común, pero que sin duda sirven y servirán para una parte de las pequeñas tareas que se realizan en cada proyecto. Esto es, validar datos.

Como todo el mundo sabe, para que una aplicación, web, cosa… funcione, debe mantener un conjunto discreto de datos (esto siempre me gustó de las clases de mates), información, de una manera poco ambigua. Y por eso es necesario validar la mayoría de datos que la aplicación, web, cosa… acepta.

Básicamente hay dos maneras de validar los datos, una es en el navegador del cliente, con tecnologías tipo javascript, y la otra es en el servidor, por ejemplo con java, php… Poco más queda decir a parte de que la manera más fácil de controlar los datos y más segura es validar los datos a nivel de servidor. Ya sabes, desactivas el javascripi y te quedas sin validar.

Sim embargo, lo que os traigo aquí es javascript, ¿por qué? Porque a modo de “repositorio” quiero guardar estas “perlas” para futuros trabajos y que sirva a otros vagos de ayuda.

Validar CIF

String.prototype.testCIF = function(){
    var pares = 0;
    var impares = 0;
    var suma;
    var ultima;
    var unumero;
    var uletra = new Array("J", "A", "B", "C", "D", "E", "F", "G", "H", "I");
    var xxx;
   
    texto = this.toUpperCase();
   
    var regular = new RegExp(/^[ABCDEFGHKLMNPQS]\d{7}[0-9,A-J]$/g);
    if (!regular.exec(texto)) return false;
         
    ultima = texto.substr(8,1);

    for (var cont = 1 ; cont < 7 ; cont ++){
        xxx = (2 * parseInt(texto.substr(cont++,1))).toString() + "0";
        impares += parseInt(xxx.substr(0,1)) + parseInt(xxx.substr(1,1));
        pares += parseInt(texto.substr(cont,1));
    }
    xxx = (2 * parseInt(texto.substr(cont,1))).toString() + "0";
    impares += parseInt(xxx.substr(0,1)) + parseInt(xxx.substr(1,1));
     
    suma = (pares + impares).toString();
    unumero = parseInt(suma.substr(suma.length - 1, 1));
    unumero = (10 - unumero).toString();
    if(unumero == 10) unumero = 0;
     
    if ((ultima == unumero) || (ultima == uletra[unumero]))
        return true;
    else
        return false;
}

Validar DNI

String.prototype.testDNI = function() {
    dni = this.toUpperCase();
    numero = dni.substr(0,dni.length-1);
    let = dni.substr(dni.length-1,1);
    let = let.toUpperCase();
    numero = numero % 23;
    letra = 'TRWAGMYFPDXBNJZSQVHLCKET';
    lletra = letra.charAt(numero);
   
    return (lletra == let)
}

Validar NIE

String.prototype.testNIE = function() {
    var dni = this.toUpperCase();
    var pre = dni.substr(0, 1);
    var prev = '0';
    if (pre == 'X')
       prev = '0';
    else if (pre == 'Y')
       prev = '1';
    else if (pre == 'Z')
       prev = '2';
    numero = prev + dni.substr(1,dni.length-1);
    return numero.testDNI();
}

Si os dáis cuenta, las funciones extienden la clase String de javascript, esto es simplemente para que sea más facil de utilizar y lo más “orientado” a objetos posible.

Ejemplo de USO

// validación de un DNI
"74185296S".testDNI();      // value: true

NOTA: que quede claro que el código no me lo he inventado yo, lo he adaptado de los recursos que se pueden encontrar en la inmensidad de internet. Lo que pasa es que no recuerdo de dónde los saqué, ni si lo saqué yo, y no puedo poner la retribución que se merece el autor/es de dichos scripts.

Definiendo entornos con Maven

VictorR Miércoles, 3 Junio 2009

Etiquetas:, ,

Una pregunta, ¿qué pasa cuando quieres desplegar tu aplicación en diferentes entornos? Lo normal es que estos entornos no sean iguales, aunque es lo aconsejable. Lo normal es que no acaben de tener la misma configuración, por ejemplo el nivel de logs (debug para desarrollo, error para producción…). Lo normal, vaya, es que tengas que [...]

Con la camiseta al trabajo!

VictorR Jueves, 7 Mayo 2009

Etiquetas:

Con la camiseta del Barça. Mañana toca ir al trabajo con la camiseta del Barça, y es que después de ver cómo el Barça gana 2-6 al Madrizzz y elimina de la Champions al Chelsea en el minuto 93 jugando con uno menos, cuando todo estaba perdido, no se puede hacer otra cosa…
VISCA EL [...]