Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Dígito verificado comprobantes fiscales AFIP (https://www.clubdelphi.com/foros/showthread.php?t=87981)

marilinspi 27-03-2015 14:43:25

Dígito verificado comprobantes fiscales AFIP
 
hola a todos, alguien ya hizo la rutina para obtener el dígito verificador que va en los comprobantes fiscales de AFIP...

con estos datos:
a) Clave Unica de Identificación Tributaria (C.U.I.T.) del emisor de la factura.
b) Código de tipo de comprobante.
c) Punto de venta.
d) Código de Autorización de Impresión (C.A.I.).
e) Fecha de vencimiento.
f) Dígito verificador.

este es el calculo
Etapa 1: Comenzar desde la izquierda, sumar todos los caracteres ubicados en las posiciones impares.
Etapa 2: Multiplicar la suma obtenida en la etapa 1 por el número 3.
Etapa 3: Comenzar desde la izquierda, sumar todos los caracteres que están ubicados en las posiciones pares.
Etapa 4: Sumar los resultados obtenidos en las etapas 2 y 3.
Etapa 5: Buscar el menor número que sumado al resultado obtenido en la etapa 4 dé un número múltiplo de 10. Este será el valor del dígito verificador del módulo 10.

si alguien ya lo hizo, por favor me puede dar una mano... Gracias desde ya

Neftali [Germán.Estévez] 27-03-2015 16:03:32

Pues aquí (trucomanía) o aquí (en los foros del clubdelphi) ya se ha hablado del tema...

Aquí Además (Wiki) tienes el algoritmo en varios lenguajes, y no te debería ser difícil adaptarlo.

marilinspi 27-03-2015 16:07:57

gracias neftali por tu respuesta, pero no es el dígito verificador del CUIL o CUIT sino, viste que los comprobantes fiscales (facturas, NDC, NDD) tienen un código de barras, bueno ese esta formado por un conjunto de datos, que a su ves tiene un dígito verificador... ese es el que necesito....

Neftali [Germán.Estévez] 27-03-2015 16:29:17

oppppps!!

Perdón. :o

ecfisa 27-03-2015 16:30:32

Hola marilinspi.

Si al que te referis es al punto "C" de este: enlace, siguiendo lo que entendí de las indicaciones me quedaría:
Código Delphi [-]
function DigitoVerificador(Numero: string): string;
var
  i, par, non, sum : Integer;
begin
  par:= 0;
  non:= 0;
  for i:= 1 to Length(Numero) do
    if i mod 2 = 0 then
      Inc(par, StrToInt(Numero[i]))
    else
      Inc(non, StrToInt(Numero[i]));

  non:= non * 3;
  sum:= non + par;

  for i:= 0 to 9 do
    if (sum + i) mod 10 = 0 then
    begin
      Result:= Numero + IntToStr(i);//Result:= IntToStr(i); (si queres solo el díg.)
      Exit;
    end;
end;

llamada:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessage(DigitoVerificador('01234567890'));
end;
salida:


Como verás, funciona correctamente con el número de ejemplo que da la afip en la página y según la lógica, pienso que tendría que hacerlo con cualquier otro. Pero tendrías que verificarlo con otros datos reales, lamento no disponer de ellos ahora para realizar mas pruebas.

Saludos :)

marilinspi 27-03-2015 20:43:44

Hola Ecfisa, genial genial genial... si eso es lo que necesitaba, funciona perfecto! La verdad te felicito como en tan pocas lineas pudiste resolver esa rutina... ojala algún día yo pueda llegar a eso. Muchisimas gracias, saludos


La franja horaria es GMT +2. Ahora son las 16:57:51.

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