dbo.dni_buscar_cuit_posible

Description

Properties

Name Value
ANSI Nulls ON

True

Quoted Identifier ON

True

Encrypted

False

Execute As
Assembly

Parameters

2
Name Data Type Length Description
@dni varchar 13
@todos_o_no_en_padron char 1

SQL Script

Copy
SET QUOTED_IDENTIFIER, ANSI_NULLS ON
GO
-- [dni_buscar_cuit_posible] '96282812', 'S'

CREATE OR ALTER PROCEDURE dbo.dni_buscar_cuit_posible
@dni varchar(13), 
@todos_o_no_en_padron char(1) = 'N'
AS

BEGIN
    SET NOCOUNT ON;
 
 if ((select ISNUMERIC(@dni)) = 0) return
 if ((select len(@dni)) > 8) return
 if ((select len(@dni)) = 0) return

 declare @resultado int = 0
 declare @cuit_nro varchar(11)
 declare @cuit varchar(11)
 declare @validacion bit
 declare @codes varchar(10) = '6789456789'
 --declare @codes varchar(10) = '5432765432'
 declare @res char(1)
 declare @ok char(1)
 declare @pre char(2)
 declare @tabla table (cuit varchar(11))

 
 set @ok = 'N'
 set @pre = '20'
 while @ok = 'N'
 begin
  set @cuit_nro = @pre + right('00000000'+@dni,8)
  declare @x int = 1
  set @resultado = 0
  while @x <= 10
  begin
   declare @digitoValidador int = convert(int, substring(@codes, @x , 1))
   declare @digito int = convert(int, substring(@cuit_nro, @x, 1))
   declare @digitoValidacion int = @digitoValidador * @digito
   set @resultado = @resultado + @digitoValidacion
   set @x = @x + 1
  end
  set @resultado = @resultado % 11
  set @res = right('00'+convert(varchar,@resultado),1) 
  set @cuit = @cuit_nro  + @res
  insert into  @tabla values ( @cuit )
  if (@pre = '27') begin set @ok = 'S' end 
  if (@pre = '24') begin set @pre = '27'end
  if (@pre = '23') begin set @pre = '24'end 
  if (@pre = '20') begin set @pre = '23'end  
 end 

 if (@todos_o_no_en_padron) = 'N'
 select cuit from @tabla 
 where not exists(select * from padrones 
                   where identificacion = cuit 
         and habilitado = 1
         and identificador in (select identificador from identificadores where country_code = 'AR'))
 else 
 select cuit from @tabla 

END 

GO