Skip site navigation (1) Skip section navigation (2)

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 (view raw or flat)
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

pgsql-es-ayuda by date

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

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group