Hola a tod@s, aquí os dejo el código para calcular el IBAN en JavaScript. Algunas de las funciones que aquí aparecen están explicadas en este POST. A continuación os voy a dejar una breve explicación de como se calcula. |
El Cálculo se llevará a cabo de la siguiente forma:
Paso preliminar: Crear un código previo de IBAN compuesto del código de país (ES) seguido de “00” y el C.C.C.
Ejemplo: ES0000120345030000067890
Paso 1: Trasladar los cuatro primeros caracteres del IBAN a la derecha del Código:
Resultado: 00120345030000067890ES00
Paso 2: Convertir las letras en números aplicando: E = 14; S = 28.
Resultado: 00120345030000067890142800
La conversión de letras por números, para el caso de IBAN de otros países se acomoda a la siguiente tabla:
A = 10 | B=11 | C=12 | D=13 | E=14 |
F=15 | G=16 | H=17 | I=18 | J=19 |
K=20 | L=21 | M=22 | N=23 | O=24 |
P=25 | Q=26 | R=27 | S=28 | T=29 |
U=30 | V=31 | W=32 | X=33 | Y=34 |
Z=35 |
Paso 3: Aplicar el módulo 97 – 10 (ISO 7604)
Calculando el módulo 97 (resto de la división por 97 del IBAN creado)
y estableciendo la diferencia entre 98 y el resto. Si el resultado es un dígito, anteponer un cero.
98 – 91= 7
El IBAN creado sería: IBAN ES07 0012 0345 03 0000067890
Al manejar números tan grandes en JavaScript como en otros lenguajes se produce un desbordamiento al realizar los cálculos. Por lo que tenemos que utilizar aritmética de precisión arbirtraria. En el caso de JavaScript no he localizado ninguna librería que me permitiera hacer esto, por lo que he implementado la función modulo(); para realizar el cálculo correctamente.
Cambiando un par de cosas en el código podréis usar esto para calcular o validar indistintamente.
Un saludo a tod@s y espro que os sirva de ayuda.