-- Migration V25: Fluxo de Caixa Enhancements (Estorno e Integração)
-- Data: 2026-02-23

-- 1. Adiçoões à tabela caixa_movimentacoes para gerenciar o estado da movimentação (Estorno)
ALTER TABLE caixa_movimentacoes
ADD COLUMN status ENUM('ativo', 'cancelado') NOT NULL DEFAULT 'ativo' AFTER data_hora,
ADD COLUMN cancelado_por INT DEFAULT NULL AFTER status,
ADD COLUMN cancelado_em DATETIME DEFAULT NULL AFTER cancelado_por,
ADD COLUMN motivo_estorno VARCHAR(255) DEFAULT NULL AFTER cancelado_em;

-- Adicionar FK para o usuário que realizou o cancelamento
ALTER TABLE caixa_movimentacoes
ADD CONSTRAINT fk_caixa_mov_cancelado_por
FOREIGN KEY (cancelado_por) REFERENCES usuarios(id) ON DELETE SET NULL;

-- 2. Permissoes Específicas para o Estorno (Opcional, mas recomendado para gestão fina)
-- Caso queira que apenas o admin ou financeiro estorne, mesmo que a recepção possa lançar.
INSERT IGNORE INTO permissoes (nome, chave, descricao) VALUES
('Estornar Lançamentos Caixa', 'caixa_estornar', 'Permite cancelar/estornar uma movimentação financeira no próprio caixa');

-- Conceder permissões de estorno para o administrador (perfil 1)
INSERT IGNORE INTO perfil_permissoes (perfil_id, permissao_id)
SELECT 1, id FROM permissoes WHERE chave = 'caixa_estornar';
