dbo.LN_trazabilidad_id_padron_

Description

Properties

Name Value
ANSI Nulls ON

True

Quoted Identifier ON

True

Encrypted

False

Execute As
Assembly

Parameters

4
Name Data Type Length Description
@p_contraparte int 4
@p_tabla varchar 100
@id_padron int 4
@p_fecha_gestion varchar 10

SQL Script

Copy
SET QUOTED_IDENTIFIER, ANSI_NULLS ON
GO
-- =============================================
-- Author: Marita Soria
-- Create date: 11/07/2023
-- Description: Trazabilidad de cambios en la tabla socios de una contraparte (cambios realizados durante la gestion que se está viendo) 
-- =============================================
/*
select * from trazabilidad_id_padron where id_trazabilidad between 100 and 105 
select * from codigo_accion_trazabilidad
[LN_trazabilidad_id_padron_] 4044,'socios'
exec [LN_trazabilidad_id_padron_] null,'socios',13627790,null

*/


CREATE OR ALTER PROCEDURE dbo.LN_trazabilidad_id_padron_ 
 @p_contraparte int, 
 @p_tabla varchar(100) = null, -- 'socios'
 @id_padron int = null, 
 @p_fecha_gestion varchar(10) = null

AS
BEGIN
 SET NOCOUNT ON;
 declare @fecha_gestion date 
 declare @desde date
 declare @hasta date

 declare @id_trazabilidad int,
   @tabla varchar(100),
   @id_registro_tabla int,
   @created datetime,
   @user_id int,
   @accion varchar(20),
   @codigos_accion varchar(1000),
   @detalle varchar(1000),
   @cuit_old varchar(20),
   @id_padron_old int,
   @cuit_new varchar(20),
   @id_padron_new int,
   @cuit_relacionado_old varchar(20),
   @id_padron_relacionado_old int,
   @cuit_relacionado_new varchar(20),
   @id_padron_relacionado_new int,
   @cargo_old varchar(3),
   @cargo_new varchar(3),
   @ultimo_directorio_old varchar(1),
   @ultimo_directorio_new varchar(1),
   @periodo_periodo_old varchar(10),
   @periodo_periodo_new varchar(10),
   @periodo_desde_old varchar(10),
   @periodo_desde_new varchar(10),
   @periodo_hasta_old varchar(10),
   @periodo_hasta_new varchar(10),
   @visible_old bit,
   @visible_new bit,
   @id_accion int, 
   @txt_accion varchar(500)

 declare @resultado table       (id_trazabilidad int, created datetime, accion varchar(max), 
                           cuit_old varchar(20), cuit_new varchar(20), id_padron_old int, id_padron_new int,
         cuit_relacionado_old varchar(20), cuit_relacionado_new varchar(20), id_padron_relacionado_old int, id_padron_relacionado_new int,
         cargo_old varchar(3), cargo_new varchar(3), 
         ultimo_directorio_old varchar(1), ultimo_directorio_new varchar(1),
         periodo_old varchar(10), periodo_new varchar(10), 
         desde_old varchar(10), desde_new varchar(10), 
         hasta_old varchar(10), hasta_new varchar(10), 
         visible_old bit, visible_new bit) 
   

 if @p_contraparte is not null 
 begin
    set @id_padron = (select id_padron from ln_contrapartes where contraparte = @p_contraparte)
 
  if (isnull(@p_fecha_gestion,'') = '') 
  begin
   select @desde = desde, @hasta = hasta from ln_gestiones 
   where contraparte = @p_contraparte and vigente = 1 
  end 
  else
  begin 
   select @desde = desde, @hasta = hasta from ln_gestiones 
   where contraparte = @p_contraparte and desde = @p_fecha_gestion 
  end 
 end
 else 
 begin 
  set @desde = '1900-01-01'
  set @hasta = '2999-12-31'
 end 

 if @id_padron is null 
  return 

 declare @lista_acciones table (id int, accion varchar(500))
 insert into @lista_acciones 
 select id,accion from codigo_accion_trazabilidad 
   where (select item from dbo.DelimitedSplit8K(codigo_accion_trazabilidad.lista_productos, ',')) = 2106


 DECLARE C_Cursor CURSOR FOR

   select acc.id, acc.accion, created, id_trazabilidad, 
      cuit_old, id_padron_old, cuit_new, id_padron_new, 
      cuit_relacionado_old, id_padron_relacionado_old, cuit_relacionado_new, id_padron_relacionado_new, 
      cargo_old, cargo_new, 
      ultimo_directorio_old, ultimo_directorio_new, 
      periodo_periodo_old, periodo_periodo_new, 
      periodo_desde_old, periodo_desde_new, 
      periodo_hasta_old, periodo_hasta_new, 
      visible_old, visible_new
    from trazabilidad_id_padron traz
   inner join @lista_acciones acc on 1 = 1 
   where id_padron_new = @id_padron and (tabla = @p_tabla or @p_tabla is null)
     and created between @desde and @hasta 
     and acc.id in (select item from dbo.DelimitedSplit8K(traz.codigos_accion,','))
 
  union
  select acc.id, acc.accion, created, id_trazabilidad, 
      cuit_old, id_padron_old, cuit_new, id_padron_new, 
      cuit_relacionado_old, id_padron_relacionado_old, cuit_relacionado_new, id_padron_relacionado_new, 
      cargo_old, cargo_new, 
      ultimo_directorio_old, ultimo_directorio_new, 
      periodo_periodo_old, periodo_periodo_new, 
      periodo_desde_old, periodo_desde_new, 
      periodo_hasta_old, periodo_hasta_new, 
      visible_old, visible_new
    from trazabilidad_id_padron traz
   inner join @lista_acciones acc on 1 = 1 
   where id_padron_old = @id_padron  and (tabla = @p_tabla or @p_tabla is null)
     and created between @desde and @hasta 
     and acc.id in (select item from dbo.DelimitedSplit8K(traz.codigos_accion,','))
   
  union
  select acc.id, acc.accion, created, id_trazabilidad, 
      cuit_old, id_padron_old, cuit_new, id_padron_new, 
      cuit_relacionado_old, id_padron_relacionado_old, cuit_relacionado_new, id_padron_relacionado_new, 
      cargo_old, cargo_new, 
      ultimo_directorio_old, ultimo_directorio_new, 
      periodo_periodo_old, periodo_periodo_new, 
      periodo_desde_old, periodo_desde_new, 
      periodo_hasta_old, periodo_hasta_new, 
      visible_old, visible_new
    from trazabilidad_id_padron traz
   inner join @lista_acciones acc on 1 = 1 
   where id_padron_relacionado_old = @id_padron and (tabla = @p_tabla or @p_tabla is null) 
     and created between @desde and @hasta 
     and acc.id in (select item from dbo.DelimitedSplit8K(traz.codigos_accion,','))

  union
  select acc.id, acc.accion, created, id_trazabilidad, 
      cuit_old, id_padron_old, cuit_new, id_padron_new, 
      cuit_relacionado_old, id_padron_relacionado_old, cuit_relacionado_new, id_padron_relacionado_new, 
      cargo_old, cargo_new, 
      ultimo_directorio_old, ultimo_directorio_new, 
      periodo_periodo_old, periodo_periodo_new, 
      periodo_desde_old, periodo_desde_new, 
      periodo_hasta_old, periodo_hasta_new, 
      visible_old, visible_new
    from trazabilidad_id_padron traz
   inner join @lista_acciones acc on 1 = 1 
   where id_padron_relacionado_new = @id_padron and (tabla = @p_tabla or @p_tabla is null) 
     and created between @desde and @hasta 
     and acc.id in (select item from dbo.DelimitedSplit8K(traz.codigos_accion,','))

  order by id_trazabilidad

 OPEN C_Cursor
 FETCH NEXT FROM C_Cursor INTO @id_accion, 
         @txt_accion,
         @created,
         @id_trazabilidad,
         @cuit_old,
         @id_padron_old,
         @cuit_new,
         @id_padron_new,
         @cuit_relacionado_old,
         @id_padron_relacionado_old,
         @cuit_relacionado_new,
         @id_padron_relacionado_new,
         @cargo_old,
         @cargo_new,
         @ultimo_directorio_old,
         @ultimo_directorio_new,
         @periodo_periodo_old,
         @periodo_periodo_new,
         @periodo_desde_old,
         @periodo_desde_new,
         @periodo_hasta_old,
         @periodo_hasta_new,
         @visible_old,
         @visible_new  

 declare @id_anterior int = 0
 declare @no_grabar_mas bit = 0

 WHILE @@fetch_status = 0
 BEGIN 
  -- Supuestamente el pasar a visible 0 y 1, solo hace eso. En el backend es un Boton (Baja o Activar) y no se tocan mas campos.
  -- Pero por las dudas si hay otras acciones (que no deberia) no las muestra, solo muestra Alta / Baja 
  if (@id_accion = 11) -- Alta o se paso a visible = 1, lo toma como alta, no importa lo que tenia antes
  begin 
   set @cuit_old = null   
   set @id_padron_old = null 
   set @cuit_relacionado_old = null  
   set @id_padron_relacionado_old = null 
   set @cargo_old = null  
   set @ultimo_directorio_old = null  
   set @periodo_periodo_old = null  
   set @periodo_desde_old = null  
   set @periodo_hasta_old = null  
   set @visible_old = null  
  end 
  if (@id_accion = 12) -- Baja o se paso a visible = 0, lo toma como baja, no importa lo que tenia antes 
  begin 
   set @cuit_new = null   
   set @id_padron_new = null 
   set @cuit_relacionado_new = null  
   set @id_padron_relacionado_new = null 
   set @cargo_new = null  
   set @ultimo_directorio_new = null  
   set @periodo_periodo_new = null  
   set @periodo_desde_new = null  
   set @periodo_hasta_new = null  
   set @visible_new = null  
  end 
  if (@id_anterior != @id_trazabilidad) 
  begin
   set @no_grabar_mas = 0 
  end 
  if (@id_accion in (11,12)) 
  begin
   delete from @resultado where id_trazabilidad = @id_trazabilidad
   set @no_grabar_mas = 1 
  end
  if (@id_accion not in (11,12) and @no_grabar_mas = 0 and @id_anterior = @id_trazabilidad) 
  begin
   update @resultado set accion = accion + '<br>' + @txt_accion where id_trazabilidad = @id_trazabilidad
  end
  if (@id_accion in (11,12) or @id_anterior != @id_trazabilidad) 
  begin
   insert into @resultado (id_trazabilidad, created, accion, 
                           cuit_old, cuit_new, id_padron_old, id_padron_new,
         cuit_relacionado_old, cuit_relacionado_new, id_padron_relacionado_old, id_padron_relacionado_new,
         cargo_old, cargo_new, 
         ultimo_directorio_old, ultimo_directorio_new,
         periodo_old, periodo_new, 
         desde_old, desde_new, 
         hasta_old, hasta_new, 
         visible_old, visible_new) 
         values  (@id_trazabilidad, @created, @txt_accion,
         @cuit_old, @cuit_new, @id_padron_old, @id_padron_new,
         @cuit_relacionado_old, @cuit_relacionado_new, @id_padron_relacionado_old, @id_padron_relacionado_new,
         @cargo_old, @cargo_new,
         @ultimo_directorio_old, @ultimo_directorio_new,
         @periodo_periodo_old, @periodo_periodo_new,
         @periodo_desde_old, @periodo_desde_new,
         @periodo_hasta_old, @periodo_hasta_new,
         @visible_old, @visible_new )
  end 
  set @id_anterior = @id_trazabilidad
  FETCH NEXT FROM C_Cursor INTO @id_accion, 
          @txt_accion,
          @created,
          @id_trazabilidad,
          @cuit_old,
          @id_padron_old,
          @cuit_new,
          @id_padron_new,
          @cuit_relacionado_old,
          @id_padron_relacionado_old,
          @cuit_relacionado_new,
          @id_padron_relacionado_new,
          @cargo_old,
          @cargo_new,
          @ultimo_directorio_old,
          @ultimo_directorio_new,
          @periodo_periodo_old,
          @periodo_periodo_new,
          @periodo_desde_old,
          @periodo_desde_new,
          @periodo_hasta_old,
          @periodo_hasta_new,
          @visible_old,
          @visible_new  
 END 
 CLOSE C_Cursor
 DEALLOCATE C_Cursor 
 select 
 res.created, 
 convert(varchar,FORMAT(res.created, 'dd-MM-yyyy HH:mm')) as fecha,
 replace(replace(res.accion,'<br>Socios/Directores: ','<br>- '),'Socios/Directores: ','Socios/Directores:<br>- ') as accion,
 p1.identificacion as taxid_empresa_old, 
 p1.nombre_persona as nombre_empresa_old, 
 p2.identificacion as taxid_socio_old, 
 p2.nombre_persona as nombre_socio_old, 
 c1.car_nombre as nombre_cargo_old,
 case res.ultimo_directorio_old
 when 'S' then 'SI'
 when 'N' then 'NO'
 else null
 end as ultimo_directorio_old,
 res.periodo_old,
 res.desde_old,
 res.hasta_old,
    
 p3.identificacion as taxid_empresa_new,
 p3.nombre_persona as nombre_empresa_new, 
 p4.identificacion as taxid_socio_new,
 p4.nombre_persona as nombre_socio_new, 
 c2.car_nombre as nombre_cargo_new, 
    case res.ultimo_directorio_new
 when 'S' then 'SI'
 when 'N' then 'NO'
 else null
 end as ultimo_directorio_new,
 res.periodo_new,
 res.desde_new,
 res.hasta_new

 from @resultado res

 left join padrones p1 on p1.id_padron = res.id_padron_old
 left join padrones p2 on p2.id_padron = res.id_padron_relacionado_old
 left join padrones p3 on p3.id_padron = res.id_padron_new
 left join padrones p4 on p4.id_padron = res.id_padron_relacionado_new

 left join cargos c1 on c1.car_codigo = res.cargo_old
 left join cargos c2 on c2.car_codigo = res.cargo_new

END

GO

Used By

No items found