dbo.ws_valida_cuit

Description

Properties

Name Value
ANSI Nulls ON

True

Quoted Identifier ON

True

Encrypted

False

Execute As
Assembly

Parameters

1
Name Data Type Length Description
@W_Cuit varchar 20

SQL Script

Copy
SET QUOTED_IDENTIFIER, ANSI_NULLS ON
GO

CREATE OR ALTER PROCEDURE dbo.ws_valida_cuit 
@W_Cuit     VARCHAR(20)

AS
BEGIN
        SET NOCOUNT ON;
     declare @W_Suma     int = 0
        declare @W_Division int
        declare @W_Digv     smallint
        declare @W_2_Digv   smallint
        declare @W_Resto    smallint
  declare @W_error    bit = 1

  set @W_Cuit = ltrim(rtrim(@W_Cuit))

        if (try_convert(decimal(11),@W_Cuit) is null or len(@W_Cuit)<>11) -- no es numerico o no tiene 11 digitos
          begin
       set @W_error = 0
          end 
        else
    begin
   set @W_2_Digv = substring(@W_Cuit,11,1)  
   
   set @W_Suma = @W_Suma + convert(int,substring(@W_Cuit,1,1))  * 5
   set @W_Suma = @W_Suma + convert(int,substring(@W_Cuit,2,1))  * 4
   set @W_Suma = @W_Suma + convert(int,substring(@W_Cuit,3,1))  * 3
   set @W_Suma = @W_Suma + convert(int,substring(@W_Cuit,4,1))  * 2
   set @W_Suma = @W_Suma + convert(int,substring(@W_Cuit,5,1))  * 7
   set @W_Suma = @W_Suma + convert(int,substring(@W_Cuit,6,1))  * 6
   set @W_Suma = @W_Suma + convert(int,substring(@W_Cuit,7,1))  * 5
   set @W_Suma = @W_Suma + convert(int,substring(@W_Cuit,8,1))  * 4
   set @W_Suma = @W_Suma + convert(int,substring(@W_Cuit,9,1))  * 3
   set @W_Suma = @W_Suma + convert(int,substring(@W_Cuit,10,1)) * 2
   
   set @W_Division = @W_Suma / 11;
   set @W_Resto = @W_Suma - (@W_Division * 11);
   
   if (@W_Resto = 0)
      begin
     set @W_Digv = 0
      end
   else
      begin
     set @W_Digv = 11 - @W_Resto
      end
   if (@W_Digv != @W_2_Digv OR @W_Digv = 10)
      begin 
    set @W_error = 0
      end
    end 
  
    return @W_error 
END 

GO

Depends On

No items found