66 lines
2.3 KiB
SQL
66 lines
2.3 KiB
SQL
-- =====================================================
|
|
-- SCRIPT CORRIGIDO: CRIAR TABELA DE PARCELAS
|
|
-- Execute este script no Supabase SQL Editor
|
|
-- =====================================================
|
|
|
|
-- Criar tabela de parcelas (se não existir)
|
|
CREATE TABLE IF NOT EXISTS venda_parcelas (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
venda_id UUID NOT NULL REFERENCES vendas(id) ON DELETE CASCADE,
|
|
numero_parcela INTEGER NOT NULL,
|
|
valor DECIMAL(10,2) NOT NULL,
|
|
data_vencimento DATE NOT NULL,
|
|
status TEXT DEFAULT 'pendente' CHECK (status IN ('pendente', 'pago', 'vencida', 'cancelada')),
|
|
data_pagamento TIMESTAMP WITH TIME ZONE,
|
|
pix_payment_id TEXT,
|
|
pix_qr_code TEXT,
|
|
pix_qr_code_base64 TEXT,
|
|
observacoes TEXT,
|
|
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
|
|
updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
|
|
UNIQUE(venda_id, numero_parcela)
|
|
);
|
|
|
|
-- Criar índices (se não existirem)
|
|
CREATE INDEX IF NOT EXISTS idx_venda_parcelas_venda ON venda_parcelas(venda_id);
|
|
CREATE INDEX IF NOT EXISTS idx_venda_parcelas_status ON venda_parcelas(status);
|
|
CREATE INDEX IF NOT EXISTS idx_venda_parcelas_vencimento ON venda_parcelas(data_vencimento);
|
|
|
|
-- Remover trigger antiga se existir e criar nova
|
|
DROP TRIGGER IF EXISTS update_venda_parcelas_updated_at ON venda_parcelas;
|
|
CREATE TRIGGER update_venda_parcelas_updated_at
|
|
BEFORE UPDATE ON venda_parcelas
|
|
FOR EACH ROW
|
|
EXECUTE FUNCTION update_updated_at_column();
|
|
|
|
-- Habilitar RLS
|
|
ALTER TABLE venda_parcelas ENABLE ROW LEVEL SECURITY;
|
|
|
|
-- Remover política antiga se existir
|
|
DROP POLICY IF EXISTS "Enable all operations for authenticated users" ON venda_parcelas;
|
|
|
|
-- Criar política de acesso
|
|
CREATE POLICY "Enable all operations for authenticated users"
|
|
ON venda_parcelas
|
|
FOR ALL
|
|
USING (true);
|
|
|
|
-- Verificar se foi criado com sucesso
|
|
DO $$
|
|
DECLARE
|
|
table_exists BOOLEAN;
|
|
BEGIN
|
|
SELECT EXISTS (
|
|
SELECT FROM information_schema.tables
|
|
WHERE table_name = 'venda_parcelas'
|
|
) INTO table_exists;
|
|
|
|
IF table_exists THEN
|
|
RAISE NOTICE '✅ Tabela venda_parcelas criada/verificada com sucesso!';
|
|
RAISE NOTICE '📝 Próximo passo: Reinicie o servidor Node.js';
|
|
RAISE NOTICE '🚀 Depois: Crie uma nova venda parcelada para testar';
|
|
ELSE
|
|
RAISE NOTICE '❌ Erro: Tabela não foi criada';
|
|
END IF;
|
|
END $$;
|