-- =====================================================================
-- Migration 020 — DOWN: reverter renomeação ENUM agente_modalidade
-- Data: 09/05/2026
-- PRD: PRD-0002 RF-02 + ADR-0007
--
-- Reversão simétrica da .up.sql:
--   - Volta ENUM para ('pct_venda','pct_comissao','tabela_preco')
--   - Reverte 2 cadastros + snapshots para 'pct_venda'
--   - Recria triggers (idênticas em comportamento)
--
-- IMPORTANTE: a reversão perde a distinção semântica nova
-- (pct_parceiro vs pct_cliente_final → ambos voltam para pct_venda).
-- Use somente em emergência de rollback antes da Fernanda-QA validar.
-- =====================================================================

SET SESSION sql_mode = '';

-- 1) DROP triggers
DROP TRIGGER IF EXISTS trg_agente_snapshot_faturamento_bi;
DROP TRIGGER IF EXISTS trg_agente_snapshot_histpedido_bi;

-- 2) UPDATE dados de volta para pct_venda (perda semântica esperada)
UPDATE tbl_Representante
   SET agente_modalidade = 'pct_venda'
 WHERE id IN (278, 417)
   AND agente_modalidade IN ('pct_parceiro','pct_cliente_final');

UPDATE tbl_Pedido
   SET agente_modalidade_snap = 'pct_venda'
 WHERE agente_modalidade_snap IN ('pct_parceiro','pct_cliente_final');

UPDATE tbl_Faturamento
   SET agente_modalidade_snap = 'pct_venda'
 WHERE agente_modalidade_snap IN ('pct_parceiro','pct_cliente_final');

UPDATE tbl_HistPedido
   SET agente_modalidade_snap = 'pct_venda'
 WHERE agente_modalidade_snap IN ('pct_parceiro','pct_cliente_final');

-- 3) ALTER ENUM de volta nas 4 tabelas
ALTER TABLE tbl_Representante
  MODIFY COLUMN agente_modalidade
    ENUM('pct_venda','pct_comissao','tabela_preco')
    NULL DEFAULT NULL
    COMMENT 'Aplicavel quando idNatureza=3 (Agente)';

ALTER TABLE tbl_Pedido
  MODIFY COLUMN agente_modalidade_snap
    ENUM('pct_venda','pct_comissao','tabela_preco')
    NULL DEFAULT NULL;

ALTER TABLE tbl_Faturamento
  MODIFY COLUMN agente_modalidade_snap
    ENUM('pct_venda','pct_comissao','tabela_preco')
    NULL DEFAULT NULL;

ALTER TABLE tbl_HistPedido
  MODIFY COLUMN agente_modalidade_snap
    ENUM('pct_venda','pct_comissao','tabela_preco')
    NULL DEFAULT NULL;

-- 4) CREATE triggers (mesma definição original)
CREATE TRIGGER trg_agente_snapshot_faturamento_bi
  BEFORE INSERT ON tbl_Faturamento
  FOR EACH ROW SET
    NEW.agente_cod_snap = IFNULL(NEW.agente_cod_snap, (SELECT p.agente_cod_snap FROM tbl_Pedido p WHERE p.cod_Pedido = NEW.pedido_id LIMIT 1)),
    NEW.agente_pct_snap = IFNULL(NEW.agente_pct_snap, (SELECT p.agente_pct_snap FROM tbl_Pedido p WHERE p.cod_Pedido = NEW.pedido_id LIMIT 1)),
    NEW.agente_modalidade_snap = IFNULL(NEW.agente_modalidade_snap, (SELECT p.agente_modalidade_snap FROM tbl_Pedido p WHERE p.cod_Pedido = NEW.pedido_id LIMIT 1));

CREATE TRIGGER trg_agente_snapshot_histpedido_bi
  BEFORE INSERT ON tbl_HistPedido
  FOR EACH ROW SET
    NEW.agente_cod_snap = IFNULL(NEW.agente_cod_snap, (SELECT p.agente_cod_snap FROM tbl_Pedido p WHERE p.cod_Pedido = NEW.cod_Pedido LIMIT 1)),
    NEW.agente_pct_snap = IFNULL(NEW.agente_pct_snap, (SELECT p.agente_pct_snap FROM tbl_Pedido p WHERE p.cod_Pedido = NEW.cod_Pedido LIMIT 1)),
    NEW.agente_modalidade_snap = IFNULL(NEW.agente_modalidade_snap, (SELECT p.agente_modalidade_snap FROM tbl_Pedido p WHERE p.cod_Pedido = NEW.cod_Pedido LIMIT 1));
