dbo.RENAPER_INSERTAR

Description

Properties

Name Value
ANSI Nulls ON

True

Quoted Identifier ON

True

Encrypted

False

Execute As
Assembly

Parameters

33
Name Data Type Length Description
@ID_TRAMITE_PRINCIPAL varchar 200
@ID_TRAMITE_TARJETA_REIMPRESA varchar 200
@EJEMPLAR varchar 200
@VENCIMIENTO varchar 200
@EMISION varchar 200
@apellido varchar 200
@nombres varchar 200
@fechaNacimiento varchar 200
@cuil varchar 200
@calle varchar 200
@numero varchar 200
@piso varchar 200
@departamento varchar 200
@cpostal varchar 200
@barrio varchar 200
@monoblock varchar 200
@ciudad varchar 200
@municipio varchar 200
@provincia varchar 200
@pais varchar 200
@codigoError varchar 200
@codigof varchar 200
@mensaf varchar 200
@origenf varchar 200
@fechaf varchar 200
@idciudadano varchar 200
@nacionalidad varchar 200
@lugar_nacimiento varchar 200
@nroError varchar 200
@descripcionError varchar 200
@identificacion varchar 20
@sexo char 1
@dni varchar 10

SQL Script

Copy
SET QUOTED_IDENTIFIER, ANSI_NULLS ON
GO
/*
04/01/2022: Error detectado:
CASO DE RAMI RENAPER LO INFORMA SIN CUIL Y ESTO FALLA SI EL CUIL ES 0 O INSERTA TODOS A UN CUIL 0
SOLUCIONADO 05/01/2022
Solo se completan los campos si el NroError = 0

05/01/2022: Si Renaper no informa el CUIL (no tiene 11 posiciones) lo buscamos con el stored [sp_buscar_cuit]. 
Porque antes, al no tenes el CUIL, no completaba los datos en la tabla padrones, ni datos_personas, ni domicilios_todos, ya que esas tablas se completan con cuit.
Ejemplo: [sp_buscar_cuit] 'ALEID RAMI', '95557835',null

05/01/2022: DOMICILIOS, en la tabla domicilios todos ya se guardaba como tipo_domicilio = 'E'. 
Agregamos que se guarde: nombre_fuente = 'RENAPER' y calle, altura, piso y depto en los campos separados.

05/01/2022: DATOS_PERSONAS: FECHA DE NACIMIENTO, AÑO DE NACIMIENTO Y NACIONALIDAD, lo podemos completar, al tener el CUIL
05/01/2022: Ya se guardaba el APELLIDO Y NOMBRE separados si no estaba en la tabla padrones. 
Ahora también modificamos el sexo si tiene algo distinto de F o M

exec RENAPER_INSERTAR  '610856299','0','C','28/09/2034','28/09/2019','ALEID','Rami',
'19/01/2003', '0','IBERA','2263','5', 'D','','','',
'BELGRANO','COMUNA 13', 'CIUDAD AUTONOMA DE BS AS','',
'99','0','SIN AVISO DE FALLECIMIENTO','','',
'142672520','SIRIA','','','','0','M','95557835'

select cuil, * from renaper_info where dni = '95557835'

select * from DATOS_PERSONAS where c01_cuit ='20955578350'
select * from padrones where identificacion = '20955578350'
select * from domicilios_todos where cuit ='20955578350'

*/


/*

exec [RENAPER_INSERTAR]
'279715041',
'0',
'A',
'10/07/2029',
'10/07/2014',
'ÑANCAÑANCA',
'Agustin',
'14/09/1931',
'20073161828',
'COLON',
'426',
'',
'',
'9120',
'0',
'',
'PUERTO MADRYN ',
'BIEDMA',
'CHUBUT',
'ARGENTINA',
'99',
'1',
'FALLECIDO',
'',
'2023-11-17',
'25480129',
'ARGENTINA',
'',
'99',
'DNI/PAS Firmado',
'20073161828',
'M',
'07316182' 
*/


