dbo.TE_TELECOM_2_DOMICILIOS

Description

Properties

Name Value
ANSI Nulls ON

True

Quoted Identifier ON

True

Encrypted

False

Execute As
Assembly

SQL Script

Copy
SET QUOTED_IDENTIFIER, ANSI_NULLS ON
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
/*

EXEC TE_TELECOM_2_DOMICILIOS 


SELECT top 10000 * from te_teco2015
where cuit is not null
and localidad='CORDOBA'


SELECT cuit,count(*) from te_teco2015
where cuit is not null
group by cuit
having count(*)>1
order by count(*) desc

SELECT cuit,direccion,altura,pisodto,localidad,count(*) from te_teco2015
where cuit is not null
group by cuit,direccion,altura,pisodto,localidad
--having count(*)>1
order by count(*) desc


SELECT TOP 20 * from te_telecom_2

UPDATE te_telecom_2 set provincia='CORDOBA' WHERE localidad ='VILLA MARIA'
UPDATE te_telecom_2 set provincia='BUENOS AIRES' WHERE localidad ='VILLA LOMA HERMOSA'
UPDATE te_telecom_2 set provincia='CORDOBA' WHERE localidad ='SAN FRANCISCO'
UPDATE te_telecom_2 set provincia='SANTA FE' WHERE localidad ='VENADO TUERTO'
UPDATE te_telecom_2 set provincia='BUENOS AIRES' WHERE localidad ='GENERAL PACHECO'
UPDATE te_telecom_2 set provincia='BUENOS AIRES' WHERE localidad ='GARIN'
UPDATE te_telecom_2 set provincia='BUENOS AIRES' WHERE localidad ='SAN PEDRO (BS.AS.)'
UPDATE te_telecom_2 set provincia='TUCUMAN' WHERE localidad ='TAFI VIEJO'
UPDATE te_telecom_2 set provincia='BUENOS AIRES' WHERE localidad ='EL PALOMAR'
UPDATE te_telecom_2 set provincia='BUENOS AIRES' WHERE localidad ='SAN ANDRES'
UPDATE te_telecom_2 set provincia='TUCUMAN' WHERE localidad ='LAS TALITAS'
UPDATE te_telecom_2 set provincia='BUENOS AIRES' WHERE localidad ='VILLA BOSCH-J M BOSCH'
UPDATE te_telecom_2 set provincia='CORRIENTES' WHERE localidad ='GOYA'
UPDATE te_telecom_2 set provincia='CORDOBA' WHERE localidad ='VILLA ALLENDE'
UPDATE te_telecom_2 set provincia='BUENOS AIRES' WHERE localidad ='VILLA MARTELLI-PADILLA'
UPDATE te_telecom_2 set provincia='TUCUMAN' WHERE localidad ='BANDA DEL RIO SALI'
UPDATE te_telecom_2 set provincia='CORRIENTES' WHERE localidad ='PASO DE LOS LIBRES'
UPDATE te_telecom_2 set provincia='TUCUMAN' WHERE localidad ='LULES'
UPDATE te_telecom_2 set provincia='BUENOS AIRES' WHERE localidad ='ADOLFO SOURDEAUX'
UPDATE te_telecom_2 set provincia='LA RIOJA' WHERE localidad ='CHILECITO'
UPDATE te_telecom_2 set provincia='BUENOS AIRES' WHERE localidad ='LOS TRONCOS DEL TAL'
UPDATE te_telecom_2 set provincia='SANTA FE' WHERE localidad ='ARROYO SECO'
UPDATE te_telecom_2 set provincia='BUENOS AIRES' WHERE localidad ='TANDIL'
UPDATE te_telecom_2 set provincia='CORDOBA' WHERE localidad ='BELL VILLE'
UPDATE te_telecom_2 set provincia='MISIONES' WHERE localidad ='APOSTOLES'
UPDATE te_telecom_2 set provincia='SALTA' WHERE localidad ='METAN'
UPDATE te_telecom_2 set provincia='SANTA FE' WHERE localidad ='SAN JORGE'
UPDATE te_telecom_2 set provincia='BUENOS AIRES' WHERE localidad ='VIRREYES'
UPDATE te_telecom_2 set provincia='CORDOBA' WHERE localidad ='RIO SEGUNDO'
UPDATE te_telecom_2 set provincia='SANTIAGO DEL ESTERO' WHERE localidad ='FRIAS'
UPDATE te_telecom_2 set provincia='BUENOS AIRES' WHERE localidad ='MONTE CASEROS'
UPDATE te_telecom_2 set provincia='BUENOS AIRES' WHERE localidad ='CA#ADA DE GOMEZ'

UPDATE te_telecom_2 set provincia='SANTA FE' WHERE localidad ='PUERTO GRAL SAN MARTIN'
UPDATE te_telecom_2 set provincia='SANTA FE' WHERE localidad ='ROLDAN'
UPDATE te_telecom_2 set provincia='CORDOBA' WHERE localidad ='MENDIOLAZA'
PDATE te_telecom_2 set provincia='TUCUMAN' WHERE localidad ='LASTENIA'

SELEcT LOCALIDAD, count(*)
FROM te_telecom_2
where provincia is null
group by localidad
order by count(*) desc


SELECT * FROM te_telecom_2 where localidad='metan'

UPDATE te_telecom_2 SET localidad='SALTA'
FROM te_telecom_2 JOIN te_teco2015 on te_teco2015.CUIT = te_telecom_2.CUIT
WHERE te_teco2015.localidad = 'SALTA'


select top 1000 iif(ltrim(rtrim(pisodpto))!='', ltrim(rtrim(pisodpto)) , null)
from te_telecom_2

update te_telecom_2 set pisodpto = iif(ltrim(rtrim(pisodpto))!='', ltrim(rtrim(pisodpto)) , null)


SELECT count(*) from te_telecom_2 where provincia is null
SELECT count(*) from te_telecom_2 where provincia is not null



*/

