-
Mahmoud Aglan authored
Payment modes: - Full (default): pays entire invoice amount - Partial: enter amount paid now, remainder stays as balance due on invoice - Split: two methods, amount1 + calculated remainder, both recorded as payments All 7 PaymentMethod values now available: - cash: no extra fields - card: transaction_reference (required) - bank_transfer: transaction_reference (required), bank_name (optional) - online (Instapay/digital wallets): transaction_reference (required) - wallet (club wallet): deducts from member balance - cheque: cheque_number (required), bank_name (optional) - other: notes field Each payment recorded with gateway_data JSON (ref, cheque_number, bank_name) Enrollment payment_status only set to 'paid' when full amount covered Validation rules built dynamically from active mode + method combination Co-Authored-By:Claude Sonnet 4.6 <noreply@anthropic.com>
c6327cf7