Add annual products with dual pricing and installment plans
- New migration: billing_cycle (one_time/annual), member_price, non_member_price on products; product_installment_plans table (per-product, per-tier plan templates)
- ProductInstallmentPlan model with scopeActive/forTier, downPaymentAmount/regularInstallmentAmount helpers
- Product model: priceForTier(), isAnnual(), installmentPlans() relationship
- ProductForm: annual billing section with member/non-member dual prices and installment plan builder (add/remove rows, upsert on save)
- Registration wizard: essentialProducts() and hotbuyResults() now return billing_cycle and plans[]; addHotbuyItem() carries plans into cart; setHotbuyPlan() selects a plan per cart item; confirm() generates PaymentPlan + Installment rows for annual items with a selected plan
- Wizard blade: annual cart items show purple "سنوي" badge, plan pills (full payment + per-plan buttons), and installment breakdown preview on selection
Co-Authored-By:
Claude Sonnet 4.6 <noreply@anthropic.com>
Showing
Please register or sign in to comment