96 lines
3.0 KiB
SQL
96 lines
3.0 KiB
SQL
/**
|
|
* List Orders with their Shipments and Invoices
|
|
*/
|
|
DECLARE
|
|
DocNo VARCHAR2(60) := '9003591';
|
|
--
|
|
CURSOR Cur_Order IS
|
|
SELECT o.C_Order_ID, d.Name, o.DocumentNo, o.DocStatus, o.DocAction, o.Processed
|
|
FROM C_Order o, C_DocType d
|
|
WHERE o.DocumentNo LIKE DocNo
|
|
AND o.C_DocType_ID=d.C_DocType_ID
|
|
ORDER BY o.DocumentNo DESC;
|
|
|
|
BEGIN
|
|
-- Order Info
|
|
FOR o IN Cur_Order LOOP
|
|
|
|
DBMS_OUTPUT.PUT_LINE (o.Name || ' ' || o.DocumentNo || '(' || o.C_Order_ID
|
|
|| '): Status=' || o.DocStatus
|
|
|| ', Action=' || o.DocAction || ', Processed=' || o.Processed);
|
|
|
|
-- Order Lines
|
|
DECLARE
|
|
CURSOR Cur_OrderLine IS
|
|
SELECT *
|
|
FROM C_OrderLine
|
|
WHERE C_Order_ID=o.C_Order_ID
|
|
ORDER BY Line;
|
|
BEGIN
|
|
FOR ol IN Cur_OrderLine LOOP
|
|
DBMS_OUTPUT.PUT_LINE (' Ordered=' || ol.QtyOrdered || ', Reserved=' || ol.QtyReserved
|
|
|| ', Delivered=' || ol.QtyDelivered || ', Invoiced=' || ol.QtyInvoiced
|
|
|| ' - Warehouse=' || ol.M_Warehouse_ID || ', Direct=' || ol.DirectShip
|
|
|| ', Product=' || ol.M_Product_ID);
|
|
END LOOP;
|
|
END;
|
|
|
|
-- Shipment
|
|
DECLARE
|
|
CURSOR Cur_InOut IS
|
|
SELECT s.M_InOut_ID, d.Name, s.DocumentNo, s.DocStatus, s.Processed, s.M_Warehouse_ID
|
|
FROM M_InOut s, C_DocType d
|
|
WHERE s.C_Order_ID = o.C_Order_ID
|
|
AND s.C_DocType_ID=d.C_DocType_ID;
|
|
BEGIN
|
|
FOR s IN Cur_InOut LOOP
|
|
DBMS_OUTPUT.PUT_LINE ('> ' || s.Name || ' ' || s.DocumentNo || '(' || s.M_InOut_ID
|
|
|| '): Status=' || s.DocStatus
|
|
|| ', Processed=' || s.Processed || ', Warehouse=' || s.M_Warehouse_ID);
|
|
-- Shipment Lines
|
|
DECLARE
|
|
CURSOR Cur_InOutLine IS
|
|
SELECT *
|
|
FROM M_InOutLine
|
|
WHERE M_InOut_ID=s.M_InOut_ID
|
|
ORDER BY Line;
|
|
BEGIN
|
|
FOR sl IN Cur_InOutLine LOOP
|
|
DBMS_OUTPUT.PUT_LINE (' Delivered=' || sl.MovementQty || ', Product=' || sl.M_Product_ID);
|
|
END LOOP;
|
|
END; -- Shipment Lines
|
|
END LOOP; -- Shipments
|
|
END; -- Shipment
|
|
|
|
-- Invoice
|
|
DECLARE
|
|
CURSOR Cur_Invoice IS
|
|
SELECT i.C_Invoice_ID, d.Name, i.DocumentNo, i.DocStatus, i.Processed
|
|
FROM C_Invoice i, C_DocType d
|
|
WHERE i.C_DocType_ID=d.C_DocType_ID
|
|
AND EXISTS (SELECT * FROM C_InvoiceLine l, C_OrderLine ol
|
|
WHERE i.C_Invoice_ID = l.C_Invoice_ID
|
|
AND l.C_OrderLine_ID = ol.C_OrderLine_ID
|
|
AND ol.C_Order_ID=o.C_Order_ID);
|
|
BEGIN
|
|
FOR i IN Cur_Invoice LOOP
|
|
DBMS_OUTPUT.PUT_LINE ('> ' || i.Name || ' ' || i.DocumentNo || '(' || i.C_Invoice_ID
|
|
|| '): Status=' || i.DocStatus || ', Processed=' || i.Processed);
|
|
-- Invoice Lines
|
|
DECLARE
|
|
CURSOR Cur_InvoiceLine IS
|
|
SELECT *
|
|
FROM C_InvoiceLine
|
|
WHERE C_Invoice_ID=i.C_Invoice_ID
|
|
ORDER BY Line;
|
|
BEGIN
|
|
FOR il IN Cur_InvoiceLine LOOP
|
|
DBMS_OUTPUT.PUT_LINE (' Invoiced=' || il.QtyInvoiced || ', Product=' || il.M_Product_ID);
|
|
END LOOP;
|
|
END; -- Invoice Lines
|
|
END LOOP; -- Invoices
|
|
END; -- Invoice
|
|
|
|
END LOOP; -- Order
|
|
END;
|