dbo.usuarios_restricciones_paises_familias

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,'AR','1,20,21,22,24,346,526,0',15342812

select * from usuarios_restricciones where cliente = 2254875 and user_id = 15342812

usuarios_restricciones_paises_familias', array($cli, $user_id, $servicio_actual, $pais, $lista_familias, $usuario
'7500717','623380638','47','CO','648,650,679','94437923'

select * from usuarios_restricciones where user_id = 623380638

declare @p_lista_usuario varchar(max)
set @p_lista_usuario  = '648,650,679'
select item from dbo.DelimitedSplit8K(@p_lista_usuario, ',')

select familia 
from LN_familias
 where cliente = 7500717 
   and visible = 1 
   and subfamilia = 0 
   and servicio_contratado = 47
   and not exists (select item from dbo.DelimitedSplit8K(@p_lista_usuario, ',') b 
  where b.item = LN_familias.familia )

*/

CREATE OR ALTER PROCEDURE dbo.usuarios_restricciones_paises_familias 
 @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)
    and familia is not null 

END

GO

Used By

No items found