"SELECT id FROM payments WHERE member_id = ? AND payment_type = 'form_fee' AND is_voided = 0 LIMIT 1",
[$memberId]
);
$formFeePaid=($ff!==null);
if(!$formFeePaid){
$ffReq=$db->selectOne(
"SELECT id, status FROM payment_requests WHERE member_id = ? AND payment_type = 'form_fee' AND is_voided = 0 AND status IN ('pending','processing') LIMIT 1",
[$memberId]
);
$formFeePending=($ffReq!==null);
if(!$formFeePending){
$ffCompleted=$db->selectOne(
"SELECT id FROM payment_requests WHERE member_id = ? AND payment_type = 'form_fee' AND is_voided = 0 AND status = 'completed' LIMIT 1",
"SELECT id FROM payments WHERE member_id = ? AND payment_type IN ('membership_fee','down_payment') AND is_voided = 0 LIMIT 1",
[$memberId]
);
$membershipPaid=($mp!==null);
if(!$membershipPaid){
$mpReq=$db->selectOne(
"SELECT id FROM payment_requests WHERE member_id = ? AND payment_type IN ('membership_fee','down_payment') AND is_voided = 0 AND status IN ('pending','processing') LIMIT 1",
[$memberId]
);
$membershipPending=($mpReq!==null);
if(!$membershipPending){
$mpCompleted=$db->selectOne(
"SELECT id FROM payment_requests WHERE member_id = ? AND payment_type IN ('membership_fee','down_payment') AND is_voided = 0 AND status = 'completed' LIMIT 1",
[$memberId]
);
$membershipPaid=($mpCompleted!==null);
}
}
}catch(\Throwable$e){}
$qualName='—';
...
...
@@ -187,6 +217,28 @@ final class BillingService
}
}catch(\Throwable$e){}
// ── Check payment_requests for completed or pending additions ──
try{
$additionRequests=$db->select(
"SELECT related_entity_type, related_entity_id, status FROM payment_requests
WHERE member_id = ? AND payment_type = 'addition_fee' AND is_voided = 0",