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
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
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?
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;
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;
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;
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;
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
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