Update: 2026-08-08 12:58:16
This commit is contained in:
@@ -0,0 +1,80 @@
|
||||
<?php
|
||||
/**
|
||||
* fuel/get.php — حالة محفظة الوقود للسائق
|
||||
*
|
||||
* السقف، المستخدَم، المحجوز، والمتاح — ثم آخر الحركات. الأرقام الأربعة
|
||||
* معاً لا المتاح وحده: السائق الذي يرى «المتاح ٥» بلا تفسير يظنّها
|
||||
* عطلاً، والذي يرى «سقفك ٣٠، عليك ٢٠، محجوز ٥» يفهم ويتصرّف.
|
||||
*/
|
||||
|
||||
require_once __DIR__ . '/../connect.php';
|
||||
require_once __DIR__ . '/functions.php';
|
||||
|
||||
$driverId = $user_id ?? '';
|
||||
if (empty($driverId) || ($role ?? '') !== 'driver') {
|
||||
jsonError('Unauthorized', 401);
|
||||
}
|
||||
|
||||
$obligation = fuelObligation($con, $driverId);
|
||||
|
||||
if (!$obligation) {
|
||||
jsonSuccess([
|
||||
'enrolled' => false,
|
||||
'credit' => null,
|
||||
'voucher' => null,
|
||||
'entries' => [],
|
||||
], 'محفظة الوقود غير مفعّلة');
|
||||
}
|
||||
|
||||
fuelExpireStaleVouchers($con, $driverId);
|
||||
$state = fuelCreditState($con, $obligation);
|
||||
|
||||
$voucher = null;
|
||||
$entries = [];
|
||||
|
||||
try {
|
||||
$st = $con->prepare("
|
||||
SELECT id, code, amount_authorized, currency, expires_at
|
||||
FROM fuel_vouchers
|
||||
WHERE driver_id = ? AND status = 'issued' AND expires_at >= NOW()
|
||||
LIMIT 1
|
||||
");
|
||||
$st->execute([$driverId]);
|
||||
if ($row = $st->fetch(PDO::FETCH_ASSOC)) {
|
||||
$voucher = [
|
||||
'voucher_id' => (int) $row['id'],
|
||||
'code' => $row['code'],
|
||||
'amount' => (float) $row['amount_authorized'],
|
||||
'expires_at' => $row['expires_at'],
|
||||
];
|
||||
}
|
||||
|
||||
// آخر عشرين حركة: كافية لشهر تزوّد، وتمنع رداً ينمو بلا حد.
|
||||
$st = $con->prepare("
|
||||
SELECT charge_date, amount, amount_collected, amount_remaining,
|
||||
currency, status, note
|
||||
FROM obligation_ledger
|
||||
WHERE obligation_id = ?
|
||||
ORDER BY id DESC LIMIT 20
|
||||
");
|
||||
$st->execute([(int) $obligation['id']]);
|
||||
$entries = $st->fetchAll(PDO::FETCH_ASSOC);
|
||||
} catch (PDOException $e) {
|
||||
error_log('[fuel/get] تعذّرت قراءة الحالة: ' . $e->getMessage());
|
||||
}
|
||||
|
||||
jsonSuccess([
|
||||
'enrolled' => true,
|
||||
'credit' => [
|
||||
'limit' => $state['limit'],
|
||||
'outstanding' => $state['outstanding'],
|
||||
'held' => $state['held'],
|
||||
'available' => $state['available'],
|
||||
'currency' => $obligation['currency'],
|
||||
// نسبة الاقتطاع اليومي معروضة صراحةً: الخصم من الأرباح يجب ألّا
|
||||
// يكون مفاجأة، والسائق الذي يعرف أن الاقتطاع ١٥٪ يخطّط عليه.
|
||||
'daily_cap_percent' => (float) $obligation['daily_cap_percent'],
|
||||
],
|
||||
'voucher' => $voucher,
|
||||
'entries' => $entries,
|
||||
], 'success');
|
||||
Reference in New Issue
Block a user