-- ══════════════════════════════════════════════════════════════════════════
-- financeiro_config_setup.sql
-- Setup das tabelas para o módulo de Configurações Financeiras
-- Execute este script UMA ÚNICA VEZ no banco "helpcar"
-- ══════════════════════════════════════════════════════════════════════════


-- ── 1. Bancos / Depósitos (tabela nova) ──────────────────────────────────
--
-- Representa instituições financeiras ou cofres (ex: Banco Itaú, Caixa,
-- Dinheiro em Espécie) que podem ser vinculadas a contas futuras.
-- ─────────────────────────────────────────────────────────────────────────

CREATE TABLE IF NOT EXISTS financial_banks (
    id         INT          NOT NULL AUTO_INCREMENT,
    nome       VARCHAR(100) NOT NULL,
    active     TINYINT(1)   NOT NULL DEFAULT 1,
    created_at TIMESTAMP    NOT NULL DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP    NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;


-- ── 2. Garantir colunas em financial_accounts (já existente) ─────────────
--
-- A tabela financial_accounts já existe no sistema.
-- O script abaixo adiciona colunas caso ainda não existam,
-- sem risco de erro se já estiverem presentes.
-- ─────────────────────────────────────────────────────────────────────────

ALTER TABLE financial_accounts
    MODIFY COLUMN saldo_inicial DECIMAL(15,2) NOT NULL DEFAULT 0.00;

-- Vincula banco à conta
ALTER TABLE financial_accounts
    ADD COLUMN IF NOT EXISTS bank_id INT NULL DEFAULT NULL,
    ADD COLUMN IF NOT EXISTS apelido VARCHAR(100) NULL DEFAULT NULL;

-- Índice para performance
ALTER TABLE financial_accounts
    ADD INDEX IF NOT EXISTS idx_bank_id (bank_id);


-- ── 3. Garantir colunas em financial_categories (já existente) ───────────
--
-- Verifica se a coluna "color" existe; adiciona se não existir.
-- ─────────────────────────────────────────────────────────────────────────

ALTER TABLE financial_categories
    MODIFY COLUMN type  ENUM('entrada','saida') NOT NULL DEFAULT 'entrada',
    MODIFY COLUMN color VARCHAR(7) NULL DEFAULT NULL;


-- ── 4. Dados iniciais: Bancos populares (opcional) ───────────────────────

INSERT IGNORE INTO financial_banks (nome) VALUES
    ('Banco do Brasil'),
    ('Caixa Econômica Federal'),
    ('Itaú'),
    ('Bradesco'),
    ('Santander'),
    ('Nubank'),
    ('Inter'),
    ('Sicoob'),
    ('Dinheiro em Espécie');


-- ── 5. Verificação ───────────────────────────────────────────────────────

SELECT 'financial_banks'      AS tabela, COUNT(*) AS registros FROM financial_banks
UNION ALL
SELECT 'financial_accounts'   AS tabela, COUNT(*) AS registros FROM financial_accounts
UNION ALL
SELECT 'financial_categories' AS tabela, COUNT(*) AS registros FROM financial_categories;
