Destacados
BBDD
Entornos de desarrollo
Entretenimiento
Herramientas
Internet
Lenguajes de script
Lenguajes imperativos
Lenguajes orientados a objeto
Otros lenguajes
Plataformas
Teoría
Varios
Artículo
0
¡votar!

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

1 . Cuenta de la vieja
2 . Validación completa

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.

Escrito por:
Administrador
Recomendar
a un amigo
Compartir
en redes
 
Comentarios
Copyright © 1998-2010 Programación en Castellano. Todos los derechos reservados
Datos legales | Politica de privacidad | Contacte con nosotros | Publicidad

Diseño web y desarrollo web. Un proyecto de los hermanos Carrero.

Red internet:
Juegos gratis | Servidores dedicados
Más internet: Password | Directorio de weblogs | Favicon