Description
Properties
| Name | Value |
|---|---|
| ANSI Nulls ON | True |
| Quoted Identifier ON | True |
| Encrypted | False |
| Execute As | |
| Assembly |
Parameters
6| Name | Data Type | Length | Description |
|---|---|---|---|
| @accion | varchar | 50 | |
| @p_cliente | int | 4 | |
| @p_user_id | int | 4 | |
| @p_servicio | int | 4 | |
| @p_pais | varchar | 10 | |
| @p_created_by | int | 4 |
SQL Script
Copy
SET QUOTED_IDENTIFIER, ANSI_NULLS ON
GO
-- =============================================
-- Author: Marita Soria
-- Create date: 00/06/2020
-- Description: <Description,,>
-- =============================================
/*
exec usuarios_restricciones_ 'indicadores',5546348
exec usuarios_restricciones_ 'indicadoresxservicio',5546348,null,73
indicadoresxservicio
usuarios_restricciones_ 'paises_restringidos',5546348,852844375,47
backend_cliente_paises 'obtener_cliente_paises',5546348
select * from usuarios_restricciones
usuarios_restricciones_ 'usuario',null, 38554657
backend_usuarios_productos 5546348
select * from users where username = 'lsarmiento@arcor.com'
select * from clientes where cli_codigo = 9125
*/
CREATE OR ALTER PROCEDURE dbo.usuarios_restricciones_
-- Add the parameters for the stored procedure here
@accion varchar(50) = NULL,
@p_cliente int = NULL,
@p_user_id int = NULL,
@p_servicio int = NULL,
@p_pais varchar(10) = NULL,
@p_created_by int = NULL
AS
BEGIN
SET NOCOUNT ON;
DECLARE @cliente int = null
--indicadoresxservicio
if (@p_servicio is null)
begin
set @p_servicio=0
end
-- consulta para todos los usuarios del cliente
if (@accion = 'cliente') begin
if (@p_cliente is not null)
/*
select distinct users.user_id, users.first_name, users.last_name, users.email, users.username
from users
inner join clientes_usuarios on users.user_id = clientes_usuarios.user_id
where clientes_usuarios.cliente = @p_cliente
and users.active_user = 'Y'
and exists (
select * from usuarios_productos
inner join productos on productos.producto = usuarios_productos.id_producto
where usuarios_productos.user_id = users.user_id
--and productos.grupo_informes in ('LED NUEVO','IMPERIUM','INQUIRO VITAE'))
and productos.producto in (10,47,73))
union
select distinct users.user_id, users.first_name, users.last_name, users.email, users.username
from users
where users.cli_codigo = (select cli_codigo from clientes where cliente = @p_cliente)
and users.active_user = 'Y'
and exists (
select * from usuarios_productos
inner join productos on productos.producto = usuarios_productos.id_producto
where usuarios_productos.user_id = users.user_id
--and productos.grupo_informes in ('LED NUEVO','IMPERIUM','INQUIRO VITAE'))
and productos.producto in (10,47,73))
order by users.first_name, users.last_name
*/
select distinct users.user_id, users.first_name, users.last_name, users.email, users.username, users.password as password
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'
and
(
(@p_servicio=0 and usuarios_productos.id_producto in (10,47,73))
or
(@p_servicio!=0 and usuarios_productos.id_producto = @p_servicio)
)
end
if (@accion = 'usuario') begin
select distinct users.user_id, isnull(users.first_name,'') as first_name,
isnull(users.last_name,'') as last_name,
users.email, users.username,
isnull(users.password,'') as password
from users
where users.user_id = @p_user_id
end
-- consulta para todos los sericios contratados del cliente (que sea LED - IMPERIUM - INQUIRO)
if (@accion = 'servicios') begin
if (@p_cliente is not null)
select productos.producto, upper(productos.nombre_producto) as nombre_producto
from clientes_productos
inner join productos on productos.producto = clientes_productos.id_producto
where clientes_productos.cliente = @p_cliente
--and productos.grupo_informes in ('LED NUEVO','IMPERIUM','INQUIRO VITAE')
and productos.producto in (10,47,73)
and clientes_productos.activo = 1
order by nombre_producto
end
if (@accion = 'indicadoresxservicio')
begin
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)
order by CP.orden_producto
end
-- consulta para todos los indicadores
if (@accion = 'indicadores')
begin
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
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)
order by CP.orden_producto
end
-- consulta para ver si tienen indicadores restringidos
if (@accion = 'indicadores_restringidos') begin
select distinct servicio_contratado, indicador
from usuarios_restricciones
where usuarios_restricciones.cliente = @p_cliente
and usuarios_restricciones.user_id = @p_user_id
and usuarios_restricciones.servicio_contratado = @p_servicio
/*and familia is null
and pais_servicio is null*/
and indicador is not null
end
-- consulta para ver si tienen paises restringidos
if (@accion = 'paises_restringidos') begin
-- los paises que existen y tienen nulo familia e indicador, significa que no puede ver el pais
select distinct servicio_contratado, pais_servicio
from usuarios_restricciones
where usuarios_restricciones.cliente = @p_cliente
and usuarios_restricciones.user_id = @p_user_id
and usuarios_restricciones.servicio_contratado = @p_servicio
and familia is null
and indicador is null
and pais_servicio is not null
end
/* 30/3/2023 */
declare @tiene_paises int = (select count(*) from cliente_paises
where cliente = @p_cliente and activo = 1 and servicio_contratado = @p_servicio)
-- Si tiene paises de servicio, y tiene restricciones por familia y pais NULL elimina esos registros.
-- Ya que las restricciones serán por pais/familia
if (@tiene_paises > 0)
begin
--delete from usuarios_restricciones
update usuarios_restricciones set servicio_contratado = servicio_contratado + 99000
where usuarios_restricciones.cliente = @p_cliente
and usuarios_restricciones.servicio_contratado = @p_servicio
and pais_servicio is null
and indicador is null
and familia is not null
end
/**/
-- consulta para ver si tienen familias restringidas
if (@accion = 'familias_restringidas') begin
select distinct servicio_contratado, pais_servicio, familia
from usuarios_restricciones
where usuarios_restricciones.cliente = @p_cliente
and usuarios_restricciones.user_id = @p_user_id
and usuarios_restricciones.servicio_contratado = @p_servicio
--and (pais_servicio = @p_pais or pais_servicio is null)
and (pais_servicio = @p_pais or (@tiene_paises = 0 and pais_servicio is null)) --solo ve pais_servicio nulo si es un cliente sin paises
and indicador is null
and familia is not null
end
/*
if (@accion = 'insert') begin
begin try
insert into LN_usuarios_productos (user_id, producto, created, created_by)
values (@p_user_id, @p_producto, GETDATE(), @p_created_by)
end try
begin catch
end catch
end
if (@accion = 'delete') begin
if (@p_user_id is not null) begin
-- no hay asignación (tiene todos), inserto todos menos el seleccionado
if not exists (select producto from LN_usuarios_productos
where user_id = @p_user_id and producto = @p_producto)
insert into LN_usuarios_productos (user_id, producto, created, created_by)
select @p_user_id as user_id, LN_cliente_productos.producto, GETDATE() as created, @p_created_by as created_by
from LN_cliente_productos inner join clientes_usuarios on LN_cliente_productos.cliente = clientes_usuarios.cliente
where clientes_usuarios.user_id = @p_user_id
and LN_cliente_productos.activo = 1
and LN_cliente_productos.producto <> @p_producto
else
--- borro el producto del usuario
begin try
delete from LN_usuarios_productos where user_id = @p_user_id and producto = @p_producto
end try
begin catch
end catch
end
end
-- los disponibles a suscribir por el usuario
if (@accion = 'productos_disponibles') begin
if (@p_user_id is not null) begin
select @cliente = cliente from clientes_usuarios
where user_id = @p_user_id
if (@cliente is not null) begin
if not exists (select producto from LN_usuarios_productos
where user_id = @p_user_id)
/*select LN_productos.producto, LN_productos.nombre_producto, LN_productos.producto_id, LN_productos.balance, LN_productos.documentos
from LN_productos inner join LN_cliente_productos on LN_productos.producto = LN_cliente_productos.producto
where LN_cliente_productos.cliente = @cliente
and LN_cliente_productos.activo = 1
and LN_productos.visible = 1
order by LN_cliente_productos.orden_producto*/
select LN_productos.producto, LN_productos.nombre_producto, LN_productos.producto_id, LN_productos.balance, LN_productos.documentos
from LN_productos where producto < 0
else
select LN_productos.producto, LN_productos.nombre_producto, LN_productos.producto_id, LN_productos.balance, LN_productos.documentos
from LN_productos inner join LN_cliente_productos on LN_productos.producto = LN_cliente_productos.producto
where LN_cliente_productos.cliente = @cliente
and LN_cliente_productos.activo = 1
and LN_productos.visible = 1
and LN_productos.producto NOT IN
(select producto from LN_usuarios_productos where user_id = @p_user_id)
order by LN_cliente_productos.orden_producto
end
end
end
if (@accion = 'productos_usuario') begin
if (@p_user_id is not null) begin
select @cliente = cliente from clientes_usuarios
where user_id = @p_user_id
if (@cliente is not null) begin
if not exists (select producto from LN_usuarios_productos
where user_id = @p_user_id)
-- acceso a todos los productos del cliente
select LN_productos.producto, LN_productos.nombre_producto, LN_productos.producto_id, LN_productos.balance, LN_productos.documentos
from LN_productos inner join LN_cliente_productos on LN_productos.producto = LN_cliente_productos.producto
where LN_cliente_productos.cliente = @cliente
and LN_cliente_productos.activo = 1
and LN_productos.visible = 1
order by LN_cliente_productos.orden_producto
else
-- acceso a los productos asignados
select LN_productos.producto, LN_productos.nombre_producto, LN_productos.producto_id, LN_productos.balance, LN_productos.documentos
from LN_productos inner join LN_cliente_productos on LN_productos.producto = LN_cliente_productos.producto
inner join LN_usuarios_productos on LN_cliente_productos.producto = LN_usuarios_productos.producto
where LN_cliente_productos.cliente = @cliente
and LN_usuarios_productos.user_id = @p_user_id
and LN_cliente_productos.activo = 1
and LN_productos.visible = 1
order by LN_cliente_productos.orden_producto
end
end
end
if (@accion = 'asignar_todos') begin
if (@p_user_id is not null) begin
-- Para visibilidad de todos los productos, la tabla no debe tener registros para el usuario
delete from LN_usuarios_productos where user_id = @p_user_id
end
end
-- chequear la visibilidad de un usuario a un producto. Devuelve un recordset user_id, id_producto
if (@accion = 'check') begin
if (@p_user_id is not null and @p_producto is not null) begin
select @cliente = cliente from clientes_usuarios
where user_id = @p_user_id
if (@cliente is not null) begin
if not exists (select user_id, producto from LN_usuarios_productos
where user_id = @p_user_id and producto = @p_producto) begin
-- como no está asignado explícitamente se debe verificar que esté asignado activo al cliente
select @p_user_id as user_id, @p_producto as producto
from LN_cliente_productos inner join LN_productos on LN_cliente_productos.producto = LN_productos.producto
where LN_cliente_productos.activo = 1
and LN_productos.visible = 1
and LN_cliente_productos.cliente = @cliente
and LN_cliente_productos.producto = @p_producto
end else begin
-- asignado explícitamente, cruzamos la info con la asignación al cliente
select @p_user_id as user_id, @p_producto as producto
from LN_cliente_productos inner join LN_productos on LN_cliente_productos.producto = LN_productos.producto
inner join clientes_usuarios on LN_cliente_productos.cliente = clientes_usuarios.cliente
inner join LN_usuarios_productos on (clientes_usuarios.user_id = LN_usuarios_productos.user_id
and LN_cliente_productos.producto = LN_usuarios_productos.producto)
where LN_cliente_productos.activo = 1
and LN_productos.visible = 1
and LN_cliente_productos.cliente = @cliente
and LN_cliente_productos.producto = @p_producto
and LN_usuarios_productos.user_id = @p_user_id
end
end
end
end
*/
END
GO
GO
-- =============================================
-- Author: Marita Soria
-- Create date: 00/06/2020
-- Description: <Description,,>
-- =============================================
/*
exec usuarios_restricciones_ 'indicadores',5546348
exec usuarios_restricciones_ 'indicadoresxservicio',5546348,null,73
indicadoresxservicio
usuarios_restricciones_ 'paises_restringidos',5546348,852844375,47
backend_cliente_paises 'obtener_cliente_paises',5546348
select * from usuarios_restricciones
usuarios_restricciones_ 'usuario',null, 38554657
backend_usuarios_productos 5546348
select * from users where username = 'lsarmiento@arcor.com'
select * from clientes where cli_codigo = 9125
*/
CREATE OR ALTER PROCEDURE dbo.usuarios_restricciones_
-- Add the parameters for the stored procedure here
@accion varchar(50) = NULL,
@p_cliente int = NULL,
@p_user_id int = NULL,
@p_servicio int = NULL,
@p_pais varchar(10) = NULL,
@p_created_by int = NULL
AS
BEGIN
SET NOCOUNT ON;
DECLARE @cliente int = null
--indicadoresxservicio
if (@p_servicio is null)
begin
set @p_servicio=0
end
-- consulta para todos los usuarios del cliente
if (@accion = 'cliente') begin
if (@p_cliente is not null)
/*
select distinct users.user_id, users.first_name, users.last_name, users.email, users.username
from users
inner join clientes_usuarios on users.user_id = clientes_usuarios.user_id
where clientes_usuarios.cliente = @p_cliente
and users.active_user = 'Y'
and exists (
select * from usuarios_productos
inner join productos on productos.producto = usuarios_productos.id_producto
where usuarios_productos.user_id = users.user_id
--and productos.grupo_informes in ('LED NUEVO','IMPERIUM','INQUIRO VITAE'))
and productos.producto in (10,47,73))
union
select distinct users.user_id, users.first_name, users.last_name, users.email, users.username
from users
where users.cli_codigo = (select cli_codigo from clientes where cliente = @p_cliente)
and users.active_user = 'Y'
and exists (
select * from usuarios_productos
inner join productos on productos.producto = usuarios_productos.id_producto
where usuarios_productos.user_id = users.user_id
--and productos.grupo_informes in ('LED NUEVO','IMPERIUM','INQUIRO VITAE'))
and productos.producto in (10,47,73))
order by users.first_name, users.last_name
*/
select distinct users.user_id, users.first_name, users.last_name, users.email, users.username, users.password as password
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'
and
(
(@p_servicio=0 and usuarios_productos.id_producto in (10,47,73))
or
(@p_servicio!=0 and usuarios_productos.id_producto = @p_servicio)
)
end
if (@accion = 'usuario') begin
select distinct users.user_id, isnull(users.first_name,'') as first_name,
isnull(users.last_name,'') as last_name,
users.email, users.username,
isnull(users.password,'') as password
from users
where users.user_id = @p_user_id
end
-- consulta para todos los sericios contratados del cliente (que sea LED - IMPERIUM - INQUIRO)
if (@accion = 'servicios') begin
if (@p_cliente is not null)
select productos.producto, upper(productos.nombre_producto) as nombre_producto
from clientes_productos
inner join productos on productos.producto = clientes_productos.id_producto
where clientes_productos.cliente = @p_cliente
--and productos.grupo_informes in ('LED NUEVO','IMPERIUM','INQUIRO VITAE')
and productos.producto in (10,47,73)
and clientes_productos.activo = 1
order by nombre_producto
end
if (@accion = 'indicadoresxservicio')
begin
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)
order by CP.orden_producto
end
-- consulta para todos los indicadores
if (@accion = 'indicadores')
begin
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
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)
order by CP.orden_producto
end
-- consulta para ver si tienen indicadores restringidos
if (@accion = 'indicadores_restringidos') begin
select distinct servicio_contratado, indicador
from usuarios_restricciones
where usuarios_restricciones.cliente = @p_cliente
and usuarios_restricciones.user_id = @p_user_id
and usuarios_restricciones.servicio_contratado = @p_servicio
/*and familia is null
and pais_servicio is null*/
and indicador is not null
end
-- consulta para ver si tienen paises restringidos
if (@accion = 'paises_restringidos') begin
-- los paises que existen y tienen nulo familia e indicador, significa que no puede ver el pais
select distinct servicio_contratado, pais_servicio
from usuarios_restricciones
where usuarios_restricciones.cliente = @p_cliente
and usuarios_restricciones.user_id = @p_user_id
and usuarios_restricciones.servicio_contratado = @p_servicio
and familia is null
and indicador is null
and pais_servicio is not null
end
/* 30/3/2023 */
declare @tiene_paises int = (select count(*) from cliente_paises
where cliente = @p_cliente and activo = 1 and servicio_contratado = @p_servicio)
-- Si tiene paises de servicio, y tiene restricciones por familia y pais NULL elimina esos registros.
-- Ya que las restricciones serán por pais/familia
if (@tiene_paises > 0)
begin
--delete from usuarios_restricciones
update usuarios_restricciones set servicio_contratado = servicio_contratado + 99000
where usuarios_restricciones.cliente = @p_cliente
and usuarios_restricciones.servicio_contratado = @p_servicio
and pais_servicio is null
and indicador is null
and familia is not null
end
/**/
-- consulta para ver si tienen familias restringidas
if (@accion = 'familias_restringidas') begin
select distinct servicio_contratado, pais_servicio, familia
from usuarios_restricciones
where usuarios_restricciones.cliente = @p_cliente
and usuarios_restricciones.user_id = @p_user_id
and usuarios_restricciones.servicio_contratado = @p_servicio
--and (pais_servicio = @p_pais or pais_servicio is null)
and (pais_servicio = @p_pais or (@tiene_paises = 0 and pais_servicio is null)) --solo ve pais_servicio nulo si es un cliente sin paises
and indicador is null
and familia is not null
end
/*
if (@accion = 'insert') begin
begin try
insert into LN_usuarios_productos (user_id, producto, created, created_by)
values (@p_user_id, @p_producto, GETDATE(), @p_created_by)
end try
begin catch
end catch
end
if (@accion = 'delete') begin
if (@p_user_id is not null) begin
-- no hay asignación (tiene todos), inserto todos menos el seleccionado
if not exists (select producto from LN_usuarios_productos
where user_id = @p_user_id and producto = @p_producto)
insert into LN_usuarios_productos (user_id, producto, created, created_by)
select @p_user_id as user_id, LN_cliente_productos.producto, GETDATE() as created, @p_created_by as created_by
from LN_cliente_productos inner join clientes_usuarios on LN_cliente_productos.cliente = clientes_usuarios.cliente
where clientes_usuarios.user_id = @p_user_id
and LN_cliente_productos.activo = 1
and LN_cliente_productos.producto <> @p_producto
else
--- borro el producto del usuario
begin try
delete from LN_usuarios_productos where user_id = @p_user_id and producto = @p_producto
end try
begin catch
end catch
end
end
-- los disponibles a suscribir por el usuario
if (@accion = 'productos_disponibles') begin
if (@p_user_id is not null) begin
select @cliente = cliente from clientes_usuarios
where user_id = @p_user_id
if (@cliente is not null) begin
if not exists (select producto from LN_usuarios_productos
where user_id = @p_user_id)
/*select LN_productos.producto, LN_productos.nombre_producto, LN_productos.producto_id, LN_productos.balance, LN_productos.documentos
from LN_productos inner join LN_cliente_productos on LN_productos.producto = LN_cliente_productos.producto
where LN_cliente_productos.cliente = @cliente
and LN_cliente_productos.activo = 1
and LN_productos.visible = 1
order by LN_cliente_productos.orden_producto*/
select LN_productos.producto, LN_productos.nombre_producto, LN_productos.producto_id, LN_productos.balance, LN_productos.documentos
from LN_productos where producto < 0
else
select LN_productos.producto, LN_productos.nombre_producto, LN_productos.producto_id, LN_productos.balance, LN_productos.documentos
from LN_productos inner join LN_cliente_productos on LN_productos.producto = LN_cliente_productos.producto
where LN_cliente_productos.cliente = @cliente
and LN_cliente_productos.activo = 1
and LN_productos.visible = 1
and LN_productos.producto NOT IN
(select producto from LN_usuarios_productos where user_id = @p_user_id)
order by LN_cliente_productos.orden_producto
end
end
end
if (@accion = 'productos_usuario') begin
if (@p_user_id is not null) begin
select @cliente = cliente from clientes_usuarios
where user_id = @p_user_id
if (@cliente is not null) begin
if not exists (select producto from LN_usuarios_productos
where user_id = @p_user_id)
-- acceso a todos los productos del cliente
select LN_productos.producto, LN_productos.nombre_producto, LN_productos.producto_id, LN_productos.balance, LN_productos.documentos
from LN_productos inner join LN_cliente_productos on LN_productos.producto = LN_cliente_productos.producto
where LN_cliente_productos.cliente = @cliente
and LN_cliente_productos.activo = 1
and LN_productos.visible = 1
order by LN_cliente_productos.orden_producto
else
-- acceso a los productos asignados
select LN_productos.producto, LN_productos.nombre_producto, LN_productos.producto_id, LN_productos.balance, LN_productos.documentos
from LN_productos inner join LN_cliente_productos on LN_productos.producto = LN_cliente_productos.producto
inner join LN_usuarios_productos on LN_cliente_productos.producto = LN_usuarios_productos.producto
where LN_cliente_productos.cliente = @cliente
and LN_usuarios_productos.user_id = @p_user_id
and LN_cliente_productos.activo = 1
and LN_productos.visible = 1
order by LN_cliente_productos.orden_producto
end
end
end
if (@accion = 'asignar_todos') begin
if (@p_user_id is not null) begin
-- Para visibilidad de todos los productos, la tabla no debe tener registros para el usuario
delete from LN_usuarios_productos where user_id = @p_user_id
end
end
-- chequear la visibilidad de un usuario a un producto. Devuelve un recordset user_id, id_producto
if (@accion = 'check') begin
if (@p_user_id is not null and @p_producto is not null) begin
select @cliente = cliente from clientes_usuarios
where user_id = @p_user_id
if (@cliente is not null) begin
if not exists (select user_id, producto from LN_usuarios_productos
where user_id = @p_user_id and producto = @p_producto) begin
-- como no está asignado explícitamente se debe verificar que esté asignado activo al cliente
select @p_user_id as user_id, @p_producto as producto
from LN_cliente_productos inner join LN_productos on LN_cliente_productos.producto = LN_productos.producto
where LN_cliente_productos.activo = 1
and LN_productos.visible = 1
and LN_cliente_productos.cliente = @cliente
and LN_cliente_productos.producto = @p_producto
end else begin
-- asignado explícitamente, cruzamos la info con la asignación al cliente
select @p_user_id as user_id, @p_producto as producto
from LN_cliente_productos inner join LN_productos on LN_cliente_productos.producto = LN_productos.producto
inner join clientes_usuarios on LN_cliente_productos.cliente = clientes_usuarios.cliente
inner join LN_usuarios_productos on (clientes_usuarios.user_id = LN_usuarios_productos.user_id
and LN_cliente_productos.producto = LN_usuarios_productos.producto)
where LN_cliente_productos.activo = 1
and LN_productos.visible = 1
and LN_cliente_productos.cliente = @cliente
and LN_cliente_productos.producto = @p_producto
and LN_usuarios_productos.user_id = @p_user_id
end
end
end
end
*/
END
GO
Depends On
11Used By
No items found