Pendientes de entregar

Tengo la siguiente situacion

quiero listar las ordenes de venta | facturas que esten pendientes de entregar o que tengan lineas pendientes de entregar en un query

realize el siguiente query pero el orden me esta afectando el resultado cuando la entrega fue primero que la entrega o casos similares alguno tiene alguna idea?

-- Primera parte (Orden de venta > Entrega > Factura)
SELECT
    ORDR."DocNum" AS "SalesOrderNumber",
    ODLN."DocNum" AS "DeliveryDocNumber",
    OINV."DocNum" AS "InvoiceNumber",
    RDR1."ItemCode",
    RDR1."Dscription" AS "ItemDescription",
    RDR1."Quantity" AS "OrderedQuantity",
    IFNULL(SUM(DLN1."Quantity"), 0) AS "DeliveredQuantity",
    (RDR1."Quantity" - IFNULL(SUM(DLN1."Quantity"), 0)) AS "PendingDeliveryQuantity"
FROM ORDR
INNER JOIN RDR1 ON ORDR."DocEntry" = RDR1."DocEntry"
LEFT JOIN DLN1 ON RDR1."DocEntry" = DLN1."BaseEntry" AND RDR1."LineNum" = DLN1."BaseLine" AND DLN1."BaseType" = 17
LEFT JOIN ODLN ON DLN1."DocEntry" = ODLN."DocEntry"
LEFT JOIN INV1 ON ODLN."DocEntry" = INV1."BaseEntry" AND INV1."BaseType" = 15
LEFT JOIN OINV ON INV1."DocEntry" = OINV."DocEntry"
GROUP BY ORDR."DocNum", ODLN."DocNum", OINV."DocNum", RDR1."ItemCode", RDR1."Dscription", RDR1."Quantity"
HAVING (RDR1."Quantity" - IFNULL(SUM(DLN1."Quantity"), 0)) > 0

UNION ALL
-- Parte 2: Factura > Entrega (Corregida)
SELECT
    '' AS "SalesOrderNumber", -- No hay número de orden de venta directamente relacionado
    ODLN."DocNum" AS "DeliveryDocNumber",
    OINV."DocNum" AS "InvoiceNumber",
    INV1."ItemCode",
    INV1."Quantity" AS "OriginalQuantity",
    (INV1."Quantity" - IFNULL(SUM(DLN1."Quantity"), 0)) AS "PendingDeliveryQty"
FROM OINV
INNER JOIN INV1 ON OINV."DocEntry" = INV1."DocEntry"
LEFT JOIN DLN1 ON INV1."DocEntry" = DLN1."BaseEntry" AND INV1."BaseLine" = DLN1."BaseLine" AND DLN1."BaseType" = 15
LEFT JOIN ODLN ON DLN1."DocEntry" = ODLN."DocEntry"
GROUP BY ODLN."DocNum", OINV."DocNum", INV1."ItemCode", INV1."Quantity"
HAVING (INV1."Quantity" - IFNULL(SUM(DLN1."Quantity"), 0)) > 0

Hola @Adan_Rivera

El informe estándar de partidas abiertas ¿no cumple con este requisito?

Un saludo

si y no , el mismo no contempla cuando la entrega fue anterior a la factura , es curioso por que sap en factura oinv tiene un ODLN con OpenQty,la idea es listar todas las facturas con entregas incompletas

Perdón, pero yo todavía no sé lo que quieres obtener.

1 me gusta

la idea es obtener los productos pendientes de entregar , pero ejemplo
si la entrega es primero y posterior la factura no me devuelve caso contrario si es el orden “normal” factura y luego entrega si

Hola @Adan_Rivera

en la query que planteas yo probaría a enlazar RDR1 con DLN1 y DLN1 con INV1 para procesar las líneas. Si necesitas los números de documento, enlazaría la tabla de las líneas con la de cabecera directamente, por ejemplo DLN1 con ODLN.

Podrías estar teniendo resultados erróneos por los join que planteas.

En la segunda parte de la query lo haces como yo te comento.

Un saludo

si lo intente realizar como indicas, pero el problema esta en como se da el orden de los documentos entre ordr oinv o oinv y ordr

Que tal @Adan_Rivera, prueba así para la primera parte:

SELECT T0."DocDate", T0."DocNum", T1."ItemCode", T1."Dscription", T1."Quantity", T1."OpenQty" FROM ORDR T0  INNER JOIN RDR1 T1 ON T0."DocEntry" = T1."DocEntry" WHERE T1."LineStatus" ='O' and   T1."TargetType" =15

Son las partidas abiertas de la orden de venta que ya tienen una entrega, restaría hacer la segunda parte bajo el mismo esquema para obtener las partidas abiertas de la factura que aun no han sido entregadas.

Saludos.