Tengo un detalle con un TN en ordenes de venta, lo que me hace este TN es bloquearme la creación del documento cuando lo que se esta pidiendo rebasa mi campo de stock_real, funciona perfectamente, pero cuando primero se hace una oferta de ventas y de ahi la pasan a una orden de venta, la TN no me bloquea la creación.
Espero me puedan orientar, muchas gracias
Este es mi código
IF @object_type = '17' and @transaction_type IN ('A', 'U')
BEGIN
IF EXISTS (
SELECT
T1.U_stock_Real
FROM ORDR T0
INNER JOIN RDR1 T1 ON T0.DocEntry = T1.DocEntry
WHERE T0.DocEntry = @list_of_cols_val_tab_del and T1.Quantity > T1.U_stock_Real and T0.PickRmrk is NULL
)
BEGIN
SET @error = 911
SET @error_message = 'No hay suficiente inventario'
END
END ```
Hola que tal, he realizado un ejercicio con tu TN de Oferta de venta a Orden de venta y me funciona perfecto, no deja crear la orden si rebasa los stocks existentes.
En este caso lo hice con el campo OnHand y utilicé un Inner con OITW para poder hacer el ejercicio:
IF @object_type = '17' and @transaction_type IN ('A', 'U')
BEGIN
IF EXISTS (
SELECT
'' AS TEST
FROM ORDR T0
INNER JOIN RDR1 T1 ON T0.DocEntry = T1.DocEntry INNER JOIN OITW T2 ON T1.ItemCode = T2.ItemCode
WHERE T0.DocEntry = @list_of_cols_val_tab_del and T1.Quantity > T2.OnHand
)
BEGIN
SET @error = 911
SET @error_message = 'No hay suficiente inventario'
END
END
Tal vez es porque estoy tomando campos nativos de SAP, deja creo el campo U_stock tal vez tiene algo que ver.
Muchas gracias por tu respuesta, realicé otro query y este si me funciono, lo dejo por si alguien más lo necesita
IF @object_type = '17' AND @transaction_type IN ('A','U')
BEGIN
IF EXISTS (
SELECT
T1.LineNum+1
FROM ORDR T0
INNER JOIN RDR1 T1 ON T1.docEntry = T0.DocEntry
WHERE T1.WhsCode = 'FORANEOS'
AND T0.DocEntry = @list_of_cols_val_tab_del
AND (T0.Pickrmrk <> 'ESPECIAL' OR T0.PickRmrk IS NULL)
AND T1.Quantity > T1.U_stock_Real )
BEGIN
SET @fila = (
SELECT TOP
1 T1.LineNum +1
FROM RDR1 T1
WHERE T1.Quantity > T1.U_stock_Real
AND T1.DocEntry = @list_of_cols_val_tab_del
ORDER BY T1.LineNum ASC)
SET @Error = '-666'
SET @error_message = 'No hay suficiente inventario'
END
END