-- Tabela de transferências entre contas
CREATE TABLE IF NOT EXISTS account_transfers (
    id INT AUTO_INCREMENT PRIMARY KEY,
    from_account_id INT NOT NULL COMMENT 'ID da conta de origem',
    to_account_id INT NOT NULL COMMENT 'ID da conta de destino',
    amount DECIMAL(15, 2) NOT NULL COMMENT 'Valor da transferência',
    transfer_date DATE NOT NULL COMMENT 'Data da transferência',
    description TEXT DEFAULT NULL COMMENT 'Observação/descrição da transferência',
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    FOREIGN KEY (from_account_id) REFERENCES accounts(id) ON DELETE RESTRICT,
    FOREIGN KEY (to_account_id) REFERENCES accounts(id) ON DELETE RESTRICT,
    INDEX idx_from_account (from_account_id),
    INDEX idx_to_account (to_account_id),
    INDEX idx_transfer_date (transfer_date)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Histórico de transferências entre contas';

-- Adiciona colunas de conta recorrente na tabela payables (se não existirem)
ALTER TABLE payables
    ADD COLUMN IF NOT EXISTS is_recurring TINYINT(1) DEFAULT 0 COMMENT 'Indica se é conta recorrente',
    ADD COLUMN IF NOT EXISTS first_due_day DATE DEFAULT NULL COMMENT 'Data do primeiro vencimento',
    ADD COLUMN IF NOT EXISTS recurring_due_day INT DEFAULT NULL COMMENT 'Dia dos demais vencimentos (1-31)';

-- Atualiza a tabela transactions para incluir tipo 'transfer'
ALTER TABLE transactions
    MODIFY COLUMN reference_type ENUM('receivable', 'payable', 'manual', 'transfer') DEFAULT 'manual' COMMENT 'Tipo de referência';

