dbo.igj_insertar_completo-NOUSAR-HABLARCON ALEJANDRO

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

CREATE OR ALTER PROCEDURE dbo.[igj_insertar_completo-NOUSAR-HABLARCON ALEJANDRO]
AS

BEGIN
SET NOCOUNT ON;

DECLARE @periodo_ano VARCHAR(4)=NULL
DECLARE @periodo_mes VARCHAR(2)=NULL

DECLARE  @p_id_tabla int,  
   @p_documento_soc varchar(20),
   @p_fecha_publicacion varchar(10),
   @p_cargo varchar(50),
   @p_documento_integrante varchar(50),
   @p_ultdir varchar(1), 
   @p_dni int, 
   @p_cuit varchar(20), 
   @p_nombre varchar(200) 

declare @cuits table (cuit varchar(20), nombre varchar(200))

declare @existe int

declare @momento datetime = getdate() 

/* 1) Tomo lote de registros para procesar, marcando comienzo_proceso como el momento actual */

 update igj_autoridades2021 
 set comienzo_proceso = @momento 
 where idTabla in (
 select TOP 500 idTabla
 from igj_autoridades2021
 inner join igj_entidades_2021 on igj_entidades_2021.numero_correlativo=igj_autoridades2021.numero_correlativo
 where isnull(igj_autoridades2021.PROCESADO,0) = 0 
  AND igj_autoridades2021.comienzo_proceso is null 
  AND replace(igj_autoridades2021.numero_correlativo,'"','') in (
 select distinct numero_correlativo from igj_entidades_2021 where /*dada_de_baja is null and */ cuit is not null)) 

