Tn para que solo ciertos usuarios puedan crear sn

Buenos dias amigos

Tengo un inconveniente al crear un TN que me arroje un error al intentar crear un Socio de negocios, para que solo ciertos usuarios lo puedan hacer

IF :object_type='2' AND (:transaction_type='A') THEN --Objeto Socio de Negocio --Creación
		
SELECT COUNT (T1."U_NAME") INTO cntL FROM OCRD T0 INNER JOIN OUSR T1 ON T0."UserSign" = T1."USERID"
WHERE T0."CardType" = 'S' AND T0."UserSign" = '51' OR T0."UserSign" = '24' OR T0."UserSign" = '151' OR T0."UserSign" = '204' 
OR T0."UserSign" = '150' OR T0."UserSign" = '50'
AND T0."CardCode" = :list_of_cols_val_tab_del;
			
	 IF :cntL <= 0 THEN
	            error := -111;
	            error_message := 'No tiene permiso para Crear Socio Negocios AC - PR.';
	 END IF;

	END IF;

Asi tengo mi codigo y aun no logro que funcione, la idea es que solo puedan crear socios de negocios los que estan en el codigo que serian los UserSign 51,24,151,204,150,50

Agradezco su ayuda

Como estás @Nelson183
Esto lo puedes restringir a través de autorizaciones, ve a la opción Autorizaciones generales.

  • Gestión - Inicialización del sistema - Autorizaciones - Autorizaciones generales

Buscas el nombre de las cuentas de usuario que no deben tener autorización y en socios de negocio cambias la autorización para que no lo puedan hacer.

Hola @camilog ya lo intente pero no fue posible porque solo necesitamos restringir la creación de Socios de proveedores no la de clientes, por eso recurrí al TN, agradecería si me puedes ayudar a solucionar el TN o como lo prodria gestionar por eso en el codigo selecciono el CardType = S para que no me deje en proveedores

1 me gusta

Hola @Nelson183
Mira en autorizaciones generales, en tipo socio de negocio le quitas la autorización a los proveedores.

1 me gusta

Hola @camilog
Pero entonces si necesitan actualizar un dato del Proveedor ya creado los va a dejar?
Creeria que es mejor por el TN, No me puedes ayudar por ese lado mas bien?

1 me gusta

Hola @Nelson183

Intenta ahora este código y me cuentas

IF :object_type='2' AND (:transaction_type='A') THEN --Objeto Socio de Negocio --Creación
		
SELECT COUNT (T0."CardCode") INTO cntL 
FROM OCRD T0 INNER JOIN OUSR T1 ON T0."UserSign" = T1."USERID"
WHERE T0."CardType" = 'S' AND T0."UserSign" IN  ('51','24','151','204','150','50')
AND T0."CardCode" = :list_of_cols_val_tab_del;
			
	 IF :cntL <= 0 THEN
	            error := -111;
	            error_message := 'No tiene permiso para Crear Socio Negocios AC - PR.';
	 END IF;

	END IF;
1 me gusta

Hola @camilog
Aun me deja crear Socios en una de las cuentas que no estan en el codigo

1 me gusta

@Nelson183 Intenta esto

IF :object_type='2' AND (:transaction_type='A') THEN --Objeto Socio de Negocio --Creación
		
SELECT COUNT (T0."CardCode") INTO cntL 
FROM OCRD T0 INNER JOIN OUSR T1 ON T0."UserSign" = T1."USERID"
WHERE T0."CardType" = 'S' AND T0."UserSign" NOT IN  ('51','24','151','204','150','50')
AND T0."CardCode" = :list_of_cols_val_tab_del;
			
	 IF :cntL <= 0 THEN
	            error := -111;
	            error_message := 'No tiene permiso para Crear Socio Negocios AC - PR.';
	 END IF;

	END IF;
1 me gusta

Hola @camilog ya lo probe y tampoco da, cambie la sentencia if de < por > pero sigue sin funcionar

1 me gusta

Hola @Nelson183 con esto te debe funcionar, la condición (IF :cntL <= 0 THEN) estaba mal.

IF :object_type='2' AND (:transaction_type='A') THEN --Objeto Socio de Negocio --Creación
		
SELECT COUNT (*) INTO cntL 
FROM OCRD T0 INNER JOIN OUSR T1 ON T0."UserSign" = T1."USERID"
WHERE T0."CardType" = 'S' AND T0."UserSign" NOT IN  ('51','24','151','204','150','50')
AND T0."CardCode" = :list_of_cols_val_tab_del;
			
	 IF :cntL > 0 THEN
	            error := -111;
	            error_message := 'No tiene permiso para Crear Socio Negocios AC - PR.';
	 END IF;

	END IF;
1 me gusta

Hola @camilog acabo de validar el código y no me funciona, aun me deja crear socios de negocios proveedores con cualquier usuario, agradecería tu ayuda para ver como lo podemos hacer

Como estás @Nelson183 envío el código actualizado, en mi ambiente SAP Business one for Hana funciona.

La tabla OUSR no la necesita ya que esta tomando todos los valores de OCRD, la pruebas y me cuentas.

cntL := 0;
IF :object_type='2' AND (:transaction_type='A') THEN --Objeto Socio de Negocio --Creación
		
SELECT COUNT (*) INTO cntL 
FROM OCRD T0 
WHERE T0."CardType" = 'S' AND T0."UserSign" NOT IN  ('51','24','151','204','150','50')
AND T0."CardCode" = :list_of_cols_val_tab_del;
			
	 IF :cntL > 0 THEN
	            error := -111;
	            error_message := 'No tiene permiso para Crear Socio Negocios AC - PR.';
	 END IF;

	END IF;
1 me gusta

Hola Nelson,

Has verificado si tienes está opción inactivada? Ya que esto permite que ninguna validación se ejecute.

1 me gusta

@Nelson183 Prueba con este, a ver si te funciona

IF @object_type = '2' AND @transaction_type = 'A'


	DECLARE @USIGN AS INT
	SET @USIGN = (SELECT T0.UserSign FROM OCRD T0 WHERE CardCode = @list_of_cols_val_tab_del)

	DECLARE @TSN AS VARCHAR(1)
	SET @TSN = (SELECT T0.CardType FROM OCRD T0 WHERE CardCode = @list_of_cols_val_tab_del)

	BEGIN 
		IF @USIGN IN (51,24,151,204,150,50) AND @TSN = 'S'
		BEGIN
		SET @error = -111
		SET @error_message = 'No puedes crear proveedores.'
		 
	END
END

1 me gusta

con esto sale, solo transforma a HANA

IF @object_type  = '2' AND  @transaction_type = 'A'
BEGIN 
	IF 0 < (SELECT 
				COUNT(*)
			FROM 
				OCRD T0
				INNER JOIN OUSR T1 On T0.UserSign = T1.Internal_K
			WHERE 
				T0.CardType = 'S' 
				AND T1.USER_CODE NOT IN ('manager') --Solo permite crear a los usuarios de la lista
				AND T0.CardCode = @list_of_cols_val_tab_del
			)
	BEGIN 
		SET @error = -222
		SET @error_message = 'Usuario no Autorizado'

		SELECT @error, @error_message
	END
END 
2 Me gusta

Muchas gracias @camilog , ya me funciono el código crack

Gracias a todos

1 me gusta