26 de diciembre de 2002

Validar CIF (Código de Identificacion Fiscal) [Solo España]

Función para validar CIF (Código de Identificación Fiscal)
? ValCif("01234567D")

*----------------------------------------------------------------------
* Jose Maria Arrabal Alcañiz
* Funcion para validar CIF (Código de Identificacion Fiscal)
* Entrada: Cadena
* Salida : Cadena con CIF calculado
*----------------------------------------------------------------------
FUNCTION ValCIF
  PARAMETER cdni
  PRIVATE A
  LOCAL impar,par,simpar,SPAR
  A = UPPER(ALLTRIM(CHRTRAN(cdni,",.-","")))
  IF LEN(A) # 9
    WAIT WINDOW "Error en la longitud del CIF" TIME 3
    RETURN ""
  ENDIF
  cNumero = SUBSTR(A,2,7)
  IF PADL(VAL(cNumero),7,"0") # cNumero
    WAIT WINDOW "Error en la contrucción del CIF" TIME 3
    RETURN
  ENDIF
  cLetra = LEFT(A,1)
  *
  * Sumar cifras pares y las impares las multiplicamos por 2
  *
  SPAR = 0
  simpar = 0
  par = 0
  impar = 0
  FOR nI = 1 TO 7 STEP 2
    impar = VAL(SUBSTR(cNumero,nI,1))*2
    impar = INT(impar/10) + impar%10
    par = VAL(SUBSTR(cNumero,nI+1,1))
    simpar = simpar+impar
    SPAR = SPAR+par
  NEXT
  R = 10-(SPAR+simpar)%10
  cCif = cLetra+cNumero
  IF cLetra $ "ABCDEFGH"
    cCif = cCif+CHR(ASC('0')+R)
  ELSE
    cCif = cCif+SUBSTR("JABCDEFGHI",R+1,1)
  ENDIF
  IF A # cCif
    MESSAGEBOX("El CIF "+A+" introducido es incorrecto "+CHR(13)+;
      "El correcto sería "+cCif+CHR(13)+;
      "Compruebe que los datos son correctos",16)
  ENDIF
  RETURN cCif
ENDFUNC

*----------------------------------------------------------------------
Jose Maria Arrabal Alcañiz

No hay comentarios. :

Publicar un comentario

Los comentarios son moderados, por lo que pueden demorar varias horas para su publicación.