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: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] En nombre de Damian Culotta
Enviado el: Martes, 30 de Septiembre de 2008 05:28 p.m.
Para: [email protected]
Asunto: Re: [pgsql-es-ayuda] Validación de CUIT - Argentina

2008/9/30 Daniel Ferrer <[EMAIL PROTECTED]>:
> 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:[EMAIL PROTECTED]
> ___________________________
>
> --
> 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

--
TIP 9: visita nuestro canal de IRC #postgresql-es en irc.freenode.net

Responder a