Creando Validacion en Transaction Notification

Hola Amigos,
Solo conozco teoria de TN de Hana, pero tomando como ejemplo otro TN quise hacer una validación pero no surte ningún efecto,
Consiste técnicamente en:
Al generar un documento Pagos Efectuados (objtype= 46) y que en sus lineas tenga documentos de tipo “Asiento” solo pueden crearse si el proveedor tiene permitido aquello a través de la propiedad Nro 1 (QryGroup1) entonces si este ultimo está en “N”, deberia dar el error.

Teoricamente, los pagos efectuados a proveedores no se pueden crear cuando se está pagando un Asiento, pero hay proveedores que si se les permite, a ellos les tengo la propiedad 1 del maestros de SN en donde debe tener el check. si no lo tiene, el TN debería impedir la creación del Pago Efectuado.
De antemano agradezco cualquier ayuda.

IF object_type= '46' and transaction_type ='A' THEN
	SELECT COUNT(T1."DocEntry") INTO error_count2 FROM VPM2 T0  INNER JOIN OVPM T1 ON T0."DocNum" = T1."DocEntry" 
INNER JOIN OCRD T2 ON T1."CardCode" = T2."CardCode"
	WHERE 	T0."InvType"='30' AND T2."QryGroup1"='N' AND T0."DocEntry" = list_of_cols_val_tab_del;
	IF error_count2 > 0 THEN
					error2 := 001;

				error_message := N'Error - Proveedor No autorizado para pagos de Asientos';
END IF;
	END IF;

Hola @Jose_Marquez, a simple vista lo que veo mal es el DocEntry en el WHERE.

Estás indicando T0.“DocEntry” y debería ser T1.“DocEntry” o bien, T0.“DocNum”

Saludos.

Como dice JhosserRomero, proba de cambiar eso y tira solo el select en una prueba para ver si te devuelve el valor que necesitas.

1 me gusta

Perfecto,
Gracias por la ayuda, me funcionó, era Docnum en el Where.
Ahí dejo el código definitivo por si le puede servir a alguien de ejemplo para alguna validación similar.

	
IF object_type= '46' and transaction_type ='A' THEN
      SELECT COUNT(T1."DocEntry") INTO error_count FROM VPM2 T0  INNER JOIN OVPM T1 ON T0."DocNum" = T1."DocEntry" 
INNER JOIN OCRD T2 ON T1."CardCode" = T2."CardCode"
      WHERE       T0."InvType"='30' AND T2."QryGroup1"='N' AND T0."DocNum" = list_of_cols_val_tab_del;
      IF error_count > 0 THEN
                             error := 001;
 
                        error_message := N'Error - Proveedor No autorizado para pagos de Asientos';
END IF;
      END IF;

1 me gusta