Mejoras
Local pay now updates the real plan columns
Marking an EC$ invoice paid updates the owner plan and 30-day period in one step, instead of writing a workspace column that does not exist.
Admin mark-paid was saving the invoice then failing on workspaces.planid, so the plan and subscriptiontier never changed. It now uses users.subscriptiontier and subscriptionperiod_end, plus workspace credits, in one database transaction. Invoice amounts come from the server Starter/Pro price, not the client. Change-tier reports errors instead of hiding them.
