• Mahmoud Aglan's avatar
    feat(reports): what a player owes and has paid, by birth cohort · 28fc2e02
    Mahmoud Aglan authored
    Every dues report was per invoice, so answering 'how much is on this boy'
    meant adding rows up by eye, and there was no way to ask it of a cohort at
    all — no report anywhere could filter on a date of birth. Two new ones:
    participant_dues totals each player, participant_invoice_history is the
    same money invoice by invoice. Both take a birth-year box, because that is
    how a club talks about its players: مواليد 2015 is a cohort, not a search.
    
    What is owed sums each invoice's stored due_amount floored at zero rather
    than subtracting paid from billed. An overpaid invoice carries a negative
    due_amount, and summing the subtraction would let it cancel another
    invoice's real debt — the report would quietly forgive money.
    
    The birth-year filter reaches invoices → participants → people through
    whereHas rather than a join, so Participant's BranchScope survives the
    subquery and another branch's player cannot be reached by typing their
    membership number into the search box.
    
    Filters are declared in the report config instead of special-cased, and
    the CSV export builds its arguments from the same list. That closes an
    existing divergence: the minimum-absences filter was wired into the page
    and not the export, so filtering the absentees report and downloading it
    gave you the unfiltered one.
    Co-Authored-By: 's avatarClaude Opus 5 (1M context) <noreply@anthropic.com>
    28fc2e02
Name
Last commit
Last update
Screenshots Loading commit data...
app Loading commit data...
bootstrap Loading commit data...
config Loading commit data...
database Loading commit data...
docker Loading commit data...
docs Loading commit data...
docs-site Loading commit data...
flutter_shell Loading commit data...
gap-filling-plans Loading commit data...
lang Loading commit data...
marketing-site Loading commit data...
plans Loading commit data...
public Loading commit data...
reference/oc-sport Loading commit data...
resources Loading commit data...
routes Loading commit data...
scripts Loading commit data...
storage Loading commit data...
tests Loading commit data...
.dockerignore Loading commit data...
.editorconfig Loading commit data...
.env.example Loading commit data...
.gitattributes Loading commit data...
.gitignore Loading commit data...
.npmrc Loading commit data...
Beanding Guide.txt Loading commit data...
CLAUDE.md Loading commit data...
Dockerfile Loading commit data...
README.md Loading commit data...
artisan Loading commit data...
captain-definition Loading commit data...
composer.json Loading commit data...
composer.lock Loading commit data...
deploy.sh Loading commit data...
elcaptain-sportsonly-db.md Loading commit data...
one-click-app.yml Loading commit data...
package-lock.json Loading commit data...
package.json Loading commit data...
phpunit.xml Loading commit data...
system info.txt Loading commit data...
vite.config.js Loading commit data...
نادى الشيخ زايد كشف بيانات اللاعبين (2).html Loading commit data...