RE: [pgsql-es-ayuda] Validación de CUIT - Argentina

From: "Daniel Ferrer" <daniel(dot)ferrer(at)ctd(dot)com(dot)ar>
To: "'Damian Culotta'" <damianculotta(at)gmail(dot)com>
Cc: <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: RE: [pgsql-es-ayuda] Validación de CUIT - Argentina
Date: 2008-09-30 20:36:23
Message-ID: 4F50B682EC0B458AAB5146CC8434B7F5@ctdn14
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Bueno gente he encontrado un código hecho en Oracle y lo adapte a plpsql

Les dejo el codigo de ejemplo:
----------------------------------------------------------------------------
--------------------
CREATE OR REPLACE FUNCTION "public"."validar_cuit" (bigint) RETURNS varchar
AS
$body$
DECLARE
RES BIGINT;
DIG BIGINT;
NUM BIGINT;
CUIT ALIAS FOR $1;

BEGIN
IF LENGTH(CUIT) != 11 OR SUBSTR(CUIT, 1, 2) = '00' THEN
RETURN 0;
END IF;
RES = 0;
FOR I IN 1..10 LOOP
NUM := (SUBSTR(CUIT, I, 1));
IF (I = 1 OR I = 7) THEN RES := RES + NUM * 5;
ELSIF (I = 2 OR I = 8) THEN RES := RES + NUM * 4;
ELSIF (I = 3 OR I = 9) THEN RES := RES + NUM * 3;
ELSIF (I = 4 OR I = 10) THEN RES := RES + NUM * 2;
ELSIF (I = 5) THEN RES := RES + NUM * 7;
ELSIF (I = 6) THEN RES := RES + NUM * 6;
END IF;
END LOOP;
DIG := 11 - MOD(RES,11);
IF DIG = 11 THEN
DIG := 0;
END IF;

IF DIG = (SUBSTR(CUIT,11,1)) THEN
RETURN 1;
ELSE
RETURN 0;
END IF;
END;
$body$
LANGUAGE 'plpgsql'
VOLATILE
CALLED ON NULL INPUT
SECURITY INVOKER;

COMMENT ON FUNCTION "public"."validar_cuit"(bigint)
IS 'Valida el CUIT segun formato 99999999999
Devuelve 0 para los CUIT No Válidos
Devuelve 1 para los CUIT Válidos';
----------------------------------------------------------------------------
--------------------

-----Mensaje original-----
De: pgsql-es-ayuda-owner(at)postgresql(dot)org
[mailto:pgsql-es-ayuda-owner(at)postgresql(dot)org] En nombre de Damian Culotta
Enviado el: Martes, 30 de Septiembre de 2008 05:28 p.m.
Para: pgsql-es-ayuda(at)postgresql(dot)org
Asunto: Re: [pgsql-es-ayuda] Validación de CUIT - Argentina

2008/9/30 Daniel Ferrer <daniel(dot)ferrer(at)ctd(dot)com(dot)ar>:
> Buenas Tardes a todos:
> Alguien tiene armada alguna función para validar el
> CUIT (Clave Única de Identificación Tributaria) de Argentina.
>
> Desde ya les agradezco.
>
> Atte.
> ___________________________
> ASC Daniel Ferrer
> Gerente de Sistemas - CTD SRL
> Rosario - Argentina
> mailto:daniel(dot)ferrer(at)ctd(dot)com(dot)ar
> ___________________________
>
> --
> TIP 7: no olvides aumentar la configuración del "free space map"
>

Salvo que se haya actualizado el asunto, hasta donde recuerdo, no está
definida formalmente la función para calcular la validez de un CUIT.
Si bien hay funciones dando vueltas (yo no tengo encima ninguna en
este momento) que servirían para hacerlo, no son "oficiles".
Ojalá me esté equivocando y alquien pueda darte la referncia a un
instructivo de la AFIP.
Saludos.
--
TIP 6: ¿Has buscado en los archivos de nuestra lista de correo?
http://archives.postgresql.org/pgsql-es-ayuda

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Fernando Moreno 2008-09-30 21:03:02 Re: [Fwd: Re: CLAVES EN POSTGRES]
Previous Message Damian Culotta 2008-09-30 20:27:56 Re: Validación de CUIT - Argentina