on 2016 Aug 16 10:33 PM
Buenas tardes estimados;
De antemano agradezco la colaboración que brindan, les comento mi problema hace poco actualizamos a la versión 9.1 de Busines One, y este procedimiento de validación de almacén no me funciona al momento de ejecutar algún documento de los indicados en el procedimiento el usuario lo puede efectuar y no toma en cuenta la restrincion.
Agradece su ayuda y guia.
USE [TEST_4]
GO
/****** Object: StoredProcedure [dbo].[INF_ValidarAlmacenUsuario] Script Date: 16/8/2016 2:27:48 p. m. ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Description: <Validación de Acceso de Usuario por almacén>
-- =============================================
ALTER PROCEDURE [dbo].[INF_ValidarAlmacenUsuario]
@DocEntry nvarchar(255),@ObjType nvarchar(20),@error int output,@error_message nvarchar(200) output
AS
BEGIN
declare @sql nvarchar(255)
declare @Tabla nvarchar(4)
declare @result int
set @Tabla =(case @ObjType
when '13' then 'INV1'
when '14' then 'RIN1'
when '15' then 'DLN1'
when '16' then 'RDN1'
when '17' then 'RDR1'
when '18' then 'PCH1'
when '19' then 'RPC1'
when '20' then 'PDN1'
when '21' then 'RPD1'
when '22' then 'POR1'
when '23' then 'QUT1'
when '59' then 'IGN1'
when '67' then 'WTR1'
when '540000006' then 'PQT1'
else null end)
if not (@Tabla is null)
begin
declare @Usersign int
set @sql='set @usersign=(select T0.Usersign from O'+left(@Tabla,3)+' T0 where T0.DocEntry='+@DocEntry+')'
exec sp_executesql @sql,N'@Usersign int output',@Usersign output
declare @Acceso nvarchar(100)=isnull((select U_WhsCode
from OUSR T0 inner join [@ALMUSR] T1 on T0.USER_CODE=T1.Name
where T0.INTERNAL_K =@UserSign),'TODOS')
if @Acceso<>'TODOS'
begin
if @Tabla='WTR1'
begin
set @sql='set @result=(select top 1 1 from OWTR T0 where T0.DocEntry='+@DocEntry+' and not('''+@Acceso+''' like ''%''+T0.Filler+''%''))'
set @error_message='El usuario no tiene acceso al almacen Origen'
end
else
begin
set @sql='set @result=(select top 1 T0.VisOrder+1 from ['+@Tabla+'] T0 where T0.DocEntry='+@DocEntry+' and not('''+@Acceso+''' like ''%''+T0.WhsCode+''%''))'
set @error_message='El usuario no tiene acceso al almacen solicitado (Linea:'+convert(nvarchar,isnull(@result,''))+')'
end
exec sp_executesql @sql,N'@result int output',@result output
if isnull(@result,0)>0
set @error=9991
end
end
END
Puede que el detalle este en como estas buscando al usuario que esta haciendo la operación
con esto puedes definir la variable del usuario en tu TN
(Select top 1 UserCode from USR5 where SessionID=@@spid order by Date desc,Time desc)
Saludos
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
98 | |
8 | |
7 | |
6 | |
5 | |
5 | |
5 | |
3 | |
3 | |
3 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.