Ver Mensaje Individual
  #13  
Antiguo 05-02-2014
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
Cita:
Empezado por pacopenin Ver Mensaje
¿Alguien tiene hecho el cálculo de la Identificación de Acreedor para las domiciliaciones en formato SEPA?.

Uno de los pasos es tomar el resto de la división de un numero de p.e. 1185626240142800 entre 97. Dicho número sale de formar un string según varias formulas. Pues el caso es que no se como hacer esa división, ya que no se puede a entero para realizar un mod y obtener el resto. Ando espeso espeso. Se agradecen sugerencias. La explicación completa y más clara que la mía aquí.
El bucle para ir formando esas cadenas lo tienes en mi primer mensaje:
Código:
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));
En este caso se supone que la cuenta siempre es de España (de ahí la cadena 1428 del principio del código); de otra forma bastaría con pasar el parámetro del país.
Responder Con Cita