dbo.LN_cliente_indicadores_

Description

Properties

Name Value
ANSI Nulls ON

True

Quoted Identifier ON

True

Encrypted

False

Execute As
Assembly

Parameters

5
Name Data Type Length Description
@accion varchar 30
@p_cliente int 4
@p_indicador int 4
@p_producto int 4
@p_user_id int 4

SQL Script

Copy
SET QUOTED_IDENTIFIER, ANSI_NULLS ON
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
CREATE OR ALTER PROCEDURE dbo.LN_cliente_indicadores_ 
 -- Add the parameters for the stored procedure here

 @accion          varchar(30) = null,
 @p_cliente         int = null,
 @p_indicador        int = null,
 @p_producto         int = null,
 @p_user_id         int = null
 
AS
BEGIN
 -- SET NOCOUNT ON added to prevent extra result sets from
 -- interfering with SELECT statements.
 SET NOCOUNT ON;

    -- Insert statements for procedure here

 if (@accion = 'insert') begin

  if (@p_cliente is not null and @p_indicador is not null) begin

   if not exists (select cliente, indicador, activo
       from LN_cliente_indicadores
       where cliente = @p_cliente
       and indicador = @p_indicador)

    insert into LN_cliente_indicadores (cliente, indicador, activo, created, created_by)
    values (@p_cliente, @p_indicador, 1, GETDATE(), @p_user_id)

   
  /* 10/03/2021: 
   Cuando se suscribe a un indicador, 
   (cuando son productos que no suscriben indicadores, al momento de cargarle el producto, 
   todos sus indicadores se cargan en usuarios_restricciones para que nadie los vea) SP: [LN_cliente_productos_]
   todos los usuarios del cliente no pueden verlo, para ello se cargan en usuarios_restricciones 
   */

  declare @usuario   int 
  DECLARE C_user CURSOR FOR   
   select distinct users.user_id
    from usuarios_productos
    inner join users on users.user_id = usuarios_productos.user_id
   where usuarios_productos.cliente  = @p_Cliente
    and isnull(users.active_user,'Y') = 'Y'
  OPEN C_user
  FETCH NEXT FROM C_user INTO @usuario 
  WHILE @@fetch_status = 0
  BEGIN  
   if not exists (select * from usuarios_restricciones 
       where user_id = @usuario and indicador = @p_indicador and servicio_contratado = 10) 
    insert into usuarios_restricciones (user_id,  cliente,     servicio_contratado, indicador,  created,   created_by) 
           values (@usuario, @p_cliente, '10',                 @p_indicador, getdate(), @p_user_id) 
   if not exists (select * from usuarios_restricciones 
       where user_id = @usuario and indicador = @p_indicador and servicio_contratado = 47) 
    insert into usuarios_restricciones (user_id,  cliente,     servicio_contratado, indicador,  created,   created_by) 
           values (@usuario, @p_cliente, '47',                 @p_indicador, getdate(), @p_user_id) 
   if not exists (select * from usuarios_restricciones 
       where user_id = @usuario and indicador = @p_indicador and servicio_contratado = 73) 
    insert into usuarios_restricciones (user_id,  cliente,     servicio_contratado, indicador,  created,   created_by) 
           values (@usuario, @p_cliente, '73',                 @p_indicador, getdate(), @p_user_id) 
   FETCH NEXT FROM C_user INTO @usuario 
  END
  CLOSE C_user
  DEALLOCATE C_user

  /* */


  end

 end


 if (@accion = 'update') begin

  if (@p_cliente is not null and @p_indicador is not null) begin

   if exists (select cliente, indicador, activo
       from LN_cliente_indicadores
       where cliente = @p_cliente
       and indicador = @p_indicador) 

    update LN_cliente_indicadores set activo = iif(activo = 1, 0, 1),
             modified= GETDATE(),
             modified_by = @p_user_id
    where cliente = @p_cliente
    and indicador = @p_indicador 

  end

 end


 if (@accion = 'delete') begin

  if (@p_cliente is not null and @p_indicador is not null) begin

   delete from LN_cliente_indicadores
   where cliente = @p_cliente
   and indicador = @p_indicador

  end

 end


 if (@accion = 'select') begin

  select LN_cliente_indicadores.cliente, LN_cliente_indicadores.indicador, LN_cliente_indicadores.activo,
    clientes.nombre_cliente, LN_productos.nombre_producto, LN_productos.producto_id,
    LN_productos.producto, LN_indicadores.nombre_indicador, LN_indicadores.clave_indicador,
    LN_indicadores.valoracion, LN_indicadores.tipo_dato, LN_indicadores.etiqueta,
    LN_indicadores.opciones, LN_productos.etiqueta as etiqueta_producto, LN_productos.balance,
    
    convert(varchar,LN_cliente_indicadores.created,103) + ' ' + substring(convert(varchar,LN_cliente_indicadores.created,108),1,5)
    as created, LN_cliente_indicadores.created_by,
    
    convert(varchar,LN_cliente_indicadores.modified,103) + ' ' + substring(convert(varchar,LN_cliente_indicadores.modified,108),1,5)
    as modified, LN_cliente_indicadores.modified_by,
    users.first_name + ' ' + users.last_name as created_by_user,
    users2.first_name + ' ' + users2.last_name as modified_by_user
    

  from LN_cliente_indicadores
  inner join clientes on LN_cliente_indicadores.cliente = clientes.cliente
  inner join LN_indicadores on LN_cliente_indicadores.indicador = LN_indicadores.indicador
  inner join LN_productos on LN_indicadores.producto = LN_productos.producto
  left outer join users on LN_cliente_indicadores.created_by = users.user_id
  left outer join users as users2 on LN_cliente_indicadores.modified_by = users2.user_id
  where LN_cliente_indicadores.cliente = @p_cliente
  and LN_cliente_indicadores.indicador = @p_indicador

 end


 if (@accion = 'search') begin

  if (@p_cliente is not null and @p_indicador is null)

   if (@p_producto is null)

    select LN_cliente_indicadores.cliente, LN_cliente_indicadores.indicador, LN_cliente_indicadores.activo,
      clientes.nombre_cliente, LN_productos.nombre_producto, LN_productos.producto_id,
      LN_productos.producto, LN_indicadores.nombre_indicador, LN_indicadores.clave_indicador,
      LN_indicadores.valoracion, LN_indicadores.tipo_dato, LN_indicadores.etiqueta,
      LN_indicadores.opciones, LN_productos.etiqueta as etiqueta_producto, LN_productos.balance, 
    
      convert(varchar,LN_cliente_indicadores.created,103) + ' ' + substring(convert(varchar,LN_cliente_indicadores.created,108),1,5)
      as created, LN_cliente_indicadores.created_by,
    
      convert(varchar,LN_cliente_indicadores.modified,103) + ' ' + substring(convert(varchar,LN_cliente_indicadores.modified,108),1,5)
      as modified, LN_cliente_indicadores.modified_by,
      users.first_name + ' ' + users.last_name as created_by_user,
      users2.first_name + ' ' + users2.last_name as modified_by_user
    

    from LN_cliente_indicadores
    inner join clientes on LN_cliente_indicadores.cliente = clientes.cliente
    inner join LN_indicadores on LN_cliente_indicadores.indicador = LN_indicadores.indicador
    inner join LN_productos on LN_indicadores.producto = LN_productos.producto
    left outer join users on LN_cliente_indicadores.created_by = users.user_id
    left outer join users as users2 on LN_cliente_indicadores.modified_by = users2.user_id
    where LN_cliente_indicadores.cliente = @p_cliente
    order by LN_productos.nombre_producto, LN_indicadores.orden

   else

    select LN_cliente_indicadores.cliente, LN_cliente_indicadores.indicador, LN_cliente_indicadores.activo,
      clientes.nombre_cliente, LN_productos.nombre_producto, LN_productos.producto_id,
      LN_productos.producto, LN_indicadores.nombre_indicador, LN_indicadores.clave_indicador,
      LN_indicadores.valoracion, LN_indicadores.tipo_dato, LN_indicadores.etiqueta,
      LN_indicadores.opciones, LN_productos.etiqueta as etiqueta_producto, LN_productos.balance, 
    
      convert(varchar,LN_cliente_indicadores.created,103) + ' ' + substring(convert(varchar,LN_cliente_indicadores.created,108),1,5)
      as created, LN_cliente_indicadores.created_by,
    
      convert(varchar,LN_cliente_indicadores.modified,103) + ' ' + substring(convert(varchar,LN_cliente_indicadores.modified,108),1,5)
      as modified, LN_cliente_indicadores.modified_by,
      users.first_name + ' ' + users.last_name as created_by_user,
      users2.first_name + ' ' + users2.last_name as modified_by_user
    

    from LN_cliente_indicadores
    inner join clientes on LN_cliente_indicadores.cliente = clientes.cliente
    inner join LN_indicadores on LN_cliente_indicadores.indicador = LN_indicadores.indicador
    inner join LN_productos on LN_indicadores.producto = LN_productos.producto
    left outer join users on LN_cliente_indicadores.created_by = users.user_id
    left outer join users as users2 on LN_cliente_indicadores.modified_by = users2.user_id
    where LN_cliente_indicadores.cliente = @p_cliente
    and LN_indicadores.producto = @p_producto
    order by LN_productos.nombre_producto, LN_indicadores.orden

  else

   if (@p_cliente is null and @p_indicador is not null)

    select LN_cliente_indicadores.cliente, LN_cliente_indicadores.indicador, LN_cliente_indicadores.activo,
      clientes.nombre_cliente, LN_productos.nombre_producto, LN_productos.producto_id,
      LN_productos.producto, LN_indicadores.nombre_indicador, LN_indicadores.clave_indicador,
      LN_indicadores.valoracion, LN_indicadores.tipo_dato, LN_indicadores.etiqueta,
      LN_indicadores.opciones, LN_productos.etiqueta as etiqueta_producto, LN_productos.balance, 
    
      convert(varchar,LN_cliente_indicadores.created,103) + ' ' + substring(convert(varchar,LN_cliente_indicadores.created,108),1,5)
      as created, LN_cliente_indicadores.created_by,
    
      convert(varchar,LN_cliente_indicadores.modified,103) + ' ' + substring(convert(varchar,LN_cliente_indicadores.modified,108),1,5)
      as modified, LN_cliente_indicadores.modified_by,
      users.first_name + ' ' + users.last_name as created_by_user,
      users2.first_name + ' ' + users2.last_name as modified_by_user
    

    from LN_cliente_indicadores
    inner join clientes on LN_cliente_indicadores.cliente = clientes.cliente
    inner join LN_indicadores on LN_cliente_indicadores.indicador = LN_indicadores.indicador
    inner join LN_productos on LN_indicadores.producto = LN_productos.producto
    left outer join users on LN_cliente_indicadores.created_by = users.user_id
    left outer join users as users2 on LN_cliente_indicadores.modified_by = users2.user_id
    where LN_cliente_indicadores.indicador = @p_indicador
    order by clientes.nombre_cliente, LN_productos.nombre_producto, LN_indicadores.orden

   else

    if (@p_cliente is not null and @p_indicador is not null)

     select LN_cliente_indicadores.cliente, LN_cliente_indicadores.indicador, LN_cliente_indicadores.activo,
       clientes.nombre_cliente, LN_productos.nombre_producto, LN_productos.producto_id,
       LN_productos.producto, LN_indicadores.nombre_indicador, LN_indicadores.clave_indicador,
       LN_indicadores.valoracion, LN_indicadores.tipo_dato, LN_indicadores.etiqueta,
       LN_indicadores.opciones, LN_productos.etiqueta as etiqueta_producto, LN_productos.balance,
    
       convert(varchar,LN_cliente_indicadores.created,103) + ' ' + substring(convert(varchar,LN_cliente_indicadores.created,108),1,5)
       as created, LN_cliente_indicadores.created_by,
    
       convert(varchar,LN_cliente_indicadores.modified,103) + ' ' + substring(convert(varchar,LN_cliente_indicadores.modified,108),1,5)
       as modified, LN_cliente_indicadores.modified_by,
       users.first_name + ' ' + users.last_name as created_by_user,
       users2.first_name + ' ' + users2.last_name as modified_by_user
    

     from LN_cliente_indicadores
     inner join clientes on LN_cliente_indicadores.cliente = clientes.cliente
     inner join LN_indicadores on LN_cliente_indicadores.indicador = LN_indicadores.indicador
     inner join LN_productos on LN_indicadores.producto = LN_productos.producto
     left outer join users on LN_cliente_indicadores.created_by = users.user_id
     left outer join users as users2 on LN_cliente_indicadores.modified_by = users2.user_id
     where LN_cliente_indicadores.cliente = @p_cliente
     and LN_cliente_indicadores.indicador = @p_indicador

    else

     if (@p_producto is null)

      select LN_cliente_indicadores.cliente, LN_cliente_indicadores.indicador, LN_cliente_indicadores.activo,
        clientes.nombre_cliente, LN_productos.nombre_producto, LN_productos.producto_id,
        LN_productos.producto, LN_indicadores.nombre_indicador, LN_indicadores.clave_indicador,
        LN_indicadores.valoracion, LN_indicadores.tipo_dato, LN_indicadores.etiqueta,
        LN_indicadores.opciones, LN_productos.etiqueta as etiqueta_producto, LN_productos.balance,
    
        convert(varchar,LN_cliente_indicadores.created,103) + ' ' + substring(convert(varchar,LN_cliente_indicadores.created,108),1,5)
        as created, LN_cliente_indicadores.created_by,
    
        convert(varchar,LN_cliente_indicadores.modified,103) + ' ' + substring(convert(varchar,LN_cliente_indicadores.modified,108),1,5)
        as modified, LN_cliente_indicadores.modified_by,
        users.first_name + ' ' + users.last_name as created_by_user,
        users2.first_name + ' ' + users2.last_name as modified_by_user
    

      from LN_cliente_indicadores
      inner join clientes on LN_cliente_indicadores.cliente = clientes.cliente
      inner join LN_indicadores on LN_cliente_indicadores.indicador = LN_indicadores.indicador
      inner join LN_productos on LN_indicadores.producto = LN_productos.producto
      left outer join users on LN_cliente_indicadores.created_by = users.user_id
      left outer join users as users2 on LN_cliente_indicadores.modified_by = users2.user_id
      order by clientes.nombre_cliente, LN_productos.nombre_producto, LN_indicadores.orden

     else

      select LN_cliente_indicadores.cliente, LN_cliente_indicadores.indicador, LN_cliente_indicadores.activo,
        clientes.nombre_cliente, LN_productos.nombre_producto, LN_productos.producto_id,
        LN_productos.producto, LN_indicadores.nombre_indicador, LN_indicadores.clave_indicador,
        LN_indicadores.valoracion, LN_indicadores.tipo_dato, LN_indicadores.etiqueta,
        LN_indicadores.opciones, LN_productos.etiqueta as etiqueta_producto, LN_productos.balance,
    
        convert(varchar,LN_cliente_indicadores.created,103) + ' ' + substring(convert(varchar,LN_cliente_indicadores.created,108),1,5)
        as created, LN_cliente_indicadores.created_by,
    
        convert(varchar,LN_cliente_indicadores.modified,103) + ' ' + substring(convert(varchar,LN_cliente_indicadores.modified,108),1,5)
        as modified, LN_cliente_indicadores.modified_by,
        users.first_name + ' ' + users.last_name as created_by_user,
        users2.first_name + ' ' + users2.last_name as modified_by_user
    

      from LN_cliente_indicadores
      inner join clientes on LN_cliente_indicadores.cliente = clientes.cliente
      inner join LN_indicadores on LN_cliente_indicadores.indicador = LN_indicadores.indicador
      inner join LN_productos on LN_indicadores.producto = LN_productos.producto
      left outer join users on LN_cliente_indicadores.created_by = users.user_id
      left outer join users as users2 on LN_cliente_indicadores.modified_by = users2.user_id
      where LN_indicadores.producto = @p_producto
      order by clientes.nombre_cliente, LN_productos.nombre_producto, LN_indicadores.orden

 end

 /* Dado el cliente y el producto suscripto, obtener los indicadores disponibles a suscribir */
 if (@accion = 'disponibles') begin

  if (@p_cliente is not null AND @p_producto is not null)


   select LN_indicadores.indicador, LN_indicadores.visible, LN_indicadores.producto,
     LN_productos.nombre_producto, LN_productos.producto_id,
     LN_indicadores.nombre_indicador, LN_indicadores.clave_indicador,
     LN_indicadores.valoracion, LN_indicadores.tipo_dato, LN_indicadores.etiqueta,
     LN_indicadores.opciones, LN_productos.etiqueta as etiqueta_producto, LN_productos.balance    

   from LN_indicadores 
   inner join LN_productos on LN_indicadores.producto = LN_productos.producto
   left outer join (select cliente, indicador 
       from LN_cliente_indicadores 
       where cliente = @p_cliente) susc on LN_indicadores.indicador = susc.indicador
   where LN_indicadores.producto = @p_producto
   and susc.indicador IS NULL
   order by LN_indicadores.nombre_indicador




 end
 
END
GO

Used By

No items found