-
Mahmoud Aglan authored
- Add FIFO payment validation: must pay oldest year first before newer years - Add OverdueFineApplicator::applyForMember() for on-demand fine recalculation - Rewrite view with year-grouped sections, fine breakdown panels, totals - Add data migration to fix corrupted rows (paid_amount with no payment_id) - Show fine calculation details (percentage × base = amount, from rules engine) - Disable pay buttons for non-oldest years with Arabic tooltip - Summary cards showing total debt, fines, and years overdue Co-Authored-By:Claude Opus 4.6 <noreply@anthropic.com>
194da186