dbo.sp_obtener_domicilios_ant2020

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
/*
select domicilio,
 pai_nombre,
 prv_nombre,
 loc_nombre,
 codpos,
 tipo_domicilio 
select * from domicilios_todos 
where cuit = '30708209941'
and visible = 1
order by created desc

exec [sp_obtener_domicilios_ant] '30548083156'
exec [sp_obtener_domicilios2] '30650309835'

select cuit, count(*) from domicilios_todos 
group by cuit
having count(*) > 100

declare @resp smallint
exec @resp = [sp_comparo_domicilios] 'av. CORDOBA 3280 3 A', 'CORDOBA ,AV. 3280'
select  @resp



sp_obtener_domicilios '30546689979'
 

      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 = '30546689979' 
    and visible = 1 
  group by  replace(domicilio,'?',''), pai_nombre, prv_nombre, loc_nombre, tipo_domicilio
          order by created desc  

*/


CREATE OR ALTER PROCEDURE dbo.sp_obtener_domicilios_ant2020
@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 @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 > 150) 
begin
     /*
           select id_domicilio as id, 
               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 id_domicilio, domicilio, pai_nombre, prv_nombre, loc_nombre, codpos, tipo_domicilio
            order by created desc  
           */

          
      select max(id_domicilio) as id, 
           replace(domicilio,'?','') as domicilio,
             pai_nombre,
             prv_nombre,
             loc_nombre,
             max(ltrim(rtrim(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 150 replace(domicilio,'?','') as domicilio,
     pai_nombre,
     prv_nombre,
     loc_nombre,
     ltrim(rtrim(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 isnull(@domicilio,'') = '')
         set @domicilio = @domicilio2
     
     if (len(@prv_nombre2) > len(@prv_nombre) or isnull(@prv_nombre,'') = '') begin
      --if exists (select * from provincias where country_code = 'AR' and prv_nombre = @prv_nombre2)
         set @prv_nombre = @prv_nombre2
     end 
     /*
          if exists (select * from provincias where country_code = 'AR' and prv_nombre = @prv_nombre2)
        and 
        not exists (select * from provincias where country_code = 'AR' and prv_nombre = @prv_nombre)
        set @prv_nombre = @prv_nombre2
      */

     if (len(@loc_nombre2) > len(@loc_nombre) or isnull(@loc_nombre,'') = '')
      set @loc_nombre = @loc_nombre2

     if (len(@pai_nombre2) > len(@pai_nombre) or isnull(@pai_nombre,'') = '')
      set @pai_nombre = @pai_nombre2

     --select @domicilio2 as dom2, @codpos2 as codpos2, @domicilio as dom, @codpos as codpos
     if (isnull(@pai_nombre2,'ARGENTINA') = 'ARGENTINA' and (select isnumeric(@codpos2)) = 1 and len(@codpos2) > 4)
       set @codpos2 = ''
     
     if (isnull(@pai_nombre,'ARGENTINA') = 'ARGENTINA' and (select isnumeric(@codpos)) = 1 and len(@codpos) > 4)
       set @codpos = ''

       -- select @domicilio2 as dom2, @codpos2 as codpos2, @domicilio as dom, @codpos as codpos
       --select @codpos2, len(@codpos2),isnumeric(@codpos2),  @codpos, len(@codpos)
     if (len(@codpos2) > len(@codpos) or isnull(@codpos,'') = '') 
      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') 
     set @loc_nombre = null

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

    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
      --select @domicilio as dom, @codpos as codpos
    
    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
 --where id is not null
 --order by id
end
END 
GO

Used By

No items found