feat: first-payment email + blast endpoint #376
No reviewers
Labels
No labels
domain:backend
domain:devops
domain:frontend
status:approved
status:in-progress
status:needs-fix
status:qa
type:bug
type:devops
type:feature
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
forgejo_admin/basketball-api!376
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "369-first-payment-email-blast"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Adds
send_first_payment_emailservice function andPOST /admin/email/first-paymentblast endpoint for sending prorated first-month payment emails to parents of signed players after their first practice.Changes
first_paymenttoEmailTypeenum_calculate_prorated_fee()helper (same formula as westside-contracts:round(fee * 25/30 / 5) * 5) andsend_first_payment_email()with branded HTML, plaintext fallback, and EmailLog persistencePOST /admin/email/first-paymentendpoint withtest_emailquery param filter, targeting players withcontract_status=signedand non-nullcontract_tokenfirst_paymentTest Plan
test_checkout.pywebhook failures excluded -- unrelated to this PR)ruff formatandruff checkcleanReview Checklist
Related Notes
None.
Related
Closes #369
QA Review -- PR #376
Summary
Adds
send_first_payment_emailservice function,_calculate_prorated_feehelper, andPOST /admin/email/first-paymentblast endpoint. 6 files changed, 520 additions.Findings
No blocking issues.
Positive observations:
round(fee * 25/30 / 5) * 5settings.frontend_url(matching checkout.py patterns), notsettings.base_urlNits (non-blocking):
Test Results (per PR)
VERDICT: APPROVED