/* 2) Proceso esos registros marcados */

 DECLARE C_cursor CURSOR FOR
   select  ltrim(rtrim(igj_autoridades2021.numero_documento)) as dni_socio,
     ltrim(rtrim(igj_autoridades2021.apellido_nombre)) as nombre,
           ltrim(rtrim(igj_entidades_2021.cuit)) as cuit_sociedad,
     descripcion_tipo_administrador as cargo,
     'S' as ultimo,
     iif (periodo like '%-%',periodo,substring(periodo,1,4) + '-' + substring(periodo,5,2)+ '-' + substring(periodo,7,2)) AS PERIODO,
     idTabla 
   from igj_autoridades2021
   inner join igj_entidades_2021 on igj_entidades_2021.numero_correlativo = igj_autoridades2021.numero_correlativo
   where isnull(igj_autoridades2021.PROCESADO,0) = 0 AND igj_autoridades2021.comienzo_proceso = @momento

 OPEN C_cursor
 declare @total_procesados int = 0
 declare @p_car_codigo char(3)
 FETCH NEXT FROM C_cursor INTO @p_documento_integrante, @p_nombre, @p_documento_soc, @p_cargo, @p_ultdir, @p_fecha_publicacion, 
                               @p_id_tabla 
 WHILE @@fetch_status = 0
 BEGIN
  set @total_procesados = @total_procesados + 1
  set @p_dni = null 
  set @p_cuit = null 
  set @p_cargo = (case @p_cargo
         when 'SOCIO' then 'S'
         when 'REPRESENTANTE' then 'RT'
         else 'IGJ'
         end) 
  if ISNUMERIC(@p_documento_integrante) = 1  
   set @p_dni = convert(int, @p_documento_integrante)

  if (@p_dni is not null)
  begin
   if (@p_cuit is null)
   begin
    delete from @cuits
    insert into @cuits 
    exec [sp_buscar_cuit] null, @p_dni, null 
    if (select COUNT(*) from @cuits) = 1
    begin 
     select @p_cuit = cuit from @cuits
    end
   end 
 
   if (@p_cuit is null)
   begin
    delete from @cuits
    insert into @cuits 
    exec [sp_buscar_cuit] @p_nombre, @p_dni, null 
    if (select COUNT(*) from @cuits) = 1
    begin 
     select @p_cuit = cuit from @cuits
    end
   end 
  
   if (@p_cuit is null)
   begin
    declare @palabra_1 table (palabra varchar(30), id int identity(1,1))
    declare @palabra varchar(100) = null 
    insert into @palabra_1
     exec sp_separo_nombres @p_nombre 
    declare @total int = (select MAX(id) from @palabra_1)
    declare @i int = 1 
    while (@i <= @total and @p_cuit is null) 
    begin
     set @palabra = null 
     select @palabra = palabra from @palabra_1 where id = @i
     if (@palabra is not null)
     begin
      set @palabra = '"' + @palabra + '"'
      delete from @cuits
      insert into @cuits 
      exec [sp_buscar_cuit] @p_nombre, @p_dni, @palabra 
      if (select COUNT(*) from @cuits) = 1
      begin 
       select @p_cuit = cuit from @cuits
      end
     end 
     set @i = @i + 1 
    end
   end   
  end 

  if (@p_cuit is not null and @p_documento_soc is not null and @p_cargo is not null)
  BEGIN
   /*select @p_documento_soc as sociedad, @p_documento_integrante as dni_integrante, 
             @p_cuit as cuit_integrante, @p_nombre as nombre_integrante*/

   set @existe = 0
   select @existe = count(*) from socios 
        where c01_cuit = @p_documento_soc 
          and c01_cuit_soc = @p_cuit 
          and car_codigo = @p_cargo 
          and c04_ultimo = @p_ultdir 
          --and fuente = 'IGJ'
          --07/06/2021 saque la condicion fuente = 'IGJ, porque si está, seguramente tenga el cargo correcto, entonces, dejamos el que esta
   if (@existe = 0) --lo tengo que insertar
    BEGIN
    /*verificar que el registro no exista ya en las mismas condiciones para no duplicar
     if (@cuit empresa + cuit persona + cargo + ult dir + (fuente IFG) esta la sacamos el 07/06/21 
     == existe
     no hacemos nada
     else*/

    /* ACÁ SE INSERTA EN LA TABLA SOCIOS */

    /* SI LOS DATOS NO SON NULOS LO INSERTAMOS EN LA TABLA DE SOCIOS Y SINO EN LA TABLA DE SOCIOS AUXILIAR*/
    if (@p_ultdir = 'S')
     begin
      /* ANTES DE INSERTAR DEBEMOS PASAR TODOS LOS REGISTROS MAS VIEJOS A ULTIMO DIRECTORIO N */
      set @periodo_ano=substring(@p_fecha_publicacion,1,4)
      set @periodo_mes=substring(@p_fecha_publicacion,6,2)
      update socios set c04_ultimo='N',modified=getdate(),modified_by=15342812,
      c04_periodo_desde = iif(c04_periodo_ano is not null and c04_periodo_mes is not null, c04_periodo_ano + '-' + c04_periodo_mes, c04_periodo_desde) 
      where c01_cuit=@p_documento_soc and c01_cuit_soc = @p_cuit
      and ((ISNULL(c04_periodo_desde,'1900-01-01')<substring(@p_fecha_publicacion,1,7))
      OR (ISNULL(c04_periodo_ano,'1900')<@periodo_ano and ISNULL(c04_periodo_mes,'01')<=@periodo_mes))

      /* FIN DE ACTUALIZAR LOS DIRECTORIOS ANTERIORES */
      insert into socios (c01_cuit, c01_cuit_soc, car_codigo,c04_ultimo, c04_periodo_desde,visible, created, created_by,fuente,c04_periodo_ano,c04_periodo_mes)
      values (@p_documento_soc,@p_cuit,@p_cargo,@p_ultdir,substring(@p_fecha_publicacion,1,7),1,getdate(),15342812,'IGJ',@periodo_ano,@periodo_mes)
     end
    else
     begin
      insert into socios (c01_cuit, c01_cuit_soc, car_codigo,c04_ultimo, c04_periodo_desde,visible, created, created_by,fuente,c04_periodo_ano,c04_periodo_mes)
      values (@p_documento_soc,@p_cuit,@p_cargo,@p_ultdir,substring(@p_fecha_publicacion,1,7),1,getdate(),15342812,'IGJ',@periodo_ano,@periodo_mes)
     end
    
    UPDATE igj_autoridades2021 SET PROCESADO = 1, cuit_integrante = @p_cuit, cuit_sociedad = @p_documento_soc WHERE idTabla = @p_id_tabla 
   END
   ELSE
   BEGIN
    UPDATE igj_autoridades2021 SET PROCESADO = 1, cuit_integrante = @p_cuit, cuit_sociedad = @p_documento_soc WHERE idTabla = @p_id_tabla
   END
  END
  else 
  BEGIN 
   UPDATE igj_autoridades2021 SET PROCESADO = 1, cuit_integrante = 'ERROR', cuit_sociedad = @p_documento_soc WHERE idTabla = @p_id_tabla
  END
  FETCH NEXT FROM C_cursor INTO @p_documento_integrante, @p_nombre, @p_documento_soc, @p_cargo, @p_ultdir, @p_fecha_publicacion, 
                                   @p_id_tabla 
 END

 CLOSE C_cursor
 DEALLOCATE C_cursor

 select @total_procesados as procesados 


END

GO

Used By

No items found