-- ============================================================================ -- Adiciona coluna charging_style em billing_contracts -- ---------------------------------------------------------------------------- -- Identifica como o pacote foi cobrado na criação: -- 'upfront' → 1 financial_record total criado na hora; sessões só -- consomem saldo, não geram nova cobrança -- 'saldo' → sem financial_record na criação; cada sessão realizada -- gera 1 cobrança individual e incrementa sessions_used -- 'per_session'→ N financial_records já criados na materialização da série -- (chargeMode='per_session' do AgendaEventDialog) -- -- Sem esse campo, o handler de status change não saberia distinguir entre -- "já tudo pago, só atualizar status" vs "criar cobrança nova". -- ============================================================================ BEGIN; ALTER TABLE public.billing_contracts ADD COLUMN IF NOT EXISTS charging_style text DEFAULT 'saldo'; -- Constraint pra restringir aos 3 valores válidos ALTER TABLE public.billing_contracts DROP CONSTRAINT IF EXISTS billing_contracts_charging_style_chk; ALTER TABLE public.billing_contracts ADD CONSTRAINT billing_contracts_charging_style_chk CHECK (charging_style = ANY (ARRAY['upfront'::text, 'saldo'::text, 'per_session'::text])); COMMENT ON COLUMN public.billing_contracts.charging_style IS 'Estilo de cobrança: upfront (1 record total no início), saldo (cobra por sessão realizada), per_session (N records já criados).'; COMMIT;