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