Prestige Barber Club v4.44.10 - Membership NET Dashboard Fix ROOT CAUSE Membership embedded in POS stored membership_sales.total_amount before the transaction-level member tier discount. Dashboard summed that gross membership amount, so a package such as Rp125,000 could still display as Rp125,000 even though the combined POS transaction received a member discount. FIX 1. Standalone membership continues to use membership_sales.total_amount (already net membership-specific discounts). 2. Embedded POS membership uses transaction_membership_items.amount (already net card discount). 3. The transaction-level member discount + extra discount are allocated proportionally using transaction.discount_base_amount. 4. Dashboard Penjualan Member, Membership Reconciliation, and Membership Sales History display effective NET membership revenue. 5. Gross amount is preserved for audit; allocated transaction discount is displayed separately. 6. No historical transaction rows are destructively rewritten. The fix derives the correct effective net from existing ledger data. FORMULA Embedded membership NET = tmi.amount - tmi.amount * (member_discount_amount + extra_discount_amount) / discount_base_amount (clamped at >= 0)