0) { $result = $po->getPoById($id); if (!$result) { http_response_code(404); $answer['message'] = 'Purchase order not found.'; exit(json_encode($answer)); } $answer['output'] = $result; // Calculate receivable items — PO items minus already received qty $po_items = $result['items'] ?? []; $receivable = []; foreach ($po_items as $i => $item) { $ordered = (float)($item['quantity'] ?? 0); $received = (float)($item['received_qty'] ?? 0); $remaining = $ordered - $received; if ($remaining > 0) { $receivable[] = array_merge($item, [ 'item_id' => (int)($item['item_id'] ?? $i), 'ordered_qty' => $ordered, 'received_qty' => $received, 'remaining_qty' => $remaining, ]); } } $answer['receivable_items'] = $receivable; } else { $answer['output'] = $po->getPoList(); } $answer['success'] = 1; exit(json_encode($answer)); ?>