Redemption codes can now redeem either quota (existing) or a subscription plan (new). The Redemption model gains Type (1=quota, 2=subscription) and PlanId fields. When Type=2, Redeem() calls CreateUserSubscriptionFromPlanTx to activate the plan, reusing all existing subscription logic (purchase limits, group upgrade, quota reset, expiry). Old codes default to Type=0 which behaves identically to Type=1 (quota).