ae93406853d6dd732ed9740ee179262c6a1ccc6e
Documents a revision, not a rewrite. The snapshot-on-Due pattern, dated prices and the asymmetric dry-run commands are sound and are kept; what's wrong is three hardcoded assumptions in models.py: annual-only periods, a global GRACE_DAYS, and grace measured from period_end -- which gives a club ~410 days of unpaid use before archive_overdue_clubs will touch it. Proposes per-plan duration/lead/grace, grace measured from period_start, a Tier -> Plan rename, and a club-facing unpaid-dues warning with a countdown to archiving. Flags the migration hazard prominently: re-deriving grace_until on existing dues under the new rule puts the date in the past for every open annual period, which would archive the whole paying customer base on the next --commit run.
Description
No description provided
Languages
Python
59.1%
HTML
28.3%
CSS
8%
JavaScript
4.2%
Shell
0.2%
Other
0.2%