"SELECT p.*, r.receipt_number FROM payments p LEFT JOIN receipts r ON r.id = p.receipt_id WHERE p.member_id = ? AND p.is_voided = 0 ORDER BY p.payment_date DESC, p.id DESC LIMIT 1",
"SELECT COUNT(*) as cnt, COALESCE(SUM(total_amount - paid_amount + fine_amount), 0) as total
[$memberId]
FROM subscriptions WHERE member_id = ? AND status IN ('pending', 'overdue')",
[$memberId]
);
$unpaidSubscriptions=$row['total']??'0.00';
$unpaidSubsCount=(int)($row['cnt']??0);
}catch(\Throwable$e){}
// ── Unpaid Fines ──
$unpaidFines='0.00';
try{
$row=$db->selectOne(
"SELECT COALESCE(SUM(amount - paid_amount), 0) as total FROM fines WHERE member_id = ? AND status IN ('imposed', 'appeal_upheld')",
"SELECT * FROM spouses WHERE member_id = ? AND is_archived = 0 AND addition_fee > 0 AND (fee_receipt_number IS NULL OR fee_receipt_number = '')",
[$memberId]
);
foreach($unpaidSpousesas$s){
$items[]=[
'type'=>'addition_fee',
'label'=>'رسوم إضافة زوجة: '.$s['full_name_ar'],
'total'=>$s['addition_fee'],
'paid'=>'0.00',
'outstanding'=>$s['addition_fee'],
'entity_type'=>'spouses',
'entity_id'=>(int)$s['id'],
];
}
}
}
if(bccomp($summary['unpaid_fines'],'0',2)>0){
// Check unpaid children addition fees
$blocks[]='غرامات غير مدفوعة: '.money($summary['unpaid_fines']);
if($db->tableExists('children')){
$unpaidChildren=$db->select(
"SELECT * FROM children WHERE member_id = ? AND is_archived = 0 AND addition_fee > 0 AND (fee_receipt_number IS NULL OR fee_receipt_number = '')",
[$memberId]
);
foreach($unpaidChildrenas$c){
$items[]=[
'type'=>'addition_fee',
'label'=>'رسوم إضافة ابن/ابنة: '.$c['full_name_ar'],
'total'=>$c['addition_fee'],
'paid'=>'0.00',
'outstanding'=>$c['addition_fee'],
'entity_type'=>'children',
'entity_id'=>(int)$c['id'],
];
}
}
// Check unpaid temporary member fees
if($db->tableExists('temporary_members')){
$unpaidTemp=$db->select(
"SELECT * FROM temporary_members WHERE member_id = ? AND is_archived = 0 AND addition_fee > 0 AND (fee_receipt_number IS NULL OR fee_receipt_number = '')",
<?phpif(empty($report['payments'])):?><tr><tdcolspan="6"style="text-align:center;padding:40px;color:#6B7280;">لا توجد عمليات في هذا اليوم</td></tr><?phpendif;?>
<?phpif(empty($payments)):?>
<tr><tdcolspan="6"style="text-align:center;padding:40px;color:#6B7280;">لا توجد دفعات في هذا التاريخ</td></tr>