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