• DevPilot's avatar
    feat(accounting): gap tools so finance can close what the scanner won't guess · caca1389
    DevPilot authored
    Six streams were left unbooked because the source records no amount: a
    pool zone with no ticket price and no attendance, a player card with no
    fee column, a booking the code writes as zero. The scanner refuses to
    invent a figure, and should — a wrong number in the books is harder to
    find than a missing one, and it looks settled.
    
    But "the system cannot tell you" is not "nobody knows". Finance knows
    what a lane costs. This adds the screen where they say so.
    
    /accounting/gaps — one card per gap:
    
      see the blocker      what exactly is missing, and why it blocks
      propose a value      a flat rate per unit, or the recorded amount
      see the consequence  "احسبلي هينزل كام" computes without writing
      commit               reason and effective date are mandatory
    
    The reason is required because it is what turns an invented number into
    a management estimate — a legitimate basis to account on, provided it is
    stated, approved and attributable. The effective date is required
    because backdating a rate onto years of history rewrites results for
    periods already reported.
    
    Nothing posts from this screen. It records a decision; the accrual
    scanner acts on it next pass. Four new runners stay silent until a
    decision exists, so the rules ship configured but inert.
    
    Academy settlements get a different tool, because it is a different
    problem: the settlement engine reads `academy_contracts` (empty) while
    the 13 real contracts live in `sa_academy_contracts`. The tables are not
    copies — the settlement table carries settlement_day, grace_period_days
    and penalty_rate_pct, which the engine calculates with and the other
    table lacks. So the tool COPIES rather than moves, with the missing
    terms supplied by the accountant rather than defaulted silently, and the
    source contracts keep working untouched.
    
    Verified: gaps stay silent with no decision; a rate of 25/booking books
    8,800 over 352 bookings and re-running books nothing; switching off
    stops future accrual without reversing what was booked; all four
    validation rules reject bad input; 13 contracts import and re-import is
    a no-op. Trial balance still nets to 0.00.
    Co-Authored-By: 's avatarClaude Opus 5 <noreply@anthropic.com>
    caca1389
Name
Last commit
Last update
..
Academies Loading commit data...
AcademyContracts Loading commit data...
AccessMatrix Loading commit data...
Accounting Loading commit data...
Achievements Loading commit data...
ActivitySubscriptions Loading commit data...
Alerts Loading commit data...
Archive Loading commit data...
Audit Loading commit data...
Auth Loading commit data...
Branches Loading commit data...
Carnets Loading commit data...
Cashier Loading commit data...
Children Loading commit data...
Coaches Loading commit data...
Dashboard Loading commit data...
Death Loading commit data...
Disciplines Loading commit data...
Divorce Loading commit data...
Documents Loading commit data...
Facilities Loading commit data...
FacilityDashboards Loading commit data...
FacilityGrids Loading commit data...
Fines Loading commit data...
Foreign Loading commit data...
Forms Loading commit data...
HR Loading commit data...
Honorary Loading commit data...
Installments Loading commit data...
Interviews Loading commit data...
Inventory Loading commit data...
MatchCenter Loading commit data...
MedicalBoard Loading commit data...
Members Loading commit data...
News Loading commit data...
Notifications Loading commit data...
ParentPortal Loading commit data...
Payments Loading commit data...
PlayerAffairs Loading commit data...
PlayerApi Loading commit data...
PlayerAuth Loading commit data...
PlaygroundAdmin Loading commit data...
PoolManagement Loading commit data...
Pricing Loading commit data...
Procurement Loading commit data...
Receipts Loading commit data...
Rentals Loading commit data...
Reports Loading commit data...
Reservations Loading commit data...
Roles Loading commit data...
Rules Loading commit data...
Sales Loading commit data...
Scheduling Loading commit data...
Seasonal Loading commit data...
ServiceCatalog Loading commit data...
Sessions Loading commit data...
Settings Loading commit data...
Sports Loading commit data...
SportsActivity Loading commit data...
SportsDashboard Loading commit data...
Spouses Loading commit data...
Subscriptions Loading commit data...
Support Loading commit data...
Temporary Loading commit data...
Tournaments Loading commit data...
TrainerPortal Loading commit data...
Training Loading commit data...
TrainingGroups Loading commit data...
Transfers Loading commit data...
Treasury Loading commit data...
Tutorials Loading commit data...
Users Loading commit data...
Waiver Loading commit data...
Workflow Loading commit data...