Validar el número de CUIT (Argentina)
Artículo por Diego F. Romero · 31 diciembre 2005
6397 vistas
El número de CUIT es el número que el estado le asigna a los contribuyentes de Argentina el cual se compone de dos digitos arbitrarios, más el DNI (8 dígitos), más un dígito verificador para dar un total de 11 dígitos.
El siguiente código verifica que un número de CUIT ingresado sea válido.
Es aplicable por ejemplo para que sea aceptado por los Controladores Fiscales.
Para compilar esta función necesitaremos incluir en el uses la unidad SysUtils
El siguiente código verifica que un número de CUIT ingresado sea válido.
Es aplicable por ejemplo para que sea aceptado por los Controladores Fiscales.
delphi
const TablaMul:Array[1..10] of Integer=(5,4,3,2,7,6,5,4,3,2); {Tabla Arbitraria} function EsCUITValido(Num:String):boolean; type ArrayDe11=Array[1..11] of Integer; var R:ArrayDe11; {Resultados de Multiplicar por la Tabla Arbitraria} CUIT:ArrayDe11; {Para convertir cada digito} I:Integer; {Indice} Sumatoria, {Sumatoria de los Digitos menos el último} Dividendo, {Resultado de la División} Producto, Diferencia, DigitoVerif:Integer; {Digito Verificador Calculado} begin result:=false; { Asumir Invalido } if Length(Num) = 11 then begin try { Convertir cada caracter a Número} for i:=1 to 11 do CUIT[i]:=StrToInt(Num[i]); except { Si hay error de conversión es CUIT invalido} Exit; end; { try } end else Exit; { if } { Si no tiene 11 caracteres es CUIT invalido } for i:=1 to 10 do // Multiplicar cada digito por la R[i]:=CUIT[i]*TablaMul[i]; // Tabla Arbitraria menos el último Sumatoria:=0; for i:=1 to 10 do Sumatoria:=Sumatoria+R[i]; // Calcular la sumatoria de los resultados Dividendo:=Sumatoria div 11; // Dividir por 11 (división entera) Producto:=Dividendo * 11; // El resultado multiplica por 11 Diferencia:=Sumatoria - Producto; // Obtener la diferencia if Diferencia > 0 then // Si la dif. es mayor a cero DigitoVerif:=11 - Diferencia // El digito verificador es 11 menos la diferencia else DigitoVerif:=Diferencia; // sino es Cero. if DigitoVerif = CUIT[11] then result:=true; // si el Digito Verificador es igual end; // al último digito del CUITel CUIT es Válido.
Para compilar esta función necesitaremos incluir en el uses la unidad SysUtils