dbo.obtener_vinculaciones

Description

Properties

Name Value
ANSI Nulls ON

True

Quoted Identifier ON

True

Encrypted

False

Execute As
Assembly

Parameters

1
Name Data Type Length Description
@p_cuit varchar 20

SQL Script

Copy
SET QUOTED_IDENTIFIER, ANSI_NULLS ON
GO
/*

exec obtener_vinculaciones '20248728745'

select * from viculaciones 

*/


CREATE OR ALTER PROCEDURE dbo.obtener_vinculaciones
@p_cuit varchar(20)
AS
BEGIN
    SET NOCOUNT ON;
 -- select * from socios where c01_cuit = '33596683679'
 -- declare @p_cuit varchar(20) = '30569183118'

 declare @tipo_persona varchar(1)
 set @tipo_persona = iif(((LEFT(@p_cuit, 1)) = '3'), 'j', 'f')
 
 if (@tipo_persona = 'j') -- PERSONA JURIDICA =================================================================
 begin 
  select -- Socios con cargos RLL-----------------------------------------------------------------------------------------
   distinct 
   socios.c01_cuit_soc        as cuit_vinculada, 
   pf.nombre_persona          as nombre_persona,
   ''                         as nombre,
   socios.c04_periodo_desde   as desde,
   socios.c04_periodo_hasta   as hasta,
   detalle = 'OTRAS VICULACIONES' /* + cargos.car_nombre, */,
   socios.car_codigo, 
   pf.identificador as identificador_vinculada
     
  from socios
  inner join padrones as pf 
   on pf.identificacion = socios.c01_cuit_soc
  left join cargos 
   on cargos.car_codigo = socios.car_codigo 
  where (c01_cuit = @p_cuit) and (socios.visible = 1) 
  and socios.car_codigo='RLL'
 UNION ALL

  select -- Socios -----------------------------------------------------------------------------------------
   distinct 
   socios.c01_cuit_soc        as cuit_vinculada, 
   pf.nombre_persona          as nombre_persona,
   ''                         as nombre,
   socios.c04_periodo_desde   as desde,
   socios.c04_periodo_hasta   as hasta,
   detalle = 'EX-' + cargos.car_nombre, 
   socios.car_codigo,
   pf.identificador as identificador_vinculada
     
  from socios
  inner join padrones as pf 
   on pf.identificacion = socios.c01_cuit_soc
  left join cargos 
   on cargos.car_codigo = socios.car_codigo 
  where (c01_cuit = @p_cuit) and (socios.visible = 1) and (socios.c04_ultimo = 'N')
   And socios.car_codigo !='IGJ'
 
 union all 
 
 select -- Socios igj ---- las autoridad IGJ solo las muestra, si no estan con otro cargo, y una sola vez (por si estan cargadas varias veces)
   distinct 
   socios.c01_cuit_soc        as cuit_vinculada, 
   pf.nombre_persona          as nombre_persona,
   ''                         as nombre,
   max(c04_periodo_desde)     as desde, 
      null        as hasta,
   detalle = cargos.car_nombre, 
   socios.car_codigo,
   pf.identificador as identificador_vinculada
  from socios
  inner join padrones as pf 
   on pf.identificacion = socios.c01_cuit_soc
  left join cargos 
   on cargos.car_codigo = socios.car_codigo 
  where (c01_cuit = @p_cuit) and (socios.visible = 1) --and (socios.c04_ultimo = 'N')
   And socios.car_codigo ='IGJ'
   -- and not exists (select * from socios socios2 where socios2.c01_cuit = socios.c01_cuit and socios2.c01_cuit_soc = socios.c01_cuit_soc and socios2.car_codigo != 'IGJ' and socios2.visible = 1) 
    group by socios.c01_cuit_soc, 
   pf.nombre_persona,
   cargos.car_nombre, 
   socios.car_codigo,
   pf.identificador


  union all -- vinculaciones --------------------------------------------------------------------------------
  select 
   distinct 
   cuit_vinculada as cuit_vinculada,
   nombre_persona,
   nombre,
   ''             as desde,
   ''             as hasta,
   vinculaciones.detalle, 
   null as car_codigo, 
   PADRONES.identificador as identificador_vinculada

  from vinculaciones 
  right join tipo_vinculaciones 
   on id_tipo_vinculacion = cod_vinculacion 
  INNER JOIN PADRONES 
   ON PADRONES.identificacion = cuit_vinculada  
  where (cuit_sociedad = @p_cuit) and (vinculaciones.visible = 1) 
   and (tipo_vinculaciones.id_tipo_vinculacion < 18)
  union all -------------------------------------------------------------------------------------------------
  select distinct 
   cuit_sociedad as cuit_vinculada,
   nombre_persona,
   CASE nombre   
    WHEN 'CONTROLADA' THEN 'CONTROLANTE'   
    WHEN 'CONTROLANTE' THEN 'CONTROLADA'
    ELSE nombre
   END           as nombre,
   ''        as desde,
   ''        as hasta,
   vinculaciones.detalle as detalle,
   null as car_codigo, 

   PADRONES.identificador as identificador_vinculada

  from vinculaciones 
  right join tipo_vinculaciones 
   on id_tipo_vinculacion = cod_vinculacion 
  INNER JOIN PADRONES 
   ON PADRONES.identificacion = cuit_sociedad 
  where (cuit_vinculada = @p_cuit)  and (vinculaciones.visible = 1) 
  and (tipo_vinculaciones.id_tipo_vinculacion < 18)
 end
 else -- PERSONA FISICA =======================================================================================
 begin

  select -- Socios con cargos RLL-----------------------------------------------------------------------------------------
   distinct 
   socios.c01_cuit_soc        as cuit_vinculada, 
   pf.nombre_persona          as nombre_persona,
   ''                         as nombre,
   socios.c04_periodo_desde   as desde,
   socios.c04_periodo_hasta   as hasta,
   detalle = 'OTRAS VICULACIONES' /* + cargos.car_nombre, */,
   socios.car_codigo, 

   pf.identificador as identificador_vinculada
     
  from socios
  inner join padrones as pf 
   on pf.identificacion = socios.c01_cuit
  left join cargos 
   on cargos.car_codigo = socios.car_codigo 
  where (c01_cuit_SOC = @p_cuit) and (socios.visible = 1) 
  
  
  and socios.car_codigo='RLL'
 UNION ALL
  
  select -- Socios -----------------------------------------------------------------------------------------
   distinct 
   socios.c01_cuit            as cuit_vinculada, 
   pf.nombre_persona          as nombre_persona,
   ''                         as nombre,
   max(socios.c04_periodo_desde)   as desde,
   max(socios.c04_periodo_hasta)   as hasta,
   detalle = 'EX-' + cargos.car_nombre, 
   socios.car_codigo, 

   pf.identificador as identificador_vinculada
   
  from socios
  inner join padrones as pf 
   on pf.identificacion = socios.c01_cuit
  left join cargos 
   on cargos.car_codigo = socios.car_codigo 
  where (c01_cuit_soc = @p_cuit) and (socios.visible = 1) and (socios.c04_ultimo = 'N')
   And socios.car_codigo !='IGJ'
    group by socios.c01_cuit, 
   pf.nombre_persona,
   cargos.car_nombre, 
   socios.car_codigo,
   pf.identificador

  union all 
  select -- Autoridad IGJ -----------------------------------------------------------------------------------------
   distinct 
   socios.c01_cuit            as cuit_vinculada, 
   pf.nombre_persona          as nombre_persona,
   ''                         as nombre,
   max(socios.c04_periodo_desde)   as desde,
   max(socios.c04_periodo_hasta)   as hasta,
   detalle = cargos.car_nombre, 
   socios.car_codigo, 

   pf.identificador as identificador_vinculada
   
  from socios
  inner join padrones as pf 
   on pf.identificacion = socios.c01_cuit
  left join cargos 
   on cargos.car_codigo = socios.car_codigo 
  where (c01_cuit_soc = @p_cuit) and (socios.visible = 1) --and (socios.c04_ultimo = 'N')
   And socios.car_codigo ='IGJ'
         --and not exists (select * from socios socios2 where socios2.c01_cuit = socios.c01_cuit and socios2.c01_cuit_soc = socios.c01_cuit_soc and socios2.car_codigo != 'IGJ' and socios2.visible = 1) 
    group by socios.c01_cuit, 
   pf.nombre_persona,
   cargos.car_nombre, 
   socios.car_codigo,
   pf.identificador

  union all -- vinculaciones --------------------------------------------------------------------------------
  select 
   cuit_vinculada as cuit_vinculada,
   nombre_persona,
   nombre,
   ''             as desde,
   ''             as hasta,
   vinculaciones.detalle, 
   null as car_codigo,
   PADRONES.identificador as identificador_vinculada

  from vinculaciones 
  right join tipo_vinculaciones 
   on id_tipo_vinculacion = cod_vinculacion 
  INNER JOIN PADRONES 
   ON PADRONES.identificacion = cuit_vinculada  
  where (cuit_sociedad = @p_cuit) and (vinculaciones.visible = 1) 
   and (tipo_vinculaciones.id_tipo_vinculacion < 18)
  union all -------------------------------------------------------------------------------------------------
  select 
   cuit_sociedad as cuit_vinculada,
   nombre_persona,
   CASE nombre   
    WHEN 'CONTROLADA' THEN 'CONTROLANTE'   
    WHEN 'CONTROLANTE' THEN 'CONTROLADA'
    ELSE nombre
   END           as nombre,
   ''        as desde,
   ''        as hasta,
   vinculaciones.detalle, 
   null as car_codigo, 
   PADRONES.identificador as identificador_vinculada

  from vinculaciones 
  right join tipo_vinculaciones 
   on id_tipo_vinculacion = cod_vinculacion 
  INNER JOIN PADRONES 
   ON PADRONES.identificacion = cuit_sociedad 
  where (cuit_vinculada = @p_cuit)  and (vinculaciones.visible = 1) 
  and (tipo_vinculaciones.id_tipo_vinculacion < 18)
 end
 
END 

GO