Club Delphi  
    FTP   CCD     Enlaces   Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Desplegado
  #1  
Antiguo 28-09-2004
LucasArgentino LucasArgentino is offline
Miembro
 
Registrado: oct 2003
Ubicación: Parana Entre Rios
Posts: 40
LucasArgentino Va por buen camino
Cool Generar Numero de CUIL

Hola gente !!!
Hace un tiempo he pedido, si alguien conoce la funcion para generar el numero de CUIL, este numero es la clave de identificacion laboral en Argentina.

El formato es el siguiente, esta formado por el documento de la persona mas dos digitos por delante y un digito verificador por detra
xx25658974x
lo que yo necesitaria saber son las x.

Desde ya muchas gracias amigos y cualquier ayuda me sera de utilidad.
La funcion para verificar si este es correcto ya la poseo la que necesito es la que me genere estos valores

Lucas
Responder Con Cita
  #2  
Antiguo 28-09-2004
Avatar de Neftali
Neftali Neftali is offline
Aporreador de teclados
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 13.474
Neftali Va por buen camino
Puedes obtener cómo se calcula desde ésta dirección:Trucomania
Tb desde ésta (para que tengas donde escoger ): http://www.foboz.com.ar/modules.php?...rticle&sid=103
__________________
Neftalí -web - MyDropBox-
Guía de estilo, Guía alternativa, TAG's.
*Añade tu foto al Club*

(UPDATE) TrackInfo v.1.7b

Contactar con el Clubdelphi


P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 30-09-2004
LucasArgentino LucasArgentino is offline
Miembro
 
Registrado: oct 2003
Ubicación: Parana Entre Rios
Posts: 40
LucasArgentino Va por buen camino
Unhappy

Muchas gracias Neftali, pero lo que hace esta funcion es verificar si los digitos veridicadores son correctos, los dos primeros y el ultimo digito. No me crea los dos valores y el ultimo.

Agradezco tu interes. y gracias igual.
Responder Con Cita
  #4  
Antiguo 30-09-2004
Avatar de Neftali
Neftali Neftali is offline
Aporreador de teclados
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 13.474
Neftali Va por buen camino
...hombre, dedícale un poco de tiempo a hojear los algoritmos. La mayoría de estos procedimientos lo que hacen para comprobar si un número es correcto (sea DNI, Cuenta corriente, CUIT,...) es:

1º Calcularlo
2º Luego comparar el calculado con el existente.

Éstos dos algoritmos no son una excepción, en la primera parte se calcula y en la última instrucción se compara; Extrae la parte que necesitas .
__________________
Neftalí -web - MyDropBox-
Guía de estilo, Guía alternativa, TAG's.
*Añade tu foto al Club*

(UPDATE) TrackInfo v.1.7b

Contactar con el Clubdelphi


P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #5  
Antiguo 04-10-2004
LucasArgentino LucasArgentino is offline
Miembro
 
Registrado: oct 2003
Ubicación: Parana Entre Rios
Posts: 40
LucasArgentino Va por buen camino
Talking Ok resuelto

Hermano no es tan sencillo como parece....
pero siguiendo lo q tu llamas intuicion lo he podido realizar...

Gracias por tu interes y suerte....

Lucas
Responder Con Cita
  #6  
Antiguo 31-03-2007
tronco026 tronco026 is offline
Registrado
 
Registrado: mar 2007
Posts: 1
tronco026 Va por buen camino
Tengo la solucion

Hola, infantes, si quieren un código pulenta pulenta, acá lo tienen:

Desde ya, no es DELPHI, es JAVA, pero funciona perfectamente, tanto para CUIL, como para CUIT, y no solo verifica, sino que tambien genera.

Llegado el caso, transcriban el código. El código java no es complicado

Espero les sea de utilidad.

SALUDOS A TODOS...



/**
* Esta clase implementa metodos para generar y validar un número de
* CUIT/CUIL (Codigo Unico de Identificación Tributaria/Código Unico de
* Identificación Laboral).
* En la práctica no se recomienda la utilización del metodo generar()
* ya q si bien se generará un CUIT/CUIL logicamente valido, esto no
* implica q el mismo corresponda a la persona en cuestion. El CUIT/CUIL
* lo otorgan la AFIP o el ANSES (www.anses.gov.ar/cuil.htm [1]).
*
* @author Luciano Astor - luciano@beatbang.com.ar [2]
* @version 1.0 - Mayo 2006
**/

