Tarjetas de Credito

Buenas estimados,
Estoy trabajando en una Transaction Notification para cuando se dupliquen las tarjetas de credito salte un error pero no me valida correctamente ya que, si anteriror mente ya se tenia un documento pero este esta cancelado debe permitir grabar, y si este no esta cancelado alli debe validar que no este repetido. tengo lo siguiente:
IF :object_type =‘24’ AND (:transaction_type = ‘A’ )
THEN
DECLARE VAR1 INT;
(
SELECT COUNT(*)

    into VAR1
	
	FROM RCT3 T0
	LEFT JOIN RCT3 T1 ON T1."DocNum"!= :list_of_cols_val_tab_del 
	INNER JOIN ORCT T2 ON T0."DocNum" = T2."DocEntry" and T2."Canceled" = 'N' AND 
	
	T0."OwnerIdNum" = T1."OwnerIdNum" AND
	T0."VoucherNum"= T1."VoucherNum"

	WHERE 
	T0."DocNum"!=T1."DocNum" and
	T0."DocNum"= :list_of_cols_val_tab_del and
	T2."Canceled" = 'N'
	

);
	
	IF VAR1 > 0
	
	THEN 
	error := -1;
	error_message := 'SP: El Numero de Transaccion de la TC esta repetido';
END IF;

END IF;

Con el siguiente código si me valida que no estén repetidos pero no si están cancelados es decir un documento cancelado me salta el error de que esta repetido pero debería dejarme continuar ya que esta cancelado:

IF :object_type =‘24’ AND (:transaction_type = ‘A’ )
THEN
DECLARE VAR1 INT;
(
SELECT COUNT(*)

    into VAR1
	
	FROM RCT3 T0
	INNER JOIN ORCT T2 ON T0."DocNum" = T2."DocEntry" 
	LEFT JOIN RCT3 T1 ON T1."DocNum"!= :list_of_cols_val_tab_del and T2."Canceled" = 'N'
	AND 
	
	T0."OwnerIdNum" = T1."OwnerIdNum" AND
	T0."VoucherNum"= T1."VoucherNum"
	
	WHERE 
	T0."DocNum"!=T1."DocNum" and
	T0."DocNum"= :list_of_cols_val_tab_del and
	T2."Canceled" = 'N'
	
	
);
	
	IF VAR1 > 0
	
	THEN 
	error := -920;
	error_message := 'SP: El Numero de Transaccion de la TC esta repetido';
END IF;

END IF;

Este tema se cerró automáticamente 30 días después de la última publicación. No se permiten nuevas respuestas.