28 lines
1.5 KiB
SQL
28 lines
1.5 KiB
SQL
-- Criar tabela de devoluções e trocas
|
|
CREATE TABLE IF NOT EXISTS devolucoes (
|
|
id UUID DEFAULT gen_random_uuid() PRIMARY KEY,
|
|
venda_id UUID NOT NULL REFERENCES vendas(id) ON DELETE CASCADE,
|
|
item_id UUID NOT NULL REFERENCES venda_itens(id) ON DELETE CASCADE,
|
|
quantidade_devolvida INTEGER NOT NULL CHECK (quantidade_devolvida > 0),
|
|
valor_devolucao DECIMAL(10,2) NOT NULL CHECK (valor_devolucao >= 0),
|
|
tipo_operacao VARCHAR(20) DEFAULT 'devolucao' CHECK (tipo_operacao IN ('devolucao', 'troca')),
|
|
motivo TEXT,
|
|
data_devolucao DATE NOT NULL DEFAULT CURRENT_DATE,
|
|
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
|
|
updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
|
|
);
|
|
|
|
-- Criar índices para performance
|
|
CREATE INDEX IF NOT EXISTS idx_devolucoes_venda_id ON devolucoes(venda_id);
|
|
CREATE INDEX IF NOT EXISTS idx_devolucoes_item_id ON devolucoes(item_id);
|
|
CREATE INDEX IF NOT EXISTS idx_devolucoes_data ON devolucoes(data_devolucao);
|
|
|
|
-- Comentários para documentação
|
|
COMMENT ON TABLE devolucoes IS 'Registro de devoluções de produtos vendidos';
|
|
COMMENT ON COLUMN devolucoes.venda_id IS 'ID da venda original';
|
|
COMMENT ON COLUMN devolucoes.item_id IS 'ID do item da venda que foi devolvido';
|
|
COMMENT ON COLUMN devolucoes.quantidade_devolvida IS 'Quantidade de itens devolvidos';
|
|
COMMENT ON COLUMN devolucoes.valor_devolucao IS 'Valor total da devolução';
|
|
COMMENT ON COLUMN devolucoes.motivo IS 'Motivo da devolução';
|
|
COMMENT ON COLUMN devolucoes.data_devolucao IS 'Data em que a devolução foi processada';
|