• Mahmoud Aglan's avatar
    fix(pricing,members): merge board-offer discounts into the member special-discount dropdown · 01e3b4ef
    Mahmoud Aglan authored
    Client clarified their earlier request: the member "special discount"
    dropdown should show board-approved special_discounts AND active
    عروض مجلس الإدارة (board_offers) cash discounts side by side, not one
    instead of the other — they'd stopped seeing anything they'd added
    under Board Offers.
    
    - Add members.special_discount_source ('special_discount'|'board_offer')
      and drop the hard FK on special_discount_id (a single column can no
      longer FK exactly one table). Integrity is now validated in
      MemberController::parseDiscountSelection().
    - BoardOffer::allActiveWithCashDiscount() surfaces board offers that
      define a cash discount as selectable options.
    - SpecialDiscountService::resolveAssignedDiscount()/amountForType() give
      one place that normalizes "the member's assigned discount" across both
      source tables — used by BillingService's invoice line item, the show
      page's applied-discount banner, and the dropdown's own validation.
    - fill-form/edit/show views render two <optgroup>s ("عروض مجلس الإدارة" /
      "الخصومات الخاصة") with prefixed option values (bo:<id> / sd:<id>) so a
      single form field can select from either table; edit.php's live
      discount-amount preview now handles fixed-amount discounts too, not
      just percentage.
    Co-Authored-By: 's avatarClaude Sonnet 5 <noreply@anthropic.com>
    01e3b4ef
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...