dbo.actualizar_datos_con_padron1

Description

Properties

Name Value
ANSI Nulls ON

True

Quoted Identifier ON

True

Encrypted

False

Execute As
Assembly

Parameters

2
Name Data Type Length Description
@p_cuit varchar 20
@p_userid int 4

SQL Script

Copy
SET QUOTED_IDENTIFIER, ANSI_NULLS ON
GO
/*
select * from domicilios_todos where cuit = '20225157937' and tipo_domicilio = 'E'
exec [actualizar_datos_con_padron] '20225157937'
select * from domicilios_todos where cuit = '20225157937' and tipo_domicilio = 'E'
select * from padron_electoral where documento = '22515793'
*/

CREATE OR ALTER PROCEDURE dbo.actualizar_datos_con_padron1 
@p_cuit varchar(20),
@p_userid int = 0
AS
BEGIN
    SET NOCOUNT ON;
 
 declare @documento varchar(20),
         @apellidos varchar(200), 
   @nombres varchar(200), 
   @codigo_provincia int, 
   @direccion varchar(150), 
   @comuna varchar(10),
   @circuito_electoral varchar(10),
   @mesa int,
   @identificacion varchar(20),
   @nombre varchar(200), 
   @dni varchar(10),
   @anio int, 
   @cant int,
   @id_padron int, 
   @localidad varchar(100), 
   @provincia varchar(100),
   @cod_provincia varchar(2),
   @cp varchar(50),
   @respuesta varchar(10) = 'no',
   @id_ele int

 DECLARE @domicilio varchar(150), 
         @pai varchar(100), 
   @prv varchar(100), 
   @prv_codigo varchar(2),
   @loc varchar(150), 
   @codpos varchar(10), 
   @id int, 
   @resp bit, 
   @domicilio_esta char(1)

 DECLARE C_padron CURSOR FOR
  select id_padron, 
      nombre_persona, 
      cuerpo_clave 
    from padrones 
   where identificacion = @p_cuit
     and habilitado = 1
     and tipo_persona = 'F' -- Solo lo hace para personas físicas.

 OPEN C_Padron
 FETCH NEXT FROM C_Padron INTO @id_padron, @nombre, @dni
 WHILE @@fetch_status = 0
 BEGIN 
 --
 -- select 'Padrones', @id_padron, @nombre, @dni
    --
  DECLARE ProdInfo CURSOR FOR
  select documento, apellidos, nombres, provincia, ltrim(rtrim(direccion)) direccion, comuna, circuito_electoral, mesa, anio_nacimiento, id_electoral
    from padron_electoral
   where documento = @dni
     and @nombre like '%'+apellidos+'%'
     and procesado is null
     -- Si procesado = 1 ya paso por acá.
  OPEN ProdInfo
  FETCH NEXT FROM ProdInfo INTO @documento, @apellidos, @nombres, @codigo_provincia, @direccion, @comuna, @circuito_electoral, @mesa, @anio, @id_ele

  WHILE @@fetch_status = 0
  BEGIN
   -- 
   -- select 'Padron_Electoral', @documento, @apellidos, @nombres, @codigo_provincia, @direccion, @comuna, @circuito_electoral, @mesa, @anio
   --
   /* En padrones actualizo los campos apellidos, nombres si alguno esta vacio */
   if (isnull(@apellidos,'') != '' AND isnull(@nombres,'') != '')
   begin
   
    update padrones 
       set apellidos = @apellidos, nombres = @nombres
     where id_padron = @id_padron 
       and (isnull(apellidos,'') = '' or isnull(nombres,'') = '')
   end 
   
   /* En la tabla datos_personas, actualizo el año de nacimiento */
   if (isnull(@anio,0) > 0)
   begin   
    set @respuesta = 'ok'
    if ((select count(*)  
      from datos_personas 
      where c01_cuit = @p_cuit) = 0)
       begin
     insert into datos_personas (c01_cuit, c02_anio_nac, created,   created_by) 
             values (@p_cuit,  @anio,        getdate(), @p_userid)
    end 
    else
    begin
     if ((select isnull(c02_anio_nac,'0') from datos_personas where c01_cuit = @p_cuit) != @anio)
     begin
      update datos_personas 
         set c02_anio_nac = @anio, modified = getdate()
         --, modified_by = @p_userid
       where c01_cuit = @p_cuit
     end 
    end
   end 

   /* En domicilios_todos guardo la dirección del padron electoral, si no tengo un registro con esa dirección */

   set @provincia = null
   set @localidad = null 
   set @cp = null
   set @cod_provincia = null
   select @provincia = UPPER(prv_nombre),
          @cod_provincia = codigo_afip
    from provincias
    where codigo_electoral = convert(int,@codigo_provincia)

   if (@cod_provincia = '0')
   begin
    set @localidad = null
   end
   else 
   begin
    select @localidad = UPPER(localidad),
           @cp = cp
      from padron_electoral_relacion 
     where convert(int,distrito) = @codigo_provincia
       and right('000'+padron_electoral_relacion.SECCION,3) = right('000'+@comuna,3) 
       and upper(right('00000'+CIRCUITO,5))  = upper(right('00000'+@circuito_electoral,5))
       and @mesa between MESADESDE and MESAHASTA
       and visible = 1 
   end 


   if (isnull(@direccion,'') != '' and isnull(@provincia, '') != '')
   /*
    begin
    if ((select count(*) 
      from domicilios_todos 
        where cuit = @p_cuit
       and ltrim(rtrim(domicilio)) = upper(@direccion)
       and isnull(prv_nombre,'') != ''
       and tipo_domicilio = 'E') = 0)
    begin
    insert into domicilios_todos (cuit, domicilio, pai_nombre, prv_nombre, loc_nombre, codpos,tipo_domicilio,created,created_by)
    values (@p_cuit, UPPER(@direccion), 'ARGENTINA', @provincia, @localidad, @cp,'E', GETDATE(), @p_userid)
    end 
    else 
    begin
        -- para que complete la fecha de created si estaba el mismo domicilio sin created, 
    -- y lo tome como actualizado
    update domicilios_todos 
       set created = getdate()
     where cuit = @p_cuit
       and ltrim(rtrim(domicilio)) = upper(@direccion)
       and isnull(prv_nombre,'') != ''
       and tipo_domicilio = 'E'
       and created is null  
    end 
    end
    */

   begin
    declare wc cursor for
     select replace(domicilio,'?','') as domicilio,
        pai_nombre,
        prv_nombre,
        prv_codigo, 
        loc_nombre,
        replace(codpos,'.','') as codpos, 
        id_domicilio as id
      from domicilios_todos
     where cuit = @p_cuit 
       and tipo_domicilio = 'E'
       and visible = 1 
    open wc
    set @domicilio_esta = 'N'
    Fetch next from wc INTO @domicilio, @pai, @prv, @prv_codigo, @loc, @codpos, @id
     WHILE @@fetch_status = 0
     BEGIN
      exec @resp = [sp_comparo_domicilios] @domicilio -- el de domicilios_todos
                                       , @direccion -- el de padron
      if (@resp = 1) -- son iguales, veo si el de padrón está mejor. 
                     -- Si es así corrige el de domicilios_todos
      begin
       set @pai = 'ARGENTINA'
       set @prv = @provincia
       set @prv_codigo = @cod_provincia

       if (len(@direccion) > len(@domicilio) or @domicilio is null)
        set @domicilio = @direccion
      
       if (len(@localidad) > len(@loc) or @loc is null)
        set @loc = @localidad
      
       if ((select isnumeric(@codpos)) = 1 and len(@codpos) > 4)
         set @codpos = null
       if (@cp is not null)
       begin
        if ((select isnumeric(@cp)) = 1 and len(@cp) > 4)
          set @cp = null
        if (len(@cp) > len(@codpos) or @codpos is null) 
         set @codpos = @cp
       end 
       if (@prv = 'CIUDAD DE BUENOS AIRES' or
        @prv = 'CIUDAD AUTONOMA DE BUENOS AIRES' or
        @prv = 'CIUDAD AUTONOMA BUENOS AIRES' or
        @prv = 'C.A.B.A.' or
        @prv = 'CAPITAL FEDERAL' or
        @prv = 'CABA' or 
        @prv_codigo = '0') 
       begin
        set @loc = null
       end 
       if (rtrim(ltrim(@loc)) = '') set @loc = null
       if (rtrim(ltrim(@prv)) = '') set @prv = null
       if (rtrim(ltrim(@pai)) = '') set @pai = null
       set @domicilio_esta = 'S'
       update domicilios_todos 
        set domicilio  = @domicilio,
         pai_nombre = @pai,
         loc_nombre = @loc,
         prv_codigo = @prv_codigo, 
         prv_nombre = @prv, 
         codpos     = @codpos, 
         created    = getdate()
        where id_domicilio = @id
      end
      Fetch next from wc INTO @domicilio, @pai, @prv, @prv_codigo, @loc, @codpos, @id
     END 
     CLOSE wc
     DEALLOCATE wc

     if (@domicilio_esta = 'N') 
     begin
      insert into domicilios_todos (cuit, domicilio, pai_nombre, prv_codigo, prv_nombre, loc_nombre, codpos,tipo_domicilio,created,created_by)
      values (@p_cuit, UPPER(@direccion), 'ARGENTINA', @prv_codigo, @provincia, @localidad, @cp,'E', GETDATE(), @p_userid)
     end 
      end 
   update padron_electoral set procesado = 1 where id_electoral = @id_ele                    
   FETCH NEXT FROM ProdInfo INTO @documento, @apellidos, @nombres, @codigo_provincia, @direccion, @comuna, @circuito_electoral, @mesa, @anio, @id_ele

  END
  CLOSE ProdInfo
  DEALLOCATE ProdInfo 
  FETCH NEXT FROM C_Padron INTO @id_padron, @nombre, @dni

 END  
 CLOSE C_Padron
 DEALLOCATE C_Padron
 select @respuesta as respuesta -- Si la respuesta es OK, es que encontro año de nacimiento
END
GO

Used By

No items found