jueves, 14 de abril de 2011

El Rut

Nadie podría discutir la importancia que tiene el rut en la vida de los chilenos. Desde que uno comienza a hacer actividades en sociedad, lo primero que se requiere es el rut. Rápidamente, hay que aprendérselo de memoria para poder estar tranquilo que por lo menos se va a superar la primera barrera de cualquier trámite burocrático al que uno se vea enfrentado. La segunda barrera tiene que ver con el acceso a sistemas On Line chilenos, en los cuales, casi siempre como parte del proceso de inscripción, se debe indicar el rut. Como resultado de esto, en algunos casos (como en los bancos), el posterior proceso de ingreso es mediante el rut. Este último punto abre una discusión enorme respecto a temas de seguridad informática asociados a este mecanismo de autenticación, pero esa es otra conversación.

El caso es que, si uno revisa todos los sitios, las validaciones, los formularios de registro, etc., cada uno tiene condiciones distintas para el ingreso del rut. Considerando las características del rut, los casos posibles de ingreso son:

CASO
NUMEROS
DIGITO
VERIFICADOR
GUION
PUNTOS
EJEMPLO
1
SI
SI
SI
SI
99.123.456-7
2
SI
SI
SI
NO
99123456-7
3
SI
SI
NO
NO
991234567
4
SI
NO
NO
NO
99123456

En la tabla anterior hay combinaciones que faltan, pero las omití porque no son usables (ejemplo, sin numeros y sólo dígito verificador).

Considerando el escenario anterior, lo más increíble es que todas las combinaciones son válidas y están vigentes en los sitios que me ha tocado ver. Llega a tanto, que incluso hay sitios que “corrigen” o formatean el rut mientras uno escribe para ajustarlo al formato (tema aparte la usabilidad de esta solución).

Una primera solución es la de estandarizar, a nivel de industria, el mecanismo de ingreso/registro de un rut. Obviamente, creo que esto es imposible pero, si algún día sucediera, creo que resolvería varios problemas.

La segunda opción es incorporar a los validadores, interfaces de usuario, etc., los filtros necesarios para hacerle la vida fácil a los usuarios. Por ejemplo, en este escenario, ¿es relevante mostrar una alerta a un usuario indicando que el rut ingresado no es válido porque se esperaba con puntos y el usuario lo ingresó sin puntos? ¿o al revés? Yo considero que no y, por lo tanto, creo que cuando uno ve estos escenarios lo más probable es que la validación/formateo del rut se esté realizando a nivel capa web para evitar trabajo posterior y/o para asegurar un ingreso “correcto” hacia los sistemas internos (esto, claramente, es un punto de falla importante).

Por lo tanto, creo que lo más recomendable, antes de perder tiempo en ventanas de aviso, capturadores de eventos, detección de teclas y secuencias, etc., es símplemente intentar validar lo que sea que el usuario ingresó. El punto de partida para esto, además de hacer un trim(), es eliminar los “.” siempre y continuar. El resto, es historia.

No hay comentarios.: