Anda di halaman 1dari 2

Create function dbo.

validacionRuc(@ruc char(11)) -- NOMBRE DE FUNCIÓN Y PARÁMETRO


returns char(15) -- TIPO Y TAMAÑO DE DATO QUE SE VA A RETORNAR
AS
BEGIN
-- DECLARAMOS LAS VARIABLES:
declare @x char(1), @respuesta char(15)
declare @numero int, @i int, @suma int, @j int, @mult int, @div int, @calculo int
set @i = 1
--INICIALIZAMOS LAS VARIABLES:
set @suma = 0
Set @respuesta = 'RUC NO VALIDO'
-- VALIDAMOS LOS DOS PRIMEROS DIGITOS DEL RUC
if(left(@ruc,2)='10' or left(@ruc,2)='15' or left(@ruc,2)='17' or left(@ruc,2)='20')
-- VALIDAMOS LOS 4 PRIMEROS DIGITOS DEL RUC, MULTIPLICANDO CADA UNO POR 5, 4, 3, 2 RESPECTIVAMENTE
set @j = 5
while (@j>1)
begin
set @x = subString(@ruc,@i,@i+1) -- EXTRAEMOS DIGITO A DIGITO DEL RUC
set @numero = convert(int,@x) -- CONVERTIMOS CADA DIGITO DEL RUC EN ENTERO
set @mult = @x * @j -- MULTIPLICAMOS CADA NUMERO
set @suma = @suma + @mult -- VAMOS SUMANDO EL RESULTADO DE CADA MULTIPLICACION
set @i=@i+1 -- VAMOS AUMENTANDO LA VARIABLE @i EN 1
set @j=@j-1 -- VAMOS DISMINUYENDO LA VARIABLE @j EN 1
END
-- VALIDAR LOS 6 DIGITOS SIGUIENTES DEL RUC, MULTIPLICANDO CADA UNO POR 7, 6, 5, 4, 3, 2 RESPECTIVAMENTE
set @j=7
while (@j>1)
begin
set @x = subString(@ruc,@i,@i+1) -- EXTRAEMOS DIGITO A DIGITO DEL RUC
set @numero = convert(int,@x) -- CONVERTIMOS CADA DIGITO DEL RUC EN ENTERO
set @mult = @x * @j -- MULTIPLICAMOS CADA NUMERO
set @suma = @suma + @mult -- VAMOS SUMANDO EL RESULTADO DE CADA MULTIPLICACION
set @i=@i+1 -- VAMOS AUMENTANDO LA VARIABLE @i EN 1
set @j=@j-1 -- VAMOS DISMINUYENDO LA VARIABLE @j EN 1
END
set @div = @suma / 11 -- DIVIDIMOS LA SUMA ENTRE 11
set @calculo = 11 - (@suma - (@div *11)) -- REALIZAMOS EL CALCULO SENCILLO, DONDE 11 ES FIJO
set @x = right(@ruc,1) -- EXTRAEMOS EL ULTIMO DIGITO DEL RUC
set @numero = convert(int, @x) -- CONVERTIMOS EL ULTIMO DIGITO DEL RUC EN ENTERO
-- VERIFICAMOS SI EL RESULTADO DEL CALCULO SENCILLO ES 10 U 11
if (@calculo=10)
set @calculo = 0 -- SI ES 10, EL RESULTADO DEL CALCULO TOMA EL VALOR DE 0
else
if (@calculo =11 )
set @calculo = 1 -- SI ES 11, EL RESULTADO DEL CALCULO TOMA EL VALOR DE 1
-- VALIDAMOS QUE EL RESULTADO DEL CALCULO SEA IGUAL AL ULTIMO DIGITO DEL RUC
if (@calculo=@numero)
set @respuesta='RUC VALIDO' -- SI ES IGUAL, ENTONCES EL RUC ES VALIDO
return @respuesta -- RETORNAMOS LA RESPUESTA
END
GO

Anda mungkin juga menyukai