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
Ya podéis buscar vuestra cartilla de ahorros y probar si funciona.
Últimos comentarios
Últimos 5 comentarios
Corrección (06/09/2006)
Por
Al pegar el código java no se ha escrito bien y ha quedado cortado... sorry.
Para quien lo quiera en Java (06/09/2006)
Por
public class validaCuentaBanco {
/**
* @param args
*/
private static int[] valores = {1,2,4,8,5,10,9,7,3,6};
public static void main(String[] args) {
esCuentaBancariaValida(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"escribe aquíe el numero de cuenta\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\");
}
/**Obtiene un dígito de control para comprobar una cuenta bancaria
* Input: 10 dígitos (o bien los 8 primeros mas 00 o los 10 dígitos de la cuenta
* Output: 1 digito de control*/
public static int obtenerDigito(String valor){
int i = 1;
int control = 0;
for (; i20){
System.out.println(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"te has pasado de digitos\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\");
return false;
} else if (!(obtenerDigito(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"00\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\" + cuenta.substring(0,8)) == Integer.parseInt(cuenta.substring(8,9))) || !(obtenerDigito(cuenta.substring(10,20)) == Integer.parseInt(cuenta.substring(9,10))) ) {
System.out.println(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"no es valido\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\");
return false;
} else {
System.out.println(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"si es valido\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\");
return true;
}
}
}
bravo (12/07/2006)
Por
Buen articulo y buena utilidad de comprobacion del ccc. Salud.
no es del todo correcta (17/05/2005)
Por
Como dice el comentario n.1 està validación no es correcta, pero por muy poco, y seguro que todos los que podàis aplicar este script sabreis arreglarlo, simplemente se olvidaron de validar la opción de número de cuenta siguiente:
0000 0000 00 0000000000
con todo ceros el script dar por bueno el CCC