43 lines
1.4 KiB
PHP
43 lines
1.4 KiB
PHP
<?php
|
|
session_start();
|
|
require '../../../assets/utils/db_auth.php';
|
|
require '../../../assets/utils/classes/PurchaseOrderManager.php';
|
|
|
|
$po = new PurchaseOrderManager($pdo2, $company_id);
|
|
|
|
$id = (int)($data['id'] ?? 0);
|
|
|
|
if ($id > 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));
|
|
?>
|