Vamos a ver como calcular ese digito de Control para validar numeros de Cuentas Corrientes. Quizas a muchos no les sirva para nada, pero quien tenga que programar este control, le podra venir de perlas
Como ejemplo, cogeremos los datos de la cuenta de Asociación de Bulma que la tenemos en La Caixa:
Nombre de la Cuenta: ASOCIACION BULMA
Numero completo de la Cuenta: 2100-0150-63-0200455826
Que significa:
Entidad: 2100 La Caixa
Oficina: 0150 Santa Catalina
DC : 63
Cuenta : 0200455826
Primero de todo vamos a empezar creando la función en PHP que usaremos para validar los datos de la Cuenta Corriente:
Function CalculoCC($IentOfi,$InumCta)
{
$APesos = Array(1,2,4,8,5,10,9,7,3,6); // Array de “pesos”
$DC1=0;
$DC2=0;
$x=8;
while($x>0) {
$digito=$IentOfi[$x-1];
$DC1=$DC1+($APesos[$x+2-1]*($digito));
$x = $x – 1;
}
$Resto = $DC1%11;
$DC1=11-$Resto;
if ($DC1==10) $DC1=1;
if ($DC1==11) $DC1=0; // Dígito control Entidad-Oficina
$x=10;
while($x>0) {
$digito=$InumCta[$x-1];
$DC2=$DC2+($APesos[$x-1]*($digito));
$x = $x – 1;
}
$Resto = $DC2%11;
$DC2=11-$Resto;
if ($DC2==10) $DC1=1;
if ($DC2==11) $DC1=0; // Dígito Control C/C
$DigControl=($DC1).””.($DC2); // los 2 números del D.C.
return $DigControl;
}
Ahora ya tenemos la función hecha.
Para que funcione simplemente la llamaremos de la siguiente forma pasandole los parametros del formulario:
$parte1=$cc1.””.$cc2;
$parte2=$cc4;
$mensaje=”No es correcto los Datos Bancarios”;
$cc=””;
if (($cc1<>””) && ($cc2<>””) && ($cc3<>””) && ($cc4<>””) ){
$resultado=CalculoCC($parte1,$parte2);
if ($resultado==$cc3){
$mensaje=”Datos Bancarios Correctos”;
$cc=$cc1.”-“.$cc2.”-“.$cc3.”-“.$cc4;
}
}
echo $mensaje;
Y para acabar, ponemos un ejemplo de formulario para poder usar estos ejemplo:
Cuenta Corriente:
Entidad(cc1)
Oficina(cc2)
Control(cc3)
NºCuenta(cc4)
Nota:
Podeis emplear algo de JavaScript para comprobar que los valores del formulario tienen datos, pero eso os lo dejo a vosotros.
Podeis encontrar mas información en:
Este post ha sido traido de forma automatica desde https://web.archive.org/web/20140625063149/http:/bulma.net/body.phtml?nIdNoticia=1396 por un robot nigromante, si crees que puede mejorarse, por favor, contactanos.