cancel
Showing results for 
Search instead for 
Did you mean: 

bloquear la actualizacion de datos solo para algunos usuarios

Former Member
0 Kudos

En el siguiente post se habla del "TRANSACTION NOTIFICATION" para que no se modifiquen algunos campos del socio de negocios:

quisiera saber como hacer para darle acceso solo a las personas que crean los socios de negocios?

saludos

Accepted Solutions (0)

Answers (4)

Answers (4)

Former Member
0 Kudos

bueno en este caso restringiria todo....te cuento lo que pasa es que a veces se le da autorizacion a algunos usuarios para actualizar datos como el nombre, direccion, telefono,etc, pero lo que realmente necesito es que no modifiquen el limite de credito y limite comprometido.

El sistema trae el log de mensajes de modificacion que no logro entender muy bien como funciona, en que momento queda registrado estas modificaciones?, porque se han encontrado casos donde usuarios no autorizados aparecen actualizando limites de creditos sin tener en autorizaciones permiso sino solo lectura

solo las personas del dpto de contabilidad tienen permisos para crear y actualizar

los vendedores solo lectura y a estos son los que a veces se les activa el permiso para actualizar datos adicionales

Former Member
0 Kudos

Hola, Johanna, si lograste hacer funcionar esta validacion?, yo aun no he podido hacerla por usuarios

former_member203638
Active Contributor
0 Kudos

Hola Luis, ve si te sirve así: , si no, que necesitas?.

Saludos.

Alessandro.

Former Member
0 Kudos

mira pues inserte el codigo en los transaction y me marcaba un erior cerca de la palabra if, cerre los parentesis pero me siguq marcando un error, lo raro es que me marca el error en otro transaction que si funciona.

Mens 147, Nivel 15, Estado 1, Procedimiento SBO_SP_TransactionNotification, Línea 392

No puede aparecer un agregado en la cláusula WHERE si no es en una subconsulta contenida en una cláusula HAVING o en una lista de selección, y siempre que la columna agregada sea una referencia externa.

former_member188440
Active Contributor
0 Kudos

Puedes poner el codigo como tu lo estas insertando ?

Former Member
0 Kudos

este es el codigo

IF @object_type in ( 2) and @transaction_type in ('U') 
BEGIN
 declare @user as int
 set @user = (select usersign from acrd where cardcode=@list_of_cols_val_tab_del and loginstanc in (select max (loginstanc-1 )))
if 
(select cardname from ocrd where cardcode=@list_of_cols_val_tab_del )!=(select top 1 cardname from acrd where cardcode=@list_of_cols_val_tab_del and loginstanc in (select max (loginstanc-1 ) from acrd where  cardcode=@list_of_cols_val_tab_del))  AND @user in (20,21,22)
 
 
begin
set @error = 1
set @error_message = 'Acceso denegado para cambio de Razon Social'
end
 
END

former_member188440
Active Contributor
0 Kudos

Si, sorry me falto un top 1

intenta asi


IF @object_type in ( 2) and @transaction_type in ('U') 
BEGIN
 declare @user as int
 set @user = (select top 1 (usersign) from acrd where cardcode=@list_of_cols_val_tab_del and loginstanc in (select max (loginstanc-1 )))
if 
(select cardname from ocrd where cardcode=@list_of_cols_val_tab_del )!=(select top 1 cardname from acrd where cardcode=@list_of_cols_val_tab_del and loginstanc in (select max (loginstanc-1 ) from acrd where  cardcode=@list_of_cols_val_tab_del))  AND @user in (20,21,22)
 
 
begin
set @error = 1
set @error_message = 'Acceso denegado para cambio de Razon Social'
end
 
END

Former Member
0 Kudos

