-- 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';