CREATE OR ALTER PROCEDURE dbo.RENAPER_INSERTAR
@ID_TRAMITE_PRINCIPAL VARCHAR(200),
@ID_TRAMITE_TARJETA_REIMPRESA VARCHAR(200),
@EJEMPLAR VARCHAR(200),
@VENCIMIENTO VARCHAR(200),
@EMISION VARCHAR(200),
@apellido VARCHAR(200),
@nombres VARCHAR(200),
@fechaNacimiento VARCHAR(200),
@cuil VARCHAR(200),
@calle VARCHAR(200),
@numero VARCHAR(200),
@piso VARCHAR(200),
@departamento VARCHAR(200),
@cpostal VARCHAR(200),
@barrio VARCHAR(200),
@monoblock VARCHAR(200),
@ciudad VARCHAR(200),
@municipio VARCHAR(200),
@provincia VARCHAR(200),
@pais VARCHAR(200),
@codigoError VARCHAR(200),
@codigof VARCHAR(200),
@mensaf VARCHAR(200),
@origenf VARCHAR(200),
@fechaf VARCHAR(200),
@idciudadano VARCHAR(200),
@nacionalidad VARCHAR(200),
@lugar_nacimiento VARCHAR(200),
@nroError VARCHAR(200),
@descripcionError VARCHAR(200),
@identificacion varchar(20),
@sexo char(1),
@dni varchar(10)

AS


