-- ============================================================
-- Migration 021 — Camada 2: Override de comissão revenda↔agente
-- ============================================================
--
-- AG#9 / PRD-0006-EXT / ADR-0008
--
-- Adiciona 2 colunas opcionais em tbl_Representante (revenda Premium/Standard com
-- agente vinculado) para permitir negociações específicas que substituem o padrão
-- do agente vinculado APENAS naquela revenda. Modalidade NÃO muda no override
-- (decisão D-EXT-06 / ADR-0008): só os valores dentro da modalidade vigente.
--
-- Cria tabela `agente_hist_override_revenda` para auditoria das mudanças nos
-- overrides (gravação PHP-side via pattern salvaLog do newportaltefnet).
--
-- Snapshot do pedido continua imutável (D-03 PRD-0006). Override é lido NO MOMENTO
-- do INSERT pelo helper agente_resolver_snapshot() e carimbado nas 3 (agora 4 com
-- Migration 022) colunas snap do pedido. Mudanças posteriores no override NÃO
-- afetam pedidos antigos.
-- ============================================================

SET SESSION sql_mode = '';

ALTER TABLE tbl_Representante
  ADD COLUMN agente_pct_override DECIMAL(8,4) NULL DEFAULT NULL
    COMMENT 'Camada 2 / AG#9: override do percentual do agente vinculado para esta revenda. NULL=usa agente_pct_padrao do agente. Aplicavel quando modalidade do agente vinculado eh pct_parceiro ou pct_cliente_final.',
  ADD COLUMN agente_tabela_preco_override_cod INT NULL DEFAULT NULL
    COMMENT 'Camada 2 / AG#9: override da tabela de preco para esta revenda. FK soft -> tbl_Representante.id de outro agente cuja agente_tabela_preco sera usada. NULL=usa tabela do proprio agente vinculado. Aplicavel quando modalidade do agente vinculado eh tabela_preco.',
  ADD INDEX idx_repr_agente_pct_override (agente_pct_override),
  ADD INDEX idx_repr_agente_tab_override (agente_tabela_preco_override_cod);

CREATE TABLE IF NOT EXISTS agente_hist_override_revenda (
  id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  cod_Revenda INT NOT NULL COMMENT 'FK soft -> tbl_Representante.id (revenda Premium/Standard com idNatureza in (1,2))',
  campo VARCHAR(80) NOT NULL COMMENT 'Nome da coluna alterada: agente_pct_override | agente_tabela_preco_override_cod',
  valor_antigo TEXT NULL COMMENT 'Valor anterior (NULL se nao havia override antes). Texto para preservar formato exato.',
  valor_novo TEXT NULL COMMENT 'Valor novo (NULL se override foi removido).',
  alterado_at DATETIME NOT NULL COMMENT 'Timestamp da alteracao (NOW() do controller).',
  alterado_by INT NOT NULL COMMENT 'tbl_Usuario.idUsuario do operador que salvou (geralmente da $_SESSION).',
  origem VARCHAR(120) NOT NULL COMMENT 'Identificacao do contexto: updateRevenda.php | inserirRevenda.php | troca_agente_vinculado | etc.',
  INDEX idx_hist_ovr_rev (cod_Revenda, alterado_at),
  INDEX idx_hist_ovr_rev_campo (cod_Revenda, campo, alterado_at)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
  COMMENT='Camada 2 / AG#9: auditoria das mudancas nos overrides agente_pct_override e agente_tabela_preco_override_cod em tbl_Representante. Gravacao PHP-side pelos controllers updateRevenda/inserirRevenda (pattern salvaLog).';
