Validar un número de la Seguridad Social

6422 vistas

Se trata de una cifra de 11 dígitos para el caso de las cuentas de cotización de empresas, y de 12 dígitos en el caso del número de un trabajador.

Los dos últimos dígitos constituyen los dígitos de control.

Estas dos ultimas cifras del número completo, debe ser el resto de dividir todo el número exceptuando los dos ultimos digitos, que son los de control entre 97.

Ejemplo:

    Si tenemos el número de Seguridad Social 28/1234567/42
    HarÃamos 281234567 mod 97 = 42

Veamos una función que realiza este cálculo



delphi
  1. function ValidaDCSS(Numero: string): boolean;
  2. var
  3.   Limpio: string;
  4.   i: integer;
  5.   uno, dos: integer;
  6. begin
  7.   {El numero de la seguridad social debe entrarse con este
  8.   formato:
  9.           28/1234567/40
  10.   o bien:
  11.           28/12345678/40
  12.   En función de que se trate del numero de una empresa
  13.   o del numero de un trabajador.
  14.   }
  15.   Limpio := '';
  16.   for i := 1 to Length(Numero) do
  17.     if Numero[i] in ['0'..'9'] then Limpio := Limpio + Numero[i];
  18.  
  19.   {Si no tiene 11 ó 12 digitos, no es válido}
  20.   if (Length(Limpio) = 11) or (Length(Limpio) = 12) then
  21.   begin
  22.       Result:= StrToInt64( copy(Limpio, 1, Length(Limpio) - 2) )
  23.                 mod 97 =
  24.                 StrToInt( copy(Limpio, Length(Limpio) - 1, 2) );
  25.   end
  26.     else Result := false;
  27. end;



Y un ejemplo de llamada podrÃa ser



delphi
  1. begin
  2.   if ValidaDCSS('28/1234567/42') then
  3.     ShowMessage('Válido')
  4.   else
  5.     ShowMessage('No Válido');



Nota: StrToInt64 se añadió en la versión 4 de Delphi