dbo.sp_obtener_domicilios_2019

Description

Properties

Name Value
ANSI Nulls ON

True

Quoted Identifier ON

True

Encrypted

False

Execute As
Assembly

Parameters

1
Name Data Type Length Description
@cuit varchar 20

SQL Script

Copy
SET QUOTED_IDENTIFIER, ANSI_NULLS ON
GO
/*
EXEC sp_obtener_domicilios_2019 '20335754655'
 
EXEC sp_obtener_domicilios '30546689979'

EXEC sp_obtener_domicilios '20085851471'

*/


CREATE OR ALTER PROCEDURE dbo.sp_obtener_domicilios_2019
@cuit varchar(20)

AS
BEGIN
 declare @domicilios table 
        (id int identity, 
      domicilio varchar(500),
   pai_nombre varchar(100),
   prv_nombre varchar(100),
   loc_nombre varchar(100),
   codpos  varchar(100),
   tipo_domicilio varchar(100), 
   created datetime)


declare @MaxDomicilios int = 150000

 declare @domicilios_ok table 
        (id int identity, 
      domicilio varchar(500),
   pai_nombre varchar(100),
   prv_nombre varchar(100),
   loc_nombre varchar(100),
   codpos  varchar(100),
   tipo_domicilio varchar(100),
   created datetime)

 declare @id int, 
         @domicilio varchar(500),
   @pai_nombre varchar(100),
   @prv_nombre varchar(100),
   @loc_nombre varchar(100),
   @codpos  varchar(100),
   @tipo_domicilio varchar(100),
   @created datetime

 declare @id2 int, 
         @domicilio2  varchar(500),
   @pai_nombre2 varchar(100),
   @prv_nombre2 varchar(100),
   @loc_nombre2 varchar(100),
   @codpos2  varchar(100),
   @tipo_domicilio2 varchar(100),
   @created2 datetime
   
 declare @resp int, @total int  = 0

select @total = count(distinct domicilio)
     from domicilios_todos 
     where cuit = @cuit 
     and visible = 1 
if (@total > @MaxDomicilios) 
begin
      select max(id_domicilio) as id, 
           replace(domicilio,'?','') as domicilio,
             pai_nombre,
             prv_nombre,
             loc_nombre,
             max(replace(codpos,'.','')) as codpos,
             tipo_domicilio,
             max(isnull(created,'1901-01-01')) as created
        from domicilios_todos 
       where cuit = @cuit
         and visible = 1 
       group by replace(domicilio,'?',''), pai_nombre, prv_nombre, loc_nombre, tipo_domicilio
       order by created desc 

