Aca esta la rutina del NIT, desarrollada en VFP
*--- Funcion Validar NIT Rutina comprobada para viejos y nuevos MAG 30/10/2014
*--- Funcion NIT Proposito Validar si el NIT es valido
LOCAL vnit, vsum, vdig, vfac
vnit = '11070806771015'
STORE 0 TO vsum, vdig, vfac
* Valida la longitud del NIT
IF LEN(vnit) # 14
MESSAGEBOX('Longitud de NIT erronea',0,'Valida NIT')
RETURN
ENDIF
* Valida que todos sean numeros
FOR I = 1 TO 14
IF !ISDIGIT(SUBST(vnit,i,1))
MESSAGEBOX('NIT erroneo contiene alfabeticos',0,'Valida NIT')
RETURN
ENDIF
ENDFOR
*--- Valida si es NIT viejo(<= 100) o nuevo (>= 100)
IF INT(VAL(SUBS(vnit,11,3))) <= 100 && Rutina Vieja
FOR I = 1 TO 13
vsum = vsum + (INT(VAL(SUBS(vnit,i,1))) * (15 - i))
ENDFOR
vdig = MOD(vsum,11)
IF vdig = 10
vdig = 0
ENDIF
ELSE && Rutina Nueva
FOR I = 1 TO 13
vfac = (3 + (6 * FLOOR(ABS(I + 4) / 6))) - I
vsum = vsum + (INT(VAL(SUBS(vnit,i,1))) * vfac)
ENDFOR
vdig = MOD(vsum,11)
IF vdig > 1
vdig = 11 - vdig
ELSE
vdig = 0
ENDIF
ENDIF
RETURN