-- migrations/payment_settings.sql -- Tabela de configurações de formas de pagamento por terapeuta/owner -- Execute no Supabase SQL Editor CREATE TABLE IF NOT EXISTS payment_settings ( id uuid DEFAULT gen_random_uuid() PRIMARY KEY, owner_id uuid NOT NULL REFERENCES auth.users(id) ON DELETE CASCADE, tenant_id uuid REFERENCES tenants(id) ON DELETE CASCADE, -- Pix pix_ativo boolean NOT NULL DEFAULT false, pix_tipo text NOT NULL DEFAULT 'cpf', -- cpf | cnpj | email | celular | aleatoria pix_chave text NOT NULL DEFAULT '', pix_nome_titular text NOT NULL DEFAULT '', -- Depósito / TED deposito_ativo boolean NOT NULL DEFAULT false, deposito_banco text NOT NULL DEFAULT '', deposito_agencia text NOT NULL DEFAULT '', deposito_conta text NOT NULL DEFAULT '', deposito_tipo_conta text NOT NULL DEFAULT 'corrente', -- corrente | poupanca deposito_titular text NOT NULL DEFAULT '', deposito_cpf_cnpj text NOT NULL DEFAULT '', -- Dinheiro (espécie) dinheiro_ativo boolean NOT NULL DEFAULT false, -- Cartão (maquininha presencial) cartao_ativo boolean NOT NULL DEFAULT false, cartao_instrucao text NOT NULL DEFAULT '', -- Plano de saúde / Convênio convenio_ativo boolean NOT NULL DEFAULT false, convenio_lista text NOT NULL DEFAULT '', -- texto livre com convênios aceitos -- Observações gerais exibidas ao paciente observacoes_pagamento text NOT NULL DEFAULT '', created_at timestamptz DEFAULT now(), updated_at timestamptz DEFAULT now(), CONSTRAINT payment_settings_owner_id_key UNIQUE (owner_id) ); -- Índice por tenant CREATE INDEX IF NOT EXISTS payment_settings_tenant_id_idx ON payment_settings(tenant_id); -- RLS ALTER TABLE payment_settings ENABLE ROW LEVEL SECURITY; -- Owner lê e escreve os próprios dados DROP POLICY IF EXISTS "payment_settings: owner full access" ON payment_settings; CREATE POLICY "payment_settings: owner full access" ON payment_settings FOR ALL USING (owner_id = auth.uid()) WITH CHECK (owner_id = auth.uid()); -- updated_at automático CREATE OR REPLACE FUNCTION update_payment_settings_updated_at() RETURNS TRIGGER LANGUAGE plpgsql AS $$ BEGIN NEW.updated_at = now(); RETURN NEW; END; $$; DROP TRIGGER IF EXISTS trg_payment_settings_updated_at ON payment_settings; CREATE TRIGGER trg_payment_settings_updated_at BEFORE UPDATE ON payment_settings FOR EACH ROW EXECUTE FUNCTION update_payment_settings_updated_at();