cancel
Showing results for 
Search instead for 
Did you mean: 

Cómo hacer un reporte exclusivo para un usuario

marco_ramirez
Active Contributor
0 Kudos

Estimados

Se me ha requerido una Query que me muestre los resultados de las facturas por vendedor menos las notas de crédito lo cual he logrado sin problema, sin embargo, desea que la consulta la pueda ver solo el interesado, es decir, ya que el reporte está filtrado por vendedor que este pueda ver los datos de sus facturas y no las de otros vendedores.

Dejo lo que actualmente tengo para que me ayuden a colocar lo que falta para lograr esa exclusividad.

Agradezco su ayuda

Saludos

SELECT Distinct

T0.[SlpName][Vendedor],

T1.[DocNum][Factura],

T1.[DocDate][Fecha Factura],

T1.[DocTotal][Total Factura],

T3.[DocNum][Nota Crédto],

T3.[DocDate][Fecha NC],

T3.[DocTotal] [Total NC],

Case

when (T1.[DocTotal]-T3.[DocTotal]) Is Null

Then (T1.[DocTotal]) else (T1.[DocTotal]-T3.[DocTotal])

End [Total],

Case

when (T1.[DocTotal]-T3.[DocTotal]) Is Null

Then (T1.[DocTotal]/1.12) else (T1.[DocTotal]-T3.[DocTotal])

End [Total sin IVA]

   

FROM OSLP T0 

INNER JOIN OINV T1 ON T0.SlpCode = T1.SlpCode

LEFT JOIN RIN1 T2 ON T2.BaseEntry = T1.DocEntry

LEFT JOIN ORIN T3 ON T2.DocEntry = T3.DocEntry

WHERE T1.[DocDate] between [%0] and  [%1] and T0.[SlpName] = [%2]

Accepted Solutions (0)

Answers (2)

Answers (2)

felipe_loyolarodriguez
Active Contributor
0 Kudos

Bueno, creo que después de tanto bucear en google, en el foro y en otro sitios he dado con algo interesante.

Lo primero que deben hacer es crear un campo de usuario en la tabla de usuarios (OUSR)

Lo segundo es asignar el nombre de la maquina en ese campo de usuario

Luego ejecuten este query, cambien los datos de la BD por las de ustedes.

SELECT

          hostname AS 'Maquina Cliente',

          INTERNAL_K AS 'Usuario B1',

          U_Name AS 'Nombre usuario B1',

          nt_domain AS Dominio,

          nt_username AS 'Windows',

          loginame AS 'BD user',

          login_time AS 'Tiempo de log',

          last_batch as 'Ultima operacion'

FROM master.dbo.sysprocesses

LEFT OUTER JOIN [TU_BASE].[dbo].[OUSR] ON hostname COLLATE SQL_Latin1_General_CP850_CI_AS  = U_maquina COLLATE SQL_Latin1_General_CP850_CI_AS

WHERE spid >=0 and spid <= 32767  and program_name = 'SAP Business One' and db_name(dbid)='TU_BASE'

Y les debe mostrar el usuario que saldría del resultado de $[USER]

Todo gracias al Mentor de SAP Yatsea Li que dejo este método.

Obs: Esto solo funciona si el usuario esta conectado en la maquina que esta definida en su ficha de usuario.

Atte.

Felipe

marco_ramirez
Active Contributor
0 Kudos

Gracias a todos por los aportes.

En cuanto a lo aportado por Felipe estaré haciendo las pruebas y luego comento.

Saludos

felipe_loyolarodriguez
Active Contributor
0 Kudos

Debes crear una categoria en el query manager, asignarle un grupo y en las autorizaciones solo dejar con autorizacion total al usuario deseado.

Prints:

ScreenShot024.jpg

Saludos

Message was edited by: Felipe Loyola Rodriguez

marco_ramirez
Active Contributor
0 Kudos

Lo cuál me lleva a crear una categoría por cada vendedor que tiene la empresa, sin embargo, en el where la condición es que seleccione el nombre del vendedor de T0.[SlpName] = [%2] y esto lo que hace es que desplega la lista de todos los vendedores que existen, de donde se puede seleccionar cualquiera.

Lo que tu me propones creo que no haría el cambio

Qué piensas?

Former Member
0 Kudos

como dice Felipe creas una categoría para cada uno y solo la podrán ver ellos mismos. En la consulta quita el where y deja cada consulta con el slpname = nombre o mejor por el código slpcode=codigo.

Además así podrías definirle un formato al informe y generar una alerta para que le llegue por email al interesado en la fecha o en la frecuencia de repetición que le establezcas.

Former Member
0 Kudos

Hola Felipe, hola a todos, lo que yo entiendo es que Marco quiere que el reporte se rija según el usuario logueado, es decir que si "pedro" entra en cualquier maquina entonces el query arroje solo resultados de "pedro", lo cual esta muy interesante, almacenar en una variable el user pero el problema es de donde sacas el user logueado.

Saludos !

former_member188440
Active Contributor
0 Kudos

Quizas si utilizas la variable $[$user] ?

habria que probar si al momento de ejecutar el query manager, te lee esa variable que contiene el usuario logeado

felipe_loyolarodriguez
Active Contributor
0 Kudos

Ya he hecho esa prueba y no funciona

Atte.

Former Member
0 Kudos

es cierto, lo de $[$user] solo funciona en una BF colgada a un Campo y ejecutada desde ahi mismo, alguna idea ???