cancel
Showing results for 
Search instead for 
Did you mean: 

Bloquear creacion de SN

marco_ramirez
Active Contributor
0 Kudos

Estimados

deseo bloquear que algunos usuarios hagan SN de tipo Cliente y Proveedor, no así con Lead, estos últimos sería los únicos que puedan crear.

He quitado la autorización total en tipo de socios Cliente y Proveedores, sin embargo, el usuario sigue creando SN de este tipo.

¿Hay alguna forma de bloquear esta creación de SN y que solo puede hacer Leads?

Gracias por colaboració

Accepted Solutions (1)

Accepted Solutions (1)

marco_ramirez
Active Contributor

Hola chicos

He aplicado las dos opciones que me enviaron, sin embargo, no se si estoy haciendo algo mal porque he aplicado el código en el Transaction Notification y a pesar de ello los usuarios siguen haciendo SN de tipo cliente y proveedor.

Lo que he notado es que consultar estos tipos de SN no pueden.

Debo aplicar algo adicional que estoy olvidando?

gracias

former_member188440
Active Contributor
0 Kudos

Puedes mostrarnos el codigo que estas utilizando para esto???

quizas la parte donde validas el usuario es la que esta fallando.

el tipo de dato del usuario debe ser el que aparece en la tabla ousr.

former_member188440
Active Contributor
0 Kudos

Puedes mostrarnos el codigo que estas utilizando para esto???

quizas la parte donde validas el usuario es la que esta fallando.

el tipo de dato del usuario debe ser el que aparece en la tabla ousr.

Former Member
0 Kudos

Hola....

Efectivamente, volviendo a leer el post original, veo que el requerimiento es que no se puedan crear Clientes y Proveedores. Malentendí el objetivo.....

El codigo sería...

IF (@object_type = '2') and (@transaction_type='U' or @transaction_type='A')
begin
declare @tipsn char
declare @user int
set @tipsn = (select T0.CardType from OCRD T0 where T0.CardCode = @list_of_cols_val_tab_del)
set @user = (select T0.UserSign from OCRD T0 where T0.CardCode = @list_of_cols_val_tab_del)
if (@tipsn = 'C' or @tipsn = 'S' and @user = '2')
begin
	SET @error = 1
	SET @error_message = 'Solo puede crear leads'
end
end

, donde 'C' corresponde a Cliente (Customer) y 'S' corresponde a Proveedor (Supplier)

y en lugar de @user = '2', puedes definir......@user = 'X' or @user = 'Y' or @user = 'Z'...

y X, Y y Z serían reemplazados por los usuarios que corresponda (código de usuario correspondiente a un número, el manager por ejemplo, es el '1')

Espero te sea de ayuda

Saludos Cordiales,

Former Member
0 Kudos

Hola....

Efectivamente, volviendo a leer el post original, veo que el requerimiento es que no se puedan crear Clientes y Proveedores. Malentendí el objetivo.....

El codigo sería...

IF (@object_type = '2') and (@transaction_type='U' or @transaction_type='A')
begin
declare @tipsn char
declare @user int
set @tipsn = (select T0.CardType from OCRD T0 where T0.CardCode = @list_of_cols_val_tab_del)
set @user = (select T0.UserSign from OCRD T0 where T0.CardCode = @list_of_cols_val_tab_del)
if (@tipsn = 'C' or @tipsn = 'S' and @user = '2')
begin
	SET @error = 1
	SET @error_message = 'Solo puede crear leads'
end
end

, donde 'C' corresponde a Cliente (Customer) y 'S' corresponde a Proveedor (Supplier)

y en lugar de @user = '2', puedes definir......@user = 'X' or @user = 'Y' or @user = 'Z'...

y X, Y y Z serían reemplazados por los usuarios que corresponda (código de usuario correspondiente a un número, el manager por ejemplo, es el '1')

Espero te sea de ayuda

Saludos Cordiales,

former_member188440
Active Contributor
0 Kudos

HOla acabo de probar este codigo

		if @Object_type = '2 'and @transaction_type='A'
begin
declare @usuario as nvarchar (8)
set @usuario=(select b.user_code
from ocrd a join ousr b on a.usersign=b.userid where a.cardtype in ('S','C') and a.cardcode=@list_of_cols_val_tab_del)
if (@usuario in ('sistemas'))
begin
set @error=3
set @error_message= ('El usuario "' + (select @usuario) + '" solo puede crear Leads')
end
end

funciona como requieres y el mensaje que muestra es

"El usuario sistemas solo puede crear leads"

Cambia el usuario 'sistemas' por los que quieras restringir

