Update: 2026-08-08 12:58:16
This commit is contained in:
@@ -32,28 +32,35 @@ $summary = ['pending_total' => 0.0, 'settled_total' => 0.0,
|
||||
'currency' => $policy['currency']];
|
||||
$entries = [];
|
||||
|
||||
// المصدر هو الدفتر الموحّد لا دفتر التأمين القديم (المجمَّد بعد ترحيل
|
||||
// 2026_08_08). المفتاح صار (السائق + رمز المنتج) بدل رقم الوثيقة:
|
||||
// الدفتر الموحّد لا يعرف الوثائق، يعرف التزامات.
|
||||
try {
|
||||
// المستحق من `amount_remaining` والمحصَّل من `amount_collected`:
|
||||
// قيدٌ حُصِّل نصفه يظهر في الرقمين معاً بحصّته الصحيحة، بينما جمع
|
||||
// `amount` حسب الحالة كان سيعدّه كاملاً في أحدهما ويكذب في كليهما.
|
||||
$st = $con->prepare("
|
||||
SELECT status, SUM(amount) AS total
|
||||
FROM insurance_premium_ledger
|
||||
WHERE policy_id = ?
|
||||
GROUP BY status
|
||||
SELECT COALESCE(SUM(amount_remaining), 0) AS pending_total,
|
||||
COALESCE(SUM(amount_collected), 0) AS settled_total
|
||||
FROM obligation_ledger
|
||||
WHERE driver_id = ? AND product_code = ?
|
||||
");
|
||||
$st->execute([$policy['id']]);
|
||||
foreach ($st->fetchAll(PDO::FETCH_ASSOC) as $row) {
|
||||
if ($row['status'] === 'pending') $summary['pending_total'] = (float) $row['total'];
|
||||
if ($row['status'] === 'settled') $summary['settled_total'] = (float) $row['total'];
|
||||
$st->execute([$driverId, $policy['code']]);
|
||||
if ($row = $st->fetch(PDO::FETCH_ASSOC)) {
|
||||
$summary['pending_total'] = (float) $row['pending_total'];
|
||||
$summary['settled_total'] = (float) $row['settled_total'];
|
||||
}
|
||||
|
||||
// آخر ثلاثين قيداً: كافية لشهر يومي، وتمنع رداً ينمو بلا حد.
|
||||
$st = $con->prepare("
|
||||
SELECT charge_date, amount, currency, status, note
|
||||
FROM insurance_premium_ledger
|
||||
WHERE policy_id = ?
|
||||
SELECT charge_date, amount, amount_collected, amount_remaining,
|
||||
currency, status, note
|
||||
FROM obligation_ledger
|
||||
WHERE driver_id = ? AND product_code = ?
|
||||
ORDER BY charge_date DESC
|
||||
LIMIT 30
|
||||
");
|
||||
$st->execute([$policy['id']]);
|
||||
$st->execute([$driverId, $policy['code']]);
|
||||
$entries = $st->fetchAll(PDO::FETCH_ASSOC);
|
||||
} catch (PDOException $e) {
|
||||
error_log('[assurance/get] تعذّرت قراءة الدفتر: ' . $e->getMessage());
|
||||
|
||||
Reference in New Issue
Block a user