-- ============================================================ -- 021_account_default_currency -- -- Make the default deal currency configurable per account. -- -- Before this, the app hardcoded USD everywhere — deal-value -- formatters, the new-deal form, and automation-created deals all -- assumed USD. wacrm is self-hostable and used globally, so a fixed -- USD default made deal tracking unhelpful for non-US businesses -- (issue #218). -- -- We add a single `default_currency` column to `accounts`. New deals -- and all aggregated totals (pipeline/dashboard) format in this -- currency; existing deals keep their own saved `deals.currency`. -- We enforce one currency per account (no FX conversion) — the -- issue's recommended first pass. -- -- RLS: no change needed. The existing `accounts_update` policy -- (017) already restricts writes to admins+, which is exactly who -- should change an account-wide setting. -- ============================================================ ALTER TABLE accounts ADD COLUMN IF NOT EXISTS default_currency TEXT NOT NULL DEFAULT 'USD'; -- Keep the value an ISO-4217-shaped 3-letter uppercase code without -- pinning to a fixed enum — forks can use any currency Intl supports. ALTER TABLE accounts DROP CONSTRAINT IF EXISTS accounts_default_currency_format; ALTER TABLE accounts ADD CONSTRAINT accounts_default_currency_format CHECK (default_currency ~ '^[A-Z]{3}$');