marco_ramirez
Active Contributor
0 Kudos

Estimado Paul

aplique el código, sin embargo, al hacer un Lead me ha dado el mensaje "Solo puede crear Leads" sin permitirme grabarlo

esperaba que me bloqueara la creación de Clientes y Proveedores, no así Leads, pero el resultado es que me bloquea los tres tipos

gracias por tu ayuda

Saludos Cordiales

former_member188440
Active Contributor
0 Kudos

Puedes mostrarnos el codigo?

Former Member
0 Kudos

Hola...

Eso si que esta extraño, pues como verás en el último código que te envié se explica cuales son las variables sobre las que se aplica la validación (Clientes o Proveedores).

Tal vez, pueda ser que tengas algun otro código dentro del SQL que esté validando aún al LEAD. Si es el caso, omite el código con comentarios /* */ , o en su defecto borralo del Transaction SQL.

Creo que con eso, no deberías tener problemas en que funcione correctamente

Saludos Cordiales,

Former Member
0 Kudos

Hola...

Eso si que esta extraño, pues como verás en el último código que te envié se explica cuales son las variables sobre las que se aplica la validación (Clientes o Proveedores).

Tal vez, pueda ser que tengas algun otro código dentro del SQL que esté validando aún al LEAD. Si es el caso, omite el código con comentarios /* */ , o en su defecto borralo del Transaction SQL.

Creo que con eso, no deberías tener problemas en que funcione correctamente

Saludos Cordiales,

former_member188440
Active Contributor
0 Kudos

En una respuesta arriba mencionas que ambos aportes funcionaron, modificaste algo en el codigo? Cual usaste?

marco_ramirez
Active Contributor
0 Kudos

el código utilizado

revisaré si hubiera algo adicional

IF (@object_type = '2') and (@transaction_type='U' or @transaction_type='A')

begin

declare @tipsn char

declare @user int

set @tipsn = (select T0.CardType from OCRD T0 where T0.CardCode = @list_of_cols_val_tab_del)

set @user = (select T0.UserSign from OCRD T0 where T0.CardCode = @list_of_cols_val_tab_del)

if (@tipsn = 'C' or @tipsn = 'S' and @user = '5' or @user = '30' or @user = '31' )

begin

SET @error = 1

SET @error_message = 'Solo puede crear leads'

end

end

former_member188440
Active Contributor
0 Kudos

Modifica tus condiciones a esto a ver que tal


IF (@object_type = '2') and (@transaction_type='U' or @transaction_type='A')
begin
declare @tipsn char
declare @user int
set @tipsn = (select T0.CardType from OCRD T0 where T0.CardCode = @list_of_cols_val_tab_del)
set @user = (select T0.UserSign from OCRD T0 where T0.CardCode = @list_of_cols_val_tab_del)
if @tipsn in( 'C' , 'S') and @user in ( '5','30','31' )
begin
SET @error = 1
SET @error_message = 'Solo puede crear leads'
end
end

former_member188440
Active Contributor
0 Kudos

Modifica tus condiciones a esto a ver que tal


IF (@object_type = '2') and (@transaction_type='U' or @transaction_type='A')
begin
declare @tipsn char
declare @user int
set @tipsn = (select T0.CardType from OCRD T0 where T0.CardCode = @list_of_cols_val_tab_del)
set @user = (select T0.UserSign from OCRD T0 where T0.CardCode = @list_of_cols_val_tab_del)
if @tipsn in( 'C' , 'S') and @user in ( '5','30','31' )
begin
SET @error = 1
SET @error_message = 'Solo puede crear leads'
end
end

Former Member
0 Kudos

YO ESTOY UTILIZANDO EL CODIGO QUE POSTEASTE, PERO MODIFICADO DE LA SIG. MANERA:

IF (@object_type = '2') and (@transaction_type='U' or @transaction_type='A')

begin

declare @user int

set @user = (select T0.UserSign from OCRD T0 where T0.CardCode = @list_of_cols_val_tab_del)

if @user in ( '1' )

begin

SET @error = 1

SET @error_message = 'USUARIO NO TIENE PERMISO DE REALIZAR ESTA ACCION'

end

end

PERO NO ME FUNCIONA, LO QUE NECESITO ES QUE ME DE EL NO. DE USUARIO QUE ESTA HACIENDO LA ACTUALIZACION O CREACION DE UN NUEVO SOCIO DE NEGOCIOS, Y LO QUE GUARDA EN @user

Former Member
0 Kudos

