chore: sincroniza projeto para gitea
This commit is contained in:
41
sql/create-venda-parcelas.sql
Normal file
41
sql/create-venda-parcelas.sql
Normal file
@@ -0,0 +1,41 @@
|
||||
-- =====================================================
|
||||
-- TABELA DE PARCELAS INDIVIDUAIS DE VENDAS
|
||||
-- =====================================================
|
||||
|
||||
-- Criar tabela de parcelas
|
||||
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)
|
||||
);
|
||||
|
||||
-- Índices
|
||||
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);
|
||||
|
||||
-- Trigger para updated_at
|
||||
CREATE TRIGGER update_venda_parcelas_updated_at
|
||||
BEFORE UPDATE ON venda_parcelas
|
||||
FOR EACH ROW
|
||||
EXECUTE FUNCTION update_updated_at_column();
|
||||
|
||||
-- RLS
|
||||
ALTER TABLE venda_parcelas ENABLE ROW LEVEL SECURITY;
|
||||
CREATE POLICY "Enable all operations for authenticated users" ON venda_parcelas FOR ALL USING (true);
|
||||
|
||||
COMMENT ON TABLE venda_parcelas IS 'Armazena as parcelas individuais de cada venda parcelada';
|
||||
COMMENT ON COLUMN venda_parcelas.numero_parcela IS 'Número da parcela (1, 2, 3, etc)';
|
||||
COMMENT ON COLUMN venda_parcelas.status IS 'Status da parcela: pendente, pago, vencida, cancelada';
|
||||
COMMENT ON COLUMN venda_parcelas.pix_payment_id IS 'ID do pagamento PIX do MercadoPago';
|
||||
Reference in New Issue
Block a user