dbo.usuarios_restricciones_indicadores

Description

Properties

Name Value
ANSI Nulls ON

True

Quoted Identifier ON

True

Encrypted

False

Execute As
Assembly

Parameters

6
Name Data Type Length Description
@p_cliente int 4
@p_user_id int 4
@p_servicio int 4
@p_lista_completa varchar -1
@p_lista_usuario varchar -1
@p_user_by int 4

SQL Script

Copy
SET QUOTED_IDENTIFIER, ANSI_NULLS ON
GO
-- =============================================
-- Author: Marita Soria
-- Create date: 16/06/2020
-- Description: Graba restricciones de indicadores para usuarios 
-- Se manda la lista de los permitidos, entonces busca los que no estan en la lista, 
-- esos son los que hay que restringir 
-- =============================================

/* 
exec [usuarios_restricciones_indicadores] 5546348, 852844375,47,
'4,221,273,6,29,37,32,33,34,52,53,79,55,78,159,274,167,169,51,54,43,44,45,46,47,48' ,
'4,221,273,6,29,37,32,33,34,52,53,79,55,78,159,274,167,169,43,44,45,46,47,48' , 1

select * from usuarios_restricciones where cliente = 5546348
*/

CREATE OR ALTER PROCEDURE dbo.usuarios_restricciones_indicadores 
 @p_cliente           int = NULL,
 @p_user_id           int = NULL,
 @p_servicio           int = NULL,
 @p_lista_completa           varchar(max) = NULL,
 @p_lista_usuario            varchar(max) = NULL,
 @p_user_by             int = NULL

AS

BEGIN
 SET NOCOUNT ON;
 declare @indicadores_a_restringir table (indicador int)

 insert into @indicadores_a_restringir 
   select a.item as indicador 
  from dbo.DelimitedSplit8K(@p_lista_completa, ',') a
    where not exists (select item from dbo.DelimitedSplit8K(@p_lista_usuario, ',') b 
        where b.item = a.item)
 select * from @indicadores_a_restringir
 /* Si ya estaba la restriccion, graba fecha de modificacion */

 update usuarios_restricciones 
    set modified = getdate(), modified_by = @p_user_by
  where cliente = @p_cliente 
    and user_id = @p_user_id 
    and servicio_contratado = @p_servicio 
    and pais_servicio is null 
    and familia is null
       and indicador in (select indicador from @indicadores_a_restringir)

 /* Si no estaba la restriccion la graba */ 

 insert into usuarios_restricciones (cliente, user_id, servicio_contratado, indicador, created, created_by)
 select @p_cliente, @p_user_id, @p_servicio, indicador, getdate(), @p_user_by
  from @indicadores_a_restringir a
 where not exists (select * from usuarios_restricciones ur
                      where ur.cliente = @p_cliente 
         and ur.user_id = @p_user_id 
         and ur.servicio_contratado = @p_servicio 
         and ur.pais_servicio is null 
         and ur.familia is null
      and ur.indicador = a.indicador)

 /* Borra los registros de indicadores restringidos, que ahora no se quieren restringir */ 

 delete from usuarios_restricciones 
     where cliente = @p_cliente 
    and user_id = @p_user_id 
    and servicio_contratado = @p_servicio 
    and pais_servicio is null 
    and familia is null
    and indicador not in (select indicador from @indicadores_a_restringir)

/* No hace falta, lo facemos en el stored [usuarios_productos_habilitados_] buscamos en el momento los productos e indicadores habilitados
Asi nos evitamos completar esta tabla para todos los usuarios ya existentes

-- Productos: agregado 15/06/2022 
-- Busca todos los productos que tiene el cliente con sus indicadores suscriptos
-- y que alguno de sus indicadores no este restringido 

declare @productos table (producto int) 
insert into @productos (producto) 
select distinct P.producto /*, P.nombre_producto, I.indicador, I.nombre_indicador, I.etiqueta,
  CP.orden_producto, P.visible_brief visible_modal, I.visible visible_panel,P.servicio_contratado*/

  from LN_cliente_productos CP
  inner join LN_indicadores I on I.producto = CP.producto
  inner join LN_familias F on (F.cliente = CP.cliente and F.visible = 1) 
  inner join LN_familia_productos FP on (FP.producto = CP.producto and FP.activo = 1 and FP.familia = F.familia)
  inner join LN_productos P on P.producto = CP.producto
  LEFT OUTER JOIN (SELECT cliente, indicador FROM LN_cliente_indicadores
WHERE cliente = @p_cliente) SUSC
           ON (CP.cliente = SUSC.cliente AND I.indicador = SUSC.indicador)
   where CP.cliente = @p_cliente
   and CP.activo = 1
   and (P.suscribe_indicadores = 0 or SUSC.indicador IS NOT NULL)
   and P.servicio_contratado in (@p_servicio,0)
   -- que alguno de sus indicadores no estĂ© en la lista de restringidos 
   and I.indicador not in (select indicador from @indicadores_a_restringir) 

update usuarios_productos_habilitados
   set modified = getdate(), modified_by = @p_user_by
 where cliente = @p_cliente 
   and user_id = @p_user_id 
   and servicio_contratado = @p_servicio 
       and producto in (select producto from @productos)

insert into usuarios_productos_habilitados (cliente, user_id, servicio_contratado, producto, created, created_by)
select @p_cliente, @p_user_id, @p_servicio, producto, getdate(), @p_user_by
 from @productos a
where not exists (select * from usuarios_productos_habilitados up
                      where up.cliente = @p_cliente 
    and up.user_id = @p_user_id 
    and up.servicio_contratado = @p_servicio 
and up.producto = a.producto)

delete from usuarios_productos_habilitados 
     where cliente = @p_cliente 
   and user_id = @p_user_id 
   and servicio_contratado = @p_servicio 
   and producto not in (select producto from @productos)

-- Fin Productos: Fin agregado 15/06/2022 
*/


END
/*
delete from usuarios_productos_habilitados
drop table usuarios_productos_habilitados
select LN_productos.nombre_producto, * from usuarios_productos_habilitados
inner join LN_productos on LN_productos.producto = usuarios_productos_habilitados.producto
Por si se quiere usar en algĂșn momento
USE [Fidelitas]
GO

SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[usuarios_productos_habilitados](
[id] [int] IDENTITY(1,1) NOT NULL,
[cliente] [int] NULL,
[user_id] [int] NOT NULL,
[servicio_contratado] [int] NOT NULL,
[producto] [int] NULL,
[created] [datetime] NULL,
[created_by] [int] NULL,
[modified] [datetime] NULL,
[modified_by] [int] NULL
) ON [PRIMARY]
GO

ALTER TABLE [dbo].[usuarios_productos_habilitados] ADD  DEFAULT (getdate()) FOR [created]
GO


*/



  
GO

Used By

No items found