YO ESTOY UTILIZANDO EL CODIGO QUE POSTEASTE PARA IMPEDIR QUE MODIFIQUEN LOS DATOS DE SOCIOS DE NEGOCIOS LOS USUARIOS QUE SE ENCUENTREN EN EL IF DE @USER, TU SCRIPT LO MODIFIQUE DE LA SIG. MANERA:

IF (@object_type = '2') and (@transaction_type='U')

begin

declare @user int

-- LA SIG. LINEA ME GUARDA EN @user EL USERSIGN QUE YA TIENE EL SN A MODIFICAR

set @user = (select T0.UserSign from OCRD T0 where T0.CardCode = @list_of_cols_val_tab_del)

-- EL ERROR ESTA EN EL SIG. IF, YA QUE COMPARA EL USERSIGN QUE TIENE EL SN CON LOS QUE SE ENCUENTRAN DENTRO DEL PARENTESIS, POR DECIR SI EL SN CON CARDCODE=20 TIENE YA ASIGNADO EL USERSIGN='7', ESE ES EL VALOR QUE SE GUARDA EN @USER, CUANDO DEBERIA GUARDAR EL USUARIO QUE ESTA INTENTANDO CREAR ESTA MODIFICACION.

if @user in ( '1' )

begin

SET @error = 1

SET @error_message = 'USUARIO NO TIENE PERMISO DE REALIZAR ESTA ACCION'

end

end

PERO NO ME FUNCIONA, LO QUE NECESITO ES QUE ME DE EL NO. DE USUARIO QUE ESTA HACIENDO LA ACTUALIZACION O CREACION DE UN NUEVO SOCIO DE NEGOCIOS, Y LO QUE GUARDA EN @user ES EL usersign QUE SE ENCUENTRA ACTUALMENTE EN EL SOCIO DE NEGOCIOS DONDE QUEREMOS MODIFICAR.

Answers (4)

Answers (4)

angeles804
Active Contributor
0 Kudos

que no con las autorizaciones pueden dejar autorizacion total para cliente y proveedor sin autorización para que lead solo quede acceso.

dentro de la gesion en las autorizaciones. no veo por que complicarse con un TN si tienes las autorizaciones, a lo mejor entendí algo mal a tu post.

marco_ramirez
Active Contributor
0 Kudos

Resulta que aplique las autorizaciones pero no me resultaron efectivas

por ello la consulta.

a menos que deba hacer una combinación de autorizaciones.

en ese sentido, cómo se haría?

saludos

angeles804
Active Contributor
0 Kudos

Que raro por que yo tengo asi. vas a autorizaciones en gestion en socios de negocios y bloqueas el tipo, al menos asi lo tengo yo y me ha funciona perfecto, pero yo tengo la version 2007 A PL 42 . a lo mejor será eso?.

marco_ramirez
Active Contributor
0 Kudos

Efectivamente ha funcionado, tanto el código, (en ambiente de pruebas) como las autorizaciones.

en el caso de las autorizaciones realicé una combinación con tipos de SN y creaciión de SN Deudor/Acreedor lo cual funciona bien.

gracias a todos por sus aporte

Saludos

Marco

marco_ramirez
Active Contributor
0 Kudos

Gracias a ambos, Paul y Mauricio

efectivamente han funcionado sus aportes.

Estaba dejando el tipo de dato del usuario a un lado y ese era el error.

Saludos cordiales

Former Member
0 Kudos

Hola...

Podrías hacerlo a través de una validación por Transaction Notification en SQL.

Sería más o menos así..

IF (@object_type = '2') and (@transaction_type='U' or @transaction_type='A')
begin
declare @tipsn char
declare @user int
set @tipsn = (select T0.CardType from OCRD T0 where T0.CardCode = @list_of_cols_val_tab_del)
set @user = (select T0.UserSign from OCRD T0 where T0.CardCode = @list_of_cols_val_tab_del)
if @tipsn <> 'L' and @user = '2'
begin
	SET @error = 1
	SET @error_message = 'Solo puede crear leads'
end
end

Obviamente, puedes modificar respecto de los usuarios sobre los que deseas que se aplique la validación..

Saludos Cordiales,

former_member188440
Active Contributor
0 Kudos

Podrias ingresar este codigo en tu transactionNotification

if @Object_type = '2 'and @transaction_type='A'

begin

declare @usuario as nvarchar (8)

set @usuario=(select b.user_code

from ocrd a join ousr b on a.usersign=b.userid where a.cardtype in ('S','C') and a.cardcode=@list_of_cols_val_tab_del)

if (@usuario in ('usuariodeSAP'))

begin

set @error=3

set @error_message= ('El usuario "' + (select @usuario) + '" solo puede crear Leads')

end

end

Espero te sirva

Saludos