public final class Cuit
{
private static int dniStc;
private static int xyStc;
private static int digitoStc;

/**
* Metodo estatico para generar un CUIT/CUIL.
*
* @param dniInt DNI como int
* @param xyChar Sexo de la persona como char.
* Masculino: m - Femenino: f - Para Personas Juridicas: cualquier otro caracter
*
* @return El CUIT/CUIL como String
**/

public static String generar(int dniInt, char xyChar)
{
if (xyChar == 'F' || xyChar == 'f')
xyStc = 27;
else
if (xyChar == 'M' || xyChar == 'm')
xyStc = 20;
else
xyStc = 30;

dniStc = dniInt;

calcular();
return formatear();
}

/**
* Metodo estatico para generar un CUIT/CUIL.
*
* @param dniInt DNI como int
* @param xyInt El prefijo del CUIT/CUIL como int
*
* @return El CUIT/CUIL como String
**/

public static String generar(int dniInt, int xyInt)
{
xyStc = xyInt;
dniStc = dniInt;
calcular();
return formatear();
}

/**
* Metodo estatico para validar un numero de CUIT/CUIL.

*
* @param cuit N° de CUIT/CUIL como String
*
* @return Boolean: true si el CUIT/CUIL es correcto, false en caso contrario
**/

public static boolean validar(String cuit)
{
String xyStr, dniStr, digitoStr;
int digitoTmp;
int n = cuit.lastIndexOf("-");
xyStr = cuit.substring(0, 2);
dniStr = cuit.substring(cuit.indexOf("-") + 1, n);
digitoStr = cuit.substring(n + 1, n + 2);
if (xyStr.length() != 2 || dniStr.length() > 8 || digitoStr.length() != 1)
return false;
try
{
xyStc = Integer.parseInt(xyStr);
dniStc = Integer.parseInt(dniStr);
digitoTmp = Integer.parseInt(digitoStr);
}
catch (NumberFormatException e)
{
return false;
}

if (xyStc != 20 && xyStc != 23 && xyStc != 24 && xyStc != 27 && xyStc != 30 && xyStc != 33 && xyStc != 34)
return false;

calcular();

if (digitoStc == digitoTmp && xyStc == Integer.parseInt(xyStr))
return true;

return false;

}

/**
* Metodo estatico que retorna el digito verificador de un CUIT/CUIL.
*
* @param xyInt El prefijo como int
* @param dniInt El DNI como int
*
* @return El digito como int. Si se modifico el prefijo (por 23 o 33)
* retorna 23x o 33x donde x es el digito
**/

public static int digito(int xyInt, int dniInt)
{
xyStc = xyInt;
dniStc = dniInt;
calcular();
if (xyInt == xyStc)
return digitoStc;
else
return (xyStc * 10 + digitoStc);
}

/**
* Metodo privado q da formato al CUIT como String
**/

private static String formatear()
{
return String.valueOf(xyStc) + "-" + completar(String.valueOf(dniStc)) + "-" + String.valueOf(digitoStc);

}

/**
* Metodo privado q completa con ceros el DNI para q quede con 8 digitos
**/

private static String completar(String dniStr)
{
int n = dniStr.length();

while (n < 8)
{
dniStr = "0" + dniStr;
n = dniStr.length();
}

return dniStr;
}

/**
* Metodo privado q calcula el CUIT
**/


private static void calcular()
{
long tmp1, tmp2;
long acum = 0;
int n = 2;
tmp1 = xyStc * 100000000L + dniStc;

for (int i = 0; i < 10; i++)
{
tmp2 = tmp1 / 10;
acum += (tmp1 - tmp2 * 10L) * n;
tmp1 = tmp2;
if (n < 7)
n++;
else
n = 2;
}

n = (int)(11 - acum % 11);

if (n == 10)
{
if (xyStc == 20 || xyStc == 27 || xyStc == 24)
xyStc = 23;
else
xyStc = 33;

/*No es necesario hacer la llamada recursiva a calcular(),
*se puede poner el digito en 9 si el prefijo original era
*23 o 33 o poner el dijito en 4 si el prefijo era 27*/

calcular();
}
else
{
if (n == 11)
digitoStc = 0;
else
digitoStc = n;
}
}

/**
* Metodo toString().
*
* @return Info acerca de la clase
**/

public String toString()
{
return "El principal objetivo de esta clase es implementar metodos" + "para generar y validar un numero de CUIT/CUIL.\n ";
}

}
Responder Con Cita
Respuesta


Herramientas
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 07:36:26.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi