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_pais | varchar | 2 | |
| @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 paises 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_paises_familias] 5546348, 852844375,47,
'UY', '25,26,28,29,30,32,33,44,45,46,47,50,51,52,53,120,189,195,207',1
exec usuarios_restricciones_paises_familias_agb 2254875,15342812,47,'BR','1,20,21,22,24,346,526,0',15342812
select * from usuarios_restricciones where cliente = 2254875 and user_id = 15342812
*/
CREATE OR ALTER PROCEDURE dbo.usuarios_restricciones_paises_familias_AGB
@p_cliente int,
@p_user_id int,
@p_servicio int,
@p_pais varchar(2),
@p_lista_usuario varchar(max),
@p_user_by int
AS
BEGIN
SET NOCOUNT ON;
declare @familias_a_restringir table (familia varchar(10))
DECLARE @CANTRESTRINGIDAS INT = 0
insert into @familias_a_restringir
select familia
from LN_familias
where cliente = @p_cliente
and visible = 1
and subfamilia = 0
and servicio_contratado = @p_servicio
and not exists (select item from dbo.DelimitedSplit8K(@p_lista_usuario, ',') b
where b.item = LN_familias.familia )
SELECT @CANTRESTRINGIDAS = COUNT(*) FROM @familias_a_restringir
if (@CANTRESTRINGIDAS > 0)
begin
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 indicador is null
and isnull(pais_servicio,'AR') = isnull(@p_pais,'AR')
and familia in (select familia from @familias_a_restringir)
-- Si no estaba la restriccion la graba
insert into usuarios_restricciones (cliente, user_id, servicio_contratado, pais_servicio, familia, created, created_by)
select @p_cliente, @p_user_id, @p_servicio, @p_pais, familia, getdate(), @p_user_by
from @familias_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.indicador is null
and ur.familia = a.familia
and isnull(ur.pais_servicio,'AR') = isnull(@p_pais,'AR'))
end
-- Borra los registros de paises 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 indicador is null
and isnull(pais_servicio,'AR') = isnull(@p_pais,'AR')
and familia not in (select familia from @familias_a_restringir)
END
GO
GO
-- =============================================
-- Author: Marita Soria
-- Create date: 16/06/2020
-- Description: Graba restricciones de paises 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_paises_familias] 5546348, 852844375,47,
'UY', '25,26,28,29,30,32,33,44,45,46,47,50,51,52,53,120,189,195,207',1
exec usuarios_restricciones_paises_familias_agb 2254875,15342812,47,'BR','1,20,21,22,24,346,526,0',15342812
select * from usuarios_restricciones where cliente = 2254875 and user_id = 15342812
*/
CREATE OR ALTER PROCEDURE dbo.usuarios_restricciones_paises_familias_AGB
@p_cliente int,
@p_user_id int,
@p_servicio int,
@p_pais varchar(2),
@p_lista_usuario varchar(max),
@p_user_by int
AS
BEGIN
SET NOCOUNT ON;
declare @familias_a_restringir table (familia varchar(10))
DECLARE @CANTRESTRINGIDAS INT = 0
insert into @familias_a_restringir
select familia
from LN_familias
where cliente = @p_cliente
and visible = 1
and subfamilia = 0
and servicio_contratado = @p_servicio
and not exists (select item from dbo.DelimitedSplit8K(@p_lista_usuario, ',') b
where b.item = LN_familias.familia )
SELECT @CANTRESTRINGIDAS = COUNT(*) FROM @familias_a_restringir
if (@CANTRESTRINGIDAS > 0)
begin
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 indicador is null
and isnull(pais_servicio,'AR') = isnull(@p_pais,'AR')
and familia in (select familia from @familias_a_restringir)
-- Si no estaba la restriccion la graba
insert into usuarios_restricciones (cliente, user_id, servicio_contratado, pais_servicio, familia, created, created_by)
select @p_cliente, @p_user_id, @p_servicio, @p_pais, familia, getdate(), @p_user_by
from @familias_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.indicador is null
and ur.familia = a.familia
and isnull(ur.pais_servicio,'AR') = isnull(@p_pais,'AR'))
end
-- Borra los registros de paises 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 indicador is null
and isnull(pais_servicio,'AR') = isnull(@p_pais,'AR')
and familia not in (select familia from @familias_a_restringir)
END
GO
Used By
No items found