BEGIN
    SET NOCOUNT ON;

 /* --- */
 /* 05/01/2022: Cuando Renaper no devuelve el CUIL (como el caso de Rami) lo completamos con el que tengamos en padron */ 
 declare @cuits table (cuit varchar(20), nombre varchar(200))
 declare @nombre_padron varchar(200)
 declare @nrodoc varchar(10) 
 declare @nombre_contains varchar(500)


 if (@nroError = 99 and len(@cuil)!=11) 
 begin
  set @nombre_padron = upper(@apellido) + ' ' + upper(@nombres) 
  set @nrodoc = ltrim(rtrim(dbo.fn_StripCharacters(@dni, '^0-9/')))
  set @nombre_contains = (select REPLACE(@nombre_padron,' ','" near "'))
  set @nombre_contains = '"' + @nombre_contains + '"'
  delete from @cuits
  insert into @cuits 
   exec [sp_buscar_cuit] @nombre_padron, @nrodoc, @nombre_contains
  select top 1 @cuil = cuit from @cuits 
 end 
 /* --- */

 INSERT INTO RENAPER_INFO
 (ID_TRAMITE_PRINCIPAL,ID_TRAMITE_TARJETA_REIMPRESA,EJEMPLAR,VENCIMIENTO,EMISION,apellido,nombres,
 fechaNacimiento,cuil,calle,numero,piso,departamento,cpostal,barrio,monoblock,ciudad,municipio,provincia,pais,
 codigoError,codigof,mensaf,origenf,fechaf,idciudadano,nacionalidad,lugar_nacimiento,nroError,descripcionError,
 identificacion,sexo,dni) 
 VALUES
 (@ID_TRAMITE_PRINCIPAL,@ID_TRAMITE_TARJETA_REIMPRESA,@EJEMPLAR,@VENCIMIENTO,@EMISION,@apellido,@nombres,
 @fechaNacimiento,@cuil,@calle,@numero,@piso,@departamento,@cpostal,@barrio,@monoblock,@ciudad,@municipio,@provincia,@pais,
 @codigoError,@codigof,@mensaf,@origenf,@fechaf,@idciudadano,@nacionalidad,@lugar_nacimiento,@nroError,@descripcionError,
 @cuil,@sexo,@dni)
  

  /* 23/07/2021 Grabamos fecha de nacimiento y defuncion, y nacionalidad en DATOS_PERSONAS */
  /* Si no tenemos registro en DATOS_PERSONAS, lo da de alta con los datos que nos vienen de Renaper */
 
  if (LEN(@cuil) = 11 and @nroError = 99)  
  /* 05/01/2022: Solo lo podemos hacer si tenemos un CUIL completo de 11 posiciones y el nroerror es cero (OK de Renaper) */
  begin 
 declare @fecha_nac date = null
 declare @fecha_def date = null 
 declare @anio_nac char(4) = null 

 if (isnull(@fechaNacimiento,'') != '')
 begin 
  if (@fechaNacimiento like '__/__/____')
  begin
   set @fecha_nac = convert (date, SUBSTRING(@fechaNacimiento,7,4) + '-' + SUBSTRING(@fechaNacimiento,4,2) + '-' + SUBSTRING(@fechaNacimiento,1,2))
  end 
  if (@fechaNacimiento like '____-__-__')
  begin
   set @fecha_nac = convert (date, @fechaNacimiento)
  end 
 end
 if (@fecha_nac is not null)
 begin
  set @anio_nac = year(@fecha_nac)
 end 

 if (isnull(@fechaf,'') != '')
 begin 
  if(@fechaf like '__/__/____')
  begin
   set @fecha_def = convert (date, SUBSTRING(@fechaf,7,4) + '-' + SUBSTRING(@fechaf,4,2) + '-' + SUBSTRING(@fechaf,1,2))
  end
  if(@fechaf like '____-__-__')
  begin
   set @fecha_def = convert (date,@fechaf)
  end 
 end 
  
 --select @fecha_nac, @anio_nac, @fecha_def

 if exists (select * from DATOS_PERSONAS where c01_cuit = @cuil and visible = 1) 
 begin 
  if (@fecha_nac is not null) 
   update DATOS_PERSONAS set c02_fecha_nac = @fecha_nac, c02_anio_nac = @anio_nac 
   where c01_cuit = @cuil and visible = 1 
  if (@fecha_def is not null) 
   update DATOS_PERSONAS set fecha_defuncion = @fecha_def, fecha_defuncion_ant = fecha_defuncion 
   where c01_cuit = @cuil and visible = 1
  if (isnull(@nacionalidad,'') != '')
   update datos_personas set nacionalidad =  @nacionalidad
   where c01_cuit = @cuil and visible = 1
 end
 else
 begin  
  insert into DATOS_PERSONAS(c01_cuit, doc_codigo, c02_nrodoc, c02_fecha_nac, c02_anio_nac, fecha_defuncion,visible,nacionalidad) 
    values (@cuil,'2',@dni,@fecha_nac,year(@fecha_nac),@fecha_def,1,@nacionalidad)
 end 

 
 /* 23/07/2021: Si en el padron no tenemos separado apellido y nombre lo grabamos con los datos que nos vienen de Renaper */
 /* 05/01/2022: Si el sexo del padron es invalido, lo reemplazamos por el que nos viene de Renaper */
 declare @id_padron int = 0
 set @id_padron =  (select top 1 id_padron from padrones where identificacion = @cuil and habilitado = 1 
       --and (isnull(apellidos,'') = '' or isnull(nombres,'') = '') 
       and identificador in (select identificador from identificadores where country_code = 'AR'))
 
 if (@id_padron != 0 )
 begin

  /*
   if ((select isnull(apellidos,'') from padrones where id_padron = @id_padron) = '' or 
      (select isnull(nombres,'') from padrones where id_padron = @id_padron) = '')
   begin
      update padrones set apellidos = upper(@apellido),
                      nombres   = upper(@nombres)
    where id_padron = @id_padron
   end
   if (select sexo from padrones where id_padron = @id_padron) not in ('F','f','M','m')
   begin
   update padrones set sexo = @sexo
   where id_padron = @id_padron
   end
   */

  -- Se cambió el 9/11/2023: que siempre complete los dados de apellido, nombre y sexo con lo que dice Renaper
  update padrones set apellidos = upper(@apellido),
                   nombres   = upper(@nombres), 
       nombre_persona = isnull(upper(@apellido),'') + ' ' + isnull(upper(@nombres),''),
       sexo = @sexo,
       -- 26/09/2024
       modificado_por = 'R', 
       fecha_modificado_por = getdate()
       --
      where id_padron = @id_padron
  /*
   select * from padrones where identificacion = '27208925658'
   */


 end 
 else 
 begin
  -- 26/09/2024: Si no está en padrones, lo da de alta
  insert into padrones (numero, nombre_persona, apellidos, nombres, 
         tipo_persona, sexo, identificacion, 
           pre_clave, cuerpo_clave, suf_clave, 
          habilitado, afip_activo, modificado_por, fecha_modificado_por) 
       values (@cuil, isnull(upper(@apellido),'') + ' ' + isnull(upper(@nombres),''), upper(@apellido), upper(@nombres), 
               'F', @sexo, @cuil,
            SUBSTRING(@cuil,1,2), SUBSTRING(@cuil,3,8), SUBSTRING(@cuil,11,1),
                     1, 1, 'R', getdate())
 end 
 

 /* 23/07/2021 Grabamos domicilio 'E' con los datos que nos vienen de Renaper */
 declare @domicilio varchar(200) = isnull(@calle,'') + ' ' + isnull(@numero,'') 
           + iif(isnull(@piso,'') != '',' Piso: ' + @piso,'')
           + iif(isnull(@departamento,'') != '', ' Dpto: ' + @departamento,'') 
                                   + iif(isnull(@barrio,'0') != '0',' Barrio: ' + @barrio,'') 
           --+ ' ' + iif(isnull(@ciudad,'0') != '0' and @ciudad != 'SIN INFORMAR', ' ' + @ciudad,'')
 declare @cp varchar(100) = @cpostal
 --declare @localidad varchar(200) = iif (@municipio like 'CIUDAD%BUENOS AIRES' or @municipio like 'CIUDAD AUTONOMA%', 'CIUDAD AUTONOMA DE BUENOS AIRES',@municipio) 
 -- 09/01/2024 se guarda lo que viene en Ciudad
 declare @localidad varchar(200) = iif (isnull(@ciudad,'0') != '0' and @ciudad != 'SIN INFORMAR', @ciudad,@municipio) 

 declare @pcia varchar(200) = iif (@provincia like 'CIUDAD%BUENOS AIRES' or @provincia like 'CIUDAD AUTONOMA%', 'CIUDAD AUTONOMA DE BUENOS AIRES', @provincia)  
 -- 09/01/2024: Antes cuando la pcia era CABA, dejaba la localidad NULA, ahora deja lo que traiga
 --if (@pcia = 'CIUDAD AUTONOMA DE BUENOS AIRES' /*and @localidad = 'CIUDAD AUTONOMA DE BUENOS AIRES'*/) set @localidad = null 

 declare @cod_pcia int = null 
 select @cod_pcia = codigo_afip from provincias where country_code = 'AR' and prv_nombre = @pcia
 set @domicilio = REPLACE(@domicilio,'      ',' ') 
 set @domicilio = REPLACE(@domicilio,'     ',' ') 
 set @domicilio = REPLACE(@domicilio,'    ',' ') 
 set @domicilio = REPLACE(@domicilio,'   ',' ')
 set @domicilio = REPLACE(@domicilio,'  ',' ') 
 set @domicilio = rtrim(ltrim(@domicilio))
 if (ltrim(rtrim(@cp))='') set @cp=null
 if not exists (select * from domicilios_todos where cuit = @cuil and domicilio = @domicilio and tipo_domicilio = 'E' and nombre_fuente = 'RENAPER') 
 begin
  if  exists (select * from domicilios_todos where cuit = @cuil and tipo_domicilio = 'E') 
  begin
   update domicilios_todos set tipo_domicilio = 'O' where cuit = @cuil and tipo_domicilio = 'E' -- Si hay otro E lo pasa a O
  end 
  insert into domicilios_todos (cuit, domicilio, pai_codigo, pai_nombre, prv_codigo, prv_nombre, loc_nombre, codpos, tipo_domicilio, visible,created,calle, altura,piso,depto,nombre_fuente) 
  values (@cuil, @domicilio, '54','ARGENTINA', @cod_pcia, @pcia, @localidad, @cp, 'E', 1, GETDATE(),@calle,@numero,@piso,@departamento,'RENAPER')
 end
end 

select @cuil as cuil 



END 

/*
select * from domicilios_todos where cuit ='20955578350'
up+-date DATOS_PERSONAS set c02_fecha_nac= null where c01_cuit ='27208925658'
select * from DATOS_PERSONAS where c01_cuit ='20955578350'
select * from padrones where identificacion = '20955578350'
*/


GO

Used By

No items found