me sale el mismo error =(

former_member188440
Active Contributor
0 Kudos

Lo pusiste mal , te comiste un FROM ACRD

debe ir asi


IF @object_type in ( 2) and @transaction_type in ('U') 
BEGIN
 declare @user as int
 set @user = (select top 1 (usersign) from acrd where cardcode=@list_of_cols_val_tab_del
  and loginstanc in (select max (loginstanc-1 )From ACRD where CardCode =@list_of_cols_val_tab_del))
if 
(select cardname from ocrd where cardcode=@list_of_cols_val_tab_del )!=(select top 1 cardname from acrd where cardcode=@list_of_cols_val_tab_del and loginstanc in (select max (loginstanc-1 ) 
from acrd where  cardcode=@list_of_cols_val_tab_del))  --esta linea te faltaba
AND @user in (20,21,22)
 
 
begin
set @error = 1
set @error_message = 'Acceso denegado para cambio de Razon Social'
end
 
END

Former Member
0 Kudos

Ya hice la prueba con el codigo que me diste y ya no sale error pero no esta bloqueando deja modificarlo por cualquier usuario

former_member188440
Active Contributor
0 Kudos

a ver asi


IF @object_type in ( 2) and @transaction_type in ('U') 
BEGIN
 declare @user as int
 set @user = (select usersign from ocrd where cardcode=@list_of_cols_val_tab_del)

if 
(select cardname from ocrd where cardcode=@list_of_cols_val_tab_del )!=(select top 1 cardname from acrd where cardcode=@list_of_cols_val_tab_del and loginstanc in (select max (loginstanc-1 ) 
from acrd where  cardcode=@list_of_cols_val_tab_del))  --esta linea te faltaba
AND @user in (20,21,22)
 
 
begin
set @error = 1
set @error_message = 'Acceso denegado para cambio de Razon Social'
end
 
END
 

Former Member
0 Kudos

nada no me ha servido mmmmmm no me esta bloqueando

former_member188440
Active Contributor
0 Kudos

A ver, necesitas bloquear la modificacion del campo CardName ???

Porque este codigo hace eso,

Que es exactamente lo que requieres?

Former Member
0 Kudos

Si eso exactamente es lo que necesito que solamente las personas que tienen autorizacion de crear clientes puedan modificarlos, ningun usuario mas; pero como te decia al hacer pruebas deja que cualquier usuario haga modificaciones sobre el socio de negocios, para este caso ps solamente se esta validando el cardname pero como te digo no me hace el bloqueo....no te pongas bravo jajaja =(

former_member188440
Active Contributor
0 Kudos

jaja no para nada

entonces creo que con poner esto te sirve



if @object_type in ('13') and @transaction_type in ('A')
BEGIN

if (select usersign from ocrd where cardcode=@list_of_cols_val_tab_del) in (20,21,22)

begin

set @error=1
set @error_message='no puede modificar socio de negocios'
end 
END

Former Member
0 Kudos

en el post mencionas este transaction

IF @object_type in ( 2) and @transaction_type in ('U') 
BEGIN
 
 
 
if 
(select cardname from ocrd where cardcode=@list_of_cols_val_tab_del )!=(select top 1 cardname from acrd where cardcode=@list_of_cols_val_tab_del and loginstanc in (select max (loginstanc-1 ) from acrd where  cardcode=@list_of_cols_val_tab_del))
 
 
begin
set @error = 1
set @error_message = 'Acceso denegado para cambio de Razon Social'
end
 
END

pero tengo poco conocimiento en transaction...me dices que adicione and usersign in (1,3,4) pero no se donde insertarlo

lo adiono dentro de los select pero me deja crear sean o no sean los usuarios

former_member188440
Active Contributor
0 Kudos

Tendria que ir asi (le falta la parte que te comento)



IF @object_type in ( 2) and @transaction_type in ('U') 
BEGIN
 declare @user as int
 
 set @user = (select usersign from acrd where cardcode=@list_of_cols_val_tab_del and loginstanc in (select max (loginstanc-1 )
if 
(select cardname from ocrd where cardcode=@list_of_cols_val_tab_del )!=(select top 1 cardname from acrd where cardcode=@list_of_cols_val_tab_del and loginstanc in (select max (loginstanc-1 ) from acrd where  cardcode=@list_of_cols_val_tab_del))  AND @user in (1,3,5)
 
 
begin
set @error = 1
set @error_message = 'Acceso denegado para cambio de Razon Social'
end
 
END

Esto es para cambio de razon social (cardname)

former_member188440
Active Contributor
0 Kudos

En ese post viene como incluir el usuario en particular



.... and usersign in (1,3,4) -- suponiendo que esos son los usuarios que quieres bloquear

este numero lo sacas de la tabla ousr