Fix semester context, attendance rosters, and billing workflows
- load global semester helpers consistently and use date-based semester defaults - fix grading and daily attendance duplicate student/section rows - keep attendance violations scoped to the current semester by default - update invoice, refund, discount, payment, and financial aid flows - add configuration cleanup migrations for duplicate calendar/semester keys - refresh parent registration/report-card and print request handling - update related models, services, views, cron notes, and test coverage
This commit is contained in:
@@ -164,6 +164,7 @@ class RefundEligibilityService
|
||||
{
|
||||
return match ($sourceType) {
|
||||
'invoice_overpayment' => $this->invoiceCreditCents($parentId, $invoiceId ?: $sourceId),
|
||||
'tuition_withdrawal' => $this->invoicePaidCents($parentId, $invoiceId ?: $sourceId),
|
||||
'payment_duplicate', 'payment_correction' => $this->paymentCreditCents($parentId, $invoiceId, $sourceId),
|
||||
'credit_memo', 'administrative_credit' => 0,
|
||||
default => 0,
|
||||
@@ -175,6 +176,22 @@ class RefundEligibilityService
|
||||
return $sourceType !== 'invoice_overpayment';
|
||||
}
|
||||
|
||||
protected function invoicePaidCents(int $parentId, int $invoiceId): int
|
||||
{
|
||||
if ($invoiceId <= 0) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
$invoice = $this->invoiceModel->find($invoiceId);
|
||||
if (!$invoice || (int)($invoice['parent_id'] ?? 0) !== $parentId) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
$ledger = $this->invoiceLedgerService->calculateInvoice($invoiceId);
|
||||
|
||||
return max(0, (int)($ledger['paidCents'] ?? 0));
|
||||
}
|
||||
|
||||
protected function invoiceCreditCents(int $parentId, int $invoiceId): int
|
||||
{
|
||||
if ($invoiceId <= 0) {
|
||||
|
||||
Reference in New Issue
Block a user