Hola, necesitas definir una variable con el ID del usuario que requieres que modifique el documento, después de eso le colocas la condición para que si el ID es diferente no le permita crearlo.
Declare @usuario int
IF @transaction_type = 'U' and @object_type = '17' and @usuario <> '1' --"El user id del usuario que si podrá actualizar OV"
-- Puedes saber cual es su ID con una consulta
-- SELECT T0.USERID,T0.U_NAME FROM OUSR T0
set @usuario = '1'
SET @error = 900001
SET @error_message = 'No puede actualizar un Pedido ya creado'
END
lo probé tal cual y pasan las actualizaciones por el usuario 1
Declare @usuario int
IF @transaction_type = ‘U’ and @object_type = ‘17’ and @usuario <> ‘1’ --“El user id del usuario que si podrá actualizar OV”
– Puedes saber cual es su ID con una consulta
– SELECT T0.USERID,T0.U_NAME FROM OUSR T0
set @usuario = ‘1’
SET @error = 900001
SET @error_message = ‘No puede actualizar un Pedido ya creado’
END
Como no entendí, te funciono la consulta o está dejando pasar a todos los usuarios ??, en teoría solo debería dejar actualizar al que es el ID que ahi le indicas.
Deja pasar a todos los usuarios , yo utilizo el 1 que es el manager en la consulta coloque el 2 para que me arrojara el bloqueo a mi pero deja actualizar
IF @object_type = '13' AND @transaction_type IN ('A')
BEGIN
--Aqui lees el usuario que esta trabajando.
SET @User= (Select top 1 UserCode from USR5 where SessionID=@@spid order by Date desc,Time desc)
--Dependiendo tus necesidades, cambias la logica
IF @User not in( 'JULIAN','JCHAVEZ')
BEGIN
<<TU CODIGO CON LO QUE DESEAS HACER>>>
IF <<validacion para cuando bloquee>>
BEGIN
SET @error = 3
SET @error_message = 'JC1- USUARIO BLOQUEADO'
END
END
END
En la consulta anterior no preguntamos quien es el usuario que actualiza, por eso no se hacia la validación, de esta manera funcionará:
Declare @usuario int
If @transaction_type = 'U' and @object_type = '17'
Select @usuario = T0.UserSign2
from ORDR T0
where T0.DocEntry = @list_of_cols_val_tab_del
if ( @usuario <>'1')
Begin
Set @error = 900001
Set @error_message = 'No puede actualizar un Pedido ya creado'
end
La lógica es, si se realiza una actualización U al documento de orden de venta 17, selecciona el usuario que actualiza UserSign2 del documento que está en memoria DocEntry = @list_of_cols_val_tab_del , si el usuario no es manager <> muestra el error.