• Mahmoud Aglan's avatar
    feat(accounting): allocation wizard with a live running remainder · 00dfe062
    Mahmoud Aglan authored
    Splitting a payment across GL accounts previously meant the advanced rule
    editor — a table of lines with no feedback until save. The finance team's
    actual question is "20% here, 30% there, where does the rest go?", which
    needs the remainder visible while you allocate.
    
    - New wizard screen: base amount (pre-filled from the stream's actual
      collection average), member-category scope, progressive allocation with
      the unallocated balance as a running figure plus a proportional bar,
      a mandatory remainder destination, and a live journal-entry preview
      that balances before you can save.
    - The wizard's arithmetic mirrors RevenueAllocator exactly — tax off the
      top, fixed lines from the pool, percentages of net-after-fixed — so the
      preview is what actually posts. Verified against the live allocator:
      150,000 → 20%/30%/rest = 30,000 / 45,000 / 75,000, and with 14%
      inclusive VAT = 26,315.79 / 39,473.69 / 65,789.47 on net 131,578.95.
    - Wire member_category through resolveRule() with specificity scoring
      (category > branch > payment method), so a working-member split wins
      over the general rule with no extra configuration.
    - update() resolves and supersedes only the same-scope rule, and no
      longer reads $memberCategory before assigning it.
    - Wizard is now the default action from the mapping list and the
      connection centre; the advanced editor moves behind a  link.
    - Arabic tutorial in docs/معالج-توزيع-المبالغ.md.
    Co-Authored-By: 's avatarClaude Opus 5 (1M context) <noreply@anthropic.com>
    00dfe062
Name
Last commit
Last update
.claude Loading commit data...
Another ERP that we may want to cheat from Loading commit data...
HR requests Loading commit data...
Proposal Loading commit data...
Server Connection Data Loading commit data...
app Loading commit data...
config Loading commit data...
cron Loading commit data...
database Loading commit data...
docker Loading commit data...
docs Loading commit data...
public Loading commit data...
support_tickets_downloads/support_screenshots Loading commit data...
tests Loading commit data...
tools Loading commit data...
.dockerignore Loading commit data...
.editorconfig Loading commit data...
.env Loading commit data...
.env.example Loading commit data...
.gitignore Loading commit data...
.php-cs-fixer.php Loading commit data...
BalanceSheet.html Loading commit data...
CLAUDE.md Loading commit data...
Dockerfile Loading commit data...
Makefile Loading commit data...
SYSTEM_MAP.md Loading commit data...
Sports Module System Design DETAILED.md Loading commit data...
UPGRADE_PLAN.md Loading commit data...
captain-definition Loading commit data...
cli.php Loading commit data...
composer.json Loading commit data...
composer.lock Loading commit data...
interesting_features.md Loading commit data...
phpstan.neon Loading commit data...
phpunit.xml Loading commit data...
sports activity stuff .txt Loading commit data...
sports-activity-alignment-plan.md Loading commit data...
sports-activity-smart-filtering-plan.md Loading commit data...
trial_balance_2026-01-01_to_2026-05-10.csv Loading commit data...