dbo.sp_obtener_domicilios_afipAB

Description

Properties

Name Value
ANSI Nulls ON

True

Quoted Identifier ON

True

Encrypted

False

Execute As
Assembly

Parameters

2
Name Data Type Length Description
@cuit varchar 20
@afip bit 1

SQL Script

Copy
SET QUOTED_IDENTIFIER, ANSI_NULLS ON
GO

-- select * from procesos_cuit_enrichment_mas where fecha_proceso = '2020-02-16' and tipo_domicilio = 'FL'

-- select * from procesos_cuit_enrichment_mas where  cuit = '20078758377'

-- select distinct tipo_domicilio from procesos_cuit_enrichment_mas where fecha_proceso = '2020-02-16'

/*

sp_obtener_domicilios_afipAB '20078758377'
 

*/

/*
exec [sp_obtener_domicilios_afip] '30661031146', 0
exec [sp_obtener_domicilios_afip] '30661031146', 1
exec [sp_obtener_domicilios_afip] '27183787662', 1


*/

CREATE OR ALTER PROCEDURE dbo.sp_obtener_domicilios_afipAB 
@cuit varchar(20), 
@afip bit = 0


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 
  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 
        and nombre_fuente = 'AFIP'
     AND tipo_domicilio IN ('F','L')
      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) 

  end 
 
 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

GO

Used By

No items found