dbo.usuarios_restricciones_paises

Description

Properties

Name Value
ANSI Nulls ON

True

Quoted Identifier ON

True

Encrypted

False

Execute As
Assembly

Parameters

5
Name Data Type Length Description
@p_cliente int 4
@p_user_id int 4
@p_servicio int 4
@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] 5546348, 852844375,47,
'AR,UY', 1

select * from usuarios_restricciones where cliente = 5546348
*/

CREATE OR ALTER PROCEDURE dbo.usuarios_restricciones_paises 
 @p_cliente           int,
 @p_user_id           int,
 @p_servicio           int,
 @p_lista_usuario            varchar(max),
 @p_user_by             int 

AS

BEGIN
 SET NOCOUNT ON;
 
 declare @paises_a_restringir table (pais varchar(10))

 insert into @paises_a_restringir 
 select country_code 
   from cliente_paises 
  where cliente = @p_cliente 
    and activo = 1 
    and servicio_contratado = @p_servicio
    and not exists (select item from dbo.DelimitedSplit8K(@p_lista_usuario, ',') b 
        where b.item = cliente_paises.country_code )
 
 
 -- Si ya estaba la restriccion, graba fecha de modificacion 

 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 familia is null
    and indicador is null 
       and pais_servicio in (select pais from @paises_a_restringir)

 -- Si no estaba la restriccion la graba 

 insert into usuarios_restricciones (cliente, user_id, servicio_contratado, pais_servicio, created, created_by)
 select @p_cliente, @p_user_id, @p_servicio, pais, getdate(), @p_user_by
  from @paises_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 is null
        and ur.pais_servicio = a.pais)

 -- 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 familia is null
    and pais_servicio not in (select pais from @paises_a_restringir)
  
END

GO

Used By

No items found