Ir al contenido principal
Petanque Life

Fee Management

F08.01 10 funcionalidades Plataforma+

En resumen

Fee Management is the configuration backbone for every chargeable item across the federation hierarchy, modelling composite licence fees as the sum of OrgNode-owned components alongside club affiliation tiers, competition entries, season-scoped early-bird and late-fee surcharges, configurable waivers, automated revenue splits, sanction and suspension surcharges, season-copy tooling and an immutable audit log covering every fee-configuration change.

Cómo funciona

The subsystem treats every fee as a structured composition rather than a single price. A licence fee is assembled from components owned by different OrgNode levels — for France, the part federale (FFPJP), part ligue, part comite departemental and assurance are summed at calculation time through /license-fees/calculate, with regional overrides applied via /license-fee-overrides/. Club affiliation, competition entry, sanction and suspension fees live in a unified FeeSchedule collection scoped by tenant, season and fee_category.

Season-to-season migration runs via /fee-management/copy-season, which clones FeeSchedule, LicenseFeeConfig and FeeSurchargeRule documents into the new season and shifts all deadline dates by the year delta, skipping duplicates. Time-based modifiers are encoded as FeeSurchargeRule entries: early_bird discounts and late_fee surcharges, fixed amount or percentage, scoped per licence type or competition class, computed via /fee-surcharges/calculate. Waivers (youth, veteran, disabled, family, honorary, low-income, custom) are configured per WaiverType with mode full / percentage / fixed and age-or-family-size criteria, resolved through /fee-waivers/calculate.

Once a fee is collected, RevenueDistributionRule splits it according to per-OrgNode percentage shares; /fee-splitting/calculate previews the breakdown and /fee-splitting/execute writes the resulting RevenueEntry rows for downstream bookkeeping. Sanction and suspension surcharges have dedicated calculators (/sanction-fee-configs/calculate/{season_id}, /suspension-fee-configs/calculate/{season_id}) supporting Sweden's 300 SEK per class and 2x senior-licence suspension fee. Every CRUD action on any fee configuration appends to an immutable FeeChangeLog (use_revision=False) which is queryable per entity and category through /fee-audit/.

Capacidades clave

  • Composite licence fee configuration with per-OrgNode component ownership and regional overrides
  • Season copy via /fee-management/copy-season cloning schedules, configs and surcharge rules with deadline shifting
  • Early-bird and late-fee surcharges, fixed or percentage, scoped per licence type and competition class
  • Waiver engine for youth, veteran, disabled, family, honorary and low-income discounts with age and family-size rules
  • Automatic fee splitting that writes RevenueEntry rows according to per-OrgNode RevenueDistributionRule
  • Tenant-configurable sanction and suspension fees including multiplier mode keyed to a reference licence price
  • Immutable FeeChangeLog audit trail covering every CRUD action on any fee configuration

En la práctica

A national federation treasurer opens the new season and clicks Copy from previous season. The system clones every FeeSchedule, LicenseFeeConfig and FeeSurchargeRule into the new season, shifts the early-bird deadline forward by 365 days and reports six duplicates skipped. She then opens the senior licence configuration and lifts the part federale by 5 EUR; the change immediately appears in the FeeChangeLog with her user id, before and after values, and timestamp.

When the first club registers, the system calls /license-fees/calculate, sums the components, applies the youth waiver for a 16-year-old member, computes the total and triggers /fee-splitting/execute to write four RevenueEntry rows distributing the fee to federation, ligue, comite and the insurance pool.

Funcionalidades de este subsistema

10
ID Status Funcionalidades
F08.01.01 Entregado Composite license fee configuration — license fee = sum of configurable components set at different OrgNode levels. Example France: part fédérale (set by FFPJP) + part ligue (set by ligue régionale) + part comité (set by comité départemental) + assurance. Each component configurable per license type, age, category. Supports regional price variation (France, Spain). ✅ PL-F0801a
F08.01.02 Entregado Club affiliation fee configuration (flat or per-member) ✅ PL-F0801a
F08.01.03 Entregado Competition entry fee management ✅ PL-F0801a
F08.01.04 Entregado Fee schedules per season/year ✅ PL-F0801a
F08.01.05 Entregado Early bird / late fee surcharges ✅ PL-F0801a
F08.01.06 Entregado Fee waivers and discounts (youth, veteran, disabled, family) — configurable per tenant (e.g., Sweden: no sanction fee for youth classes) ✅ PL-F0801b
F08.01.07 Entregado Fee splitting with automatic distribution — when a license is purchased, the system automatically splits the payment to the correct recipients (federation account, regional account, district account, insurance). Configurable split ratios per OrgNode level. ✅ PL-F0801b
F08.01.08 Entregado Fee history and audit trail ✅ PL-F0801b
F08.01.09 Entregado Sanction fee per competition class — configurable per tenant (e.g., Sweden: 300 SEK per class, paid to district where competition is held). Supports different fee rules per competition level. ✅ PL-F0801b
F08.01.10 Entregado License suspension administrative fee — configurable per tenant (e.g., Sweden: 2× senior license fee, charged to the club requesting suspension) ✅ PL-F0801b

Partes interesadas que necesitan este subsistema

Aparece en 1 análisis de partes interesadas