Spaces:
Running
Running
| -- ============================================================================ | |
| -- Views for Trade Sales Reporting | |
| -- ============================================================================ | |
| -- View: Trade Sales Summary by Client | |
| CREATE OR REPLACE VIEW trans.v_trade_sales_summary AS | |
| SELECT | |
| ts.client_id, | |
| COUNT(DISTINCT ts.shipment_id) as total_shipments, | |
| COUNT(DISTINCT ts.order_id) as total_orders, | |
| COALESCE(SUM(tsi.shipped_qty), 0) as total_qty_shipped, | |
| COUNT(DISTINCT tsi.sku) as unique_skus_shipped, | |
| MIN(ts.shipment_date) as first_shipment_date, | |
| MAX(ts.shipment_date) as last_shipment_date, | |
| COUNT(DISTINCT CASE WHEN ts.status = 'shipped' THEN ts.shipment_id END) as shipped_count, | |
| COUNT(DISTINCT CASE WHEN ts.status = 'draft' THEN ts.shipment_id END) as draft_count | |
| FROM trans.scm_trade_shipment ts | |
| LEFT JOIN trans.scm_trade_shipment_item tsi ON ts.shipment_id = tsi.shipment_id | |
| GROUP BY ts.client_id; | |
| -- View: Order Execution Status | |
| CREATE OR REPLACE VIEW trans.v_order_execution_status AS | |
| WITH po_summary AS ( | |
| SELECT | |
| po_id, | |
| SUM(ord_qty) as total_ordered_qty | |
| FROM trans.scm_po_item | |
| GROUP BY po_id | |
| ), | |
| shipment_summary AS ( | |
| SELECT | |
| poi.po_id, | |
| SUM(tsi.shipped_qty) as total_shipped_qty, | |
| COUNT(DISTINCT tsi.shipment_id) as shipment_count, | |
| MAX(ts.shipment_date) as last_shipment_date | |
| FROM trans.scm_trade_shipment_item tsi | |
| JOIN trans.scm_po_item poi ON tsi.po_item_id = poi.po_item_id | |
| JOIN trans.scm_trade_shipment ts ON tsi.shipment_id = ts.shipment_id | |
| GROUP BY poi.po_id | |
| ) | |
| SELECT | |
| po.po_id as order_id, | |
| po.po_no as order_no, | |
| po.buyer_id as client_id, | |
| po.supplier_id, | |
| po.po_date as order_date, | |
| COALESCE(pos.total_ordered_qty, 0) as total_ordered_qty, | |
| COALESCE(ss.total_shipped_qty, 0) as total_shipped_qty, | |
| COALESCE(pos.total_ordered_qty, 0) - COALESCE(ss.total_shipped_qty, 0) as pending_qty, | |
| CASE | |
| WHEN COALESCE(ss.total_shipped_qty, 0) = 0 THEN 'pending' | |
| WHEN COALESCE(ss.total_shipped_qty, 0) < COALESCE(pos.total_ordered_qty, 0) THEN 'partial' | |
| WHEN COALESCE(ss.total_shipped_qty, 0) >= COALESCE(pos.total_ordered_qty, 0) THEN 'completed' | |
| ELSE 'pending' | |
| END as execution_status, | |
| COALESCE(ss.shipment_count, 0) as shipment_count, | |
| ss.last_shipment_date | |
| FROM trans.scm_po po | |
| LEFT JOIN po_summary pos ON po.po_id = pos.po_id | |
| LEFT JOIN shipment_summary ss ON po.po_id = ss.po_id | |
| WHERE po.supplier_type = 'cnf' AND po.buyer_type = 'distributor'; | |