Validación en entrada de mercancia

Hola, buena tarde,

Espero me puedan ayudar, estoy tratando de crear una validación en el TN que no me permita dar entrada a un lote ya existente, este es mi código, sin embargo siempre entra la validación sin importar que el lote no esté registrado previamente, alguien ha hecho una validación similar ??

Gracias, saludos.

IF object_type = '20' AND (transaction_type = 'A' )
 THEN 
 SELECT T3."BatchNum" INTO lote
   FROM OPDN T0 
   INNER JOIN PDN1 T1 ON T0."DocEntry" = T1."DocEntry"
   INNER JOIN OBTN T2 ON T1."ItemCode" = T2."ItemCode"
   INNER JOIN IBT1 T3 ON T2."ItemCode" = T3."ItemCode"
                     AND T2."DistNumber" = T3."BatchNum"
                     AND T0."ObjType" = T3."BaseType"
                     AND T1."DocEntry" = t3."BaseEntry"
   where T0."DocEntry" = list_of_cols_val_tab_del;
    SELECT COUNT (*)INTO lote_n 
      FROM IBT1 T1 
	 WHERE T1."BatchNum" = lote;
      IF lote_n > 0 
    THEN 
      error := - 013;	
	  error_message := N'Error - El lote '||lote||' ya se encuentra registrado';
	END IF;
END IF;

Ya lo resolvimos, les coloco el código por si es de utilidad para alguien mas.

IF object_type = '20' AND (transaction_type = 'A' )
 THEN 
 SELECT T3."BatchNum" INTO lote
   FROM OPDN T0 
   INNER JOIN PDN1 T1 ON T0."DocEntry" = T1."DocEntry"
   INNER JOIN OBTN T2 ON T1."ItemCode" = T2."ItemCode"
   INNER JOIN IBT1 T3 ON T2."ItemCode" = T3."ItemCode"
                     AND T2."DistNumber" = T3."BatchNum"
                     AND T0."ObjType" = T3."BaseType"
                     AND T1."DocEntry" = t3."BaseEntry"
   WHERE T0."DocEntry" = list_of_cols_val_tab_del;
   
     SELECT COUNT(T3."BatchNum") INTO lote_n
   FROM OPDN T0 
   INNER JOIN PDN1 T1 ON T0."DocEntry" = T1."DocEntry"
   INNER JOIN OBTN T2 ON T1."ItemCode" = T2."ItemCode"
   INNER JOIN IBT1 T3 ON T2."ItemCode" = T3."ItemCode"
                     AND T2."DistNumber" = T3."BatchNum"
                     AND T0."ObjType" = T3."BaseType"
                     AND T1."DocEntry" = t3."BaseEntry"
    WHERE T0."DocEntry" <> list_of_cols_val_tab_del 
    AND T3."BatchNum" = lote;
      IF lote_n > 0 
    THEN 
      error := - 013;	
	  error_message := N'Error - El lote '||lote||' ya se encuentra registrado';
	END IF;
END IF; 
2 Me gusta

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