Description
Properties
| Name | Value |
|---|---|
| ANSI Nulls ON | True |
| Quoted Identifier ON | True |
| Encrypted | False |
| Execute As | |
| Assembly |
Parameters
10| Name | Data Type | Length | Description |
|---|---|---|---|
| @action | varchar | 30 | |
| @p_cliente | int | 4 | |
| @p_producto | int | 4 | |
| @p_activo | tinyint | 1 | |
| @p_country_code | varchar | 2 | |
| @p_visibilidad_default | tinyint | 1 | |
| @p_user_id | int | 4 | |
| @p_dias_tolerancia_inicial | int | 4 | |
| @p_etiqueta_personalizada | varchar | 100 | |
| @p_servicio_contratado | int | 4 |
SQL Script
Copy
SET QUOTED_IDENTIFIER, ANSI_NULLS ON
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
/*
exec LN_cliente_productos_ 'PRODUCTXSERV',601116452,null,null,null,null,422946826,null,null,47
*/
CREATE OR ALTER PROCEDURE dbo.LN_cliente_productos_
-- Add the parameters for the stored procedure here
@action varchar(30),
@p_cliente int,
@p_producto int,
@p_activo tinyint,
@p_country_code varchar(2),
@p_visibilidad_default tinyint,
@p_user_id int,
@p_dias_tolerancia_inicial int = null,
@p_etiqueta_personalizada varchar(100) = NULL,
@p_servicio_contratado int = null
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
DECLARE @ord tinyint
DECLARE @cant tinyint
DECLARE @prd int
IF (@action = 'PRODUCTXSERV')
BEGIN
/* si se pretende filtrar por servicio contratado ingresa acá */
select LN_PRODUCTOS.servicio_contratado, LN_cliente_productos.cliente, LN_cliente_productos.producto,
LN_cliente_productos.dias_tolerancia_inicial,
LN_cliente_productos.activo, LN_cliente_productos.created_by,
LN_cliente_productos.modified_by, LN_cliente_productos.orden_producto,
LN_cliente_productos.visibilidad_default, LN_cliente_productos.ponderacion,
LN_cliente_productos.etiqueta_personalizada,
CONVERT(VARCHAR(19), LN_cliente_productos.created, 121) AS created,
CONVERT(VARCHAR(19), LN_cliente_productos.modified, 121) AS modified,
users.first_name + ' ' + users.last_name as created_by_user,
users2.first_name + ' ' + users2.last_name as modified_by_user,
clientes.nombre_cliente, LN_productos.nombre_producto, LN_productos.country_code,
country.country_name, LN_productos.balance, LN_cliente_productos.version_balance,
LN_productos.dossier, LN_productos.suscribe_indicadores, Ln_productos.producto_id
from LN_cliente_productos
inner join clientes on LN_cliente_productos.cliente = clientes.cliente
inner join LN_productos on LN_cliente_productos.producto = LN_productos.producto
left outer join country on LN_productos.country_code = country.country_code
left outer join users on LN_cliente_productos.created_by = users.user_id
left outer join users AS users2 on LN_cliente_productos.modified_by = users2.user_id
where LN_cliente_productos.cliente = @p_cliente
and LN_productos.servicio_contratado IN (@p_servicio_contratado,0)
order by clientes.nombre_cliente,
LN_cliente_productos.orden_producto, country.country_name, LN_productos.nombre_producto
RETURN
END
IF (@action = 'INSERT') BEGIN
if not exists (select cliente, producto
from LN_cliente_productos
where cliente = @p_cliente
and producto = @p_producto) begin
select @ord = ISNULL(max(orden_producto),0)+1
from LN_cliente_productos
where cliente = @p_cliente
insert into LN_cliente_productos
(cliente, producto, activo, orden_producto, visibilidad_default, created_by, dias_tolerancia_inicial, etiqueta_personalizada)
values
(@p_cliente, @p_producto, @p_activo, @ord, @p_visibilidad_default, @p_user_id, @p_dias_tolerancia_inicial, @p_etiqueta_personalizada)
/* 10/03/2021:
Cuando se da de alta un producto al cliente, si no suscribe indicadores,
(si suscribe indicadores, esto se hace en la carga de la suscripción al indicador) -> SP: [LN_cliente_indicadores_]
todos los usuarios del cliente no pueden ver los indicadores, para ello se cargan en usuarios_restricciones
*/
declare @indicador int
declare @usuario int
if (select suscribe_indicadores from LN_productos where producto = @p_producto) = 0
begin
DECLARE C_ind CURSOR FOR
select indicador from LN_indicadores where producto = @p_producto
OPEN C_ind
FETCH NEXT FROM C_ind INTO @indicador
WHILE @@fetch_status = 0
BEGIN
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 = @indicador and servicio_contratado = 10)
insert into usuarios_restricciones (user_id, cliente, servicio_contratado, indicador, created, created_by)
values (@usuario, @p_cliente, '10', @indicador, getdate(), @p_user_id)
if not exists (select * from usuarios_restricciones
where user_id = @usuario and indicador = @indicador and servicio_contratado = 47)
insert into usuarios_restricciones (user_id, cliente, servicio_contratado, indicador, created, created_by)
values (@usuario, @p_cliente, '47', @indicador, getdate(), @p_user_id)
if not exists (select * from usuarios_restricciones
where user_id = @usuario and indicador = @indicador and servicio_contratado = 73)
insert into usuarios_restricciones (user_id, cliente, servicio_contratado, indicador, created, created_by)
values (@usuario, @p_cliente, '73', @indicador, getdate(), @p_user_id)
FETCH NEXT FROM C_user INTO @usuario
END
CLOSE C_user
DEALLOCATE C_user
FETCH NEXT FROM C_ind INTO @indicador
END
CLOSE C_ind
DEALLOCATE C_ind
end
/* */
end
END ELSE
IF (@action = 'UPDATE') BEGIN
UPDATE LN_cliente_productos set
visibilidad_default = @p_visibilidad_default,
dias_tolerancia_inicial = @p_dias_tolerancia_inicial,
etiqueta_personalizada = @p_etiqueta_personalizada,
activo = @p_activo,
modified = getdate(),
modified_by = @p_user_id
where cliente = @p_cliente
and producto = @p_producto
END ELSE
IF (@action = 'DELETE') BEGIN
SELECT @ord = orden_producto
from LN_cliente_productos
where cliente = @p_cliente
and producto = @p_producto
delete from LN_cliente_productos where cliente = @p_cliente AND producto = @p_producto
UPDATE LN_cliente_productos set orden_producto = orden_producto-1
where cliente = @p_cliente
and orden_producto > @ord
END ELSE
IF (@action = 'UP') BEGIN
SELECT @ord = orden_producto
from LN_cliente_productos
where cliente = @p_cliente
and producto = @p_producto
IF (@ord > 1) BEGIN
SELECT @prd = producto
from LN_cliente_productos
where cliente = @p_cliente
and orden_producto = (@ord-1)
UPDATE LN_cliente_productos SET
orden_producto = @ord - 1
where cliente = @p_cliente
and producto = @p_producto
UPDATE LN_cliente_productos SET
orden_producto = @ord
where cliente = @p_cliente
and producto = @prd
END
END ELSE
IF (@action = 'DOWN') BEGIN
SELECT @ord = orden_producto
from LN_cliente_productos
where cliente = @p_cliente
and producto = @p_producto
SELECT @cant = MAX(orden_producto)
from LN_cliente_productos
where cliente = @p_cliente
IF (@ord < @cant) BEGIN
SELECT @prd = producto
from LN_cliente_productos
where cliente = @p_cliente
and orden_producto = (@ord+1)
UPDATE LN_cliente_productos SET
orden_producto = @ord + 1
where cliente = @p_cliente
and producto = @p_producto
UPDATE LN_cliente_productos SET
orden_producto = @ord
where cliente = @p_cliente
and producto = @prd
END
END ELSE
/* Dado un cliente y un país, todos los productos asociados al cliente que estén
vinculados al páis o que no estén asociados a ningún país */
IF (@action = 'PRODUCTOS_PAIS') BEGIN
select LN_cliente_productos.cliente, LN_cliente_productos.producto,
LN_cliente_productos.dias_tolerancia_inicial,
LN_cliente_productos.activo, LN_cliente_productos.created_by,
LN_cliente_productos.modified_by, LN_cliente_productos.orden_producto,
LN_cliente_productos.visibilidad_default, LN_cliente_productos.ponderacion,
LN_cliente_productos.etiqueta_personalizada,
CONVERT(VARCHAR(19), LN_cliente_productos.created, 121) AS created,
CONVERT(VARCHAR(19), LN_cliente_productos.modified, 121) AS modified,
users.first_name + ' ' + users.last_name as created_by_user,
users2.first_name + ' ' + users2.last_name as modified_by_user,
clientes.nombre_cliente, LN_productos.nombre_producto, LN_productos.country_code,
country.country_name, LN_productos.balance, LN_productos.dossier, LN_productos.suscribe_indicadores, Ln_productos.producto_id
from LN_cliente_productos
inner join clientes on LN_cliente_productos.cliente = clientes.cliente
inner join LN_productos on LN_cliente_productos.producto = LN_productos.producto
left outer join country on LN_productos.country_code = country.country_code
left outer join users on LN_cliente_productos.created_by = users.user_id
left outer join users AS users2 on LN_cliente_productos.modified_by = users2.user_id
where LN_cliente_productos.cliente = @p_cliente
and (LN_productos.country_code = isnull(@p_country_code,'AR') OR LN_productos.country_code IS NULL)
order by clientes.nombre_cliente,
LN_cliente_productos.orden_producto, country.country_name, LN_productos.nombre_producto
END ELSE
IF (@action = 'CONTROL_INGRESO') BEGIN
SELECT LN_cliente_productos.*
FROM LN_cliente_productos INNER JOIN LN_productos ON LN_cliente_productos.producto = LN_productos.producto
WHERE LN_cliente_productos.cliente = @p_cliente
AND LN_cliente_productos.activo = 1
AND ISNULL(LN_productos.subcontratistas,0) = 1
END ELSE
/* FILTRO POR PAIS DEL PRODUCTO */
IF (@p_country_code IS NULL) BEGIN
IF (@p_cliente IS NULL and @p_producto IS NULL) BEGIN
select LN_cliente_productos.cliente, LN_cliente_productos.producto,
LN_cliente_productos.dias_tolerancia_inicial,
LN_cliente_productos.activo, LN_cliente_productos.created_by,
LN_cliente_productos.modified_by, LN_cliente_productos.orden_producto,
LN_cliente_productos.visibilidad_default, LN_cliente_productos.ponderacion,
LN_cliente_productos.etiqueta_personalizada,
CONVERT(VARCHAR(19), LN_cliente_productos.created, 121) AS created,
CONVERT(VARCHAR(19), LN_cliente_productos.modified, 121) AS modified,
users.first_name + ' ' + users.last_name as created_by_user,
users2.first_name + ' ' + users2.last_name as modified_by_user,
clientes.nombre_cliente, LN_productos.nombre_producto, LN_productos.country_code,
country.country_name, LN_productos.balance, LN_cliente_productos.version_balance,
LN_productos.dossier, LN_productos.suscribe_indicadores, Ln_productos.producto_id
from LN_cliente_productos
inner join clientes on LN_cliente_productos.cliente = clientes.cliente
inner join LN_productos on LN_cliente_productos.producto = LN_productos.producto
left outer join country on LN_productos.country_code = country.country_code
left outer join users on LN_cliente_productos.created_by = users.user_id
left outer join users AS users2 on LN_cliente_productos.modified_by = users2.user_id
order by clientes.nombre_cliente,
LN_cliente_productos.orden_producto, country.country_name, LN_productos.nombre_producto
end else
IF (@p_cliente IS NULL and @p_producto IS NOT NULL) BEGIN
select LN_cliente_productos.cliente, LN_cliente_productos.producto,
LN_cliente_productos.dias_tolerancia_inicial,
LN_cliente_productos.activo, LN_cliente_productos.created_by,
LN_cliente_productos.modified_by, LN_cliente_productos.orden_producto,
LN_cliente_productos.visibilidad_default, LN_cliente_productos.ponderacion,
LN_cliente_productos.etiqueta_personalizada,
CONVERT(VARCHAR(19), LN_cliente_productos.created, 121) AS created,
CONVERT(VARCHAR(19), LN_cliente_productos.modified, 121) AS modified,
users.first_name + ' ' + users.last_name as created_by_user,
users2.first_name + ' ' + users2.last_name as modified_by_user,
clientes.nombre_cliente, LN_productos.nombre_producto, LN_productos.country_code,
country.country_name, LN_productos.balance, LN_cliente_productos.version_balance,
LN_productos.dossier, LN_productos.suscribe_indicadores, Ln_productos.producto_id
from LN_cliente_productos
inner join clientes on LN_cliente_productos.cliente = clientes.cliente
inner join LN_productos on LN_cliente_productos.producto = LN_productos.producto
left outer join country on LN_productos.country_code = country.country_code
left outer join users on LN_cliente_productos.created_by = users.user_id
left outer join users AS users2 on LN_cliente_productos.modified_by = users2.user_id
where LN_cliente_productos.producto = @p_producto
order by clientes.nombre_cliente,
LN_cliente_productos.orden_producto, country.country_name, LN_productos.nombre_producto
end else
/* ESTA ES LA ACCIÓN SEARCH */
if (@p_cliente IS NOT NULL and @p_producto IS NULL) BEGIN
select 'AA' as AA, LN_cliente_productos.cliente, LN_cliente_productos.producto,
LN_cliente_productos.dias_tolerancia_inicial,
LN_cliente_productos.activo, LN_cliente_productos.created_by,
LN_cliente_productos.modified_by, LN_cliente_productos.orden_producto,
LN_cliente_productos.visibilidad_default, LN_cliente_productos.ponderacion,
LN_cliente_productos.etiqueta_personalizada,
CONVERT(VARCHAR(19), LN_cliente_productos.created, 121) AS created,
CONVERT(VARCHAR(19), LN_cliente_productos.modified, 121) AS modified,
users.first_name + ' ' + users.last_name as created_by_user,
users2.first_name + ' ' + users2.last_name as modified_by_user,
clientes.nombre_cliente, LN_productos.nombre_producto, LN_productos.country_code,
country.country_name, LN_productos.balance, LN_cliente_productos.version_balance,
LN_productos.dossier, LN_productos.suscribe_indicadores, Ln_productos.producto_id
from LN_cliente_productos
inner join clientes on LN_cliente_productos.cliente = clientes.cliente
inner join LN_productos on LN_cliente_productos.producto = LN_productos.producto
left outer join country on LN_productos.country_code = country.country_code
left outer join users on LN_cliente_productos.created_by = users.user_id
left outer join users AS users2 on LN_cliente_productos.modified_by = users2.user_id
where LN_cliente_productos.cliente = @p_cliente
order by clientes.nombre_cliente,
LN_cliente_productos.orden_producto, country.country_name, LN_productos.nombre_producto
END ELSE
/* si el action es search y pretende filtrar por producto ingresa acá */
select LN_cliente_productos.cliente, LN_cliente_productos.producto,
LN_cliente_productos.dias_tolerancia_inicial,
LN_cliente_productos.activo, LN_cliente_productos.created_by,
LN_cliente_productos.modified_by, LN_cliente_productos.orden_producto,
LN_cliente_productos.visibilidad_default, LN_cliente_productos.ponderacion,
LN_cliente_productos.etiqueta_personalizada,
CONVERT(VARCHAR(19), LN_cliente_productos.created, 121) AS created,
CONVERT(VARCHAR(19), LN_cliente_productos.modified, 121) AS modified,
users.first_name + ' ' + users.last_name as created_by_user,
users2.first_name + ' ' + users2.last_name as modified_by_user,
clientes.nombre_cliente, LN_productos.nombre_producto, LN_productos.country_code,
country.country_name, LN_productos.balance, LN_cliente_productos.version_balance,
LN_productos.dossier, LN_productos.suscribe_indicadores, Ln_productos.producto_id
from LN_cliente_productos
inner join clientes on LN_cliente_productos.cliente = clientes.cliente
inner join LN_productos on LN_cliente_productos.producto = LN_productos.producto
left outer join country on LN_productos.country_code = country.country_code
left outer join users on LN_cliente_productos.created_by = users.user_id
left outer join users AS users2 on LN_cliente_productos.modified_by = users2.user_id
where LN_cliente_productos.cliente = @p_cliente
and LN_cliente_productos.producto = @p_producto
order by clientes.nombre_cliente,
LN_cliente_productos.orden_producto, country.country_name, LN_productos.nombre_producto
END ELSE BEGIN
IF (@p_cliente IS NULL and @p_producto IS NULL) BEGIN
select LN_cliente_productos.cliente, LN_cliente_productos.producto,
LN_cliente_productos.dias_tolerancia_inicial,
LN_cliente_productos.activo, LN_cliente_productos.created_by,
LN_cliente_productos.modified_by, LN_cliente_productos.orden_producto,
LN_cliente_productos.visibilidad_default, LN_cliente_productos.ponderacion,
LN_cliente_productos.etiqueta_personalizada,
CONVERT(VARCHAR(19), LN_cliente_productos.created, 121) AS created,
CONVERT(VARCHAR(19), LN_cliente_productos.modified, 121) AS modified,
users.first_name + ' ' + users.last_name as created_by_user,
users2.first_name + ' ' + users2.last_name as modified_by_user,
clientes.nombre_cliente, LN_productos.nombre_producto, LN_productos.country_code,
country.country_name, LN_productos.balance, LN_cliente_productos.version_balance,
LN_productos.dossier, LN_productos.suscribe_indicadores, LN_productos.producto_id
from LN_cliente_productos
inner join clientes on LN_cliente_productos.cliente = clientes.cliente
inner join LN_productos on LN_cliente_productos.producto = LN_productos.producto
left outer join country on LN_productos.country_code = country.country_code
left outer join users on LN_cliente_productos.created_by = users.user_id
left outer join users AS users2 on LN_cliente_productos.modified_by = users2.user_id
WHERE LN_productos.country_code = @p_country_code
order by clientes.nombre_cliente,
LN_cliente_productos.orden_producto, country.country_name, LN_productos.nombre_producto
end else
IF (@p_cliente IS NULL and @p_producto IS NOT NULL) BEGIN
select LN_cliente_productos.cliente, LN_cliente_productos.producto,
LN_cliente_productos.dias_tolerancia_inicial,
LN_cliente_productos.activo, LN_cliente_productos.created_by,
LN_cliente_productos.modified_by, LN_cliente_productos.orden_producto,
LN_cliente_productos.visibilidad_default, LN_cliente_productos.ponderacion,
LN_cliente_productos.etiqueta_personalizada,
CONVERT(VARCHAR(19), LN_cliente_productos.created, 121) AS created,
CONVERT(VARCHAR(19), LN_cliente_productos.modified, 121) AS modified,
users.first_name + ' ' + users.last_name as created_by_user,
users2.first_name + ' ' + users2.last_name as modified_by_user,
clientes.nombre_cliente, LN_productos.nombre_producto, LN_productos.country_code,
country.country_name, LN_productos.balance, LN_cliente_productos.version_balance,
LN_productos.dossier, LN_productos.suscribe_indicadores, LN_productos.producto_id
from LN_cliente_productos
inner join clientes on LN_cliente_productos.cliente = clientes.cliente
inner join LN_productos on LN_cliente_productos.producto = LN_productos.producto
left outer join country on LN_productos.country_code = country.country_code
left outer join users on LN_cliente_productos.created_by = users.user_id
left outer join users AS users2 on LN_cliente_productos.modified_by = users2.user_id
where LN_cliente_productos.producto = @p_producto
and LN_productos.country_code = @p_country_code
order by clientes.nombre_cliente,
LN_cliente_productos.orden_producto, country.country_name, LN_productos.nombre_producto
end else
if (@p_cliente IS NOT NULL and @p_producto IS NULL) BEGIN
select LN_cliente_productos.cliente, LN_cliente_productos.producto,
LN_cliente_productos.dias_tolerancia_inicial,
LN_cliente_productos.activo, LN_cliente_productos.created_by,
LN_cliente_productos.modified_by, LN_cliente_productos.orden_producto,
LN_cliente_productos.visibilidad_default, LN_cliente_productos.ponderacion,
LN_cliente_productos.etiqueta_personalizada,
CONVERT(VARCHAR(19), LN_cliente_productos.created, 121) AS created,
CONVERT(VARCHAR(19), LN_cliente_productos.modified, 121) AS modified,
users.first_name + ' ' + users.last_name as created_by_user,
users2.first_name + ' ' + users2.last_name as modified_by_user,
clientes.nombre_cliente, LN_productos.nombre_producto, LN_productos.country_code,
country.country_name, LN_productos.balance, LN_cliente_productos.version_balance,
LN_productos.dossier, LN_productos.suscribe_indicadores, LN_productos.producto_id
from LN_cliente_productos
inner join clientes on LN_cliente_productos.cliente = clientes.cliente
inner join LN_productos on LN_cliente_productos.producto = LN_productos.producto
left outer join country on LN_productos.country_code = country.country_code
left outer join users on LN_cliente_productos.created_by = users.user_id
left outer join users AS users2 on LN_cliente_productos.modified_by = users2.user_id
where LN_cliente_productos.cliente = @p_cliente
and LN_productos.country_code = @p_country_code
order by clientes.nombre_cliente,
LN_cliente_productos.orden_producto, country.country_name, LN_productos.nombre_producto
END ELSE
select LN_cliente_productos.cliente, LN_cliente_productos.producto,
LN_cliente_productos.dias_tolerancia_inicial,
LN_cliente_productos.activo, LN_cliente_productos.created_by,
LN_cliente_productos.modified_by, LN_cliente_productos.orden_producto,
LN_cliente_productos.visibilidad_default, LN_cliente_productos.ponderacion,
LN_cliente_productos.etiqueta_personalizada,
CONVERT(VARCHAR(19), LN_cliente_productos.created, 121) AS created,
CONVERT(VARCHAR(19), LN_cliente_productos.modified, 121) AS modified,
users.first_name + ' ' + users.last_name as created_by_user,
users2.first_name + ' ' + users2.last_name as modified_by_user,
clientes.nombre_cliente, LN_productos.nombre_producto, LN_productos.country_code,
country.country_name, LN_productos.balance, LN_cliente_productos.version_balance,
LN_productos.dossier, LN_productos.suscribe_indicadores, LN_productos.producto_id
from LN_cliente_productos
inner join clientes on LN_cliente_productos.cliente = clientes.cliente
inner join LN_productos on LN_cliente_productos.producto = LN_productos.producto
left outer join country on LN_productos.country_code = country.country_code
left outer join users on LN_cliente_productos.created_by = users.user_id
left outer join users AS users2 on LN_cliente_productos.modified_by = users2.user_id
where LN_cliente_productos.cliente = @p_cliente
and LN_cliente_productos.producto = @p_producto
and LN_productos.country_code = @p_country_code
order by clientes.nombre_cliente,
LN_cliente_productos.orden_producto, country.country_name, LN_productos.nombre_producto
END
END
GO
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
/*
exec LN_cliente_productos_ 'PRODUCTXSERV',601116452,null,null,null,null,422946826,null,null,47
*/
CREATE OR ALTER PROCEDURE dbo.LN_cliente_productos_
-- Add the parameters for the stored procedure here
@action varchar(30),
@p_cliente int,
@p_producto int,
@p_activo tinyint,
@p_country_code varchar(2),
@p_visibilidad_default tinyint,
@p_user_id int,
@p_dias_tolerancia_inicial int = null,
@p_etiqueta_personalizada varchar(100) = NULL,
@p_servicio_contratado int = null
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
DECLARE @ord tinyint
DECLARE @cant tinyint
DECLARE @prd int
IF (@action = 'PRODUCTXSERV')
BEGIN
/* si se pretende filtrar por servicio contratado ingresa acá */
select LN_PRODUCTOS.servicio_contratado, LN_cliente_productos.cliente, LN_cliente_productos.producto,
LN_cliente_productos.dias_tolerancia_inicial,
LN_cliente_productos.activo, LN_cliente_productos.created_by,
LN_cliente_productos.modified_by, LN_cliente_productos.orden_producto,
LN_cliente_productos.visibilidad_default, LN_cliente_productos.ponderacion,
LN_cliente_productos.etiqueta_personalizada,
CONVERT(VARCHAR(19), LN_cliente_productos.created, 121) AS created,
CONVERT(VARCHAR(19), LN_cliente_productos.modified, 121) AS modified,
users.first_name + ' ' + users.last_name as created_by_user,
users2.first_name + ' ' + users2.last_name as modified_by_user,
clientes.nombre_cliente, LN_productos.nombre_producto, LN_productos.country_code,
country.country_name, LN_productos.balance, LN_cliente_productos.version_balance,
LN_productos.dossier, LN_productos.suscribe_indicadores, Ln_productos.producto_id
from LN_cliente_productos
inner join clientes on LN_cliente_productos.cliente = clientes.cliente
inner join LN_productos on LN_cliente_productos.producto = LN_productos.producto
left outer join country on LN_productos.country_code = country.country_code
left outer join users on LN_cliente_productos.created_by = users.user_id
left outer join users AS users2 on LN_cliente_productos.modified_by = users2.user_id
where LN_cliente_productos.cliente = @p_cliente
and LN_productos.servicio_contratado IN (@p_servicio_contratado,0)
order by clientes.nombre_cliente,
LN_cliente_productos.orden_producto, country.country_name, LN_productos.nombre_producto
RETURN
END
IF (@action = 'INSERT') BEGIN
if not exists (select cliente, producto
from LN_cliente_productos
where cliente = @p_cliente
and producto = @p_producto) begin
select @ord = ISNULL(max(orden_producto),0)+1
from LN_cliente_productos
where cliente = @p_cliente
insert into LN_cliente_productos
(cliente, producto, activo, orden_producto, visibilidad_default, created_by, dias_tolerancia_inicial, etiqueta_personalizada)
values
(@p_cliente, @p_producto, @p_activo, @ord, @p_visibilidad_default, @p_user_id, @p_dias_tolerancia_inicial, @p_etiqueta_personalizada)
/* 10/03/2021:
Cuando se da de alta un producto al cliente, si no suscribe indicadores,
(si suscribe indicadores, esto se hace en la carga de la suscripción al indicador) -> SP: [LN_cliente_indicadores_]
todos los usuarios del cliente no pueden ver los indicadores, para ello se cargan en usuarios_restricciones
*/
declare @indicador int
declare @usuario int
if (select suscribe_indicadores from LN_productos where producto = @p_producto) = 0
begin
DECLARE C_ind CURSOR FOR
select indicador from LN_indicadores where producto = @p_producto
OPEN C_ind
FETCH NEXT FROM C_ind INTO @indicador
WHILE @@fetch_status = 0
BEGIN
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 = @indicador and servicio_contratado = 10)
insert into usuarios_restricciones (user_id, cliente, servicio_contratado, indicador, created, created_by)
values (@usuario, @p_cliente, '10', @indicador, getdate(), @p_user_id)
if not exists (select * from usuarios_restricciones
where user_id = @usuario and indicador = @indicador and servicio_contratado = 47)
insert into usuarios_restricciones (user_id, cliente, servicio_contratado, indicador, created, created_by)
values (@usuario, @p_cliente, '47', @indicador, getdate(), @p_user_id)
if not exists (select * from usuarios_restricciones
where user_id = @usuario and indicador = @indicador and servicio_contratado = 73)
insert into usuarios_restricciones (user_id, cliente, servicio_contratado, indicador, created, created_by)
values (@usuario, @p_cliente, '73', @indicador, getdate(), @p_user_id)
FETCH NEXT FROM C_user INTO @usuario
END
CLOSE C_user
DEALLOCATE C_user
FETCH NEXT FROM C_ind INTO @indicador
END
CLOSE C_ind
DEALLOCATE C_ind
end
/* */
end
END ELSE
IF (@action = 'UPDATE') BEGIN
UPDATE LN_cliente_productos set
visibilidad_default = @p_visibilidad_default,
dias_tolerancia_inicial = @p_dias_tolerancia_inicial,
etiqueta_personalizada = @p_etiqueta_personalizada,
activo = @p_activo,
modified = getdate(),
modified_by = @p_user_id
where cliente = @p_cliente
and producto = @p_producto
END ELSE
IF (@action = 'DELETE') BEGIN
SELECT @ord = orden_producto
from LN_cliente_productos
where cliente = @p_cliente
and producto = @p_producto
delete from LN_cliente_productos where cliente = @p_cliente AND producto = @p_producto
UPDATE LN_cliente_productos set orden_producto = orden_producto-1
where cliente = @p_cliente
and orden_producto > @ord
END ELSE
IF (@action = 'UP') BEGIN
SELECT @ord = orden_producto
from LN_cliente_productos
where cliente = @p_cliente
and producto = @p_producto
IF (@ord > 1) BEGIN
SELECT @prd = producto
from LN_cliente_productos
where cliente = @p_cliente
and orden_producto = (@ord-1)
UPDATE LN_cliente_productos SET
orden_producto = @ord - 1
where cliente = @p_cliente
and producto = @p_producto
UPDATE LN_cliente_productos SET
orden_producto = @ord
where cliente = @p_cliente
and producto = @prd
END
END ELSE
IF (@action = 'DOWN') BEGIN
SELECT @ord = orden_producto
from LN_cliente_productos
where cliente = @p_cliente
and producto = @p_producto
SELECT @cant = MAX(orden_producto)
from LN_cliente_productos
where cliente = @p_cliente
IF (@ord < @cant) BEGIN
SELECT @prd = producto
from LN_cliente_productos
where cliente = @p_cliente
and orden_producto = (@ord+1)
UPDATE LN_cliente_productos SET
orden_producto = @ord + 1
where cliente = @p_cliente
and producto = @p_producto
UPDATE LN_cliente_productos SET
orden_producto = @ord
where cliente = @p_cliente
and producto = @prd
END
END ELSE
/* Dado un cliente y un país, todos los productos asociados al cliente que estén
vinculados al páis o que no estén asociados a ningún país */
IF (@action = 'PRODUCTOS_PAIS') BEGIN
select LN_cliente_productos.cliente, LN_cliente_productos.producto,
LN_cliente_productos.dias_tolerancia_inicial,
LN_cliente_productos.activo, LN_cliente_productos.created_by,
LN_cliente_productos.modified_by, LN_cliente_productos.orden_producto,
LN_cliente_productos.visibilidad_default, LN_cliente_productos.ponderacion,
LN_cliente_productos.etiqueta_personalizada,
CONVERT(VARCHAR(19), LN_cliente_productos.created, 121) AS created,
CONVERT(VARCHAR(19), LN_cliente_productos.modified, 121) AS modified,
users.first_name + ' ' + users.last_name as created_by_user,
users2.first_name + ' ' + users2.last_name as modified_by_user,
clientes.nombre_cliente, LN_productos.nombre_producto, LN_productos.country_code,
country.country_name, LN_productos.balance, LN_productos.dossier, LN_productos.suscribe_indicadores, Ln_productos.producto_id
from LN_cliente_productos
inner join clientes on LN_cliente_productos.cliente = clientes.cliente
inner join LN_productos on LN_cliente_productos.producto = LN_productos.producto
left outer join country on LN_productos.country_code = country.country_code
left outer join users on LN_cliente_productos.created_by = users.user_id
left outer join users AS users2 on LN_cliente_productos.modified_by = users2.user_id
where LN_cliente_productos.cliente = @p_cliente
and (LN_productos.country_code = isnull(@p_country_code,'AR') OR LN_productos.country_code IS NULL)
order by clientes.nombre_cliente,
LN_cliente_productos.orden_producto, country.country_name, LN_productos.nombre_producto
END ELSE
IF (@action = 'CONTROL_INGRESO') BEGIN
SELECT LN_cliente_productos.*
FROM LN_cliente_productos INNER JOIN LN_productos ON LN_cliente_productos.producto = LN_productos.producto
WHERE LN_cliente_productos.cliente = @p_cliente
AND LN_cliente_productos.activo = 1
AND ISNULL(LN_productos.subcontratistas,0) = 1
END ELSE
/* FILTRO POR PAIS DEL PRODUCTO */
IF (@p_country_code IS NULL) BEGIN
IF (@p_cliente IS NULL and @p_producto IS NULL) BEGIN
select LN_cliente_productos.cliente, LN_cliente_productos.producto,
LN_cliente_productos.dias_tolerancia_inicial,
LN_cliente_productos.activo, LN_cliente_productos.created_by,
LN_cliente_productos.modified_by, LN_cliente_productos.orden_producto,
LN_cliente_productos.visibilidad_default, LN_cliente_productos.ponderacion,
LN_cliente_productos.etiqueta_personalizada,
CONVERT(VARCHAR(19), LN_cliente_productos.created, 121) AS created,
CONVERT(VARCHAR(19), LN_cliente_productos.modified, 121) AS modified,
users.first_name + ' ' + users.last_name as created_by_user,
users2.first_name + ' ' + users2.last_name as modified_by_user,
clientes.nombre_cliente, LN_productos.nombre_producto, LN_productos.country_code,
country.country_name, LN_productos.balance, LN_cliente_productos.version_balance,
LN_productos.dossier, LN_productos.suscribe_indicadores, Ln_productos.producto_id
from LN_cliente_productos
inner join clientes on LN_cliente_productos.cliente = clientes.cliente
inner join LN_productos on LN_cliente_productos.producto = LN_productos.producto
left outer join country on LN_productos.country_code = country.country_code
left outer join users on LN_cliente_productos.created_by = users.user_id
left outer join users AS users2 on LN_cliente_productos.modified_by = users2.user_id
order by clientes.nombre_cliente,
LN_cliente_productos.orden_producto, country.country_name, LN_productos.nombre_producto
end else
IF (@p_cliente IS NULL and @p_producto IS NOT NULL) BEGIN
select LN_cliente_productos.cliente, LN_cliente_productos.producto,
LN_cliente_productos.dias_tolerancia_inicial,
LN_cliente_productos.activo, LN_cliente_productos.created_by,
LN_cliente_productos.modified_by, LN_cliente_productos.orden_producto,
LN_cliente_productos.visibilidad_default, LN_cliente_productos.ponderacion,
LN_cliente_productos.etiqueta_personalizada,
CONVERT(VARCHAR(19), LN_cliente_productos.created, 121) AS created,
CONVERT(VARCHAR(19), LN_cliente_productos.modified, 121) AS modified,
users.first_name + ' ' + users.last_name as created_by_user,
users2.first_name + ' ' + users2.last_name as modified_by_user,
clientes.nombre_cliente, LN_productos.nombre_producto, LN_productos.country_code,
country.country_name, LN_productos.balance, LN_cliente_productos.version_balance,
LN_productos.dossier, LN_productos.suscribe_indicadores, Ln_productos.producto_id
from LN_cliente_productos
inner join clientes on LN_cliente_productos.cliente = clientes.cliente
inner join LN_productos on LN_cliente_productos.producto = LN_productos.producto
left outer join country on LN_productos.country_code = country.country_code
left outer join users on LN_cliente_productos.created_by = users.user_id
left outer join users AS users2 on LN_cliente_productos.modified_by = users2.user_id
where LN_cliente_productos.producto = @p_producto
order by clientes.nombre_cliente,
LN_cliente_productos.orden_producto, country.country_name, LN_productos.nombre_producto
end else
/* ESTA ES LA ACCIÓN SEARCH */
if (@p_cliente IS NOT NULL and @p_producto IS NULL) BEGIN
select 'AA' as AA, LN_cliente_productos.cliente, LN_cliente_productos.producto,
LN_cliente_productos.dias_tolerancia_inicial,
LN_cliente_productos.activo, LN_cliente_productos.created_by,
LN_cliente_productos.modified_by, LN_cliente_productos.orden_producto,
LN_cliente_productos.visibilidad_default, LN_cliente_productos.ponderacion,
LN_cliente_productos.etiqueta_personalizada,
CONVERT(VARCHAR(19), LN_cliente_productos.created, 121) AS created,
CONVERT(VARCHAR(19), LN_cliente_productos.modified, 121) AS modified,
users.first_name + ' ' + users.last_name as created_by_user,
users2.first_name + ' ' + users2.last_name as modified_by_user,
clientes.nombre_cliente, LN_productos.nombre_producto, LN_productos.country_code,
country.country_name, LN_productos.balance, LN_cliente_productos.version_balance,
LN_productos.dossier, LN_productos.suscribe_indicadores, Ln_productos.producto_id
from LN_cliente_productos
inner join clientes on LN_cliente_productos.cliente = clientes.cliente
inner join LN_productos on LN_cliente_productos.producto = LN_productos.producto
left outer join country on LN_productos.country_code = country.country_code
left outer join users on LN_cliente_productos.created_by = users.user_id
left outer join users AS users2 on LN_cliente_productos.modified_by = users2.user_id
where LN_cliente_productos.cliente = @p_cliente
order by clientes.nombre_cliente,
LN_cliente_productos.orden_producto, country.country_name, LN_productos.nombre_producto
END ELSE
/* si el action es search y pretende filtrar por producto ingresa acá */
select LN_cliente_productos.cliente, LN_cliente_productos.producto,
LN_cliente_productos.dias_tolerancia_inicial,
LN_cliente_productos.activo, LN_cliente_productos.created_by,
LN_cliente_productos.modified_by, LN_cliente_productos.orden_producto,
LN_cliente_productos.visibilidad_default, LN_cliente_productos.ponderacion,
LN_cliente_productos.etiqueta_personalizada,
CONVERT(VARCHAR(19), LN_cliente_productos.created, 121) AS created,
CONVERT(VARCHAR(19), LN_cliente_productos.modified, 121) AS modified,
users.first_name + ' ' + users.last_name as created_by_user,
users2.first_name + ' ' + users2.last_name as modified_by_user,
clientes.nombre_cliente, LN_productos.nombre_producto, LN_productos.country_code,
country.country_name, LN_productos.balance, LN_cliente_productos.version_balance,
LN_productos.dossier, LN_productos.suscribe_indicadores, Ln_productos.producto_id
from LN_cliente_productos
inner join clientes on LN_cliente_productos.cliente = clientes.cliente
inner join LN_productos on LN_cliente_productos.producto = LN_productos.producto
left outer join country on LN_productos.country_code = country.country_code
left outer join users on LN_cliente_productos.created_by = users.user_id
left outer join users AS users2 on LN_cliente_productos.modified_by = users2.user_id
where LN_cliente_productos.cliente = @p_cliente
and LN_cliente_productos.producto = @p_producto
order by clientes.nombre_cliente,
LN_cliente_productos.orden_producto, country.country_name, LN_productos.nombre_producto
END ELSE BEGIN
IF (@p_cliente IS NULL and @p_producto IS NULL) BEGIN
select LN_cliente_productos.cliente, LN_cliente_productos.producto,
LN_cliente_productos.dias_tolerancia_inicial,
LN_cliente_productos.activo, LN_cliente_productos.created_by,
LN_cliente_productos.modified_by, LN_cliente_productos.orden_producto,
LN_cliente_productos.visibilidad_default, LN_cliente_productos.ponderacion,
LN_cliente_productos.etiqueta_personalizada,
CONVERT(VARCHAR(19), LN_cliente_productos.created, 121) AS created,
CONVERT(VARCHAR(19), LN_cliente_productos.modified, 121) AS modified,
users.first_name + ' ' + users.last_name as created_by_user,
users2.first_name + ' ' + users2.last_name as modified_by_user,
clientes.nombre_cliente, LN_productos.nombre_producto, LN_productos.country_code,
country.country_name, LN_productos.balance, LN_cliente_productos.version_balance,
LN_productos.dossier, LN_productos.suscribe_indicadores, LN_productos.producto_id
from LN_cliente_productos
inner join clientes on LN_cliente_productos.cliente = clientes.cliente
inner join LN_productos on LN_cliente_productos.producto = LN_productos.producto
left outer join country on LN_productos.country_code = country.country_code
left outer join users on LN_cliente_productos.created_by = users.user_id
left outer join users AS users2 on LN_cliente_productos.modified_by = users2.user_id
WHERE LN_productos.country_code = @p_country_code
order by clientes.nombre_cliente,
LN_cliente_productos.orden_producto, country.country_name, LN_productos.nombre_producto
end else
IF (@p_cliente IS NULL and @p_producto IS NOT NULL) BEGIN
select LN_cliente_productos.cliente, LN_cliente_productos.producto,
LN_cliente_productos.dias_tolerancia_inicial,
LN_cliente_productos.activo, LN_cliente_productos.created_by,
LN_cliente_productos.modified_by, LN_cliente_productos.orden_producto,
LN_cliente_productos.visibilidad_default, LN_cliente_productos.ponderacion,
LN_cliente_productos.etiqueta_personalizada,
CONVERT(VARCHAR(19), LN_cliente_productos.created, 121) AS created,
CONVERT(VARCHAR(19), LN_cliente_productos.modified, 121) AS modified,
users.first_name + ' ' + users.last_name as created_by_user,
users2.first_name + ' ' + users2.last_name as modified_by_user,
clientes.nombre_cliente, LN_productos.nombre_producto, LN_productos.country_code,
country.country_name, LN_productos.balance, LN_cliente_productos.version_balance,
LN_productos.dossier, LN_productos.suscribe_indicadores, LN_productos.producto_id
from LN_cliente_productos
inner join clientes on LN_cliente_productos.cliente = clientes.cliente
inner join LN_productos on LN_cliente_productos.producto = LN_productos.producto
left outer join country on LN_productos.country_code = country.country_code
left outer join users on LN_cliente_productos.created_by = users.user_id
left outer join users AS users2 on LN_cliente_productos.modified_by = users2.user_id
where LN_cliente_productos.producto = @p_producto
and LN_productos.country_code = @p_country_code
order by clientes.nombre_cliente,
LN_cliente_productos.orden_producto, country.country_name, LN_productos.nombre_producto
end else
if (@p_cliente IS NOT NULL and @p_producto IS NULL) BEGIN
select LN_cliente_productos.cliente, LN_cliente_productos.producto,
LN_cliente_productos.dias_tolerancia_inicial,
LN_cliente_productos.activo, LN_cliente_productos.created_by,
LN_cliente_productos.modified_by, LN_cliente_productos.orden_producto,
LN_cliente_productos.visibilidad_default, LN_cliente_productos.ponderacion,
LN_cliente_productos.etiqueta_personalizada,
CONVERT(VARCHAR(19), LN_cliente_productos.created, 121) AS created,
CONVERT(VARCHAR(19), LN_cliente_productos.modified, 121) AS modified,
users.first_name + ' ' + users.last_name as created_by_user,
users2.first_name + ' ' + users2.last_name as modified_by_user,
clientes.nombre_cliente, LN_productos.nombre_producto, LN_productos.country_code,
country.country_name, LN_productos.balance, LN_cliente_productos.version_balance,
LN_productos.dossier, LN_productos.suscribe_indicadores, LN_productos.producto_id
from LN_cliente_productos
inner join clientes on LN_cliente_productos.cliente = clientes.cliente
inner join LN_productos on LN_cliente_productos.producto = LN_productos.producto
left outer join country on LN_productos.country_code = country.country_code
left outer join users on LN_cliente_productos.created_by = users.user_id
left outer join users AS users2 on LN_cliente_productos.modified_by = users2.user_id
where LN_cliente_productos.cliente = @p_cliente
and LN_productos.country_code = @p_country_code
order by clientes.nombre_cliente,
LN_cliente_productos.orden_producto, country.country_name, LN_productos.nombre_producto
END ELSE
select LN_cliente_productos.cliente, LN_cliente_productos.producto,
LN_cliente_productos.dias_tolerancia_inicial,
LN_cliente_productos.activo, LN_cliente_productos.created_by,
LN_cliente_productos.modified_by, LN_cliente_productos.orden_producto,
LN_cliente_productos.visibilidad_default, LN_cliente_productos.ponderacion,
LN_cliente_productos.etiqueta_personalizada,
CONVERT(VARCHAR(19), LN_cliente_productos.created, 121) AS created,
CONVERT(VARCHAR(19), LN_cliente_productos.modified, 121) AS modified,
users.first_name + ' ' + users.last_name as created_by_user,
users2.first_name + ' ' + users2.last_name as modified_by_user,
clientes.nombre_cliente, LN_productos.nombre_producto, LN_productos.country_code,
country.country_name, LN_productos.balance, LN_cliente_productos.version_balance,
LN_productos.dossier, LN_productos.suscribe_indicadores, LN_productos.producto_id
from LN_cliente_productos
inner join clientes on LN_cliente_productos.cliente = clientes.cliente
inner join LN_productos on LN_cliente_productos.producto = LN_productos.producto
left outer join country on LN_productos.country_code = country.country_code
left outer join users on LN_cliente_productos.created_by = users.user_id
left outer join users AS users2 on LN_cliente_productos.modified_by = users2.user_id
where LN_cliente_productos.cliente = @p_cliente
and LN_cliente_productos.producto = @p_producto
and LN_productos.country_code = @p_country_code
order by clientes.nombre_cliente,
LN_cliente_productos.orden_producto, country.country_name, LN_productos.nombre_producto
END
END
GO
Depends On
8Used By
No items found