dbo.sp_obtener_domicilios_ant

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 created, * from domicilios_todos 
--update domicilios_todos set tipo_domicilio = 'E'
where cuit = '27208925658'
and visible = 1
and codpos = 1125
--order by len(domicilio) desc, len(prv_nombre) desc, len(loc_nombre) 
exec [sp_obtener_domicilios] '27208925658'

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

 */

CREATE OR ALTER PROCEDURE dbo.sp_obtener_domicilios_ant
@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 
 
 insert into @domicilios (domicilio,
    pai_nombre,
    prv_nombre,
    loc_nombre,
    codpos,
    tipo_domicilio, 
    created)
    select replace(domicilio,'?','') as domicilio,
     pai_nombre,
     prv_nombre,
     loc_nombre,
     codpos,
     tipo_domicilio,
     isnull(created,'1901-01-01')
     from domicilios_todos 
    where cuit = @cuit 
      and visible = 1 
   order by 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 (@created2 > @created) 
         set @created = @created2 

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

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

     if (len(@pai_nombre2) > len(@pai_nombre) or len(@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 (len(@codpos2) > len(@codpos) or len(@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') 
     set @loc_nombre = null

    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 where id is not null
 --order by id
END 
GO

Used By

No items found