Ver Mensaje Individual
  #1  
Antiguo 31-10-2013
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Posts: 1.350
Reputación: 19
Angel.Matilla Va por buen camino
Cálculo / Validación del IBAN

Dado que a partir del 1 de febrero de 2014 se cambia el formato para efectuar pagos por vía telemática y hay que aplicar la normativa SEPA; la AEB ha publicado la nueva normativa para dichos soportes informáticos y se puede consultar el formato de los nuevos CSB19 (CSB 19.14) en Adeudos Directos SEPA en fichero electrónico – Esquema Básico.

El protocolo de validación lo encontré en Código Internacional de Cuenta Bancaria (IBAN) y me he hecho la rutina. Este es el código:
Código:
AnsiString CalIban(AnsiString Cuenta)
{
     AnsiString cAux;

     Cuenta = Cuenta + "142800";
     cAux   = FormatFloat("0", StrToInt(Cuenta.SubString(1, 9)) % 97);
     Cuenta = Cuenta.SubString(10, Cuenta.Length());
     while (!Cuenta.IsEmpty())
     {
          if (StrToInt(cAux) < 10)
          {
               cAux   = cAux + Cuenta.SubString(1, 8);
               Cuenta = Cuenta.SubString(9, Cuenta.Length());
          }
          else
          {
               cAux   = cAux + Cuenta.SubString(1, 7);
               Cuenta = Cuenta.SubString(8, Cuenta.Length());
          }
          cAux = FormatFloat("0", StrToInt(cAux) % 97);
     }
     return "ES" + FormatFloat("00", 98 - StrToInt(cAux));
}
//---------------------------------------------------------------------------
El 142800 que aparece en las primeras líneas es el resultado de aplicar la tabla de conversión a las letras ES y añadir un 00 necesario para que tenga la longitud adecuada, de acuerdo con la norma.

Devuelve las cuatro primeras posiciones del IBAN, que en el caso de España son ESxx siendo xx un número entre 1 y 98. El IBAN completo en el caso de España tiene 24 posiciones: las calculadas con esta rutina (ESxx) más las 20 del CCC, que mantiene su fórmula de cálculo (Letra DNI,Nº AÑOS, DIGITO CONTROL CUENTA , D.CONTROL EAN 13)

Si hubiera que calcular el IBAN para otros paises hay que tener en cuenta:
1. El código nacional según la norma ISO 3166-1 que podemos encontrar en ISO 3166-1 decoding table.
2. Dado que hay paises que en las cuentas bancarias admiten letras (caso de Francia) hay que usar la tabla de conversión que aparece en Código Internacional de Cuenta Bancaria (IBAN)
Responder Con Cita