Buenas su ayuda por favor tengo esta Transaction Notification la cual no permite que se cree clientes al no ser que sean unos específicos, sin embargo no me esta funcionando en que puedo estar mal su ayuda por favor:
IF :object_type = 2 AND (:transaction_type = ‘A’)
THEN
DECLARE VAR1 INT;
(
SELECT COUNT(*) INTO VAR1
FROM OCRD T0
WHERE T0.“CardCode” =:list_of_cols_val_tab_del
AND (T0.“UserSign” IN (
20,
21,
22,
34,
38,
17,
19)
)
AND NOT(T0."GroupCode" = 100 OR
T0."GroupCode" = 114 OR
T0."GroupCode" = 113 OR
T0."GroupCode" = 119 OR
T0."GroupCode" = 111 OR
T0."GroupCode" = 109 OR
T0."GroupCode" = 116
)
);
IF VAR1 > 1
THEN
error := -1;
error_message := 'ERROR: NO Tiene permisos para Crear Clientes de este TIPO';
END IF;
END IF;
Antes lo tenia de la siguiente forma la cual si me validaba pero esta causaba que otros módulos tengan error y la tuve que deshabilitar:
IF :object_type = 2 AND (:transaction_type = ‘A’)
THEN
IF EXISTS (SELECT 1
FROM OCRD T0
WHERE T0.“CardCode” =:list_of_cols_val_tab_del
AND (T0.“UserSign” IN (
20,
21,
22,
34,
38,
17,
19))
AND NOT(T0."GroupCode" = 100 OR
T0."GroupCode" = 114 OR
T0."GroupCode" = 113 OR
T0."GroupCode" = 119 OR
T0."GroupCode" = 111 OR
T0."GroupCode" = 109 OR
T0."GroupCode" = 116
)
)
THEN
error := -1;
error_message := 'ERROR: NO Tiene permisos para Crear Clientes de este TIPO';
END IF;
END IF;
Buenos días, a que te refieres con que otros módulos tenían error?
ara el código de la Transaction Notification que has compartido y su objetivo de no permitir la creación de ciertos clientes a menos que sean específicos, es importante realizar algunas correcciones para asegurar que la lógica funcione como se espera. Aquí hay una versión ajustada del código con las correcciones necesarias:
IF :object_type = ‘2’ AND :transaction_type = ‘A’.
DECLARE VAR1 INT;
SELECT COUNT(*) INTO VAR1
FROM OCRD T0
WHERE T0.“CardCode” IN (:list_of_cols_val_tab_del)
AND T0.“UserSign” IN (20, 21, 22, 34, 38, 17, 19)
AND (NOT (T0.“GroupCode” IN (100, 114, 113, 119, 111, 109, 116)));
IF VAR1 < 1.
error := -1;
error_message := ‘ERROR: No tienes permisos para Crear Clientes de este Tipo’;
END IF.
ENDIF.
Aquí hay algunas correcciones y cambios clave realizados en el código ajustado:
- Se corrigió la comparación de cadenas en la condición IF, utilizando comillas simples para comparar valores de tipo cadena.
- Se reemplazó el operador
IN
para verificar si el valor está en una lista de valores permitidos.
- Se modificaron las condiciones para invertir la lógica y verificar si la cantidad de clientes permitidos es menor que 1 antes de mostrar el mensaje de error.
Por ejemplo me aparecía el siguiente error:
y solo se soluciono cunado deshabilite
Gracias por la ayuda, lo probé pero sigue sin validar hice una prueba y me dejo crear un cliente que no debería
que codigo tienes y tu motor es SQL o Hana?
Mi motor es HANNA y la version de SAP es la 10
Buenas tardes, te dejo el código, por favor pruébalo y me dices si te funcionó:
If :object_type = '2' AND (:transaction_type ='A')
Permitir nvarchar(100);
THEN
SELECT (
SELECT TOP 1 T1."CardCode"
FROM "BDATOS"."OCRD" T0
WHERE
T0."CardCode" = list_of_cols_val_tab_del AND T0."UserSign" NOT IN (100, 114, 113, 119, 111, 109, 116) AND T0.“GroupCode” NOT IN (100, 114, 113, 119, 111, 109, 116)
)
INTO Permitir FROM dummy ;
IF :Permitir IS NOT NULL THEN
error := 225 ;
error_message :='Error (SP): No tienes permisos para Crear Clientes de este Tipo';
end IF;
end IF;