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
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
Depends On
5Used By
No items found