Transaction Notification, Datos Maestros Articulos

Buenas tardes amigos, hoy vengo con una duda que tiene varios días y no puedo resolver.
Ya cambie el código como 3 veces y siempre me sale el mismo error, mi duda es:
Intento hacer obligatorio llenar el campo “Ultimo precio de compras” en Datos maestros de artículos, el query si me funciona hasta cierto punto, si es “actualizar” funciona bien, pero si es para crear un nuevo articulo, y se les olvida llenar ese campo salta el msg de error, y cuando van al campo a poner el precio, el documento no se puede crear y tampoco puedes hacer nada (No sale ningún error, simplemente se escucha el sonido cuando SAP marca error, pero ninguna alerta), hasta que borres el precio se agrego anteriormente. No sé si error en los query o alguna cosa que se me pase, si les ha pasado y saben como solucionarlo estaría agradecido de su ayuda, de igual forma dejo el código por si es el que estaba mal y no lo veo.

 -- Bloquear no llenar el campo lista de precio de "Ultimo precio de compra".
	    IF @object_type = '4' AND @transaction_type IN ('U','A')
        IF ((SELECT COUNT(*) FROM OITM WHERE ItemCode = @list_of_cols_val_tab_del) !=
          (SELECT COUNT (*) FROM OITM WHERE ItemCode = @list_of_cols_val_tab_del AND  UserSign2 != '26') AND 
	   (
	   ((SELECT COUNT(*) FROM ITM1 WHERE Pricelist = '5' AND ItemCode = @list_of_cols_val_tab_del ) =
	   (SELECT COUNT(*) FROM ITM1 WHERE PriceList = '5' AND ItemCode = @list_of_cols_val_tab_del AND Price IS Null))))

    	BEGIN
	    	SET @error = 1
	    	SET @error_message = 'Tienes que agregar el Ultimo precio de compras '
    	END

Saludos y gracias por leer el tema.

No entiendo por que haces la comparación del count(*) varias veces, te sugiero primero hacer mas simple tu query:

  1. el primer IF, es para que el bloqueo solo se active cuando el usuario ‘26’ hace modificacion?? por el campo UserSign2, solo guarda el usuario que modifica, cuando creas este campo queda nulo, y deberias usar las funcion ISNULL si quieres usarlo.

  2. la segunda condicion igual la puedes simplificar, solo cambiala por esto:
    (SELECT COUNT(*) FROM ITM1 WHERE PriceList = ‘5’ AND ItemCode = @list_of_cols_val_tab_del AND Price IS Null)=1

2 Me gusta

Disculpa @Willy_Caldero, uso lo que he aprendido yo solo y como eso me había funcionado, pero si fue error usar el UserSign2, ahorita estoy modificando la consulta, la “simplifique” quiero creer, ejecute la consulta para ver los resultados y si funciona, solo que pasa lo mismo, y Gracias me hiciste reflexionar un poco.
Anexo la consulta como la modifiqué.

	 IF @object_type = '4' AND @transaction_type IN ('A','U')
		 IF ((SELECT COUNT(T1.Price) FROM OITM T0 LEFT JOIN ITM1 T1 ON T0.ItemCode = T1.ItemCode WHERE T0.ItemCode = @list_of_cols_val_tab_del AND PriceList = '2')=0)
			BEGIN
		      SET @error = 1
			  SET @error_message = 'Tienes que agregar el ultimo precio de compras'
			END

Este tema se cerró automáticamente 91 días después del último post. No se permiten nuevas respuestas.