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
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
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
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.
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.
¿y que @Adan_Rivera ?
¿alguna novedad respecto de esto?
¿has probado a buscar en el foro si había ya consulta que resolviera tu problema?
Me suena que hay alguna con la solución.