Commit 50e7f8bc authored by Mahmoud Aglan's avatar Mahmoud Aglan

fix(transfers): prevent separation date before membership creation date

Validates that the computed effective transfer date for male dependents
cannot be earlier than the parent member's membership start date.
Female path already had this check; now both paths enforce the rule.
Co-Authored-By: 's avatarClaude Opus 4.6 <noreply@anthropic.com>
parent 8c9abb1b
......@@ -110,6 +110,9 @@ class TransferController extends Controller
if ($transferType === 'child_separation' && $child) {
$childGender = $child['gender'] ?? 'male';
$memberRecord = $db->selectOne("SELECT created_at, activated_at FROM members WHERE id = ?", [(int) $memberId]);
$membershipStart = $memberRecord['activated_at'] ?? $memberRecord['created_at'] ?? null;
$membershipStartDate = $membershipStart ? substr($membershipStart, 0, 10) : null;
if ($childGender === 'female') {
// Female path: effective date = marriage_date only
......@@ -117,11 +120,9 @@ class TransferController extends Controller
if (!$marriageDate) {
return $this->redirect("/transfers/create/{$memberId}")->withError('يجب إدخال تاريخ الزواج لفصل الإناث');
}
$memberRecord = $db->selectOne("SELECT created_at, activated_at FROM members WHERE id = ?", [(int) $memberId]);
$membershipStart = $memberRecord['activated_at'] ?? $memberRecord['created_at'] ?? null;
if ($membershipStart && $marriageDate < substr($membershipStart, 0, 10)) {
if ($membershipStartDate && $marriageDate < $membershipStartDate) {
return $this->redirect("/transfers/create/{$memberId}")->withError(
'تاريخ الزواج (' . $marriageDate . ') لا يمكن أن يسبق تاريخ إنشاء العضوية (' . substr($membershipStart, 0, 10) . '). يرجى مراجعة البيانات.'
'تاريخ الزواج (' . $marriageDate . ') لا يمكن أن يسبق تاريخ إنشاء العضوية (' . $membershipStartDate . '). يرجى مراجعة البيانات.'
);
}
$effectiveTransferDate = $marriageDate;
......@@ -160,6 +161,12 @@ class TransferController extends Controller
);
$dateTurned25 = $dates['date_turned_25'];
$effectiveTransferDate = $dates['effective_transfer_date'];
if ($membershipStartDate && $effectiveTransferDate && $effectiveTransferDate < $membershipStartDate) {
return $this->redirect("/transfers/create/{$memberId}")->withError(
'تاريخ الفصل المحسوب (' . $effectiveTransferDate . ') لا يمكن أن يسبق تاريخ إنشاء العضوية (' . $membershipStartDate . '). يرجى مراجعة البيانات.'
);
}
}
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment