• 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
..
Controllers Loading commit data...
Models Loading commit data...
Services Loading commit data...
Views Loading commit data...
Routes.php Loading commit data...
bootstrap.php Loading commit data...