-- =============================================
CREATE OR ALTER PROCEDURE dbo.TE_TELECOM_2_DOMICILIOS 
 -- Add the parameters for the stored procedure here
 
AS
BEGIN
 -- SET NOCOUNT ON added to prevent extra result sets from
 -- interfering with SELECT statements.
 SET NOCOUNT ON;

    -- Insert statements for procedure here

 declare @id      int
 declare @cuit     varchar(50)
 declare @domicilio    varchar(200)
 declare @altura     varchar(200)
 declare @piso     varchar(200)
 declare @dpto     varchar(200)
 declare @loc     varchar(200)
 declare @prov     varchar(200)
 declare @callenro    varchar(401)


 declare @codigo_provincia  varchar(2) = null


 DECLARE TELECOM CURSOR FOR

 select top 1 id_tele,
     cuit,
     LTRIM(RTRIM(direccion)),
     LTRIM(RTRIM(altura)),

     iif(pisodpto is not null , 
      iif(charindex(' ', pisodpto) > 1, 
       left(pisodpto, charindex(' ', pisodpto)-1), 
       pisodpto ), 
      null) as piso,

     iif(pisodpto is not null , 
      iif(charindex(' ', pisodpto) > 1, 
       substring(pisodpto, charindex(' ', pisodpto)+1, len(pisodpto) ), 
       null ), 
      null) as dpto,     

     LTRIM(RTRIM(localidad)),
     LTRIM(RTRIM(provincia))

 from te_telecom_2
 where provincia is not null
 and isnull(_domicilios_proc,0) = 0

 OPEN TELECOM

 FETCH NEXT FROM TELECOM INTO @id, @cuit, @domicilio, @altura, @piso, @dpto, @loc, @prov

 WHILE @@FETCH_STATUS = 0 BEGIN

  /* depuración */
  EXEC sp_depurar_domicilios @cuit


  /* DEBUG */
  select @cuit as CUIT, @domicilio as DOMICILIO, @altura as ALTURA, @piso AS PISO, @dpto as DPTO, @loc AS LOCALIDAD, @prov as PROVINCIA 


  /*** procesar domicilios preexistentes depurados y matchear con el de la fuente ***/

  declare @w_id int, 
    @w_domicilio varchar(500),
    @w_pai_nombre varchar(100),
    @w_prv_nombre varchar(100),
    @w_loc_nombre varchar(100),
    @w_codpos  varchar(100),
    @w_tipo_domicilio varchar(100),
    @w_created datetime,

    @lista_id   varchar(max) = null,
    @match    tinyint = 0,
    @hay_match   tinyint = 0,
    @tiene_tipo_d  tinyint = 0


  DECLARE DOMIC CURSOR FOR 

  select top 150 id_domicilio,
      replace(domicilio,'?','') as domicilio,
      pai_nombre,
      prv_nombre,
      loc_nombre,
      replace(codpos,'.','') as codpos,
      tipo_domicilio,
      created
  from domicilios_todos 
  where cuit = @cuit 
  and visible = 1 


  OPEN DOMIC

  FETCH NEXT FROM DOMIC INTO @w_id, @w_domicilio, @w_pai_nombre, @w_prv_nombre, @w_loc_nombre, @w_codpos, @w_tipo_domicilio, @w_created

  WHILE @@FETCH_STATUS = 0 BEGIN

   /* DEBUG */
   SELECT @cuit,@w_tipo_domicilio as TIPO, @w_domicilio AS DOMICILIO, @w_loc_nombre AS LOCALIDAD, @w_prv_nombre AS PROVINCIA

   SET @altura = iif(isnumeric(@altura) > 0, iif(convert(int, @altura) > 0, convert(varchar, convert(int, @altura)), NULL), NULL)
   SET @callenro = iif(@altura is not null, @domicilio + ' ' + @altura, @domicilio)


   /* comparo el compuesto de calle y nro de la fuente con el domicilio obtenido */
   set @match = 0
   exec @match = [sp_comparo_domicilios] @callenro, @w_domicilio


   /* DEBUG */
   SELECT @w_domicilio as ID, @match as MATCH 

   if (@match = 1) begin

    /* domicilio ya existente (coincidencia): marco el matcheo positivo */

    if (@hay_match = 0) begin     
     set @hay_match = 1
    end

   end


   /* Busco si existe domicilio D o E en todos los resultados */
   if (@tiene_tipo_d = 0) begin
    if (CHARINDEX('D', @w_tipo_domicilio, 1) > 0 OR CHARINDEX('E', @w_tipo_domicilio, 1) > 0) begin
     set @tiene_tipo_d = 1
    end
   end


   FETCH NEXT FROM DOMIC INTO @w_id, @w_domicilio, @w_pai_nombre, @w_prv_nombre, @w_loc_nombre, @w_codpos, @w_tipo_domicilio, @w_created
  END 

  CLOSE DOMIC
  DEALLOCATE DOMIC


  /* Verificamos si hay que insertar nuevo domicilio */
  if (@hay_match = 0) begin

   if (@prov is not null)
    select @codigo_provincia = convert(varchar(2), codigo_afip)
    from provincias
    where country_code = 'AR'
    and prv_nombre = @prov

   /* si es un nuevo domicilio, cuando tiene D o E lo inserto como otro, sino como D */

   insert into domicilios_todos 
    (cuit, domicilio, pai_codigo, pai_nombre, prv_codigo, prv_nombre, loc_nombre, codpos,
    calle, altura, piso, depto, created, visible, tipo_domicilio, nombre_fuente, procesado, isLast)
   values
    (@cuit, @callenro, 54, 'ARGENTINA', @codigo_provincia, @prov, @loc, NULL,
    @domicilio, @altura, left(@piso,10), left(@dpto,10), GETDATE(), 1, iif(@tiene_tipo_d > 0, 'O', 'D'), 'te_telecom_2', 1, 0)


   /* DEBUG */
   select @cuit as CUIT, @domicilio as DOMICILIO, @altura as ALTURA, @piso as PISO, @dpto AS DPTO, @loc AS LOCALIDAD, @prov as PROVINCIA
   select @tiene_tipo_d as TIENE_TIPO_D, iif(@tiene_tipo_d > 0, 'O', 'D') AS TIPO_NUEVO
   exec sp_obtener_domicilios @cuit


  end else

   /* En caso de existir un match, sólo lo agrego como D si no existe domicilio con ese tipo */

   if (@tiene_tipo_d = 0) begin

    if (@prov is not null)
     select @codigo_provincia = convert(varchar(2), codigo_afip)
     from provincias
     where country_code = 'AR'
     and prv_nombre = @prov

    insert into domicilios_todos 
     (cuit, domicilio, pai_codigo, pai_nombre, prv_codigo, prv_nombre, loc_nombre, codpos,
     calle, altura, piso, depto, created, visible, tipo_domicilio, nombre_fuente, procesado, isLast)
    values
     (@cuit, @callenro, 54, 'ARGENTINA', @codigo_provincia, @prov, @loc, NULL,
     @domicilio, @altura, left(@piso,10), left(@dpto,10), GETDATE(), 1, 'D', 'te_telecom_2', 1, 0)

    SELECT @tiene_tipo_d as HAY_MATCH_D

   end


  /*****/

  /* DEBUG */
  exec sp_obtener_domicilios @cuit 

  UPDATE te_telecom_2 SET _domicilios_proc = 1 WHERE id_tele = @id
  
  FETCH NEXT FROM TELECOM INTO @id, @cuit, @domicilio, @altura, @piso, @dpto, @loc, @prov

 END

 CLOSE TELECOM
 DEALLOCATE TELECOM


 
END
GO

Used By

No items found