• Mahmoud Aglan's avatar
    Fix subscription penalty escalation to use correct per-year overdue model · 6cb14f82
    Mahmoud Aglan authored
    The old calculator applied a flat percentage by position (oldest=10%, next=50%,
    next=100%). The correct model: each year's penalty escalates based on how long
    THAT SPECIFIC year has been overdue:
    - Same year past grace (3 months): 10%
    - 1 year overdue: 50%
    - 2 years overdue: 100%
    - 3 years overdue: 200%
    - 4 years overdue: 300%
    - 5+ years: membership dropped
    
    Also adds:
    - Grace period rule (SUB_GRACE_MONTHS = 3, extended = 4 with trustees approval)
    - YEAR_4 (200%) and YEAR_5 (300%) rules in DB
    - canReinstate() method for 12-month reinstatement window
    - expireReinstatements() for permanent drop after window expires
    Co-Authored-By: 's avatarClaude Opus 4.6 <noreply@anthropic.com>
    6cb14f82
SubscriptionCalculator.php 5.03 KB