Validación del número de cuenta (CCC)

En España, las cuentas bancarias se identifican por un número de 20 cifras. De ellas, 4 identifican al banco, 4 a la sucursal donde abrimos la cuenta, 10 a la cuenta en sí y otros 2 se incluyen como dígitos de control para validar el número. Vamos a estudiar cómo validar estos dígitos.

Cuenta de la vieja

Cada dígito de control valida una cosa. El primero se encarga del banco y sucursal y el segundo del número de cuenta. Para validarlo otorgan a cada cifra un peso (es decir, un número distinto por el que multiplicarla) y suman los resultados. Luego, al número resultante le hacen una serie de perrerías para convertirlo en una sola cifra. En definitiva, esta es la función que, a partir de una cadena que contiene un número de diez cifras, devuelve el dígito de control correspondiente:

function obtenerDigito(valor){
  valores = new Array(1, 2, 4, 8, 5, 10, 9, 7, 3, 6);
  control = 0;
  for (i=0; i<=9; i++)
    control += parseInt(valor.charAt(i)) * valores[i];
  control = 11 - (control % 11);
  if (control == 11) control = 0;
  else if (control == 10) control = 1;
  return control;
}

Esta será la base de nuestro sistema. Pero antes de esto tendremos que habernos asegurado de que el valor que le pasamos cumple los requisitos.

Validación completa

Tenemos aún que hacer algunas cosas más. Aparte de comprobar los dígitos de control, antes deberemos asegurarnos de que el usuario ha rellenado completamente los campos con número. Para ello nos serviremos de la siguiente función:

function numerico(valor){
  cad = valor.toString();
  for (var i=0; i<cad.length; i++) {
    var caracter = cad.charAt(i);
	if (caracter<"0" || caracter>"9")
	  return false;
  }
  return true;
}

De modo que ahora sólo nos queda hacer el formulario:

<FORM NAME="ccc">
    <TABLE BORDER=0>
    <TR>
      <TD>Banco</TD>
      <TD>Sucursal</TD>
      <TD>Dígitos de control</TD>
      <TD>Número de cuenta</TD>
    </TR>
    <TR>
      <TD><INPUT TYPE="text" NAME="banco" MAXLENGTH="4" SIZE="4"></TD>
      <TD><INPUT TYPE="text" NAME="sucursal" MAXLENGTH="4" SIZE="4"></TD>
      <TD><INPUT TYPE="text" NAME="dc" MAXLENGTH="2" SIZE="2"></TD>
      <TD><INPUT TYPE="text" NAME="cuenta" MAXLENGTH="10" SIZE="10"></TD>
    </TR>
    <TR>
      <TD COLSPAN="4" ALIGN="CENTER"><INPUT TYPE="button" VALUE="Validar"
		  onClick="validar(this.form)"></TD>
    </TR>
    </TABLE>
  </FORM>

Y hacer una función que realice las comprobaciones. Esta función comprueba primero que se hayan rellenado los campos,luego que se haya rellenado por completo, después que el texto introducido se componga exclusivamente de número y, finalmente, que los dígitos de control sean correctos. Dado que el número formado por la unión de las cuatro cifras del banco y las cuatro de la sucursal es sólo de ocho cifras, se ponen dos ceros a la izquierda del mismo para que la validación del dígito funcione:

function validar(f) {
  if (f.banco.value == ""  || f.sucursal.value == "" ||
      f.dc.value == "" || f.cuenta.value == "")
    alert("Por favor, introduzca los datos de su cuenta");
  else {
    if (f.banco.value.length != 4 || f.sucursal.value.length != 4 ||
        f.dc.value.length != 2 || f.cuenta.value.length != 10)
      alert("Por favor, introduzca correctamente los datos de su cuenta;"
	    + " no están completos");
    else {
      if (!numerico(f.banco.value) || !numerico(f.sucursal.value) ||
          !numerico(f.dc.value) || !numerico(f.cuenta.value))
        alert("Por favor, introduzca correctamente los datos de su "
         + "cuenta; no son numericos");
      else {
        if (!(obtenerDigito("00" + f.banco.value + f.sucursal.value) ==
              parseInt(f.dc.value.charAt(0))) || 
            !(obtenerDigito(f.cuenta.value) ==
              parseInt(f.dc.value.charAt(1))))
          alert("Los dígitos de control no se corresponden con los demás"
            + " números de la cuenta");
	    else
          alert ("CCC correcto");
      }
    }
  }
}

La manera de escribir todo esto dentro del enlace es muy sencilla. Después de poner la dirección de envío como hicimos arriba, ponemos un signo de interrogación seguido de una serie de parejas de la forma

Banco Sucursal Dígitos de control Número de cuenta

Ya podéis buscar vuestra cartilla de ahorros y probar si funciona.

COMPARTE ESTE ARTÍCULO

ENVIAR A UN AMIGO
COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN GOOGLE +
ARTÍCULO ANTERIOR

¡SÉ EL PRIMERO EN COMENTAR!
Conéctate o Regístrate para dejar tu comentario.