fix(pricing,members): merge board-offer discounts into the member special-discount dropdown
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:
Claude Sonnet 5 <noreply@anthropic.com>
Showing
Please register or sign in to comment