end 
else
begin

 insert into @domicilios (domicilio,
    pai_nombre,
    prv_nombre,
    loc_nombre,
    codpos,
    tipo_domicilio, 
    created)
    select top (@MaxDomicilios) replace(domicilio,'?','') as domicilio,
     pai_nombre,
     prv_nombre,
     loc_nombre,
     replace(codpos,'.','') as codpos,
     tipo_domicilio,
     max(isnull(created,'1901-01-01')) as created
     from domicilios_todos 
    where cuit = @cuit 
      and visible = 1 
    group by domicilio, pai_nombre, prv_nombre, loc_nombre, codpos, tipo_domicilio
          order by tipo_domicilio, len(domicilio) desc, len(prv_nombre) desc, len(loc_nombre) 
 
 declare wc cursor for
  select * from @domicilios
  order by id
    
 open wc
 Fetch next from wc INTO  
      @id,
      @domicilio,
      @pai_nombre,
      @prv_nombre,
      @loc_nombre,
      @codpos,
      @tipo_domicilio,
      @created

 WHILE (@@FETCH_STATUS <> -1 )
 BEGIN
  if ((select count(*) from @domicilios where id = @id) = 0)
  begin
   Fetch next from wc INTO  
      @id, 
      @domicilio,
      @pai_nombre,
      @prv_nombre,
      @loc_nombre,
      @codpos,
      @tipo_domicilio,
      @created
   continue
  end 

  declare wc2 cursor for
   select * from @domicilios
   where id > @id 
   order by id
    
  open wc2
  Fetch next from wc2 INTO  
      @id2,
      @domicilio2,
      @pai_nombre2,
      @prv_nombre2,
      @loc_nombre2,
      @codpos2,
      @tipo_domicilio2,
      @created2 
  WHILE (@@FETCH_STATUS <> -1 )
   BEGIN
    exec @resp = [sp_comparo_domicilios] @domicilio, @domicilio2
    if (@resp = 1) -- son iguales
    begin
     if (@prv_nombre like 'NO INFORM%') set @prv_nombre = null
     if (@prv_nombre2 like 'NO INFORM%') set @prv_nombre2 = null
     if (@loc_nombre like 'NO INFORM%') set @loc_nombre = null
     if (@loc_nombre2 like 'NO INFORM%') set @loc_nombre2 = null

     if (@created2 > @created) 
         set @created = @created2 

     if (len(@domicilio2) > len(@domicilio) or @domicilio is null)
         set @domicilio = @domicilio2
     
     if (len(@prv_nombre2) > len(@prv_nombre) or @prv_nombre is null)
      set @prv_nombre = @prv_nombre2

     if (len(@loc_nombre2) > len(@loc_nombre) or @loc_nombre is null)
      set @loc_nombre = @loc_nombre2

     if (len(@pai_nombre2) > len(@pai_nombre) or @pai_nombre is null)
      set @pai_nombre = @pai_nombre2

     if (@pai_nombre2 = 'ARGENTINA' and (select isnumeric(@codpos2)) = 1 and len(@codpos2) > 4)
       set @codpos2 = null
     
     if (@pai_nombre = 'ARGENTINA' and (select isnumeric(@codpos)) = 1 and len(@codpos) > 4)
       set @codpos = null
        
     if (len(@codpos2) > len(@codpos) or @codpos is null) 
      set @codpos = @codpos2

     if (@tipo_domicilio is null) set @tipo_domicilio = ''

     if (select CHARINDEX(@tipo_domicilio2,@tipo_domicilio)) = 0
     begin
     set @tipo_domicilio = @tipo_domicilio + @tipo_domicilio2
     end 

       delete from @domicilios 
      where id = @id2

    end

    if (@prv_nombre = 'CIUDAD DE BUENOS AIRES' or
     @prv_nombre = 'CIUDAD AUTONOMA DE BUENOS AIRES' or
     @prv_nombre = 'CIUDAD AUTONOMA BUENOS AIRES' or
     @prv_nombre = 'C.A.B.A.' or
     @prv_nombre = 'CABA') 
     begin
      set @loc_nombre = null
      set @prv_nombre = 'CIUDAD AUTONOMA BUENOS AIRES'
     end

    if (@pai_nombre = 'ARGENTINA' and (select isnumeric(@codpos)) = 1 and len(@codpos) > 4)
      set @codpos = null

    if (rtrim(ltrim(@loc_nombre)) = '') set @loc_nombre = null
    if (rtrim(ltrim(@prv_nombre)) = '') set @prv_nombre = null
    if (rtrim(ltrim(@pai_nombre)) = '') set @pai_nombre = null
    
    update @domicilios 
        set domicilio  = @domicilio,
         loc_nombre = @loc_nombre, 
         prv_nombre = @prv_nombre, 
         pai_nombre = @pai_nombre, 
         codpos     = @codpos,
         tipo_domicilio = @tipo_domicilio,
         created    = @created
         where id = @id 
     
    Fetch next from wc2 INTO  
      @id2,
      @domicilio2,
      @pai_nombre2,
      @prv_nombre2,
      @loc_nombre2,
      @codpos2,
      @tipo_domicilio2,
      @created2 
  end 
  CLOSE wc2
  DEALLOCATE wc2

  Fetch next from wc INTO  
      @id, 
      @domicilio,
      @pai_nombre,
      @prv_nombre,
      @loc_nombre,
      @codpos,
      @tipo_domicilio, 
      @created 
 END 
 CLOSE wc
 DEALLOCATE wc
/*
select * from @domicilios 
order by created desc
*/

 /*
 
  EXEC sp_obtener_domicilios_2019 '20335754655'
  
  */




 /* BORRAMOS LOS DOMICILIOS DEL CUIT PARA INSERTAR LOS DEPURADOS */
 delete domicilios_todos where cuit = @cuit

 DECLARE depurados CURSOR FOR
  select * from @domicilios order by created desc
 OPEN depurados
  FETCH NEXT FROM depurados INTO @id, @domicilio, @pai_nombre, @prv_nombre, @loc_nombre, @codpos, @tipo_domicilio, @created
  WHILE @@FETCH_STATUS = 0 
   BEGIN
    if (@prv_nombre = 'CIUDAD DE BUENOS AIRES' or
     @prv_nombre = 'CIUDAD AUTONOMA DE BUENOS AIRES' or
     @prv_nombre = 'CIUDAD AUTONOMA BUENOS AIRES' or
     @prv_nombre = 'C.A.B.A.' or
     @prv_nombre = 'CABA') 
     begin
      set @loc_nombre = null
      set @prv_nombre = 'CIUDAD AUTONOMA BUENOS AIRES'
     end

    
    
    DECLARE @n int = LEN(@tipo_domicilio)
    DECLARE @i int = 1
    DECLARE @tipodom VARCHAR(1)
    WHILE (@i <= @n) BEGIN
     SET @tipodom = SUBSTRING(@tipo_domicilio, @i, 1)
     /*
      select @id, @domicilio, @pai_nombre, @prv_nombre, @loc_nombre, @codpos, @tipo_domicilio, @created,@tipodom
      */

    
     insert into domicilios_todos 
      (cuit, domicilio, pai_codigo, pai_nombre, prv_nombre, loc_nombre, codpos,
      created, visible, tipo_domicilio, procesado, isLast,prv_codigo)
     values
      (@cuit, @domicilio, 54, @pai_nombre,  @prv_nombre, @loc_nombre, @codpos,GETDATE(), 1, @tipodom, 1, 0,0)
    
     SET @i = @i + 1
    END

    FETCH NEXT FROM depurados INTO @id, @domicilio, @pai_nombre, @prv_nombre, @loc_nombre, @codpos, @tipo_domicilio, @created
   END
 CLOSE depurados
 DEALLOCATE depurados


/*
--where id is not null
--order by id
*/


end
END
GO

Used By

No items found